主页 > imtoken恢复身份币不见了 > 比特币挖矿简介

比特币挖矿简介

imtoken恢复身份币不见了 2023-08-22 05:11:17

本文主要介绍比特币挖矿的基本算法。想知道什么是比特币的同学可以看这里:什么是比特币

比特币是基于区块链的底层应用程序。比特币挖矿就是将最新的比特币交易数据打包成一个新的区块,加入区块链。

比特币区块挖矿任务挖矿收益来源结构

在介绍挖矿算法之前,先来看看比特币区块的结构,一个完整的区块结构如下,主要数据是区块头和区块中包含的比特币交易信息

大小字段说明

4 个字节

块大小

该字段后面的块大小,以字节为单位

80 字节

区块头

组成区块头的区块几个字段

1-9(可变整数)

交易计数器

交易数量

变量

交易

区块中记录的交易信息

我们主要看区块头的具体结构

尺寸字段说明

4 个字节

版本

版本号比特币挖矿难度的历史演进,用于跟踪软件/协议更新

32 字节

父块哈希

指区块链中父区块的哈希

32 字节

默克尔根

区块中交易的默克尔根的Hash值

4 个字节

时间戳

生成区块的大致时间(精确到秒) Unix 时间戳)

4 个字节

难度目标

这个区块的工作量证明算法的难度目标(难度)

4 个字节

随机数

工作量证明算法的计数器

块头大小为80字节,其中包含前一个块的哈希值,通过它可以在链上找到前一个块。因此,区块链的结构类似于单链表的结构。通过任何一个区块,都可以向上找到比特币的第一个区块(创世区块)。

区块链结构示例(来自《区块链原理、设计与应用》)

在比特币区块链中,区块517552的头部如下:

区块链数据(来自 blockchain.info)

生成新区块

挖矿就是对80字节的区块头进行SHA256计算,运算结果是256位的值。然后通过大小与当前难度值的比较来判断当前区块是否合法。计算公式如下:

HASH256(HASH256(区块头))

如果不满足以上条件,改变区块头中的随机值(Nonce),然后重复以上计算。公式中pdiff称为矿池难度,是一个256位长度的常数。

区块头的hash计算出来的值必须在0到pdiff之间,在这个范围内随机取值。 Difficult的值小于pdiff,Difficult越小比特币挖矿难度的历史演进,越难找到符合条件的Nonce值,挖掘的时间也越长。这里的难度是0~2^32之间的一个值,通常称为bdi​​ff。

由于Hash算法的特点,上面的公式是不能倒转的。 Nonce值只能通过蛮力搜索,使得块头的hash值符合上式。根据矿机当前的算力,每十分钟可以计算出一个有效的Noce值来生成一个区块。但是,这个值不是确定性的,可能是几秒钟,也可能是一小时。

参考:

比特币区块链和挖矿原理:

比特币区块结构分析:

区块链技术指南: