“找到这个随机常数,使得函数值Bn小于某个数”,应该怎么理解?

————————

个人技术公众号:解决方案工程师

欢迎同领域的朋友关注、相互交流。

————————

昨天听了中国标准化研究院的高昂老师讲述的《区块链标准化》课程,首先对高老师致以感谢。

课程中对区块链技术进行了讲解,主要从密码学角度阐述了区块链的产生及发展。其中,有个问题不是很理解,当时对PPT截了个图。

大体讲的是,所有节点在“挖矿”时,谁先挖到,即获得记账权力。

那么这里的“找到这个随机常数,使得函数值Bn小于某个数”,应该怎么理解?

于是我搜索了一些资料,接下来梳理一下,区块链中的记账权问题。

首先,讲一下区块的组成。区块是由“区块头”和“区块体”组成,如图。

这个比较简单,区块体中就是记录的交易数据,而区块头通常包含6个部分:

(1)版本号:用于跟踪软件/协议的更新。如果新版本的软件不兼容旧版本的软件,那么就认为是发生了“分叉”。

(2)上一区块头哈希值:区块链中该区块的上一个区块的哈希值,也是区块链设计的精髓所在。

(3)Merkle根:为了在区块中体现出交易而做的一个计算,主要是解决帐本中交易记录哈希计算的效率问题。每当产生一次交易,那么就与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree算法生成Merkle Root Hash,作为交易列表的摘要存到区块头中。流程可以概括为每相邻的两条交易记录向上形成一个哈希值,再与相邻的节点再往上形成Hash值,一直到树根形成所有交易记录的唯一哈希值,即Merkle根。

(4)时间戳:该区块产生的近似时间。这个时间虽然是节点生成的但是其是否有效需要其他节点的认可(允许有一定程度的误差)。

(5)难度目标:难度Target常数,该区块工作量证明算法的目标值。Target就是一个256-bit的数。通过调整Target值,可以来调整挖矿难度。

(6)Nonce:随即常数,用于工作量证明算法的计数器。

那么这6组数据,是怎么产生和如何变化的呢?如下:

(1)版本号:更新软件后会改变,它会指定一个新的版本号。

(2)上一区块头哈希值:添加一个新的区块后会改变,变为新的上一区块头哈希值。

(3)Merkle根:添加一个新的区块后会改变,Merkle会重新计算生成的。

(4)时间戳:添加一个新的区块后会改变,变为新区块生成的时间。

(5)难度目标:挖矿难度调整时会改变,一般根据历史记录,每两周调整一次。

(6)Nonce:Nonce这个单词在密码学语境下指的是一个只使用一次的数字,因此可以看出,这个随机常数,是每次计算一次哈希值时就会改变一次。

这里多解释一下Nonce,计算Nonce值的过程就是对区块头中的6部分数据不断的计算哈希,直至找到能使区块哈希小于Target的Nonce。

所以,每次计算区块头哈希时就让Nonce值加1。具体Nonce的运算过程就是不断的修改Nonce值,然后对这个区块头重新运算哈希的过程。每得到一个哈希值就去跟Target对比,如果哈希小于或者等于Target,那么运算过程就结束了,当前Nonce值会被最终记录到Header中。否则,就把Nonce值加1,再次计算Header哈希,以此继续。

显然,各个比特币客户端开始了一场寻找Nonce的比赛,谁的硬件速度快,就有更大的概率率先找到Nonce值,也就是宏观意义上抢到的记账权。当然,哈希的运算过程非常随机,所以这场比赛也跟抓彩票一样有很强的运气成分。

因此,在挖矿过程中,只有找到了合适的Nonce,才能挖出新的区块,得到比特币奖励。

对于一个新知识,真的是自己整理出来,才会了解的更深。

最后通俗总结一下:

矿工是干啥的?——挖矿的。

为什么挖矿?——制造一个新的区块。

制造新的区块有什么好处呢?——给比特币奖励,给佣金。

怎么挖呢?——穷举区块头中的Nonce随机常数。

怎么才能挖到呢?——举出一个Nonce后,计算区块头中的哈希值,如果该哈希值小于或等于给定的Target常数,那么就挖矿成功,获得记账权。

怎么生成新的区块呢?——当前Nonce值被最终记录到Header中,区块头正式生成,新的区块产生,获得比特币奖励。

好了,标下划线的这句话,就是这次课程提出的问题,ok,解决了。

