0.13.25 • Published 11 months ago

@cardano-sdk/input-selection v0.13.25

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
11 months ago

Cardano JS SDK | Input Selection | CIP-0002

This package implements concepts from the draft specification being developed in CIP-0002.

Currently, there is only 1 input selection algorithm: RoundRobinRandomImprove, which is an Random-Improve adaptation that handles asset selection.

Usage Example

import { roundRobinRandomImprove, defaultSelectionConstraints, InputSelector, SelectionResult, SelectionSkeleton } from '@cardano-sdk/input-selection';
import { loadCardanoSerializationLib, CSL, CardanoSerializationLib, ProtocolParametersRequiredByWallet } from '@cardano-sdk/core';

const demo = async (protocolParameters: ProtocolParametersRequiredByWallet): Promise<SelectionResult> => {
  const csl: CardanoSerializationLib = await loadCardanoSerializationLib();
  const selector: InputSelector = roundRobinRandomImprove(coinsPerUtxoWord);
  // It is important that you use the same instance of cardano-serialization-lib across your application.
  // Bad: TransactionUnspentOutput.new(...)
  // Good: CSL.TransactionUnspentOutput.new(...)
  const utxo: CSL.TransactionUnspentOutput[] = [CSL.TransactionUnspentOutput.new(...), ...];
  const outputs: CSL.TransactionOutput[] = [CSL.TransactionOutput.new(...), ...];
  // Used to estimate min fee and validate transaction size
  const buildTx = (inputSelection: SelectionSkeleton): Promise<CSL.Transaction> => {...};
  const constraints = defaultSelectionConstraints({
    protocolParameters, buildTx,
  });

  return selector.select({
    utxo,
    outputs,
    constraints,
  });
};

Tests

Input selection is tested with property-based tests using fast-check, as well as a few regular example-based tests.

Due to nature of property-based tests, code coverage report is slightly different on each build.

RoundRobinRandomImprove has 100% code coverage when using high numRuns option (e.g. 100_000).

Note that to run it with high numRuns you need to increase Jest and fast-check timeout.

See code coverage report.

0.13.25

11 months ago

0.13.23

12 months ago

0.13.22

12 months ago

0.13.21

12 months ago

0.13.24

12 months ago

0.13.20

1 year ago

0.13.16

1 year ago

0.13.19

1 year ago

0.13.18

1 year ago

0.13.17

1 year ago

0.13.6

1 year ago

0.13.7

1 year ago

0.13.8

1 year ago

0.13.9

1 year ago

0.13.0

1 year ago

0.13.1

1 year ago

0.13.2

1 year ago

0.13.3

1 year ago

0.13.4

1 year ago

0.13.5

1 year ago

0.13.12

1 year ago

0.13.11

1 year ago

0.13.10

1 year ago

0.13.15

1 year ago

0.13.14

1 year ago

0.13.13

1 year ago

0.12.31

1 year ago

0.12.30

1 year ago

0.12.29

1 year ago

0.12.28

1 year ago

0.12.27

1 year ago

0.12.26

1 year ago

0.12.25

2 years ago

0.12.24

2 years ago

0.12.23

2 years ago

0.12.22

2 years ago

0.12.21

2 years ago

0.12.20

2 years ago

0.12.19

2 years ago

0.12.18

2 years ago

0.12.16

2 years ago

0.12.17

2 years ago

0.12.15

2 years ago

0.12.14

2 years ago

0.12.13

2 years ago

0.12.12

2 years ago

0.12.11

2 years ago

0.12.10

2 years ago

0.12.9

2 years ago

0.12.8

2 years ago

0.12.7

2 years ago

0.12.6

2 years ago

0.12.5

2 years ago

0.10.8-patch.0

2 years ago

0.11.8

2 years ago

0.11.9

2 years ago

0.11.0

2 years ago

0.12.3-patch.0

2 years ago

0.11.1

2 years ago

0.11.2

2 years ago

0.11.3

2 years ago

0.11.4

2 years ago

0.11.5

2 years ago

0.11.6

2 years ago

0.11.7

2 years ago

0.12.0

2 years ago

0.12.1

2 years ago

0.12.2

2 years ago

0.12.3

2 years ago

0.12.4

2 years ago

0.10.6

2 years ago

0.10.7

2 years ago

0.11.5-patch.0

2 years ago

0.10.5

2 years ago

0.9.5

2 years ago

0.10.1

2 years ago

0.10.2

2 years ago

0.10.3

2 years ago

0.10.4

2 years ago

0.10.0

2 years ago

0.9.2-test.0

2 years ago

0.9.2-nightly.1

2 years ago

0.9.2

2 years ago

0.9.2-nightly.0

2 years ago

0.9.1

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.1-nightly.9

2 years ago

0.9.1-nightly.5

2 years ago

0.9.1-nightly.6

2 years ago

0.9.1-nightly.7

2 years ago

0.9.3-patch.0

2 years ago

0.9.1-nightly.8

2 years ago

0.9.1-nightly.0

3 years ago

0.9.1-nightly.1

3 years ago

0.9.1-nightly.2

3 years ago

0.9.1-nightly.3

3 years ago

0.9.1-nightly.4

2 years ago

0.9.0-nightly.1

3 years ago

0.9.0

3 years ago

0.9.0-nightly.0

3 years ago

0.8.1-nightly.2

3 years ago

0.8.1

3 years ago

0.8.2-nightly.0

3 years ago

0.8.1-nightly.1

3 years ago

0.8.1-nightly.0

3 years ago

0.8.0

3 years ago

0.7.1-nightly.2

3 years ago

0.7.1-nightly.3

3 years ago

0.7.1-nightly.1

3 years ago

0.7.0-nightly.1

3 years ago

0.6.1-nightly.0

3 years ago

0.7.0-nightly.2

3 years ago

0.7.0-nightly.0

3 years ago

0.6.1-nightly.1

3 years ago

0.7.0-nightly.5

3 years ago

0.6.0-nightly.9

3 years ago

0.7.0-nightly.6

3 years ago

0.6.0-nightly.8

3 years ago

0.7.0-nightly.3

3 years ago

0.7.0-nightly.4

3 years ago

0.6.0-nightly.7

3 years ago

0.7.1-nightly.0

3 years ago

0.6.0-nightly.10

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.6.0-nightly.3

3 years ago

0.6.0-nightly.2

3 years ago

0.6.0-nightly.5

3 years ago

0.6.0-nightly.4

3 years ago

0.6.0-nightly.6

3 years ago

0.6.0-nightly.1

3 years ago