PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-bin/dist/src/commands/cmdPsbt

Просмотр файла: cmdAddDescriptorInput.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cmdAddDescriptorInput = void 0;
const utxolib = require("@bitgo/utxo-lib");
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
const wrap_1 = require("./wrap");
const withPsbt_1 = require("./withPsbt");
/**
 * Non-Final (Replaceable)
 * Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
 * */
const MAX_BIP125_RBF_SEQUENCE = 0xffffffff - 2;
function getScriptPubKey(args, network) {
    if (args.address) {
        return utxolib.addressFormat.toOutputScriptTryFormats(args.address, network);
    }
    if (args.scriptPubKey) {
        return Buffer.from(args.scriptPubKey, 'hex');
    }
    return undefined;
}
function addDescriptorInput(psbt, outputId, scriptPubKey, value, descriptorString, descriptorIndex, { sequence = MAX_BIP125_RBF_SEQUENCE } = {}) {
    const { txid, vout } = utxolib.bitgo.parseOutputId(outputId);
    const descriptor = wasm_miniscript_1.Descriptor.fromString(descriptorString, 'derivable');
    const derivedDescriptor = descriptor.atDerivationIndex(descriptorIndex);
    if (scriptPubKey === undefined) {
        scriptPubKey = Buffer.from(derivedDescriptor.scriptPubkey());
    }
    psbt.addInput({
        hash: txid,
        index: vout,
        sequence,
        witnessUtxo: {
            script: scriptPubKey,
            value,
        },
    });
    const inputIndex = psbt.txInputs.length - 1;
    const wrappedPsbt = (0, wrap_1.toWrappedPsbt)(psbt);
    wrappedPsbt.updateInputWithDescriptor(inputIndex, derivedDescriptor);
    const utxoPsbt = (0, wrap_1.toUtxoPsbt)(wrappedPsbt);
    psbt.data.inputs[inputIndex] = utxoPsbt.data.inputs[inputIndex];
}
exports.cmdAddDescriptorInput = {
    command: 'addDescriptorInput',
    describe: 'add descriptor input to psbt',
    builder(b) {
        return b
            .options(withPsbt_1.withPsbtOptions)
            .option('outputId', { type: 'string', demandOption: true })
            .option('address', { type: 'string' })
            .option('scriptPubKey', { type: 'string' })
            .option('value', { type: 'string', demandOption: true })
            .option('descriptor', { type: 'string', demandOption: true })
            .option('descriptorIndex', { type: 'number', demandOption: true });
    },
    async handler(argv) {
        await (0, withPsbt_1.withPsbt)(argv, async function (psbt) {
            addDescriptorInput(psbt, argv.outputId, getScriptPubKey({
                address: argv.address,
                scriptPubKey: argv.scriptPubKey,
            }, argv.network), BigInt(argv.value), argv.descriptor, argv.descriptorIndex);
            return psbt;
        });
    },
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21kQWRkRGVzY3JpcHRvcklucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NtZFBzYnQvY21kQWRkRGVzY3JpcHRvcklucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUMzQyw0REFBb0Q7QUFHcEQsaUNBQW1EO0FBQ25ELHlDQUF3RTtBQUV4RTs7O0tBR0s7QUFDTCxNQUFNLHVCQUF1QixHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFXL0MsU0FBUyxlQUFlLENBQ3RCLElBQWlELEVBQ2pELE9BQXdCO0lBRXhCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQ3pCLElBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFlBQWdDLEVBQ2hDLEtBQWEsRUFDYixnQkFBd0IsRUFDeEIsZUFBdUIsRUFDdkIsRUFBRSxRQUFRLEdBQUcsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBRTNDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0QsTUFBTSxVQUFVLEdBQUcsNEJBQVUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEUsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEUsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNaLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRO1FBQ1IsV0FBVyxFQUFFO1lBQ1gsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSztTQUNOO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUEsb0JBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxXQUFXLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBQSxpQkFBVSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFWSxRQUFBLHFCQUFxQixHQUF5RDtJQUN6RixPQUFPLEVBQUUsb0JBQW9CO0lBQzdCLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsT0FBTyxDQUFDLENBQXNCO1FBQzVCLE9BQU8sQ0FBQzthQUNMLE9BQU8sQ0FBQywwQkFBZSxDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUMxRCxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2FBQ3JDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDMUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3ZELE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUM1RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUk7UUFDaEIsTUFBTSxJQUFBLG1CQUFRLEVBQUMsSUFBSSxFQUFFLEtBQUssV0FBVyxJQUFJO1lBQ3ZDLGtCQUFrQixDQUNoQixJQUFJLEVBQ0osSUFBSSxDQUFDLFFBQVEsRUFDYixlQUFlLENBQ2I7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDaEMsRUFDRCxJQUFJLENBQUMsT0FBTyxDQUNiLEVBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuXG5pbXBvcnQgeyB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0IH0gZnJvbSAnLi93cmFwJztcbmltcG9ydCB7IHdpdGhQc2J0LCBXaXRoUHNidE9wdGlvbnMsIHdpdGhQc2J0T3B0aW9ucyB9IGZyb20gJy4vd2l0aFBzYnQnO1xuXG4vKipcbiAqIE5vbi1GaW5hbCAoUmVwbGFjZWFibGUpXG4gKiBSZWZlcmVuY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vYmxvYi92MjUuMS9zcmMvcnBjL3Jhd3RyYW5zYWN0aW9uX3V0aWwuY3BwI0w0OVxuICogKi9cbmNvbnN0IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFID0gMHhmZmZmZmZmZiAtIDI7XG5cbnR5cGUgQXJnc0FkZERlc2NyaXB0b3JJbnB1dCA9IFdpdGhQc2J0T3B0aW9ucyAmIHtcbiAgb3V0cHV0SWQ6IHN0cmluZztcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgc2NyaXB0UHViS2V5Pzogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkZXNjcmlwdG9yOiBzdHJpbmc7XG4gIGRlc2NyaXB0b3JJbmRleDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gZ2V0U2NyaXB0UHViS2V5KFxuICBhcmdzOiB7IGFkZHJlc3M/OiBzdHJpbmc7IHNjcmlwdFB1YktleT86IHN0cmluZyB9LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IEJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChhcmdzLmFkZHJlc3MpIHtcbiAgICByZXR1cm4gdXR4b2xpYi5hZGRyZXNzRm9ybWF0LnRvT3V0cHV0U2NyaXB0VHJ5Rm9ybWF0cyhhcmdzLmFkZHJlc3MsIG5ldHdvcmspO1xuICB9XG4gIGlmIChhcmdzLnNjcmlwdFB1YktleSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShhcmdzLnNjcmlwdFB1YktleSwgJ2hleCcpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZERlc2NyaXB0b3JJbnB1dChcbiAgcHNidDogdXR4b2xpYi5Qc2J0LFxuICBvdXRwdXRJZDogc3RyaW5nLFxuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IGJpZ2ludCxcbiAgZGVzY3JpcHRvclN0cmluZzogc3RyaW5nLFxuICBkZXNjcmlwdG9ySW5kZXg6IG51bWJlcixcbiAgeyBzZXF1ZW5jZSA9IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFIH0gPSB7fVxuKTogdm9pZCB7XG4gIGNvbnN0IHsgdHhpZCwgdm91dCB9ID0gdXR4b2xpYi5iaXRnby5wYXJzZU91dHB1dElkKG91dHB1dElkKTtcbiAgY29uc3QgZGVzY3JpcHRvciA9IERlc2NyaXB0b3IuZnJvbVN0cmluZyhkZXNjcmlwdG9yU3RyaW5nLCAnZGVyaXZhYmxlJyk7XG4gIGNvbnN0IGRlcml2ZWREZXNjcmlwdG9yID0gZGVzY3JpcHRvci5hdERlcml2YXRpb25JbmRleChkZXNjcmlwdG9ySW5kZXgpO1xuICBpZiAoc2NyaXB0UHViS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICBzY3JpcHRQdWJLZXkgPSBCdWZmZXIuZnJvbShkZXJpdmVkRGVzY3JpcHRvci5zY3JpcHRQdWJrZXkoKSk7XG4gIH1cbiAgcHNidC5hZGRJbnB1dCh7XG4gICAgaGFzaDogdHhpZCxcbiAgICBpbmRleDogdm91dCxcbiAgICBzZXF1ZW5jZSxcbiAgICB3aXRuZXNzVXR4bzoge1xuICAgICAgc2NyaXB0OiBzY3JpcHRQdWJLZXksXG4gICAgICB2YWx1ZSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgaW5wdXRJbmRleCA9IHBzYnQudHhJbnB1dHMubGVuZ3RoIC0gMTtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICB3cmFwcGVkUHNidC51cGRhdGVJbnB1dFdpdGhEZXNjcmlwdG9yKGlucHV0SW5kZXgsIGRlcml2ZWREZXNjcmlwdG9yKTtcbiAgY29uc3QgdXR4b1BzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0KTtcbiAgcHNidC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XSA9IHV0eG9Qc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdO1xufVxuXG5leHBvcnQgY29uc3QgY21kQWRkRGVzY3JpcHRvcklucHV0OiB5YXJncy5Db21tYW5kTW9kdWxlPHVua25vd24sIEFyZ3NBZGREZXNjcmlwdG9ySW5wdXQ+ID0ge1xuICBjb21tYW5kOiAnYWRkRGVzY3JpcHRvcklucHV0JyxcbiAgZGVzY3JpYmU6ICdhZGQgZGVzY3JpcHRvciBpbnB1dCB0byBwc2J0JyxcbiAgYnVpbGRlcihiOiB5YXJncy5Bcmd2PHVua25vd24+KSB7XG4gICAgcmV0dXJuIGJcbiAgICAgIC5vcHRpb25zKHdpdGhQc2J0T3B0aW9ucylcbiAgICAgIC5vcHRpb24oJ291dHB1dElkJywgeyB0eXBlOiAnc3RyaW5nJywgZGVtYW5kT3B0aW9uOiB0cnVlIH0pXG4gICAgICAub3B0aW9uKCdhZGRyZXNzJywgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbignc2NyaXB0UHViS2V5JywgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgICAgLm9wdGlvbigndmFsdWUnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ2Rlc2NyaXB0b3InLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ2Rlc2NyaXB0b3JJbmRleCcsIHsgdHlwZTogJ251bWJlcicsIGRlbWFuZE9wdGlvbjogdHJ1ZSB9KTtcbiAgfSxcbiAgYXN5bmMgaGFuZGxlcihhcmd2KSB7XG4gICAgYXdhaXQgd2l0aFBzYnQoYXJndiwgYXN5bmMgZnVuY3Rpb24gKHBzYnQpIHtcbiAgICAgIGFkZERlc2NyaXB0b3JJbnB1dChcbiAgICAgICAgcHNidCxcbiAgICAgICAgYXJndi5vdXRwdXRJZCxcbiAgICAgICAgZ2V0U2NyaXB0UHViS2V5KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGFyZ3YuYWRkcmVzcyxcbiAgICAgICAgICAgIHNjcmlwdFB1YktleTogYXJndi5zY3JpcHRQdWJLZXksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhcmd2Lm5ldHdvcmtcbiAgICAgICAgKSxcbiAgICAgICAgQmlnSW50KGFyZ3YudmFsdWUpLFxuICAgICAgICBhcmd2LmRlc2NyaXB0b3IsXG4gICAgICAgIGFyZ3YuZGVzY3JpcHRvckluZGV4XG4gICAgICApO1xuICAgICAgcmV0dXJuIHBzYnQ7XG4gICAgfSk7XG4gIH0sXG59O1xuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!