声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
边肖:记得要集中注意力。
来源:开源存储Filecoin
Filecoin:一个分散的存储网络协议实验室
2017年7月19日
目前,互联网正处于一场革命中:集中式的专有服务正在被去中心化的开放服务所取代;可信参与被可验证计算代替;弱位置寻址被灵活的内容寻址所取代;低效的整体服务被点对点算法市场取代;比特币、以太坊等区块链网络已经证明了去中心化交易账本的有效性。这些公共账簿处理复杂的智能合约应用,交易价值数百亿美元的加密资产。这些系统的参与者形成一个分散的网络,没有一个中央管理机构或可信方来提供有用的支付服务,这是大范围互联网开放服务的第一个例子。IPFS通过分散的网页证明了内容寻址的有效性,它为全球点对点网络提供了数十亿个文件。它解放了孤岛数据,网络分区生存,离线工作,审查系统路由,产生持久的数字信息。
Filecoin是一个去中心化的存储网络,使得云存储成为一个算法市场。这个市场运行在一个带有本地协议令牌(也称为Filecoin)的区块链中。区块链的矿工可以通过为客户提供存储来获得Filecoin。相反,客户可以通过花费Filecoin来雇佣矿工,从而存储或分发数据。和比特币一样,Filecoin的矿工们为了巨额回报而竞相挖块,但Filecoin的挖矿效率与存储的活跃度成正比,直接为客户提供有用的服务(不像比特币,挖矿只是为了维护区块链的共识)。这种方法为采矿者创造了一个强大的激励,让他们收集尽可能多的内存并出租给客户。Filecoin协议将这些聚合的资源编织成一个世界上任何人都可以依赖的自我修复存储网络。网络通过复制和分发内容来实现健壮性,同时自动检测和修复复制故障。客户可以选择复制参数来防范不同的威胁模型。该协议的云存储网络也提供了安全性,因为内容在客户端是端到端加密的,但存储提供商无法访问解密密钥。Filecoin的成就是IPFS的顶级激励层,可以为任何数据提供存储基础架构。它对于分散数据、构建和运行分布式应用程序以及实现智能契约非常有用。
这些作品包括以下部分:
介绍Filecoin网络,概述该协议并详细介绍几个组件。
形式化去中心化存储网络(DSN)的规划和内容,然后把Filecoin建成一个DSN。
本文介绍了一种新的存储证明方案,称为“复制证明”,它允许验证任何数据副本存储在物理上独立的存储器中。
本文介绍了一种新的有用的工作共识,它以顺序复制和存储作为激励措施。
形成一个可验证的市场,建立两个市场,存储市场和检索市场,分别管理如何从Filecoin写入和读取数据。
讨论用例、如何连接其他系统以及如何使用该协议。
注意:Filecoin是一项正在进行的工作。积极的研究正在进行中,本文的新版本将出现在https://filecoin.io
如果您有任何意见和建议,请通过research@filecoin.io联系我们
1.简介Filecoin是一个协议令牌。它的区块链运行在一种称为“时空证明”的新型证明机制上,它的数据块由存储数据的矿工挖掘。Filecoin协议通过由独立于单个协调器的独立存储提供者组成的网络提供数据存储服务和数据检索服务。其中包括:
存储和检索用户数据的支付令牌。
存储矿工通过提供存储空间来赚取代币。
通过提供数据服务取回矿工获得的代币。
1.1基本组件基本组件
Filecoin协议由四个新组件组成:
分散存储网络(DSN):我们提供了一个提供存储和检索服务的独立服务提供商网络的抽象(在第二部分)。然后,我们提出了Filecoin协议作为一个激励的,可审计和可验证的DSN结构(在第4节)。
新的存储证明:我们提出两种新的存储证明方案(在第三节):(1)复制证明允许存储提供者证明数据已经被复制到他自己唯一的专用物理存储设备上。执行唯一的物理复制使得验证者能够检查证明者是否不存在,并且重复地将多个数据副本复制到相同的存储空间。(2)“空间时间证明”允许存储提供商证明某些数据已在指定时间内存储。
可验证市场:我们将Filecoin网络运营的分散可验证市场中的存储请求和检索需求建模为两个订单(在第5节中)。验证市场确保当服务被正确提供时可以执行支付。我们引入了存储市场和检索市场,客户和矿工可以分别提交存储和检索订单。
工作证明:我们展示了如何基于“时间和空间的证明”构建一个有效的工作量证明,并将其应用于共识协议。矿工不需要花费不必要的计算来采矿,而是必须将数据存储在网络中。
1.2协议概述协议概述
Filecoin协议是一个基于区块链的分布式存储网络,采用本地令牌。客户花费令牌来存储和检索数据,而矿商通过提供存储和检索数据来赚取令牌。
FileNDSN通过两个可验证的市场处理存储请求和检索请求:存储市场和检索市场。与客户和矿工一起设定所需服务的价格和所提供服务的价格,并将他们的订单提交给市场。
该市场由Filecoin网络运营,采用“时空证明”和“复制证明”来确保矿工正确存储他们承诺存储的数据。
最后,矿工可以参与锻造新的区块链街区。矿工对下一个区块链的影响与他们当前在网络中的存储使用量成正比。
图1是使用术语定义后的Filecoin协议的示意图,图2显示了一个例子。
图1:1:Filecoin协议示意图
图2:2:Filecoin协议示例和用户矿机之间的交互
1.3论文组论文组织
本文的其余部分安排如下:在第2节中,我们介绍了理论DNS方案的定义和要求。在第3节中,我们定义并介绍了我们的“防复制”和“防时空”协议,Filecoin使用它们来加密验证数据是否按照订单的要求连续存储。第4节描述了Filecoin DSN的具体例子,描述了数据结构、协议和参与者之间的交互。第5节定义并描述了可验证市场的概念,以及存储市场和检索市场的实现。第6节描述了使用“时空证明”协议的演示,并评估了矿工对网络的贡献,这是扩展区块链区块和区块奖励所必需的。第7节简要介绍了Filecoin中的智能合约。第八部分是结论,对未来的工作进行了展望。
2.分散存储网络的定义
我们引入了分布式存储网络(DSN)方案的概念。DSNs集合了几个独立的存储提供商提供的存储,可以向客户提供自我协调的存储数据和数据检索服务。这种协调是去中心化的,不需要信任:通过协议的协调和个体参与者验证的执行,系统可以获得安全操作。根据系统的要求,DSN可以使用不同的协调策略,包括拜占庭协议、gossip协议或CRDTs。稍后,在第四节中,我们提供了一个Filecoin DSN的构造。
2.1定义
DSN方案()是由存储提供商和客户运行的一组协议:
(放置、获取、管理)
Put(data) key:客户端执行Put协议,将数据存储在惟一标识符密钥下。
Get(key) data:客户端执行Get协议来检索当前用密钥存储的数据。
Manage():网络的参与者通过管理协议进行协调:控制可用存储、审计提供商提供的服务以及修复可能的故障。管理协议由存储提供商运行,通常与客户或审计网络相结合(在管理协议依赖于区块链的情况下,我们认为矿工是审计员,因为他们验证和协调存储提供商)。
DSN方案()必须确保数据的完整性和可恢复性,并且能够容忍后面章节中定义的管理和存储故障。
2.1容错
2.1.1管理失败
我们将管理失败定义为由管理协议参与者引起的拜占庭失败。DSN方案取决于其基本管理协议的容错能力。违反容错的管理故障假设可能会影响系统的活性和安全性。
例如,考虑一个DSN方案,其中管理协议需要拜占庭容错来审计存储提供商。在该协议中,网络从存储提供商处收集存储证书,并运行拜占庭容错以就这些证书的有效性达成共识。拜占庭容错最多可以容忍总共n个节点中的f个故障节点。那么我们的DSN可以容忍f。
存储故障
我们将存储故障定位为拜占庭故障,它阻止了客户检索数据。例如,存储挖掘器丢失了数据,检索挖掘器停止了服务。一个成功的Put操作定义为(f,m),即它的输入数据存储在m个独立的存储提供者中(总共有n个),它最多可以容忍f个拜占庭存储提供者。参数f和m取决于协议的实现。协议设计者可以固定F和M,也可以留给用户选择。将Put(data)展开为Put(data,f,m)。如果失败的存储提供程序少于f个,则存储数据的获取操作成功。
例如,考虑一个简单的方案。其Put协议旨在为每个存储提供商存储所有数据。在这个方案中,m=n,f=m-1。但是总是f=m-1吗?不一定。有些方案可能采用可擦除设计,每个存储供应商存储特定部分的数据,这样M个存储供应商中的X个需要检索数据。在这个场景中,F=M-X。
2.2属性
我们描述了DSN方案所需的两个属性,然后提出了Filecoin DSN所需的其他属性。
数据完整性
这个属性要求在Get操作结束时,没有一个有限的对手A可以让客户接受更改或伪造的数据。
2.2定义
一个DSN方案()提供了数据完整性:如果任何一个成功的Put操作在key K下设置了数据D,那么在key K上的Get操作结束时,没有一个计算有限的对手A可以让客户接受D '其中D '不等于D。
可恢复性
该属性满足以下要求:考虑到我们对的容错假设,如果一些数据已经成功存储在中,并且存储提供者继续遵循该协议,那么客户最终可以检索到这些数据。
2.3 DSN方案()提供可恢复性:如果有任何成功的Put操作将数据D设置在键K下,并且有一个成功的客户Get操作通过键K检索数据(这个定义不能保证每个Get操作都会成功,如果每个Get操作最终都能返回数据,这个方案就是公平的)。
2.3其他属性
DSN可以提供特定于其应用的其他属性。我们定义了Filecoin DSN所需的三个关键属性:公共可验证性、可审计性和激励兼容性。
2.4定义
DSN方案()是公开可验证的:对于每个成功的Put操作,存储网络的供应商可以生成数据当前正在被存储的证据。这个存储证明必须说服任何只知道密钥但不能访问对应于密钥的数据的有效验证者。
2.5定义
DSN方案()是可审计的:如果它产生了可验证的操作轨迹,并且可以在将来检查数据是否在正确的时间被实际存储。
2.6定义
DSN方案()是激励相容的:如果存储提供商因成功提供存储和检索数据的服务而受到激励,或者因欺骗而受到惩罚。所有存储提供商的主导战略都是存储数据。
3.复制证明和时空证明。
在Filecoin协议中,存储提供商必须让他们的客户相信,客户支付的数据已经被他们存储了。在实践中,存储供应商将生成一个“存储证书”(POS)给区块链网络(或客户本人)进行验证。
本节介绍并总结了Filecoin中使用的“复制证明”n (PoRep)和“时空证明”(PoSt)的实现方案。
3.1动机
存储证明(POS)方案类似于数据持有验证(PDP)[2]和可恢复性证明(PoR)[3,4]方案。它允许将数据外包给服务器(即认证者P)的用户(即验证者V)检查服务器是否仍然重复存储数据D。用户可以用比下载数据更有效的方式来验证他外包给服务器的数据的完整性。服务器通过采样一组随机数据块,提交少量数据,生成拥有概率证明,作为用户的响应协议。
PDP和PoR方案只保证认证者在响应时有一些数据。在Filecoin中,我们需要更强的保护,防止邪恶矿工使用三种不提供存储但获得奖励的攻击:Sybil攻击、外包攻击和生成攻击。
女巫攻击:邪恶矿工可能通过创建多个女巫身份假装物理存储许多副本(从中获得奖励),但实际上只存储一次。
外包攻击:依靠从其他存储提供商快速获取数据的能力,邪恶矿工可能会承诺存储大于其实际物理存储容量的数据。
生成攻击:邪恶矿工可能声称存储了大量数据,但他们使用小程序来有效地生成请求。如果这个小程序小于声称存储的数据,邪恶矿工在Filecoin获得块奖励的可能性增加,因为它与矿工当前的使用量成正比。
3.2证书副本
PoRep是一种新型的存储证书。它允许服务器(即示证者P)使用户(即验证者V)相信一些数据D已经被复制到其唯一的专用物理存储器中。我们的方案是一个交互式协议。当证明者P:(a)承诺存储某个数据D的N个不同的副本(独立的物理副本),然后(b)通过响应协议说服验证者V时,P确实已经存储了每个副本。据我们所知,PoRep改进了PDP和PoR方案,防止了女巫攻击、外包攻击和代理攻击。
请注意,我们参考技术报告:复制证明,2007年的正式定义,其属性的描述,以及PoRep的深入研究。
3.1定义
PoRep方案使得有效证明者P能够使验证者V确信已经存储了数据D的P特定的独立物理副本R。PoRep协议的特征在于多项式时间算法的元组:(建立、证明、验证)
PoRep。Setup(1,D) R,SP,SV,其中SP和SV为P和V的特性方案的设定变量,为安全参数。PoRep。Setup用于生成副本R,并为P和V提供运行PoRep所需的信息。证明和PoRep。验证某些方案可能需要认证机构或交互式第三方来计算PoRep。设置
PoRep。证明(SP,R,c) c,其中C是验证者V发出的随机验证,c是证明者可以访问数据D的特定副本R的证明。PoRep。Prove由P (reference)为V (verifier)运行,生成 C。
PoRep。Verify(Sv,c,c) {0,1},用于检查证明是否正确。PoRep。Verify由V运行,并使V确信P已经存储了r。
3.3时间和空间的证明
存储认证方案允许用户请求检查存储提供商当时是否存储了外包数据。如何用PoS方案证明数据已经存储了一段时间?这个问题的一个自然答案是让用户反复向存储提供商发送请求(例如,每分钟一次)。然而,每次交互所需的通信复杂性将成为Filecoin等系统的瓶颈,因为存储提供商需要向区块链网络提交他们的证书。
为了回答这个问题,我们引入了一种新的证明,“时空证明”,它允许验证者检查存储提供商是否已经存储了他/她的外包数据一段时间。这个提供者的直接要求是:(1)生成顺序存储证明(在我们的例子中是“复制证明”)作为确定时间的方法。(2)组合递归执行,生成简单证明。
定义3.2
(时空证明)Post方案使得有效的证明者P能够使验证者V相信P已经存储了一些数据D一段时间。PoSt的特征在于多项式时间算法的元组:(建立、证明、验证)
贴吧。Setup(1,D)-Sp,SV,其中Sp和Sv为P和V的特征方案的设置变量,为安全参数。贴吧。Setup用于为P和V提供运行PoSt所需的信息。证明和事后证明。一些方案可能需要认证者或交互式第三方来计算事后设置
贴吧。证明(Sp,D,C,t) c,其中C是验证者V发出的随机验证,c是证明者在一定时间内可以访问数据D的证明。贴吧。Prove由P(证明者)运行,为V(验证者)生成c。
贴吧。Verify(Sv,c,t,c) {0,1},用于检查证明是否正确。贴吧。Verify由V运行,并使V确信P已经将R存储了一段时间。
3.4 porep和PoSt的实际应用
我们感兴趣的是PoRep和PoSt的应用构建,可以应用于现有系统,不依赖可信第三方或硬件。我们给出了PoRep的构造(参见基于seal的复制证明[5]),它需要一个非常慢的序列来计算在设置过程中seal的执行以生成一个副本。PoRep和Post的协议草图如图4所示,证明PoSt底层机制的步骤如图3所示。
3.4.1加密块的构造
防冲突哈希。我们使用一个防碰撞哈希函数:CRH: {0,1} * {0,1} O ()。我们还使用了一个防冲突哈希函数MerkleCRH,它将字符串分成多个部分,构造一个二叉树,递归应用CRH,然后输出树的根。
zk-SNARKs .我们的PoRep和PoSt的实际实现依赖于零知识证明的简洁的非交互认识论(ZK-斯纳克斯)[6,7,8]。因为zk-SNARKs简洁,所以证明简短,容易验证。更正式地说,设L是NP语言,C是L的判定电路。可信方执行一个设置阶段来生成两个公钥:证明密钥pk和验证密钥vk。证明密钥pk使任何(不可信)证明者产生证明,对于她选择的实例X,X L,非交互证明是零知识和知识证明。任何人都可以使用验证密钥vk来验证证明。尤其是zk-SNARK的证明可以公开验证:任何人都可以验证,而无需与产生的证明者互动。证明有一个常数大小,可以在| x |中线性时间验证。
满足电路可靠性的Zk-SNARKs是多项式时间算法的元组:(KeyGen,Prove,Verify)
KeyGen(1,C) (pk,vk),输入安全参数和电路C,KeyGen生成概率样本pk和vk。这两个密钥作为公共参数发布,可用于Lc的证明/验证。
Prove(pk,X,w) 当pk,X,NP声明W的见证时,人工语句xLC输出非交互证明。
Verify(vk,X,) {0,1}当输入vk,输入X,证明时,验证器验证输出1是否满足x LC。
对于zk-SNARK系统的正式介绍和实现,我们建议感兴趣的读者参考[6,7,8]。一般来说,这些系统要求KeyGen由可信的参与者运行。创新的可扩展计算完整性和隐私(SCIP)系统[9]显示了在假设信任的前提下避免这一初始化步骤的有希望的方向。
密封操作
密封操作的功能是(1)要求证明者将对其公钥唯一的数据D的伪随机副本存储到物理独立副本中,使得提交存储N个副本导致N个独立磁盘空间(因此,它是副本存储大小的N倍),以及(2)将花费更多时间来强制在PoRep生成副本。安装程序比预期的要响应请求。关于密封操作的更正式定义,见[5]。上述操作可以用海豹突击队 AES 256实现,使得海豹突击队 AES 256比诚实证明验证请求序列多花10-100倍的时间。请注意,的选择很重要,这使得运行SealBC比引用随机访问r花费的时间更明显。
3.4.3 PoRep施工实践
本节描述了PoRep协议的结构,并在图4中包含了一个简单的协议草图。并且省略了实现和优化的细节。
创建一个副本。设置算法通过密封算法生成副本并提供证明。证明者生成一个副本,并将输出(不包括R)发送给验证者。
设置
输入:
证明者密钥对(pkP,skP)
证明者海豹突击队密钥pkSEAL
数据D
产出:
副本R
R的Merkle根rt
证明海豹突击队
证明由证明算法生成的副本的存储证明。证明者接收到来自验证者的随机挑战,以确认Merkle树R中具有根RT的特定叶节点Rc。证明者生成关于从根rt到叶Rc的路径的知识证明。
证明
输入:
证明者存储证明密钥pkPOS
副本R
随机挑战c
输出:验证POS
验证验证算法检查源数据给定散列的有效性和副本的Merkle根的存储证明。证书是可公开验证的:分布式系统的节点维护账簿,对特定数据感兴趣的人可以验证这些证书。
核实
输入:
证明者公钥,pkP
验证者海豹突击队和POS密钥vkSEAL、vkPOS
数据散列D,hD
副本R,rt的Merkle根
随机挑战,c
证据元组,(海豹突击队,POS)
输出:如果证明有效,位b等于1
3.4.4施工后实践
本节描述了Post协议的结构,并在图4中包含了一个简单的协议草图。并且省略了实现和优化的细节。
设置和验证算法与上述PoRep结构相同。所以我们在这里描述证明。
和空间。证明算法为副本生成“时空证明”。证明者接收来自验证者的随机挑战,并顺序生成“复制证明”,然后使用证明的输出作为另一个输入来进行指定的T次迭代(参见图3)。
证明
输入:
证明者发布密钥pkPOST
副本R
随机挑战c
时间参数t
输出:验证柱
3.5在Filecoin中的应用
Filecoin协议使用“时空证明”来审计矿工提供的存储。为了在Filecoin中使用PoSt,因为没有指定的验证者,并且我们希望任何网络成员都能够验证,所以我们将方案更改为非交互式。因为我们的验证器运行在公共硬币模型中,所以我们可以从区块链中提取随机性来挑战。
4.Filecoin:DSN构造
Coindsn是一个分散的存储网络,可以升级,公开验证和激励设计。客户向矿商网络支付存储数据和检索数据的费用。矿工提供磁盘空间和带宽来赚取费用。只有当网络能够审核他们的服务是否正确提供时,矿工才会收到付款。
本节介绍DSN的定义和基于“时空证明”的Filecoin DSN的构建。
4.1设置
参与者
任何用户都可以作为客户端、存储挖掘者和/或检索挖掘者参与Filecoin网络。
客户请求通过Put和Get在DSN中存储数据或检索数据,并为此付费。
存储挖掘器为网络提供数据存储。存储矿工通过提供他们的磁盘空间和响应Pug请求来参与Filecoin。要成为存储矿工,用户必须抵押与存储空间成比例的抵押品。存储挖掘器通过在特定时间存储数据来响应用户的Put请求。存储矿工生成“时空证明”并提交给区块链网络,证明他们在特定时间存储了数据。如果证书无效或丢失,存储矿工将被罚款他们的一些抵押品。储矿商也有资格挖掘新区块。如果挖到新的区块,矿工可以获得挖掘新区块的奖励和区块中包含的交易费。
搜索矿工为网络提供数据搜索服务。搜索矿工通过提供用户Get请求所需的数据来参与Filecoin。不像存储矿工,不需要抵押,不需要存储数据,不需要存储证书。存储矿工也可以作为搜索矿工参与网络。搜索挖掘者可以直接从客户或搜索市场赚取利润。
网络n
我们将运行Filecoin的所有节点的所有用户提炼为一个抽象的实体:网络。网络充当运行管理协议的中介。简而言之,Filecoin区块链的每个新数据块,所有节点都会管理可用存储、验证宣传资料并审核存储,以证明可能的故障已得到修复。
会计账簿
我们的协议适用于基于账面的货币。为通用起见,我们称之为“账本”l .在任意给定时间T(称为期间),所有用户都可以访问lt .当它在期间T时,账本是可加的,由一系列交易按顺序组成。Filecoin DSN协议可以在任何运行证书来验证Filecoin的账本上实现。在第六部分,我们将展示如何建立一个基于有用工作的分类账。
4.1.4市场
存储需求和供应构成了两个硬币市场:存储市场和检索市场。这两个市场是两个分散的交易所,将在第5节中详细解释。简而言之,客户和矿商通过向各自的市场提交订单来设定服务或服务订单的价格。它为交易所客户和矿商提供了一种查看匹配出价和执行订单的方式。如果服务请求被成功地满足,通过运行管理协议,网络确保矿工被支付并且客户将被收费。
4.2数据结构
碎片:碎片是客户存储在DSN中的数据的一部分。比如数据可以任意分成很多块,每一块可以由不同组的存储挖掘器存储。
扇区:扇区是矿工提供给网络的一些磁盘空间的存储。将矿工的客户数据片段存储在扇区中,并通过他们的服务获得代币。为了存储碎片,矿工们必须将他们的区域抵押给网络。
分配表:分配表衣柜的一种数据结构,可以跟踪碎片及其分配的扇区。分配表将在每个长辈的块中更新,Merkle root将存储在最新的块中。在实际操作中,该表用于保存DSN的状态,在验证过程中可以快速查找。更多细节请参考图5。
订单:根据订单要求或提供服务的意向声明。客户向市场提交竞价订单请求服务(存储数据的存储市场和检索数据的检索市场),矿商提交报价订单提供服务。订单数据结构如图10所示。市场协议将在第5节中详细描述。
订单簿:订单簿是订单的集合。请检查第5.2.2节中的存储市场订单簿和第5.3.3节中的检索市场订单簿。
抵押:抵押是像网络一样提供存储(尤其是扇区)的承诺。存储矿商必须将抵押提交到分类账,以便他们可以接受存储市场中的订单。抵押贷款包括抵押贷款部门的规模和存放矿商存款的抵押品。
4.3协议
在本节中,我们将通过描述客户端、矿工和网络执行的操作来概述Filecoin DSN。我们在图7中介绍了Get和Pug协议的方法,在图8中介绍了管理协议。协议执行的一个例子如图6所示。图1是Filecoin协议的概述。
4.3.1客户生命周期
我们给出了客户生命周期的概述:在第5节中,将深入分析以下协议。
1.Put:客户将数据存储在Filecoin中。
客户可以通过向Filecoin中的矿工支付代币来存储他们的数据。第5.2节详细介绍了Put协议。
通过客户看跌协议将竞价订单提交至存储市场的订单簿。当找到矿商匹配的报价订单后,客户将数据发送给矿商,双方在交易订单上签字,提交到存储市场订单簿。客户可以通过提交订单来决定数据的物理拷贝数量。冗余越高,对存储故障的容忍度就越高。
2.Get:客户从Filecoin检索数据。
客户可以通过向存储矿工支付Filecoin令牌来检索任何数据。第5.3节详细描述了Get协议。客户端通过执行Get协议向搜索市场订单簿提交竞价订单。当找到匹配的矿工报价订单时,客户将收到矿工的碎片。收到后,双方签署交易订单并提交给区块链,以确认交易成功。
4.3.2开采周期(针对储矿者)
我们非正式地概述了采矿周期。
1.抵押:存储矿工将存储抵押给网络。
仓储矿商通过在抵押交易中存放抵押品,保证向区块链提供仓储。通过管理。质押界,抵押品是在一段时间内提供抵押服务。如果矿商为他们承诺提交存储的数据生成存储证书,抵押品将返还给他们。如果存证失效,将会损失一定数量的抵押物。他们设定价格,并向市场订单簿提交报价订单。一旦区块链出现抵押贷款交易,矿商就可以在仓储市场提供他们的仓储。
管理。抵押部门投入:
可分配的当前分配表
认捐请求认捐
输出:可分配'
2.接单:存储矿商从存储市场获得存储需求。
他们设定价格并执行卖出。AddOrders向市场订单簿提交报价订单。一旦区块链出现抵押贷款交易,矿商就可以在仓储市场提供他们的仓储。
放。附加订单
输入:订单列表O1.在
输出:如果成功,位b等于1
通过Put检查是否与客户的报价订单相匹配。匹配订单
放。匹配订单
输入:
当前存储市场订单簿查询订单以匹配Oq
输出:匹配订单O1.在
当订单匹配时,客户会将他们的数据告诉存储矿工。运行Put。存储矿工接收到的数据时的接收件。收到数据后,矿工和客户签收订单并提交给区块链。
放。接收件
输入:Mj的签名密钥
当前订单簿订单簿
询问订单Oask
投标订单Obid
零件p
输出:Ci和Mj签署的交易订单Odeal
3.封印:保存矿工准备的碎片,以备将来证明。
矿工的存储被分成扇区,每个扇区包括分配给矿工的碎片。该网络通过分配表跟踪存储矿工的每个扇区。当存放矿工的区域已满时,该区域将被封闭。密封是一个缓慢的连续操作。将扇区中的数据转换为副本,然后将数据的唯一物理副本与storage miner的公钥相关联。“抄证”期间,需要盖章操作。如下文第3.4节所述。
管理。海洋部门输入:
miner公钥/私钥对M
行业指数j
可分配的分配表
输出:一个证明海豹突击队,一个根哈希rt
4.证明:存储挖掘者证明他们正在存储承诺的片段(数据)。
在存储矿工分布数据时,必须重复生成重复的证书,以确保他们存储的是数据。(更多详情请参考第3节。)证书在区块链公布,并由网络核实。
管理。ProveSector
输入:
miner公钥/私钥对M
行业指数j
挑战c
输出:验证POS
4.3.3采矿周期(用于搜寻矿工)
我们非正式地概述了采矿周期。
1.接收订单:搜索矿工从搜索市场获得数据请求。
检索矿商的设定价格并将报价订单添加到市场订单簿,并通过向网络发送报价来提供数据。
去拿。附加订单
输入:订单列表O1.在
产出:无
然后搜索矿工,检查是否匹配客户的报价订单。
去拿。匹配订单
输入:
当前检索市场订单簿
查询订单以匹配Oq
输出:匹配订单O1.在
2.发送:检索矿工发送给客户的数据片段。
一旦订单匹配,搜索矿工发送数据给客户(在第5.3节详细描述)。收到数据后,矿工和客户签署交易并提交给区块链。
放。发送件
输入:一个委托订单Oask
投标订单Obid
一块p
输出:Mi签署的订单Odeal
4.3.4网络周期
我们非正式地概述了网络操作。
1.分配:该网络将零散的客户分配到存放矿工的部门。
客户通过向存储市场提交报价订单来启动Put协议。当询价单与报价单匹配时,参与各方共同承诺交易,并向市场提交成交单。此时,网络将数据分发给矿工,并将其记录在分配表中。
管理。分配者
输入:
交易订单或交易.Ondeal
可分配的分配表
输出:更新的分配表可分配
2.修复:网络发现故障并试图修复。
所有存储分配对网络中的每个参与者开放。对于每个块,网络将检查每个所需的证据是否存在以及它们是否有效,因此采取行动:
管理。维修订单
输入:
当前时间t
当前分类帐L
可分配的存储分配表
产出:订单维修或交易.实际上,更新的分配表可分配
如果任何证据丢失或无效,网络将通过扣除一些抵押品来惩罚存储矿工。
如果大量证书丢失或无效(由系统参数fault定义),网络将确定存储挖掘器中存在故障,将订单设置为失败,并将相同数据的新订单引入市场。
如果所有存储数据的存储矿工都有故障,数据将丢失,客户将获得退款。
4.4保证和要求
以下是Filecoin DSN如何实现完整性、可检索性、公开可验证性和激励兼容性。
实现完整性:数据片段以加密散列命名。在一个Put请求之后,客户只需要存储散列来通过Get操作检索数据,并且可以验证接收到的数据的完整性。
实现可恢复性:在Put请求中,客户指定代码的复制因子和预期擦除类型。假设给定的m个存储挖掘器可以存储数据并容忍最多f个故障,则模式是(f,m)-容忍存储。通过将数据存储在不同的存储提供商中,客户端可以增加恢复的机会,以防止存储挖掘者离线或消失。
公开可验证性和可审计性:存储矿工需要向区块链提交他们的存储证明(海豹突击队,邮政)。网络中的任何用户都可以在不访问外包数据的情况下验证这些证书的有效性。此外,由于这些证书存储在区块链上,因此可以随时查看操作痕迹。
实现激励相容:非正式地,矿工通过提供存储获得奖励。当矿工承诺存储一些数据时,他们需要生成证书。如果矿工忽略证书,他们将受到惩罚(通过失去一些抵押品),并且不会获得存储的奖励。
实现保密性:如果客户希望他们的数据被秘密存储,他们必须在将数据提交到网络之前对其进行加密。
5.Filecoin的存储和检索市场
Filecoin有两个市场:存储市场和检索市场。这两个市场结构相同,但设计不同。存储允许客户为矿工存储数据付费。数据检索允许客户付费给矿工提供检索数据传输。在这两种情况下,客户和矿商可以设定报价和需求价格或接受当前报价。该事务由网络运行。Filecoin中的所有节点都是拟人化的。确保网络矿工在提供服务时能得到客户的回报。
5.1核实市场
市场是促进特定商品和服务交换的协议。他们使买家和买家能够促进交易。对我们来说,我们要求交易是可验证的:分散网络的参与者必须能够验证买方和卖方之间的交易。我们提出了验证市场的概念。它没有单一的实体来管理事务。交易是透明的,任何人都可以匿名参与。可验证的市场协议使服务的交易去中心化:订单簿的一致性、订单结算和服务的正确执行可以由参与者-矿工和Filecoin中的所有节点独立验证。我们简化可验证市场以构建以下内容:
5.1定义
可验证市场是一个有两个阶段的协议:订单匹配和结算。订单簿是购买意向或所售商品或服务安全性的声明,订单簿是所有可用订单的列表。
5.2存储市场
存储市场是一个可验证的市场,它允许客户(即买方)请求他们的存储数据,允许存储矿工(即卖方)提供他们的存储空间。
需求
我们根据以下要求设计存储市场协议:
连锁订单簿:重要的是(1)存储空间的订单形式是开放的,因此最低价格的订单在互联网上总是众所周知的,客户可以对订单做出明智的决定。(2)客户的订单必须始终服从订单,即使他们接受最低价格,这样市场才能对新的报价做出反应。因此,我们要求将订单添加到Filecoin区块链,以便将其添加到订单簿。
参与者投入资源:我们要求两个参与者都投入资源,以避免损失。以避免存储矿工不提供服务和客户没有可用的资金。为了参与存储市场,存储矿商必须确保与其存储量成比例的抵押品存放在DSN中(有关更多详细信息,请参见第4.3.3节)。通过这种方式,网络可以惩罚那些承诺存储数据但不提供存储证明的存储矿工。同样,客户必须在订单中填入一定数量的资金,以确保结算期间的资金可用性。
自排:只有存储矿工反复证明自己在约定时间内存储了数据,订单才会结算给矿工。网络必须能够验证这些证明的存在性和正确性,并且根据规则对它们进行处理。第4.3.4节概述了修理部分。
数据结构
下订单。订单有三种类型:竞价订单、询价订单和交易订单。存储矿工创建询价订单以添加存储,客户创建出价订单以请求存储,当双方就价格达成一致时,他们共同创建处理订单。订单的数据结构和订单参数的清晰定义如图10所示。
下订单。市场的存储订单簿是当前有效和公开的询价、投标和交易订单的集合。用户可以通过Put协议中定义的方法与订单簿进行交互:AddOrders、MatchOrders,如图7所示。
订单簿是公开的,每个诚实的用户都有相同的订单簿尝试。在每个周期中,如果新的订单交易出现在新的块中,它将被添加到订单簿中。如果订单被取消、取消或结算,将被删除。订单将被添加到区块链中,因此如果它在订单簿中有效:
5.2定义
我们定义投标、询价和交易订单的有效性:
(有效出价)客户端发出的出价为ci,obid:=(hsize,funds [,price,time,coll,coding]) ci,满足以下条件时有效:
Ci的帐户中至少有可用资金。
没有超时。
订单必须保证最短储存期(这是一个系统参数)。
(有效询价单)如果满足以下条件,由存储矿工发出的询价单Mi,Oask:=(hspace,pricei)Mi有效:
米承诺做矿工,质押期不会在订单周期前到期。
该空间必须小于Mi的可用存储空间。减去Mi订单中的承诺存储(按RFQ订单和交易订单)
(有效交易指令)交易指令Odeal:=(hask,bid,ts)Ci,Mj,满足以下条件时有效:
查阅订单Oask,使其由Ci签署,并且在存储市场的订单簿中没有其他订单参与其中。
出价参考订单Obid,使其由Mj签署,并且在存储市场的订单簿中没有其他订单参与其中。
Ts不能设置为未来时间或过早时间。
如果恶意客户端从存储挖掘器接收到签名的交易,但从未将其添加到订单簿,则存储挖掘器不能重用订单中提交的存储。这个字段ts可以防止这种攻击,因为超过ts后,订单就失效了,无法在订单簿中提交。
5.2.3存储市场协议
简而言之,存储市场协议分为两个阶段:订单匹配和结算。
订单匹配:客户端和storage miner通过向区块链提交交易将订单提交到订单簿(步骤1)。当订单匹配时,客户端将数据片段发送给存储挖掘器,双方签署交易并提交给订单簿(步骤2)。
结算:存储矿工的密封扇区(步骤3a),生成扇区中包含的碎片的存储证书,并定期提交给区块链(步骤3b);同时,剩余的网络必须验证由矿工生成的证书并修复可能的故障(步骤3c)。
图11详细描述了存储市场协议。
5.3检索市场
市场允许客户请求检索特定的数据,而检索挖掘者提供这种服务。与存储挖掘器不同,搜索挖掘器不需要在特定时间段内存储数据或生成存储证书。网络中的任何用户都可以成为搜索矿工,并通过提供搜索服务来获得Filecoin令牌。搜索挖掘器可以直接从客户端检索和接收数据片段,或者存储它们成为存储挖掘器。
需求
我们根据以下要求设计搜索市场协议:
连锁订单簿:客户必须能够找到提供所需数据片段的搜索矿工,定价后直接交换。这意味着订单簿不能在区块链运行。因为这将成为快速检索请求的瓶颈。相反,参与者只能看到订单簿的局部视图。我们要求双方分散订单。
没有委托人的搜索:公平交换的不可能性[10]提醒我们,没有委托人,双方是不可能进行交流的。在存储市场,区块链网络作为一个分散的委托人来验证存储矿工提供的存储。在检索市场中,检索者和客户在没有网络见证的情况下交换数据。我们通过要求检查矿工将数据分成多个部分,并将每个部分发送给客户端,矿工将收到付款。这样,如果客户端停止支付或矿工停止发送数据,任何一方都可以终止此交易。请注意,我们必须始终假设总有一个诚实的搜索矿工。
支付渠道:客户端提交支付后,可以立即搜索到感兴趣的片段。搜索矿工将只提供数据片段时,他们确认收到付款。通过公共账本确认交易可能会成为检索请求的瓶颈,所以必须依靠有效的线下支付。Filecoin区块链必须支持快速支付渠道。只有在有争议的情况下,才应使用乐观交易和区块链。通过这种方式,搜索矿工和客户可以快速发送Filecoin协议所需的小额付款。未来的工作包括创建一个支付渠道网络,如[11,12]所述。
数据结构
获取订单。在检索市场中有三种类型的订单:由客户创建的投标表单Obid,由挖掘者创建的询价单Oask,以及挖掘者与客户之间达成的交易订单Odeal。订单的数据结构如图10所示。
去拿订单。从市场检索到的订单簿是有效和公开的投标订单、询价订单和交易订单的集合。与存储市场不同的是,每个用户都有不同的订书尝试。因为订单在网络中传播,每个矿工和客户只会跟踪自己感兴趣的订单。
市场协议的检索
简而言之,检索市场协议分为两个阶段:订单匹配和结算:
订单匹配:客户端和搜索挖掘器通过广播向订单簿提交订单(步骤1)。当订单匹配时,客户端和用于检索矿工简历的微支付通道(步骤2)。
结算:找回矿工送来的一小部分碎片。
给到客户端,然后对每个碎片客户端会向矿工发送收妥的收据(步骤3)。检索矿工向区块链出示收据从而获得奖励(步骤4)。
该协议在图12中详细解释。
6. 有用工作共识
Filecoin DSN协议可以在允许验证的任何共识协议之上实现Filecoin的证明。在本节中,我们将结算如何基于有用来引导共识协议。Filecoin矿工生成“时空证明”来参与共识,而不是浪费的POW。
有用。如果计算的输出对网络来说是有价值的,而不仅仅是为了保证区块链的安全。我们认为矿工在共识协议中所作的工作是有用的。
6.1 动机
确保区块链的安全是至关重要的。POW的证明方案往往要求不能重复使用的或者需要大量的浪费计算才能找到难题的解决方案。
不可重复利用的工作:大多数无许可型的区块链要求矿工解决硬计算难题,譬如反转哈希函数。通常情况下这些解决方案都是无用的,除了保护网络安全之外,没有其他任何价值。我们可以重新设计让这件事有用吗?
尝试重复使用的工作:已经有几个尝试重复使用挖矿电路进行有用的计算。有些尝试是要求矿工与标准的POW同时进行一些特殊计算,其他一些尝试用有用问题替代POW的依然难以解决。例如,Primecoin重新使用矿工的计算能力来找到新的素数,以太坊要求矿工与工作证明一起执行小程序,同时证明某些数据正在归档。虽然这些尝试中的大多数都执行有用的工作,但在这些计算中浪费的工作量仍然很普遍的。
浪费的工作:解决难题在机器成本和能力消耗方面是非常昂贵的,特别是如果这些难题完全依赖计算能力。当挖矿算法不能并发的时候,那解决难题的普通因素就是计算的功率。我们可以减少浪费的工作吗?
试图减少浪费:理想情况下,大部分网络资源应该花费在有用的工作上。一些尝试是要求矿工使用更节能的解决方案。例如,“空间挖矿”(?Spacemint)要求矿工致力于磁盘空间而不是计算;虽然更加节能,但磁盘空间依然”浪费“,因为它们被随时的数据填满了。其他的尝试是用基于权益证明的传统拜占庭协议来代替难题的解决,其中利益相关方在下一个块的投票与其在系统中所占有的货币份额成正比。
我们着手设计一个基于用户数据存储的有用工作的共识协议。
6.2 Filecoin 共识
我们提出了一个有用工作共识协议,其中网络选择一个矿工创建一个新矿区的概率(我们称之为矿工的投票权)与他们当前网络中正在使用的储量成正比关系。我们设计 Filecoin 协议,能让矿工们投资存储,而非在算力上并行化采矿计算。矿工提供存储并重新使用计算来证明数据被存储以参与共识。
6.21 挖矿功率建模
功率容错。在我们的技术报告中,我们提出了功率容错,这是对在参与者对协议结果的影响方面重新构建拜占庭故障的抽象。每个参与者控制了网络总功率n中的一部分功率,其中f是故障节点或作恶节点所控制的功率占比。
Filecoin功率。在Filecoin中,在时刻t,矿工Mi的功率Pt>i是Mi总和的存储任务。Mi的 Iti是网络中Mi总功率的影响因子。
在Filecoin中,功率有以下属性:
公开:网络中当前正在使用的存储总量是公开的。通过读取区块链,任何人都可以计算每个矿工的存储任务-因此任何人都可以计算出在任意时间点的每个矿工的功率和总功率。
可公开验证的:对于每个存储任务,矿工都需要生成”时空证明“,证明持续提供服务。通过读取区块链,任何人都可以验证矿工的功率声明是否是正确的。
变量:在任意时间点,矿工都可以通过增加新增扇区和扇区补充的抵押来增加新的存储。这样矿工就能变更他们能提供的功率。
6.2.2 功率会计与时空证明
每个∆proof 区块(∆proof 是系统参数),矿工们都必须向网络提交“时空证明”,只有网络中大多数功率认为它们是有效的,才会被城管添加到区块链。在每个区块中,每个圈节点会更新分配表(AllocTable),添加新的存储分配、删除过期的和标记缺少证明的记录。
可以通过对分配表的记录来对矿工Mi的功率进行计算和验证。这些可以通过两种方式来完成:
全节点验证:如果节点拥有完整的区块链记录,则可以从创始块开始运行网络协议直到当前区块,这个过程中验证每一个分配给Mi的“时空证明”。
简单存储验证:假设轻客户端可以访问广播最新区块的信任源。请客户端可以从网络中的节点请求(1)Mi在当前分配表中的记录,(2)该记录被包含在最新区块的状态树中的Merkle路径(3)从创世块到当前区块的区块头。这样请客户端就可以将“时空证明”的验证委托给网络。
功率计算的安全性来自于“时空证明”的安全性。在这个设置里面,Post保证了矿工无法对他们所分配的存储数量说谎。事实上,他们不能声称能够存储超过他们的存储空间的数据,因为这会花费时间来运行PoSt.Setup,另外PoSt.Prove是串行的计算,并不能并行化的快速生成证明。
6.2.3 使用功率达成共识
我们预计通过扩展现在(和未来)的权益证明共识协议来实现Filecoin共识的多种策略,其中权益被替换为分配的存储。我们预计了权益证明协议的改进,我们提出了一个基于我们前期工作,称为预期共识的构建[14]。我们的策略是在每一轮选举一个(或多个)矿工,使得赢得选举的概率与每个矿工分配的存储成比例。
预期共识。预期共识的基本直觉是确定性的,不可预测的。并在每个周期内秘密选举一个小的Leader集合。预期的期望是每个周期内当选的Leader是1,但一些周期内可能有0个或者许多的Leader。Leader们通过创建新区块并广播来扩展区块链网络。在每个周期,每个区块链被延伸一个或多个区块。在某个无Leader的周期内,控区块被添加到区块链中。虽然链中的区块可以线性排序,其数据结构是有向无环图。EC是一个概率共识,每个周期都使得比前面的区块更加确定,最终达到了足够的确定性,且出现不同的历史块链的可能性是足够小的。如果大多数的参与者都通过签署区块链来扩展区块链,加大这个区块所属链的权重,那么这个区块就被确认了。
选举矿工,在每个周期,每个矿工检查他们是否被选为Leader,这类似于完成前面的协议:CoA[15],白皮书[16],和算法[17]。
译者注:下面的公式表达式请参考英文原版为佳
定义6.1。如果下面的条件是满足的,则在时刻t 矿工Mi 是Leader:
其中rand(t)是在时刻t,可以从区块链中提取出来的公开的随机变量,Pt>i是Mi的功率。考虑对于任意的m,L是H(m)的大小,H是一种安全的加密散列函数,其中(m)Mi是Mi对消息m的签名,使得:
在图13中,我们描述了矿工(ProveElect)和网络节点(VerifyElect)之间的协议。这种选举方案提供了三个属性:公平,保密和公开的可验证性。
公平:每个参与者每次选举只有一次试验,因为签名是确定性的,而且t和rand(t)是固定的。假设H是安全的加密散列函数,则H(Mi)/2L必须是从(0,1)均匀选择的实数,因此,可能使得方程等式为true必须是Pti/Σjptj,这等于矿工在在网络中的部分功率。因为这个概率在功率上市线性的,这种可能性在分裂或者汇集功率情况下被保留。注意随机值rand(t)在时刻t之前是未知的。
保密:由于有能力的攻击者不拥有Mi用来计算签名的秘钥,考虑到数字签名的假设,这个是可以忽略不计的。
公开可验证:当选Leader i ∈ Lt 可以通过给出t,rand(t),H(i)/2L,来说服一个有效的验证者。鉴于前面的观点,有能力的攻击者在不拥有获胜秘密秘钥的情况下不能生成证明。
7. 智能合约
Filecoin为终端用户提供了两个基本元:Get和Put。这些基元允许客户以优惠的价格存储数据并从市场中检索数据。尽管基元涵盖了 Filecoin 的默认使用案例,但我们通过支持智能合约的部署,允许在Get和Put之上设计更复杂的操作。用户可以对我们分类为文件合同以及通用智能合同的新的细粒度存储/检索请求进行编程。我们整合了一个合同系统和一个Bridge系统,将Filecoin存储装入其他区块链,反之亦然,将其他区块链的功能带入Filecoin。
我们期望在 Filecoin 生态系统中能有大量的智能合约,我们期待着一个智能合约的开发者社区。
7.1 Filecoin智能合约
智能合约使得Filecoin的用户可以编写有状态的程序,来花费令牌向市场请求存储J/检索数据和验证存储证明。用户可以通过将交易发送到账本触发合约中的功能函数来与智能合约交互。
我们扩展了智能合约系统来支持Filecoin的特定操作(如市场操作,证明验证)。
文件合约:我们允许用户对他们提供的存储服务进行条件编程。有几个例子值得一提:(1)承包矿工:客户可以提前指定矿工提供服务而不参与市场 (2)付款策略:客户可以为矿工设计不同的奖励策略,例如合约可以给矿工支付随着时间的推移越来高的费用 ,另一个合约可以由值得信任的Oracle的通知来设置存储的价格。(3)票务服务:合约可以允许矿工存放令牌和用于代表用户的存储/检索的支付 (4)更复杂的操作:客户可以创建合约来运行数据更新。
智能合约:用户可以将程序关联到其他系统(如以太坊[18])他们的交易上,他们不直接依赖存储的使用。我们预见了以下的应用程序:去中心化命名服务,资产跟踪和预售平台。
7.2 与其他系统的集成
桥是旨在连接不同区块链的工具;现在正在处理中的,我们计划支持跨链交互,以便能将Filecoin存储带入其他基于区块链的平台,同时也将其他平台的功能带入Filecoin。
Filecoin进入其他平台:其他的区块链系统,如比特币[19],Zcash [20],特别是Ethereum [18]和Tezos,允许开发人员写智能合约;然而,这些平台只提供很少的存储能力和非常高的成本。我们计划提供桥将存储和检索支持带入这些平台。我们注意到,IPFS已经被作为几个智能合约(和协议令牌)引用和分发内容的一种方式来使用。增加到Filecoin的支持将允许这些系统以交换Filecoin令牌的方式来保证IPFS存储内容。
其他平台进入Filecoin:我们计划提供Filecoin连接其他区块链服务的桥。例如,与Zcash的集成将支持发送隐私数据的存储请求。
8. 未来的工作
这项工作为Filecoin网络的建设提供了一个清晰和凝聚的道路;但是,我们也认为这项工作将成为今后研究去中心化存储系统的起点。在这个我们识别和填充三类未来 工作。这包括已经完成只是等待描述和发布的工作,提出改进当前协议的开放式问题,和协议的形式化。
8.1 正在进行的工作
以下主题代表正在进行的工作。
每个块中的Filecoin状态树的规范。
Filecoin及其组件的详细绩效估计和基准。
完全可实现的Filecoin协议规范。
赞助检索票务模型,其中通过分配每个可持票花费的令牌,任何客户端C1可以赞助另一个客户端C2的下载。
分层共识协议,其中Filecoin子网可以在临时或永久分区进行分区并继续处理事务。
使用SNARK / STARK增量区块链快照。
FileCoin-Ethereum合约接口和协议。
使用编织(Braid?)进行区块链归档和区块链间冲压。
只有在区块链解决冲突的时候才发布\’时空证明”。
正式证明实现了Filecoin DSN和新型存储证明。
8.2 开放式问题
作为一个整体,有一些公开的问题,其答案有可能可以大大改善网络。尽管事实上,在正式启动之前并不是必须必须解决的问题。
一个更好的原始的\’复制证明“密封功能,理想情况下是O(n)解码(不是O(nm)),可公开验证,无需SNARK / STARK。
“复制证明”功能的一个更好的原语,可以公开验证和透明没有SNARK / STARK。
一个透明,可公开验证的可检索证明或其他存储证明。
在检索市场中进行检索的新策略(例如,基于概率支付,零知识条件支付)。
“预期共识”更好的秘密Leader选举,在每个周期,只有一位当选Leader。
更好的可信赖的SNARK设置方案,允许增加扩展公共参数(可以运行MPC序列的方案,其中每个附加的MPC严格降低故障概率,并且每个MPC的输出可用于系统)。
8.3 证明和正式的验证
由于证明和正式验证的明确价值,我们计划证明Filecoin网络的许多属性,并在未来几个月和几年内开发正式验证的协议规范。几个证明正在进行中还有些正在思考中。但注意,要证明Filecoin的许多属性(如伸缩,离线)将是艰难的,长期的工作。
预期共识和变体的正确性证明。
功率故障容错正确性的证明,异步1/2不可能导致分叉。
在通用组合框架中制定Filecoin DSN,描述Get,Put和Manage作为理想的功能,并证明我们的实现。
自动自愈保证的正式模型和证明。
正式验证协议描述(例如TLA +或Verdi)。
正式验证实现(例如Verdi)。
Filecoin激励的游戏理论分析。
致谢
这项工作是Protocol Labs团队中多个人的累积努力,如果没有实验室的合作者和顾问的帮助、评论和审查这是不可能完成的。Juan Benet在2014年写了原始的Filecoin白皮书,为这项工作奠定了基础。他和尼古拉·格雷科(Nicola Greco)开发了新的协议,并与提供了有用的贡献、评论、审查意见的团队其他人合作编写了这份白皮书。特别是大卫,“大卫”Dalrymple提出了订单范例和其他想法,Matt Zumwalt改进了在这篇论文中的结构,伊万·米亚佐诺(Evan Miyazono)创建了插图,并完成了这篇论文,在设计协议时,Jeromy Johnson提出了深刻的见解,Steven Allen提供了深刻的问题和清晰的说明。我们也感谢所有的合作者和顾问进行有用的对话;尤其是Andrew Miller和Eli Ben-Sasson。
英文版白皮书地址:
https://filecoin.io/filecoin.pd