@bsv/sdk
Version:
BSV Blockchain Software Development Kit
51 lines • 2.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = fromUtxo;
const Transaction_js_1 = __importDefault(require("../transaction/Transaction.js"));
const LockingScript_js_1 = __importDefault(require("../script/LockingScript.js"));
/**
* @method fromUtxo
*
* @description
* This function creates a transaction input from a utxo json object
* The idea being old code that uses utxos rather than sourceTranactions can convert using this.
*
* @deprecated
* This approach is made available for compatibility only. It is deprecated in favor of using sourceTransactions
* directly. It's recommended that wallets general keep transactions which store unspent outputs in their entirety,
* along with corresonding Merkle paths. The reason you would keep the whole transaction is such that you can prove
* the txid, and therefore its inclusion within a specific block.
*
* @example
* const i = fromUtxo({
* txid: '434555433eaca96dff6e71a4d02febd0dd3832e5ca4e5734623ca914522e17d5',
* vout: 0,
* script: '51',
* satoshis: 1234
* }, new P2PKH().unlock(p))
*
* tx.addInput(i)
*
* @param utxo: jsonUtxo
* @param unlockingScriptTemplate: { sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>, estimateLength: (tx: Transaction, inputIndex: number) => Promise<number> }
* @returns
*/
function fromUtxo(utxo, unlockingScriptTemplate) {
const sourceTransaction = new Transaction_js_1.default(0, [], [], 0);
sourceTransaction.outputs = Array(utxo.vout + 1).fill(null);
sourceTransaction.outputs[utxo.vout] = {
satoshis: utxo.satoshis,
lockingScript: LockingScript_js_1.default.fromHex(utxo.script)
};
return {
sourceTransaction,
sourceTXID: utxo.txid,
sourceOutputIndex: utxo.vout,
unlockingScriptTemplate,
sequence: 0xffffffff
};
}
//# sourceMappingURL=Utxo.js.map