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
评论