mt logoMyToken
Market cap:
0%
FGI:
0%
Cryptocurrencies:--
Exchanges --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

MEMO-分层的分散式数据存储基础设施

Collect
Share


MEMO-分层的分散式数据存储基础设施

区块链发展已过十载,但在发展上仍受到颇多掣肘,即便BTC以及ETH已经实现了价值存储与资产的发行与结算,但去中心化的世界仍缺少许多必需的基础设施,这使得区块链应用至今仍像空中花园一般兀自在空中美丽,但只在一个小圈子内空转。

MemoLabs想要解决的即为去中心化基础设施中的存储问题,即便目前已Filecoin、Arweave以及storj等诸多存储项目,但MEMO仍然希望以其独特的架构和设计给存储赛道带来新的方案。MEMO采用分层设计,使用了高效率可验证的存储证明来保证数据存储的可靠性,并将所有订单聚合成订单池以减少链上结算压力。

1. 自私的数据

进化是最原初的信息生产,基因信息以种群为单位相互竞争,力求让自己能延续得更久一些,旧信息的载体在消失之前将通过繁殖复制自身,而复制的过程中也会产生新的信息。

基因的复制与传播与数据存储也存在着某种相似性,有价值的数据才会有人延续乃至于到久远的未来,对于基因,也只有在种群能适应环境变化时才能永续传播。

自私的基因为了不断延续下去,;为了防止单点故障,种群需要维持足够的个体数才行,所有基因依载的种群得不断繁殖得到新个体以提高基因存储的冗余度,而每一个生物个体的寿命都是有限的,只有不断繁殖,自私的基因才得以永存,但这并不意味着所有的基因都能安稳度过亿万年时光,未能适应环境变化的种群会灭绝,其承载的基因也就此消散,由于整个生态环境的承载能力优先,这种灭绝虽说残酷,但某种意义上也是对基因价值的随机评估。

MEMO对待数据即类似基因的进化,数据存储也需要保证足够的冗余度,冗余越高越安全,存储硬件就是信息的载体,它们有着或长或短的寿命但终究会消亡,MEMO会首先通过编码将数据分散到节点上存储,并且在有数据片丢失时,修复数据以保持冗余度的稳定。

存储节点受存储付费激励保存数据,成为“种群”中的一个“个体”,而且MEMO的节点遍布全世界,有最高的分散度,一个种群如果分布范围太小,很容易灭绝。

但数据并非可以零成本存在,而是在数据的订单到达尽头之前,有人认为其还依然有价值,为其重新进行一次冗余,签订更长的订单,正如种群的繁衍。

2. 世界是分层的

在推出Filecoin之前,协议实验室就因推出Libp2p以及IPFS等库而博得盛名,并被各类项目广泛使用,然后协议实验室推出Filecoin以解决IPFS存储的激励问题,但Filecoin的真实使用却很少,沦为了纯粹的挖矿泡沫。

在设计协议时,Filecoin创新地设计了复制证明与时空证明,并将数据存储与整个Filecoin区块链网络的共识安全绑定在一起,这使得Filecoin网络能在初期快速壮大,但在后期也会成为Filecoin的发展瓶颈。

Filecoin使用了简单的订单来描述文件存储供需匹配,无论存多大的数据,如果不主动聚合的话,都会在链上生成一个设定好价格、存储时间的订单,而且Filecoin也不会主动副本数据,而是想存几份副本就找几个存储节点签订订单,并且某份副本丢失,也不会有节点去修复数据,而仅惩罚丢数据的节点。

上述方案虽然解决了一部分问题,但这种简单的方案却引来了更多的问题

通过将复制证明与时空证明与出块挂钩,Filecoin的存储模块与共识模块被强行糅合在一起,而作为公链,资产的安全性远比数据存储的可用性和安全性要重要得多,所以需要提高共识安全,但同时这将降低数据存储的可用性,故Filecoin虽以存储为目标,但存储上的设计却处处受共识需求的掣肘。

复制证明所需的高安全参数,体现在硬件上就是极高的硬件配置,Filecoin存储网络的机器参与门槛远超普通存储硬件成本,一个存储网络绝大部分机器成本都在高性能CPU、显卡等硬件上,而不是硬盘等存储硬件,这也造成Filecoin的真实存储成本远高于通常的存储方案,只能依赖挖矿带来的泡沫来抵消这部分成本。

