Skip to content

Implement privacy-preserving transaction pooling and mixing #499

Description

@Just-Bamford

Description

Problem

Sorokit transactions are fully linkable through their on-chain inputs, outputs, and timing. There is no abstraction for coordinating privacy-preserving transaction batches or separating individual transfers from a shared submission flow.

Solution

Introduce an optional transaction mixing layer that groups compatible transfers into coordinated batches before submission. The system should maintain participant state, shuffle eligible transactions, calculate the resulting execution cost, and expose the privacy trade-offs of joining a pool without changing the default transaction flow.

Acceptance Criteria

  • Mixing pools support multiple participants and pending transactions
  • Eligible transactions are shuffled before batch construction
  • Pool state prevents duplicate or already-submitted transactions
  • Privacy and execution costs are calculated before participation
  • Failed or expired participants can be removed without corrupting the pool
  • Participation remains explicitly opt-in
  • Tests cover pooling, shuffling, cancellation, failure, and empty-pool scenarios
  • Existing non-mixed transaction flows remain unchanged
  • Public APIs are exported through src/transaction/index.ts and src/index.ts

Note for Contributors

Keep the mixing layer isolated from normal transaction builders. Define clear lifecycle states for pooled transactions and avoid exposing participant relationships through public results. Include tests for partial failures and pool cleanup.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programbackendBackend / SDK logicenhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions