最近媒体报道比较多的一个项目叫 Algorand ,是一帮来自 MIT 还有别的学校教授搞的,项目亮点就是它的共识算法。Peter 看了看他们的网站:algorand.com/ ,还有官方博客的文章:https://medium.com/algorand ,发现他们总是拿 POW 算法当靶子,于是我就很不爽,写篇文章站在 POW 的一方辩论一下,从 Algorand 尝试解决的比特币的所谓的三大问题去反击。其中我一个很核心的立论点就是,Algorand 只讨论技术,但是对经济激励,或者说市场博弈的思考严重不足,而这一点是区块链共识算法的一个根本特征。

POW 受矿池控制中心化程度高

先来看 POW 被攻击的第一个点,就是挖矿带来了矿机矿池,造成了算力垄断,客观造成了网络中心化程度变高。

在为 POW 辩驳之前,我们先来看看,Algorand 的核心思路。目前业内有一个基本的共识就是要达成小范围的共识,那么 BFT 也就是拜占庭容错算法,是非常好用的,因为不涉及挖矿,所以速度会非常快。而对于大范围共识,或者说全球的无准入门槛的共识,POW 是唯一一个被验证可行的算法,但是 POW 的确比较昂贵和低效。 Alogorand 要打破的就是这个矛盾,要做出又快又广的共识。共识要想快,基本思路就是要先选取出委员会,例如 EOS 项目就是靠事先选举好一个21个成员组成的委员会进行表决的,我们可以明显看到这种做法中心度是比较高的,需要我们对这21个公司有足够的信任,另外委员如果都是固定的,不管是去进行 DOS 攻击还是进行贿赂,其实都是比较容易的。而 Algorand 采用的是非固定委员会制度,号称能达成真正的去中心化。具体做法的核心就是通过随机数,这就难怪项目名字中就有 rand ,也就是“随机”这个词的简写了。每次出块前,网络会随机选举出一个很小的委员会来,没有任何人能够事先知道委员组成,然后在委员会内通过拜占庭容错算法达成共识。

我得声明我没有仔细看 Algorand 的白皮书。但是当我看到白皮书上:https://arxiv.org/pdf/1607.01341.pdf ,写着他们的算法已经申请专利了,而且代码也不开源,我就知道这个项目不是我特别喜欢的那种,因为这种做法本身就是中心化极高的。但是不要紧,下面我们的讨论,不会基于我的无知来进行,而是我们对 Algorand 进行最优的假设,我们假设它真的能很快的在一个去中心化网络上达成安全的随机数,虽然这个任务其实非常非常难。同时 Algorand 其实是基于 POS 的,也就是如果攻击者持有了 Algorand 项目的三分之一的代币,那么拜占庭算法可能也就失效了,但是这个我们也暂时忽略。换句话说,我们假定 Algorand 就是一个很快,按照官方的说法就是一秒,就能达成全球共识的系统。那么其实在这个基础上,我依然不认为 POW 就一无是处。

铺垫有点长了,回到我们要讨论的第一个点,那就是 Algorand 真的能避免 POW 出现的算力集中问题吗?首先 Peter 认为反矿机是一个基本不可能的任务,不管软件的算法怎么设计,不管你是 CPU 挖矿,内存挖矿,带宽硬盘挖矿,还是用任何狗屁东西挖矿,只要有足够的经济利益,矿工总会能够设计出专门用来挖矿的设备的。再退一步,即使没有矿机,只要 Algorand 是一个公开的规则,任何参与的机器都有平等的机会被随机数选中而获得代币奖励,那矿池公司就干脆多买 PC 就行了,反正花了钱就有回报,具体花钱买矿机还是买 PC ,真的有区别吗?所以说矿池的算力垄断我觉得一方面是不可避免的,另外一方面也没有普通人说的那么危险。51%攻击的意思,不是说一个公司有51%的算力系统就不安全了,而是要同时保证这个公司的人都是疯子,可以不顾自己的投资,一心想干掉系统。同时,大矿池虽然存在,但是整个系统其实还是保留了强有力的去中心化特点的,比如个别矿池瘫痪了,其实不会太影响整个网络的安全,这只会意味着其他矿工会挖的更开心一些。

综上,我们可以总结一下第一个点。首先一方面,不管用什么算法,其实只要有利益驱动,就会有大矿池公司的产生,Algorand 也不能避免这个问题。其次第二个方面,只要保证矿池作恶不会获得比不作恶更多的利益,那么整个网络就是安全的。而对于第二个方面,其实只有 POW 能保证,POS 下是保证不了的,而 Algorand 就是基于 POS 的。

POW 交易确认巨慢

接下来我们讨论第二个点,就是 POW 交易慢的问题。

先来说说 POW 为何会很慢。我在知乎的一个帖子上:https://www.zhihu.com/question/59648250 ,看到 maxdeath 同学的一个说法,觉得很有道理:不管是 POW 还是 POS 本质上就是找一个随机数。其实只要网络上能保证,没有任何人知道下一个生成区块的人是谁,那么就能保证网络是安全的。但是以比特币为例,为何系统要设定10分钟才能出一个块呢?答案就是系统要等待数据能够触及到尽可能多的网络上的节点。同时还是因为网络延时,其实一个块出来后,这个矿工对于出下一个块还是有先发优势的,所以要保证整个过程真正是公平随机的,还需要等六个确认。很多人认为比特币的共识时间是十分钟,其实不对的,真正的共识是需要一个小时才能达成。

