mirror of
https://github.com/eosswedenorg/thalos-docs
synced 2026-11-03 05:06:46 +01:00
137 lines
6.3 KiB
Markdown
137 lines
6.3 KiB
Markdown
# 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:
|
|
|
|
- `[]byte` fields 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[]`](#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`](#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[]`](#permissionlevel) | Authorization list |
|
|
| `except` | `string` | Exception text (if any) |
|
|
| `error` | `uint64` | Error code |
|
|
| `return` | `bytes` | Return value bytes |
|
|
|
|
> Note: the field is `name` (not `action`).
|
|
|
|
### 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[]`](#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[]`](#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.
|