Last active
May 24, 2022 10:00
-
-
Save dhavaln/63899ccd7412322d4aa4c6a7fa51da09 to your computer and use it in GitHub Desktop.
Scan Chain blocks to query Event Logs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ethers = require('ethers'); | |
const ECO = require('../contracts/ECOContract.json'); | |
const { CONTRACT_ADDRESS, DEPLOYER_KEY, NETWORK_URL } = process.env; | |
const provider = new ethers.providers.JsonRpcProvider(NETWORK_URL); | |
const deployerWallet = new ethers.Wallet(DEPLOYER_KEY); | |
// This block will come from DynamoDB last checkpoint block | |
const originBlock = 10730324; | |
let companyERCTokenDeployedTopic = ethers.utils.id("CompanyERCTokenDeployed(string,address)"); | |
let vestingWalletAddedTopic = ethers.utils.id("VestingWalletAdded(address)"); | |
const eco = new ethers.Contract( | |
CONTRACT_ADDRESS, | |
ECO.abi, | |
provider | |
); | |
module.exports.handler = async (event, context, callback) => { | |
const currentBlockNumber = await provider.getBlockNumber(); | |
console.log('origin block', originBlock, 'current block', currentBlockNumber); | |
let filter = { | |
address: CONTRACT_ADDRESS, | |
fromBlock: originBlock, | |
toBlock: currentBlockNumber, | |
topics: [] | |
} | |
let events = []; | |
const logs = await provider.getLogs(filter); | |
logs.forEach((log) => { | |
const eventData = eco.interface.parseLog(log); | |
let storeEvent = {}; | |
if(eventData.name === 'CompanyERCTokenDeployed'){ | |
storeEvent.name = eventData.name, | |
storeEvent.data = { | |
tokenName: eventData.args[0], | |
tokenAddress: eventData.args[1] | |
}; | |
}else if(eventData.name === 'VestingWalletAdded'){ | |
storeEvent.name = eventData.name, | |
storeEvent.data = { | |
company: eventData.args[0] | |
}; | |
} | |
// Save the event log data in DDB | |
// console.log(storeEvent); | |
events.push(storeEvent); | |
}); | |
console.log(events); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The above code snippet is trying to scan events from this contract.
https://rinkeby.etherscan.io/address/0xb2B54f038aA0DDdEfA254E0a95e859A8EE1d0588#events