当通过运行(在macOS 12.1上)将智能契约部署到rinkeby时,我陷入了困境--如下所示:
sudo truffle migrate --reset --network rinkeby契约编译,我可以在本地部署它,但是迁移到testnet失败了,返回了这个错误:
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文件,特别是
return new HDWalletProvider(mnemonic, 'https://rinkeby.infura.io/v3/'+infuraKey)我用的是Metamask种子词组和Infura。
在块菌-config.js中,我按照以下方式设置了rinkeby连接:
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
},我试过:
export NODE_OPTIONS=--openssl-legacy-provider,到目前为止,什么都没有起作用,并且怀疑问题是在我执行命令的步骤中出现的。
我怀疑问题在我设置项目时所做的顺序中。我所做的工作如下:
mkdir project_id,cd project_id,truffle init以初始化松露项目,npm install --save truffle-hdwallet-provider,npm install openzeppelin-solidity,truffle compiletruffle migrate --resettruffle migrate --reset --network rinkeby起初我认为这可能是Node版本的问题,但后来我成功地运行了一次代码。
当运行相同的代码时,
有一次,我试图在一个不同的项目中部署一个更简单的合同,以测试一切正常工作。在返回到主项目并重复相同的编译->迁移命令之后,契约实际上已经部署--我在以太扫描上检查了这一点。不幸的是,后来我注意到了一个bug,不得不重新运行编译>迁移命令。然后,屏幕截图上显示的错误再次出现。
随后,我试图再次重复该序列,但未能成功地迁移合同。
有人知道怎么解决吗?
发布于 2021-12-28 09:04:30
所以我想出了解决办法--我把Node版本改成了最新的稳定版本(v16),一切都很有魅力。对于那些需要修改版本的人来说,这里是一个很好的教程。
https://ethereum.stackexchange.com/questions/117439
复制相似问题