Cointime

扫码下载App
iOS & Android

链上安全分析报告:iZiFinance智能合约中心化风险分析报告

项目方

iZiFinance 是一个利用 zkSync 的去中心化金融协议,zkSync 是以太坊的一个二层扩容解决方案。zkSync 可以在以太坊上实现快速和低成本的交易,同时保留了一层网络的安全性和可组合性。然而,在 zkSync 上进行智能合约开发时,gas 优化仍然是一个重要的方面,因为它影响了协议的性能和盈利能力。

在这个分析中,我们将检查 iZiFinance 的一个核心合约,iZiSwapPool.sol,并找出一种通过消除一个多余的表达式来减少 gas 消耗的简单方法。

iZiSwapPool合约

The iZiSwapPool 合约实现了 iZiFinance 上的流动性池和代币交换的逻辑,它遵循了 IiZiSwapPool 接口,该接口定义了合约的函数和事件。其中一个函数是 modifyFeeChargePercent,它允许合约的所有者调整每个池的费用收取百分比。费用收取百分比是一个参数,它决定了交换费用在流动性提供者和协议之间的分配。modifyFeeChargePercent 函数的代码如下:

该函数接受一个 uint24 类型的参数,叫做 newFeeChargePercent,它表示要设置的新的费用收取百分比。它还有一些修饰符和 require 语句,以确保只有所有者可以调用该函数,并且 newFeeChargePercent 是有效的。代码分析这段合约代码是用 Solidity 写的,表示一个修改费用收取百分比的函数。它似乎是以一种安全的方式设计的,考虑到在进行实际修改之前应用的限制(第 534-536 行)。

然而,第 535 行 require(newFeeChargePercent >= 0, "FP0"); 实际上是不必要的。这是因为在 Solidity 中,uint(无符号整数)数据类型不能为负。uint24 是一个无符号整数类型,范围是从 0 到 2^24 - 1。

因此,检查 newFeeChargePercent 是否大于或等于 0 是同义反复,因为根据定义,一个无符号整数不能小于 0。因此,这一行构成了一个同义反复,可以在不影响代码功能或引入任何安全漏洞的情况下安全地移除。紧接着它的那一行,require(newFeeChargePercent <= 100, "FP0");,就足以确保 newFeeChargePercent 在期望的范围内(0-100)。

中心化风险

我们还发现了一些可能损害协议安全性和用户资产安全的中心化风险。

安全建议

对于iZiFinance项目方来说,这里有 10 条安全小提示以保护用户的链上资产免受中心化风险的影响。

  1. 对 setFarm() 和 setWrapToken() 等关键函数施加时间锁,只允许在未来指定的时间进行修改,给社区时间讨论和达成共识
  2. 要求多个钱包地址的多重签名批准才能调用 enableFeeAmount() 和 newPool() 等影响费用和奖励的函数
  3. 为 expandObservationQueue() 和 collectFeeCharged() 等函数实现基于角色的访问控制,限制只有指定角色才能调用
  4. 在合约部署时,使 startBlock、endBlock、rewardPerBlock 等核心参数不可变,不允许后续更改
  5. 建立一个 DAO 治理结构,要求对敏感函数的调用需要社区提案和投票
  6. 采用模块化架构,分离职责,避免任何单个模块过度集中化
  7. 建立一个带有多重签名认证的紧急停止机制,如果出现问题,可以暂停协议
  8. 定期进行外部安全审计,并及时处理发现的问题,以降低中心化控制风险
  9. 在开发过程中,采用模糊测试和其他方法来识别和消除中心化控制漏洞
  10. 遵循最小特权原则,只给予角色和账户必要的最小权限

这些中心化风险源于合约所有者可能对合约的参数和函数有过度的控制,这或许能让所有者操纵协议或伤害用户。我们也希望这篇分析能为改进 iZiFinance 的智能合约提供一些有用的见解和安全建议。

Follow Us

Twitter: @MetaTrustLabs

Website: metatrust.io

评论

所有评论

