PHP WebShell

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

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

import * as utxolib from '@bitgo/utxo-lib';
import { isTriple, IWallet } from '@bitgo/sdk-core';

import { TransactionExplanation } from '../abstractUtxoCoin';
import { getDescriptorMapFromWallet, isDescriptorWallet } from '../descriptor';
import { toBip32Triple } from '../keychains';
import { getPolicyForEnv } from '../descriptor/validatePolicy';

import * as fixedScript from './fixedScript';
import * as descriptor from './descriptor';

/**
 * Decompose a raw transaction into useful information, such as the total amounts,
 * change amounts, and transaction outputs.
 */
export function explainTx<TNumber extends number | bigint>(
  tx: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoPsbt,
  params: {
    wallet?: IWallet;
    pubs?: string[];
    txInfo?: { unspents?: utxolib.bitgo.Unspent<TNumber>[] };
    changeInfo?: fixedScript.ChangeAddressInfo[];
  },
  network: utxolib.Network
): TransactionExplanation {
  if (params.wallet && isDescriptorWallet(params.wallet)) {
    if (tx instanceof utxolib.bitgo.UtxoPsbt) {
      if (!params.pubs || !isTriple(params.pubs)) {
        throw new Error('pub triple is required for descriptor wallets');
      }
      const walletKeys = toBip32Triple(params.pubs);
      const descriptors = getDescriptorMapFromWallet(
        params.wallet,
        walletKeys,
        getPolicyForEnv(params.wallet.bitgo.env)
      );
      return descriptor.explainPsbt(tx, descriptors);
    }

    throw new Error('legacy transactions are not supported for descriptor wallets');
  }
  if (tx instanceof utxolib.bitgo.UtxoPsbt) {
    return fixedScript.explainPsbt(tx, params, network);
  } else {
    return fixedScript.explainLegacyTx(tx, params, network);
  }
}

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


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