Overview
The Writer Actions stream contains system operations for spot token transfers, tracking automated asset movements and system-level transfers within Hyperliquid's ecosystem.
Stream Type: WRITER_ACTIONS
API Availability: gRPC Streaming API + JSON-RPC/WebSocket APIs
Volume: Low - Updates when system performs automated spot token transfers
Data Structure
Writer actions capture system operations for spot token transfers, indexed by user address, nonce, and EVM transaction hash:
{
"local_time": "2024-12-30T18:35:51.000000000",
"block_time": "2024-12-30T18:35:50.825613062",
"block_number": 805892411,
"events": [
[
"0x200000000000000000000000000000000000012b",
{
"user": "0x200000000000000000000000000000000000012b",
"nonce": 33554479,
"evm_tx_hash": "0x80b1b5b2f1fd3e7c68d7b2e6e0f5c0a7d4c3b2a1",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x200000000000000000000000000000000000012b",
"token": 299,
"wei": "200000000000"
}
}
]
]
}
Field Definitions
Event Structure
Field
Type
Description
user
string
System user address (usually starts with 0x200000...)
nonce
integer
Unique nonce for the system operation
evm_tx_hash
string
Associated EVM transaction hash
action
object
Action details (see Action Structure below)
Action Structure
Field
Type
Description
type
string
Action type (e.g., "SystemSpotSendAction")
destination
string
Destination address for the token transfer
token
integer
Token ID (numeric identifier for the specific token)
wei
string
Transfer amount in wei (smallest unit)
API Usage
gRPC Streaming
// Subscribe to writer actions
const request = {
subscribe: {
stream_type: 'WRITER_ACTIONS',
start_block: 0,
filters: {
"user": ["0x200000000000000000000000000000000000012b"],
"action.type": ["SystemSpotSendAction"],
"action.token": [299, 269, 0]
}
}
};
JSON-RPC
# Get latest writer action blocks
curl -X POST https://your-endpoint.hype-mainnet.quiknode.pro/your-token/hypercore \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "hl_getLatestBlocks",
"params": {
"stream": "writer_actions",
"count": 10
},
"id": 1
}'
WebSocket
// Subscribe to writer actions with filters
ws.send(JSON.stringify({
"method": "hl_subscribe",
"params": {
"streams": ["writer_actions"],
"filters": {
"user": ["0x200000000000000000000000000000000000012b"],
"action.type": ["SystemSpotSendAction"],
"action.token": [299, 0]
}
}
}));
Example System Transfer Records
SystemSpotSendAction - Token ID 299
{
"user": "0x200000000000000000000000000000000000012b",
"nonce": 33554479,
"evm_tx_hash": "0x80b1b5b2f1fd3e7c68d7b2e6e0f5c0a7d4c3b2a1",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x200000000000000000000000000000000000012b",
"token": 299,
"wei": "200000000000"
}
}
SystemSpotSendAction - Token ID 269
{
"user": "0x200000000000000000000000000000000000012c",
"nonce": 33554480,
"evm_tx_hash": "0x7a92c4d3e2f4b5c6d8e9f0a1b2c3d4e5f6a7b8c9",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x200000000000000000000000000000000000012c",
"token": 269,
"wei": "55435839543"
}
}
SystemSpotSendAction - Token ID 0
{
"user": "0x200000000000000000000000000000000000012d",
"nonce": 33554481,
"evm_tx_hash": "0x6b83d5e4f1c2a3b4c5d6e7f8a9b0c1d2e3f4a5b6",
"action": {
"type": "SystemSpotSendAction",
"destination": "0x200000000000000000000000000000000000012d",
"token": 0,
"wei": "750000000000000000000"
}
}
Important Notes
- System Operations: These are automated system-level transfers, not user-initiated transfers
- Token IDs: Tokens are referenced by numeric IDs rather than symbol names (e.g., 299, 269, 0, 221)
- Wei Format: All amounts are in wei format (smallest denomination) as strings
- System Users: User addresses typically start with
0x200000000000000000000000000000000000followed by incremental hex values - EVM Integration: Each action has an associated EVM transaction hash for cross-system tracking
- SystemSpotSendAction: The primary action type for spot token transfers within the system
Token ID Reference
Common token IDs seen in system transfers:
- Token ID 0 - Base token or ETH equivalent
- Token ID 269 - System token (specific identity varies)
- Token ID 299 - System token (specific identity varies)
- Token ID 221 - System token (specific identity varies)
Note: Token ID mappings may vary.