当前位置:首页区块链比特币中生成新区块的过程

比特币中生成新区块的过程

这是博客作者挖矿的流行科学专辑的第二个内容。它继承了先前的“ 比特币交易过程”,并通过分析从启动到确认的整个比特币交易过程,继续了解比特币挖矿的比特币 。

比特币交易的过程本质上是UTXO消费和产生的过程。这些过程由交易发起方根据比特币协议比特币 ,并记录并确认由比特币网络生成的新区块。一旦交易信息被比特币区块记录并确认,交易就完成了, 比特币网络实现了价值转移。
生成新的比特币区块的过程图(1)“ /gt;
在“ 比特币交易的过程”一文中,我们已经知道比特币交易信息的结构,但是该信息如何输入新的比特币区块?

接下来博主通过比特币处理产生新的区块,指定比特币如何记录并确认交易信息。

首先需要修改一些知识点:

事务池 ,英文名称:mempool,也称为内存池,用于存储要确认的事务。每个比特币挖矿节点都有自己的独立交易池。由于交易池的大小,最小交易手续费比率 (在本文中)是指交易手续费比率单位交易量中包含的交易费用 ,单位为Sat / B ,即交易每B字节交易的费用是x Satoshi 比特币 ,下同)限制,并且每个节点的交易池也不同。构造备用块时,矿工(矿池)需要从交易池中选择要打包的交易。由于事务池经常被调用,因此其数据存储在节点服务器的RAM中,这意味着事务池的容量不会太大。

比特币网络中的挖矿节点参与记录和验证比特币交易,而区块则持有比特币数据的节点 。一些节点不仅参与记录和验证工作,而且还参与比特币新块的创建。他们构建新的区块,并与PoW竞争以证明计费权利,从而获得创建新区块的权限。这部分节点是一个挖矿节点 。在早期的挖矿节点中,有矿工和矿池。但是,由于挖矿比特币困难,单个矿工很难赢得会计权并创建新的区块。目前,主要的比特币挖矿节点是各种挖矿池,例如F2Pool,Poolin, btc ,Antpool,Slushpool等。

UTXO库 ,一个比特币节点通过扫描节点的所有交易信息来构造一个UTXO集群 。它包含所有未消费的UTXO。每当生成新块时,UTXO库都会从其自己的列表中删除新块中消耗的UTXO,并将新生成的UTXO添加到其自己的列表中。

Coinbase奖励 ,也称为硬币交易。 比特币协议规定,每次生成新的比特币区块时, 比特币网络都会生成N 比特币作为奖励,以维护创建区块的矿工的比特币网络。同时,除此区块中的Coinbase奖励外,其他交易中包含的所有交易费用也将合并到Coinbase奖励中,并一起支付给创建此区块的矿工。其中,N 比特币的诞生价值为50,此后每四年约有一半,目前为6.25, 比特币网络以这种方式控制着一半的比特币总数。 Coinbase奖励是每个区块中记录的第一笔交易

要确认的交易将首先进入交易池

当我们要发起比特币交易时,交易发起人构造交易信息。此时的交易信息是要确认的交易。它包含交易输入信息(未使用的UTXO和正确的私钥签名)和交易输出信息。 (锁定新钱包地址的未决UTXO)。

在确认要验证的交易之后,交易由网络中的比特币节点, 比特币网络广播的方向发起,并且可以被包括在认证信息广播中。其中,挖矿节点将在收到广播后验证待确认的交易信息。验证通过后,挖矿节点会将要确认的交易添加到其自己的交易池中。
生成新比特币块的过程的图片(2)

图1挂起的事务进入事务池

需要验证的交易信息包括:

  1. 交易是否包含有效的输入和输出钱包地址;
  2. 交易量是否小于该区块的**交易量(目前比特币区块的**交易量为1M);
  3. 输入的UTXO是否合法(与节点的UTXO库相比,尚未使用输入的UTXO);
  4. 总交易投入和产出是否合理(投入总额≥产出总额);
  5. 确定交易的输入是否有来自Coinbase的奖励。奖励所对应的货币必须至少经过100个区块确认后才能使用;
  6. 确认事务池中没有重复的事务;
  7. 交易设置的交易费用高于mempool交易费用比率(Sat / B)限制以及其他验证(例如隔离交易的验证和跟踪)。

挖矿节点从事务池中选择事务以构建备用块

