Rinkeby contracts deployment Error: Timeout

Rinkeby contracts deployment Error: Timeout

我试图按照本教程进行操作:

https://docs.opensea.io/docs/1-structuring-your-smart-contract

甚至发现这个非常有用的 YouTube 视频可以指导我:

https://www.youtube.com/watch?v=lbXcvRx0o3Y&ab_channel=DanViau

但是我在安装和设置我需要的一切后遇到了问题。当我尝试使用此 bash 命令部署合约时出现问题:

truffle deploy --network rinkeby

我得到的错误信息是:

Error: There was a timeout while attempting to connect to the network.
   Check to see that your provider is valid.
   If you have a slow internet connection, try configuring a longer timeout in your Truffle config. Use the networks[networkName].networkCheckTimeout property to do this.
at Timeout._onTimeout (C:\Users\alonb\.nvm\versions\node\v12.22.5\bin\node_modules\truffle\build\webpack:\packages\provider\index.js:56:1)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)

这不是由慢速互联网连接引起的 - 我知道这是因为我已经尝试在 3 个不同的 WiFi 连接上执行此命令,一个是 200 Mb/s 速率。

我尝试更改 truffle-config.js 文件并添加更长的超时阈值(如建议的 here),但唯一改变的是错误消息花费了更长的时间出现。

技术信息 - 我正在使用 Git Bash,npm 版本 6.14.14,nvm 版本 0.38.0,节点版本 12.22.5。

有什么建议吗?我迷路了。

阿隆

解决方案非常简单 -

而不是只使用 Alchemy 密钥的相关部分:

40Oo3XScVabXXXX8sePUEp9tb90gXXXX

我用了整个URL:

https://eth-rinkeby.alchemyapi.io/v2/40Oo3XScVabXXXX8sePUEp9tb90gXXXX

我有同样的经历,但当使用安全帽时 truffle.My 互联网连接正常,尝试从 Git bash 切换到终端(CMD)。使用全新的终端避免Gitbash 和 powershell.

我在遵循相同的教程时也 运行 遇到了这个错误。

我使用 Alchemy(不是 Infura),问题出在我的 API_KEY。

在我遵循的其他教程中,脚本需要完整的炼金术 API 密钥(例如“https://eth-rinkeby.alchemyapi.io/v2/<运行dom-key>").

所以,当我学习本教程时,这就是我提供的。而且,我运行进入了你报告的错误。

但是当我查看教程作者提供的 truffle.js 脚本时,我发现了这个:

const rinkebyNodeUrl = isInfura
  ? "https://rinkeby.infura.io/v3/" + NODE_API_KEY
  : "https://eth-rinkeby.alchemyapi.io/v2/" + NODE_API_KEY;

因此,脚本生成:

rinkebyNodeUrl = https://eth-rinkeby.alchemyapi.io/v2/https://eth-rinkeby.alchemyapi.io/v2/<**random-key**>

...这显然是错误的。

因此,确保我只将 API_KEY 环境变量设置为 运行dom-key 而不是 https://eth-rinkeby.alchemyapi.io/v2/https://eth-rinkeby.alchemyapi.io/v2/<运行dom-key>,我的合约部署成功。

此外,请确保您在 Rinkeby 网络上的钱包中有足够的 ETH。水龙头似乎总是工作一小会儿就停止工作,因此 Google 搜索以找到当前可用的水龙头。

从网络配置中的提供程序中删除函数包装器。

ropsten_infura: {
  provider: new HDWalletProvider({
    mnemonic: {
      phrase: mnemonic
    },
    providerOrUrl: `https://ropsten.infura.io/v3/${project_id}`,
    addressIndex
  }),
  network_id: 3
}