LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 波卡-DOT-Polkadot的中继链-平行链-转接桥

波卡-DOT-Polkadot的中继链-平行链-转接桥

2020-08-27 牛牛识途 来源:区块链网络

伴随着 web3.0 的发展,区块链技术也进入到了下一个阶段。为了能打破各个区块链之间的壁垒,更好地拓展区块链的边界,跨链技术得到了大家的重视,也有了较好的发展。PolkaDot 就是其中一个备受期待的跨链解决方案,目前它由前以太坊 CTO Gavin Wood 率领团队开发。那么在互联网科技的新一轮变革悄然开始的背景下,Polkadot 到底是什么?它的出现到底解决了什么问题?以及它又是如何解决的呢?我们会在这篇文章中尝试给出答案。

Polkadot 概览

基本介绍

Polkadot 是一种异构多链技术,主要由中继链、平行链和转接桥组成。它的建立是为了连接公有链、联盟链、私有链以及未来可能出现在 web3.0 生态系统中的所有技术。它希望使各个独立的区块链网络都能够通过 Polkadot 的中继链实现信息的交换和无需信任的交易。旨在实现区块链一直在努力实现的 3 个目标:互操作性、可扩展性、共享安全性。

Polkadot 也是一个协议,它允许独立的区块链之间互相交换信息。Polkadot 是一种链间区块链协议(inter-chain blockchain protocol),它与传统互联网的消息传输协议不同(例如 TCP/IP 协议),Polkadot 还会验证各个链之间在进行消息传输时的消息顺序以及消息的有效性。

愿景

Polkadot 希望能够连接各个区块链网络,主要关注在解决以下三个层面的问题:

互操作性当前区块链的生态中,各个区块链网络之间是孤立存在的,它们之间没有任何通信以及互操作的可能性。在未来区块链的世界中也将会存在各种为了满足于某些特定需求的区块链,但若它们仍然彼此孤立将会非常不利于区块链生态的发展。为了能够打破这个壁垒,拓展区块链网络之间的边界,区块链之间的互操作性是一个必须要解决的问题。而 Polkadot 的设计目的之一就是让区块链上的 DApp 和智能合约可以无缝地与其他链上的数据或资产进行交易。可拓展性在当前大多数区块链中,交易都是在节点中一个一个的处理,因此当交易量逐渐增多的时候,由于网络的限制很容易遇到性能上的瓶颈。而 Polkadot 提供了可以运行多个平行链的能力,每个平行链可以并行处理多笔交易,在这种情况下 Polkadot 网络就相当于获得无限的可拓展性。在测试中,Polkadot 网络中的一条平行链每秒大约可以处理 1000 笔交易,通过平行链的创建,就可以成倍的增加每秒交易的数量,从而使 Polkadot 网络具有较高的性能。

共享安全性基于 PoW 共识的区块链之间存在算力竞争,这样不仅会造成算力等资源的浪费,且一些算力较少的区块链还会非常容易受到攻击,因此各个区块链具有的安全性是不相同的。且若各个区块链之间想要互相通信的话,还会由于各个区块链之间的算力不同导致了各个区块链之间不能平等的信任对方,这就比较不利于资产等信息的跨链通信。在 Polkadot 网络中,将由中继链整体负责整个网络的安全,每个加入 Polkadot 网络中的平行链之间都具有同等程度的安全性,因此它们之间在进行跨链通信时可以充分信任对方的平行链。且由于 Polkadot 将网络的安全都集中在中继链上,因此,要想攻击整个 Polkadot 网络的难度是非常大的。

架构解析

如图 1 所示为 Polkadot 网络的整体架构,从中我们可以看到中继链(Relay chain)处于网络的中心位置,它会处理网络中整体的共识和安全性;还有许多平行链(Parachain)通过连接中继链以接入 Polkadot 网络中;同时还可以看到在该图的下方有一个转接桥(bridge),这也是 Polkadot 网络中连接了独立区块链(例如:以太坊)的方式。此外还可以看到许多的参与者,例如:收集人(Collator)、验证人(Validator)、钓鱼人(Fisherman)等。那么接下来我们就分别介绍一下在 Polkadot 网络中的主要链角色和不同的参与者。

主要的链角色

