ETH 主网合并 - 从PoW到PoS

Ethereum 主网合并 在今年的八月份,ETH goerli测试网进行了2.0的合并,我也参与了测试网的合并,整个合并过程是成功的,我采用lighthouse做为ETH Consensus layer,geth做为Execution layer,目前测试网运行的validator节点状态是good。在接下来的九月份,ETH主网将进行2.0的合并,我也单独运行了Consensue Layer和Execution Layer,希望这次重大的合并能够顺利完成。 goerli testnet validator 状态 合并过程 ETH 2.0 Beacon Chain 将首先进行一次Bellatrix升级,从而激活两条链的合并,时间大概会在UTC 2022-09-06,之后当PoW链达到一定工作量难度时,会启动合并程序,PoW的链上数据将合并到PoS Beacon Chain上,PoW到达终止难度的日期大概在2022-09-10 - 2022-09-20。文章最开始的第一张图,可以很直观的看出当开始合并之后,PoW将被废弃,整个网络都将由validator来维护。 Bellatrix升级将在beacon chain epoch 144896开启,Paris升级将在Terminal Total Difficulty (TTD) 58750000000000000000000 开启,当难度到达TTD时,之后的块都将由beacon chain validator生成,生成第一个Post TTD 块大概需要13分钟,当beacon chain能敲定validator生成的新块时,意味着合并成功了。 问题 node ops 节点运维 节点维护者需要运行consensus layer(CL)和execution layer(EL),并且EL需要开启Engine API,然后CL通过JWT认证接入EL。 Staker Validator 质押者 在post merge阶段,validator 需要独立运行EL,并且配置fee recipient地址来获得收益。 contracts 合约#### post merge对合约的影响非常小,几乎所有的接口都是保持稳定的状态。 ETH holder 持有者 合并之后,ETH持有者不需要做任何处理。 Miner 矿工 合并之后,PoW已经被移除,Miner无法再将算力贡献到PoS中。

August 31, 2022

记录sparkpool的时光

2018年我以Devops的职位加入了sparkpool团队之后,扩宽了我对数字加密货币的认知,在这接近四年的工作中,我在sparkpool学习了数字金融与传统金融体系的相关知识,什么是健全的货币体系,加密货币与传统货币的区别,可以这么说,在sparkpool我学到了大量的金融知识,同时也在工作之余自学了前沿科技的相关技术,比如深度学习和量化交易,虽然自己还没有做出一套完整的相关产品,但我一直在朝着这个方向努力。非常庆幸自己能够加入sparkpool大家庭,在此感谢sparkpool的两位创始人。最后的最后,聚是一团火,散是满天星。

May 11, 2022

讨论风险分配

最近看了Eric Xu发表的博客文章风险分配框架,也让我思考了关于自身的风险抵抗能力,尤其是面对不确定的事件发生时。 在2021年的时候,我主要关注点在量化金融上,虽然量化领域对于外行而言听起来有高级感,但是一般能够直接在市场上盈利的算法,大部分商业公司是不会透露的,公开的算法获利还是需要一定的巧合和机遇。在量化金融的算法中有一块就是风险计算,在我看来不管你的收益有多少倍,你永远要考虑的一件事是如何承受风险,如果你投资了一支股票,刚开始是有很多收益,最后因为市场的波动因素导致你的收益全部归零,并且成本也跌去九成,这个时候你如何去谈盈利。在投资领域你能生存多久,就说明你的抵抗风险能力有多高,不要让自己轻易出局,一旦出局,你就再也没有入场盈利的机会。 回到风险的分配,不管做什么事情,首先要考虑的是风险而不是收益,提前预知风险,然后想办法去对冲这些风险。在Eric Xu的文章中提到了现代性带来的风险是遍历的,比如我们使用现代交通工具,交通工具提供了便利,但是它同样存在安全隐患,医院给病人看病动手术,提供了延长生命的技术,但是同样也存在副作用的隐患,我们无法逃避社会上存在的风险,那么如何应付呢,我们通过购买汽车保险,出行安全险,医疗保险,来抵抗这些风险,当这些风险来临的时候不会使得我们一夜之间倾家荡产。像现在上海的Covid-19事件,我们每个人在任何时候,任何地点,都有可能碰到类似的事件,所有人都无法逃避现代性的风险。然而文章中也提到了铁拳,他将其定义为无法申诉的风险分配,对于一个已经存在发生在对方身上的风险,我们可以提早预防,但是似乎存在一种风险我们无法规避那就是铁拳,在铁拳的作用下,我们没有对冲风险的能力,因为它将风险分配给每一个人,每一个人都必须服从这个分配,不可以将风险转接出去,我们可以这么理解,风险是由铁拳来产生和分配的,但它自身不会承担任何责任,需要由每一个被分配者来承受这种风险,这种做法也就违背了塔勒布一直提倡的"风险共担",那么如何抵御铁拳,我们所能做的就以下几点: 屏蔽噪音,尽量少花时间在社交网络上,多花时间学习。 学习各项生存技能,比如了解医学知识或者学会在没有任何网络的情况下向外界发送无线电求救信号。 购买能够在未来带给你回报的物品或者工具。 为自己储备一部分的BTC,ETH,加密货币的意义就在于他是足够去中心化的,具有反脆弱性。 工作和业余兴趣爱好同时进行,这样在出现失业潮的时候,你可以将两者反过来,兴趣变专业,专业变兴趣。

