

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第 98 期,Cosmos 与波卡一直以来总是被冠以跨链双雄的名号,尽管角色相似但两者的差异也比较多。本文将从你模型、结构、治理等多个方面对 Cosmos 与波卡进行全面的对比。
概述
模型
编者注:
在 Polkadot 上,不同的平行链可以安全地交换任何类型的数据或资产,实现区块链之间的互操作性。
为了实现这种互操作性,Polkadot 需要一种统一的方式来描述和执行不同平行链上的状态变化。
状态是区块链上存储的数据,比如账户余额、合约代码、交易记录等。
状态转换函数(STF)是一种规定了如何从一个状态转换到另一个状态的函数,比如通过验证交易、更新账户余额、执行合约代码等。
Polkadot 使用 WebAssembly(Wasm)作为一种“元协议”,也就是一种用来定义其他协议的协议。
Wasm 是一种通用的二进制格式,可以在不同的平台和环境中运行。
Polkadot 允许每个平行链使用自己喜欢的编程语言和逻辑来定义自己的 STF。
只要它们能够编译成 Wasm 格式,并且能够被 Polkadot 上的验证者在 Wasm 环境中执行。
这样,Polkadot 就可以保证不同平行链之间的兼容性和安全性。
通俗易懂地说,Polkadot 就像一个大火车站,它可以让不同的火车(平行链)在同一个轨道(Relay Chain)上运行,并且可以让乘客(数据或资产)在不同的火车之间转乘。
为了让火车站能够管理和调度这些火车,它需要有一个统一的标准来了解每个火车上发生了什么事情(状态转换)。
这个标准就是 Wasm,它可以让火车站用同样的方式来读取和执行每个火车上发生的事情,无论这些火车是用什么样的语言和逻辑来设计的。
Polkadot 的分片被称为“平行链”。每当平行链想进行状态转换时,它会提交一个区块(一批状态转换)以及一个状态证明,供 Polkadot 验证者独立验证。
当它们被 Polkadot 的中继链(系统的主链)确认后,这些区块就对于平行链来说是最终确定的。
因此,所有平行链与整个系统共享状态,这意味着单个平行链的链重组将需要重新组织所有平行链和中继链。
Cosmos 使用连接 Tendermint 链的 bridge-hub 模型。该系统可以有多个 Hub(其中主要的是“Cosmos Hub”),但每个 Hub 连接一组外部链,称为“Zone”。
每个 Zone 负责通过足够抵押和去中心化验证者集来保护链。Zone 使用称为 Inter-Blockchain Communication(IBC)的协议通过 Hub 互相发送消息和通证。
由于 Zone 不共享状态,因此一个 Zone 的重新组织不会重新组织其他区域,这意味着每条消息的可信性取决于接收者对于发送方安全性的信任。
结构
Polkadot 有一个中继链作为系统的主链。Polkadot 中的所有验证者都已开启中继链。
平行链有整理者(Collator),他们构建并提出平行链区块验证者。整理者没有任何安全责任,因此不需要强大的激励制度。
每 6 秒钟整理者可以为每个中继链区块提交一个平行链区块。一旦平行链提交一个区块,验证者就会执行一系列的可用性和有效性,在将其提交到最终链之前进行检查。
平行链插槽有限,因此平行链候选者要参加拍卖,以保留最长可达两年的插槽。
对于那些没有资金用于购买平行链插槽或没有必要以六秒的区块时间执行的链,Polkadot 也有平行线程。
平行线程是按需付费的,只有在需要时才需要支付执行区块的费用。
为了与想要使用自己的最终化过程(例如比特币)的链进行交互, Polkadot 具有提供双向兼容性的桥接平行链(Bridge Parachains)。
Cosmos
Cosmos 有一个称为“Hub”的主链,该链连接其他名为“Zone”的区块链。Cosmos 可以拥有多个 Hub,但本概述将考虑单个 Hub。
每个 Zone 都必须维护自己的状态,因此必须拥有自己的验证者社区。当一个 Zone 想要与另一个 Zone 通信时,它通过 IBC 发送数据包。
Hub 维护一个多通证账本来记录通证余额(非转账信息被中继,但它们的状态不会存储在 Hub 中)。
Zone 使用轻客户端监视 Hub 的状态,但 Hub 不跟踪 Zone 的状态。Zone 必须使用确定性最终算法(目前,所有 Zone 都使用 Tendermint)并实现 IBC 接口,以便能够通过 Hub 向其他链发送消息。
Cosmos 还可以使用“peg zones”与外部链进行交互,这类似于桥接平行链。
共识
这种任务隔离提供了几个好处。首先,它代表了区块生产和最终确认的传输复杂性的降低。
BABE 具有线性复杂度,因此易于扩展到数千个区块生成者,并且网络开销较小。GRANDPA 具有二次复杂度,但会受延迟因素影响而减少复杂度,或者说它每批最终确定多少个区块。
编者注:
这里解释一下,就是说 GRANDPA 在进行投票和确定区块的过程中,需要与其他验证者进行很多次的通信,这样会消耗很多的网络资源和时间。
但是,GRANDPA 可以利用网络延迟的时间来同时处理很多个区块,而不是只处理一个区块,这样就可以提高效率和降低复杂度。
其次,通过能够使用未最终确认的区块扩展链,其他验证者可以执行广泛的可用性和有效性检查,以确保没有无效的状态转换进入最终的链中。
Cosmos(Hub 和 Zone)使用 Tendermint 共识,这是一个提供即时最终性的轮询协议。
区块生成和确认在算法的同一路径上进行,这意味着它每次只能产生和确认一个区块。
因为它是基于 PBFT 的算法(与 GRANDPA 类似),所以具有二次传输复杂度,但每次只能最终确认一个区块。
Staking 机制
在 Polkadot 中,所有验证者在共识协议中具有相同的权重。也就是说,要获得对链的超过 2/3 的支持,必须有超过 2/3 的验证者承诺参与,而不是 2/3 的权益。
同样地,验证者的奖励与它们的活动相关,主要包括区块生产和最终确认,而不是它们的权益数量。
这会激励人们提名权益较低的验证者,因为他们将在抵押通证上获得更高的回报。
Cosmos Hub 使用担保权益证明(BPoS,即 Bonded Proof of Stake,一种委托式权益证明的变体)来选举验证者。
质押者必须绑定资金,并为每个他们想要委托的验证者提交一个委托交易,指明要委托的通证数量。Cosmos Hub 计划支持多达 300 个验证者。
在 Cosmos 中,共识投票和奖励都基于权益。在共识投票的情况下,必须有超过 2/3 的权益承诺参与,而不是 2/3 的验证者。
同样地,质押总权益 10% 的验证者将获得 10% 的奖励。
最后,在 Cosmos 中,如果一个质押者没有在治理公投中投票,那么验证者会代表他们行使投票权。
因此,许多 Cosmos 中的验证者的佣金为零,以获取对协议更多的控制权。
在 Polkadot 中,治理和抵押是完全独立的;提名验证者不会分配任何治理投票权给验证者。
顺序 Phragmén 算法,详情请参见:
https://wiki.polkadot.network/docs/learn-phragmen
消息传递
编者注:
发送证明是指平行链在发送或者接收消息后,会生成一个证明,表明消息已经被正确地处理了。
这个证明可以用来在中继链上验证消息的状态,而不需要传输整个消息的内容。这样可以节省中继链上的空间和带宽,提高系统的效率。
在发生链重组的情况下,可以根据中继链上的发送证明,将消息回滚到重组的时间点。
平行链之间的共享状态意味着消息不受信任范围的限制;它们都在同一个上下文中运行。
Polkadot 还有一个名为 SPREE 的附加协议,为跨链消息提供了共享逻辑。
使用 SPREE 发送的消息,会携带额外的保证,关于消息的来源和接收链的解释。
编者注:
使用 SPREE 发送的消息,不仅可以证明它是从哪个区块链发出的,而且可以保证它在另一个区块链上被正确地执行和理解。
这样就可以增加消息的可靠性和互操作性。
Cosmos 使用称为 Inter-Blockchain Communication(IBC)的跨链协议。Cosmos当前的实现使用Hub在Zone之间传递通证。
但是,Cosmos 确实有一个用于传递任意数据的新规范。然而,由于链不共享状态,因此接收链必须信任消息来源的安全性。
治理
编者注:
Polkadot 使用了一种叫做自适应法定人数偏差的方法,它可以根据参与率的高低来调整通过门槛的高低。
参与率是指参与投票的持币者占总持币者的比例。通过门槛是指赞成票占总票数的比例。
自适应法定人数偏差的原理是,当参与率越低时,通过门槛就越高,也就是说需要更多的赞成票才能通过提案;当参与率越高时,通过门槛就越低,也就是说需要更少的赞成票就能通过提案。
这样做的目的是,避免少数人在参与率低时就能轻易地通过提案,也避免多数人在参与率高时就能轻易地否决提案。这样可以保证公投的公平性和合理性。
Polkadot 有几个链上的、无许可机构。主要的一个是议会,由一组按 Phragmén 方式选举的账户组成。
议会代表少数利益,因此,如果议会一致同意某个提案,该提案在公开公投中的通过门槛较低。
还有一个技术委员会用于制定技术建议(例如紧急的 Runtime 升级以修复漏洞)。
Cosmos 使用通证投票方式来通过公投。实际执行治理决策是通过协议分叉进行的,就像其他区块链一样。
所有通证质押者都可以投票,但是,如果委托人放弃投票,则他们委托的验证者将承担他们的投票权。
在 Polkadot 中,验证人不会根据他们的提名者获得任何投票权。
Polkadot 多元的治理系统,详情请参见:
https://wiki.polkadot.network/docs/learn-governance
升级
由于 Cosmos 不是基于元协议的,它必须通过正常的分叉机制来实施升级和提案。
发展框架
Cosmos 链可以使用 Go 编写的 Cosmos SDK 进行开发。
Cosmos SDK 包含约 10 个模块(例如 Staking、治理等),可以包含在链的 STF 中。SDK 建立在 Tendermint 之上。
平行链的主要开发框架是由 Rust 编写的 Substrate。
Substrate 带有 FRAME(框架),大约包含 40 个模块(称为“Pallet 托盘”),可用于链的 STF。
除了简单地使用 Pallet 外,Substrate 还添加了进一步的抽象层,允许开发人员通过添加自定义模块并为链配置参数和初始存储值来组合 FRAME 中的 Pallet。
注意:
Polkadot 可以支持用任何语言编写的 STF。
只要它编译成它的元协议 Wasm。同样,它仍然可以使用 Substrate 客户端(数据库、RPC、网络等);它只需要在接口上实现原语(primitives)。
编者注:
原语(primitive)是指一些基本的、不可分割的操作或数据类型,它们是构建更复杂的功能或结构的基础。
在 Substrate 中,原语包括了一些核心组件,如区块、交易、状态、共识等。
结论
Cosmos 网络使用 bridge-hub 模型来连接具有独立安全保障的链,这意味着当数据从一个链发送到另一个链(链间通信)时,接收链必须信任发送链。
因此,Cosmos 网络中的每个区块链都有其独立的安全机制。它们是独立保护的,不依赖于其他区块链或 Hub 的安全性。
欢迎大家加入我们 Polkadot 生态研究院的电报:
https://t.me/polkadot_eri

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
