分布式存储系统的设计和挑战

在厘清区块链系统和分布式存储系统这两种不同的分布式系统后,我们继续讨论提供分布式存储的区块链系统。提供分布式存储的区块链系统是一种不同于一般公链的区块链系统,它是分布式存储+特殊的区块链系统设计。

一个普通的区块链系统,其核心逻辑在于覆盖所有与账户有关的交易属性上,比如账户(公私钥)、账户转账(签名系统和共识系统)、以及条件状态下的转账(操作码和其对应的编码方式)。



而一个提供数据存储的区块链系统除了需要覆盖以上三个属性之外,由于其提供了存储属性,为了确保存储的状态也可以对条件进行制约,需要在其操作码上进行判断逻辑的添加,以保证将存储产生的状态、数据支持的状态都能在链上得到追溯,这就是我们需要对提供存储的区块链系统进行特殊设计的原因。

具体而言,区块链是需要对特定条件下的数据状态进行维护的,状态被保护起来才能保证交易正确之后状态相应改变了。那么如果分布式存储的状态没有通过相应的设计与区块链系统结合的话,就会出现自动执行的一个空隙,如果状态的空隙被人利用,就会出现存储过程状态提前被记录,或者滞后被记录,这会影响到区块链系统中账户余额,也就是产生了系统不安全的空间。



因此,提供分布式存储的区块链系统和一般公链系统不同的部分主要就体现在“状态”这部分,记录某些状态并作出账户上的反馈。

另外,存储相关状态也使得智能合约可以及时获取状态,从而可以设计出一个能够使用外部数据的子账本,这样在工程上能更好地流程化,也会降低用户由于预言机导致的链上资产损失的可能性。



分布式存储系统的设计主要解决三个问题:文件如何安全放入;文件如何安全存储;文件如何不被存储提供方“偷走”。

1、文件如何安全放入

把数据在客户端上传前做加密和分割,通过分布式存储的分发方式上传到存储提供方的空间内,通过相关的存储心跳检测来保证在用户需要数据的时候可以完整地取回。

在整个过程中,用户的数据在本地就已进行加密,用户不需要担心数据被偷窥以及存储提供方没有承担明文存储的风险。

2、文件如何安全存储

根据分布式存储的冗余存储原理,一般来说对应一个资源,如果要保证任意两个节点(N=2)掉线依旧不影响系统可用性,就需要维护2N+1个资源数,也就是说一份文件需要存给5台服务器。



按照12个节点为一个批次的设计,那么任意5个节点掉线是不影响可用性的,但是如果遭遇重放攻击,也就是加密后资源被不合理地配置,攻击节点是可以通过某些方法来阻止文件被安全召回的。这就需要对分发方式进行设计,来保障安全地存储。

此外在存储期间,可以通过相关的评分系统对节点质量进行评分,保证除了共识节点之外提供分布式存储服务的节点的质量。

3、文件如何不被存储提供方“偷走”

首先,数据是在用户本地机器上的客户端加密的,这样确保了上传之前的文件已经被加密,存储方是无法看到用户数据的。其次,在冗余存储的部分,每个存储提供方的通信目录中不会包含所有的文件碎片存储方,这样也在一定程度上防止了共谋的可能性。



在解决了以上三个问题后,该系统就能够被称为一个安全的分布式存储系统,可以提供分布式存储服务了。

在整个过程中,设计一个合理的分布式存储可取回校验方式是比较大的挑战,它的要求不只是通过问询达到返回结果的可靠,还要通过特殊方式预防重放攻击试探,提高存储系统的可用性。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();