V神亲述Serenity设计原理,带你了解这项宏伟工程背后的独具匠心!
Eth1.0 链的设计原理文档见:
(ii) 减少发生意外安全问题的风险,且 (iii) 使得协议设计人员更容易让用户确信参数选择的合法性。 通过此链接[1]了解相关的背景信息。当我们为了实现特定级别的功能时,是无法避免一定的复杂性的。复杂性的优先级别是:Layer2 协议的复杂性 > 客户端实现的复杂性 > 协议规范的复杂性。 ▲长期稳定性:理想情况下,应该构建较低级别的协议,这样就不需要在10年或更长时间内更改协议,并且任何需要的创新都可以在更高的级别 (客户端实现或 Layer2 协议) 上进行。 ▲充裕性:在协议之上应能够构建尽可能多的应用程序类别。 ▲深度防御性:协议应能够在各种可能的安全性假设 (例如有关网络延迟、故障数量、用户动机的假设) 的情况下继续运行。 ▲轻客户端的可验证性:鉴于一些安全性假设 (例如网络延迟,攻击者预算界限,只存在1/n或少数诚实的验证者),验证 O© 数据 (理想情况是只验证信标链) 的客户端应该能够获得间接的保证,即整个系统的所有数据是可用且有效的,即使在受到51%攻击的情况下 (备注:这是“深度防御性”方面的其中一个目标)。 支持 Layer2 的论据:
Serenity 设计原则
Layer1 与 Layer2 的折衷
--降低无法达成共识的风险;
- 随着时间的推移,拥有更多的灵活性和实现新想法的能力
- 减少由于缺乏强制每个人升级到新协议 (即硬分叉) 的机制而导致进展停滞的风险;
- 可能会降低整个系统的复杂度;
- 如果 Layer1 不够强大,那么就不可能在 Layer1 上搭建具有所需性能的 Layer2 系统 (参见上方提到的“充裕性”)
- 如果不实现 (i),那就无法具有稳健的信任模型来搭建 Layer2 应用程序。
- 如果不实现 (ii),那扩展性将仅限于借助状态通道或者 Plasma 等技术实现,而这些技术在推广以及资金锁定和/或大规模退出方面存在挑战。
- 如果不实现 (iii),那就无法在不使用通道技术的情况下进行快速交易,而通道技术在推广以及资金锁定和/或大规模退出方面存在挑战。
- 隐私性:环签名 (Ring Signature) + 机密性值 (confidential values) vs. ZK-SNARKs 和 ZK-STARKs,Rollup vs. ZEXE 等等。
- 高级编程语言:声明式编程 vs. 命令式编程,语法,形式化验证特性,类型系统,保护性特征 (比如禁止在算术表达式中使用非纯函数),本地支持的隐私特征等等;
- 可扩展的状态存储:账户模型 vs. UTXO (未使用交易输出)模型、不同的租金方案、原始默克尔分支见证 (raw Merkle branch witnesses) vs. SNARK/STARK 压缩 vs. RSA 累加器,稀疏的默克尔树 vs. AVL树 vs. 基于使用情况的不平衡数等等 (除此之外,还有针对验证状态转换的不同方案)。
- 签名方案:Schnorr 签名、BLS 签名、Lamport 签名等等
如果同时拥有一个主节点和备份节点成为常态,那么攻击者就可以对区块链网络进行分区,并使所有验证者的主节点和备份节点提交不同的区块,从而导致两个相互矛盾的区块被敲定。slashing 惩罚有助于在很大程度上抑制这种操作,降低发生这种情况的风险。 需要注意的是,确定性要求大多数验证者在线,而这已经是 Sharding (分片) 机制中已经存在的要求,即 Sharding 机制要求每个由随机验证者组成的委员会中的2/3验证者对交联 (crosslink) 进行签名,只有这样,该交联才将被信标链接受。 我们选择 Casper FFG 只是因为它是协议在实现确定性时可用的最简单的算法。当前我们正在积极探索在以太坊2.0的阶段3将之切换为 CBC Casper。 我们不选择这种使用超级节点的方式,主要理由如下:
为何使用权益证明?
为何使用 Casper?
在后两个阵营存在一个问题,即是否使用以及如何使用保证金存款 (质押金) 和 Slashing (质押金罚没)。这三种权益证明机制都优于工作量证明 (PoW),但我们想在本文捍卫一下以太坊2.0使用的方法。质押金罚没 (Slashing)
上方第2点的一个更为微妙的例子就是,在2019年7月 Cosmos 链上的一名验证者因对两个相互矛盾的区块进行签名而被罚没了 [8]。对此事件的调查结果显示,该验证者同时运行了一个主节点 (primary node) 和一个备份节点 (backup node),该验证者的目的是为了确保当其中一个节点下线时,该验证者依旧能够获得奖励,而这两个节点恰好同时启动了,导致这两个节点对两个相互矛盾的区块进行了签名。共识算法的选择
Sharding,或者说我们为何讨厌超级节点?
上述这些中心化风险也是我们为何不会试图实现以太坊的超低延迟性 (低于1秒) 的原因,而是选择 (相对) 保守的延迟时间。在以太坊2.0系统中,使用尽可能少或尽可能多的 ETH 以及使用尽可能少或尽可能多的计算能力来参与是可能的 (尽管你需要在 ETH 和计算能力方面相一致,即你无法在仅拥有很少计算能力的情况下质押大量的 ETH,反之亦然),且固定成本是最小化的,尽管这种成本会随着你质押的 ETH 的数量的增长而增加 (一旦你质押的 ETH 数量超过了 32,768 ETH,那么大部分时间你将在验证所有的分片链 (备注:共计1024条分片链,每个验证者身份需要质押 32 ETH,因此 1024*32=32,768))。
一种常见的较为严苛的安全模型就是非协同的理性多数模式 (uncoordinated rational majority),即参与者会按照自己的利益行事,但相互协同的参与者数量不会超过一定的比重 (在简单的 PoW 链中,这一比重为23.2% [11])。 另一个更为严苛的安全模式是应对最糟情况的模式,即当单个参与者控制了超过50%的算力或质押金时,此时的问题就变成了: (1)在这种情况下,我们能保证验证者在试图破坏整条链时将付出非常高昂的成本吗? (2)我们可以无条件地保持哪些保证? 在 PoS 链中,slashing (对质押金的罚没) 可以提供上方第一个问题的保证,即当攻击者试图破坏整条链时,将需要成大非常高昂的成本。在不存在分片的区块链 (比如当前的以太坊1.0链) 中,每个验证所有区块的节点都会通过提供以下两个保证来完成上方第二个问题的要求:(i) 最长的链是有效的,且 (ii) 最长的链也是可用的 (通过此链接 [12] 查看“数据可用性”的重要性的理论依据)。 在以太坊2.0中,我们通过 sharding (分片) 的方式来实现深度防御,即通过将随机选择的验证者委员会组合起来,基于大多数验证者将保持诚实的安全模式,以实现有效性和可用性保证,且通过托管证明 (proof of custody) 来防止懒惰的验证者(即如果验证者“懒惰”不参与验证将会面临惩罚),通过欺诈证明 (fraud proofs)和数据可用性证明 (data availability proofs) [9] 在无需下载和验证所有数据的情况下检测无效和不可用的链。这将允许客户端拒绝无效和不可用的链,即便当这条链是由大多数 PoS 验证者支持的链。 客户端可以通过某种保留共识的方式来检测交易的审查性 (详见 [13]),但这方面的研究还没有整合到以太坊路线图之中。 下表中展示了预计的安全特征: 需要注意的是,上方第4点是一个例外;这种奖励取决于“证明”被采纳的延迟性,而不是取决于验证者的行为,而且没有惩罚的风险。 基本奖励 B 本身的计算方式是,其中 D1...Dn 是验证者质押金的规模,k 是一个常量。这是两种常见模式的折中方案,这两种常见的模式是 (i) 设置固定的奖励率,也即 k*Di,(ii) 设置固定的总奖励,也即。 反对 (i) 的主要论据是,这种模式给网络带来了两个方面的不确定性:币的发行总量不确定,以及参与质押的总数不确定 (因为如果固定的奖励率太低,那基本没人会参与进来,这威胁了整个网络;而如果固定的奖励率太高,那将有太多的人参与进来,使得币的发行量出乎意料的高)。 反对(ii)的的主要论据是,这种模式将会使网络更容易遭受“discouragement attacks”攻击,详见 [13]。 采取基本奖励的方式折衷了这两种方法,并避免了每种方法的最坏结果。 区块提议者将“证明”包含在区块中之后获得的奖励是基本奖励的 1/8,这样的目的是鼓励区块提议者尽可能地监听信息并接受尽可能多的信息。 但是,如果 P 低于 2/3 (即在线验证者的数量低于总数的2/3),那针对离线的验证者将会受到称为“inactivity leak”的惩罚。 这意味着,如果50%的验证者离线了,那区块会在21天之后重新开始被 finalize,因为21天之后,所有离线的验证者已经损失了50%的质押金 (16 ETH),而如果验证者的质押金低于16 ETH 将被驱逐出验证者行列。 我们使用验证者抵押消息的签名作为所有权证明,该签名明确了签名的密钥以及其他重要的信息,比如取款密钥。 未来我们计划使用 VDF (可验证延迟函数) 来进一步增加随机性种子抵御操控的鲁棒性。 由于打乱验证者 (shuffle) 就是一种置换,在每个 epoch 期间,每个验证者都会被指定为一个长期委员会的成员; 由于以太坊2.0系统中将有1024条分片链,这意味着要想每个分片链在每个 epoch 期间进行一次交联,那我们将需要131072名验证者 (备注:1024*128=131072),或者说,以太坊2.0系统中需要质押大约440万 ETH (实际上,如果质押的 ETH 少于这个数,那分片链的交联发生的次数就会更少)。而如果将最低的质押限制提高 (比如提高至1024 ETH,当前确定的是32 ETH),那意味着我们将无法获得足够多的验证者数量来实现在每个 epoch 期间在每个分片链上进行交联,除非所有的 ETH 都质押了进来。 每个 epoch (64个区块,约6.4分钟) 之后,信标链都会重新为每个分片链重组一个分片委员会 (也即打乱验证者)。对验证者进行快速打乱,是为了确保如果攻击者想要攻击某条分片链,那该攻击者将需要快速地破坏 (控制) 该分片委员会。 为了进一步维护网络的稳定性,并不是所有的验证者都会同时从 n 时间段的长期委员会中轮换为 n+1 时间段的长期委员会;而是每个验证者的轮换都会有所延迟,直到下个时间段的某个随机时间点再进行轮换。 (1)通过委员会对分片区块进行签名,将所有分片区块都直接地放入信标链中; (2)不存在信标链,而是通过某种结构将所有的分片链连接起来。 上述第(1)种结构被舍弃的原因是:对分片链区块设置一个6秒的时间 (slot) 是可取的,但是每6秒在信标链上进行1024次交联将会导致信标链承受非常高的负荷。 上诉第(2)中结构被舍弃的原因是:中心辐射型的信标链结构比任何复杂的构造都更容易实现和理解。 在每个 epoch 开启时,每个分片区块都包含了一个指向其父块的 pointer 和一个指向信标区块的 pointer。信标链和分片链之间的这种半紧密耦合是为了 (i) 确保分片链知道有关其长期委员会的信息 (因为此信息是由信标链生成的),同时 (ii) 使验证分片链区块称为一个决定哪条链才是规范信标链的可行方式。 分片链状态 (奖励、惩罚、历史累加器) 被故意设计成小于区块大小,目的是确保如果欺诈证明有需要,分片链状态可以完全被放入信标链之中 (虽然这可能只会在阶段2放宽限制,在阶段2,每个单独的执行环境的状态将受到此大小的限制,但所有状态合并起来将非常大,因此欺诈证明将需要默克尔证明)。 抵押合约 (deposit contract) 中保留着所有质押的默克尔根 (Merkle root)。一旦验证者质押的默克尔根被包含在了 Eth2.0 链中 (通过Eth1.0 数据投票机制),Eth2.0 区块提议者就可以提交一个该质押的默克尔证明,并启动质押过程。 在阶段0期间,想要“取款”的验证者实际上是还不能进行取款的;在之后的阶段,将能够把验证者取出的资金转移至某个执行环境中。 如果任何用户不想要加入某个分叉,只需继续留在那条没有在 fork slot 改变 fork ID 的链上。这两条链都可以继续存在,验证者可以自由地对这两条链进行验证,且不会受到罚没惩罚。 备注:译文有所删减 原文链接: https://notes.ethereum.org/s/rkhCgQteN安全模型
Casper 设置的激励机制
在每种情况下,实际奖励的计算如下。如果 B 是基本的奖励,P 是执行所需“证明”操作的一部分验证者,那么任何执行了所需操作的验证者所获得的奖励将是 B*P,而任何本该执行相关操作但却未进行该操作的验证者将受到 -B 的惩罚。这种“集体奖励”机制的目标是“如果有人表现得更好,那每个人都表现得更好”,从而限制恶意破坏因素。(参见本文 [13] 查看有关恶意破坏因素的描述以及为何限制这些因素非常重要)
基于当前这种参数化,如果区块停止了被 finalize (敲定) 的进程,那验证者将会在2.6天之后损失1%的质押金,在8.4天后损失10%的质押金,在21天后损失50%的质押金。
BLS 签名
随机选择验证者
LMD GHOST 分叉选择规则
验证者生命周期
这些值都是由签名密钥进行签名的。将签名密钥 (signing key) 和取款密钥 (withdrawal key) 分开,目的是让更具安全风险的取款密钥得更加安全 (取款密钥处于离线状态,不会与任何质押池进行共享等等),而签名密钥则用于在每个 epoch 期间对消息进行签名。
如果验证者被罚没了,那取款时间还将进一步延迟约36天。这是对验证者的进一步惩罚 (并强迫他们持有 ETH;相比于那些想要支持以太坊但只是不小心犯错的验证者受到的惩罚,这使得那些想要破坏以太坊区块链的恶意验证者受到的惩罚将要更严重),同时也给系统预留了时间,用于计算在此期间也被罚没的其他验证者的数量。分叉机制
作者 | Vitalik Buterin
编译 | Jhonny
免责声明:
1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。
2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。
- 贝佐斯最后一封股东信:宇宙希望你成为普通人,千万别让它成为现实2021-04-19 17:02
- Props,让互联网与区块链无缝对接的「中间件」2021-04-19 17:02
- Coinbase高管到底卖了多少股票?2021-04-19 16:03
- 通往未来之路:下一代互联网与Metaverse2021-04-19 16:03
- 央行前行长周小川谈比特币:要提醒,要小心2021-04-19 15:03
- 链上新知 |电子图片卖出7000万美金,让马斯克都来站台的NFT究竟是什么?2021-04-19 15:02
- Crypto VC,LP怎么投?2021-04-19 13:03
- 周末比特币融资利率跌至-0.03%低点,为7个月以来最低水平2021-04-19 11:02