说回 Algorand 的算法,它的1S达成共识,是如何做到的呢?Algorand 文档上说,比特币慢是因为比特币设置了十分钟的猜谜时间,但是要知道比特币不是吃饱了撑的非要设置这个十分钟的,而是要等待数据的扩散。Algorand 的随机数产生是算法直接生成的,这个肯定比较快,但是其实问题的根本不在这里,比特币要一个小时才能达成的真正的数据的扩展,Algorand 真的能在1秒钟完成吗?难道大家不都是在同一互联网里运行吗?同时如果 Algorand 如此之快,那么真正上线后,处理的数据量必然也比比特币大很多倍,那么这样对网速岂不是要求更高。

好,因为 Peter 的事先功课做的并不扎实,我们还是对 Algorand 做最善意的假设。我们认定它1S内就能完美的完成交易的确认,但是即使这样,难道就能满足企业级的速度要求了吗?明显依然不够。所以区块链项目要想真正的快起来,真正满是实际项目的需求,答案明显不在自身。而应该从第二层方案去考虑解决。还是以比特币的 POW 为例,难道就没有优化的空间了吗?当然有,首先可以通过缩短猜谜时间来提高处理速度,实际中的例子就是莱特币,或者可以通过增大每个区块的容量,来提高单位时间内的处理能力,例子就是比特币现金。但是为什么比特币没有采用这两种方式进行扩容呢?这是因为,强行提高处理速度,就会降低整个系统的安全性。而有全球共识能力的区块链,应该把自己看做是整个网络的第一层,全力关注安全。而对于性能的提升,应该放到第二层去做,例如通过闪电网络,或者其他的侧链方案,这个我们就不展开了。目前世界上,通过第二层来解决处理速度这个思路基本上是个共识了,很多公司和项目都采用了这样的思路。例如国内的 Nervos 项目,它的 CTO Jan 同学,原来是以太坊项目核心开发者,专门研究 POS 共识算法的,但是到了自己创业开发 Nervos 的时候,依然选择了 POW 作为第一层公链的算法,全力保证安全,而把性能提升的工作放到了第二层去进行。

第二点,关于 POW 慢的问题,我们也来总结一下。不管用什么算法,其实真正公平的全球共识本身就会很慢,这是网络速度决定的。即使优化后,也不可能达成真实世界中需要的毫秒级的响应速度。所以说 POW 的慢也不是错,因为要保证全球共识的安全,而快的问题,应该放到第二层去解决。

POW 耗能是浪费

最后进入第三点,这个是 Peter 自己最喜欢跟朋友讨论的一个点,也是 Algorand 以及其他 POS 项目最乐于用来攻击 POW 的一个点: POW 的能源消耗问题。引用 Nervos 团队的 CEO Terry 的一句话来表明我自己的态度:我们认为挖矿的能耗不是浪费,是有意义的。

我自己有一个观点,只要是自由的市场,那么生产成本跟价格永远会无限趋近的。以目前比特币为例,一枚比特币的价格是6000美金左右,那么用来挖矿的电力和硬件成本,其实也差不多就是这个数。Algorand 会说这就是 POW 最大的问题啊,电力资源都用来算一些无聊的数学题了。但是其实实际情况是,这个生产一枚加密币的成本,跟算法没有一毛钱关系。比特币不值钱的时候,同样是这套算法,一个人用自己的手提电脑就能挖出很多比特币来。而试想当比特币的价格到了1000美金一枚,而挖矿成本低于这个价格,那自由的市场中,就会涌入很多新的矿工,大家比拼算力,挖矿难度于是就会自动调整,挖矿成本也就一路提升直到趋近一千美金。回到 Algorand 的情况,只能有两种可能,一种是系统只干活,不发币,这样的结果就是大家都会把自己的电脑关掉,没有人会参与共识。另外一种可能就是算法会公平的随机的给每一台机器发放代币奖励,这样,只有还有利润空间,大家肯定会买更多的机器前来提高获得代币的概率,最终也会达成跟挖矿一样的成本平衡。所以说,只要是想在一个无准入门槛的网络中达成全球共识,资源的消耗就不可避免。

另外,前面说了矿池并没有想象的那么邪恶,这里同样的道理,耗能这个事情其实也没有很多环保主义暴徒所宣扬的那样邪恶。首先说挖矿花的钱跟我们去饭店吃顿饭是一样的,都拉动了消费。吃饭的钱,让种菜的农民和餐馆服务员都有了收入。而挖矿花的钱,其实很多都让芯片生产商赚去了,对硬件技术进步是有推动作用的。然后再说电能。其实矿场永远是建设在边远地区,什么四川啊西藏啊蒙古啊。因为这些地方人少,但是自然资源丰富,如果矿场不来,那么其实每年水库都要开闸放水,把很多能源废弃掉,也就是所谓的弃能。挖矿过程会利用起这些能源,给当地带来了税收和就业。底层的逻辑相当于把用不了的电能的价值,存储到了加密货币中。币圈的宝二爷提到过一个词叫“能源货币”,我想大概就是这个意思。

好,关于比特币被攻击的第三点,总结起来我的观点就是:只要你想通过全球共识来生产一种有价格的货币,那么消耗区块链以外的能量和价值是一个必要条件。斯坦福大学教授,华人物理学家张首晟有一个观点:系统内的熵减,必然伴随着系统外的熵赠,说的就是这个意思。

总结

最后来总结一下全文。Algorand 项目提出了一个基于随机数共识算法,号称可以不耗能,同时快速安全的达成全球共识。我个人觉得是不可能的,但是整个的思路还是非常能激发我们的思考的,于是伴随着 Algorand 和 POW 两种算法的争论,我们有认真思考了 POW 中心化程度高,处理速度慢以及耗能高三个问题的本质。我个人认为以后这三个问题肯定会随着技术的进步而不断的优化,但是想要一下子彻底消失是不可能的,因为全球共识本身就应该是相对比较慢并且昂贵的。