共识机制——工作量证明POW

区块链的底层有四部分构成,一个分布式的数据库用来存储以往和将来的交易数据,密码学的公私密钥体系用来确认交易双方的身份,P2P网络用来广播和蔓延各类消息(如节点加入消息,节点失效消息,得到挖矿数据的消息)和 用来决定节点记账权利的共识机制。

在去中心化的系统中,不相关的节点之间如何建立信任进而对区块链的一致性达成共识,是一个十分重要的问题,解决这个问题的方法就是利用共识机制。共识机制,就是在分布式系统中,多个节点之间对某个状态达成一致结果所依赖的机制。正是有了共识机制,区块链网络才会被全世界不同国家不同职业的人所接受,它让网络上陌生人之间在没有第三方中心化机构作为信用背书的情况下,轻松达成信任和共识。区块链有多种共识机制,常见的有工作量证明(PoW)、权益证明(PoS)、委托权益证明(DPoS)、实用拜占庭容错算法(PBFT)、Raft、Paxos等多种共识机制。


1.工作量证明(POW)

工作量证明可以简单理解为一份证明,用来确认你做了一定量的工作。工作量证明机制是比特币、莱特币等所采用的共识机制,矿工通过付出算力来挖矿进而获得相应的区块奖励。

在数字货币系统中,工作量证明主要通过计算来猜测一个随机数(nonce),使它拼凑交易数据后的内容的Hash值满足一个规定的上限。由于Hash值在数学上主要采用群举法碰撞所得,需要进行大量的计算,只要能提出满足要求的随机数的矿工就被认为付出了一定的工作量,可以获得这个区块的奖励。

哈希运算是一种最常见的工作量证明机制。该机制主要利用哈希运算的复杂度,通过给定的初始值,进行简单的值递增运算,利用哈希算法求解,直到找到满足条件的碰撞值。不同的哈希算法求得的碰撞值长度不同,所需工作量和安全性能也不同。碰撞值的长度越长,则所需的工作量越大。对于同一个哈希算法,可以设定哈希值前N位为0的个数来调节运算难度,比特币就是根据这一原理调节挖矿难度的。

优点:完全去中心化,安全性高,所有节点可参与挖矿,节点自由进出,每个节点是公平的,被攻击成功的可能性小。

缺点:先确认后共识,需要耗费大量的算力,造成能源浪费,交易吞吐量有限,确认时间长。

典型应用项目:比特币,莱特币,以太坊(前两阶段Frontier前言、Homestead家园为POW;第三阶段Metropolis大都会为casper,类似POW+POS;第四阶段Serenity为POS)

注意:中心化和去中心化各有优劣,考虑到比特币的诞生就是反对中心化的,这里我把中心化看做缺点,去中心化看做优点。

  1. 比特币区块的结构

区块包含具体信息

挖矿过程:打包区块时,矿工需要难度来给出随机数,使hash(区块数据+随机数)的结果满足难度需求,此处难度是指经过哈希后的数据前N位为0,N越大,则难度越大,同样的硬件设备下哈希计算所需要的时间就越长。而矿工就是通过大量的猜测随机数并对区块数据+随机数进行哈希,得到的结果满足难度值设定的前N位均为0则获得记账权,进而向全网广播自己猜对了随机数,矿工经过哈希验证后承认该区块有效并开始挖下一个区块。

POW共识过程:

主要经历三步:

(1)生成Merkle根哈希

先选择要打包的交易数据,一旦筛选好交易数据,按照时间排序,两两哈希,层层约减,通过这些交易就可以计算出一棵Merkle树,可以确定一个唯一的摘要,这就是默克尔树的根。

生成的Merkle根哈希,即头部需要的默克尔根哈希。

(2)组装区块头

   按照信息顺序生成区块头,将被作为计算出工作量证明输出的一个输入参数,因此第一步计算出来的Merkle根哈希和区块头的其他组成部分组装成区块头。区块头的存储顺序从前到后如图所示,共占80字节。

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

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

  (A). 计算每次猜测随机数的工作量证明的输出=SHA256(SHA256(区块头))(区块头=其他数据+随机数)

  (B). if(工作量证明的输出<目标值),说明结果符合难度值要求,证明工作量完成

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

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

Pow共识和交易过程梳理:

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

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

第三,每个节点通过上述描述的pow工作量证明进行寻找满足难度条件的随机数的工作。

第四,当某个节点找到了随机数,向全网广播

第五,哈希验证随机数是否有效,有效则认可,只有区块中仅含有之前区块不存在的交易信息,区块才会被认可。

第六,接受该区块,方法是在该区块的末尾制造新的区块。

第七,当存在多个区块确认时,交易就被确认并永久写于区块链中。


参考引用

【1】http://www.ehcoo.com/blockchain_confirmation_mechanism.html

【2】https://www.jianshu.com/p/1026fb3c566f

【3】https://blog.csdn.net/HiBlock/article/details/80287469

 

猜你喜欢

转载自blog.csdn.net/yangwei256/article/details/83023649