Skip to content

Transaction duplication across operator bundles #3675

@jfrank-summit

Description

@jfrank-summit

Summary

There is potential for duplication of domain transactions across multiple operator bundles within the same consensus block and across consecutive blocks. While the domain client deduplicates prior to execution, the consensus chain still includes full bundle bodies, resulting in redundant transactions being gossiped, stored, validated, and archived. This increases block size, bandwidth, and storage footprint.

Current behavior

  • Consensus blocks include full bundle bodies for all accepted bundles.
  • Multiple operators can submit bundles for the same domain and height with overlapping extrinsics.
  • The consensus runtime validates bundle headers and associated execution receipts (ERs), and records accepted bundles in ExecutionInbox via digests (header hash, extrinsics root, size), while the full bundle bodies live in the consensus block body.
  • Domain nodes later extract accepted bundles and run deduplicate_and_shuffle_extrinsics() before building and executing the domain block, so execution occurs at most once even when the same transaction appears multiple times.
  • Validation of bundle bodies (decoding, tx-range, XDM MMR proof checks, etc.) is performed statelessly in the domain preprocessor, not by the consensus runtime.

Impact

  • Larger consensus blocks due to repeated transactions for overlapping bundles.
  • Higher bandwidth usage for nodes (both network propagation and block import).
  • Increased storage growth

Notes

  • What is the current duplication profile across (distribution, tail behavior)?
    • Probably low given there are not many transactions.
    • We should measure this during load testing on test networks

Metadata

Metadata

Assignees

No one assigned

    Labels

    executionSubspace execution

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions