coinselect-b4bcoin
An unspent transaction output (UTXO) selection module for B4Bcoin.
WARNING: Value units are in satoshi
s, not B4Bcoin.
Algorithms
Module | Algorithm | Re-orders UTXOs? |
---|---|---|
require('coinselect-b4bcoin') |
Blackjack, with Accumulative fallback | By Descending Value |
require('coinselect-b4bcoin/accumulative') |
Accumulative - accumulates inputs until the target value (+fees) is reached, skipping detrimental inputs | - |
require('coinselect-b4bcoin/blackjack') |
Blackjack - accumulates inputs until the target value (+fees) is matched, does not accumulate inputs that go over the target value (within a threshold) | - |
require('coinselect-b4bcoin/break') |
Break - breaks the input values into equal denominations of output (as provided) |
- |
require('coinselect-b4bcoin/split') |
Split - splits the input values evenly between all outputs , any provided output with .value remains unchanged |
- |
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-b4bcoin/split
with a partial output (.address
defined, no .value
) can be used to send-all, while leaving an appropriate amount for the fee
.
Example
let coinSelect =let feeRate = 55 // satoshis per bytelet utxos =...txId: '...'vout: 0...value: 10000let targets =...address: 'BhppPwZpJHQF7vtnprQgt31fJTwdHfCVMd'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