以太坊方法 eth_getTransactionByHash 中的“类型”列是啥意思?

Posted

技术标签:

【中文标题】以太坊方法 eth_getTransactionByHash 中的“类型”列是啥意思?【英文标题】:What is column 'type' means at Ethereum method eth_getTransactionByHash?以太坊方法 eth_getTransactionByHash 中的“类型”列是什么意思? 【发布时间】:2021-09-12 22:56:16 【问题描述】:

正如标题所说, 我找不到任何具有type 列描述的文档, 并且不知道值的意思。 有人有想法吗?


    "jsonrpc":"2.0",
    "id":1,
    "result":
        "blockHash":"0xf64a12502afc36db3d29931a2148e5d6ddaa883a2a3c968ca2fb293fa9258c68",
        "blockNumber":"0x70839",
        "from":"0x0000000000000000000000000000000000000000",
        "gas":"0x30d40",
        "gasPrice":"0xba43b7400",
        "hash":"0x1e2910a262b1008d0616a0beb24c1a491d78771baa54a33e66065e03b1f46bc1",
        "input":"0xfc36e15b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a4861636b65726e65777300000000000000000000000000000000000000000000",
        "nonce":"0xa7",
        "to":"0x03fca6077d38dd99d0ce14ba32078bd2cda72d74",
        "transactionIndex":"0x0",
        "value":"0x0",
        "type":"0x0", // <- here
        "v":"0x1c",
        "r":"0xe7ccdba116aa95ae8d9bdd02f619a0cdfc1f60c5740b3899865822a80cd70218",
        "s":"0xf200df1921ea988d16280a0873b69cb782a54e8a596d15e700710c820c8d2a9e"
    


这里还有一个问题, 如上结果,我怎么知道交易是完成还是失败?

【问题讨论】:

【参考方案1】:

这是在EIP-2718 中添加的类型化交易信封。此 EIP 的实施于 2021 年 4 月部署在柏林硬分叉 (source)。

该字段允许在不向后兼容的情况下使用未来的事务类型。一个新的不兼容的 tx 类型(值 0x01)的示例在 EIP-2930 中,也部署在柏林硬分叉中。

可能因为它是一个新字段,它尚未(2021 年 6 月)包含在 JSON-RPC documentation 中。但是其他文档,例如ethers.js,已经开始涵盖它。


您可以从transaction receipt 字段status 获取事务状态(如果成功或恢复)。它不包含在您问题中使用的常规 getTransactionByHash 方法中。

请注意,status 不包含在拜兹纳提之前(2017 年 10 月)的交易中,并且在未来的某些交易类型中也可能会丢失。

【讨论】:

感谢您的回复,这对我来说是一个非常明确的答案!

以上是关于以太坊方法 eth_getTransactionByHash 中的“类型”列是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

第一行代码:以太坊-创建自己的私有区块链

以太坊设计理由

获取以太坊 ERC-20 代币信息的正确方法

以太坊方法 eth_getTransactionByHash 中的“类型”列是啥意思?

以太坊合约地址错误是怎么回事

用Go来做以太坊开发④智能合约