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

Module
File
Purpose

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

RPC
Request
Response
Description

SubmitInferenceTask

InferenceRequest

InferenceTaskStatus

Submit inference request

SubscribeToTaskUpdates

RequestID

stream InferenceResponse

Subscribe to results

Service: GatewayComputeService

RPC
Request
Response
Description

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

Endpoint
Method
Description

/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

Event
Direction
Description

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

Variable
Required
Default
Description

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:

  1. Loads persisted state

  2. Resumes pending requests

  3. Re-establishes compute node connections

  4. Continues payment monitoring


Metrics

Prometheus metrics available at /api/v1/metrics:

Metric
Type
Description

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_ADDR configuration

"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.


Last updated