122 lines
3.4 KiB
Markdown
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
|
|
```
|