另一方面,所有的数据在存入Filecoin网络之前都需经过一道编码程序,同时读取数据也需要解码,由于复制证明的安全参数设置,数据编解码在高性能CPU上也需要一两小时才能完成,从而使得Filecoin的存取可用性都极低。

虽然在某种形式上,MEMO也依赖于订单以及对存储节点的验证,但是并没有像Filecoin一样将所有的东西都耦合在一起,所有的计算机系统几乎都是分层的,强耦合的设计必定会带来系统过于复杂,性能有诸多瓶颈的影响,而MEMO遵循分层的思路设计了整个模型。

MEMO在设计上分成了结算层、验证层以及存储层,所有的订单都会在结算成聚合到一个池子里以驱动支付,而验证层负责验证存储层的可靠性,验证层可以有许多群组,每个群组下负责一批存储节点,存储层的节点负责存储数据,并向验证层提交存储证明,同时根据验证层的结果去结算层收取收益,并且收益的获取可以聚合,以便存储节点在任何时候领取。

在这种分层设计下,存储层可以专注于存储的设计,而无需与共识耦合,而且分层也是更符合现实系统设计的,比如TCP/IP的技术栈是分层的,普通的计算机系统存储,也根据用途从寄存器,一级缓存,二级缓存,三级缓存,内存,硬盘等取舍的层次。

通过分层,高价值的订单信息在结算层运行得到高安全性保证,而验证层对存储层的验证不会消耗结算层的资源,以提高结算层的利用效率,存储层也可以尽量提供高可用的服务。

而且将存储与共识解耦以后,MEMO可以使用更简单高效且贴近存储需求的存储证明,同时结合概率抽查,可以以非常低的验证成本达到极高的可用性。

3. MEMO技术方案

加密基础设施一方面要设计合理的经济模型来激励参与者提供服务,另一方面需要用技术手段来防止参与者作恶,密码与经济结合,组合出独特的加密经济世界,Memo也是按照这种密码经济学的路线来设计模型的。

1.存储证明

分散的去中心化存储网络由互联网上的存储节点提供服务,由于存储节点可能会删数据,掉线,或者硬盘损坏,必须要防止存储节点的主动恶意行为,同时及时发现偶发的数据丢失以便及时修复数据,所以需要设计经济机制和验证方案,保证节点真实存储数据。

Filecoin使用复制证明以及时空证明来保证存储节点不作恶,Arweave采用PoA(访问证明)来保证矿工如实存储数据。

MEMO则采用了更轻量高效的存储证明算法,该算法结合了BLS签名聚合、向量承诺等机制设计,无论多大规模数据的证明,只需要常数级的通信开销(几百字节)以及验证开销(几毫秒),这减少了在验证层验证数据的负担,以负担起更大规模的数据存储。

使用双线性映射e:G1×G2—Gt等密码学工具,用户首先在素数域Fq随机选择一个存储私钥r,同时以G2群元素pk=r·g2作为公钥,并且使用一个映射函数H()将数据映射到G1域。

在上传数据前,首先将数据切分成256KB大小的数据碎片,并按照递增给数据片索引,然后根据数据片和索引生成验证标签,再将数据和标签一同发送给存储节点。

无论验证多大的数据,该存储证明算法总能将证明聚合成固定大小,所以MEMO可以支撑更大体量的数据规模,同时依然保证验证成本足够低,而且由于该算法是可公开验证的,任何人都可以验证存储证明是否正确。

2.概率抽查

为了降低生成证明的成本,在验证数据时,无需挑战所有的数据片,只需要概率抽查一部分数据片即可概率保证所有数据片的安全性。

假设数据片总量为n,一次挑战的块数为c,而出现损坏或者被删除的数据片数量为t,令x表示损坏的t块中刚好被挑战到的数据片数量,则损坏数据块中至少有一个包含在被挑战块中的概率为P(X)。

根据计算,可以得到如下公式:

MEMO-分层的分散式数据存储基础设施

