如何在 etherscan 上驗證合約?
我很難在 Etherscan 上驗證契約。
我使用乙太坊錢包部署了合約,我可以在 Etherscan 上有效地找到它,但是當我將完全相同的程式碼複製粘貼到驗證時,我得到了錯誤:
對不起!編譯後的合約字節碼與…的合約創建碼不匹配
我錯過了重點還是什麼?如何正確獲得在 etherscan 上驗證的契約?
根據您的乙太坊錢包版本,編譯器版本也不同。對於最新版本,您應該在 Etherscan 上選擇此版本:v0.2.1-2016-01-30
由於這篇文章的答案很舊。我想我會提供一種更新的、程序化的方式來使用 Truffle 和 Brownie 在 Etherscan 上驗證合約。
對於 Truffle 和 Brownie,您需要在 Etherscan 上創建一個帳戶並獲取 API 令牌。將它作為環境變數添加到 .env 文件中很重要。
使用 Brownie:
您的環境變數應如下所示:
export ETHERSCAN_TOKEN=0000000000000000000000000000000000
在您的合約部署腳本中,添加驗證源參數並將其設置為 true。它應該如下所示。
def deploy_token(): account = get_account() token_contract = ERC20Token.deploy( "MyTokenName", "TOKENSYMBOL", {"from": account}, publish_source=True )
當您執行部署腳本時,您的合約將被自動驗證,您將在控制台中看到一條驗證消息。
使用 Truffle:
您需要下載依賴項
npm install truffle-plugin-verify
。然後,將其添加到您的 truffle-config.js 中:plugins: [ "truffle-plugin-verify" ], api_keys: { etherscan: process.env.ETHERSCAN_API_KEY }
注意:這假設您已經獲得了 Etherscan 令牌並將其作為環境變數添加到您的 .env 文件中。
將合約部署到網路後,執行以下命令:
truffle run verify yourContract --network nameOfNetwork
另外,如果有人知道使用 Hardhat 驗證契約的簡單方法,請在下面添加答案。將所有這些資訊放在一個地方會很好。
我也在學習這些東西,所以如果有人有更有效的驗證契約的方法,請告訴我。