Filecoin技术分析:深入理解存储管理_TOR:WOR

Filecoin的存储单元称为扇区(Sector)。对传统硬盘结构理解的小伙伴,对这个术语应该比较亲切,传统硬盘的最小存储单元就叫Sector。为了证明Sector的存储,Filecoin进行了一系列的处理,传说中的P1/P2/C1/C2。在处理过程中,一个Sector的计算会生成若干文件,最终会生成replica。相关文件是如何组织的?Cache都是由哪些文件组成,分别是多大?本文就从存储的角度看看这些过程和逻辑。

Filecoin的存储管理的逻辑主要实现在sector-storage项目中。在深入理解Sector存储逻辑之前,先讲讲Worker和Manager。

01 相关术语

Worker - 处理P1/P2/C1/C2的服务,Worker又分为两种:local worker和remote worker。local worker处理本地服务处理,remote worker支持远程服务处理

Manager - 管理多个Worker

Bakkt大规模下架代币,包括AAVE、COMP、FIL、MKR和UNI等:金色财经报道,数字资产公司 Bakkt 已放弃了其最近收购的交易平台 Apex Crypto 上列出的 36 种加密代币中的 25 种。下架代币列表是:Aave (AAVE)、Avalanche (AVAX)、Bancor Network Token (BNT)、Basic Attention Token (BAT)、Chainlink (LINK)、Chiliz (CHZ)、Compound Token (COMP)、 Cosmos (ATOM), Curve DAO (CRV), Enjin Coin (ENJ), Fantom (FTM), Filecoin (FIL), GALA (GALA), The Graph (GRT), Internet Computer (ICP), Loopring (LRC), Maker DAO (MKR)、Republic (REN)、Stellar (XLM)、Sushiswap (SUSHI)、Synthetix (SNX)、Texos (XTZ) 和 Uniswap (UNI)。

此前 Bakkt 以 2 亿美元收购了 Apex Crypto,预计该交易将在 2023 年上半年完成。这是该公司从零售转向 B2B 的一部分。[2023/5/13 15:00:20]

Scheduler - 调度器,调度多个Worker,一个Manager通常有一个Scheduler

支付服务商Bitrefill宣布账户余额添加支持ETH和USDT充值:6月24日,官方消息,支付服务商Bitrefill宣布账户余额添加支持ETH和USDT充值,用户可以使用ETH、以太坊和Tron上的USDT为其Bitrefill余额添加资金。[2022/6/24 1:28:42]

Store - Sector存储系统

02 Sector存储

Sector处理相关的文件存储在Store中。Store通过sectorstore.json进行配置:

CanSeal表明Store可以用来Seal(存储Seal相关的临时文件),CanStore表面Store可以持久存储Seal的结果(replica)。Weight 是权重,在多个Store选择时使用。ID是Store的UUID编号。

一个Store中存在三种存储,分别对应三种目录:unsealed (未封存的文件),cache(缓存文件),sealed(封存后的文件)。

OKEx将上线跨链网关服务,目前支持BTC、DOT、FIL进行跨链操作:OKEx官方公告称:将于12月18日(HKT)之前上线跨链网关服务,跨链网关目前支持BTC、DOT、FIL进行跨链操作,兑换获得的跨链代币BTCK、DOTK、FILK统称为K资产,后续将支持更多资产跨链。目前K资产支持提币至以太坊区块链,后续将支持OKExChain、波场等更多公链。[2020/12/16 15:22:21]

03 Worker & Store

sector-storage项目的README中的这张图很好的解释了sector storage的各个模块以及相互的关系:

整幅图分为上下两个部分:上部分是Manager,下部分是Remote Worker。Manager中包括一个Local Worker。stores.Index是所有Sector存储的索引。Scheduler,上部分的中间,管理所有的Worker,并且调度Sector相关的存储。

火币现已开放FIL(Filecoin)充币业务,即将开放 FIL 币币交易:10月15日22:30,Filecoin(FIL)主网于区块高度148888 启动,火币全球站已同步开启FIL(Filecoin)的充币业务,并预计将于23:30开放 FIL 币币交易,具体开盘时间可能根据实际充值数量推前。

火币将在开放交易后5分钟内限制限价交易的挂单价格,且价格不得高于开盘价格的5倍,5分钟后恢复正常交易。数字资产是一种创新产品,价格波动较大,请注意风险控制。

