Anchor / Devnet
Program reference
Everything the client and the oracle consumers need: core addresses, instruction surface, account shapes, and event contracts.
Program live on devnet
Canonical address
Program ID
The single source of truth for explorer lookups, CPI consumers, and on-chain registry reads.
2paXpX8Ze3tvYezviSwQJSSihG3LbrDiD7SNsaFwgTow
Derived accounts
RegistryAccount
65Bseeds: [b"registry"]
Global config, operator authority, stake parameters.
NetworkHealthAccount
632Bseeds: [b"network_health"]
Canonical oracle surface for CPI consumers.
ObserverAccount
128Bseeds: [b"observer", pubkey]
Per-observer state, stake escrow, latest attestation.
Instruction surface
9 public instructions
| Instruction | Caller | Behavior |
|---|---|---|
| initialize | deployer | Bootstraps registry and network health accounts. |
| register_observer | observer daemon | Creates observer PDA and escrows stake. |
| submit_attestation | observer daemon | Publishes reachability, RTT, slot latency, client diversity, and stake-weighted reach. |
| crank_aggregation | permissionless | Recomputes regional and global scores. |
| deregister_observer | observer or authority | Closes active participation and returns stake. |
| slash_observer | authority | Penalizes malicious or stale observers. |
| update_config | authority | Adjusts caps, stake threshold, and pause state. |
| propose_authority | authority | Starts a two-step authority handoff. |
| accept_authority | new authority | Accepts a pending authority handoff. |
Account schemas
| Field | Type | Description |
|---|---|---|
| health_score | u8 | Global score from 0 to 100. |
| tpu_reachability_pct | u8 | Average TPU success rate. |
| avg_slot_latency_ms | u32 | Average slot latency. |
| active_observer_count | u16 | Active observers in score computation. |
| active_region_count | u16 | Regions currently included. |
| last_updated_slot | u64 | Freshness anchor for consumers. |
| last_updated_ts | i64 | Unix timestamp for the last aggregate update. |
| min_health_ever | Option<u8> | Lowest global score observed since initialization. |
| max_health_ever | u8 | Highest global score observed since initialization. |
| total_attestations | u64 | Cumulative writes from the network. |
| region_scores | [RegionScore; 7] | Per-region score buckets. |
| agave_count | u16 | Network-wide Agave validators seen. |
| firedancer_count | u16 | Network-wide Firedancer validators seen. |
| jito_count | u16 | Network-wide Jito validators seen. |
| solana_labs_count | u16 | Network-wide Solana Labs validators seen. |
| other_count | u16 | Network-wide other-client validators seen. |
Events and score model
ObserverRegistered
Observer accepted with stake escrowed.
ObserverDeregistered
Observer removed from active set.
ObserverSlashed
Stake penalty emitted by authority.
AttestationSubmitted
Signed network measurement committed.
ConfigUpdated
Registry configuration changed.
Score formula
observer_score = (reachability_pct * 0.70) + (latency_score * 0.30) latency_score = max(0, (400 - slot_latency_ms) / 400 * 100) global_score = avg(non_stale_region_scores) stale_threshold = 150 slots