如何使用Web3解码日志并获取事件?

时间:2019-02-11 15:21:42

标签: ethereum web3

我有一笔交易,它从2个不同的合约发出2个不同的事件。假设我有两个合同的ABI文件,如何从logs字段中解析事件?

例如,这是一个发出2个事件https://rinkeby.etherscan.io/tx/0xc6525195135a868897bd4c74ea0f6285b98492103be4df6fc5ea43f83b96b8eb#eventlog

的交易

这是getTransactionReceipt RPC调用的响应,如何从logs字段中解析事件名称及其参数?

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0x3da27197fe084a82d76273b40c32e231d2662b229337795a43fde9f8d73b4d2c",
        "blockNumber": "0x39a62b",
        "contractAddress": null,
        "cumulativeGasUsed": "0x48ad9",
        "from": "0x20b53b91da0a2d9afdd442b2bb433a40ab7f9613",
        "gasUsed": "0x9e36",
        "logs": [
            {
                "address": "0x5328276603d169165d0f71ca67ccc89c45027df3",
                "blockHash": "0x3da27197fe084a82d76273b40c32e231d2662b229337795a43fde9f8d73b4d2c",
                "blockNumber": "0x39a62b",
                "data": "0x000000000000000000000000f63843b0b7fc5097bc1f92658379617513cce546000000000000000000000000ff0e3299e55efd859176d582fc805481e83449150000000000000000000000000000000000000000000000000000000000002245",
                "logIndex": "0x1",
                "removed": false,
                "topics": [
                    "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
                ],
                "transactionHash": "0x5442a15c593b3fcf3069ad7f6a41d8805a66a49ed407d872e46ea95b1c9f6054",
                "transactionIndex": "0x3"
            },
            {
                "address": "0x7387e0b25165e9a621f624e47b3362a937892c7b",
                "blockHash": "0x3da27197fe084a82d76273b40c32e231d2662b229337795a43fde9f8d73b4d2c",
                "blockNumber": "0x39a62b",
                "data": "0x0000000000000000000000000000000000000000000000000000000000002245000000000000000000000000ff0e3299e55efd859176d582fc805481e8344915000000000000000000000000f63843b0b7fc5097bc1f92658379617513cce546000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000ffcb9e57d4000",
                "logIndex": "0x2",
                "removed": false,
                "topics": [
                    "0x9accbcf984c4cd67a675ee4d38143974e1fa62aa95da283bd4ca645e408ec283"
                ],
                "transactionHash": "0x5442a15c593b3fcf3069ad7f6a41d8805a66a49ed407d872e46ea95b1c9f6054",
                "transactionIndex": "0x3"
            }
        ],
        "logsBloom": "0x20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000010000000000000000000000000000000000000000000000004000000000000000000080000008000000000000000000000000000000000000000400000000000000000000000000002000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "status": "0x1",
        "to": "0x7387e0b25165e9a621f624e47b3362a937892c7b",
        "transactionHash": "0x5442a15c593b3fcf3069ad7f6a41d8805a66a49ed407d872e46ea95b1c9f6054",
        "transactionIndex": "0x3"
    }
}

0 个答案:

没有答案