Gateway Node
The Gateway Node is the primary entry point for clients into the NCN Network. It routes inference requests, manages compute node reservations, and handles payment processing.
Overview
┌─────────────────────────────────────────────────────────────────────────┐
│ Gateway Node │
│ │
│ External Interfaces Internal Services │
│ ┌─────────────┐ ┌────────────────────┐ │
│ │ gRPC │◀──────────────────────│ Reservation Manager│ │
│ │ (50051) │ └────────────────────┘ │
│ └─────────────┘ │
│ ┌─────────────┐ ┌────────────────────┐ │
│ │ HTTP │◀──────────────────────│ Payment Processor │ │
│ │ (8080) │ └────────────────────┘ │
│ └─────────────┘ │
│ ┌─────────────┐ ┌────────────────────┐ │
│ │ WebSocket │◀──────────────────────│ State Manager │ │
│ │ (9000) │ └────────────────────┘ │
│ └─────────────┘ │
│ ┌────────────────────┐ │
│ Outbound Connections │ Finalizer │ │
│ ┌─────────────┐ └────────────────────┘ │
│ │ Registry │────▶ P2P Registry (50050) │
│ │ Client │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Blockchain │────▶ Ethereum RPC │
│ │ Client │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Compute │◀───▶ Compute Nodes (bidirectional stream) │
│ │ Stream │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘Features
Multi-Protocol Support: gRPC, HTTP REST, and WebSocket interfaces
Compute Node Management: Reservation system for task assignment
Payment Processing: Blockchain payment verification and finalization
State Persistence: Crash recovery with persistent state
Subnet Management: CLI tool for creating and managing subnets
Metrics: Prometheus-compatible metrics endpoint
Quick Start
Build
Configure
Minimum Configuration:
Run
Expected Output:
Architecture
Internal Modules
gRPC Server
src/grpc.rs
Compute node and client gRPC interfaces
HTTP Server
src/http.rs
REST API for clients
WebSocket Server
src/ws.rs
Real-time updates
Reservation Manager
src/reservation.rs
Compute node reservations
Payment Processor
src/payment.rs
Payment handling
State Manager
src/state.rs
Request lifecycle state
Finalization
src/finalization.rs
Completion handling
Registry Client
src/registry.rs
P2P Registry communication
Contract Client
src/contract.rs
Blockchain interactions
Request Flow
API Interfaces
gRPC API
Service: GatewayClientService
SubmitInferenceTask
InferenceRequest
InferenceTaskStatus
Submit inference request
SubscribeToTaskUpdates
RequestID
stream InferenceResponse
Subscribe to results
Service: GatewayComputeService
ConnectComputeNode
stream NodeInfo
stream InferenceRequest
Bidirectional stream
SendResponse
InferenceResponse
Ack
Send completed result
SyncModels
SyncModelsRequest
SyncModelsResponse
Sync subnet models
See gRPC API Reference for details.
HTTP API
/api/v1/inference
POST
Submit inference request
/api/v1/inference/{id}
GET
Get inference status
/api/v1/health
GET
Health check
/api/v1/metrics
GET
Prometheus metrics
See HTTP API Reference for details.
WebSocket API
task_status
Server → Client
Task status update
task_result
Server → Client
Inference result
error
Server → Client
Error notification
See WebSocket API Reference for details.
Configuration
Environment Variables
GATEWAY_WALLET_PRIVATE_KEY
Yes
-
Gateway wallet private key
GATEWAY_WALLET_ADDRESS
No
Derived
Gateway wallet address
RPC_URL
Yes
-
Blockchain RPC endpoint
CONTRACT_ADDRESS
Yes
-
InferencePayment contract
REGISTRY_GRPC_ADDR
Yes
-
P2P Registry address
GRPC_ADDR
No
127.0.0.1:50051
gRPC listen address
HTTP_ADDR
No
127.0.0.1:8080
HTTP listen address
WS_ADDR
No
127.0.0.1:9000
WebSocket listen address
SUBNET_ID
No
1
Gateway's subnet ID
GAS_LIMIT
No
500000
Default gas limit
REQUIRED_CONFIRMATIONS
No
1
Required tx confirmations
See Configuration Reference for complete details.
Subnet CLI
The Gateway includes a CLI tool for subnet management:
See Subnet CLI Guide for complete documentation.
State Management
The Gateway persists state to handle restarts and crashes:
Persisted Data
Request lifecycle state
Payment confirmations
Compute completions
Reservation status
State File
Recovery
On startup, the Gateway:
Loads persisted state
Resumes pending requests
Re-establishes compute node connections
Continues payment monitoring
Metrics
Prometheus metrics available at /api/v1/metrics:
gateway_requests_total
Counter
Total requests received
gateway_requests_active
Gauge
Currently active requests
gateway_requests_completed
Counter
Completed requests
gateway_requests_failed
Counter
Failed requests
gateway_payment_total_wei
Counter
Total payments processed
gateway_compute_nodes_connected
Gauge
Connected compute nodes
gateway_reservations_active
Gauge
Active reservations
Troubleshooting
Common Issues
"Failed to connect to Registry"
Verify P2P Registry is running
Check
REGISTRY_GRPC_ADDRconfiguration
"No compute nodes available"
Verify compute nodes are connected and idle
Check if model is in compute node's supported models
"Payment verification failed"
Check blockchain connection (
RPC_URL)Verify transaction has enough confirmations
See Gateway Troubleshooting for more help.
Related Documentation
Architecture - Internal architecture details
gRPC API - gRPC API reference
HTTP API - HTTP API reference
WebSocket API - WebSocket API reference
Configuration - Configuration options
Subnet CLI - Subnet management CLI
Last updated
