estimateSize static method
TxSizeEstimate
estimateSize(
{ - int numP2pkhInputs = 0,
- int numP2shInputs = 0,
- int numP2wpkhInputs = 0,
- int numP2trInputs = 0,
- int numP2pkhOutputs = 0,
- int numP2shOutputs = 0,
- int numP2wpkhOutputs = 0,
- int numP2trOutputs = 0,
})
Implementation
static TxSizeEstimate estimateSize({
int numP2pkhInputs = 0,
int numP2shInputs = 0,
int numP2wpkhInputs = 0,
int numP2trInputs = 0,
int numP2pkhOutputs = 0,
int numP2shOutputs = 0,
int numP2wpkhOutputs = 0,
int numP2trOutputs = 0,
}) {
final hasWitness = numP2wpkhInputs > 0 || numP2trInputs > 0;
final baseInputs = numP2pkhInputs * p2pkhInputSize +
numP2shInputs * p2shInputSize;
final witnessInputs = numP2wpkhInputs * p2wpkhInputSize +
numP2trInputs * p2trInputSize;
final outputs = numP2pkhOutputs * p2pkhOutputSize +
numP2shOutputs * p2shOutputSize +
numP2wpkhOutputs * p2wpkhOutputSize +
numP2trOutputs * p2trOutputSize;
final overhead = txOverhead + (hasWitness ? segwitOverhead : 0);
final baseSize = overhead + baseInputs + witnessInputs + outputs;
final totalSize = baseSize; // simplified; witness discount handled via weight
// Weight = base_size * 3 + total_size (BIP-141)
final weight = hasWitness
? (overhead + baseInputs + outputs) * 4 +
(segwitOverhead + witnessInputs) // witness at 1x
: baseSize * 4;
final vsize = (weight + 3) ~/ 4;
return TxSizeEstimate(
baseSize: baseSize,
totalSize: totalSize,
weight: weight,
vsize: vsize,
);
}