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

7.0 KiB
Raw Blame History

kb_execution_api

Cette crate définit les contrats communs de la couche dexécution. Elle ne dépend ni du wallet, ni du RPC, ni du stockage, ni des décodeurs et ne construit aucune instruction Solana.

API publique

Capacités et traits

Export Usage
ExecutionCapability Réponse exacte Supported { operation_code } ou Unsupported { reason_code, reason } pour un couple programme/opération.
ExecutionCapability::supported(...) Construit une capacité supportée avec un code stable.
ExecutionCapability::unsupported(...) Construit un refus documenté avec code et message.
ExecutionCapability::is_supported() Teste la capacité sans perdre le diagnostic du variant complet.
TypedInstructionExecutor Contrat actuel : expose capability(...) et build_prepared_plan(...) sans I/O, signature ou envoi.
InstructionExecutor Pont historique fondé sur ExecutionRequest/ExecutionPlan; il reste disponible pour les crates réservées.
ExecutionSupport Résultat historique No, Maybe ou Yes; les exécuteurs opérationnels doivent éviter Maybe.

Politiques

Export Usage
ExecutionPolicy Agrège cluster, simulation, blockhash/nonce, plafonds, signataires autorisés, dry-run et post-validation.
ExecutionCluster Cluster attendu : Localnet, Devnet, Testnet ou Mainnet.
ExecutionClusterPolicy Autorisation du cluster et double confirmation Mainnet.
ExecutionSimulationPolicy Indique si la simulation est obligatoire.
ExecutionBlockhashKind Sélectionne un recent blockhash ou un durable nonce.
ExecutionBlockhashPolicy Porte lâge maximal du blockhash ou le compte et lautorité nonce.
ExecutionCostLimit Plafonds de dépense, frais totaux et prix par compute unit.
PostExecutionValidationPolicy Étapes exigées après confirmation : canonical insert, core extraction, decode replay et matérialisation.

Tous les types de politique implémentent des valeurs par défaut conservatrices : Devnet, simulation obligatoire, recent blockhash borné, dry-run actif et Mainnet désactivé.

Plan préparé

Export Usage
PreparedExecutionPlan Contrat immutable transmis de lexécuteur à la sécurité puis à lassembleur Solana.
PlannedInstruction Program ID, code dopération, comptes ordonnés et payload exact.
PlannedAccount Public key et flags signer/writable dun compte dinstruction.
RequiredSigner Public key et rôle stable dun signataire requis.

Un plan contient également lexécuteur/version, lidentifiant dintent, le fee payer, la politique, les lamports dépensés ou verrouillés et le prix Compute Budget demandé.

Résultats dorchestration

Export Usage
ExecutionSimulationResult Preuve provider-neutral dune simulation, avec contexte cluster/blockhash, frais, unités, logs et erreur runtime.
ExecutionSendResult Signature acceptée par le RPC et slot de soumission éventuel.
ExecutionConfirmationStatus État final ou intermédiaire de confirmation.
ExecutionConfirmationResult Résultat borné des polls de confirmation.
PostExecutionDiagnostic Résumé des étapes canonical/core/decode/materialization après exécution.

Compatibilité et helpers JSON

Export Usage
ExecutionRequest Requête historique program_id + operation_code + payload_json.
ExecutionPlan Plan historique sérialisé, sans garantie dêtre directement envoyable.
serialize_payload_json(...) Sérialise un serde_json::Value compact avec kb_core::Error.
serialize_payload_json_pretty(...) Sérialise le même payload en forme lisible.

Exemple dimplémentation dun exécuteur

impl kb_execution_api::TypedInstructionExecutor for MyExecutor {
    type Intent = MyIntent;

    fn capability(
        &self,
        program_id: &kb_model::ProgramId,
        operation_code: &str,
    ) -> kb_execution_api::ExecutionCapability {
        // Return an exact Supported or Unsupported result.
    }

    fn build_prepared_plan(
        &self,
        intent: &Self::Intent,
    ) -> kb_core::Result<kb_execution_api::PreparedExecutionPlan> {
        // Validate and encode only. Do not access RPC or sign here.
    }
}

Frontières

kb_execution_api ne décide pas quun plan est sûr, ne compile pas de message Solana et ne contacte aucun endpoint. Le flux attendu est :

executor intent
  -> PreparedExecutionPlan
    -> kb_execution_safety
      -> kb_execution_solana
        -> kb_rpc
          -> post-execution orchestration