错误:预期的私钥是长度为 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的主要内容,如果未能解决你的问题,请参考以下文章

支付宝接口错误:您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8

如何导出keystore中的私钥

BSV 上的私钥谜题

BSV 上的私钥谜题

OpenSSL生成公私钥

区块链小百科19期 非对称加密算法?