详解CosmWasm: 兼具Cosmos SDK 和IBC的跨链智能合约引擎

总览

CosmWasm  是兼具Cosmos SDK和IBC的一个智能合约引擎,它是目前除了EVM之外唯一具有跨平台互操作性的平台,如果说EVM是一台Mainfraime大型机器,那么CosmWasm VM可以理解为通过IBC协议连接的可以相互通信的机群。和Tendermint, SDK, IBC等类似CosmWasm是Cosmos 技术堆栈中的核心组件,任何基于Cosmos SDK开发的链都可以在不改变其代码逻辑的情况下接入CosmWasm。目前支持Rust语言,Goland和vlang语言正在开发。CosmWasm可以理解为开发者无需开发自主链的情况下,搭建安全和可组合性的跨链应用的跨链框架,相比于Cosmos SDK, 迭代速度更快,更为安全。目前我们看到接入CosmWasm的项目在过去六个月内逐步增长,目前总共接入项目的价值在40-50亿美金。Terra曾一度是CosmWasm最大的受益者,Cosmos生态排名第一的TVL,但其最近的毁灭性事件,让越来越多的Terra开发者开始选择加入CosmWasm,和Cosmos 其他项目,为生态带来了一定存量价值。

既然上文提到CosmWam是Cosmos中重要的核心模块,那么什么是模块?模块可以包含特定应用的商业逻辑,每个模块针对于他们特定的应用都是独特的,每个应用也都有自己的商业逻辑。对于不同的模块,比如CosmWasm,比如治理模块等,针对不同的应用,那么这些模块如何组合呢?主要通过原生的Cosmos SDK连接,任何应用都可以在其上搭建自己的应用链,而且也可以自主选择这些模块。同时,这些模块对于所有Cosmos的项目都可用的,任何Cosmos SDK链都可以选择接入CosmWasm进一步提高链的特性。所以在Cosmos 生态中,每条链都可以选择适合自己的模块,并且通过增加新的模块,不停迭代开发,相比于单片链的设计,这种模块化设计简化了堆栈的设计,开发者可以从不同模块中选择可组合性。

Cosmwasm的特性

by Jake Kennis from Nansen Alpha
by Jake Kennis from Nansen Alpha

这里的核心特征强调了CosmWasm进一步加强了IBC的作用,在CosmWasm下,IBC迭代速度更快,更为灵活且动态。上文提到,所有生态新的功能都以Cosmos SDK模块化的形式呈现给开发者的,而大部分这些模块都是由Cosmos SDK贡献者或者其他Cosmos核心贡献者创建和维护的。所以目前Interchain GmbH 的团队负责审核,测试,集成这些所有模块,并于之后负责Gaia代码库的更新发布以及与节点沟通相应的网络更新。而软件发布和更新需要上线和运行公共测试网,需要使用来自Cosmos Hub的验证器集和模仿实时Cosmos Hub的链状态来模拟升级提案。最后,Cosmos Hub的验证者还需要为升级做准备,并且在合适的高度更新节点或者配置Cosmovisor,实现自动升级。为了让升级 Cosmos SDK 模块更容易,Stargate 做了很多工作,但仍然很困难,当Zone接入越来越多的链时,这个沟通成本将越来越高,因而给IBC的扩展带来了很大的瓶颈。而 CosmWasm 内置了一个许可的、每个合约的迁移功能。这可以逐个逐个地将合约迁移到新的代码库,并在此过程中运行迁移功能,进行任何所需的数据转换。完全无需链间的协调和沟通。

因此,如果是EVM是传统VM, Solana 中的虚拟机是为了实现垂直扩展,那么CosmWasm的出现解决了跨链水平可扩展性的问题,因此其在跨链虚拟机中占据了非常重要的位置,并且进一步强化了IBC的功能,特别是在稍后跨链账户,跨链安全这两个功能上线后,我们可以看到会有越来越多的项目接入CosmWasm。

vs EVM,Cosmos SDK?

by Ethan Fray of Confio
by Ethan Fray of Confio

