共计 1064 个字符,预计需要花费 3 分钟才能阅读完成。
区块链共识
共识,单从这个词语来看,咱们的了解是一个群体达成统一的决定或者想法。
在区块链的世界中,共识是一个外围的因素。
在区块链的零碎中,信息都是齐全公开的,传输的网络环境也并不是平安的。但咱们须要多区块链上传输交易的非法及正确性达成共识。传统的交易都是依赖于地方权威机构来进行解决的,是基于中心化信赖的,在区块链上这显然是不行的。
因而中本聪提出了一种去中心化的共识机制,共识是天然造成的,是依照特定规定运作的。由区块链网络中的各个节点驱动产生的。当然每个共识的机制总会存在一些问题,没有共识机制是完满的。接下来咱们就说说比特币网络的共识机制:POW(工作量证实),还有一个比拟流程的共识机制是和 POS(权利证实),当初的以太坊就曾经切换到 POS 上来,POS 在本章中就不做探讨了
Proof-of-Work 工作量证实
工作量证实是在比特币网络中发扬光大的,然而这个实践并不是中本聪提出来的。而是在之前咱们提到的亚当·贝克的哈希现金论文中提出来的。
这种机制是基于资源的耗费行为的。这类算法是易于验证,然而要花费较高的运算老本作为代价。
还记得之前说的区块链头信息吗?头信息中的“随机数”和“难度指标”就是在工作量证实算法中应用到的。咱们在确认一个区块的时候,首先应用 sha256 获取区块的默克尔根及工夫戳信息,而后咱们通过调整“随机数”获取到不同的哈希值
咱们晓得计算是须要耗费算力的,也就意味着耗费资源,那 1 个节点的计算和 100 个节点的计算工夫必定是不同的,比特币网络的区块是动静的吗?节点少就确认慢,节点多就确认快吗?显然不是这么设计的,整个网络均匀 10 分钟左右会确认一个区块,其中的调节因子次要就是“难度指标”
“难度指标”这个值是为了确保咱们获取目标值的工夫是平均的,没通过 2016 个区块,难度就会调整一次,确保均匀 10 分钟左右会确认一个区块。
所以工作量证实就是通过调整“随机数”,找到一个哈希值,哈希值须要小于以后区块的目标值。
区块的目标值 = 最大目标值 / 难度值
最大目标值是一个常量:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
因而咱们看到计算一个目标值的破费是微小的,但者也保障了零碎的平安,增大了毁坏的老本。
而且验证的过程非常简略,只有进行一次哈希运算就能够实现。
当然工作量证实因为算法的个性,运行效率并不够高,且会造成资源的大量节约,直观的体现就是对电力的大量耗费,是很不环保的。因而起初又呈现了许多的共识算法来补救及加强工作量证实的缺点。