@cardano-sdk/input-selection 0.11.2 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"GreedyInputSelector.d.ts","sourceRoot":"","sources":["../../../src/GreedySelection/GreedyInputSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA2B,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAC;AAe1G,MAAM,WAAW,mBAAmB;IAalC,kBAAkB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACxE;AAiID,qBAAa,mBAAoB,YAAW,aAAa;;gBAG3C,KAAK,EAAE,mBAAmB;IAIhC,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;CAuDzE"}
1
+ {"version":3,"file":"GreedyInputSelector.d.ts","sourceRoot":"","sources":["../../../src/GreedySelection/GreedyInputSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA2B,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAC;AAe1G,MAAM,WAAW,mBAAmB;IAalC,kBAAkB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACxE;AA6ID,qBAAa,mBAAoB,YAAW,aAAa;;gBAG3C,KAAK,EAAE,mBAAmB;IAIhC,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;CAuDzE"}
@@ -26,7 +26,7 @@ const adjustOutputsForFee = async (changeLovelace, constraints, inputs, outputs,
26
26
  outputs: totalOutputs
27
27
  });
28
28
  if (fee === changeLovelace)
29
- return { change: [], fee };
29
+ return { change: [], fee, feeAccountedFor: true };
30
30
  if (changeLovelace < fee)
31
31
  throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoBalanceInsufficient);
32
32
  const updatedOutputs = [...changeOutputs];
@@ -40,16 +40,13 @@ const adjustOutputsForFee = async (changeLovelace, constraints, inputs, outputs,
40
40
  break;
41
41
  }
42
42
  }
43
- if (!feeAccountedFor) {
44
- throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
45
- }
46
- return { change: [...updatedOutputs], fee };
43
+ return { change: [...updatedOutputs], fee, feeAccountedFor };
47
44
  };
