Files
khadhroony-solana-project/deltas/0.2.5/pre.005-fix.001.md

3.3 KiB

Delta 0.2.5-pre.005-fix.001 — collision constructeur/getter WalletViewDescriptorV1::enabled

Base requise

livraison : 0.2.5-pre.005
workspace.package.version = "0.2.5-pre.5"

Motif

Les validations opérateur de pre.005 échouent dès cargo check --workspace sur ksp-wallet-lib avec :

error[E0592]: duplicate definitions with name `enabled`

WalletViewDescriptorV1 déclarait simultanément :

pub(crate) const fn enabled(slot_id: [u8; KSPWALLET_V1_SLOT_ID_BYTES]) -> Self
pub const fn enabled(&self) -> bool

Rust n'autorise pas deux éléments inhérents de même nom sur un type, même lorsqu'un élément est un constructeur associé et l'autre une méthode prenant &self.

Les erreurs E0599 observées sur les appels .enabled() sont des conséquences de cette collision de définition et non une absence conceptuelle du getter.

Correction

Le getter public est conservé inchangé :

pub const fn enabled(&self) -> bool

Le constructeur crate-private est renommé :

pub(crate) const fn enabled_for_slot(slot_id: [u8; KSPWALLET_V1_SLOT_ID_BYTES]) -> Self

Les deux callsites internes de création du descripteur VIEW sont mis à jour dans wallet.rs.

Ce choix conserve :

  • la surface publique déjà attendue descriptor.enabled() ;
  • la sémantique wire et transcript de pre.003+ ;
  • les invariants VIEW/OWNER ;
  • les vecteurs cryptographiques et le format .kspwallet V1 ;
  • aucune modification de dépendances.

Décision sur solana-keypair

Aucun déplacement de solana-keypair vers ksp-core-lib n'est effectué dans ce fix.

Les règles KSP autorisent solana-keypair comme primitive fondamentale, mais Core ne doit pas devenir un agrégateur automatique de toutes les primitives Solana autorisées. Dans l'architecture actuelle :

  • Pubkey est un value type transversal et non secret, donc son contrat via ksp-core-lib est justifié ;
  • Keypair possède le secret Solana et constitue une capacité de signature ;
  • ksp-wallet-lib est actuellement le composant propriétaire concret du secret, de l'ouverture et de la signature ;
  • les futures couches d'exécution doivent préférer une capacité de signature Wallet plutôt que recevoir une keypair brute.

La propriété de solana-keypair sera réauditée uniquement si une autre crate KSP de bas niveau démontre un besoin concret de manipuler une keypair brute indépendamment de Wallet.

Version Cargo

Le correctif modifie du Rust de production :

0.2.5-pre.5 -> 0.2.5-pre.5.fix.1

Fichiers modifiés

Cargo.toml
crates/ksp-wallet-lib/src/wire.rs
crates/ksp-wallet-lib/src/wallet.rs

Fichiers ajoutés

deltas/0.2.5/pre.005-fix.001.md

Fichiers supprimés

Aucun.

Validation attendue après application

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
cargo test --workspace

Le cargo tree de pre.005 reste pertinent après compilation :

cargo tree -p ksp-wallet-lib
cargo tree -p ksp-wallet-lib -d
cargo tree -i ed25519-dalek@2.2.0
cargo tree -i solana-keypair@3.1.2
cargo tree -i solana-address@2.7.0

Commit attendu

v0.2.5-pre.005-fix.001