PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-bin/src/args

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

import * as utxolib from '@bitgo/utxo-lib';
import { getMainnet } from '@bitgo/utxo-lib';

export const bitcoinRegtest: utxolib.Network = {
  ...utxolib.networks.testnet,
  bech32: 'bcrt',
};

export function getNetworkForName(name: string): utxolib.Network {
  if (name === 'bitcoinRegtest') {
    return bitcoinRegtest;
  }
  const network = utxolib.networks[name as utxolib.NetworkName];
  if (!network) {
    throw new Error(`invalid network ${name}`);
  }
  return network;
}

export function getNetworkName(network: utxolib.Network): string {
  if (network === bitcoinRegtest) {
    return 'bitcoinRegtest';
  }
  return utxolib.getNetworkName(network) as string;
}

const networkOrder = [
  utxolib.networks.bitcoin,
  utxolib.networks.bitcoincash,
  utxolib.networks.bitcoingold,
  utxolib.networks.bitcoinsv,
  utxolib.networks.dash,
  utxolib.networks.dogecoin,
  utxolib.networks.ecash,
  utxolib.networks.litecoin,
  utxolib.networks.zcash,
];

function getNetworkOrderIndex(network: utxolib.Network): number {
  if (network === bitcoinRegtest) {
    network = utxolib.networks.bitcoin;
  }
  network = getMainnet(network);
  const index = networkOrder.indexOf(network);
  if (index === -1) {
    throw new Error(`unknown network ${network}`);
  }
  return index;
}

export function getNetworkList(): utxolib.Network[] {
  return [...utxolib.getNetworkList(), bitcoinRegtest].sort(
    (a, b) => getNetworkOrderIndex(a) - getNetworkOrderIndex(b) || getNetworkName(a).localeCompare(getNetworkName(b))
  );
}

export function getNetwork(argv: { network: string }): utxolib.Network {
  return getNetworkForName(argv.network);
}

type DemandOption<T> = T & { demandOption: true };

type NetworkOption<TDefault> = {
  type: 'string';
  description: string;
  default: TDefault;
  coerce: (arg: string) => utxolib.Network;
};

export function getNetworkOptions(defaultValue?: string): {
  network: NetworkOption<typeof defaultValue>;
} {
  return {
    network: {
      type: 'string',
      description: 'network name',
      default: defaultValue,
      coerce: getNetworkForName,
    },
  };
}

export function getNetworkOptionsDemand(defaultValue?: string): {
  network: DemandOption<NetworkOption<typeof defaultValue>>;
} {
  return {
    network: { ...getNetworkOptions(defaultValue).network, demandOption: true },
  };
}

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


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