Skip to content

Instantly share code, notes, and snippets.

@dhavaln
Last active May 24, 2022 10:00
Show Gist options
  • Save dhavaln/63899ccd7412322d4aa4c6a7fa51da09 to your computer and use it in GitHub Desktop.
Save dhavaln/63899ccd7412322d4aa4c6a7fa51da09 to your computer and use it in GitHub Desktop.
Scan Chain blocks to query Event Logs
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);
};
@dhavaln
Copy link
Author

dhavaln commented May 24, 2022

The above code snippet is trying to scan events from this contract.

https://rinkeby.etherscan.io/address/0xb2B54f038aA0DDdEfA254E0a95e859A8EE1d0588#events

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment