Web3js
監聽 ERC20 事件的標準是什麼?
嗨,我在這裡有點困惑。官方EIP文件指出
event Transfer(address indexed _from, address indexed _to, uint256 _value)
是 Transfer 事件的樣子。如果我想在 web3 中收聽這個事件,我將尋找這個界面中提到的鍵,即
_from
,_to
和_value
.我查看了一些頂級 ERC20 合約,它們在事件中都有不同的鍵名。從跳過
_
到完全更改value
為amount
。如果我正在收聽來自多個令牌的傳輸事件,有沒有辦法可以概括這一點。我可以通過不知道鍵名來獲得某個職位的價值嗎?
參數的順序始終相同,儘管它們的名稱可能不同。此外,您正在提供自己的 ABI 文件,因此您很可能使用該 ABI 文件中給出的參數名稱。EVM/Solidity 有線協議僅對參數類型進行雜湊處理,而不是它們的名稱,因此實際名稱與原始區塊鏈數據無關。
在 ERC-20 標準接近最終形式之前部署了很多代幣,因此遺留代幣存在一些怪癖。
事件的“硬”簽名
Transfer
是 32 位字,字節 0-4:keccak("Transfer(address,address,uint256)")
有效負載是 3 個 256 位字,因為 EVM 中的幾乎每個值都是 256 位:
- address 1 - address 2 - amount