区块链的三种共识机制——PoW、PoS和DPoS原理
区块链的核心是去中心化网络的信任机制,而共识机制是实现这一目标的关键。共识机制可分为两个阶段:(1)提出共识内容(2)对内容达成共识(遵循最长链原则)。三种主流的共识机制主要有工作量证明PoW(Proof of Work),权益证明PoS(Proof of Stake),委托权益证明机制DPoS(Delegate Proof of Work),除了了解其基本内容,还需要学习其技术实现。
一、工作量证明(PoW)
PoW这个概念是1993年提出的,最早的用途不是用来实现加密货币的,而是用来防止垃圾邮件的。人们开始在使用电子邮件的时候会收到垃圾邮件的骚扰,如果发送垃圾邮件没有成本,那么发送一百万封电子邮件是很轻松的。所以人们想到了如果让每一封邮件发送时都有一个微小的成本,那么鉴于成本,垃圾邮件就会被很大程度遏制了。而PoW就是为了服务这个目的而产生的。基本过程就是邮件接收方先广播一道题出去,邮件发送方在发邮件时必须附带上这道题的答案,这样邮件才会被接受,否则就会被认为是垃圾邮件。
同理我们引入PoW机制下的哈希函数,实际上就是如何用哈希函数给计算机出题,由于计算机的解题速度很快,因此出的题目对于计算机“有挑战性”,我们知道哈希函数最大的特点是如果输入的数据哪怕有微小的区别,输出的结果也会完全不同,这点保证了无法通过输出结果去反向运算输入,也没有办法缩小输入的可能性范围,另一方面,如果输入相同则运算得到的输出哈希一定相同。这一点保证了任何人都可以在一瞬间内验证最终的哈希值是否正确。
比特币系统的一个众所周知的特点,就是很多矿工参与挖矿,但是每十分钟网络上产生的比特币却不是所有矿工均分的,而是谁先抢到记账权,就把所有的比特币奖励给谁。记账权的抢夺就是计算能力的比拼。比特币的PoW机制,宏观上就是要达成的就是判定哪个矿工的运算能力最强。这道题用到了哈希函数,但是系统要的答题结果也就是所谓的PoW,不是哈希函数的输出,而是输入。
为什么会这样设置呢?因为从输入计算哈希输出,是一个非常直白的过程,计算机很擅长这样的工作,不能明显地体现出矿工之间计算能力的差异,而且系统必须要给全网广播一个超级大的数,这样才能比拼计算能力,涉及到网速等延迟问题,也不是很公平。所以比特币系统的做法是反过来,给全网广播一个哈希值,让大家消耗自身算力尝试不同的随机数(nonce)找到它的输入。因为前面提到的哈希函数独特的特点,矿工们要想找到输入,只能每次选一个数不断尝试瞎蒙,运算它的输出和系统广播的哈希值对比,如果不符合,换下一个数继续,这显然是一个概率问题,在相同的时间内谁能尝试的次数多,大概率他会首先拿到正确的输入,这就是PoW的基本原理了。
当然在实际中,比特币系统是每十分钟记账一次,也就是需要所有矿工每十分钟比一次,但是在十分钟内想计算出一个精确哈希值的输入是根本不可能的。所以系统每次给定的是一个哈希值范围。具体规则就是,只要保证运算出的哈希值小于某个特定的数值,就认为提交的PoW是正确的,也就是说矿工们要尽力找到哈希值前几位0越多越好(哈希值越小)对应的输入。多年来矿工们的算力也有了很大提高,但是为什么比特币系统还是能保证算出PoW的时间大致保证在十分钟左右呢?答案就是系统可以通过调整0的个数来改变出题难度,虽然矿工们算力提高了,但是题也变得更难,所以需要花费的解题时间就会保持相对稳定。最快得到结果的矿工会把把自己的结果发送到全网(提交新创建的区块),其他矿工都会验证结果是否符合有效,如果有效,则每个节点都在自己的区块链数据副本中添加这个有效区块,开始新处理新的交易数据,努力创建新区块。如果无效,则会被丢弃,矿工们继续做手头工作。
PoW共识的优点就是安全性高,随着有效区块的不断积累,恶意节点需要极高的算力(超过总体的51%)来完成双花攻击,成本高昂。也存在着消耗算力和电力大的缺点。
二、权益证明(PoS)
在PoW中通过消耗大量的算力来争夺记账权,但是在每一轮共识中,只有一个节点得到了记账权,其他节点的相当于是“陪跑”,算了被浪费了。而权益证明PoS于2013年首次提出被应用到了PeerCoin系统中,可以解决资源浪费的问题。
PoS 通过持有代币的数量和时间(即“权益”)决定记账权,权益越高,被选中验证交易的概率越大。
具体的技术实现是每个节点在每一轮共识中只需要计算一次Hash,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。可以说,PoS是一个资源节省的共识协议。PeerCoin定义的权益除了与代币数量有关,引入了币龄(Coin Age),100个代币持有两天,币龄为200,因此持有的代币数量越多,时间越长,获得记账权的机会越大。
PoS的优点是节能高效:无需大量计算,能耗降低99%以上;缺点就是存在“富人更富”问题:代币越多,收益越高,可能导致财富集中;
改进方案:以太坊2.0引入Casper协议,结合质押惩罚机制;Cardano采用分层PoS提升可扩展性。这里提到的一些前沿的技术先挖个坑,后面再补充。
三、委托权益证明机制(DPoS)
DPoS是由PoS演化而来的,持币用户通过抵押代币获得选票,以投票的方式选出若干的节点作为区块生产者,代表持币用户履行产生区块的义务。用户投票最多的若干节点成为出块节点,以EOX为代表是21个节点。在每一轮共识中,轮流选出一个出块节点产生区块,并广播给其他的出块节点进行验证。若节点在规定时间内无完成出块,或产生无效区块,就会被取消资格,取而代之的事重新投票选取新的出块节点。
值得一提的是,EOS初期的DPoS的共识方法才采用的是最长链共识,意味着与PoW一样区块没有绝对的最终性,交易的不可逆需要等待多个区块确认。在18年时,EOS使用拜占庭共识代替最长链共识,名为BFT-DPoS。
优点是高吞吐量:区块生成速度快(EOS可达3000+ TPS);低延迟:适合高频交易场景
缺点是中心化争议:超级节点数量少,权力集中;贿选风险:代币大户可能操控选举。
四、三种共识对比
- 公有链场景:注重去中心化与安全性时,PoW或PoS更合适;
- 联盟链/高频应用:追求效率时,DPoS或PBFT更优;
- 新兴方向:混合机制(如Hedera Hashgraph)或分片技术(如Zilliqa)正在探索更高性能的解决方案。