Polkadot认证机制:中继链、平行链之命运纠葛


我们都知道polkadot是一个主打跨链得一个项目,然后我们也有提到,他主要的架构是用所谓的平行链跟中继链来组成,关于这里面可能的商业模式我们已经在上一篇有提到。

在这篇我想要探讨的是从程式码实作的角度来分析他是怎么做到的,虽说是从程序代码的角度,但我不会太着重在程式码的分析,我会把它抽象模组化,尽可能从大方向介绍他在干嘛,然后为什么他可以做到,然后我会把相关程式码的资料放在下面,未来如果大家有兴趣我在细写分析程式码的部分。

为什么要了解项目的细部机制?

我们必须要知道,区块链的项目,我们可以从商业上的角度来解读,然后从中找到未来获利的可能性,因此我们可以做投资的动作,但我们同时也要了解,这些项目的真实可行性是很重要的,因为这些项目没有一些法定的机构来帮我们做监督,所以我们更要从程式码的角度来观察这个项目,确定她的发展轨迹跟我们的预想是一样的,然后他的功能是真的可行,不是随便乱讲的。话不多说,我们开始吧。

架构定义

中继链

中继链是整个polkadot的主链,储存整个共识的核心。基本上,中继链能提供共同安全性。因为在中继链上会保留整个Polkadot 世界的帐户全局状态,然后在上面会有验证人执行验证的工作,目的是为了确保整个区块链的安全性。

接下来,平行链会将有验证过的区块接上自己的链。如果这个验证没问题的话,那么由验证过的区块组成的平行链就享有同样的安全性。

平行链:

在Polkadot 的世界里面,你可以拥有独自的功能的区块链,而这些都可以是平行链。平行链要做的事情就需要把链上的交易资料提交一份collat​​ion 给中继链的验证节点进行验正,如此一来他就把整个验证的代价降低很多。除此之外,平行链还可以透过XCMP 的机制来进行跨链的资产交换,这在现在必须由另一个组织才能办到的事情,现在已经成为整个生态系的基础设施。

插槽:

中继链连接平行链的地方,目前polkadot本身大概有一个插槽,理论上,这些插槽可以连接别的中继链,如此,整个生态系就不会受到局限。

虽然我们上面说平行链可以享有中继链所带来的安全优势,但是插槽本身是需要竞标的,目前看起来应该是拥有越多DOT 来进行抵押的人会赢得竞标。所以这件事情其实还是有代价的。

小结:

平行链将自己链上的资讯收集起来,传输到中继链上面,由中继链上的验证者来验证这些资讯,然后再将这些被认证完的区块加入到这些平行链上面,如此一来就能够很大程度的保证整个生态系的安全性。

个人猜想,如果说插槽是由另一个中继链拍得,则这个中继链也可以维持很多平行链的安全性,然后他的安全性再由Polkadot的主链来进行维持,这样递回的保证安全性,实在是一个相当巧妙的设计。

验证参与者:

提名者:

你可以抵押DOT 来提名验证者,但要小心挑选,如果挑选的验证人有问题,你所抵押的DOT 可能也会损失。

收集者:

平行链的运行者。他需要同时运行一个中继链跟一个平行链的节点,主要负责将平行链的交易资讯提供给验证者。

验证者:

需要抵押DOT。他们负责进整个中继链出块跟验证平行链所提供的证明,跟其他验证人对候选区块进行投票。

钓鱼人:

负责监控验证人和收集者,确保整个候选机制是没有问题的。

小结:

提名者提名他所信任的验证者,平行链的收集者将交易资讯的证明提供给验证者,验证者再根据投票机制确认区块的正确性,然后钓鱼人负责监督这机制的状况,有问题可以举报。

机制实作解析

接下来我们要回答一个问题,到底平行链跟中继链是怎么进行沟通跟交换资讯的?

前面有说,收集者需要同时执行平行链跟中继链的节点。

平行链的部分

我们以substrate-parachain-template 为例:

在node资料夹里面,serverice.rs:start_node_impl这个function。在function里面,我们可以看到他会先产生一个
中继链: polkadot的节点。然后这段程式码
  
start_collat​​or(params).await?;会呼叫cumulus 这个项目的start_collat​​or

然后就可以进行产生collat​​ion的动作,有兴趣的朋友可以从这个部分再继续追下去,目前就先讲到这边,未来有需要我再把细节讲出。Cumulus 是一个被开发帮助你写出平行链的工具,它提供了一些共用的collat​​or 所需要的演算法,算是一个framework。

中继链的部分

我们回到中继链的部份,在这之前,我们需要再介绍一个模组那就是overseer 。

这是一个用来沟通整个中继链不同子系统的一个相当重要的通讯套件,我们把这些子系统分成几大类。

收集者子系统

区块候选的子系统

工具类子系统

当整个机制开始时,收集者透过收集者子系统

Collat​​ionGenerationSubsystem

透过刚刚的cumulus 产生collat​​ion,然后使用collat​​or 跟validator的通讯机制

Collat​​orProtocolSubsystem

将collat​​ion 透过overseer 传输到validator 里面去,然后validator 收到这个collat​​ion 之后,随即发起区块候选的子系统对collat​​ion 进行投票,接下来再由BABE & GRANDPA 等最终性确认共识,确认被认证成功collat​​ion 对应的区块是哪个,再由这边去把这个区块加回整个平行链里面。

小结:

Parachain 上面的collat​​or 透过cumulus 上面的工具收集collat​​ion 产生候选区块,然后透过中继链上的overseer 传送到中继链上负责验证这个平行链的验证者,然后进行投票候选环节,最后中继链出块,再由cumulus上面的工具将这个区块连接回平行链。

感想:

链跟链的通讯不难,但是要确保整个链上的状态跟资讯都是正确的,然后还要再一定时间内出块,这就需要很大的功夫,尤其是在这个设计上平行链可以充分享受到中继链上验证的功能。

PoS 共识里,这等于省下很多聚集资本的时间跟精力,我个人对overseer的设计觉得有点太冗余,但是可能在效能上会有好处,这还需要时间去做实验。

本文链接地址:https://www.wwsww.cn/DOT/7698.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。