Skip to content

feat(validation): add dust transaction rejection guard - #708

Merged
Sadeequ merged 2 commits into
StellarFlow-Network:mainfrom
nextgenuniversity1-oss:feat/dust-transaction-rejection-guard
Jul 31, 2026
Merged

feat(validation): add dust transaction rejection guard#708
Sadeequ merged 2 commits into
StellarFlow-Network:mainfrom
nextgenuniversity1-oss:feat/dust-transaction-rejection-guard

Conversation

@nextgenuniversity1-oss

@nextgenuniversity1-oss nextgenuniversity1-oss commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

closes #608
Implements MIN_TRANSFER_AMOUNT check on all incoming deposits and swaps to reject micro-denominated (dust) transactions that waste ledger throughput and are commonly used for spam across payment corridors.

Changes:

  • src/validation/dust.rs (new): defines MIN_TRANSFER_AMOUNT = 10_000 stroops (0.001 XLM) and check_min_transfer() helper; includes 10 unit tests covering zero, boundary, and valid amounts
  • src/validation.rs: declares 'pub mod dust' submodule and re-exports check_min_transfer / MIN_TRANSFER_AMOUNT at the validation crate level
  • src/lib.rs: appends AmountTooLow = 48 to ContractError enum
  • src/fees.rs: calls check_min_transfer(collected) at the top of add_corridor_fees() to gate deposit entry point
  • src/router/multihop.rs: calls check_min_transfer(amount_in) inside execute_single_hop() to gate swap entry point

Closes: Anti-Spam | Automated Dust Transaction Rejection Guard
Impact: Low | Module: stellarflow-contracts/validation/dust.rs

Implements MIN_TRANSFER_AMOUNT check on all incoming deposits and swaps
to reject micro-denominated (dust) transactions that waste ledger
throughput and are commonly used for spam across payment corridors.

Changes:
- src/validation/dust.rs (new): defines MIN_TRANSFER_AMOUNT = 10_000
  stroops (0.001 XLM) and check_min_transfer() helper; includes 10
  unit tests covering zero, boundary, and valid amounts
- src/validation.rs: declares 'pub mod dust' submodule and re-exports
  check_min_transfer / MIN_TRANSFER_AMOUNT at the validation crate level
- src/lib.rs: appends AmountTooLow = 48 to ContractError enum
- src/fees.rs: calls check_min_transfer(collected) at the top of
  add_corridor_fees() to gate deposit entry point
- src/router/multihop.rs: calls check_min_transfer(amount_in) inside
  execute_single_hop() to gate swap entry point

Closes: Anti-Spam | Automated Dust Transaction Rejection Guard
Impact: Low | Module: stellarflow-contracts/validation/dust.rs
@drips-wave

drips-wave Bot commented Jul 29, 2026

Copy link
Copy Markdown

@nextgenuniversity1-oss Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Sadeequ
Sadeequ merged commit 167301c into StellarFlow-Network:main Jul 31, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🚫 Anti-Spam | Automated Dust Transaction Rejection Guard

3 participants