Overview
Add a Soroban event parser that decodes emitted contract events into human-readable, typed output, including argument decoding and topic filtering.
Motivation
The Transaction Inspector decodes Soroban contract operations but does not decode the events emitted during execution. Events carry crucial state-change signals (e.g., a mint or a transfer). Developers need to decode these events to understand what a contract actually did, rather than reading raw XDR.
Proposed Design
- Add a decoder that parses Soroban event topics and data into typed values (Bool, I32, U64, I128, U128, Bytes, String, ContractId, Vec, Map, Address)
- Extract events from a transaction's result and render them with a readable contract/event signature
- Surface events in the Transaction Inspector result view, grouped by contract
- Add topic-based filtering (e.g., filter by contract ID or event name)
- Support resolving well-known event topics to friendly names via a small mapping
- Handle unknown/unresolvable topics gracefully by showing raw hex
- Provide a GET /api/inspector/:txHash/events endpoint returning decoded events as JSON
Acceptance Criteria
Overview
Add a Soroban event parser that decodes emitted contract events into human-readable, typed output, including argument decoding and topic filtering.
Motivation
The Transaction Inspector decodes Soroban contract operations but does not decode the events emitted during execution. Events carry crucial state-change signals (e.g., a mint or a transfer). Developers need to decode these events to understand what a contract actually did, rather than reading raw XDR.
Proposed Design
Acceptance Criteria