Tokens

如何查看乙太坊智能合約資訊?

  • September 10, 2019

我想知道3件事:

  1. 地址是智能合約嗎?
  2. 這個智能合約是 ERC20 還是 ERC721 代幣?
  3. Solidity 程式碼是公開的嗎?

對於 1,您可以使用web3.eth.getCode(address)Web3 API 的功能。對於合約地址,它返回合約字節碼,而對於非合約地址,它返回類似"0x".

對於 3,這取決於“公共”對您意味著什麼。如果您的意思是智能合約是否已驗證Etherscan.io上發布的原始碼,那麼您可以使用 API 呼叫通過合約地址獲取原始碼,或下載所有已驗證原始碼的合約地址的完整列表:https://etherscan .io/apis#contracts

2是最棘手的,因為除了分析其原始碼之外,沒有可靠的方法可以知道智能合約是否實現了特定的介面。雖然可能有一些提示。您可以檢查智能合約是否曾經記錄Transfer(address indexed, address indexed, uint256)(對於 ERC-20)或Transfer(address indexed, address indexed, uint256 indexed)(對於 ERC-721)事件,但這樣您將無法辨識其代幣從未轉移過的代幣合約。

目前尚不清楚您想在哪一層(鏈上或鏈下)找到此資訊。一般來說:

地址是智能合約嗎?

這可以通過查看地址是否有關聯程式碼來檢查。

這個智能合約是 ERC20 還是 ERC721 代幣?

在鏈下,您可以通過觀察 Etherscan 上的合約來檢查這一點。還有一些你可以使用的介面會告訴你同樣的事情。

程式碼是公開的嗎?

字節碼是公開的。從技術上講,您可以將其解構為 Solidity。在某些情況下,作者會發布原始碼。是 Etherscan 上經過驗證的合約的範例,您可以在其中查看原始碼。

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