V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
omnigeeker
V2EX  ›  推广

我知道你会说“区块链不靠谱”,所以我把 PPIO 设计成三个阶段

  •  
  •   omnigeeker · 2018-11-29 16:27:43 +08:00 · 2626 次点击
    这是一个创建于 2185 天前的主题,其中的信息可能已经有所发展或是发生改变。

    #什么是 PP.io ?#

    PP.io 是我和 Bill 发起的存储项目,目的在于为开发者提供一个去中心化的存储和分发平台,能做到更便宜,更高速,更隐私。

    当然做去中心化存储的项目也有好几个,FileCoin,SiaCoin,MaidSafe 等,但是仔细看看他们流出的资料,官网,白皮书,文章以及各个社区的言论,可以看出他们注重这几点,完全去中心化,安全性,完全的社区化治理,几乎像比特币一样地宣传区块链精神,以便于把币的价值通过共识做起来。甚至可以说,这些项目都是把存储项目纯粹当作区块链项目来做得, 但是这样能把去中心化存储做好吗?

    首先要定义,什么是“做好去中心化存储”?

    首先,去中心化存储也是数据的网络存储,数据存储和比特币等数字货币其实是不同的。

    数字货币是钱,钱对安全性的要求非常高。每当我支付出一笔钱出去,我手上的钱就会变少,而钱支付的快和慢不是那么重要。

    数据网络存储是使用场景,在互联网上到处都需要数据存储。对于个人用户而言,苹果的 iCloud,Google Drive, 微软的 OneDrive 就是数据存储;而对于开发者而言,AWS S3 和微软的 Axure 就是对开发者的存储服务。存储是真正需要使用的产品,所以服务质量非常重要,贵了,慢了,数据丢了,网盘服务关停了,都有可能是用户不使用的理由。在这个场景下,存储价格合理,服务质量高,就非常重要了。所以存储价格合理,服务质量高,才是真正地做好去中心化存储。

    可以再看看前面提到的几个项目,他们输出的资料、官网、白皮书、文章中几乎没有提到过服务质量(QoS)。甚至在社区里还有人抱怨,去中心化存储的价格相对于传统云存储的价格,不但没有变低,反而还高了很多。

    再仔细一想,去中心化存储是现在才出现的吗?其实不是,早就有了,如 BitTorrent,Emule 以及我之前设计的 PPTV (数据早就存在很多节点上,并且广阔地部署在全网,然后相互免费共享)。它们本质就是去中心化存储。

    所以我在设计 PP.io 项目的时候,想法和 Filecoin、SiaCoin 等几个项目有很大的不同。我是把传统 P2P 项目的精髓结合区块链项目的特点来做,提出以用户服务质量为导向的去中心化存储项目。 也因为如此,PP.io 项目的实施过程并上来就直接完全去中心,而要经历 3 个阶段,”强中心“、”弱中心“、”完全去中心“。

    你没有看错,我们没有一开始就直接完全去中心。这不同于现在的区块链项目。下面详细说一下,我是怎么思考的。

    首先我的观点:区块链解决的是信任问题,不是数据存储问题。所以我在设计 PP.io 的时候,不会将存储文件放在链上,在链上只存放资产,合约,证明等和激励相关的信息。数据存放在分散的存储节点节点上,使用 P2P 存储技术来分配和调度,不存入区块链,数据是可以被所有者删除的,但也只能被数据所有者删除。就像比特币,只有所有者能发起转账一样。

    从本质上来说,PP.io 拥有两个系统:

    1. 一个是分布式存储系统,是由 P2P 存储技术构建,以 Qos 为导向,目标是做出不低于 AWS S3 的 Qos(服务质量)

    2. 另外一个是区块链系统,是由区块链技术构建,以经济激励为导向,目标是做出良性的市场经济,让真正价廉物美的服务商获得收益

    图 1:分布式存储系统 和 区块链系统

    这里,我解释一下我说的“中心”是什么意思。

    首先,我在设计 PP.io 的时候,存储方面从头到尾都是去中心的,数据永远存放在去中心化的网络中。但是一个高效的 P2P 系统并不是只有存储节点,还有一些中心化的服务器。这些服务器是用于管理大量的索引信息,跟踪信息等,让节点之间相互发现对方,让节点之间相互协调。就像 Bitorrent 系统中的 Tracker 服务器角色。这些服务器是不存放数据的,但是如果没有这些中心化服务器,P2P 网络会变得非常低效。PP.io 系统中也存在这样的角色,这就是我所谓的“中心”。

    简单地说,区块链,激励,存储都是始终去中心的, 只有类似于 Bittorrent 的 Tracker 角色,才需要经历 3 个阶段。

    这里,我先详细介绍一下 PP.io 中的存储角色:

    1. 用户节点:PP.io 的消费者,通过消耗一定的 PP.io Coin,来获得存储或下载数据的服务。

    2. 发布源节点:发布内容服务的节点,属于一种特殊的用户节点,它们通常不下线,且能够长期提供下载服务;发布源节点类似于 IPFS

    3. 存储节点:通过提供存储空间和带宽服务来获得 PP.io Coin 激励的节点。

    4. 检索调度节点:可同时提供检索和调度两种服务, 并可获得 PP.io Coin 激励的节点,检索功能方便为用户快速定位到指定数据的位置,调度功能管理数据的上传和下载,并根据供需关系调整存储数据副本的流动。

    5. 监督节点:承担存储证明中的验证任务并可获得激励的节点,监督节点确认存储节点的总存储容量,验证用户数据存储下载,检查存储时空和下载带宽的有效性;

    其他去中心化存储,如 FileCoin, MaidSafe,都没有单独的监督节点角色,都要用他们的矿工节点兼做监督节点。我们核算了矿工节点的性能,如果承担监督工作,会有大量的密码学工作,就会要求所有矿工配置更高。FileCoin 里面的矿工作用,有点类似 PP.io 里面的存储节点,我们 PP.io 为了降低存储节点的门槛,将提供存储服务的角色和监督角色分开,所以将监督节点独立出来了。

    差不多介绍了基本信息后,我该详细介绍 PP.io 未来发展的 3 个阶段了。

    ##“强中心”阶段 "##

    这些节点是去中心化的:用户节点,发布源节点,存储节点。

    这些节点是中心化的:检索调度节点,监督节点。

    除此之外,我们还有一个结算中心,也是中心化的。负责计算节点之间的 Token 的支付。

    这个阶段,区块链只有一条主链。主链上我们只存放资产信息,也就是用户有多少币,相应的转账记录。

    图 2:“强中心”阶段的架构图

    其实,StorJ 现在也处于这个状态,它的分布式存储是自己做得,它的激励直接使用的是以太坊上的 ERC20 代币。它是靠中心化统计,然后每个月按时给矿工发工资的方式来激励的。

    ##“弱中心”阶段##

    这些节点是去中心化的:用户节点,发布源节点,存储节点

    这些节点是联盟部署的:检索调度节点,监督节点。

    联盟部署就是必须有 PP.io 的许可才能加入并部署这样节点。这样做的目地是使用人为的方式来避免这些节点作恶,从而降低这个阶段的开发难度。

    之前的结算中心服务器,在这阶段演化成了一组侧链,每条侧链上有多个节点交替产生区块。由出块节点做结算,其他节点对结算的结果做验证。侧链和主链之间分别做共识,侧链和主链之间通过预言机机制来通讯。

    这条侧链我们称为合约链。如果这条侧链的性能不够,可以分裂出多条合约链。

    这个阶段,区块链只有一条主链和多条合约链构成,资产,合约,证明均写在区块链上。但是合约链相关的节点是必须有授权才能部署的,简单地说,合约链处于联盟链状态。

    图 3:“弱中心”阶段的架构图

    ##“去中心”阶段##

    这个阶段,所有节点都是去中心化的。这是 PP.io 的最终状态,之前在”弱中心“状态下联盟部署的节点,如检索调度节点,监督节点在这个阶段就没有接入限制了,任何人都可以加入 PP.io 网络并进行部署这些节点。

    这个阶段,区块链依然保持一条主链和多条合约链构成。合约链也不在是联盟链,变成了公链。区块链共识算法也会在这段阶段实现最终共识算法。

    图 4:“去中心” 阶段的架构图

    这里我详细解释了 PP.io 的三个阶段。这篇文章我先说到这里,可能你有不少问题。不要着急,下一篇文章我会讲解为什么要把 PP.io 设计成三个阶段。

    文章作者:Wayne Wong

    转载请注明出处

    如果有关于 PPIO 的交流,可以通过下面的方式联系我:

    加我微信,注意备注来源

    wechat:omnigeeker

    lyc1116
        1
    lyc1116  
       2018-11-29 17:05:41 +08:00
    pplive 赞一个
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 08:53 · PVG 16:53 · LAX 00:53 · JFK 03:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.