URL replacement
Change your base URL from your current Go proxy to the Rust Gateway:/v1.0/ and / (root) for full compatibility, so existing tools that use the /v1.0/ prefix continue to work. Response JSON shapes match the Go proxy format, so you do not need to change client-side parsing.
You can test by pointing a staging environment to the Rust Gateway while keeping production on the Go proxy, then switch once you have validated compatibility.
What stays the same
| Feature | Compatibility |
|---|---|
| Endpoint paths | Identical |
| Request/response format | JSON, same field names |
| Query parameters | Same set (onFinalBlock, blockNonce, etc.) |
| HTTP methods | Same per endpoint |
| Error response format | Same {"error": "..."} structure |
| Version prefix | Both /v1.0/ and / work |
New capabilities
The Rust Gateway adds features beyond the Go proxy:| Feature | Endpoint | Description |
|---|---|---|
| Bulk account queries | POST /address/bulk | Query multiple addresses in one request, grouped by shard |
| Storage key iteration | POST /address/iterate-keys | Paginated iteration over smart contract storage |
| In-flight deduplication | Automatic | Identical concurrent requests share a single observer call |
| Prometheus metrics | GET /status/prometheus-metrics | Native Prometheus scrape endpoint |
Performance characteristics
- Built in Rust with Axum/Tokio for async I/O
- Near-zero heap allocations on the hot path
- Round-robin load balancing across observers with automatic failover
- TTL caching for block, hyperblock, heartbeat, validator stats, and economics endpoints
- Request coalescing prevents thundering herd on high-traffic endpoints
Monitoring
| Endpoint | Format | Description |
|---|---|---|
GET /status/metrics | JSON (Go-proxy-compatible) | Per-endpoint request count, error count, and response times |
GET /status/prometheus-metrics | Prometheus exposition | Native scrape endpoint for Prometheus |
GET /about | JSON | Proxy version and commit ID |
GET /about/nodes-versions | JSON | Observer node software versions by shard |
/status/metrics endpoint returns the same JSON structure as the Go proxy, so existing monitoring dashboards work without changes.
Health checks
| Endpoint | Purpose | Behavior |
|---|---|---|
GET /healthz | Liveness probe | Returns 200 |
GET /readyz | Readiness probe | Returns 503 until observers are synced |
/readyz in your load balancer or Kubernetes health check configuration. The liveness probe confirms the process is running. The readiness probe confirms the Gateway can serve accurate data.
