本文介绍了如何使用 Gelato 的 Functions 和 Relayer 服务,结合 Circle 的 CCTP 协议,实现无需原生代币即可完成 USDC 跨链转移的功能。通过 Gasless CCTP SDK,开发者可以轻松地将此功能集成到他们的应用中,从而使用户可以使用 USDC 支付交易费用,简化跨链资产转移的流程。
在链之间移动 Token 是实现区块链互操作性的关键组成部分,允许用户在多个网络上使用他们的资产,并为他们提供访问各种生态系统的途径。然而,现有的锁定和铸造桥会分割流动性,并对合成 Token 的支持构成安全隐患。
Circle 的跨链传输协议 通过启用在链之间通过原生销毁和铸造进行无需许可的 USDC 传输来解决这些限制。然而,仍然存在一个准入障碍——需要原生 Token 来分别促进源区块链和目标区块链上的交易。通过将 Gelato 的 Functions 和 Relayer 服务与 Circle 的 CCTP 相结合,此过程得到了简化,同时保持了最小化的信任。在这篇文章中,我们将探讨将无需 gas 的跨链传输集成到你的下一个项目中的简单过程!
GitHub 上提供了一个示例实现以及快速入门说明和文档。该存储库演示了从 Avalanche 到 Arbitrum 的 10 USDC 的跨链传输。 https://github.com/gelatodigital/gasless-cctp:
import { ethers } from "ethers";
import { transfer, ChainId } from "./src/cctp-sdk";
const PRIVATE_KEY = ••;
const main = async () => {
const wallet = new ethers.Wallet(PRIVATE_KEY);
const taskId = await transfer(
wallet.address,
ethers. parseUnits ("100", 6),
ethers. parseUnits("1", 6),
ethers. parseUnits ("1", 6),
ChainId. Arbitrum,
ChainId. Avalanche,
wallet.signTypedData. bind (wallet)
console. log("https://api.gelato.digital/tasks/status/" + taskId);
};
注意: 我们绑定 ethers 签名类型化数据方法,以便“this”指的是钱包。
在这种情况下,限制是步骤 1 和 3 都需要在链上进行交易,因此需要原生 Token 来支付相关的成本。步骤 2 可能需要长达约 13 分钟,并且用户必须在场才能启动最终交易,这使得它成为一个相对较长的过程。此外,一旦转移,又需要原生 Token 才能与目标链上的 USDC 进行交互。从本质上讲,虽然 USDC 可以自由地在链之间移动,但原生 Token 却不能。
想象一下,我们可以使用 USDC 本身在链之间移动 USDC 并支付所有相关费用。例如,用户可以将 USDC 从 Ethereum 转移到 Avalanche。一旦启动,转移就会在后台可靠地处理,并且相关的交易成本以及后续费用都使用 USDC 本身支付。在任何时候,用户都不需要担心获取和维护各种每个链的原生 Token (ETH/AVAX)。消除这种依赖性可以将交易费用支付与原生 Token 分离开来,从而实现资产的统一。这意味着 USDC 充当区块链互操作性层和通用交易支付解决方案,从而消除了 gas Token 的复杂性。
通过利用 Gelato Functions 和 Gelato Relay 自动化整个过程,同时将交易费用支付从用户那里抽象出来,这成为了现实。Relayer 代表用户将交易放在链上,因此会产生需要补偿的 gas 成本。这可以通过两种方式实现:通过使用 1Balance 赞助交易,或者在交易执行期间同步支付 relay 费用。后者是理想的,因为我们可以使用一部分转移的 USDC 来支付两条链上的费用。Functions 允许我们根据任意链上和链下数据(API、子图等)执行链上交易。这允许我们索引链上转移请求并定期获取其相应的证明。一旦 Circle 发布证明,Web3 Function 就会在目标链上 relay 最终交易,将 USDC 铸造给用户。
以下是流程的概述:
中间的 转发器 (Forwarder) 合约促进了 relay 费用支付。这些合约部署在每个与 CCTP 兼容的网络上,从而允许任何链之间的转移。
注意: 无需 gas 是指在交易费用支付期间不存在原生 Token。Gas 仍然由 relayer 支付,但从用户那里抽象出来,并以 USDC 支付。
上面概述的所有逻辑都打包到新的 Gasless CCTP SDK 中,从而可以轻松集成。现有的桥可以实现此功能,其他 dApp 也可以使用此功能来支持各种用例——没有限制。例如,Avalanche 上的 NFT 市场可以支持来自各种其他区块链的 USDC 支付,同时仍然保持 Avalanche 原生。 GitHub 上提供了一个示例前端实现: https://github.com/gelatodigital/gasless-cctp-frontend
SDK 提供了一种转移方法,该方法在底层结合了 Gelato Relay 和 Functions 以及 Circle 的 CCTP,以在链之间无需 gas 地转移 USDC。调用者提供 EOA 的地址,USDC 将从源链上的 EOA 转移到目标链上的 EOA。下一个参数是要转移的 USDC 总金额,包括费用金额。这些费用通过分别指定源链和目标链上的最大费用金额来限制。在此之后,指定源链和目标链。最后一个参数是一个任意的回调函数,负责签署类型化数据,并允许调用者定义自定义签名逻辑以及执行 UI 更新和错误处理。
await transfer(
owner, // owner 账户地址
amount, // 包括费用的 Token 总量
srcMaxFee, // 源链上的最大 relay 费用
dstMaxFee, // 目标链上的最大 relay 费用
srcChainId, // 源链 ChainId
dstChainId, // 目标链 ChainId
signTypedData // 用于签署类型化数据的回调
);
Gasless CCTP 为进一步的区块链互操作性铺平了道路,从而可以实现无缝且安全、与 gas Token 无关的资产转移。通过利用 Gelato Relay 和 Functions,USDC 充当通用费用支付解决方案,从而消除了区块链的复杂性并统一了不同的生态系统。通过 Gasless CCTP SDK 的实现,可以轻松获得此功能。
Gelato 是一个 Web3 云平台,使开发者能够创建自动化的、无需 gas 的且具有链下感知能力的 Layer 2 链和智能合约。400 多个 web3 项目多年来一直依赖 Gelato 来促进 DeFi、NFT 和游戏领域的数百万笔交易。
Gelato RaaS: 一键部署你自己的定制 ZK 或 OP L2 链,其中内置了原生账户抽象和所有 Gelato 中间件。
VRF: Gelato VRF 为区块链应用程序提供快速、链上可验证的随机性。
Functions: 无服务器、事件驱动的函数,用于自动化区块链交易。
Relay: 通过易于使用的 API,让你的用户可以访问可靠、稳健且可扩展的无需 gas 的交易。
账户抽象 SDK: Gelato 与 Safe 合作构建了一个功能齐全的账户抽象 SDK,将 Gelato 业界最佳的无需 gas 的交易能力与业界最安全的智能合约钱包相结合。
订阅我们的新闻通讯并打开你的 Twitter 通知以获取有关 Gelato 生态系统的最新更新! 如果你有兴趣成为 Gelato 团队的一员并构建互联网的未来,请浏览空缺职位并在 此处 申请。
- 原文链接: gelato.cloud/blog/gasles...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!