PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-lib/dist/test/fixtures_thirdparty

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const mocha_1 = require("mocha");
const networks_1 = require("../../src/networks");
const fixtures_1 = require("./fixtures");
const transaction_util_1 = require("../transaction_util");
const UtxoTransaction_1 = require("../../src/bitgo/UtxoTransaction");
const ZcashTransaction_1 = require("../../src/bitgo/zcash/ZcashTransaction");
(0, mocha_1.describe)('Third-Party Fixtures', function () {
    (0, networks_1.getNetworkList)()
        .filter(networks_1.isMainnet)
        .forEach((network) => {
        (0, mocha_1.describe)(`parse ${(0, networks_1.getNetworkName)(network)}`, function () {
            function runCheckHashForSignature(v, i) {
                const [rawTransaction, script, inputIndex, hashType, ...rest] = v;
                const buffer = Buffer.from(rawTransaction, 'hex');
                let transaction, signatureHash;
                if ((0, networks_1.isZcash)(network)) {
                    [, /* branchId ,*/ signatureHash] = rest;
                    transaction = ZcashTransaction_1.ZcashTransaction.fromBuffer(buffer, false, 'number', network);
                }
                else if ((0, networks_1.isDogecoin)(network)) {
                    [signatureHash] = rest;
                    transaction = (0, transaction_util_1.parseTransactionRoundTrip)(buffer, network, {
                        amountType: 'bigint',
                    });
                }
                else {
                    [signatureHash] = rest;
                    transaction = (0, transaction_util_1.parseTransactionRoundTrip)(buffer, network);
                }
                const usesForkId = (hashType & UtxoTransaction_1.UtxoTransaction.SIGHASH_FORKID) > 0;
                if ((0, networks_1.isBitcoinGold)(network) && usesForkId) {
                    // Bitcoin Gold does not test transactions where FORKID is set 🤷
                    // https://github.com/BTCGPU/BTCGPU/blob/163928af05/src/test/sighash_tests.cpp#L194-L195
                    return;
                }
                const isSegwit = transaction.ins[inputIndex].witness?.length > 0;
                let hash;
                if (isSegwit) {
                    const amount = (0, networks_1.isDogecoin)(network) ? BigInt(0) : 0;
                    hash = transaction.hashForWitnessV0(inputIndex, Buffer.from(script, 'hex'), amount, hashType);
                }
                else {
                    transaction.ins[inputIndex].value = 0;
                    hash = transaction.hashForSignature(inputIndex, Buffer.from(script, 'hex'), hashType);
                }
                const refSignatureHash = Buffer.from(signatureHash, 'hex').reverse();
                assert.strict(refSignatureHash.equals(hash));
            }
            (0, fixtures_1.testFixtureArray)(this, network, fixtures_1.sigHashTestFile, function (vectors) {
                const zcashSubset = [48, 111, 114, 152, 157, 237, 241, 250, 280, 392, 461];
                vectors.forEach((v, i) => {
                    if ((0, networks_1.isZcash)(network) && !zcashSubset.includes(i)) {
                        return;
                    }
                    runCheckHashForSignature(v, i);
                });
            });
            (0, fixtures_1.testFixtureArray)(this, network, fixtures_1.txValidTestFile, function (vectors) {
                vectors.forEach((v, i) => {
                    const [, /* inputs , */ txHex] = v;
                    if ((0, networks_1.isDogecoin)(network)) {
                        (0, transaction_util_1.parseTransactionRoundTrip)(Buffer.from(txHex, 'hex'), network, {
                            amountType: 'bigint',
                        });
                    }
                    else {
                        (0, transaction_util_1.parseTransactionRoundTrip)(Buffer.from(txHex, 'hex'), network);
                    }
                });
            });
        });
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ZpeHR1cmVzX3RoaXJkcGFydHkvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsaUNBQWlDO0FBQ2pDLGlEQUFtSDtBQUNuSCx5Q0FPb0I7QUFFcEIsMERBQWdFO0FBQ2hFLHFFQUFrRTtBQUNsRSw2RUFBd0Y7QUFFeEYsSUFBQSxnQkFBUSxFQUFDLHNCQUFzQixFQUFFO0lBQy9CLElBQUEseUJBQWMsR0FBRTtTQUNiLE1BQU0sQ0FBQyxvQkFBUyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ25CLElBQUEsZ0JBQVEsRUFBQyxTQUFTLElBQUEseUJBQWMsRUFBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzNDLFNBQVMsd0JBQXdCLENBQUMsQ0FBNkMsRUFBRSxDQUFTO2dCQUN4RixNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxXQUFXLEVBQUUsYUFBYSxDQUFDO2dCQUMvQixJQUFJLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQXdCLENBQUM7b0JBQzdELFdBQVcsR0FBRyxtQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBdUIsQ0FBQyxDQUFDO2dCQUM5RixDQUFDO3FCQUFNLElBQUksSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQy9CLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBZ0IsQ0FBQztvQkFDbkMsV0FBVyxHQUFHLElBQUEsNENBQXlCLEVBQWtDLE1BQU0sRUFBRSxPQUFPLEVBQUU7d0JBQ3hGLFVBQVUsRUFBRSxRQUFRO3FCQUNyQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBZ0IsQ0FBQztvQkFDbkMsV0FBVyxHQUFHLElBQUEsNENBQXlCLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBUSxHQUFHLGlDQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLElBQUEsd0JBQWEsRUFBQyxPQUFPLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDekMsaUVBQWlFO29CQUNqRSx3RkFBd0Y7b0JBQ3hGLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLElBQUksQ0FBQztnQkFDVCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELElBQUksR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDaEcsQ0FBQztxQkFBTSxDQUFDO29CQUNMLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3hGLENBQUM7Z0JBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUQsSUFBQSwyQkFBZ0IsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDBCQUFlLEVBQUUsVUFBVSxPQUE0QjtnQkFDckYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3ZCLElBQUksSUFBQSxrQkFBTyxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNqRCxPQUFPO29CQUNULENBQUM7b0JBQ0Qsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBQSwyQkFBZ0IsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDBCQUFlLEVBQUUsVUFBVSxPQUF3QjtnQkFDakYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3RDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25DLElBQUksSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLElBQUEsNENBQXlCLEVBQWtDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRTs0QkFDN0YsVUFBVSxFQUFFLFFBQVE7eUJBQ3JCLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBQSw0Q0FBeUIsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDaEUsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBkZXNjcmliZSB9IGZyb20gJ21vY2hhJztcbmltcG9ydCB7IGdldE5ldHdvcmtMaXN0LCBnZXROZXR3b3JrTmFtZSwgaXNCaXRjb2luR29sZCwgaXNNYWlubmV0LCBpc1pjYXNoLCBpc0RvZ2Vjb2luIH0gZnJvbSAnLi4vLi4vc3JjL25ldHdvcmtzJztcbmltcG9ydCB7XG4gIHNpZ0hhc2hUZXN0RmlsZSxcbiAgU2lnSGFzaFRlc3RWZWN0b3IsXG4gIHRlc3RGaXh0dXJlQXJyYXksXG4gIHR4VmFsaWRUZXN0RmlsZSxcbiAgVHhWYWxpZFZlY3RvcixcbiAgWmNhc2hTaWdIYXNoVGVzdFZlY3Rvcixcbn0gZnJvbSAnLi9maXh0dXJlcyc7XG5cbmltcG9ydCB7IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXAgfSBmcm9tICcuLi90cmFuc2FjdGlvbl91dGlsJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgWmNhc2hOZXR3b3JrLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2JpdGdvL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5kZXNjcmliZSgnVGhpcmQtUGFydHkgRml4dHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGdldE5ldHdvcmtMaXN0KClcbiAgICAuZmlsdGVyKGlzTWFpbm5ldClcbiAgICAuZm9yRWFjaCgobmV0d29yaykgPT4ge1xuICAgICAgZGVzY3JpYmUoYHBhcnNlICR7Z2V0TmV0d29ya05hbWUobmV0d29yayl9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBydW5DaGVja0hhc2hGb3JTaWduYXR1cmUodjogU2lnSGFzaFRlc3RWZWN0b3IgfCBaY2FzaFNpZ0hhc2hUZXN0VmVjdG9yLCBpOiBudW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBbcmF3VHJhbnNhY3Rpb24sIHNjcmlwdCwgaW5wdXRJbmRleCwgaGFzaFR5cGUsIC4uLnJlc3RdID0gdjtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpO1xuICAgICAgICAgIGxldCB0cmFuc2FjdGlvbiwgc2lnbmF0dXJlSGFzaDtcbiAgICAgICAgICBpZiAoaXNaY2FzaChuZXR3b3JrKSkge1xuICAgICAgICAgICAgWywgLyogYnJhbmNoSWQgLCovIHNpZ25hdHVyZUhhc2hdID0gcmVzdCBhcyBbbnVtYmVyLCBzdHJpbmddO1xuICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmZmVyLCBmYWxzZSwgJ251bWJlcicsIG5ldHdvcmsgYXMgWmNhc2hOZXR3b3JrKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRG9nZWNvaW4obmV0d29yaykpIHtcbiAgICAgICAgICAgIFtzaWduYXR1cmVIYXNoXSA9IHJlc3QgYXMgW3N0cmluZ107XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXA8YmlnaW50LCBVdHhvVHJhbnNhY3Rpb248YmlnaW50Pj4oYnVmZmVyLCBuZXR3b3JrLCB7XG4gICAgICAgICAgICAgIGFtb3VudFR5cGU6ICdiaWdpbnQnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFtzaWduYXR1cmVIYXNoXSA9IHJlc3QgYXMgW3N0cmluZ107XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXAoYnVmZmVyLCBuZXR3b3JrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdXNlc0ZvcmtJZCA9IChoYXNoVHlwZSAmIFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRCkgPiAwO1xuICAgICAgICAgIGlmIChpc0JpdGNvaW5Hb2xkKG5ldHdvcmspICYmIHVzZXNGb3JrSWQpIHtcbiAgICAgICAgICAgIC8vIEJpdGNvaW4gR29sZCBkb2VzIG5vdCB0ZXN0IHRyYW5zYWN0aW9ucyB3aGVyZSBGT1JLSUQgaXMgc2V0IPCfpLdcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CVENHUFUvQlRDR1BVL2Jsb2IvMTYzOTI4YWYwNS9zcmMvdGVzdC9zaWdoYXNoX3Rlc3RzLmNwcCNMMTk0LUwxOTVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc1NlZ3dpdCA9IHRyYW5zYWN0aW9uLmluc1tpbnB1dEluZGV4XS53aXRuZXNzPy5sZW5ndGggPiAwO1xuICAgICAgICAgIGxldCBoYXNoO1xuICAgICAgICAgIGlmIChpc1NlZ3dpdCkge1xuICAgICAgICAgICAgY29uc3QgYW1vdW50ID0gaXNEb2dlY29pbihuZXR3b3JrKSA/IEJpZ0ludCgwKSA6IDA7XG4gICAgICAgICAgICBoYXNoID0gdHJhbnNhY3Rpb24uaGFzaEZvcldpdG5lc3NWMChpbnB1dEluZGV4LCBCdWZmZXIuZnJvbShzY3JpcHQsICdoZXgnKSwgYW1vdW50LCBoYXNoVHlwZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICh0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF0gYXMgYW55KS52YWx1ZSA9IDA7XG4gICAgICAgICAgICBoYXNoID0gdHJhbnNhY3Rpb24uaGFzaEZvclNpZ25hdHVyZShpbnB1dEluZGV4LCBCdWZmZXIuZnJvbShzY3JpcHQsICdoZXgnKSwgaGFzaFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWZTaWduYXR1cmVIYXNoID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlSGFzaCwgJ2hleCcpLnJldmVyc2UoKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0KHJlZlNpZ25hdHVyZUhhc2guZXF1YWxzKGhhc2gpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRlc3RGaXh0dXJlQXJyYXkodGhpcywgbmV0d29yaywgc2lnSGFzaFRlc3RGaWxlLCBmdW5jdGlvbiAodmVjdG9yczogU2lnSGFzaFRlc3RWZWN0b3JbXSkge1xuICAgICAgICAgIGNvbnN0IHpjYXNoU3Vic2V0ID0gWzQ4LCAxMTEsIDExNCwgMTUyLCAxNTcsIDIzNywgMjQxLCAyNTAsIDI4MCwgMzkyLCA0NjFdO1xuICAgICAgICAgIHZlY3RvcnMuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzWmNhc2gobmV0d29yaykgJiYgIXpjYXNoU3Vic2V0LmluY2x1ZGVzKGkpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJ1bkNoZWNrSGFzaEZvclNpZ25hdHVyZSh2LCBpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdEZpeHR1cmVBcnJheSh0aGlzLCBuZXR3b3JrLCB0eFZhbGlkVGVzdEZpbGUsIGZ1bmN0aW9uICh2ZWN0b3JzOiBUeFZhbGlkVmVjdG9yW10pIHtcbiAgICAgICAgICB2ZWN0b3JzLmZvckVhY2goKHY6IFR4VmFsaWRWZWN0b3IsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFssIC8qIGlucHV0cyAsICovIHR4SGV4XSA9IHY7XG4gICAgICAgICAgICBpZiAoaXNEb2dlY29pbihuZXR3b3JrKSkge1xuICAgICAgICAgICAgICBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwPGJpZ2ludCwgVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4+KEJ1ZmZlci5mcm9tKHR4SGV4LCAnaGV4JyksIG5ldHdvcmssIHtcbiAgICAgICAgICAgICAgICBhbW91bnRUeXBlOiAnYmlnaW50JyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwKEJ1ZmZlci5mcm9tKHR4SGV4LCAnaGV4JyksIG5ldHdvcmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0=

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


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