1. 区块277,316的nBits的值为 0x1903a30c(10进制为419,668,748)

=>0x19为指数,而 0x03a30c为系数target = 0x03a30c * 2^(0x08 * (0x19 - 0x03))
=> target = 0x03a30c * 2^(0x08 * 0x16)
=> target = 0x03a30c * 2^0xB0
=> target = 0x03a30c * 2^176=> target = 238,348 * 2^176
=> target = 22,829,202,948,393,929,850,749,706,076,701,368,331,072,452,018,388,575,715,328
转换为16进制
=> target = 0x0000000000000003A30C00000000000000000000000000000000000000000000
(FFFF后面44个0,共15+5+44=64个16进制数)

2. 计算hash过程
step1. 准备数据

2 (版本号的十进制)
0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569 (前一区块hash值的16进制)
c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e  (merkle root的16进制)
2013-12-27 23:11:54 (utc时间)
419668748  (难度目标的十进制)
924591752  (随机数的十进制)转换时间一定要转为utc的时间戳。
>>> import datetime
>>> from datetime import timezone
>>> datetime.datetime.strptime('2013-12-27 23:11:54', '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone.utc).timestamp()
1388185914.0

step2. 转换为16进制

00000002
0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569
c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e
52be093a
1903a30c
371c2688

step3. 从big-endian转化为little-endian

02000000
69054f28012b4474caa9e821102655cc74037c415ad2bba70200000000000000
2ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc9
3a09be52
0ca30319
88261c37

step4 拼接字符串,开始验证

import binascii
from hashlib import sha256 as s
k = '0200000069054f28012b4474caa9e821102655cc74037c415ad2bba702000000000000002ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc93a09be520ca3031988261c37'
hk = binascii.unhexlify(k)
res = binascii.hexlify(s(s(hk).digest()).digest()[::-1])for nonce in range(0, 2**32):block_header = version + previous_block_hash + merkle_root + time + target_bits + nonceif sha256(sha256(block_header)) < target_bits:break

step5:结果为

Hash
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4(前面15个0,满足target 要求)

3. 算力

算力指的是哈希算法每秒运算次数,单位为Hash/s

一般算力大概为TH/s
2009年为MH/s.

Bitcoin 中的挖矿算法(5) 难度值举例说明相关推荐

  1. Bitcoin 中的挖矿算法(2) 难度值说明

    1. Bitcoin的难度值 定义创世区块中的 target, 其 difficulty = 1既是规定一个256位的整数0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF ...

  2. Bitcoin 中的挖矿算法(1) 难度值前奏

    1. 什么是难度值? 假设有一个集合 [1,100],我们的目标是随机生成一个数字其值小于 50.需要尝试的次数平均为 2 次. 下面提高难度,假设目标是小于 20, 那么尝试成功为 20/100 = ...

  3. Bitcoin 中的挖矿算法(3) 挖矿算法代码说明

    1. 步骤说明: step1. createNewBlock生成一个新块 step2. 轮循nounce,计算hash以符合难度值 step2.1 先循环增加CoinBase交易的Script 的no ...

  4. Bitcoin 中的挖矿算法(6) 难度调整

    1. 基本概念 难度调整方法: difficulty_new = difficulty * ( 2016 ActualTimespan / 2016 targetTimespan )新的难度目标值 = ...

  5. Bitcoin 中的挖矿算法(4) 产生genesis区块

    chainparams.cpp 1. 区块hash值计算 uint256 CBlockHeader::GetHash() const {return SerializeHash(*this); }/* ...

  6. 肖臻公开课(七)——比特币中的挖矿难度

    本笔记对应北京大学肖臻老师<区块链技术与应用>公开课第七课. 0.前言 在本节中,肖老师介绍了比特币的挖矿难度的调整算法. 1.定义 在比特币的挖矿算法中,需要找出一个"恰当&q ...

  7. C语言在BST中找到最接近目标的值的算法(附完整源码)

    C语言在BST中找到最接近目标的值的算法 C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测试) C语言在BST中找到最接近目标的值的算法完整源码(定义,实现,main函数测 ...

  8. 算法分析:Oracle 11g 中基于哈希算法对唯一值数(NDV)的估算

    作者简介 黄玮(Fuyuncat) 资深 Oracle DBA,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 个人网站 www.HelloDBA.com 1 为什么引入新 NDV 算法 ...

  9. 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。

    数据结构(C语言版)严蔚敏 吴伟民 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.例如,设 LA= ...

最新文章

  1. 页面 table 可编辑的实现
  2. java语言与c 的区别_Java语言的特点以及与C、C++的区别
  3. @SentinelResource使用
  4. MySQL用户及权限管理
  5. 编码方法论,赋能你我他
  6. 隔年增长的题_资料分析——隔年增长
  7. 【CSS】当图片加载缓慢时,图片如何自适应高度
  8. 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如RXXLRXRXL)中进行移动操作。一次移动操作指用一个LX替换一个XL,或者用一个XR替换一个RX。现给定起始...
  9. 视达配色教程1 色彩是什么
  10. Paper pass使用方法总结,毕业论文查重攻略
  11. 中国历代更改重复地名及其现实意义
  12. 连接WiFi电脑却无法上网
  13. 使用libjpeg处理图像(libjpeg的使用压缩与解压缩jpg格式)
  14. Windows操作系统各版本的历史 Windows系统历史版本简介
  15. JCA-Java加密框架
  16. 未来计算机的研究热点主要有人工智能,人工智能的发展及其影响研究
  17. Discourse开源论坛搭建
  18. “功能”之后,网约车决胜“服务”
  19. Python openjudge 练习025:正常血压
  20. VS2019 彩虹括号插件

热门文章

  1. 遇到的一些小的tips
  2. Module not found: Error: Can't resolve 'less-loader' in 'E:\NodeDemo\vue_assistant_lsp'
  3. mysql5.7.14 配置文件_mysql 5.7.14 安装配置方法图文教程(转)
  4. 盘点2021:数据中心行业迎来转折点
  5. Facebook基于数据中心的机器学习实践
  6. PDU知识全集,值得收藏!
  7. java 递归_Java的递归、如何与流相结合
  8. Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察
  9. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
  10. Py之basemap:python库之basemap的简介、安装、使用方法之详细攻略