Go-Ethereum

Geth 不提供私鑰時如何簽署交易?

  • March 29, 2020

我第一次吃 Geth,並在上面創建了一些帳戶。在創建帳戶時,我為每個帳戶輸入了一個密碼,並生成了一個密鑰文件,其中包含屬於每個地址的加密私鑰。另一方面,發送交易需要使用私鑰對數據進行簽名。

我的問題是如何在 Geth 加密時檢索每個帳戶的私鑰?

您可以npm install keythereum,然後執行以下 NodeJS 腳本:

const fs = require("fs");
const keythereum = require("keythereum");

const KEYSTORE = process.argv[2];
const PASSWORD = process.argv[3];

for (const fileName of fs.readdirSync(KEYSTORE)) {
   const keyObject  = JSON.parse(fs.readFileSync(KEYSTORE + "/" + fileName, "utf8"));
   const publicAddr = keyObject.address;
   const privateKey = keythereum.recover(PASSWORD, keyObject).toString("hex");
   console.log(`0x${publicAddr}: 0x${privateKey}`);
}

您應該將以下輸入參數傳遞給此腳本:

  1. keystore您的文件夾的路徑
  2. 你的密碼

您也可以在腳本中對它們進行硬編碼,但如果您想將此文件保留在您的機器上(更不用說在版本控制下)以供將來使用和維護,那麼安全性會降低。

引用自:https://ethereum.stackexchange.com/questions/81969