交易上链过程

  1. 用户通过钱包或者 web3 库签名目标 tx 并发送给节点 RPC API,此时用户指定 txfee,base部分燃烧掉,剩余部分作为validator的收益
  2. 交易最先到达节点的执行层,验证 tx 有效后会通过 p2p 网络向全网广播,最终添加到网络大部分节点的 mempool 中;一些高级用户会将用户发送给类似 Flashbots 的 Builder 以获取定制的交易排序能力
  3. ETH 网络中存在中选的出块节点,他将负责在网络中提议并广播下个区块。每个节点包括执行层、共识层、验证层。区块由执行层传递给共识层并添加PoS奖励,惩罚等共识信息后向全网广播。通信内容详见:Connecting the Consensus and Execution Clients
  4. 其他节点收到请求之后验证区块有效,并添加到本地数据库中
  5. 上述过程经过全网超过 2/3的节点确认后基本确定已经出块

类 BFT 系统,PoS 共识

Untitled

多数 PoS 系统都是 BFT(Byzantine Fault Tolerance)的修改

  1. Pre prepare:Proposer 根据既定规则,发表提案并广播
  2. Prepare:Validators 收到提案,如果通过验证则广播 prepare msg,如果不通过在不作响应
  3. Commit:Validator如果收到超过 2/3 节点的 prepare 后则广播 commit msg
  4. Reply:Validator 收到超过 2/3 节点的 commit 后则实际执行操作

ETH 系统每 32 个块(slot)也就是6.4分钟做一次随机派选,具体介绍参考:https://info.etherscan.com/epoch-in-ethereum/

PBS, Proposer-builder Separation

当前ETH网络的出块逻辑是 validator 从 ETH Gossip 网络中获取 transaction,然后构建成一个 Block 并打包到 p2p 网络中。而 PBS 方案是要把这两个过程分开,block builder 只负责从用户侧获取各种交易,然后构建一个 block 传输给 block proposer,proposer 本身是无法直接看到block 内容的,他只能跟据每个 block 的收益大小向 p2p 网络提议打包利润最大的那个块。

这样做有几点原因: