Skip to main content

Chain activity reads

These reads return recent blocks and recent order-lifecycle events.

They are read queries on POST /info. That page describes the endpoint, the request envelope, the number planes and the error shape. These apply to every query here.

Chain activity query types​

The gateway serves recent blocks and recent order-lifecycle events from the standalone history archive. These reads replace the removed explorer_block and explorer_txs WS channels. See Ids and wire shapes for the reason that a validator no longer pushes that full stream.

Both reads answer in the standard /info envelope, with type inside data. The history-archive lane differs only in its rejection shape. A gateway with no archive configured answers an empty array with a flag. It never answers an error.

Recent committed blocks​

Request

{ "type": "recent_blocks", "limit": 100 }
FieldTypeRequiredMeaning
limituint32noCap on rows returned, newest first

Response

{
"data": {
"type": "recent_blocks",
"blocks": [
{ "height": 26616908,
"block_hash": "0x3bbcfeea4bcebded111b4407fe46ea2fbda57457fad926e27de9012eceabd583",
"ts_ms": 1788169351971,
"action_count": 0,
"fill_count": 0 }
]
}
}
FieldTypeMeaning
blocks[*].heightuint64Committed block height. Each committed block advances exactly one consensus round
blocks[*].block_hashhex string | nullBlock hash
blocks[*].ts_msuint64Block timestamp (consensus ms)
blocks[*].action_countuint32Signed actions committed in the block
blocks[*].fill_countuint32Fills settled in the block

There is no proposer. The removed WS header had the index of the proposing validator. The archive record does not. No other read serves it today.

Size a poll so that it has no gaps. The block cadence is about 100 ms, so 100 rows cover about 10 seconds of chain. A 2-second poll always overlaps. Measure the cadence. Do not trust that figure, because it changes between releases.

Recent order-lifecycle events​

This read returns one row for each order transition, not for each order. One order emits several rows (placed, then filled, then cancelled). oid therefore repeats and cannot key a list.

Request

{ "type": "recent_transactions", "limit": 100 }
FieldTypeRequiredMeaning
limituint32noCap on rows returned, newest first

Response

{
"data": {
"type": "recent_transactions",
"txns": [
{ "oid": "34143530",
"user": "0x0c4ec1cba7310669b08145f17a29b1048d9196ab",
"coin": "PUMP",
"action": "resting",
"status": 1,
"side": 0,
"time": 1788169342234 }
]
}
}
FieldTypeMeaning
txns[*].oiddecimal-digit stringOrder id. It is not unique across rows, because one order emits one row for each transition
txns[*].userhex addressActing account
txns[*].coinstringMarket symbol or spot pair name
txns[*].actionstringReadable lifecycle label ("resting" / "filled" / "canceled" …). Treat it as an open set
txns[*].statusuint8The raw status code behind action
txns[*].sideuint80 = bid, 1 = ask
txns[*].timeuint64Event timestamp (consensus ms)

There is no hash. The removed WS row had the hash of the originating action. /exchange referred to it as the way to check a submitted action by hash. Correlate by cloid instead, or read action_outcome.