前话:在前几期出过关于跨链技术的内容,跨链技术里的细节问题还是有很多,且有一些比较多的概念包括跨链、侧链、中继链、平行链等,目前除了波卡还有Cosmos等,且在波卡问题上出现一种比较新的共识算法NPOS,包括本人也是第一次接触,在一些比较成熟的区块链应用中包括以太坊都有用到POS,在电力领域应用中也经常在POS中加工,在后期会出一期NPOS、POS、DPOS等一些权益证明的共识。敬请期待
背景
随着 web3.0 的发展,区块链技术也进入到了下一个阶段。为了能打破各个区块链之间的壁垒,更好地拓展区块链的边界,跨链技术得到了大家的重视,也有了较好的发展。PolkaDot 就是其中一个备受期待的跨链解决方案,目前它由前以太坊 CTO Gavin Wood 率领团队开发。
是什么
Polkadot 是一种异构多链技术,主要由中继链、平行链和转接桥组成。它的建立是为了连接公有链、联盟链、私有链以及未来可能出现在 web3.0 生态系统中的所有技术。它希望使各个独立的区块链网络都能够通过 Polkadot 的中继链实现信息的交换和无需信任的交易。旨在实现区块链一直在努力实现的 3 个目标:互操作性、可扩展性、共享安全性。
Polkadot 也是一个协议,它允许独立的区块链之间互相交换信息。Polkadot 是一种链间区块链协议(inter-chain blockchain protocol),它与传统互联网的消息传输协议不同(例如 TCP/IP 协议),Polkadot 还会验证各个链之间在进行消息传输时的消息顺序以及消息的有效性。
Polkadot的经典架构(上图):三个链+四个参与者
中继链(relay chain)
中继链位于Polkadot的体系的核心地位,负责为系统提供统一的共识和安全性保障。通过中继链,实现多个平行链之间的跨链交易。值得一提的是,中继链上的平行链卡槽是有限的,平行链想注册到中继链的话,要先对卡槽进行竞拍。
平行链(parachain)
在Polkadot中平行链负责具体的业务场景,平行链自身不具备区块的共识,它们将共识的职责让给了中继链,所有平行链共享来自中继链的安全保障。需要注意的是,在Polkadot的理念中,平行链理论上可以作为二级中继链,从而实现Polkadot的扩展性,解决了中继链卡槽固定的局限性。
平行链与中继链之间有两条消息通道:出口队列egress和入口队列ingress,egress负责提交候选区块到中继链,ingress负责接收中继链共识验证成功的验证区块。
桥接链 (Parachain Bridge)
像Bitcoin, Ethereum这些区块链项目以及趋于成熟,具有自主独立的生态治理模式和安全机制,Polkadot通过Bridge链实现Polkadot网络与这些公链网络进行跨链交易,实现生态之间的交互。
验证者(Validator)
验证者是波卡中继链上维护网络共识的角色,负责Polkadot的网络出块,会维护中继链的全节点,对平行链上的提名者提交的候选区块进行验证,验证成功将获得押金。验证者们在中继链中对平行链提交的候选区块进行共识验证,当足够多的验证者确认之后,将区块转移到平行链的ingress队列等待处理。验证人是属于中继链的,所有平行链共用。
验证人可以理解为法官,进行最终确认。
收集者(Collator)
收集者主要负责收集交易,验证交易有效性,整理交易数据,打包成候选区块并放入egress队列。收集人属于每个平行链独有的。
收集者可以理解为检察官,进行信息采集及提交预案。
钓鱼者(Fisherman)
钓鱼者是 Polkadot 中负责监督的节点,用以监督验证者和收集者。当钓鱼者发现某一个区块是无效的,他们需要质押一定数量的 DOT 代币并提出这个区块是无效的质疑指令,然后这个区块会被再次验证和审核,如果最终此区块被证实是无效的,那么提名人质押的DOT代币会被没收,让钓鱼者获得奖励,反之如果该区块是有效的,则钓鱼者质押的DOT代币会被没收。
钓鱼者可以理解为举报者,进行检举不合法的交易。
提名者(Nominator)
提名者即为 DOT 的持有群体,对验证人进行维护和选举。提名者通过质押足够的DOT进行投票选举验证者,从而获得验证者的分配收益,当提名者收到的验证者分配的收益过低时,会重新投票给收益分配比更高的验证者。只有在提名人支付了足够押金后,才能向中继链提交区块头和平行链的egress信息
提名者可以理解为选民,负责对法务人员的票选。
跨链交易流程
1.中继链根据平行链进行验证人分组。
2.平行链A对交易进行签名和广播
3.平行链A的收集者收集交易,验证交易有效性,整理交易数据,打包成候选区块并放入egres
4.提名人支付押金,向中继链提交区块头和平行链A的egress信息;
5.验证人小组选择候选区块,并验证区块是否包含有效交易,验证成功将获得押金
6.所有验证人对中继链区块达成共识,验证人将平行链A上的交易从平行链A的出口移动到平行链B的入口以完成消息传输(XCMP协议)。
7.平行链B在入口队列中执行该交易并修改自己的账本。