美文网首页
《精通比特币》笔记 - 密钥和地址介绍

《精通比特币》笔记 - 密钥和地址介绍

作者: 程序员在深圳 | 来源:发表于2017-11-20 00:11 被阅读330次
    image.png

    在学术上,比特币是一个成功的密码学应用,之所以这么说,是因为它很好的利用了密码学知识,完成了一个银行账户的账号和密码功能,这两者的对应关系是:

    比特币地址对应了银行卡号,而私钥则对应了银行卡的密码

    我们在使用银行卡时,卡号是可以公开的,但如果密码被别人知道了,那就非常危险了,同样的道理,在比特币系统中,私钥也是需要妥善保管的,任何在网络中传输私钥的行为都可能被黑客利用,从而“盗光”你的比特币。

    和银行账户的区别是,银行卡卡号和密码是独立的,而比特币的地址和私钥却有一定的关联,具体就是

    比特币的地址可以通过私钥计算出来

    所以

    只要拥有私钥,你就拥有其对应的比特币的控制权。

    到目前为止,你可能对地址和私钥有了一定的认识,下面我们再从系统实现的角度,把这个事情理解的更深入一些

    密钥对(key pair)和地址实际上是一种非对称加密(Asymmetric Cryptography)技术,这种技术的主要用途是可以产生数字签名(Digital Signature),它的特点是

    1. 签名有且只有持有私钥的人可以产生
    2. 任何持有公钥的人可以对签名进行验证

    非对称加密非常符合比特币的应用场景,我们先假设公钥就是比特币地址(为了说明比特币如何运用非对称加密技术,这里暂时使用公钥代替地址),同时假设我要向你转0.01个比特币(写这篇文章的时候,1枚比特币的价格已经超过了¥50000),下面我们来还原一笔交易的过程

    1. 我创建了一笔交易,因为我不能直接传输我的私钥,但我可以用我的私钥做一个数字签名,把转账金额和签名作为交易的输入
    2. 因为我要给你转账,所以我会把你的公钥作为这笔交易的输出
    3. 比特币网络上的任何人可以通过这笔交易中的签名,以及我的公钥对这笔交易进行验证,还记得我的公钥怎么获取吗——因为一笔交易的输入是上一笔交易的输出,而上一笔交易的输出中就有我的公钥
    4. 通过签名和我的公钥,可以验证只有我可以使用这笔比特币,并向你完成转账操作,这时你可以什么都不用做,只需要等待这笔交易被记录到区块中,你的钱包发现了这笔交易,且交易的输出中包含了你的公钥,此时你的钱包就可以把这笔未消费的输出记录到你的余额中了。
    5. 如果你想“花费”我刚转给你的比特币,你只需用你的私钥进行签名,并按照步骤1重新创建一个交易即可

    通过以上交易的还原,你可以清楚的看到非对称加密技术的威力

    1. 非对称加密可以保护私钥不被泄漏——全程不需要在网络中传输私钥
    2. 私钥用来签名交易,从而“spend bitcoin”
    3. 公钥用来接收资产

    至此,我介绍了比特币是如何运用非对称加密技术来安全的完成一笔交易的,这里我漏掉了一个必要条件,不知道你有没有发现,那就是

    用私钥计算公钥的过程是不可逆的,也就是说通过公钥基本上很难完成对私钥的破译,否则任何人都可以对你的交易进行签名了

    当然在真正的比特币实现中,并没有直接使用公钥来作为“银行卡卡号”,而是使用一个“地址”来完成这一功能,地址可以通过公钥算出来,同样的,公钥到地址这条路径也是不可逆的,只不过这个环节的算法和私钥算公钥不一样

    1. 私钥算公钥是通过椭圆曲线算法计算的
    2. 公钥算地址是通过哈希计算而来的

    好了,密钥和地址的介绍就说到这里,后面我们再具体的介绍其中的算法。

    相关文章

      网友评论

          本文标题:《精通比特币》笔记 - 密钥和地址介绍

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