比特币挖矿如何运作

比特币挖矿如何运作?

上一课中,您了解了比特币矿工是什么,它如何在其内存池中存储新交易,然后通过创建候选块开始“挖矿”过程。

如果我刚刚写的内容对你来说听起来像是一门外语,我强烈建议你从我的比特币挖矿初学者指南的第一课开始。

如果你还在我身边,让我们仔细看看候选块……

就像你可以分成两个基本部分一样,一个候选块可以分为两个部分:

  1. 块头黄色区域)
  2. (灰色区域)
    比特币挖矿如何运作

如果我们仔细观察一个候选块,它实际上不仅仅包含交易。

比特币挖矿如何运作

当矿工创建一个候选区块时,它包含一个“区块头”(黄色区域)。

块的“主体”(灰色区域)保存交易。

 

除了包含一堆交易的候选块之外,它还包含一些元数据,这些元数据提供了块的“摘要”。

 

元数据只是提供有关其他数据的信息的数据。在这种情况下,元数据提供有关块本身的信息。该信息被称为“块头”。

块头内部,有几条数据。

出于本课的目的,我将简化块头中的内容。

时间戳

Block Header 中的第一条数据是“时间戳”。

时间戳指示块的创建时间。

比特币挖矿如何运作

上一个区块哈希

下一条数据称为“上一个块”,或者更具体地说,称为“上一个块哈希”。

前一个块哈希是区块链中前一个块的块哈希

比特币挖矿如何运作

为了理解这意味着什么,我们需要看一下文件。

比特币挖矿如何运作

现在我们正在查看文件内部,我们可以看到数据是以特定方式构造的。

比特币挖矿如何运作

让我们将其可视化为区块链。

矿工创建的候选区块必须添加到最近的区块之上

比特币挖矿如何运作

假设最近的块是蓝色的块。

比特币挖矿如何运作

由于蓝色块的块哈希是文件中的最新块(“区块链”),因此这就是矿工想要在其上构建的块。

将块哈希视为为块自定义生成的 ID 号

所以矿工要做的就是把它作为“前一个块哈希”添加到它的 OWN 候选块的块头中

比特币挖矿如何运作

“交易摘要”哈希

下一条数据就是我所说的“交易摘要”哈希。

顾名思义,它提供了区块中所有交易的“摘要”,以字符串形式表示。

没有详细说明,发生的事情是块中的所有交易(以红色突出显示)都被放入哈希函数并以特定顺序进行哈希处理,最终得到一个哈希值

比特币挖矿如何运作

 

这个散列被用作“交易摘要”散列。比特币挖矿如何运作

这个散列提供的是一个唯一的“指纹”,它基于一个块中包含的所有交易。

这有助于确保交易未被篡改

这个“交易摘要”哈希实际上被称为“默克尔根”。🤓

请记住,数据的微小变化将完全改变哈希值。这意味着如果将来有人试图更改区块中的任何交易,这将导致“交易摘要”哈希发生变化,并与区块头中的原始值完全不同。比特币挖矿如何运作

基本上,更改交易将创建一个完全不同的“指纹”,并且与原始“指纹”不匹配。

这种变化会让每个人立即知道交易被篡改。

块哈希

到目前为止,Block Header 包含了三条数据:

  1. 时间戳
  2. 上一个区块哈希
  3. “交易摘要”哈希

下一步是将这个块头数据放入一个散列函数中。

这将产生一个称为“块哈希”的随机数。

(虽然更准确的名称是“块头哈希”,因为它只是块头的哈希,而不是整个块的哈希。)

就像前面提到的 Previous Block Hash 一样,将 Block Hash 视为自定义生成的 ID 号,将分配给候选块。

比特币挖矿如何运作
矿工为什么要这样做?

为了让矿工将其区块添加到区块链中,它必须找到满足一定要求的区块哈希

如果它不能满足这个要求,那么这个块将不会被认为是有效的,矿工不能将它的块添加到区块链中。

更具体地说,块哈希必须是一个以一定数量的零开头的数字

究竟有多少个零?

它因人而异。比特币系统的软件决定了 Block Hash 应该从零开始的最小数量。

最初,只需要少量的零,但随着越来越多的矿工加入,比特币软件开始需要更多的零。

比特币挖矿如何运作

矿工必须生成满足比特币软件设置的输出阈值的输出(“块哈希”)。

