怎么取到geth私钥?
怎么取到geth的帐号私钥?
需要用web3js发送交易,但是代码中签名时需要私钥
var tx = new Tx(rawTx);
tx.sign(privateKey);
私钥在哪呢?用geth创建帐号时是在控制台 personal.newAccount 创建的,只输入了密码。
不过想想也是,不可能从geth控制台得到私钥了,那样也太不安全了,网上已经出现很多geth rpc调用的安全问题了。
找到以下方法:
先安装keythereum
(env3) localhost:web3eth Chaim$ npm install keythereum
安装中出现错误
npm WARN checkPermissions Missing write access to /Users/Chaim/Documents/workspace/ethereum/web3eth/node_modules/crypto-js
试了网上几种方法,也有可能是这个目录后来建立了,再安装成功了
找到geth的安装目录,有个keystore目录,里面有帐号信息,我的如下:
(env3) Chaim:keystore Chaim$ ls
UTC--2017-12-28T07-58-59.813492000Z--54b865714068f5f03574ace39a1f3279c4e83e2c
UTC--2017-12-28T08-06-51.271541000Z--469f07278600b1cb031448fd25f187f24a89ecb6
UTC--2017-12-28T15-51-18.824872000Z--068a7a0022a0e20d78682f39aa75547a0a260a2a
UTC--2018-01-26T09-24-23.810097000Z--823e1c4acbfc6527a6210e9bb9b4d5a45dc9c9a4
执行以下js代码:
var keythereum = require("keythereum");
var datadir = "/Users/Chaim/Documents/workspace/ethPri";
var address= "0x54b865714068f5f03574ace39a1f3279c4e83e2c";
const password = "123456";
var keyObject = keythereum.importFromFile(address, datadir);
var privateKey = keythereum.recover(password, keyObject);
console.log(privateKey.toString('hex'));
执行能打印出私钥信息。
感谢您阅读 @chaimyu 的帖子,期待您能留言交流!