尝试使用 rinkeby 测试网络启动 dapp
npx hardhat run scripts/deploy.js --network rinkeby
但是每当我尝试启动合约时,当我将私钥复制到环境变量中时,它都会返回错误,指出私钥大小太短。
当我将私钥直接传递到 module.exports 上的帐户时,它会抛出一个错误,指出我的私钥太长!不管我是否在 ${} 之前附加了 0x 前缀。
hardhat.config.js
require("@nomicfoundation/hardhat-toolbox");
const PRIVATE_KEY = "privateKeyjdhsbcidsjhnc"
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.4",
paths: {
artifacts: './src/artifacts',
},
networks: {
hardhat: {
chainId: 1337
},
rinkeby: {
url: "https://eth-rinkeby.alchemyapi.io/v2/_YGPVs4UBSWtFxp-fpynFRcF34oU7WUI",
accounts: ['0x${process.env.PRIVATE_KEY}']
}
},
solidity: "0.8.4",
};`
部署.js
const hre = require("hardhat");
async function main() {
const Greeter = await hre.ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Hello,Hardhat!");
await greeter.deployed();
console.log("Greeter deployed to:", greeter.address)
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});
必须安装dotenv文件:
npm i dotenv
检查您的 .env 文件
GOERLI_URL_API=d6164sbshdfkjsnkfj6515 WALLET_PRIVATE_KEY = “hb5154sdhbasd5651sdfsdbf54sf54ss5465F”
检查hardhat/config.js
#然后需要 DOTENV 文件
require('dotenv').config()
//添加网络连接
networks: {
hardhat: {},
goerli: {
url: `https://goerli.infura.io/v3/${process.env.GOERLI_URL_API}`,
accounts: [process.env.WALLET_PRIVATE_KEY.toString()]
}
}
4.然后部署运行并构建
npx hardhat run scripts/deploy.js --show-stack-traces
大多数配置文件不会注册您的私钥。如果您已将其放入 .env 文件中,则应检查是否已安装 dotenv 并将其导入到 Hardhat.config.ts 中,如下所示:
1- 安装
dotenv
依赖项
2-导入:require('dotenv').config()到你的hardhat.config.ts
改变这个
'0x${process.env.PRIVATE_KEY}'
至
`0x${process.env.PRIVATE_KEY}`
将网络配置部分中的
accounts:
更改为account:
结果你应该:
account: [`{process.env.PRIVATE_KEY}`]
我假设只有一个帐户,因此私钥是一个。 对下面给出的行进行一些小的更改,
accounts: ['0x${process.env.PRIVATE_KEY}']
不要写账户,只写账户。即:
account: ['0x${process.env.PRIVATE_KEY}']
该问题可能与您在 .env 文件中的私钥字符串附加逗号有关。
代替:
PRIV_KEY = "privatekey123",
做:
PRIV_KEY = "privatekey123"