April 3, 2022

Eth1.0 Merge to Eth2.0

回顾 ETH2.0 Phase0 BeaconChain Blog 2020年的12月份,ETH上线了2.0-0阶段的信标链,ETH2.0 Proof of Stacking(pos)的底层应用,它不像现在在运行的ETH1.0主链,Beacon Chain上面没有智能合约也没有账户管理,它的主要功能就是2.0的共识机制,用户通过质押ETH(我们称之为validator)来保护整个2.0主网的安全性,更多的人运行validator节点,能够更好的去中心化以及抵御外部攻击。0阶段,用户是只能质押ETH代币,无法运行合约以及转账操作。 合并 在2022年的三月份ETH开发者上线了kiln ETH2.0合并测试网,当前的1.0主网将合并到2.0的Beacon Chain,这样做是为了结束1.0上面的pow共识机制,并全面的过渡到pos,用ethereum.org官方的表述意思就是像宇宙飞船的对接,1.0已经无法再进行较远距离的星际航行,于是开发者们设计2.0的新引擎,1.0将与2.0飞船进行对接合并,然后驶向宇宙的更深处。当合并完成之后,ETH1.0主网将与Beacon Chain进行合并,成为ETH分片链,并且将转向Pos权益证明而非Pow工作量证明。主网将智能合约带入到Proof-of-stack系统中,并且导入ETH1.0中的所有历史数据和现状,确保ETH的持有者和用户能够平滑的过度到2.0。当合并发生时,validator节点将接管主网,miner将不再需要。 操作指引 我选择的是lighthouse beacon chain做为自己的验证节点,以下是具体在kubernetes中进行操作的yaml文件,还可以参考相关网站用于部署节点。 帮助文档 ETH Kiln TestNet kiln testnet on arm How to run a node on Kiln Join the kiln testnet - lighthouse 我的节点 kubernetes kiln testnet node and validator geth-kiln-net.yaml --- apiVersion: apps/v1 kind: Deployment metadata: name: geth-merge-devnets namespace: eth labels: app: geth-merge-devnets spec: strategy: type: Recreate selector: matchLabels: app: geth-merge-devnets template: metadata: labels: app: geth-merge-devnets spec: nodeSelector: kubernetes.io/hostname: deep-dream initContainers: - name: geth-init image: 192.168.1.114:5000/geth-merge-devnets:4c57d09-20220316 args: - geth - --datadir=/execution_data - init - /custom_config_data/genesis.json volumeMounts: - name: geth-merge-devnets-data mountPath: /execution_data - name: merge-devnets-genesis-json mountPath: /custom_config_data containers: - name: geth-merge-devnets resources: limits: memory: 5Gi cpu: 4 requests: memory: 2Gi cpu: 1 image: 192.168.1.114:5000/geth-merge-devnets:4c57d09-20220316 args: - geth - --datadir=/execution_data - --syncmode=full - --http - --metrics - --http.api - "engine,eth,web3,net,debug" - --authrpc.jwtsecret=/execution_data/jwtsecret - --metrics.expensive - --networkid=1337802 - --http.corsdomain - "*" - --authrpc.addr - "0.0.0.0" - --authrpc.vhosts=* - --http.addr - "0.0.0.0" - --http.vhosts=* - --bootnodes - "enode://c354db99124f0faf677ff0e75c3cbbd568b2febc186af664e0c51ac435609badedc67a18a63adb64dacc1780a28dcefebfc29b83fd1a3f4aa3c0eb161364cf94@164.92.130.5:30303" ports: - containerPort: 8545 name: port - containerPort: 8551 name: secure volumeMounts: - name: geth-merge-devnets-data mountPath: /execution_data volumes: - name: geth-merge-devnets-data persistentVolumeClaim: claimName: geth-merge-devnets-data - name: merge-devnets-genesis-json configMap: name: kiln-genesis-json --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: geth-merge-devnets-data namespace: eth spec: accessModes: - ReadWriteOnce storageClassName: openebs-hostpath resources: requests: storage: 500Gi --- apiVersion: v1 kind: Service metadata: labels: app: geth-merge-devnets-service project: geth-merge-devnets-service name: geth-merge-devnets-service namespace: eth spec: ports: - protocol: TCP port: 8545 targetPort: 8545 name: port - protocol: TCP port: 8551 targetPort: 8551 name: secure selector: app: geth-merge-devnets lighthouse-beacon-chain-kiln-net.yaml ...