推荐阅读

  • 英伟达市值不到两个月蒸发1万亿美元 估值回落至人工智能热潮掀起之前的水平

    7月8日,在不到两个月的时间里市值蒸发约1万亿美元后,英伟达股票触及自人工智能热潮掀起并推动该股飙升以来的最低廉水平。这家芯片制造商的图形处理器(GPU)仍然主导着人工智能数据中心市场。但其股价自5月14日创下历史新高以来已下跌16%,投资者纷纷调整人工智能交易策略,卖出英伟达,转而投资其他半导体制造商,尤其是内存市场的制造商。数据显示,抛售潮导致英伟达基于未来12个月预期盈利的市盈率为18倍。上一次触及如此低廉的水平还是在2019年初。更直观地了解其下跌程度之深,可以从与基准股指的比较看出,标普500指数的预期市盈率为20倍,纳斯达克100指数的预期市盈率接近23倍。

  • 博通盘前直线拉升转涨

    7月8日,博通美股盘前直线拉升转涨,此前一度跌近3%。消息面上,苹果与博通新签订多年期协议,该协议预计将超过300亿美元,生产超过150亿颗美国制造的芯片。

  • 存储股盘前集体下挫,闪迪跌超6%,美光科技跌超5%

    7月8日,美股存储芯片股盘前集体下跌,其中,闪迪跌超6%,美光科技跌超5%,西部数据、慧荣科技、希捷科技跌超4%((下图由扣子APP生成)。消息面上,有媒体称苹果正在测试长鑫存储生产的内存芯片,计划将其用于在华销售的设备。苹果还在美国科技企业中牵头游说华盛顿,争取允许更广泛地使用长鑫存储的产品,但该公司目前尚未承诺将这些芯片用于商业量产。

  • 苹果与博通新签订多年期协议 预计将超300亿美元

    7月8日,苹果:公司与博通新签订多年期协议,该协议预计将超过300亿美元,生产超过150亿颗美国制造的芯片。新的多年期协议还包括对科罗拉多州柯林斯堡设施的扩建。博通将投资15亿美元扩建柯林斯堡的设施。

  • 三菱日联:不应过分解读美联储会议纪要细节

    7月8日讯,三菱日联分析师Derek Halpenny表示,今晚美联储将公布6月FOMC会议纪要,但建议不要对会议纪要细节过度解读,因为6月会议前的背景与现在已有很大不同。点阵图很可能是在会议前一周(截至6月12日当周)提交的,如果现在召开会议,FOMC点阵图不会显示有九人支持加息。就这一点而言,隔夜指数互换曲线对加息的定价似乎偏高。目前7月29日会议加息的可能性定价仍接近30%,考虑到劳动力市场数据已经走弱,这一定价看起来过高。截至2027年3月,市场定价了近40个基点的加息,但我们认为届时降息的可能性大于加息。(金十)

  • 多家基石投资人、国资机构及战略投资者集体表态:长期看好MiniMax

    7月8日,在MiniMax基石投资者解禁窗口临近之际,超八成 Pre IPO 及基石股东明确表态长期看好并将继续持有。表态机构包括 Aspex、博裕、IDG、Janchor、Martis Fund等基石投资人,国寿投资、徐汇资本等国资机构,以及阿里、米哈游、云启、明势等早期股东,涵盖产业战略投资者、国际长线基金、国有资本及地方产业投资平台、市场化专业投资机构和公募基金等多元类型。8日下午,MiniMax盘中快速拉升涨近20%,最高报389.8港元。

  • 以色列正在为可能与伊朗恢复战斗做准备

    7月8日,据以色列媒体Walla,以军与美国中央司令部就伊朗问题举行会议,以色列正在为可能与伊朗恢复战斗做准备。

  • 新罕布什尔州将就1亿美元比特币支持债券提案举行公开听证会

    据The Block报道,美国新罕布什尔州官员将于周三就一项发行最高1亿美元比特币支持债券的提案举行公开听证会。该提案最终仍需获得州长凯利·阿约特(Kelly Ayotte)及执行委员会的批准方可落地。

  • Kraken过去24小时流出2108枚BTC

    据数据监测,Kraken交易所出现大额资金流动。过去24小时,该交易所钱包流出2108枚BTC,价值2.11亿美元,当前其BTC钱包余额为14.59万枚BTC。

  • 特朗普结束停火发言后 欧洲央行加息预期升温

    7月8日讯,市场定价显示,欧洲央行今年进一步收紧货币政策的预期升至36个基点,高于周二的25个基点,此前特朗普发表停火结束言论。(金十)