为web3.js添加eth.getRawTransactionByHash方法的手动修改指南

作者:阿沐时间:2026-10-22 13:12:48浏览:223

本文介绍如何在web3.js中手动添加未文档化的eth_getRawTransactionByHash方法。通过修改types.d.ts、index.js及formatters.js文件,实现获取原始交易数据的功能。适用于1.0版本,提供具体代码示例与注意事项。

添加eth.getRawTransactionByHash方法步骤

在以太坊节点通信中,JSON-RPC接口提供了[[t0]]这一功能。

https://ethereum.stackexchange.com/questions/7473/get-raw-transaction-from-hash

该接口属于JSON-RPC协议中一个未被官方文档明确列出的方法。


curl -H "Content-Type: application/json" -X POST --data \
'{"jsonrpc":"2.0","method":"eth_getRawTransactionByHash","params":["<TX_HASH>"],"id":1}' http://localhost:8545
<TX_HASH> - transaction id

首先,在项目的node_modules目录下定位到web3库的types.d.ts文件。

在Eth类定义中扩展方法签名。

具体操作为在Eth类内部添加相应的方法定义。


 getRawTransaction(hash: string, cb?: Callback<TransactionRaw>): Promise<TransactionRaw>

同时,需要新增TransactionRaw类型定义以支持返回值结构。


export declare interface TransactionRaw {
 raw: string
}

其次,在node_modules目录下找到web3-eth模块的index.js文件。


methods={}

在此文件中注册并实现该方法。


new Method({
   name: 'getRawTransaction',
   call: 'eth_getRawTransactionByHash',
   params: 1,
   inputFormatter: [null],
   outputFormatter: formatter.outputTransactionRawFormatter
  }),

接着,进入node_modules目录下的web3-core-helpers模块。

在formatters.js文件中增加outputTransactionRawFormatter格式化函数,并在module.exports中导出该函数。


/**
 * Formats the output of a transaction raw value
 *
 * @method outputTransactionRawFormatter
 * @param {Object} tx
 * @returns {Object}
*/
var outputTransactionRawFormatter = function (tx){
 return tx;
};
module.exports = {
 inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,
 inputBlockNumberFormatter: inputBlockNumberFormatter,
 inputCallFormatter: inputCallFormatter,
 inputTransactionFormatter: inputTransactionFormatter,
 inputAddressFormatter: inputAddressFormatter,
 inputPostFormatter: inputPostFormatter,
 inputLogFormatter: inputLogFormatter,
 inputSignFormatter: inputSignFormatter,
 outputBigNumberFormatter: outputBigNumberFormatter,
 outputTransactionFormatter: outputTransactionFormatter,
 outputTransactionRawFormatter: outputTransactionRawFormatter,
 outputTransactionReceiptFormatter: outputTransactionReceiptFormatter,
 outputBlockFormatter: outputBlockFormatter,
 outputLogFormatter: outputLogFormatter,
 outputPostFormatter: outputPostFormatter,
 outputSyncingFormatter: outputSyncingFormatter
};

注意:上述修改方案基于web3.js 1.0版本,其他版本可能存在差异。

总结

以上内容介绍了在web3.js中手动添加eth.getRawTransactionByHash(txhash)方法的具体步骤。希望这些信息能对您有所帮助。如有任何疑问,欢迎留言,我们将及时回复。感谢支持!

作者最新文章