March 17, 2022

风险共担-摘录

趁着中午的午休时光,我重新快速的读了一遍塔勒布写的书-《非对称性风险》,Skin In The Game - Hidden Asymmetries in Daily life,应对现实世界中的不确定性,摘录了书中我觉得值得去领悟的智慧。 金融是一门具有很强现实性和操作性的专业。 把自己暴露在某种投资,游戏,任务,使命的风险之中,全身心地投入到一项事业中,享受其成果,担当其风险并承受其损失。 如果你想获得回报,必须承担风险。 在痛苦中学习,学习知识必然是痛苦的,因为你只有在痛苦的实践中才能学到知识。 不承担风险的人根本不应该参与决策。 你永远无法说服一个人他错了,只有现实才能教育他。 没有风险共担就没有进化。 什么叫尾部风险,它其实是指一件事情发生的概率非常低,从钟形的概率分布图上看,就是靠近两端的极低概率事件。 相对于判断什么是有利的,我们更清楚什么是不利的。 重要的并不是你预测准了多少次,而是在你预测准确的那一次,你真正赚到了多少钱。 用数学解决交易中的实际问题完全不同于在学院中学习数学,我们在写下方程式之前,一定要深刻理解问题本身。 如果你不能为自己的言论承担后果,那么你等于什么都没说。 尽量不要读别人转述的作品,而是要读亲历者自己的著作,实在不行,你就自己凭着勇气去实践探索。 交易中不能由一方承受确定性的结果,而由另一方承担不确定性的结果。 风险共担对群体的定义:某空间存在一种机制,即别人会以你对待他们的方式对待你,该空间内还普遍存在一个规范,即个体奉行银律之己所不欲勿施于人的戒条来对待他人。 复杂系统之所以复杂,是因为它无法通过系统部件的功能和状态来预测系统的行为。 去中心化会极大地降低系统的不确定性。 享有自由是以承担风险为代价的,自由从来都不是免费的。 生活是需要付出某种牺牲和承担某种风险的,只有承担了风险并做出了牺牲,那才是你的生活。 利用公职发家致富是不道德的,而且对社会有巨大的伤害。 研究人员应该在现实生活中有另外一份糊口的工作。 一个人的外表和他的财富是互补的,一个人如果很有钱,那么他看起来一定不像你想象中的富人,反之亦然。 真正有知识的人应该看起来不像一个知识分子。 请记住不要使用口头威胁。 你必须自己创业,把自己放到第一线,去开创一项事业。 理性只存在于你的行动之中,而不在你的想法或者你的信仰之中,生存是最大的理性。 你愿意为一个事物承担多大的风险,揭示你对该事物的信任程度。 要想投资成功,你首先得活着。 如果一个随机过程,其过往的历史概率不能适用于其未来的情景,那么这个随机过程就不具有遍历性。 如果一个策略有可能触发爆仓危险,那么无论多大的收益都得不偿失。 理性就是避免系统性毁灭。 不要未拼尽全力的人生 不要相信没有风险的财富机会 不要把问题搞得很复杂却又没有思想深度。 没有风险共担就一事无成。