中继链(Relay Chain)中继链是 Polkadot 网络的中心链,它为整个网络提供了统一的共识和安全性保障。Polkadot 网络中所有的验证人都会在中继链上质押 DOT 代币,从而参与 Polkadot 网络治理。由于在 Polkadot 网络中大多数业务相关的操作都会由各个平行链来实现,那么在中继链上就只会发生和网络治理、平行链拍卖等少量的交易类型,因此中继链上的交易手续费通常会高于平行链上的交易手续费。平行链(Parachain)整个 Polkadot 网络中大部分计算工作都将委托给各个平行链进行处理,平行链会负责具体业务场景的实现。Polkadot 对平行链的功能不作任何限制,平行链可以作为应用链实现任何应用场景,但它们自身却不具备区块的共识能力,它们将共识的职责渡让给了中继链,所有平行链会共享来自中继链的安全保障。平行链之间可以通过?ICMP(Interchain Message Passing) 进行彼此通信,同时它们还会由分配给它的验证人进行区块验证。但平行链有可能不是一条具体的链,Polkadot 中对其定义是:平行链是特定于某些应用程序的数据结构,它在全局上是一致的,并且可以由 Polkadot 中继链的验证人进行验证。一些平行链可能是某些 Dapp 特定的链,也可能是专注于诸如隐私或可拓展性等特定功能的平行链,可能还会存在一些实验性质的平行链,总之平行链在本质上不一定必须是区块链。

转接桥(Bridge)桥在区块链的链间通信中有着重要作用。在 Polkadot 中关于转接桥的具体实现还有许多待确定的地方,后续官方应该还会有更具体的更新,截止目前在 Polkadot 中转接桥主要由三种不同的含义:转接桥合约(Bridge Contracts):通过在 Polkadot 的平行链和外部的区块链(如:Ethereum)上部署智能合约来达到桥的效果,以实现跨链的价值转移。跨链通信(Cross-Parachain Communication):由于平行链之间是可以通过 ICMP 进行链间通信的,而无需智能合约承担桥接的功能。且基于 ICMP 的链间通信将是 Polkadot 原生支持的方案。内置桥接模块(In-built Bridging Modules):在 Polkadot 网络中,从非平行链中接收平行链上的消息很可能会在 Polkadot 的内置模块中完成。这样的话就不需要在非平行链中部署智能合约扮演“虚拟平行链”了,收集人就可以直接收集整理该区块链上的交易,并提交给中继链了,就像对平行链所做的那样。当前内置的桥接模块可能会考虑基于特定的链进行开发(例如:比特币、以太坊),这就意味着只要是内置交接模块支持的区块链就都可以直接桥接到 Polkadot 网络中了,而无需通过智能合约进行桥接。但对于内置桥接暂不支持的区块链,就还要采用转接桥合约的方法实现了。主要参与者

由图 2 中可知在 Polkadot 网络中,共存在 4 种主要的参与者,分别为验证人、收集人、钓鱼人和提名人。简单来看他们的职责是这样的:收集人会从各个平行链中收集交易信息并打包为待验证的区块,接下来一组验证人会对平行链上的区块进行验证;同时网络中的钓鱼人会监控验证人的行为,若钓鱼人发现非法行为就会向其他的验证人进行举报;而提名人会通过向自己信任的验证人质押 token 来参与网络治理。那么他们之间的异同如下分析:

验证人(Validator)验证人会负责 Polkadot 网络的出块,它会运行一个中继链节点,在每一轮区块产生中对其提名的平行链出的块进行验证。当平行链出的块都被他们的验证人集合确定好之后,验证人集合会将所有平行链的区块头组装到中继链的区块中并进行共识。在 Polkadot 网络中,验证人是以组的形式存在的,它们不是来自于平行链,而是由中继链统一管理的验证人池,通过随机分组指定给平行链的。收集人(Collator)收集人会帮助验证者收集、验证和提交备选的平行链区块,它会维护一个平行链的全节点。钓鱼人(Fisherman)钓鱼人主要靠举报非法交易或者区块以获取收益。在 Polkadot 中钓鱼人是一个软件进程,它会监控 Polkadot 网络中的非法行为,一旦发现就会向 Polkadot 网络举报非法交易。钓鱼人在举报非法交易的时候也需要先质押 token 才行,且举报的交易也要经过共识的过程,只要通过 2/3 及以上其他验证人的验证,就会被打包进区块,若举报的交易是有效的,钓鱼人就会获得相应奖励,若发现钓鱼人进行了虚假的举报,就会没收它质押的 token 作为惩罚。同样对钓鱼人的惩罚和奖励也都是区块链交易。提名人(Nominator)提名人是拥有 token 的相关方,且他希望能通过质押 token 获益。但是它要么是由于 token 份额较少,或者是缺乏维护中继链节点的专业技能,因此他并没有直接作为验证人。但是系统还提供了另一种参与网络治理的途径,它不必维护一个中继链节点,但是它可以选择至多 16 个他信任的验证人,并将自己的 stake 通过那个验证人来质押,以此来分享验证人的收益。

