Filecoin – 一个越界Bug引发升级
Filecoin在11月24号需要强制升级,好奇看了看最新的代码。不看不知道,一看吓一跳。一个越界的Bug引发了这次升级。这个越界的Bug使程序实现的SDR算法和协议不一致。利用这个越界的Bug可以提升SDR的性能50%左右。
1 官方补丁
在11.02号官方提交一个补丁:
commit 0d17d7466f40e1228a4bab25f8b4861cb0d2da4d Author: Friedel Ziegelmayer <me@dignifiedquire.com> 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
比推快讯
更多 >>- Pantera Capital:很容易想象2025年BTC价格将达到11.7万美元
- Creder推出基于黄金的RWA DeFi产品
- Bitlayer宣布设立200万美元上币基金,支持生态项目代币上线交易平台
- 香港证监会持牌人士称金管局正研究代币化存款在银行间交收和结算等事项
- Wintermute或已成为Robinhood上主要加密货币做市机构
- Web3游戏开发商Seeds Labs完成1200万美元种子轮融资,Solana Foundation等参投
- BAYC持有者因网络钓鱼诈骗丢失三个稀有NFT,总价值超16万美元
- Core Scientific 第一季度自挖比特币价值超过 1.75 亿美元,并扭亏为盈
- 美国众议院投票废除有争议的 SEC 会计公告
- Robinhood 第一季度名义加密交易量达 360 亿美元,较去年同期增长 224%
- 链游Shrapnel支持通过信用卡和借记卡购买SHRAP代币
- CryptoQuant:以太坊的 Dencun 升级使 ETH 再次通胀
- 阿联酋第二大银行Emirates NBD子公司与Ctrl Alt签署RWA代币化协议
- 再质押协议Eigenpie锁仓总价值突破8亿美元
- 美国会议员提出新法案,拟暂时禁止金融机构与经过加密混币器的资金进行交易
- Paxos发布稳定币USDP四月报告:未偿代币总额约1.48亿美元
- Pantera Capital计划于2025年4月推出Pantera Fund V,目标额10亿美元
- Starknet生态AMM协议Ekubo上线代币空投
- BermudAir通过在Polygon链上发行代币化债券完成100万美元募资
- Nethermind与Near和Eigen Labs合作开展 NFFL 项目,以推进链抽象
- 美联储Collins:经济可能需要走弱才能达到2%的通胀目标
- Coinbase已向德国用户开放NEON代币交易
- Web3 社交应用 Phaver 已开放 SOCIAL 空投查询
- 美国9只现货比特币ETF 今日净增持420枚比特币,价值约合2630万美元
- 尼日利亚否认币安提出的贿赂指控,称”缺乏实质内容“
- VanEck 市场向量板块推出MEMECOIN指数,包含DOGE、SHIB等六种代币
- 加密媒体Blockworks收购播客和时事通讯网络The Breakdown
- 某钱包再次将100万枚FET转移到DWF Labs的Binance存款钱包,价值225 万美元
- 加密借贷平台Nexo推出价值超1200万美元的NEXO积分活动
- 前CFTC主席:CBDC、稳定币必须确保自由主义价值观
- 数据:上周Solana节点验证者MEV收入近700万美元,超过以太坊
- Omni Network推出开源EVM框架Octane
- Chainalysis将总部迁至阿联酋迪拜
- 模块化区块链Sophon通过节点销售筹集超6000万美元
- NuLink完成新一轮战略融资,累计达1140万美元
- Lagrange完成1320万美元融资
- FTX:几乎所有客户都将获得全额退款
- SlingShot DAO完成300万美元融资
- Electron labs完成100万美元种子轮扩展融资
- 加密交易平台Arbelos完成2800万美元融资
- CityPay.io完成新一轮融资
比推专栏
更多 >>观点
项目
比推热门文章
- Pantera Capital:很容易想象2025年BTC价格将达到11.7万美元
- Creder推出基于黄金的RWA DeFi产品
- Bitlayer宣布设立200万美元上币基金,支持生态项目代币上线交易平台
- 香港证监会持牌人士称金管局正研究代币化存款在银行间交收和结算等事项
- Wintermute或已成为Robinhood上主要加密货币做市机构
- Web3游戏开发商Seeds Labs完成1200万美元种子轮融资,Solana Foundation等参投
- 【比推每日新闻精选】Robinhood 第一季度名义加密交易量达 360 亿美元,较去年同期增长 224%;美国众议院投票废除有争议的 SEC 会计公告;10x Research:警惕未来十周近20亿美元代币解锁
- BAYC持有者因网络钓鱼诈骗丢失三个稀有NFT,总价值超16万美元
- Core Scientific 第一季度自挖比特币价值超过 1.75 亿美元,并扭亏为盈
- 美国众议院投票废除有争议的 SEC 会计公告