为什么Chainlink Keeper的交易在Polygon Mumbai的Polyscan上无法查询到?
问题原因
Chainlink Keeper采用批量Upkeep调度机制,Keeper节点发起的所有执行交易的直接调用目标都是Chainlink Keeper Registry合约,Registry合约会通过内部消息调用的方式触发你部署的目标合约0x13136d7f46bb8e5514050D6e43109ea67D7b9e3E的performUpkeep方法。
这类内部调用不属于独立的外部交易,因此Polyscan等区块浏览器默认不会将其作为指向你合约的独立交易展示,你直接搜索合约地址的交易列表时自然看不到对应记录,OpenZeppelin Defender默认交易面板也仅展示外部发起的交易,所以也不会直接显示这类内部调用记录。
查询方法
- 通过交易的内部交易标签查询
你拿到Keeper控制面板给出的任意一笔执行交易哈希,在Polyscan打开该交易详情页,切换到「内部交易」标签,即可看到Keeper Registry合约调用你目标合约performUpkeep的具体记录,该记录就是你要找的Upkeep执行凭证。 - 通过合约事件查询
你已在performUpkeep函数中添加了自定义事件,直接在Polyscan打开你的合约地址页面,切换到「事件」标签,所有Upkeep触发时产生的事件日志都会在这里展示,每条日志都关联了对应的上层执行交易哈希。 - 通过RPC接口批量查询
如果你需要批量拉取历史执行记录,可以向Mumbai网络的RPC节点发起eth_getLogs请求,过滤你的合约地址和自定义事件的主题哈希,即可拿到全量的Upkeep执行记录。
内容的提问来源于stack exchange,提问作者pbsh
相关产品推荐
相关产品推荐