链间通信 - ICMP

在 Polkadot 网络的平行链之间,它们通过 ICMP 进行彼此通信。ICMP 意为 Inter-Chain Message Passing,即链间消息传递。以平行链 A 向平行链 B 发送一笔交易为例,简要说明该过程如下:

平行链 A 将需跨链的交易放到自己的消息输出队列(egress)中。平行链 A 的收集人在收集交易时会同时拿到这笔跨链交易,并提交给平行链 A 的一组验证人。若平行链 A 的这一组验证人验证成功后,会将本次平行链 A 的区块头信息以及平行链A 中的 egress 队列内的信息提交到中继链上。中继链会运行共识算法进行区块的确认以及跨链交易路由,中继链上的验证人会将平行链 A 的相应交易从平行链 A 的 egress 队列中移动到平行链 B 的消息输入队列(ingress)中。平行链 B 会执行该区块,将 ingress 队列中的相应交易执行并修改自身的账本。

以上便是 Polkadot 中基于 ICMP 进行跨链交易的主要步骤。

ICMP 是 Polkadot 网络中的一个协议,它定义了在平行链和/或中继链之间无需额外信任的消息传递的方式。它非常依赖 Polkadot 网络中的中继链存在,若没有了中继链 ICMP 也就无任何意义了。同样,ICMP 并不是一种消息或者格式的标准。

就 Polkadot 网络中的共识机制而言,ICMP 协议包含了对消息进行队列处理、转发和排序的机制。通过和 Polkadot 网络中继链的结合,它可以实现数据的可用性。通过和 Polkadot 网络中平行链的结合,它也实现了消息的输入和输出。但 ICMP 协议并不包含较底层的网络,以及消息语义自身。

总之,ICMP 并不是也不太可是传统意义上的 “标准”,它将会是一个依赖于 Polkadot 的专有技术领域。

共识在 Polkadot 网络中,同样需要所有的节点达成共识后才能使区块链上的所有状态继续构建并演进,这是一种在共享状态上达成协议的方法。通过共识机制可以使 Polkadot 网络中的节点状态保持彼此同步,它旨在为网络的参与者提供所有状态的客观事实,而针对这个客观事实每个网络参与者又都有自己的主观判断,通过他们之间的沟通并最终达成协议,以此来构建一个新的区块。

什么是概率确定性和可证明的确定性(Probabilistic vs. provable finality)?一个运行了 PoW 共识的纯中本聪共识区块链,它只能实现概率上的确定性并最终达到确定性的状态。概率确定性意味着在网络中的某些参与者之下,我们看到了多个区块都连接在了某个区块后,即最长链原则,那么我们就认为它是确定的了。这时最终确定的共识就意味着在将来的某个时刻,网络中所有的节点都将对一组数据的真实性达成共识。而达到这个最终确定的共识可能需要很长时间,并且我们根本无法估算这个时间是多久。但是,诸如 GRANDPA 或以太坊的 Casper FFG 之类的确定性工具,它们旨在为区块的确定性提供更强大、更快速的保证。并且在经过拜占庭协议的某些过程之后,它们将永远无法被还原。这种不可逆共识的概念又被称为可证明的确定性。

在 Polkadot 网络中共有两种不同的共识,分别为?GRANDPA和?BABE。之所以会有两种不同的共识是由于 Polkadot 采用了混合共识的方式。这里混合共识将区块的产生和区块的最终确定分离开来,其中BABE 共识用于区块的产生,GRANDPA 共识用于区块的确定。

