区块链共识技术一:pow共识机制

 一.前言

            在了解pow共识机制前,我们先了解下比特币区块的结构,下图是比特币区块的结构图:

比特币区块结构图

        从图上可知,比特币的结构分为区块头和区块体,其中区块头细分为:

        父区块头哈希值:前一区块的哈希值,使用SHA256(SHA256(父区块头))计算。占32字节

        版本:区块版本号,表示本区块遵守的验证规则 。占4字节

        时间戳:该区块产生的近似时间,精确到秒的UNIX时间戳,必须严格大于前11个区块时间的中值,同时全节点也会拒绝那些超出自己2个小时时间戳的区块。占4字节

        难度:该区块工作量证明算法的难度目标,已经使用特定算法编码。占4字节

        随机数(Nonce):为了找到满足难度目标所设定的随机数,为了解决32位随机数在算力飞升的情况下不够用的问题,规定时间戳和coinbase交易信息均可更改,以此扩展nonce的位数。占4字节

        Merkle根:该区块中交易的Merkle树根的哈希值,同样采用SHA256(SHA256())计算。占32字节

        如此,细心的同学会发现,区块头总共占了80字节。

        区块体除了筹币交易记录(由一棵Merkle二叉树组成)外,还有一个交易计数。

        比特币的任何一个节点,想生成一个新的区块,必须使用自己节点拥有的算力解算出pow问题。因此,我们先了解下pow工作量证明的三要素。


二.pow工作量证明三要素

        在前言中介绍完比特币区块后,接下来我们了解下pow机制需要满足哪些要素?

        1.工作量证明函数

                    在比特币中使用的是SHA256算法函数,是密码哈希函数家族中输出值为256位的哈希算法。

        2.区块

                  区块头在前言中已经做详细介绍,这里我们就介绍下区块体的 Merkle树算法:

Merkle树算法图解

        如上图所示,首先对4个交易记录L1--L4,分别计算hash(L1)--hash(L4),然后计算hash0=hash0-0+hash0-1和hash1=hash1-0+hash1-1,最后计算出根节点的hash值top hash。

3.难度值

        关于难度值,我们直接看公式:

        新难度值=旧难度值*(过去2016个区块花费时长/20160分钟)

        目标值=最大目标值/难度值

        新难度值解析:撇开旧难度值,按比特币理想情况每10分钟出块的速度,过去2016个块的总花费接近20160分钟,这样,这个值永远趋近于1。

    目标值解析:最大目标值为一个固定数(具体可查阅资料了解,这里不做详述),若过去2016个区块花费时长少于20160分,那么这个系数会小,目标值将会被调大些,反之,目标值会被调小,因此,比特币的难度和出块速度将成反比例适当调整出块速度。

        介绍完pow工作量证明的三要素后,我们就可以讲解下工作量证明的流程

三.pow工作量证明流程

pow工作量证明流程图

从流程图中看出,pow工作量证明的流程主要经历三步:

1.生成Merkle根哈希

            生成Merkle根哈希在第二章节中的第2要素中已经有讲解,即节点自己生成一笔筹币交易,并且与其他所有即将打包的交易通过Merkle树算法生成Merkle根哈希,所以为什么说区块是工作量证明的三要素之一。

2.组装区块头

        区块头将被作为计算出工作量证明输出的一个输入参数,因此第一步计算出来的Merkle根哈希和区块头的其他组成部分组装成区块头,这也就是为什么我们在前言中大费周章的去提前讲解比特币的区块头。

3.计算出工作量证明的输出

           下面我们直接通过公式和一些伪代码去理解工作量证明的输出:

           i. 工作量证明的输出=SHA256(SHA256(区块头))

           ii. if(工作量证明的输出<目标值),证明工作量完成

           iii.if(工作量证明的输出>=目标值),变更随机数,递归i的逻辑,继续与目标值比对。

          注:目标值的计算见第二章节的要素3的难度值。

        上面的流程图及解析即pow工作量证明的整个过程。


四.pow共识记账

        第三章中讲解的是单节点工作量证明流程,有了这个计算流程,我们就得将其使用起来,在比特币平台中,中本聪就是运用的pow工作量证明来使全网节点达到51%及以上的共识记账,以下将介绍pow工作量证明共识是如何记账的?

        首先,客户端产生新的交易,向全网广播

        第二,每个节点收到请求,将交易纳入区块中

        第三,每个节点通过第三章中描述的pow工作量证明

        第四,当某个节点找到了证明,向全网广播

        第五,当且仅当该区块的交易是有效的且在之前中未存在的,其他节点才认同该区块的有效性

        第六,接受该区块且在该区块的末尾制造新的区块

大概时序图如下:

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

推荐阅读更多精彩内容