注意:原始作者是以太坊2.0的协调员Danny Ryan(djrtwo)。在本文中,他详细介绍了如何将以太坊1.0与以太坊2.0合并。根据他的介绍,在ETH1 + ETH2组合客户端中,ETH2客户端可以处理PoS和分片共识的复杂性,而附加的ETH1客户端可以成为ETH1引擎,可以处理状态,事务,虚拟机等事物的复杂性, 等等。
以太坊1.0和以太坊2.0客户端之间的关系
合并替代 ETH2客户端 ETH1引擎
分工明确
最少的更改即可实现本地通信
以太坊2.0客户端
- 信标链和信标状态(为系统的其余部分建立核心共识对象);
- 分片链(1,ETH1分片链,2,许多仅数据分片链);
- Mempool操作[未显示](Attestation,存款,退出等)
- P2P接口(1,共识层信息,2,包括ETH1分片八卦);
- RPC到ETH1引擎(所有调用均由ETH2客户端驱动);
以太坊1.0引擎
- EVM虚拟机(ETH1分片块的执行和验证);
- ETH1状态(今天以太坊中的用户层ETH1状态);
- 事务存储池内存池(用户事务内存池,准备批量生产);
- P2P接口(1,今天以太坊上的事务八卦,2,状态同步,3,没有ETH1分片阻塞八卦);
- 来自ETH2客户端的RPC(所有调用均由ETH2客户端驱动);
共识
addBlock
getBlockProposal
状态
1.没有ETH1引擎的ETH2客户端
2.具有无状态ETH1引擎的ETH2客户端
3.具有状态ETH1引擎的ETH2客户端
互联网
ENR
有线协议
1. ETH2协议
2. ETH1协议
3. ETH2客户端为什么要处理ETH1闲话?
交易八卦和存储池内存池
getWork
批量生产
在ETH2协议中,所有块(信标块,碎片块,ETH1碎片块)必须由PoS验证程序根据核心共识进行生产和签名。为此,ETH2客户端最终负责生成所有 positer_index
positer_signature
下一步是什么?
- 确保ETH2客户端驱动ETH1引擎的假设与现有ETH1软件一致,并且不会给现有ETH1软件带来意外负担;
- 更清楚地定义用于驱动ETH1引擎的通信协议,例如
new_head(block)
,alidate_block_transition(block)
,get_proposal(parent_root)
等; - 定义网络组件,例如需要ETH1协议的哪个子集,以及如何专门使用ENR;
- 扩展以太坊2.0 1期规范
- 原!
https://www.8btc.com/article/587235
文章链接:https://www.btchangqing.cn/20289.html
更新时间:2020年12月02日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。