有人认为:只有PoW才能可靠地打通现实世界和虚拟世界的价值;PoS是凭空造币,以不公平的方式分配,注定会造成垄断等等。还有更直截了当的看法:所有PoS链都是骗子。这些论断没法反驳,或者说既不能证明,也无法证伪。我认为PoS具备一些PoW没有的性质,这些性质至少对部分加密协议应用非常重要。本文试图以非技术预言呈现PoS的部分特点。
大家常说的PoW和PoS,分别指基于工作量证明的中本聪共识,和基于权益证明的BFT共识,后面还是简称为PoW和PoS。设计共识协议不是为了公平地把币发出去,而是为了维护区块链网络安全。本文所说的区块链都是指公链,不包括联盟链和私有链。什么是区块链网络安全?这个问题似乎很基础,其实非常复杂。但是反过来解释简单很多,什么是不安全的区块链?或者说区块链可能发生什么安全事故,如果发生了会有什么问题?
区块链是分布式账本技术,是生产信任的机器。区块链的数据结构和网络协议设计,都是为了在无中心协调的条件下,在网络不可靠、参与节点不可靠的拜占庭环境下,安全可验证地记账。可以说区块链天然就比其他类型的网络架构安全。不考虑软件缺陷,区块链可能发生的安全事故只有两种,一是被DDOS分布式拒绝服务攻击,二是被双花攻击。DDOS攻击就是给网络捣乱,让网络整体或者局部不能正常工作,但是捣乱并不能直接获利。对于传统的网络,DDOS攻击的盈利模式是勒索或者收钱办事。要么有人花钱雇佣黑客去给竞争对手、或者他不喜欢的网络捣乱。要么攻击者先捣乱,然后向运营方要钱,不给钱就继续捣乱。区块链是去中心化网络,勒索就不知道该向谁要钱。而且区块链是分布式自组织的网络,如果规模比较大而且设计良好,要让它失效很难,成本很高。所以区块链安全要考虑DDOS服务攻击,但不是重点。
重点是双花攻击,它是区块链网络现实存在的威胁。按字面的意思,双花就是一笔钱花了两遍。那么一笔钱怎么能花两遍呢?目前已经发生成功的双花攻击,都是如下流程:
转币进交易所;把币卖出,钱提出来;发动攻击分叉区块链,新链不包括第一步转币的交易。相当于币又回到攻击者的地址上。双花攻击需要提前进行精心准备,不是临时起意发动的。而且要分叉区块链,而且从一段时间之前的区块开始分叉,是有成本的,对于PoW就是要有算力,你得把分叉链挖成最长链,被其他人接受才行。所谓成功的双花攻击,就是攻击获得收益,要大于花费的成本,攻击者从中获利了。如果折腾半天,买算力的成本比双花的收益还高,那还是属于捣乱的范畴。所以实施双花攻击并不容易,成功的案例也不多。
区块链历史上成功的双花攻击,有两点特别值得注意。第一是被成功攻击的都是PoW链。我希望那些天天说PoS不安全的人注意这个事实,PoS链哪怕是早期不太成熟的PoS,都没有被双花攻击过。这不是说PoS链不能被攻击,是攻击PoS链无利可图,原因我后面会讲。所以对PoS攻击方式的研究都是理论,现实环境中没人干。第二点是双花攻击对币价的影响。可能很多人跟我一样,双花攻击证明了链不安全,那肯定币价暴跌啊。现实情况不是这样,大家去查查ETC、比特黄金、Verge遭遇双花攻击的行情,币价只跌了一点点。为什么呢?因为双花吃亏的是交易所,相当于攻击者骗走了应该属于交易所的币。大部分持币者会想:跟我有什么关系?我手里的币没少也没被稀释。交易所赚那么多钱,活该他出血。所以你投资的币,如果被双花攻击了,不要认为天塌了,马上跑。但是注意,不要马上就跑,等风头过去了,还是应该跑。为什么呢?因为保障加密资产安全,是区块链最重要的能力。这次攻击倒霉的是他,下次攻击倒霉的可能是我。所以一条区块链被贴上了不安全这个标签,基本上就走上了缓慢归零的道路,除非它能证明安全问题解决了,但是非常困难。大家可以查一查ETC、比特黄金、Verge被攻击后市值排名的变化。因为价格变化是跟整体市场有关的,市值排名反应了在行业内的地位。
上面谈了不安全的区块链。比特币非常安全,这个大家都认同,但是比特币安全不代表PoW安全。下次听到有人说PoW比PoS安全,你可以用事实来反驳他。为什么同为PoW链,有的安全有的不安全?因为PoW链安全的前提是:区块奖励高于同期租用51%算力的成本。(应该是区块奖励+交易费,但是交易费通常比区块奖励低两个数量级,在此忽略不计,下同)。非常简短的前提,但实际情况非常复杂,需要分几种情况来说明。首先是通用计算机挖矿为主,还是专用矿机为主。如果是通用计算机挖矿为主,理论上来说都是不安全的。为什么呢?因为挖加密货币的通用计算机,只占互联网计算机很小很小一部分。如果攻击者控制的僵尸网络(类似于以很低成本租用了大批通用计算机)比诚实挖矿网络的算力高,就可以发动双花攻击。
专用矿机是固化了某种Hash算法,例如SHA的矿机,所有采用SHA的链都可以挖。对于同一类专用矿机,算力占比最大的链是最安全的。算力分配是由区块奖励金额决定的。假设每个小时BTC/BCH/BSV三条链提供的出块奖励分别是元、3元、2元,那么算力就会按:3:2的比例分配。如果有利可图,攻击者就可能租用总算力的一小部分来攻击BSV,但是租用大部分算力来攻击BTC则非常困难。
这里有两个问题。第一为什么要租算力,矿工自己不能直接攻击吗?一般来说不会,因为矿工和矿场做双花攻击,可能单独看是获利了。但是链不安全了,币会贬值,相应的矿机也跟着贬值。所以手里有大批专业矿机的人,不会攻击链,至少不会攻击区块奖励最大的链。第二个问题是,多数情况下,挖矿是有利可图的,所以算力租用成本很高,攻击不成立。但是特殊情况是,币价暴跌,前期扩张的算力过多,大量的矿机关机。这时候租用矿机的价格仅仅高于运行成本,也就是电费,区块奖励低的币就很危险。综合上面的分享,可以把PoW的安全前提大致变成:专用矿机挖矿,而且算力占比最高。
知名加密货币研究者NicCarter用上图说明:A链在同类算力占一小部分。B链占了同类算力的一大部分。虽然A链的算力的绝对值(即HashRate)高于B链,但是B链比A链更安全。
到这一步,我们可以回到主题,说说为什么需要PoS。一个前置的问题是:除了BTC以外,其他链还有没有必要?比特币最大化主义者认为,比特币是唯一有用的加密货币,其他区块链,包括以太坊都是在瞎搞。如果你同意这个观点,当然PoS就没必要。另外一些人(包括我)认为,去中心化加密协议定义高效的市场,能够降低交易成本。世界需要很多加密协议,很多条区块链。
新运行一条区块链,如果采用PoW协议,会遇到冷启动困难。其实不只新PoW链,比特币也遭遇过冷启动难题。就是币不值钱,没什么人挖矿,所以网络不安全,网络不安全所以币没法升值。比特币之后的三年,币价低,网络脆弱,