以太坊keystore文件生成簡介

以太坊錢包大致分兩類

  1. 基于geth原生錢包

隨機生成256位私鑰,用密碼加密后生成json字符串并存儲成keystore文件。

  1. 基于BIP協(xié)議生成

這部分只是將原生錢包的生成私鑰部分做了修改,用BIP協(xié)議替代了隨機256位私鑰。

BIP是比特幣的升級協(xié)議

BIP32是為了方便管理私鑰,用一個seed生成密鑰樹。

BIP39協(xié)議是用助記詞方式編碼了seed。助記詞和seed是等效的,助記詞是seed的另一種編碼格式。

BIP44協(xié)議進一步擴展了地址應(yīng)用范圍,覆蓋比特幣,以太坊等多種格式地址。

基于web3的實現(xiàn):

//助記詞,引用
bip39 = require('bip39');
hdkey = require('ethereumjs-wallet/hdkey');
util = require('ethereumjs-util');

//生成助記詞
mnemonic = bip39.generateMnemonic();

//根據(jù)助記詞,生成seed,獲取key(公私鑰對)
seed = bip39.mnemonicToSeed(mnemonic);
hdWallet = hdkey.fromMasterSeed(seed);
//key0
key0 = hdWallet.derivePath("m/44'/60'/0'/0/0");
//key1
key1 = hdWallet.derivePath("m/44'/60’/0’/0/1");
.............

//根據(jù)key0生成錢包地址
address0 = util.toChecksumAddress(util.pubToAddress(key0._hdkey._publicKey, true).toString('hex'));

//獲取key0私鑰
privateKey0 = "0x" + key0._hdkey._privateKey.toString('hex');

//用私鑰獲取以太坊賬戶account0
account0 = web3.eth.accounts.privateKeyToAccount(privateKey0);

//加密私鑰并生成keystore的json文件
acc0json = web3.eth.accounts.encrypt(privateKey, 'password');

//用keystore文件獲取以太坊賬戶account0
account0 = web3.eth.accounts.decrypt(acc0json,'password');
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文:Wallets “錢包”這個詞用來描述以太坊中的一些不同的東西。 在較高級別,錢包是用作主要用戶界面的應(yīng)用程...
    Jisen閱讀 2,305評論 0 8
  • 文|李偉志 狹義上數(shù)字資產(chǎn)錢包為私鑰存儲工具,廣義上含余額查詢、發(fā)送交易等基本功能。2018年Q1全球數(shù)字資產(chǎn)錢包...
    ROW供享社閱讀 2,233評論 0 11
  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary閱讀 5,713評論 0 4
  • 幾千年前,新朝最腐敗時期。 胡誠弋一瘸一拐,走上山去,他想自殺。他的一切,好像都被王莽毀了。他的家庭,妻離子散;朝...
    孔Candy閱讀 242評論 0 1
  • 田柾國第一次睜眼的時候,看見的第一個人,是樸智旻。 有人說初生的嬰兒眼睛尚未長成,尚未有自己的意識,更不懂眼前人的...
    Diuerrr閱讀 261評論 0 0

友情鏈接更多精彩內(nèi)容