v0.2.6-rel.001

This commit is contained in:
2026-08-22 14:16:31 +02:00
parent 79fee574d9
commit 3c9c1d1349
32 changed files with 428 additions and 279 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/008-DATA_MATERIALIZATION_AND_STORE.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Data, Materialization et Store
@@ -32,9 +32,9 @@ Cette clarification remplace l'ancienne interprétation où D1 -> D2 pouvait dé
- les couches dérivées ne rendent jamais obligatoire une nouvelle acquisition réseau lorsque l'input durable nécessaire existe déjà ;
- D4 privilégie les faits métier génériques lorsqu'une normalisation inter-protocoles est pertinente.
# D1 — RAW
## D1 — RAW
## Mission
### Mission
RAW conserve l'acquisition suffisamment fidèlement pour reconstruire CORE sans redemander la donnée au provider lorsqu'elle a déjà été capturée.
@@ -42,7 +42,7 @@ Le transport peut normaliser plusieurs providers vers un modèle KSP homogène,
D1 ne décode aucun programme Solana/SPL/Metaplex/DEX.
## Frontière Transport -> RAW
### Frontière Transport -> RAW
```text
HTTP / WS / gRPC / provider
@@ -62,7 +62,7 @@ ksp-store-lib
`ksp-onchain-transport-lib` ne dépend ni de `ksp-store-api` ni de `ksp-store-lib`.
## Provenance RAW
### Provenance RAW
Selon la catégorie, D1 doit pouvoir conserver notamment :
@@ -77,9 +77,9 @@ Selon la catégorie, D1 doit pouvoir conserver notamment :
- identité/hash d'idempotence ;
- cursor/page/range/checkpoint lorsque pertinent.
# D2 — CORE
## D2 — CORE
## Mission
### Mission
CORE est une **normalisation canonique générique de la blockchain Solana**.
@@ -104,7 +104,7 @@ Exemples de faits CORE candidats :
Un fait CORE peut contenir un `program_id`, des bytes et des indexes sans savoir que l'instruction représente un `Transfer`, un `Swap` ou une mutation Metadata.
## Frontière RAW -> CORE
### Frontière RAW -> CORE
```text
D1 RAW
@@ -126,7 +126,7 @@ RAW -> CORE -X-> ksp-materializer-api
Les codecs/wires génériques nécessaires à la structure Solana peuvent provenir de `ksp-interface-lib` lorsqu'ils appartiennent à la façade wire officielle, sans transformer cette étape en décodage Program.
## Provenance CORE
### Provenance CORE
D2 doit pouvoir relier chaque résultat à :
@@ -136,9 +136,9 @@ D2 doit pouvoir relier chaque résultat à :
- l'instant de processing/persistence ;
- son état de processing durable lorsque nécessaire.
# D3 — DECODE / matérialisation générique
## D3 — DECODE / matérialisation générique
## Mission
### Mission
DECODE commence lorsque KSP interprète un `program_id`, un layout d'instruction, un compte ou un événement selon un contrat Program/protocole.
@@ -179,7 +179,7 @@ quel état/superseded/failed/replay ?
Les types exacts de decoded facts et du journal sont décidés lorsque les premiers vertical slices Program existent.
## Frontière CORE -> DECODE
### Frontière CORE -> DECODE
```text
D2 CORE
@@ -201,9 +201,9 @@ Les implémentations officielles pourront provenir de `ksp-program-lib` et `ksp-
Program et Materializer ne dépendent pas du backend Store.
# D4 — SPECIALIZED
## D4 — SPECIALIZED
## Mission
### Mission
SPECIALIZED expose des projections queryables utiles aux applications, analyses et futurs modèles ML.
@@ -222,7 +222,7 @@ Exemples :
- faits trading-adjacent ;
- projections d'autres domaines futurs.
## Faits métier génériques
### Faits métier génériques
Les projections de trading ne sont pas séparées automatiquement par protocole.
@@ -249,20 +249,20 @@ pump_trades
Les champs réellement protocol-specific peuvent être conservés dans une extension ou une projection dédiée uniquement lorsqu'un besoin de requête/invariant le justifie.
## Metadata
### Metadata
La direction reste :
- projection canonique commune pour metadata d'assets/tokens alimentée par Metaplex Token Metadata et Token-2022 Metadata ;
- SPM reste distinct et sera redéveloppé plus tard avec le décodage généraliste.
## OHLC
### OHLC
Les candles sont des projections SPECIALIZED calculées à partir des trades/price observations persistés.
Une application marché lit les OHLC matérialisés ; elle ne reparcourt pas toutes les transactions pour reconstruire les candles à chaque affichage.
# Vertical slices Program
## Vertical slices Program
RAW et CORE sont développés horizontalement.
@@ -283,7 +283,7 @@ Un groupe doit atteindre une cohérence verticale suffisante avant que le groupe
Les composants satellites nécessaires à un protocole appartiennent à son groupe : Pump fees avec Pump, Meteora vaults avec Meteora, etc.
# `ksp-store-api`
## `ksp-store-api`
`ksp-store-api` est backend-agnostic et porte les contrats nécessaires aux consommateurs.
@@ -291,7 +291,7 @@ La première implementation `0.3.1` est volontairement **RAW-only** : elle ne cr
Les surfaces CORE/DECODE/SPECIALIZED sont ajoutées quand leurs couches sont réellement ouvertes.
# `ksp-store-lib`
## `ksp-store-lib`
`ksp-store-lib` fournit PostgreSQL comme backend officiel de référence derrière `ksp-store-api`.
@@ -312,7 +312,7 @@ Il ne possède pas :
- materializer ;
- orchestration de worker/job.
# `ksp-materializer-api` et `ksp-materializer-lib`
## `ksp-materializer-api` et `ksp-materializer-lib`
Ils sont introduits seulement lorsque le premier groupe DECODE démontre le contrat réel.
@@ -320,7 +320,7 @@ Ils sont introduits seulement lorsque le premier groupe DECODE démontre le cont
Une projection très locale/spécifique peut rester dans son groupe si la création d'une implémentation commune séparée n'apporte pas de réutilisation réelle.
# Replay
## Replay
Les frontières durables restent replayables indépendamment :
@@ -332,7 +332,7 @@ DECODE -> SPECIALIZED
Un replay d'une couche dérivée ne doit pas refaire arbitrairement les couches précédentes.
# Notifications persistées
## Notifications persistées
Le Store reste source de vérité du backlog.
@@ -348,7 +348,7 @@ notify
Le consumer reconstruit toujours son backlog depuis le Store avec les versions de processor et les marqueurs d'idempotence.
# Acquisition live et backfill
## Acquisition live et backfill
Live et backfill alimentent la même frontière RAW :
@@ -360,7 +360,7 @@ backfill job ----/
Ils ne dupliquent pas le contrat durable.
# Stabilité
## Stabilité
La stabilité cible est différente selon la couche :
@@ -369,7 +369,7 @@ La stabilité cible est différente selon la couche :
- DECODE : extensible par nouveaux Program/versions ;
- SPECIALIZED : plus évolutif selon les besoins de query, trading et analytics.
# Questions laissées ouvertes
## Questions laissées ouvertes
- schémas SQL exacts RAW puis CORE ;
- représentation persistable exacte d'un decoded output ;