7个简单步骤解释区块链挖掘和交易如何工作

7个简单步骤解释区块链挖掘和交易如何工作

转载自该链接.

有没有想过区块链上的挖矿过程是如何工作或者交易如何被确认并被添加到区块链中的?以下是在区块链上处理区块链交易的方式,分为七个步骤。

  • 第 1 步:用户从他们的钱包应用程序签署交易,尝试从他们那里向其他人发送某种加密货币或代币。
  • 第 2 步:交易由钱包app进行广播,然后等待由相应区块链上的矿工打包。只要它没有被打包,它就会徘徊在“未经确认的交易池”中。该池是网络上等待处理的未确认交易的集合。这些未确认的交易通常不会被收集在一个巨大的池中,而是更多地被收集在小的细分的本地池中。
  • 第 3 步:网络上的矿工(有时称为节点,但不完全相同!)
    从这些池中选择交易并将它们形成一个“块”。除了一些额外的元数据之外,一个区块基本上是一个交易的集合(此时此刻,仍然是未确认的交易)。每个矿工都构建自己的交易块。多个矿工可以选择要包含在他们的区块中的相同交易。

示例:两个矿工,矿工 A 和矿工 B。矿工 A 和矿工 B 都可以决定将交易 X 包含在他们的区块中。
每个区块链都有自己的最大块大小。在比特币区块链上,一个区块的最大区块大小是 1 MB 的数据。在将交易添加到他们的区块之前,矿工需要根据区块链历史检查交易是否有资格执行。如果根据现有的区块链历史,发送方的钱包余额有足够的资金,则该交易被认为是有效的,可以添加到区块中。如果比特币所有者想加快交易速度,他们可以选择提供更高的挖矿奖励。矿工通常会将此类交易优先于其他交易,因为它们提供了更好的挖矿奖励。

  • 第 4 步:通过选择交易并将它们添加到他们的区块中,矿工创建了一个交易区块。要将这个交易块添加到区块链(这意味着让区块链上的所有节点都在这个块中注册交易),该块首先需要一个签名(也称为“工作证明”,解出nonce值)。这个签名是通过解决一个非常复杂的数学问题来创建的,这个问题对于每个交易块都是独一无二的。每个区块都有不同的数学问题,因此每个矿工都将致力于解决他们形成的区块所特有的不同问题。每个块的问题都同样难以解决。为了解决这个数学问题,需要使用大量的计算能力(因此需要大量的电力)。这个过程称为挖矿。如果您想更多地了解数学问题的具体工作原理(实际上并没有那么复杂),请继续阅读下面的内容,否则,如果您想让它更简单一些,请跳到第 5 步。

挖矿(工作量证明共识算法)又名哈希

每个矿工在尝试向区块链添加块时面临的数学问题是为其块中的数据找到一个哈希输出(又名签名),该输出以一定数量的连续零开头。
散列函数只是简单地提出一个很难解决的数学问题,但答案很容易验证。
散列函数接受数字和字母的输入字符串(字面的随机字母,数字和/或符号的任何字符串),并把它变成一个新的32位串的现有随机字母和数字。这个 32 位字符串是散列输出。如果输入字符串中的任何数字或字母发生更改,哈希输出也会随机更改。但是,相同的输入字符串将始终给出相同的输出字符串。
现在将块内的数据视为哈希输入(一串数据)。当这个输入被散列时,它会给出一个散列输出(32 位字符串)。比特币区块链的一条规则是,一个区块只有在其签名、哈希输出以一定数量的零开头时才能添加到区块链中。但是,一个输入字符串生成的输出字符串对于每个不同的输入字符串总是随机的,那么如果块的数据字符串没有导致以这么多连续零开头的签名(哈希输出)怎么办?嗯,这就是为什么矿工反复更改他们区块内的一部分数据,称为nonce. 每次矿工更改随机数时,它都会稍微改变块数据的组成。当块数据的组成发生变化(它的输入)时,它的签名(它的输出)也会发生变化。因此,每次更改块的随机数时,块都会获得一个新的随机签名。
矿工无限期地重复这个更改随机数的过程,直到他们随机命中满足签名要求(零)的输出字符串。
这就是矿工需要为他们的区块找到合格签名的方式,这也是解决这个数学问题需要如此多的计算能力的原因。猜测这么多不同的随机数需要大量的时间和计算能力。此外,当更多的散列能力(矿工)加入区块链时,它的数学问题的难度会增加,并导致解决一个区块的平均电费更高(更多关于这个在这里)。
现在让我们继续第 5 步。

注意:这个过程实际上并没有被定义为一个数学问题,而是一个确定性的东西——计算机正在对一个数字执行预先确定的操作,以查看输出是否合乎需要。

  • 步骤 5:首先为其区块找到合格签名的矿工,将该区块及其签名广播给所有其他矿工。
  • 第 6 步:其他矿工现在通过获取广播块的数据串来验证签名的合法性,并对其进行散列以查看其散列输出是否确实导致其包含这么多零的签名(难以解决,易于验证)。如果有效,其他矿工将确认其有效性并同意该块可以添加到区块链中(他们达成共识,即它们都彼此一致,因此称为共识算法)。这也是“工作量证明”定义的来源。
    签名是所执行工作的“证明”(所花费的计算能力)。该块现在可以添加到区块链中,并分发到网络上的所有其他节点。只要区块内的所有交易都可以根据区块链的历史记录执行,其他节点就会接受该区块并将其保存到他们的交易数据中。
    第 7 步:将一个块添加到链中后,添加到它上面的每个其他块对于那个块都算作“确认”。例如,如果我的交易包含在区块 502 中,并且区块链长度为 507 个区块,则意味着我的交易有 5 个确认(507-502)。之所以称为确认,是因为每次在其上添加另一个区块时,区块链都会再次就完整的交易历史达成共识,包括您的交易和您的区块。您可以说此时您的交易已被区块链确认 5 次。这也是 Etherscan 在向您显示交易详细信息时所指的内容。您的交易获得的确认越多(也就是区块嵌入链中的深度越深),攻击者就越难更改它(您可以在此处阅读有关其工作原理的更多信息))。在将新区块添加到区块链后,所有矿工都需要在第三步重新开始,形成一个新的交易区块。矿工无法继续(好吧,他们可以,但这与本文无关)挖矿也就是解决他们之前正在处理的区块的问题,原因有两个:
    一:它可能包含已被添加到区块链的最后一个区块确认的交易(请记住,多个矿工可以在他们正在解决的区块中选择/包含相同的交易)。再次发起的任何这些交易都可能使它们无效,因为余额可能不再足够。
    第二:每个区块都需要将添加到区块链的最后一个区块的哈希输出(签名)添加到它们的元数据中。这就是使它成为区块链的原因。如果矿工继续挖掘他们已经在工作的区块,其他矿工会注意到哈希输出与区块链上最新添加的区块不对应,因此会拒绝该区块。
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值