当挖矿节点想要构造一个初步区块并准备生成一个新区块时,它将根据优先级进行排序,并从事务池中获取待处理的事务。储备块通常为高优先级交易保留一定的空间,而剩余空间将根据交易费用比率(Sat / B)从高到低始终填充该块或耗尽交易池中的交易。

但是比特币块不仅包含从交易池中提取的未决交易。根据比特币协议的规定, 比特币的区块主要包括五个部分:幻数,区块大小,区块头,交易计数器和交易信息。如下所示:
生成新的比特币区块的过程图(3)“

图2 比特币区块的结构

其中, “幻数”是一个值为0xD9B4BEF9的常数; “块容量”是该块中所有数据的总容量; “块头”是可以看作整个块的缩写信息,用于挖矿。 “交易计数器”用于记录区块中的交易数量; “交易数据”是包含在该区块中的所有交易信息,包括Coinbase奖励部分。一般来说,这部分数据占整个块中大部分的空间。

在比特币块中,块头是最关键的信息。它包含整个块的所有特征信息:

  1. 块版本号 。创建该区块的比特币节点的版本信息用于跟踪比特币协议的升级和更新;
  2. 上一个块的哈希值 。也称为父块哈希,用于定位上一个块。每个块包含对中的任何一个其散列值的块何一的任何块何一微小的变化,随后的散列值会造成一个巨大的差异块,所以环联锁确保所有比特币块形成单链结构,可以有效地防止恶意篡改比特币块数据。
  3. MerkleRoot哈希 。在该块的交易数据列表中,将所有交易数据的哈希值用于构造Merkle树。此Merkle树的根哈希值是MerkleRoot哈希。如下所示:
    生成新比特币块的过程图片(4)

    图3交易数据的Merkle树结构

    由于哈希算法的敏感性,整个交易的Merkle树在任何何一格交易数据中都有细微的变化,都会产生连锁效应,从而导致Merkle树的根哈希值发生巨大的变化。因此,可以将交易数据的MerkleRoot哈希视为整个交易的指纹,该指纹用于引用块中的交易数据。

  4. 时间戳记 。创建预留块的时间。
  5. 当前目标哈希值 。 比特币协议规定,仅当矿工创建的准备好的区块的哈希值小于目标哈希值时,此区块才有效。目标哈希值由挖矿难度确定。当挖矿难度变大时,目标哈希值变小,而矿工很难找到满足比特币网络要求的哈希值。根据当前的挖矿难度,要找到一个低于目标哈希值的哈希值,理论上,一台S17挖矿机需要连续工作42年 。因此,基本上不存在个人自建节点挖矿比特币 。
  6. 随机数 。也称为Nonce。我们可以发现,在块头信息中,块版本号,前一个块的哈希值,MerkleRoot哈希值,时间戳和当前目标哈希是已知信息,相对固定,更改时不方便将。因此,如果要调整准备好的块的哈希值,则需要引入一个可变的数据随机数。通过修改随机数,可以调整保留块的哈希值。

挖矿节点构造完备用块后,它将把块头信息发送给矿工。矿工连续调整块头中的随机数以更改保留块的哈希值。当储备区块的哈希值较低时,当比特币网络的当前目标哈希值为低时,该区块为合法的新区块。

比特币节点及时将比特币 ,网络收到新区块的广播信息进行验证后,网络将新区块比特币网络广播到其他比特币节点,验证后,将新区块本地添加并扩展节点区域Blockchain。此时,将创建并确认新块,并且相应的事务也已完成。

参考资料:

  1. 比特币源代码分析: https : 比特币 任务-blog-BlogCommendFromMachineLearnPai2-1.nonecase
  2. 比特币区块头: https : //www.inestopedia.com/terms/b/block-header-cryptocurrency.asp
  3. 比特币目标哈希值: https : 比特币
  4. 比特币区块结构: https : 比特币
  5. 掌握比特币 : https : 比特币
温馨提示:

文章标题:比特币中生成新区块的过程

文章链接:https://www.btchangqing.cn/50789.html

更新时间:2022年10月08日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

彭博社的研究人员对比特币目标是12,000美元持乐观态度。 比特币正逐渐成为“数字黄金彭博研究员: 比特币准备突破12,000美元

2020-7-7 14:34:38

区块链

关于如何建立简单的风险控制系统

2020-7-7 14:45:11

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