分布式存储区块链系统:人类未来的数据基础设施?
通过提供分布式存储的区块链系统,数据制造者可以维护自己生产的数据,这是一个开始,更进一步,数据制造者可以通过不同的的方法和渠道来实现数据的收益,与此同时,我们也可以通过这样的方式从机器人手中分享数据。
一个拥有自己数据的所有权,并能够实现数据自由交易的未来,是一个值得为之努力的更好的未来。
撰文:吴为龙,Genaro联合创始人
Genaro联合创始人、趣派科技首席技术官。曾为硅谷美信集成公司的核心开发者,并为三星提供算法,后投身于区块链研发,是第一批区块链开发者和具备丰富创新经历的技术极客,经验涉及区块链虚拟机、P2P存储、共识算法等诸多底层技术。
人的每一次行为都会在世界上产生一系列的记录,一些是以记忆的方式被记录下来的,比如结婚纪念日发生了什么有趣的事情;另外一些是以数据的形式被记录下来的,比如在那一天,购买了什么纪念品、在什么餐厅用餐。
在互联网时代,后者会被各种应用记录下来,保留在公司的数据库中,再通过一系列的计算被使用。比如一个使用携程订酒店的人,会发现订完酒店后送的打折券正好是自己想要消费的一些游乐园区。
互联网公司通过利用用户数据来最大化公司的利益,如果一个人每个月的收入是15000元,在交付房租3000元后,所有的互联网公司都在通过对这个人数据的分析想办法将他兜里剩下的12000元榨干净。
这种方式已经渗透到每个人生活中的每一个环节,它从侧面反映出个人行为记录是有数据价值的,用户的每一次行为都让互联网公司更了解他个人的消费习惯和消费能力。
这些有价值的数据是被互联网公司直接免费拿走并使用的,我们可以将这样的数据价值保留下来吗?用现在最流行的话讲就是,可以用区块链试一下。
01
实现数据价值的基础设施
当我们谈到数据价值的时候,需要先小小的计算一下数据的体量。如果每一个人一次消费产生80byte的记录(按照信用卡和储蓄卡ETF 80 byte file要求),每人每天按5次消费计算,仅仅计算2亿的中国城市人口,就会发现每天产生的消费记录数据为80GB,按照互联网数据公司3个月左右开始画像的话,则是7.2TB数据。那么在消费次数、消费人数、数据积攒时长增加的时候,这类数据会以很快的速度达到PB级别。
这些数据能够被一般意义上的区块链系统存储并处理吗?不能。一般意义上的区块链系统,或者说大多数的公链,它是这样一种分布式系统:系统中的每台计算机都需要存储同样的文件,以保证系统的功能。显而易见,它们是无法提供PB级别的存储空间将数据价值保留在上面的。
所以我们需要将数据存储在分布式存储系统中,再通过区块链的结算功能性实现数据价值。简单来讲就是将存储部署在分布式存储系统中的同时,将状态留在区块链上,以待之后的处理和使用。
这其中,分布式存储是指通过不同的加密方式把数据存储起来,确保数据和链上的账号一一对应,在未来的使用中,利用不同的加密计算工具对数据进行快速的调用和处理,而在数据制造和计算时,都可以做到半匿名的方式。相较于传统互联网的Dropbox,因为结合了区块链来存储数据,在密钥的功能性和本地私密性之外,能够增加额外的处理功能接口,以满足数据分享和计算的需求,从而帮助数据更好地分发和拓展,实现数据的价值。
而「状态」则是指数据来源以及数据的改变,或者数据运算的结果。将这些状态留在区块链上是为了对其运算和改变可以追溯,这样可以更好的知道哪些数据更有价值,并通过即时的结算给出对应的价值。
所以我们说,只有将区块链系统与分布式存储系统这两种分布式系统相结合,而不是单纯的只使用区块链系统,才有可能实现数据的价值,而实现了可以使用分布式存储系统中的数据的区块链系统,是一种从设计到实现上都不同于一般公链系统的区块链系统。
不过,除了区块链系统与分布式存储相结合实现数据价值的方式之外,我们还可以从另一个角度探索数据价值的实现,即只用区块链作为结算账本,把数据放在本地,在完成本地计算后将结果放在区块链上。此时本地计算需要可信计算作为一个媒介,同时需要考虑预言机问题,这部分可以参考现有的可信计算项目的解决方案。
02
详解「区块链系统」与「分布式存储系统」
为了更清楚的理解提供分布式存储的区块链系统,我们先剖析一下「区块链系统」和「分布式存储系统」。
区块链是通过分布式节点的存储资源,对全网全节点进行存储同步,并通过相应的共识技术保证内部节点对存储内容更改的有效性,维护一个完整的可查找的数据库。在此系统中,存储的都是链内生成账户之间余额的更改或者总剩余,当然,更完善的一些系统功能也包括存储了多个账户对数据库中子账目的数据状态维护。
因此,该系统的主要功能是记录状态的改变,然后同步。对节点来说,无论是PoW,PoS还是PoX,其核心的要求就是遵循特定的投票规则,将新的变动同步在所有节点的存储中。
如果一个系统使用的是区块链结构,那么它是不支持用户个人数据,或者说不支持我们希望实现价值的数据的,区块链上的数据是账户数据以及结算数据,这些数据是完全相同的存储到每一个节点的。
那么什么又是分布式存储系统呢?
分布式存储系统是分享分布式节点的存储资源,通过文件完整性证明和纠删码校验技术对数据存储方的数据进行分布式管理,全网的节点并不维护相同的存储信息得以降低冗余的一种分布式系统(区块链系统中全网的节点维护相同的存储信息)。
回到本文一开始提到的消费数据的例子,现有的互联网公司是通过数据的分布式存储,通过RAFT和多级灾备等方式,做适当备份来保证数据不丢失,建立起一个能储存海量数据,并有效率、低开销的系统。
也就是说在分布式存储系统这个部分,几乎所有的公司都达成一个共识,就是分布式存储是现阶段实现大量数据存储的最好的一种方法。无论区块链存在不存在,分布式存储系统已经是一个相对来说比较完善、并且已经广泛用在实际生活中的系统了。
03
提供分布式存储的区块链系统
在厘清区块链系统和分布式存储系统这两种不同的分布式系统后,我们接着讨论提供分布式存储的区块链系统。提供分布式存储的区块链系统是一种不同于一般公链的区块链系统,它是分布式存储 特殊的区块链系统设计。
一个普通的区块链系统,其核心逻辑在于覆盖所有与账户有关的交易属性上,比如账户(公私钥)、账户转账(签名系统和共识系统)、以及条件状态下的转账(操作码和其对应的编码方式)。
而一个提供数据存储的区块链系统除了需要覆盖以上三个属性之外,由于其提供了存储属性,为了确保存储的状态未来也可以对条件进行制约,需要在其操作码上进行判断逻辑的添加,以保证将存储产生的状态、数据支持的状态都能在链上得到追溯,这就是我们需要对提供存储的区块链系统进行特殊设计的原因。
具体而言就是,区块链是需要对特定条件下的数据状态进行维护的,状态被保护起来才能保证交易正确之后状态相应改变了。那么如果分布式存储的状态没有通过相应的设计与区块链系统结合的话,就会出现自动执行的一个空隙,如果状态的空隙被人利用的话,就会出现存储过程状态提前被记录,或者滞后被记录,这会影响到区块链系统中账户余额,也就是产生了系统不安全的空间。
因此,提供分布式存储的区块链系统和一般公链系统不同的部分主要就体现在「状态」这部分,记录某些状态并作出账户上的反馈。
另外,存储相关状态也使得智能合约可以及时获取状态,从而可以设计出一个能够使用外部数据的子账本,这样在工程上能更好的流程化,也会降低用户由于预言机导致的链上资产损失的可能性。
04
分布式存储系统的设计和挑战
在介绍完基本的概念后,接下来介绍系统的设计和实现。为了清晰,先讨论分布式存储系统的设计,再讨论提供分布式存储的区块链系统的设计。
分布式存储系统的设计主要解决三个问题:文件如何安全放入;文件如何安全存储;文件如何不被存储提供方「偷走」。
1.文件如何安全放入
把数据在客户端上传前做加密和分割,通过分布式存储的分发方式上传到存储提供方的空间内,通过相关的存储心跳检测来保证在用户需要数据的时候可以完整的取回。
在整个过程中,用户的数据在本地就已进行加密,用户不需要担心数据被偷窥以及存储提供方没有承担明文存储的风险。
2.文件如何安全存储
根据分布式存储的冗余存储原理,一般来说对应一个资源,如果要保证任意两个节点(N=2)掉线依旧不影响系统可用性,就需要维护2N 1个资源数。也就是说一份文件需要存给5台服务器。
按照12个节点为一个批次的设计,那么任意5个节点掉线是不影响可用性的,但是如果遭遇重放攻击,也就是加密后资源被不合理地配置,攻击节点是可以通过某些方法来阻止文件被安全召回的。这就需要对分发方式进行设计,来保障安全的存储。
此外在存储期间,可以通过相关的评分系统对节点质量进行评分,保证除了共识节点之外提供分布式存储服务的节点的质量。
3.文件如何不被存储提供方「偷走」
首先,数据是在用户本地机器上的客户端加密的,这样确保了上传之前的文件已经被加密,存储方是无法看到用户数据的。其次,在冗余存储的部分,每个存储提供方的通信目录中不会包含所有的文件碎片存储方,这样也一定程度上防止了共谋的可能性。
在解决了以上这三个问题后,该系统就能够被称为一个安全的分布式存储系统,可以提供分布式存储服务了。
在整个过程中,设计一个合理的分布式存储可取回校验方式是比较大的挑战,它的要求不只是通过问询达到返回结果的可靠,还要通过特殊方式预防重放攻击试探以及攻击,提高存储系统的可用性。
05
提供分布式存储的区块链系统的设计和实现
提供分布式存储的区块链系统主要面向两个对象,一是节点,通过提供存储参与分布式系统的建立,其参与的程度、节点质量的好坏主要反映在提供的存储上;二是使用者,通过智能合约获得存储的状态,并进行账户的收转账。
那么需要建立一个体系,在这个体系中,节点的存储质量决定了节点能否获得更优的收益,使用者可以在智能合约中使用存储的状态。该系统的特殊设计主要在两个部分,一个在技术部分,主要是解决使用功能性的问题;一个在治理部分,主要解决分布式服务供给方质量的问题。
从技术的角度,支持分布式存储的区块链系统需要的是对存储状态的更新,以及方便使用,所以需要在原有的虚拟机基础上,增添相应的操作码以及对应的状态逻辑,保证联动时不会造成状态泄露。
从治理的角度,由于使用了存储这种低功耗的资源,那么在共识上需要对PoS做修改,使用混合共识,节点除了抵押链上资产,还需要对存储系统进行相关的贡献才能出块。
这样做的好处是:由于存储本身无法产生特别大的收益,那么通过出块收益来补贴提供较大贡献的节点,能够激励节点提供稳定的存储。如果节点达不到出块标准,也可以通过共建出块节点的方式在链内部参与到节点建设中,保证可信任的抵押出块节点能够在出块的列表内。
除了上述两个角度之外,从经济模型的角度,需要在每一次存储量提升之后,通过帕累托分布对Staking条件进行微调,保证整个系统的抵押分布不会停滞在某一个存储阶段。一系列这样的调整和更新才能保证整个存储生态的正向发展。
06
数据的使用
支持分布式存储的区块链系统能够提供安全的方法存储并使用每个人生产的宝贵数据,并保证用户对其数据的所有权。只有在此基础上,才能进而通过工具,让用户获得这些属于他的数据的价值。
要实现数据的价值,涉及到如何对存储后的数据进行计算,以及将计算结果进行充分利用等等问题,需要借助于可信计算和更前沿的技术来实现,这是一个需要单独探讨的话题,本文将不做具体讨论。
在现阶段,系统中的数据可通过如下两种方法被使用:
1、智能合约。可记录状态的存储可以丰富智能合约的广度,智能合约在得到数据的支持后,能够产生新的用途,出现新的类型,进而可能带来全新的生态。
2、跨链。该系统可为其他的区块链系统提供分布式的数据存储服务,也可以对其他区块链的链上状态进行相关的再处理。
通过提供分布式存储的区块链系统,数据制造者可以维护自己生产的数据,这是一个开始,更进一步,数据制造者可以通过不同的的方法和渠道来实现数据的收益,与此同时,我们也可以通过这样的方式从机器人手中分享数据。
一个拥有自己数据的所有权,并能够实现数据自由交易的未来,是一个值得为之努力的更好的未来。