Wallets
有沒有辦法只驗證乙太坊錢包地址?
我對加密貨幣不是很熟悉,但我需要以某種方式驗證乙太坊錢包地址。我找到了一種方法,但它也接受令牌合約地址。那麼有沒有辦法區分它們,只允許錢包地址而不是合約地址
如果你使用
web3
你可以使用這種方式web3_instance.eth.getCode(address).then(function (code) { if (code === "0x") { // this address is account } })
我不太確定是否有用於 C++ 的 web3 庫,但另一種方法是使用Etherscan API來實現這一點。您需要註冊並獲取您的 api 密鑰,然後您才能在一定限制下使用 Etherscan API。
這就是你將如何建構你的GET 請求:
https://api.etherscan.io/api?module=contract&action=getabi&address=<YOUR_ADDRESS>&apikey=<YOUR_API_KEY>
<YOUR_ADDRESS>
您將要驗證的地址在哪裡,<YOUR_API_KEY>
value 是您將從 Etherscan API 接收的密鑰。您將從請求中收到的兩個主要響應是:
不是智能合約的地址-
{"status":"0","message":"NOTOK","result":"Contract source code not verified"}
以及作為智能合約的地址-
{"status": "1","message": "OK","result": <ABI_DEFENITION_OF_THE_CONTRACT>}