李帅

码农

  • 主页
  • 随笔
所有文章 友链 关于我

李帅

码农

  • 主页
  • 随笔

区块链bip32、bip44、bip39介绍

2020-04-30

1. 账户体系介绍

在区块链交易中会涉及到账户,这个账户相当于你的银行卡卡号一样,通过这个账户你可以很方便的去接收发送代币。像银行卡一样你也可以拥有许多账户。那么这个账户是怎么产生的呢?
注: 大致为 私钥->椭圆曲线算法->公钥->hash->地址

2. bip32

补充说明下 BIP: Bitcoin Improvement Proposals 比特币改进建议, bip32是第32个改进建议。bip32生成私钥的过程是一个分层推导的过程。

一句话概括下BIP32就是:为了避免管理一堆私钥的麻烦提出的分层推导方案。

2.1 主私钥

主私钥

它是由一个随机数种子根据hmac_sha512生成64字节长度的主私钥,主私钥前32个字节作为私钥将要作为下次生成子私钥的输入参数,后32个字节作为主链编码ChainCode。

1
2
3
4
NSData *masterPriKey = [DeterministicKey masterPriKeyForSeed:seed forKey:[@"xxx" dataUsingEncoding:NSUTF8StringEncoding]];

Pri:[masterPriKey subdataWithRange:NSMakeRange(0, 32)]
ChainCode:[masterPriKey subdataWithRange:NSMakeRange(32, 32)]

2.2 推导子私钥

推导子私钥

衍生推导的方案其实有两个:一个用父私钥推导(称为强化衍生方程),一个用父公钥推导。通过子秘钥向下一层(深度扩展)可以无限生成私钥。

3. bip44

指定了推导结构:m / purpose’ / coin’ / account’ / change / address_index;

一句话概括下BIP44就是:给BIP32的分层路径定义规范

m

是固定的;

purpose

是固定的,值为44;

coin

每条公链都不相同,可在这里查看;

account

代表这个币的账户索引,从0开始;

change

常量0用于外部链一般用于转账收款;常量1用于内部链一般用于找零为不可见地址;

address_index

地址索引从0开始,代表生成第几个地址,官方建议,每个account下的address_index不要超过20;

3. bip39

用户只需要记住自己的私钥就能拿到自己的资产了。但是私钥那么长我记不住怎么办?这时候bip39 提案就来了,用户不用记住一大串的16进制数据了,只需要很短的随机数种子或者是助记词就可以拿到自己的资产;

文章只是简单的描述下几个提案的区别,更详细的内容可以查看知乎上的这篇文章讲的很好

赏

谢谢你请我吃糖果

支付宝
微信
  • 工作中的点滴

扫一扫,分享到微信

微信分享二维码
Filecoin链
JS与原生iOS通信
© 2020 李帅
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • 编译器
  • 小知识
  • 工作中的点滴
  • swift
  • 项目相关内容

    缺失模块。
    1、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    2、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: true
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 友情链接1
  • 友情链接2
  • 友情链接3
  • 友情链接4
  • 友情链接5
  • 友情链接6
已所不欲,勿施于人