软硬核:彻底读懂 Cosmos 如何一键发链与万链互联
摘要: 从 Cosmos 最小的细胞结构讲起,直到讲清楚它是如何以这一结构为基础实现庞大的宇宙图景。而「cosmos」这个单词的本意正好是「宇宙」的意思。
我们只能自造「软硬核」这个词汇来描述这篇文章的特点:首先,这是一篇实打实的关于 Cosmos 硬核技术的全面解读;但是,它却把极「硬」的技术和理论,用易懂的语言深入浅出地进行了拆解,化「硬核」于柔掌之中,保证你充分理解。
Cosmos 主网上线会是区块链世界的一件大事,关于其意义,可以参考著名区块链投资机构 1confirmation 创始人 Nick Tomaino 撰写的文章:「Cosmos 的前世今生、未来前景和投资价值」。
今天推送的这篇文章,用作者的原话则是:从 Cosmos 最小的细胞结构讲起,直到讲清楚它是如何以这一结构为基础实现庞大的宇宙图景。而「cosmos」这个单词的本意正好是「宇宙」的意思。
撰文:李画
致谢:IRISnet 创始人 & Cosmos 中国 Harriet Cao
跨链是区块链正确的发展方向吗?万链互连是区块链未来的落地图景吗?不知道。人们都在观望。
不过,最少有两个标本可供观察:Cosmos 与 PolkaDot。
Cosmos 在 3 月 14 日的早 7:00 启动主网,它是以伯克利的 Tendermint 团队为核心团队开发的跨链项目,要实现两件事情:第一件,是让公链开发变得简单;第二件,是让所有的链能够连接起来。
它是如何完成这两件事情的?以这两件事情的实现为基础,Cosmos 希望构建出怎样的区块链世界?它的跨链生态目前的进展如何?本文将逐一解答这些问题。
Cosmos 的工作原理
让我们通过分析和拆解公链的结构,来清楚地理解 Cosmos 是如何把复杂的公链开发变成一件容易完成的事情。
一条公链从底层至上层可以粗略地被分为三个部分 如下图所示:
-
网络层:底层的数据结构和通信协议的设计。
-
共识层:共识机制的设计。
-
应用层:具体业务逻辑的设计。
一部分公链的设计目的是为了对公链这种基础设施本身做出改进,比如以太坊、Nervos、Conflux 等等,它们是需要在网络层、共识层、应用层上都进行思考和建设的。
但其他绝大多数的公链是为了解决具体的应用需求而存在的,它们是要解决自己的业务问题,而不是解决公链的问题。也就是说,它们实际上不用关心网络层和共识层,只需要设计为自身业务逻辑服务的应用层即可。
基于这一思路,Cosmos 把网络层和共识层设计好并封装起来,提供给公链开发者使用,在这种情况下开发者就只用考虑应用层。
被封装起来的网络层和共识层叫「tendermint core」,应用层调用 tendermint core 的接口叫「ABCI Application Blockchain Interface」。通过 ABCI 接口,应用层与共识层、网络层组成一个可以协同工作的完整的公链系统。整个系统,可以用下图展示:
到这一步,Cosmos 把开发一条公链的工作减少为设计一个应用层的工作。但 Cosmos 并没有就此打住,它继续「切分」应用层。
应用层需要实现一系列的功能来完成最终的业务逻辑,不过这些功能中有很多是可以通用的,比如账户管理的功能,Cosmos 把这些功能分解出来,再以模块化的方式加以实现。
这样一来,开发者在进行应用层开发时,只需要实现自身业务逻辑中特殊的功能,其他的功能都可以直接调用 Cosmos 的功能模块。
如下图所示,Accounts、Governance、Staking、Slashing 等均是功能模块,能够以「插拔」的方式被组合到一起使用。
Cosmos 把自己提供的这一模块化开发工具叫做「Cosmos SDK」,它覆盖了应用层需要实现的大部分的功能,到这一步,Cosmos 把设计一个应用层的工作减少为实现少数具体的功能模块的工作。
最终,如下图所示,通过对公链的分层设计以及对应用层的分模块设计,开发者能够以 tendermint 共识引擎和 Cosmos SDK 开发工具为基础,快速地完成公链的开发。他们不再需要设计整条公链,而只需要实现核心的业务功能。
正因为这样,币安可以在较短的时间内迅速基于 Cosmos 的开发工具和共识引擎,开发完成应用方向非常聚焦的「Binance Chain」,并基于 Binance Chain,开发出币安去中心化交易所。
Binance Chain 和币安去中心交易所的具体运行状况,将会成为检验 Cosmos 公链开发体系的重要案例。
Cosmos 的跨链实现
理解 Cosmos 跨链,最关键的是了解 IBC Inter-Blockchain Communication,即 Cosmos 的跨链通信协议。
IBC 定义了链与链之间的通信标准,或者说它定义了一种跨链结构,具有相同结构的链就可以实现互相连通,它允许区块链读取和验证同结构的其他链上的事件。
利用 Cosmos SDK 开发的公链天然具备这一跨链结构,它们之间从创立之初就可以通过 IBC 实现链链交互。
那些不是使用 Cosmos SDK 开发,未包含 IBC 跨链标准的链怎么连通?方法是使用 Cosmos SDK 为原链开发一条「代理链」。
这条代理链既遵守原链的通信标准,可以与原链连通;又采用 IBC 标准,可以与其他 Cosmos SDK 开发的链连通,从而间接实现了原链与 Cosmos 链的跨链。如下图所示,右上角的 Ethermint 即是以太坊的一条代理链,通过它可以实现以太坊与 Cosmos 链的连接。
Cosmos 跨链实现中的另一个重要角色是「Hub」,它承担的是中间枢纽的角色。
以上图为例,图中最左侧和最右侧的 4 条公链在没有 Hub 的情况下要实现连接,就必须在彼此之间新建一条通道,但如果有了 Hub,它们都只需要与 Hub 连接,由 Hub 实现跨链的中转。
Hub 本身也是一条公链,使用 Cosmos SDK 开发,具备 tendermint 结构;Hub 连接的公链以及公链的代理链被称作「Zone」,所有的 Zone 都需要实现 IBC 通信标准。
最终,如下图所示,以 IBC 通信标准为跨链的基础结构,以 Hub 为跨链的中间枢纽,Cosmos 实现了链与链的互联。
Cosmos 主网,让跨链生态从理论阶段进入实现阶段
Cosmos 主网是指由 Cosmos 团队自己开发的第一个官方版 Hub,也就是不同链进行跨链操作时的第一个中央枢纽。随着该主网的上线,Cosmos 的跨链生态将从理论阶段进入到实现阶段。
首先介绍大家最为关注的,Cosmos 与其他非 Cosmos SDK 开发的公链的连接。
以太坊将是 Cosmos 最先连接的公链,目前有两个项目去实现这种连接: Cosmos 开发团队主导的 Ethermint 项目,以及由 Loom Network 主导的 PlasmaChain。
Ethermint 是一个单独的 Zone,基于 Tendermint ,并且完全兼容以太坊的 web3 接口和 RPC 调用方法,其跨链实现是:以太坊连接 Ethermint Zone,Ethermint 连接 Cosmos Hub,Cosmos Hub 连接其他遵守 IBC 通信标准的 Zone/链。通过这种连通关系,最终实现以太的跨链转移。
目前 Ethermint 仍在开发中,已经完成了 web3 兼容 API 层的部分开发。
PlasmaChain 则是以 Zone 和 Hub 的双重身份出现,它是以太坊的 DPoS 侧链。
作为 Zone,PlasmaChain 一边连接以太坊主链,一边连接 Cosmos Hub,实现以太的跨链转移;作为 Hub,PlasmaChain 可以连接起以太坊的其他侧链,作为这些侧链间代币转移的中间枢纽。PlasmaChain 将在 Cosmos 主网启动后完成与 Cosmos Hub 的连通。
接下来,介绍基于 Tendermint 和 Cosmos SDK 展开的,因而天然实现了链与链互联的 Cosmos 跨链生态。该生态目前已经包含了 100 多个项目。
最被大家熟知的应该是 IRISnet,它由中国的边界智能团队开发,是目前 Cosmos 网络中除 Cosmos Hub 外的最重要的一个 Hub。
IRISnet 对 Cosmos SDK 和 IBC 进行了扩展,用以支持公链、联盟链以及传统商业系统之间的集成,使得数据和复杂计算能够跨异构网络互联互通,实现服务的跨链调用 本文将在下一小节详细介绍 Hub 的这种扩展性及其意义。
IRISnet 在 3 月 1 日启动了主网,目前已有 81 个节点成为网络共识的验证人,当 Cosmos 主网正式启动后,Cosmos Hub 和 IRISnet Hub 将完成跨链生态中的双 Hub 链接。
基于 Cosmos 的另一个著名项目则是上文提到过的 Binance Chain。
Binance Chain 是 Cosmos 上的第一个去中心化交易所平台,不过它对标准 Cosmos SDK 进行了缩减,比如去掉对智能合约的支持部分,用以更简单、高效地实现其作为交易所的功能。
在目前发布的第一版中,Binance Chain 只是作为去中心化的交易平台来运行,并没有开通与其他链的跨链连接和链间操作。币安表示也许要到第二版或第三版才会添加这种功能。
其他的具体项目不再一一介绍,总而言之,基于 Tendermint 和 Cosmos SDK 开发的项目,可以是 Zone,也可以是 Hub,它们都遵守 IBC 跨链通信协议,可以轻松实现彼此地互联。
通过 https://cosmos.network/ecosystem 能够查看到这些项目的信息,这其中包括 IOV,它是基于 Cosmos 的第一个分布式区块链 DNS;包括 Kava,它是基于 Cosmos 的第一个跨链钱包协议提供者。
随着 Cosmos 主网的上线,包括 IRISnet 在内的主 Hub 的上线,以及类似于 PlasmaChain 的、用以实现与不具备 IBC 跨链结构的公链连接的项目的实现,还有本来就基于 Cosmos SDK 开发的项目的上线,Cosmos 将一步步地连接起更多的链,不断扩张其跨链生态。
Hub 的潜力
本文的最后一个主题是探讨 Hub 的潜力,它在 Cosmos 生态中扮演着重要角色。
试想,有了 Tendermint 和 Cosmos SDK,公链的开发从设计实现一整条公链变成设计实现多个只与自身业务逻辑相关的功能模块,那么,开发公链的工作还可以被进一步减少吗?
有了 IBC,不同的链在基于相同的跨链结构下完成了连通,从而实现了代币的跨链转移,那么,链链互联还可以完成除了流通代币外的更多的任务吗?
答案是可以,通过「定制」Hub。
Hub 既可以是类似于 Cosmos Hub 的通用 Hub,也可以是针对具体应用场景或特定业务需求而开发的专业 Hub。
这类专业 Hub 可以扩展 Cosmos SDK 的功能模块,也可以扩展 IBC 的数据接口,这样一来,当开发者进行这一具体应用场景下的公链开发时,便可以直接使用该 Hub 扩展后的 Cosmos SDK 以及 IBC 通信标准。
到这一步,公链的开发就只需要实现极少的特殊功能模块,而通过该专业 Hub 连接起来的具有相同 IBC 通信标准的链,可以完成除代币转移外的、基于更丰富接口实现的更多功能的连接。
上文已经提到的 IRISnet 就是一个典型的例子。
IRISnet 是 Cosmos 在中国的技术和运营合作伙伴边界智能作为核心开发团队,与 Tendermint 研发团队合作打造的一个 Hub,其目标是成为链接数字经济和实体经济的可信「桥梁」,为构建复杂的分布式商业应用提供满足这种特定需求的公链基础设施。
IRISnet 对 Cosmos SDK 和 IBC 协议进行了扩展,采用面向服务的设计思想,开发了新的区块链跨链服务的基础设施和跨链协议,并提供 IRIS SDK 开发工具和名为「iService」的服务框架。
iService 服务框架定义了一整套商业应用逻辑,或者说标准,提供了服务从定义、发布、调用、治理 分析和争端解决 的全生命周期的管理。因此,只要采用 iService 服务框架,不仅能够实现通证的跨链转移,也能实现包括数据、复杂计算在内的跨链网络调用。
换句话说,这意味着专有链开发者能够以 IRIS SDK 为基础,快速开发公链或联盟链或应用专有链,以 iService 为标准发布服务,并通过 IRIS Hub 实现与其他链的跨链互联,从而实现基于区块链的分布式商业应用。
就像有多个项目基于 Cosmos Hub 开发一样,作为主 Hub,目前也有众多项目基于 IRISnet 展开,实现自身的分布式商业应用的需求。
区块链智能信息边缘分析网络「BEAN」是其中之一,它是一个分布式的大数据分析和交换网络,解决了医疗大数据应用场景中处方外配、隐私保护下的医疗数据的可信使用和多方可信交互等问题。同时,IRISnet 也与复星、Hashkey、PlatON 等达成合作,实践分布式商业应用链的落地。
不难发现,通过 Hub,Cosmos 让自己具备了真正的可扩展性,在链的功能上以及跨链的实现上。随着更多聚焦于不同主题的 Hub 的开发和上线,Cosmos 将成长为一个包容的、强大的生态。
如何用 30 秒说清楚 Cosmos 是什么?
讲了这么多,如果只用 30 秒钟,如何说明 Cosmos 是什么,以及它是如何实现一键发链与万链互联的?很简单:
-
通过 tendermint 共识引擎和 Cosmos SDK,实现公链的简单、快速开发。
-
通过 IBC 跨链通信协议,实现相同结构下的链与链之间的可通信、可互连。
-
通过 Hub,连接起不同的 Zone 与 Hub,实现 Cosmos 整体的跨链生态。
-
通过定制的 Hub,进一步简化开发工作和满足特定领域的开发需求,并实现除代币跨链外的更多跨链的可能。
这就是 Cosmos。
参考资料及数据来源:
1.《Blockchain Interoperability: Cosmos vs. Polkadot》,Dave Kajpust
2.《对话 Cosmos:未来是所有人都用一条公链,还是每个人都有自己的链?》,李阳
3.《Beginner’s Guide to Cosmos: The Tendermint-Based Blockchain Ecosystem》,Brian Curran
4. 基于 Cosmos SDK 的项目信息,https://cosmos.network/ecosystem
评论(0)
Oh! no
您是否确认要删除该条评论吗?