跳到正文
← 使用教程

Biconomy跨链中途失败:核回执与cleanup剩余代币

链小知 · 进阶 · 核验 · 依官方文档整理

区分MEE提交标识、Supertransaction状态与cleanup依赖,判断可返还的是哪条链上的哪些剩余资产。

开始前准备

  • 准备已有脱敏quote/执行hash、模式、链与版本、instructions、cleanUps和回执;保留代币地址与原单位。

1. 固定模式、链配置和执行标识

对原AbstractJS材料分清getQuote/executeQuote与Fusion的getFusionQuote/executeFusionQuote,并记录chainConfigurations与MEE版本。概述示例使用V2_2_3的Optimism、Base和Arbitrum,不能仅凭相同账户地址推每条链配置/执行相同。

getQuote返回费用和待签payload;executeQuote返回hash,仍需结果回执。quote.hash、执行hash与单个userOp/交易哈希保留原字段,缺对应关系不靠相似字符串拼接。

检查结果:模式、版本、链配置和quote/执行/单项标识各有对应。

2. 使用AbstractJS回执枚举核完成阶段

getSupertransactionReceipt读取当前状态;waitForSupertransactionReceipt等待完成。SDK列transactionStatus为PENDING、MINED_SUCCESS、MINED_FAILED、EXPIRED,并返回userOps和explorerLinks;不能把另一HTTP接口的SUCCESS/FAILED直接当同一字段。

记录default/fast-block模式及confirmations;返回hash不是完成,PENDING不是失败。MINED_FAILED或EXPIRED也不能单凭状态推全额返还,需看各链userOps、cleanup配置与实际剩余资产结果。

检查结果:回执字段、状态、确认模式和单项结果分开,缺回执留未知。

3. 解释跨链部分完成而非全链回滚

官方说明单链flow为原子性,而跨链不是:bridge可能已完成、目标swap失败,资产留在中间账户。先按已有每项instruction和userOp结果对链、代币、完成/失败阶段。

不要把一个MINED_FAILED标签翻译为桥也回滚,或把一个成功交易哈希翻译为整个目标已完成。没有中间链结果材料时,资产位置仍未知。

检查结果:每条链的已完成与失败阶段有证据,未知位置不写退款。

4. 逐cleanup核代币、接收地址与依赖

cleanUps每项必填chainId、tokenAddress和recipientAddress。Fusion例自动处理批次、不需dependsOn;EIP-7702/智能账户模式可用dependsOn等具体instruction完成,非顺序流程尤其需核依赖,不能机械复制索引。

官方说cleanup最后运行,仅转智能账户仍剩余的代币;余额为0会无害回滚。SDK允许amount(bigint)指定数量、缺省全余额;按实际配置核每种代币和用户接收EOA,未配置的代币、已花费用或已交付资产不当全额退款。

检查结果:cleanup链/代币/接收地址、amount及依赖均对原配置,返还范围仅剩余资产。

5. 把赞助权限与返还结果分别归档

生产hosted赞助需启用的项目API key,SDK sponsorship:true仅请求赞助。官方hosted限制在Dashboard配置,含单笔USD、总预算、合约及链;self-hosted另有自定义后端,不把代码布尔值当预算已生效。

Fusion完全gasless还要求trigger token支持ERC-2612 permit,否则用户需为一次approval付gas。官方生产赞助post-paid月末计费;归档账单与cleanup返回结果各自的记录,赞助或提交成功不证明返还完成。

检查结果:赞助权限/预算/费用与cleanup实际结果分别有证据或保留未知。

怎样确认完成

  • 得到Supertransaction阶段、每条链剩余资产与cleanup对照;官方方法已核,实际返还和账单依原结果确认。

常见错误与边界

  • 跨链失败可能留下已完成桥接,不能推整体回滚。
  • cleanup仅处理配置代币的剩余余额;余额0的cleanup回滚不表示资产被没收。
  • hosted赞助布尔值不是权限或预算;Fusion permit条件与SCA/7702路径不同。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据