PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-api/src/v1

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

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

import buildDebug from 'debug';

const debug = buildDebug('bitgo:v1:txb');

/**
 * Co-sign a PSBT.
 * Simply a wrapper around `utxolib.bitgo.createPsbtFromBuffer` and `psbt.signAllInputsHD`.
 * @param params
 */
export function signPsbtRequest(params: { psbt: string; keychain: { xprv: string } } | unknown): {
  psbt: string;
} {
  if (typeof params !== 'object' || params === null) {
    throw new Error(`invalid argument`);
  }

  if (!('psbt' in params) || typeof params.psbt !== 'string') {
    throw new Error(`invalid params.psbt`);
  }

  if (!('keychain' in params) || typeof params.keychain !== 'object' || params.keychain === null) {
    throw new Error(`invalid params.keychain`);
  }

  if (!('xprv' in params.keychain) || typeof params.keychain.xprv !== 'string') {
    throw new Error(`invalid params.keychain.xprv`);
  }

  const psbt = utxolib.bitgo.createPsbtDecode(params.psbt, utxolib.networks.bitcoin);
  const keypair = utxolib.bip32.fromBase58(params.keychain.xprv, utxolib.networks.bitcoin);
  debug('signing PSBT with keychain %s', keypair.neutered().toBase58());
  utxolib.bitgo.withUnsafeNonSegwit(psbt, () => psbt.signAllInputsHD(keypair));
  return {
    psbt: psbt.toBuffer().toString('hex'),
  };
}

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


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