Cointime

扫码下载App
iOS & Android

Chainlink:使用 CCIP 构建跨链应用程序的 5 种方法

项目方

作者:Chainlink. 编译:Cointime.com QDD

Chainlink的跨链互操作性协议(CCIP)是一种新的通用跨链通信协议,为智能合约开发者提供了以最小化信任的方式在区块链网络之间传输数据和代币的能力。

目前,部署在多个区块链上的应用程序受到资产、流动性和用户的碎片化问题的困扰。有了CCIP,开发者可以利用代币转移和任意消息传递,实现由部署在多个不同区块链网络上的多个智能合约组成的去中心化应用程序,这些智能合约相互操作,形成单一统一的应用程序。这种Web3设计模式被称为跨链智能合约

以下是使用CCIP构建跨链应用程序的几个示例,涵盖了DeFi、跨链ENS、在多个链上铸造NFT以及跨链游戏等领域。这些用例示例展示了CCIP将传统的单链或多链应用程序转变为强大的全新跨链dApps的潜力。

所有示例都可以在Chainlink Labs的GitHub上找到,并且现在可以部署和与之交互。

DeFi:跨链组合性

DeFi是一个适合通过跨链智能合约进行转变的Web3应用程序类别。在当前的DeFi世界中,许多应用程序要么部署在单个链上,要么部署在多个链上,每个实例都需要其自己的一组用户和流动性。在每个链上,都有DeFi组合性和“货币乐高”的概念,开发者可以无需许可地与部署在特定网络上的各种协议进行连接和集成,以创造新的用例和金融产品。

通过启用跨链智能合约和跨链代币转移,CCIP将DeFi组合性的概念指数级增加。因为现在,组合性不再局限于每个链上,并且不再受限于该链上的DeFi协议,而是所有链上的所有DeFi应用程序现在可以以各种方式组合在一起,创造新的金融产品。应用程序和协议不再局限于它们所在的链上。

这种跨链组合性使DeFi应用程序的生态系统更加完整和互联,所有链上的流动性、用户和金融产品都可以为所有协议所用。用“货币乐高”的类比,CCIP使您能够将所有不同的乐高套装组合在一起,并将它们作为一个单一的、统一的套装来构建金融协议。

一个特定的DeFi金融服务将极大受益于CCIP,那就是借贷。在当前的世界中,大多数DeFi借贷协议要求您在部署您想要使用的协议的链上存入抵押品。但许多DeFi用户在多个不同区块链上使用多个DeFi协议,并且资产分散在所有这些链上。这些用户通常追求最佳回报率,调整其头寸以最大化收益,但在许多情况下,当这些资产在另一个链上有更好的收益机会时,它们被锁定在一个链上的协议中。如果他们想参与更好的收益机会,他们需要在一个链上清算他们的头寸,手动将资产桥接到新的链上,在新的链上的协议上存入这些资产,然后在想要将资产返回原始链时执行相同的过程——这是很多步骤,只是为了将资产转移到新的协议来追求收益机会。

像这样的情况就是CCIP可以帮助实现DeFi协议真正跨链的地方,让用户无缝地在一个链上利用数字资产作为另一个链上DeFi协议的抵押品,所有这些都由CCIP在协议层面处理,而无需用户执行手动操作,或者因使用第三方桥接而添加信任假设。使用CCIP,DeFi协议可以使借款人在一个(源)链上存入资产,或者直接将其转移到目标链上,然后让这些资产在目标链上可供借用。当他们希望停止在目标链上使用他们的资产时,DeFi协议可以使用CCIP撤回他们的头寸,并将资产移回原始链。这就是CCIP赋能的DeFi的威力。

在这个示例中,我们有一个部署在Avalanche Fuji测试网上的DeFi智能合约Sender.sol。这个合约接受以代币形式的用户存款;它可以是包装的ETH、稳定币或任何具有实际价值的代币。Sender.sol有一个sendMessage函数,它使用CCIP执行指定代币的可编程转账以及一个消息发送到目标链。在本例中,我们将指定的代币发送到Ethereum Sepolia测试网,并包含了最终用户的EOA(外部拥有账户)的消息:

