各位 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