持续监听智能合约事件
Posted
技术标签:
【中文标题】持续监听智能合约事件【英文标题】:Continuously listening to smart contract events 【发布时间】:2021-12-01 02:19:15 【问题描述】:我的 NFT 项目架构只有在发生铸币事件时才会发出 minted
事件,然后我想收听该事件,因此我触发了 JSON 内容的上传,该内容随后对代币所有者(因为任何人都可以通过访问baseURI/tokenID
来访问所有代币的内容,我希望在铸造代币之前保密)。
我想创建一个函数来持续监听来自minted
事件的新事件。我正在尝试使用以下实现来访问新事件,因为我找不到持续侦听来自合约的事件的实现。
async function listener()
events = nftContract.getPastEvents("minted",fromBlock: 1, function(err,res)
console.log(res);
)
创建一个继续从合约中轮询事件的函数的最佳方法是什么?
【问题讨论】:
我在这里向您推荐我的答案:Getting all newly minted ERC721 contracts with an ethereum node 【参考方案1】:解决方案的完整代码是这样的:
const ethers = require('ethers');
const CONTRACT_ADDRESS = "0x10820dB......";
const ABIJSON = JSON.parse('"_format": "hh-sol-artifact-1", "contractName": "testcontract", "....')
provider = new ethers.providers.AlchemyProvider("ropsten");
const contract = new ethers.Contract(CONTRACT_ADDRESS, ABIJSON.abi, provider);
contract.on("eventName", ( caller,tokenID) =>
//this section is called every time an event is emitted
)
【讨论】:
以上是关于持续监听智能合约事件的主要内容,如果未能解决你的问题,请参考以下文章