Transactions
如何使用 web3 獲取有關特定合約地址的交易歷史列表?
我真的不知道如何使用 web3.py 獲取有關特定合約地址的交易歷史列表
我使用 Infura HTTPProvider
我只有一個“契約地址”。
我可以使用 web3.py 獲取有關此合約地址的資訊嗎?
獲取所有交易歷史記錄需要您迭代自合約創建以來的每個區塊。正如您可能猜到的那樣,這將非常慢,而且這取決於您的
Infura
計劃:速率限制和可用的歷史塊數。更快的解決方案
web3py
相反,您可以使用索引服務,例如
Etherscan
.如API 文件中所述,您可以通過以下方式查詢交易歷史記錄:
https://api.etherscan.io/api?module=account&action=txlist&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a&startblock=0&endblock=99999999&page=1&offset=10&sort=asc&apikey=YourApiKeyToken
較慢的解決方案
web3py
eth_getBlockByNumber
如果您的 Infura 計劃允許,您可以使用JSON-RPC 方法迭代塊並獲取塊詳細資訊。在web3py
中,它等價於web3.eth.getBlock(blocknumber)
。web3.eth.getTransaction(txhash)
然後,您將使用並根據您的契約地址檢查來自/到地址的交易雜湊值。看:https://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.getTransaction
https://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.getBlock