Solidity

etherscan 如何獲取特定地址的所有代幣餘額?

  • January 6, 2020

我想創建服務,只需提供地址,我就可以獲取所有令牌(erc 20 和 erc721)餘額,就像專用網路的 etherscan 一樣?有沒有辦法通過為某事編寫for循環來做到這一點?etherscan 是否將其數據儲存在某個數據庫中?etherscan 如何在核心中工作?

有一些合約可以幫助你獲得指定賬戶的指定代幣餘額,如下圖所示。

https://github.com/wbobeirne/eth-balance-checker#readme

事實上,這就是 metamask 正在做的事情。

https://github.com/metamask/metamask-extension/blob/5bac055ba62bb93da28784c2beabb268256b4cf7/app/scripts/controllers/detect-tokens.js#L9

所有關於代幣和乙太幣餘額、交易等的數據都存在於區塊鏈中。Etherscan 只是從區塊鏈中獲取它們。對於 ERC20 代幣,在創建時,合約需要實現該balanceOf功能。通過地址呼叫該 ERC20 合約的函式可以獲得該地址的代幣餘額。

同樣,如果您知道所有已部署的令牌,則可以獲取所有令牌。理想情況下,您應該要求使用者選擇她感興趣的所有 ERC20 代幣餘額,就像 Metamask 所做的那樣,這樣您就不會簡單地浪費時間獲取該地址的所有各種代幣餘額,這些餘額將為零並且使用者不感興趣。

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