Erc-20

訂閱各種ERC20的多個Transfer事件

  • September 28, 2021

我需要訂閱幾個不同 ERC20 的 Transfer 事件,以便捕捉到我的契約的轉移。問題來了:要擷取創建每個合約實例所需的所有事件,我可以為每個合約使用標準 ERC20 abi 還是必須專門用於精確的 ERC20 智能合約?

是的,您可以使用標準 ERC20 的 ABI,只要代幣真正遵循標準,這應該可以很好地工作,在大多數情況下都是如此。

如果您只對標準 ERC20Transfer事件感興趣,那麼即使是 ABI 的一個子集也足夠了。例如,如果您在 Javascript 中實現它,那麼您可以簡單地使用:

const ABI =
[
   {
       "anonymous": false,
       "inputs":
       [
           {"indexed": true , "name": "from" , "type": "address"},
           {"indexed": true , "name": "to"   , "type": "address"},
           {"indexed": false, "name": "value", "type": "uint256"}
       ],
       "name": "Transfer",
       "type": "event"
   }
];

const contract = new web3.eth.Contract(ABI, address);
contract.getPastEvents("Transfer", {fromBlock: ..., toBlock: ...}).then(events => {
   for (const event of events) {
       console.log(event.returnValues.from);
       console.log(event.returnValues.to);
       console.log(event.returnValues.value);
   }
});

您也可以自由選擇輸入參數名稱,即replacefrom等。to``value

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