This commit is contained in:
2026-07-23 16:37:12 +02:00
parent 99c345f2f2
commit 0da75c1311
2159 changed files with 230833 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
<!-- file: docs/CONFIGURATION.md -->
<!-- version: 3 -->
# Configuration
La configuration sert de contrat commun entre les applications Tauri, les workers, les tests locaux, les stores, le RPC, le wallet et les exécuteurs.
## Fichier principal
```text
config/example.config.json
```
Ce fichier ne contient pas de commentaires, car JSON ne le permet pas.
## Profils
La configuration racine contient plusieurs profils et un seul profil actif :
```json
{
"active_profile": "local_devnet",
"profiles": []
}
```
Les profils fournis sont `local_devnet`, `mainnet_research` et `mainnet`.
## Logging
Chaque sortie définit son nom, activation, sink, niveau, chemin, rotation, format, ANSI et liste de targets. Toute crate opérationnelle disposant d'un target `tracing` canonique doit recevoir ses fichiers `debug.log`, `info.log` et `error.jsonl` dédiés dans chaque profil.
`kb_wallet` devient une crate opérationnelle en `0.4.2-pre.003`; ses logs ne contiennent jamais de secret ou d'octets de keypair.
## Endpoints HTTP et WS
Le modèle principal conserve les endpoints HTTP JSON-RPC et WebSocket Solana standards. Les rôles permettent de sélectionner un endpoint selon le type de requête et d'appliquer débit, burst, concurrence, subscriptions et pause 429.
Les transports gRPC, Helius enrichi et LaserStream restent planifiés dans leurs jalons dédiés.
## URL et clés API
Une clé API doit rester sous forme de placeholder dans l'URL :
```text
https://mainnet.helius-rpc.com/?api-key=${HELIUS_API_KEY}
```
Aucune clé réelle ne doit être committée.
## Wallet
Le bloc `wallet` contient :
```text
wallet_dir
temporary_wallet_enabled
temporary_wallet_alias
temporary_wallet_persist
cluster
localnet_send_enabled
devnet_send_enabled
testnet_send_enabled
mainnet_send_enabled
```
Le profil local devnet persiste le wallet sous :
```text
wallets/temporary/local_devnet/local-devnet-operator.json
```
Cette persistance est nécessaire pour conserver la même adresse entre plusieurs sessions, recevoir un airdrop et signer une séquence de tests. Le fichier contient un keypair Solana standard non chiffré : il est exclu du dépôt, protégé par permissions privées sur Unix et réservé au laboratoire local/devnet.
La validation refuse :
- un alias vide, trop long ou contenant un séparateur de chemin ;
- `temporary_wallet_persist = true` lorsque le wallet temporaire est désactivé ;
- un wallet temporaire actif sur `mainnet-beta`.
## Exécution
Le bloc `execution` contient :
```text
dry_run_default
require_simulation
require_operator_confirmation
localnet_max_spend_lamports
devnet_max_spend_lamports
testnet_max_spend_lamports
mainnet_max_spend_lamports
max_fee_lamports
max_compute_unit_price_micro_lamports
recent_blockhash_max_age_slots
send_max_retries
confirmation_poll_interval_ms
confirmation_max_attempts
devnet_airdrop_max_lamports
```
Règles :
- toute dépense configurée exige la simulation ;
- tout envoi activé exige un plafond de dépense positif pour le cluster correspondant ;
- mainnet exige la confirmation opérateur ;
- le plafond de frais et l'âge maximal du blockhash doivent être strictement positifs ;
- lintervalle et le nombre de polls de confirmation sont strictement bornés ;
- le plafond dairdrop Devnet doit rester nul dans les profils non Devnet ;
- `dry_run_default` reste actif dans tous les profils fournis.
## Règle de sécurité
Aucun secret ne doit être écrit dans le dépôt, les logs, PostgreSQL ou un payload Tauri. Les futurs backends chiffrés ou hardware wallet resteront confinés dans `kb_wallet` et exposeront uniquement une interface de signature.