UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

84 lines 7.15 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BitgoUTXOLib = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const bitcoin = __importStar(require("bitgo-utxo-lib")); const buildUTXO = async (network, privateKey, changeAddress, toAddress, valueIn, utxos, options) => { const fees = new bignumber_js_1.default(options && options.fee !== undefined ? options.fee : 10000); const value = options && options.subtractFee ? valueIn.minus(fees) : valueIn; if (value.lt(0)) { throw new Error(`Unable to include fee in value, fee exceeds value (${fees.toFixed()} > ${valueIn.toFixed()})`); } const tx = new bitcoin.TransactionBuilder(network); if (options && options.version) { tx.setVersion(options.version); } if (options && options.versionGroupID) { tx.setVersionGroupId(options.versionGroupID); } if (options && options.expiryHeight) { tx.setExpiryHeight(options.expiryHeight); } if (options && options.lockTime) { tx.setLockTime(options.lockTime); } if (options && options.consensusBranchId) { tx.setConsensusBranchId(options.consensusBranchId); } // Only use the required utxos const [usedUTXOs, sum] = utxos.reduce(([utxoAcc, total], utxo) => total.lt(value.plus(fees)) ? [[...utxoAcc, utxo], total.plus(utxo.amount)] : [utxoAcc, total], [[], new bignumber_js_1.default(0)]); if (sum.lt(value.plus(fees))) { throw new Error("Insufficient balance to broadcast transaction"); } // Add all inputs usedUTXOs.map((utxo) => { tx.addInput(utxo.txHash, utxo.vOut); }); const change = sum.minus(value).minus(fees); // Add outputs tx.addOutput(toAddress, value.toNumber()); if (change.gt(0)) { tx.addOutput(changeAddress, change.toNumber()); } // Sign inputs usedUTXOs.map((utxo, i) => { tx.sign(i, privateKey, null, options && options.signFlag !== undefined ? options.signFlag : null, utxo.amount); }); return tx.build(); }; const loadPrivateKey = (network, privateKey) => { return bitcoin.ECPair.fromPrivateKeyBuffer(Buffer.from(privateKey, "hex"), network); }; exports.BitgoUTXOLib = { buildUTXO, loadPrivateKey, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Z29VdHhvTGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9saWJyYXJpZXMvYml0Z29VdHhvTGliLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQXFDO0FBQ3JDLHdEQUEwQztBQUkxQyxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQ25CLE9BQXdDLEVBQ3hDLFVBQWUsRUFDZixhQUFxQixFQUNyQixTQUFpQixFQUNqQixPQUFrQixFQUNsQixLQUFhLEVBQ2IsT0FTQyxFQUMrQixFQUFFO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FDdEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQzdELENBQUM7SUFFRixNQUFNLEtBQUssR0FDUCxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25FLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNiLE1BQU0sSUFBSSxLQUFLLENBQ1gsc0RBQXNELElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FDakcsQ0FBQztLQUNMO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUM1QixFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNsQztJQUNELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVB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