混合共识是在 Polkadot 网络中获得概率确定性(产生新区块的能力)和可证明的确定性(在一条链上达成了一次协议,且不可逆)好处的一种方式。通过采用这样的混合共识机制,Polkadot 可以快速生成区块,而速度较慢的确定性机制可以在一个独立的进程中运行以完成区块的确认,而整体不会导致网络交易速度的减慢或阻塞。那么 BABE 和 GRANDPA 到底是什么样的共识机制呢?

图 3 BABE 共识中的出块时间间隔

BABEBABE (Blind?Assignment for?Blockchain?Extension) 是一个基于 PoS 的共识协议。它在验证人节点之间运行,并确定由哪个验证人产生新的区块。BABE 和 Ouroboros Praos 算法是比较类似的,只是在 “链的选择规则” 和 “slot 时间” 上有所更改。以创世区块为起始,我们将创建区块的后续时间划分为不同的 epoch,再将不同的 epoch 划分为更小时间间隔的 slot,如图 3 所示。BABE 共识协议中的要点就在于挑选不同的验证人,在每一个 slot 内生成一个区块。BABE 会根据验证人质押的 token 总量,并在每个 epoch 周期内随机为验证人分配 slot 进行区块的生成。在每个 slot 中,Polkadot 中的验证人都会参加一次 “抽奖”,抽奖的结果将会告诉验证人他是否是该 slot 中生成区块的候选人。在 Polkadot 中,一个 slot 有 6 秒钟的时间。由于在每个 epoch 的周期内验证人的选择具有随机性,由此就可能导致一个 slot 中存在多个验证人,也有可能导致某些 slot 中一个验证人都没有,这就可能导致出块时间的不一致,如图 4 所示,有些 slot 中有两个甚至三个验证人,但某些 slot 中却没有验证人。那么要如何处理这两种不同的情况呢。

slot 有多个验证人在一个 slot 中有多个验证人作为生成区块的候选人的时候,每个验证人都会产生一个区块并将其广播到网络中。这时就像是一场比赛一样,谁的块先传播到网络中更多的节点谁就会取得胜利。由于网络的拓扑和网络延迟的影响,可能多条链都会持续向后生成区块,直到最终被确定为止。如图 5 所示,可能会有多条链在同时向后生成区块,而其中最长的链最终可能会被确认。

slot 中没有验证人当一个 slot 中没有任何验证人在一次抽奖中获胜时,这个 slot 看起来就不能生成区块了。这时 Polkadot 会在后台通过 round-robin 方法选择一个验证人,让他生成一个次级区块(secondary block)。但是一个 slot 中如果已经有了在抽奖中获胜的验证人的话,那么他就会生成一个主要区块(primary block),就不会再有次级区块了。因此,我们会看到每一个 slot 中必定会有一个区块,它要么是主要区块,要么是次级区块。如图 6 所示,在临时分叉的链中可能既有主要区块(图中用 1 表示)也有次级区块(图中用 2 表示)。

激励与惩罚

在每个区块链生态中都会有一个经济系统,以使所有的网络参与者能够更好的参与网络的贡献。那么在 Polkadot 中这个经济系统是什么样呢。

DOT 代币

DOT 是 Polkadot 网络中的原生代币。DOT 也是持有人在进行投票、验证或委托给其他验证人的许可证明,同样它也可以用来进行交易时支付交易费用。DOT 在 Polkadot 中主要有四个用途:

Governance / 治理DOT 的持有者一定程度上决定着 Polkadot 网络的未来。类似的在其他平台中矿工拥有的特权都将给予中继链的参与者,也即 DOT 的持有者。他们可以管理网络中出现的重要事件,例如:协议的升级和修复。Operation / 运营博弈论会激励 DOT 持有者在网络中做好事。没有作恶的参与者将会通过这种机制获得相应的回报,而在网络中作恶的参与者就会失去他们的 DOT。这样也可以一定程度上保证网络的安全。Inter-operability / 互操作性对于要从一条区块链发送到下一条区块链的消息,发送者可以支付一定的 DOT 作为交易费用,但这并不是必须的。Bonding / 质押新的平行链需要通过绑定(bond)DOT 来加入网络中。且无人维护的和无用的平行链也可以通过解除绑定 DOT 以从网络中删除。这也是 PoS 的一种形式。DOT token 将会在主网上线之后才能使用。

