美文网首页
比特币源码研读(1)—— 私钥、公钥和地址

比特币源码研读(1)—— 私钥、公钥和地址

作者: laoxia1234 | 来源:发表于2018-04-20 17:46 被阅读0次

导读:

        简单的于现实世界类比,比特币中的私钥=银行密码,比特币中的公钥=银行账号,比特币中的地址=收款方,可以用公钥查询收款方是不是真正的收款方。

        当比特币钱包调用getnewaddress函数的时候,会产生一个密钥对以及地址,供以转账,收款等等功能。

        三者生成关系如下图:

私钥:

        私钥是一个介于 1~2^256-1 的一个数,可以自己写这么一个数,也可以由计算机调用密码学安全的伪随机数生成器(CSPRNG),并且需要有一个来自具有足够熵值的源的种子,来确保私钥的安全性。而2^256个数足够大,足以保证我们每个人生成的私钥都不一样。

公钥:

        通过椭圆曲线乘法可以从私钥计算得到公钥,K(公钥)=k(私钥) * G(生成点的常数点),注意该算法可以在一个方向上做乘法,但是不能在相反的方向上做。所以私钥生成公钥的过程是不可逆的,只能通过枚举来得到公钥,但是在现有计算能力下,没办法在很短的时间内将所有私钥枚举一遍。

地址:

        比特币地址可由公钥经过单向的加密哈希算法得到。以公钥 K 为输入,计算其SHA256哈希值,并以此结果计算RIPEMD160 哈希值,得到一个长度为160位(20字节)的数字:A = RIPEMD160(SHA256(K)),最后经由Base58Check编码,得到比特币地址,该方法也是不可逆的,但是可以用公钥验证该地址是不是由该公钥生成的。

最后留下一个问题:

        前提,比特币钱包中会存储多个密钥对,此时备份钱包A,如果这个时候,用getnewaddress产生一个新地址(C)之后,并向这个地址打了一点比特币,此时钱包为B,如果没有备份钱包B,也没有备份私钥,但是有备份钱包A,那么能找回新地址C的币吗?为什么?

        下一章解答这个问题。

作者:区块链研习社比特币源码研读班,旋剑

相关文章

  • 比特币源码研读(1)—— 私钥、公钥和地址

    导读: 简单的于现实世界类比,比特币中的私钥=银行密码,比特币中的公钥=银行账号,比特币中的地址=收款方,...

  • 优一区块链知识学习笔记5

    公钥和私钥 公钥加密,私钥解密 私钥→椭圆曲线乘法→公钥→单向加密哈希函数→比特币地址(过程不可逆) 私钥:随机选...

  • 比特币源码研读(5)—— 私钥、公钥和地址

    比特币中的私钥、公钥和地址,类比我们现实生活中银行卡,私钥是密码,地址是卡号,公钥还没有恰当的类比。在转账过程中,...

  • 比特币(6):挖矿

    比特币(1):从一个简单支付场景说起 比特币(2):私钥、公钥和地址 比特币(3):交易详解 比特币(4):网络架...

  • 基础概念之钱包

    1. 私钥、公钥和地址 在比特币体系中,私钥、公钥和地址是三个非常重要的基础概念,那这三者分别代表着什么呢?类比我...

  • 比特币源码研读(2)--钱包标准BIP32

    之前了解了比特币的私钥、公钥和地址。简单地说,私钥是256位的随机数,公钥是私钥通过椭圆曲线算法计算出来,而地址是...

  • 比特币的私钥和地址是什么?

    比特币私钥和地址 每一个比特币账户实际上有三个部分,分别是私钥、公钥和地址。 私钥是一个256位的二进制数,用编码...

  • 比特币之密钥与地址

    公钥与私钥 比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的。密钥是成对出现的,由一个私钥和一个公钥所组...

  • 比特币钱包教程

    简介 钱包程序用来创建接受比特币的公钥和使用公钥对应的私钥来花费接收到的比特币。钱包文件用来保存私钥和交易相关的信...

  • 比特币公钥

    比特币的公钥体系: 一个比特币帐户由一对公钥和私钥唯一确定,要保存帐户只需要保存私钥文件即可,公钥是公开的。 当甲...

网友评论

      本文标题:比特币源码研读(1)—— 私钥、公钥和地址

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