v0.3.10-pre.006

This commit is contained in:
2026-09-07 18:58:48 +02:00
parent d4f4237723
commit f7c57f21c5
17 changed files with 1748 additions and 61 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/011-RAW_TRANSACTION_ACQUISITION.md -->
<!-- version: 8 -->
<!-- version: 9 -->
# Acquisition et alimentation `RawTransaction`
@@ -665,6 +665,54 @@ aucun edge Transport <-> ksp-raw-transaction-lib
La migration doit préserver exactement les golden bytes/hash RAW v1 déjà prouvés. Aucun RAW v2 n'est justifié.
### 13.1 Transaction wire Legacy/V0/V1
`pre.006` matérialise dans `ksp-raw-transaction-lib` un modèle wire Solana source-neutral, indépendant de Transport et des crates runtime Solana. Il sérialise exactement les formes Legacy, V0 et V1 puis expose aussi la représentation Base64.
Pour V1, le contrat suit SIMD-0385 tel qu'audité le 7 septembre 2026 :
```text
0x81
LegacyHeader
TransactionConfigMask u32 LE
LifetimeSpecifier [32]
NumInstructions u8
NumAddresses u8
Addresses
ConfigValues
InstructionHeaders
InstructionPayloads
Signatures terminales
```
Les limites common verrouillées sont : transaction `<= 4096` octets, `<= 12` signatures, `<= 64` adresses, `<= 64` instructions, indexes bornés, aucune ALT en V1 et aucune donnée après les signatures. La présence de `Message.config` Yellowstone distingue V1 ; `versioned=true` sans config reste V0, et `versioned=false` sans config reste Legacy.
L'extracteur de signature Base64 common reconnaît désormais V1 au premier octet `0x81` et parcourt structurellement le message jusqu'aux signatures terminales au lieu d'appliquer le short-vector signatures-first de Legacy/V0.
Le format V1 est encore documenté upstream comme pre-release/feature-gated ; KSP implémente donc la capacité de lecture/canonicalisation sans déclarer son activation sur un cluster particulier.
### 13.2 Qualification Yellowstone `pre.006`
Un canari cross-layer test-only dans Backfill monte un serveur Geyser local, ouvre le vrai `YellowstoneGrpcChannel::open_standard_subscribe`, reçoit successivement une update `Transaction` V1 et une update `Block` contenant la même transaction, puis projette les DTO Transport vers le modèle wire common uniquement dans le test.
Le gate prouve :
```text
Transaction update -> slot/index + transaction wire V1 exact
Block update -> slot/index + même transaction wire V1 exact + block_time
Transport -> aucun edge production vers ksp-raw-transaction-lib
Backfill -> tonic/yellowstone-grpc-proto strictement dev-only
```
Il ne qualifie pas un RAW-direct complet Yellowstone : une update `Transaction` ne porte pas `block_time`, et la représentation protobuf Yellowstone de la meta n'est pas démontrée byte-identical avec la projection JSON HTTP servant au RAW v1 actuel. La décision `TR-C4` reste donc conservative :
```text
Yellowstone Transaction/Block -> signal structuré + transaction wire fidèle
RAW v1 complet -> hydration HTTP avant persistence
```
Aucun adapter productif n'est ajouté en `pre.006`. Conformément à `TR-C2`, l'adapter `Transport DTO -> common` demeure réservé au Worker de `pre.007`.
## 14. Handoff `0.3.10` : Worker live
### 14.1 Contrat fonctionnel
@@ -805,7 +853,7 @@ Aucun code, DTO, Config, endpoint, secret, dépendance ou convention de version
## 18. Sources externes auditées
Sources consultées le **4 septembre 2026**. Cette liste consolide les anciens audits A/B dans un seul registre documentaire.
Sources consultées le **4 septembre 2026** et revalidées pour Transaction V1 le **7 septembre 2026**. Cette liste consolide les anciens audits A/B dans un seul registre documentaire.
### 18.1 Solana standard
@@ -828,43 +876,46 @@ Sources consultées le **4 septembre 2026**. Cette liste consolide les anciens a
### 18.2 Yellowstone et providers
| Source | URL |
|----------------------------------|---------------------------------------------------------------------------------------------------|
| Yellowstone proto | https://github.com/rpcpool/yellowstone-grpc/blob/master/yellowstone-grpc-proto/proto/geyser.proto |
| Yellowstone README | https://github.com/rpcpool/yellowstone-grpc/blob/master/README.md |
| Yellowstone changelog | https://github.com/rpcpool/yellowstone-grpc/blob/master/CHANGELOG.md |
| Helius data streaming | https://www.helius.dev/docs/data-streaming |
| Helius LaserStream | https://www.helius.dev/blog/introducing-laserstream |
| Helius WebSockets | https://www.helius.dev/blog/laserstream-websockets |
| Helius enhanced WebSockets | https://www.helius.dev/blog/introducing-next-generation-enhanced-websockets |
| Helius getTransactionsForAddress | https://www.helius.dev/blog/introducing-gettransactionsforaddress |
| Helius preprocessed transactions | https://www.helius.dev/docs/shred-delivery/preprocessed-transactions |
| PublicNode Solana | https://solana.publicnode.com/ |
| OrbitFlare Yellowstone | https://docs.orbitflare.com/data-streaming/yellowstone |
| OrbitFlare RPC | https://orbitflare.com/products/rpc-nodes |
| OrbitFlare gRPC | https://orbitflare.com/products/solana-grpc |
| QuickNode Yellowstone | https://www.quicknode.com/guides/solana-development/tooling/solana-grpc/solana-grpc |
| QuickNode gRPC plans | https://www.quicknode.com/blog/solana-grpc-is-now-included-with-scale-and-business-plans |
| Alchemy Solana gRPC | https://www.alchemy.com/solana-grpc |
| Alchemy Yellowstone quickstart | https://www.alchemy.com/docs/reference/yellowstone-grpc-quickstart |
| Alchemy historical replay | https://www.alchemy.com/docs/reference/yellowstone-grpc-historical-replay |
| Alchemy compute/bandwidth | https://www.alchemy.com/docs/reference/compute-unit-costs |
| Chainstack Yellowstone | https://chainstack.com/yellowstone-grpc-more-streams-same-price/ |
| Shyft Yellowstone | https://shyft.to/solana-yellowstone-grpc |
| Shyft pricing | https://shyft.to/solana-rpc-grpc-pricing |
| Shyft RabbitStream | https://shyft.to/solana-shreds-rabbitstream |
| Triton pricing | https://triton.one/pricing |
| Triton Yellowstone | https://blog.triton.one/complete-guide-to-solana-streaming-and-yellowstone-grpc/ |
| Triton Fumarole | https://blog.triton.one/introducing-yellowstone-fumarole/ |
| Triton Deshred | https://blog.triton.one/deshred-transactions-the-fastest-path-to-solana-data/ |
| dRPC Yellowstone | https://drpc.org/docs/solana-yellowstone-geyser-grpc |
| Ankr Solana | https://www.ankr.com/docs/rpc-service/chains/chains-list/s-t/ |
| Ankr pricing | https://www.ankr.com/docs/rpc-service/pricing/ |
| GetBlock pricing | https://getblock.io/pricing-new/ |
| bloXroute pricing | https://bloxroute.com/pricing/ |
| Jito ShredStream | https://docs.jito.wtf/lowlatencytxnfeed/ |
| DoubleZero Edge | https://docs.malbeclabs.com/Edge%20Subscriber%20Connection/ |
| Old Faithful | https://github.com/rpcpool/yellowstone-faithful |
| Source | URL |
|----------------------------------|--------------------------------------------------------------------------------------------------------------|
| Yellowstone proto | https://github.com/rpcpool/yellowstone-grpc/blob/master/yellowstone-grpc-proto/proto/geyser.proto |
| Yellowstone storage proto | https://github.com/rpcpool/yellowstone-grpc/blob/master/yellowstone-grpc-proto/proto/solana-storage.proto |
| SIMD-0385 Transaction V1 | https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0385-transaction-v1.md |
| Transaction V1 examples | https://github.com/solana-foundation/transaction-v1-examples |
| Yellowstone README | https://github.com/rpcpool/yellowstone-grpc/blob/master/README.md |
| Yellowstone changelog | https://github.com/rpcpool/yellowstone-grpc/blob/master/CHANGELOG.md |
| Helius data streaming | https://www.helius.dev/docs/data-streaming |
| Helius LaserStream | https://www.helius.dev/blog/introducing-laserstream |
| Helius WebSockets | https://www.helius.dev/blog/laserstream-websockets |
| Helius enhanced WebSockets | https://www.helius.dev/blog/introducing-next-generation-enhanced-websockets |
| Helius getTransactionsForAddress | https://www.helius.dev/blog/introducing-gettransactionsforaddress |
| Helius preprocessed transactions | https://www.helius.dev/docs/shred-delivery/preprocessed-transactions |
| PublicNode Solana | https://solana.publicnode.com/ |
| OrbitFlare Yellowstone | https://docs.orbitflare.com/data-streaming/yellowstone |
| OrbitFlare RPC | https://orbitflare.com/products/rpc-nodes |
| OrbitFlare gRPC | https://orbitflare.com/products/solana-grpc |
| QuickNode Yellowstone | https://www.quicknode.com/guides/solana-development/tooling/solana-grpc/solana-grpc |
| QuickNode gRPC plans | https://www.quicknode.com/blog/solana-grpc-is-now-included-with-scale-and-business-plans |
| Alchemy Solana gRPC | https://www.alchemy.com/solana-grpc |
| Alchemy Yellowstone quickstart | https://www.alchemy.com/docs/reference/yellowstone-grpc-quickstart |
| Alchemy historical replay | https://www.alchemy.com/docs/reference/yellowstone-grpc-historical-replay |
| Alchemy compute/bandwidth | https://www.alchemy.com/docs/reference/compute-unit-costs |
| Chainstack Yellowstone | https://chainstack.com/yellowstone-grpc-more-streams-same-price/ |
| Shyft Yellowstone | https://shyft.to/solana-yellowstone-grpc |
| Shyft pricing | https://shyft.to/solana-rpc-grpc-pricing |
| Shyft RabbitStream | https://shyft.to/solana-shreds-rabbitstream |
| Triton pricing | https://triton.one/pricing |
| Triton Yellowstone | https://blog.triton.one/complete-guide-to-solana-streaming-and-yellowstone-grpc/ |
| Triton Fumarole | https://blog.triton.one/introducing-yellowstone-fumarole/ |
| Triton Deshred | https://blog.triton.one/deshred-transactions-the-fastest-path-to-solana-data/ |
| dRPC Yellowstone | https://drpc.org/docs/solana-yellowstone-geyser-grpc |
| Ankr Solana | https://www.ankr.com/docs/rpc-service/chains/chains-list/s-t/ |
| Ankr pricing | https://www.ankr.com/docs/rpc-service/pricing/ |
| GetBlock pricing | https://getblock.io/pricing-new/ |
| bloXroute pricing | https://bloxroute.com/pricing/ |
| Jito ShredStream | https://docs.jito.wtf/lowlatencytxnfeed/ |
| DoubleZero Edge | https://docs.malbeclabs.com/Edge%20Subscriber%20Connection/ |
| Old Faithful | https://github.com/rpcpool/yellowstone-faithful |
Les URLs sont documentaires. Aucun endpoint runtime, token ou secret de compte n'est ajouté au dépôt par cet audit.
@@ -883,6 +934,9 @@ support vs preuve = axes séparés ; NON PROUVÉ n'implique pas REJET
provider model = capabilities/configuration, jamais enum provider fermé
network identity = mainnet canonique ; mainnet-beta alias legacy/externe
RAW canonicalisation = lower-layer commune, sans edge Job <-> Worker
Transaction V1 = wire source-neutral Legacy/V0/V1 dans common ; activation cluster non supposée
Yellowstone pre.006 = transaction wire V1 qualifié ; RAW complet via hydration HTTP
TR-C2 = adapter productif Transport DTO -> common réservé au Worker pre.007
0.3.10 = Worker live multi-source + adaptations communes nécessaires
0.3.12 = Job Backfill multi-stratégie historique
```