Erc-20

Etherscan API - 獲取所有代幣餘額

  • April 1, 2022

有沒有辦法通過 Etherscan API 獲取特定地址的所有 erc20 代幣餘額?

如此處所述,您可以通過其 Web UI(令牌跟踪器下拉菜單)查看令牌餘額。他們的 API 是否提供等效的功能?

據我所知,您只能查詢您已經擁有地址的特定令牌。我需要與 Ethplorer 的 API 端點等效的功能getAddressInfo/{address}

如前所述,使用 etherscan 似乎是不可能的。但是可以使用(免費的)ethexplorer.io API。

格式為:

http://api.ethplorer.io/getAddressInfo/$$ YOUR_ADDRESS $$?apiKey=freekey

例如:

http://api.ethplorer.io/getAddressInfo/0x32Be343B94f860124dC4fEe278FDCBD38C102D88?apiKey=freekey

API 文件在這裡:

https://github.com/EverexIO/Ethplorer/wiki/Ethplorer-API

網站:

https://ethplorer.io

這在他們目前的 API 中是不可能的。

根據您的項目,解決方法可能是網路抓取。這是一個使用 Lua 和 xpath 的範例:

獲取給定 ETH 地址持有代幣的所有合約地址:

function requestContractAddressesForEthAddress(ethAddress)

 -- No API method for this (as of Mar 11, 2018), therefore using web scraping

 local connection = Connection()
 local html = HTML(connection:get("https://etherscan.io/address/" .. ethAddress))
 local elements = html:xpath("//ul[@id='balancelist']/li/a")
 local addresses = {}

 elements:each(function (index, element)
   local href = element:attr('href')
   local address = string.match(href, "^%/token%/(0x[0-9a-fA-F]+)")
   table.insert(addresses, address)
 end)

 return addresses
end

獲取給定合約地址的代幣資訊(名稱、美元價格、計算正確金額的除數):

function requestTokenInfo(contractAddress)

 -- No API method for this (as of Mar 11, 2018), therefore using web scraping

 local connection = Connection()
 local html = HTML(connection:get("https://etherscan.io/token/" .. contractAddress))
 local name = html:xpath("//*[@id='address']"):text()
 local summary = html:xpath("//*[@id='ContentPlaceHolder1_divSummary']"):text()
 local decimals = tonumber(string.match(summary, "Token Decimals:%s+([%d,]+)"))

 return {
   name = name,
   price = tonumber(string.match(summary, "Value per Token:%s+$([%d%.,]+)")),
   divisor = math.pow(10, decimals)
 }
end

請注意,網路抓取被認為是不好的做法。這可能會在沒有通知的情況下中斷,因為它顯然依賴於前端的呈現方式。

我已於 2018 年 3 月 12 日聯繫了 Etherscan.io 支持,以了解這些 API 呼叫是否在他們的路線圖上。答案是提供付費定制 API 服務並不是他們的短期重點。

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