随聊区块链(四)

区块链共识

共识,单从这个词语来看,我们的理解是一个群体达成一致的决定或者想法。
在区块链的世界中,共识是一个核心的要素。

在区块链的系统中,信息都是完全公开的,传输的网络环境也并不是安全的。但我们需要多区块链上传输交易的合法及正确性达成共识。传统的交易都是依赖于中央权威机构来进行处理的,是基于中心化信任的,在区块链上这显然是不行的。

因此中本聪提出了一种去中心化的共识机制,共识是自然形成的,是按照特定规则运作的。由区块链网络中的各个节点驱动产生的。当然每个共识的机制总会存在一些问题,没有共识机制是完美的。接下来我们就说说比特币网络的共识机制:POW(工作量证明),还有一个比较流程的共识机制是和POS(权益证明),现在的以太坊就已经切换到POS上来,POS在本章中就不做讨论了

Proof-of-Work 工作量证明

工作量证明是在比特币网络中发扬光大的,但是这个理论并不是中本聪提出来的。而是在之前我们提到的亚当·贝克的哈希现金论文中提出来的。

这种机制是基于资源的消耗行为的。这类算法是易于验证,但是要花费较高的运算成本作为代价。

还记得之前说的区块链头信息吗?头信息中的“随机数”和“难度目标”就是在工作量证明算法中使用到的。我们在确认一个区块的时候,首先使用sha256获取区块的默克尔根及时间戳信息,然后我们通过调整“随机数”获取到不同的哈希值

我们知道计算是需要消耗算力的,也就意味着消耗资源,那1个节点的计算和100个节点的计算时间肯定是不同的,比特币网络的区块是动态的吗?节点少就确认慢,节点多就确认快吗?显然不是这么设计的,整个网络平均10分钟左右会确认一个区块,其中的调节因子主要就是“难度目标”

“难度目标”这个值是为了确保我们获取目标值的时间是均匀的,没经过2016个区块,难度就会调整一次,确保平均10分钟左右会确认一个区块。

所以工作量证明就是通过调整“随机数”,找到一个哈希值,哈希值需要小于当前区块的目标值。

区块的目标值 = 最大目标值/难度值

最大目标值是一个常量:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

因此我们看到计算一个目标值的花费是巨大的,但者也保障了系统的安全,增大了破坏的成本。
而且验证的过程十分简单,只要进行一次哈希运算就可以完成。

当然工作量证明由于算法的特性,运行效率并不够高,且会造成资源的大量浪费,直观的表现就是对电力的大量消耗,是很不环保的。因此后来又出现了许多的共识算法来弥补及增强工作量证明的缺陷。

你可能感兴趣的:(区块链比特币科普程序员)