Skip to main content
  1. Web3s/

以太坊-彼岸-POS

·1134 words·3 mins·
Table of Contents

工作量证明最被人诟病的一点就是浪费电力,于是区块链社区中出现了大量其他共识算法。以太坊中给出的解决方案是权益证明。

产生权益证明的基本逻辑是这样的:

  1. 工作量证明拼的是算力
  2. 算力=矿机数量(一次性投入)+电力(持续投入)= 钱
  3. 也就是说工作量证明实际上拼的是钱,但这个过程中还损耗了大量的电力
  4. 那么不如直接靠钱来完成共识,即权益证明。

核心概念 #

  • 时隙(slot):出块的间隔,POS中为12秒
  • 时段(epoch):32个时隙组成一个时段
  • 验证者(validator):只有向存款合约存入32个以太币并运行三个软件(执行客户端、共识客户端、验证客户端)才能成为验证者。验证者被激活后(为了限制新验证者加入网络的速度,以太坊中存在一个激活队列)验证客户端将接收新区块,并对交易进行检查确保其有效并在区块上进行签名,然后在网络中发送支持该区块的投票(即认证,attestation)。
  • 提议者(proposer):在每个时隙会随机选择一个验证者作为区块提议者,提议者负责创建新区块并发送到网络的其他节点中。
  • 验证者委员会(validator committee):在每个时隙会随机选择一些验证者作为委员会,委员会成员需要投票确定所提议的区块的有效性。
  • 执行客户端(execution client):继承了旧版本的可用功能,包括接收、处理交易,管理交易树,EVM。执行客户端将交易进行打包、执行智能合约,将区块数据发送给共识客户端。
  • 共识客户端(consensus client):共识客户端的作用是保持节点与以太坊网络的同步,包括从其他节点接收区块,执行分叉选择算法。
  • 验证者(validator):验证者需要验证新区块、提议新区块
  • 检查点(checkpoint):权益证明使用检查点来管理确定性,每个时段中的第一个区块是检查点,如果一对检查点通过了认证,那么这对检查点将被升级为最终确定状态。

交易过程 #

  1. 用户通过私钥创建并签署交易。
  2. 将交易发送给以太坊执行客户端进行验证
  3. 执行客户端将交易放到本地交易池,并广播到其他节点
  4. 等待每12秒一次的提议者选举

如果当前节点是提议者,即共识客户端收到通知被任命为提议者:

  1. 调用本地执行客户端的create block方法创建区块
  2. 执行客户端将交易池中的交易打包为一个区块、执行交易,得到一个区块哈希。
  3. 共识客户端从执行客户端获取交易和区块哈希,将其加入信标区块
  4. 共识客户端广播区块,等待网络中超过总质押以太币66%的认证通过,该交易就被认为“最终确认”。

如果当前节点是不是提议者:

  1. 共识客户端通过区块广播协议接收区块
  2. 共识客户端验证区块
  3. 将交易发送给本地的执行客户端
  4. 执行客户端执行交易并验证区块头中的状态
  5. 执行客户端将数据传回共识客户端,共识客户端将区块加入到自己的区块链头并通过网络广播认证结果