“找到这个随机常数,使得函数值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. 打造Worktile敏捷开发管理工具的思与惑
  2. WPF INotifyPropertyChanged 通过特性减少代码量
  3. angular 引入编辑器以及控制器的学习和理解。。。
  4. shell之sed 记录
  5. SAP更新数据表的程序执行需要SE38后执行
  6. 蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源
  7. quantaxis 云服务器_量化金融策略开源框架:QUANTAXIS
  8. 超过 C++、压制 Java 与 C,Python 拔得 TIOBE 年度编程语言!
  9. apache的配置文件httpd.conf
  10. idea创建yml配置文件不是绿色
  11. 基于springboot,vue旅游信息推荐系统
  12. sql分组排序语句顺序
  13. (转)人工智能公司Kensho是如何改变华尔街的?
  14. 如何下载VMWare虚拟机如何安装VMWare详细教程
  15. python-小米-句子反转
  16. 阿里云服务器租用价格最新收费标准(2019实时更新)
  17. [phyton]文件的简单读写练习
  18. D-脱硫生物素dethiobiotinCAS号:533-48-2
  19. 2020最新C#顺丰丰桥平台下单接口
  20. SAP ABAP开发个别概念理论区分理解

热门文章

  1. 方案系列--多个应用同时接入Google和Facebook三方登陆互联互通解决方案
  2. ibm服务器如何查看内存型号,ibmx3650m4不识别|认不出内存怎么办|内存安装规则要求...
  3. Kafka简介及详细安装教程
  4. 结对编程项目-四则运算阶段性总结
  5. 移动软件开发-高校新闻网
  6. SAP770系统FI模块配置(给科目表分配公司代码)
  7. mysql从服务器能否修改数据,mysql数据库操作新手入门,手把手的教会你 _数据库教程...
  8. 亚马逊FBA基本介绍
  9. I/Q信号解调分析过程
  10. vue 什么是渐进式 响应式 意思。Vue常用的指令。VUE:跨域设置。vue router 新窗口。$router.push。