跨链交换详解:一次交易完成交换与桥接

across 发布于 2026-07-23 阅读 16

跨链交换将传统的多步操作(桥接、交换、再次桥接)简化为一次签名交易,用户只需声明期望的输出结果。Across的Swap API通过intent模型实现,支持minOutput和exactInput两种模式,并利用MulticallHandler在目标链上执行后续操作(如存款到借贷池)。协议通过三条结算路径自动选择最优路线,约2秒完成填充,自2021年运行以来未丢失用户资金。

连接

分享本文

加入 Across 社区:

Across

产品

公司

社交

热门路线

TL;DR

  • 跨链交换将过去的多步流程(先桥接,再交换,可能还需要再次桥接,在两个链上支付 Gas)简化为一次签名交易,并声明一个最终结果。

  • 你指定链 A 上的输入代币,以及链 B 上希望获得的最低输出代币。Across Swap API 会计算出所需的输入金额,并返回可直接签名的 calldata。

  • 默认的 tradeTypeminOutput:你声明“我希望在目标链上至少获得这么多”,API 会反向推算出输入金额。

  • 填充完成后,代币会到达目标链上的 MulticallHandler 合约,该合约可以在同一笔交易中执行后续调用(转账、存入借贷池等)。Across 将这些称为嵌入式跨链操作。

  • 协议会通过三种结算路径之一进行路由,并自动选择最优路径;你无需选择。在 Risk Labs 构建的基础设施上,填充在 20 多条链上约 2 秒内完成结算,自 2021 年以来从未发生过用户资金损失。

  • 基于 Across 进行开发

过去的方式需要三笔交易和两个 Gas 代币

假设你在 Arbitrum 上持有 ETH,并希望在 Base 上获得 USDC。在意图(intent)模式出现之前的路径是:将 ETH 桥接到 Base,等待其到达,在 Base 上保留足够的 ETH 来支付 Gas,然后在去中心化交易所(DEX)上将 ETH 兑换为 USDC。如果落地在错误的链或错误的资产上,你还得再桥接一次。总共三笔交易,需要管理两个 Gas 余额。中间有一个窗口期,你的资金以你从未想要的代币形式停留在你从未想要的链上。

跨链交换将这一切压缩为一笔签名交易。你声明你想要的结果:在 Base 上至少获得 2,000 USDC,在 Arbitrum 上签名一次,交换和桥接同时解决。中间的跳跃仍然发生,只是你无需接触它们。转变在于从指定每一步,变为声明一个结果。

跨链交换是一个声明式的结果

意图是一种订单,你声明你想要的结果,而不是执行路径。传统的桥接让你指定路径:在这里锁定代币,在那里铸造,等待最终确认,然后交换。意图则反过来。你说“我至少要在 Base 上获得 2,000 USDC”,一个竞争性的中继器网络会找出如何交付。

Across 专门处理跨链意图,即跨越多个链的结果。跨链交换是指输入资产和输出资产不同且位于不同链的情况。Arbitrum 上的 ETH 输入,Base 上的 USDC 输出,一笔交易完成。

交换和桥接如何在一笔交易中解决

整个过程通过 Across Swap API 运行。一次调用处理路由发现、报价和可执行的 calldata。你无需自己拼接 DEX 聚合器和桥接器。

你传入输入代币和链、输出代币和链,以及 tradeType。推荐的默认值是 minOutput:“我希望在目标链上至少获得这么多输出代币。”API 会计算出满足该下限所需的输入金额,并返回要签名的 calldata。想要固定输入金额而让输出浮动?exactInput 则反过来运行。你固定花费的金额,API 报价你会收到的金额。

因此,对于从 Arbitrum 上的 ETH 到 Base 上的 USDC,minOutput 让你将 2,000 USDC 设为下限,API 告诉你这需要多少 ETH。exactInput 让你正好花费 1 ETH,API 报价你会得到的 USDC。请求中携带 originChainIddestinationChainId、输入和输出代币地址、金额以及你的钱包地址作为 depositor。响应是一笔交易。从你这边看,交换和桥接是单一操作。

然后,协议通过三种结算路径之一进行路由:自身的意图系统、CCTP 或 OFT,并自动为路由选择最佳路径。你无需配置。中继器在目标链上预先垫付输出,因此填充大约在 2 秒内完成,而不是等待源链的最终确认。

嵌入式操作让交换在落地时立即执行操作

自 2021 年以来,Across 的意图模型经历了三个阶段。第一阶段是同资产转账:将 USDC 从 Arbitrum 发送到 Base,两端代币相同。第二阶段增加了执行功能:桥接资产,然后在目标链上运行调用,例如将桥接的 USDC 存入 Aave。第三阶段是当前状态:交换加执行:将链 A 上的资产 X 交换为链 B 上至少一定数量的资产 Y,可选择在目标链上执行后续交易。

MulticallHandler 使得后续调用成为可能。在交换中附加一个 actions 数组,并将 recipient 设置为目标链上的 MulticallHandler 合约。一旦中继器填充了意图,目标链的 SpokePool 就会调用 MulticallHandler,后者执行你的操作:代币转账、存入借贷池、任意合约调用。Across 将这些称为嵌入式跨链操作。

每个操作指定一个 target 合约、一个 functionSignature 及其 args。参数可以是静态的,例如固定的接收地址,也可以是动态的。一个带有 populateDynamically: true 的动态参数会在执行时注入实际交换的余额,指向一个 balanceSourceToken,因此操作可以精确存入到达的金额,而无需预先知道数量。交换、桥接和目标调用以原子方式在一笔交易中结算。

可以在此基础上构建什么

Swap API 将“任何代币输入,任何代币输出,在任何支持的链上”转化为单一的集成点。MulticallHandler 将目标链转变为发生事情的地方,而不仅仅是代币落地的位置。

一个应用可以让用户仅持有 Arbitrum 上的 ETH,就能一键进入 Base 上的头寸:交换为头寸的输入代币并存入,无需手动桥接,无需第二个 Gas 余额。一个钱包可以根据用户在其他地方持有的资产提供“在 Base 上接收 USDC”的功能。一个协议可以接受来自任何链的任何代币的存款,而无需编写任何桥接逻辑,因为声明的输出和后续调用都在同一个意图中。完整的机制、请求格式和操作模式都在 Across 文档 中。

Across 运行在 20 多条链上,由 Risk Labs(UMA 的基础)构建。自 2021 年以来,它处理了数十亿美元的交易量,从未发生用户资金损失。

一笔交易,一个结果

跨链交换的意义不在于步骤变得更快,而在于你不再需要自己管理这些步骤。你声明你想要的代币及其所在的链,签名一次,然后桥接、交换以及任何后续调用都作为单一操作在底层解决。中间的交易从来不需要变得更顺畅,它们只是从你的任务清单中被移除了。

  • 原文链接: across.to/blog/crosschai...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论