这是博主挖矿科普专辑的第二篇内容,继上一篇《比特币交易流程》之后,继续分析比特币交易从发起到确认的全过程比特币采矿的全貌。
比特币交易过程本质上是一个消费和生成一堆UTXO的过程。这些过程由事务发起者按照比特币协议中规定的方法构建,并由比特币网络生成。新区块被记录并确认。一旦交易信息被比特币区块记录并确认,交易就完成了,比特币网络也实现了价值的转移。
在《比特币交易流程》一文中,我们已经知道比特币的交易信息是如何构造的,但是这些信息是如何进入比特币的新区块的呢?
接下来博主将详细讲解比特币区块是如何通过比特币新区块生成的过程来记录和确认交易信息的。
以下是关于安利的一些知识:
交易池,英文名称:,又称内存池,用于存放待确认的交易。每个比特币挖矿节点都有自己独立的交易池。由于交易池的交易量,最低交易手续费比例(本文所说的交易手续费比例为单位交易量包含的手续费,单位为Sat/B,即每笔交易手续费B字节交易为x 比特币,下同)限制等。交易池也不同。矿工(矿池)构建预备区块时,需要从交易池中选择要打包的交易。由于交易池被频繁调用,其数据存储在节点服务器的RAM中,
比特币 网络中的挖矿节点参与记录和验证比特币 交易,而区块是保存比特币 数据的节点。部分节点不仅参与记录和验证工作,还参与比特币新区块的创建。他们通过 PoW 工作量证明构建新区块并竞争记账权,进而获得创建新区块的权限。这些节点是挖矿节点。早期的挖矿节点有矿工和矿池,但目前由于比特币挖矿难度大,单个矿工难以获得记账权并创造新区块。目前主要的比特币挖矿节点是各种矿池,如、、、、等。
UTXO库,比特币node通过扫描该节点的所有交易信息来构建一个UTXO集群。它包含所有未使用的 UTXO。每当有新的区块产生时,UTXO 库都会从自己的列表中删除新区块中消费的 UTXO,并将新产生的 UTXO 添加到自己的列表中。
奖励,也称为硬币创造交易。比特币协议规定,每产生一个新的比特币区块,比特币网络会产生N个比特币,作为维护奖励支付给网络比特币 网络。创建此区块的矿工。同时,该区块中除奖励之外的其他交易中包含的所有交易费用也将合并到奖励中,支付给创建该区块的矿工。其中,比特币诞生时N的值为50,之后大约每4年减半。当前是 6.25。@比特币 的总量。奖励是每个区块中记录的第一笔交易。
待确认的交易将首先进入交易池
当我们要发起一个比特币事务时,事务发起者会构造事务信息。此时的交易信息为待确认交易,包括交易输入信息(未使用的UTXO和正确的私钥签名)和交易输出信息(未确认的UTXO锁定新钱包地址)。
待确认交易通过验证后,由交易发起方广播到比特币网络,比特币网络中的节点可以验证并记录广播信息。其中,挖矿节点收到广播后会验证待确认的交易信息。验证通过后,挖矿节点会将待处理的交易加入到自己的交易池中。
图1 待处理交易进入交易池
需要验证的交易信息包括:
交易是否包含有效的输入输出钱包地址;交易量是否小于区块的最大大小(比特币区块的最大大小目前为1M);输入的UTXO是否合法(与节点的UTXO库相比,输入的UTXO没有被使用过);交易的总投入和产出是否合理(总投入≥总产出);从判断交易的输入是否有,对应的币需要至少100个区块确认后才能使用;确认交易池中没有重复交易;交易设置交易费用高于交易费用比率(Sat/B)限制,以及其他验证(如孤立交易的验证和跟踪等)。
挖矿节点从交易池中选择交易并构建预备区块
当挖矿节点要构建一个初步区块并准备生成新区块时,它会按优先级排序,从交易池中取出待处理的交易。预留区块通常会为高优先级的交易预留一定的空间,剩余空间会根据交易手续费率(Sat/B)从高到低一直填满区块或用完交易池中的交易。
但是 比特币 块包含的不仅仅是从交易池中提取的待处理交易。根据比特币协议,比特币的区块主要包括五部分:幻数、区块大小、区块头、交易计数器和交易信息。如下所示:
图 2 比特币 块的结构
其中,“幻数”是一个常数值;“块体积”是该块中所有数据的总体积;“区块头”可以看作是整个区块的缩写信息,用于挖矿。区块信息是区块头;“交易计数器”用于记录区块中的交易数量;“交易数据”是区块中包含的所有交易信息,包括奖励部分。一般来说,这部分数据占据了整个块。挡住大部分空间。
在 比特币 块中,块头是最关键的信息。它包含了整个区块的所有特征信息:
块版本号。创建区块的比特币节点的版本信息,用于跟踪比特币协议的升级和更新;前一个区块的哈希值。也称为父块哈希,用于定位前一个块。每个块都包含其前一个块的哈希值。任何一个区块的微小变化都会导致后续区块的哈希值发生巨大变化。比特币所有区块形成单链结构,可以有效防止恶意篡改比特币区块数据。哈希。在区块的交易数据列表中,取所有交易数据的哈希值构建一棵树,这棵树的根哈希值就是哈希(交易数据的树结构见图3)。由于哈希算法的敏感性,整个交易树中任何交易数据的微小变化都会产生联动效应,导致树的根哈希值发生巨大变化。因此,交易数据的根哈希值(Hash)可以看作是整个交易的指纹,用来指代区块中的交易数据。时间戳。创建准备块的时间。当前目标哈希。比特币协议规定,只有当矿工创建的预备区块的哈希值小于目标哈希值时,该区块才有效。目标哈希值由挖矿难度决定。当挖矿难度增加时,目标哈希值变小,矿工更难找到满足比特币网络要求的哈希值。按照目前的挖矿难度,要找到低于目标哈希值的哈希值,理论上需要S17矿机连续工作42年。所以基本不会出现个人搭建自己的节点来挖矿比特币的情况。随机数。也称为随机数。我们可以发现,在区块头信息中,区块版本号、前一个区块的哈希值、哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改. 因此1比特币需要多久,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。要找到低于目标哈希值的哈希值,理论上需要 S17 矿机连续工作 42 年。所以基本不会出现个人搭建自己的节点来挖矿比特币的情况。随机数。也称为随机数。我们可以发现,在区块头信息中,区块版本号、前一个区块的哈希值、哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改. 因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。要找到低于目标哈希值的哈希值,理论上需要 S17 矿机连续工作 42 年。所以基本不会出现个人搭建自己的节点来挖矿比特币的情况。随机数。也称为随机数。我们可以发现,在区块头信息中,区块版本号、前一个区块的哈希值、哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改. 因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。基本上没有个人建立自己的节点来挖矿比特币的情况。随机数。也称为随机数。我们可以发现,在区块头信息中,区块版本号、前一个区块的哈希值、哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改. 因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。基本上没有个人建立自己的节点来挖矿比特币的情况。随机数。也称为随机数。我们可以发现1比特币需要多久,在区块头信息中,区块版本号、前一个区块的哈希值、哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改. 因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改。因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。哈希值、时间戳、当前目标哈希都是已知信息,相对固定,不方便随意更改。因此,如果要调整 block的hash值,就需要引入一个可变数据——一个随机数。通过修改随机数,可以调整准备块的哈希值。
图3 交易数据树状结构
挖矿节点构建预备区块后,会将区块头信息发送给矿工。矿工通过不断调整区块头中的随机数来改变预备区块的哈希值。当预备区块的哈希值低到比特币网络当前的目标哈希值时,这个区块就是一个合法的新区块。
挖矿节点会及时将新区块广播到比特币网络,比特币网络中的其他比特币节点收到广播信息后会验证新区块。块在本地添加并扩展节点的区块链。至此,新区块被创建并确认,相应的交易也完成。
参考:
以上就是小编为大家带来的全部内容,希望可以帮助到大家。正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |