如何检索以太坊链上最新部署的智能合约?
如何检索以太坊链上最新部署的智能合约
直接调用以太坊节点接口解析区块
合约部署交易的核心特征是to字段为空(因为创建新合约时没有预设接收地址),交易执行成功后会生成对应的合约地址。你可以通过节点的JSON-RPC接口完成以下操作:- 调用
eth_getBlockByNumber获取最新区块(参数传latest,第二个参数设为true以返回完整交易数据) - 遍历区块内的交易,筛选出
to为null的交易 - 对筛选出的交易调用
eth_getTransactionReceipt拿到合约地址,再用eth_getCode验证该地址是否包含合约代码(返回值非0x即为有效合约)
简单的JS示例(基于ethers.js):
const provider = new ethers.providers.JsonRpcProvider('http://your-node-url'); const latestBlock = await provider.getBlockWithTransactions('latest'); for (const tx of latestBlock.transactions) { if (tx.to === null) { const receipt = await provider.getTransactionReceipt(tx.hash); const contractCode = await provider.getCode(receipt.contractAddress); if (contractCode !== '0x') { console.log('新部署合约地址:', receipt.contractAddress); } } }- 调用
自建链上索引服务
如果需要长期批量监控,可以自己部署链上索引工具(比如Erigon的索引模块、本地Subgraph服务),这类工具会实时同步以太坊全链数据,并自动标记合约部署记录,你可以直接查询本地索引库获取最新合约,无需每次遍历区块。实时监听新区块推送
通过节点的eth_subscribe接口订阅newHeads事件,每当有新区块生成就自动触发合约解析逻辑,能第一时间获取最新部署的合约,适合实时告警或动态监控场景。
内容的提问来源于stack exchange,提问作者JR_
相关产品推荐
相关产品推荐

