Overview
The blocks stream (stored as replica_cmds) contains ALL raw HyperCore transactions submitted to the Hyperliquid blockchain. This is the most comprehensive dataset available, capturing every action on the chain.
Stream Type: BLOCKS
API Availability: gRPC Streaming API, plus historical JSON-RPC block queries
Volume: Extremely High - Every HyperCore action is recorded
Availability: gRPC nodes for live streaming and for filtering. Historical blocks are also available through the /hypercore JSON-RPC methods hl_getBlock and hl_getBatchBlocks using stream: "replica_cmds".
Data Structure
Each block contains:
- Block height (
height) - Block metadata (
abci_block) - Signed action bundles (transactions with signatures)
- Responses (
resps) showing success/failure of each action
{
"height": 1124476039,
"abci_block": {
"round": 1424142449,
"parent_round": 1424142448,
"time": "2025-12-04T08:00:47.509497915",
"proposer": "0x9dd85fb6cf95a9d755af0853b36fb05e972c71e1",
"hardfork": {
"version": 69,
"round": 1091072071
},
"signed_action_bundles": [
[
"0xhash...",
{
"signed_actions": [
{
"signature": {
"r": "0x...",
"s": "0x...",
"v": 28
},
"action": {
"type": "order",
"a": 0,
"b": true,
"p": "92385.0",
"s": "0.00361",
"r": false,
"t": {"limit": {"tif": "Gtc"}},
"c": "0x89119db7aae18b90abe620888af9aadc"
},
"nonce": 1764816505537,
"vaultAddress": "0x0bfd7d7721f4c116e853c18ea7998e1cc2350a7d"
}
],
"broadcaster": "0x...",
"broadcaster_nonce": 1764816362065
}
]
]
},
"resps": {
"Full": [
[
"0xhash...",
[
{
"user": "0x...",
"res": {
"status": "ok",
"response": {
"type": "default"
}
}
}
]
]
]
}
}
Block Fields
The top-level height is the block number and should be used as the block identifier. The nested abci_block.round field is an ABCI round value and can differ from the block height.
The top-level height field was added to Hyperliquid's raw replica_cmds data on 2026-07-25, starting at block 1085381001. Blocks produced before that change are still returned in full, with abci_block and resps, but the response object has no height key, so the payload itself does not tell you which block you received. When you query that range with hl_getBlock or hl_getBatchBlocks, track the block number from your own request.
| Field | Type | Description |
|---|---|---|
| height | integer | Top-level block number (use this as the block identifier) |
| abci_block.round | integer | ABCI round value (not the block number) |
| abci_block.parent_round | integer | Parent ABCI round value |
| abci_block.time | string | Block timestamp (ISO 8601) |
| abci_block.proposer | string | Validator address who proposed this block |
| abci_block.hardfork | object | Hardfork metadata containing version and round |
Transaction Fields
| Field | Type | Description |
|---|---|---|
| signature | object | ECDSA signature with r, s, v components |
| action | object | The actual operation being performed (see Action Types) |
| nonce | integer | Transaction nonce for replay protection |
| vaultAddress | string | Vault address as a 0x-prefixed hex string. Present only when the action is performed by a vault; the key is omitted otherwise. |
| expiresAfter | integer | Expiry timestamp for the transaction. The key is omitted when no expiry is set. |
| isFrontend | boolean | Indicates the transaction originated from the Hyperliquid frontend. The key is omitted when not set. |
| broadcaster | string | Address that broadcasted the transaction bundle |
| broadcaster_nonce | integer | Broadcaster's nonce for the bundle |
Action Types (51 Types)
All HyperCore transaction types are organized by category for easier understanding:
| Category | Action Types | Purpose |
|---|---|---|
| Trading | order, cancel, cancelByCloid, modify, batchModify, scheduleCancel | Place, modify, and cancel orders |
| TWAP Orders | twapOrder, twapCancel | Time-weighted algorithmic trading |
| Asset Transfers | usdSend, spotSend, sendAsset, agentSendAsset, withdraw3, usdClassTransfer, sendToEvmWithData | Move funds between accounts and off-platform |
| Account Management | createSubAccount, subAccountTransfer, updateLeverage, updateIsolatedMargin, topUpIsolatedOnlyMargin | Sub-accounts, leverage, and margin settings |
| Vault Operations | vaultTransfer, NetChildVaultPositionsAction, approveAgent | Vault deposits, withdrawals, and agent permissions |
| Builder & MEV | approveBuilderFee | MEV builder fee approvals and payments |
| Referrals | registerReferrer, setReferrer | Referral program registration and attribution |
| Market Deployment | perpDeploy, hip3LiquidatorTransfer | Launch new perpetual markets and move HIP-3 backstop liquidator collateral |
| Token Operations | tokenDelegate, cDeposit, cWithdraw | Staking deposits, staking withdrawals, and token delegation |
| Rewards & Lending | claimRewards, borrowLend | Reward claims, and supply or borrow operations |
| Outcomes | userOutcome, outcomeDeploy, activateOutcomeDeployer | HIP-4 outcome markets, covering outcome splits and merges and outcome market deployment |
| EVM Operations | evmRawTx, evmUserModify | Direct smart contract interactions |
| DEX Abstraction | agentEnableDexAbstraction, agentDexAbstraction, userDexAbstraction, userSetAbstraction, agentSetAbstraction | Unified DEX interface and advanced trading |
| Validator & Governance | ValidatorSignWithdrawalAction, VoteEthFinalizedWithdrawalAction, SetGlobalAction, l1ValidatorVoteBridgeDeposit, validatorL1UpdateReferenceOracle | Bridge security, governance, protocol upgrades, and validator reference oracle price updates |
| Multi-Signature | multiSig | Transactions requiring multiple approvals |
| Utility | noop, reserveRequestWeight | Protocol synchronization, placeholder transactions, and request weight reservation |
Key Action Details
| Action | Description | Key Fields |
|---|---|---|
| order | Place new orders on the exchange | a, b, p, s, r, t, c |
| cancel | Cancel orders by order ID | a, o |
| twapOrder | Place algorithmic TWAP orders | duration, randomization |
| usdSend | Send USD between users | destination, amount, fee |
| withdraw3 | Withdraw funds from platform | destination, amount |
| vaultTransfer | Transfer to/from vaults | vault, amount, direction |
| evmRawTx | Raw EVM transactions | RLP encoded data |
| perpDeploy | Deploy new perpetual markets | market parameters |
Field Abbreviations:
a= asset,b= is buy,p= price,s= size,r= reduce only,t= order type,c= cloid,o= order ID
Response Structure
The resps field contains the result of each action:
{
"Full": [
[
"0xtransaction_hash",
[
{
"user": "0xuser_address",
"res": {
"status": "ok", // or "err"
"response": {
"type": "default" // or specific response data
}
}
}
]
]
]
}
Status values:
"ok"- Action executed successfully"err"- Action failed (response contains error message)
API Usage
gRPC Streaming and Historical JSON-RPC
Two gRPC methods stream this dataset:
- Use the StreamBlocks method to receive every block.
- Use StreamData with
stream_type: BLOCKSto receive only the blocks that match a filter (by action type or user). Each delivered block still contains all of its actions and responses.
// Filter blocks by action type or user (gRPC StreamData)
const request = {
subscribe: {
stream_type: 'BLOCKS',
filters: {
"type": { values: ["order", "cancel", "twapOrder"] },
"user": { values: ["0x925a3877cd884b8edf3160192f76c7c251f83856"] }
}
}
};
Note: Live streaming of this dataset is only available on gRPC nodes, not through WebSocket APIs. Historical blocks can also be read over JSON-RPC with hl_getBlock and hl_getBatchBlocks by passing stream: "replica_cmds". Those methods return whole blocks and take no filters.
Blocks filtering matches recursively, so a block is delivered when any action or response in it matches your filter. The full block payload is returned; non-matching actions are not removed. See the Stream Filtering guide for field details.
Important Notes
- gRPC Nodes for Streaming: Live streaming and filtering of this dataset are only available on gRPC nodes, not on regular full nodes. Historical blocks are also available over JSON-RPC with hl_getBlock and hl_getBatchBlocks using
stream: "replica_cmds" - Block Identifier: Use the top-level
heightas the block number, notabci_block.roundor the file name - Responses Required: Always check
respsto see if actions succeeded or failed - Highest Volume: This is the highest volume dataset - each block can contain thousands of actions
- Most Comprehensive: This captures EVERYTHING on HyperCore - if it happened on Hyperliquid, it's here
- Raw HyperCore Data: This is the raw blockchain data before any processing or aggregation
- Signature Verification: All actions include ECDSA signatures for verification
- Vault Actions: Actions from vaults include
vaultAddressfield