R3E 更新了 NeoRust SDK,帶來了全面的程式碼品質改進和安全性增強。

本文為機器翻譯
展示原文

R3E Network 發佈了 NeoRust 的新版本,這是一個重要的維護版本,重點在於代碼質量、安全性和開發者體驗。

NeoRust 於 2021 年首次發佈,是一個 Rust SDK,它使用統一的錯誤處理機制和高級 API,幫助開發者在Neo N3 上進行開發。該項目於 2023 年獲得 GrantShares 的資助,其功能包括用於密碼學、錢包管理(支持 BIP-39/44 HD 錢包、多重簽名和硬件錢包)以及基於 RPC 的節點交互的工具。此外,它還支持智能合約的部署和調用、NEP-17 代幣操作、基於 WebSocket 的事件監控、用於費用估算的交易模擬,以及主網、測試網和自定義網絡的網絡配置。

v1.0.3 版本的主要改進

NeoRust v1.0.3 於 2 月 7 日發佈,經過十輪代碼審查和重構,解決了錯誤處理模式、內存安全、性能優化以及平臺特定功能等問題。該版本與 Neo-CLI v3.9.1 兼容,確保開發者能夠利用Neo區塊鏈的最新功能,包括合約費用白名單、國庫原生合約以及 2026 年 1 月Neo v3.9 更新中引入的更高執行費用因子精度。

錯誤處理改進

描述性錯誤信息:此版本將 40 多個.unwrap()調用替換為包含描述性錯誤信息的.expect()調用,從而改善了開發人員調試問題的體驗。開發人員現在不再會遇到通用的 panic 信息,而是能夠獲得有關錯誤原因和位置的上下文信息。

代碼清理:刪除死代碼消除了整個代碼庫中未使用的字段、導入和註釋代碼,從而減輕了維護負擔,提高了貢獻者和查看 SDK 源代碼的用戶的代碼可讀性。

性能優化

內存分配效率:通過Vec::with_capacity()預分配,優化了九個向量分配操作,減少了運行時操作期間不必要的內存重新分配。此外,此次更新還移除了四個不必要的.clone()操作,消除了冗餘的內存複製,從而避免在高吞吐量場景下影響性能。

邊界檢查:在熱路徑解碼器方法中添加了用於緩衝​​區邊界的debug_assert!語句,可在開發和測試期間提供額外的安全保證,而不會影響發佈構建性能。

文檔改進

模塊覆蓋率全面提升:本次發佈為之前未添加文檔的模塊添加了完整的文檔,使serde_with_utilscontract_manifest modules的文檔覆蓋率達到 100%。所有 serde 序列化輔助函數現在都包含使用示例。

內存佈局文檔: StackItem枚舉的詳細文檔解釋了變體大小和裝箱注意事項,幫助開發人員在使用Neo虛擬機堆棧項時瞭解內存使用模式。

零拷貝訪問方法: StackItem上的新as_array_ref()as_map_entries()方法提供了對數組和映射數據的高效零拷貝訪問,而無需不必要的分配。

版本一致性:修復了文檔版本不匹配的問題,將lib.rsneo_types/mod.rs中的四個位置的引用從 v1.0.1 更新為 v1.0.3,同時在適當的地方保留歷史引用。

安全改進

NeoRust v1.0.3 引入了多項安全增強功能,旨在保護內存中的敏感加密材料:

內存清零: KeyPair實現了ZeroizeZeroizeOnDrop特性,以便在密鑰對被丟棄時安全地從內存中清除Account字節。Account 和NEP6Account類的自定義Drop實現現在確保加密的私鑰字符串被清零,從而防止敏感數據在使用後仍然保留在內存中。

輸入驗證:新增的輸入驗證斷言可以防止調試版本中出現緩衝區下溢,從而在開發過程中捕獲潛在的安全問題,避免其影響生產環境。

依賴項安全性: jsonwebtoken從 9.2.0 版本升級到 10.3.0 版本,並引入了rust_crypto功能,消除了進程級CryptoProvider要求,並使加密實現現代化。

平臺特定修復

該版本還解決了影響 macOS 和 Windows 系統上憑據存儲的平臺特定問題:

macOS 鑰匙串集成: neo-cli macOS 鑰匙串集成問題已通過將不存在的獨立函數調用( passwords::set_generic_passwordget_generic_passworddelete_generic_password )替換為security-framework 2.11 中的正確SecKeychain方法 API 來修復。這確保了可以使用原生 macOS 鑰匙串正確存儲和檢索Neo錢包憑證。

Windows 憑據存儲:已通過重新排列 ` store_windows_credential函數中的操作順序,修復了 Windows 憑據存儲中出現的“移動後借用”編譯器錯誤 (E0382),將借用操作置於HashMap::insert移動操作之前。此修復程序確保 Windows 用戶能夠正確地將錢包憑據存儲在 Windows 原生憑據管理器中。

代碼質量改進

DRY 原則的應用:從config.rs中提取了neo_config_lock()輔助函數,以消除api_trait.rs中的四個相同的 lock-plus-poison-recovery 塊,從而提高了代碼的可維護性並減少了重複代碼。

Clippy 抑制已記錄:在src/lib.rs中所有#![allow(clippy::...)]抑制中添加了內聯對齊註釋,記錄了故意禁用特定 linter 警告的原因,並確保這些決定對未來的貢獻者可見。

API 清理:已從RpcClient中刪除一個已失效的nns字段,並清理了未使用的宏,從而簡化了公共 API 接口,並減少了對哪些功能正在積極支持的困惑。

平臺支持和可用性

NeoRust v1.0.3 提供適用於多個平臺的預編譯二進制文件:

  • Linux: neorust-linux-amd64.tar.gz
  • macOS: neorust-macos-amd64.tar.gz
  • Windows: neorust-windows-amd64.zip

這些二進制文件使開發人員能夠使用 NeoRust 的 CLI 工具,而無需完整的 Rust 開發環境。

在 v1.0.3 版本發佈後不久,該團隊發佈了 v1.0.4 版本,以解決 CI 配置和安全審計設置問題,確保所有自動化檢查都能順利通過,同時正確記錄已知依賴項建議,即使上游沒有可用的修復程序。

兼容性

NeoRust v1.0.3 與Neo v3.9.1 及更高版本兼容,確保開發者能夠構建利用最新Neo N3 協議特性的應用程序。使用 NeoRust 的開發者應更新至此版本,以受益於改進的錯誤處理、增強的加密操作安全性以及針對 macOS 和 Windows 平臺憑據存儲的平臺特定修復。

您可以從以下鏈接下載最新版本的NeoRust:
https://crates.io/crates/neo3

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
65
收藏
15
評論