v0.4.8-pre.006

This commit is contained in:
2026-08-05 20:30:16 +02:00
parent 4187643148
commit 80c439c988
16 changed files with 997 additions and 131 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: kb-lib/USAGE.md -->
<!-- version: 11 -->
<!-- version: 12 -->
# Utilisation de kb-lib
@@ -153,6 +153,35 @@ println!("status={:?}", result.status);
Le tag `5` est toujours publié comme `trim`. Son ancien nom pré-stable `withdraw_excess_lamports` est conservé uniquement comme provenance, car aucune release stable ne lexpose comme instruction distincte. Les URL et références externes restent des données on-chain ; le décodeur ne réalise aucun fetch.
Le matérialiseur `MtMetadataMaterializer` accepte les neuf observations dinstructions de la surface exacte `metadata.solana_program_metadata`. Il refuse les transactions échouées et produit un fait de mutation par instruction. Ces faits ne remplacent pas un snapshot de compte : létat final doit être matérialisé depuis la lecture post-exécution.
```rust
let materializer = kb_lib::MtMetadataMaterializer;
if kb_lib::MtApiEventMaterializer::accepts_observation(&materializer, &observation) {
let result = kb_lib::MtApiEventMaterializer::materialize(&materializer, &observation);
println!("materialization status={:?}", result.status);
}
```
Les trois helpers détat acceptent les snapshots déjà validés par le décodeur :
- `materializer_metadata_materialize_solana_program_metadata_account_snapshot` distribue `Buffer` ou `Metadata` ;
- `materializer_metadata_materialize_solana_program_metadata_buffer_snapshot` conserve tous les octets du Buffer sous une forme bornée avec base64 et SHA-256 ;
- `materializer_metadata_materialize_solana_program_metadata_metadata_snapshot` conserve le contenu direct, lURL ou la référence externe, ainsi que lautorité, la mutabilité, le format et la capacité allouée.
```rust
let output = match kb_lib::materializer_metadata_materialize_solana_program_metadata_account_snapshot(
slot,
&snapshot,
) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
println!("projection={}", output.payload_json);
```
Une URL reste une chaîne observée avec `fetched = false`. Une référence externe reste une adresse, un offset et une longueur avec `accountRead = false`. La matérialisation canonique ne réalise aucun enrichissement off-chain.
## Comptes Metaplex Token Metadata
Les fonctions `decoder_metadata_metaplex_token_metadata_decode_*_account` décodent les familles de comptes publiques prises en charge. Le consommateur doit fournir les données et le contexte attendus par la signature exacte de la fonction concernée. Les parseurs conservent les variantes historiques et refusent les longueurs, propriétaires ou suffixes incompatibles.