February 3, 2022

TIDB 架构

Reference TIDB architecture 为什么使用 TIDB 机器采用的架构是ARM64。 尝试使用分布式数据库架构。 解决高可用问题,当一台Raspberry Pi数据库节点宕机时,不会影响数据的写入。 对比了vitess和TIDB,TIDB更加兼容ARM64,容易上手实验。 为后面的金融交易系统作准备。 架构 组件及功能 TIDB Server TIDB Server 是一个无状态应用,它本身并不存储数据,前面可以放置负载均衡,外部应用请求到TIDB Cluster中的节点,TIDB server将分析和计算应用请求的SQL,并将请求转发给底层的数据存储TiKV。 PD Server 整个TiDB集群的元信息管理模块,存储每个TiKV节点的数据分布情况,以及集群的整体拓扑情况,根据TiKV节点实时上报的数据分布状态,PD server向TiKV节点发布数据调度命令。 Storage Server TiKV 负责数据存储,是一个提供事务的key-Value分布式存储引擎,存储的基本单位是Region,每个Region存储一个Key Range的数据,每个TiKV节点会负责多个Region,TiDB的SQL对SQL做完解析后,会将SQL的执行计划转化为对TiKV API的实际调用,所有的SQL数据全部存储在TiKV中。 TiFLASH Server 特殊的存储节点,数据存储是以列式的方式进行存储,主要功能式为分析型的场景加速。

January 4, 2022

加密货币预测 1

比赛 预测高波动率的数字货币市场价格是困难的,G-Research在kaggle.com上发起了一个关于利用机器学习预测数字加密货币收益率的比赛项目,我准备加入该比赛,后期关于比赛的参考资料和模型建立都会更新在该博客板块中。 G-Research Crypto Forecasting

November 26, 2021

Interlay Btc Bridge - 2

介绍 之前写过一篇博客介绍了PolkaBTC的整体架构,这篇博客我们会具体理解PolkaBTC的运作原理,PolkaBTC已经改名为Interlay BTC Bridge,其中之前运行的 Staked Relayer已经合并到Valut模块中。Interlay使用了XCLAIM协议框架,BitCoin资产在比特币链上被锁仓,然后在Interlay链上产生1:1对应的InterBTC代币,InterBTC Token可以在PolkaDOT生态的平行链上使用。对于大部分投资数字货币的投资人来说,跨链是个伪需求,然而参考下整个股市以及期货交易市场,数字货币交易所,他们无非是中心化的,并且用户会转移交换不同种类的资产,到了数字货币的世界,我们希望的是去中心化的交易所,交易所依靠的是智能合约来完成交易,比特币是数字货币的龙头,目前获取比特币的方式我们只能通过交易所或者挖矿,我有ETH,我得将ETH转到中心化交易所,然后兑换成BTC,如果是跨链的去中心化交易所,那么我们可以直接通过跨链协议将资产转移到其他链的Token上,该过程相比中心化交易所而言优点是高效以及安全,想想万一中心化交易所跑路了怎么办?!在后期我的目标是能够采用量化策略在加密货币的世界中获利,这里涉及到算法策略和高频交易量化投资领域的知识。 核心概念 Issue interBTC (铸造代币) Vault 锁定一定数量的DOT代币在InterBTC平行链上。 用户选择其中的一位Vault发起铸币请求,并且发送BTC到选定的Vault账户上。 用户证明已经完成将BTC发送到Vault的交易。 交易被证明之后,用户获得interBTC代币。 Redeem interBTC (赎回代币) 用户锁定interBTC代币 平行链会指引Vault完成BTC赎回操作。 Vault发送正确数量的BTC到用户BTC账户中。 Vault为了获得DOT代币的奖励,需要将与用户交易的凭证发送到BTC-Relay中确认。 如果凭证是正确的,平行链会将DOT奖励发送到Vault的钱包中。 如果凭证是无效的,那么平行链将惩罚Vault,从Vault质押的DOT中扣除一定数量的DOT,并按一定比例偿还给用户。 XCLAIM && BTC-Relay XCLAIM模块主要实现四个协议: 铸造,转移,赎回,替换。它维护系统中interBTC代币的生命周期。 BTC-Relay模块主要被用于确认发生在比特币区块链上的交易,比如用户通过锁仓BTC换取同等价值的interBTC,该用户可以通过BTC-Relay来证明自己的这笔交易确实发生在BTC链上。 Modules interlay BTC 模块之间的相互调用草图

