0.1.0
This commit is contained in:
85
docs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md
Normal file
85
docs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md
Normal file
@@ -0,0 +1,85 @@
|
||||
<!-- file: docs/NATIVE_SOLANA_MATERIALIZATION_AUDIT.md -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# 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 d’un 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 |
|
||||
|------------------------------------|----------------------|---------------------------------------------------------------------------------------------------------------------|
|
||||
| `kb_materializer_lifecycle` | Address Lookup Table | lifecycle create/freeze/extend/deactivate/close |
|
||||
| `kb_materializer_lifecycle` | Feature | révocation de feature gate |
|
||||
| `kb_materializer_lifecycle` | Loaders | déploiement, finalisation et transitions lifecycle stables |
|
||||
| `kb_materializer_lifecycle` | System | durable nonce, create account et allocate |
|
||||
| `kb_materializer_lifecycle` | ZK ElGamal | création ou fermeture d’un compte de contexte |
|
||||
| `kb_materializer_lifecycle` | Slashing | initialisation ou fermeture d’un rapport de violation |
|
||||
| `kb_materializer_admin` | System | assign et assign with seed |
|
||||
| `kb_materializer_admin` | Config | écriture opaque bornée avec clés, taille, SHA-256 et préfixe |
|
||||
| `kb_materializer_admin` | Loaders | changements d’autorité |
|
||||
| `kb_materializer_compliance_audit` | Loaders | écritures/copies de bytecode bornées par offsets, tailles, SHA-256 et préfixes |
|
||||
| `kb_materializer_compliance_audit` | Compute Budget | profil transactionnel agrégé, last-write-wins, une seule sortie par transaction |
|
||||
| `kb_materializer_staking` | Stake | compte, délégation, désactivation, split, merge, withdraw, move stake/lamports, autorités et lockup instructionnels |
|
||||
| `kb_materializer_staking` | 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 d’audit 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 d’un compte Stake ou Vote ;
|
||||
- activation/désactivation Stake par epoch ;
|
||||
- crédits Vote cumulés ;
|
||||
- rewards recalculées par epoch ;
|
||||
- état final d’un compte System après lamport drain conditionnel ;
|
||||
- bytecode final complet d’un 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 n’est identifiée comme manquante dans le périmètre `0.4.1`.
|
||||
|
||||
La suite `0.4.2` peut se concentrer sur l’exécution : plans, simulation, signature, envoi et validation post-exécution, sans rouvrir le jalon de décodage/matérialisation natif.
|
||||
Reference in New Issue
Block a user