区块链中的记账权问题相关推荐

  1. 05 共识问题:区块链如何确认记账权?

    文章目录 05 共识问题:区块链如何确认记账权? 区块链的共识 拜占庭将军问题 POW 工作量证明 挖矿的由来 比特币的 POW 实现 区块链分叉和 51% 攻击 POW 机制优缺点 其他共识方法 P ...

  2. 分布式技术原理与实战45讲--05 第05讲:共识问题:区块链如何确认记账权?

    本课时我们主要讲解"共识问题:区块链如何确认记账权?" 区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,其 ...

  3. 区块链如何确认记账权?

    文章目录 区块链的共识 拜占庭将军问题 挖矿的由来 比特币的 POW 实现 区块链分叉和 51% 攻击 POW 机制优缺点 总结 区块链可以说是最近几年最热的技术领域之一,区块链起源于中本聪的比特币, ...

  4. sdk版本过低怎么办_区块链中的“块”是什么?区块链网络拥堵怎么办?-Gemini双子新约...

    区块链中的"块"是什么? 比特币是基于区块链的,这一点大家都知道.但是这个区块链是什么呢?更准确地说,区块链的各个组成部分是什么呢? 区块链是一个数据块.每个块可以看作是分类帐中的 ...

  5. 区块链中的节点是什么意思?

    众所周知,我的好朋友阿强,一个币圈奇才,对所有可以一夜暴富的项目都有着出奇的热忱的一个敢于试错的勇士,今天他又又又又给我推荐了一个项目--美公链. 号称全面涵盖吃喝玩乐购,链上可视化数据消费补贴,消费 ...

  6. 独家| ChinaLedger白硕:区块链中的隐私保护

    隐私问题一直是区块链应用落地的障碍问题之一,如何既能满足监管,又能不侵害数据隐私,是行业都在攻克的问题.那么,到底隐私问题为何难?有什么解决思路,以及实践创新呢?零知识证明.同态加密等技术,又能否解决 ...

  7. 曾鸣:区块链中没有绝对的“去中心化”

    虎嗅注:提到区块链,不可避免地也会将其和"去中心化"这个词联系到一起.曾鸣认为,目前外界对"去中心化"这个词有很多误解.在区块链中,"中心化" ...

  8. VRF在区块链中的应用

    最近区块链领域流行了一种"怪病",许多区块链项目或者设计方案都加入了一个叫做VRFs的算法.那么, (1) 什么是VRFs? (2) VRFs在区块链中解决了什么问题? 本文旨在介 ...

  9. XAG拥抱区块链和分布式记账技术标准化时代

    4月13日,工信部发布<全国区块链和分布式记账技术标准化技术委员会组建公示>. <公示>显示,首届技术委员会共有71名委员,其中主任委员1名,副主任委员5名,委员兼秘书长1名, ...

最新文章

  1. CSDN 的文化衫寄送到啦
  2. python语音在线编辑-Python:语音处理,实现在线朗读RFC文档或本地文本文件
  3. 论论资排辈和有能者居之
  4. 微信中html5获取手机号,微信小程序通过用户授权获取手机号
  5. YJX_rxjh_21_3.2.3
  6. 反向代理实现同域名下PHP和Java共存
  7. STM32F4 DMA2D_R2M
  8. linux中文乱码问题
  9. java程序员模版_45套java程序员简历模板
  10. 十进制和二进制换算。vb版本
  11. 最近非常火的ChatGPT到底是个啥?
  12. 什么是yyyy-mm-dd格式
  13. 内大教务系统教学评估
  14. java ?: 的使用
  15. 细数十七种黑客攻击手段,简直防不胜防!
  16. 2022一建改革加考英语和计算机,一级建造师2022年会改革吗,会增加考试科目吗...
  17. 面试三 去苏州了 2023.6.13 苏州一上市公司
  18. (MCTS)蒙特卡洛树搜索——参数寻优
  19. 【平面设计】Pro/E4.0 软件安装教程
  20. Autoware 中 GPS 定位问题

热门文章

  1. c程序语言捉迷藏,小学一年级语文《捉迷藏》教案范文
  2. Revit“原点”、“中心”、“测量点”在哪里?
  3. 从零开始的Android:Android应用程序开发概述
  4. C语言disp的头文件,TM1638.h 单片机C语言头文件
  5. 百度地图实现普通地图、卫星图、三维图、混合图(卫星图+路网)
  6. “EA 交易”运行期间平衡曲线斜率的控制
  7. MIUI黑科技之小米直达服务:Web 般的流畅体验+更少的卡顿、延迟
  8. The second day :天猫精灵玩法之创建意图,实现对话功能
  9. 获取和清除cookie
  10. Vue3 到底哪里好?和React Hook对比有啥有优势?本文详解