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
比推快讯
更多 >>- 灰度CEO:预计将在未来数月内降低GBTC费用
- 英国FCA计划今年针对加密货币行业推出市场滥用制度
- Whales Market创始人将募集的159,802枚SOL转入币安
- Tokenize Xchange完成1150万美元融资
- SBF的判决定于3月28日进行
- 灰度ETF出现单日最大规模资金外流,推动比特币下跌
- 比特币链上DeFi开发公司OrangeDX完成150万美元融资,GBV Capital等参投
- 日本政府养老投资基金征集信息以寻求多元化投资,包括加密货币、黄金等资产
- 加密合规平台Keyring融资600万美元
- Sygnum代表Matter Labs向富达的机构流动性基金投资5000万美元
- Aavegotchi将在2024年Q2推出使用Base结算的Layer 3 rollup
- Clayton基金会与DEFI平台开发商Credor将合作推出代币证券项目Dignity Token
- 香港证监会:提防以“KKR Global”为名营运的可疑网站
- BitMEX:平台昨日比特币价格闪崩跌至8900美元“涉及极少数账户激进抛售行为”
- IntoTheBlock:6.1万美元是比特币的有力支撑位
- BTC跌破65000美元
- 日本央行17年来首次加息,负利率时代正式终结
- 某循环贷做多ETH的鲸鱼已清仓,预计盈利1095万美元
- Slerf联合LBank发起捐赠活动
- Blast生态DeFi项目Juice完成700万美元融资,Arthur Hayes等参投
- SLERF创始人拟设立可信第三方捐款钱包,旨在为预售贡献者提供退款
- 知情人士:Binance已要求主要经纪商进行更严格的检查,防止美国投资者进入
- 此前通过循环贷买进13,689枚ETH的鲸鱼开始卖出ETH卸杠杆
- 富达向SEC申请在以太坊现货ETF中增加质押选项
- Bakkt重组领导层,任命董事会成员 Andy Main 为新CEO
- Attestor Capital指控FTX债权人Lemma Technologies涉嫌“反悔交易”
- 英伟达宣布推出下一代人工智能超级计算机
- Gnosis 旗下风投Gnosis Venture Studios推出法币出入金解决方案URamp
- 10T Holdings CEO:在 ETF 和减半的影响下,比特币很容易达到 20 万美元
- 去中心化交易所Hercules上线以太坊L2网络Metis
- 富达的 Wise Origin 比特币基金成为第五大最受欢迎的ETF
- 赵长鹏:将推出一个新的教育项目,不会发币
- Stacks联创:比特币 L2 即将迎来爆发
- MicroStrategy盘中跌超15%,现报1506美元
比推专栏
更多 >>观点
项目
比推热门文章
- 灰度CEO:预计将在未来数月内降低GBTC费用
- 英国FCA计划今年针对加密货币行业推出市场滥用制度
- Whales Market创始人将募集的159,802枚SOL转入币安
- Tokenize Xchange完成1150万美元融资
- SBF的判决定于3月28日进行
- 灰度ETF出现单日最大规模资金外流,推动比特币下跌
- 比特币链上DeFi开发公司OrangeDX完成150万美元融资,GBV Capital等参投
- 日本政府养老投资基金征集信息以寻求多元化投资,包括加密货币、黄金等资产
- 加密合规平台Keyring融资600万美元
- Sygnum代表Matter Labs向富达的机构流动性基金投资5000万美元