v0.3.5-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/006-WIRE_AND_PROGRAM.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Wire, Program API et implémentations Program
|
||||
|
||||
@@ -22,7 +22,7 @@ Les types Rust exacts restent volontairement à définir lors de la première im
|
||||
|
||||
## `ksp-interface-lib`
|
||||
|
||||
`ksp-interface-lib` est la façade wire officielle KSP pour les programmes Solana supportés officiellement.
|
||||
`ksp-interface-lib` est la façade des contrats passifs KSP réellement partagés. Elle possède notamment les wires officiels nécessaires aux programmes Solana supportés et peut aussi posséder des faits d'acquisition provider-neutral lorsqu'ils ne sont ni des DTOs Transport ni des modèles persistants Store.
|
||||
|
||||
Elle possède ou réexporte de manière contrôlée les contrats nécessaires tels que :
|
||||
|
||||
@@ -38,29 +38,51 @@ Les Program IDs fondamentaux restent possédés par `ksp-core-lib`.
|
||||
|
||||
`ksp-interface-lib` ne possède pas :
|
||||
|
||||
- RPC/WS/provider ;
|
||||
- wallet/signature ;
|
||||
- persistence ;
|
||||
- RPC/WS/gRPC/provider DTOs ou sessions ;
|
||||
- event bus, worker, job ou scheduler ;
|
||||
- wallet/signature capability ;
|
||||
- persistence, Store, cursor ou retention ;
|
||||
- matérialisation ;
|
||||
- interprétation canonique/métier d'une instruction ;
|
||||
- policy/safety ;
|
||||
- lifecycle d'exécution réseau.
|
||||
|
||||
Les événements d'acquisition admis dans Interface sont de simples faits passifs supplémentaires. Ils ne remplacent pas le DTO Transport riche et leurs conversions appartiennent à la composition qui connaît les deux contrats.
|
||||
|
||||
## API publique de `ksp-interface-lib`
|
||||
|
||||
`ksp-interface-lib` reste une seule crate pour l'instant : aucune `ksp-interface-api` séparée n'est créée.
|
||||
|
||||
La façade doit néanmoins exposer une API publique wire stable et réutilisable par :
|
||||
La façade doit néanmoins exposer une API publique stable et réutilisable par :
|
||||
|
||||
```text
|
||||
ksp-program-lib
|
||||
external ksp-program-<name>-lib
|
||||
compositions/acquisition consumers utilisant un fait passif partagé
|
||||
```
|
||||
|
||||
Une implementation externe peut donc expérimenter contre les mêmes contrats wire publics avant intégration officielle dans KSP. Lorsqu'un wire externe devient officiel, son intégration dans `ksp-interface-lib` doit rester compatible avec l'API publique retenue, sauf évolution de contrat explicitement versionnée/documentée.
|
||||
|
||||
Si une future contrainte de dépendances démontre qu'un split `ksp-interface-api` apporte une valeur réelle, il pourra être étudié selon `KSP-API-007`; la symétrie avec Program ne suffit pas.
|
||||
|
||||
## Événements passifs d'acquisition
|
||||
|
||||
Interface peut posséder un événement d'acquisition seulement si plusieurs sources/consumers partagent exactement le même fait et que le type reste plus petit que les DTOs producteurs. Le contrat ne doit pas accumuler des champs `Option` pour simuler l'union de protocoles hétérogènes.
|
||||
|
||||
La frontière durable est :
|
||||
|
||||
```text
|
||||
DTO Transport riche et lossless
|
||||
|
|
||||
| conversion explicite par composition/consumer
|
||||
v
|
||||
événement Interface passif provider-neutral
|
||||
```
|
||||
|
||||
Un événement Interface ne devient ni un message de bus obligatoire ni une donnée durable. Les informations replayables appartiennent à `ksp-store-api`; les détails de transport, provider, commitment, session, timestamp source-specific et diagnostics qui ne font pas partie du fait commun restent Transport-owned.
|
||||
|
||||
Les familles actuellement démontrées sont le lifecycle de slot et le résultat d'exécution d'une transaction. Toute nouvelle famille exige un nouveau gate de convergence, consumer et bornes.
|
||||
|
||||
## Propriété des codecs wire
|
||||
|
||||
Pour le code KSP officiel, les dépendances directement utilisées pour encoder/décoder les formats wire, notamment `borsh`, `wincode` ou codecs équivalents, appartiennent normalement à `ksp-interface-lib`.
|
||||
|
||||
Reference in New Issue
Block a user