# Redis channels This document describes the Redis Pub/Sub channels used by Thalos. ## Channel key format All published channels are namespaced to avoid collisions: `::::` - `prefix`: defaults to `ship` (config: `redis.prefix`) - `chain_id`: chain id from API by default, or overridden with `ship.chain` - `channel-path`: one of the paths below If no chain id is available, Thalos uses an all-zero fallback chain id internally. ## Channel paths ### Heartbeat `::heartbeat` Published periodically (every 10 blocks) so subscribers can detect liveness. ### Transactions `::transactions` Contains `TransactionTrace` messages. ### Actions Thalos publishes each action trace to up to 4 channels: - All actions: `::actions` - By action name: `::actions/name/` - By contract: `::actions/contract/` - By contract + action: `::actions/contract//name/` ### Rollback `::rollback` Contains `RollbackMessage` messages when microfork rollbacks are detected. ### Table deltas - All table deltas: `::tabledeltas` - Table deltas by SHIP delta name: `::tabledeltas/name/` `` is the table delta name received from SHIP (for example `contract_row`, `contract_table`, `resource_usage`, `resource_limits_state`). ## Notes - `transactions`, `actions`, and `tabledeltas` output can be enabled/disabled via config/flags. - If `ship.table_delta_whitelist` is configured, only matching `contract_row` deltas are published.