Logs

是否可以獲取智能合約的日誌數據?

  • February 19, 2022

我想知道是否可以獲取智能合約的日誌數據。問題是我需要獲取地址、tokenId 和更多變數,但是一旦部署了合約,我不知道如何獲取這些資訊。先感謝您!

在通過對該函式的簡單 web3 呼叫獲取變數數據後,您可以將變數聲明為公共變數。

正如 Akshay 所說,您可以簡單地將變數公開以便以後從合約中讀取,但您也可以從交易收據中讀取事件。

使用 ethersjs 的範例:Test.sol

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract Test {
   event TestEvent(uint256 data);

   constructor() {
       emit TestEvent(123);
   }
}

部署.js

const Test = await ethers.getContractFactory('Test');
let test = await Test.deploy();
test = await test.deployed();
let receipt = await test.deployTransaction.wait();
let events = receipt.events;

let testEvent = events.filter(({event}) => event == 'TestEvent')[0];
console.log(testEvent.args.data);
>> BigNumber { value: "123" }

引用自:https://ethereum.stackexchange.com/questions/121956