如何查询Hardhat本地网络中已执行完成的交易详情
问题解答
仅通过hardhat node启动的节点是否满足查询需求?
完全可以满足,不需要额外部署其他工具。Hardhat本地节点是标准EVM兼容节点,内置完整的链上数据存储能力和JSON-RPC接口,你已经可以在Metamask中查询到交易,说明节点已经正常存储了交易数据,完全支持通过交易哈希查询详情。
具体实现方式
你可以选择以下任意一种方式查询:
- 命令行直接发送RPC请求
直接执行curl命令向默认监听的http://localhost:8545节点发送查询请求:
如果需要查询交易执行后的收据(包含gas消耗、事件日志、交易状态等信息),把方法替换为curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["替换为你的交易哈希"],"id":1}' http://localhost:8545eth_getTransactionReceipt即可。 - Hardhat脚本/测试代码中查询
如果你是在Hardhat项目的代码中需要调用查询逻辑,直接用ethers.js的provider接口即可,示例如下(基于ethers v6版本):// 查询交易基础信息 const transaction = await ethers.provider.getTransaction("你的交易哈希"); // 查询交易执行收据 const receipt = await ethers.provider.getTransactionReceipt("你的交易哈希"); - 交互式查询
运行npx hardhat console --network localhost进入Hardhat控制台,直接输入上面的ethers查询代码即可,适合临时单次查询的场景。
是否需要使用Ganache?
不需要。Ganache和Hardhat本地节点同属本地EVM测试节点,核心功能高度重叠,你已经在使用hardhat node的情况下,没有必要额外部署Ganache来实现交易查询需求,只有当你有Ganache专属的功能依赖时才需要切换。
小提示:
hardhat node默认是内存节点,重启后所有链上数据会清空,如果需要持久化交易数据,可以在启动节点时添加--export参数导出链数据,或者在Hardhat配置文件中配置本地网络的持久化路径。
内容的提问来源于stack exchange,提问作者munanadi
相关产品推荐
相关产品推荐

