区块链 区块链技术 比特币公众号手机端

新链上没有 Gas?如何带着可用的 ETH 抵达

liumuhui 50分钟前 阅读数 3 #区块链

TL;DR

  • 你将 USDC 跨链到一条新链,余额显示出来了,但之后什么也做不了:你没有该链的原生代币,所以无法为任何操作支付 gas。

  • 解决办法是指定你希望在目标链上收到什么。通过 Across Swap API,你可以设置输出代币和最小输出金额,这个输出可以是目标链的原生 gas 代币。

  • 你到达时钱包里已经有 gas,所以第一次尝试就能顺利批准 swap、mint 或 stake,而不用到处找水龙头,也无需再发送第二笔转账。

  • Across 在约 2 秒内完成大多数路由的填充,覆盖 20 多条链;relayer 垫付资金,结算由 UMA 的 Optimistic Oracle 处理。

  • 一些链从自身角度解决同样的问题:Plasma,一个专注于稳定币的 L1,运行协议级 paymaster,让用户可以用 USDT 支付 gas。

  • 使用 Across 跨链

你将 200 USDC 跨链到一条从未使用过的链。转账确认后,钱包显示了余额,接着你想把其中一部分 swap 成其他资产。钱包要求你先批准该代币。你点击批准,交易在广播前就失败了:gas 不足。你有 200 美元在链上,却一分都动不了,因为任何操作都需要该链的原生代币来支付交易费用,而你一个都没有。

这就是冷启动 gas 问题。它是首次跨链到新链时最常见的失败方式,也是一个鸡生蛋、蛋生鸡的困局:你需要原生代币才能进行任何操作,包括获取原生代币本身。但这个问题也是可以避免的。解决办法是,到达时就已经持有 gas。

这个困局是结构性的,不是你的错

EVM 链上的每笔交易都要消耗 gas,而 gas 总是以该链的原生代币支付。Arbitrum 和 Base 以 ETH 作为 gas,Polygon 以 POL 作为 gas。稳定币余额无论有多少,都无法支付自身的转账费用——这笔费用只能来自原生资产。

当你把 USDC 这样的单一资产跨链到一条没有其他任何资产的链时,你会发现,你恰好差一个代币,结果什么也做不了。你无法 swap,因为 swap 需要授权,而授权需要 gas。你无法把 USDC 转回去,因为转账同样需要 gas。资金就在那里,却被困住了。唯一的出路是再发起一笔跨链转账,获取一点原生代币,或者找水龙头,或者请人借你几美分的 gas。这些都是在你以为已经搞定之后才会遇到的摩擦。

把原生代币设为输出,到达时即可持有

更干净的答案是:在转移资产的同一笔跨链转账中,同时收到该链的 gas 代币。Across 围绕意图(intent)构建。你声明在目标链上想要的结果,协议负责交付。gas 问题正是在这个声明环节得到解决。

Across Swap API 接受来源链上的输入代币,以及目标链上的输出代币和最小输出金额。推荐的交易类型是 minOutput,意思是“我希望在目标链上至少收到这么多”,API 会反向计算所需的输入。你指定的输出代币不必与输入代币一致。它可以就是目标链的原生代币。

把输出代币设置为该链的原生 gas 代币,那么到账的就是它。你到达时手里就有可用的 gas,随时可以交易,无需单独的充值步骤。冷启动困局根本没有机会形成,因为你在新链上收到的第一样东西,就是之后每一笔交易都需要的资产。

relayer 会垫付目标链上的资金,并在主网上约 2 秒内即可完成路由填充。gas 与其余余额到账的速度一样快。结算随后通过 UMA 的 Optimistic Oracle 完成:一旦存款通过验证,relayer 就会获得报销。Across 自 2021 年以来一直运行这一模式,覆盖 20 多条链,从未发生过用户资金损失。

如何带着 gas 到达,分步指南

无论你使用网页应用还是直接调用 API,流程都是一样的。

  1. 选择你的来源链和要发送的代币,例如 Arbitrum 上的 USDC。

  2. 选择你的目标链,并将输出代币设置为该链的原生 gas 代币,例如 Base 上的 ETH。

  3. 选择最小输出金额。通常,能覆盖你最初几笔交易的原生代币数量,就绰绰有余了。

  4. 确认报价:签名前会显示预计的填充时间和费用。

  5. 在来源链上签署存款交易。relayer 会在约 2 秒内将原生代币送达目标链,随后你就可以开始操作了。

如果你希望资产分两部分到账,可以这样设置转账:一部分余额以你持有的资产形式到账,另一部分以 gas 形式到账。关键在于,gas 是你决定接收的东西,而不是事后才去凑的东西。

一些链从自身角度解决这个问题

带着 gas 到达是路由层面的解决方案,适用于 Across 支持的任何链。少数链则在协议层面解决同样的问题。Plasma,一个专注于稳定币的 L1,运行内置的 paymaster,用户可以用 USDT 支付 gas,简单的 USDT 转账也零费用。因此,持有者完全无需接触单独的 gas 代币,就能转移稳定币余额。这是链侧而非桥侧给出的关于冷启动问题的答案,两者可以很好地组合:如果你希望拥有完整的操作空间,依然可以带着该链的原生代币到达。

到达后可以做什么

到达时钱包里已有 gas,新链上的第一笔交易,就只是一笔普通交易。批准代币并 swap;存入借贷市场;mint、stake 或 claim。任何操作都不会因为缺少费用资产而无法进行,你也不用回到来源链去凑几美分。

对于开发者来说,同样的机制还可以进一步扩展。Across 通过 MulticallHandler 支持嵌入式跨链操作:一笔转账可以先让原生代币到账,然后在同一流程中执行后续操作。这意味着应用可以在同一个流程中,同时处理好用户在新链上的 gas 和第一笔操作。

冷启动 gas 问题之所以存在,是因为人们把 gas 当作到达之后才需要解决的事情。把原生代币指定为你要接收的资产的一部分,就再没有什么需要解决的了。

使用 Across 跨链

  • 原文链接: across.to/blog/no-gas-on...
  • 鸿途知科网 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门