Contract-Deployment

無法發布源:發布源時 Brownie 中的 API 請求超時

  • February 22, 2022

在 FreeCodeCamp 上工作和部署 FundMe.sol Patric Collins 教程時。我在使用 FundMe.deploy({"from":account}, publish_source=True). Brownie中產生的錯誤如下raise ValueError(f"API request failed with: {data['result']}") ValueError: API request failed with: []:如果有人知道這個問題的解決方案,那將是一個很大的幫助。

我已經嘗試過的:

  • 執行測試以進行調試。
  • 試圖刪除 SafeMath (在閱讀後**get_verification_info導致--pdb**我將其刪除。)
  • 嘗試通過驗證 Rinkeby Etherscan API urlcurl
  • 重新檢查我的**.env**
  • 試圖在 Discord/其他社區上提問。
  • 檢查 Github Pages/Google/StackOverflow/Eth-Stackoverflow 的解決方案。

這是deploy.py的原始碼:

def deploy_fund_me():
   # Getting the account.
   account = get_account()
   # Deploying Contract with publish_source=True
   fund_me = FundMe.deploy({"from":account}, publish_source=True)
   print(f"[Contract] Contract Deployed to {fund_me.address}")

好的!更多的絆腳石,我找到了一個可行的解決方案。結果我還需要將以下內容添加到brownie-config.yaml。Brownie 不會自動使用 Infura,我們需要手動將其添加到網路中。添加以下程式碼並使用執行deploy.py後 ,brownie run ./scripts/deploy.py --network rinkeby. 發布成功。

要修復上述錯誤,只需將以下程式碼添加到您已經存在(或創建)的 brownie-config.yaml中,如果您在其他網路上工作。相應地修改以下程式碼。\

live:
 - name: Ethereum
   networks:
     - name: Rinkeby (Infura)
       chainid: 4
       id: rinkeby
       host: https://mainnet.infura.io/v3/$WEB3_INFURA_PROJECT_ID
       explorer: https://api-rinkeby.etherscan.io/api

以上解決方法可以參考@Matnad的“Common Pitfalls”

我在我的項目文件夾中使用 .env 文件

export ETHERSCAN_TOKEN=xxxx
export WEB3_INFURA_PROJECT_ID=xxxx

然後在 brownie-config.yaml 中你所要做的就是添加dotenv: .env 並且 publish_source=True 就可以了。

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