PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-core/dist/test/descriptor/psbt
Просмотр файла: VirtualSize.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const VirtualSize_1 = require("../../../src/descriptor/VirtualSize");
const descriptor_1 = require("../../../src/testutil/descriptor");
const testutil_1 = require("../../../src/testutil");
const descriptor_2 = require("../../../src/descriptor");
describe('VirtualSize', function () {
describe('getInputVSizesForDescriptorWallet', function () {
it('returns the input virtual sizes for a descriptor wallet', function () {
assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)(new Map([
['foo', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
['bar', (0, descriptor_1.getDescriptor)('Wsh2Of2')],
])), {
foo: 96,
bar: 96,
});
assert_1.default.deepStrictEqual((0, VirtualSize_1.getInputVSizesForDescriptors)((0, descriptor_1.getDescriptorMap)('Wsh2Of3')), {
external: 105,
internal: 105,
});
});
});
describe('getChangeOutputVSizesForDescriptor', function () {
it('returns the output virtual sizes for a descriptor', function () {
assert_1.default.deepStrictEqual((0, VirtualSize_1.getChangeOutputVSizesForDescriptor)((0, descriptor_1.getDescriptor)('Wsh2Of2')), {
inputVSize: 96,
outputVSize: 34,
});
});
});
function describeWithTemplate(t, inputSize, outputSize) {
describe(`getVirtualSize ${t}`, function () {
it('returns expected virtual size', function () {
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
inputs: [{ descriptorName: 'internal' }],
outputs: [{ script: Buffer.alloc(34) }],
}, (0, descriptor_1.getDescriptorMap)(t)), inputSize + outputSize + 11);
const descriptor = (0, descriptor_1.getDescriptor)(t);
const nInputs = 10000;
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSize)({
/* as proof we can pass 10_000 inputs */
inputs: Array.from({ length: nInputs }).map(() => descriptor),
outputs: [],
}), inputSize * nInputs + 11);
});
});
describe(`getVirtualSizeForPsbt ${t}`, function () {
const keys = (0, testutil_1.getKeyTriple)('a');
const descriptorSelf = (0, descriptor_1.getDescriptor)(t, keys.map((k) => k.neutered().toBase58()));
const descriptorOther = (0, descriptor_1.getDescriptor)(t, (0, descriptor_1.getDefaultXPubs)('b'));
it('returns expected virtual size', function () {
const psbt = (0, descriptor_1.mockPsbtDefault)({ descriptorSelf, descriptorOther });
const descriptorMap = new Map([['internal', descriptorSelf]]);
const expectedVirtualSize = inputSize * 2 + outputSize * 2 + 11;
assert_1.default.deepStrictEqual((0, VirtualSize_1.getVirtualSizeEstimateForPsbt)(psbt, descriptorMap), expectedVirtualSize);
psbt.signAllInputsHD(keys[0]);
psbt.signAllInputsHD(keys[1]);
(0, descriptor_2.finalizePsbt)(psbt);
// TODO(BTC-1797): figure out why we overestimate by 1
assert_1.default.strictEqual(psbt.extractTransaction().virtualSize(), expectedVirtualSize - 1);
});
});
}
describeWithTemplate('Wsh2Of3', 105, 43);
describeWithTemplate('Tr2Of3-NoKeyPath', 109, 43);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlydHVhbFNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvcHNidC9WaXJ0dWFsU2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUU1QixxRUFLNkM7QUFDN0MsaUVBTTBDO0FBQzFDLG9EQUFxRDtBQUNyRCx3REFBdUQ7QUFFdkQsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixRQUFRLENBQUMsbUNBQW1DLEVBQUU7UUFDNUMsRUFBRSxDQUFDLHlEQUF5RCxFQUFFO1lBQzVELGdCQUFNLENBQUMsZUFBZSxDQUNwQixJQUFBLDBDQUE0QixFQUMxQixJQUFJLEdBQUcsQ0FBQztnQkFDTixDQUFDLEtBQUssRUFBRSxJQUFBLDBCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsS0FBSyxFQUFFLElBQUEsMEJBQWEsRUFBQyxTQUFTLENBQUMsQ0FBQzthQUNsQyxDQUFDLENBQ0gsRUFDRDtnQkFDRSxHQUFHLEVBQUUsRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTthQUNSLENBQ0YsQ0FBQztZQUNGLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsMENBQTRCLEVBQUMsSUFBQSw2QkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixRQUFRLEVBQUUsR0FBRztnQkFDYixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsZ0RBQWtDLEVBQUMsSUFBQSwwQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFdBQVcsRUFBRSxFQUFFO2FBQ2hCLENBQUMs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QUMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7XG4gIGdldENoYW5nZU91dHB1dFZTaXplc0ZvckRlc2NyaXB0b3IsXG4gIGdldElucHV0VlNpemVzRm9yRGVzY3JpcHRvcnMsXG4gIGdldFZpcnR1YWxTaXplLFxuICBnZXRWaXJ0dWFsU2l6ZUVzdGltYXRlRm9yUHNidCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvVmlydHVhbFNpemUnO1xuaW1wb3J0IHtcbiAgRGVzY3JpcHRvclRlbXBsYXRlLFxuICBnZXREZWZhdWx0WFB1YnMsXG4gIGdldERlc2NyaXB0b3IsXG4gIGdldERlc2NyaXB0b3JNYXAsXG4gIG1vY2tQc2J0RGVmYXVsdCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Rlc3R1dGlsJztcbmltcG9ydCB7IGZpbmFsaXplUHNidCB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcblxuZGVzY3JpYmUoJ1ZpcnR1YWxTaXplJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9yV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIHRoZSBpbnB1dCB2aXJ0dWFsIHNpemVzIGZvciBhIGRlc2NyaXB0b3Igd2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgICAgZ2V0SW5wdXRWU2l6ZXNGb3JEZXNjcmlwdG9ycyhcbiAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgIFsnZm9vJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICAgIFsnYmFyJywgZ2V0RGVzY3JpcHRvcignV3NoMk9mMicpXSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgICB7XG4gICAgICAgICAgZm9vOiA5NixcbiAgICAgICAgICBiYXI6IDk2LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChnZXRJbnB1dFZTaXplc0ZvckRlc2NyaXB0b3JzKGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnKSksIHtcbiAgICAgICAgZXh0ZXJuYWw6IDEwNSxcbiAgICAgICAgaW50ZXJuYWw6IDEwNSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyB0aGUgb3V0cHV0IHZpcnR1YWwgc2l6ZXMgZm9yIGEgZGVzY3JpcHRvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0Q2hhbmdlT3V0cHV0VlNpemVzRm9yRGVzY3JpcHRvcihnZXREZXNjcmlwdG9yKCdXc2gyT2YyJykpLCB7XG4gICAgICAgIGlucHV0VlNpemU6IDk2LFxuICAgICAgICBvdXRwdXRWU2l6ZTogMzQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVXaXRoVGVtcGxhdGUodDogRGVzY3JpcHRvclRlbXBsYXRlLCBpbnB1dFNpemU6IG51bWJlciwgb3V0cHV0U2l6ZTogbnVtYmVyKSB7XG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplICR7dH1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICAgICAgZ2V0VmlydHVhbFNpemUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlucHV0czogW3sgZGVzY3JpcHRvck5hbWU6ICdpbnRlcm5hbCcgfV0sXG4gICAgICAgICAgICAgIG91dHB1dHM6IFt7IHNjcmlwdDogQnVmZmVyLmFsbG9jKDM0KSB9XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXREZXNjcmlwdG9yTWFwKHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbnB1dFNpemUgKyBvdXRwdXRTaXplICsgMTFcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcih0KTtcblxuICAgICAgICBjb25zdCBuSW5wdXRzID0gMTBfMDAwO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFZpcnR1YWxTaXplKHtcbiAgICAgICAgICAgIC8qIGFzIHByb29mIHdlIGNhbiBwYXNzIDEwXzAwMCBpbnB1dHMgKi9cbiAgICAgICAgICAgIGlucHV0czogQXJyYXkuZnJvbSh7IGxlbmd0aDogbklucHV0cyB9KS5tYXAoKCkgPT4gZGVzY3JpcHRvciksXG4gICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBpbnB1dFNpemUgKiBuSW5wdXRzICsgMTFcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoYGdldFZpcnR1YWxTaXplRm9yUHNidCAke3R9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgnYScpO1xuICAgICAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKFxuICAgICAgICB0LFxuICAgICAgICBrZXlzLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICApO1xuICAgICAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gICAgICBpdCgncmV0dXJucyBleHBlY3RlZCB2aXJ0dWFsIHNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yTWFwID0gbmV3IE1hcChbWydpbnRlcm5hbCcsIGRlc2NyaXB0b3JTZWxmXV0pO1xuICAgICAgICBjb25zdCBleHBlY3RlZFZpcnR1YWxTaXplID0gaW5wdXRTaXplICogMiArIG91dHB1dFNpemUgKiAyICsgMTE7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZ2V0VmlydHVhbFNpemVFc3RpbWF0ZUZvclBzYnQocHNidCwgZGVzY3JpcHRvck1hcCksIGV4cGVjdGVkVmlydHVhbFNpemUpO1xuICAgICAgICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXlzWzBdKTtcbiAgICAgICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5c1sxXSk7XG4gICAgICAgIGZpbmFsaXplUHNidChwc2J0KTtcbiAgICAgICAgLy8gVE9ETyhCVEMtMTc5Nyk6IGZpZ3VyZSBvdXQgd2h5IHdlIG92ZXJlc3RpbWF0ZSBieSAxXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigpLnZpcnR1YWxTaXplKCksIGV4cGVjdGVkVmlydHVhbFNpemUgLSAxKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1dzaDJPZjMnLCAxMDUsIDQzKTtcbiAgZGVzY3JpYmVXaXRoVGVtcGxhdGUoJ1RyMk9mMy1Ob0tleVBhdGgnLCAxMDksIDQzKTtcbn0pO1xuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!