August 24, 2021

Polkabtc Project

开篇 选择支持该项目的原因: 相信BTC 相信PolkaDot 我们需要去中心化交易所 项目介绍 PolkaBTC 项目是建立在PolkaDot基础上的一条平行链,用来桥接BTC Chain,采用XCLAIM协议,将BTC跨链桥接到PolkaDot生态系统中,代币名为PolkaBTC,BTC资产被锁定在BTC链上,并在Polkadot系统中铸造以1:1为比例锚定BTC的代币PolkaBTC,PolkaBTC像所有PolkaDOT生态中的原生代币一样能够在各个平行链之间相互转换,并且PolkaBTC 桥接项目没有中心化风险,像企业,社区,个人都可以参与到运行BTC平行链的队伍中。 组件 XCLAIM (BTC,DOT) 该组件实现了四种应用协议,分别为issue,transfer,redeem,replace,维护着整个PolkaBTC代币系统。 BTC-Relay 该组件被用于检查和确认在BTC链上发生的交易,比如当用户铸造一个新的PolkaBTC代币,等量的BitCoins将被锁定在BTC链上,之后用户的交易记录可以被BTC-Relay组件捕获和确认。 从上图中可以观察到,User -> (lock Bitcoin) -> BTC-Relay -> verify-Transaction -> XCLAIM -> Issue-PolkaBTC 用户锁定BTC,BTC-Relay确认该锁定交易,并保存BTC区块头,XCLAIM 铸造锚定币PolkaBTC,用户获取未锁定的BTC锚定币PolkaBTC。 我们具体看XCLAIM 具体的实际流程图: (Issue) 用户会将Bitcoin打给Vault (我们可以认为它就是一个去中心化银行系统),Vault 收到用户打款的资产之后,将会锁定该资产,并通知PolkaBTC系统中的智能合约确认该笔交易,如果确认通过,用户将获得与BTC等价的PolkaBTC Token。 (Transfer & Swap) 交换和转发代币,发送者和接受者只需要通过智能合约来完成这一操作。 (Redeem) 用户赎回对应的BitCoin,用户请求解锁操作给智能合约,智能合约接收到解锁事件之后,请求Vault解锁相应的BitCoin,Vault确认可以解锁,最后用户将收到BitCoin,并将销毁对应的等量PolkaBTC代币。 参与者 Vaults 可以称之为保险库,类似我们生活中的中心化银行,只不过它是去中心化的,运行Vaults需要质押一定数量的DOT代币,它们接收和持有来自交易用户的BitCoin,当用户需要销毁PolkaBTC Token时,Vault将解锁相对应的BitCoin,发送到对用用户的地址。 Users 用户包括,请求者(质押BitCoin,希望获得PolkaBTC),发送者和接受者,赎回者。 Staked Relayers 运行比特币全节点的抵押机构,监控BTC链上的交易,监控Vault是否有作弊和偷盗行为,如果发现Relayer将会通知BTC平行链,如果Relayer停止运行,则PolkaDOT和BTC之间的桥梁就会中断。 Governance Mechanism 治理机制,监控整个BTC平行链的操作安全,包括Staked Relayers的正确行为,当Staked Relayers出现错误行为时,采用安全策略,手动干预BTC平行链上的所有模块。 模块架构图 PolkaBTC 总共分为七个模块: Oracle 预言机,用于连接中心化交易所和去中心化交易所的纽带,获取代币交换的汇率。 Treasury 财政模块,用于管理用户的PolkaBTC资金库。 VaultRegistry 用于保存保险库的相关信息, ...

June 25, 2021