我用一些命令创建了几个帐户personal.newAccount()
并且创建的帐户被推送到列表中。我想做的是,由于安全原因,我使用getAccount()
函数获得的公钥。
我不想显示我的所有者地址和公钥,所以我想使用该函数从列表中获取地址。
web3.eth.getAccounts();
//["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
然后,我想像下面这样获取具有该地址的私钥。
var publicKey = web3.eth.getAccounts();
var privateKey = extractPrivateKey(pulicKey);
有没有办法使用 web3 做到这一点?有没有办法访问javascript文件上的密钥库?我必须在 javascript 代码中使用sendTransaction()
函数,但它需要私钥来签名。现在我将私钥存储为静态,我认为这是非常危险的。我正在考虑在代码中隐藏我的主人公钥和私钥。
这行代码var publicKey = web3.eth.getAccounts();
不会返回公钥,而是返回一个地址数组。
你可以使用 npm 包密钥。它通过传递特定地址从密钥库文件中提取私钥。首先使用 importFromFile
函数导入它,然后使用 recover
函数提取私钥。
它看起来像这样:
var keystorePath = "/yourPathToTheKeystoreFile";
async function importPrivateKey(address) {
let methodName = ">>> [importPrivateKey]: ";
try{
var keyObject = await keythereum.importFromFile(address, keystorePath);
var privateKey = await keythereum.recover(password, keyObject);
return privateKey;
}catch(e) {
console.log(e);
throw e;
}
}
现在,您可以直接在任何其他函数中调用此函数,并将提取的私钥直接用作sendTransaction
函数的新参数,而无需将私钥存储在任何变量中。