比特币挖矿

这个交易现在在比特币网络上传播开来。但只有被一个称为挖矿的过程验证且加到一个区块中之后,这个交易才会成为这个共享账簿(区块链)的一部分。 

比特币系统的信任是建立在计算的基础上的。交易被包在一起放进区块中时需要极大的计算量来证明,但只需少量计算就能验证它们已被证明。

挖矿在比特币系统中起着两个作用:

  • 挖矿在构建区块时会创造新的比特币,和一个中央银行印发新的纸币很类似。每个区块创造的比特币数量是固定的,随时间会渐渐减少。

  • 挖矿创建信任。挖矿确保只有在包含交易的区块上贡献了足够的计算量后,这些交易才被确认。区块越多,花费的计算量越大,意味着更多的信任。

描述挖矿的一个好方法是将之类比为一个巨大的多人数独谜题游戏。一旦有人发现正解之后,这个数独游戏会自动调整困难度以使游戏每次需要大约10分钟解决。想象一个有几千行几千列的巨大数独游戏。如果给你一个已经完成的数独,你可以很快地验证它。然而,如果这个数独只有几个方格里有数字其余方格都为空的话,就会花费非常长的时间来解决。这个数独游戏的困难度可以通过改变其大小(更多或更少行列)来调整,但即使它非常大时验证它也是相当容易的。而比特币中的"谜题"是基于哈希加密算法的,其展现了相似的特性:非对称地,它解起来困难而验证很容易,并且它的困难度可以调整。

比特币应用及故事中,我们提到了一个叫Jing的在上海学计算机工程的学生。Jing在比特币网络中扮演了一个矿工的角色。大概每10分钟,Jing和其他上千个矿工一起展开一场对一个区块的交易寻找正解的全球竞赛。为寻找这个解,也被称为工作量证明,整个网络需要具有每秒亿万次哈希计算的能力。这个工作量证明算法指的用SHA256加密算法不断地对区块头和一个随机数字进行哈希计算,直到出现一个和预设值相匹配的解。第一个找到这个解的矿工会赢得这局竞赛并会将此区块发布到区块链中。

Jing从2010年开始挖矿,当时他使用一个非常快的桌面电脑来为新区块寻找正解。随着更多的矿工加入比特币网络中,寻找谜题正解的困难度迅速增大。不久,Jing和其他矿工升级成更专业的硬件,比如游戏桌面电脑或控制台专用的高端独享图像处理单元芯片(即显卡GPU)。只有使用集成了几百个挖矿专用算法硬件并能同时在一个单独芯片上并行工作的专用集成电路(AS1C)挖矿才会营利。Jing同时加入了一个类似彩票奖池的、能够让多个矿工共享计算力和报酬的矿池。Jing现在运行两个通过USB联接的ASIC机器每天24小时不间断地挖矿。他卖掉一些挖矿所得到的比特币来支付电费,并可以通过营利获得一些收入。作为专用挖矿软件的后台,他的计算机里安装了一个比特币索引客户端,名称为bitcoind。

区块中的挖矿交易记录

网络中产生的一笔交易直到成为整个比特币大账簿——区块链的一部分时才会被确认有效。平均每10分钟,矿工会将自上一个区块以来发生的所有交易生成一个新的区块。新交易不断地从用户钱包和应用流入比特币网络。当比特币网络上的节点看到这些交易时,会先将它们放到各自节点维护的一个临时的未经验证的交易池中。当矿工构建一个新区块时,会将这些交易从这个交易池中拿出来放到这个新区块中,然后通过尝试解决一个非常困难的问题(也叫工作量证明)以证明这个新区块的合法性。

这些交易被加进新区块时,以交易费用高的优先以及其它的一些规则进行排序。矿工一旦从网络上收到一个新区块时,会意识到在这个区块上的解题竞赛已经输掉了,会马上开始下一个新区块的挖掘工作。它会立刻将一些交易和这个新区块的数字指纹放在一起开始构建下一个新区块,并开始给它计算工作量证明。每个矿工会在他的区块中包含一个特殊的交易,将新生成的比特币(当前每区块为25比特币)作为报酬支付到他自己的比特币地址。如果他找到了使得新区块有效的解法,他就会得到这笔报酬,因为这个新区块被加入到了总区块链中,他添加的这笔报酬交易也会变成可消费的。参与矿池的Jing设置了他的软件,使得构建新区块时会将报酬地址设为矿池的地址。然后根据各自上一轮贡献的工作量将所得的报酬分给Jing和其他参与矿池挖矿的矿工。

Alice的交易被网络拿到后放进未验证交易池中。因为包含足够的交易费,它被Jing的矿池放到了生成的新区块中。大约在Alice的钱包第一次将这个交易发送出来五分钟后,Jing的ASIC矿机发现了新区块的正解并将之发布为第277,316号区块,包含419个其它交易。Jing的ASIC矿机将这个新区块发布到网络上后,其它矿机就会验证它,并投身到构建新区块的竞赛中。

你可以查看包含Alice交易记录的这个区块的信息。

几分钟后,第277,317号新区块诞生在另一个挖矿节点中。因为这个新区块是基于包含Alice交易的第277,316号区块的,在这个区块的基础上增加了更多的计算,因此就加强了这些交易的可信度。包含Alice交易的区块对这个交易来说算一次"证明"。基于这个区块每产生一个新区块,对这个交易来说就会增加了一次"证明"。当区块一个个堆上来时,这个交易变得指数级地越来越难被推翻,因此它在网络中得到更多信任。

image.png

图2-9

在图2-9中,我们可以看到包含Alice的交易的第277,316号区块。在它之下有377,361个区块(包括0号区块),像链子一样一个连着一个(区块链),一直连到0号区块,即创世区块。随着时间变长,这个区块链的高度也随之增长,每个区块和整个链的计算复杂度也随之增加。包含Alice的交易的区块后面形成的新区块使得信任度进一步增加,因为他们叠加了更多的计算在这个越来越长的链子上。按惯例来说,一个区块获得六次以上“证明”时就被认为是不可撤销的了,因为要撤销和重建六个区块需要巨量的计算。

消费这笔交易

既然Alice的这笔交易已经成为区块的一部分被嵌入到了区块链中,它就成为了整个分布式比特币账簿的一部分并对所有比特币客户端应用可见。每个比特币客户端都能独立地验证这笔交易是有效且可消费的。全索引客户端可以追钱款的来源,从第一次有比特币在区块里生成的那一刻开始,按交易与交易间的关系顺藤摸瓜,直到Bob的交易地址。轻量级客户端通过确认一个交易在区块链中且在它后面有几个新区块来确认一个支付的合法性。这种方式叫做简易支付验证。

Bob现在可以将此交易和其它交易的结果信息作为输入,创建新的所有权为其他人的交易。这样就实现了对此交易的消费。举个例子,Bob可以用Alice支付咖啡的比特币转账给承包商或供应商以支付相应费用。大多数情况下,Bob用的比特币商户端会将多个小额支付聚合成一个大的支付,也许会将一整天的比特币收入聚合成一个交易。这样会将多个支付合成到咖啡店财务账户的一个单独地址。图2-6为交易集合示例。

当Bob花费从Alice和其他顾客那里赚得的比特币时,他就扩展了比特币的交易链条。而这个链条会被加到整个区块链账簿,使所有人知晓并信任。我们假定Bob向在邦加罗尔的网站设计师Gopesh支付一个新网页的设计费用。那么区块交易链会如图2-10所示。

image.png

玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。