主页 > imtoken浏览器 > 区块链 以太坊 比特币 HD 多链钱包

区块链 以太坊 比特币 HD 多链钱包

imtoken浏览器 2023-04-11 07:35:53

区块链 以太坊 比特币 HD 多链钱包

一、什么是HD钱包:

它是分层确定性(Hierarchical Deterministic)钱包HD Wallets的缩写btc钱包文件,是目前广泛使用的虚拟货币钱包标准。 HD 钱包是从单个根种子创建的,它是一个 128 到 256 位的随机数。 任何与HD钱包兼容的root seed也可以重新创建整个HD钱包,所以拥有HD钱包的root seed就相当于拥有了所有的密钥。 便于存储、导入和导出的密钥。

二、BIP32/BIP39/BIP44的含义:

BIP32:Define Hierarchical Deterministic wallet(简称“HD Wallet”),是一种可以从单个种子生成树形结构来存储多组密钥对(私钥和公钥)的系统。优点是可以轻松备份,转移到其他兼容设备(因为只需要种子)btc钱包文件,分级权限控制等。

BIP39:用易记易写的词来表示种子。一般由12个词组成,称为助记词(phrase),中文称为助记词或助记词

BIP44:基于BIP32的系统,赋予树状结构中每一层特殊的含义。 让同一个seed支持多币种、多账户等,各层定义如下:

m /purpose'/coin_type'/account'/change/address_index

purpose'固定为44',表示使用BIP44。 而coin_type'用来表示不同的货币,

比如BTC是0',ETH是60',ETC是61

3、多链钱包的助记词、私钥、地址的生成。

注意:需要的依赖包安装

安装 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

btc钱包文件_btc钱包官网_btc在线钱包

安装 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()

btc在线钱包_btc钱包文件_btc钱包官网

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)

btc钱包文件_btc钱包官网_btc在线钱包

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

btc钱包官网_btc在线钱包_btc钱包文件

//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

btc钱包文件_btc钱包官网_btc在线钱包

}) //为新账号抵押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){ }

试验结果:

image.png

image.png

学习如逆水行舟。 心如平原赛马,放手容易,收回难。 全栈工程师是指掌握多种技能,并能运用多种技能独立完成产品的人。 也叫全端工程师(兼具前端和后端能力),英文Full Stack engineer。 【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】 】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。 . .

欢迎大家一起学习和分享各行各业的技术!

Chain区块链开发社区:593674370

本文参与登联社区写作激励计划,好文章好收益,欢迎正在阅读的你加入。