Files
khadhroony-solana-project/docs/validation/013-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC.md
2026-08-25 15:26:04 +02:00

21 KiB
Raw Blame History

Validation 0.2.10 — OrbitFlare Yellowstone gRPC

Statut courant : 0.2.10-pre.003 ferme le gate technique/live final. Le workspace complet est vert, les graphes Cargo ont été inspectés et le smoke OrbitFlare Devnet authentifié par License Key ORBIT-* en secret x-token observe Subscribe -> Slot + Ping puis ferme proprement. N1/N2 restent inchangés ; pre.004 réconcilie uniquement la documentation finale.

1. Autorités

RULES.md + docs/rules/*
archive stable v0.2.9
plan 016 et validation 012 pour N1/N2
plan 017 courant
prompt 015 pour les contraintes non supersédées
deltas/0.2.10/*
OrbitFlare docs/pricing/SDK/CLI actuels
Yellowstone upstream actuel

2. Baseline stable

Gate Résultat
version de base 0.2.9 PASS
deltas/0.2.9/rel.001.md PASS
prompt 015 PASS
cargo fmt --all PASS
audit Rust PASS
audit Markdown PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test --workspace PASS
Transport unit 383 sur 383 PASS
Transport public API 49 sur 49 PASS
Transport release completeness 43 sur 43 PASS
Config unit 113 sur 113 PASS
graph duplicates Transport fourni, aucun conflit N1 visible
graph complet Transport fourni sur 0.2.10-pre.1 PASS

3. Invariant architecture

Exigence Verdict
moteur gRPC N1 modifié pour OrbitFlare NO
standard Yellowstone N2 modifié NO
second client Tonic NO
SDK OrbitFlare runtime NO
provider séparé du protocol PASS
Config -> Transport seulement PASS
Transport -> Config/env PASS
façade provider sans divergence NO

Toute modification de grpc_stream.rs, grpc_channel.rs, grpc_settings.rs, grpc_unary.rs ou grpc_subscribe.rs motivée uniquement par OrbitFlare invalide ce gate.

4. Pricing et réseau

Point Preuve actuelle Verdict
plan Solana Free 0 USD par mois PASS
gRPC Free Devnet only PASS
RPS Free 10 INFO
TPS Free 1 INFO
crédit unlimited dans le RPS INFO
Devnet gRPC endpoint http://devnet.rpc.orbitflare.com:10000 PASS
Devnet live KSP Subscribe authentifié, Slot + Ping PASS LIVE
Mainnet gratuit non documenté OUT
Testnet endpoint non prouvé UNKNOWN

Sources :

https://orbitflare.com/pricing
https://orbitflare.com/products/rpc-nodes
https://docs.orbitflare.com/cli

5. Transport security

Forme endpoint Classification Verdict
http://*.rpc.orbitflare.com:10000 HTTP/2 plaintext PASS
https://*.grpc.orbitflare.com HTTP/2 TLS PASS
transformation automatique http/https interdite PASS
endpoint Dashboard autoritaire si fourni PASS

KSP ne prétend pas qu'un canal gRPC plaintext bénéficie d'une sécurité TLS implicite.

6. Auth classification

Élément Usage prouvé Verdict
X-ORBIT-KEY Customer API CONTROL-PLANE
Bearer Device Flow Customer API v2 CONTROL-PLANE
RPC api_key Solana HTTP RPC HTTP ONLY
License Key ORBIT-* produit Solana Free DATA-PLANE PROVIDER
metadata x-token Yellowstone gRPC OrbitFlare REQUIRED / PROVEN DOC
sans metadata live KSP pre.002 REJECTED UNAUTHENTICATED
IP whitelist autre mode produit NOT ACTIVE FOR OPERATOR

Preuve live pre.002 :

grpc_operation = SubscribeOpen
grpc_status    = Unauthenticated
grpc_code      = The request does not have valid authentication credentials

Preuve provider : la référence Yellowstone OrbitFlare construit le client avec X_TOKEN = ORBITFLARE_LICENSE_KEY et indique que le token est porté par la metadata gRPC x-token.

Le Dashboard opérateur classe le produit Solana Free en API Key Mode Active. La License Key est donc le secret data-plane à utiliser ; elle nest pas une X-ORBIT-KEY Customer API.

Le CLI OrbitFlare courant nest pas utilisé comme oracle positif pour lauth gRPC : après stockage de la License Key, orbitflare ping --service grpc --network devnet retourne invalid x-token: api key not found, et son implémentation courante ninjecte pas le secret dans le canal gRPC.

7. Heartbeat

Point Preuve Verdict
OrbitFlare idle timeout partagé environ 10 minutes PASS
OrbitFlare recommande client Ping 30 secondes PASS
Yellowstone serveur Ping périodique upstream documenté PASS
KSP auto reply au serveur Ping test N1 0.2.9 et non-régression pre.003 PASS
moteur N1 à modifier non PASS
Ping serveur OrbitFlare Devnet observé live pre.002-fix.001 + pre.003 PASS
heartbeat provider additionnel aucune divergence live NO

Le gate est fermé : OrbitFlare émet le Ping Yellowstone standard et le chemin de réponse automatique N1 reste suffisant sans timer provider.

8. Capabilities streaming

Capability Docs OrbitFlare KSP N2 Live provider
accounts oui PASS non sondé exhaustivement
slots oui PASS PASS
transactions oui PASS non sondé exhaustivement
transactions_status partiel PASS non sondé exhaustivement
blocks oui PASS non sondé exhaustivement
blocks_meta oui PASS non sondé exhaustivement
entry oui PASS non sondé exhaustivement
commitment oui PASS PASS confirmed
accounts_data_slice oui PASS non sondé exhaustivement
Subscribe Ping/Pong oui PASS PASS Ping serveur

La release prouve le chemin provider nécessaire à sa mission sans transformer les familles non sondées en capacités absentes.

9. Unary et replay

Capability N2 KSP OrbitFlare docs Verdict provider
SubscribeReplayInfo PASS non prouvé UNKNOWN / non bloquant
Ping unary PASS non prouvé UNKNOWN / non bloquant
GetLatestBlockhash PASS non prouvé UNKNOWN / non bloquant
GetBlockHeight PASS non prouvé UNKNOWN / non bloquant
GetSlot PASS non prouvé UNKNOWN / non bloquant
IsBlockhashValid PASS non prouvé UNKNOWN / non bloquant
GetVersion PASS non prouvé UNKNOWN / non bloquant
from_slot PASS non prouvé N1 disponible, provider non sondé
retention N/A non documentée UNKNOWN / provider-owned

Une restriction ou un inconnu provider ne rétrograde jamais la disponibilité de la méthode dans le standard global KSP. Le reconnect N1 tolère déjà l'indisponibilité de SubscribeReplayInfo et poursuit avec le from_slot conservateur demandé.

10. Limits provider

Limite Valeur Verdict
concurrent gRPC connections 50 par IP INFO
subscriptions par connection unlimited INFO
cap partagé entre régions oui INFO
idle timeout environ 10 minutes INFO
dépassement RESOURCE_EXHAUSTED INFO
backoff recommandé exponentiel jusqu'à 30 s INFO

Ces valeurs restent provider-owned et ne deviennent pas des validations génériques de YellowstoneGrpcSessionSettings.

11. Config V3

Exigence Verdict
nouveau format Config nécessaire NO
provider = orbitflare PASS
protocol = solana_yellowstone PASS
cluster = devnet PASS
Devnet URL publique PASS
secret metadata x-token PASS
valeur License Key via KSP_SECRET_* PASS
X-ORBIT-KEY dans Transport Config NO
heartbeat dans grpc_defaults NO

Contrat final :

secret_metadata = x-token <- ${KSP_SECRET_ORBITFLARE_DEVNET_GRPC_X_TOKEN}

Le test Config prouve la classification secrète et la redaction ; le live prouve que ce credential ouvre le Subscribe OrbitFlare Devnet.

12. Smoke Devnet final

Smoke durable :

License Key lue sur stdin
YellowstoneGrpcMetadataEntry::secret("x-token", ...)
provider = orbitflare
cluster = devnet
url = http://devnet.rpc.orbitflare.com:10000
open standard Subscribe
request slots confirmed
receive Slot non nul
observe Ping serveur
close borné
Preuve Verdict
endpoint parsé par N1 PASS
sans metadata FAIL EXPECTED / CLASSIFIED
secret x-token représentable par Config V3 PASS
License Key redacted PASS
connect authentifié PASS LIVE
Subscribe authentifié PASS LIVE
Slot reçu PASS LIVE
server Ping reçu PASS LIVE
auto reply KSP déterministe PASS N1
close borné PASS LIVE

Résultats :

pre.002-fix.001  1/1 PASS en 5.10 s
pre.003 final    1/1 PASS en 5.19 s

13. Provider overlay gate

Verdict final : aucune façade/policy OrbitFlare n'est nécessaire.

Les conditions de réutilisation directe sont toutes satisfaites :

standard Subscribe fonctionne
heartbeat standard fonctionne
Config V3 exprime endpoint/auth
aucune restriction consumer-visible ne requiert un type provider

Les interdictions restent durables :

N1 ne change pas
N2 ne change pas
pas de raw Tonic
pas de SDK OrbitFlare

14. Non-régressions finales

Surface Baseline Final
HTTP current typed 52 sur 52 PASS
HTTP historical 14 sur 14 PASS
WebSocket standard 18 sur 18 PASS
Helius LaserStream WebSocket stable 0.2.8 PASS
Yellowstone N1/N2 stable 0.2.9 PASS
PublicNode Mainnet/Testnet stable 0.2.9 PASS deterministic
Config V1/V2/V3 backward readable stable 0.2.9 PASS
dependency firewall stable 0.2.9 PASS

Les smokes PublicNode live n'ont pas été rejoués en pre.003 car N1/N2 et les profils PublicNode n'ont pas changé ; leurs preuves live de 0.2.9 restent la baseline et la non-régression déterministe est verte.

15. Gate pre.001

Critère Verdict
base stable v0.2.9 PASS
baseline fmt/audits/check/clippy PASS
workspace test PASS
graph duplicates PASS
graph complet Transport PASS
sources OrbitFlare actuelles PASS
sources Yellowstone actuelles PASS
Free Devnet gRPC confirmé PASS
endpoints classifiés PASS
auth planes distingués PASS
heartbeat KSP vs provider classifié PASS FINAL
capabilities auditées PASS
replay/from_slot UNKNOWN PROVIDER
N1 immutable PASS
N2 immutable PASS
Config V3 shape PASS
smoke ownership PASS
threat model PASS
sizing/forecast PASS
provider runtime lourd ajouté NO

Verdict final : architecture positive, inconnus provider non requis qualifiés, aucun split déclenché.

16. Gate pre.002 commité

Validation opérateur du 2026-08-25 :

Critère Verdict
Cargo 0.2.10-pre.2 PASS
cargo fmt --all PASS
audit Rust PASS
audit Markdown PASS / 98 tables / 98 files
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
Config unit 114 sur 114 PASS
Transport unit 383 sur 383 PASS
Transport public API 49 sur 49 PASS
Transport release completeness 43 sur 43 PASS
workspace test PASS
graphes Transport FOURNIS / PAS DE CONFLIT N1
moteur N1 modifié NO
standard N2 modifié NO
live sans metadata FAIL CLASSIFIED
SubscribeOpen UNAUTHENTICATED

Le failure live est la caractérisation historique qui a imposé le fix d'auth, pas une régression du moteur.

17. Gate pre.002-fix.001

Critère Verdict
Cargo 0.2.10-pre.2.fix.1 PASS
.env.example inventorie le secret OrbitFlare PASS
Config secret_metadata contient x-token PASS
valeur provenant de KSP_SECRET_ORBITFLARE_DEVNET_GRPC_X_TOKEN PASS
test Config prouve redaction et classification secrète PASS
smoke lit la License Key sur stdin PASS
secret absent des arguments CLI PASS
moteur N1 modifié NO
standard N2 modifié NO
SDK OrbitFlare ajouté NO
connect authentifié PASS LIVE
Subscribe -> Slot live PASS LIVE / 5.10 s
SubscribeUpdate::Ping live PASS LIVE
close live PASS LIVE

Le fix ferme l'auth et confirme que le chemin standard suffit.

18. Gate pre.003 technique/live final

Gate opérateur du 2026-08-25 :

Critère Verdict
Cargo 0.2.10-pre.3 PASS
cargo fmt --all PASS
audit Rust PASS / 0 export candidate
audit Markdown PASS / 99 tables / 100 files
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
Config unit 114 sur 114 PASS
Config ownership 5 sur 5 PASS
Config public API 15 sur 15 PASS
Transport unit 383 sur 383 PASS
Transport public API 49 sur 49 PASS
Transport release completeness 43 sur 43 PASS
Transport doctests 4 sur 4 PASS
workspace dependency canary 3 sur 3 PASS
cargo test --workspace PASS
OrbitFlare Devnet live 1 sur 1 PASS / 5.19 s
graphes Cargo INSPECTÉS / PAS DE BLOCAGE
moteur N1 modifié NO
standard N2 modifié NO

Pile directe réconciliée :

yellowstone-grpc-proto 12.6.0
tonic / tonic-prost     0.14.6
prost / prost-types     0.14.4

Verdict : gate technique/live final fermé.

19. Gate pre.004 documentaire

Cette tranche doit uniquement synchroniser :

plan 017
validation 013
README Transport
USAGE Transport
docs/000-README.md

Elle ne change ni code, ni Config runtime, ni schema, ni test, ni dependency. CHANGELOG.md, ROADMAP.md et le prompt suivant restent réservés au couloir publication-minimal.

La décision de séquence est prise avant pre.005 : Helius LaserStream gRPC est reporté dans les TODO Yellowstone sans numéro de release faute d'accès live raisonnable, et 0.2.11 devient off-chain price transport. Aucun prompt suivant n'est généré dans pre.004.