注:本文中的所有代码示例仅用于说明,并且按“原样”提供,没有任何明示或暗示的保证。使用这些代码片段受我们在 chain.link/terms 所列出的服务条款的约束。

在Ethereum Sepolia网络上,我们部署了一个名为Protocol.sol的智能合约。该合约接收CCIP可编程代币转移消息,并执行以下操作:

l   铸造和控制可以使用抵押品进行借贷的稳定币。

l   从CCIP消息中读取指定代币合约地址(在目标链上),这些代币是从源链发送的(作为借贷的抵押品)以及存入的金额。

l   从CCIP消息内容中还读取最终用户(存款人/借款人)的钱包地址。稳定币将铸造到此地址,并且此地址也用于跟踪存款和借贷。

l   将这些信息存储在智能合约中。

一旦Protocol.sol成功接收并处理了这个CCIP可编程代币转移消息,用户就可以通过手动执行borrowUSDC函数来借入资金。该函数允许用户将转移的代币用作抵押品,以铸造并借入等额的稳定币(例如USDC)到借款人的EOA。在本示例中,我们假设70%的抵押率,意味着协议将借出的金额不超过抵押品价值的70%:

用户成功在Sepolia上充当抵押品借入UDSC后,他们可以根据需要在Sepolia网络上的任何DeFi协议中使用这些资金。然后,当他们完成时,他们可以还款给Protocol.sol,这将导致稳定币代币被销毁,并且然后将CCIP可编程代币转移消息发送回Fuji网络上的Sender.sol合约,该合约将把锁定的代币返回到Fuji网络上的指定地址。请注意,用户必须首先批准Protocol.sol作为用户借入的稳定币的“spender”,以便协议能够燃烧借入的金额,这就是还款的实现方式:

本示例的完整源代码和说明可在 CCIP-DeFi Lending GitHub 存储库中找到。

DeFi: 跨链清算保护

延续 DeFi 和借贷协议的主题,许多 DeFi 用户在多个不同的 DeFi 协议和多个区块链上持有多个头寸。这使得跟踪投资组合和 DeFi 仓位变得困难。目前有多个第三方平台、追踪器和收益聚合器可用,DeFi 用户可以简单地部署抵押物,让这些第三方平台处理资产的部署和转移,以优化用户的收益。虽然这些工具可以很好地将 DeFi 的某些复杂性抽象化,使用户可以简单地赚取收益,但它们并不是信任最小化的。用户委托协议来赚取收益,并确保头寸保持抵押以避免清算。此外,如果最终用户想要获得某种形式的清算保护,他们需要在所有拥有 DeFi 仓位的区块链上部署原生资产,以确保在各个链上的借贷头寸抵押。

通过 CCIP 和跨链代币转移和消息传递,DeFi 协议、头寸监控应用和收益聚合器可以增强跨链清算保护。这意味着用户可以在多个区块链上有开放头寸的多个 DeFi 协议,然后他们可以在单个链上分配资产,作为额外抵押品,以防某个或多个借贷需要额外资金来确保抵押。以下是它在高层次上的工作原理:

l   一个 DeFi 最终用户在多个链上有债务头寸(例如 Ethereum、Avalanche、Polygon),但他们将流动性安全地保留在一个链上的保险库中(例如 Ethereum 上的 Aave)。

l   对于用户在每个链上的债务头寸,用户的 Chainlink Automation 实现会监控头寸的负债比率。

l   如果 Automation 发现他们的任何借贷接近清算阈值,然后 Automation 将发送一个 CCIP 消息到用户的流动性链(例如 Ethereum),请求发送资金来填充债务头寸。

l   当流动性链上的合约接收到 CCIP 消息后,它会从 Aave 中提取流动性,并将带有资金的新的 CCIP 消息发送回请求链。该消息包含足够的信息和代币来资助头寸,并避免清算情况。

