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_utils和contract_manifest modules的文檔覆蓋率達到 100%。所有 serde 序列化輔助函數現在都包含使用示例。
內存佈局文檔: StackItem枚舉的詳細文檔解釋了變體大小和裝箱注意事項,幫助開發人員在使用Neo虛擬機堆棧項時瞭解內存使用模式。
零拷貝訪問方法: StackItem上的新as_array_ref()和as_map_entries()方法提供了對數組和映射數據的高效零拷貝訪問,而無需不必要的分配。
版本一致性:修復了文檔版本不匹配的問題,將lib.rs和neo_types/mod.rs中的四個位置的引用從 v1.0.1 更新為 v1.0.3,同時在適當的地方保留歷史引用。
安全改進
NeoRust v1.0.3 引入了多項安全增強功能,旨在保護內存中的敏感加密材料:
內存清零: KeyPair實現了Zeroize和ZeroizeOnDrop特性,以便在密鑰對被丟棄時安全地從內存中清除Account字節。Account 和NEP6Account類的自定義Drop實現現在確保加密的私鑰字符串被清零,從而防止敏感數據在使用後仍然保留在內存中。
輸入驗證:新增的輸入驗證斷言可以防止調試版本中出現緩衝區下溢,從而在開發過程中捕獲潛在的安全問題,避免其影響生產環境。
依賴項安全性: jsonwebtoken從 9.2.0 版本升級到 10.3.0 版本,並引入了rust_crypto功能,消除了進程級CryptoProvider要求,並使加密實現現代化。
平臺特定修復
該版本還解決了影響 macOS 和 Windows 系統上憑據存儲的平臺特定問題:
macOS 鑰匙串集成: neo-cli macOS 鑰匙串集成問題已通過將不存在的獨立函數調用( passwords::set_generic_password 、 get_generic_password 、 delete_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





