1

随聊区块链(四)

 2 years ago
source link: https://segmentfault.com/a/1190000041141673
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

区块链共识

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

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

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

Proof-of-Work 工作量证明

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

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

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

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK