Files
khadhroony-bot3/olddocs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md
2026-07-28 18:41:30 +02:00

86 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: docs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md -->
<!-- version: 6 -->
# Audit des matérialisations Solana natives
## Conclusion
`0.4.1` clôt les matérialisations natives instructionnelles stables. Les projections actives couvrent les mutations ou profils qui peuvent être déduits de façon déterministe depuis le graphe core transactionnel et les événements décodés.
Les sorties ne sont pas des snapshots finaux de comptes ou de runtime. Les états finaux qui exigent létat précédent/suivant dun compte, les sysvars historiques ou des métriques runtime restent différés jusquà enrichissement explicite du contrat core.
## Projections actives par matérialiseur
| Matérialiseur | Surfaces | Projection |
|---------------------------------|----------------------|---------------------------------------------------------------------------------------------------------------------|
| `MtLifecycleMaterializer` | Address Lookup Table | lifecycle create/freeze/extend/deactivate/close |
| `MtLifecycleMaterializer` | Feature | révocation de feature gate |
| `MtLifecycleMaterializer` | Loaders | déploiement, finalisation et transitions lifecycle stables |
| `MtLifecycleMaterializer` | System | durable nonce, create account et allocate |
| `MtLifecycleMaterializer` | ZK ElGamal | création ou fermeture dun compte de contexte |
| `MtLifecycleMaterializer` | Slashing | initialisation ou fermeture dun rapport de violation |
| `MtAdminMaterializer` | System | assign et assign with seed |
| `MtAdminMaterializer` | Config | écriture opaque bornée avec clés, taille, SHA-256 et préfixe |
| `MtAdminMaterializer` | Loaders | changements dautorité |
| `MtComplianceAuditMaterializer` | Loaders | écritures/copies de bytecode bornées par offsets, tailles, SHA-256 et préfixes |
| `MtComplianceAuditMaterializer` | Compute Budget | profil transactionnel agrégé, last-write-wins, une seule sortie par transaction |
| `MtStakingMaterializer` | Stake | compte, délégation, désactivation, split, merge, withdraw, move stake/lamports, autorités et lockup instructionnels |
| `MtStakingMaterializer` | Vote | compte, autorités, identité, commission, vote state, retraits et dépôt de rewards instructionnels |
## Politique des transactions échouées
Les transactions on-chain échouées restent décodables comme intentions ou diagnostics. Les matérialiseurs mutables utilisent la politique `SuccessfulCommittedOnly` et refusent les observations non commitées au lieu de produire une mutation réussie fictive.
Le profil Compute Budget est une sortie `ComplianceAudit`, pas une mutation détat ; il peut donc être matérialisé même lorsque la transaction échoue. Il décrit le budget demandé par les instructions, pas les unités réellement consommées.
## Absences volontaires
Les surfaces suivantes ne produisent pas de projection dédiée dans `kb_sol_mat_events` à la clôture de `0.4.1` :
- Ed25519 ;
- secp256k1 ;
- secp256r1 ;
- preuves ZK sans compte de contexte ;
- ancien ZK Token Proof historique/no-op.
Leur décodage est déjà un événement daudit borné. Une matérialisation supplémentaire serait une duplication sans consommateur métier dédié.
## États finaux différés
Les éléments suivants ne doivent pas être présentés comme disponibles dans `0.4.1` :
- état final exact dun compte Stake ou Vote ;
- activation/désactivation Stake par epoch ;
- crédits Vote cumulés ;
- rewards recalculées par epoch ;
- état final dun compte System après lamport drain conditionnel ;
- bytecode final complet dun loader ;
- unités compute réellement consommées ;
- frais finaux réellement facturés ;
- résultat cryptographique recalculé pour signature ou preuve ZK.
Ces états exigent une extension du contexte core ou un audit de comptes/snapshots dédié.
## Validations finales `0.4.1`
Les validations utilisateur finales couvrent :
| Surface | Corpus / preuve | Résultat |
|----------------------|--------------------------------|----------------------------------------------------------------|
| System | replay ciblé | 817 inputs décodés, 258 sorties, 52 refus attendus |
| Config | replay ciblé | 96 inputs décodés, 96 sorties admin |
| Stake | replay ciblé | 448 inputs décodés, 447 sorties, 1 refus attendu |
| Vote | replay ciblé | 600 inputs décodés, 600 sorties |
| Compute Budget | replay ciblé | 2 746 inputs décodés, 1 603 profils |
| ZK ElGamal | replay ciblé | 151 inputs décodés, 139 sorties de contexte |
| Address Lookup Table | inventaire/replay ciblé | 104 inputs décodés, 104 sorties lifecycle |
| Slashing | sources officielles + fixtures | aucun corpus public observable, validation synthétique assumée |
Toutes les campagnes de clôture rapportées se terminent avec `unmatched = 0`, `failedInputs = 0`, `unsupported = 0` et des journaux `error.jsonl` vides.
## Décision de clôture
Aucune projection native instructionnelle stable nest identifiée comme manquante dans le périmètre `0.4.1`.
La suite `0.4.2` peut se concentrer sur lexécution : plans, simulation, signature, envoi et validation post-exécution, sans rouvrir le jalon de décodage/matérialisation natif.