Contract-Deployment
無法發布源:發布源時 Brownie 中的 API 請求超時
在 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 url
curl
- 重新檢查我的**.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 就可以了。