一直以来都有意愿去系统了解一下 Polkadot 和 Substrate ,奈何一直都被各种事情纠缠难以腾出时间,如今终于定下决心,开始挺进这一领域。本文内容主要基于两部分内容组织而成: Polkadot Light Paper 和 Polkadot 白皮书。
当前区块链技术栈的若干问题
当今区块链技术栈面临五大挑战:
- 伸缩性(Scalability)难以满足现实世界的需要。
- 治理(Governance)主要关注于 PoW 和 PoS,以牺牲多数人的利益为代价奖励少数人,这是错误的。
- 隔离性(Isolability)让各区块链之间难以通信。
- 可开发性(Developability)有限,关键在于生态中缺少伸缩性和互操作性。
- 可应用性(Applicability)不足,原因在于以上要素的缺失。
Polkadot 的使命
Polkadot 试图成为连接各区块链的网络,在高层面上解决:
- 互操作性,使得一个区块链上的应用和智能合约可以无缝地与另一条区块链上的数据和资产进行交易。
- 可伸缩性,通过平行链(parachain)实现交易并行化,从而实现无限伸缩性。
- 共享安全性,实现网络安全池,各个区块链可以共同利用,无需从头自行实现或彼此竞争有限的计算资源。
- Polkadot 采用“中继链 + 平行链”的架构,对于平行链而言,中继链就是它们的共享安全池。详见下。
Polkadot 技术详解
异构网络
Polkadot 是一种异构的多链技术,其组成如下图:
- 中继链(Relay chain),协调各链之间的共识和交易传递。
- 基于 Substrate 构建。
- 中继链区块中会包含有平行链的区块头,以避免双花。
- 以上说明了中继链中区块的批准发生在验证人批准了平行链的区块之后,否则不可能在区块中包含平行链区块头。
- 为了保持功能简洁,不支持用交易部署合约。
- 平行链(Parachain),收集和处理交易的子链,通过中继链相连,其安全性也由中继链保护。
- 面向应用的链,与之相关的业务发生于此,从而实现交易的并行性,提高整个系统的伸缩性。
- 平行链可视作中继链的侧链。
- Cumulus 简化了平行链的搭建。
- 桥接(Bridge),链接中继链和那些有自有共识机制的区块链(如以太坊)。
- “自有共识”意味着其安全性由自身来保护,中继链不负责。
共识算法
Polkadot 的共识机制采用 PoS(权益证明),通俗地说就是:谁钱多谁说话的分量就大。关于 PoS 及其他共识算法的的介绍可以参考这篇文章。
角色
Pokadot 网络中有四种角色,其交互和作用下图:
- 验证人(Validator),需质押 DOT ,接收并验证来自收集者的平行链区块,验证和添加中继链自身的区块。
- 质押的 DOT 一部分来自于提名人,以便双方利益和风险共担。
- 验证人需要运行中继链客户端,有最高权限。
- 验证人会被随机分组,每个分组对应一个平行链,用来保证去中心化。
- 提名人(Nominator),需质押 DOT ,负责提名代表自己的验证人。若所选验证人被奖励或被惩罚,自己跟着一起被奖励或被惩罚。
- 收集者(Collator),打包其所监视的平行链的交易,并将区块证明发送给验证人,同时,它还可以兼任钓鱼者(见下)。
- 钓鱼者(Fishermen),最后一道安全防线,监视网络和证明验证人的坏行为。
跨链通信
Polkadot 中的跨链通信示意图如下:
Polkadot 通过基于默克尔树的队列记录跨链交易,所谓跨链即:将交易从“来源平行链”的出队列(egress)移入到“目的平行链”的入队列(ingress)。请注意,上图的上方是平行链,下方是中继链,这样所谓的出入队列才能说的通。
已转发的交易会被中继链引用。
最后,为了防止平行链向另一条平行链发送垃圾交易,引入了“饱和度”概念,它由入队列大小决定,若饱和度太大,则无法再向其发送交易,需等其饱和度下来之后才能继续。本质上,它跟一般的限流手段没有什么区别。饱和度不是一个统一标准,各平行链可自行决定。
DOT
DOT 之于 Polkadot 等同于 ETH 之于以太坊,其作用主要在三个方面体现:
- 治理,DOT 的持有者,即中继链的参与者,拥有对协议的完全控制权(如协议升级和修复)。在其他区块链平台中,这部分权力通常属于矿工。
- 运营,激励诚实、好的行为。
- 质押和支付,新增平行链需要质押 DOT,平行链的解除会返还 DOT。
技术栈
Polkadot 的技术栈如下图:
与 Substrate 的区别
最简单的答案是:Polkadot 是协议, Substrate 是框架,前者构建于后者基础之上。它们的关系见下图:
相关工具
- Substrate,搭建区块链的快速开发框架。
- Cumulus,基于 Substrate 快速开发 Polkadot 平行链。
- 它与 Substrate 的区别在于:Cumulus 的目的是简化 Polkadot 平行链开发,Substrate 则更通用一些,前者依赖后者。
- ink!,使用 Rust 来编写面向 Substrate 的 WASM 智能合约 DSL 。
- Polkadot-JS,Polkadot 相关的 js 的库和客户端。
- 其他工具。
由于 Substrate 已经有 EVM 模块,能直接运行以太坊智能合约,无需修改。这无疑引入了降低了门槛,同时扩大了边界,使得已有投资可以以最低成本直接迁移到 Polkadot 的世界:Cumulus + EVM 模块 + 现有以太坊合约,利用这个组合搭建一条特定业务的平行链。经过这轮改造之后,起码交易速度可以大大提高。
EVM 模块的引入可以将现有以太坊开发生态直接引入,典型比如:Truffle、Embark、Subspace、Open Zeppelin 等。有兴趣的同学可以访问下面的链接:
参考资料
觉得有帮助的话,不妨考虑购买付费文章来支持我们 🙂 :
付费文章