概率P(X)表示,如果存储节点删除文件的t个块,那么在要求存储节点证明c块的挑战后,可以发现存储节点的错误行为。c可以用一个独立于总块数的常数块数量,使得P(X)达到某一个概率下界,则公式为:

MEMO-分层的分散式数据存储基础设施

令数据片总量趋于无穷,可得:

MEMO-分层的分散式数据存储基础设施

根据公式,假如丢失数据占比为1%,则挑战460个块和300个块,就可以分别以至少99%和95%的PX概率发现数据丢失。而要以99.9%的概率能发现0.1%的数据丢失,只需要挑战6905个数据片就足够。

抽查并非只抽一次,还要考虑上时间维度,如果真有数据丢失,并在极少数概率下没被发现,在生命周期内持续抽查后,发现的概率也会无限趋近于1,以更低的成本保证数据的安全存储。

3.RAFI与数据修复

Filecoin仅使用惩罚机制限制存储节点保持在线状态,即存储封印数据前需要质押Fil代币,同时不能正确生成数据时会扣除质押代币,但是在数据丢失后,Filecoin并没有修复机制来维持数据副本的冗余度,然而,即便存储节点没有动力主动作恶,存储硬件也可能失效,除非存储节点自行再做一次冗余,而这又会进一步提高成本。

MEMO天然支持多副本与纠删码两种冗余机制,假如有存储节点未能成功提交存储证明,并且持续时间超过了失效确认时间,则其他节点可以通过冗余修复回数据,并获取该存储订单的后续收益。

为了数据的可靠性,应该尽快修复丢失的数据,所以应该缩短失效确认时间,但为了避免误判同时降低网络流量消耗,应该延长失效确认时间,以往的修复机制都选择一个居中的失效确认时间来权衡。

使用纠删码会带来较大的修复惩罚,即修复一个数据块往往需要传输多个数据块,这相比多副本将带来数倍的修复成本,如果采取较高的纠删码参数,如28-52纠删,修复一个数据块需要读取28个数据块,对于分散式存储这种广域网场景,修复惩罚的影响更大。

MEMO则使用了RAFI,即风险感知的失效确认机制来减少修复惩罚,RAFI按照丢失数据的风险来动态调整失效确认时间。对于低风险数据,则大大延长失效确认时间以减少网络流量消耗,对于高风险数据,则缩短失效确认时间以提高可靠性。

比如对于多副本数据,五副本只丢了一份副本就比丢了两份副本要安全,对于纠删码如28-52纠删,如果只丢失了一个数据块,其安全等级还很高,可以将失效确认时间设置得非常长,而如果已经丢失了30个数据块,则需要缩短失效确认时间,快速修复以提高可靠性。

通过RAFI将风险加入到数据修复的考量,MEMO可以在提高数据可靠性的同时大大降低降低数据修复占用的网络流量。

4.订单池付费

在Filecoin网络中,订单为单个用户与单个矿工签订的订单,这样的设计使全网订单处理能力受限于链的吞吐,而MEMO在订单设计上创新地使用了订单池,可以将许多订单在结算层进行聚合,同时用户和存储节点各自的订单都会聚合,从而使得结算层的订单处理能力大大加强。

MEMO的细节订单会在验证层存储,并在结算层聚合,对于与每个用户签订订单的存储节点,其所有的订单都将会被聚合成一个聚合订单,会综合所有订单的数据存储量以及存储单价计算加权存储单价,并用此加权存储单价去计算时间间隔的存储收益。

每次用户和存储节点签订订单,订单金额都会先转移到存储节点的专属资金池内,然后存储节点向验证层提交证明,通过后存储节点会得到这段时间的收益取款单,存款单可以到结算层的资金池内领取收益,不同存储节点的资金池相互隔离以防止风险。

某个存储节点的所有收益都会聚合成一个取款单,到资金池内统一领取,由此,结算层对存储节点的存储收益支付消耗的资源只受存储节点数量的影响,并且收益取款单支持累加取款,为了节省手续费,存储节点可以累积多个周期的收益统一领取,以进一步节省结算层的压力。

Disclaimer: The copyright of this article belongs to the original author and does not represent MyToken(www.mytokencap.com)Opinions and positions; please contact us if you have questions about content