PHP WebShell

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

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

import { BitGoAPI } from '@bitgo/sdk-api';
import * as utxolib from '@bitgo/utxo-lib';
import { Wallet } from '@bitgo/sdk-core';

import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
import { IDescriptorWallet } from '../descriptorWallet';
import { NamedDescriptor } from '../NamedDescriptor';

import { DescriptorFromKeys } from './createDescriptors';

export async function createDescriptorWallet(
  bitgo: BitGoAPI,
  coin: AbstractUtxoCoin,
  {
    descriptors,
    ...params
  }: {
    type: 'hot';
    label: string;
    enterprise: string;
    keys: string[];
    descriptors: NamedDescriptor[];
  }
): Promise<IDescriptorWallet> {
  // We don't use `coin.wallets().add` here because it does a bunch of validation that does not make sense
  // for descriptor wallets.
  const newWallet = await bitgo
    .post(coin.url('/wallet/add'))
    .send({
      ...params,
      coinSpecific: { descriptors },
    })
    .result();
  return new Wallet(bitgo, coin, newWallet) as IDescriptorWallet;
}

export async function createDescriptorWalletWithWalletPassphrase(
  bitgo: BitGoAPI,
  coin: AbstractUtxoCoin,
  {
    enterprise,
    walletPassphrase,
    descriptorsFromKeys,
    ...params
  }: {
    label: string;
    enterprise: string;
    walletPassphrase: string;
    descriptorsFromKeys: DescriptorFromKeys;
    [key: string]: unknown;
  }
): Promise<IDescriptorWallet> {
  const userKeychain = await coin.keychains().createUserKeychain(walletPassphrase);
  const backupKeychain = await coin.keychains().createBackup();
  const bitgoKeychain = await coin.keychains().createBitGo({ enterprise });
  if (!userKeychain.prv) {
    throw new Error('Missing private key');
  }
  const userKey = utxolib.bip32.fromBase58(userKeychain.prv);
  const cosigners = [backupKeychain, bitgoKeychain].map((keychain) => {
    if (!keychain.pub) {
      throw new Error('Missing public key');
    }
    return utxolib.bip32.fromBase58(keychain.pub);
  });
  return createDescriptorWallet(bitgo, coin, {
    ...params,
    type: 'hot',
    enterprise,
    keys: [userKeychain.id, backupKeychain.id, bitgoKeychain.id],
    descriptors: descriptorsFromKeys(userKey, cosigners),
  });
}

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


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