和其他虚拟机相比,CosmWasm 有什么特性呢?首先是安全,CosmWasm 认为以太坊的安全合约问题是由于其内部的设计,而其设计可以解决大部分Solidity中的攻击,比如重入攻击等,同时他们提供了很好的合约迁移的开发者体验,而非”图书馆合约“; 同时以太坊的合约存在很多的商业逻辑问题,例如Compound 就因为利用If条件中的 < 而非 <= 损失了9000万美金,而CosmWasm 可以通过各种测试,包括单元测试,集成测试以及全栈测试,可以减少这类型风险的产生;性能和成本问题,以太坊的高燃料费用主要是用于其区块/燃料的限制,只能交易30笔/秒, 而CosmWasm 则更类似于ETH2.0愿景;当然还包括可迁移性和可组合性,比如在你使用CosmWasm一段时间后,你需要去开发自己的应用链,那么你可以上线新的CosmWasm Zone, 并且在新的多链上进行迭代,用户可以保持与原先链关联的状态下,可以选择到新链上。

而相较于Cosmos SDK, 有什么特性呢? 对于一些在共识机制上的创新项目(例如取代dPOS),或者费用机制,集成GPU计算引擎,这类型的项目的确需要Cosmos SDK(Go 语言),但是大部分的项目,通过Cosmwasm就可以实现。在跨链安全即将上线之后,我们将看到越来越多的项目将以合约消费链的形式通过CosmWasm,享有Cosmos Hub的全部安全性,接入到IBC和Cosmos生态,而合约消费链无需运营自己的验证节点集合,因为Cosmos Hub的节点将会帮助验证。当然之后你可以随时迁移到其他链,或者发布自己的应用链;可组合型也是一方面,我们上文提到,Cosmos SDK是模块的核心,但是模块间是如何实现集成的呢?如果一个项目3,4个模块间可以通讯,那么多条链,多个模块如何实现交互呢?这个就需要跨链账户和CosmWasm的介入。当然还有上文提到的软件更新迭代等问题,这里就不详细阐明了。

我们的确看到了CosmWasm的很多优势,但是仍然有很多不确定性

1) EVM 目前占据了大量的市场份额,包括以太坊和其他EVM 链,Cosmos中的Evmos中的EVM,以及Agoric中的Javascript,等其他虚拟机,所以如何搭建自己的生态和开发者社区,制定战略方向和相应营销策略和战略方向显得尤为重要;

2)目前没有经过大量的实战考验,并且需要进行相应技术更新,比如目前节点仅支持Intel 和AMD64芯片,而对于ARM64(新苹果电脑M1)这种开发者常用的电脑,目前仅建议只读,并未经过大规模认证,并不适合参与节点认证出块,所以像Osmosis这样选择接入的应用链的节点,需要更新CPU;

3)门槛较高,Rust语言相比EVM的Solidity有几大特性:内存安全,业务逻辑以外的系统bug比较少,保证内存安全,编译阶段都能识别内存不安全的错误;高并发性,编译Assembly与硬件直接交互,性能比较高;但开发门槛较高,审计代码门槛也高,学习曲线和难度相较于Solidity都非常高;

4)目前Cosmwasm的开发文档还比较少,需要完善;另外相关的工具也不完善,需要开发更好的工具;

所以CosmWasm 将着重于以下三方面的发展,其中包括1)更好的开发者onboarding 体验,CosmWasm Academy 致力于帮助培训CosmWasm的开发者;2)更好的开发工具,其中包括“ng-合约”开发框架简化Rust开发,提供更好的可组合性;CosmWasmJS (前端语言),类似于Solidity Web3. JS 降低开发者门槛;部署合约的演示脚本;在JS中容易测试合约;自动转换Type Script API 的工具;本地虚拟机测试;开发第三方CosmWasm IDE(接口),类似于Solidity的Remix;开发合约认证服务,减小审计难度等;3) 跨链合约开发,这里包括将IBC开发引入到更多的应用开发者生态,为Osmosis/Juno 创建IBC 兑换协议;IBC合约开发文档化; 提升TypeScript中集成测试的ts-中继器;和Interchain GmbH合作人才培训等。

