Files
khadhroony-bot3/migration/khadhroony-bot2-reference/docs/DEVNET_EXECUTION.md
2026-07-23 16:37:12 +02:00

6.2 KiB
Raw Blame History

Validation dexécution Devnet

Ce document décrit le premier parcours réseau réel de la couche dexécution native et sa fenêtre Tauri Devnet. Le test backend reste opt-in et aucune activation Mainnet nest autorisée.

Périmètre

Le parcours exécute une instruction System transfer depuis le wallet temporaire persistant du profil local_devnet vers un destinataire éphémère créé uniquement pour le test.

wallet persistant
  -> vérification du genesis hash Devnet
    -> contrôle du destinataire et du minimum rent-exempt
      -> lecture du solde
        -> airdrop plafonné si nécessaire
          -> plan System transfer
          -> blockhash et estimation des frais
            -> simulation exacte
              -> signature locale
                -> envoi avec preflight
                  -> confirmation bornée
                    -> getTransaction
                      -> insertion canonique
                        -> extraction core
                          -> decode replay System

Les clés privées restent dans kb_wallet. Elles ne sont ni sérialisées dans les résumés, ni envoyées à une WebView, ni écrites dans PostgreSQL ou les logs.

Préconditions

  • le profil local_devnet doit rester configuré sur le genesis hash Devnet officiel ;
  • temporary_wallet_enabled, temporary_wallet_persist et devnet_send_enabled doivent être actifs ;
  • la simulation et la confirmation opérateur doivent rester obligatoires ;
  • PostgreSQL doit être disponible pour la validation canonique/core/decode ;
  • le rôle http_queries doit accepter getTransaction et les lectures dexécution ;
  • le rôle http_transactions doit accepter simulation, envoi et lecture des statuts.

Le wallet persistant par défaut est créé sous :

wallets/temporary/local_devnet/local-devnet-operator.json

Ce fichier nest pas chiffré. Il est exclusivement destiné à Localnet/Devnet et ne doit jamais recevoir de fonds réels.

Exécution du test réel

Depuis la racine du workspace :

KB_DEVNET_EXECUTION_TEST=1 \
KB_POSTGRES_TEST_URL='postgres://solana:solana@localhost:5432/solana_test' \
KB_DEVNET_WALLET_DIR='./wallets/temporary/local_devnet' \
KB_DEVNET_AIRDROP_LAMPORTS=0 \
KB_DEVNET_TRANSFER_LAMPORTS=1000000 \
cargo test -p kb_pipeline optional_devnet_system_transfer_from_env -- --nocapture

Variables :

  • KB_DEVNET_EXECUTION_TEST=1 autorise explicitement le test réseau ;
  • KB_POSTGRES_TEST_URL sélectionne la base de validation ;
  • KB_DEVNET_WALLET_DIR peut isoler le wallet utilisé par le test ;
  • KB_DEVNET_AIRDROP_LAMPORTS fixe le montant maximal demandé au faucet lorsque le solde est insuffisant ;
  • KB_DEVNET_TRANSFER_LAMPORTS fixe le transfert System réel.

Les valeurs restent soumises aux plafonds de ExecutionConfig. Une valeur dairdrop supérieure à devnet_airdrop_max_lamports ou un transfert supérieur à devnet_max_spend_lamports est refusé avant tout appel mutable.

Résultat attendu

Pour un destinataire inexistant, le pipeline appelle getAccountInfo, puis getMinimumBalanceForRentExemption avec une longueur de données nulle. Le transfert est refusé avant simulation lorsquil est inférieur au minimum retourné. Lorsquune simulation échoue malgré ces contrôles, lerreur remontée conserve lerreur runtime structurée et les vingt premières lignes de logs.

Le test doit confirmer :

  • cluster classifié Devnet ;
  • simulation exacte réussie ;
  • signature locale vérifiée ;
  • signature RPC identique à la signature calculée ;
  • statut confirmed ou finalized ;
  • transaction canonique présente ou déjà existante ;
  • extraction core terminée ou déjà courante ;
  • decode replay System terminé sans input unmatched ou failed.

Lairdrop peut être absent lorsque le wallet possède déjà un solde suffisant. Le destinataire reste éphémère et sa clé privée nest pas persistée. Après signature, tout échec ultérieur conserve la signature dans le résumé avec un diagnostic de létape concernée.

Fenêtre Tauri

demo_execution_solana_core est accessible depuis la fenêtre principale. Elle expose uniquement les profils Devnet utilisant un wallet temporaire persistant. Elle permet de générer une adresse destinataire jetable, de simuler exactement le message ou de signer/envoyer après confirmation opérateur. Le plan, les comptes, les signataires, la simulation, la confirmation et les résultats canonical/core/decode sont affichés en lecture seule. La clé privée du wallet source reste exclusivement dans le backend Rust.

Un airdrop demandé par la fenêtre reste soumis au plafond du profil et peut échouer lorsque le faucet public est limité. Un wallet déjà financé peut être utilisé avec une valeur dairdrop nulle.

Limites

  • le faucet Devnet peut appliquer des limites temporaires ;
  • getTransaction peut devenir disponible après la confirmation de statut, doù les retries bornés ;
  • le parcours utilise actuellement une transaction legacy avec recent blockhash ;
  • durable nonce, ALT et transactions v0 seront validés dans des tranches dédiées ;
  • aucune opération Mainnet nest autorisée par ce test.

Validation de clôture 0.4.2

Le 13 juillet 2026, la commande complète a été exécutée avec :

KB_DEVNET_EXECUTION_TEST=1 \
KB_POSTGRES_TEST_URL='postgres://solana:solana@localhost:5432/solana_test' \
KB_DEVNET_WALLET_DIR='./wallets/temporary/local_devnet' \
KB_DEVNET_AIRDROP_LAMPORTS=0 \
KB_DEVNET_TRANSFER_LAMPORTS=1000000 \
cargo test -p kb_pipeline -- --nocapture

Les 56 tests de kb_pipeline ont réussi, y compris optional_devnet_system_transfer_from_env. Le wallet était déjà financé, aucun airdrop na été demandé et le parcours a confirmé la chaîne complète jusquau replay post-exécution. Les 45 tests de kb_store_pg ont également réussi avec PostgreSQL réel.

Cette validation ne généralise pas lautorisation à toutes les opérations administratives stateful. Elle prouve le parcours dorchestration commun ; ALT, Config, Feature, Slashing, ZK, Stake, Vote et loaders restent soumis à leurs contrôles spécifiques avant toute future activation mutable.