#origin_url=https://www.baidu.com?from=demo

#origin_label=百度

不可能三角

之前的一篇文章,讲解了PPIO的三个阶段:“强中心”,“弱中心”,“去中心”。今天来解释下,为什么PPIO要分三个阶段逐步实现去中心化存储网络:

简单地说,就是在区块链不可能三角理论中,暂时放弃了去中心化 。

先解释一下什么是不可能三角理论。就是说可扩展性(Scalable),去中心化(Decentralized),一致性(Consistent) 这三个点不能都取,只有取其二。比特币和以太坊牺牲的是可扩展性,因为他们做的是加密数字货币。

而架构师在设计PPIO的时候,为了做好场景落地,暂时牺牲了一定的去中心化。

为什么这么做呢?主要考虑到三方面。

1.非常复杂的证明机制

数字货币,比特币和以太坊的证明机制非常简单,简单的说,就是做数学题,大家都来猜一个数字,谁先猜到一个数,符合游戏的要求,谁获得这个奖励。

比特币的算法因为简单,所以数学上非常严密,只要这个计算过程在数学上是不可反向推算的,就没有任何漏洞,不过这种数学计算却变得没有意义:挖比特币的人越多,人类资源被白白消耗的也就越多。

而去中心化存储公链肩负的伟大使命,就是把比特币这样浪费资源的挖矿方式,变成能提供服务,做对人类社会有意义的事。架构师在设计PPIO的时候也是这样想的。那么提供的服务怎么计量,最基本的就是用存储和流量分别来计,传统的云服务也是用这两个因素。

存储是什么,就是存了一个内容,有多大,存了多少时间,这就是一个计量因素;流量是什么,就是传输了多少数据,这也是一个计量因素。要证明这两个因素,只靠单机算法是完不成的,都需要用网络通讯,由第三方节点对双方做见证的机制来完成证明,而如果这个第三方不可信,就需要多个第三方来共同见证,再在这些第三方中共识达成一致。这个过程比起比特币的单机算法要复杂得多。

另外还有一点,比特币每次在出块的时候,只有一个节点能获得奖励。而去中心化存储系统要对所有在这段时间提供了服务的节点,根据各自贡献获得奖励。(可能你曾经参与过比特币挖矿,误以为比特币是按照算力来分配奖励的。其实不是,因为比特币引入了一个中心化的节点叫矿池。矿池相当于保险,把原本只有少数节点获得比特币奖励分给了所有参与挖矿的人。)

所以去中心化存储的证明机制比比特币的证明机制要困难得多,困难到什么程度,举个例子吧,IPFS团队开发得的Filecoin于2017年中旬就发布了白皮书,白皮书里面就提到了PoSt算法和PoRep算法,占了整个白皮书50%的篇幅。2018年秋季,IPFS团队专门发表了一篇PoRep长达50页的论文(后面我会专门写文章解读这篇论文)。可见,PoRep算法有多么复杂。他们很想一步做到去中心化,然而困难迫使他们不得不放慢脚步。截止到2018年底,除了两篇论文和几个演示视频之外,没有开放出其他任何实质资料,相信他们也一定遇到了巨大的挑战。

架构师在设计PPIO的时候是这样考虑的,在完全去中心化的环境中,所有的节点都可能作恶。在所有节点都可能作恶的前提下,设计任何机制都会非常复杂,特别是证明机制。证明机制越复杂,安全漏洞就越多。如果一开始放弃完全不可信的环境,让部分角色变得可信,只有提供存储的存储节点是可能作恶的,那么整个算法将简单很多。

所以在设计PPIO”强中心“阶段的时候,调度索引节点,监督节点和结算中心是由中心化服务完成,只有存储节点是去中心的,他们是可能作恶的。在这个阶段,先实现存储节点相关的证明机制,先把整个系统运行起来。其他因素在这段时间更重要,性能,Qos,经济模型等。

然后,在“弱中心”阶段,之前中心化服务变成可以分开部署的节点。调度索引节点和监督节点可以允许授权部署,但是必须通过线下的商业条款约束,并保证不会作恶。在这期间,我们在技术上做好这些授权节点的证明机制。当在工程上和数学上都做到了无懈可击的时候,就可以开放准入门槛,走向完全去中心。

2.服务质量(QoS)的迭代和优化

