v0.5.2-pre.005
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md -->
|
||||
<!-- version: 7 -->
|
||||
<!-- version: 8 -->
|
||||
|
||||
# Plan `0.5.2` — restructuration de `ks-wallet`
|
||||
|
||||
@@ -279,26 +279,28 @@ Pour chaque cible, la matrice doit distinguer :
|
||||
- conservation garantie ou non de la même pubkey ;
|
||||
- disponibilité d'une documentation/spécification officielle suffisamment précise pour écrire et tester l'adaptateur.
|
||||
|
||||
Constats documentaires initiaux au `2026-08-10` :
|
||||
La matrice finalisée de `pre.005` se trouve dans [`docs/WALLET_FORMAT_COMPATIBILITY.md`](../WALLET_FORMAT_COMPATIBILITY.md). Les décisions retenues sont :
|
||||
|
||||
| Cible | Surface officiellement documentée | Statut pour `ks-wallet` |
|
||||
|----------------------------|------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Solana CLI | fichier keypair JSON standard | **obligatoire `0.5.2` en import + export** |
|
||||
| Phantom | import/export de private key Solana et recovery phrase | candidat direct ; encodage exact à figer avant implémentation |
|
||||
| Solflare | import par private key, recovery phrase et keystore | candidat direct ; format exact à figer avant implémentation |
|
||||
| Backpack | import avancé par private key ou recovery phrase | candidat direct ; format exact à figer avant implémentation |
|
||||
| Trust Wallet | restauration par recovery phrase et gestion/export de private keys | candidat à caractériser ; contrat Solana précis à vérifier |
|
||||
| Coinbase Wallet / Base app | restauration principalement documentée par recovery phrase ; Solana supporté | **ne pas fabriquer une recovery phrase supposée équivalente** à partir d'une keypair arbitraire ; faisabilité à caractériser |
|
||||
| Cible | Surface officiellement documentée | Décision `pre.005` |
|
||||
|-------------------------------|-------------------------------------------------------------------------------|----------------------------------------------------------------|
|
||||
| Solana CLI / `solana-keygen` | fichier keypair JSON standard | import + export `SolanaCliJson` |
|
||||
| Phantom | import/export d'une private key Solana ; private key Base58 documentée Solana | adaptateur tiers de référence `SolanaPrivateKeyBase58` |
|
||||
| Solflare | import d'une private key copiée depuis Phantom | compatible avec le même wire Base58 ; pas de codec séparé |
|
||||
| Solflare Keystore | import de fichier keystore | TODO version ultérieure non déterminée |
|
||||
| Backpack | import avancé par private key ou recovery phrase | TODO : wire Solana exact à caractériser |
|
||||
| Trust Wallet | restauration/export de private keys | TODO : wire Solana exact à caractériser |
|
||||
| Base app / ex-Coinbase Wallet | restauration principalement documentée par recovery phrase | aucun adaptateur ; aucune mnemonic synthétique |
|
||||
| Coinbase Developer Platform | API d'import/export de clés Solana, distincte de Base app | information de compatibilité seulement, hors adaptateur wallet |
|
||||
|
||||
Une recovery phrase n'est pas interchangeable avec une keypair arbitraire. Si `ks-wallet` ne possède que la keypair finale et pas la mnemonic/seed d'origine avec son chemin de dérivation, il ne doit pas inventer une phrase qui prétend restaurer la même pubkey.
|
||||
|
||||
Dans `0.5.2`, après l'adaptateur Solana CLI obligatoire, **un seul adaptateur vers un wallet tiers** doit être implémenté comme exemple de la mécanique d'interopérabilité. Le choix doit aller au format le plus simple et le mieux spécifié au moment de `pre.005`. Les autres formats jugés faisables sont ajoutés au `TODO.md` pour une version ultérieure non déterminée.
|
||||
Dans `0.5.2`, après l'adaptateur Solana CLI obligatoire, **un seul adaptateur vers un wallet tiers** est retenu comme exemple de la mécanique d'interopérabilité : `SolanaPrivateKeyBase58`, avec Phantom comme cible de référence documentée. Les autres formats jugés faisables sont ajoutés au `TODO.md` pour une version ultérieure non déterminée.
|
||||
|
||||
Tout adaptateur tiers reste soumis à la règle générale : un export contenant le secret est impossible sans validation du mot de passe du `.kswallet`.
|
||||
|
||||
## 7. Modèle public simple de `ks-wallet`
|
||||
|
||||
Le plan ne fixe pas encore les noms Rust définitifs, mais la responsabilité cible peut être représentée ainsi :
|
||||
Les noms Rust principaux sont désormais stabilisés par les tranches exécutables ; la responsabilité peut être représentée ainsi :
|
||||
|
||||
```text
|
||||
ks-wallet
|
||||
@@ -523,15 +525,15 @@ La tranche `pre.003` reste structurelle ; le cycle de vie protégé est activé
|
||||
|
||||
### `0.5.2-pre.005` — migration, import et export
|
||||
|
||||
- import legacy/Solana CLI JSON vers `.kswallet` ;
|
||||
- export `.kswallet` vers le format Solana CLI JSON ;
|
||||
- rollback et conservation du legacy ;
|
||||
- finalisation de la matrice des formats wallets tiers ;
|
||||
- implémentation d'un adaptateur wallet tiers d'exemple, choisi selon simplicité et qualité de spécification ;
|
||||
- report des autres adaptateurs faisables au TODO pour une version ultérieure non déterminée ;
|
||||
- password obligatoire pour tout export secret ;
|
||||
- collisions d'alias/pubkey ;
|
||||
- tests de compatibilité.
|
||||
- [x] import legacy/Solana CLI JSON vers `.kswallet` sans modification de la source ;
|
||||
- [x] export `.kswallet` vers le format Solana CLI JSON après authentification du mot de passe ;
|
||||
- [x] rollback d'une destination native nouvelle si la vérification post-publication échoue et conservation du legacy ;
|
||||
- [x] matrice officielle finalisée dans `docs/WALLET_FORMAT_COMPATIBILITY.md` ;
|
||||
- [x] adaptateur tiers `SolanaPrivateKeyBase58`, avec Phantom comme cible de référence et compatibilité Phantom -> Solflare documentée ;
|
||||
- [x] report Backpack/Trust/Solflare Keystore/Base app au TODO pour une version ultérieure non déterminée ;
|
||||
- [x] password obligatoire pour tout export secret ;
|
||||
- [x] collisions d'alias et de pubkey refusées sans écrasement ;
|
||||
- [x] tests de round-trip Solana CLI JSON/Base58, migration non destructive, permissions privées, collision et mauvais mot de passe.
|
||||
|
||||
### `0.5.2-pre.006` — configuration et consommateurs
|
||||
|
||||
@@ -607,8 +609,8 @@ Le plan est désormais centré sur les décisions suivantes :
|
||||
12. la découverte persistante scanne le répertoire wallet résolu pour les `<alias>.kswallet`, sans faire confiance au seul nom de fichier ;
|
||||
13. changer le password rechiffre la même keypair ; il n'existe pas de rotation du secret Ed25519 conservant la même pubkey ;
|
||||
14. le format keypair JSON des binaires Solana est obligatoire en import et en export dans `0.5.2` ;
|
||||
15. une matrice officielle des formats Phantom/Solflare/Backpack/Trust/Coinbase-Base et autres cibles pertinentes sera finalisée avant les adaptateurs ;
|
||||
16. un seul adaptateur wallet tiers est implémenté dans `0.5.2` comme exemple, les autres formats faisables étant reportés au TODO sans version déterminée ;
|
||||
15. la matrice officielle des formats Phantom/Solflare/Backpack/Trust/Coinbase-Base est finalisée dans `docs/WALLET_FORMAT_COMPATIBILITY.md` ;
|
||||
16. `SolanaPrivateKeyBase58` est l'adaptateur tiers unique de `0.5.2`, avec Phantom comme référence ; les autres formats faisables sont reportés au TODO sans version déterminée ;
|
||||
17. le format v1 utilise Argon2id v19 et XChaCha20-Poly1305 selon `docs/NATIVE_FORMAT.md`, et `pre.004` ferme le modèle runtime avec `WalletPassword` + `UnlockedWallet` ;
|
||||
18. le scan automatique reste limité au répertoire configuré, tandis qu'un consommateur peut fournir explicitement un autre chemin `.kswallet` à `ks-wallet` sans modifier le store ni enregistrer ce fichier automatiquement.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user