“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第62期,开发人员的涌入为生态的发展有着积极的贡献,而诸如平行链开发工具包这样的工具则有助于开发者轻松创建平行链。
开发者为构建Web3提供了技术支持,也是波卡生态发展的活力源泉。在此前发布的2021 Electric Captial开发者报告显示,每月有18000多名活跃开发人员在开源加密和Web3项目中提交代码,开发者的持续活跃是波卡生态良性发展的重要因素之一。
而波卡也开展了很多帮助开发者沟通学习的活动以及平台,比如即将召开的波卡2022年度开发者大会,汇集了在Substrate上构建的多元化开发者社区以及对区块链开发感兴趣的人,一起探讨波卡生态的发展。
实施一条平行链
平行链实施指南是一项正在进行的重要工作,由Parity Tech维护。实时版本是从位于波卡官方仓储库(https://github.com/paritytech/polkadot/tree/master/roadmap/implementers-guide)中的源代码构建的。
平行链开发工具包(PDK)
PDK是一组允许开发人员轻松创建平行链的工具。在实践中,PDK将包含以下关键组件:
- 状态转换函数:应用程序从一种状态转换到另一种状态的方法。
- 收集者(Collator)节点:波卡网络中的一种点对点节点,对平行链负有一定的责任。
关键组件
状态转换函数(STF)可以是应用程序从一种状态到另一种状态的抽象方法。波卡对这个STF的唯一限制是,它必须易于验证——通常通过我们所谓的证人或证据。
必须如此,因为中继链验证者需要在不实际运行整个计算的情况下,检查它从收集者节点接收到的每个状态是否正确。
这些证明的一些示例包括有效性证明块(Proof-of-Validity block,也可以称为zk-SNARKs),它们验证所需的计算资源比生成所需的计算资源要少。
STF的证明生成中的验证不对称性是允许波卡在保持高安全性保证的同时进行扩展的整体见解之一。
收集者节点是协议中的一种网络维护者。他们负责保持平行链状态的可用性,以及状态转换函数迭代返回的新状态。
他们必须保持在线,以跟踪状态以及它将在自身和其他平行链之间路由的XCMP消息。收集者节点负责将简洁的证明传递给中继链的验证者,并跟踪来自中继链的最新区块。
本质上,收集者节点还充当中继链的轻客户端。有关收集者节点的更多信息,请参阅收集者页面。(https://wiki.polkadot.network/docs/learn-collator)
存在哪些PDK?
目前,唯一的PDK是Parity Substrate和Cumulus。Substrate是一个区块链框架,它提供了区块链的基本构建块(例如网络层、共识、Wasm解释器),同时提供了一种直观的方式来构建runtime。
制作Substrate是为了简化创建新链的过程,但它不直接提供对波卡兼容性的支持。出于这个原因,Cumulus添加的库包含波卡兼容性胶合代码。
开始使用Substrate
开始使用Substrate的最佳方式是探索Substrate Developer Hub,这是由Parity Technologies构建和维护的在线资源。(https://docs.substrate.io/)
Cumulus
Cumulus的形状有点像“点”;它们共同形成了一个复杂的系统;很漂亮,而且很实用。
Cumulus是Substrate的扩展,可以轻松地将任何Substrate构建的runtime变成与波卡兼容的平行链。
Cumulus共识是一个遵循波卡中继链(即平行链)的Substrate共识引擎。这会在内部运行一个波卡节点,并向客户端和同步算法指示要遵循哪个链,最终确定哪个链,并将其视为正确的。
有关Cumulus的更详细描述,请参阅Cumulus概述。(https://github.com/paritytech/cumulus/blob/master/docs/overview.md)
Cumulus仍处于开发阶段,但它的想法是,通过导入crate并添加一行代码,就可以简单地获得一个Substrate链并添加平行链代码。从Cumulus部分(https://wiki.polkadot.network/docs/build-pdk###cumulus)了解最新的Cumulus发展。
信息
Substrate和Cumulus从区块链格式的抽象中提供了一个PDK,但平行链甚至不需要是区块链。例如,一条平行链只需要满足上面列出的两个约束:状态转换函数和收集者节点。
其他一切都取决于PDK的开发者。
Cumulus负责处理连接波卡所需的所有平行链的网络兼容性运营费用。
这包括:
- 跨链消息传递(XCMP)
- 开箱即用的收集者节点设置
- 中继链的嵌入式全客户端
- 区块链授权的兼容性
您对构建PDK感兴趣吗?有关详细信息,请参阅未来的PDK部分。(https://wiki.polkadot.network/docs/build-pdk##future-pdks)
如何设置你的平行链
使用Substrate创建runtime逻辑链后,你将能够将其编译为Wasm可执行文件。这个Wasm代码blob将包含你的链的整个状态转换函数,并且是你将项目部署到波卡中的平行链或平行线程所需要的。
波卡上的验证者将使用提交的Wasm代码来验证链或线程的状态转换,但这样做需要一些额外的基础设施。验证者需要以某种方式来跟上最新的状态转换,因为波卡节点不需要也成为链的节点。
这就是收集者节点发挥作用的地方。收集者是你的平行链的维护者,它执行生成新的候选区块并将其传递给波卡验证者以包含在波卡中继链的关键操作。
Substrate内置了自己的网络层,但不幸的是只支持单链(即不连接中继链的链)。但是,有一个Cumulus扩展,其中包含一个收集者节点,并允许你的Substrate构建逻辑以平行链或平行线程的形式与波卡兼容。
未来的PDK
号召大家行动起来
你想从头开始构建平行链开发工具包吗?Web3基金会正为从事这项工作的团队提供资助,了解更多信息并在W3F赠款页面上申请。(https://web3.foundation/grants/)
PDK W3F有兴趣支持的一个例子是一个汇总工具包,它允许开发人员创建基于SNARK的平行链。
如果我们回顾汇总记录,我们会看到系统使用了两个角色:更新状态的用户和将状态更新聚合为单个链上更新的操作者。
应该很容易看出如何将其转化为平行链术语。类似rollup的平行链的状态转换函数将根据用户输入更新状态(在实践中,很可能是Merkle树,这很容易验证)。
运营商将充当收集者节点,该节点将聚合状态并创建zk-SNARK证明,它将提交给中继链的验证者进行验证。
如果你或你的团队对开发PDK感兴趣,请随时在W3F协作仓储库上打开一个问题以征求意见。此类工作可能会获得资助。(W3F协作仓储库:https://github.com/w3f/General-Grants-Program)
欢迎大家加入我们Polkadot生态研究院的电报:
https://t.me/polkadot_eri
欢迎大家访问波卡生态研究院的Mirror地址:
https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05