イーサー坊keystoreファイル生成の概要
1363 ワード
以太坊財布は大きく分けて2種類ございます gethオリジナル財布 に基づく
256ビットの秘密鍵をランダムに生成し、パスワードで暗号化してjson文字列を生成しkeystoreファイルに格納する. BIPプロトコルに基づいて を生成する.
この部分は,生財布の生成秘密鍵部分を修正しただけで,ランダム256ビット秘密鍵の代わりにBIPプロトコルを用いた.
BIPはビットコインのアップグレードプロトコルです
BIP 32は、秘密鍵の管理を容易にするため、1つのseedで鍵ツリーを生成する.
BIP 39プロトコルは、seedを助記語で符号化している.アシストとseedは等価であり、アシストはseedの別の符号化フォーマットである.
BIP 44プロトコルは、アドレスアプリケーションの範囲をさらに拡大し、ビットコイン、イーサー坊など多くのフォーマットのアドレスをカバーしています.
Web 3ベースの実装:
256ビットの秘密鍵をランダムに生成し、パスワードで暗号化してjson文字列を生成しkeystoreファイルに格納する.
この部分は,生財布の生成秘密鍵部分を修正しただけで,ランダム256ビット秘密鍵の代わりにBIPプロトコルを用いた.
BIPはビットコインのアップグレードプロトコルです
BIP 32は、秘密鍵の管理を容易にするため、1つのseedで鍵ツリーを生成する.
BIP 39プロトコルは、seedを助記語で符号化している.アシストとseedは等価であり、アシストはseedの別の符号化フォーマットである.
BIP 44プロトコルは、アドレスアプリケーションの範囲をさらに拡大し、ビットコイン、イーサー坊など多くのフォーマットのアドレスをカバーしています.
Web 3ベースの実装:
// ,
bip39 = require('bip39');
hdkey = require('ethereumjs-wallet/hdkey');
util = require('ethereumjs-util');
//
mnemonic = bip39.generateMnemonic();
// , 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");
.............
// 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');