R3E Network ha publicat una nova versió de NeoRust, una versió de manteniment substancial centrada en la qualitat del codi, la seguretat i l’experiència del desenvolupador.
Llançat per primera vegada el 2021, NeoRust és un SDK de Rust que ajuda els desenvolupadors a construir Neo N3 mitjançant una API d’alt nivell amb gestió d’errors unificada. El projecte va rebre finançament de GrantShares l’any 2023 i inclou eines per a la criptografia, la gestió de carteres (carteres BIP-39/44 HD, suport de cartera de maquinari i multi-sig) i interacció de nodes basada en RPC. També admet el desplegament i la invocació de contracte intel·ligent, les operacions de testimoni NEP-17, la supervisió d’esdeveniments basada en WebSocket, la simulació de transaccions per a l’estimació de tarifes i la configuració de xarxa per a MainNet, TestNet i xarxes personalitzades.
Millores clau a la v1.0.3
Llançat el 7 de febrer, NeoRust v1.0.3 segueix un esforç de revisió i refactorització de codi de 10 rondes que aborda els patrons de gestió d’errors, la seguretat de la memòria, les optimitzacions de rendiment i la funcionalitat específica de la plataforma. El llançament és compatible amb Neo-CLI v3.9.1, garantint que els desenvolupadors puguin aprofitar les últimes funcions de la cadena de blocs de Neo, com ara la llista blanca de tarifes de contracte, el contracte natiu del Tresor i la precisió millorada del factor de la tarifa d’execució introduïda a l’actualització de Neo v3.9 de gener de 2026.
Millores en la gestió d’errors
Missatges d’error descriptius: la versió substitueix més de 40 .unwrap() trucades amb .expect() que conté missatges d’error descriptius, millorant l’experiència del desenvolupador quan es depuren problemes. En lloc de trobar missatges de pànic genèrics, els desenvolupadors ara reben informació contextual sobre què va fallar i on.
Neteja de codi: l’eliminació del codi mort ha eliminat els camps no utilitzats, les importacions i el codi comentat a tota la base de codi, reduint la càrrega de manteniment i millorant la llegibilitat del codi per als col·laboradors i usuaris que examinen la font de l’SDK.
Optimitzacions de rendiment
Eficiència de l’assignació de memòria: s’han optimitzat nou assignacions vectorials Vec::with_capacity() preassignació, reduint les reassignacions de memòria innecessàries durant les operacions en temps d’execució. El llançament també elimina quatre innecessaris .clone() operacions, eliminant les còpies de memòria redundants que podrien afectar el rendiment en escenaris d’alt rendiment.
Comprovació de límits: afegit debug_assert! Les declaracions per als límits de la memòria intermèdia en mètodes de descodificador de ruta calenta ofereixen garanties de seguretat addicionals durant el desenvolupament i les proves sense afectar el rendiment de la compilació de la versió.
Millores de documentació
Cobertura completa del mòdul: la versió afegeix documentació completa als mòduls no documentats anteriorment, aconseguint una cobertura de documentació del 100% per a serde_with_utils i contract_manifest modules. Tots els ajudants de serialització de serde ara inclouen exemples d’ús.
Documentació de disseny de memòria: documentació detallada per a StackItem enum explica les mides de variants i les consideracions de boxa, ajudant els desenvolupadors a entendre els patrons d’ús de la memòria quan treballen amb elements de pila de màquines virtuals Neo.
Mètodes d’accés sense còpies: nou as_array_ref() i as_map_entries() mètodes activats StackItem proporcionar un accés eficaç sense còpies a les dades de la matriu i del mapa sense assignacions innecessàries.
Coherència de la versió: es corregeixen els desajustos de la versió de la documentació, actualitzant les referències de la v1.0.1 a la v1.0.3 lib.rs i neo_types/mod.rs en quatre ubicacions, tot conservant les referències històriques si escau.
Millores de seguretat
NeoRust v1.0.3 introdueix múltiples millores de seguretat enfocades a protegir el material criptogràfic sensible a la memòria:
Zero de la memòria: Zeroize i ZeroizeOnDrop s’han implementat trets per KeyPair per esborrar de manera segura els bytes de clau privada de la memòria quan s’elimina el parell de claus. Personalitzat Drop implementacions per Account i NEP6Account ara assegureu-vos que les cadenes de claus privades xifrades estiguin zero, evitant que les dades sensibles persisteixin a la memòria després de l’ús.
Validació d’entrada: s’inclouen afirmacions de validació d’entrada afegides per evitar desbordaments de memòria intermèdia en les compilacions de depuració, detectant possibles problemes de seguretat durant el desenvolupament abans que arribin a la producció.
Seguretat de dependència: jsonwebtoken es va actualitzar de la versió 9.2.0 a la 10.3.0 amb el rust_crypto característica, eliminant el nivell de procés CryptoProvider requeriment i modernització de la implementació criptogràfica.
Correccions específiques de la plataforma
El llançament també aborda problemes específics de la plataforma que afecten l’emmagatzematge de credencials a macOS i Windows:
Integració del clauer de macOS: neo-cli La integració del clauer de macOS es va solucionar substituint les trucades de funcions autònomes inexistents (passwords::set_generic_password, get_generic_password, delete_generic_password) amb el correcte SecKeychain mètode API de security-framework 2.11. Això garanteix que les credencials de la cartera Neo es puguin emmagatzemar i recuperar correctament mitjançant el clauer natiu de macOS.
Botiga de credencials de Windows: es va resoldre un error del compilador de préstec després del moviment (E0382) a l’emmagatzematge de credencials de Windows reordenant les operacions a store_windows_credentialposant el préstec abans del HashMap::insert operació de moviment. Aquesta solució garanteix que els usuaris de Windows puguin emmagatzemar correctament les credencials de la cartera al Gestor de credencials natiu de Windows.
Millores de la qualitat del codi
Aplicació del principi SEC: A neo_config_lock() funció d’ajudant en config.rs es va extreure per eliminar quatre blocs idèntics de recuperació de bloqueig i verí api_trait.rsmillorant el manteniment del codi i reduint la duplicació.
Supressió de Clippy documentada: es van afegir comentaris de justificació en línia a tots #!(allow(clippy::...)) eliminacions a src/lib.rsdocumentant per què les advertències específiques de linter es desactiven intencionadament i garantint que aquestes decisions siguin visibles per als futurs col·laboradors.
Neteja de l’API: un mort nns camp des de RpcClient s’ha eliminat i s’han netejat les macros no utilitzades, racionalitzant la superfície de l’API pública i reduint la confusió sobre quines funcions s’admeten activament.
Suport i disponibilitat de la plataforma
NeoRust v1.0.3 proporciona binaris preconstruïts per a diverses plataformes:
- Linux:
neorust-linux-amd64.tar.gz - macOS:
neorust-macos-amd64.tar.gz - Windows:
neorust-windows-amd64.zip
Aquests binaris permeten als desenvolupadors utilitzar les eines CLI de NeoRust sense requerir un entorn de desenvolupament complet de Rust.
Poc després del llançament de la v1.0.3, l’equip va publicar la v1.0.4 per abordar la configuració de CI i els paràmetres d’auditoria de seguretat, assegurant-se que totes les comprovacions automatitzades passen de manera neta i documentant correctament els avisos de dependència conegudes sense correccions amunt disponibles.
Compatibilitat
NeoRust v1.0.3 és compatible amb Neo v3.9.1 i posteriors, garantint que els desenvolupadors puguin crear aplicacions que aprofitin les últimes funcions del protocol Neo N3. Els desenvolupadors que utilitzin NeoRust haurien d’actualitzar-se a aquesta versió per beneficiar-se d’una millora en el maneig d’errors, de la seguretat millorada per a les operacions criptogràfiques i de les solucions específiques de la plataforma per a l’emmagatzematge de credencials a macOS i Windows.
L’última versió de NeoRust es pot descarregar des del següent enllaç:
https://crates.io/crates/neo3
