如何使用公共地址导入私钥



我用一些命令创建了几个帐户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函数的新参数,而无需将私钥存储在任何变量中。

最新更新