以太坊如何通過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文件就有了。是不是很簡單呢?

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