这个“阈值”只是指定了 Block Hash 必须以零开头的数量。

这就像“边缘”舞蹈。

比特币挖矿如何运作

阈值越低,需要的零越多。

所需的零越多,找到“正确”块哈希的难度就越高。

这是因为更多的前导零意味着更少的可能解决方案,这意味着需要更多时间来“找到”正确的块哈希。

找到一个以三个零开头的值(例如“ 000123… ”)比尝试找到一个包含六个零的值(例如“ 000000123 … ” )要困难得多

这是一个实际有效块哈希的最新示例:

0000000000000000000586b367c292dfd274bf2e67575cf8b4d00735fc1df6ff

注意它以多少个零开头。

“一定数量的零”来自于所谓的“挖矿难度”。这是由运行比特币网络的软件自动向上或向下调整的。难度根据矿工的数量而变化。挖矿的计算机越多,难度就越大,一开始需要的零点就越多,这使得找到获胜的 nonce 变得更加困难。

块哈希可以解释为一个非常大的数字r,并且必须低于某个阈值。这就是为什么块哈希以一系列零开头,后跟字母数字字符串的原因。有些块有多达 20 个前导零,而早期的块只有 8 个。所需的零数量大致表明了区块发布时的挖矿难度。

如果 Block Hash 没有以所需数量的零开头会发生什么?

然后不能将块添加到文件中(“区块链”)。

幸运的是,矿工可以进行多次尝试

但是,如果矿工再次通过哈希函数运行仅包含时间戳、上一个块哈希和“交易摘要”哈希的块头,它总是会得到相同的结果

矿工需要以某种方式更改数据,然后再尝试对块头进行哈希处理。

比特币提供了一种方式!

随机数

在 Block Header 中,有一个额外的字段称为“ nonce ”(浅蓝色框)

比特币挖矿如何运作

Bock Header有一个特殊的部分,矿工可以用任意数字填充。

矿工可以随意输入任何数字。

随机数与区块中的交易完全分开。它的唯一目的是让矿工用一个数字填充它,如果 Block Hash 不满足以一定数量的零开头的要求,则更改数字。

通过使用随机数,矿工可以操纵散列函数的输出来“猜测”所需的输出。

由于 Block Header 中的其他数据无法更改,因此唯一可以更改的数据是 nonce。

因此,如果 Block Hader 的第一次哈希尝试失败,矿工会更改 nonce 的值。

你可以把这个过程想象成试图找到一个密码挂锁的组合。

比特币挖矿如何运作

尝试找到解锁它的数字组合时,没有捷径可走。您必须尝试所有可能的组合,直到某个时候,您偶然找到正确的组合。

你必须一遍又一遍地猜测,直到你幸运!

就像检查锁组合是否正确(它可以解锁或不解锁)非常容易和快速一样,对于矿工和之后的其他节点来说,检查随机数是非常容易和快速的确实是对的。

 

该矿工也在与其他矿工竞争。第一个找到产生有效区块哈希的随机数的矿工被授予将其区块添加到区块链中的权利,并因此获得奖励。

 

例如,假设 Block Hash 需要以至少四个 zeros 开头

找到具有所需数量的初始零的块哈希的唯一方法是随机选择一个随机值并通过哈希函数运行块头。

在这种情况下,矿工以“0”作为 nonce 值(浅蓝色框)开始。

比特币挖矿如何运作

如果这未能产生预期的结果,那么 mincer 所能做的就是不同的nonce再试一次。

矿工更改随机数,然后重新开始,直到它设法找到至少具有所需最小零数的块哈希。在这种情况下,四个零

请记住,即使您仅使用哈希函数进行了很小的调整,即使是最微小的更改也会产生完全不同的结果

所以矿工的第一次尝试是在随机数中使用数字“0”。然后它通过散列函数运行块头,并查看块散列是否以四个零开头。

如您所见,布洛赫哈希仅以两个零开头,因此不符合将块添加到区块链所需的标准。

如果输出无效,矿工将继续尝试使用不同的 nonce 值。

由于“0”的值不起作用,矿工可以将 Nonce 的值更改为“ 1 ”(浅蓝色框),然后再次通过哈希函数运行 Block Header。

比特币挖矿如何运作

如您所见,块哈希以没有零开始,因此这也不起作用。