平行链的插槽拍卖

根据目前的估算,平行链的数量上限为 100 条,不过未来有可能减少或增加。

Polkadot 网络通过拍卖机制来竞拍平行链的使用权 —— 出价最高的人需要在 PoS 系统中锁定一定数量的 DOT,才可以在一定时间段内拥有所拍得平行链的使用权。

这意味着要想使用 Polkadot 上的平行链,需要购买并锁定大量 DOT ,直到不想再使用这条平行链为止。

参与者激励和惩罚

验证人激励验证人通过质押 token 在中继链上进行区块的确认,当区块被确认时,它会收到对应的奖励。如果作恶,被钓鱼人举报并且验证为真实作恶的话,就会对该验证人进行惩罚。收集人激励收集人会收集平行链中的交易,这些交易中的手续费会作为收集人的奖励。钓鱼人激励钓鱼人对 Polkadot 网络中的验证人进行监控,若发现非法的交易,它就会通过质押 token 来举报给其他组的验证人进行验证,若其他验证人证明了举报是真实的,钓鱼人就会获得相应的奖励,反之,若为虚假举报,钓鱼人就会受到相应惩罚,他所质押的 token 也会被没收。提名人激励提名人最多可以支持 16 个他们信任的验证人候选人,并将自己的 token 通过自己所信任的验证人进行质押,这样就可以和验证人共享其收益。在 Polkadot 的质押机制中,所有验证人将会获得相同的奖励,而所有参与质押的提名人将会等验证人减去所设置的佣金后,再按他们的抵押比例分配奖励。生态

概述

如图 8 所示是 PolkaProject 发布的关于 Polkadot 生态中的所有项目,可以看到 Polkadot 生态中的项目还是蛮多的,其中钱包、区块链浏览器、基础设施项目,还有一些论坛等。其中的优秀项目还是比较多的,比如:ChainX、Edgeware、Darwinia、Cdot 等。稍候我们会对这些优秀的项目做一些简要的介绍。在这之前,我们先来看下 Polkadot 的开发者生态如何。

Polkadot整体评估

Polkadot 作为一个跨链的技术解决方案,它同样会面临跨链本身所需要解决的问题,包含跨链交易的原子性、可验证性、数据一致性以及安全性问题。在 Polkadot 中,主要通过中继链、平行链以及 ICMP 机制解决这些问题。Polkadot 网络中所有的平行链会通过中继链共享网络整体的安全,通过 ICMP 协议由验证人实现不同消息在不同平行链间的转移。且在 Polkadot 网络中还有相应的激励和惩罚措施,以提高验证人作恶的成本,保证网络的安全。

以上我们分别介绍了 Polkadot 网络的基本结构,包含所有的链角色和网络中参与者的角色,以及它的共识机制和激励惩罚措施等,那么总体上来看 Polkadot 怎么样,又有什么优劣势呢。

优势

Polkadot 网络由中继链统一管理网络的共识,所有平行链共享安全,且所有平行链都具有同等级别的安全,在共享安全性模型下的跨链通信更容易解决数据可用性问题。由于 Polkadot 中的共享安全性,应用链(平行链)的开发就不需要自己维护区块链的安全,能够降低区块链的开发成本。Polkadot 将区块生成的共识和区块确认的共识分离开来,采用 BABE 和 GRANDPA 的混合共识模式,能够加快网络中的共识效率。开发者可基于 Substrate 区块链开发框架构建一条应用链,该区块链将原生支持 Polkadot 生态内的跨链功能,且其中包括各种开箱即用的模块,例如治理模块(投票系统)、质押模块和认证模块等,可以用来快速搭建一条区块链,并接入 Polkadot 网络。在 Polkadot 网络中,由中继链维护着网络整体的 world state,平行链之间通过 ICMP 实现跨链通信。且平行链之间不仅仅可以进行跨链转账,还可以进行任意信息的通信。这就意味着一个平行链可以对另外一个平行链发起智能合约调用(call smart contract)。但还未实现。劣势

