入门区块链08 ∣ 揭秘比特币区块是如何诞生的

在比特币诞生之时,一个新的工种也正式诞生了,那就是“矿工”。矿工做的事情其实就是对区块进行打包,获得区块打包权的过程就是挖矿。本期我们将从一个新区块的诞生始末来探索挖矿的过程。

0 引言

在比特币诞生之时,一个新的工种也正式诞生了,那就是“矿工”。矿工做的事情其实就是对区块进行打包,获得区块打包权的过程就是挖矿。本期我们将从一个新区块的诞生始末来探索挖矿的过程。

1 挖矿简介

挖矿是获取新比特币的唯一方式,它的工作原理和真正的开采矿物十分相似,因此得名,进行挖矿的人就是矿工。

比特币挖矿的过程就是通过算力(计算量)来获取比特币区块打包权的过程。当获得区块打包权之后矿工会获取到两种类型的奖励:创建新区块获得的新币奖励和区块中包含的交易的交易费。

这两种类型的奖励是维持矿工挖矿动力的所在。但挖矿最重要的意义在于保护了比特币系统的安全,实现了在没有中心机构的情况下,也能使比特币网络达成共识,避免了双重支付。

比特币是通过挖矿来发行的,类似于央行开印钞机来发行货币。但比特币的总量有限,挖矿获得新币的奖励机制是递减的模式。比特币的总量为2100万枚,矿工打包一个新区块得到的比特币奖励数量大约每四年减少一半,2009年每个区块奖励50个,2012年奖励25个,2016年奖励减半为12.5个。基于这个速度,在2140年,所有的比特币将会发行完毕。

2 一个区块的构建

在构建一个区块之前,首先我们要清楚独立验证这个概念。

比特币网络的每个节点上发生的交易数据在传递给下一个节点后,收到交易的节点都会为这次交易进行一次验证,这样能够确保只有合法有效的交易才能在网络中传播,无效的交易将会在第一个验证节点就被废弃。

负责挖矿的节点我们姑且叫它们为挖矿节点,挖矿节点会将收到的交易信息添加到自己的内存池中,这里的内存池也可称为交易池,用来暂存没有被加入到区块链中的交易记录。

比特币规定大约每10分钟产生一个区块,在这个10分钟内,挖矿节点会做哪些事情呢?

举个栗子:

假设挖矿节点A想获得001区块后的002区块的打包权,那它需要通过自己的算力来寻找满足002打包权的一个数值,寻找这个数值的过程就是工作量证明。A在寻找数值的同时也会收集自己收到的交易信息,并将这些新的交易信息放到交易池中。

如果另一个挖矿节点B提前获得了002区块的打包权,则节点A停止争取002的打包权,转而开始对节点B产生的002区块进行验证,验证通过之后会检查002区块中全部交易,并在自己的交易池中移除002中已经存在的交易,确保交易池中的交易都是未确认的,等待被记录到新的区块中。

做完这些节点A就要去竞争003区块的打包权了,它首先会构建一个新的空区块,作为003的候选区块,将自己交易池中的交易放入到003中,因为这个区块还没有有效的工作量证明,所以挖矿节点需要成功找到正确的工作量证明数值之后,这个区块才能够生效。

3 工作量证明

我们一直在提工作量证明,那工作量证明到底是什么呢?

首先,我们要先复习一下区块的结构。一个区块包含了区块体和区块头,区块体用来存储交易信息,区块头用来存储区块的一些基本属性。这里我们关心的重点是区块头,区块头所包含的主要内容如下:

在工作量证明中我们要着重关注难度目标值和Nonce。挖矿节点的目标就是让这个区块头运算生成的哈希值要小于难度目标值。Nonce就是用来改变这个哈希值的。因为Nonce包含在了区块头中,所以它的数值改变也会导致区块的哈希值改变。

挖矿节点通过不断的调整Nonce 的数值来使得哈希值小于难度目标值,要满足这个条件需要大量试错调整才能找到符合要求的Nonce,这就需要消耗巨大的计算资源(算力),所以最终挖矿节点之间的竞争其实就是谁先找到这个Nonce,找Nonce的过程就是工作量证明,找到满足条件的Nonce就是有效的工作量证明。

一个挖矿节点完成了工作量证明,那其他节点如何验证这个工作量的有效性呢?

很简单!因为Nonce已经找到了,所以其他的节点只需要用这个Nonce值代入区块进行一次运算,看得到的哈希值是否比难度目标值小,小的话则证明此工作量有效。

4 验证合法性

当一个区块生成之后就要上链了,新的区块在网络中传播时,每个节点将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。并且这种机制还确保了诚实的矿工生成的区块可以被纳入到区块链中,从而获得奖励。行为不诚实的矿工所产生的区块将被拒绝,这不但使他们失去了奖励,而且也浪费了本来可以去寻找工作量证明解的机会,因而导致其电费亏损。

5 总结

工作量证明机制是去中心化自治的重点,挖矿节点是比特币网络中的不可或缺的一节,中本聪发明的这种去中心化的共识机制是在没有经过明确选举或者没有固定达成共识的时间,只需要成千上万的节点遵守最简单的规则就能形成一套复杂的系统。我们再来盘点一下一个新区块的诞生前后;

1.每个全节点依据综合标准对每个交易进行独立验证并记入交易池

2.通过完成工作量证明算法的验算,挖矿节点将交易记录独立打包进新区块

3.每个节点独立的对新区块进行校验并组装进区块链

4.每个节点对区块链进行独立选择,在工作量证明机制下选择累计工作量最大的区块链

这是比特币基础知识的最后一期,我们通过最简单通俗的语言学习了比特币网络的基本概念。在中本聪发明了比特币网络之后,这种点对点的思想也打开了新世界的大门,越来越多的人开始加入到区块链革命。

后面我们将开始探索比特币网络以外更大的世界,各种具有创造性的新兴公链正改变着世界。

版权声明:

数字签名:Press.one

作者微信:w4533001

我是liheng,区块链探索者、互联网产品经理,超级个体修炼中,只创作对用户有价值的内容。要做100期《小白入门区块链系列》,希望我们能共同见证,这是第008期。原创不易,你的支持是我持续创作的动力。

0条评论 添加新讨论

登录后参与讨论
Ctrl+Enter 发表