Messages
This document describes the message payloads published by Thalos.
Encoding
Thalos supports two codecs (configured via message_codec / --codec):
json(default)msgpack
When using JSON:
[]bytefields are base64-encoded strings- timestamps are UTC and serialized by the JSON codec
Message types
HeartBeat
Published on heartbeat channel periodically.
| Field | Type | Description |
|---|---|---|
blocknum | uint32 | Current block number |
head_blocknum | uint32 | Current chain head block number |
last_irreversible_blocknum | uint32 | Last irreversible block number |
TransactionTrace
Published on transactions channel (unless disabled).
| Field | Type | Description |
|---|---|---|
id | string | Transaction id |
blocknum | uint32 | Block number |
blocktimestamp | time | Block timestamp |
status | string | Transaction status |
cpu_usage_us | uint32 | CPU usage (microseconds) |
net_usage_words | uint32 | NET usage words |
elapsed | int64 | Execution time |
net_usage | uint64 | NET usage |
scheduled | bool | Scheduled transaction flag |
action_traces | ActionTrace[] | Action traces for this transaction |
except | string | Exception text (if any) |
error | uint64 | Error code |
ActionTrace
Published on actions channels (unless disabled), and also nested in TransactionTrace.action_traces.
| Field | Type | Description |
|---|---|---|
tx_id | string | Parent transaction id |
blocknum | uint32 | Block number |
blocktimestamp | time | Block timestamp |
receipt | ActionReceipt / null | Action receipt |
name | string | Action name |
contract | string | Contract account |
receiver | string | Receiver account |
first_receiver | bool | True if receiver is first receiver |
data | any | ABI-decoded action data when available |
authorization | PermissionLevel[] | Authorization list |
except | string | Exception text (if any) |
error | uint64 | Error code |
return | bytes | Return value bytes |
Note: the field is
name(notaction).
ActionReceipt
| Field | Type | Description |
|---|---|---|
receiver | string | Receiver account |
act_digest | string | Action digest |
global_sequence | uint64 | Global sequence |
recv_sequence | uint64 | Receiver sequence |
auth_sequence | AccountAuthSequence[] | Auth sequence list |
code_sequence | uint32 | Code sequence |
abi_sequence | uint32 | ABI sequence |
PermissionLevel
| Field | Type | Description |
|---|---|---|
actor | string | Actor account |
permission | string | Permission name |
AccountAuthSequence
| Field | Type | Description |
|---|---|---|
account | string | Account name |
sequence | uint64 | Sequence |
RollbackMessage
Published on rollback channel on microfork rollback detection.
| Field | Type | Description |
|---|---|---|
old_block | uint32 | Previous current block |
new_block | uint32 | New current block |
TableDelta
Published on tabledeltas channels (unless disabled).
| Field | Type | Description |
|---|---|---|
blocknum | uint32 | Block number |
blocktimestamp | time | Block timestamp |
name | string | SHIP delta name |
rows | TableDeltaRow[] | Rows in the delta |
TableDeltaRow
| Field | Type | Description |
|---|---|---|
present | bool | Row present/removed flag |
data | object | Parsed row data when available |
raw_data | bytes | Raw row bytes |
TableDeltaRowContract (name = contract_row)
For contract_row deltas, data typically contains:
| Field | Type | Description |
|---|---|---|
table | string | Table name |
scope | string | Table scope |
primary_key | string | int | Primary key |
code | string | Contract account |
payer | string | RAM payer |
value | object | base64_string | Decoded row value when ABI is available; otherwise raw bytes |
If ABI decode fails, Thalos keeps raw data and may leave decoded fields partial.