PHP WebShell

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

Просмотр файла: fixtures.ts

import { Network, networks } from '../../../src';
import { toOutputScript } from '../../../src/address';
import { TestVector } from '../addressFormat';

export function getTestVectorsBitcoinCashAddressTranslations(
  network: Network,
  modify?: (v: TestVector) => TestVector
): TestVector[] {
  if (modify === undefined) {
    return [
      ...getTestVectorsBitcoinCashAddressTranslations(network, (v) => v),
      ...getTestVectorsBitcoinCashAddressTranslations(network, (v) => {
        // Unfortunately, the cashaddr format is not very well specified.
        // While the spec[0] states that every address must have a prefix, some sources say that it is
        // optional[1]. Our libraries will always create prefixed addresses.
        // 0: https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
        // 1: https://www.bitcoinabc.org/cashaddr/
        v.input = v.input.split(':')[1];
        return v;
      }),
      ...getTestVectorsBitcoinCashAddressTranslations(network, (v) => {
        // https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md#uppercaselowercase
        // ``
        //   Lower case is preferred for cashaddr, but uppercase is accepted. A mixture of lower case and uppercase must be rejected.
        //    Allowing for uppercase ensures that the address can be encoded efficiently in QR codes using the alphanumeric mode[3].
        // ``
        v.input = v.input.toUpperCase();
        return v;
      }),
    ];
  }

  function fromBase58Ref(base58: string, input: string, network = networks.bitcoincash): TestVector {
    return {
      network,
      format: 'cashaddr',
      input,
      output: input,
      payload: toOutputScript(base58, network),
    };
  }

  function fromOutputScriptRef(
    { size, type }: { size: number; type: number },
    payloadHex: string,
    input: string,
    network = networks.bitcoincash
  ): TestVector {
    return {
      network,
      format: 'cashaddr',
      payload: Buffer.from(payloadHex, 'hex'),
      input,
      output: input,
    };
  }

  return [
    // https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md?plain=1#L142-L149
    fromBase58Ref('1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu', 'bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a'),
    fromBase58Ref('1KXrWXciRDZUpQwQmuM1DbwsKDLYAYsVLR', 'bitcoincash:qr95sy3j9xwd2ap32xkykttr4cvcu7as4y0qverfuy'),
    fromBase58Ref('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb', 'bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r'),
    fromBase58Ref('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC', 'bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq'),
    fromBase58Ref('3LDsS579y7sruadqu11beEJoTjdFiFCdX4', 'bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e'),
    fromBase58Ref('31nwvkZwyPdgzjBJZXfDmSWsC4ZLKpYyUw', 'bitcoincash:pqq3728yw0y47sqn6l2na30mcw6zm78dzq5ucqzc37'),

    // https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md?plain=1#L158-L159
    fromOutputScriptRef(
      { size: 20, type: 0 },
      'F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9',
      'bitcoincash:qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg2'
    ),
    fromOutputScriptRef(
      { size: 20, type: 1 },
      'F5BF48B397DAE70BE82B3CCA4793F8EB2B6CDAC9',
      'bchtest:pr6m7j9njldwwzlg9v7v53unlr4jkmx6eyvwc0uz5t',
      networks.bitcoincashTestnet
    ),
  ]
    .filter((v) => v.network === network)
    .map(modify);
}

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


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