3.2 KiB
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.
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
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
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.