2
如果只從輸入中得到ethereum地址,是否有找到它是否與ERC20匹配?如何檢測以太坊地址是否是ERC20令牌合同?
如果只從輸入中得到ethereum地址,是否有找到它是否與ERC20匹配?如何檢測以太坊地址是否是ERC20令牌合同?
有很多可能的方法來實現這一點。一個可能的快速和骯髒的解決辦法是檢查是否通過調用下面就合同的地址存在ERC20功能:
eth.call({to:contractAddress, data:web3.sha3("balanceOf(address)")})
非ERC20會返回一個「空」 0x
六角響應,而一個ERC20會給你一個32byte uint
,在這種情況下爲0,但如果您在數據中提供了一個地址,那麼它將爲您提供該地址的實際令牌餘額。
這不是確定合同是ERC20的保證方式,因爲其他合同可能會公開相同的功能,但它是一個快速而簡單的檢查。您可以在totalSupply()
等添加額外的電話以獲得更多確認。
我在想這裏的eth是什麼? –
客戶端API https://web3js.readthedocs.io/en/1.0/web3-eth.html#call –