Proposal 69解读

之前Cosmos 社区针对是否将CosmWasm添加至Cosmos Hub的问题,提交了相应提案,社区产生了非常大的分歧。虽然提案最终是被拒了,但我们可以一起再回顾一下这之间产生的核心观点。对于提案的支持者认为,其大大降低向Cosmos Hub提交代码和功能的门槛,目前很多的功能需要通过SDK 模块的形式提交,而这些不同模块是给到不同Cosmos核心贡献者维护的。而一旦这些模块,或者共识,或者其他发生变化/更新/上线,Cosmos Hub团队需要和核心验证节点沟通,Cosmos Hub 的所有验证者都需要为升级做准备,并采取措施在合适的高度更新他们的节点或配置 Cosmovisor 以自动运行升级过程,这需要大量的沟通成本,时间成本。而当Cosmwasm通过治理的方式接入的时候,可以确保任何人可以通过智能合约接入Cosmos Hub的同时,也不会出现恶意代码的攻击,同时也减少了Cosmos Hub与其他团队之间冗余的沟通 ,除了投票所需的时间;同时,可以看到越来越多关于DAPP的设计和应用,包括CW20, CW721, DAODAO 等, 一些简单的功能(比如分润, 交易等),可以通过Cosmos SDK Golang的模块添加,而无需进行全部升级,这个让Hub可添加的功能类型更加多元化。

当然缺点也存在,包括Cosmwasm兼容性的高维护成本,为了和最新Cosmos v0.46版本兼容,Cosmwasm的版本也需要迭代,而这个版本也同意由Lido和P2P(Cosmos的节点和核心贡献者)更新和维护,而长期来讲,Cosmwasm是由Confio(Interchain Foundation 资助的)维护的 ,而我们也看到Cosmwasm并不能在Windows 运行,在ARM上也是实验性支持,而Cosmos Gaia Binary主要的下载是通过AMD的 linux和Darwin。但是具体的影响还需要和节点相关者确认。

但为什么以Jae, Peng为代表的Cosmos创始团队开始反对这个提案,甚至开始贿赂(取消相关空投)社区呢? 他是真正的Hub Minimalist, 他希望Cosmos Hub能够只专注负责生产区块,而其他的事务都外包给其他链,例如Juno, Osmosis等。而Peng也公开表示,他们比较保守,希望通过安全,稳定的Hub来吸引用户,同时确保其他链的安全。

而部署Cosmwasm的行为他们认为会与Cosmos Hub 的初衷相违背,Jae 表现出非常痛恨这个提议,并且准备将Interchain foundation 剔除其新项目Gnoland的空投,而Interchain Foundation的主席正是他的合伙人Ethan Buchman。当然支持者还包括Cosmos核心开发者 Jack Zampolin 和Zaki Manian等。

截至目前,除了Lido以外,并没有明确的应用将部署在Cosmos Hub上的Cosmwasm.这让反对者更加坚信这是资本和政治的利益间的博弈。Lido感觉更像是像利用了Cosmos的潜在流动性(就像利用ETH 一样,目前占据了以太坊2.0 Staking 28%的市场份额,市值也高达ETH的3%),通过CosmWasm, Lido无需在Cosmos上搭建自己的Layer1, 而可以轻松部署,安全,互操作性协议,所以Lido 以及背后的资本Paradigm 支持Cosmwasm的接入,主要从资本市场利益和ATOM未来的价值捕获方面考虑。而其竞争对手QuickSilver虽然也是做Liquid Staking领域的解决方案,但是采取了不同的方法,选择在Cosmos SDK上搭建自己特定应用链,前期会先通过定制化消费链的形式接入Quicksilver 认为,Staking 衍生品的成功之路是允许用户在用衍生品时选择自己的验证人,并允许用户继续用质押衍生品进行投票。Lido 采取的方法则认为用户不想知道这些细节,委托给这些协议,而他们只想要衍生品。所以它们是两种不同的产品,具有不同的附加值。

