美文网首页
区块链钱包技术原理

区块链钱包技术原理

作者: 一钱科技 | 来源:发表于2019-10-08 09:16 被阅读0次

区块链的技术原理:

  • 钱包助记词生成种子(Seed),种子生成私钥。私钥推导出公钥,公钥节选部分生成钱包地址。
  • 同时钱包也提供了keystore,它也是私钥加密后的文件,可以配合正常的密码使用,便捷了用户的钱包使用。
生成助记词

  私钥一般太难记忆,使用不方便,所以为简化操作同时保证安全,就出现了助记词的方法。一般情况下,助记词由一些单词组成,只要按照顺序输入,也能打开钱包。

规定熵的位数必须是 32 的整数倍,所以熵的长度取值位128 到 256 之间取 32 的整数倍的值,分别为 128, 160, 192, 224, 256;

校验和的长度为熵的长度/32 位, 所以校验和长度可为 4,5,6,7,8 位;

助记词库有 2048 个词,用 11 位可全部定位词库中所有的词,作为词的索引,故一个词用 11 位表示,助记词的个数可为 (熵+校验和)/11,值为 12,15,18,21,24

助记词规则

 1. 生成一个长度为 128~256 位(bits)的随机序列(熵);
 2. 取熵哈希后的前n位作为校验和(n= 熵长度/32);
 3. 随机序列+校验和;
 4. 把步骤3得到的结果每 11位切割;
 5. 步骤4得到的每11位字节匹配词库的一个词;
 6. 步骤5得到的结果就是助记词串;


生成助记词
通过助记词生成种子

  助记词由长度为128 到 256 位的随机序列(熵)匹配词库而来,随后采用PBKDF2 function 推导出更长的种子(seed)。生成的种子被用来生成构建 deterministic Wallet 和推导钱包密钥。
  在密码学中,Key stretching技术被用来增强弱密钥的安全性,增加了暴力破解 (Brute-force attack) 对每个可能密钥尝试攻破的时间,增强了攻击难度。各种编程语言原生库都提供了 key stretching 的实现。PBKDF2(Password-Based Key Derivation Function 2)是常用的 key stretching 算法中的一种。基本原理是通过一个为随机函数(例如HMAC 函数),把明文和盐值作为输入参数,然后重复进行运算最终产生密钥。

  为了从助记词中生成二进制种子,BIP39 采用 PBKDF2 函数推算种子,其参数如下:

  7. 助记词句子作为密码;
  8. "mnemonic" + passphrase 作为盐;
  9. 2048 作为重复计算的次数+HMAC-SHA512 作为随机算法,最终得到BIP32 种子,512 位(64 字节)是期望得到的密钥长度;

  DK = PBKDF2(PRF, Password, Salt, c, dkLen)

助记词生成种子
从根种子生成主密钥 (master key) 和主链码 (master chain code)
种子生成密钥

  上图中根种子通过不可逆HMAC-SHA512算法推算出512位的哈希串,左256位是Master Private key(m),右256位是master chain code,通过m结合推导公钥的椭圆曲线算法能推导出与之对应的264位master public Key (M)。chain code作为推导下级密钥的熵。

私钥、公钥和地址产生的方式(以BTC为例)
  • 比特币私钥使用SHA-256生成的32字节(256位)的随机数,有效私钥的范围取决于比特币使用的spcp256k1椭圆曲线数字签名标准;
  • 在私钥的前面加上版本号,后面添加压缩标志和附加校验码,所谓附加校验码,就是对私钥经过2次SHA-256运算,取两次哈希结果的前四字节),然后再对其进行Base58编码,就可以得到我们常见的WIF(Wallet import Format)格式的私钥。
  • 私钥经过椭圆曲线乘法运算,可以得到公钥。公钥是椭圆曲线上的点,并具有x和y坐标。公钥有两种形式:压缩的与非压缩的。早期比特币均使用非压缩公钥,现在大部分客户端默认使用压缩公钥。

  从私钥推导出公钥、再从公钥推导出公钥哈希都是单向的,也就是采用不可逆算法。

单向推导
  • 公钥产生后,将公钥通过SHA256哈希算法处理得到32字节的哈希值;后对得到的哈希值通过RIPEMD-160算法来得到20字节的哈希值 ——Hash160
  • 把版本号[2]+Hash160组成的21字节数组进行双次SHA256哈希运算,得到的哈希值的头4个字节作为校验和,放置21字节数组的末尾。
  • 对组成25位数组进行Base58编码,最后得到地址。
    下图以非压缩格式的65字节公钥示意上述过程:


    公钥
keystore、密码

  用户最好的体验仍然会是密码方式,所以钱包还提供了keystore让用户导出保存,这个Keystore也是私钥经过加密过后的一个文件,需要你自己设置的密码才能打开文件。这样的好处是就算keystore文件被盗,只要你额外设置的密码够长够随机,那么短时间内私钥也不会泄露,有充足的时间转移地址里面的加密货币到其他地址。Keystore会存储在使用的设备里,这样每次登陆只用输入相应密码即可。

远程过程调用(RemoteProcedure Call, RPC)

列出主流项目相关的 RPC 接口以及开源钱包项目,以供参考。

【参考文献】

区块链钱包的工作原理


  声明:转载此文是出于学习和传递更多信息的目的。若有来源标注错误或侵犯了您的合法权益,请作者与我联系,将及时更正、删除,谢谢。

相关文章

  • 区块链钱包技术原理

    区块链的技术原理: 钱包助记词生成种子(Seed),种子生成私钥。私钥推导出公钥,公钥节选部分生成钱包地址。 同时...

  • 区块链数字货币钱包

    区块链钱包是数字资产的流量入口,也是“区块链世界”基础设施 由于区块链底层技术开源,区块链钱包产品很容易同质化。 ...

  • 2018-11-05

    Vpay钱包系统开发技术优势有哪些 Vpay区块链技术开发 Vpay区块链技术开发...Vpay区块链模式开发、V...

  • 币汇钱包跨链技术新探索

    区块链钱包最近成为区块链行业新的舆情热点和技术挖掘新方向。区块链钱包就是帮忙我们在互联网区块链上生成私钥、公钥、生...

  • 怎么评价区块链钱包

    目前用了五六种的基于区块链技术的钱包,这些区块链钱包里面主要用的就是TP,IM,BITPAI,COBO和简米钱包,...

  • 区块链怎么赚钱

    目前用了五六种的基于区块链技术的钱包,这些区块链钱包里面主要用的就是TP,IM,BITPAI,COBO和简米钱包,...

  • 区块链钱包有哪些功能

    目前用了五六种的基于区块链技术的钱包,这些区块链钱包里面主要用的就是TP,IM,BITPAI,COBO和简米钱包,...

  • 币汇钱包,区块链热钱包的技术升级

    钱包是民众人手一个的日常生活工具,然而提到区块链钱包却又是鲜为人知的新概念。区块链钱包作为全球上千万区块链技术受益...

  • BitMEX交易所上币流程是什么

    BitMEX交易所上币流程是什么?区块链交易所开发,区块链商城系统开发,区块链应用技术开发,区块链钱包开发,区块链...

  • Bithumb交易所上币条件是什么

    Bithumb交易所上币条件是什么,区块链交易所开发,区块链商城系统开发,区块链应用技术开发,区块链钱包开发,区块...

网友评论

      本文标题:区块链钱包技术原理

      本文链接:https://www.haomeiwen.com/subject/vdafyctx.html