精华内容
下载资源
问答
  • EOS HD钱包 适用于EOS区块链JavaScript HDWallet,类似于ethereumjs-wallet 。 用法 yarn add @cobo/eos import eos from '@cobo/eos'; const wallet = eos.fromMasterSeed('...'); const pubkey = wallet....
  • HD钱包从单个根种子(root seed)中创建,为128到256位的随机数,任何兼容HD钱包的根种子也可重新创造整个HD钱包,所以拥有HD钱包的根种子就等于拥有了所有密钥,方便存储、导入及导出。 二、BIP32/BIP39/...

    一、什么是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

     

     

     

     

    展开全文
  • 区块链钱包技术介绍

    千次阅读 2018-09-17 15:54:43
    以太坊HD钱包代码实现案例(创建钱包,恢复钱包):https://blog.csdn.net/qq_16137795/article/details/83474645 一:Web3.js 简介:web3.js是一个库集合,允许您使用HTTP或IPC连接与本地或远程以太它节点进行交互...

    以太坊HD钱包代码实现案例(创建钱包,恢复钱包):https://blog.csdn.net/qq_16137795/article/details/83474645

    一:Web3.js

    简介:web3.js是一个库集合,允许您使用HTTP或IPC连接与本地或远程以太它节点进行交互。为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3。对象。底层实现上,它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。

    1、连接以太坊节点(私链、测试链、公链、infura节点)

    2、查询区块高度、用户账户余额、当前的gas价格、交易数据

    3、发送签名交易

    等等.....

    二:infura节点

    简介:infura的目标是为全世界提供安全,稳定,容错,并且可扩展的以太坊以及IPFS节点。另外一个目标则是做以太坊社区中负责的一员,为以太坊网络的发展和稳定做贡献。Infura 提供公开的 Ethereum 主网和测试网络节点,本地安装geth的方法需要花比较多的时间和空间来同步区块,利用infura可以简单很多,infura提供公开以太坊和测试节点,可以利用infura提供的api访问以太坊以及IPFS。

     

    三:BIP39生成助记词

    简介:

    BIP39标准就是为了解决助记词的需求,通过随机生成12~24个容易记住的单词,单词序列通过PBKDF2与HMAC- SHA512函数创建出随机种子作为BIP32的种子。

    生成步骤:

    1.生成一个长度为 128~256 位 (bits) 的随机序列(熵);

    2.取熵哈希后的前 n 位作为校验和 (n= 熵长度/32),就可以创造一个随机序列的校验和;

    3.将校验和添加在随机序列(熵)的末尾;

    4.将序列化分为包含11位的不同部分;

    5.将每个包含11位不分的值与一个已经预先定义2048个单词的字典作对应;

    6.生成的有顺序的单词组就是助记词。

    四:ethers.js

    简介:这个库(由ethers.io制作并使用)旨在使编写基于客户端JavaScript的钱包变得更加容易,并始终将私钥保存在所有者的计算机上。

    1、创建钱包:生成私钥(privateKey)、助记词、KeyStore、钱包地址等。

    2、恢复钱包:可通过privateKey、助记词、KeyStore找回钱包。

    3、签名交易

    4、广播交易

    等等.....

    轻钱包转账交易流程:

     

    转账:

    1、构建交易数据:

    ● nonce:交易发送者的交易序列号

    ● gasPrice:gas价格

    ● gasLimit:消耗的gas上限

    ● to:交易接收者的地址

    ● value:要发送的以太币(以wei为单位)

    ● data:可选的数据域

    2、对交易进行签名:

    ● 需要使用交易发送者账号的私钥对交易进行签名,本地对交易进行验证。

    3、交易广播至区块链:

    ● 签名后的交易会首先提交至infura以太坊节点,infura节点会首先对该笔交易进行验证,它会验证签名是否有效。

    验证有效后把交易广播至区块链网络之后,infura节点会将交易广播至整个网络,在广播之后会返回一个交易hash 值,你可以通过该hash值查看和追踪该交易的状态和相关信息。几乎以太坊网络上的所有节点都会收到这笔交易。

    4、矿工节点接收到交易:

    ● 生成的交易需要被区块链网络中的矿工打包到区块,才能写入到区块链中。矿工会有一个待处理的交易列表,其中的交易是按交易的gasPrice进行排序的,交易的gasPrice越高,处理的优先级就越高。如果交易的gasPrice过低,有可能一直得不到矿工的处理,从而被忽略

    5、矿工将交易打包至区块并广播至网络

    ● 矿工会取若干交易然后打包至一个区块中,一个区块中能够包含多少条交易是和区块的gasLimit有关的,所有交易的gasLimit总和不能超过区块的gasLimit。当矿工选择好要打包的交易之后,就开始了PoW(Proof of Work)挖矿过程,最先发现新的区块的矿工能够将交易打包至区块,并且获取到相应的奖励。

    其它节点同步新的区块数据

    由于新的区块已经产生,所有的节点都需要对区块进行同步,你的交易会随着区块的同步被同步至所有节点上。

    至此,一笔交易的生命周期彻底结束,它被永远的写入到了区块链中。

    以太坊HD钱包代码实现案例(创建钱包,恢复钱包):https://blog.csdn.net/qq_16137795/article/details/83474645

     

    学如逆水行舟,不进则退。心似平原跑马,易放难收。全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人。 也叫全端工程师(同时具备前端和后台能力),英文Full Stack engineer。【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。欢迎各位大神萌新一起专研分享技术。。。

    欢迎加入 IT 全栈工程师交流群:593674370

     

    展开全文
  • 分层确定性钱包 1.私钥到地址的推导 在区块链网络中,每个用户都拥有一个或多个区块链账户即地址。地址推导的主要流程是先生成随机数,然后将随机数作为种子经过椭圆加密算法生成私钥,再由私钥推导出公钥,公钥最终...

    分层确定性钱包

    1.私钥到地址的推导

    在区块链网络中,每个用户都拥有一个或多个区块链账户即地址。地址推导的主要流程是先生成随机数,然后将随机数作为种子经过椭圆加密算法生成私钥,再由私钥推导出公钥,公钥最终推导出地址,具体的推到流程以以太坊为例,详细流程如下图所示。

    2.私钥推导出子私钥

    在实际应用中往往一个用户需要多个账户,如果使用第一代的确定性钱包,就需要产生大量的私钥,并通过将私钥推导出公钥和地址。这样的操作将为私钥的管理带来不便,因此引入分层确定性钱包。分层确定性钱包可以使用助记词或随机数产生种子,在将种子推导出私钥,私钥再推导出多个子私钥(子私钥数量无上限)。每个子私钥可对应推导出更多的孙私钥,最终表现为一个私钥对应一个公钥,公钥也对应着一个地址。

    3.匿名性

    分层确定性钱包可以保证用户的匿名性和相关的隐私。以比特币为例,在比特币中转账时会遇到找零机制,即使用一笔UTXO进行转账时,有部分金额的剩余。比如UTXO面值为20元,支付为10元,那么剩下的10元需要转回给自己,否则将作为矿工费归矿工所有。这时找零地址往往采用一个转账用户的新地址,这样可以保证用户的匿名性。在比特币网络中所有数据都是透明公开的,将找零的币转到新地址,使别人很难确定该笔交易哪个是找零地址,哪个是转账地址,更难以使用户找出地址对应的自然人,以此保证用户的隐私安全。

    展开全文
  • 区块链钱包-源码

    2021-02-18 11:21:21
    区块链钱包 该脚本允许在命令行中管理多区块链交易。 它建立在Python, hd-wallet衍生命令工具, bit和web3 Python库的基础上。 我使用Ganache创建了一个本地Ethereuem网络和预资金账户。 如何使用: 在wallet...
  • 区块链Python 设置 1.创建一个名为wallet的项目目录,并进入cd。 将hd-wallet派生工具克隆到此文件夹中,并按照其README.md上的说明进行安装。 一种。 git clone b。 cd高清钱包衍生 C。 php -r“ readfile(' '...
  • HD钱包 - HD Wallet 分层确定性钱包 钱包的类型 私钥不同的生成方法,也对应着不同的钱包结构,通常可以分为非确定性钱包和确定性钱包。比特币最早的客户端(Satoshi client)就是非确定性钱包,钱包是一堆随机生成...

    HD钱包 - HD Wallet 分层确定性钱包

    钱包的类型

    私钥不同的生成方法,也对应着不同的钱包结构,通常可以分为非确定性钱包和确定性钱包。比特币最早的客户端(Satoshi client)就是非确定性钱包,钱包是一堆随机生成的私钥的集合。

    确定性钱包则不需要每次转账都要备份,确定性钱包的私钥是对种子进行单向哈希运算生成的,种子是一串由随机数生成器生成的随机数。在确定性钱包中,只要有这个种子,就可以找回所有私钥

    BIP44的规则使得 HD 钱包非常强大,用户只需要保存一个种子,就能控制所有币种,所有账户的钱包。

    可以一个钱包,同时支持比特币和以太坊

    HD 钱包是生成不重复使用地址的方法 ,记住一个种子就可以访问所有地址的钱而不需要每个地址都备份私钥。当然HD 钱包不仅适用于比特币,HD 钱包可以让一个钱包同时管理多资产成为可能性。

    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’ 用来表示不同币种,例如 Bitcoin 就是 0’,Ethereum 是 60’。
    • account’ 代表这个币的账户索引,从0开始。
    • change 常量0用于外部链,常量1用于内部链(一般使用0)
    • address_index 这就是地址索引,从0开始,代表生成第几个地址,官方建议,每个account下的address_index不要超过20

    例如: m/44'/60'/0'/0/0 表示在一个 Ethereum HD Wallet 中,第一个帐户的第一组 keypair

    展开全文
  • 那助记词又是如何变成我们的主私钥,进而用HD的方式...HD钱包灵魂大检查!到底有哪些钱包经得住考验? 接下来我们看看具体的“校验”步骤: 第一步:我们按照上面的方法,根据2048词表找到【cat助记词】12个词...
  • HD钱包介绍

    2018-05-03 09:26:17
    本文是对区块链HD钱包相关技术的总结,包括中本聪的《比特币白皮书》、比特币背后的算法与数学、BIP32、BIP39、BIP42等。
  • 区块链钱包之BIP32, BIP39, BIP44

    万次阅读 2018-03-25 13:41:05
    BIP 全名是 Bitcoin Improvement Proposals,是提出 Bitcoin 的新功能或改进措施的文件。可由任何人提出,经过审核后公布在 bitcoin/bips 上...HD Wallet虚拟货币钱包里面使用的就是这些东西 ,包含其设计动机和理念...
  • HD Wallet虚拟货币钱包里面使用的就是这些东西 ,包含其设计动机和理念、实作方式、实例等。 随着比特币区块链的发展,人们已经不满足于,只有一个账号的情况,有些人会有好几个账户,但是这就出现一个问题,我有几...
  • 区块链相关的话题持续发酵之时,应该不少人知道加密货币钱包钱包是普通用户与加密货币系统交互的入口,各种形态的钱百花齐放,手机钱包、桌面钱包、硬件钱包、网页钱包和纸质钱包等。通过钱包可以无国界无限制地...
  • 如果你还在被HD钱包、BIP32、BIP44、BIP39搞的一头雾水,来看看这边文章吧。 数字钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行...
  • HD 钱包硬知识,你知道多少?

    千次阅读 2018-08-24 11:51:27
    HD Wallets:全称Hierarchical Deterministic Wallets,中文名称分层确定性钱包,是目前广泛使用的虚拟货币钱包标准。下面小编就来给大家讲讲HD Wallets的工作机制以及开发原理。 1、简介 HD Wallets可以从一个...
  • 手动生成HD钱包种子教程

    千次阅读 2018-04-12 14:53:28
    java|区块链开发与交流群: 613121183有兴趣的也可以加下哈,提供了不少区块链资料,以后有资料可以相会共享本文感谢diyanchn的耐心、细致的指导。Bip-0039改进协议...
  • HD钱包的助记词与密钥生成原理

    千次阅读 2018-04-17 17:37:17
    区块链相关的话题持续发酵之时,应该不少人知道加密货币钱包钱包是普通用户与加密货币系统交互的入口,各种形态的钱百花齐放,手机钱包、桌面钱包、硬件钱包、网页钱包和纸质钱包等。通过钱包可以无国界无限制地...
  • 如果你还在被HD钱包、BIP32、BIP44、BIP39搞的一头雾水,来看看这边文章吧。 数字钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行...
  • 区块链相关的话题持续发酵之时,应该不少人知道加密货币钱包钱包是普通用户与加密货币系统交互的入口,各种形态的钱百花齐放,手机钱包、桌面钱包、硬件钱包、网页钱包和纸质钱包等。通过钱包可以无国界无限制地...
  • 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行消费(用私钥对消费交易签名)。 私钥通过椭圆曲线生成公钥, 公钥通过哈希函数生成地址,这两...
  • Cardano钱包 概述 卡尔达诺钱包可帮助您管理自己的Ada。 您可以使用它在区块链上发送和接收付款。 该项目提供了用于处理您的钱包的HTTP应用程序编程接口(API)和命令行界面(CLI)。 它可以用作前端组件(如的...
  • 把加密货币充值到交易平台时,交易平台也会给你一个充值地址,每个人的充值地址都是不一样的。如果某交易平台有900多万用户,光比特币就要给用户分配900多万个充值地址,再算上其他币种,充值地址...看到HD钱包,你...
  • 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行消费(用私钥对消费交易签名)。 私钥和地址的关系如下: (图来自精通比特币) 一句话概括...
  • 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥有账户的钥匙(私钥)才可以对资产进行消费(用私钥对消费交易签名)。 私钥和地址的关系如下: (图来自精通比特币) 一句话概括...
  • 区块链面试题目

    千次阅读 2018-12-28 19:18:28
    比如,系统有N个用户,都去监听好像不太好做 我是用HD钱包的方式,用户假设有1W个地址。那岂不是要在每个块查出来,将里面N个交易,是不是我们的N用户钱包地址,都要去做对比吗?答:是的,是这样子的,不过你可以...

空空如也

空空如也

1 2 3 4
收藏数 65
精华内容 26
关键字:

区块链hd钱包