13 KiB
Validation 0.2.10 — OrbitFlare Yellowstone gRPC
Statut courant : matrice ouverte par 0.2.10-pre.001. Le gate d'architecture est positif. Le premier objectif live est le Devnet gratuit OrbitFlare via le standard Yellowstone KSP inchangé. Les verdicts provider non encore testés restent explicitement PENDING ou UNKNOWN.
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 | PENDING avant commit |
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 | non encore exécuté | PENDING |
| 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 Customer API | Customer API v2 | CONTROL-PLANE |
RPC api_key |
Solana HTTP RPC | HTTP ONLY |
| API key compte opérateur | CLI/Customer API | NOT GRPC PROOF |
| token gRPC Dashboard | quickstart Yellowstone | ACCOUNT DEPENDENT |
metadata upstream x-token |
mécanisme Yellowstone standard | POSSIBLE |
| aucune metadata gRPC | SDK Go OrbitFlare | DOCUMENTED |
| auth Devnet Free réelle | smoke KSP à exécuter | PENDING |
Aucun secret opérateur n'est demandé pour pre.001.
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 |
PASS |
| moteur N1 à modifier | non | PASS |
| Ping serveur OrbitFlare Devnet observé | live non encore exécuté | PENDING |
| heartbeat provider additionnel | non justifié tant que live non contraire | NO |
Critère de fermeture : observer le Ping standard sur OrbitFlare Devnet ou qualifier précisément pourquoi il n'est pas observable et quelle divergence provider existe.
8. Capabilities streaming
| Capability | Docs OrbitFlare | KSP N2 | Live provider |
|---|---|---|---|
| accounts | oui | PASS | PENDING |
| slots | oui | PASS | PENDING |
| transactions | oui | PASS | PENDING |
| transactions_status | partiel | PASS | PENDING |
| blocks | oui | PASS | PENDING |
| blocks_meta | oui | PASS | PENDING |
| entry | oui | PASS | PENDING |
| commitment | oui | PASS | PENDING |
| accounts_data_slice | oui | PASS | PENDING |
| Subscribe Ping/Pong | oui | PASS | PENDING |
Le premier smoke n'a pas besoin de démontrer chaque famille. Il doit prouver que le provider exécute le standard KSP sur Devnet ; les capacités supplémentaires sont sondées sans élargir N2.
9. Unary et replay
| Capability | N2 KSP | OrbitFlare docs | Live |
|---|---|---|---|
| SubscribeReplayInfo | PASS | non prouvé | PENDING |
| Ping unary | PASS | non prouvé | PENDING |
| GetLatestBlockhash | PASS | non prouvé | PENDING |
| GetBlockHeight | PASS | non prouvé | PENDING |
| GetSlot | PASS | non prouvé | PENDING |
| IsBlockhashValid | PASS | non prouvé | PENDING |
| GetVersion | PASS | non prouvé | PENDING |
| from_slot | PASS | non prouvé | PENDING |
| retention | N/A | non documentée | UNKNOWN |
Une restriction provider ne rétrograde jamais la disponibilité de la méthode dans le standard global KSP.
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 |
PLANNED |
protocol = solana_yellowstone |
PASS |
cluster = devnet |
PLANNED |
| Devnet URL publique | PLANNED |
| secret metadata par défaut | NO |
X-ORBIT-KEY dans Transport Config |
FORBID |
x-token si token gRPC prouvé |
DEFER |
heartbeat dans grpc_defaults |
NO |
12. Smoke Devnet attendu
Premier smoke :
Config/fixture -> YellowstoneGrpcEndpointSettings
provider = orbitflare
cluster = devnet
url = http://devnet.rpc.orbitflare.com:10000
metadata vide
open standard Subscribe
request slots confirmed
receive Slot non nul
observe Ping serveur pendant fenêtre bornée de caractérisation
close borné
Verdicts actuels :
| Preuve | Verdict |
|---|---|
| endpoint parsé par N1 | EXPECTED |
| connect Devnet | PENDING |
| Subscribe accepté | PENDING |
| Slot reçu | PENDING |
| server Ping reçu | PENDING |
| auto reply KSP déterministe | PASS |
| close borné | PASS N1 |
13. Provider overlay gate
La release reste sans façade OrbitFlare si pre.002 démontre :
standard Subscribe fonctionne
heartbeat standard fonctionne
Config V3 exprime endpoint/auth
aucune restriction consumer-visible ne requiert un type provider
Une façade/policy OrbitFlare devient admissible seulement après preuve live d'une divergence. Même dans ce cas :
N1 ne change pas
N2 ne change pas
pas de raw Tonic
pas de SDK OrbitFlare
ownership/close provider bornés
14. Non-régressions finales
| Surface | Baseline | Final |
|---|---|---|
| HTTP current typed | 52 sur 52 | PENDING |
| HTTP historical | 14 sur 14 | PENDING |
| WebSocket standard | 18 sur 18 | PENDING |
| Helius LaserStream WebSocket | stable 0.2.8 | PENDING |
| Yellowstone N1/N2 | stable 0.2.9 | PENDING |
| PublicNode Mainnet/Testnet | stable 0.2.9 | PENDING |
| Config V1/V2/V3 backward readable | stable 0.2.9 | PENDING |
| dependency firewall | stable 0.2.9 | PENDING |
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 | PENDING OPERATOR |
| 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, LIVE PENDING |
| capabilities auditées | PASS, LIVE PENDING |
| 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 :
architecture/sizing gate = POSITIVE
operator commit gate = PENDING full cargo tree + validations overlay
live provider gate = reserved for pre.002+