Web3.py
獲取從 Web3.py 傳輸的令牌
我試圖找出 etherscan 如何使用給定事務的日誌找到“轉移的令牌”。以這個
0x52caaf79bf913064a70a6c9d917fd4190cdb099fe79e7d3a9dfe0600e1cfbc81
任意交易為例。我使用以下程式碼(web3.py)在交易收據中查找日誌:
from web3 import Web3 provider = Web3.HTTPProvider('https://mainnet.infura.io/v3/XXXXXXXXXXXXX') w3 = Web3(provider) receipt= w3.eth.getTransactionReceipt('0x52caaf79bf913064a70a6c9d917fd4190cdb099fe79e7d3a9dfe0600e1cfbc81')
執行
receipt["logs"]
會生成可以在 Etherscan 中的“事件日誌”下找到的日誌。但是,只有 3 個日誌索引會導致令牌轉移部分(日誌 156、158 和 162)。有人可以幫助我了解 etherscan 是如何從所有日誌中知道只有這些應該出現在上面的圖片中的嗎?
它搜尋所有事件:
- 已由指定的 ERC20 代幣合約發出,在您的情況下是:
To: Contract 0xc73e0383f3aff3215e6f04b0331d58cecf0ab849
此值應出現在
to
交易收據的欄位中 2. 誰的第一個主題(topics[0]
)等於Transfer
事件簽名的雜湊:在 Javascript 中,此值為
Web3.utils.keccak256("Transfer(address,address,uint256)")
如果需要,可以使用 Python 中的等效程式碼…