
Filecoin – Precommit2计算介绍
Sector计算的部分分为Precommit1和Precommit2两部分。两部分合在一起,称为SDR算法。整个SDR算法的相关计算在之前的文章介绍过。本文着重介绍一下Precommit2的计算逻辑。Precommit2计算分为两部分:1/ Column Hash计算以及Merkle树构造 2/ Replica计算以及Merkle树的构造。相关的逻辑请查看rust-fil-proofs/storage-proofs/porep/src/stacked/vanilla/proof.rs中的transform_and_replicate_layers函数。
1 Column Hash计算
Column Hash计算的实现在generate_tree_c函数。具体的实现分为两个版本:CPU和GPU版本。
if settings::SETTINGS.lock().unwrap().use_gpu_column_builder { Self::generate_tree_c_gpu::<ColumnArity, TreeArity>( layers, nodes_count, tree_count, configs, labels, ) } else { Self::generate_tree_c_cpu::<ColumnArity, TreeArity>( layers, nodes_count, tree_count, configs, labels, ) }
GPU版本的逻辑相对复杂一些,讲讲GPU的逻辑:
进行column计算,需要从硬盘读取11层layer的数据,并整合成column排布。GPU版本,一批批的进行处理,将一部分column读取排序后,通过channel送给GPU处理(Column Hash以及构造Merkle树)。代码逻辑大体上就是两个线程,一个读取layer的数据,column排序,另外一个GPU处理。每次batch的节点个数默认是400000,也就是135M左右。在column计算完成后,GPU构造Merkle树。
2 Replica计算
Replica是最后一层layer的数据和原始数据编码之后的结果。每次Encoding一部分Replica,通过channel送给GPU(构造Merkle树)。每次batch的节点个数默认是700000,也就是22M左右。注意,batch的是Encoding的结果。
3 Merkle树的构造
Merkle树的构造都是采用merkletree库。这个库实现通用的Merkle树的结构和计算。通用的Merkle树,指的是Merkle并不只是通常我们理解的二叉树,而是分成3层:top,sub和base。
如上图的示例,top是1叉,sub是3叉,base是4叉。在Precommit2计算中,tree_c和tree_r_last都是8叉树:
type Tree = storage_proofs::merkle::OctMerkleTree<DefaultTreeHasher>; pub type OctMerkleTree<H> = DiskTree<H, U8, U0, U0>;
4 GPU加速
在Precommit2计算中,Column Hash的计算以及Merkle树的构造是采用GPU加速。相关的代码在neptune代码库中。有意思的是,这部分的代码并不是用cuda或者opencl实现的,而是一种新的更高层的语言:Futhark。
5 相关宏定义
FIL_PROOFS_USE_GPU_COLUMN_BUILDER – 使用GPU,进行column hash的计算
FIL_PROOFS_MAX_GPU_COLUMN_BATCH_SIZE – 每次计算Column的batch大小,默认400000
FIL_PROOFS_COLUMN_WRITE_BATCH_SIZE – 每次刷Column数据的batch大小,默认262144
FIL_PROOFS_USE_GPU_TREE_BUILDER – 使用GPU,构造Merkle树
FIL_PROOFS_MAX_GPU_TREE_BATCH_SIZE – 每次Encoding计算的batch大小,默认700000
总结:
Precommit2阶段,主要是计算Column Hash以及生成Replica,并构造相应的Merkle树。其中,Column Hash的计算以及Merkle树的构造可以采用GPU加速。GPU的实现采用一种新的高层语言:Futhark。
来源:Star Li
比推快讯
更多 >>- 马耳他资管公司 Samara Asset Group 披露持有 525 枚 BTC,相当于其市值的 28%
- 0xSun 谈 pump.fun 发币参与策略:可根据公售速度制定不同的策略
- 挪威工业投资公司 Aker ASA 通过比特币寻求资本平衡配置,目前持仓达 754 枚
- BlockFi 破产管理人与美国司法部达成和解,驳回 3500 万美元诉讼
- Solana 区块链策略游戏 Honeyland 被 BRAVO READY 收购
- 数据:CoinUp 平台币 CP 现报 0.47 美元,较开盘价涨幅逾 15 倍
- 某地址向 Hyperliquid 存入 135 万 USDC 并做以 2 倍杠杆多 PUMP
- 某鲸鱼/机构归集休眠 2 年钱包,总计积累 51,431 枚 ETH,浮盈超 20 倍
- Sunriselayer:空投申领检查器已上线,申领练习将于北京时间 15 日 8 时结束,主网及 TGE 于 Q3 进行
- 数据:比特币 ETF 产生的需求近两日已达日产量的 20 倍左右
- 疑似质押服务商 Arthapala 过去一小时再次向 CEX 充值 4120 枚 ETH
- Arthur Hayes 过去一天通过多种渠道购买价值 150.5 万美元 ENA
- 继 Coinbase 之后,OpenSea、MoonPay、波卡等项目官方账号头像换为胖企鹅形象
- Aethir:节点许可证转移系统上线,系首个解锁节点二级市场的加密项目
- 某聪明钱加仓 40 倍比特币空单,入场均价达 11.77 万美元
- 美国比特币现货 ETF 首次连续两日净流入超 10 亿美元,该 ETF 推出以来仅 7 次日流入量超 10 亿
- 分析师:历史数据显示 7 月、10 月是比特币表现最稳定的增长月份
- 3A 区块链游戏 Seraph 启动紧急回购应对价格波动,链上地址透明公示
- 恺英网络香港子公司获 SFC 颁发 4 号及 9 号牌照,加速全球化布局
- PUMP 于 Hyperliquid 盘前市场未平仓量已达 1.52 亿美元,资金费率偏空
- Hyperliquid 未平仓合约达 10.6 亿美元,创历史新高
- 多个昨日热门代币出现“钓鱼线”走势,普遍下跌 10%-30%
- 某新建钱包地址买入 11.88 万枚 HYPE,均价 46.27 美元
- Crypto.com 探索在迪拜免税店引入加密货币支付
- 24 小时现货资金流入/流出榜:ETH 净流出 2.53 亿美元,BTC 净流出 2.23 亿美元
- Meta 收购语音初创公司 PlayAI,以增强音频技术
- Letsbonk 创始人:平台网站更新预计下周陆续推出
- 某鲸鱼昨晚 15 倍杠杆做空 ETH,仓位高达 3.7 万枚 ETH,名义价值 1.1 亿美元
- 路华证券拟申请香港虚拟资产交易牌照并引入稳定币支付结算业务
- Bitcoin Treasury Capital:以 500 万瑞典克朗增持 4.4 枚 BTC,当前持仓总量增至 152 枚
- 数据:过去 7 天 USDC 流通量约增加 7 亿枚
- Huma 2.0 存款将于 7 月 13 日开放,单个钱包额度 50 万美元
- RootData:QUAI 将于一周后解锁价值约 184 万美元的代币
- 某 Smart Money 地址清仓 141.7 枚 BTC,持币 1 个月获利 182 万美元
- 男子因 SIM 卡交换盗取 2200 万美元加密货币刑期增加至 12 年
- FTX/Alameda Staking 地址向 Bitgo Custody 转移 18.98 万枚 SOL,价值 3117 万美元
- Binance Alpha 昨日交易量报 4.24 亿美元,BR、KOGE、quq 分列前三
- 华尔街日报:谷歌耗资 24 亿美元获 Windsurf 技术授权并聘用部分员工
- Linea 项目负责人:本月发布的公告将与 TGE 相关
- CoinUp.io 平台币 CP 将于今日 15 点(UTC+8)全面开放交易
- 1inch 团队过去 16 小时疑似再次购买 1181 万枚 1INCH,价值 330 万美元
- “美联储传声筒”提及鲍威尔辞职报道:第一反应是无视它,鲍威尔已做出过坚决表态
- Clanker 已使用 GoPlus 安全代币发行标准 SafeToken Protocol 并获得代币安全认证
- 稳定币基础设施初创公司 Zerohash 计划以近 10 亿美元估值融资 1 亿美元,Interactive Brokers 领投
- 非营利开发组织 Argot 6 小时前出售 1206.6 枚 ETH 换取 361 万美元
- 某巨鲸昨日买入 3490 亿枚 PEPE,累计持仓价值 623 万美元
- 黄仁勋再度减持英伟达 22.5 万股,价值约 3640 万美元
- 某新建地址 2 小时前从 FalconX 提现 16,773 枚 ETH
- OpenAI 30 亿美元收购 Windsurf 失败,后者转投谷歌
- GMX 项目方于 7 小时前卖出 1 万枚 ETH,或以向用户进行资产返还
比推专栏
更多 >>观点
比推热门文章
- 挪威工业投资公司 Aker ASA 通过比特币寻求资本平衡配置,目前持仓达 754 枚
- BlockFi 破产管理人与美国司法部达成和解,驳回 3500 万美元诉讼
- Solana 区块链策略游戏 Honeyland 被 BRAVO READY 收购
- 数据:CoinUp 平台币 CP 现报 0.47 美元,较开盘价涨幅逾 15 倍
- 某地址向 Hyperliquid 存入 135 万 USDC 并做以 2 倍杠杆多 PUMP
- 某鲸鱼/机构归集休眠 2 年钱包,总计积累 51,431 枚 ETH,浮盈超 20 倍
- Sunriselayer:空投申领检查器已上线,申领练习将于北京时间 15 日 8 时结束,主网及 TGE 于 Q3 进行
- 数据:比特币 ETF 产生的需求近两日已达日产量的 20 倍左右
- 疑似质押服务商 Arthapala 过去一小时再次向 CEX 充值 4120 枚 ETH
- Arthur Hayes 过去一天通过多种渠道购买价值 150.5 万美元 ENA