48
45
  const splitChangeAndComputeFee = async (inputs, outputs, changeLovelace, changeAssets, constraints, getChangeAddresses, fee) => {
49
46
  const changeOutputs = await (0, util_2.splitChange)(getChangeAddresses, changeLovelace, changeAssets, constraints.computeMinimumCoinQuantity, constraints.tokenBundleSizeExceedsLimit, fee);
50
- const adjustedChangeOutputs = await adjustOutputsForFee(changeLovelace, constraints, inputs, outputs, changeOutputs, fee);
47
+ let adjustedChangeOutputs = await adjustOutputsForFee(changeLovelace, constraints, inputs, outputs, changeOutputs, fee);
51
48
  if (adjustedChangeOutputs.fee >= changeLovelace) {
52
- return {
49
+ const result = {
53
50
  change: [
54
51
  {
55
52
  address: util_1.stubMaxSizeAddress,
@@ -59,12 +56,24 @@ const splitChangeAndComputeFee = async (inputs, outputs, changeLovelace, changeA
59
56
  }
60
57
  }
61
58
  ],
62
- fee: adjustedChangeOutputs.fee
59
+ fee: adjustedChangeOutputs.fee,
60
+ feeAccountedFor: true
63
61
  };
62
+ if (result.change[0].value.coins < constraints.computeMinimumCoinQuantity(result.change[0]))
63
+ throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
64
+ return result;
64
65
  }
65
66
  if (fee < adjustedChangeOutputs.fee) {
66
- return splitChangeAndComputeFee(inputs, outputs, changeLovelace, changeAssets, constraints, getChangeAddresses, adjustedChangeOutputs.fee);
67
+ adjustedChangeOutputs = await splitChangeAndComputeFee(inputs, outputs, changeLovelace, changeAssets, constraints, getChangeAddresses, adjustedChangeOutputs.fee);
68
+ if (adjustedChangeOutputs.change.length === 0)
69
+ throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
67
70
  }
71
+ for (const out of adjustedChangeOutputs.change) {
72
+ if (out.value.coins < constraints.computeMinimumCoinQuantity(out))
73
+ throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
74
+ }
75
+ if (!adjustedChangeOutputs.feeAccountedFor)
76
+ throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
68
77
  return adjustedChangeOutputs;
69
78
  };
70
79
  class GreedyInputSelector {
@@ -1 +1 @@
1
- {"version":3,"file":"GreedyInputSelector.js","sourceRoot":"","sources":["../../../src/GreedySelection/GreedyInputSelector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GreedyInputSelector.js","sourceRoot":"","sources":["../../../src/GreedySelection/GreedyInputSelector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/GreedySelection/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAoKnF,eAAO,MAAM,WAAW,uBACF,MAAM,QAAQ,IAAI,QAAQ,cAAc,EAAE,MAAM,CAAC,CAAC,uBACjD,MAAM,qBACR,QAAQ,QAAQ,GAAG,SAAS,8BACnB,0BAA0B,+BACzB,2BAA2B,OACnD,MAAM,KACV,QAAQ,MAAM,QAAQ,KAAK,CAAC,CA2C9B,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/GreedySelection/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA2B,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AA2KnF,eAAO,MAAM,WAAW,uBACF,MAAM,QAAQ,IAAI,QAAQ,cAAc,EAAE,MAAM,CAAC,CAAC,uBACjD,MAAM,qBACR,QAAQ,QAAQ,GAAG,SAAS,8BACnB,0BAA0B,+BACzB,2BAA2B,OACnD,MAAM,KACV,QAAQ,MAAM,QAAQ,KAAK,CAAC,CA2C9B,CAAC"}
@@ -2,27 +2,36 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitChange = void 0;
4
4
  const bignumber_js_1 = require("bignumber.js");
5
+ const core_1 = require("@cardano-sdk/core");
5
6
  const InputSelectionError_1 = require("../InputSelectionError");
6
7
  const util_1 = require("../util");
7
8
  const PERCENTAGE_TOLERANCE = 0.05;
8
9
  const distributeAssets = (outputs, computeMinimumCoinQuantity, tokenBundleSizeExceedsLimit, fee) => {
9
10
  const adjustedOutputs = [...outputs];
10
- for (let i = 0; i < adjustedOutputs.length; ++i) {
11
- const output = adjustedOutputs[i];
12
- if (!(0, util_1.isValidValue)(output.value, computeMinimumCoinQuantity, tokenBundleSizeExceedsLimit, fee)) {
13
- if (i === adjustedOutputs.length - 1) {
14
- throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
15
- }
16
- if (!output.value.assets || output.value.assets.size === 0) {
17
- throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
18
- }
19
- const splicedAsset = new Map([...output.value.assets.entries()].splice(0, 1));
20
- const currentOutputNewAssets = (0, util_1.subtractTokenMaps)(output.value.assets, splicedAsset);
21
- const nextOutputNewAssets = (0, util_1.addTokenMaps)(adjustedOutputs[i + 1].value.assets, splicedAsset);
22
- output.value.assets = currentOutputNewAssets;
23
- adjustedOutputs[i + 1].value.assets = nextOutputNewAssets;
24
- return distributeAssets(adjustedOutputs, computeMinimumCoinQuantity, tokenBundleSizeExceedsLimit, fee);
11
+ if (adjustedOutputs.length === 0)
12
+ return adjustedOutputs;
13
+ const totalAssets = (0, core_1.coalesceValueQuantities)(adjustedOutputs.map((out) => out.value)).assets;
14
+ if (!totalAssets || totalAssets.size === 0)
15
+ return adjustedOutputs;
16
+ for (const utxo of adjustedOutputs)
17
+ utxo.value.assets = undefined;
18
+ let i = 0;
19
+ const availableOutputs = adjustedOutputs;
20
+ while (totalAssets.size > 0) {
21
+ const splicedAsset = new Map([...totalAssets.entries()].splice(0, 1));
22
+ const currentUtxoIndex = i % availableOutputs.length;
23
+ const currentValue = { ...availableOutputs[currentUtxoIndex].value };
24
+ currentValue.assets = (0, util_1.addTokenMaps)(currentValue.assets, splicedAsset);
25
+ if (!(0, util_1.isValidValue)(currentValue, computeMinimumCoinQuantity, tokenBundleSizeExceedsLimit, fee)) {
26
+ availableOutputs.splice(currentUtxoIndex, 1);
25
27
  }
28
+ else {
29
+ availableOutputs[currentUtxoIndex].value = currentValue;
30
+ totalAssets.delete([...splicedAsset.keys()][0]);
31
+ }
32
+ if (availableOutputs.length === 0)
33
+ throw new InputSelectionError_1.InputSelectionError(InputSelectionError_1.InputSelectionFailure.UtxoFullyDepleted);
34
+ ++i;
26
35
  }
27
36
  return adjustedOutputs;
28
37
  };
@@ -36,14 +45,14 @@ const getMinUtxoAmount = (amount) => {
36
45
  }
37
46
  return BigInt(new bignumber_js_1.BigNumber(minLovelaceStr).multipliedBy(granularityFactor).toFixed(0, 0));
38
47
  };
39
- const splitChangeOutput = (output, computeMinimumCoinQuantity) => {
48
+ const splitChangeOutput = (output, computeMinimumCoinQuantity, fee) => {
40
49
  const amount = output.value.coins;
41
50
  const minUtxoAdaAmount = getMinUtxoAmount(amount);
42
51
  let remaining = amount;
43
52
  let runningAmount = 0n;
44
53
  const amounts = new Array();
45
54
  const divisor = new bignumber_js_1.BigNumber(2);
46
- while (remaining > minUtxoAdaAmount) {
55
+ while (remaining >= minUtxoAdaAmount) {
47
56
  const val = BigInt(new bignumber_js_1.BigNumber(remaining.toString()).dividedBy(divisor).toFixed(0, 0));
48
57
  const updatedRemaining = remaining - val;
49
58
  if (updatedRemaining <= minUtxoAdaAmount ||
@@ -51,7 +60,8 @@ const splitChangeOutput = (output, computeMinimumCoinQuantity) => {
51
60
  computeMinimumCoinQuantity({
52
61
  address: output.address,
53
62
  value: { assets: output.value.assets, coins: amount - runningAmount }
54
- })) {
63
+ }) +
64
+ fee) {
55
65
  amounts.push(amount - runningAmount);
56
66
  break;
57
67
  }
@@ -88,7 +98,7 @@ const splitChange = async (getChangeAddresses, totalChangeLovelace, totalChangeA
88
98
  const missingAllocation = totalChangeLovelace - runningTotal;
89
99
  changeOutputs[changeOutputs.length - 1].value.coins += missingAllocation;
90
100
  }
91
- const splitOutputs = changeOutputs.flatMap((output) => splitChangeOutput(output, computeMinimumCoinQuantity));
101
+ const splitOutputs = changeOutputs.flatMap((output) => splitChangeOutput(output, computeMinimumCoinQuantity, fee));
92
102
  const sortedOutputs = splitOutputs.sort(util_1.sortByCoins).filter((out) => out.value.coins > 0n);
93
103
  if (sortedOutputs && sortedOutputs.length > 0)
94
104
  sortedOutputs[0].value.assets = totalChangeAssets;
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/GreedySelection/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/GreedySelection/util.ts"],"names":[],"mappings":"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"}