如何查看本地部署的完整以太坊区块链全量数据?
本地Hardhat节点查询全量链上数据操作指南
首先要先确认你的节点运行模式:如果你执行部署命令前没有单独启动npx hardhat node进程,本次部署用的是Hardhat临时内存节点,命令执行结束后节点会直接销毁,链上数据不会持久化保存,你需要先启动独立节点后重新部署,才能查询到对应数据。
以下是具体的查询操作方法:
方法1:直接查看节点实时日志
这是最简单的方法,所有链上操作都会直接在节点运行的终端输出:
- 新开一个终端窗口,执行命令启动本地持久化节点:
npx hardhat node - 启动成功后终端会输出初始测试账户、私钥信息,后续所有链上操作(包括交易发起、区块生成、合约部署、事件触发等)的全量明细都会实时打印在该终端,包含交易哈希、发起/接收地址、gas消耗、输入数据、返回值等全部信息。
- 再新开一个终端窗口执行你的部署命令
npx hardhat run scripts/deploy.js --network localhost,对应的部署交易细节会同步显示在节点终端中。
方法2:通过Hardhat控制台主动查询历史数据
如果需要主动检索指定区块、交易的信息,可以用Hardhat自带的交互控制台:
- 确保本地hardhat node进程正常运行,新开终端执行命令进入控制台:
npx hardhat console --network localhost - 执行以下命令查询对应数据:
- 查询当前链上最新区块高度:
await ethers.provider.getBlockNumber() - 查询指定区块的完整数据(包含区块内所有交易明细):以查询第5个区块为例,执行
await ethers.provider.getBlock(5, true),第二个参数传true会返回区块内所有交易的完整信息 - 查询指定交易的详情:拿到交易哈希后,执行
await ethers.provider.getTransaction("替换为你的交易哈希") - 查询指定地址的交易记录:遍历所有区块,筛选出
from或to字段为目标地址的交易即可。
- 查询当前链上最新区块高度:
方法3:导出完整链上账本到本地文件
如果需要将全量链上数据导出做后续分析,可以自己写简单的脚本完成导出:
- 新建脚本文件
scripts/exportFullChain.js,写入以下内容:
const hre = require("hardhat"); async function main() { const latestBlock = await hre.ethers.provider.getBlockNumber(); const fullChainData = []; // 遍历所有区块拉取完整数据 for (let blockNum = 0; blockNum <= latestBlock; blockNum++) { const block = await hre.ethers.provider.getBlock(blockNum, true); fullChainData.push(block); } // 格式化输出JSON console.log(JSON.stringify(fullChainData, null, 2)); } main().catch(err => { console.error(err); process.exitCode = 1; });
- 执行导出命令:
npx hardhat run scripts/exportFullChain.js --network localhost > full_chain.json - 执行完成后当前目录下的
full_chain.json文件就包含了本地链从创世块到最新块的所有链上数据,包括所有区块、交易、事件日志等完整信息。
内容的提问来源于stack exchange,提问作者Blockchain Kid
相关产品推荐
相关产品推荐

