此文是Polkadot系列文章开篇之作,通过介绍Polkadot的角色、架构和交易流程来让大家对Polkadot有个初步的认识。其中涉及到的技术点、比如混合共识、有效性验证、XCMP协议等等,再由后面Polkadot系列文章进行详细剖析,敬请期待。
提到Polkadot,大家首先想到的可能就是这是个很火的跨链项目,网上也把它和Cosmos称为跨链”双雄“。但其实如果把Polkadot仅仅定位为一个跨链项目,那说明对Polkadot的了解还不够。Polkadot更准确的解释应该是个可扩展的异构多链区块链,跨链只是它系统的一个功能而已。Polkadot的复杂度远远大于目前常见的跨链项目,其不仅仅考虑了跨链所具备的基本功能,还保证了跨链交易的有效性。
除此之外,还通过共享安全性技术保证了平行链的安全性,这点是目前大多数同类项目所没有具备的功能。四类角色为了更好解释Polkadot的整体架构,我们先来解释下Polkadot中的四种角色:收集人、验证人、提名人和钓鱼人,他们的具体关系如图1所示:
国务院:推进科普与区块链技术深度融合:为贯彻落实党中央、国务院关于科普和科学素质建设的重要部署,依据《中华人民共和国科学技术进步法》、《中华人民共和国科学技术普及法》制定《全民科学素质行动规划纲要(2021-2035年)》,其中要求实施智慧科普建设工程。推进科普与区块链等技术深度融合,强化需求感知、用户分层、情景应用理念,推动传播方式、组织动员、运营服务等创新升级,加强“科普中国”建设,强化科普信息落地应用,与智慧教育、智慧城市、智慧社区等深度融合。(新华社)[2021/7/10 0:40:52]
人大附中物理老师李永乐科普拜占庭将军问题和区块链:5月14日,人大附中物理老师、科普视频网红李永乐在其公众号发布视频《拜占庭将军问题是什么?区块链如何防范恶意节点?》。李永乐老师在视频中对拜占庭将军问题和区块链进行了讲解,他表示,拜占庭将军问题本质上指的是,在分布式计算机网络中,如果存在故障和恶意节点,是否能够保持正常节点的网络一致性问题。在近40年的时间里,人们提出了许多方案解决这一问题,称为拜占庭容错法。例如兰波特自己提出了口头协议、书面协议法,后来有人提出了实用拜占庭容错PBFT算法,在2008年,中本聪发明比特币后,人们又设想了通过区块链的方法解决这一问题。区块链通过算力证明来保持账本的一致性,也就是必须计算数学题,才能得到记账的权力,其他人对这个记账结果进行验证,如果是对的,就认可你的结果。与拜占庭问题比起来,就增加了叛徒的成本。[2020/5/14]
图1
◆收集人
动态 | 币安科普MimbleWimble算法:币安官方推特今日发布隐私算法Mimblewimble的科普贴,在下方留言区大量网友留言猜测是否是基于 Mimblewimble算法的隐私币Grin或者Beam即将登陆币安交易所,其中猜测Grin的呼声更高。[2019/9/2]
平行链的全节点,负责进行平行链中交易的收集和区块的打包,注意这里打包区块只是候选区块,并不代表确认后的区块,平行链的区块确认由中继链负责。
◆验证人
中继链的全节点,中继链会在验证人池中通过随机分组把验证人指定给不同的平行链。验证人会接受来自收集人打包的区块并进行有效性验证,然后结合共识算法对收集人提交的区块进行确认。
◆提名人
Polkadot中数字货币DOT的持有人,它会选择自己所信任的验证人进行DOT质押,然后分享验证人的收益。至于为什么需要提名人这样的角色,就需要了解Polkadot的经济模型了,这里就不做过多讲解。
动态 | 央行官微旧文重发“再科普”:范一飞详解数字货币:据中国经济网消息,今日,央行官微公众号头条重新发布央行副行长范一飞在2018年1月25日题为《关于央行数字货币的几点考虑》的文章,对央行数字货币再次进行科普。同时,微信公众号第二条发布支付司副司长穆长春8月10日在第三届中国金融四十人伊春论坛上的演讲。近年来,各主要国家和地区央行及货币当局均在对发行央行数字货币开展研究,新加坡央行和瑞典央行等已经开始进行相关试验,人民银行也在组织进行积极探索和研究。[2019/8/21]
◆钓鱼人
它的作用主要是对系统进行监管,通过举报非法交易来赚取奖金。虽然验证人通过随机分配来服务于不同的平行链,从某种角度上看,提高了验证人联合做恶的成本,但还需要钓鱼人这样的角色来监管验证人的行为。
整体架构
财政部副部长朱光耀:数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展:今日,在中国发展高层论坛2018年会上,财政部副部长朱光耀表示:“数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展。也要关注数字经济的其他影响,包括税收征管、反监管措施等要跟上。”[2018/3/25]
图2
有了上面对Polkadot四类角色的定义解释,下面我们进行整体架构的介绍:如图2所示,Polkadot是一种树状网络结构,中继链可以看作是树根,然后外接一定数量的平行链。由于中继链能接入的平行链数量是有限的,那么中继链还可以接入子中继链以树的形式进行规模扩展。同时,子中继链还可以以同样的方式进行扩展。
绿色标记的平行链中,收集人会进行交易的收集和广播。对于打包出来的区块,收集人除了广播给其它收集人和钓鱼人,还会把区块提交给自己的验证人。每个平行链还会有个出入队列,如果区块中有跨链交易,收集人会把跨链交易放入出队列中,然后由收集人或者验证人将跨链交易路由到目的平行链。
最后,除了可以接入平行链,中继链还可以通过桥接链接入一些异构链或者说不能直连的区块链,比如上图中的以太坊。桥接链是具备桥接功能的平行链。
一笔交易之旅
对于初次接触Polkadot的人来说,仅从上面的架构图可能还是弄不清楚它的工作流程,为了让大家对Polkadot有更加深入的了解,下面介绍Polkadot中一笔交易的“生命之旅”,也就是平行链中的一个交易是如何打包的,是如何在中继链中被确认的,然后跨链交易是什么时候被传递到目的平行链的等等。
注意,这里不涉及桥接链的情况。为了不混淆区块打包和确认的概念,这里稍微解释这两者的区别。区块打包只是将多笔交易收集起来然后打包成一个区块,此时这个区块还不具备最终性,有一定概率被丢弃。
区块确认就是指区块被最终确认而不会被推翻丢弃。这种将区块的打包和确认分开来的共识算法一般称为混合共识,Polkadot就是此类共识算法。具体的技术细节这里就不细说了,留给后面的文章进行详细讲解。
◆平行链阶段
首先,平行链中的收集人收集到足够交易后,会将交易打包成一个区块然后提交到验证人。收集人提交到验证人的数据其实不仅仅是区块,而是一个POV数据。POV包括区块、有效性证明数据和跨链数据。有效性证明数据主要是提供给验证人进行区块有效性验证的,因为收集人打包的区块中可能包含无效的交易。
验证人接受到POV数据后,会把它同步给同一组的验证人,与此同时会根据有效性证明数据和区块进行有效性的验证。验证通过后,验证人会根据纠删码技术将POV分块和签名并广播给其它验证人进行备份。'
这里备份的目的主要是确保区块被中继链确认后,尽管恶意收集人丢弃区块,平行链也可以从验证人那恢复区块。
◆中继链阶段
验证人将POV块签名广播后,会生成CandidateReceipt并把它广播给其余中继链的验证人。CandidateReceipt包含了平行链区块的关键信息,比如区块哈希、父区块哈希等。其余验证人收集到足够数量验签通过的POV块后,会把CandidateReceipt放到出块列表中。中继链共识阶段会选出一个Leader,Leader负责出块,此时的区块就包含了前面的CandidateReceipt。
在区块确认阶段,其它验证人首先需要收集足够的POV块来还原POV数据,然后验证CandidateReceipt的有效性。此时,如果验证人收集不到足够数量的POV块,会要求平行链验证人提供POV。如果平行链验证人无法提供POV,那么该区块将会无效,相关的平行链验证人也会被惩罚。
◆跨链交易传递
平行链阶段中,收集人打包区块的同时,也会将跨链交易放到平行链的出队列中。跨链交易通过XCMP协议进行传输,根据收集人和验证人的网络连接情况,具体的传输方法有三种:
来源链收集人直接发送给目的链收集人;
来源链验证人发送给目的链收集人;
来源链收集人发送给来源链验证人,来源链验证人传递给目的链验证人,目的链验证人再传递给目的链收集人。
跨链交易传递到目的链后,会把跨链交易放到平行链入队列中。通过以上步骤,就完成了跨链交易在链间的传递功能。
总结
虽然Polkadot架构比较复杂,各种新名词也很多,比如POV区块、XCMP协议、CandidateReceipt等等,连平行链的区块都得由中继链确认,中间还包括有效性验证、POV数据分块、签名和备份等等步骤,但是这些复杂设计也让整个系统具有更好的可扩展性和安全性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。