RPC reference for Continuum Chain

Interacting with Continuum Chain Testnet

Direct Communication

1 . StreamTx

GRPC endpoint / Kafka Producer that allows you to stream transactions in real time. Combined with colocation and running your own full node, this allows you to calculate the canonical state of the chain in 1-2 ms at any given time.

Note that StreamTx is subject to aggressive rate limits and blocks - ensure your machine has enough RAM and bandwidth to keep up with the stream (approx 32 Mbit/s).

Colocation Tips: Currently the continuum sequencer operates out of EU-frankfurt Availability Zone. Select this option for ~1ms round trip latency.

2. SubmitTx

This allows for direct submission of transactions to continuum via grpc for minimized latency. Rate limits apply.

RPC Endpoints

In addition, we also offer historical query APIs, via REST. you can use our official RPC endpoints, or point to any full node, to access this data. Our official RPC endpoint is:

https://rpc.fermilabs.xyz/

Example usage:

curl https://rpc.fermilabs.xyz/status

List Blocks

Retrieve a paginated list of blocks, ordered by height (descending).

Parameters:

Parameter
Type
Default
Description

limit

int

20

Number of blocks to return (max 100)

offset

int

0

Number of blocks to skip

Example:

Response:


Get Latest Block

Retrieve the most recent block with full transaction and event details.

Example:

Response:


Get Block by Height

Retrieve a specific block with full transaction and event details.

Example:

Response:


Transaction Endpoints

Get Transaction by ID

Retrieve a specific transaction by its ID.

Transaction ID Format: {block_height_hex}-{batch_index_hex}-{tx_index_hex}

Example:

Response:

Transaction Kinds:

  • order - New order placement

  • cancel - Order cancellation


Event Endpoints

List Events

Retrieve a paginated list of events, optionally filtered by market.

Parameters:

Parameter
Type
Default
Description

limit

int

50

Number of events to return (max 200)

offset

int

0

Number of events to skip

market_id

string

-

Filter by market UUID (optional)

Example:

Response:


WebSocket Subscriptions

Subscribe to New Blocks

Real-time block notifications via WebSocket.

Example (using websocat):

Behavior:

  1. On connection, immediately receives the latest block details

  2. Subsequently receives new blocks as they are produced

Message Format: Same as GET /blocks/:height response


Query Patterns

Get Transactions in a Time Range

The API doesn't support direct time-range queries. Use this pattern:

Get All Transactions for a User

Get Transactions for a Market

Pagination Example


Data Models

BlockRecord

Field
Type
Description

height

u64

Block height (sequential)

state_root

[u8; 32]

Merkle root of state after block

applied_batches

u64

Cumulative batch count

applied_orders

usize

Orders matched in this block

produced_at

u64

Unix timestamp (seconds)

total_orders

usize

Total order transactions

total_cancels

usize

Total cancel transactions

batch_summaries

array

Batch details (see below)

transaction_ids

array

Transaction IDs in this block

event_ids

array

Event IDs in this block

BatchSummary

Field
Type
Description

index

u32

Batch index within block

tick_number

u64

Continuum tick number

order_count

usize

Orders in batch

cancel_count

usize

Cancels in batch

continuum_sequences

array

Continuum sequence numbers

batch_hash

string

SHA256 hash of batch

ExplorerTransaction

Field
Type
Description

id

string

Unique transaction ID

block_height

u64

Block containing this tx

batch_index

u32

Batch index within block

kind

string

"order" or "cancel"

market_id

string

Market UUID

market_name

string

Human-readable market name

market_kind

string

"Spot" or "Perp"

owner

string

Base58 public key

side

string

"Buy" or "Sell" (orders only)

price

u64

Price in quote units (orders only)

quantity

u64

Quantity in base units (orders only)

base_mint

string

Base token mint (orders only)

quote_mint

string

Quote token mint (orders only)

order_id

u64

Client order ID

timestamp_ms

u128

Submission timestamp (ms)

continuum_sequence

u64

Continuum sequence number

signature

string

Ed25519 signature (hex)

ExplorerEvent

Field
Type
Description

id

string

Unique event ID

block_height

u64

Block containing this event

batch_index

u32

Batch index within block

market_id

string

Market UUID

market_name

string

Human-readable market name

applied_orders

usize

Orders matched

batch_hash

string

Associated batch hash


Node Status

Get Node Status

Response:


Storage Details

Block explorer data is persisted to the sled database at the path specified by --db-path (default: ./rollup_data).

Storage location: {db-path}/db/

Stored data:

  • explorer.blocks - Block records indexed by height

  • explorer.transactions - Transactions indexed by ID

  • explorer.events - Events indexed by ID

Data persists across node restarts and is automatically loaded on startup.

Last updated