Show / Hide Table of Contents

getapplicationlog 方法

根据交易 txid 获取合约的事件信息。合约事件信息会保存到 ApplicationLogs 目录。

此方法由插件提供,需要安装 ApplicationLogsLevelDBStore 插件才可以调用。

参数说明

  • txid/blockhash:交易 ID 或区块 hash

  • trigger type: 可选参数, 有以下 trigger 类型:

    • OnPersist

    • PostPersist

    • Application

    • Verification

    • System: OnPersist | PostPersist

    • All: OnPersist | PostPersist | Verification | Application

    默认获取所有类型,也可以指定某种类型。

调用示例

请求正文:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getapplicationlog",
  "params": [
    "0x7da6ae7ff9d0b7af3d32f3a2feb2aa96c2a27ef8b651f9a132cfaad6ef20724c"
  ]
}

该交易是将 100 GAS 从 NgaiKFjurmNmiRzDRQGs44yzByXuSkdGPF 转到 NikhQp1aAD1YFCiwknhM5LQQebj4464bCJ。

响应正文 :

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "txid": "0x7da6ae7ff9d0b7af3d32f3a2feb2aa96c2a27ef8b651f9a132cfaad6ef20724c",
        "executions": [
            {
                "trigger": "Application",
                "vmstate": "HALT",
                "exception": null,
                "gasconsumed": "9999540",
                "stack": [],
                "notifications": [
                    {
                        "contract": "0x70e2301955bf1e74cbb31d18c2f96972abadb328",
                        "eventname": "Transfer",
                        "state": {
                            "type": "Array",
                            "value": [
                                {
                                    "type": "ByteString",
                                    "value": "4rZTInKT6ZxPKQbVNVOrtKZy34Y="
                                },
                                {
                                    "type": "ByteString",
                                    "value": "+on7LBTfD1nd3wT25WUX8rNKrus="
                                },
                                {
                                    "type": "Integer",
                                    "value": "10000000000"
                                }
                            ]
                        }
                    }
                ]
            }
        ]
    }
}

响应说明:

  • txid:交易 ID。

  • trigger:触发器。

  • vmstate:虚拟机执行状态,HALT 代表成功,FAULT 代表失败。

  • gasconsumed :该交易消耗的 GasToken 数量,即交易手续费。

  • notifications:智能合约通知。如果没有通知返回,表明该交易不成功,详情参见下文的Note说明。

  • contract:发出通知的合约,这里是 GasToken 原生合约。

  • eventname:通知的事件名称。

  • state:通知内容。其中 ByteString 为 Base64 编码表示的钱包地址,可以在 Data Convertor 进行转换。

上例显示的是一个成功转账交易的日志,但如果传输失败或NeoVM执行异常,显示结果可能是以下情况:

  • 转账失败: 不返回 Transfer notifications。执行状态 vmstate 显示 HALT 且 stack 值为 False

  • NeoVM 异常: 可能返回或不返回 Transfer notifications。执行状态 vmstate 显示 FAULT