作者:Silver,区块链开发工程师,Spark架构师,IPSE首席架构师
背景
时间到了2019年,分布式存储逐渐进入了落地阶段,不管是以往试水整个分布式存储的Sia,Storj等前辈项目,还是目前正在走向测试阶段的Filecoin,还是数个等不及Filecoin上主网而推出的对标型的分布式存储公链项目,例如Lambda,Yotta和Filestorm等,这些项目不管其共识机制如何,都基本有一个特点,那就是在构建一个开放的存储市场方面做出了优秀的尝试,同时会面临一个极具挑战的问题,那就是一个开放的分布式的存储市场,数据会不会愿意一开始付费存储进去。
摘要
IPSE是基于IPFS网络的搜索引擎,实现了将IPFS网络上的数据标签化,同时肩负着一个重大的使命,那就是使IPFS网络从节点少很难使用的状态到IPFS节点广泛存在,使用起来轻松简单。
IPSE提供一个基于IPFS网络的存储内容的快速检索入口,同时建立了用户分享数据和存储空间的奖励机制,IPSE将采用PoST(Proof of Storage True)算法保证数据的高效存储和利用,同时未来IPSE主链将采用21个超级节点的DPoS共识机制,保证共识网络高效运转和可靠性。
IPSE将是第一个走完数据完整生命流程的分布式存储类项目,从数据的来源,到数据的存储,到数据的检索, 到数据的访问,都将在IPSE的体系中完成。IPSE将不同于Filecoin等分布式存储公链项目,IPSE将不提供一个分布式的存储空间市场,而是有一个分布式的存储任务分发系统,基于IPFS的底层存储网络,还有一个基于石墨烯技术的成熟且高效的共识网络,最后是IPSE的价值互联网的检索入口,基于此入口,IPSE还将构建一个DAPP矩阵,包括内容付币,内容打赏,版权保护,版权繁荣,流媒体门户,分布式广告平台等。
IPSE主要有以下技术组件构成:
技术组件
■共识网络:基于DPoS作为底层共识,支持智能合约轻松部署。
■存储网络:IPSE的存储网络是以IPFS为底层的存储网络。
■任务分发系统:IPSE有一个分布式的任务分发系统,分享行为视为挖矿行为,也会有奖励。
■节点客户端:IPSE会在数据访问层推出自己的节点客户端,畅享IPSE上的所有数据。
流程简述
IPSE是一个将数据在分布式网络中存储,并构建起索引入口的下一代价值互联网基础设施。POST作为IPSE的原生数字Token,IPSE中的超级节点将肩负多重任务,21个超级节点和100个备选超级节点将是IPSE的共识网络的维护者,同时将担负起验证者的角色,包括两方面的验证,一个是数据持有性检验,一个是数据源真实性检验。整个存储网络的安全性,需要依靠超级节点验证者的维护,主要通过罚没奖励出来抵押在合约中的Token。同时,整个数据源头需要从任务分发系统对接出来,接入任务分发系统是开放的,而数据源是否可以下载数据并存储,就需要超级节点验证,并通过罚没抵押的方式来达到规则的维护。
SuperNode:
超级节点,是整个IPSE的共识网络出块节点,并且承担起另外两个核心验证的工作,一个是数据存储证明PDP 的验证者角色,一个是数据源真实性验证者角色。超级节点保证了整个IPSE的共识网络高效稳定运行,同时超级节点并不能出现舞弊行为,因为还有100个备选节点等会候选,超级节点需要得到社区足够多的投票支持才能当选。
StorageMiner
存储矿工,提供存储空间并接收任务分发系统的存储任务,完成数据下载并存储,且需要提供正常的数据访问服务的节点。存储矿工主要是通过存储数据的多少和种类来判定奖励。接收到的任务分发系统分发的任务也是随机的,其挖矿奖励段时间具有随机性,长时间是稳定的。存储矿工在IPSE生态体系中是最基础的部分,他们是接下来去中心化价值互联网的基础设施建设者。
DataSourceMiner
数据源矿工,能够提供数据源的接入节点,所有数据源矿工都要为自己的数据源担负责任,比如数据源不能设涉及到数据隐私泄露,数据版权盗用等,数据源矿工参与挖矿也是需要抵押POST,为自己的数据源承担一定的责任,一旦出现举报并被核实,就会罚没挖矿奖励和抵押品。数据源矿工是整个IPSE生态体系中重要的组成部分,在去中心化网络发展的下一个十年,他们承担着将中心化互联网的数据搬迁到去中心化网络的重任,他们是价值互联网中数据和价值的搬运工。
PDPPD
部分授权的可证明数据持有验证(provable data possession based on partial delegation,PDPPD),任务分发节点授权代理对存储矿工存储的数据进行持验证。此方案基于双线性对及部分授权技术支持数据拥有者直接通过密钥变形方式委任代理方进行数据持有验证,并且数据拥有者可以随时撤销或更换代理方,证明了方案的安全 性。此方案主要优点是减少了计算量和通信量,应用场景更加广泛。
SuperNode-PDP
基于可信超级节点的PDP证明,在借鉴PDPPD方案的优点后,IPSE对数据完整性证明的看法是独特的,IPSE 将区别于分布式存储型公链,并不会在数据完整性方便做到极致,这是充分考虑到效率而言的,存储节点本质应该是去进行数据存储和分发,而不是将大部分CPU用来做数据完整性证明。当然为了数据的基本安全,还是需要持有性证明的,IPSE的数据完整性证明基于PDP、POR证明,IPSE将采用链上的参数作为随机数,让超级节点承担存储证明的挑战者角色,存储矿工需要执行预定义的证明函数生成多次证明的证据集合,然后提交到链上,然后由超级节点随机挑选验证。
Sector
扇区,存储矿工使用扇区为单位对存空间进行划分,然后以扇区为单位对数据完整性进行证明,当超级节点发起对某个扇区进行挑战的时候,存储矿工需要对这个扇区保存的数据进行完整性证明,超级节点也会对这个扇区的数据完整性进行验证,然后这些证明和验证都会记录到链上去。
DistributionNode
任务分发节点,这是IPSE独有的概念,所有数据源都会通过任务分发节点来进行随机分发,所有存储矿工都需要注册到任务分发节点中来,这样他们会有相应的概率被分发到任务,任何节点也可以注册成为任务分发节 点,只需要遵循IPSE的任务分发标准即可,当然任务分发是需要抵押和有奖励的。
DistributionSystem
任务分发系统,是由任务分发节点组成,每个节点都按照IPSE的任务分发规则进行任务分发,同时整个系统将采用新的合约来设计,IPSE基金会将建设一个任务分发奖励池,鼓励社区建设强大的任务分发节点,让整个IPSE的生态更加丰富和多元化。任务分发系统将是一个奖罚分明的体系,任务上传是需要POST抵押的,当下载任务被存储节点完成后,任务上传者将获得部分奖励,如果在数据源澄清期没有出现纠纷,任务上传者将获得所有奖励和抵押。如果上传任务不能下载,或者在澄清期出现纠纷,被数据源合法性仲裁者判定为败诉将罚没所有奖励和抵押。
DataSourceClearPeriod
数据源澄清期,任务分发节点接收上传来的数据源,需要有一段时间来澄清其数据源的合法性,此合法性包括数据所有权,会不会侵犯他人版权,是否涉及到儿童色情、恐怖暴力等内容。我们可以合理地设置一个数据源澄清期为1年。
DataSourceValidArbitrator
数据源合法性仲裁者,在数据源澄清期,如果出现纷争,比如出现了版权的诉说或者投诉,数据源合法性仲裁者都会担当做出终裁的角色,如果要选出这样权力巨大的仲裁者,就需要IPSE的利益相关方深度参与,在IPSE体系中,超级节点是最大的利益相关方,每个超级节点推选出一个仲裁者是不错的选择。
ProofSet
证明集合,存储矿工以扇区为单位进行存储证明,然后所有扇区的证明集合将上链,然后广播到所有共识节点,由超级节点进行随机挑选挑战验证,打包到区块并完成存储矿工工作量证明,给予相应的奖励。
PledgeRatio
抵押率,存储矿工在存储挖矿时,并不会在第一时间得到所有Token,而是有一个抵押比例的Token被质押在合约里,然后在接下来的5年内释放给存储矿工。这个抵押比例就是抵押率,抵押率是会动态变化的,跟IPSE的矿工信用度相关。
CreditDegree
信用度,IPSE中存储矿工接入后,信用度是非常低的,随着时间的积累,矿工都能够稳定存储数据来挖矿,这样矿工能够不断积累自身的信用度。
ChallengeJump
挑战跳跃,超级节点在存储矿工完成存储后,会进行第一次的挑战,但为了整个系统的负载平衡,并不会长期进行挑战,会根据存储矿工信用度在时间上跳跃来挑战。存储矿工信用度越高,跳跃时间越长,挑战频率就会降低,反之则挑战频率升高。
SystemContracts
系统合约,IPSE的系统合约是内置合约,基本跟随EOS体系会一直升级更新,所以随着优秀的公链EOS发展,IPSE也将会有优秀的共识层,并且吸取EOS最强的社区治理模式和经验。
Wallet
IPSE钱包,跟随EOS钱包生态一起发展,EOS生态会逐渐成为最主流的区块链生态之一,IPSE钱包也将受益于此生态的多元化,IPSE钱包将在众多平台适配,移动端、桌面端和服务器端等。IPSE是下一代价值互联网的入口,而真正承载价值闸门的将是IPSE钱包,IPSE钱包将易用性和兼容性做到极致。
IPSE的出发点
从0到1
一个很好的项目一定分为两部分,第一部分是Production,也就是产品从0到1点阶段就极具产品力,是一个打磨好的具有市场口碑的产品;第二部分是Distribution,这个打磨好的产品能够快速复制的比较低成本优势。深入分析所有这些分布式存储项目,其经济模型和技术特点决定了其1到N的分发复制将是巨大的优势,只要能从0到1做到真正落地实现,没有理由怀疑其不能代表未来的主流存储选择。但其都有一个致命的缺陷,那就是一个先有鸡还是先有蛋的问题。
存储空间是有成本的,而数据又是无处不在的,两者好像能够轻松结合起来,但到了实际操作层面,这个却很难了,分布式存储公链项目能够轻松构建出一个具有透明价格的存储空间市场,而且价格是波动且合理的,但数据是否愿意存储进去,按照目前市场的反馈来看,可能并没有多少人愿意为之买单。为何会出现这种看似不合理的局面呢,其中的逻辑其实比较清晰,站在项目方的角度,构建一个低成本优势的分布式存储空间,自然就会有数据付费存储进来;站在数据存储方的角度,一个没经过绝对考验的分布式的存储空间提供方,数据是不能轻易存储进去的,对于数据存储方而言,数据存储成本相对于数据分发时的网络成本,其实存储成本是相对比较低的,存储在中心化服务器更加高效,而按照目前的Filecoin的分布式存储解决方案,检索数据还需要付费,对于大规模分发数据,不仅不能够降低成本,而且还要增加成本。
致命的低效
到目前,分布式存储公链中,个人认为技术最为严谨且路线最为扎实的当属Filecoin项目,但不能发现目前其遇到的几个挑战点。这些问题都是从非常根本性的设计角度去观察的。
1.消耗大量的CPU做复制证明计算,相对于中心化存储还具有成本优势吗? 2.海量的撮合交易在DSN市场是否能够最终高效完成? 3.检索数据能否做到高效且免费? 4.无公网ip存储节点能否贡献有效存储空间?
以上四个问题都是从效率的角度出发,观察目前的分布式存储型公链或多或少需要解决的技术难点。如果每个存储节点使用非常高级别的CPU都不能满足做数据复制证明的需求,还需要更加昂贵的GPU来解决这个问题, 不是说不可以这么实现,而是一个成本的问题,那些中心化存储节点可是相对简单容易得多。如果在去中心化的撮合交易市场,无法完成大量的订单交易,那一个存储空间买卖都将成本一个巨大的问题,更不要提基于存储来做高效且具有成本优势的DAPP开发了。如果检索数据不能够像中心化存储服务节点那样高效且几乎免费,那么分布式存储空间的优势可以说很难成立。如果分布式存储节点还需要一个公网ip,那其相比中心化存储,既不会那么分布式,也不会那么低成本。
PoST(Proof of Storage True)
IPSE的代币简称POST,并不是外界所理解的时空证明的缩写(Proof of Space Time),而是IPSE存储算力证明使用到的共识机制的缩写,IPSE的共识机制Proof of Storage True,中文翻译为存真证明,刚好对应中文“去伪存真”的含义。存真证明其实非常容易理解,真正存储数据,而且证明存储真实有效。
当绝大多数项目都还在为先有鸡(具有成本优势的分布式存储空间)还是先有蛋(能够在分布式存储空间上存储的数据)探索的时候,个人认为很多项目都会在这个从0到1的探索中找不到出路。IPSE进行了另外的探索,先把海量数据真实存储到分布式的存储空间,而不是让海量的分布式存储空间空在那里,傻傻的等待数据过来存储,如果没有数据过来存储,还要傻傻的花费几乎所有的CPU去做复制证明,只为证明存储空间还是空的,然后所有人去参与炒币,没有人关系那些分布式存储空间是否真的被高效利用起来。IPSE绝不是这样一个无聊游戏的参与者,其存真证明共识就自然而然让所有节点去真正存储数据,并且需要证明存储真实有效。
IPSE Consensus
奖励规则
IPSE是让数据真实存储,这种普遍发生的存储行为,不能只是仅仅考虑存储数据的大小,而不去考虑数据另外的维度。IPSE的奖励规则设计是非常清晰的,考虑的维度有三个方面:第一个方面是存储数据大小,第二个维度是数据的类别,第三个维度是数据的保存份数。如果数据大小为s,数据类别为c ∈ C,保存份数为n,那么其算力w计算公式为:
w = s * c * 1/n
矿工产币量t,还要考虑全网总算力,这个全网总算力是上一天的全网总算力TW,还有当日总产币TT,矿工每次挖矿产币的计算公式如下:
t = w / TW * TT
摇摆攻击
如果矿工联合起来,隔一天不努力挖矿,导致全网总算力下降非常多,第二天又联合起来非常努力挖矿,这样会导致第二天产出非常高,这种现象称为摇摆攻击,IPSE是有两个机制来防治这种摇摆攻击的,第一个是矿工联合起来是可以使得全网算力下降非常多,但并不是无限下降的,会有一个限制的,下降到一定程度时无法再下降,第二个是当日总算力超过昨天总算力的时候,就会导致当日总产币量TT快速下降,这两个机制将非常好地防止矿工摇摆攻击,基本保证每天的总产币数量保持不变。
共识流程
IPSE Consensus的算法基本步骤如下:
1) 任务分发节点随机从任务数据库中抽取任务,随机发放给注册的存储矿机,taskid是任务的ID。
2) 存储矿工接收到任务后,进行下载并通过本地IPFS节点上传到IPFS网络的到hashlink。
3) 完成下载和上传任务后,需要上报挖矿成果给超级节点,其中包括hashlink,minerid,taskid,size,category等参数。
4) 超级节点接收到挖矿成功后,将这些信息上链,让另外的超级节点随机挑选一个数据切片发起挑战。另外的超级节点也是随机验证的,当有其中一个超级节点发起了挑战,其他超级节点将不再发起相同的挑战,这样可以有效防止超级节点和大矿工进行合谋。
5) 存储矿工需要对这些数据切片涉及到的扇区进行数据持有性PDP证明,并且将这些证明集合提交给超级节点。
6) 超级节点验证这些PDP证明,如果通过了验证,将给予存储矿工奖励,最终奖励结果将同步共识网络。然后索引起hashlink,然后将下发任务的状态进行更新。
注:
1. 如果存储矿工无法下载下发任务,也将结果提交给超级节点,超级节点将验证下发任务有效性,这部分将在下章详述。 2. 如果存储矿工无法完成PDP证明,或者超级节点验证其PDP证明无法通过时,存储矿工将面临怎样的惩罚,将在下章详述。
数据持有性证明 PDP(Provable data possession)
数据持有性证明分为两种基本类型,具体取决于检查在协议中的作用,一种是私人检查(私人可验证性),只有数据所有者可以检查服务器上的数据,另外一种是多个(公共)验证(公共可验证性),任何主管当局可以执行检查程序。IPSE的数据所有权归属在任务分发系统中做出了详细描述,任务分发节点是拥有对数据的所有权的,按理来说任务分发节点会去检查数据的持有性,但IPSE系统中任务分发节点会委托超级节点来进行数据持有性的检查。
1) 任务分发节点将为每个任务注入一个tag,每个任务都会有自己的一个taskid,这是任务的唯一标识符。并且任务分发节点也会将自己的签名加入其中,这样保证不会有其他任务分发节点充当女巫节点来分发任务。
2) 超级节点将对存储矿工hashlink中的一个数据切片sub-hashlink发起挑战,这个sub-hashlink可能涉及到一个
sector,也可能涉及到多个sector,这个challenge中包含超级节点从上一个区块中获取的随机数。
3) 存储矿工根据被挑战的数据块内容,tag信息,challenge信息以及自己生成的一个随机数计算得到一个
proof。
4) 超级节点以challenge、proof以及用户公钥为参数,通过预先定义的验证函数去检验存储矿工是否真实存储了数据。
PDP形式化定义如下图:
共识安全
安全和效率的权衡
IPSE的存储贡献共识机制为PoST(Proof of Storage True),其最显著的特点也是IPSE最鲜明的特点,那就是效率优先,大部分数据存储在磁盘介质上是为了数据被访问到,特别是热门数据更是被频繁访问到。IPSE将数据建立索引,能够快速被用户检索并访问,注定了IPSE能够保存IPFS上最多的热门数据,并且依靠强大的检索引擎,IPSE也将能够掌握IPFS上数据的热点区域。效率对IPSE而言是数据能够被快速访问到,安全对IPSE而言是数据不能够被快速反问到。因为IPSE并不是分布式存储型公链,并不保证数据将安全按照合约期限保存在分布式的节点上。
那么IPSE将如何实现其所追求的安全呢?
数据多份保存和多节点分散保存。IPSE的任务分发机制决定了数据并不会单份保存,IPSE的存储成本足够支持数据多份保存,并且将在不同节点分布式保存。
数据保存期限将和机器硬件使用寿命同步,IPSE假设硬件机器使用寿命在5年左右,数据的生命周期也将在5年左右。5年后,数据随着机器淘汰而逐渐丢失的时候,IPSE将力所能及再次分发这些陈旧的任务。
IPSE要求存储矿工对挑战到的数据切片做出PDP持有性证明,虽然也是效率优先的原则,只需要对被随机挑选中的数据切片做持有性证明,但为了不被惩罚到,矿工最佳策略还是完整保存数据并且在矿机使用寿命范围内不删除数据。
奖励和惩罚
真实存储奖励
IPSE的挖矿奖励分为两部分,其中核心部分就是真实存储数据得到的奖励,这部分奖励不同于分布式存储公链,是不需要矿工进行提前抵押的,只是会将产出的Token进行部分质押到合约里,然后在未来5年逐渐释放给用户。其中就涉及到抵押比例的问题,由于IPSE是一个去中心化的系统,没有一个权威能够坚定矿工的可信度,IPSE定义了一个信任度cd (CreditDegree) 的概念,其计算公式如下:
cd = 接入稳定天数 / 1825
接入稳定天数:存储矿工自接入IPSE第一天开始算起,如果当天没有出现数据丢失,PDP持有性证明全部通过验证,稳定天数加1.
抵押率pr(PledgeRatio)的计算公式如下:
抵押在合约的Token,会在未来5年线形释放给存储矿工,每年释放抵押总Token的20%。随着存储矿工稳定挖矿,保证机器稳定运行不掉线不轻易宕机,其信用度就会积累升高,其奖励Token被抵押的比例就会逐渐降 低,得到的收益也会越来越高。
分发任务奖励
IPSE的另外一部分奖励是给任务分发节点的,节点也会给上传数据源奖励,IPSE会对不同的数据源给予不同的权重,其计算方式跟算力计算方式是一致的,只是任何任务分发节点分发一个任务下去之前,都会对这个任务进行声明,包括数据源的类别和大小,当存储矿工完成任务后,只要类别和真实大小跟申明大小没有太大差距,然后数据源过了澄清期后没有纠纷,那么其数据源就是合法的。任务分发节点申明一个任务的时候,是需要质押Token的,这是为了防止出现大量垃圾任务的情况。
存储矿工惩罚
存储矿工如果没有完成PDP数据持有性证明,就会面临惩罚。存储矿工不能完成PDP数据持有性证明的情况是多种多样的,删除数据,宕机,断网,数据盘损坏等。惩罚的力度是跟罚没抵押Token直接相关的。扣罚抵押
Token比例的计算公式如下:
slashratio = ⍴ * n * ( 1 - cd )
⍴ 为系统初始参数
n 为未通过PDP持有性证明的次数
cd 为存储矿工的信用度
当然惩罚还不仅仅限于扣罚存储矿工的抵押Token,还会降低存储矿工的信用度。存储矿工的信用度跟未通过PDP持有性证明的次数存在如下关系:
cd' = cd - ⍺ * n
⍺ 为系统初始参数
任务分发节点惩罚
任务分发节点下发的任务影响整个IPSE系统的运转,其任务是否合法是没有中间地带的。如果出现数据源不能下载的情况,或者在澄清期出现纠纷并被判败诉的情况,将直接罚没所有的奖励和抵押,任务上传时抵押的Token还是任务分发节点的,如果任务分发节点下发垃圾任务,不仅得不到奖励,还会面临损失。
他山之石
IPSE跟Filecoin等分布式存储型公链是完美兼容的,分布式存储公链是构建一个去中心化存储市场,然后让去中心化的存储节点保证数据安全存储,IPSE是尽可能把分布式存储的数据都能检索到。这两者是完全可以合作的,如果一个分布式存储公链上的数据经过数据所有者授权,愿意将数据索引到IPSE生态中,并且其本身是在类似Filecoin完成了复制证明的,那IPSE可以借鉴起数据完整性证明,在其贡献了数据的索引后,给予部分Token奖励。IPSE数据来源可以多样化,既可以是任务分发节点做搬运工,将传统中心化互联网的数据搬运到分布式价值互联网,同时,那些一开始就会存在分布式价值互联网的数据也能索引进IPSE而获得Token奖励。
路线图
第一阶段
◆中心节点高效挖矿: 在EOS主网部署合约挖矿,将整个存储贡献奖励机制,抵押机制和惩罚机制通过合约部署到EOS主网,中心节点验证存储真实性,验证接入到存储矿工的合法性。为了防止攻击,中心节点授权存储矿工来挖矿。
▶这个阶段已经实现,研发时间从2018-07 到 2019-05。
第二阶段
◆分发任务挖矿: 在EOS主网部署新的合约,让中心节点任务分发也能实现奖励,将整个奖励机制,抵押机制和惩罚机制都通过合约部署到EOS主网,可信中心节点验证任务合法性。
▶这个阶段已经开始研发,研发时间从 2019-06 到 2019-09。
第三阶段
◆侧链启动: 基于EOS结合社区发行侧链,需要改写底层的代码,实现超级节点来随机发起PDP持有性证明挑战,还要验证存储矿工PDP持有性证明的存储真实性,这个阶段,存储矿工需要做真实的存储数据持有性证 明,然后数据持有性证明要上链,超级节点充当TPA(Third Party Auditor)的功能,超级节点一旦通过存储矿工存储数据的PDP验证,就可以调用合约给予奖励。这个阶段挖矿节点接入将开放,存储矿工信用度机制将开始工作。
▶这个阶段将在2019-10 到 2020-03 进行研发和测试。当然在这个阶段并不会影响IPSE在EOS主网上的运营, 一旦侧链启动成功,原先EOS主网的Token和抵押Token都将一一映射到侧链上。
第四阶段
◆分布式任务分发: 中心化任务分发转向分布式任务分发,IPSE将构建一个完整的任务下发标准,标准首要考虑就是任务分发节点和存储矿工合谋,将任务定向下发给某个存储矿工而进行舞弊。任务下发奖励,抵押和惩罚机制合约需要迁移部署到侧链上。分布式任务分发构造完成,数据的来源问题将彻底解决,依靠社区的治 理,数据来源有激励,数据存储和分发有激励,数据访问时免费,数据版权有保护,数据版权繁荣有激励。
▶这个阶段将在2020-04 到 2020-08 完成。
注:本文源自IPSE黄皮书,略有删减。
IPSE搜索官网 https://ipse.io
IPFS协议官网 https://ipfs.io