2、去中心化存储网络的定义
本节中我们要介绍去中心化存储网络(DSN)的概念。 DSNs汇聚来自众多独立提供者的存储能力,并通过自我协调的方式为客户提供数据读取服务。这种协调是去中心化的,不需要中心式信任方的参与:协议通过协调和查证独立个体的操作来实现系统的安全运行。根据系统要求,DSNs可以调用不同的协调策略,包括拜占庭协议(Byzantine Agreement),流言算法(Gossip Protocols)或者CRDTs等。稍后在第四节中,我们会提供Filecoin DSN的具体架构。
【定义 一】 DSN方案Ⅱ是由存储提供商和客户运行的协议元组:
(Put; Get; Manage)
Put(data)→ key: 客户执行Put协议,在特定的身份密匙(key)下存储数据(data)。
Get(key) → data: 客户执行Get协议,读取利用密匙存储的数据。
Manage(): 各参与者形成的网络通过Manage协议进行协作,以此来控制可用的存储空间,审查存储提供者供应的服务,以及修复一些可能存在的错误。
Manage协议由存储提供商(通常也有客户参与)或者审查网络来运作1。DSN方案Π必须确保数据的完整性和可恢复性,以及在管理和存储中的容错性。这些概念会在后文中给出定义。
2.1 容错
2.1.1 管理错误
我们将存储故障定义为Manage协议参与者导致的拜占庭错误(Byzantine Faults)。基于Manage协议的DSN方案应当具有容错性。如果管理错误违反了容错性假设,可能会影响系统的活跃度和安全性。
举例来说,假设有一个DSN方案Π,它的Manage协议需要拜占庭协议(Byzantine Agreement,BA)来审核存储提供者。在这样一个协议中,网络从存储提供者那里收到存储证明,然后运行BA来验证这些有效性。假节点总数为n,BA最多可以容纳f个错误节点,那么我们的DSN可以容忍的故障节点数为f<n/2 个。如果违反这些假设,审计就要做出妥协。
2.1.2 存储错误
我们将存储错误定义为阻止用户获取数据的拜占庭错误。也就是说,这些错误可能是存储矿工丢失了一些数据片段,或是检索矿工在某些片段中停止了服务。一个成功的Put操作应当是(f,m)-tolerant的形式—如果输入的数据被储存在m个独立存储提供者处(总数为n),可以容纳的拜占庭提供者最多为f。f和m 两个参数取决于协议的实现。协议的设计者可以自行设定这两个参数,也可以把选择交给用户,将Put(data)扩展为Put(data, f, m)。在Get命令中,如果错误的存储提供者数量小于f,该命令就可被成功执行。
2.2 特性
这里我们价绍DSN方案应有的两种特性,以及Filecoin DSN所具备的其他特性。
2.2.1 数据完整性
该属性要求没有任何有限对手(bounded adversary) A可以使客户在Get操作结束的时候接受被更改或伪造的数据。
2.2.2 数据恢复性
该属性要求:给出的Π具有容错假设,如果有些数据已经被成功存储在Π中,并且存储提供者持续遵循协议,那么客户最终应当能够检索到数据。
2.2.3 其他特性
DSNs可以针对具体应用提供特定的其他属性。本文定义了Filecoin DSN所需要的三个关键属性:公开可验证性、可审查性和激励兼容性。