比特币的“挖矿”到底是什么?

比特币的“挖矿”到底是什么?_第1张图片
Bitcoin Mining

在比特币中,区块链就是以串联方式衔接在一起的交易记录。每一个区块里都包含成百上千条交易记录。新的交易记录只要检查合格,就写在之前最后一个区块的后面。检查内容包括交易记录的数字签名是否正确,是否伪造、是否重复等。这些检查工作就由比特币的“矿工”来做,“矿工”就是记账员。“挖矿”就是将过去一段时间内发生的、尚未经过网络公认的交易信息收集、检验、确认,最后打包加密成一个交易记录信息块,成为比特币网络上公认已经完成的交易记录,永久保存,无法被篡改。

同一时间,有N个矿工都在做这件事,他们收到的交易记录肯定会略有区别,就会向网络提交N个不同版本的新区块。到底哪个是标准的呢?比特币通过算法让矿工进行运算,限制大约每10分钟只能有一个新区块产生。“挖矿”的本质就是完成运算,争夺这个唯一标准的记账权。

矿工们为了争夺记账权的运算包括两步。第一步是产生新区块,即一个字符串。这个字符串由3部分组成,一是这个新区块内包含的交易记录,二是这个新区块的基本信息,三是前一个区块的哈希函数值。正是因为当前区块要包含前一个区块的哈希函数值,于是区块与区块之间就勾连起来了,成为了“链”。这步运算对电脑来说很简单,瞬间就可以完成。第二步运算的主要目的就是限制区块产生的时间。它是将第一步的结果加一个随机数,构成一个新的字符串,这个字符串的哈希函数值要求前面若干位都是0才算合格。由于哈希算法不可逆,要找到符合条件的这个随机数,就只能采取穷举法比拼算力。目前比特币采用SHA256算法,哈希函数值是256位的数字,计算结果要求前72位全部都是0。第一位是0的概率是1/2,第二位还是的概率是1/4,这样下去,前72位全部都是0的概率只有2的72次方分之一,通常需要整个比特币网络全部计算机加起来运算大约十几分钟才能找到。即使以后算力不断提升,还可以提高要求,比如前73、74、75位都是0,难度又将是现在的2倍、4倍、8倍,成指数增长,从而保证新区块的生成总能有合理的时间间隔。最终,第一个成功完成两步运算的幸运矿工,就可以记下这笔账在整个网络中传播,并可以获得伴随交易产生的交易费用。对于某笔特定的交易来说,这就得到第1次确认。后续其他幸运矿工把新的区块挂接在当前区块之后,每增加一个区块,确认+1。当一笔交易获得了6次确认,就认为这笔交易已经得到全网认同,合法有效了,这就是比特币区块链的“六次确认”规则。

由于求解这个随机数时加上了上一个区块的哈希函数值,这样所有的数据块就被组成了一条可以从前到后不断被验证的数据链条。修改中间任何一个数据块的任何记录,都会导致从此之后的所有数据块的哈希函数值无法验证成功。整个比特币网络只认可长度最长的那条链。因此,即使有人伪造了交易记录,但做出的新链也不会得到认可,除非他超过全比特币网络其他部分算力总和,才能保证算得最快,让网络接受这个结果。比特币系统就是通过“区块链+挖矿”的机制,实现了交易记录无法被篡改的目标。

你可能感兴趣的:(比特币的“挖矿”到底是什么?)