比特币的交易

论坛 期权论坛 期权     
有球用的新新人类   2020-3-28 04:36   753   0
上一篇中简单介绍了一下比特币的运作模式,那今天借Andreas M Antonopoulos《精通比特币》书中的例子给大家解读一下比特币在交易时发生了什么。在开始之前,先对比特币的专业术语名词和流程扫个盲,个人感觉虽然单独去看名词说明和流程图并不能很好的理解每一步在干嘛,但是开卷有益,在日后的文章中也会陆续展开介绍。
  • 地址
比特币地址(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串字符和数字组成,以阿拉伯数字“1”开头。就像别人向你的email地址发送电子邮件一样,他可以通过你的比特币地址向你发送比特币。
  • 区块
一个区块就是若干交易数据的集合,它会被标记上时间戳和之前一个区块的独特标记。区块头经过哈希运算后会生成一份工作量证明,从而验证区块中的交易。有效的区块经过全网络的共识后会被追加到主区块链中。
  • 区块链
区块链是一串通过验证的区块,当中的每一个区块都与上一个相连,一直连到创世区块。
  • 确认
当一项交易被区块收录时,我们可以说它有一次确认。矿工们在此区块之后每再产生一个区块,此项交易的确认数就再加一。当确认数达到六及以上时,通常认为这笔交易比较安全并难以逆转。
  • 矿工
矿工指通过不断重复哈希运算来产生工作量证明的各网络节点。
  • 矿工费
交易的发起者通常会向网络缴纳一笔矿工费,用以处理这笔交易。大多数的交易需要0.5毫比特币的矿工费。
  • 哈希
二进制数据的一种数字指纹。它是一种函数,通过它可以把任何数字或者字符串输入转化成一个固定长度的输出,它是单向输出,即非常难通过反向推导出输入值。
  • 工作量证明
工作量证明指通过有效计算得到的一小块数据。具体到比特币,矿工必须要在满足全网目标难度的情况下求解SHA256算法。
  • 奖励
每一个新区块中都有一定量新创造的比特币用来奖励算出工作量证明的矿工。现阶段每一区块有25比特币的奖励。
  • 私钥
用来解锁对应(钱包)地址的一串字符,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh。
  • 交易
简单地说,交易指把比特币从一个地址转到另一个地址。更准确地说,一笔“交易”指一个经过签名运算的,表达价值转移的数据结构。每一笔“交易”都经过比特币网络传输,由矿工节点收集并封包至区块中,永久保存在区块链某处。
  • 钱包
钱包指保存比特币地址和私钥的软件,可以用它来接受、发送、储存你的比特币。OK,正文开始。比特币交易,与现金交易不同的是,我们在交易的过程中有银行给我们记账,而比特币系统则是去中心化,没有中央机构能够完成这件事,完成账本记录修护的是系统里的其他用户。那么在发生交易时,我们首先要向系统公示我们的信息,这些信息任何使用比特币中的人都是可以看到的,当然除了私钥,私钥是绝对保密的存在。通常包含我们自己的地址、转账地址、时间、交易、金额,还有验证自己是地址所有人的信息等等,其实也就是下面实例中首先看到的Hash值(个人认为是区块链中的核心算法),而这个Hash值也就告诉了系统这笔转账对应的就是持有者的私钥,同时它也代表了一个指令,允许从钱包中转账给收款人。关于更加详细的Hash解读讲结合下文中的例子一起探讨,感兴趣的话CDSN论坛中也有大量的关于Hash值的问题,包括计算等等。当一笔交易发生后,要对两个部分进行确认。一是交易确实是由持有者发出的;二是发出货币者的账户中大于等于这笔支付额。这个图的交易是JOE转给了Alice0.1枚比特币的表现。由于图片太长,我把图片截成了三个部分。
要说明的是,这里面的案例和交易都是真实存在的。所以每一笔都来自于www.blockchain.com,在这个网站中,每个账户的每一笔交易记录都有迹可循。其中图中的位置,绿色表示入账,红色表示出账。因此我们可以看到,这个账户是收账人Alice的账户,入账了0.1比特币。Hash值也就是第一行表示的含义其实有很多它既包含了私钥信息又包含了数字签名信息。简单来说,其实Hash就是一种加密的映射,以最简单的直接hash映射为例。定义将Hash(key) = a*key + b, (a\b均为常数),a = 1/100,b = -5。也就是将以下的数字经过上述的函数运算将key转换成了Hash(Key)。Key                                                                                      Hash(Key)1005200                                                                              100473009800                                                                              300931506400                                                                              150597604300                                                                              76038当然实际在比特币中Hash函数远比这个复杂的多,而将私钥key通过Hash函数转换就得到了Hash(Key),这个过程就称之为挖矿。
而在使用Hash值的时候既能保证私钥的安全性又能保证其数字签名的有效性。比如3.1415926,如果我们规定取1、3、7位数作为输出值,那我们很容易就得到342这个数字作为映射值,可以证明它的原型就是圆周率。但是如果反过来推,比如用342想推它的原型是什么,如果不知道Hash函数的情况下可能很难去推,因此这个方法被认为是单向的。以这个转账的例子来说,假如JOE的私钥就是π,然后Hash函数经过矿工的运算得到了342,Alice收到了这个信息后就拥有了0.1枚带有签名和加密的比特币,当Alice想用这笔比特币消费时候她需要知道这枚比特币的来源是JOE,才能进行消费(流程在上一篇文章中提及),但如果是其他人仅拿到了342这样一个哈希值,是无法去锁定到底是哪一跟链上的比特币,也就无法成为一枚有效的比特币进行下一次的消费。图中的第二行蓝色的数字串也就表示着两个人各自的ID,也就是比特币中的adress。由于挖矿计算Hash是一件复杂的事情,当然也要给计算的人一定的费用也就是矿工费,一般在Fee那栏有所体现。
那下面我们可以看一下细节。

Ok,其实本来还想继续嘚啵一下Detials中的细节,但是发现基本上都是翻译的工作,也就不做赘述了。
小结一下,你需要知道的事,因为会与后面聊的话题相关,理论上我认为最重要的是理解Hash是怎样一个过程,他不仅是作为核心的算法,也是矿工的工作所在,如果想做矿工的朋友们也可以在CSDN中找到计算的语言来进行尝试。实际应用中,我认识我们应该学会读懂自己的账户,明白Summary中的含义就可以了,当然在使用比特币进行消费时还会有一笔Fee的存在,你可以理解为手续费。那么下期将会给大家介绍双向支付拜占庭将军的问题,下下期将进行区块链技术目前的应用。第二期,聊一下体会吧,其实建立这个公众号的原本的想法是给大家推介一些好的文章,仅做个导读,但是发现文章在读起来的时候自己也需要去推敲,比如上篇的比特币白皮书中也谈到了Hash,但是可能不是很容易理解,因此也就做了与大家分享学习理解这样的文章。后续可能也会陆续回归推介文章的功能为主,还是感谢大家的支持,如果理解的有偏差的地方也欢迎私信来进行探讨。写在最后,鉴于上一篇文章中出现了低级且无聊的错别字,故特意请来技术宅神镇宅,热烈欢迎我的好兄弟~爽~的加入,撒花,有志同道合的兄弟姐妹们欢迎加入。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP