The package provides a Dimensions class with methods to calculate bitcoin transaction sizes
Installation
npm install --save @bitgo/unspents
Dimensions, Virtual Size Estimation
The transaction vSize is critical to calculating the proper transaction fee.
The class unspents.Dimensions provides a class that helps work with the components required
to calculate an accurate estimate of a transaction vSize.
Examples
import { Codes, Dimensions } from '@bitgo/unspents'; // using raw attributes new Dimensions({ nP2shInputs: 1, nP2shP2wshInputs: 1, nP2wshInputs: 1, outputs: { count: 1, size: 32 }, }); // calculate from unspents that have `chain` property (see Chain Codes) Dimensions.fromUnspents(unspent[0]); Dimensions.fromUnspents(unspents); // Signed inputs work too Dimensions.fromInput(inputs[0]); Dimensions.fromInputs(inputs); // Transaction outputs Dimensions.fromOutputs(outputs[0]); Dimensions.fromOutputs(outputs); Dimensions.fromOutputOnChain(Codes.p2sh.internal); Dimensions.fromOutputScriptLength(31); // Combining dimensions and estimating their vSize Dimensions.fromUnspents({ unspents }) .plus(Dimensions.fromOutputOnChain(Codes.p2shP2wsh.internal).times(nOutputs)) .getVSize();
Continuous Integration
@bitgo/unspents uses github actions for continuous integration, which is configured by the .github/workflows/ci.yml file in the project root. All changes to the CI process should be done by modifying the .github/workflows/ci.yml file.
Codes
The exported Codes module is now deprecated.
Please use utxo-lib/src/bitgo/wallet/chains instead.