kb_materializer_lifecycle
Ce crate matérialise des mutations lifecycle natives stables dans des projections métier génériques et versionnées. Il ne se limite pas à la famille décodée Lifecycle : certaines mutations exactes sont classées Admin ou Audit par le décodeur, puis promues en sortie Lifecycle uniquement lorsque leur effet durable est explicite et que la transaction est réussie et commitée.
Projections actives
- comptes System génériques :
system_account:<operation>:0pour create/allocate ; - Address Lookup Table :
address_lookup_table:<operation>:0; - loaders natifs :
program_loader:<surface>:<operation>:0; - Feature Gate :
feature_gate:revoke_pending_activation:0; - durable nonce System :
durable_nonce_account:<operation>:0pour initialize, advance, authorize, upgrade et withdraw ; - contexte ZK ElGamal :
zk_proof_context:<operation>:0pour l’initialisation demandée par une vérification réussie et pour la fermeture ; - rapport Slashing :
slashing_violation_report:<operation>:0pour l’initialisation après preuve acceptée et la fermeture après rétention minimale.
Le retrait d’un nonce account est projeté comme une opération de retrait avec fermeture conditionnelle. Le runtime détruit le compte seulement lorsque la totalité du solde est retirée ; le matérialiseur ne prétend pas reconstruire l’état final du compte à partir de l’instruction seule et ne duplique pas les deltas SOL déjà présents dans core.
Une vérification ZK ElGamal sans compte de contexte reste en decode/audit. Lorsqu’un contexte est demandé, la projection conserve le compte de contexte, son autorité et le type de preuve, mais ne matérialise jamais la preuve cryptographique. Le rapport Slashing est un enregistrement de violation et non une pénalité appliquée par le programme ; la projection conserve explicitement penaltyAppliedByProgram = false. L’ancien ZK Token Proof Program reste exclu : le runtime Agave actuel est un stub sans effet et les layouts historiques ne disposent pas d’un corpus mainnet fiable.
Règles locales
- Les commentaires de code restent en anglais.
- La documentation Markdown reste en français.
- Les exports publics sont contrôlés depuis
lib.rslorsque le crate expose une bibliothèque. - Toute projection mutable applique
SuccessfulCommittedOnly. - L’applicabilité est filtrée au niveau exact de la surface, de l’entrée et, pour ZK ElGamal, de
contextStateRequested. - Le lifecycle ATA appartient exclusivement à
kb_materializer_token_accountset reste explicitement ignoré ici afin d'éviter toute duplication. - Les écritures/copies de bytecode et changements d’autorité Loader sont pris en charge par les matérialiseurs compliance audit et admin ; Compute Budget, les précompiles de signature et les preuves ZK sans contexte restent dans decode.
Depuis 0.4.1-pre.005, l’applicabilité est déclarée au niveau exact de l’observation. pre.006 ajoute les mutations loader stables, pre.008 la révocation Feature Gate et pre.017 les durable nonce accounts System ainsi que les comptes de contexte ZK ElGamal, puis pre.018 les rapports Slashing. Toute transaction échouée ou observation non commitée reste refusée.
Comptes System génériques
pre.020 ajoute les sorties system_account:<operation>:0 pour create_account, create_account_with_seed, create_account_allow_prefund, allocate et allocate_with_seed. La projection conserve la cible, l'owner, l'espace, la seed et le montant demandé, mais ne recopie pas les deltas SOL déjà présents dans le graphe core.