Etherscan

是否可以獲得地址的代幣轉移?

  • October 22, 2021

我想獲得地址(傳入)的令牌傳輸,但我想一旦我進行了排序,我就可以弄清楚。

所以例如這裡 - https://etherscan.io/address/0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be#tokentxns

他們有所有的代幣轉移,我在他們的 API 中看不到所有的代幣轉移,所以我想知道是否有人知道如何讓所有的代幣轉移在地址上進行。我在嘗試使用 web3.js 並嘗試訂閱事件時嘗試了很多事情。我意識到當智能合約傳輸令牌時,會呼叫並發出 Transfer 事件,但我看不到如何使用 etherscan API 顯示所有令牌傳輸。多謝你們。

如果你想使用 etherscan API,你可以使用https://etherscan.io/apis#logs

但是,您必須知道您希望觀看的所有代幣的合約地址。

ERC20 的 Transfer 事件定義為

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

這意味著:

  • topic0 將是事件本身簽名的雜湊
  • topic1 將是發件人的地址
  • topic2 將是接收者的地址

對於方向,您可以查看轉賬交易的交易收據中的日誌。-> 例如https://etherscan.io/tx/0x5c354e4f25f2da8ee608c445cad43c171bc553859dd787fc0800a904344a7ecd#eventlog

當然,你可以像這樣做:https://api.etherscan.io/api?module=logs&action=getLogs&fromBlock=0&toBlock=latest&topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef&topic2=0x000000000000000000000000001c356c0be5dd6c91ca24ef04d9e10081510682

此處topic2的參數指定獲取所有傳入令牌傳輸的地址(填充到 256 位)。

以下是結果記錄的範例:

{ "address":"0x2155877da05c52368b830bfd56e96405a2668d8b", // Token smart contract
 "topics":[ 
   "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
   "0x000000000000000000000000a67d0d44eee2a6ed2081a6f50bb59dd41df3c554", // From
   "0x000000000000000000000000001c356c0be5dd6c91ca24ef04d9e10081510682"], // To
 "data":"0x00000000000000000000000000000000000000000000000000000000000003e8", // Amount
 "blockNumber":"0x57ca63",
 "timeStamp":"0x5b1a7e82",
 "gasPrice":"0x28fa6ae00",
 "gasUsed":"0x14ca6",
 "logIndex":"0x30", 
 "transactionHash":"0x523ae8fbb7db6103cd7f821896a6f6a5a830cbc63d980a44760459633b80e24f",
 "transactionIndex":"0x8a"}

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