Skip to content

Batch-sender: adopt v2 ANNOUNCE topic layout (closes Issue #63; audit-doc correction for #62) #159

Description

@truthixify

Tier: M (2-4 days) | Type: bug + feature

Context. stellar/EVENT_INDEXING_AUDIT.md still flags Issues #62 (splitter) and #63 (batch-sender) as emitting single-topic ("ANNOUNCE",) events. The splitter verdict is stale: stellar/stealth-splitter/src/lib.rs line 292 (fund_split) already routes announcements through the announcer contract via the announcer_client::announce client imported at lines 78-103, so splitter output goes out with the full 4-topic v2 layout ("announce", scheme_id, view_tag_bucket, metadata_kind). Batch-sender genuinely lags: stellar/stealth-batch-sender/src/lib.rs lines 80-88 still emit (symbol_short!("ANNOUNCE"),) inline, breaking server-side topic-3 view-tag filtering for anything sent through it and forcing indexers to full-scan its output.

Scope.

  • Change batch-sender's per-transfer emission to route through the announcer contract (same pattern splitter uses via announcer_client::announce), or emit inline with the identical 4-topic layout including view_tag_bucket = metadata[0] as u32.
  • Add an integration test verifying topic-3 filter returns the correct subset across all three sources (announcer, splitter, batch-sender).
  • Update EVENT_INDEXING_AUDIT.md to mark Issue Per-network deployment config validation #63 resolved and correct the splitter verdict for Issue Independent third-party audit preparation pack #62 (audit-doc-only, no splitter code change needed).
  • Update stellar/examples/indexer/src/processor.ts to remove any batch-sender-specific handling that only existed because of the single-topic emission.

Acceptance.

  • Batch-sender emits the 4-topic layout in unit + snapshot tests
  • Integration test in stellar/integration-tests/tests/ verifies topic-3 filter returns only matching view-tag entries across all three sources
  • EVENT_INDEXING_AUDIT.md closes Per-network deployment config validation #63 with the merging PR link and closes Independent third-party audit preparation pack #62 as an audit-doc correction (splitter already routes through announcer)
  • Reference indexer processor treats all three sources uniformly (documented single code path)

Files. stellar/stealth-batch-sender/src/lib.rs, stellar/integration-tests/tests/topic_filter.rs (new), stellar/EVENT_INDEXING_AUDIT.md, stellar/examples/indexer/src/processor.ts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Stellar WaveIssues in the Stellar wave programbugSomething isn't workingdripsFunded via Drips Networkhelp wantedExtra attention is neededindexingstellarTouches Stellar / Soroban codestellar-waveAuto-created for Wave 8wave-8Auto-created for Wave 8

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions