74 lines
3.2 KiB
Markdown
74 lines
3.2 KiB
Markdown
<!-- file: deltas/0.2.9/pre.008.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta `0.2.9-pre.008` — Yellowstone Blocks + block_meta + entry
|
||
|
||
## 1. Base et signal technique
|
||
|
||
Base : `0.2.9-pre.007`, fermée sur gate opérateur intégralement vert.
|
||
|
||
```text
|
||
workspace.package.version = 0.2.9-pre.8
|
||
```
|
||
|
||
## 2. Scope
|
||
|
||
La tranche complète uniquement la dernière famille de filtres/updates standard avant l’ouverture bidi : Blocks, `block_meta` et `entry`.
|
||
|
||
| Surface | Matérialisation |
|
||
|----------------------------|-----------------|
|
||
| filtre Blocks | complet |
|
||
| `blocks_meta` | marker inchangé |
|
||
| `entry` | marker inchangé |
|
||
| `SubscribeUpdateBlock` | DTO + decode |
|
||
| `SubscribeUpdateBlockMeta` | DTO + decode |
|
||
| `SubscribeUpdateEntry` | DTO + decode |
|
||
| stream bidi / lifecycle | OUT |
|
||
| reconnect / replay | OUT |
|
||
| PublicNode / Config V3 | OUT |
|
||
| `SubscribeDeshred` | OUT `0.2.9` |
|
||
|
||
## 3. Filtre Blocks
|
||
|
||
`YellowstoneSubscribeBlockFilter` matérialise exactement le wire courant : `account_include[]`, `include_transactions?`, `include_accounts?`, `include_entries?` et `cuckoo_account_include?`. Les account selectors utilisent `ksp_core_lib::Pubkey`, restent ordonnés et bornés ; `Debug` ne rend aucune adresse.
|
||
|
||
## 4. Updates Blocks
|
||
|
||
`YellowstoneBlockUpdate` conserve la metadata de bloc, rewards, temps/hauteur optionnels, parent, compteurs et payloads optionnels. Les transactions réutilisent `YellowstoneTransactionInfo`, les comptes réutilisent `YellowstoneAccountInfo`, et les entries utilisent `YellowstoneEntryInfo`.
|
||
|
||
`YellowstoneBlockMetaUpdate` conserve la variante metadata-only. `YellowstoneEntryUpdate` enveloppe la même `YellowstoneEntryInfo` réutilisée dans les blocs. `starting_transaction_index` reste explicite, y compris sa valeur legacy `0`.
|
||
|
||
Les compteurs serveur sont indépendants des tailles de vecteurs : aucune égalité artificielle n’est imposée quand les flags `include_*` demandent l’omission d’un payload.
|
||
|
||
## 5. Validation et sécurité
|
||
|
||
Les blockhash textuels sont bornés, trim-exacts et Base58-décodés vers exactement 32 octets ; les hash d’entrée sont exactement 32 octets. Les collections Block/Rewards sont bornées. `Debug` ne copie aucun blockhash, parent blockhash, reward pubkey, account selector, données account, transaction, instruction ou entry hash.
|
||
|
||
Les conversions protobuf et décodeurs restent sous `#[cfg(test)]` jusqu’à l’ouverture du stream runtime en `pre.009`.
|
||
|
||
## 6. Tests/canaries ajoutés
|
||
|
||
```text
|
||
block filter exact wire + redaction
|
||
block update complet avec Transaction/Account/Entry réutilisés
|
||
server counts distincts des payload-vector lengths
|
||
block-meta optional states
|
||
entry starting_transaction_index + malformed hash
|
||
public API canary pre.008
|
||
release completeness canary pre.008
|
||
```
|
||
|
||
## 7. Gate opérateur
|
||
|
||
```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
|
||
```
|
||
|
||
Aucune dépendance ni feature Cargo n’est modifiée ; aucun `cargo tree` supplémentaire n’est requis.
|