以太坊如何通过privatekey获得keystore


以太坊如何通过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);

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

  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文件就有了。是不是很简单呢?

    推荐阅读