An unspent transaction output (UTXO) selection module for bitcoin.
WARNING: Value units are in
satoshis, not Bitcoin.
||Blackjack, with Accumulative fallback||By Descending Value|
||Accumulative - accumulates inputs until the target value (+fees) is reached, skipping detrimental inputs||-|
||Blackjack - accumulates inputs until the target value (+fees) is matched, does not accumulate inputs that go over the target value (within a threshold)||-|
||Break - breaks the input values into equal denominations of
||Split - splits the input values evenly between all
Note: Each algorithm will add a change output if the
input - output - fee value difference is over a dust threshold.
This is calculated independently by
utils.finalize, irrespective of the algorithm chosen, for the purposes of safety.
Pro-tip: if you want to send-all inputs to an output address,
coinselect/split with a partial output (
.address defined, no
.value) can be used to send-all, while leaving an appropriate amount for the
let coinSelect =let feeRate = 55 // satoshis per bytelet utxos =...txId: '...'vout: 0...value: 10000let targets =...address: '1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm'value: 5000// ...let inputs outputs fee =// the accumulated fee is always returned for analysisconsole// .inputs and .outputs will be undefined if no solution was foundif !inputs || !outputs returnlet txb =inputsoutputs