由于“1”的值不起作用,矿工可以将 Nonce 的值更改为“ 2 ”(浅蓝色框),然后再次通过哈希函数运行 Block Header。

比特币挖矿如何运作

在这种情况下,Block Hash最终以四个零开头并符合标准。

这是一个成功的 Block Hash 结果!🎉

如您所见,无法预测哪个 nonce 会产生具有正确数量零的 Block Hash,因此矿工必须不断尝试不同的 nonce 才能找到正确的值

矿工可以长时间挖矿,但不能保证他们会找到正确的随机数。大多数永远不会!

nonce 用作计数器,其值不断增加,直到找到正确的 Block Hash 或其他矿工找到。

这就像一个猜数字游戏!

您只是试图通过更改随机数的值来找到以一定数量的零开头的哈希。

矿工反复这样做……希望结果会产生符合标准的块哈希。

他们的计算机越强大,他们就能做出越多的“猜测”。

这种“猜测”过程称为挖掘

“获胜”矿工将获得一定数量的比特币(加上交易费用),称为“区块奖励”。

大约每 10 分钟就有一名矿工赢得区块奖励。

区块奖励

由于矿工花费大量时间和精力来“猜测”正确的随机数并确认比特币区块链上的交易,比特币软件奖励他们的努力:

  1. 新创建的比特币当矿工确认交易时,它们被捆绑在一个区块中并添加到比特币区块链中。对于添加到区块链的每个新区块,都会向矿工支付新的比特币。这称为整体补贴。比特币的具体数量基于创建区块时协议确定的发行时间表。目前,新发行量为每块 6.25 BTC,并将在 2024 年 5 月左右降至每块 3.125 BTC。
  2. 交易费用。当人们使用比特币进行交易时,他们会向矿工支付费用以进一步激励他们确认他们的交易。当矿工确认一捆交易时,它还会从每笔交易中收取所有费用。

挖矿是一个单调重复的过程:

比特币挖矿如何运作

取一个带有随机数的块头,对其进行散列,查看散列是否以一定数量的零开头,如果不是,则使用不同的随机数重复该过程。

我只是想着它就昏昏欲睡。😴

因此,当您阅读或听到采矿涉及“解决复杂的数学问题”时,现在您知道这不是一个正确的描述。

采矿没有什么复杂的! 这个过程本身非常简单。你只是想尽可能快地猜出一个正确的数字,或者只是快到足以成为第一个猜对的矿工,所以你的候选块就是被添加到区块链中的那个。而已!

“算力表示矿机的“猜测能力”。您每秒可以猜测的哈希值越多,您的哈希率就越高。例如,每秒 1 万亿 (1,000,000,000) 次猜测等于1 terrahash (TH/s) 的哈希率。

仅仅因为过程很简单,并不意味着它很容易。这就是为什么它被称为“挖矿”。您正在尝试“挖掘”正确的数字,这需要付出很多努力,类似于现实世界中的实际挖掘。

现在矿工已经找到了一个能够生成满足要求的区块哈希(以至少 4 个零开头)的随机数,该区块被添加到矿工的文件副本(“区块链”)中。

还记得蓝色区块是矿工区块链中的最新区块吗?不再。

由于矿工能够猜出正确的随机数,它能够将其块添加到区块链(绿色)。

比特币挖矿如何运作

所以从高层次上看,矿工电脑上的文件已经更新(用绿色表示)。

比特币挖矿如何运作

然后,节点会将这个块传输到它直接连接到的附近节点。

节点将检查它,验证它,并确保块头产生一个符合标准的块哈希。在这种情况下,Block Hash 需要以四个零开头。比特币挖矿如何运作

这些节点将通过将块添加到文件来更新他们的文件(“区块链”)。

他们的文件将被更新,现在与获胜矿工的版本相同(绿色文件)。

在他们的内存池中,属于这个获胜区块的所有交易都从“新鲜”(或“未确认”)状态变为“已确认”状态,现在永久添加到文件中。

任何有冲突的交易都会被踢出

由于采矿过程,只有紫色交易会进入区块链。比特币挖矿如何运作

然后这些节点会将块传递给其他节点。比特币挖矿如何运作

一旦新区块被大多数矿工接受,所有矿工都会重新开始并创建一个全新的候选区块,并且挖矿过程会重复进行。

