以太坊步入「宁静」阶段,全面解析 2.0 设计哲学
从 11 月 4 号以太坊开发团队发布 ETH2.0 的启动条件并公布存款地址以来,各路 ETH 深度参与者们纷纷祭出了自己的 32 个或者更多的 ETH 支持其启动,终于在 11 月 24 号超额完成了 V 神设定的至少 16384 笔 32-eth 验证者存款总共不低于 52.4 万个 ETH 的启动要求,ETH2.0 主网在 12 月 1 号凌晨准时上线。
主网上线后第一阶段被命名为「Serenity」,运行的主链为 Beacon chain,即现在所运行的信标链(如下图所示,目前已经进行到第 357 个 Epoch),那么关于这条 PoS 链,有哪些设计哲学和创新点,他们是否又足以支撑 ETH 向 PoS 过渡呢?
Principles Serenity 的设计哲学
Simplicity 简单
基于加密经济学里权益证明和 Sharding 分片技术的内在复杂性,Serenity 在设计的时候尽可能的追求最大简单性,以便:1)最小化开发成本;2)降低不可预见的安全问题的风险;3)让之后的开发者在设计协议时,更容易的对其使用者说明协议的细节和合法性。(关于第三点,在某些协议的复杂性不可避免时,优先顺序应该服从:Layer2 协议 > 客户端实现 > 协议规范)
Long-term stability 长期稳定性
底层协议的建设必须足够的完美和有预见性,只有这样在未来的 10 年或更长的时间内都不需要对其进行任何更改,任何创新都可以基于这些底层,在更高的协议层发生和建设。
Sufficiency 充分性
Serenity 将会从基础性上保证尽可能多的应用程序可以构建在她协议的顶层。
Defense in depth 深度防御
协议可以在各种可能的安全假设下无差别的工作。(例如,网络延迟,故障计数,以及用户的邪恶动机。
Full light- client verifiability 全轻节点可验证
在给定的假设中(诸如网络延迟,攻击者的预算限定,1/n 或者 s/n 的少数诚实节点),一个验证客户端,即使在 51 攻击之下,应该也是可以获得整个系统的所有有效数据。(其实这点也是深度防御的一个子集)
2.0 The Layer1 VS Layer2 一层协议与二层协议的权衡
在任何区块链协议中,都存在着在 Layer1 中放入更多的特性将,还是尽可能的将 Layer1 设计的简单而在 Layer2 上进行更多的特性建设的争论。
其中,支持 Layer2 的理由包括:
- 降低了共识层的复杂性
- 减少了修改共识层的需要
- 减少共识层失败的风险
- 减少协议治理的负载和政治风险
- 随着时间的推移,将会更具有灵活性和实施新想法的能力
而支持 Layer1 的理由是:
- 减少由于缺乏机制迫使每个人升级到一个新的协议(硬分叉)而导致的发展停滞的风险
- 可能降低整个系统的复杂性
- 如果第一层没有足够强大,在第二层协议上构建多么复杂庞大的机制是不可能的(就像你永远有没有办法在比特币的网络上构建以太坊)
以太坊 2.0 的大部分内容都是在 Layer1 和 Layer2 之间小心权衡,在 Layer1 上所做出的努力包括以下三点:
1)准图灵完备、全状态代码执行
2)可拓展和可计算
3)高速区块完成时间
具体而言:
如果没有 1),就不能使用完备的可信模型去构建 Layer2 的应用程序;
如果没有 2),拓展性能就会被局限在某种状态通道和像 Plasma 的某些技术中,而这些技术往往面临着资金锁定和大规模资金退出的问题;
如果没有 3),就不能实现在不用状态通道的情况下及时交易的要求,而这通用也会从产生资金锁定和大规模资金退出的问题;
除了上述特性,ETH2.0 将 1)隐私、2)高级编程语言、3)可伸缩状态存储、4)签名方案,留给了 Layer2,因为它们都是快速创新的领域,现有的许多方案都具有不同的特性,未来不可避免的要在更多更好的方案之间进行权衡。例如:
1) 隐私 :环签名+机密值 VS Zk snark VS Zk starks;rollup VS ZEXE VS …
2) 高级编程语言 :声明性与命令性、语法、形式验证特性、类型系统、保护特性以及本地支持隐私功能
3) 扩拓展的状态存储 :账户 VS UTXOs,不能的租借方案,raw Markle branch 见证人 VS Snark/Stark 压缩 VS RSA 累加,spares Markle trees VS AVL trees VS 基于使用的 imbalanced trees;
4) 签名方案: M/N 多重签名,社交密钥的撤销和恢复,Schnorr 签名,BLS 签名,Lamport 签名
Why Casper 为什么选择 Casper 做 PoS 的方案
目前一共有三种主流的 POS 的共识算法:
- Nakamoto-inspired,如 Peercoin,NXT,Ouroboros…
- PBFT-inspired,如 Tendermint,Casper FFG,Hotstuff
- CBC Casper
在后两种方案中存在着一个问题,即是否以及如何使用安全质押与惩处(Security deposits and Slashing)(第一种方案与质押惩处是不兼容的)。所有的三种方案都是优于工作证明的,我们将具体介绍一下 ETH2.0 的做法。
Slashing
以太坊 2.0 使用的 Slashing 机制,即在验证者被发现有不当行为时,将会罚没其质押在网络中充当验证节点的代币,最好的情况下是约有 1% 的验证者会受到惩罚,最坏的情况是全网所质押的 ETH 都会面临惩罚。这种做法的意义在于:
1)提高攻击的成本
2)克服验证者们存在的问题,使验证者偏离诚实行为的最大动机是懒惰(不做验证就对一切交易都进行签名),对自相矛盾和不正确的签名的进行大额的惩罚可以在很大程度上解决这一问题。关于这一点,有一个很典型的案例:2019 年 7 月,一个在 cosmos 上的验证者因为签署了两个相互冲突的块而受到了质押金的罚没,而这个验证者出现这种失误的原因就是因为它同时运行了一个主节点和备份节点(以确保其中一个离线不会组织它们获得奖励),而这两个节点在同一时间以外打开,导致它们最终相互矛盾。
共识算法的选择
在出现大规模的验证节点作恶(1/3inBPFT-inspired,1/4in CBC), 只有 BFT-inspired 和 CBC 学派的一致性算法能够有较好的最终性,Nakamoto-inspired 共识算法无法在这种前提下实现最终性。最终性的确认需要大多数的验证节点都在线,这个要求在 Sharding 分片机制中也是需要满足的,因为分片要求必须要有 2/3 的随机验证者在跨片沟通时进行签名。
ETH2.0 选择 Casper FFG 就是因为它可以用最简单的算法在协议的最终部分实现最终性,但是未来会在第三阶段逐步转向 CBC Casper。
Sharding 分片--为什么 ETH2.0 讨厌超级节点
对于 Layer1 而言,分片的主要方法是使用超级节点--通过要求每一个共识节点都拥有超强的服务器,来保证它们能够单独处理每个事物。基于超级节点的拓展是很方便的,因为它实现起来很简单:它只是在现有的区块链的工作方式的基础上,加入了一些更加平行运作的软件工程层面的工作。
而对于这种做法,面临的主要问题如下:
1)抵押池集中化风险: 运行节点的固定成本很高,因此可以参与的用户很少。如果运行验证节点的固定成本占据了回报的大部分,那么较大的池子相较于小池子就能够节省更小的费用,这将会使得小池子不断被挤出,从而加剧集中化的趋势。相比较而言,在分片系统中,抵押了更多 ETH 的更大的节点需要验证更多的交易,所以其费用并不是固定的。
2) AWS 集中化风险: 在超级节点的体系下,家庭作坊式的抵押形式几乎是不存在的,大部分的抵押都将会在云计算的环境中,这将会大大增加单点故障的风险。
3)可拓展性的问题: 随着事务吞吐量的增加,上述风险增加,而在分片系统中增加的负载可以被更容易的处理而减少上述风险。
这些集中化分险也是 ETH2.0 没有选择格外追求超低延时(<1s)< span=""> 的原因,他们将这个延时设定在一个相对保守的数据。
在 ETH2.0 的分片系统中,不管你有多少的 ETH 和算力,你都能够参与到 ETH 的验证系统中。固定成本被最小化,即便你拥有非常庞大的 ETH 的量,你面临的费用依然是次线性的。
安全模型
ETH2. 的深度防御与分片方法是将随机委员会抽样结合起来,以实现诚实多数者模型下的有效性和可用性,同时提供保管证明以防止懒惰的行为者,并提供欺诈证明和数据可用性证明,以便在不下载和核实所有数据的情况下检测无效或不可用的链条 ; 这将允许客户拒绝无效或不可用的链。
下表是当前预期的安全属性:
Casper 的奖励机制是如何设计的?
在每一轮 Epoch 中,每一个验证者都会给出自己的证明,这个证明指的是验证者指出哪个是区块头并为之签名。如果这个证明被打包, 验证者将会获得 以下奖励:
1)证明被打包入内的奖励
2)指定正确的 Epoch checkpoint 的奖励
3)指定正确链头的奖励
4)证明被迅速打包上链的奖励
5)指定正确 shard block 的奖励
在不同的场景中,具体的回报计算方式如下:
B= 基础回报,P= 做出正确判断的验证者的比例
任意做出正确判断的验证者将会获得 B*P 的奖励,
B 的计算公式为:
其中,D1…Dn 表示质押量大小,k 是一个常数,
Beacon chain/shard chain 的结构
分片系统包含了 64 个逻辑分片「shards」,该系统以 beacon chain 为中心,协调所有的活动。
一笔交易在这个系统中得到最终确认的 流程 如下:
1)交易被包含在一群 shard 的某个 shard block 中
2)随机选择出来的验证委员会被分配到这个 shard 中并进行验证和签名
3)委员会的签名被打包进下一个 beacon block
4)下一个 beacon chain 通过 Casper FFG 进行最终性确认
将每个 shard block 都通过 hash 连接到下一个 beacon chain,使 shard 能够迅速识别彼此的 Markle 根,从而能够相互验证收据:
如上图所示,如果 shard n 没有被立即被打包到 n+1beacon chain 中,n+2beacon chain 的委员会可以尝试打包这个 shard 和下一个 shard。
尾---关于 ETH2.0 的未来
「宁静」仅仅只是 ETH2.0 浩瀚征途的第一步,但是从他们在第一步中所做的取舍可以看出来整个团队过去三年对于公平和效率的深入思考,并没有一味的追求所谓百万 TPS,而是在保证安全的前提下对实用性和可行性进行更大的实践。
我相信未来在很长的一段时间内,ETH 都将会整个区块链网络的基石,今年的 DeFi 只是在不成熟的网络条件下的一场伟大的社会实践,2.0 在 2021-2022 愈臻完善的时候,必然会迸发出更大的商业价值和社会价值。