自从2022年以太坊1.0完成与信标链的合并后,以太坊正式放弃了POW(proof-of-work)共识机制,转而拥抱POS(proof-of-stake)共识机制,升级后的Ethereum也被称为ETH 2.0。姑且不论POS与POW哪种方案更加去中心化(尚有争议),但转向POS后的以太坊大大减少了对能源的消耗,在当今碳中和大背景下,不失为明智之举,且引入POS后的以太坊对于网络容量的扩展也更加友好,为了更好的理解,下面先为大家简单介绍一下POW共识机制是如何运作的
简单来说,在POW机制下,区块链中的各个全节点(矿工)是通过解一道非常难的数学题来争取记账权,谁先计算出答案,谁就可以将答案连同新区块率先通过P2P(peer-to-peer)网络广播,让其他矿工知道,已经有人找到了答案并发布了新区块,这时,其他矿工就会将新区块中的每笔交易、数学题答案、签名都完整验证一遍,如果没问题,大家就会达成一个共识:承认这个新区块的有效性,同时也就承认了解对这道题的矿工拥有这个区块记账权,该矿工获得出块奖励,之后,大家就会进入下一轮的解题大赛。由于解对题的时间并不固定,所以区块的出块间隔并不固定,但会有一个数学题的难度调整机制,帮助出块间隔大概稳定在15秒的水平上
POS机制下,矿工需要在以太坊的智能合约中质押32个ETH申请成为验证者,并且需要在本地运行三个独立的软件:execution client(执行客户端), consensus client(共识客户端), and validator(验证者客户端),在排队结束后,即可进入P2P网络,接收新产生的区块,并将新区块中的交易记录在本地全数执行一遍,检查签名是否正确,如果没有问题,验证者就会发出投票(attestation)支持这个新的区块
那么POS机制下如何决定谁拥有记账权呢?
POS下矿工不再需要通过解数学难题来获得记账权(即发布新区块并获得奖励的权利),此时记账权由系统随机挑选产生(需要注意:区块链中的随机数基本都是伪随机数,因为要保证每个节点计算出的这个“随机数”都一致),且出块间隔也被固定在了1个slot(12秒),每32个slots为一个epoch,同时,在每个slot中,系统会随机选择一个验证者委员会(committee of validators,由最少128个验证者组成),委员会的投票结果会决定新产生区块是否有效。每个epoch的第一个区块为这个epoch的检查点,在每个epoch结束后,也需要同步委员会(sync committees)来为这个epoch的“有效性投票,若是投票通过(至少2/3)则这个检查点状态变为“Justified”,此时,上一个epoch的检查点升级为“finalized(最终完成)”,所以,一笔在ETH 2.0中的交易会在2个epochs以内被最终确认,即:
(12 × 32 × 2) / 60 = 12.8min
以上就是验证者在ETH 2.0中所扮演的角色,下面我们详细来讲一讲一笔交易在ETH 2.0中是如何被处理的:
用户通过钱包软件(大多数情况下)发起一笔交易,用私钥对交易签名,但从底层来看,实际上是通过JSON-RPC API来向节点发起一个请求
交易被提交至节点的以太坊的执行客户端,来验证其有效性,其一验证是否有足够的ETH来完成这笔交易,其二验证该笔交易的签名是否正确
如果交易没问题,执行客户端会将该笔交易放入本地的内存池(mempool: list of pending transactions),并通过执行层的网络,将该笔交易广播给其他节点
被伪随机选出的验证者作为新区块的产生者,其执行客户端会在本地处理交易,并将数据打包好,准备作为信标链的一部分,之后同共识客户端通信,来确保整个网络对新区块的产生达成共识
其他节点通过共识层网络收到这个新的信标链区块后,会讲该区块传递给本地的执行客户端,并将里面的交易全数执行一遍来确保交易的有效性,同时也同步了本地的数据,如果没问题,该节点的验证客户端会进行投票来支持该区块
在2个epochs以内,该交易会被升级为“finalized”,表示该交易已被确认,无法被回退了
优点:相较于POW机制,大大降低了成为全节点的硬件门槛,极大的节约了能源,从安全性上来看,确实有进步,POW下,网络攻击者发动51%攻击后,完全可以带着自己的矿机去挖别的公链,而在POS机制下,想要发动攻击就必须要质押,二者利益绑定程度更高
缺点:虽然降低了硬件的成本,但是对于资金成本的要求依然很高,这就促使出现了Lido这类质押服务提供商,在DVT(Distributed Validator Technology)技术没有落地之前,这反而促进了中心化,其次,POS的机制上线时间还不够长,还需要经历更多的考验来验证其安全性