5分钟了解挖矿和矿池

什么是挖矿?

比特币的共识机制是POW(工作量证明机制)。通过计算区块的哈希值(HASH)产出比特币的行为就叫挖矿。当计算出的区块哈希值符合难度要求时,一个新的区块就被“挖掘”出来。矿工就会得到创建新区块的新币奖励,以及区块中所含交易的交易费。

/uploads/files_user54/article/5db2a72656dde931588.jpg

难度是用来衡量找到一个低于给定目标的HASH的困难程度。难度越大,就越难找到合适的哈希,就要经过更多的运算。

每产生2016个块(理论上应该花费两周的时间),难度会动态调整。假如2016块在不足两周的时间内就被开采出来了,那就说明当前出块速度过快,全网难度加大。反之,假如因为算力突然下降,出块速度太慢,则系统会调低全网难度来提高出块的速度。

区块头的结构

长度

字段

描述

4 字节

版本

版本号,用来跟踪软件或协议的升级

32 字节

前区块哈希

链中前一个区块(父区块)的哈希值

32 字节

Merkle根

一个哈希值,表示这个区块中全部交易构成的merkle树的根

4 字节

时间戳

以Unix纪元开始到当下秒数记录的区块生成的时刻

4 bytes

难度目标

该区块的工作量证明算法难度目标

4 bytes

Nonce

一个用于工作量证明算法的计数器

矿工挖矿需填充完区块头六个字段,才可以计算哈希,也就是开始挖矿。挖矿的过程就是不断地改变Nonce值,然后判断算出的区块头哈希值是否小于难度目标。

为了便于理解,我们可以近似地认为难度越大,区块哈希前面开始的0的位数就要越多。以真实区块#600855为例,计算得到的哈希值是:000000000000000000087aba2ea98db257a788105bebca982a18849286e8c9ed。这个哈希以19个0开头,显然是非常难才能碰撞得到这一个哈希。挖矿节点通常需要尝试数十亿甚至数万亿个不同的Nonce取值,才能找到一个满足条件的哈希值。

什么是矿池?

Nonce的初始值为0,然后试1、2、3这样。显然,单台矿机挖起来会很慢,如果我们有两台矿机,完全可以一台挖单数,一台挖双数。如果有更多的矿机,那就可以各自分配一段Nonce区间来运算。这就形成了“矿池”。矿池把很多机器的算力集中起来一起挖矿,挖到区块的概率就提高了,然后再根据每个参与的矿工的算力来进行利益分配。

挖矿的意义

挖矿会消耗大量的能源,现在比特币挖矿消耗的电量相当于一个中型国家(哥伦比亚)。但这并不是没有意义的一件事,反而挖矿是区块链中的重要环节。因为挖矿维护了网络的运行,保护了网络的安全。因为想要更改一个区块,那么就要拥有至少51%的算力,这个成本非常高。

2 个评论

浪费了大量电力…
这是安全的保障。为了防止攻击,就要花巨大的成本

要回复文章请先登录注册



Copyright ©