其结果是用户可以在多个链上有债务头寸,同时仍然在单个链上保持流动性。整个过程是信任最小化的,用户仍然100%控制他们的债务头寸,他们不需要手动提取和转移资金到不同的链上。以下是它的工作原理:

Chainlink Automation 监控用户有债务头寸的所有链,并确定是否需要发送资金的消息。如果需要,performUpkeep 函数将向拥有流动性的链上的保险库发送一个 CCIP 消息,请求发送资金。

拥有流动性的链上的保险库然后接收资金请求,并检查是否有足够的资金返回到请求链,或者是否应该从 DeFi 协议(例如 Aave)中提取一些流动性,以确保有足够的资金发送。然后,它启动一个 CCIP 可编程代币转移,包含所请求的资金以及最初接收到的消息的消息 ID(以便在请求资金的区块链上的目标合约知道资金请求是关于哪个请求的):

最后,请求资金以补充债务头寸的区块链上的智能合约接收 CCIP 可编程代币转移,将请求 ID 与其原始请求匹配,并将资金取出并存入债务头寸中,以增加贷款的抵押,避免清算:

这个例子演示了如何在 DeFi 协议和 DeFi 头寸监控应用中使用 CCIP,为用户提供在多个区块链上对其债务头寸的信任最小化的清算保护,同时让他们保持他们的资金和流动性在单个区块链上。

完整的源代码和说明可以在 CCIP Liquidation Protector GitHub 存储库中找到。

跨链域名服务(Cross-Chain Domain Name Service)

去中心化域名服务(如 ENS)在 Web3 上非常流行,因为它们有助于将易读的名称转换为钱包地址。在理想的情况下,域名服务不应该限定于一个链,而是每个注册的域名应该在所有 Ethereum 链、侧链、第二层和应用链上传播和共存。这将允许用户在整个 Ethereum 生态系统中拥有一个统一的身份,而不是必须在多个命名服务上注册域名或使用不信任最小化的互操作性解决方案。

然而,要实现这一点,域名服务需要与其他区块链进行通信。每个链上的命名服务实例在注册新域名时需要得到通知,并且需要一种方法来执行对全局名称注册表的“查找”,涵盖所有链。

这个例子展示了如何构建一个简化的跨链域名服务应用程序,用户可以在其中在一个链上注册域名,然后在多个其他链上传播该注册信息,并在任何链上解析名称到地址。

第一步是在 Ethereum Sepolia 网络上部署 CrossChainNameServiceRegister 和 CrossChainNameServiceLookup 合约。这个网络将充当“主”网络,所有注册将在此网络上进行,并传播到其他链上。

当您注册一个新的 .ccns 句柄时,CrossChainNameServiceRegister 合约将使用 CCIP 发送一条消息到其他受支持的区块链,包含有关注册的 .ccns 句柄的信息:

在所有受支持的接收链上,部署 CrossChainNameServiceReceiver 合约。这个合约将从 CrossChainNameServiceRegister 合约接收注册的 .ccns 域名,并将它们存储在部署在该链上的 CrossChainNameServiceLookup 合约中:

最后,在所有区块链上部署 CrossChainNameServiceLookup 合约,包括注册链(在本例中为 Sepolia),以及所有目标链。该合约用于存储所有注册的 .ccns 句柄,并充当执行查找的接口,以将名称转换为地址:

使用这种简单的设计模式,可以创建一个简单的跨链域名服务,用户可以在其中注册一次域名,然后在多个区块链上拥有并使用它。

完整的源代码和说明可以在 Cross-Chain Name Service GitHub 存储库中找到。

跨链 NFT(Cross-Chain NFTs)

NFT 是 Web3 最受欢迎的用例之一。每个 NFT 项目通常在单个区块链上,或者该项目本身在多个链上部署,如果用户想要在多个链上拥有 NFT,他们必须多次铸造它。

通过 CCIP 任意消息,NFT 项目可以允许他们的资产仅在单个链上铸造一次,由铸造者一次付费,然后在其他区块链上传播。这意味着用户可以拥有和共享他们的 NFT,而不管他们使用的是哪个网络。CCIP 还可以用于在不同链上“销毁和铸造” NFT,允许用户将其 NFT 从一条链转移到另一条链。这是第一个场景的示例:

