一、基本原理
因为记账有一定的奖励和手续费,所以自然会有竞争,POW (Proof of Work) 工作量证明共识机制就是用来在“谁有权记账”这一问题上达成共识。 简单来说,就是争夺记账权的多方通过付出计算资源解决一个数学难题,谁先解决谁就获得记账权,这个争夺的过程就是“挖矿”,也是比特币发行的过程。具体的计算问题是,计算出新区块的hash值,并且这个hash值要小于某个数,也就是要有足够多的前导零,前导零越多,计算难度越大,可以以此调整生成一个区块的所需的时间。新区块综合了上一区块的hash值、上一区块生成之后的新的验证过的交易内容的Markle Root值,以及一个待猜测的一定范围内的随机数Nonce,计算量就在于穷举Nonce值以计算出符合条件的hash值。POW还有一个最长链机制,即用户会把最长链作为主链并继续拼接下去。因此,系统中可能出现链的分叉(Fork),但最终会有一条链成为最长的链。
二、优缺点
1. 优点:
(1)可以避免双花攻击行为发生。 (2)挖矿难度可以自动调整。 (3)可以吸引用户快速参与其中,因为越早参与获利越多。 (4)通过“挖矿”发行比特币,相对公平。
2. 缺点及解决思路:
- 51风险 如果串通的矿工控制了一半以上的资源(事实上可以更少),将会有最长主链的控制权,可以对交易进行针对性选择,使得系统不再是去中心化的。而且已经提出有策略可以使得矿池获得比资源比例更高的收益,核心思想就是自私挖矿。这样的话就会有联盟的动力,原本的激励一致性就被破坏了,大多数矿工可信的假设也不再成立。 解决思路:给联盟可控制的资源设置足够小的瓶颈,防止某一方具有控制权。
- 资源浪费 计算hash难题并不是什么技术性问题,而是拼资源,虽然一定程度上达到了公平性和安全性,但是这样的资源消耗没有其他任何的现实价值,没有抢夺到记账权的节点的计算资源更是白白浪费了,只能继续下一次的争夺。 解决思路:创造价值才是区块链的初衷,但这样看起来好像白白把计算资源用在了毫无意义的计算上,从计算意义这一角度出发,可以不改变基本机制,但是把计算对象转到有科研或者其他实际价值的难题上,这样就可以让资源得到有效的利用,比如把算力用来搜索质数,从而计算孪生素数表,或者与人工智能的深度学习相结合等。也可以改用其他需要消耗较少计算资源的机制,比如POS权益证明,DPOS权益授权证明等,尽管其他的机制也有一些待解决的问题。
- 共识周期长 如果难度太低,则容易产生分叉,难度太高,又会限制交易速度。为了减少分叉的产生而做出的妥协使得比特币每秒的交易量很低,与支付宝等中心化应用相去甚远,并不适合商业使用。