@odatano/core 0.3.27 → 1.1.0

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.
Files changed (38) hide show
  1. package/@cds-models/CardanoSignService/index.d.ts +6 -0
  2. package/@cds-models/CardanoSignService/index.d.ts.map +1 -1
  3. package/@cds-models/CardanoSignService/index.js.map +1 -1
  4. package/@cds-models/CardanoSignService/index.ts +1 -0
  5. package/@cds-models/CardanoTransactionService/index.d.ts +18 -6
  6. package/@cds-models/CardanoTransactionService/index.d.ts.map +1 -1
  7. package/@cds-models/CardanoTransactionService/index.js.map +1 -1
  8. package/@cds-models/CardanoTransactionService/index.ts +10 -9
  9. package/@cds-models/odatano/cardano/index.d.ts +6 -0
  10. package/@cds-models/odatano/cardano/index.d.ts.map +1 -1
  11. package/@cds-models/odatano/cardano/index.js.map +1 -1
  12. package/@cds-models/odatano/cardano/index.ts +1 -0
  13. package/README.md +6 -6
  14. package/db/schema.cds +4 -0
  15. package/package.json +1 -1
  16. package/srv/blockchain/backends/gerolamo-backend.d.ts.map +1 -0
  17. package/srv/blockchain/backends/gerolamo-backend.js +321 -0
  18. package/srv/blockchain/backends/gerolamo-backend.js.map +1 -0
  19. package/srv/blockchain/backends/koios-backend.d.ts.map +1 -1
  20. package/srv/blockchain/backends/koios-backend.js +19 -9
  21. package/srv/blockchain/backends/koios-backend.js.map +1 -1
  22. package/srv/blockchain/cardano-tx-builder.d.ts.map +1 -1
  23. package/srv/blockchain/cardano-tx-builder.js +93 -10
  24. package/srv/blockchain/cardano-tx-builder.js.map +1 -1
  25. package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -1
  26. package/srv/blockchain/transaction-building/buildooor-tx.js +55 -22
  27. package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -1
  28. package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -1
  29. package/srv/blockchain/transaction-building/csl-tx.js +87 -19
  30. package/srv/blockchain/transaction-building/csl-tx.js.map +1 -1
  31. package/srv/cardano-tx-service.cds +12 -3
  32. package/srv/cardano-tx-service.js +56 -6
  33. package/srv/cardano-tx-service.js.map +1 -1
  34. package/srv/utils/mappers.d.ts.map +1 -1
  35. package/srv/utils/mappers.js +1 -0
  36. package/srv/utils/mappers.js.map +1 -1
  37. package/srv/utils/types.d.ts.map +1 -1
  38. package/srv/utils/types.js.map +1 -1
@@ -74,7 +74,6 @@ class CSLTxBuilder {
74
74
  }
75
75
  const recipientAddress = CSL.Address.from_bech32(req.recipientAddress);
76
76
  const changeAddress = CSL.Address.from_bech32(req.changeAddress ?? req.senderAddress);
77
- const cslUtxos = this._mapMultiAssetUtxosToCslUtxos(ctx.utxos);
78
77
  const txb = CSL.TransactionBuilder.new(this.txBuilderConfig);
79
78
  // Build output value (lovelace + optional native assets)
80
79
  const outValue = CSL.Value.new(CSL.BigNum.from_str(String(req.lovelaceAmount)));
@@ -84,12 +83,19 @@ class CSLTxBuilder {
84
83
  const out = CSL.TransactionOutput.new(recipientAddress, outValue);
85
84
  this._attachInlineDatum(out, req.outputDatum);
86
85
  txb.add_output(out);
86
+ // Partition forced vs candidate UTxOs. Forced inputs are committed first; coin
87
+ // selection then appends additional candidates via add_inputs_from().
88
+ const { forced, rest } = this._partitionForcedInputs(ctx.utxos, req.forceInputs);
89
+ if (forced.length > 0) {
90
+ txb.set_inputs(this._buildForcedInputsBuilder(forced));
91
+ }
92
+ const cslUtxos = this._mapMultiAssetUtxosToCslUtxos(rest);
87
93
  txb.add_inputs_from(cslUtxos, CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset);
88
94
  txb.add_change_if_needed(changeAddress);
89
95
  const unsignedTx = txb.build_tx();
90
96
  const txDetails = this._extractTxDetails(unsignedTx);
91
- logger.info(`Built unsigned transaction successfully.`);
92
- return this._buildResult(req, ctx, txDetails);
97
+ logger.info(`Built unsigned transaction successfully (${forced.length} forced inputs).`);
98
+ return this._buildResult(req, ctx, txDetails, { forcedInputsUsed: forced.length });
93
99
  }
