atom_crypto

Posted on Jun 07, 2022Read on Mirror.xyz

详解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

这里的核心特征强调了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

和其他虚拟机相比,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

Ethan Frey ,Co-founder of Confio | Father of CosmWasm

Ethan Frey from Confio/CosmWasm: The Future of CosmWasm

Nansen alpha