Messages

Event Explorer

Label UQ 0:hex ?
ws:0 msg:0 ev:0
Offline
Select an event from the sidebar
? Initiator Trader Destination DEX/Pool Jetton Wallet Recipient Unknown
Address
Message
Rule Builder ?
How to Use Event Explorer
Overview
This page visualizes TON blockchain events in real time. Each event is a tree of messages triggered by one external transaction. The system decodes messages using BOC rules, classifies events using event rules, and enriches addresses with labels.
Click labels (text below nodes) to see address details and add labels.
Click edge labels (text on arrows) to inspect message payloads and decode BOC data.
Click event badges in the sidebar to create or edit event rules.

Adding a BOC Rule (Decode Messages)
BOC rules tell the system how to parse the binary payload of messages with a specific opcode. When a rule matches, raw bytes become named fields (amounts, addresses, etc.).
1Wait for an event to appear in the sidebar, or paste an address and click Filter.
2Click any edge label (text on arrow) on the graph to open the Message Detail panel on the right.
3Scroll down to the BOC Decoder section. You’ll see the raw hex bytes color-coded by field.
4Add fields using + Add field. Set each field’s name, type (uint, addr, amount, bool, bits, ref…), and bits. The decoder runs live — results appear instantly.
5Fill in Rule ID (e.g. myapp_swap), Name, and Priority at the top of the BOC section.
6Click Save BOC Rule. The rule is saved to boc-rules.json and takes effect immediately (hot-reload).
Tips: The first field is usually op (uint, 32 bits, skip=on). Use amount type for TON/jetton values (auto variable-length). Use addr for standard 267-bit addresses. Check skip on fields you don’t want in decoded output.
{ "id": "myapp_swap", "match": { "op": "0xaabbccdd" }, "name": "MyApp Swap", "fields": [ { "name": "op", "type": "uint", "bits": 32, "skip": true }, { "name": "sender", "type": "addr" }, { "name": "amount_in", "type": "amount" }, { "name": "amount_out", "type": "amount" } ] }

Adding an Event Rule (Classify Events)
Event rules match whole events (not individual messages) and produce a one-line summary like “Swap 5 TON → 120 BOLT”. They use conditions on opcodes, organizations, and categories, plus a display template with variables.
1Find an event in the sidebar that you want to classify. It will show a grey +rule badge if no event rule matched.
2Click the +rule badge (or the existing rule name badge) to open the Rule Builder panel at the bottom.
3Set Rule ID, Name, Priority (lower = higher priority), Handler (swap, transfer, nft, template), and Category.
4Set conditions by clicking opcode/org/category tags to cycle: ignorerequireforbid. At least one require condition is recommended.
5Add variables (optional): click an edge to open message detail, check fields you want, then the variables list in the Rule Builder updates.
6Write the Display template using {variable} placeholders. Built-in variables: {total_in}, {total_out}, {routes}, {gas}, {primary}, {name}.
7Click Save Rule. The rule is saved to event-rules.json and takes effect on new events immediately.
Handlers: swap — auto-computes total_in/total_out/routes from flow analysis. transfer — computes primary transfer amount. nft — extracts NFT item and owner. template — raw template with your own variables.
{ "id": "myapp_swap", "name": "MyApp Swap", "priority": 20, "category": "swap", "handler": "swap", "conditions": [ { "has": "op", "value": "0xaabbccdd" } ], "display": "Swap {total_in} → {total_out}", "display_long": "Swap {routes}, gas {gas} TON" }

Adding an Address Label
Address labels replace raw 0:hex addresses with human-readable names (e.g. “Ston.fi Router v2”). They are stored in addr-labels.ndjson.
1Click any label (text below node) on the graph to open the Address Detail panel on the right.
2If the address is unknown, you’ll see “Unknown address” and an Add label form below.
3Fill in at minimum the Label field (e.g. dedust). Optionally set Name, Category, Organization, Description, and Website.
4Click Save. The label is persisted on the server and the graph updates immediately — the node name changes to your label.
Categories: dex, wallet, nft, bridge, staking, lending, ads, validator, system, other. The category determines the node color on the graph.
Label: dedust Name: DeDust Vault Category: dex Organization: dedust Description: DeDust native vault contract Website: https://dedust.io

Quick Reference
Node colors:
Initiator   Trader   Destination   DEX/Pool   Jetton Wallet   Recipient
Edge colors:
Transfer   Jetton   Excesses   Bounce   Other
Keyboard & Controls:
Label/UQ/0:hex: switch how addresses display on the graph
FAB button (bottom-right): pause/resume the live stream
Replay bar: appears below graph for step-by-step message replay

Step 0 / 0
500ms ?