各位 Nervos 社区朋友与 imToken 用户

2022 年 5 月 10 日 Nervos 成功执行 Mirana 硬分叉升级。在 Nervos 社区的协调下 imToken 作为 Nervos 生态中的钱包服务商第一时间发布了 2.10.0 系列版本支持升级。

新版本发布后 imToken 收到来自 Nervos 社区用户的反馈,发现在使用 imToken 向 Nervos 长地址转账时可能会出现异常。

排查问题

收到反馈后 imToken 与 Nervos 官方团队建立沟通,随后定位到问题的原因:

  • Nervos 的 Mirana 升级中引入了新长地址类型 Bech32m,Nervos 社区常用的 ckb-sdk-js 也支持了此类地址格式;
  • ckb-sdk-js 的地址格式处理过程中未覆盖极端边界场景,会导致将新长地址类型识别成旧长地址类型处理;
  • imToken 兼容新老地址过程中调用 ckb-sdk-js 未能正确处理上述极端边界情况,最终导致向新长地址转账的资金被异常锁定。

受影响的用户有多少

  • 通过筛选检查节点日志,从 2.10.0 版本以来广播的交易中筛选符合上述特征的交易数据,发现极个别用户受到上述问题的影响,经处理所有资金已安全退回受影响的用户钱包;
  • 发现问题后 imToken 将 NervosCKB 服务进行停机维护,并阻断转账功能,将可能扩大的影响面控制在发现的一刻前。

问题如何被处理的

  • imToken 将发布 2.10.2 版本修复上述问题;
  • 低于 2.10.2 的 imToken 版本的 CKB 转账功能在客户端被关闭,收款功能以及余额查询功能不会受到影响;
  • 低版本的用户需要升级到经过安全修复的 2.10.2 后可以正常使用 CKB 转账功能。

学习到了什么

  • 去中心化钱包在用户签名那一刻的数据处理正确性极为重要,每个改动都需要全流程进行完整代码审查,不仅钱包自身代码,也包含相关的社区依赖。代码健壮性直接关乎用户代币安全,需要如履薄冰,不得掉以轻心,这是团队和行业里每个人都要谨记于心的最低原则。imToken 也将在未来的每一次升级中向生态合作伙伴提供更多的测试合作空间,多方共建以覆盖各种场景与边界;
  • 区块链生态发展日新月异,创新者 NervosCKB 做出不少前沿的改进创造,在钱包地址格式上做出利于长远的改动,这需要社区相关产品在这个过程中更紧密地配合,更好理解变化和建立更好的工程协作。

 

imToken & Nervos Network

2022.05.19 SGT