0.12.28 • Published 4 days ago

@cardano-sdk/input-selection v0.12.28

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 days 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.12.28

4 days ago

0.12.27

12 days ago

0.12.26

24 days ago

0.12.25

1 month ago

0.12.24

2 months ago

0.12.23

2 months ago

0.12.22

2 months ago

0.12.21

2 months ago

0.12.20

2 months ago

0.12.19

3 months ago

0.12.18

3 months ago

0.12.16

3 months ago

0.12.17

3 months ago

0.12.15

3 months ago

0.12.14

3 months ago

0.12.13

3 months ago

0.12.12

4 months ago

0.12.11

4 months ago

0.12.10

4 months ago

0.12.9

4 months ago

0.12.8

5 months ago

0.12.7

5 months ago

0.12.6

5 months ago

0.12.5

5 months ago

0.10.8-patch.0

10 months ago

0.11.8

8 months ago

0.11.9

8 months ago

0.11.0

10 months ago

0.12.3-patch.0

5 months ago

0.11.1

10 months ago

0.11.2

10 months ago

0.11.3

9 months ago

0.11.4

9 months ago

0.11.5

9 months ago

0.11.6

9 months ago

0.11.7

8 months ago

0.12.0

7 months ago

0.12.1

7 months ago

0.12.2

7 months ago

0.12.3

7 months ago

0.12.4

6 months ago

0.10.6

10 months ago

0.10.7

10 months ago

0.11.5-patch.0

8 months ago

0.10.5

10 months ago

0.9.5

11 months ago

0.10.1

11 months ago

0.10.2

11 months ago

0.10.3

10 months ago

0.10.4

10 months ago

0.10.0

11 months ago

0.9.2-test.0

12 months ago

0.9.2-nightly.1

12 months ago

0.9.2

11 months ago

0.9.2-nightly.0

12 months ago

0.9.1

12 months ago

0.9.4

11 months ago

0.9.3

11 months ago

0.9.1-nightly.9

12 months ago

0.9.1-nightly.5

1 year ago

0.9.1-nightly.6

1 year ago

0.9.1-nightly.7

1 year ago

0.9.3-patch.0

1 year ago

0.9.1-nightly.8

1 year ago

0.9.1-nightly.0

1 year ago

0.9.1-nightly.1

1 year ago

0.9.1-nightly.2

1 year ago

0.9.1-nightly.3

1 year ago

0.9.1-nightly.4

1 year ago

0.9.0-nightly.1

1 year ago

0.9.0

1 year ago

0.9.0-nightly.0

1 year ago

0.8.1-nightly.2

1 year ago

0.8.1

1 year ago

0.8.2-nightly.0

1 year ago

0.8.1-nightly.1

1 year ago

0.8.1-nightly.0

1 year ago

0.8.0

1 year ago

0.7.1-nightly.2

1 year ago

0.7.1-nightly.3

1 year ago

0.7.1-nightly.1

1 year ago

0.7.0-nightly.1

1 year ago

0.6.1-nightly.0

1 year ago

0.7.0-nightly.2

1 year ago

0.7.0-nightly.0

1 year ago

0.6.1-nightly.1

1 year ago

0.7.0-nightly.5

1 year ago

0.6.0-nightly.9

1 year ago

0.7.0-nightly.6

1 year ago

0.6.0-nightly.8

1 year ago

0.7.0-nightly.3

1 year ago

0.7.0-nightly.4

1 year ago

0.6.0-nightly.7

2 years ago

0.7.1-nightly.0

1 year ago

0.7.0

1 year ago

0.6.0

1 year ago

0.6.0-nightly.3

2 years ago

0.6.0-nightly.2

2 years ago

0.6.0-nightly.5

2 years ago

0.6.0-nightly.4

2 years ago

0.6.0-nightly.6

2 years ago

0.6.0-nightly.1

2 years ago