200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 区块链中的记账权问题

区块链中的记账权问题

时间:2019-05-25 17:10:20

相关推荐

区块链中的记账权问题

“找到这个随机常数,使得函数值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,解决了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。