我正在运行一个教程,介绍如何以编程的方式对ethereum事务进行签名,并得到以下错误:
RangeError: private key length is invalid这是代码:
var Web3 = require('web3');
var web3 = new Web3(new
Web3.providers.HttpProvider('https://ropsten.infura.io/'));
var util = require('ethereumjs-util');
var tx = require('ethereumjs-tx');
var privateKey = '0x...';
var publicKey = util.bufferToHex(util.privateToPublic(privateKey));错误出现在最后一行,试图从私钥中获取公钥。
我的私钥是一个字母数字字符串,长度为64个字符。从我看来,这是正确的长度。
我遗漏了什么?
发布于 2018-07-24 21:21:32
根据docs,util.privateToPublic()需要一个缓冲区。试着给它喂食,更像是:
new Buffer(privateKey.substring(2,66), 'hex')
发布于 2018-07-24 16:36:01
尝试从私钥中删除0x
privKey = privKey.substring(2)
我没有把握。不同的词组有不同的关键规则。
例如,EthersJS在其他人可能无法执行的情况下,全面强制执行0x。
https://ethereum.stackexchange.com/questions/55038
复制相似问题