背景
随着信息行业突飞猛进地发展,世界越来越数字化,互联网上的数据呈爆发式增长。全球每天会产出超过500亿EB的数据,且数据量大约每两年都会翻一番。
随着互联网通过5G技术渗入到汽车、智能家居等场景,用户产生的数据越来越多,由此带来的隐患也逐渐增加。
由于云存储的盛行以及大型互联网公司垄断地位的加固,大量用户的数据聚集在中心化的数据中心内。在这种场景下,用户的数据可以被人工智能算法分析,从而利用用户数据获取利益,而且由于数据的中心化,用户的隐私数据存在被审查以及泄露的风险。此外,数据的可用性也是问题,此前360网盘、新浪微盘等云盘提供方相继停止提供服务,导致大量用户数据丢失。
通过结合区块链,可以给互联网上的数据一个新的去处,作为一种新的可选方案安全、去中心化地存储用户数据。
如果一个流程可以在数字世界被快速验证,那么就可以结合区块链这个信任机器来进行处理。因为数据存储是原生于数字世界的,数据存储与区块链的结合不需要通过预言机,只需要设计合适的验证机制以及经济激励,就可以创造一种原生于互联网的存储协议。
并且互联网上存在许多闲置的存储资源,通过构建一种原生于互联网的存储激励协议将这些分散闲置的存储资源整合起来,在提升资源利用率的同时,可以提供廉价的存储服务,同时摆脱中心化服务商的限制。
目前有多个项目致力于将存储与区块链结合,包括Filecoin、Arweave以及Storj等,都在通过各种设计和理念努力实现去中心化的存储网络,Memo也将以实现真正安全可用的区块链存储系统为己任,以区块链技术赋能实体产业为目标。
如何验证数据存储
相较于一次性的计算服务,存储更具有持续性,所以需要寻找一个可靠的验证机制和经济机制来确保数据一直被存储,目前已有的项目提出了各种应对的机制。
Filecoin
Filecoin是区块链存储领域最著名的项目,为了确保存储矿工存储数据,同时抵抗女巫攻击和生成攻击等,Filecoin提出了复制证明(Proof Replication)与时空证明(Proof of Space of Time)两种机制,用于保护网络安全以及数据安全。
复制证明的逻辑是,矿工在收到用户的数据后,首先将数据进行延迟编码得到副本数据,然后生成一个零知识证明来保证编码过程的正确性。通过这样一次编码,矿工将无法在存储一份数据的同时声称自己存储了多份。
在复制证明过程后,Filecoin还使用时空证明机制,保证矿工一直存储数据,矿工需要定期为副本生成默克尔证明,并用零知识证明压缩后提交到链上,如果矿工丢失数据,从而没有及时生成证明或者生成了错误的证明,协议将会扣除矿工抵押的代币。通过这个机制,Filecoin强制所有矿工都正确存储数据。
Filecoin的方案去中心化非常明显,但是在数据的可用性以及耐久性上都有较大妥协。
复制证明使用的延迟编码为了安全考虑,使得完整的编码过程将耗费几小时,也就是说,用户在将数据传输给矿工后,需要几小时后才能保证数据被区块链验证,而且在解码数据时,同样需要一两个小时,这样的延迟使得Filecoin的存储服务难以使用,并且Filecoin没有设计任何数据修复措施,数据的耐用性无法保证,所以目前Filecoin的存储算力几乎全部为随机数据,而不是用户真实存储的数据。
Arweave
Arweave另辟蹊径地提出了数据永存的概念,即用户将数据上传到Arweave区块链上以后,数据将依据Arweave的设计永久存储,Arweave通过BlockWeave结构的挖矿来激励矿工尽量多存储区块,在每次挖矿出块的同时,矿工需要引用一个回忆块,回忆块的高度通过当前区块的哈希模的高度得到,从而保证了回忆块的随机性和不可预测性。通过这种方式,矿工会尽力多存储数据,以确保自己可以获得出块奖励。Arweave不采用密码学来验证数据,而通过经济激励的方式鼓励多存数据的思路是挺创新的。
由于Arweave的设计依然没有突破区块链本身的局限,所以在扩展性上存在很大的不确定性。
首先,当BlockWeave占用的存储空间超出了一般机器的存储空间上限时,如1PB,全量存储的矿池模式将取得极大优势,普通机器仅作为矿机接入矿池,这会使得副本率大大降低。其次,随着区块高度的增加,每个区块被抽中的概率越来越低,如果途中有某个区块丢失但被抽中,BlockWeave的追加将停滞。
Storj
相比于其他的存储项目,Storj并不把去中心化当成第一目标,而是致力于提高数据存储的耐用性以及服务质量,在Storj的设计中,卫星(Satellite)节点作为完全可信的中心化节点管理数据,同时验证存储节点是否正确存储数据。由于Storj加入了中心化节点,大大降低了设计难度,从而无需复杂的验证机制,仅使用简单的私有验证即可。Storj的简化设计提高了存储的使用体验,同时能存储的相对可靠。
Storj的简化设计带来了一些好处,但中心化的卫星节点也带来了安全隐患以及扩展性限制,同时由于采用了私有验证,所以需要用户在上传数据时将所有的上传流量都先从卫星节点转发,由卫星节点处理数据,这浪费了网络流量并为系统留下了上传的性能瓶颈。
MEMO
MEMO从一开始考虑存储证明时,就致力于设计一种可公开验证方案,同时验证数据的通信开销应尽量降低,而且不应生成证明和验证证明的计算成本也应降低。为了满足以上条件,Memo团队设计了一种数据完整性验证方案,对用户对数据进行分片,并给分片编号,同时对每个分片生成验证标签,然后将分片数据与标签发送给存储节点。
在每次验证数据时,只需要指明分片验证编号,比如100-200号分片,存储节点将对应分片与标签读取出来,并生成一个几百字节的证明,通过这几百字节的证明即可证明全部分片的正确存储,再结合概率抽查,可以实现用几百字节的证明来验证几十TB的数据。并且该验证可以完全由区块链来进行,从而实现完全的去中心化。
MEMO数据完整性证明原理
MEMO的数据完整性方案,实现了公开验证,任何拥有该用户公钥的人都可以验证证明的正确性,由此 MEMO 不需要如Storj一样,通过可信节点转发流量。同时,除去数据读取时间,生成证明可以在几秒内完成,验证证明可以在一秒内完成,这大大降低了节点的计算负担,同时,通过证明压缩,可以将证明的通信开销降至常数级。利用该方案,Memo可以在分散式网络中实现可信确权的数据存储,这将提高闲置设备的利用率,为用户提供更廉价的存储解决方案,同时避免数据受中心化机构操纵。从这个层面Memo就可以很好的解决互联网数据存储中被中心化服务商限制的问题。
MEMO生态
基于MEMO可公开验证性的数据完整性方案,为了充分利用区块链的安全可靠特性,并避免其成为整个系统的性能与成本瓶颈,在Memo 中,只有那些存储系统中最为关键的数据,如角色(账户)信息、智能合约信息以及费用结算等,才会被保存到区块链的主链中。而其他的数据,如数据位置信息、用户数据等,则被存放在性价比更高的边缘存储设备中。同时,结合RAFI等数据可靠性的设计将被用于保障边缘存储设备中的数据安全性与可靠性,在高性价比的前提下,提供一个高耐久性的存储系统。
后续 MEMO 将与多方开展合作,构建并完善 MEMO 生态。首先立足于服务区块链生态已有的存储需求,使得区块链世界在基础设施层进一步去中心化,同时逐步推进企业与个人的需求对接,通过 MEMO 重塑企业与用户之间的关系。