Gwallet小百科 | 区块链硬核科普之如何处理采矿工作和交易

有没有想过区块链上的挖掘过程如何工作,或者如何确认交易并将其添加到区块链?我也是。而且,由于找不到关于此过程的任何清晰的逐步说明,我决定自己写一个。这是七个步骤在区块链上处理区块链交易的方式。
在这里插入图片描述
步骤1:用户从其钱包应用程序中退出交易,尝试从他们的钱包中将某个加密货币或令牌发送给其他人。

步骤2:交易由钱包应用程序广播,现在正等待矿工在相应的区块链上进行提取。只要不提货,它就会徘徊在“未确认交易池”中。该池是网络上等待处理的未确认交易的集合。这些未确认的交易通常不收集在一个巨型池中,而更经常地收集在小型的局部池中。

步骤3:网络上的矿工(有时称为节点,但不完全相同!)从这些池中选择交易并将它们形成一个“块”。除了一些额外的元数据之外,一个块基本上是事务的集合(目前仍是未确认的事务)。每个矿工都构建自己的交易块。多个矿工可以选择要包含在其区块中的相同交易。
示例:两个矿工,矿工A和矿工B。矿工A和矿工B都可以决定将交易X包括在其区块中。每个区块链都有自己的最大块大小。在比特币区块链上,一个块的最大块大小为1 MB数据。在将交易添加到其区块之前,矿工需要根据区块链历史检查该交易是否符合执行条件。如果根据现有的区块链历史记录,发件人的钱包余额中有足够的资金,则该交易被视为有效,可以添加到该区块中。如果比特币所有者想要加快交易速度,他们可以选择提供更高的采矿奖励。矿工通常会优先考虑此类交易,因为它们提供了更好的采矿奖励。

通过解决一个非常复杂的数学问题来创建此签名,该问题对于每个事务块都是唯一的。下面的计算能力挖掘,否则,如果您想使其更加简单,请跳至步骤5。
在这里插入图片描述
挖掘aka哈希(工作量证明共识算法)
每个矿工试图向区块链中添加一个块时面临的数学问题是为其块中的数据查找哈希输出(也称为签名),该哈希输出以一定数量的连续零开始。听起来很复杂,对吧?但这并不难。让我尝试以一种简单的方式向您解释。
在继续之前,了解什么是哈希函数很重要。哈希函数仅是一个很难解决的数学问题,但答案很容易验证。
散列函数接受数字和字母的输入字符串(字面的随机字母,数字和/或符号的任何字符串),并把它变成一个新的32位串的现有出随机字母和数字。这32位字符串是哈希输出。如果输入字符串中的任何数字或字母发生更改,则哈希输出也将随机更改。但是,相同的输入字符串将始终提供相同的输出字符串。
现在,将块内的数据视为哈希输入(数据字符串)。对该输入进行哈希处理时,将提供哈希输出(32位字符串)。比特币区块链的一条规则是,只有当其签名(哈希输出)以一定数量的零开始时,才能将区块添加到区块链中。但是,由输入字符串生成的输出字符串对于每个不同的输入字符串始终是随机的,那么,如果该块的数据字符串没有导致以这么多连续的零开头的签名(哈希输出)怎么办?好吧,这就是为什么矿工反复更改其区块内称为nonce的部分数据的原因。每次矿工更改随机数时,它都会略微更改区块数据的组成。并且,当块数据的组成(输入)发生变化时,其签名(输出)也会发生变化。因此,每次更改块的随机数时,该块都会获得一个新的随机签名。
矿工会无限期地重复更改随机数的过程,直到他们随机击中满足签名要求的输出字符串(零)为止。下面以示例说明。这个示例使用了七个零,但是零的数量实际上取决于区块链的区块难度。但是,块难度要稍微复杂一些,因此我建议您将其保存以备后用。

这就是矿工需要为其块找到合格签名的方式,也是为什么要解决这一数学问题需要大量计算能力的原因。猜测许多不同的现时会花费大量时间和计算能力。另外,当更多的哈希算力(矿工)加入区块链时,其数学问题的难度将增加,并导致更高的平均电费来解决一个区块。如果您做得很好,请继续执行步骤5。
注意:此过程实际上不是定义为数学问题,而是作为确定性的事情-计算机正在对数字执行预定的操作,以查看是否需要输出。

步骤5:首先找到其区块的合格签名的矿工,将该区块及其签名广播给所有其他矿工。

步骤6:现在,其他矿工通过获取广播块的数据字符串,并对其进行哈希处理,以查看其哈希输出是否确实导致其包含这么多零的签名,来验证签名的合法性(难以解决,易于验证,记住?)。如果有效,其他矿工将确认其有效性并同意可以将该区块添加到区块链中(他们达成共识),也就是彼此都同意,因此称为共识算法)。这也是“工作量证明”定义的来源。签名是所完成工作的“证明”(所花费的计算能力)。现在可以将该块添加到区块链,并分发到网络上的所有其他节点。只要可以根据区块链的历史记录执行区块内的所有交易,其他节点将接受该区块并将其保存到其交易数据中。

步骤7:将一个区块添加到链中之后,添加在其上方的所有其他区块均视为“ 确认”对于那个街区。例如,如果我的交易包含在块502中,并且区块链的长度为507个块,则意味着我的交易有5个确认(507-502)。之所以称为确认,是因为每次在其之上添加另一个区块时,区块链都会在完整的交易历史(包括您的交易和区块)上再次达成共识。您可以说此时您的交易已被区块链确认5次。
这也是Etherscan在显示您的交易详细信息时所指的。您的交易得到的确认信息越多(也就是区块链中嵌入的区块越深),攻击者就越难以更改它)。在将新区块添加到区块链之后,所有矿工都需要通过形成新的交易区块从第三步重新开始。矿工无法继续开采(嗯,他们可以,但是在本文中这是无关紧要的),又由于解决以下两个原因而解决了他们先前正在研究的区块问题:
一个:它可能包含已被添加到区块链的最后一个区块确认的交易(请记住,多个矿工可以在他们正在解决的区块中选择/包括相同的交易)。再次发起的任何这些交易都可能使它们无效,因为源余额可能不再足够。
在这里插入图片描述
还有两个:每个块都需要将添加到区块链的最后一个块的哈希输出(签名)添加到其元数据中。这就是使它成为区块链的原因。如果一个矿工继续挖掘他们已经在工作的区块,其他矿工将注意到哈希输出与区块链上最新添加的区块的输出不对应,因此将拒绝该区块。

发布了49 篇原创文章 · 获赞 0 · 访问量 1820

猜你喜欢

转载自blog.csdn.net/Gwallet/article/details/103383787