巴比特专栏 | 有了PoW,为什么还需要PoS?

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

    知名加密货币研究者Nic Carter用上图说明:A链在同类算力占一小部分。B链占了同类算力的一大部分。虽然A链的算力的绝对值(即Hash Rate)高于B链,但是B链比A链更安全。
    到这一步,我们可以回到主题,说说为什么需要PoS。一个前置的问题是:除了比特币以外,其他链还有没有必要?BTC最大化主义者认为,BTC是唯一有用的加密货币,其他区块链,包括ETH都是在瞎搞。如果你同意这个观点,当然PoS就没必要。另外一些人(包括我)认为,去中心化加密协议定义高效的市场,能够降低交易成本。世界需要很多加密协议,很多条区块链。
    新运行一条区块链,如果采用PoW协议,会遇到冷启动困难。其实不只新PoW链,BTC也遭遇过冷启动难题。就是币不值钱,没什么人挖矿,所以网络不安全,网络不安全所以币没法升值。BTC之后的三年,币价低,网络脆弱,关注的人很少。由于挖矿收益 = 市值 * 增发率。PoW币要有很高的市值和增发率,才能吸引矿机厂商设计ASIC矿机(一次性成本很高)、矿工大量购置部署矿机。这就陷入了先有鸡还是先有蛋的冷启动难题:新生网络不安全,应用少;而且增发率高,不被当作价值存储;市值难以扩大。市值低挖矿收益就低,算力无法增长。
    设计新的PoW链要选择用哪种Hash算法。如果选已经有专用矿机的算法,那么初期初期币价,算力占比低,链不安全。如果选择还没有专用矿机的算法,就要经历一段时间的通用硬件挖矿,这段时期网络也不安全。当我只是说困难,不是说不可行。例如Nervos,他们团队有很好的口碑,做了很多创新。所以主网上线的时候,CKB已经有比较高的市值,区块奖励很高,可以吸引很多算力来挖矿。Nervos设计了独特的Hash算法,由于区块奖励很高,可能很快就会出现专用的矿机,这是Nervos社区乐于见到的。因为Hash算法是新的,新矿机只能用来挖CKB,网络的安全性大幅提高。但是,Nervos应该被视为特例,它的启动过程恰恰证明了,新链采用PoW非常困难。很难想象,未来几年会出现十几条、几十条甚至更多PoW链,能够完成自举。
    PoS链即便处于早期也可以很安全。因为对PoS链做双花攻击,需要掌握至少1/3 Staking的币。手里有那么多币,应该是数一数二的大户了,双花攻击引发币价下跌,损失最大的是自己。跟最大的矿工不会攻击BTC是一个道理。那么有没有可能,攻击者两次卖出双花的币,快速获利离场呢?我们来看一个例子:

    假设一条PoS链,总流通市值只有1000万美元,而且Staking比例很低,只有30%。跟市场上流通市值数千万美元以上、Staking比例达到50%甚至更高的PoS链相比,显然更容易被攻击。攻击者已经准备好了条件,他控制了1/3的Staking(总量的10%),同时还拥有占总量10%的流通筹码。于是攻击者首先把流通的10%转入交易所1,卖出后把钱提出来。然后发动攻击逆转了存币交易。为了不承担攻击暴露币价下跌损失,他快速地把恢复到自己地址的10%存入交易所2,卖出后提款。如果整个过程中币价都没有下跌。攻击者的成本(10% Staking被罚没)和收益(10%流通筹码卖了两次)恰好持平。上述是对攻击者最有利的情况,但现实环境中不可能出现。因为攻击者卖出受到市场流动性的限制。先不说第一个10%卖出给币价的冲击。专业安全公司发现BFT链分叉并发出警告,只需要几分钟时间。攻击者不可能在不引起交易所关注、不影响币价的条件下卖出第二个10%。
    所以PoS的链,无论币值高低,只要软件没有缺陷,都是安全的。多说一句,软件缺陷跟协议本身没有关系,是实现的问题。但是不可否认,新一代的PoS链上线时间还太短,可能存在隐匿的缺陷,需要时间来验证其安全性。
    除了安全启动外,PoS跟PoW相比还有一个优势,就是快速最终性。最终性就是对区块不会被链放弃,成为孤块。PoW链只有概率最终性,刚出来的块不太可靠,可能被放弃掉(重组)。随着区块后面不断附加区块(深度增加),被放弃的可能性越来越低。当深度增长一定量,用户可以确信区块不会被放弃了,区块里的交易不会被逆转。基于PoS的BFT共识通常具有快速最终性,合法(对出块和敲定分开的混合共识是指被敲定)区块一出来就具有最终性,如果被逆转意味着出大事儿了,有1/3 Staking的币被系统罚没。比较快速最终性和概率最终性,需要找到可以比较的维度。就像梨和苹果,有人喜欢吃梨、有人喜欢吃苹果,比较它们的味道不会有大家都认可的结论。如果比较价格就容易了,在一个市场里,哪个贵哪个便宜一目了然。
    还是Nic Carter写的《这叫交易结算保证,小傻瓜》,这篇文章本来是比较PoW链的。但是他所提出的结算保证的概念,同样适用于比较PoW和PoS链。

    如上图,PoW的结算保证呈阶梯状,后面每多一个块,对块(内所有交易)的结算保证金额增加一个区块的奖励金额。比特币当前价格是8000美元,每个块奖励12.5个比特币,也就是大约10万美元。BTC平均10分钟出一个块,结算保证增加10万美元。粗略地说,PoS链结算保证可以认为不随时间变化。某个PoS链流通市值1000万美元,Staking比例30%,采用出块即敲定的BFT协议(例如Tendermint)。交易只要被包含进合法区块,立即获得1000万*30%*1/3=100万美金的结算保证。快速获得可量化的结算保证,对于很多加密协议的应用场景是有意义的。这是我认为PoS有必要性的第二个理由。此外,基于PoS可以发展高效的加密协议社区治理,这方面的分析可参见拙作《加密协议治理之道》。

    201910210543183855.jpg

    201910210543183855.jpg
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表