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
.kspwalletV1 ; - 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 :
Pubkeyest un value type transversal et non secret, donc son contrat viaksp-core-libest justifié ;Keypairpossède le secret Solana et constitue une capacité de signature ;ksp-wallet-libest 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