R3E는 포괄적인 코드 품질 개선 및 보안 강화를 통해 NeoRust SDK를 업데이트했습니다.

이 기사는 기계로 번역되었습니다
원문 표시

R3E Network은 코드 품질, 보안 및 개발자 경험에 중점을 둔 주요 유지 관리 릴리스인 NeoRust의 새 버전을 출시했습니다.

2021년에 처음 출시된 NeoRust는 개발자가 통합 오류 처리를 제공하는 고수준 API를 사용하여 네오(Neo) N3 기반 애플리케이션을 구축할 수 있도록 지원하는 Rust SDK입니다. 이 프로젝트는 2023년에 GrantShares 펀딩을 받았으며, 암호화, 지갑 관리(비트코인 개선 제안 -39/44 HD 지갑, 멀티시그, 하드웨어 지갑 지원), RPC 기반 노드 상호 작용을 위한 도구를 포함합니다. 또한 스마트 계약 배포 및 실행, NEP-17 토큰 운영, WebSocket 기반 이벤트 모니터링, 수수료 예측을 위한 거래 시뮬레이션, 메인넷, 테스트넷 및 사용자 지정 네트워크 구성도 지원합니다.

버전 1.0.3의 주요 개선 사항

2월 7일에 출시된 NeoRust v1.0.3은 10단계의 코드 검토 및 리팩토링 작업을 거쳐 오류 처리 패턴, 메모리 보안, 성능 최적화 및 플랫폼별 기능을 개선했습니다. 이번 릴리스는 Neo-CLI v3.9.1과 호환되므로 개발자는 2026년 1월 네오(Neo) v3.9 업데이트에서 도입된 계약 수수료 화이트리스트, 트레져리 네이티브 계약, 향상된 실행 수수료 요소 정밀도 등 최신 네오(Neo) 블록체인 기능을 활용할 수 있습니다.

오류 처리 개선

자세한 오류 메시지: 이번 릴리스에서는 40개 이상의 .unwrap() 호출을 자세한 오류 메시지를 포함하는 .expect() 로 대체하여 개발자가 문제를 디버깅할 때의 환경을 개선했습니다. 이제 개발자는 일반적인 패닉 메시지 대신 오류 발생 위치와 원인에 대한 상황별 정보를 확인할 수 있습니다.

코드 정리: 사용되지 않는 필드, 가져오기, 주석 처리된 코드 등을 제거하여 코드베이스 전체에서 사용되지 않는 코드를 없애 유지 관리 부담을 줄이고 SDK 소스 코드를 검토하는 기여자 및 사용자의 코드 가독성을 향상시켰습니다.

성능 최적화

메모리 할당 효율성: Vec::with_capacity() 사전 할당을 통해 9개의 벡터 할당이 최적화되어 런타임 작업 중 불필요한 메모리 재할당이 줄었습니다. 또한 이번 릴리스에서는 불필요한 .clone() 작업 4개를 제거하여 고처리량 시나리오에서 성능에 영향을 줄 수 있는 중복 메모리 복사를 없앴습니다.

경계 검사: 핫패스 디코더 메서드의 버퍼 경계에 대한 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 트레이트가 구현되어 키 쌍이 삭제될 때 개인 키 바이트가 메모리에서 안전하게 지워집니다. AccountNEP6Account 에 대한 사용자 지정 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 의 작업 순서를 재배열하여, 빌림 작업을 HashMap::insert 이동 작업보다 먼저 배치함으로써 Windows 자격 증명 저장소에서 발생하던 이동 후 빌림 컴파일 오류(E0382)가 해결되었습니다. 이 수정 사항을 통해 Windows 사용자는 Windows 기본 자격 증명 관리자에 지갑 자격 증명을 올바르게 저장할 수 있습니다.

코드 품질 개선

DRY 원칙 적용: config.rsneo_config_lock() 헬퍼 함수를 ​​추출하여 api_trait.rs 에 있는 동일한 잠금 및 포이즌 복구 블록 4개를 제거함으로써 코드 유지 관리성을 향상시키고 중복을 줄였습니다.

Clippy 경고 억제 관련 문서화: src/lib.rs 의 모든 #![allow(clippy::...)] 억제 구문에 인라인 설명 주석을 추가하여 특정 린터 경고가 의도적으로 비활성화된 이유를 설명하고 향후 기여자들에게 이러한 결정 사항이 명확하게 보이도록 했습니다.

API 정리: RpcClient 에서 더 이상 사용되지 않는 nns 필드를 제거하고, 사용되지 않는 매크로를 정리하여 공개 API 표면을 간소화하고 어떤 기능이 활발하게 지원되는지에 대한 혼란을 줄였습니다.

플랫폼 지원 및 이용 가능성

NeoRust v1.0.3은 여러 플랫폼용 사전 빌드된 바이너리를 제공합니다.

  • 리눅스: neorust-linux-amd64.tar.gz
  • macOS: neorust-macos-amd64.tar.gz
  • Windows: neorust-windows-amd64.zip

이 바이너리 파일들을 통해 개발자들은 완전한 Rust 개발 환경 없이도 NeoRust의 CLI 도구를 사용할 수 있습니다.

v1.0.3 릴리스 직후, 팀은 CI 구성 및 보안 감사 설정을 개선하기 위해 v1.0.4를 게시했습니다. 이를 통해 모든 자동화된 검사가 문제없이 통과되도록 하고, 상위 버전에서 수정 사항이 없는 알려진 종속성 관련 주의 사항을 적절하게 문서화했습니다.

호환성

NeoRust v1.0.3은 네오(Neo) v3.9.1 이상 버전과 호환되므로 개발자는 최신 네오(Neo) N3 프로토콜 기능을 활용하는 애플리케이션을 구축할 수 있습니다. NeoRust를 사용하는 개발자는 향상된 오류 처리, 암호화 작업 보안 강화, macOS 및 Windows 플랫폼의 자격 증명 저장 관련 수정 사항을 활용하기 위해 이 버전으로 업데이트하는 것이 좋습니다.

NeoRust 최신 버전은 아래 링크(Chainlink) 에서 다운로드할 수 있습니다.
https://crates.io/crates/neo3

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
65
즐겨찾기에 추가
15
코멘트