比特币共识机制是什么?比特币共识机制解说
比特币共识机制是什么?首先我们要理解供识简而言之就是系统中所有正确节点都同意某个决定,达成共识。对于比特币系统来说实际上是一个去中心化的分布式账本,那么账本就要保证一致性,也就是要保证每一笔交易在所有记账节点上的一致性,让全网都达成共识。比特币系统就是在全网中维护一个区块链,区块链的长度随时间的增加而增加,这个区块链中每个区块需要得到全网节点的共识才能添加到区块链中,所以共识机制的实际根本问题是某个节点如何添加一个区块到区块链中而得到全网的同意(共识)。
采用投票机制达成共识是否可行呢?
比如:某个节点打包一个区块,将这个区块全网广播,其他节点收到后会核验这个候选区块,若正确则投赞成票,不正确则投反对票,正确票过半就添加到区块链中。
这样做有很多问题:
问题1:网络延迟是不可避免的,整个投票环节需要多久不可预知,效率上有很大问题。
问题2:所有节点中肯定有一些恶意节点,它不断的打包一些不合法的交易广播到全网中,其他节点一直无法达成共识,时间都花在了投票上。
问题3:恶意节点可造成女巫攻击(sybil attack),所谓女巫攻击就是模仿出多种身份进行的攻击。在比特币中创建一个账户只需在本地生成一个公私钥对即可,黑客可以生成大量的账户来进行投票,影响投票结果。
那么比特币中采用了一个非常巧妙的方案:就是通过算力来进行投票,因为算力要做大量的工作,所以比特币中的共识机制就是工作量证明(Proof of Work),简称POW。
工作量证明(POW)机制
工作量证明的实质是:尝试大量的随机数来进行哈希运算。
具体是找到一个随机数加入块头中,计算区块的块头的哈希值,使得计算的哈希结果小于或等于块头中目标值,公式如下:
H(block header + nonce)
为什么上面公式要做大量的工作呢?前面文章有讲解到(可查阅前面文章),根据哈希性质之一:谜题友好性(puzzle friendly),计算的哈希值结果是不可预测的,比如某个输入x,想要哈希值H(x)在某个范围内,没有什么捷径可走,只能一个个去尝试这个x。
上面公式中,找到的随机值nonce和目标值target都存在块头中,目标值是事先设定好的,也是难度值。
比特币共识机制流程
通过POW如何在全网达成共识呢?下面将分解共识流程。
1.每产生一个新的交易向全网广播。
2.其他节点将收到的交易信息纳入一个候选区块中,并将其他很多交易一起打包在一起。
3.其他节点都尝试在自己的候选区块中进行具有足够难度的工作量证明(POW)。
4.当某个节点完成了工作量证明(POW),向全网广播此区块的完成结果。
5.其他节点验证其完成结果。
6.其他节点若验证通过,才能将此区块添加到区块链中。
整个过程的重点是第3步,即进行工作量证明(POW),也是区分于普通的投票机制。
上一篇:比特币现货交易是什么意思?
下一篇:老人该如何防上火呢