Go-Ethereum
Geth 不提供私鑰時如何簽署交易?
我第一次吃 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}`); }
您應該將以下輸入參數傳遞給此腳本:
keystore
您的文件夾的路徑- 你的密碼
您也可以在腳本中對它們進行硬編碼,但如果您想將此文件保留在您的機器上(更不用說在版本控制下)以供將來使用和維護,那麼安全性會降低。