Skip to content

Dust Attack Protection: Donate Dust #6973

Description

@Parsh

Context

Part of #6965 — Dust Attack Protection and Donate Dust.

This issue covers the Donate Dust feature — allowing users to send all current Do Not Spend coins to a donation address, paying fees only from those coins. See also:


Goal

Give users an optional privacy-improvement action: donate all current Do Not Spend coins using a transaction that:

  • uses only Do Not Spend UTXOs
  • pays fees from those UTXOs only
  • never adds normal spendable coins
  • sends the remaining amount to the Keeper donation address

Donate Dust Entry Point

In Manage Coins, when the wallet has any current Do Not Spend coins, show a CTA:

Donate Dust

This CTA is contextual — only visible when eligible Do Not Spend coins exist. Do not show it on other screens.


Donate Dust Eligibility

All current Do Not Spend coins are eligible, including:

  • Potential dust payment
  • Linked to potential dust spend
  • Manually marked Do Not Spend

User can cancel on the confirmation screen.


Transaction Rules

  • Use only Do Not Spend UTXOs as inputs
  • Pay fees from those UTXOs only — never add normal spendable coins
  • Use minimum fee rate
  • Send leftover amount after fees to the Keeper donation address:
    bc1qyqequr0824nwf7snzvq5gqsr6xscn62e3ttm06
  • If no valid transaction can be built using only eligible Do Not Spend coins, keep them marked Do Not Spend and show error

Donate Dust Confirmation Screen

Screen type: Confirmation modal / bottom sheet

Title: Donate Dust?

Body: This helps clear dust / Do Not Spend coins for better privacy. Keeper will use only Do Not Spend coins for this transaction. Fees will be paid from those coins only.

Warning: No spendable coins will be used.

Detail line (if useful in review): Any amount left after fees will be donated to support Keeper.

Buttons:

  • Donate Dust — proceeds to existing transaction review/signing flow
  • Cancel — returns to Manage Coins

Error State

If a valid transaction cannot be built using only the eligible Do Not Spend coins, show:

These coins are too small to donate on their own. Keeper will keep them marked Do Not Spend.

Keep those coins marked Do Not Spend.


Success State

After successful donation:

Dust donated


Transaction History

After donation completes, the transaction appears in normal transaction history. No special label is required for a successful donation transaction.


Acceptance Criteria

  • Donate Dust CTA appears in Manage Coins when current Do Not Spend coins exist
  • Donate Dust does not appear when no Do Not Spend coins exist
  • Donate Dust uses all current Do Not Spend coins as inputs
  • Donate Dust never adds Spendable coins
  • Fees are paid only from Do Not Spend coins
  • Minimum fee rate is used
  • Remaining amount after fees goes to bc1qyqequr0824nwf7snzvq5gqsr6xscn62e3ttm06
  • Confirmation modal shows correct title, body, and warning copy
  • User must confirm before donation transaction proceeds
  • User can cancel — returns to Manage Coins
  • If transaction cannot be built using only Do Not Spend coins, error is shown and coins remain marked Do Not Spend
  • Error reads: These coins are too small to donate on their own. Keeper will keep them marked Do Not Spend.
  • Successful donation shows: Dust donated
  • Donation proceeds through existing transaction review/signing flow

Copy Requirements

Use these exact labels:

  • Donate Dust
  • Donate Dust?
  • This helps clear dust / Do Not Spend coins for better privacy. Keeper will use only Do Not Spend coins for this transaction. Fees will be paid from those coins only.
  • No spendable coins will be used.
  • Any amount left after fees will be donated to support Keeper.
  • These coins are too small to donate on their own. Keeper will keep them marked Do Not Spend.
  • Dust donated

Design Requirements

  • Donate Dust is contextual inside Manage Coins only — do not add it elsewhere
  • Reuse existing confirmation modal / bottom sheet component
  • Reuse existing transaction review/signing flow
  • No new assets required
  • Use stacked buttons if horizontal layout does not fit small screens

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions