“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第8期,了解一下波卡跨链的原理究竟是怎样的。

我们之前提到,由于Substrate框架的诞生,开发者可以高效、安全地完成一条链从无到有的过程,这为区块链的生态带来了一次革新的同时,也为区块链带来了更多的可能。 

近几年新兴公链层出不穷,各自发展出特有的生态,另一方面,基于Substrate的技术,各种各样的波卡平行链项目也开始蓬勃发展,各家公链各显神通,生态欣欣向荣好不热闹。然而这份热闹之下,随之而来的就是链与链之间的信息孤岛问题了。而跨链作为波卡最擅长的解决方案,正逐渐成为当下的热门话题,那么跨链背后的原理究竟是什么呢?

波卡中的三大角色

首先我们需要搞清楚在波卡的架构中的三个非常重要的角色,分别是验证者,提名者,整理者。

1

验证者(Validator)

验证者是要维护波卡网络的安全共识和稳定的一类人,需要运行波卡的全节点,质押DOT,负责打包波卡网络中的新区块,为网络提供服务之后,会获得一些奖励。这些验证者是被那些持有DOT的提名者投票选举出来的,获得投票票数最多的节点就可以充当验证者。

2

提名者(Nominator)

DOT的持有者可以选择成为提名者,他们会质押自己的DOT来为节点投票,可以通过提名一个或多个验证者来获得DOT的奖励。不过提名者需要仔细挑选验证者——如果验证者行为不当,他们将被惩罚,提名者也会失去DOT。

提名者在投票后会获得投票奖励,而奖励的多少取决于验证者所获得的节点奖励,以及验证人所收取的佣金,佣金是验证者在奖励分配给提名者之前获得的验证者奖励的百分比。作为提名者,可能认为最低的佣金是最好的。然而,这并不总是正确的。

因为验证者必须能够在盈亏平衡点运行,以便可持续地继续运行。依靠佣金来支付服务器成本的独立验证器有助于保持网络去中心化。反之,提名者也不必担心验证者设定的佣金比例过高,因为这样会导致提名者将会投票给其他的验证者。

3

整理者(Collator)

整理者通过从用户那里收集平行链交易,并为中继链验证者生成状态转换证明来维护平行链。换句话说,整理者通过将平行链上的交易整合为平行链的一个候选区块,并基于这些区块为验证者生成状态转换证明来维护平行链。在他们向中继链验证者提出的候选区块得到验证之前,整理者不能继续在平行链上构建区块。 

整理者既为中继链维护一个全节点,也为其特定的平行链维护一个全节点,这意味着他们保留了所有必要的信息,以便能够像矿工在当前的PoW区块链上所做的那样(收集交易并创建到区块中),创作新的区块并执行交易。在正常情况下,他们会整理和执行交易以创建一个未密封的区块,并将其与状态转换证明一起提供给一个或多个负责提出平行链区块的验证者。 

另外,整理者也将负责审查,防止验证者作恶,如果被抓到现行,作恶的验证者将会失去他们所质押的DOT以示惩罚。

请注意,最初设计中有四个角色验证者,提名者,收集者和钓鱼者,之后收集者和钓鱼者的功能被整合到一起,现在被统一称为整理者。其实之前的收集者的英文也是Collator,但是由于其作用还有整理交易的部分,所以笔者觉得以整理者来命名会更合适一些。

波卡中的XCMP是怎么运转的

跨链其实并不是把A公链上的资产转到B公链上的资产。而是说A公链的某些信息可以传递到B公链上,并在B公链上执行某个行为,反之B公链也可以传递信息到A公链上,并使得A公链上发生某些行为,而这就是互操性,也就是跨链。所以,跨链的关键点在于安全、且去中心化的在不同的链之间传递消息,而这就是波卡的跨链消息传递XCMP的重要作用了。 

XCMP作为波卡跨链系统重要的组成部分,解决了不同链之间的数据通信的难题,保证了信息处理的一致性。简单来说,跨链信息传递XCMP是两条不同链之间的桥,保证信息可以被有序、及时、公平的传递和处理,在信息被另一方接收到并执行了相关操作之后,由中继链帮助验证执行的结果,同时对验证结果提供共识的安全保障。 

打个比方,假如张三在平行链A上有10个AToken,李四在平行链B上有30个BToken,那么,李四需要在平行链A上创建一个地址,而张三则需要在平行链B上创建一个地址。之后,张三会将10个AToken转到李四在平行链A上的地址上,并且生成一个状态转换证明,在这个证明上是要求李四在平行链B上把30个BToken转移给张三在平行链B上的地址。 

平行链A上的整理者准备将这个信息联通目的地与时间戳一并传到平行链B上,不过这些信息会先放置在平行链A的输出队列中,传递之前需要经过平行链A的验证者确认这笔交易后,就会经过中继链将该信息从平行链A的输出队列放置到平行链B的输入队列中。

当平行链B的验证者收到该信息后,通过平行链B的整理者会执行信息中的要求,也就是通过执行智能合约并按预期完成资产转移,将李四在平行链B上把30个BToken转移给张三在平行链B上的地址。

整理者随后会将此区块交给验证者,验证者将验证此消息是否已处理。如果消息已经被处理了,并且区块的所有其他方面都是有效的,则验证者会将平行链B的这个区块包含到中继链中,由此完成了整个过程。 

有人会说这种交换资产通过交易所不就可以做到不同链之间的资产互换了吗?其实这里面有明显的区别,交易所则是中心化的,而波卡跨链的整个过程是全部由区块链和智能合约执行,是以去中心化的方式做到链间通讯。 

请注意,XCMP目前正在开发中,细节可能会发生变化,具体情况以最终实际推出的版本为准。

后记

随着区块链行业的发展,未来一定会出现多种区块链并存,并且不同的区块链有不同的功能和特点以满足不同的需求。而一条满足所有需求的区块链,达到“一劳永逸”的想法是不切实际的。因此链与链之间的互操性变得尤为重要。这样的未来正在临近,波卡作为不同于一般只做单向跨链的项目,其目标是成为能链接所有区块链的区块链网络,将会是区块链未来发展中举足轻重的角色。