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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ZpeHR1cmVzX3RoaXJkcGFydHkvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsaUNBQWlDO0FBQ2pDLGlEQUFtSDtBQUNuSCx5Q0FPb0I7QUFFcEIsMERBQWdFO0FBQ2hFLHFFQUFrRTtBQUNsRSw2RUFBd0Y7QUFFeEYsSUFBQSxnQkFBUSxFQUFDLHNCQUFzQixFQUFFO0lBQy9CLElBQUEseUJBQWMsR0FBRTtTQUNiLE1BQU0sQ0FBQyxvQkFBUyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ25CLElBQUEsZ0JBQVEsRUFBQyxTQUFTLElBQUEseUJBQWMsRUFBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQzNDLFNBQVMsd0JBQXdCLENBQUMsQ0FBNkMsRUFBRSxDQUFTO2dCQUN4RixNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxXQUFXLEVBQUUsYUFBYSxDQUFDO2dCQUMvQixJQUFJLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQXdCLENBQUM7b0JBQzdELFdBQVcsR0FBRyxtQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBdUIsQ0FBQyxDQUFDO2dCQUM5RixDQUFDO3FCQUFNLElBQUksSUFBQSxxQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQy9CLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFB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VSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLElBQUEsNENBQXlCLEVBQWtDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRTs0QkFDN0YsVUFBVSxFQUFFLFFBQVE7eUJBQ3JCLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBQSw0Q0FBeUIsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDaEUsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBkZXNjcmliZSB9IGZyb20gJ21vY2hhJztcbmltcG9ydCB7IGdldE5ldHdvcmtMaXN0LCBnZXROZXR3b3JrTmFtZSwgaXNCaXRjb2luR29sZCwgaXNNYWlubmV0LCBpc1pjYXNoLCBpc0RvZ2Vjb2luIH0gZnJvbSAnLi4vLi4vc3JjL25ldHdvcmtzJztcbmltcG9ydCB7XG4gIHNpZ0hhc2hUZXN0RmlsZSxcbiAgU2lnSGFzaFRlc3RWZWN0b3IsXG4gIHRlc3RGaXh0dXJlQXJyYXksXG4gIHR4VmFsaWRUZXN0RmlsZSxcbiAgVHhWYWxpZFZlY3RvcixcbiAgWmNhc2hTaWdIYXNoVGVzdFZlY3Rvcixcbn0gZnJvbSAnLi9maXh0dXJlcyc7XG5cbmltcG9ydCB7IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXAgfSBmcm9tICcuLi90cmFuc2FjdGlvbl91dGlsJztcbmltcG9ydCB7IFV0eG9UcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9iaXRnby9VdHhvVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgWmNhc2hOZXR3b3JrLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2JpdGdvL3pjYXNoL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5kZXNjcmliZSgnVGhpcmQtUGFydHkgRml4dHVyZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGdldE5ldHdvcmtMaXN0KClcbiAgICAuZmlsdGVyKGlzTWFpbm5ldClcbiAgICAuZm9yRWFjaCgobmV0d29yaykgPT4ge1xuICAgICAgZGVzY3JpYmUoYHBhcnNlICR7Z2V0TmV0d29ya05hbWUobmV0d29yayl9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBydW5DaGVja0hhc2hGb3JTaWduYXR1cmUodjogU2lnSGFzaFRlc3RWZWN0b3IgfCBaY2FzaFNpZ0hhc2hUZXN0VmVjdG9yLCBpOiBudW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBbcmF3VHJhbnNhY3Rpb24sIHNjcmlwdCwgaW5wdXRJbmRleCwgaGFzaFR5cGUsIC4uLnJlc3RdID0gdjtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpO1xuICAgICAgICAgIGxldCB0cmFuc2FjdGlvbiwgc2lnbmF0dXJlSGFzaDtcbiAgICAgICAgICBpZiAoaXNaY2FzaChuZXR3b3JrKSkge1xuICAgICAgICAgICAgWywgLyogYnJhbmNoSWQgLCovIHNpZ25hdHVyZUhhc2hdID0gcmVzdCBhcyBbbnVtYmVyLCBzdHJpbmddO1xuICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoYnVmZmVyLCBmYWxzZSwgJ251bWJlcicsIG5ldHdvcmsgYXMgWmNhc2hOZXR3b3JrKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzRG9nZWNvaW4obmV0d29yaykpIHtcbiAgICAgICAgICAgIFtzaWduYXR1cmVIYXNoXSA9IHJlc3QgYXMgW3N0cmluZ107XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXA8YmlnaW50LCBVdHhvVHJhbnNhY3Rpb248YmlnaW50Pj4oYnVmZmVyLCBuZXR3b3JrLCB7XG4gICAgICAgICAgICAgIGFtb3VudFR5cGU6ICdiaWdpbnQnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFtzaWduYXR1cmVIYXNoXSA9IHJlc3QgYXMgW3N0cmluZ107XG4gICAgICAgICAgICB0cmFuc2FjdGlvbiA9IHBhcnNlVHJhbnNhY3Rpb25Sb3VuZFRyaXAoYnVmZmVyLCBuZXR3b3JrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdXNlc0ZvcmtJZCA9IChoYXNoVHlwZSAmIFV0eG9UcmFuc2FjdGlvbi5TSUdIQVNIX0ZPUktJRCkgPiAwO1xuICAgICAgICAgIGlmIChpc0JpdGNvaW5Hb2xkKG5ldHdvcmspICYmIHVzZXNGb3JrSWQpIHtcbiAgICAgICAgICAgIC8vIEJpdGNvaW4gR29sZCBkb2VzIG5vdCB0ZXN0IHRyYW5zYWN0aW9ucyB3aGVyZSBGT1JLSUQgaXMgc2V0IPCfpLdcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CVENHUFUvQlRDR1BVL2Jsb2IvMTYzOTI4YWYwNS9zcmMvdGVzdC9zaWdoYXNoX3Rlc3RzLmNwcCNMMTk0LUwxOTVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpc1NlZ3dpdCA9IHRyYW5zYWN0aW9uLmluc1tpbnB1dEluZGV4XS53aXRuZXNzPy5sZW5ndGggPiAwO1xuICAgICAgICAgIGxldCBoYXNoO1xuICAgICAgICAgIGlmIChpc1NlZ3dpdCkge1xuICAgICAgICAgICAgY29uc3QgYW1vdW50ID0gaXNEb2dlY29pbihuZXR3b3JrKSA/IEJpZ0ludCgwKSA6IDA7XG4gICAgICAgICAgICBoYXNoID0gdHJhbnNhY3Rpb24uaGFzaEZvcldpdG5lc3NWMChpbnB1dEluZGV4LCBCdWZmZXIuZnJvbShzY3JpcHQsICdoZXgnKSwgYW1vdW50LCBoYXNoVHlwZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICh0cmFuc2FjdGlvbi5pbnNbaW5wdXRJbmRleF0gYXMgYW55KS52YWx1ZSA9IDA7XG4gICAgICAgICAgICBoYXNoID0gdHJhbnNhY3Rpb24uaGFzaEZvclNpZ25hdHVyZShpbnB1dEluZGV4LCBCdWZmZXIuZnJvbShzY3JpcHQsICdoZXgnKSwgaGFzaFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWZTaWduYXR1cmVIYXNoID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlSGFzaCwgJ2hleCcpLnJldmVyc2UoKTtcbiAgICAgICAgICBhc3NlcnQuc3RyaWN0KHJlZlNpZ25hdHVyZUhhc2guZXF1YWxzKGhhc2gpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRlc3RGaXh0dXJlQXJyYXkodGhpcywgbmV0d29yaywgc2lnSGFzaFRlc3RGaWxlLCBmdW5jdGlvbiAodmVjdG9yczogU2lnSGFzaFRlc3RWZWN0b3JbXSkge1xuICAgICAgICAgIGNvbnN0IHpjYXNoU3Vic2V0ID0gWzQ4LCAxMTEsIDExNCwgMTUyLCAxNTcsIDIzNywgMjQxLCAyNTAsIDI4MCwgMzkyLCA0NjFdO1xuICAgICAgICAgIHZlY3RvcnMuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzWmNhc2gobmV0d29yaykgJiYgIXpjYXNoU3Vic2V0LmluY2x1ZGVzKGkpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJ1bkNoZWNrSGFzaEZvclNpZ25hdHVyZSh2LCBpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdEZpeHR1cmVBcnJheSh0aGlzLCBuZXR3b3JrLCB0eFZhbGlkVGVzdEZpbGUsIGZ1bmN0aW9uICh2ZWN0b3JzOiBUeFZhbGlkVmVjdG9yW10pIHtcbiAgICAgICAgICB2ZWN0b3JzLmZvckVhY2goKHY6IFR4VmFsaWRWZWN0b3IsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFssIC8qIGlucHV0cyAsICovIHR4SGV4XSA9IHY7XG4gICAgICAgICAgICBpZiAoaXNEb2dlY29pbihuZXR3b3JrKSkge1xuICAgICAgICAgICAgICBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwPGJpZ2ludCwgVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4+KEJ1ZmZlci5mcm9tKHR4SGV4LCAnaGV4JyksIG5ldHdvcmssIHtcbiAgICAgICAgICAgICAgICBhbW91bnRUeXBlOiAnYmlnaW50JyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZVRyYW5zYWN0aW9uUm91bmRUcmlwKEJ1ZmZlci5mcm9tKHR4SGV4LCAnaGV4JyksIG5ldHdvcmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!