Contract-Deployment

如何在 etherscan 上驗證合約?

  • December 22, 2021

我很難在 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 驗證契約的簡單方法,請在下面添加答案。將所有這些資訊放在一個地方會很好。

我也在學習這些東西,所以如果有人有更有效的驗證契約的方法,請告訴我。

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