v0.2.6-pre.017
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user