An unspent transaction output (UTXO) selection module for bitcoin.
This was built for bitcoin-lib specifically. However, as the original version of coinselect uses value for bitcoins, while most block explorers use amount for them, the module must have been annoying, so this could be the exact solution for you!
npm install bitcore-coinselect --save
WARNING: Amount units are in
satoshis, not Bitcoin.
||Blackjack, with Accumulative fallback||By Descending Amount|
||Accumulative - accumulates inputs until the target amount (+fees) is reached, skipping detrimental inputs||-|
||Blackjack - accumulates inputs until the target amount (+fees) is matched, does not accumulate inputs that go over the target amount (within a threshold)||-|
||Break - breaks the input amouts into equal denominations of
||Split - splits the input amounts evenly between all
Note: Each algorithm will add a change output if the
input - output - fee amount 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
.amount) 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...amount: 10000let targets =...address: '1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm'amount: 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