同时火币将于10月15日——10月20日12:00 (GMT+8),推出充值/交易 FIL,瓜分5万USDT大奖活动。活动期间,用户从外部地址向平台成功充值的用户,将瓜分总计3万USDT的奖励;在火币参与FIL币币交易与杠杆交易的用户,将按照交易量排名,前10名用户将瓜分2万USDT的奖励。[2020/10/15]

worker management APIs通过/rpc/v0的jsonRPC接口实现remote worker的管理。通过/remote的HTTP API实现存储的Fetch操作,简单的说,传输文件。specs-storage.Prover/Sealer/Storage是Manager暴露出来的接口,实现Sector的证明,封存和存储。

100+Filecoin生态机构加入火币 FIL 狂欢月:据官方消息,火币将于10月15日正式启动 FIL (Filecoin)狂欢月。目前已有1475、哈希蔚来、蚂蚁矿业、点存科技、超算大陆、星际大陆等100+Filecoin 矿机厂商、生态机构、投资人和行业从业者宣布加入火币 FIL 狂欢月,共建Filecoin生态,交易FIL首选火币。

据悉,火币全球站将于 FIL 主网上线(区块高度达到 148888 )时,同步开启FIL的充币业务,并第一时间支持FIL上线。同时火币倾力为Filecoin生态打造一站式服务平台,服务于矿工、专业投资人,提供专属VIP服务。10月陆续开通现货/杠杆/合约、大宗交易、抵押/借币等数字金融服务,提供定制化的保值、增值工具;开启矿机/Staking 等矿业服务。[2020/10/14]

每个连接到Manager的Worker会和Manager同步它的内存/CPU以及显存的信息。Scheduler在接受到新的请求时,会针对请求(Task)的类型以及资源的需求,从当前Worker中挑选最合适的Worker进行请求的处理。如何选择Worker,感兴趣的小伙伴,可以查看selector的相关逻辑。

从存储的角度,重新整理一下,这些关系:

以一个Manager连接两个Worker为例。Worker只能Seal,但是不能Store。为了更清楚展示Worker之间的数据传输,第一个Worker只做Precommit1,第二个Worker做Precommit2和Commit。

04 Seal Task

理解Seal Task,最好对照了Sector的状态管理一起看。对Sector状态管理还不熟悉的小伙伴,可以查看之前的文章:

Filecoin - Sector状态管理逻辑

接下来,看看每个Seal Task对应的存储数据的变化。

如果其中左边的Worker接收到任务,AddPiece任务会在unsealed目录中创建原始数据。

PreCommit1阶段,简称P1,针对SDR算法,计算若干层数据。如果Sector是32G,需要计算11层。对SDR算法不熟悉的小伙伴,可以看看之前的文章:

经过PreCommit1,生成的数据存储在Cache中:

PreCommit2

PreCommit2的阶段,简称P2,生成Replica,计算Column Hash,并生成Merkle树(tree_d, tree_c, tree_r_last)。因为P2,不在同一个Worker处理,在进行处理之前,需要先传输给合适的Worker,处理的结果同样存储在Cache中:

在Commit生成证明后,进入Finalize状态,Finalize可以理解成“归档”。因为在Worker上没有Store能力,删除不需要持久化的数据,需要持久化存储的数据,将传输回Manager。

05 数据存储量

以32G的Sector为例,在处理过程中需要存储的数据如下:

原始数据 - 32G

原始数据Merkle - 32G

P1 layer - 32*11G

P2 - Column Hash  & tree_c - 32*2 G

P2 - Replica & tree_r_last - 32G + 9.2M*8

总共:512G多一点。

06 持久化数据

Sector经过P1/P2/C1/C2处理后,也就是说,经过PoREP处理后,需要持久化存储Replica的数据和tree_r_last的数据。tree_r_last的数据需要存储的原因是PoSt要用到。特别注意的是,tree_r_last的数据并不是完整的Merkle树数据,删除了其中一些层的数据。

32G的Sector,对应的tree_r_last分成了8棵子树,每棵子树是8叉树,默认存储的时候,忽略了最低的两层。也就是,去除最低两层的存储量为:

所以每棵子树的存储数据为4G*0.00223 = 9.13M。

也就是说,Sector持久化存储比例在1.0022左右。

总结:

Filecoin存储管理的逻辑主要在sector-storage中。Sector的处理任务,可以通过多个Worker完成。每个Worker的存储目录结构一致,Sector数据可以在多个Worker之间通过Http服务传输。Sector处理过程中,最大的存储需求量在512G左右。持久化存储比例为1.0022。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:46ms0-1:108ms