94
100
  catch (err) {
95
101
  (0, tx_build_helper_1.mapBuilderError)(err);
@@ -99,7 +105,6 @@ class CSLTxBuilder {
99
105
  try {
100
106
  const recipientAddress = CSL.Address.from_bech32(req.recipientAddress);
101
107
  const changeAddress = CSL.Address.from_bech32(req.changeAddress ?? req.senderAddress);
102
- const cslUtxos = this._mapMultiAssetUtxosToCslUtxos(ctx.utxos);
103
108
  const txb = CSL.TransactionBuilder.new(this.txBuilderConfig);
104
109
  const amount = CSL.BigNum.from_str(String(req.lovelaceAmount));
105
110
  const outValue = CSL.Value.new(amount);
@@ -109,12 +114,18 @@ class CSLTxBuilder {
109
114
  const metadata = this._mapOdatanoMetadataToCSLMetadata(req.metadataJson);
110
115
  txb.set_metadata(metadata);
111
116
  }
117
+ // Partition forced vs candidate UTxOs
118
+ const { forced, rest } = this._partitionForcedInputs(ctx.utxos, req.forceInputs);
119
+ if (forced.length > 0) {
120
+ txb.set_inputs(this._buildForcedInputsBuilder(forced));
121
+ }
122
+ const cslUtxos = this._mapMultiAssetUtxosToCslUtxos(rest);
112
123
  txb.add_inputs_from(cslUtxos, CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset);
113
124
  txb.add_change_if_needed(changeAddress);
114
125
  const unsignedTx = txb.build_tx();
115
126
  const txDetails = this._extractTxDetails(unsignedTx);
116
- logger.info(`Built unsigned transaction with metadata successfully.`);
117
- return this._buildResult(req, ctx, txDetails);
127
+ logger.info(`Built unsigned transaction with metadata successfully (${forced.length} forced inputs).`);
128
+ return this._buildResult(req, ctx, txDetails, { forcedInputsUsed: forced.length });
118
129
  }
119
130
  catch (err) {
120
131
  (0, tx_build_helper_1.mapBuilderError)(err);
@@ -127,7 +138,7 @@ class CSLTxBuilder {
127
138
  const txDetails = this._extractTxDetails(unsignedTx);
128
139
  const { hashHex: scriptHash } = this._computeScriptHash(req.mintingPolicyScript);
129
140
  logger.info(`Built unsigned minting transaction successfully. Fee: ${txDetails.feeLovelace}`);
130
- return this._buildResult(req, ctx, txDetails, { scriptHash });
141
+ return this._buildResult(req, ctx, txDetails, { scriptHash, forcedInputsUsed: (req.forceInputs ?? []).length });
131
142
  }
132
143
  catch (error) {
133
144
  logger.error(`BuildUnsignedMintTransaction error: ${error?.message || error}`);
@@ -177,17 +188,27 @@ class CSLTxBuilder {
177
188
  const recipientOutput = CSL.TransactionOutput.new(recipientAddress, finalOutputValue);
178
189
  this._attachInlineDatum(recipientOutput, req.inlineDatum);
179
190
  txb.add_output(recipientOutput);
180
- // Collateral + funding UTxO separation
181
- const { fundingUtxos } = this._setupCollateral(txb, ctx.utxos);
191
+ // Partition forced vs candidate UTxOs. Forced inputs are always consumed; collateral
192
+ // + coin selection operate on candidates only.
193
+ const { forced, rest } = this._partitionForcedInputs(ctx.utxos, req.forceInputs);
194
+ // Collateral + funding UTxO separation (from candidates only)
195
+ const { fundingUtxos } = this._setupCollateral(txb, rest);
182
196
  // Greedy coin selection: only include funding UTxOs until we have enough ADA.
183
197
  // We still add inputs explicitly (not via add_inputs_from) because CSL does not
184
198
  // properly forward native tokens from selected inputs to the change output
185
199
  // during Plutus minting transactions, causing ValueNotConservedUTxO.
186
200
  const requiredLovelace = BigInt(req.lovelaceAmount) + const_1.COLLATERAL_LOVELACE; // output + buffer for fee + min change
187
- const selectedFundingUtxos = this._selectMinimalUtxos(fundingUtxos, requiredLovelace);
188
- logger.debug(`Coin selection: ${selectedFundingUtxos.length}/${fundingUtxos.length} UTxOs selected for CSL mint`);
201
+ // Subtract lovelace already contributed by forced inputs from the coin-selection target
202
+ const forcedLovelace = forced.reduce((sum, u) => sum + BigInt((0, tx_build_helper_1.getLovelace)(u)), 0n);
203
+ const remainingLovelace = requiredLovelace > forcedLovelace ? requiredLovelace - forcedLovelace : 0n;
204
+ const selectedFundingUtxos = remainingLovelace > 0n
205
+ ? this._selectMinimalUtxos(fundingUtxos, remainingLovelace)
206
+ : [];
207
+ logger.debug(`Coin selection: ${selectedFundingUtxos.length}/${fundingUtxos.length} candidate UTxOs selected (${forced.length} forced) for CSL mint`);
208
+ // Combined input set: forced + selected funding (forced first for stable ordering)
209
+ const allInputUtxos = [...forced, ...selectedFundingUtxos];
189
210
  const fundingInputsBuilder = CSL.TxInputsBuilder.new();
190
- for (const u of selectedFundingUtxos) {
211
+ for (const u of allInputUtxos) {
191
212
  const fTxHash = CSL.TransactionHash.from_bytes(Buffer.from(u.txHash, 'hex'));
192
213
  const fInput = CSL.TransactionInput.new(fTxHash, u.outputIndex);
193
214
  const fAddress = CSL.Address.from_bech32(u.address);
@@ -195,11 +216,11 @@ class CSLTxBuilder {
195
216
  fundingInputsBuilder.add_regular_input(fAddress, fInput, fValue);
196
217
  }
197
218
  txb.set_inputs(fundingInputsBuilder);
198
- // Create explicit change output for native tokens from selected funding UTxOs.
219
+ // Create explicit change output for native tokens from input UTxOs.
199
220
  // CSL's add_change_if_needed does not forward native tokens from inputs
200
221
  // to the change output during Plutus minting transactions.
201
222
  const fundingNativeAssets = new Map();
202
- for (const u of selectedFundingUtxos) {
223
+ for (const u of allInputUtxos) {
203
224
  for (const a of u.amount) {
204
225
  if (a.unit.toLowerCase() === 'lovelace')
205
226
  continue;
@@ -261,8 +282,10 @@ class CSLTxBuilder {
261
282
  const unsignedTx = this._buildPlutusSpendTx(req, ctx, finalExUnits);
262
283
  const txDetails = this._extractTxDetails(unsignedTx);
263
284
  const { hashHex: scriptHash } = this._computeScriptHash(req.plutusScriptExecution.validatorScript);
285
+ const scriptUtxoRef = req.plutusScriptExecution.scriptUtxo;
286
+ const forcedUsed = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex)).length;
264
287
  logger.info(`Built unsigned Plutus spending transaction. Fee: ${txDetails.feeLovelace}`);
265
- return this._buildResult(req, ctx, txDetails, { scriptHash });
288
+ return this._buildResult(req, ctx, txDetails, { scriptHash, forcedInputsUsed: forcedUsed });
266
289
  }
267
290
  catch (error) {
268
291
  logger.error(`buildUnsignedPlutusSpendTransaction error: ${error?.message || error}`);
@@ -305,12 +328,23 @@ class CSLTxBuilder {
305
328
  plutusWitness = CSL.PlutusWitness.new_with_ref_without_datum(scriptSource, redeemer);
306
329
  }
307
330
  scriptInputsBuilder.add_plutus_script_input(plutusWitness, scriptInput, scriptUtxoValue);
308
- txb.set_inputs(scriptInputsBuilder);
309
331
  this._addRequiredSigners(txb, req.requiredSigners);
310
332
  // Separate sender UTxOs (excluding script UTxO)
311
333
  const senderUtxos = ctx.utxos.filter(u => !(u.txHash === scriptUtxoRef.txHash && u.outputIndex === scriptUtxoRef.outputIndex));
312
- // Collateral + funding UTxO separation (from sender UTxOs only)
313
- const { fundingUtxos } = this._setupCollateral(txb, senderUtxos);
334
+ // Partition forced inputs (excluding any ref that matches the script UTxO — silently ignored)
335
+ const forceInputsFiltered = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex));
336
+ const { forced, rest } = this._partitionForcedInputs(senderUtxos, forceInputsFiltered);
337
+ // Add forced UTxOs to the inputs builder alongside the script input
338
+ for (const u of forced) {
339
+ const fTxHash = CSL.TransactionHash.from_bytes(Buffer.from(u.txHash, 'hex'));
340
+ const fInput = CSL.TransactionInput.new(fTxHash, u.outputIndex);
341
+ const fAddress = CSL.Address.from_bech32(u.address);
342
+ const fValue = this._buildCslValue((0, tx_build_helper_1.getLovelace)(u), u.amount);
343
+ scriptInputsBuilder.add_regular_input(fAddress, fInput, fValue);
344
+ }
345
+ txb.set_inputs(scriptInputsBuilder);
346
+ // Collateral + funding UTxO separation (from candidate sender UTxOs only)
347
+ const { fundingUtxos } = this._setupCollateral(txb, rest);
314
348
  // Create output for recipient with multi-assets from the script UTxO
315
349
  const outputValue = CSL.Value.new(CSL.BigNum.from_str(String(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE)));
316
350
  if (scriptNonAdaAssets.length > 0) {
@@ -319,7 +353,7 @@ class CSLTxBuilder {
319
353
  const recipientOutput = CSL.TransactionOutput.new(recipientAddress, outputValue);
320
354
  this._attachInlineDatum(recipientOutput, req.inlineDatum);
321
355
  txb.add_output(recipientOutput);
322
- // Coin selection from funding UTxOs
356
+ // Coin selection from candidate funding UTxOs
323
357
  const cslFundingUtxos = this._mapMultiAssetUtxosToCslUtxos(fundingUtxos);
324
358
  txb.add_inputs_from(cslFundingUtxos, CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset);
325
359
  const costModels = this._createCostModels('v3');
@@ -509,6 +543,40 @@ class CSLTxBuilder {
509
543
  }
510
544
  return defaultUnits;
511
545
  }
546
+ /**
547
+ * Split UTxOs into forced inputs (must be consumed) and remaining candidates.
548
+ * Refs in forceInputs not present in utxos are silently ignored.
549
+ */
550
+ _partitionForcedInputs(utxos, forceInputs) {
551
+ if (!forceInputs || forceInputs.length === 0)
552
+ return { forced: [], rest: utxos };
553
+ const forcedKeys = new Set(forceInputs.map(r => `${r.txHash}#${r.outputIndex}`));
554
+ const forced = [];
555
+ const rest = [];
556
+ for (const u of utxos) {
557
+ if (forcedKeys.has(`${u.txHash}#${u.outputIndex}`))
558
+ forced.push(u);
559
+ else
560
+ rest.push(u);
561
+ }
562
+ return { forced, rest };
563
+ }
564
+ /**
565
+ * Build a TxInputsBuilder seeded with the given forced UTxOs. Caller is responsible
566
+ * for wiring the returned builder to the TransactionBuilder via set_inputs(). Coin
567
+ * selection (add_inputs_from) then appends additional candidates on top.
568
+ */
569
+ _buildForcedInputsBuilder(forced) {
570
+ const builder = CSL.TxInputsBuilder.new();
571
+ for (const u of forced) {
572
+ const txHash = CSL.TransactionHash.from_bytes(Buffer.from(u.txHash, 'hex'));
573
+ const input = CSL.TransactionInput.new(txHash, u.outputIndex);
574
+ const address = CSL.Address.from_bech32(u.address);
575
+ const value = this._buildCslValue((0, tx_build_helper_1.getLovelace)(u), u.amount);
576
+ builder.add_regular_input(address, input, value);
577
+ }
578
+ return builder;
579
+ }
512
580
  /**
513
581
  * Find an ADA-only UTxO for collateral, set it on the builder,
514
582
  * and return the remaining funding UTxOs with collateral excluded.
@@ -1 +1 @@
1
- {"version":3,"file":"csl-tx.js","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csl-tx.js","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,10 @@ service CardanoTransactionService @(impl: './cardano-tx-service') {
88
88
  outputDatumJson: String,
89
89
  @title: 'Assets JSON'
90
90
  @description: 'Optional JSON array of native assets to include in the output ([{"unit":"policyId+assetName","quantity":"amount"}]). Use when locking tokens at a script address.'
91
- assetsJson: String) returns TransactionBuilds;
91
+ assetsJson: String,
92
+ @title: 'Force Inputs JSON'
93
+ @description: 'Optional JSON array of {txHash, outputIndex} UTxOs that MUST be consumed as inputs. Added before coin selection. Use for one-shot minting seeds, token-carrying UTxOs, or deterministic input control.'
94
+ forceInputsJson: String) returns TransactionBuilds;
92
95
 
93
96
  @title : 'Build Transaction with Metadata'
94
97
  @description: 'Build a transaction with custom metadata from sender to recipient with specified amount and change address'
@@ -166,7 +169,10 @@ service CardanoTransactionService @(impl: './cardano-tx-service') {
166
169
  mintRedeemerJson: String,
167
170
  @title: 'Lock on Script Address'
168
171
  @description: 'When true and scriptParamsJson is provided, routes the output to the enterprise script address derived from the applied script hash instead of recipientAddress. Returns scriptAddress in the response.'
169
- lockOnScript: Boolean) returns TransactionBuilds;
172
+ lockOnScript: Boolean,
173
+ @title: 'Force Inputs JSON'
174
+ @description: 'Optional JSON array of {txHash, outputIndex} UTxOs that MUST be consumed as inputs. Added before coin selection. Use for one-shot minting seeds, token-carrying UTxOs, or deterministic input control.'
175
+ forceInputsJson: String) returns TransactionBuilds;
170
176
 
171
177
  @title : 'Get Build Details'
172
178
  @description: 'Retrieve transaction build details using the Build Id'
@@ -236,7 +242,10 @@ service CardanoTransactionService @(impl: './cardano-tx-service') {
236
242
  inlineDatumJson: String,
237
243
  @title: 'Lock on Script Address'
238
244
  @description: 'When true and scriptParamsJson is provided, routes the output to the enterprise script address derived from the applied script hash instead of recipientAddress. Returns scriptAddress in the response.'
239
- lockOnScript: Boolean) returns TransactionBuilds;
245
+ lockOnScript: Boolean,
246
+ @title: 'Force Inputs JSON'
247
+ @description: 'Optional JSON array of {txHash, outputIndex} UTxOs that MUST be consumed as inputs. Added before coin selection. Use for one-shot minting seeds, token-carrying UTxOs, or deterministic input control.'
248
+ forceInputsJson: String) returns TransactionBuilds;
240
249
 
241
250
  @title : 'Set Collateral'
242
251
  @description: 'Ensure a dedicated ADA-only collateral UTxO exists for Plutus transactions. Checks if the address has at least 2 UTxOs with >= 5 ADA each. If not, builds a self-send transaction to create a 5 ADA collateral UTxO.'
@@ -14,6 +14,36 @@ const server_1 = require("./server");
14
14
  const const_1 = require("./utils/const");
15
15
  const { SELECT, UPDATE, DELETE: DELETE_FROM } = cds_1.default.ql;
16
16
  const logger = cds_1.default.log('CardanoTxService');
17
+ /**
18
+ * Parse and validate forceInputsJson. Returns { parsed } on success (possibly undefined
19
+ * for empty array → treated as no-op) or { error } on validation failure.
20
+ */
21
+ function parseForceInputs(forceInputsJson) {
22
+ if (!forceInputsJson)
23
+ return { parsed: undefined };
24
+ const jsonResult = (0, validators_1.validateJsonWithLimits)(forceInputsJson, 'forceInputsJson');
25
+ if (!jsonResult.valid)
26
+ return { error: jsonResult.error };
27
+ if (!Array.isArray(jsonResult.parsed))
28
+ return { error: 'forceInputsJson must be a JSON array' };
29
+ if (jsonResult.parsed.length === 0)
30
+ return { parsed: undefined };
31
+ const refs = [];
32
+ for (const entry of jsonResult.parsed) {
33
+ if (!entry || typeof entry !== 'object') {
34
+ return { error: 'Each forceInputs entry must be an object with txHash and outputIndex' };
35
+ }
36
+ if (!(0, validators_1.isTxHash)(entry.txHash)) {
37
+ return { error: 'Each forceInputs entry must have a valid 64-hex txHash' };
38
+ }
39
+ const idx = entry.outputIndex;
40
+ if (!Number.isInteger(idx) || idx < 0) {
41
+ return { error: 'Each forceInputs entry must have a non-negative integer outputIndex' };
42
+ }
43
+ refs.push({ txHash: entry.txHash, outputIndex: idx });
44
+ }
45
+ return { parsed: refs };
46
+ }
17
47
  /**
18
48
  * Cardano Transaction Service Implementation
19
49
  * Handles transaction building and submission operations & some additional data queries.
@@ -28,7 +58,7 @@ module.exports = (srv) => {
28
58
  * @returns {TransactionBuild} Transaction build details
29
59
  */
30
60
  srv.on('BuildSimpleAdaTransaction', async (req) => {
31
- const { senderAddress, recipientAddress, lovelaceAmount, outputDatumJson, assetsJson } = req.data;
61
+ const { senderAddress, recipientAddress, lovelaceAmount, outputDatumJson, assetsJson, forceInputsJson } = req.data;
32
62
  // validate inputs
33
63
  const errors = (0, validators_1.validateTransactionInputs)({ senderAddress, recipientAddress, lovelaceAmount }, ['senderAddress', 'recipientAddress', 'lovelaceAmount']);
34
64
  (0, errors_1.throwIfValidationErrors)(req, 'BuildSimpleAdaTransaction', errors);
@@ -37,6 +67,12 @@ module.exports = (srv) => {
37
67
  }
38
68
  // parse optional output datum
39
69
  const cleanData = { ...req.data };
70
+ // parse optional forceInputsJson
71
+ const forceInputsResult = parseForceInputs(forceInputsJson);
72
+ if (forceInputsResult.error)
73
+ return (0, errors_1.rejectInvalid)(req, 'BuildSimpleAdaTransaction', forceInputsResult.error, 'forceInputsJson');
74
+ cleanData.forceInputs = forceInputsResult.parsed;
75
+ delete cleanData.forceInputsJson;
40
76
  if (outputDatumJson) {
41
77
  const jsonResult = (0, validators_1.validateJsonWithLimits)(outputDatumJson, 'outputDatumJson');
42
78
  if (!jsonResult.valid)
@@ -124,7 +160,7 @@ module.exports = (srv) => {
124
160
  * @returns {TransactionBuild} Transaction build details
125
161
  */
126
162
  srv.on('BuildMintTransaction', async (req) => {
127
- const { senderAddress, recipientAddress, lovelaceAmount, mintActionsJson, mintingPolicyScript, requiredSignersJson, scriptParamsJson, inlineDatumJson, mintRedeemerJson, lockOnScript } = req.data;
163
+ const { senderAddress, recipientAddress, lovelaceAmount, mintActionsJson, mintingPolicyScript, requiredSignersJson, scriptParamsJson, inlineDatumJson, mintRedeemerJson, lockOnScript, forceInputsJson } = req.data;
128
164
  // validate inputs (includes JSON and CBOR validation)
129
165
  const errors = (0, validators_1.validateTransactionInputs)({ senderAddress, recipientAddress, mintActionsJson, mintingPolicyScript }, ['senderAddress', 'recipientAddress', 'mintActionsJson', 'mintingPolicyScript']);
130
166
  (0, errors_1.throwIfValidationErrors)(req, 'BuildMintTransaction', errors);
@@ -200,9 +236,14 @@ module.exports = (srv) => {
200
236
  if (lockOnScript && (!scriptParams || scriptParams.length === 0)) {
201
237
  return (0, errors_1.rejectInvalid)(req, 'BuildMintTransaction', 'lockOnScript requires scriptParamsJson to derive script address', 'lockOnScript');
202
238
  }
239
+ // Parse and validate optional forceInputsJson
240
+ const forceInputsResult = parseForceInputs(forceInputsJson);
241
+ if (forceInputsResult.error)
242
+ return (0, errors_1.rejectInvalid)(req, 'BuildMintTransaction', forceInputsResult.error, 'forceInputsJson');
243
+ const forceInputs = forceInputsResult.parsed;
203
244
  // handle the request / building the transaction / indexing the build result / returning build details
204
245
  return (0, backend_request_handler_1.handleRequest)(req, async (db) => {
205
- logger.debug({ senderAddress, recipientAddress, lovelaceAmount, mintActions: parsedMintActions }, 'Building minting transaction');
246
+ logger.debug({ senderAddress, recipientAddress, lovelaceAmount, mintActions: parsedMintActions, forceInputs: forceInputs?.length ?? 0 }, 'Building minting transaction');
206
247
  // Create clean request object with parsed mintActions (remove mintActionsJson, add mintActions)
207
248
  const cleanData = { ...req.data };
208
249
  delete cleanData.mintActionsJson;
@@ -211,6 +252,7 @@ module.exports = (srv) => {
211
252
  delete cleanData.inlineDatumJson;
212
253
  delete cleanData.mintRedeemerJson;
213
254
  delete cleanData.lockOnScript;
255
+ delete cleanData.forceInputsJson;
214
256
  // Apply script parameters if provided (for parameterized validators)
215
257
  let finalMintingPolicyScript = mintingPolicyScript;
216
258
  if (scriptParams && scriptParams.length > 0) {
@@ -236,7 +278,8 @@ module.exports = (srv) => {
236
278
  mintingPolicyScript: finalMintingPolicyScript,
237
279
  requiredSigners,
238
280
  inlineDatum,
239
- mintRedeemer
281
+ mintRedeemer,
282
+ forceInputs
240
283
  });
241
284
  // Post-build: compute CIP-14 fingerprint and scriptAddress
242
285
  if (buildResult.scriptHash) {
@@ -268,7 +311,7 @@ module.exports = (srv) => {
268
311
  * @returns {TransactionBuild} Transaction build details
269
312
  */
270
313
  srv.on('BuildPlutusSpendTransaction', async (req) => {
271
- const { senderAddress, recipientAddress, lovelaceAmount, validatorScript, scriptTxHash, scriptOutputIndex, redeemerJson, datumJson, requiredSignersJson, scriptParamsJson, inlineDatumJson, lockOnScript } = req.data;
314
+ const { senderAddress, recipientAddress, lovelaceAmount, validatorScript, scriptTxHash, scriptOutputIndex, redeemerJson, datumJson, requiredSignersJson, scriptParamsJson, inlineDatumJson, lockOnScript, forceInputsJson } = req.data;
272
315
  // Validate inputs
273
316
  const errors = (0, validators_1.validateTransactionInputs)({ senderAddress, recipientAddress, validatorScript, scriptTxHash, scriptOutputIndex, redeemerJson }, ['senderAddress', 'recipientAddress', 'validatorScript', 'scriptTxHash', 'redeemerJson']);
274
317
  (0, errors_1.throwIfValidationErrors)(req, 'BuildPlutusSpendTransaction', errors);
@@ -322,6 +365,11 @@ module.exports = (srv) => {
322
365
  if (lockOnScript && (!scriptParams || scriptParams.length === 0)) {
323
366
  return (0, errors_1.rejectInvalid)(req, 'BuildPlutusSpendTransaction', 'lockOnScript requires scriptParamsJson to derive script address', 'lockOnScript');
324
367
  }
368
+ // Parse and validate optional forceInputsJson
369
+ const forceInputsResult = parseForceInputs(forceInputsJson);
370
+ if (forceInputsResult.error)
371
+ return (0, errors_1.rejectInvalid)(req, 'BuildPlutusSpendTransaction', forceInputsResult.error, 'forceInputsJson');
372
+ const forceInputs = forceInputsResult.parsed;
325
373
  return (0, backend_request_handler_1.handleRequest)(req, async (db) => {
326
374
  logger.debug({ senderAddress, recipientAddress, lovelaceAmount, scriptTxHash, scriptOutputIndex }, 'Building Plutus spending transaction');
327
375
  // Apply script parameters if provided (for parameterized validators)
@@ -341,12 +389,14 @@ module.exports = (srv) => {
341
389
  datum: parsedDatum,
342
390
  },
343
391
  requiredSigners,
344
- inlineDatum
392
+ inlineDatum,
393
+ forceInputs
345
394
  };
346
395
  delete cleanData.requiredSignersJson;
347
396
  delete cleanData.scriptParamsJson;
348
397
  delete cleanData.inlineDatumJson;
349
398
  delete cleanData.lockOnScript;
399
+ delete cleanData.forceInputsJson;
350
400
  // lockOnScript: route continuing output to enterprise script address
351
401
  if (lockOnScript && scriptParams && scriptParams.length > 0) {
352
402
  const appliedScript = cardano_ledger_ts_1.Script.fromCbor(Buffer.from(finalValidatorScript, 'hex'));