Web3js

監聽 ERC20 事件的標準是什麼?

  • July 2, 2019

嗨,我在這裡有點困惑。官方EIP文件指出

event Transfer(address indexed _from, address indexed _to, uint256 _value)

是 Transfer 事件的樣子。如果我想在 web3 中收聽這個事件,我將尋找這個界面中提到的鍵,即_from,_to_value.

我查看了一些頂級 ERC20 合約,它們在事件中都有不同的鍵名。從跳過_到完全更改valueamount。如果我正在收聽來自多個令牌的傳輸事件,有沒有辦法可以概括這一點。我可以通過不知道鍵名來獲得某個職位的價值嗎?

參數的順序始終相同,儘管它們的名稱可能不同。此外,您正在提供自己的 ABI 文件,因此您很可能使用該 ABI 文件中給出的參數名稱。EVM/Solidity 有線協議僅對參數類型進行雜湊處理,而不是它們的名稱,因此實際名稱與原始區塊鏈數據無關。

在 ERC-20 標準接近最終形式之前部署了很多代幣,因此遺留代幣存在一些怪癖。

事件的“硬”簽名Transfer是 32 位字,字節 0-4:

keccak("Transfer(address,address,uint256)")

有效負載是 3 個 256 位字,因為 EVM 中的幾乎每個值都是 256 位:

- address 1 
- address 2
- amount

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