From 4bde8e8fde11908d4295f3f53918faed255f1ba0 Mon Sep 17 00:00:00 2001 From: Martynas Kazlauskas Date: Fri, 24 Sep 2021 11:20:51 +0300 Subject: [PATCH] fix(cip2): change token bundle size constraint arg to CSL.MultiAsset --- packages/cip2/src/RoundRobinRandomImprove/change.ts | 4 +++- packages/cip2/src/types.ts | 2 +- packages/cip2/test/RoundRobinRandomImprove.test.ts | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/cip2/src/RoundRobinRandomImprove/change.ts b/packages/cip2/src/RoundRobinRandomImprove/change.ts index 37e80a6fe65..13226badec6 100644 --- a/packages/cip2/src/RoundRobinRandomImprove/change.ts +++ b/packages/cip2/src/RoundRobinRandomImprove/change.ts @@ -264,7 +264,9 @@ export const computeChangeAndAdjustForFee = async ({ const change = changeBundles.map((bundle) => valueQuantitiesToValue(bundle, csl)); for (const value of change) { - if (tokenBundleSizeExceedsLimit(value)) { + const multiasset = value.multiasset(); + if (!multiasset) continue; + if (tokenBundleSizeExceedsLimit(multiasset)) { // Algorithm could be improved to attempt to rebalance the bundles throw new InputSelectionError(InputSelectionFailure.UtxoFullyDepleted); } diff --git a/packages/cip2/src/types.ts b/packages/cip2/src/types.ts index 13800e62a57..25a1ab57955 100644 --- a/packages/cip2/src/types.ts +++ b/packages/cip2/src/types.ts @@ -48,7 +48,7 @@ export type EstimateTxFee = (selectionSkeleton: SelectionSkeleton) => Promise boolean; +export type TokenBundleSizeExceedsLimit = (tokenBundle: CSL.MultiAsset) => boolean; /** * @returns minimum lovelace amount in a UTxO diff --git a/packages/cip2/test/RoundRobinRandomImprove.test.ts b/packages/cip2/test/RoundRobinRandomImprove.test.ts index 2b6d09243de..5376591fffe 100644 --- a/packages/cip2/test/RoundRobinRandomImprove.test.ts +++ b/packages/cip2/test/RoundRobinRandomImprove.test.ts @@ -135,8 +135,8 @@ describe('RoundRobinRandomImprove', () => { it('Change bundle size exceeds constraint', async () => { await testInputSelectionFailureMode({ getAlgorithm: getRoundRobinRandomImprove, - createUtxo: (utils) => [utils.createUnspentTxOutput({ coins: 2_000_000n })], - createOutputs: (utils) => [utils.createOutput({ coins: 1_000_000n })], + createUtxo: (utils) => [utils.createUnspentTxOutput({ coins: 2_000_000n, assets: { [TSLA_Asset]: 1000n } })], + createOutputs: (utils) => [utils.createOutput({ coins: 1_000_000n, assets: { [TSLA_Asset]: 500n } })], constraints: { ...NO_CONSTRAINTS, tokenBundleSizeExceedsLimit: () => true