Solidity
etherscan 如何獲取特定地址的所有代幣餘額?
我想創建服務,只需提供地址,我就可以獲取所有令牌(erc 20 和 erc721)餘額,就像專用網路的 etherscan 一樣?有沒有辦法通過為某事編寫for循環來做到這一點?etherscan 是否將其數據儲存在某個數據庫中?etherscan 如何在核心中工作?
有一些合約可以幫助你獲得指定賬戶的指定代幣餘額,如下圖所示。
https://github.com/wbobeirne/eth-balance-checker#readme
事實上,這就是 metamask 正在做的事情。
所有關於代幣和乙太幣餘額、交易等的數據都存在於區塊鏈中。Etherscan 只是從區塊鏈中獲取它們。對於 ERC20 代幣,在創建時,合約需要實現該
balanceOf
功能。通過地址呼叫該 ERC20 合約的函式可以獲得該地址的代幣餘額。同樣,如果您知道所有已部署的令牌,則可以獲取所有令牌。理想情況下,您應該要求使用者選擇她感興趣的所有 ERC20 代幣餘額,就像 Metamask 所做的那樣,這樣您就不會簡單地浪費時間獲取該地址的所有各種代幣餘額,這些餘額將為零並且使用者不感興趣。