波卡共识二 | GRANDPA 共识最终一致性确认
原文链接:
https://polkadot.network/blog/polkadot-consensus-part-2-grandpa
翻译:Akagi201
Polkadot 的共识过程与其他区块链链有一个很大的不同地方在于, Polkadot 共识增加了一个 GRANDPA 最终确认的过程, 而共识协议如 BABE 不需要关心区块何时最终确认, 将整个共识过程分割成两个步骤, 下面让我们一起看看 GRANDPA 协议到底是如何工作的?
在这个系列的介绍中,我概述了一个共识算法帮助计算机网络回答三个问题。GRANDPA 解决了第二个问题。
-
谁能提出下一个变化?
-
哪一组修改是最终的?
-
如果有人违反规则,会发生什么?
GRANDPA 是 Polkadot 的最终性程序。它的目的是决定性地选择规范链。换句话说,GRANDPA 决定哪一组变化是最终的。它自己并不生产区块;相反,GRANDPA 验证器从另一个区块生产模块(我们将在第三部分讨论)导入区块。
将区块的生产和安全分开的好处之一,除了一般的好工程实践之外,是 GRANDPA 不会对它导入的区块施加许多约束。GRANDPA 只要求区块生产系统具有最终的安全性,遵循 GRANDPA 的分叉选择规则,以及区块的头有一个指向其父块的指针。这第三个属性确保了轻量级客户可以跟踪链。
GRANDPA 协议
GRANDPA 与其他拜占庭容错(BFT)区块链算法不同,验证者对链而不是区块进行投票。该协议以过境方式应用投票,GRANDPA 算法找到具有足够票数的最高区块编号,以视为最终结果。这个过程允许几个区块在一轮中被最终确定。
这最后一部分很重要,因为它消除了阻碍其他区块链最终性程序的瓶颈。GRANDPA 和其他 PBFT 衍生品一样,具有 O(n^2) 的复杂性。也就是说,如果你将节点的数量增加一倍,你必须发送四倍的信息。将区块生产作为最终过程的一部分的共识系统使你为每一个区块发送这些消息。通过在另一个模块中隔离区块生产,我们可以以更有效的方式生产区块(对 BABE 来说是 O(n)),并在一个回合中一起最终确定几个区块。
看下面这个例子,请看这些来自 Kusama 节点的日志信息。
Idle (24 peers), best: #664257 (0x706c…76b7), finalized #664253 (0xe4ab…4d2a)
Imported #664258 (0xee71…6321)
Idle (24 peers), best: #664258 (0xee71…6321), finalized #664256 (0x809a…a5d8)
注意,在一轮中,GRANDPA 完成了三个区块(664,254 到 664,256)。
这是一个例子,说明 GRANDPA 如何在一轮中敲定多个区块,如上面的日志信息所示。左边的深灰色区块之前是最终确定的,验证者(右边的灰点)已经为新一轮的投票发送了投票。还有三个区块有超级多数投票,被最终确定。
一个 GRANDPA 轮次
投票者执行以下操作来最终确定新区块:
-
一个被指定为 "主要" 的节点广播它认为在上一轮中可以最终确定的最高区块。
-
在等待网络延迟后,每个验证者对其认为应该被最终确定的最高区块进行 pre-vote。如果大多数的验证者是诚实的,这个区块应该延长主广播的链。这个新的链可能比上一个最终确定的链长几个区块。
-
每个验证者根据预投票的集合计算出可以最终确定的最高区块。如果预选票集扩展了上一个最终确定的链,那么每个验证者将向该链投出一个 pre-commit。
-
每个验证者都会等待收到足够多的预投票,以便在新最终确定的链上形成一个提交信息。
与其他拜占庭容错算法(如 PBFT 和 Hotstuff)的一个微妙但重要的区别是,关键路径上没有视图变化。虽然每一轮都会改变主节点,但这种视图的改变只是为了在异步网络条件下开始新的一轮,因此在部分同步网络中,即使不分配主节点,协议也会一直前进。
当协议中的步骤拥有超过三分之二的 pre-vote 或来自验证者的 pre-commit 时,这些步骤就可以完成。为了具有确定性的最终结果,必须限制验证人集合中的票数。这与具有概率最终性的链不同,后者可以有无限的验证人集。选择投票者集合的方法是在 GRANDPA 协议之外定义的逻辑(见 Part 4)。
GRANDPA 支持加权投票。例如,你可以在你的链上实现 GRANDPA,拥有更多质押的验证人获得更多的投票。然而,在 Polkadot 中,所有验证者都有一个单一的、同等权重的投票。这种加权是一个经济决定,以防止小的节点集获得大的网络份额。
负责任的安全:当事情出错的时候
GRANDPA 有一个被称为 "accountable safety" 的功能,让验证者对安全违规行为负责。当两个处于不同链中的区块被最终确认时,就会发生安全违规。负责任的安全就像事故发生后的调查。
但首先,两个冲突的链是如何开始达到最终结果的?BFT 系统总是建立在这样的要求上:有问题的验证人的最大数量是总验证人的某个分数 – 在我们的例子中是三分之一。为了最终确定两个冲突链,验证人集合未能满足这一要求;至少有三分之一的验证人对这两个链进行了投票。
在这个例子中,有 10 个验证人,这意味着 3 个是系统可以承受的最大错误验证者数量(f=(10-1)/3)。有了 4 个有问题的验证人(红色)和一个网络分区,每一组诚实的验证人(蓝色)都可以认为不同的区块是最终的。
对两条相互冲突的链进行投票被称为模棱两可 (equivocating)。这是一个普遍承认的事实,即模棱两可是对 BFT 系统的侮辱。在 GRANDPA 中,我们可以发现它。
首先,我们开始询问节点,为什么他们在投票确定第二个区块时不考虑一个区块的最终结果。任何诚实的验证人都应该用一组第二轮的 pre-vote 或 pre-commit 来回答这个问题,这些 pre-vote 或 pre-commit 对第二块有大多数。
如果是这样的话,那么我们再问第二个问题。你看到了第一轮的哪些 pre-vote?我们实质上是要求他们向其他验证人告密,并透露他们从同行那里得到的所有投票。在这两组投票的某个地方,你会发现投票给两条冲突链的验证人。据推测,他们将受到严厉的惩罚,但这是链的逻辑业务,而不是共识。
如果发生安全故障,那么网络将不得不进行硬分叉,以选择哪个冲突的链是最终的。有了负责任的安全,Polkadot 可以确保实施攻击的验证者受到惩罚,并且不会留在验证者集合中。
GRANDPA 如何帮助可用&有效性
还记得上面的日志信息吗?请注意,最终完成的区块比最佳区块晚了两个区块。这种滞后实际上是将区块生产和最终完成区分开来的一个优势。
Idle (24 peers), best: #664258 (0xee71…6321), finalized #664256 (0x809a…a5d8)
区块链互操作性系统,包括 Polkadot,有一个数据可用性问题。想象一下,一个 collator 向验证人提交了一个区块,但是其他的 parachain collator 都没有看到它。如果提交该区块的校对者下线了,会发生什么?验证人有责任将完整的区块存储一段时间,以便任何 parachain collator 都可以询问该区块。
验证人应该在投票前执行区块,但我们想确保他们这样做。Polkadot 中存在一些节点,我们称之为渔夫 (fishermen),负责执行区块并报告任何验证者的不当行为,例如提议将一个无效的 parachain 区块纳入中继链。
我们绝不希望出现这样的情况:我们最终确定了一个无效的区块,或者最终确定了一个验证者无法重构的区块。通过将最终性保持在链头后面的几个区块,我们可以让预付验证区块是否正确,并对验证人的区块可用性提出质疑。
我们一直在讨论如何决定规范链,但这些链的选项从何而来?这就是 BABE 出现的地方。见本系列的 Part 3。
[1] 相对于 "最终性",我更喜欢 "安全性" 这个词,因为最终的区块并不是以物理定律的方式确定的。它们是最终的,因为 GRANDPA 这么说。我更喜欢 "安全" 这个词,它比 "最终" 带有更合理的期望。例如,我们认为航空旅行是安全的。但我们都知道,有时飞机会坠毁。此外,当飞机真的坠毁时,我们有一个调查和法律追索的过程,以追究某些方面的责任。
Bifrost 是什么?
Bifrost 是一个为 Staking 提供跨链流动性的 Web 3.0 基础设施,通过跨链通信协议(XCMP)为多链提供去中心化、可跨链的 Liquid Staking 服务。
Bifrost 的使命是通过跨链衍生品来聚合超过 80% PoS 共识链的 Staking 流动性,为波卡中继链、平行链,以及与波卡桥接的异构公链提供标准化可跨链的带息衍生品,降低用户 Staking 门槛、提升多链质押比例、提高生态应用收益基础,打造用户、多链、生态应用三方赋能、正向循环的 StakeFi 生态。
目前 Bifrost 已获得 NGC、SNZ、DFG、CMS 等机构数百万美金融资和 Web3 基金会 Grant,同时也是 Substrate Builders Program、Web3 Bootcamp 成员。
比推快讯
更多 >>- 3月28日现货比特币ETF净流入达1.79亿美元
- WIF最大的个人/机构持币地址已浮盈1.34亿美元
- Prisma Finance攻击者:并非盗取资金,而是一次白帽行动
- Uniswap DAO正在就其资金多元化发起提案投票
- 比特币矿商Cleanspark计划出售最多8亿美元的股票,股价下跌10%
- AAVE:将通过OpenBlock进行风险管理
- 谷歌现在允许搜索比特币、Fantom、Arbitrum等钱包地址
- 去中心化借贷平台LendFi推出综合应用程序
- AI分析公司Helika推出5000万美元规模链游加速器
- Cathie Wood:出售 Coinbase 股票是主动投资组合管理的一部分
- Bitwise向美SEC申请推出现货以太坊ETF
- Wormhole:4月3日开启空投申领
- 3月28日9只现货比特币ETF净增持534枚BTC,净流入约3812万美元
- Greeks.Live:价值150亿美元的期权将于明日交割,BTC看涨期权依旧是移仓主力
- Web3基础设施平台Syndicate推出低成本L3链Degen Chain,原生 Gas 代币为DEGEN
- 1inch宣布启动社区建设者计划2.0阶段
- Econia Labs:Reference Frontend已上线并准备分叉
- OKX 全球首席合规官在任职仅六个月后离职
- 彭博社:美国和英国正在审查通过某俄罗斯虚拟交易所进行的超 200 亿美元的加密货币交易
- 资产代币化协议Midas完成875万美元种子轮融资,BlockTower等领投
- SBF被判入狱25年,被勒令没收超110亿美元资产
- Prisma:因漏洞影响暂停协议,剩余资金是安全的
- Ondo Finance聘请麦肯锡前数字资产主管Ian De Bode担任首席战略官
- 检察官:SBF至少要被判处40年监禁
- FTX锁仓价值75亿美元的SOL已吸引多个买家,包括Galaxy Trading
- SBF:Alameda和FTX本可以免于破产
- SBF:流动性危机是我本人造成的
- SBF:我犯了很多错,对每个阶段发生的事情感到抱歉
- SBF辩护律师:SBF从未想过要成为加密货币之王,他只是想对世界产生最大的积极影响
- 投资公司Kerrisdale:MicroStrategy股价被高估,已持有其空头头寸
- FTX受害者指责Sullivan&Cromwell将FTX持有的100 亿美元SOL七折出售给Galaxy
- FTX案受害者称至少有三人因该诈骗事件自杀
- 美法官表示SBF案的最高刑期为1320个月
- Vitalik Buterin撰文提出目前L2协议改进的四个关键
- 法官驳回SBF关于投资者已获得全额赔付的说法,称损失的资金超过 5.5 亿美元
- 美法官发现 SBF 试图篡改证人并在审判中提供伪证
- 8,116枚BTC从CoinBase转移到未知钱包
- 灰度向Coinbase Prime转移734枚BTC
- FLock.io完成600万美元种子轮融资
- SBF律师认为合适刑期不应超过六年半
- 派盾:Prisma攻击损失已扩大至1160万美元
- Alchemy Pay投资LaPay