深度研究可以分析去中心化存储项目一定会存在的问题。
FileCoin是一种协议代币。
- 区块被存储数据的矿工所挖
- 区块链运行在“时空证明”的机制上
- FileCoin不依赖于单个存储服务商
- 提供存储服务和数据检索服务
FileCoin的使用方式
- 用户为数据存储和检索支付代币
- 存储矿工通过提供存储空间赚取代币
- 检索矿工通过提供数据服务赚取代币
FileCoin协议的四个组件
- 去中心化存储网络
- 新型的存储证明
- 可验证市场
- 有效的工作量证明
协议概述
构建于区块链拥有原生代币的去中心化存储网络
网络的构建需要有协议的存在,这样才能完成数据的传输。中心化存储模式中,需要依赖HTTP协议通过存储市场和检索市场来完成客户请求
现在所有的人都在想着挖IPFS的代币来赚钱,可是谁会来存储数据呢?这有点像币乎的羊毛党。
时空证明和复制证明来确保数据被正确存储
矿工参与到新区块的锻造,矿工对区块链的影响与他们在当前网络中的存储使用量成正比
去中心化存储网络
- 多个独立存储提供商提供存储
- 自我协调的提供存储数据和检索数据服务
- 拥有不同的协调策略
DSN方案包括:PUT,GET,MANAGE。DSN方案(Π)必须保证数据的完整性和可恢复性。
管理故障定义为管理协议的参与者引起的拜占庭故障。一个DSN方案依赖于它的基础管理协议的故障容错。管理故障会影响系统的活跃度和安全性。
DSN的两个属性:数据完整性和可恢复性。
数据完整性:在存储数据之后,你将获得一个key,通过key可以提取你的数据,在提取的过程中,其他人不可能实现对数据的篡改。
可恢复性:可以通过key恢复你存储的数据。
DSN的其他属性:公开可验证性、可审查性、激励兼容性。
公开可验证性:系统中会有专门负责验证数据有效性的验证者,这些验证者会从数据存储服务商手中获得一份证明,通过这份证明可以判断数据存储服务商存储的数据是否完整、有效。
可审查性:审查是否在某个时间存储过数据。
激励兼容性:有效完成存储和检索服务的节点可以获得奖励,对系统有害的节点将受到惩罚。
复制证明与时空证明。
通过复制证明和时空证明,可以让存储数据的人相信自己的数据已经被存储。
为什么需要设置复制证明和时空证明?
在数据存储中,有一种方案叫存储证明[POS],可以让存储数据的客户做两件事情:
- 随时验证自己的数据是否依然被存储
- 随时验证自己数据的完整性
但是上面的方案无法避免以下三种攻击:
女巫攻击:作恶矿工可能通过创建多个女巫身份假装物理存储很多副本(从中获取奖励),但实际上只存储一次。
外包攻击:依赖于可以快速从其他存储提供商获取数据,作恶矿工可能承诺能存储比他们实际物理存储容量更大的数据。
代攻击:作恶矿工可能宣称要存储大量的数据,相反的他们使用小程序有效地生成请求。如果这个小程序小于所宣称要存储的数据,则作恶矿工在Filecoin获取区块奖励的可能性增加了,因为这是和矿工当前使用量成正比的。
代攻击就是为了获得更多的奖励,欺骗系统说自己存储了大量数据在系统中,但实际上存储的数据要少很多。例如攻击者告诉系统存储了100G的数据在系统中,但是实际只存储了1G数据,这样挖矿就可以用很少的存储空间,获得更多的奖励。
复制证明重点在于存储副本,时空证明重点在于证明是否有存储数据。
FileCoin DSN的构建。
环境:参与者+网络N+账本+市场
参与者分为:客户+存储矿工+检索矿工
- 客户在网络中进行数据存储和检索时,需要向矿工支付费用。
- 存储矿工为网络提供数据存储。存储矿工通过“时空证明”来证明已经存储好了数据。作为存储矿工需要提交抵押品,当存储矿工作出有害系统的事情时,抵押品将会被没收或者部分没收。
- 检索矿工为网络提供数据检索服务。检索矿工可以直接从客户或者从检索市场赚取收益。
网络N:运行FileCoin全节点的用户细化为一个抽象实体:网络。这些网络将作为运行管理协议的中介。这些众多的网络整体被称作网络N。
账本:FileCoin的协议适用于基于账本的货币。
市场:存储市场和检索市场。这是两个去中心化的交易市场,当客户提交的订单与矿工提交的订单相匹配的时候,网络中的管理协议将帮助双方自动完成交易。
数据结构:碎片+扇区+分配表+订单+订单簿+抵押
- 碎片:假设你是客户,你在网络中存储的数据将会被分成不同的片段。这些片段在系统中被称作碎片。
- 扇区:矿工向系统提供的磁盘空间。
- 分配表:可以跟踪碎片和其分配的扇区。你的数据是在哪里存储的,可以通过分配表快速的找到,这就像是一个关系映射表。
- 订单:客户为了存储和检索数据提交的请求,矿工们为了提供服务提交的报价请求。
- 订单簿:订单的集合。
- 抵押:为了保证服务可靠可信,矿工必须在系统中提供抵押品。
协议:客户生命周期+挖矿周期+网络周期
- 客户生命周期:存储数据+检索数据。存储数据时,客户可以选择存储数据的物理副本的数量,副本越多存储的安全性越高。检索数据时,当检索市场有满足要求的订单,客户会收到来自矿工的碎片,之后双方进行签名,提交到区块链,进行交易确认。
- 挖矿周期
存储矿工
抵押->接收订单->密封->证明
检索矿工
收到订单->发送
- 网络周期:分配
当出现问题时,系统会尝试修复或者重新分配。当矿工的证明丢失或者失效将会扣除抵押品;大量证明丢失或失效,会认定订单失效,网络会重新创建订单;如果接受该订单的所有数据存储矿工都出现错误,则认定数据丢失,订单取消,客户将收到退款。
担保和要求
完整性:客户存储完数据之后,会获得一个哈希值,我们可以把它看作是一把钥匙,通过这把钥匙我们可以找到自己的数据,当从矿工那里收到返回来的数据时,也可以通过这把钥匙来验证数据的完整性。
可恢复性:当你在FileCoin中存储数据时,你的数据将会拥有多个副本。如果有矿工下线或者消失,会有部分副本丢失,但是依然在网络中的副本,将会保证你的数据依然可以完整的恢复。
公开可验证和可审核性:当需要审核存储的数据是否依然有效时,你可以单独的完成审核过程,并不需要下载你的数据。审核依赖的是矿工提交的存储证明,这些证明存储在区块链中,所有操作痕迹都公开可查。
激励兼容性:矿工按照协议完成存储和检索将会得到奖励,如果做出对系统有害的事情,将会受到惩罚。
保密性:当你存储的数据需要实现隐私时,必须自己在存储之前进行加密。
FileCoin的存储和检索市场
- 验证市场
为什么需要验证市场?
去中心化的参与者必须能够在买家和卖家间验证交易。去中心化模式下,没有人来管理交易市场,订单的匹配、结算、有效性,通过验证市场可以自动完成,并得到保障。
- 存储市场
需求
链式订单簿:订单会被添加到FileCoin区块链。这样做有两个好处:
1.存储矿工的订单全部公开,最便宜的订单会被更多的人知道,客户可以做出最好的选择;
2.客户订单提交给网络,当客户的要求被满足的时候,市场会根据新的交易价格,做出新的调整。
参与者投入资源:存储矿工需要提供与其上报的存储容量相对应的抵押品,在矿工做出违反系统规则的时候,会扣除抵押品作为惩罚。客户需要提前充值一定数量的资金,从而保证在结算时的资金。
故障自处理:订单会在确认矿工提供的证明有效的情况下,完成订单的结算。
数据结构
put订单:有三种类型的订单:存储矿工创建询价订单,客户创建出价订单,当双发达成一致时,共同创建交易订单。
put订单簿:存储市场的订单簿是目前有效和开放的询价、出价、交易订单的集合。
存储市场协议
订单匹配:客户和存储矿工提交交易订单到订单簿,完成匹配之后,客户将数据碎片发送给矿工,双方完成交易之后,将交易签名并提交到订单簿。
结算:存储矿工的扇区用完之后,要进行密封,后续会不间断的向网络提交存储证明,证明存储的数据依然存在并有效,网络会根据存储证明进行验证或者故障修复。
检索市场
检索市场允许客户端请求检索特定的数据,由检索矿工提供这个服务。
链下订单簿:客户为了检索所提供的订单,会采用非区块链的方式来实现,因为区块链的使用会导致检索瓶颈的出现。
无信任方检索:在没有信任的环境中,客户想要完成数据的检索,矿工想要收到付款,是不太可能的,因为可能出现欺诈行为。为了解决这个问题,当客户检索到自己想要的数据时,矿工会以碎片的形式依次将完整的数据发送给客户,客户会在收到碎片的过程中逐步的向矿工付款,当中途发生意外时,交易将会被终止。
支付通道:检索矿工只有在收到付款的时候,才开始向客户发送数据,但是区块链上的支付会产生瓶颈,所以快速有效的链下支付是唯一的选择。当出现纠纷时,可能会用到区块链。
数据结构
获取订单:客户端创建的出价单,检索矿工创建的询价单,存储矿工和客户端达成的交易订单。
获取订单簿:是有效的和公开出价订单、询价订单、交易订单的集合。每个用户的订单视图是不一样的,因为每个用户只关心自己想要的数据。
检索市场协议:订单匹配+结算
订单匹配:客户端和检索矿工通过广播的方式,将订单提交给订单簿,
结算:检索矿工在向客户逐步发送碎片的时候,每一个碎片的成功交付,检索矿工都会收到一个收据,矿工向区块链出示收据,从而获得奖励。
有用工作共识
常见的共识机制,例如pow,存在着大量的能量浪费,所做的工作并不能重复使用。有用的工作共识旨在解决计算浪费,将之前所做工作进行重复使用。
FileCoin共识
公开:网络中当前正在使用的存储总量是公开的。
可公开验证:每个存储任务,矿工都需要生成“时空证明”,从而可以验证其是否可以持续提供服务。
变量:矿工可以增加存储空间或者补充的抵押品来增加自己的功率。
功率会计和时空证明
全节点验证:全节点可以验证矿工生成的每一个时空证明。
简单存储验证
使用功率达成共识
预计将会在现有的权益证明共识机制上进行扩展,让FileCoin的共识策略更加的多样化,权益证明共识机制中的权益将会替换为分配的存储。FileCoin中的共识机制暂时可以叫做预期共识,每个矿工在选举中获胜的概率和他们提供的存储成正比例。
FileCoin智能合约
FileCoin中增加了智能合约来支持特定的操作。
与其他系统集成