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 Referencearrow-up-right 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 Referencearrow-up-right 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 Referencearrow-up-right 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 Referencearrow-up-right for complete details.


Subnet CLI

The Gateway includes a CLI tool for subnet management:

See Subnet CLI Guidearrow-up-right 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 Troubleshootingarrow-up-right for more help.


Last updated