挖矿充当计算机网络中交易的排序机制,其中“开采”的区块对区块链中的内容拥有最终决定权。

这个新创建的区块的区块哈希现在将被矿工用于其候选区块中的“上一个区块哈希”。

比特币挖矿如何运作

块哈希充当“”。

矿工现在必须在他们正在创建的新区块中包含前一个区块的区块哈希。

比特币挖矿如何运作

例如,这意味着要挖掘区块 101,矿工需要知道区块 100 的哈希值。

区块 101被开采之前,区块 102不能被开采。

这迫使矿工专注于区块 101,而区块 101 又包括区块 100的哈希值。没有矿工可以跳过。

但不是让每个块都有一个“块号”,而是每个块通过其Bock Hash引用前一个块。

这意味着每个区块都相互链接,这就是创建称为区块链的“区块链”的原因。

这个“区块链”不是由区块编号而是由区块哈希组成的。

为什么你不能欺骗比特币

假设每个人都在处理 101 块。

但是一位矿工想要更改区块 80 中的交易。

它必须进行更改并重做块 80-100 的所有计算,并且还要执行块 101

那是21 块昂贵的计算!

不仅如此,矿工还必须在比特币网络上的其他矿工完成他们正在处理的当前区块(区块 101)之前完成这一切。这基本上是不可能的。

篡改已经构成区块链一部分的任何交易都很难逃脱惩罚。

这就是区块链被描述为不可变的含义。

工作证明(PoW)

挖矿过程通常被称为“工作量证明”或PoW

PoW 被称为比特币用来让所有节点就比特币区块链的“官方”副本达成一致的“共识机制” 。这就是比特币能够在不需要争议解决或中央权威干预的情况下达成共识的方式。

术语“工作量证明”只是指需要“工作”才能找到低于某个阈值的块哈希的事实。一旦你这样做了,任何人都可以验证它,它提供了“证据”。

 

“猜测随机数”然后通过哈希函数运行块头的过程被用作证明您已经在块上执行了所需数量的“工作”的一种方式。

 

第一个产生有效哈希的矿工被允许向区块链添加一个新区块,他们将获得比特币奖励。

如果大量矿工加入比特币网络,PoW 将进行调整,使找到有效区块哈希变得更加困难。如果这种增加的难度阻止了太多矿工并且他们停止了挖矿,那么难度将降低以使其更容易挖矿。

这个过程被称为难度调整,大约每两周发生一次,它确保大约每 10 分钟将新块添加到区块链中,无论有多少矿工加入或离开网络。

根据矿工创建新区块的速度进行难度调整。

通过调整挖矿难度,比特币可以确保新的比特币以预定的速度被创造出来,而不管参与网络的计算能力有多大。

难度调整很重要,因为它确保矿工不会过快开采过多的比特币供应

挖矿所需的专用计算机硬件和电力也意味着攻击网络的成本高得令人望而却步。这确保了比特币区块链的安全性完整性

任何拥有足够计算能力来攻击网络的人都最好诚实地挖矿并获得区块奖励(新比特币加上交易费用)。

概括

恭喜!你现在知道比特币中的“挖矿”是如何工作的了!

  • 矿工通过选择一个随机数、运行散列函数并检查输出来搜索一个可接受的散列,这将是“块散列”。
  • 如果哈希没有正确数量的前导零,矿工会更改随机数,运行哈希函数,然后再次检查。
  • 当一名矿工最终幸运地找到一个有效的随机数并“获胜”时,该区块将被发送到比特币网络中的其他节点(包括其他矿工),然后每个节点都可以使用获胜矿工的哈希函数运行nonce,并验证它是否有效。
  • 如果解决方案被大多数节点接受,则该块被添加到区块链中,获胜的矿工将获得块奖励。
  • 所有矿工“重置”并开始处理新的候选块,使用最近挖掘的块的哈希作为其块头中的参考(作为“上一个块头”)。
  • 矿工尝试“猜测”或找到正确随机数的过程称为“工作量证明”(PoW)。

现在我们已经了解了矿工和采矿,让我们更新我们的比特币系统地图:

比特币挖矿如何运作

给TA打赏
共{{data.count}}人
人已打赏
加密学院

什么是比特币矿工?

2019-1-16 2:22:19

加密学院

区块链初学者指南-什么是区块链?

2019-1-18 12:27:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索