v0.4.8-pre.008

This commit is contained in:
2026-08-06 06:12:54 +02:00
parent 44088c71c9
commit f576fbade2
52 changed files with 3592 additions and 420 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: kb-pipeline/USAGE.md -->
<!-- version: 6 -->
<!-- version: 8 -->
# Utilisation de kb-pipeline
@@ -152,6 +152,57 @@ where
Les rapports stateful ne constituent jamais une autorisation implicite dexécution.
## Nomenclature interne des modules
Les modules privés sont organisés par domaine :
- `metadata_metaplex_token_metadata_*` ;
- `metadata_solana_program_*` ;
- `spl_ata_stateful` et `spl_elgamal_registry_stateful` ;
- `spl_token_stateful` et `spl_token_2022_*` ;
- `solana_stateful` uniquement pour les primitives Solana Core partagées.
Cette réorganisation ne renomme pas les fonctions et structures publiques existantes.
## Valider historiquement Solana Program Metadata
La validation historique reste un enchaînement de surfaces généralistes, pas un scénario Devnet :
1. `demo_backfill` hydrate un échantillon borné de signatures confirmées ;
2. lextraction Core résout les instructions et comptes ;
3. `demo_decode_replay` sélectionne le Program ID `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` et le décodeur `metadata.solana_program_metadata` ;
4. `materializeAfterDecode` active `materializer.metadata.solana_program_metadata` ;
5. la requête bornée des événements matérialisés permet de vérifier les faits produits.
Le registre générique du desktop fournit désormais ce décodeur et ce matérialiseur. `kb-pipeline-demo-scenarios` nintervient pas dans ce parcours historique.
## Lire et prévalider Solana Program Metadata
```rust
async fn read_program_metadata(
pool: &kb_onchain_transport::HttpEndpointPool,
account: kb_lib::MdPubkey,
) -> kb_core::Result<kb_pipeline::SolanaProgramMetadataStatefulReadResult> {
let request = kb_pipeline::SolanaProgramMetadataStatefulReadRequest {
query_role: "rpc".to_string(),
account,
expected_state: kb_pipeline::SolanaProgramMetadataExpectedAccountState::Any,
min_context_slot: std::option::Option::None,
max_data_bytes: kb_pipeline::MAX_SOLANA_PROGRAM_METADATA_STATEFUL_ACCOUNT_BYTES,
};
let result = kb_pipeline::read_solana_program_metadata_stateful_snapshot(pool, &request).await;
return match result {
std::result::Result::Ok(value) => std::result::Result::Ok(value),
std::result::Result::Err(error) => std::result::Result::Err(error),
};
}
```
Le préflight reçoit lintent typé, le plan produit par `ExMetadataSolanaProgramMetadataExecutor`, les snapshots confirmés et, pour les opérations qui allouent ou agrandissent un compte, une observation explicite du minimum de rent. Il refuse un plan `Deny`, mais les opérations dangereuses restent exécutables lorsquelles sont explicitement approuvées et que lenveloppe commune de sécurité est satisfaite.
Après simulation du message exact, `validate_solana_program_metadata_execution_readiness` vérifie les signers et lautorisation de soumission. Après confirmation, `inspect_solana_program_metadata_post_execution` compare les lectures avant/après pour les neuf opérations.
## Observateurs
Les campagnes longues exposent des traits dobservation distincts pour le backfill, lextraction Core et le replay. Lobservateur peut publier la progression et participer à lannulation coopérative selon le contrat concerné.