# 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 ; - l’intervalle et le nombre de polls de confirmation sont strictement bornés ; - le plafond d’airdrop 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.