查看原文
其他

波卡入门系列丨波卡国度法律:GRANDPA & BABE

BluemountainLabs BluemountainLabs 2022-04-27






一个国度会有涉及各种事物的法律法规、规章制度以及办事流程。在波卡网络上,GRANDPA & BABE 是国度法律,XCMP 是国度商务交易程序,全民公投是这个国度的公共事务办理规则。
上周我们重点讲解了全民公投,这周来聊聊 GRANDPA & BABE,下周再详细讲解 XCMP。
 
一、网络运行安全共识 GRANDPA & BABE
为什么用混合共识,好处是什么?
区块链的网络运行安全就是要保证网络不掉线,能够持续出块向前且减少出现硬分叉的情况。即使出现分岔,数据回滚时可以有迹可循问题出在哪里,这一点就需要在生成链的过程中有实时的标记反馈,可以反馈块生产情况或是阶段性的链有效性。
波卡的中继链作为一个联结各链的节点池,网络运行的稳定性和平滑度就显得尤为重要。为使中继链的工作稳步向前发展,波卡采用的是混合共识机制,同时使用 GRANDPA 和 BABE。
混合共识保证了波卡网络总能生成新块且不易分岔或回滚,即网络速度快,不会有延缓交易的风险,也不会存在卡住和回滚被攻击的情况。在 GRANDPA  和 BABE 的法规之下,中继链只需按照法规产出工作内容就可维护中继链持续向前运行的稳定。
两者结合保证了中继链能持续不断地产出合格的工作内容、合格的区块以及合格的区块串成的链 
二、BABE 和 GRANDPA 是如何作用的?
1、BABE
作用:块生成机制,以及决定新块由哪个验证者生成
作用在于确认每一个块的生成以推动网络不断出块,链向前发展,简单说就是保证网络持续向前运行不卡顿。
补充说明Slot 是一个时间单位,6秒,我们暂时称 Slot 为“时段”。每个时段都会分配验证者生成块,有时一个时段有多个验证者来生成块,有时可能出现没有验证者的情况。
当一个时段有多个验证者来生成块时,每个验证者都会生产一个块然后广播到网络中,然后就像一场比赛一样,块最先到达网络大部分区域的验证者获胜。当一个时段没有验证者生成块时,波卡设置了 round-robin 循环模式来生成辅助块。
所以一个时段会产生常规验证者生成的主要块和 round-robin 模式下生成的辅助块。只是存在主要块的时候,这些辅助块会被忽略,不会被纳入链上。 2、GRANDPA
作用:链生成机制
作用在于阶段性的快速确认这段时间内这一串块(一段链)的有效性,可以保证了网络不易回滚不易篡改,也保证了网络处理速度;配合BABE也避免分岔。
GRANDPA 是在链生成上达成认同而不是在区块上。只要在有2/3以上的验证者证实链上包含某个特定的区块,所有在这个区块之前的区块都一次性被确定了最终状态。因为认定的是最重要且有代表性的区块,这个区块是对的,那么通往这个区块的所有区块就都是对的。
所以即使在一个长时期的网络分割后或者其他网络故障后,也显著加速了最终态的确定,确保了网络的快速运行。
总的来说,将确定区块生成确定链阶段性终态分开可以保证网络的快速、持续、不易回滚和有迹可循。    
BABE 和 GRANDPA 结合在一起,分岔选择就很清晰明了。
如下图,当出现分岔的时候,BABE 机制也会使分岔的链也继续向前工作,BABE 只管不停出块,不管链对还是不对。直到 GRANDPA 嵌入阶段性的终态确认,就能确定谁是正确的链。
红色:若分岔发生在 GRANDPA 终态确认之前,那么没有 GRANDPA 标识的链被删除。
蓝色:若分岔发生在 GRANDPA 终态确认之后,那么有 BABE 机制会产生主块和辅助块,包含主块最多的链被视为正确的链,其余的删除。


三、总结
GRANDPA & BABE 混合共识保证了波卡网络总能生成新块且不分岔不回滚,也就是网络速度快,不会延缓交易的风险,也不会存在卡住和回滚被攻击的情况。  


相关专业内容补充:


传统链之所以会产生硬分叉和PoW共识有关,PoW共识区块链只能实现概率性的终态确认来达成最终共识。


概率性终态指在对网络和参与者存在假设:如果我们看到在一些块在一个给定的块上被构建,我们假设这个状态是阶段性的终态。但最终态共识是在未来的某个时候,所有节点都对这个时候之前的一组数据的真实性达成一致认可。


传统的POW对最终共识概率性的推演,因为没有确定的终态确认时间点,如果要确认哪条链是有效的则需要花费很长时间,且无法确定这个时间到底是多长。


这样的结果是,在未来某个时间点,所有的节点都同意某串数据的真实性(也就是哪条工作线长就认为它是正确的),但这条长的链可能是错误的,这就会造成硬分叉。


然而,GRANDPA可以给链的生成提供更强和更快的保证,在一些拜占庭协议的进程发生后,它们永远不会被恢复。


不可逆转的共识的概念被称为可证明的最终性,也就是说这个最终态程序无论如何都存在,只要被写上过,就算回滚,它还是存在,不会被改变,POW的回滚了是可以被篡改的,因为没有实施的区块终态和链终态确认。


相当于一个人的工作会被实时的反馈对错和下一步应该走的方向,那么这个工作就很难有大的差错甚至没有差错,最终的结果自然是好的。即使出现了错误回去也有迹可循。但是POW没有实施反馈,可能最终的偏差就很大,往回找到准确出错点的难度也很大。




-往期精彩看点-
一文了解Polkadot(波卡)是什么?
波卡入门系列丨Substrate和Runtime
什么是Phala,隐私计算又为何重要?
Polkadot主要名词解释(上)Polkadot主要名词解释(下)
波卡生态系列丨什么是ChainX?
区块链中的《头号玩家》——Darwinia





END




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存