UNPKG

@ledgerhq/hw-app-btc

Version:
41 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extract = void 0; const buffertools_1 = require("../buffertools"); /** * This implements the "Transaction Extractor" role of BIP370 (PSBTv2 * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However * the role is partially documented in BIP174 (PSBTv0 * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor). */ function extract(psbt) { const tx = new buffertools_1.BufferWriter(); tx.writeUInt32(psbt.getGlobalTxVersion()); const isSegwit = !!psbt.getInputWitnessUtxo(0); if (isSegwit) { tx.writeSlice(Buffer.from([0, 1])); } const inputCount = psbt.getGlobalInputCount(); tx.writeVarInt(inputCount); const witnessWriter = new buffertools_1.BufferWriter(); for (let i = 0; i < inputCount; i++) { tx.writeSlice(psbt.getInputPreviousTxid(i)); tx.writeUInt32(psbt.getInputOutputIndex(i)); tx.writeVarSlice(psbt.getInputFinalScriptsig(i) ?? Buffer.from([])); tx.writeUInt32(psbt.getInputSequence(i)); if (isSegwit) { witnessWriter.writeSlice(psbt.getInputFinalScriptwitness(i)); } } const outputCount = psbt.getGlobalOutputCount(); tx.writeVarInt(outputCount); for (let i = 0; i < outputCount; i++) { tx.writeUInt64(psbt.getOutputAmount(i)); tx.writeVarSlice(psbt.getOutputScript(i)); } tx.writeSlice(witnessWriter.buffer()); tx.writeUInt32(psbt.getGlobalFallbackLocktime() ?? 0); return tx.buffer(); } exports.extract = extract; //# sourceMappingURL=psbtExtractor.js.map