Files
khadhroony-bot3/olddocs/archivekbot2/kb_materializer_transaction_annotations/README.md
2026-07-30 17:50:29 +02:00

4.0 KiB
Raw Blame History

kb_materializer_transaction_annotations

Ce crate fournit une projection réutilisable dannotations de transaction. La première surface active est SPL Memo v1, v3 et v4 ; le domaine nest volontairement pas fusionné avec metadata, admin, lifecycle ou compliance audit.

Projection Memo

Le matérialiseur accepte uniquement les observations spl_memo dont le Program ID, la surface et lentrée correspondent exactement. add_memo, memo_intent et invalid_memo_attempt sont reconnus afin que la politique commune puisse enregistrer un refus explicite, mais seule une observation add_memo réussie et commitée produit une sortie.

La sortie TransactionAnnotation conserve :

  • signature, slot et chemin dinstruction outer/inner ;
  • génération et Program ID exacts ;
  • texte UTF8 complet dans la borne de 4 096 octets ;
  • longueur et SHA-256 du payload ;
  • signataires exigés, observés et réellement vérifiés par la génération ;
  • état committed, version de projection et provenance du matérialiseur ;
  • clé didempotence déterministe fondée sur signature, chemin, Program ID et hash.

Pour v1, les comptes signers restent observables mais la liste verified est vide, car le runtime historique ne les vérifie pas. Pour v3/v4, une projection commitée exige légalité ordonnée entre signataires requis et observés, doublons compris.

Persistance et replay

La sortie utilise le store commun kb_sol_mat_events avec la famille transaction_annotation. Aucune migration SQL supplémentaire nest nécessaire et les événements decode/core ne sont pas dupliqués. Le ledger commun assure :

  • replay identique et même version : skip ;
  • force replay : remplacement atomique des sorties appartenant à la version ciblée ;
  • changement de version : identité de processor distincte et déterministe.

Les transactions échouées, observations non commitées, UTF8 invalides et validations de signataires invalides restent uniquement dans kb_sol_decode_events. Les comptes complets, flags writable, préfixes diagnostics, erreurs UTF8 et preuves détaillées restent également dans lévénement décodé ; la projection ne conserve que les champs utiles à la consultation dannotations.

Consultation

La fenêtre demo_decode_replay affiche les sorties comme un journal dannotations, et non comme une série OHLC : slot, signature, instruction path, génération, texte, longueur, signataires vérifiés, hash et provenance. La lecture passe par le contrat borné DecodePipelineStore::list_materialized_events, filtré exactement sur le processor transaction_annotations et la famille transaction_annotation ; aucun SQL libre ni payload JSON arbitraire ne traverse lUI.

La démo dexécution Memo v4 réutilise ce même contrat de lecture pour vérifier la projection après confirmation. Trois transactions Devnet réelles ont chacune produit exactement une annotation ; le second replay a été skipped sans sortie supplémentaire ni refus. Cette projection reste un journal consultable et corrélable, pas une agrégation temporelle de type OHLC.

Le parcours Mainnet du 14 juillet 2026 a acquis puis extrait 300 transactions réelles, 100 par Program ID. Le replay a décodé 102 instructions v1, 439 v3 et 100 v4 sans unmatched ni échec de décodage. La projection a produit respectivement 69, 422 et 100 annotations ; les 33 refus v1 et 17 refus v3 correspondaient aux intentions issues de transactions échouées. Un second replay v3 non forcé a sélectionné zéro entrée, validant le skip idempotent du ledger. Les campagnes forcées v3/v4 ont également reproduit les mêmes nombres de sorties.

Règles locales

  • SuccessfulCommittedOnly est appliqué avant toute sortie.
  • Un payload décodé incohérent échoue fermé avec un diagnostic stable.
  • Le target tracing canonique est kb_materializer_transaction_annotations.
  • Aucun log ne contient de clé privée ni de texte Memo complet.