而很多项目如果希望实现流动性质押(Osmosis 认为Interfluid 质押会颠覆流动性质押), 或者跨链账户等功能,可以通过外部接入Cosmwasm 的形式(Proposal107),例如Osmosis 就决定外部接入Cosmwasm,而未必需要通过Cosmos Hub。这允许在其之上构建 DeFi 创新。将 CosmWasm 添加到 Osmosis 并将其与现有的原生模块(AMM 和超级流动性质押 Superfluid 质押)结合,可以显著提高,扩展 Osmosis 上可用的功能。但是计划是添加“许可的” CosmWasm,必须进行治理投票以启用将任何新代码部署到链上。当然Cosmwasm允许快速添加许多实用程序和DeFi 协议的功能和可能更快的开发等功能。当然像Juno, Archway, Stargaze等头部项目也都在使用,足见其优势。

CosmWasm on Osmosis

将 CosmWasm 添加到 Osmosis 并将其与现有的原生模块相结合,会大大提高其核心功能的价值,当然和Juno Network无需许可的添加方式不同,Osmosis上的Cosmwasm是许可的,任何部署到链上的新合约都需要通过治理投票通过后才能启用,并且相比于Osmosis Go binary,其可以实现的并行开发要多的多。同时在实现并行开发的同时,CosmWasm合约也相对安全,你可以将他们理解为相互作用的沙盒(减少了影响其他模块的安全问题),同时带有严格的接口,不会受其他组件(比如AMM更新,Cosmos SDK新版本)等的影响。这使得Osmosis可以和多个开发团队合作,在不影响现有功能的情况下拓展相关应用。开发团队的扩展也带来了更高的效率,尤其是在这个快速变化的行业。

同时,作为模块,其opt in的特性使得任何链都可以去分叉已有代码,并且实行自己的Cosmwasm版本,目前市面上已经有的合约包括CW-Plus Repo, DAO DAO,等,Osmosis可以直接复制并且使用。这将允许快速添加许多功能,并且加快Defi协议的开发,不仅仅通过并行(多个团队同时完成)水平扩展的形式,同时利用现有代码,提升可组合性。

举个Defi领域的例子,由于最近Terra生态的崩塌,很多的开发者逐步转向Cosmwasm社区和其他Cosmos项目,Mars协议,一度成为Terra中仅次于Anchor 协议的第二大借贷协议,其业务包括借贷和杠杆挖矿,近期重启了其项目,并选择在Cosmos上搭建自己的主权链,而其选择与Osmosis深度合作,其中包括上线IBC相关资产的借贷功能,包括Cosmos (ATOM),  Osmosis (OSMO), Axelar(USDC), 这意味在Osmosis的用户之后可以享有杠杆挖矿,借贷等有趣的Defi服务,而Mars的代币也可以实现治理,分润,质押等功能。Osmosis上的Mars智能合约会收取协议费用并且在Osmosis上兑换为MARS,一旦超过预先指定的阈值,智能合约将触发另一个功能,将 MARS 代币发送到 Mars Hub 上的分发模块。这个我们在之前的文章中提到过,链与链的中继传输通过跨链账户功能实现,而交易的执行完全取决于接收方(这里为Mars的分发模块)的逻辑,而CosmWasm加强了IBC和跨链账户的功能,解决了以往过程中冗余繁琐的手动链间升级。

这里不得不提的还有Osmosis的interfluid staking 功能,为流动性提供者提供收益的同时,也能共享Osmosis网络安全性,参与节点的质押和网络的安全维护。质押给节点的锁定流动性LP代币可以在获得流动性激励和兑换费用的同时,LP交易对中的OSMO可以获得包括通胀,交易费用等相关的质押收益。但是因为只有基于打折系数的OSMO会获得相应收益,所以我们认为这是一种部分安全保证的方式。Superfluid 质押限于OSMO和其他币种的流动性交易对(比如ATOM-OSMO),而Interfulid 质押(目前还没有上线,预计一年之内)对于现有的Superfluid 质押是种补充,允许其他链上的用户也可以以同样的方式使用锁定的LP仓位,(比如ATOM-JUNO)从而在享有流动性激励的同时维护网络安全,并且获得相应收益。Osmosis认为这是一种优于市面上各种流动性质押协议的解决方案。而CosmWasm将加速、扩展现有的应用功能和场景。

