PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-core/dist/src/descriptor/psbt

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

"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 () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse = parse;
const utxolib = __importStar(require("@bitgo/utxo-lib"));
const VirtualSize_1 = require("../VirtualSize");
const findDescriptors_1 = require("./findDescriptors");
const assertSatisfiable_1 = require("./assertSatisfiable");
function sum(...values) {
    return values.reduce((a, b) => a + b, BigInt(0));
}
function parse(psbt, descriptorMap, network) {
    const inputs = psbt.data.inputs.map((input, inputIndex) => {
        if (!input.witnessUtxo) {
            throw new Error('invalid input: no witnessUtxo');
        }
        if (!input.witnessUtxo.value) {
            throw new Error('invalid input: no value');
        }
        const scriptId = (0, findDescriptors_1.findDescriptorForInput)(input, descriptorMap);
        if (!scriptId) {
            throw new Error('invalid input: no descriptor found');
        }
        (0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, scriptId.descriptor);
        return {
            address: utxolib.address.fromOutputScript(input.witnessUtxo.script, network),
            value: input.witnessUtxo.value,
            scriptId,
        };
    });
    const outputs = psbt.txOutputs.map((output, i) => {
        if (output.value === undefined) {
            throw new Error('invalid output: no value');
        }
        const scriptId = (0, findDescriptors_1.findDescriptorForOutput)(output.script, psbt.data.outputs[i], descriptorMap);
        return {
            address: output.address,
            script: output.script,
            value: output.value,
            scriptId,
        };
    });
    const inputAmount = sum(...inputs.map((input) => input.value));
    const outputSum = sum(...outputs.map((output) => output.value));
    const spendAmount = sum(...outputs.filter((output) => !output.scriptId).map((output) => output.value));
    const minerFee = inputAmount - outputSum;
    return {
        inputs,
        outputs,
        spendAmount,
        minerFee,
        virtualSize: (0, VirtualSize_1.getVirtualSize)({ inputs: inputs.map((i) => i.scriptId.descriptor), outputs }),
    };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wc2J0L3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0NBLHNCQThDQztBQWpGRCx5REFBMkM7QUFHM0MsZ0RBQWdEO0FBRWhELHVEQUFvRjtBQUNwRiwyREFBd0Q7QUF5QnhELFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBZ0I7SUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBZ0IsS0FBSyxDQUNuQixJQUFrQixFQUNsQixhQUE0QixFQUM1QixPQUF3QjtJQUV4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFlLEVBQUU7UUFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBQSx3Q0FBc0IsRUFBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFBLHFDQUFpQixFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELE9BQU87WUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7WUFDNUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSztZQUM5QixRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFnQixFQUFFO1FBQzdELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUEseUNBQXVCLEVBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM3RixPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkcsTUFBTSxRQUFRLEdBQUcsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUN6QyxPQUFPO1FBQ0wsTUFBTTtRQUNOLE9BQU87UUFDUCxXQUFXO1FBQ1gsUUFBUTtRQUNSLFdBQVcsRUFBRSxJQUFBLDRCQUFjLEVBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUMzRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uL0Rlc2NyaXB0b3JNYXAnO1xuaW1wb3J0IHsgZ2V0VmlydHVhbFNpemUgfSBmcm9tICcuLi9WaXJ0dWFsU2l6ZSc7XG5cbmltcG9ydCB7IGZpbmREZXNjcmlwdG9yRm9ySW5wdXQsIGZpbmREZXNjcmlwdG9yRm9yT3V0cHV0IH0gZnJvbSAnLi9maW5kRGVzY3JpcHRvcnMnO1xuaW1wb3J0IHsgYXNzZXJ0U2F0aXNmaWFibGUgfSBmcm9tICcuL2Fzc2VydFNhdGlzZmlhYmxlJztcblxuZXhwb3J0IHR5cGUgU2NyaXB0SWQgPSB7IGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgfTtcblxuZXhwb3J0IHR5cGUgUGFyc2VkSW5wdXQgPSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgc2NyaXB0SWQ6IFNjcmlwdElkO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VkT3V0cHV0ID0ge1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICBzY3JpcHQ6IEJ1ZmZlcjtcbiAgdmFsdWU6IGJpZ2ludDtcbiAgc2NyaXB0SWQ/OiBTY3JpcHRJZDtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHtcbiAgaW5wdXRzOiBQYXJzZWRJbnB1dFtdO1xuICBvdXRwdXRzOiBQYXJzZWRPdXRwdXRbXTtcbiAgc3BlbmRBbW91bnQ6IGJpZ2ludDtcbiAgbWluZXJGZWU6IGJpZ2ludDtcbiAgdmlydHVhbFNpemU6IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIHN1bSguLi52YWx1ZXM6IGJpZ2ludFtdKTogYmlnaW50IHtcbiAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCBCaWdJbnQoMCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoXG4gIHBzYnQ6IHV0eG9saWIuUHNidCxcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcCxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBQYXJzZWREZXNjcmlwdG9yVHJhbnNhY3Rpb24ge1xuICBjb25zdCBpbnB1dHMgPSBwc2J0LmRhdGEuaW5wdXRzLm1hcCgoaW5wdXQsIGlucHV0SW5kZXgpOiBQYXJzZWRJbnB1dCA9PiB7XG4gICAgaWYgKCFpbnB1dC53aXRuZXNzVXR4bykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGlucHV0OiBubyB3aXRuZXNzVXR4bycpO1xuICAgIH1cbiAgICBpZiAoIWlucHV0LndpdG5lc3NVdHhvLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW5wdXQ6IG5vIHZhbHVlJyk7XG4gICAgfVxuICAgIGNvbnN0IHNjcmlwdElkID0gZmluZERlc2NyaXB0b3JGb3JJbnB1dChpbnB1dCwgZGVzY3JpcHRvck1hcCk7XG4gICAgaWYgKCFzY3JpcHRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGlucHV0OiBubyBkZXNjcmlwdG9yIGZvdW5kJyk7XG4gICAgfVxuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIHNjcmlwdElkLmRlc2NyaXB0b3IpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChpbnB1dC53aXRuZXNzVXR4by5zY3JpcHQsIG5ldHdvcmspLFxuICAgICAgdmFsdWU6IGlucHV0LndpdG5lc3NVdHhvLnZhbHVlLFxuICAgICAgc2NyaXB0SWQsXG4gICAgfTtcbiAgfSk7XG4gIGNvbnN0IG91dHB1dHMgPSBwc2J0LnR4T3V0cHV0cy5tYXAoKG91dHB1dCwgaSk6IFBhcnNlZE91dHB1dCA9PiB7XG4gICAgaWYgKG91dHB1dC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgb3V0cHV0OiBubyB2YWx1ZScpO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHRJZCA9IGZpbmREZXNjcmlwdG9yRm9yT3V0cHV0KG91dHB1dC5zY3JpcHQsIHBzYnQuZGF0YS5vdXRwdXRzW2ldLCBkZXNjcmlwdG9yTWFwKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgICBzY3JpcHQ6IG91dHB1dC5zY3JpcHQsXG4gICAgICB2YWx1ZTogb3V0cHV0LnZhbHVlLFxuICAgICAgc2NyaXB0SWQsXG4gICAgfTtcbiAgfSk7XG4gIGNvbnN0IGlucHV0QW1vdW50ID0gc3VtKC4uLmlucHV0cy5tYXAoKGlucHV0KSA9PiBpbnB1dC52YWx1ZSkpO1xuICBjb25zdCBvdXRwdXRTdW0gPSBzdW0oLi4ub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gb3V0cHV0LnZhbHVlKSk7XG4gIGNvbnN0IHNwZW5kQW1vdW50ID0gc3VtKC4uLm91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+ICFvdXRwdXQuc2NyaXB0SWQpLm1hcCgob3V0cHV0KSA9PiBvdXRwdXQudmFsdWUpKTtcbiAgY29uc3QgbWluZXJGZWUgPSBpbnB1dEFtb3VudCAtIG91dHB1dFN1bTtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dHMsXG4gICAgb3V0cHV0cyxcbiAgICBzcGVuZEFtb3VudCxcbiAgICBtaW5lckZlZSxcbiAgICB2aXJ0dWFsU2l6ZTogZ2V0VmlydHVhbFNpemUoeyBpbnB1dHM6IGlucHV0cy5tYXAoKGkpID0+IGkuc2NyaXB0SWQuZGVzY3JpcHRvciksIG91dHB1dHMgfSksXG4gIH07XG59XG4iXX0=

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


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