QoS的优化并不是一撮而就的,而是经过长期的日复一日的优化和无数个版本的升级迭代才做到的。在这个过程中,可能需要提炼至少100个QoS指标,建立大数据分析系统,对不同地国家不同地区做拆分来逐个优化。建立AB测试机制,A网为大部分用户,他们使用稳定的内核;B网为小部分自愿用户,他们使用最新的内核。使用快速评估算法对于QoS的有效性,B网会频繁升级P2P内核,直到确定新P2P内核的全网QoS更好,并且测试下来非常稳定了。如果做到了,便会对A网内核进行全面的升级,这样能让大部分用户使用到最好的用户体验。

但是,如果在完全去中心的环境下,升级是需要共识的,就像比特币和以太坊。比特币的升级,经历很多次软分叉和硬分叉,而且大的升级每次都经历了很长时间。这样的产品升级效率对做好服务质量来说是非常不利的。好的QoS是迭代出来的,不是一次做好的。如果早期直接代用去中心化,那么升级的成本就会极高,迭代周期就会非常缓慢。

做好了QoS是产品,做不好QoS是玩具。现在有些所谓国际知名公链项目,故事讲得非常好,”宗教信徒”也不少,但充其量只能称为玩具,因为用起来,非常不好用。

PPIO在设计之初时,一开始选择“强中心”,就能非常高效的去调优QoS。而好的QoS,就会有更多用户进来使用,这样存储数据就会越多。有了更多的数据,就会吸引更多的存储节点,从而形成一个良性循环。当QoS做到非常优秀时,我们再走向去中心化,这个时候,因为QoS好了,用户数量也多了,公信就越来越重要。

3.经济模式

PPIO想要完美运行,需要设计一套激励机制,存储节点按照这套经济激励模型在PPIO上提供服务就能获得收益。经济模型的好坏,就直接决定了项目的成败。

经济机制看起来非常简单,但是实际运营起来且非常复杂。例如前面提到去中心化存储的安全性问题,也说明了不可能三角形理论,只靠重量级的数学证明,是不能彻底解决作恶问题,还要依赖于经济惩罚。

先来思考以下几个问题。

是否要求存储节点必须有抵押,才能挖矿?

反方观点:存储节点不抵押就可以挖矿。如果存储节点必须有抵押,那么存储节点的进入门槛就会非常高。

正方观点:存储节点必须先抵押才能挖矿。因为有了抵押,就能在他不遵守规则时候进行惩罚,这样才能保证的存储节点的稳定性。如果存储节点随意上线,随意离线,那么P2P网络就会很不稳定,这样会拉低整个服务的稳定性。

如果存储节点突然下线了,但不是故意下线,例如停电了,应该执行惩罚吗?

反方观点:不应该惩罚,在设计的算法的时候,应该给存储节点设计一个容错机制,允许存储节点偶尔的离线。只要存储节点不是在作恶,可以不予惩罚。

正方观点:在计算机程序里,无法很好地鉴别存储节点是否故意,所以设计激励的时候必须一致。只要有离线就要惩罚,这样能淘汰不良存储节点,保持优质存储节点。存储节点越优质,整个网络的服务质量才能越优质。

这两个问题,你有什么意见呢?

其实这两个问题本质上都是经济学问题。不论怎么选择,都会产生之前无法预料的结果。经济学不提倡所见为实,经济学是一门专门研究事与愿违的学科。

所以PPIO在设计之初,首先预设一种经济激励方案,当然这个预设方案不是拍脑袋决定的,而是通过一系列的数据建模和条件假设推算的,后面PPIO的官方github会公开经济模型建模的源代码。

经济模型的各方面影响因子非常复杂。而如果一开始就采用去中心化的方案,就会出现很难升级的问题。存储节点很有可能因为对自己不利,就拒绝升级,就像吴忌寒完全不care bitcoin core的人发起BCH硬分叉一样。

所以架构师在设计PPIO的时候,就意识到好的经济机制是非常重要的,而好的经济模型是实践中调整出来的,而过早地去中心化不利于经济模型的调整。所以早期采用”强中心“是更利于经济模型的调整,当经济模型逐步地稳定合理,PPIO也会逐步走向去中心化。

以上这三个原因,就是PPIO为何要设计成三个阶段的原因:“强中心”,“弱中心”,“去中心”(文章PPIO的三个阶段:强中心—弱中心—去中心) 。