[ethers.js] 컨트랙트 이벤트 로그 및 데이터 보기

ethers.js v5 기준

const contract = await ethers.getContractAt("DasomOLIContract", contract_address);
const filter = contract.filters.DasomEvent();
const currentBlock = await ethers.provider.getBlockNumber();
const fromBlock = currentBlock - 86400;
const events = ethers.provider.getLogs({
        ...filter,
        fromBlock: fromBlock,
        toBlock: currentBlock,
      })]);
if (events.length > 0) {
  events.forEach((event: Log) => {
      console.log(`Dasom event found in block ${event.blockNumber}:`);
      console.log(`Transaction Hash: ${event.transactionHash}`);
      console.log(`Transaction data: ${event.data}`);
      const parsedLog = contract.interface.parseLog(event);
      const args = parsedLog.args;
      const arg1 = args.arg1;
      console.log(`Log Data:`, parsedLog.args);
      console.log('--------------------------');
  });
}

[ethers.js] Contract 시그니처와 hash 확인

const ca = await ethers.getContractFactory("DasomToken");
const cabi = ca.interface;
cabi.format() // Fragments 확인
cabi.forEachFunction((func, index) => { console.log(func.format()); }); // 각 함수의 시그니처 확인
cabi.forEachFunction((func, index) => { console.log(func.format(), ethers.keccak256(ethers.toUtf8Bytes(func.format()))); }); // 시그니처와 해시 값 확인.