Etherscan

有沒有 api 方法來獲取確切令牌的令牌傳輸數據?

  • October 23, 2018

我需要的

我需要 etherscan 令牌資訊中“令牌轉移”選項卡的所有資訊。與網站上的格式完全相同。例如,我想從這裡https://etherscan.io/token/Decentraland獲取所有令牌轉移。問題是:如何通過 api 獲取這些數據?

我試圖做的

  1. 對於本地解決方案,我通過 Etherscan 上的界面手動下載 CSV,但我需要定期更新數據,手動解決方案很痛苦。
  2. 我找到了這個答案從地址獲取令牌傳輸數據,在我看來它非常有用,但它沒有給我令牌數量資訊。實際上,它給了我 transactionHash,我試圖通過transactionsapi-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 應用程序的文件。

這就是我建議您解決問題的方式。

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