DustCoinSelector
Selects dust coins for fee payment using smallest-first strategy.
Strategy: Smallest-First
Sorts coins by value (ascending)
Selects smallest coins until sum >= required fee
Minimizes UTXO fragmentation
Matches midnight-ledger's coin selection strategy
Benefits:
Keeps large UTXOs intact for future large transactions
Reduces dust fragmentation over time
Better privacy (smaller outputs less traceable)
Example:
Available: [1 Dust, 3 Dust, 10 Dust, 50 Dust]
Required: 12 Dust
Selected: [1 Dust, 3 Dust, 10 Dust] = 14 Dust
Change: 2 Dust (returned as new UTXO)Content copied to clipboard
See also
/midnight-wallet/packages/dust-wallet/src/CoinSelection.ts (TypeScript SDK reference)
Types
Link copied to clipboard
data class CoinSelectionResult(val selectedCoins: List<DustTokenEntity>, val totalValue: BigInteger, val change: BigInteger)
Result of coin selection.
Functions
Link copied to clipboard
fun selectCoins(availableCoins: List<DustTokenEntity>, requiredFee: BigInteger, currentTimeMillis: Long = System.currentTimeMillis()): DustCoinSelector.CoinSelectionResult
Selects coins to cover required fee.
Link copied to clipboard
fun validateSelection(result: DustCoinSelector.CoinSelectionResult, requiredFee: BigInteger): Boolean
Validates coin selection result.