当然在治理方面,Cosmwasm/cw-plus repo也实现了一些创新的投票合约,并将权利反哺给社区。还有一些代币质押的投票合约。比如DAODAO,允许用户在无需代码的情况下,快速启动DAO,尽管和其他DAO工具有些功能类似,但是它可以实现跨链功能,比如可以通过Juno上的账户进行Osmosis上的投票,这都离不开即将上线的跨链账户功能和CosmWasm技术。当然和Osmosis不一样的是,Juno 是基于Cosmwasm开发的真正的无许可的智能合约平台,所以其上的应用质量参差不齐。如果说Osmosis的目标是以AMM业务为核心,搭建许可,开发的Defi帝国,其上搭建的新的CosmWasm应用需要治理通过,并且主要服务于其核心产品(比如机枪池,借贷协议等),并且保持其上应用数量精简,避免出现类似于其他Layer1的网络拥堵等问题,那么Juno和主权应用链相比,则服务于完全不同的市场,任何不符合特定应用链的长尾项目都可以在Juno上搭建,接入IBC和Cosmos。

在IBC 扩展方面,Confio 团队投入了大量工作来使 IBC 意识到智能合约会成为现实。这使得Osmosis可以在两条CosmWasm链间轻松快速部署新的协议。例如ETF链可以在Osmosis上持有代币并进行兑换,或者Osmosis DAO 将代币质押在另一条链上并且获得相应收益,这也大大得益于跨链账户和CosmWasm。

代币标准和互操作性

Cosmos链通过IBC 通道发送各种信息数据包,实现跨链互通,提供类似于代币发送等功能。这类似于以太坊的ERC20代币标准, CosmWasm也有自己的代币标准:CW20和CW721标准。

这里要注意,CW20代币和Cosmos SDK代币标准不一样,是完全不一样的代币。而我们看到Terra之前大部分的代币都为CW20标准(CosmWasm先行者和成功案例),而Juno 也将使用该标准。同时,Osmosis,JunoSwap等逐步开放了对该标准代币的交易对(Osmosis 上线NETA, CW-20标准)代表了CW-20资产可以和其他链安全地进行交互,比如通过IBC和Osmosis进行交互,而在Cosmos生态中,原来支持的代币转账和交易仅仅支持Cosmos SDK代币。这对于Juno以及更多将使用CosmWasm技术开发的链/应用,包括相应代币提供了更好的兼容性和扩展性。比如你可以通过IBC将Juno代币转移其他Cosmos Zone并且使用它。

当然,目前大部分的中继节点(负责传输交易和信息)只支持Cosmos 原生资产,而CW20资产交易转账的数据传输包和原生资产的不一样,所以CW20资产发送的通道和原有Cosmos SDK的通道也不一样。因此,在无需改变节点和中继服务软件的同时,他们需要更新相应软件发送资产,因而需要更新配置,允许这些支持CW20资产的新通道。Juno目前已经支持了31条活跃通道。

总结

至此,我们了解了CosmWasm在多链互通的时代,其跨链虚拟机的重要性,我们也一直在强调,除了Web3.0的愿景,Cosmos也希望重塑现有金融体系,利用Cosmos技术服务于现有的实体经济,服务于中小企业,我们坚信CosmWasm会加速这一目标的实现。Regen Network从2017年开始,致力于塑造绿色经济,其创新地将碳代币化;Tgrade Finance通过Proof of Engement来支持ESG(环境社会治理)的目标;IXO是Regen Network典型的碳中和可再生经济的案例; WYND把DeFi的收入资助给环保基金并管理基金等,我们也希望看到越来越多的开放治理和可再生金融的案例在Cosmos上绽放。

Reference

Subscribe to atom_crypto
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from atom_crypto

Skeleton

Skeleton

Skeleton