PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@bitgo-forks/avalanchejs/src/utils/UTXOSet

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

import type { AssetDict } from './models';
import type { Utxo } from '../../serializable/avax/utxo';
import { isTransferOut } from '../typeGuards';
import { filterDuplicateUTXOs } from '../removeDuplicateUTXOs';

export class UtxoSet {
  constructor(private utxos: Utxo[]) {
    this.utxos = filterDuplicateUTXOs(utxos);
  }

  getUTXOs() {
    return [...this.utxos];
  }

  /**
   * Organize the UTXOs as a dictionary with assetID as the key.
   */
  getAssetDict() {
    const dict = {};
    this.utxos.forEach((utxo) => {
      const assetId = utxo.assetId.toString();
      const valNow = dict[assetId] || [];
      dict[assetId] = [...valNow, utxo];
    });

    const finalDict: AssetDict = {};
    for (const assetID in dict) {
      finalDict[assetID] = new UtxoSet(dict[assetID]);
    }
    return finalDict;
  }

  /**
   * Return asset IDs that exist in this set.
   */
  getAssetIDs() {
    const ids = this.utxos.map((utxo) => utxo.assetId.toString());
    // Filter duplicates
    return ids.filter((id, index) => ids.indexOf(id) === index);
  }

  /**
   * Add a UTXO to the set, and return a new set.
   * @param utxo
   */
  push(utxo: Utxo) {
    return new UtxoSet([...this.getUTXOs(), utxo]);
  }

  /**
   * Return the UTXO ids in this set.
   */
  getUTXOIDs() {
    return this.utxos.map((utxo) => utxo.ID());
  }

  /**
   * Merge 2 UtxoSets and return a new set.
   * @param set
   */
  merge(set: UtxoSet) {
    const newUTXOs = [...this.getUTXOs(), ...set.getUTXOs()];
    return new UtxoSet(newUTXOs);
  }

  /**
   * Return UTXOs that have TransferOut outputs
   */
  getTransferOuts() {
    const utxos = this.utxos.filter((utxo) => {
      return isTransferOut(utxo.output);
    });
    return new UtxoSet(utxos);
  }
}

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


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