Erc-20
訂閱各種ERC20的多個Transfer事件
我需要訂閱幾個不同 ERC20 的 Transfer 事件,以便捕捉到我的契約的轉移。問題來了:要擷取創建每個合約實例所需的所有事件,我可以為每個合約使用標準 ERC20 abi 還是必須專門用於精確的 ERC20 智能合約?
是的,您可以使用標準 ERC20 的 ABI,只要代幣真正遵循標準,這應該可以很好地工作,在大多數情況下都是如此。
如果您只對標準 ERC20
Transfer
事件感興趣,那麼即使是 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); } });
您也可以自由選擇輸入參數名稱,即replace
from
等。to``value