平行链的加入成本较高。根据 web3 foundation (Polkadot 背后的基金会,它们会对 Polkadot 生态做技术研究和营销) 对平行链租赁的解释来看,平行链上的资源是有限的,所以一开始的平行链会以拍卖的形式做,后续会以租赁的形式继续维护。而要想拍卖或者租赁平行链是需要用 DOT 进行质押的,这样就可能导致平行链的维护成本太高,只有拥有大量 DOT 的链才能进入 Polkadot 网络中。同样是由于 Polkadot 网络的共享安全性,导致了整个网络具有一定的 “连坐性”,若 Polkadot 网络中继链遭受攻击,就会导致整个网络受到伤害。ICMP 协议还未实现,且截至目前主网还未上线,因此许多想法还未得到验证。总结

综上,Polkadot 是一个创新型的跨链项目,提出了中继链、平行链等概念,并将区块的产生和确定共识区分开来,同时发布了 Substrate 框架用来构建区块链平台,以及通过 ICMP 来实现平行链间的跨链通信。通过我们在这段时间对 Polkadot 的学习和研究,我们发现对于跨链机制 ICMP 来说,它还处在一个较为前期的阶段,最近在社区中刚刚得知,官方接下来才准备发布关于 ICMP 相关的 paper,从实现上来看也是同样还处于暂未完成的状态。但同时我们也看到有许多项目在向 Substrate 框架迁移,比如:Shift。

在 GitHub 中可以看到 Substrate 的代码库每天都有巨量的代码更新,且 Substrate 还拥有较为活跃的开发者社区。因此,我们相信 Substrate 是一个具有前景的区块链开发框架。对于 Polkadot 生态中跨链方案 ICMP 前景的看法,我们目前是比较保守的,但我们会持续关注它的发展动态。

互联互通是大势所趋,任何一个生态如果选择孤立发展,就会被区块链互联网产生巨大的网络效应所挤压,最终遭受淘汰。总体上,Polkadot 大大降低了应用链的开发成本,共识等模块都不需要自己实现,可以直接依赖中继链,且只要平行链在 Polkadot 网络中上线就可以和所有的平行链享受平等级别的安全等级,看起来这会是一个很吸引人的点。

但 Polkadot 中有限的平行链资源以及拍卖入场的方式,又未免会让 DOT 持有量少的参与者望而却步,这就加大了 Polkadot 网络的入场门槛。总之,我们应当保持一个开放的心态,在跨链解决方案百家争鸣的时代什么都有可能发生,我们更应该对技术本身进行深入了解,了解其优劣,架构方式等。

Glossary

ICMP:Inter-chain Message Passage,是 Polkadot 中用于解决跨链通信的协议。中继链:Polkadot 网络中的一条链,主要负责 Polkadot 网络的共识和平行链之间的通信。平行链:在 Polkadot 网络中运行的一条区块链,它实现了某些具体的应用场景,但不具备共识能力,是一条应用链。转接桥:在 Polkadot 网络中充当中继链和外部区块链(例如:以太坊)之间的中介,通过转接桥,可以使外部区块链作为一个 “虚拟平行链” 接入中继链,以使外部区块链和 Polkadot 网络中的链进行网络通信。Collator:它是一个节点,通过收集平行链上的交易并为验证者生成状态转换证明(state transition proofs)来维护平行链的节点。Validator:它是一个节点,通过质押 DOT 来验证平行链上的来自于收集人的状态转换证明并与其他验证人一起确定共识来维护中继链。钓鱼人(Fisherman):它们负责监视网络中的验证人和收集人,只要他们作恶,钓鱼人就可以通过质押少量的 DOT 来进行举报,但是如果他们真的发现了作恶行为,就可以得到大量的收益回报。Epoch:epoch 是 BABE 协议中的一段用于出块的时间,它又被划分为不同的 slot,每个 slot 是一个更小的时间间隔,在 Polkadot 中默认为 6 秒,且在一个 slot 中会有一个区块的产生。Ewasm:WebAssembly for Ethereum,是以太坊下一代虚拟机。绑定(Bonding):是一个将 token “冻结” 的过程,通过 “冻结” token,才可以使平行链接入到中继链中。

—-

编译者/作者:牛牛识途

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...