v0.2.6-pre.017

This commit is contained in:
2026-08-22 09:39:13 +02:00
parent 5c0be421da
commit 362123f357
22 changed files with 896 additions and 109 deletions

View File

@@ -280,7 +280,7 @@ ksp-onchain-transport-lib
Cette composition est le rôle de `0.2.6 — ksp-app-wallet-desk`, pas de `ksp-wallet-lib`.
## Wire/runtime V2 (`0.2.6-pre.015` / `pre.016`)
## Wire/runtime V2 (`0.2.6-pre.015` / `pre.016` / `pre.017`)
Le codec structurel V2 reste disponible directement pour les outils qui travaillent explicitement au niveau wire :
@@ -301,3 +301,41 @@ inspect_locked_wallet_file(...) auto-détection V1/V2
```
`DEFAULT_WALLET_FORMAT` et `LATEST_SUPPORTED_WALLET_FORMAT` sont intentionnellement indépendants. L'arrivée d'un futur V3 ne changera pas automatiquement le default V2.
## Migration V1 -> V2 explicite
Migration en mémoire :
```rust
let migrated = ksp_wallet_lib::migrate_wallet_v1_to_v2(
v1_bytes.as_slice(),
ksp_wallet_lib::OwnerPassword::new(owner_password),
Some(ksp_wallet_lib::ViewPassword::new(target_view_password)),
)
.await?;
```
Migration fichier vers une nouvelle destination :
```rust
let migrated = ksp_wallet_lib::migrate_wallet_file_v1_to_v2(
source_v1,
destination_v2,
ksp_wallet_lib::OwnerPassword::new(owner_password),
Some(ksp_wallet_lib::ViewPassword::new(target_view_password)),
)
.await?;
```
`destination_v2` est no-clobber et `source_v1` reste inchangé. Pour remplacer le fichier courant après vérification stale-state :
```rust
let migrated = ksp_wallet_lib::migrate_wallet_file_v1_to_v2_in_place(
source_v1,
ksp_wallet_lib::OwnerPassword::new(owner_password),
Some(ksp_wallet_lib::ViewPassword::new(target_view_password)),
)
.await?;
```
Ces exemples utilisent `?` uniquement comme écriture illustrative de consumer ; les règles internes KSP restent celles du workspace. Une source VIEW activée exige `Some(target_view_password)` ; une source VIEW désactivée exige `None`. Le credential VIEW cible peut être l'ancien mot de passe ou un nouveau mot de passe choisi sous autorité OWNER. Identité Solana, alias, notes et note IDs sont conservés. Aucun open générique ne migre le fichier.