平行链的定义
平行链是一种特定于应用程序的数据结构,具有全局一致性,可以由中继链的验证者进行验证。它们的名字来源于与中继链并行运行的平行链概念。最常见的是,平行链将采用区块链的形式,但没有特别需要它们必须是实际的区块链。
由于它们的并行特性,平行链能够并行处理交易并实现波卡系统的可扩展性。同时也继承了整个波卡网络的安全性,并且可以通过XCM格式与其他平行链进行通信。
平行链由称为整理者(collator)的网络维护者维护。整理者节点的作用是维护平行链的一个全节点,保留平行链的所有必要信息,并产生新的候选区块传递给中继链验证者进行验证并纳入波卡的共享状态:polkadot.}} 。
整理者节点的激励是平行链顺利运行的一部分。除非平行链的实施有规定,否则不需要在中继链上进行质押或必须拥有原生通证作为条件。
Polkadot Host(波卡主机)要求将在平行链上执行的状态转换指定为Wasm可执行文件。在波卡确认平行链上发生了状态转换之前,必须根据验证者存储在中继链上的已注册状态转换函数 (STF) 验证在平行链上发生的新状态转换的证明。平行链逻辑的关键约束是它必须可由中继链验证者验证。验证最常见的形式是状态转换的捆绑证明,称为验证证明 (PoV) 区块,该区块从一个或多个平行链整理者提交给验证者进行检查。
为什么选择平行链?
平行链是区块链中两个基本问题的解决方案:
- 可扩展性:拥有一个用于多种用途的区块链会导致其难以扩展,因为未来的实施和升级可能会对某些用途有利而对其他用途不利。另一方面,拥有不同的区块链将使它们能够在不影响其他链的情况下自行实现功能。
- 灵活性:可以说区块链的特点是可以非常擅长解决一个问题,也可以不太擅长解决许多问题。能够专门解决特定问题的区块链对自身及其用户具有更大的影响力。平行链是专门构建的高度专业化的区块链,能够通过合作相互利用。
共享安全性
共享安全性,有时在文档中称为池化安全性,是吸引考虑成为平行链并加入波卡网络的链的原因之一。也就是说,共享安全意味着所有通过租用平行链插槽连接到波卡中继链的平行链都将受益于中继链验证者提供的经济安全。
共享安全的概念不同于建立在桥接架构上的链间协议。对于桥接协议,每条链都被认为是主权链,必须维护自己的验证者集和经济安全。
这些协议中的一个问题是安全的可扩展性。例如,扩展区块链的一个建议是通过altcoin进行规模化,这表明随着较多的altcoin填满其区块,交易量将过滤到市值较低的altcoin。一种扩展区块链的建议是通过使用altcoin(价值更低的山寨通证)来实现,这个建议认为随着一些市值高的通证填满其区块,交易量会分流到市值低的altcoin。
译者注:区块链是一种分布式的记账系统,每个区块都包含了一定数量的交易记录。不同的区块链有不同的市场价值和交易量,我们把它们叫做不同的通证。有人提出了一种扩展区块链的方法,就是通过使用altcoin来分散交易量,这个方法认为当一些市值高的通证的区块满了之后,交易者会转向使用市值低的通证来进行交易。这样就可以减轻区块链的拥堵问题,提高交易效率。
这个想法的一个主要缺陷是市值较低的通证所附带的经济安全性较低,并且更容易受到攻击。此前就发生了51%攻击的真实例子(2019年1月10日的以太坊经典攻击),其中一个未知的攻击者双花了219500 ETC(约110万美元)。随后又发生了两次针对ETC的51%攻击。
波卡克服了安全可扩展性问题,因为它将所有经济激励吸引到中继链上,并允许平行链在初期能利用其系统的强大性。而主权链必须付出更多的努力来增加其通证的价值,以便它能够足够安全地抵御资金雄厚的攻击者。
PoW和平行链
让我们将当前工作量证明 (PoW) 链上存在的标准主权安全模型与波卡的共享安全模型进行比较。由自己的安全模型(如比特币、Zcash及其衍生品)保护的链都必须引导自己的独立矿工网络,并保持诚实哈希算力的处于更具竞争性的部分。由于Mining正在成为一个越来越集中于关键参与者的更大的行业,因此单个参与者可能控制足够的哈希算力来攻击链,这变得越来越现实。
这意味着一些无法维持足够安全的哈希算力的小型区块链可能会受到一个大型矿工联盟的攻击,只要这个联盟随心所欲地把它的哈希算力从比特币转移到一个新的、不太安全的区块链上。51%的攻击在今天是可行的,据报道,攻击已经发生在Ethereum Classic(见上文)、 Verge、 Bitcoin Gold和其他Crypto上。
在波卡上,链安全性之间的这种差异将不存在。当平行链连接到波卡时,中继链验证者成为该平行链状态转换的担保者。平行链只会有需要运行几个整理者节点的开销,以使验证者了解最新的状态转换和证明/见证。然后,验证者将检查它们是否属于它们所分配到的平行链。这样,新的平行链即使刚刚启动,也能立即受益于波卡的整体安全性。
平行链中的经济
平行链可能拥有自己的经济体和自己的原生通证。Proof-of-Stake等方案通常用于选择验证者集来处理验证和最终确定;平行链不需要做这些事情。但是,由于波卡对平行链可以实现什么并没有过分讲究,因此可能是平行链的选择来实现质押通证,但通常不是必需的。
整理者可以通过原生平行链通证的通胀来激励。可能有其他方法可以激励整理者节点,而不涉及通胀原生平行链通证。
原生平行链通证中的交易费用也可以是平行链的实现选择。波卡对于平行链如何决定交易的原始有效性没有制定硬性规定。例如,一个平行链可以实现成交易必须支付最低的给收集者的费用才能有效。中继链会强制执行这个有效性。同样,一个平行链也可以不在它们的实现中包含这个要求,波卡网络仍然会强制执行它们的有效性。
平行链不一定要有自己的通证。如果有,那么平行链需要为自己的通证提供经济上的理由,而不是由波卡来。
平行链枢纽
虽然波卡在平行链之间启用了交叉链功能,但它需要在从一个平行链发送消息到目标平行链收到消息之间存在一些延迟。在乐观的情况下,此消息的延迟应至少为两个区块,一个区块用于发送消息,一个区块用于接收平行链以处理并生成一个对消息起作用的区块。然而,在某些情况下,如果许多消息在队列中等待处理,或者如果没有节点运行两个可以在网络上快速传播消息的平行链网络,我们可能会看到消息的延迟更高。
由于发送跨链消息所涉及的必要延迟,一些平行链计划成为整个行业的枢纽。例如,平行链项目Acala计划成为去中心化金融 (DeFi) 应用程序的中心。许多DeFi应用程序利用了一种称为可组合性的特性,这意味着一个应用程序的功能可以与其他应用程序协同组合以创建新的应用程序。这方面的一个例子包括flash loans(闪电贷),只要在交易结束时偿还贷款,它就会借入资金来执行一些链上逻辑。
跨链延迟问题意味着与单个区块链相比,平行链之间的可组合性属性减弱。这种可能的影响对于所有分片区块链设计都很常见,包括波卡、ETH2.0等。对此的解决方案是引入平行链中枢,它保持了单块可组合性的更强特性。
平行链插槽的获得
波卡支持的平行链数量有限,目前估计在100条左右。由于插槽数量有限,有以下几种分配方式:
- 治理授予平行链,或“系统平行链”
- 拍卖授予平行链
- 平行线程
“系统”平行链由波卡的链上治理系统分配,并被视为网络协议的一部分,例如连接到其他网络或链的桥梁。这些系统平行链通常没有经济模型,有助于从中继链移除交易,允许更高效的平行链处理。
译者注:意味着把中继链上处理交易的功能,移交给系统平行链,为中继链减轻负担,进而提高整个波卡网络的运行效率
拍卖授予的平行链是在无许可拍卖中授予的。平行链团队可以使用自己的DOT通证进行竞标,也可以使用众贷功能从社区中获取通证。平行线程与平行链具有相同的API,但计划在即用即付的基础上执行,并对每个区块进行拍卖。
平行链租约到期
当平行链赢得拍卖时,它出价的通证将被保留到租约结束为止。预留余额不可转让,也不能用于质押。在租约结束时,通证将被取消保留。没有获得新租约以扩展其插槽的平行链将自动成为平行线程。
系统平行链
系统平行链是使用网络治理分配的执行核心的平行链。这些链从中继链中移除交易,允许网络验证者将他们的资源分配给验证平行链。系统链是波卡使用自己的扩展技术来托管自己。详情请见:
https://polkadot.network/blog/common-good-parachains-an-introduction-to-governance-allocated-parachain-slots/
平行链用例
我们仍然需要看到平行链的真正潜力,下面列出的只是几个例子:
- 加密联盟链:这些可能是私有链,不会向公众泄露任何信息,但由于XCMP协议的性质,仍然可以不信任地进行交互。
- 高频链:这些链可以通过采取某些权衡或进行优化在短时间内计算许多交易。
- 隐私链:这些链通过使用新颖的密码学不会向公众泄露任何信息。
- 智能合约链:这些链可以通过部署称为智能合约的代码在其上实现附加逻辑。
Host(主机)
波卡包括一个称为中继链的区块链。区块链是状态转换的有向无环图(DAG),其中每个添加的区块都可以看作是链的头部或具有累积状态的分叉。通过DAG的所有路径都终止于创世区块。区块链是一棵树,因为每个区块只能有一个父块。
区块链网络由节点组成,这些节点可以查看链的许多分叉,并且必须决定跟随哪个分叉。要构建平行链主机,我们需要回答由两个不同组件解决的两类问题:
1、区块链的状态转移函数是什么?这是由Runtime处理的,它定义了链的状态转换逻辑。Runtime逻辑分为:
①模块(Module)封装了系统的特定行为,包括:
存储
例程由入口点(entry points)、其他模块在区块初始化或关闭时调用。例程可以改变模块的存储。
入口点定义了将新信息引入模块的方式,并且可以限制它们被调用的来源(用户、root、平行链)。
②API为节点端行为提供了从单个分叉状态中提取有意义信息的方法
信息:
波卡平行链主机实现者指南提供了关于Runtime架构和Runtime API的详细信息。
Runtime架构详情请参见:
https://paritytech.github.io/polkadot/book/runtime/index.html
Runtime API详情请参见:
https://paritytech.github.io/polkadot/book/runtime-api/index.html
2、意识到区块链的各种分叉,节点应该采取什么行为?节点应该从哪个分叉的状态中提取什么信息,应该如何使用这些信息?这是由节点端行为处理的,它定义了节点在给定其区块链视图的情况下所进行的所有活动。节点端行为可以分为两类:
①网络行为,这些与信息如何在节点之间分发有关,但与信息之后如何使用无关。
②核心行为,这些与特定节点所做的内部工作有关。这种行为关心信息的分发和接收,而不关心这两者是如何实现的。
这两个类别经常相互作用,但它们可以相互高度抽象。节点端行为被分成各种子系统,它们执行特定类别的工作。子系统可以通过防止竞争条件的监督者相互通信。Runtime和节点端行为相互依赖。Runtime依赖于节点端行为来编写区块,并包含触发正确入口点的外部函数。节点端行为依赖于Runtime API来提取确定要采取的操作所需的信息。
更多资料
Polkadot:Parachain,Polkadot 联合创始人Rob Habermeier的博客文章,他在2017年将平行链作为“一种更简单的区块链形式,它附加到中继链提供的安全性而不是提供自己的安全性。中继链不仅为附加的平行链提供了安全性,同时也为它们之间的安全消息传递提供了保证。
Parachain详情请参见:
https://medium.com/polkadot-network/polkadot-the-parachain-3808040a769a
The Path of a Parachain Block:平行链如何与中继链交互的技术演练。
详情请参见:
https://polkadot.network/blog/the-path-of-a-parachain-block