Etherscan
有沒有 api 方法來獲取確切令牌的令牌傳輸數據?
我需要的
我需要 etherscan 令牌資訊中“令牌轉移”選項卡的所有資訊。與網站上的格式完全相同。例如,我想從這裡https://etherscan.io/token/Decentraland獲取所有令牌轉移。問題是:如何通過 api 獲取這些數據?
我試圖做的
- 對於本地解決方案,我通過 Etherscan 上的界面手動下載 CSV,但我需要定期更新數據,手動解決方案很痛苦。
- 我找到了這個答案從地址獲取令牌傳輸數據,在我看來它非常有用,但它沒有給我令牌數量資訊。實際上,它給了我 transactionHash,我試圖通過
transactions
api-methods 獲得所需的結果(這些參數在哪裡使用module=account&action=txlist
),但它沒有給我有效的數量(0.5 eth 顯示為value=500000
)。此外,我認為獲取這些資訊的方式可能更簡單——這就是我來這裡的原因。
一點程式碼
我用來獲取交易資訊的python程式碼
import requests url = 'https://api.etherscan.io/api?module=logs&action=getLogs\ &fromBlock=0\ &toBlock=latest\ &address=0x0f5d2fb29fb7d3cfee444a200298f468908cc942\ &apikey='+apikey request = requests.get(url) results = request.json()
此外,我認為獲取這些資訊的方式可能更簡單——這就是我來這裡的原因。
你是對的,有一種不同的方法可能更容易……
一個問題是你是從“遺留”、集中、脆弱的 API 思維方式來處理這個問題的——Etherscan 正在使用的所有數據;您需要的所有數據都儲存在乙太坊中。如果 Etherscan 向他們的 API 收費、他們的服務出現故障或他們決定為此收費等,您採用的方法可能會導致您的程式碼中斷。
更好的方法是直接找到源頭——乙太坊。
我想從這裡獲取所有令牌轉移
Decentraland 代幣是ERC20 代幣;這意味著我們可以確定每次傳輸令牌時都會
Transfer
觸發事件:event Transfer(address indexed from, address indexed to, uint tokens);
有諸如web3js 之類的庫可以讓您處理所有這些事件 - 歷史上和/或使用事件訂閱方法。
甚至還有Infura等服務可用於訪問乙太坊數據(這樣您就不必執行自己的本地節點)。
以及有關如何使用 Infura 創建啟用 web3 的 Web 應用程序的文件。
這就是我建議您解決問題的方式。