以太坊-彼岸-POS
Table of Contents
工作量证明最被人诟病的一点就是浪费电力,于是区块链社区中出现了大量其他共识算法。以太坊中给出的解决方案是权益证明。
产生权益证明的基本逻辑是这样的:
- 工作量证明拼的是算力
- 算力=矿机数量(一次性投入)+电力(持续投入)= 钱
- 也就是说工作量证明实际上拼的是钱,但这个过程中还损耗了大量的电力
- 那么不如直接靠钱来完成共识,即权益证明。
核心概念 #
- 时隙(slot):出块的间隔,POS中为12秒
- 时段(epoch):32个时隙组成一个时段
- 验证者(validator):只有向存款合约存入32个以太币并运行三个软件(执行客户端、共识客户端、验证客户端)才能成为验证者。验证者被激活后(为了限制新验证者加入网络的速度,以太坊中存在一个激活队列)验证客户端将接收新区块,并对交易进行检查确保其有效并在区块上进行签名,然后在网络中发送支持该区块的投票(即认证,attestation)。
- 提议者(proposer):在每个时隙会随机选择一个验证者作为区块提议者,提议者负责创建新区块并发送到网络的其他节点中。
- 验证者委员会(validator committee):在每个时隙会随机选择一些验证者作为委员会,委员会成员需要投票确定所提议的区块的有效性。
- 执行客户端(execution client):继承了旧版本的可用功能,包括接收、处理交易,管理交易树,EVM。执行客户端将交易进行打包、执行智能合约,将区块数据发送给共识客户端。
- 共识客户端(consensus client):共识客户端的作用是保持节点与以太坊网络的同步,包括从其他节点接收区块,执行分叉选择算法。
- 验证者(validator):验证者需要验证新区块、提议新区块
- 检查点(checkpoint):权益证明使用检查点来管理确定性,每个时段中的第一个区块是检查点,如果一对检查点通过了认证,那么这对检查点将被升级为最终确定状态。
交易过程 #
- 用户通过私钥创建并签署交易。
- 将交易发送给以太坊执行客户端进行验证
- 执行客户端将交易放到本地交易池,并广播到其他节点
- 等待每12秒一次的提议者选举
如果当前节点是提议者,即共识客户端收到通知被任命为提议者:
- 调用本地执行客户端的
create block
方法创建区块 - 执行客户端将交易池中的交易打包为一个区块、执行交易,得到一个区块哈希。
- 共识客户端从执行客户端获取交易和区块哈希,将其加入信标区块
- 共识客户端广播区块,等待网络中超过总质押以太币66%的认证通过,该交易就被认为“最终确认”。
如果当前节点是不是提议者:
- 共识客户端通过区块广播协议接收区块
- 共识客户端验证区块
- 将交易发送给本地的执行客户端
- 执行客户端执行交易并验证区块头中的状态
- 执行客户端将数据传回共识客户端,共识客户端将区块加入到自己的区块链头并通过网络广播认证结果