在 Rinkeby etherscan 上驗證代幣合約
我正在 Rinkeby 上測試我的新代幣合約。合約是使用 Brownie 編譯和部署的。我正在將令牌部署到 Rinkeby,並且它已正確編譯和部署。
但是,當我嘗試在 Etherscan 上驗證我的合約時,它一直失敗並出現以下錯誤:
錯誤!無法生成合約字節碼和 ABI
在原始碼中找到以下 ContractName(s):Context.sol:Context, IERC20.sol:IERC20, Token.sol:Token
但我們無法找到匹配的字節碼 (err_code_2)
我的契約包含多個文件(確切地說是 3 個),我使用的是 Solidity 編譯器版本 0.8.1。
我嘗試使用拜占庭、君士坦丁堡和伊斯坦布爾 EVM 進行編譯和部署。但我不斷收到同樣的錯誤。
在使用 Brownie 進行部署時,我無法使用該
publish_source
參數,因為這需要 API 密鑰,而且據我所知,Etherscan Rinkeby 沒有 API 密鑰。我錯過了什麼嗎?還是無法在 Etherscan Rinkeby 上進行驗證?
似乎問題確實是etherscan rinkeby。我在 ropsten 上部署了合約,然後用 etherscan 對其進行了驗證,一切順利,沒有任何問題得到驗證。
即使在設置 brownie 以使用我的 etherscan API 密鑰時也是如此。它總是無法連接到
api.rinkeby.etherscan.io
. 但是在 ropsten 上沒有問題。
簡短的回答是:您必須在etherscan.io上為主網和其他公共測試網(Ropsten、Rinkeby、Goerli..)創建 API 密鑰。
(獎金)
此外,在嘗試使用位於子目錄中的介面驗證契約時,我遇到了一些問題。
也許不是你的情況,但如果你使用 Truffle 來管理合約部署,有一個有趣的外掛可以自動驗證合約:truffle-plugin-verify。
我試過了,效果很好。你基本上需要
- 通過 npm 安裝 truffle & 外掛
- 在 Etherscan 上創建 API 密鑰
- 更新松露配置文件
- 使用錢包簽署交易以創建合約(例如:@truffle/hdwallet-provider)
- 遷移,最後驗證合約