
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
比推快讯
更多 >>- 美联储博斯蒂克:2025 年降息一次是合适的
- 美元指数 DXY 短线下挫 10 点,现货黄金短线走高 5 美元
- 美联储博斯蒂克:疲软的就业市场意味着一些政策放松是适当的
- 美国 7 月 JOLTs 职位空缺 718.1 万人,预期 737.8 万人
- 特朗普家族比特币矿企 American Bitcoin 申请市价发行 21 亿美元
- SOL Strategies:8 月末 SOL 持有量达到 402,623 枚
- 美股三大股指开盘普涨,加密货币概念股普涨
- 以太坊提币趋势延续,过去 24 小时 CEX 净流出 885.51 枚 ETH
- 道琼斯指数开盘下跌 73.51 点,纳指上涨 164.23 点
- 美联储官员称部分通胀因关税所致
- 美联储穆萨莱姆表示经济已达到充分就业,将有序降温
- 美股开盘,道指跌 0.06%,标普 500 涨 0.4%
- 美股开盘加密板块涨跌不一,Bitmine 上涨 1.93%
- 上市公司 CDT Equity 批准加密货币储备策略
- Webus 与中国国航签署战略合作,开启会员接入并引入未来 XRP 支付解决方案
- Trust Wallet 推出代币化股票和 ETF 服务
- 美联储官员穆萨利姆对 9 月可能降息持怀疑态度
- AlphaTON Capital 宣布融资以收购 1 亿美元的 TON 代币
- 昊天国际拟将剩余 3.575 亿港元配售资金改投以太坊,预计在一个月内全部动用
- CleanSpark:8 月挖矿产出 657 枚 BTC,比特币持有量达 12827 枚
- pump.fun 新费用模式推出后 24 小时已向创作者发放 200 万美元
- 美联储官员指出劳动力市场和房地产市场面临下行风险
- ArbitrumDAO 批准 2400 万枚 ARB 代币的激励计划以推动 DeFi 增长
- 现货黄金站上 3550 美元/盎司,创历史新高
- Pineapple Financial 将启动 1 亿美元 INJ 金库,FalconX、Abraxas 等参投
- 纽交所上市公司 Pineapple Financial 拟募资 1 亿美元建立 INJ 数字资产财库
- Tom Lee:Bitmine 加密货币储备速度远快于 Strategy,现持有约 89.8 亿美元的 ETH
- 美联储理事沃勒强调独立性的重要性
- 美联储理事沃勒:已明确表示应该在下次会议上降息
- FATF 主席:各国必须披露空壳公司所有者,罪犯正利用加密货币跨境转移资金
- 美元上行动能或难以为继,缺乏基本面支撑
- 与特朗普家族相关的 American Bitcoin 即将在纳斯达克上市
- JOLTS 数据不太可能改变市场对美联储政策前景的现有预期
- 美国合众银行重新提供加密货币托管服务,扩大产品范围至比特币 ETF
- 分析:BTC 在 11.1 万美元徘徊,机构对 ETH 需求仍强劲增长
- Bitget Launchpool 项目 PTB 现已开放投入,锁仓 BGB、PTB 解锁 2240 万枚 PTB
- Etherealize 完成 4000 万美元融资,Electric Capital 和 Paradigm 领投
- AlloyX 集团以 3.5 亿美元估值与纳斯达克上市公司华赢控股达成合并协议
- 吴杰庄:预计明年初将发放首张稳定币牌照
- XPL 获利 3800 万美元巨鲸剩余 XPL 多单浮亏超 360 万美元
- Galaxy 创始人 Novogratz:AI 代理将成为稳定币最大用户
- 以太坊储备概念股盘前普涨,BMNR 涨 3.55%
- AEON Pay 上线巴西 PIX 扫码支付,支持加密货币结算
- 网络犯罪分子利用 AI 语音钓鱼攻击加密货币高管
- Galaxy Digital 宣布在 Solana 链上实现股权代币化
- KuCoin 推出创新云挖矿平台 KuMining,产品将于 9 月 16 日起开放购买
- 灿谷集团 8 月产出 663.7 枚比特币,总计持仓达 5197 枚比特币
- Glassnode:持有 1 万枚以上 ETH 巨鲸暂缓增持
- 分析:USDT 链上交易量创历史新高,市场或在为重大行情做准备
- Cango:8 月比特币产量 663.7 枚,持有总量达 5193.4 枚