v0.2.9-pre.007
This commit is contained in:
165
deltas/0.2.9/pre.007.md
Normal file
165
deltas/0.2.9/pre.007.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<!-- file: deltas/0.2.9/pre.007.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.9-pre.007` — Yellowstone Transactions + `transaction_status`
|
||||
|
||||
## 1. Base et gate précédent
|
||||
|
||||
Base exacte :
|
||||
|
||||
```text
|
||||
0.2.9-pre.006
|
||||
```
|
||||
|
||||
Le gate opérateur `pre.006` est fermé : fmt/audit/check/Clippy/workspace PASS, Transport 364 unit + 45 public API + 39 release-completeness + 4 doctests, dependency canary Core 3/3 PASS.
|
||||
|
||||
Version technique de cette tranche :
|
||||
|
||||
```text
|
||||
0.2.9-pre.7
|
||||
```
|
||||
|
||||
Commit attendu après gate vert :
|
||||
|
||||
```text
|
||||
v0.2.9-pre.007
|
||||
```
|
||||
|
||||
Aucun tag Git stable n'est créé pour cette prerelease.
|
||||
|
||||
## 2. Objet de la tranche
|
||||
|
||||
`pre.007` complète exclusivement les deux familles Yellowstone standard `transactions` et `transactions_status` du `SubscribeRequest`/`SubscribeUpdate` courant. Elle n'ouvre toujours pas le stream bidi runtime.
|
||||
|
||||
Le proto publié `yellowstone-grpc-proto 12.6.0` a été réaudité avant implémentation. Le même `SubscribeRequestFilterTransactions` est utilisé par les deux maps et expose :
|
||||
|
||||
```text
|
||||
vote?
|
||||
failed?
|
||||
signature?
|
||||
account_include[]
|
||||
account_exclude[]
|
||||
account_required[]
|
||||
cuckoo_account_include?
|
||||
token_accounts? = ALL | BALANCE_CHANGED
|
||||
```
|
||||
|
||||
## 3. Contrat request KSP
|
||||
|
||||
La tranche matérialise `YellowstoneSubscribeTransactionFilter` et les types associés :
|
||||
|
||||
```text
|
||||
YellowstoneTransactionSignatureSelector
|
||||
YellowstoneTokenAccountExpansion
|
||||
YellowstoneCuckooFilter réutilisé
|
||||
```
|
||||
|
||||
La signature textuelle est :
|
||||
|
||||
- non vide ;
|
||||
- bornée à 128 octets ;
|
||||
- strictement Base58 ;
|
||||
- décodée par KSP pour vérifier une largeur exacte de 64 octets ;
|
||||
- absente des diagnostics et du `Debug`.
|
||||
|
||||
Les listes include/exclude/required conservent l'ordre d'insertion et réutilisent le bound déterministe des sélecteurs Accounts. Le Cuckoo transaction réutilise le contrat standard KSP déjà introduit en `pre.005`.
|
||||
|
||||
## 4. Updates et `solana-storage.proto`
|
||||
|
||||
Les nouveaux DTOs KSP couvrent les variantes :
|
||||
|
||||
```text
|
||||
SubscribeUpdateTransaction
|
||||
SubscribeUpdateTransactionStatus
|
||||
```
|
||||
|
||||
et projettent sans raw reexport upstream les structures utiles :
|
||||
|
||||
```text
|
||||
Transaction / Message / MessageHeader
|
||||
CompiledInstruction / MessageAddressTableLookup
|
||||
TransactionConfig V1
|
||||
TransactionStatusMeta / TransactionError
|
||||
InnerInstructions / InnerInstruction
|
||||
TokenBalance / UiTokenAmount
|
||||
ReturnData / Reward
|
||||
```
|
||||
|
||||
Le `Message.config` optionnel actuel est conservé avec :
|
||||
|
||||
```text
|
||||
priority_fee?
|
||||
compute_unit_limit?
|
||||
loaded_accounts_data_size_limit?
|
||||
heap_size?
|
||||
```
|
||||
|
||||
`TransactionStatusMeta` conserve séparément les marqueurs legacy `inner_instructions_none`, `log_messages_none` et `return_data_none`, ainsi que les payloads correspondants. Les champs optionnels `compute_units_consumed` et `cost_units`, les loaded addresses, rewards et token balances sont également préservés.
|
||||
|
||||
`TransactionError.err` reste un payload opaque borné ; KSP n'introduit aucun décodage JSON ou Program arbitraire.
|
||||
|
||||
## 5. Validation et sûreté
|
||||
|
||||
Les décodeurs test-only vérifient notamment :
|
||||
|
||||
| Élément | Politique `pre.007` |
|
||||
|------------------------------------------------------|----------------------------------------------------------------------------|
|
||||
| signatures wire | exactement 64 octets |
|
||||
| hash / account keys / loaded addresses / program ids | exactement 32 octets |
|
||||
| vecteurs transaction/meta | bornes KSP avant projection |
|
||||
| instruction / return-data payloads | bornés |
|
||||
| logs et textes provider | count/length bornés |
|
||||
| error bytes | opaques et bornés |
|
||||
| `Debug` | pas de signature, pubkey, log, instruction data ou error bytes arbitraires |
|
||||
|
||||
Les conversions protobuf request et les décodeurs update restent `#[cfg(test)]` jusqu'à `pre.009`, premier consommateur runtime prévu lors de l'ouverture du stream bidi.
|
||||
|
||||
## 6. Frontières préservées
|
||||
|
||||
Toujours hors `pre.007` :
|
||||
|
||||
```text
|
||||
Blocks + block_meta + entry pre.008
|
||||
bidi/backpressure/Ping-Pong/shutdown pre.009
|
||||
reconnect/replay/gaps/duplicates pre.010
|
||||
Config V3 + PublicNode profiles pre.011
|
||||
PublicNode live/compliance pre.012
|
||||
SubscribeDeshred OUT 0.2.9 standard
|
||||
```
|
||||
|
||||
Aucun provider N3 n'est ajouté. Aucune dépendance ni feature Cargo n'est modifiée.
|
||||
|
||||
## 7. Preuves ajoutées
|
||||
|
||||
Tests Transport ajoutés :
|
||||
|
||||
```text
|
||||
transaction filter exact wire + redaction + Base58 width
|
||||
transaction update storage fixture + TransactionConfig V1 + meta
|
||||
transaction_status update + error + malformed signature
|
||||
public API root contract
|
||||
release-completeness exact scope
|
||||
```
|
||||
|
||||
Compte cible après compilation :
|
||||
|
||||
```text
|
||||
Transport unit ~367
|
||||
Transport public API 46
|
||||
Transport release completeness 40
|
||||
Transport doctests 4
|
||||
```
|
||||
|
||||
## 8. Gate opérateur requis
|
||||
|
||||
```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 : aucune dépendance ou feature ne change dans cette tranche.
|
||||
Reference in New Issue
Block a user