体验Tezos“自我修正”的过程(上)
在这篇文章中,将描述 Tezos “自我修正”程序在实践中是如何运作的,并提出一些近期改进的方法。
更新到2020年:后巴比伦时期的图表更新
(感谢Pietro Abate的更新)
背景
Tezos 是一个自我修正的区块链网络,该网络整合了正式的链上机制,可以提议,选择,测试和激活协议升级,而无需进行硬分叉。
在这篇文章中,我将描述 Tezos “自我修正”程序在实践中是如何运作的,并提出一些近期改进的方法。更深层次的问题,如将投票权从共识中分离出来,或者如何为链上的修正提案提供资金,不在本文讨论范围之内,但却是未来需要考虑的重要话题。
这幅作品需要具备Tezos Baker(烘焙师)的基本知识。我建议阅读《It’s a baker’s life for me》和 Tezos 的利益证明文件来开始。
*为了避免与 Baker 的“周期”相混淆,我使用“ amendment process ”而不是“ election cycle ”。
1. 了解 Tezos 修正程序
修正过程可以分为四个独立的阶段:提案阶段、探索或“测试”投票阶段、测试阶段和升级投票阶段。这四个周期中的每个周期持续8个Baker周期(即32,768个区块或大约22天18小时),从提案到激活几乎需要花费整整3个月。
正如下面的流程图所示,任何未能进入下一周期的情况都将使网络恢复提议阶段。换句话说,如果周期流转失败,整个修正过程将重新启动。
这正是自Tezos 创世区块在六月份被社区采用以来发生的情况简介。在没有任何提案的情况下,自创世区块开始,每八个周期重新启动一个新的提案期。
那么它是如何工作的呢?
1.1 提案阶段
Tezos 修正过程从提案期开始,在此期间,“烘焙师”(Baker)可以通过提案操作在链上提交提案,该操作以“源”、“周期”和“提案哈希”作为参数。“源”是提交提案操作的Baker,“period”指定提交提案的特定提案期限,“提案哈希”是串联的.ml / .mli源文件的压缩包的哈希。
Baker 在每个提案期内最多可提交20份提案。当提交一份提案时,Baker 也提交一份对该提案的投票,该投票数等于期初股权余额中的滚动数。
对于那些想要跟随的人,Tzscan.io(以及其他 Tezos 区块探索者)允许你观看即将到来的提案。
然后,其他 Baker 可以通过提交自己的提案操作来对提案进行投票。正如白皮书中所述,提案期的投票是通过“赞成投票”进行的,这意味着每位 Baker 可以对20个提案各进行一次投票。可以将这种行为视为“投票”的一种形式。
在提议期结束时,该网络将计算提案投票,投票最多的提案将进入探索投票期。如果没有提交任何提案,或者提案之间有联系,一个新的提案期就开始了。
1.2 探索投票期(在当前议定书中称为“测试投票”)
在探索投票期,Baker 可以对上一个提议期排名靠前的提议进行投票。
投票是通过“投票操作”(Ballot Operation)在链上完成的,整个过程包含“source”、“period_n”、“proposal”和“Ballot”。“source”是 Baker,“period_n”是操作提交的具体投票周期,“proposal”是提案,“ballot”是 Baker 的投票,可以是“(是)Yay”、“(否)Nay”、“(弃权)Abstain”。
与在提案期一样,Baker 的投票基于探索投票期开始时其质押余额中的“卷数”(Rolls)。每个 Baker 在投票期间只能进行一次投票操作。
在八个周期结束时,网络将对票数进行计数。如果投票参与(“赞成”,“反对”和“弃权”的总数)达到法定人数(如下所述),并且有80%的非弃权 Baker 通过,则提案将进入测试期。
如果未达到法定人数或80%的绝对多数,修正过程将恢复到提案期的开始。
与提案期的一个显著区别是,在探索投票期之后,法定人数更新如下,其中Qt为之前的法定人数,qt为总参与人数:
这将调整法定人数以匹配过去参与率的指数移动平均数。
在创世区块,开始时的法定人数是80%,直到第一次探索投票结束前都将保持在80%。
1.3 测试周期
如果在探索投票期间,一项提案获得了绝对多数人的批准,那么测试阶段(8个周期)的测试网分支将与 Tezos 主链平行运行48小时。为了减少网络将测试网分支误视为主链的风险,已保守地设置了该48小时常数。
正如在2014年的Tezos白皮书中所描述的那样,提案可以访问一个小型标准库,但已被沙盒化,不能进行任何系统调用。
测试期的目的是评估一项提案是否值得修正协议。
测试网分支确保升级不会破坏网络,并且如果采用了升级,网络将继续进行有效的状态转换。然而,48小时的测试时间显然太短了,无法确定一项提案是否值得一试,以及是否安全。特别是,它可以维持超过48小时的活跃状态,并且不包含安全漏洞。因此,一个与修订提案相匹配的测试网很可能在余下的7.3个测试周期内运行,使网络参与者能够评估和讨论修订,从而更好地了解其特性。
1.4 升级投票期
测试期结束即升级投票期开始。在此期间,网络根据链下讨论和测试期期间的行为来决定是否采用修正提案。
与探索投票阶段一样,Baker 使用投票操作提交他们的投票,投票的权重与推广投票期间开始时的质押余额中的掷骰数成比例。同探索投票期一样,每名 Baker 在此期间只能进行一次投票操作。
在升级投票期结束时,网络会统计投票数。如果参与率达到最低法定人数,并且不弃权的 Baker 中有80%的绝对多数投了赞成票,则该提案将被激活为新的主网。
否则,流程将再次回到第一阶段。根据参与率更新最小法定人数,所用公式与探索投票期结束时相同:
修改后的协议被激活后,新的提案期开始,修改过程重新开始。
我们将在下篇继续为大家介绍改进Tezos修正流程,敬请期待!