写点什么

在 Polkadot 中进行创建的三种方式 —— 平行链、平行线程、智能合约

  • 2022 年 7 月 15 日
  • 本文字数:1653 字

    阅读完需:约 5 分钟

《波卡生态发展不设限的奥义——多维解读平行链》中,我们解析了平行链的特性与经济生态,探讨了平行链作为枢纽中心的运作原理与获取插槽办法。



在波卡生态中创建应用有很多种方式,开发者可以根据自己的情况选择合适的方式。今天我们将来对比平行链、平行线程和智能合约三种创建方式的优势。


平行链

平行链是接入到波卡 / Kusama 的中继链,平行运行的多条区块链,每条平行链就是一个分片。


每条平行链可以自定义其独特的 runtime 逻辑,这一点和其他 Layer 1 区块链一样,但平行链同时又能获得中继链提供的共享安全性,通过异构分片获得的可扩展性,而且平行链之间可以通过波卡的 XCMP 跨链消息传递协议或 HRMP 水平中继路由消息传递协议很方便地进行跨链通信。通过 Substrate 和 Cumulus 等平行链开发套件,让开发链的时间大大缩短。


平行链会给到开发者更多的自由,去创建自己的经济系统和其他方面。和智能合约平台相比,平行链可以更简洁、更有效地执行复杂的逻辑,在治理形式上也更灵活,并且可以无需分叉完成升级。


在经济模型上,波卡平行链采用租用的方式,想要成为波卡/Kusama 的平行链,就需要通过抵押 DOT/KSM 来赢得平行链插槽 Auction,从而在一段时间的租期内(波卡租期通常为 2 年左右)获得平行链插槽的使用权,用于部署平行链逻辑,然后就可以在租期内随意使用中继链资源,不用再每笔交易都付手续费。平行链可以自定义其收费方式,比如每笔交易收取一笔固定费用,或按照字节数收费,平行链应用的用户不必在每次交互时使用中继链代币 DOT/KSM,而是可以使用平行链的本地代币。


平行链让开发者可以构建复杂的 runtime 逻辑,而这些复杂的逻辑如果用智能合约来执行会非常昂贵。而平行链并没有智能合约的强制 gas 计费系统,因此可能受到导致无限循环 bug 的影响(智能合约的设计可以防止这种情况),这个 bug 通过在 Substrate 中实现的 weight 系统得到缓解。


平行线程

平行线程和平行链很相似,都允许开发者对其应用的逻辑进行较底层的控制。平行线程开发使用到的工具和平行链的几乎是一样的,也可以享有平行链的所有优势。


两者的区别主要在于经济模型 —— 平行链需要一次性锁定大量 DOT/KSM 来获取插槽,之后就可以在每个中继链区块都出块;平行线程则是按需付费,也就是只在有需要的时候才出块,因此对于一些交易量不太大的应用来说,平行线程会更便宜一些。


需要说明的是,平行线程在最初的波卡白皮书中是不存在的,因此在开发线路图中排到了较后的位置,属于上线后的进一步更新。该功能目前还在开发中,尚未上线。


智能合约

智能合约其实就是一段代码,它存在于链上地址中,可以由外部参与者调用。想要让人能够执行代码,就需要把它部署到某条链上。


你并不能在波卡 / Kusama 中继链上直接部署智能合约,但是可以部署到支持智能合约的平行链上,例如 Acala、Moonbeam、Astar 平行链上都已经可以部署 EVM 智能合约,未来还会支持 Wasm 合约,每条链的区别可以参考往期视频:


智能合约使用的是 gas 计费模型,也就是在每次智能合约执行代码时向其收 gas 费。这一设计可以避免 DoS 攻击,但也让智能合约的逻辑无法太复杂,否则 gas 费会非常昂贵。


和平行链相比,智能合约的开发速度更快,部署难度更低,但由于智能合约是可执行程序,仅存在于一条链上,复杂性有限,而且总是会受到其宿主链的固有特性的约束和限制,灵活性和可定制化程度都不如平行链。


总结

总结下来,这几种在波卡中构建的方式都各有取舍。下图对比了三种方式各自的优缺点。+ 代表在此项占优势,- 代表在此项处于劣势。


智能合约最终需要部署到一条链上,遵循宿主链的环境,但开发起来更快,比较适合想要快速上线的一些的应用。平行链自定义程度更高,可以决定自身链的环境,但是插槽 Auction 成本较高,开发和维护难度也更高,适合想要更多掌控自身设计和功能的应用。平行线程有点像 “平价版” 的平行链,享有平行链的大部分优势而且成本更低,适合交易频率不高的应用。几种方式也可以结合起来使用,比如一些应用会先部署智能合约作为最小可行性产品,在测试可行后再迁移到平行链。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.01.14 加入

还未添加个人简介

评论

发布
暂无评论
在 Polkadot 中进行创建的三种方式 —— 平行链、平行线程、智能合约_区块链_One Block Community_InfoQ写作社区