安比完成路印协议 3.0 安全审计报告

经过了三个多月的代码审查和分析,安比实验室完成了对路印协议 3.0 beta3 版本的安全审计工作。我们很高兴与社区分享这个报告,并希望就其反馈的一些问题做进一步说明。

您可以通过下面的链接下载 PDF 版的安全审计报告:

  • 中文版本:https://github.com/Loopring/protocols/raw/master/packages/loopring_v3/security_audit/LoopringV3_Report_CN.pdf
  • 英文版本:https://github.com/Loopring/protocols/raw/master/packages/loopring_v3/security_audit/LoopringV3_Report_EN.pdf

*安比的审计结论 *

安比完成路印协议 3.0 安全审计报告

*审计结果 *

安比完成路印协议 3.0 安全审计报告

*风险评估 *

安比发现协议代码中存在以下可优化之处。 我们相信这些风险相对都非常低,即使不做任何处理也并不会影响协议的安全性。

安比完成路印协议 3.0 安全审计报告

路印对协议的改进和说明

安比在审计过程中与路印进行了比较实时的沟通,因此上述发现的问题多数在审计结束前就已经被解决。

  • 4.3.1 “getLRCFeeStats() 接口定义与实现不一致。” ⟶ 该问题已经通过重构得到解决。
  • 4.3.2 “SignatureBasedAddressWhiteList 中 assembly code 无法实现功能。”⟶ 在最新代码中已经 fix 这个 bug 并增加了测试用例。
  • 4.3.3 “讨论 Operator 对 maker/taker 订单选择的影响力。” ⟶ 我们已经就此进行了讨论。其实协议设计时可以赋能中继决定哪个订单是 Maker,哪个是 Taker。
  • 4.3.4 “多处使用 transferTokens() 未检验返回值。” ⟶ 这个方法是自检查的,因此调用者可以不去检查返回值。
  • 4.3.5 “transferDeposit() 函数实现意图不明确。”⟶ 该 private 方法实际完成具体的充值转账功能。其中将 source 作为参数传入而不是直接试用 msg.sender 是因为想在将来支持类似 Gas Station 的机制。
  • 4.3.6 “Block 中 timestamp 数据类型需要考虑溢出问题。” ⟶ 目前时间戳类型是 uint32,可以支持 2106 年前的时间。我们觉得这个问题不大,在 2106 年前路印一定会使用新技术对协议进行不断升级。
  • 4.3.7“TransformRingSettlement DataGadget 电路代码存在优化空间。” ⟶目前对链上数据可用性 OCDA 的压缩逻辑是被禁用的,因此不会对实际电路的效果有任何影响,因此目前没有考虑和优化相关逻辑,而是保持这部分电路更容易理解和更改。我们相信电路中的数据压缩在将来是有用处的,只是在电路复杂度和合约复杂度之间要做个平衡。
  • 4.3.8 “TakerMakerMatchingGadget 中电路注释错误。” ⟶ 已经在多个电路优化代码中得到解决。
  • 4.3.9 “电路中 generateKeyPair() 调用逻辑不符合实际。” ⟶ 也已经在多个电路优化代码中得到解决,并且 generateKeyPair() 仅仅在测试代码中试用;在产品环境中证明钥和验证钥都是在可信计算的基础上预生产好的。
  • 4.3.10 “电路中 OffchainWithdrawalBlock 类存在冗余字段。” ⟶ 这个问题也已解决。
  • 4.4.1 “需考虑极端情况下的异常处理”⟶ 我们已经考虑以太坊极度拥堵(交易需要等待一个星期)和中继数据全部丢失这两种极端情况,并对协议参数做了调整。

我们相信安比反馈的问题都已被讨论和解决,最新的代码中没有非更改不可之处。

电路分析

路印协议的电路部分比较难理解。我们从审计报告中截图分享安比对电路的理解,希望其他计划和正在使用零知识证明的团队有启发或参考。

充值电路

充值电路都是链上行为,除了用来完成充值功能,它还用来帮助用户开户,重置交易秘钥,和取消所有历史订单。

安比完成路印协议 3.0 安全审计报告

链上提现电路

链上提现电路保障中继在一定时间段内必须对提现进行处理,优点是有最坏情况下的时间保障;缺点是需要用户付费。

安比完成路印协议 3.0 安全审计报告

链外提现电路

链外提现的优点是提现申请零手续费;缺点是中继可以选择不处理特定的提现申请 — 比如提现金额非常小,在这种情况下用户依然可以坚持使用链上提现的方式迫使中继处理任意额度的提现请求。中继可以选择完全不支持链外提现请求。

安比完成路印协议 3.0 安全审计报告

环路交易电路

该电路是交易的核心,并且被高度优化以降低区块链上 calldata 的大小。

安比完成路印协议 3.0 安全审计报告

链上撤单电路

该电路保障用户的订单一定会在一定时间内取消,但这种请求需要区块链上的交易费用。我们建议用户使用链外取消订单的方式取消订单,就和使用中心化交易所一样。如果担心有安全风险,可以为订单设定过期时间;或定期通过充值电路更改交易密码,这样可以一次性取消过去所有的订单。

安比完成路印协议 3.0 安全审计报告

致 谢

安比实验室是国内首屈一指的区块链和智能合约安全审计机构。这是路印与安比的第二次合作。第一次合作时安比帮助路印完成了协议 2.0 的安全审计和合约的形式化证明(Formal Verification);这次再度合作,一是因为第一次审计的结果非常专业,另一方面是安比实验室的创始人和团队对零知识证明与多方计算有学术研究经验。我们在此感谢安比实验室的审计工作。

如果您对审计报告有疑问或建议,请电邮联系我们和安比实验室。

⭑ 安比实验室官网:https://secbit.io
⭑ 安比的电邮:info@secbit.io
⭑ 安比的 Twitter 账号:@secbit_io

访问下方链接关注更多内容

推特:https://twitter.com/loopringorg
微博:https://weibo.com/loopringfoundation

Reddit:https://www.reddit.com/r/loopringorg

中文电报:https://t.me/loopringfans

>>> 【买币首选】DragonEx龙网交易所,买比特币和以太坊等币简单快捷,现在注册交易手续费终身4折,每天现金分红 + 30%年化理财收益,注册并中级认证即可获得抽DT奖励(100%中奖),1小时内极速出入资金。

...

...

>>【8年老牌】现在注册Gateio比特儿交易所,即可享受一年内交易手续费9折优惠+糖果空投。

...

...

相关推荐

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址