Files
khadhroony-solana-project/deltas/0.2.9/pre.005.md
2026-08-24 12:31:19 +02:00

122 lines
3.4 KiB
Markdown

<!-- file: deltas/0.2.9/pre.005.md -->
<!-- version: 1 -->
# Delta `0.2.9-pre.005` — Yellowstone standard Accounts + Slots
## Base et signal de version
Base autoritaire :
```text
0.2.9-pre.4.fix.1
```
Signal technique de cette tranche :
```text
workspace.package.version = 0.2.9-pre.5
commit attendu = v0.2.9-pre.005
aucun tag prerelease
```
Le gate opérateur de `pre.004-fix.001` est vert sans les warnings `dead_code` précédents ; `pre.004` est donc fermée.
## Périmètre réalisé
Cette tranche complète **uniquement Accounts + Slots** du contrat Yellowstone `Subscribe` standard actuel.
Accounts request :
```text
account[]
owner[]
filters[] :
memcmp bytes/base58/base64
datasize
token_account_state
lamports eq/ne/lt/gt
nonempty_txn_signature?
cuckoo_accounts_filter?
```
Slots request :
```text
filter_by_commitment?
interslot_updates?
```
Updates KSP :
```text
Account : filters/created_at + account info + slot + is_startup
Slot : filters/created_at + slot + parent? + status + dead_error?
```
Les sept statuts Slot actuels sont couverts : processed, confirmed, finalized, first-shred-received, completed, created-bank et dead.
## Cuckoo standard
Le Cuckoo account filter est traité comme capacité du standard Yellowstone courant, pas comme extension provider. KSP expose son propre DTO avec données, dimensions, fingerprint bits, seed et algorithme ; l'algorithme courant matérialisé est SipHash. Aucun type upstream n'est réexporté.
## Validation et sécurité
Bornes KSP provider-neutral ajoutées sur :
```text
account/owner selectors
account predicates
memcmp binary/text
Cuckoo payload/dimensions/fingerprint
account-data update
update filter names/count
timestamp nanos
transaction signature fixe 64 octets
dead_error
```
Les pubkeys/owners de wire doivent faire exactement 32 octets et les signatures 64 octets. Un enum Slot inconnu, un oneof ou champ obligatoire absent et les payloads hors bornes deviennent des erreurs KSP déterministes ; aucun payload provider arbitraire n'est recopié dans les diagnostics. Les Debug KSP n'exposent pas les sélecteurs, données memcmp/Cuckoo/account-data ni le texte `dead_error`.
## Frontière runtime
Le stream bidi reste hors tranche. Les conversions protobuf request et les décodeurs Account/Slot restent donc compilés seulement pour les tests jusqu'à `pre.008`, où ils acquerront leur premier consommateur runtime. Cela évite les warnings `dead_code` sans dupliquer l'implémentation.
## Explicitement hors `pre.005`
```text
Transactions + transaction_status
Blocks + block_meta + entry
Ping/Pong lifecycle et mutation bidi
backpressure/shutdown stream
reconnect/resubscribe/replay
Config V3
PublicNode provider integration
SubscribeDeshred
```
## Dépendances
Aucune dépendance ni feature Cargo n'est ajoutée ou modifiée. Les graphes inspectés en `pre.003` restent applicables.
## Validation attendue
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-core-lib --test workspace_dependencies
cargo test --workspace
```
Aucun `cargo tree` supplémentaire n'est requis pour cette tranche si le manifest reste inchangé.
## Suite
```text
pre.006 Transactions + transaction_status
pre.007 Blocks + block_meta + entry
pre.008 stream bidi + mutation + Ping/Pong + half-close + backpressure + shutdown
```