以下是简单 NFT 智能合约的说明:

SourceMinter 合约在源链上部署,并在其 mint 函数中包含逻辑,用于向目标区块链发送带有 ABI 编码的 mint 函数签名的 CCIP 跨链消息,该签名来自 MyNFT.sol 智能合约:

DestinationMinter 合约将接收带有 ABI 编码的 mint 函数签名的 CCIP 跨链消息作为有效载荷,并使用该签名调用 MyNFT 智能合约的 mint 函数。然后,MyNFT 智能合约将通过 SourceMinter 智能合约的 mint() 函数将新的 NFT 铸造到 msg.sender 账户,即在源链上铸造 NFT 时使用的相同账户地址:

最终结果是,铸造 NFT 的用户现在在多个链上拥有该 NFT,并且他们只需要铸造一次并支付一次。如果 NFT 项目希望在所有区块链上保持严格的不可替代性,该解决方案也可以轻松修改,以在目标区块链上铸造 NFT,并在源链上销毁它,确保在所有区块链上只有一个版本。

完整的源代码和说明可以在 Cross-Chain NFT GitHub 存储库中找到。

游戏:跨链井字游戏

在过去的几年中,Web3 游戏变得非常受欢迎。然而,与 DeFi 一样,游戏也非常分散,游戏及其资产通常只适用于特定的链。但与传统游戏一样,最终目标或最佳体验是拥有可以一起玩游戏的游戏玩家,而不考虑他们正在玩游戏的硬件或软件。就像 PC 游戏玩家可以与 Xbox 主机所有者一起玩游戏一样,没有理由为什么在 Polygon 上玩游戏的人不能与在 Avalanche 上玩游戏的人一起玩。这就是所谓的跨平台游戏

这对于回合制 Web3 游戏和其他不需要快速实时交互的游戏非常适用。Web3 游戏遭受用户碎片化,游戏玩家更喜欢在他们选择的链上玩游戏并使用他们喜欢的数字资产。CCIP 可以使 Web3 游戏真正跨链,促进资产在链上的转移,并在多个区块链上实现共享游戏状态,使玩家可以在不考虑他们选择的链的情况下相互对战或合作。如果您想要吸引尽可能多的游戏玩家,那么最好在多个链上部署您的游戏,并设计它以便所有玩家可以相互对战或合作。

这个跨链游戏设计模式的简单演示可以用回合制策略游戏(例如井字游戏)来展示。在这个例子中,我们有一个游戏智能合约在多个区块链上部署。用户可以在他们选择的链上开始一场游戏,然后将游戏会话 ID 分享给他们的朋友。如果愿意,他们的朋友可以从另一个链上加入游戏。在创建游戏时,CCIP 将把游戏的详细信息和初始状态与所有其他链共享:

一旦第一个玩家在开始游戏后采取了一步,另一个区块链上的第二个玩家将在成功处理 CCIP 消息后,在他们的游戏智能合约上看到更新后的游戏状态。玩家2将然后采取他们的步骤,这将生成一个 CCIP 消息发送回玩家1,并在他们的链上更新游戏状态:

然后,玩家1将看到更新后的游戏状态,并再次采取他们的步骤。随着玩家采取行动,跨链的 CCIP 消息在链之间来回传递,直到游戏达到结论并宣布获胜者。重要的是要注意,两个链上的游戏智能合约都维护游戏状态,并且使用 CCIP 发送和接收消息,以确保游戏状态在两个区块链上保持一致:

这个例子的完整源代码和说明可以在 CCIP 井字游戏 GitHub 存储库中找到。

结论

从跨链 DeFi 和 NFT 到在多个区块链上运行的游戏,CCIP 使得跨链智能合约的实现成为可能,实现了跨所有区块链的真正 DeFi 组合性,并实现了更加统一的 Web3。

评论

所有评论

