zoukankan      html  css  js  c++  java
  • 比特币 定义分析

    “一枚电子货币(an electronic coin)是这样的一串数字签名:每一位所有者通过对前一次交易和下一位拥有者的公钥(Public key) 签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验,就能够验证该链条的所有者。”

    先聊聊什么是数字签名,关于这个概念,我看了很多次下面这个链接指向的文章,但是看了又忘了,如此反复,所以还是决定按照自己的理解写下来,加深记忆。其实是这样,比如我给吉安娜回信,我先把信的内容HASH一下,生成一个字符串,我们称这个字符串为这封信的摘要,然后将这个摘要用我自己的私钥加密一次,最后将这个加密过的摘要和未加密过的信件一起,发给吉安娜。彼时吉安娜收到信,用我的公钥将摘要一解密,同时对收到的信件内容HASH,这两个东西一比较,如果是一致的,就可以证明两件事情,第一,这封信确实没有被修改过,第二,这封信的的确确是我发给她的。这就起到了“数字签名”中,“签名”二字的作用。

    然后我们接着聊。接着看它的定义,配合着上面这张图来看。这是英文原文的配图,广为流传的中文版将Signature不知为何翻译成了公钥。

    我们直接看最后一个交易,也就是图上最右边的一个交易,我们假设这是一个真实的比特币,在互联网上,目前这枚比特币最后一笔交易就是这一笔交易,可以看出这枚比特币目前是属于拥有者3的。那么拥有者2,是如何将这枚比特币支付给拥有者3的呢,其实定义也已经说得很清楚了,图也很明白,就是将拥有者2手上这枚比特币的交易链,连同拥有者3的公钥一起,进行随机散列,然后再将随机散列的值,使用用户2的私钥进行数字签名。最后将这个数字签名,连同比特币一起,也就是连同更新过的交易链一起,发送给拥有者3。

    彼时拥有者3收到这枚比特币和附送的数字签名,通过拥有者2的公钥,对数字签名进行解密,得到之前提到过的散列值。拥有者3再将手上的比特币交易链信息,连同自己的公钥, 进行随机散列,看是否也能得到一样的散列值,如果是一样的, 就能知道两件事情:

    1.这枚比特币确实来自拥有者2

    2.这枚比特币的交易链信息未被恶意篡改

    所以交易链就是比特币,比特币就是交易链。以上的分析就是关于这个定义的全部内容。

  • 相关阅读:
    树莓派安装parrot linux记录
    Arch linux(UEFI+GPT)安装及后续优化教程
    VS部分安全函数用法
    C语言博客作业06--结构体&文件
    C语言博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    C语言博客作业02--循环结构
    DS博客作业08--课程总结
    DS博客作业07--查找
  • 原文地址:https://www.cnblogs.com/heben/p/6111391.html
Copyright © 2011-2022 走看看