一、什麼是HD錢包:
它是分層确定性(Hierarchical Deterministic)錢包的縮寫 HD Wallets,是目前廣泛使用的虛拟貨币錢包标準。HD錢包從單個根種子(root seed)中建立,為128到256位的随機數,任何相容HD錢包的根種子也可重新創造整個HD錢包,是以擁有HD錢包的根種子就等于擁有了所有密鑰,友善存儲、導入及導出。
二、BIP32/BIP39/BIP44含義:
BIP32:定義 Hierarchical Deterministic wallet (簡稱 "HD Wallet"),是一個系統可以從單一個 seed 産生一樹狀結構儲存多組 keypairs(私鑰和公鑰)。好處是可以友善的備份、轉移到其他相容裝置(因為都隻需要 seed),以及分層的權限控制等
BIP39:将 seed 用友善記憶和書寫的單字表示。一般由 12 個單字組成,稱為 mnemonic code(phrase),中文稱為助記詞或助記碼
BIP44:基于 BIP32 的系統,賦予樹狀結構中的各層特殊的意義。讓同一個 seed 可以支援多币種、多帳戶等。各層定義如下:
m / purpose' / coin_type' / account' / change / address_index
其中的 purporse' 固定是 44',代表使用 BIP44。而 coin_type' 用來表示不同币種,
例如 BTC 就是 0',ETH 是 60' ETC 是 61
三、多鍊錢包的助記詞、私鑰、位址生成。
注:所需要的依賴包安裝
安裝 bip39:https://www.npmjs.com/package/bip39
npm install bip39 --save
安裝 ethers.js: https://docs.ethers.io/ethers.js/html/index.html
npm install ethers --save
安裝 bitcoinjs-lib:https://www.npmjs.com/package/bitcoinjs-lib
npm install bitcoinjs-lib --save
安裝 eosjs-ecc:https://github.com/EOSIO/eosjs-ecc#randomkey
npm install eosjs-ecc --save
//引用依賴(根據工程環境安裝的不同版本對應使用)
import { ethers } from 'ethers';
import bitcoin from 'bitcoinjs-lib';
import bip39 from 'bip39';
import bip32 from 'bip32';
import eosEcc from 'eosjs-ecc';
1、HD錢包助記詞生成:
ethers.js生成助記詞:
var mnemonic = ethers.Wallet.createRandom().mnemonic
bip39生成助記詞:
var mnemonic = bip39.generateMnemonic()
2、BTC錢包通過助記詞生成私鑰、公鑰、位址:
//設定生成測試or正式環境的錢包
const network = bitcoin.networks.bitcoin
// 計算seed:
const seed = bip39.mnemonicToSeed(mnemonic)
const root = bip32.fromSeed(seed,network)
const path = "m/44'/0'/0'/0/0";
const keyPair = root.derivePath(path)
const privateKey = keyPair.toWIF()
console.log("BTC私鑰:", privateKey)
const publicKey = keyPair.publicKey.toString("hex")
console.log("BTC公鑰:", publicKey)
let address = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey , network:network})
console.log("BTC位址:", address.address, "\n")
3、ETH錢包通過助記詞生成私鑰、公鑰、位址:
var Wallet = ethers.Wallet.fromMnemonic(mnemonic);
var privateKey = Wallet.privateKey;
console.log("ETH私鑰:",privateKey)
var address = Wallet.address;
console.log("ETH位址:",address)
var compressedPublicKey = Wallet.compressedPublicKey;
console.log("ETH公鑰:",compressedPublicKey)
//生成新的助記詞、私鑰、位址
var wallet = ethers.Wallet.createRandom();
let mnemonic = wallet.mnemonic;
var address = wallet.address;
console.log("ETH位址:"address)
var privateKey = wallet.privateKey;
console.log("ETH私鑰:",privateKey)
var compressedPublicKey = wallet.signingKey.keyPair.compressedPublicKey;
console.log("ETH公鑰:",compressedPublicKey)
4、EOS錢包通過助記詞生成私鑰、公鑰:
var eosPrivate = eosEcc.seedPrivate(mnemonic);
console.log("EOS私鑰:",eosPrivate)
const eosPubkey = eosEcc.privateToPublic(eosPrivate);
console.log("EOS公鑰:",eosPubkey)
//随機生成新的私鑰公鑰
eosEcc.randomKey().then(privateKey => {
console.log('Private Key:\t', privateKey)
console.log('Public Key:\t', eosEcc.privateToPublic(privateKey))
})
如何注冊EOS賬戶:
需安裝:
npm install eosjs --save
eos環境配置:
var Eos = require('eosjs')
var eosConfig = {
keyProvider: ['私鑰'], // 配置私鑰字元串
httpEndpoint: 'http://51.15.224.168:8888', //DEV開發鍊url與端口
//httpEndpoint: 'https://nodes.get-scatter.com', //主網
chainId: "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca", // 通過cleos get info可以擷取chainId
//chainId: "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", //主網
broadcast: true,
}
var eos = Eos(eosConfig)
var creatoraccount = "accounthr123"; //主賬号
var newaccount = "sdrghiochaiq"; //新賬号
var newaccount_pubkey = pubkey; //新賬号的公鑰
//建構transaction對象
eos.transaction(tr => {
//建立賬号
tr.newaccount({
creator: creatoraccount,
name: newaccount,
owner: newaccount_pubkey,
active: newaccount_pubkey
})
//為新賬号充值RAM
tr.buyrambytes({
payer: creatoraccount,
receiver: newaccount,
bytes: 3072
})
//為新賬号抵押CPU和NET資源
tr.delegatebw({
from: creatoraccount,
receiver: newaccount,
stake_net_quantity: '1.0000 EOS',
stake_cpu_quantity: '1.0000 EOS',
transfer: 0
})
}).then(r => {
console.log(r);
}).catch(e => {
console.log(e)
});
}catch (e){
}
測試結果:

學如逆水行舟,不進則退。心似平原跑馬,易放難收。全棧工程師是指掌握多種技能,并能利用多種技能獨立完成産品的人。 也叫全端工程師(同時具備前端和背景能力),英文Full Stack engineer。【人工智能】【區塊鍊】【系統/網絡/運維】【雲計算/大資料】【資料庫】【移動開發】【後端開發】【遊戲開發】【UI設計】【微服務】【爬蟲】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。。。
歡迎各位大神萌新一起專研分享各行各業技術!
Chain區塊鍊開發社群:593674370