推荐阅读

  • 5月02日午间要闻速递

    1. BTC 突破 58000 美元

  • Securitize获得4700万美元融资,BlackRock领投

    专注于将现实资产数字化的迈阿密公司Securitize获得了4700万美元的融资,由BlackRock领投,Hamilton Lane、ParaFi Capital、Tradeweb Markets、Aptos Labs、Circle和Paxos等公司参与。此轮融资的一部分将用于进一步提升Securitize在数字资产证券生态系统中的地位。同时,BlackRock推出了首个基于以太坊的代币化基金BUIDL,投资者可以通过Securitize订阅该基金。该基金将100%的资产投资于现金、美国国债和回购协议,允许投资者在区块链上持有代币的同时获得收益。投资者可以24/7/365地将其代币转移给其他经过预批准的投资者。

  • Web3游戏Shadow War完成500万美元融资, Momentum 6领投

    游戏工作室Patriots Division已为其Web3游戏Shadow War在种子轮和 A 轮融资中筹集了 500 万美元,A 轮融资由 Momentum 6 领投,iAngels、Cointelligence Fund、Xborg、Andromeda VC、Cogitent Ventures 和 Cluster Capital等参投。

  • 5月02日早间要闻速递

    1. BTC跌破57000美元

  • ETH跌破2900美元

    行情显示,ETH跌破2900美元,现报2898.84美元,日内跌幅达到3.66%,行情波动较大,请做好风险控制。

  • BTC跌破57000美元

    行情显示,BTC跌破57000美元,现报56999.99美元,日内跌幅达到5.48%,行情波动较大,请做好风险控制。

  • 人工智能云服务提供商CoreWeave完成11亿美元C轮融资,Coatue领投

    专注于人工智能的云服务提供商CoreWeave宣布完成11亿美元C轮融资,本轮融资由Coatue领投,Magnetar(上一轮主要投资者)、Altimeter Capital、Fidelity Management&Research Company和Lykos Global Management参投。

  • Cointime 5月1日要闻速递

    1.加密货币大佬赵长鹏被判监禁四个月,将专注于教育项目Giggle Academy2.Celsius Network销毁占总供应量94%的CEL,价值超8900万美元3.USDC Treasury销毁逾2亿枚USDC4.Pike疑似遭遇黑客攻击,损失479枚ETH5.比特币创下FTX崩溃以来的最差月度表现,利率前景成为拖累6.币安比特币钱包余额过去24小时增加6249.36枚,近7天流入15565.89枚7.名义价值超22亿美元BTC和ETH期权将于周五到期交割8.加密货币总市值跌破2.3万亿美元,24小时跌幅达7.8%9.10x Research:美国比特币现货ETF买家持仓均价约为57,300美元10.比特币跟随加密市场下跌,创下自2022年11月以来的最差表现。

  • 西班牙Web3视频游戏初创公司GFAL获得320万美元种子融资

    西班牙巴塞罗那的Web3视频游戏初创公司GFAL获得320万美元的种子轮融资,由Supercell Ltd和Mitch Lasky领投,Heinrich Zetlmayer、Bonduc Bioscience SL、BCNBCNLVC、David Fernandez、Bonsai Partners、Nekko Consulting和Inveready等机构参与。该公司打算利用这笔资金扩大核心团队并加速生产计划。GFAL由首席执行官Manel Sort领导,是一家利用从人工智能到Web3的技术开发和发布游戏的初创公司,旨在通过沉浸式游戏玩法让玩家享受游戏乐趣。该公司的2024年计划将建立在其游戏Elemental Raiders于2023年3月在移动端进行的软启动基础上。Manel Sort在评论中表示:“我们非常感激Supercell、Mitch和Heinrich对GFAL的信任。与Trip和Ilkka一起开展项目,与他们分享了在Digital Chocolate度过的许多激动人心和成功的岁月,这是一个梦想成真,我迫不及待地想向世界展示我们正在构建的高水平游戏。”

  • BTC跌破58000美元

    OKX行情显示,BTC短时触及57700美元,现报58581.53美元,日内跌幅达到7.15%,行情波动较大,请做好风险控制。