PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-lib/test/bitgo/zcash
Просмотр файла: hashZip0244.ts
import * as assert from 'assert';
import * as vectors from './fixtures/vectorsZip0244.json';
import { UnsupportedTransactionError, ZcashTransaction } from '../../../src/bitgo';
import { Transaction, networks } from '../../../src';
type Vector = [
tx: string,
txid: string,
auth_digest: string,
transparent_input: number,
script_code: string,
amount: number,
sighash_all: string,
sighash_none: string,
sighash_single: string,
sighash_all_anyone: string,
sighash_none_anyone: string,
sighash_single_anyone: string
];
function parseHashType(hashTypeStr: string): number {
return hashTypeStr.split('|').reduce((v, str) => {
if (str in Transaction) {
return v | Transaction[str];
}
throw new Error(`invalid hashType ${str}`);
}, 0);
}
function runVector(v: Vector, i: number) {
const [
txHex,
txid,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
authDigest,
transparentInput,
pubScriptHex,
amount,
...sigHashHex /* sighash_all, sighash_none, sighash_single, sighash_all_anyone, sighash_none_anyone, sighash_single_anyone */
] = v;
describe(`Vector ${i}, txid=${txid}`, function () {
let tx: ZcashTransaction;
before('parse', function () {
try {
tx = ZcashTransaction.fromBuffer(Buffer.from(txHex, 'hex'), false, 'number', networks.zcash);
} catch (e) {
if (e instanceof UnsupportedTransactionError) {
this.skip();
}
throw e;
}
});
it('has expected txid', function () {
// getId() returns the reversed hash
assert.strictEqual(tx.getHash().toString('hex'), txid);
});
[
'SIGHASH_ALL',
'SIGHASH_NONE',
'SIGHASH_SINGLE',
'SIGHASH_ALL|SIGHASH_ANYONECANPAY',
'SIGHASH_NONE|SIGHASH_ANYONECANPAY',
'SIGHASH_SINGLE|SIGHASH_ANYONECANPAY',
].forEach((hashTypeStr, i) => {
if (sigHashHex[i] === null) {
return;
}
const hashType = parseHashType(hashTypeStr);
it(`has expected value for ${hashTypeStr} ${hashType}`, function () {
assert.strictEqual(
tx
.hashForSignatureByNetwork(
transparentInput ?? undefined,
pubScriptHex ? Buffer.from(pubScriptHex, 'hex') : Buffer.of(),
amount,
hashType
)
.toString('hex'),
sigHashHex[i]
);
});
});
});
}
describe('ZcashTransaction ZIP-0244', function () {
vectors
.filter((v) => v.length > 1)
.forEach((v, i) => {
runVector(v as Vector, i);
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!