**
XFS——新一代分布式文件系统
Star Labs(星际实验室)
**
摘要:
本篇文章主要阐述了 XFS(新一代分布式文件系统)的概念以及如何实现。XFS运用现有理论依据,并对其不断进行实践并改进优化使得利用区块链技术打造新一代分布式存储系统。完善的通证代币经济体系以及激励措施让数据资源价值化。XFS 项目内置了文件切片加密、冗余多副本、动态存储等相关底层设计,目标是成为全球最大的分布式云盘和边缘云存储基础设施,面向未来的物联网和5G时代提供分布式的边缘云服务。
引言
去中心化存储产生的背景由 WEB 3.0 提倡 “以数据为中心,数据价值化和隐私保护”,而去中心化存储在其中扮演着至关重要的角色,其中数据安全和隐私保护对应数据冗余存储和备份功能,而数据价值化对应的是文件共享的价值传递。数据安全方面,相比较于个人,企业往往更加重视公司数据的安全和隐私保护。企业存储在云端的数据往往是公司的机密,很多数据一旦被泄露很可能将公司在市场竞争上至于不利的地位,传统的公司资料实物存储方法对于大型企业来说早已不足以支撑海量数据存储的需求;数据价值共享方面,越来越多的人希望共享资源的同时获得相应的交换价值。
虽然云存储市场的规模和用户在飞速增长,但是中心化存储市场却具有四大缺陷:无法保障版权、无法保障数据安全、随时面临服务商停止运营的风险、数据缺乏价值化。不论是由第三方中心化存储,抑或者是公司本身存储用户的数据,从法律角度上用户对他们泄露数据信息不具有期待可能性。尤其是在数据为王的商业模式时代,精准数据将对各行各业的重构,控制数据来源或者以比竞争对手更低的成本获取数据的企业,其竞争实力将会显著高于其竞争对手。所以,竞争对手往往会想方设法的获取数据,而将用户数据泄露或出售的行为往往可以让数据存储服务商获得巨大的利益。
去中心化存储基于区块链技术,通过非中心化的架构结合中心化与去中心化各自的优势在效益与公平之间探索平衡点,使存储的安全性提升;同时,通过区块链外存储和 API 接口的中心化处理,使得存储网络的 TPS 在现有公有链和联盟链的基础上得到大幅改善;并且,通过对种子节点或文件上传方实施激励措施,让其数据价值化。
**
一、概述
**
XFS(X File System,新一代文件系统)是一个分布式云存储平台,意旨在于利用 P2P(Peerto Peer)网络协议以及区块链体系构建新一代分布式文件系统,为个人用户以及企业级领域提供更安全、更高效的存储服务。XFS 其本身并不存储客户的数据资产,只是记录存储各方形成的存储合约。
为解决集中式存储的缺陷,XFS 采用 P2P 网络协议将客户(Client)与存储提供(Provider)相互连接。将存储提供方的磁盘空间分为若干个固定大小单位的存储区域称为:扇区(Sector),用以为全网提供存储服务。客户与存储提供方通过签订合约的形式,并定期提交其持续存储的证明,直至合约结束。若此期间无法提交其存储证明,将会对存储提供方进行惩罚。提供的存储证明必须是全网公开可验证的,由区块链共识机制来自动执行其存储合约。对于客户数据的安全及隐私性,XFS 将会对客户存储数据进行分片加密处理,并且会保留多份冗余副本分散在多个存储空间中。使用纠删码(Erasure Codes)实现高可用性,而不会出现过多的冗余数据,减少资源浪费。
**
二、文件分片协议
**
我们定义了文件分片协议,将文件切分为碎片形式并且分散在 P2P 网络中的不同存储提供方所提供的存储扇区中,这样可以提高数据安全性以及降低网络传输难度。我们将标准化的碎片大小定义为字节倍数,如 8MB 或 32 MB。
采用数据统一的冗余编码,将数据拆分为 N 个固定大小的文件碎片,其中只要有任意 M个碎片即可恢复出数据,然后将这 N 个碎片分别存储到 N 个存储节点中,每个保存一个碎片,这样只要不同时有 N-M+1 个节点失效就能保证数据完整不丢失。
**
三、存储合约
**
存储合约是存储提供商与其客户之间的协议。存储合约的核心是文件的 Merkle 根哈希。为了构造这个散列,文件被分割成大小不变的段并散列到 Merkle 树中。根散列以及文件的总大小可用于验证存储证据。
存储合约还规定了持续时间,挑战频率和支付参数,包括有效证明的奖励,无效或缺少证据的奖励以及可以错过的最大证明数量。挑战频率指定必须提交存储证明,并创建离散挑战窗口,在此期间主机必须提交存储证明(每个窗口一个证明)。在挑战窗口中输入有效的证明会触发对“有效证明”地址的自动付款。如果在挑战窗口结束时没有提交有效的证明,加密货币将被发送到“错过的证明”地址。合约定义了可以错过的最大证明数量,如果超过这个数字,合同变得无效。
如果合约在合约期限结束时仍然有效,则合约成功终止,并将剩余的加密币奖励发送到有效的证明地址。相反,如果在持续时间过去之前合约资金已经用完,或者超过了最大错过证明数量,合约就不会终止,剩余的加密货币将被发送到错过的证明地址。
**
四、存储证明
**
为保证存储在网络上的分片的完整性及可用性,存储提供方必须能用一个算法证明持有其数据分片。在此过程中,由存储提供方提供其存储证明让区块链网络通过智能合约自动执行数据验证。为了实现一个受信任的数据存储网络,我们将必须解决并抵抗去中心化系统中常见的三种:
攻击:女巫攻击(Sybil attack)、外包攻击(Outsourcing attacks)和生成攻击(Generation attacks)。
a. 女巫攻击:多份数据使用同一物理存储
b. 外包攻击:谎报其他人的存储数据是自己的
c. 生成攻击:临时生成伪造的可校验的数据
我们将采用 FIX 所提倡的复制证明( PoRep )、时空证明(PoSt),并对其进行优化改进
1、复制证明的优化方案
当用户与存储提供方建立需求关系并将数据填充至由存储提供方所提供的存储空间中,将会对其进行密封操作。根据 Merkle Tree(默克尔树) 结构特点,我们可以将存储空间划分为固定大小的扇区,将存储空间扇区切分为固定大小(32Byte)的节点数据作为树形结构的叶子节点。
每个节点将被计算出一个散列值(32Byte),节点本身也将散列值作为加密种子来进行编解码。这些节点的散列值按照 DRG(Depth Robust Graph)建立连接关系。数据块的散列关系将构成 Merkle Tree(默克尔树)结构。这样是为了在进行挑战与检验的时候,无需针对所有数据块解码,即可以快速验证,也更好地抵御了攻击性。对于每个数据块的单元加密,将使用Zcash 中所用的新型 zk-SNARK 椭圆曲线的构造加密算法来进行单元编码与解码。
整个 PoRep 的计算过程分为若干层每一层的 DRG 关系的箭头方向是互斥的,上一层向右,下一层就向左,因此得名 ZigZag(Z 字型),数据解码过程中,每一层之间互不依赖,即可并行执行,相对于串行编码要更为快速。
2、时空证明的优化方案
时空证明(PoSt)可以理解为矿工一定时间内持续地生成复制证明和接受挑战和验证的过程,并通过这个过程,更新全网存储算力。
挑战者在 PoRep 循环重复执行的 i 轮,输入一个随机挑战参数 c,之后,挑战参数 C 会被链式递归计算,即上一次的输出作为下一次的输入,直到 T 时间内,最后一次的结果作为PoSt 的证明,接受反向验证。通过一系列的存储证明,网络能确保矿工在这个时段内都是能检索的,并没有在一次挑战后就丢弃或者向其他节点临时请求原文件。这样也比每生成一次证明就发送给验证者一次要好,因为它需要的网络交互更少。
**
五、数据安全及隐私
**
对于去中心化存储来说,数据加密就成为存储个人和企业数据的必备要求。因为去中心化存储的节点本身不可被信任的,此外,源代码是开放的,而且每个存储节点都可以自由访问。如果不对数据进行加密,那么去中心化储存只适合存储网页这种公开数据,不适合存储涉及隐私/商业秘密的个人或企业数据。所以通用的区块链存储都必须做数据加密,而且是“零知识” 的数据加密,即除了数据所有者或其授权者外,其他任何人(包括存储节点的拥有者、系统的设计者和开发者)对该数据都一无所知,即使作恶也无法窥视数据。
1. 用户群组管理
我们将定义类似于 UNIX 操作系统的用户权限机制,构建用户群组关系。用户可以创建并隶属于多个群组。每个群组在创建时同时生成该群组对应的公私钥对用于群组中的文件共享。群组信息和群组公钥保存在区块链中,群组私钥保存在群组创建者的代理应用层中,群组成员信息以分布式形式存储在 DHT 网络中以便于查找。
2. 权限机制
数据的访问权限是通过密钥来控制的。采用一文一密的方式,数据用随机生成的对称密钥加密的(随机密钥的作用是保证该密钥没有其它任何人知道),该密钥称为该数据的存储密钥。对该数据有访问权限的人用自己的加密公钥来加密其存储密钥,然后保存在系统特殊区域。以后该用户需要访问该数据时,用自己的加密私钥解密出存储密钥,就可以解密该数据得到数据明文了。对于共享给群组的数据也是类似的机制,只是使用群组的密钥代替前述的用户密钥,属于该群组的用户是可以拿到该群组的密钥的(方法是在一个用户加入一个群组时以用户的加密公钥加密群组的加密私钥,然后保存起来,以后该用户可以用自己的加密私钥解密出群组加密私钥,就可以访问所有该群组有访问权限的数据了)。
**六、代币通证与发行
**
历史已经证明,如果没有好的激励机制,即便最尖端的技术也不能保证它的成功。为了让XFS 网络能被更广发和有效使用,代币机制的激励方案被提出,以便让所有投资者可以公平合理地挣取这些代币。
我们将以 FIX(FIXCoin)作为全网代币通证,可以作为流通市场的数字货币,也是 XFS 体系内各种不同资源之间互相兑换的桥梁。
1. 初始发行
FIX 将初始发行 3,000,000,000(30 亿),发行分配计划如下:
以 FIX 的 ERC20 代币上第一个交易所交易记为代币上市日。在 XFS 主网上线前,FIX将会用以太坊 ERC20 智能合约的方式上线交易,待 XFS 主网上线再通过映射方式将 FIX的 ERC20 代币映射到主网。
2. XFS 经济模型
资源通证的发行数量与矿工贡献的资源数量以及用户实际存储的数据总量相关。具体来说,对 XFS 的每个新矿工,FIX 新发行少量的存储资源通证购买其存储空间作为库存,当该空间被最终用户购买并保存数据后,系统又新发行资源通证继续向该矿工购买空间,直到该矿工的所有空间都存满了数据。之所以要设计一定的系统库存,是因为在主链刚启动的时候,还没有用户购买存储空间等资源,矿工手里就没有资源通证,这时在交易市场上就没有资源通证流通,用户也就不能用FIX 来换取资源通证。
为了打破这个怪圈,FIX 采取系统采购部分库存的方式解决该问题,即系统向所有矿工预先采购部分存储空间等资源作为向用户出售的库存(库存大小由开源基金会的理事成员组确定),这样矿工手里就有了部分资源通证,用户就能用 FIX 换到资源通证了,整个经济体系就运转起来了。 即便加上库存,FIX 发行的资源通证数量也是低于矿工所拥有的资源总量的,这样可以保证用户以资源通证永远可以买到相应的存储空间。用户采用资源通证购买存储计算服务的价格是由系统来统一定价的,系统根据该服务需要消耗的资源数量加上适当的税收实时计算该价格。
以持久化存储服务为例,其单位价格为 ( 1 +税率) / (挖矿难度 * 平均去重系数),由于挖矿难度是逐年上升的,去重系数则是随着用户数和数据量的增加而逐渐增大的,该机制保证了价格的相对稳定性,相同数量的资源通证可以买到的存储空间是稳定上升的(即单位存储空间的价格是稳定下降的),有利于用户对采购价格有稳定的预期,有利于用户单位的预算管理,同时社区还能收取适当的税收保证社区有足够的资源继续发展。其中税率是由开源基金会的理事成员组来规定的,比例将远小于用户所获得的收益。通过以上机制设计,既能让矿工不断挣钱,又能让用户以稳定低廉的价格采购存储和计算服务。从经济模型来说,XFS 存储提供了远超中心化存储的品质(数据可靠性、容灾、抗 DDos),成本还大大降低,从而构成了矿工和用户赚取的利润空间来源。
七、XFS 基金会
XFS 是 Star Labs 的产品。 Star Labs 是一家立志于改变传统互联网数据交互方式,让数据实现真正价值化,并且不断探索互联网底层技术革新为推动世界互联网发展的公司。我们将成立开源基金会,并且希望让更多的参与者加入我们能够一起共同前行。
八、发展及规划
目前,XFS 已经完成了底层代码库的开发。API 正在最后定稿,以保证当前应用开发者更方便使用和开发示范程序。本网络已准备进入大范围测试阶段,XFS 期望在宣布众售的同时启动该测试。
九、风险及免责声明
1、本文件是 XFS 项目阐述的概念性文件,并非出售或者征集招标相关公司的股份、证券或其他受管制产品。
2、根据本文件不能作为招股说明书或其他任何形式的标准化合约文件,也并不是构成任何司法管辖区内的证券或其他任何受管制产品的劝告或征集的投资建议。
3、本文件不能成为任何销售、订阅或邀请其他人去购买和订阅任何证券,以及基于此基础上形式的联系、合约或承诺。
4、 在本文件中所呈现的任何信息或者分析,都不构成任何参与代币投资决定的建议,并且不会做出任何具有倾向性的具体推荐。
5、 XFS 基金会不承担任何参与本项目造成的直接或间接的资产损失。
6、 这份文件可能随时会被修改或者置换,然而我们没有任何义务更新此版本白皮书,或者提供读者额外资讯的渠道。