以太坊当前处于Serenity开发阶段,这一阶段将对以太坊的可扩展性、可持续性进行升级,这些升级也被称为Ethereum 2.0。Serenity升级的设计原则:去中心化、弹性、安全、简单、持久。The Merge是2022年即将到来的一次重要升级。
以太坊长期发展路线分为图中所示五个阶段,从上到下按顺序执行,每个阶段内从左到右依次进行。每个阶段都是一个长期的时间段,而不是一个时间点,其技术依赖互相交叉。
预计执行时间为2022年Q3/Q4,根据Checklist,进度已完成80%。The Merge指的是将当前运行的执行层(PoW Mainnet)与PoS共识层(Beacon Chain)进行合并。合并后Beacon Chain将负责对执行层的状态达成共识,执行层负责记录交易数据。
需要注意的是此次合并仅仅是完成共识方法的切换,网络容量没有变化,出块频率提高约10%,所以:
合并后质押的ETH和奖励依然无法赎回,根据计划,此次合并完成6-12月后的“上海”升级将会开放提款功能,预计在2023年。
Surge阶段的目标是通过分片大幅提高性能和可扩展性,分为两个阶段。分片的 version 1 仅仅会提供数据存储功能,不具备交易处理和智能合约执行功能,version 2 将为分片链增加代码执行功能,使其和当前的PoW Mainnet一样。Surge阶段预计于2023年开始逐步上线。
以太坊的升级专注于服务rollups类型的 layer 2方案,rollups方案继承了layer 1的安全性,同时具有自身的扩展性。分片提高了以太坊的总数据带宽,这将显著降低将数据存储到 layer 1的成本,从而有利于rollups方案。
提高去中心化程度、简化协议。
The Verge 将实现Verkle Tree和无状态客户端,此升级将优化数据储存并减低验证节点的大小。
The Purge 将尝试去减少历史数据存储要求,进一步降低节点的硬件要求。
区块链本质是一种不可篡改的分布式数据库,运行在开放的网络环境下,具有极高可用性、较高终局性。共识机制是数据库节点达成数据一致性的协议,简单来说,共识机制是决定谁可以添加下一个块的机制。公有区块链网络面临的挑战是在开放网络环境和permissionless情况下高效安全的运转。
以太坊的此次升级将转为Casper PoS机制。
FLP impossibility告诉我们,在完全异步的分布式网络中,故障容错问题无法被解决。
从另一个角度理解,FLP对分布式系统的三个属性进行了考虑:
FLP不可能定理意味着在异步网络中,不可能存在同时满足这三者的分布式一致性协议。因为分布式环境中,节点故障几乎是必然的,因此容错是必须要考虑的因素,所以FLP不可能定理就意味着一致性协议在能做到容错的情况下,需要在安全性与可用性之间取舍。
FLP理论无法直接适用于区块链,区块链共识机制不仅局限于分布式算法层面,同时包含了经济学、博弈论、概率论的思想,是对多种理论的取舍。通过FLP和CAP等理论的角度来看待公有区块链共识机制,面临可用性、安全性、容错、去中心化的取舍:
中本聪共识通过简单巧妙的方法解决了开放网络中的分布式一致性问题,其实现的核心是PoW算法。PoW通过有效的激励措施使大量节点参与,通过消耗计算量的形式随机选择出块节点,通过博弈论的思想激励节点保持诚实,中本聪共识也将确定性的一致性改为概率性的一致性。
从分布式一致性的角度来看,中本聪共识面临以下取舍,以比特币和以太坊为例:
PoW存在的问题:
PoS共识中,不再通过算力竞争的形式选取出块权,改为随机选择出块节点或轮流出块,节点出块和投票的权重取决于其质押的数字货币数量。
PoS去除了节点之间的竞争过程,也就去除了多余资源的浪费,同时也去除了作恶的沉没成本,所以PoS机制有质押保证金的要求。成为节点需要质押保证金,这样才能因作恶行为受到惩罚,从而将网络安全与节点利益绑定。简单来讲,PoS通过经济损失来保障系统的安全性,PoW通过电力成本保障安全性,PoW是错失激励,即节点作恶会错失有可能获得的出块奖励,PoS是错失激励和经济惩罚。
PoS算法分为两种类型:chain-based proof of stake 和 BFT-style proof of stake,当前大部分项目采用BFT-style的PoS共识机制。
DPoS
以太坊或者说V神是反对DPoS和超级节点,这也是以太坊没有采用DPoS的部分原因。虽然DPoS也被广泛采用,采用了代理人委托机制,持币人对节点进行投票,得票最高的一批节点参与出块,有以下取舍:
DPoS参与共识的节点一般都很少(小于100),所以对节点的要求较高,从而出现了超级节点的形式。通常,提高网络性能的两种思路,一种是提高单机性能,一种是提高机器数量并行计算。超级节点的形式属于第一种,分片方案属于第二种。超级节点易于实现、延迟低,因为其架构与现有区块链架构基本一致。但在超级节点网络中,有以下问题:
反观互联网领域的计算模式,除了部分银行系统还在使用大型机服务器,大部分互联网业务已经转为云计算、分布式计算的模式,这也从另一个方面印证了超级节点的局限性。
以太坊选择Casper FFG作为新的共识机制,根据V神的解释,选择此算法的原因是它是定稿时可用的最简单算法。Casper FFG 受到 PBFT 的启发,在此基础上进行了简化和改良,通过经济学的惩罚机制低于共谋作恶,是具有即时确定性的共识算法。
Casper共识的取舍:
以太坊不限制节点数量,所以有大量的验证节点,为了解决节点之间通信数据量巨大的问题,对验证节点进行分组,随机选取一部分节点达成共识。
下面对原理进行简述,实际工作过程中,以太坊2.0异常复杂,涉及多个分片链、信标链、不同的委员会、交叉的验证投票等非常多的细节,虽然the merge并不增加分片链,但依然有很多预留的设置。
定义:
步骤:
最终确定性 (finality)
PBFT需要两轮投票才能保证完成全网共识,两轮投票后区块的最终性也确定。
以太坊PoS共识的确定性由检查点 (checkpoints) 控制,检查点是位于 epoch 第一个 slot 里的区块,每个 epoch 都会有一个检查点区块。Committee成员除了对自己所属的slot进行投票,还需要对当前epoch的检查点进行投票。
当一个 epoch 结束之后,如果其检查点得到了 2/3 余额票数,也就是形成了绝对多数,那么该检查点就被证明 (justified) 了。最终确定:如果检查点1的状态是justified,且其下一个 epoch 的检查点2也是justified,那么检查点1的状态就被最终确认 (finalized)。
一般来说,一个检查点会在两个epoch内得以最终确定,即12.8分钟。
Staking来源于PoS共识机制,是对持有的Token行使权益的一种行为,包括质押、投票等,通过这种行为可以获取奖励。Staking是保障PoS网络安全的基础,PoS共识中,成为节点需要质押并锁定一定数量的Token,质押的Token将作为保证金,防止节点作恶,协议会通过惩罚机制扣除保证金。
在以太坊2.0中,由于不存在原生的委托协议,Staking所指的是锁定ETH运行验证节点。
每个validator需要两个keys,分别是Signing keys和Withdrawal keys,根据keys所有权的不同,可以将参与方式分为以下四种:
节点收益由出块奖励、证明奖励组成,节点收益受网络总质押量影响,总质押量低,单个节点的收益率高,随着质押量增加,虽然单节点的收益率下降,但网络总增发量会增加,以保证节点有收益。这是因为,随着更多的以太坊转移到信标链上并开始验证,每个区块生产者的奖励会增加,但速度会越来越慢,因为每个时段的区块生产者的数量永远不可能高于 32 个。
证明奖励(attestation reward)
证明奖励分为两部分:base reward 和 inclusion delay
base reward与节点的有效余额有关,是相对固定的值。inclusion delay与证明投票的速度有关,当block proposer提交了一个区块后,若验证节点在下一个区块完成投票,则inclusion delay=1,这是合理的最优状况,此时能够拿到100%的奖励,若是延迟一个区块完成投票,则inclusion delay=2,只能拿到50%奖励。
节点的有效余额影响收益
有效余额是通过节点当前余额和上一次有效余额得出的每个节点的权重值,用于计算给予该验证者的奖励和惩罚的大小:
验证者余额的微小变化可能对其有效余额产生巨大而长期的影响,因此有必要对其进行主动管理。如果验证者需要停机,选择合适的时间也很重要,因为并非所有惩罚都是平等的。0.015 的惩罚将验证者的余额从 30.010 降低到 29.995(有效余额没有变化)对验证者产生的整体奖励影响很小,但是 0.015 的惩罚会使验证者的余额从 29.760 降低到29.745(有效余额从 30 变为 29)具有更大的影响。
通胀
以太坊目前的增发和销毁有3个部分组成:
在当前以太坊总质押量接近1400万的数量下,理论上通证率将小于0.5%。
惩罚机制
惩罚机制出于两个目的:
有两种类型的处罚:节点不作为和错误的证明行为(Slashing)
节点不作为处罚较轻,例如节点离线会罚没一定的保证金。在绝大多数(2/3)验证者仍然在线的情况下离线会导致相对较小的惩罚,因为仍有足够的验证者在线让链完成。离线罚没的金额大致等同于在线收到的奖励,这意味着,有50%的时间在线即可保障保证金不受损失。同一时间离线的节点越多,惩罚额度越高。超过 1/3 的网络同时下线持续超过 4 个 epoch,所有离线验证者都将受到逐步加大的inactivity leak惩罚,惩罚额度随着时间的二次方增长,直到节点恢复或不满足最小有效余额被踢出验证节点。
Slashing与惩罚不同,对网络有破坏的违规行为会受到严重的Slash处罚,例如双重投票和环绕投票
Slashing被触发后:
EPOCHS_PER_SLASHINGS_VECTOR
以该罚没事件为中心的一个大小时期的窗口(大约前后 18 天)内有多少其他验证者被罚没多少,对验证者施加进一步的惩罚。窗口期内被处罚的验证者越多,每个验证者的惩罚就越严重。进入/退出
以太坊限制了在每一个epoch中可以进入或退出的节点数量,超出限制的节点将在队列中等待,数量限制定义为:
churn_limit = max(4, V_active/65536)
// V_active:当前网络中活跃的验证节点数量
// churn_limit:一个epoch中可以加入和退出的节点数量
节点激活后最少需要服务为2^11 epochs,约为9天。在这之后,若节点要退出,对于没有被slash的节点,需要等待2^8 epochs(约27小时),对于发生过slash节点,需要等待2^13 epochs(约36天),这进一步惩罚了他们,并迫使他们持有ETH。等待周期结束后可以进行赎回抵押资产。
这一等待时期确保了如果验证器行为不端,有时间可以捕获错误。
在当前41万节点的情况下,每个月可以有10.3%的节点进入或退出:
Staking as a service平台收费在每月5-10$左右,按照5$计算,约占每月收益的2.6%。实际由于以太坊对节点的性能要求较低,服务商可以在同一台服务器部署多个节点,具有一定规模效应,节点越多边际成本越低。
About Me:
Twitter:@cryplato