错误:预期的私钥是长度为 32 的 Uint8Array
Posted
技术标签:
【中文标题】错误:预期的私钥是长度为 32 的 Uint8Array【英文标题】:Error: Expected private key to be an Uint8Array with length 32 【发布时间】:2021-12-29 22:40:42 【问题描述】:遵循https://ethereum.org/vi/developers/tutorials/hello-world-smart-contract/的指南
我在尝试运行我的部署脚本时收到此错误。我完全不知道为什么这不起作用,因为我直接从指南中复制了每段代码。
我的 hardhat.config.js
require('dotenv').config();
require("@nomiclabs/hardhat-ethers");
const API_URL, PRIVATE_KEY = process.env;
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports =
solidity: "0.7.3",
defaultNetwork: "ropsten",
networks:
hardhat: ,
ropsten:
url: API_URL,
accounts: [`0x$PRIVATE_KEY`]
,
我的 deploy.js
async function main()
const HelloWorld = await ethers.getContractFactory("HelloWorld");
// Start deployment, returning a promise that resolves to a contract object
const hello_world = await HelloWorld.deploy("Hello World!");
console.log("Contract deployed to address:", hello_world.address);
main()
.then(() => process.exit(0))
.catch(error =>
console.error(error);
process.exit(1);
);
我的 .env
API_URL = "https://eth-ropsten.alchemyapi.io/v2/[REDACTED]"
PRIVATE_KEY = "[REDACTED]". // my private key goes here, not including the 0x
它编译得很好,但是当我使用命令时给我错误
npx 安全帽运行脚本/deploy.js --network ropsten
【问题讨论】:
【参考方案1】:您不需要私钥中的 0x,只需输入您从 metamask 获得的确切密钥即可:)
【讨论】:
【参考方案2】:https://github.com/ethereumjs/ethereumjs-tx
根据使用示例,我们需要在创建交易时添加链名称。
const tx = new Tx(txObject , chain: 'rinkeby' )
【讨论】:
以上是关于错误:预期的私钥是长度为 32 的 Uint8Array的主要内容,如果未能解决你的问题,请参考以下文章