在第一部分中,我们从开发一条单独的区块链以及区块链应用程序的视角介绍了 Cosmos 。但如前所述,Cosmos 最关建的特性之一是互操作性,即赋能多种区块链之间的交互。为了更好地理解这一特性的运作原理,我们首先需要了解 Cosmos 中用于支撑其互操作性的基础架构:“ Hub 以及 Zone ”。
Hub 和 Zone
Cosmos 网络中的区块链应用了一种中心辐射模型:位于中心的是 Hub(“中心枢纽”)。Hub 管理着许多被称为 “Zone” 的独立区块链(下文 “ Zone ” 指代区块链),由 Hub 来追踪记录各个 Zone 的状态,而每一个 Zone 有义务不停地把自身产出的新区块反向汇报给 Hub 。类似地,每一个 Zone 也需要同步 Hub 的状态。
但这里有个棘手的问题—— Zone 之间并不直接同步各自的状态,而是通过发向 Hub 的数据包间接通信。要想弄清楚这一流程,我们首先需要调研其背后的支撑机制:跨链通信(IBC)。
IBC 是如何工作的
Hub 与 Zone 直接通信,而 Zone 与 Zone 之间通过 IBC 间接通信。当 Zone 对 Hub 建立起一个 IBC 连接,它可以自动访问其他连接到该 Hub 上的 Zone ,这意味着 Zone 无需与其他 Zone 连接,而仅仅连接到 Hub 上即可。通过保持各种跨 Zone 代币的固定总额,Hub 可以预防双重支付问题(Double Spend)。这些代币可以通过一种被称为“币包” 的特殊 IBC 数据包而实现 Zone 之间的跨链转移。
当一个 Zone 通过 Hub 收到来自其他 Zone 的代币时,它只需要信任 Hub 以及代币来源的 Zone,而不需要信任网络中所有其它的 Zone 。
让我们看个例子:
假设当前由两条区块链:Zone 1 以及 Zone 2 。现在如果我们想要从 Zone 1 上发送代币到 Zone 2 ,会发生什么呢?
要让数据包从 Zone 1 发送到 Zone 2 ,Zone 1 首先要向 Hub 发送一个指向 Zone 2 的数据包。
紧接着 Hub 向 Zone 2 发送一则证明,表示 Zone 1 向其发布了一个数据包。
在此之后,Zone 2 必须验证关于 Zone 1 的证明是否真实。为此,Zone 2 要利用 Zone 1 存储在 Hub 中的区块头。我们前面提到过 Hub 帮助 Zone 同步记录其它每一个 Zone 的状态,而 Hub 是通过记录其它 Zone 的区块头实现这一功能的。
现在你可能会疑问:为什么 Cosmos 不直接利用 IBC 建立 Zone 与 Zone 之间的连接?为什么需要进行 Hub 和 Zone 的设计?事实上,随着接入到网络中 Zone 的数量上升,以直连方式实现通信会导致链路数量呈平方级上升。以 100 个 Zone 接入到网络中为例,如果各个 Zone 直接都要建立起 IBC 连接,则网络中需要有 4950 条通信链路!如此快速的增长显然会令网络不堪重负。
采用“ Hub 与 Zone ”模型令 Cosmos 能够无视 Zone 的数量而实现跨链通信,并支持网络的不断拓展。
Cosmos 网络的正常运转离不开 IBC ,正是因为它才能让多条承载着不同应用和验证者集的独立区块链(即 Zone )实现互操作。
创世 “Hub”: Cosmos Hub
如前所述,Hub 是连接不同 Zone 的组件,而 Cosmos Hub 正是 Cosmos 网络中第一个 Hub ,它通过 IBC 连接其它的 Zone 。Cosmos 网络上构建的第一个区块链(或者说 Zone )会应用该主 Hub 来与网络中其他的 Zone 进行交互。这就意味着 Cosmos Hub 必须具备足够高的安全性(即许多验证者)来保证使用它的 Zone 能安全地进行互操作。桥接非 Tendermint 共识的区块链
目前为止,我们探讨了基于 Tendermint 共识的区块链(即 Zone )是如何利用 IBC 和 Hub 进行交互的。然而 Cosmos 并不局限于 Tendermint 共识链的跨链操作。我将在下文粗略解释 Cosmos 如何兼容其它不同共识算法的区块链。
一般来说,区块链可以分成两种类型:不可逆链和概率链。
不可逆链(Determinmistic chain)指的是每个区块的状态都是确定的(finalized),在未来的任意时刻你都可以从创始块开始复现推演每个区块的状态(例如基于 Tendermint 共识的区块链);概率链(Probabilistic chain)是指你只能根据区块链网络参与者在不同分叉链上的比例,而以一定概率认为某条链是主链(例如比特币)。Cosmos 中的 Hub 理论上可以接入上述两者,只不过对于概率链的支持在实践中要相对麻烦一些。
这是因为从底层设计来讲,IBC 发挥作用的前提在于区块链的不可逆。如果区块链是概率链,Hub 就不能保证跨 Zone 的代币总额固定。如前所述,Hub 如果想要实现无双重支付的跨 Zone 代币转移,就必须保证在 Zone 与 Zone 之间某一代币的总额是固定的。
Cosoms 试图通过 “Peg Zone” 来实现概率链的互操作性。
Peg Zone 是追踪记录另一条区块链状态的区块链,它要将自己桥接的某条概率链上的状态确定为不可逆的,使得这些状态得以与 IBC 兼容。
还跟得上吗,少年?现在我只剩下最后一个(同时也是最重要的)问题要跟你探讨:区块链究竟为什么需要要互操作性?
为什么互操作性如此重要?
众所周知,区块链是不可逆账本。然而和其他软件一样,随着时间推移,用于构建区块链的软件也需要进行迭代和升级。一蹴而就、无懈可击的软件简直是天方夜谭,所以软件的改动不可避免。“治理”问题就是讨论如何对区块链底层软件的改动进行提案、决议以及应用。以比特币为例,由比特币基金会、比特币核心开发者、矿工以及用户来发起底层改动的提案,并以协作的方式实现升级。而以太坊则依靠开发者和用户社区的群策群力来做出此类决议。
Cosmos 的做法与上述两者大相径庭。不同于常见的、统摄全网的治理机制,Cosmos 允许每个 Hub 构建自己的治理策略。
任何持币人都可以发起变更提案,由该 Zone 或 Hub 的验证者和持币委托人对提案进行投票。提案的内容包括但不限于对系统预置参数的变更(例如区块 gas 上限)、软件更新,甚至是 hub 在处理窃币、入侵或漏洞时所采取的政策性升级。
同样每个 Zone 也具备各自的治理机制。
举例而言,Cosmos 支持在 Hub 端强制应用不可逆性的同时,每一个 Zone 都可以根据自身需要设置是否不可逆。想要了解更多,可以阅读这篇文章《 Cosmos 中的 Hub 治理机制流程》。
在我看来这种设计十分强大,同时也被大大低估了。如果非要从本篇博文中提取出什么核心论点的话,也就是下面这一段话了:
Cosmos 在底层设计上不认为能通过有限的规则治理大千世界中形形色色的经济网络,不认为存在特定的一个规则集合让大家都称心如意。这一道理不言自明,看看比特币自运行以来由于哲学和政治分歧引起的众多分叉。另一方面,从以太坊的治理中我们可以看出,持币人无法以规范的形式实现治理或是形成合力拒绝不规范的治理,这对生态的发展起到了副作用,阻碍了以太坊的更新升级。
Cosmos 试图通过独立区块链之间的互操作性解决这一问题,即使并且尤其这些区块链拥有不同的治理政策。因此 Cosmos 最核心的价值属性就是在社会和经济领域的可拓展性。它为其生态之上的用户和开发者提供了无限的自由,以及不加约束的实验潜能。
感谢你陪我讨论了一路 Cosmos(网络)!
难以置信你听我叨叨了这么多,佩服!本文就到此为止了,期待在下一篇文章与你相遇!?
发表于 2019 年 6 月 6 日
链接为上篇:Cosmos 区块链的工作原理,Part-1:比较 Cosmos 与比特币、以太坊
原文链接:
https://ethfans.org/posts/how-does-cosmos-work-part2
作者: Preethi Kasireddy
翻译&校对: 安仔 Clint & 阿剑
本文由作者授权 EthFans 翻译及再出版。
(本文来源于以太坊爱好者 EthFans,未经作者许可严禁转载,违者法律必究)