今天波卡开发者 Bastian 发推介绍了波卡 PDK 之一 Cumulus 的最新开发进展:已经成功从平行链向中继链发送消息,来操作中继链转账了!
PDK 是波卡发挥共享安全和跨链的关键之一,今天这篇文章我们就来一起了解波卡平行链开发套件 PDK。
平行链开发套件(PDK)是一组工具,使开发人员可以轻松创建与 Polkadot 兼容的平行链[1]。
为什么要创建平行链?
在深入探讨 PDK 是什么以及如何使用它之前,让我们回顾一下为什么开发人员想要创建一个平行链并将其连接到 Polkadot。
平行链具有两个主要的附加值,这使其成为开发人员创建独立链的理想选择:
共享安全性 – 无需再重新布置链自己的验证人集。
跨链通信 – 允许平行链通过 XCMP 协议互操作。
平行链可以通过为平行链插槽绑定 DOT [2]来租用波卡网络的安全性[3]。这意味着围绕你的项目建立社区,并说服验证者参与网络安全的社会成本降低了。Polkadot 预计将具有强大的安全性,希望从这种安全性中受益的去中心化应用程序项目将希望成为平行链。有关通过蜡烛拍卖租赁平行链插槽机制的更多信息,请参见此处[4]。
任何想要与连接到 Polkadot 的其他平行链实现无信任消息传递的去中心化应用程序或链,都会希望成为平行链。主权链之间的互操作性涉及一定的约束条件和复杂的协议,以支持广泛的链。使用 Polkadot,如果你将应用构建为平行链,则可以立即使用此功能。XCMP 协议[5]将允许任何平行链通过在它们之间传递消息来进行互操作。此外,随着与其他链(例如与比特币或以太坊的链)之间的桥梁的启动,平行链也将能够与这些链一起运行。
什么是 PDK?
之前已经提到过,PDK 是让开发人员能够轻松创建平行链的一组工具。实际上,这意味着 PDK 将包含几个关键组件:
状态转换功能 – 应用程序从一种状态转移到另一种状态的一种方式。
收集人节点 – Polkadot 网络中的一种点对点节点,对平行链负有一定责任。
状态转换函数(STF)可以是应用程序从一种状态转换到另一种状态的任何抽象方式。Polkadot 对该 STF 的唯一限制是它必须易于验证 —— 通常通过我们称为见证(witness)或证据(proof)的方式进行验证。之所以如此,是因为中继链验证人将需要检查从收集人节点接收到的每个状态是否正确,而无需实际运行整个计算。这些证明的一些示例包括有效性证明区块或 zk-SNARK,它们需要的计算资源比其生成的要少。STF 的证明生成中的验证不对称性,是使 Polkadot 扩展规模并同时保持高安全性保证的不可或缺的因素之一。
收集人节点是 Polkadot 协议中网络维护者的类型之一。它们负责保持平行链状态的可用性以及从状态转换函数的迭代返回的新状态。它们必须保持在线状态,以便跟踪状态以及 XCMP 消息将在其自身与其他平行链之间路由。收集人节点负责将简洁的证明传递给中继链验证人,并跟踪中继链中的最新块。本质上,收集人节点还充当 Polkadot 中继链的轻客户端。有关整理者节点的更多信息,请参见此处[6]。
有哪些 PDK 类型?
目前,唯一的两个 PDK 是 Parity Substrate[7] 和 Cumulus[8]。Substrate 是一个区块链框架,提供了区块链的基本构建块(诸如网络层、共识、Wasm 解释器之类的东西),并提供了构建 runtime 的直观方法。做 Substrate 的目的是简化创建新链的过程,但它不直接提供 Polkadot 兼容性支持。因此,Cumulus 是一个添加的库,其中将包含所有 Polkadot 兼容性粘合代码。Cumulus 仍在开发中,但其想法是只用导入 crate 并添加一行代码,就可以很简单地采用 Substrate 链并添加平行链代码。
Substrate 和 Cumulus 从区块链格式的抽象中提供了 PDK,但是平行链甚至不必是区块链。例如,一条平行链只需要满足上面列出的两个约束:状态转换函数和收集人节点。其他一切取决于 PDK 的实现者。
对于 PDK 来说,一个有趣的想法是拥有一个 roll_up[9] 套件,该套件允许开发人员创建基于 Snark 的平行链。如果查看 roll_up 文章,我们会发现该系统使用两个角色:更新状态的用户和将状态更新聚合为单个链上更新的操作者。我们很容易想到可以如何将其翻译为平行链条款。类似 roll_up 的平行链的状态转换函数将根据用户输入更新状态(实际上,很可能是容易验证的 merkle 树)。操作员将充当收集人节点,它将汇总状态并创建 zk-SNARK 证明,并将其交给中继链验证人进行验证。
创建 PDK
如果你或你的团队有兴趣开发 PDK,请随时在 W3F 协作 repo[10] 上开启一个 issue 来征询意见。 这类工作可能有补助金。
参考链接
[1]平行链: https://wiki.polkadot.network/docs/en/learn-parachains
[2]DOT : https://wiki.polkadot.network/docs/en/learn-DOT
[3]租用波卡网络的安全性: https://wiki.polkadot.network/docs/en/learn-security
[4]此处: https://wiki.polkadot.network/docs/en/learn-auction
[5]XCMP 协议: https://wiki.polkadot.network/docs/en/learn-crosschain
[6]此处: https://wiki.polkadot.network/docs/en/maintain-collator
[7]Substrate: https://github.com/paritytech/substrate
[8]Cumulus: https://github.com/paritytech/cumulus
[9]roll_up: https://ethresear.ch/t/roll-up-roll-back-snark-side-chain-17000-tps/3675
[10]W3F collaboration repository: https://github.com/w3f/Web3-collaboration