比特币挖矿简介

本文主要介绍比特币挖矿的基本算法,想要了解什么是比特币的同学可以先看这里:什么是比特币
比特币是底层基于区块链的应用,比特币挖矿是将最近的比特币交易数据打包成一个新的区块,添加到区块链中。

挖矿的任务

  • 保证已有比特比交易的正常进行
  • 产生新的比特币

挖矿的收益来源

  • 区块中所包含的每笔交易的交易费
    每笔交易的交易费是不确定的,由交易者自己决定,交易费用高的交易被挖矿者打包成区块的速度更快,从而交易也能更快的确认

  • 生成一个新的区块奖励比特币
    目前生成一个新的区块的奖励12.5的比特币,随着比特币的数量增加,奖励会越来越少。按照现在的挖矿速度,截至2140年挖矿不会产生新的比特币奖励,所有比特币将会挖完(2100万)。这时挖矿收入只能来源比特币交易中的交易费。

比特币区块的结构

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

大小 字段 描述
4字节 区块大小 用字节表示的该字段之后的区块大小
80字节 区块头 组成区块头的几个字段
1-9 (可变整数) 交易计数器 交易的数量
可变的 交易 记录在区块里的交易信息

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

大小 字段 描述
4字节 版本 版本号,用于跟踪软件/协议的更新
32字节 父区块哈希值 引用区块链中父区块的哈希值
32字节 Merkle根 该区块中交易的merkle树根的哈希值
4字节 时间戳 该区块产生的近似时间(精确到秒的Unix时间戳)
4字节 难度目标 该区块工作量证明算法的难度目标(difficulty)
4字节 Nonce 用于工作量证明算法的计数器

区块头大小是80个字节,其中包含区块链中上一个区块的hash值,通过hash值可以在链上查找到上一个区块。所以区块链的结构类似单向链表的结构,通过任意一个区块都可以向上查找到比特币的第一个区块(创世区块)。

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

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

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

生成新区块

挖矿是将80字节的区块头进行SHA256计算,运算结果是一个256位长度的值。然后再通过与当前难度值比较大小来判断当前区块是否合法,计算公式如下:
   HASH256(HASH256(区块头))< pdiff / Diffculty(bdiff)

如果不满足上面的条件,则改变区块头中的随机值(Nonce),然后再重复上面的计算。公式中pdiff 称为矿池难度,是一个256位长度的常量,表示如下:
    0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
前30位是0,后续所有位都是1。

区块头的hash计算所得的值必须介于 0 和 pdiff 之间,而且在这个区间随机取值。Difficult 的取值比 pdiff 小,而且 Difficult 越小,满足条件的Nonce值越难找到,挖矿所需要的时间越长。这里面的 Difficulty 是一个介于 0~ 2^32的值,这个值通常成为 bdiff。

  • 当Difficulty取最小值 1 时,挖矿难度最小,此时区块头的hash值小于pdiff 即可满足条件
  • 当Difficulty取最大值 2^32 时,挖矿难度最大,区块头的hash值必须要小于以下值:0x00000000FFFF0000000000000000000000000000000000000000000000000000

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

参考:
比特币块链和挖矿原理: http://www.8btc.com/bitcoin_block_chain
比特币区块结构解析:https://blog.csdn.net/u013137970/article/details/69891985
区块链技术指南:https://yeasy.gitbooks.io/blockchain_guide/content/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,923评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,154评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,775评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,960评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,976评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,972评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,893评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,709评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,159评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,400评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,552评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,265评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,876评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,528评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,701评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,552评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,451评论 2 352

推荐阅读更多精彩内容