以太坊如何通过privatekey获得keystore

以太坊如何通过privatekey获得keystore

前言

在写智能合约的时候,估计大家还是喜欢用ganache测试链,因为启用geth链的时候还需挖矿,一边听着风扇呼呼作响,一边写代码,而且经常执行personal.unlockAccount解锁,感觉甚是不爽。
只可惜ganache只提供了privatekey没有keystore,在有些用到keystore的场景中就显得无力。

本文分享一个方法,可以通过privatekey获得keystore的方法。

步骤

  1. 首先创建一个js文件,把这段代码复制进去并保存为getKeystore.js。
//加载nodejs的模块,模块名叫ethereumjs-wallet
var Wallet = require('ethereumjs-wallet');
//填入自己的密钥
var key = Buffer.from('480b85a0e0d9a70940319779659335566955caa9d70d46e0e1c5ab430f1f9a6e', 'hex');
var wallet = Wallet.fromPrivateKey(key);
//填入自己设置的密码
var keystore = wallet.toV3String('12345');

console.log(keystore);

注:代码中的密钥在哪找呢?
image

  1. 安装依赖的模块ethereumjs-wallet
npm install ethereumjs-wallet --save
  1. 打开终端,在当前目录的位置执行
node getKeystore.js

这时候会输出这样的json字符串:

{
    "version": 3,
    "id": "492002b1-0e7f-4196-a6d6-bf7904226710",
    "address": "a99faeeb8d8bde87dc7bfc764febc62942a899e3",
    "crypto": {
        "ciphertext": "97378cfa914c65f902cb73faa906f9cdb4b951edefb08e53c5928dfcf0f3d99d",
        "cipherparams": {
            "iv": "11a393f2f34cf7933dda9ced7ba36f11"
        },
        "cipher": "aes-128-ctr",
        "kdf": "scrypt",
        "kdfparams": {
            "dklen": 32,
            "salt": "46fa998f091e66c4a1f0163ac448a198e7c5134c384b99722f7b7892b3fd2a3a",
            "n": 262144,
            "r": 8,
            "p": 1
        },
        "mac": "cf605cc9ebd86977754f23e4110f14e2051866229986414d2367b9cc0330d597"
    }
}
  1. 执行之后,终端会输出生成的keystore的字符串,复制字符串内容粘贴到一个空文件中,保存成以下的文件名:
UTC--2018-10-01T10-17-03.822719739Z--
后边接上你的公钥地址(也就是上边产生的json字符串中address字段的值)

这样一个keystore文件就有了。是不是很简单呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章