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

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

加密货币预测 1

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

November 26, 2021

HFT Defi

链接 去中心化金融高频交易

October 27, 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

Fundamentals of Polkadot Economic Model

参考文献 Polkadot Lightpaper Polkadot 架构 Polkadot被称之为下一代区块链协议,它是一套多链系统,它允许在任意其他区块链链之间进行数据的交换,与常见的PoW挖矿相比,我更看好类似Polkadot通过NPoS这样的方式来生成区块,我们可以直接将节点运行在成千上万的边缘设备上,这样就使得整条链具有更强的安全性和去中心化。 Polkadot 采用分片机制,架构如下: Polkadot的核心链是Relay Chain,我们称之为中继链,所有的分片处理都是在所谓的ParaChain,我们称之为平行链。所有的交易处理都是在平行链中完成,这样就可以缓解核心链的拥堵,就像目前的ETH1.0,当链ETH MainNet上的交易量增加时,由于所有的节点都需要验证打包交易的区块,就会出现队列堵塞问题,最明显的表现就是,以太坊的gas手续费开始增加,如果保持原有的gas费用,那么用户发出的交易打包速度将会非常缓慢,所有我们才会看到ETH2.0被开发出来,ETH2.0也是基于分片模式来完善ETH1.0的架构,从而提升链中每秒的交易量。Polkadot中的平行链可以通过API接口与中继链进行通讯完成数据的传输。平行链会构造和提交候选区块到中继链中,中继链会通过最后的共识确认来敲定将哪一个区块加入到链上。通过分片的机制,Polkadot的很轻松的做到链性能和功能的扩展,举个例子,我们可以通过桥接,将以太坊和比特币这两条不同的链接入到Polkadot中继链中,这样我们从ETH兑换到BTC,或者BTC兑换到ETH,整个过程都是无缝的,我们实现了跨链支付。 组成 Relay Chain -> Polkadot的核心部件,保证网络的安全性,达成共识,完成跨链协议。 Para Chains -> 平行链中可以是一条独立的区块链,可以拥有自己的Token,平行链可以通过购买Slot对接中继链。 Bridges -> 通过桥,使得Polkadot可以和以太坊或者比特币这样的网络进行对接。 Validators && Nominators -> 通过质押代币DOTs来保证中继链的安全性,验证来自Collators的候选区块,并与其他验证着参与整个Relay Chain的共识,也可以让提名人向验证者发起提名,质押一定数量的DOTs代币给验证者,从而让提名人也参与到整个网络治理的过程中。 Collators && Fishermen -> 通过收集用户的分片交易信息,为验证者提供证明并维护分片。 Council Members -> 理事会成员主要的功能是: 提出公投,以及否决具有危害意义的公民投票。 Technical Committee -> 技术委员会由构建Polkadot的团队成员组成,可以和理事会一起提议紧急全名投票,快速进行投票和实现。 Dot Token -> 代币Dot的三个作用,治理,质押,绑定,用英文描述就是Governance,Staking,Bonding。 治理: 代币持有人拥有管理整个Relay Chain的特权,包括网络的升级和维护。 质押: 代币持有人通过质押一定数量的代币来保证网络的安全性,良好的参与者将获得奖赏,反过来破坏网络的参与者将损失他们质押的一部分代币。 绑定: 通过绑定代币来完成新平行链的加入。 如何参与 参考文档: How to Nominate on Polkadot Run a Validator 成为Validator 编写中… 成为Nominator 编写中…

October 30, 2020

Beacome an ETH validator

概要 这篇文章不会过多讲述ETH的具体技术细节,主要会涉及如何成为ETH2.0的验证者。 今年年底,ETH将完成阶段0的升级,从PoW工作量证明迁移到PoS权益证明,之前自己在公司的黑马活动上思考了如何利用过剩的算力来做有价值的事情,PoW从理论上来说比较浪费能源,矿工购买大量矿机进行运算,而采用PoS机制之后,只要成为一名验证着,我们就能完成对区块的铸造,而不需要像PoW一样,购买大量矿机通过挖矿来产生新区块,但是要成为验证者中的一员,你需要将一定数量的加密货币进行锁仓做为权益的证明,如果你运行的验证节点验证一个区块,并检查里面的交易是否都是有效,如果通过,你将收到一笔奖励以做为回报。 ETH2.0 架构 架构图引用自prylabs Beacon Node 中文称之为信标链,是ETH2.0的核心部件,类似于海洋上的灯塔,引导船只前进的方向。 Validator Client 会连接信标链,并且管理质押的ETH密钥对。 如何加入 ETH 2.0 目前运行在 Medalla(已经更新为prater)测试网 访问Become a validator and help secure eth2 开始进入Get Started环节 Generate Key Pairs 这一步是用来生成验证者的密钥对 选择你使用的操作系统,然后安装eth2.0-deposit-cli 生成密钥对比如: python3 ./eth2deposit/deposit.py –num_validators 2 –chain medalla –folder ./keys/ 生成的keystore会保存在./keys文件夹下,因为目前是测试网所以需要指定 –chain medalla,像deposit_data-1600238876.json这样的文件里面存放了公共信息,下一步我们就需要上传该文件deposit_data-1600238876.json Upload Deposit File: 上传deposit_data-1600238876.json文件 Connect Wallet: 连接到你自己的本地钱包,这里我们使用Chrome MetaMask插件 如果你的钱包里面没有测试ETH,那么可以去这里申请,在自己的推特上发一条包含自己ETH地址的推文,比如0x0bDebe6eF5D0Ca744451946a70fEbd1B505dD92a my TestNet addr,然后将推文链接复制到上述网站的提交项中,最后选择87.5ETH/9days,你就会收到87.5个测试ETH,记住metamask上一定要选择goerli测试链。 下一步就是将32ETH打到对应的Medalla Beacon Contract合约地址上,如果你像我一样启动了两个验证者,那么总和就是64ETH,完成之后,我们就可以看到类似以下的页面。 0x0bDebe6eF5D0Ca744451946a70fEbd1B505dD92a 最后就是选择支持ETH2.0的多客户端,这里我们选择golang版本的prysm 完成对信标链beacon chain和验证者validator的部署 部署文档可以参考这里 获取prysm.sh: curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh –output prysm.sh && chmod +x prysm.sh ...

September 16, 2020