SplitUTXOsToBenfordCommand class

Command to split wallet UTXOs into Benford distribution for privacy

This command processes each available UTXO individually, splitting it into multiple outputs whose amounts follow Benford's Law distribution. This makes transaction patterns appear more natural and organic, improving privacy.

Each source UTXO will be split into targetUtxoCount new UTXOs through a single transaction (1 input -> N outputs). The outputs are sent to newly generated addresses within the same wallet.

This is NOT part of the SPV flow - we broadcast our own transactions directly via ArcService and handle CQRS integration manually.

Inheritance

Constructors

SplitUTXOsToBenfordCommand({required String walletId, required int targetUtxoCount, int? maxUtxosToSplit, List<String>? utxoKeys, BigInt? partSats, BigInt? minPartSats, String? commandId, DateTime? timestamp, Map<String, dynamic>? metadata})

Properties

commandId → String
Unique identifier for this command Used for deduplication and tracing
no setterinherited
commandType → String
Command type identifier for logging and debugging
no setteroverride
correlationId → String
finalinherited
hashCode → int
The hash code for this object.
no setterinherited
maxUtxosToSplit → int?
Maximum number of UTXOs to split (null = split all available), the largest first (bead libspiffy-5hnt). This allows users to keep some UTXOs available for transactions
final
metadata → Map<String, dynamic>
finalinherited
minPartSats → BigInt?
No piece is smaller than this: a UTXO makes fewer pieces, or is not split when it cannot make two (bead libspiffy-5hnt). Null for no minimum.
final
partSats → BigInt?
Split each UTXO into pieces of about this many satoshis, at least 2 and at most targetUtxoCount of them; null for targetUtxoCount pieces each (bead libspiffy-5hnt).
final
payload → dynamic
Override payload to return the command itself for LocalMessage compatibility
no setterinherited
persistableMetadata → Map<String, dynamic>
metadata as it is persisted: transient ActorRef entries removed.
no setterinherited
replyTo → ActorRef?
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
sender → ActorRef?
finalinherited
targetUtxoCount → int
Number of outputs to create per source UTXO
final
timestamp → DateTime
finalinherited
typeName → String
Stable identity of this command type in storage.
no setterinherited
utxoKeys → List<String>?
Split only these UTXOs (txid:vout), the largest first; null for any (bead libspiffy-5hnt). One the wallet cannot spend is not split.
final
walletId → String
finalinherited

Methods

getValidationErrors() → List<String>
Get validation errors Override in subclasses to provide specific error messages
inherited
isValid() → bool
Validate the command Override in subclasses for custom validation
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toCbor() → List<int>
Serialize command to CBOR bytes
inherited
toMap() → Map<String, dynamic>
Convert command to a map for serialization.
inherited
toString() → String
A string representation of this object.
override

Operators

operator ==(Object other) → bool
The equality operator.
inherited