首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恩弗拉合同中的松露部署/迁移错误已部署一次,但无法再次部署。

恩弗拉合同中的松露部署/迁移错误已部署一次,但无法再次部署。
EN

Ethereum用户
提问于 2021-12-28 00:51:32
回答 1查看 375关注 0票数 0

当通过运行(在macOS 12.1上)将智能契约部署到rinkeby时,我陷入了困境--如下所示:

代码语言:javascript
复制
sudo truffle migrate --reset --network rinkeby

契约编译,我可以在本地部署它,但是迁移到testnet失败了,返回了这个错误:

代码语言:javascript
复制
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at createHash (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/Users/gnidan/src/work/truffle/node_modules/hdkey/lib/hdkey.js:238:1)
    at f.hash160 (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/Users/gnidan/src/work/truffle/node_modules/hdkey/lib/hdkey.js:39:1)
    at Function.privateKey [as fromMasterSeed] (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/Users/gnidan/src/work/truffle/node_modules/hdkey/lib/hdkey.js:183:1)
    at Function.fromMasterSeed (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/Users/gnidan/src/work/truffle/node_modules/ethereumjs-wallet/hdkey.js:18:1)
    at fromMasterSeed (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/src/index.js:57:1)
    at new checkBIP39Mnemonic (/Users/mac/node_modules/truffle-hdwallet-provider/dist/webpack:/truffle-hdwallet-provider/src/index.js:90:1)
    at Object.provider (/Users/mac/learning/Blockchain/TestToken1/truffle-config.js:21:16)
    at Object.getProvider (/usr/local/lib/node_modules/truffle/build/webpack:/packages/provider/index.js:20:1)
    at Object.create (/usr/local/lib/node_modules/truffle/build/webpack:/packages/provider/index.js:13:1)
    at TruffleConfig.get [as provider] (/usr/local/lib/node_modules/truffle/build/webpack:/packages/config/dist/configDefaults.js:249:1)
    at Object.detect (/usr/local/lib/node_modules/truffle/build/webpack:/packages/environment/environment.js:19:1)
    at Object.module.exports [as run] (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate/run.js:22:1)
    at Command.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/command.js:189:1)
Truffle v5.4.26 (core: 5.4.26)
Node v17.1.0

此错误消息的第10行指向我的truf-config.js文件,特别是

代码语言:javascript
复制
return new HDWalletProvider(mnemonic, 'https://rinkeby.infura.io/v3/'+infuraKey)

我用的是Metamask种子词组和Infura。

在块菌-config.js中,我按照以下方式设置了rinkeby连接:

代码语言:javascript
复制
rinkeby: {
  provider: function () {
    return new HDWalletProvider(mnemonic, 'https://rinkeby.infura.io/v3/'+infuraKey);
  },
    network_id: 4,       // rinkeby's id
    gas: 600000000,        // rinkeby has a lower block limit than mainnet
    gasPrice: 10000000000
},

我试过:

  • 设置env。变量export NODE_OPTIONS=--openssl-legacy-provider
  • 三次检查助记符和恩弗拉钥匙,
  • 尝试多个因弗拉项目,以确保没有为相同的ID创建相同的合同,
  • 增加煤气费。

到目前为止,什么都没有起作用,并且怀疑问题是在我执行命令的步骤中出现的。

我怀疑问题在我设置项目时所做的顺序中。我所做的工作如下:

  1. 运行mkdir project_id
  2. 运行cd project_id
  3. 运行truffle init以初始化松露项目,
  4. 运行npm install --save truffle-hdwallet-provider
  5. 运行npm install openzeppelin-solidity
  6. 设置契约和迁移文件,以及truf-config.js,
  7. 运行truffle compile
  8. 运行truffle migrate --reset
  9. 运行truffle migrate --reset --network rinkeby

起初我认为这可能是Node版本的问题,但后来我成功地运行了一次代码。

当运行相同的代码时,

Strange会导致

有一次,我试图在一个不同的项目中部署一个更简单的合同,以测试一切正常工作。在返回到主项目并重复相同的编译->迁移命令之后,契约实际上已经部署--我在以太扫描上检查了这一点。不幸的是,后来我注意到了一个bug,不得不重新运行编译>迁移命令。然后,屏幕截图上显示的错误再次出现。

随后,我试图再次重复该序列,但未能成功地迁移合同。

问题

有人知道怎么解决吗?

EN

回答 1

Ethereum用户

发布于 2021-12-28 09:04:30

所以我想出了解决办法--我把Node版本改成了最新的稳定版本(v16),一切都很有魅力。对于那些需要修改版本的人来说,这里是一个很好的教程。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/117439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档