You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分NEAR区块链成功与失败交易并在UI中展示交易状态

区分NEAR区块链交易成功与失败的关键字段

我来帮你理清NEAR交易状态的判断逻辑,其实要区分两个核心层面,同时有明确的JSON字段可以用来识别交易的成功或失败:

1. 区块链层面的交易执行状态(交易是否被链上确认执行)

这是最基础的判断:交易是否被区块链网络成功打包并执行,不管合约内部逻辑结果如何。你可以直接查看交易响应根节点的status字段:

  • 成功交易:status会是以下两种类型之一:
    • {"SuccessValue": "<base64_encoded_value>"}:代表交易执行完成,并且合约返回了值(比如ft_resolve_transfer的返回值会在这里)
    • {"SuccessReceiptId": "<receipt_id>"}:代表交易触发了后续收据,但交易本身已成功执行
  • 失败交易:status会是{"Failure": {...}}结构,里面包含具体的错误详情,比如ActionError(动作执行错误)、ReceiptError(收据处理错误)等。

举个失败交易的status片段示例:

"status": {
  "Failure": {
    "ActionError": {
      "index": 0,
      "kind": {
        "FunctionCallError": {
          "ExecutionError": "Smart contract panicked: ..."
        }
      }
    }
  }
}

2. 合约逻辑层面的操作结果(比如FT转账是否真正完成)

如果要判断合约内部的业务逻辑是否成功(比如你提到的ft_resolve_transfer),除了依赖合约返回值,还可以:

  • 解析SuccessValue的base64编码内容:比如ft_resolve_transfer返回的是u64类型,解码后得到的数值为0代表失败,非0代表成功
  • 查看receipts_outcome数组中对应合约调用的outcome.status.SuccessValue,这里会存储合约方法的返回结果

你之前觉得成功和失败交易的JSON几乎一致,大概率是没注意status字段的核心差异——失败交易的status一定会包含Failure对象,而成功交易不会。

内容的提问来源于stack exchange,提问作者Sai Kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 00:47:40