
Filecoin – 一个越界Bug引发升级
Filecoin在11月24号需要强制升级,好奇看了看最新的代码。不看不知道,一看吓一跳。一个越界的Bug引发了这次升级。这个越界的Bug使程序实现的SDR算法和协议不一致。利用这个越界的Bug可以提升SDR的性能50%左右。
1 官方补丁
在11.02号官方提交一个补丁:
commit 0d17d7466f40e1228a4bab25f8b4861cb0d2da4d Author: Friedel Ziegelmayer <[email protected]> Date: Mon Nov 2 12:06:36 2020 +0100 fix(storage-proofs-porep): fix graph generation - expander: divide before casting to u32 - drg: move predecessor to the first position
这个补丁比较重要,这个补丁“修正”了当前的协议。整个SDR算法中节点的连接关系也发生了改变。
先讲讲简单的 drg: move predecessor to the first position改动,比较简单:
- parents[m_prime] = node - 1; + // Immediate predecessor must be the first parent, so hashing cannot begin early. + parents[predecessor_index] = node - 1;
一个节点的Base父亲节点的依赖,从原来的是最后一个Base父亲节点依赖上一个节点,变成了第一个Base父亲节点依赖上一个节点。简单的说,如果Base父亲节点的最后一个才依赖上一个节点,那Base父亲节点的前面一些节点可以先计算,无须依赖上一个节点的计算。使用老的算法,虽然不能完全提前算整个节点的结果,但是能提前一点好一点。改成最新的协议,这一点点也不能提前算了。
2 越界Bug
重点在于这个改动:expander: divide before casting to u32改动:
原始逻辑,就是在is_legacy包裹住的逻辑:
transformed as u32 / self.expansion_degree as u32
transformed的值是通过Feistel加密算法生成,具体的逻辑含义可以查看之前的文章。即使在不需要知道逻辑的情况下,可以估算出整个表达式的计算结果的范围。self.expansion_degree是固定值8。整个表达式的最大范围为:
2^32/8 = 2^29
注意的是,在32G扇区大小的情况下,节点个数是2^30次方。而这个表达式因为限制了transformed是32bit的无符号整数,导致了整个exp parents的范围在2^29次方范围内,并不是2^30次方。换个说法,在32G扇区大小的情况下,某一层的节点只依赖上一层的前一半节点。64G扇区大小的情况下,上一层依赖相对更少。
总结升级前的exp parents的依赖逻辑如下图:
也就是说,之前的SDR协议逻辑并不是Filecoin协议规定的SDR协议逻辑。在之前的SDR协议基础上,SDR的计算过程可以优化如下:
在某一层的一半计算完成后,可以立即开始下一层的计算,加速整个SDR的计算过程。整个计算可以加速50%左右。Oops。
3 升级时间
在build/params_mainnet.go定义了下两个版本的升级时间:
const UpgradeCalicoHeight = 265200 const UpgradePersianHeight = UpgradeCalicoHeight + (builtin2.EpochsInHour * 60)
Calico将在265200高度升级,也就是北京时间11月25号进行升级。Persian在Calico后2.5天完成。在两个版本中间的2.5天是个混合版本,新的和老的SDR协议都支持,从Persian开始,只支持升级后的SDR协议。
总结:
Filecoin官方在11月25号强制升级。升级前的SDR算法实现在越界漏洞,Exp父亲节点的依赖只和上一层的前一半的数据有关。SDR算法可以通过多个并行计算提高性能。升级后的SDR算法修复了漏洞,并同时加强了Base父亲节点的依赖关系。
来源:Star Li
比推快讯
更多 >>- 美民主党参议员提出修正案:拟禁止官员通过推广加密货币获利
- 马斯克呼吁在美成立新政党,继续抨击“大而美”法案
- 黄金创2007年以来最大半年涨幅
- 欧盟将接受特朗普提出的统一关税方案,但寻求关键豁免
- 特朗普本周将与贸易团队会面,以确定国家关税税率
- 特朗普:利率应降至1%,鲍威尔及其委员会都难辞其咎
- 高盛将美联储降息预期时间提前至9月
- Robinhood(HOOD)涨幅扩大至 9.39%,续创历史新高
- Robinhood 计划到年底前将支持的代币化美股种类扩展至“数千种”
- Robinhood 正向欧洲用户赠送 OpenAI 和 SpaceX 代币
- Robinhood 旗下 Layer 2 暂定名为 Robinhood Chain
- 市场消息:REX-OSPREY SOL 现货 ETF 将于周三开始交易
- 消息人士:白宫拟推动将 Cynthia Lummis 提出的条款纳入《美丽大法案》
- Robinhood:ETH 和 SOL 质押服务已面向美国客户开放
- 当前主流 CEX、DEX 资金费率显示市场仍处于看跌态势
- “内幕哥”40 倍比特币和 25 倍以太坊空单目前整体浮盈 19.7 万美元
- 两家韩国今日机构已申请韩元稳定币商标
- 美联储博斯蒂克:没必要通过加息来应对通胀
- 比特币早期布道者 Lou Kerner 加盟播客平台 PodcastOne 担任加密顾问
- WLFI:稳定币 USD1 的 24 小时交易量超越 USDC,达 33.7 亿美元续创新高
- WeWork 联创拟重启区块链碳信用平台 Flowcarbon 的代币发行计划
- Origin Protocol:拟用协议收入回购 OGN 代币
- 白宫经委会主任哈塞特:美联储可能会降低利率
- 美联储博斯蒂克:预计明年将有三次降息
- 某新建地址从 Coinbase 提币 2.46 万枚 SOL 并进行质押
- Metaplanet CEO:今年二季度比特币收益率达到 129.4%
- Robinhood(HOOD)上涨 6.72%再创历史新高,11 时将公布加密相关重要公告
- 彭博 ETF 分析师:支持质押的 SOL 现货 ETF 或将于本周上线
- CertiK 安全报告:钓鱼攻击造成近 4 亿美元损失,成 2025 Q2 最大威胁
- 日本加密交易所运营商 BACKSEAT 完成种子轮融资,累计融资达约 969 万美元
- 1inch 宣布钱包新增支持 Solana
- 美财长:稳定币立法或将于 7 月中旬完成
- 比特币挖矿难度下调 7.48%至 116.96 T
- 美国财长贝森特:关税可能回退至 4 月 2 日水平,由特朗普决定
- 美财长:7 月 9 日前一周将出现一波贸易协议的密集签署
- 美国财长贝森特:即将寻找美联储主席鲍威尔的继任者
- 美国财长贝森特:可能会看到利率下降,通胀非常温和
- 美财长贝森特:特朗普预计将在 7 月 4 日前签署税收法案
- 美股加密货币股普涨,Circle(CRCL) 涨 3.74%
- 最高法院驳回保护 Coinbase 用户数据免受美国国税局审查的请求
- 不丹王国政府地址 20 分钟前将 137 枚 BTC 存入 Binance
- Amber International 签署总额为 2550 万美元的私募认购协议
- 德国储蓄银行拟向私人客户开放加密货币交易服务
- Aptos Labs CEO Avery Ching 被任命为美国 CFTC 数字资产小组委员
- Greeks.live:多数交易者认为空头清算密集可能推动 BTC 价格至 11.3 万美元甚至创新高
- XRP Ledger 的以太坊兼容侧链已在主网上线
- Fundstrat 联创 Tom Lee 被任命为 BitMine 董事长
- 观点:市场对美联储降息前景担忧,本周非农数据或为美指提供支撑
- 罗素 200 强价值指数新增 Strategy
- 拉斯维加斯巨型球 MSG Sphere 展示比特币 Logo