2.1.0 • Published 9 months ago

@rosen-bridge/cardano-utxo-selection v2.1.0

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
9 months ago

@rosen-bridge/cardano-utxo-selection

Table of contents

Introduction

A TypeScript package for selecting Cardano UTXOs to cover required amounts of assets, built on top of the abstract box selection framework.

Installation

npm:

npm i @rosen-bridge/cardano-utxo-selection

yarn:

yarn add @rosen-bridge/cardano-utxo-selection

Usage

Here's a basic example of how to use this package:

import { CardanoBoxSelection } from '@rosen-bridge/cardano-utxo-selection';
import { DummyLogger } from '@rosen-bridge/abstract-logger';

// Create the selection instance
const selector = new CardanoBoxSelection(new DummyLogger());

// Define required assets
const requiredAssets = {
  nativeToken: 100000000n, // 1 ADA
  tokens: [
    { id: 'policy1.token1', value: 100n },
    { id: 'policy2.token2', value: 200n },
  ],
};

// Define UTXOs
const utxos: CardanoUtxo[] = [
  {
    txHash: 'tx1',
    index: 0,
    value: 500000000n, // 5 ADA
    assets: [{ id: 'policy1.token1', value: 100n }],
  },
  {
    txHash: 'tx2',
    index: 0,
    value: 300000000n, // 3 ADA
    assets: [{ id: 'policy2.token2', value: 200n }],
  },
];

// Get covering boxes
const result = await selector.getCoveringBoxes(
  requiredAssets,
  [], // forbidden box IDs
  new Map(), // track map
  utxos.values(),
);

if (result.covered) {
  console.log('Selected UTXOs:', result.boxes);
  console.log('Additional assets:', result.additionalAssets);
} else {
  console.log('Could not cover requirements');
}

You can also use custom min box value and limit number of tokens per change box by passing them as arguments to the getCoveringBoxes method.

const result = await selector.getCoveringBoxes(
  requiredAssets,
  [], // forbidden box IDs
  new Map(), // track map
  boxes.values(),
  20000000n, // min box value
  3, // max token count
);
1.1.2-4e36261b

10 months ago

2.1.0

9 months ago

2.0.1

9 months ago

2.0.0

9 months ago

1.1.1

1 year ago

1.1.2

1 year ago

1.1.0

2 years ago

1.0.0

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago