@odatano/core 1.1.0 → 1.2.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.
- package/@cds-models/CardanoSignService/index.d.ts +6 -0
- package/@cds-models/CardanoSignService/index.d.ts.map +1 -1
- package/@cds-models/CardanoSignService/index.js.map +1 -1
- package/@cds-models/CardanoSignService/index.ts +1 -0
- package/@cds-models/CardanoTransactionService/index.d.ts +16 -2
- package/@cds-models/CardanoTransactionService/index.d.ts.map +1 -1
- package/@cds-models/CardanoTransactionService/index.js.map +1 -1
- package/@cds-models/CardanoTransactionService/index.ts +4 -3
- package/@cds-models/odatano/cardano/index.d.ts +6 -0
- package/@cds-models/odatano/cardano/index.d.ts.map +1 -1
- package/@cds-models/odatano/cardano/index.js.map +1 -1
- package/@cds-models/odatano/cardano/index.ts +1 -0
- package/db/schema.cds +4 -0
- package/package.json +1 -1
- package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -1
- package/srv/blockchain/transaction-building/buildooor-tx.js +166 -38
- package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -1
- package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -1
- package/srv/blockchain/transaction-building/csl-tx.js +93 -2
- package/srv/blockchain/transaction-building/csl-tx.js.map +1 -1
- package/srv/cardano-tx-service.cds +13 -1
- package/srv/cardano-tx-service.d.ts.map +1 -1
- package/srv/cardano-tx-service.js +120 -2
- package/srv/cardano-tx-service.js.map +1 -1
- package/srv/utils/mappers.d.ts.map +1 -1
- package/srv/utils/mappers.js +1 -0
- package/srv/utils/mappers.js.map +1 -1
- package/srv/utils/plutus-placeholders.d.ts.map +1 -0
- package/srv/utils/plutus-placeholders.js +87 -0
- package/srv/utils/plutus-placeholders.js.map +1 -0
- package/srv/utils/types.d.ts.map +1 -1
- package/srv/utils/types.js.map +1 -1
|
@@ -8,6 +8,7 @@ const buildooor_1 = require("@harmoniclabs/buildooor");
|
|
|
8
8
|
const uint8array_utils_1 = require("@harmoniclabs/uint8array-utils");
|
|
9
9
|
const tx_build_helper_1 = require("../../utils/tx-build-helper");
|
|
10
10
|
const errors_1 = require("../../utils/errors");
|
|
11
|
+
const plutus_placeholders_1 = require("../../utils/plutus-placeholders");
|
|
11
12
|
const cds_1 = __importDefault(require("@sap/cds"));
|
|
12
13
|
const cardano_ledger_ts_1 = require("@harmoniclabs/cardano-ledger-ts");
|
|
13
14
|
const TxMetadata_1 = require("@harmoniclabs/cardano-ledger-ts/dist/tx/metadata/TxMetadata");
|
|
@@ -97,24 +98,6 @@ class BuildooorTxBuilder {
|
|
|
97
98
|
// Parse the minting policy script once
|
|
98
99
|
const scriptBytes = Buffer.from(req.mintingPolicyScript, 'hex');
|
|
99
100
|
const script = cardano_ledger_ts_1.Script.fromCbor(scriptBytes);
|
|
100
|
-
// Helper to build mints array with specified execution units
|
|
101
|
-
const buildMints = (exUnits) => {
|
|
102
|
-
const mints = [];
|
|
103
|
-
for (const mintAction of req.mintActions) {
|
|
104
|
-
const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(mintAction.assetUnit);
|
|
105
|
-
mints.push({
|
|
106
|
-
value: cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), BigInt(mintAction.quantity)),
|
|
107
|
-
script: {
|
|
108
|
-
inline: script,
|
|
109
|
-
redeemer: req.mintRedeemer
|
|
110
|
-
? (0, tx_build_helper_1.jsonToPlutusData)(req.mintRedeemer)
|
|
111
|
-
: new plutus_data_1.DataI(mintAction.redeemer ?? 0),
|
|
112
|
-
executionUnits: exUnits
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return mints;
|
|
117
|
-
};
|
|
118
101
|
// Calculate total mint value for output (only positive quantities - mints, not burns)
|
|
119
102
|
let mintValue = cardano_ledger_ts_1.Value.lovelaces(0n);
|
|
120
103
|
for (const mintAction of req.mintActions) {
|
|
@@ -124,10 +107,6 @@ class BuildooorTxBuilder {
|
|
|
124
107
|
mintValue = cardano_ledger_ts_1.Value.add(mintValue, cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), quantity));
|
|
125
108
|
}
|
|
126
109
|
}
|
|
127
|
-
// Build output — recipient gets the minted assets + min ADA
|
|
128
|
-
let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount));
|
|
129
|
-
outputValue = cardano_ledger_ts_1.Value.add(outputValue, mintValue);
|
|
130
|
-
const outputs = [this._buildTxOut(recipientAddress, outputValue, req.inlineDatum)];
|
|
131
110
|
// Partition forced vs candidate UTxOs. Forced inputs are already committed;
|
|
132
111
|
// collateral and coin selection operate on the remainder only.
|
|
133
112
|
const { forced, rest } = this._partitionForcedInputs(ctx.utxos, req.forceInputs);
|
|
@@ -141,6 +120,40 @@ class BuildooorTxBuilder {
|
|
|
141
120
|
const selectedFunding = this.txBuilder.keepRelevant(requiredFundingValue, allFundingInputs);
|
|
142
121
|
const inputs = [...forcedInputs, ...selectedFunding];
|
|
143
122
|
logger.debug(`Coin selection: ${selectedFunding.length}/${allFundingInputs.length} UTxOs selected (${forcedInputs.length} forced) for mint`);
|
|
123
|
+
// FR-3: resolve __INPUT_IDX__ placeholders in mintRedeemer + inlineDatum after final input order is known.
|
|
124
|
+
const sortedInputs = (0, plutus_placeholders_1.sortInputsLikeBuildooor)([
|
|
125
|
+
...forced.map(u => ({ txHash: u.txHash, outputIndex: u.outputIndex })),
|
|
126
|
+
...this._extractFundingRefs(selectedFunding)
|
|
127
|
+
]);
|
|
128
|
+
const resolveCtx = { sortedInputs };
|
|
129
|
+
const resolvedMintRedeemer = req.mintRedeemer
|
|
130
|
+
? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.mintRedeemer, resolveCtx)
|
|
131
|
+
: undefined;
|
|
132
|
+
const resolvedInlineDatum = req.inlineDatum
|
|
133
|
+
? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.inlineDatum, resolveCtx)
|
|
134
|
+
: undefined;
|
|
135
|
+
// Build output — recipient gets the minted assets + min ADA
|
|
136
|
+
let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount));
|
|
137
|
+
outputValue = cardano_ledger_ts_1.Value.add(outputValue, mintValue);
|
|
138
|
+
const outputs = [this._buildTxOut(recipientAddress, outputValue, resolvedInlineDatum)];
|
|
139
|
+
// Helper to build mints array with specified execution units (uses pre-resolved redeemer)
|
|
140
|
+
const buildMints = (exUnits) => {
|
|
141
|
+
const mints = [];
|
|
142
|
+
for (const mintAction of req.mintActions) {
|
|
143
|
+
const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(mintAction.assetUnit);
|
|
144
|
+
mints.push({
|
|
145
|
+
value: cardano_ledger_ts_1.Value.singleAsset(script.hash, Buffer.from(assetName, 'hex'), BigInt(mintAction.quantity)),
|
|
146
|
+
script: {
|
|
147
|
+
inline: script,
|
|
148
|
+
redeemer: resolvedMintRedeemer
|
|
149
|
+
? (0, tx_build_helper_1.jsonToPlutusData)(resolvedMintRedeemer)
|
|
150
|
+
: new plutus_data_1.DataI(mintAction.redeemer ?? 0),
|
|
151
|
+
executionUnits: exUnits
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return mints;
|
|
156
|
+
};
|
|
144
157
|
// Evaluate execution units
|
|
145
158
|
const finalExUnits = await this._evaluateExUnits(async () => {
|
|
146
159
|
const evalTx = await this.txBuilder.build({
|
|
@@ -168,17 +181,11 @@ class BuildooorTxBuilder {
|
|
|
168
181
|
// Parse the validator script
|
|
169
182
|
const scriptBytes = Buffer.from(plutusScriptExecution.validatorScript, 'hex');
|
|
170
183
|
const script = cardano_ledger_ts_1.Script.fromCbor(scriptBytes);
|
|
171
|
-
// Convert redeemer JSON to PlutusData
|
|
172
|
-
const redeemerData = (0, tx_build_helper_1.jsonToPlutusData)(plutusScriptExecution.redeemer);
|
|
173
|
-
// Determine datum: "inline" if no datum provided (assumes inline datum on UTxO), otherwise convert
|
|
174
184
|
if (!plutusScriptExecution.datum) {
|
|
175
185
|
// When no explicit datum is provided, the UTxO must have an inline datum.
|
|
176
186
|
// If neither exists, the Plutus validator will fail with a cryptic error.
|
|
177
187
|
logger.debug('No datumJson provided — expecting inline datum on script UTxO');
|
|
178
188
|
}
|
|
179
|
-
const datum = plutusScriptExecution.datum
|
|
180
|
-
? (0, tx_build_helper_1.jsonToPlutusData)(plutusScriptExecution.datum)
|
|
181
|
-
: "inline";
|
|
182
189
|
// Find the specific script UTxO in the provided context UTxOs
|
|
183
190
|
const scriptUtxoRef = plutusScriptExecution.scriptUtxo;
|
|
184
191
|
const scriptOdatanoUtxo = ctx.utxos.find(u => u.txHash === scriptUtxoRef.txHash && u.outputIndex === scriptUtxoRef.outputIndex);
|
|
@@ -190,13 +197,6 @@ class BuildooorTxBuilder {
|
|
|
190
197
|
const senderUtxos = ctx.utxos.filter(u => !(u.txHash === scriptUtxoRef.txHash && u.outputIndex === scriptUtxoRef.outputIndex));
|
|
191
198
|
const recipientAddress = cardano_ledger_ts_1.Address.fromString(req.recipientAddress);
|
|
192
199
|
const changeAddress = cardano_ledger_ts_1.Address.fromString(req.changeAddress ?? req.senderAddress);
|
|
193
|
-
// Build output — include multi-assets from script UTxO in continuing output
|
|
194
|
-
const scriptNonAdaAssets = scriptOdatanoUtxo.amount.filter(a => a.unit.toLowerCase() !== 'lovelace' && BigInt(a.quantity) > 0n);
|
|
195
|
-
let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
|
|
196
|
-
if (scriptNonAdaAssets.length > 0) {
|
|
197
|
-
outputValue = this._buildLedgerValue(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE), scriptOdatanoUtxo.amount);
|
|
198
|
-
}
|
|
199
|
-
const outputs = [this._buildTxOut(recipientAddress, outputValue, req.inlineDatum)];
|
|
200
200
|
// Partition forced inputs (excluding any ref that matches the script UTxO — silently ignored)
|
|
201
201
|
const forceInputsFiltered = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex));
|
|
202
202
|
const { forced, rest } = this._partitionForcedInputs(senderUtxos, forceInputsFiltered);
|
|
@@ -204,11 +204,78 @@ class BuildooorTxBuilder {
|
|
|
204
204
|
// Collateral + funding separation (from candidates only — forced inputs cannot double as collateral)
|
|
205
205
|
const { collateralUtxos, fundingUtxos } = this._setupCollateral(rest);
|
|
206
206
|
const fundingLedgerUtxos = fundingUtxos.map(utxo => this._mapMultiAssetUtxoToLedgerUtxo(utxo));
|
|
207
|
-
// Coin selection: funding UTxOs only need to cover fee + min change (script UTxO covers the output)
|
|
207
|
+
// Coin selection: funding UTxOs only need to cover fee + min change (script UTxO covers the output).
|
|
208
|
+
// Extra outputs (FR-2) add their lovelace + assets to the requirement; assets that the script UTxO
|
|
209
|
+
// already provides will net out, so over-requesting is harmless — keepRelevant prefers smaller sets.
|
|
208
210
|
const allFundingInputs = fundingLedgerUtxos.map(utxo => ({ utxo }));
|
|
209
|
-
|
|
211
|
+
let requiredFundingValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
|
|
212
|
+
if (req.extraOutputs && req.extraOutputs.length > 0) {
|
|
213
|
+
for (const extra of req.extraOutputs) {
|
|
214
|
+
requiredFundingValue = cardano_ledger_ts_1.Value.add(requiredFundingValue, this._buildLedgerValue(BigInt(extra.lovelaceAmount), extra.assets));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
210
217
|
const selectedFundingInputs = this.txBuilder.keepRelevant(requiredFundingValue, allFundingInputs);
|
|
211
218
|
logger.debug(`Coin selection: ${selectedFundingInputs.length}/${allFundingInputs.length} UTxOs selected (${forcedInputs.length} forced) for Plutus spend`);
|
|
219
|
+
// FR-3: compute the final input order (replicates Buildooor's lex sort) and resolve any
|
|
220
|
+
// __INPUT_IDX__ placeholders in redeemer / datum / output datums BEFORE PlutusData encoding.
|
|
221
|
+
const sortedInputs = this._computeSortedInputs(scriptUtxoRef, forced, this._extractFundingRefs(selectedFundingInputs));
|
|
222
|
+
const resolveCtx = { sortedInputs };
|
|
223
|
+
const resolvedRedeemer = (0, plutus_placeholders_1.resolveIndexPlaceholders)(plutusScriptExecution.redeemer, resolveCtx);
|
|
224
|
+
const redeemerData = (0, tx_build_helper_1.jsonToPlutusData)(resolvedRedeemer);
|
|
225
|
+
const datum = plutusScriptExecution.datum
|
|
226
|
+
? (0, tx_build_helper_1.jsonToPlutusData)((0, plutus_placeholders_1.resolveIndexPlaceholders)(plutusScriptExecution.datum, resolveCtx))
|
|
227
|
+
: "inline";
|
|
228
|
+
const resolvedPrimaryInlineDatum = req.inlineDatum
|
|
229
|
+
? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.inlineDatum, resolveCtx)
|
|
230
|
+
: undefined;
|
|
231
|
+
const resolvedExtraOutputs = this._resolveExtraOutputPlaceholders(req.extraOutputs, resolveCtx);
|
|
232
|
+
const resolvedMintRedeemer = req.mintRedeemer
|
|
233
|
+
? (0, plutus_placeholders_1.resolveIndexPlaceholders)(req.mintRedeemer, resolveCtx)
|
|
234
|
+
: undefined;
|
|
235
|
+
// FR-1: combined spend+mint flow. When mintActions are present, build mints alongside the spend input.
|
|
236
|
+
const hasMint = !!(req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript);
|
|
237
|
+
let mintScript;
|
|
238
|
+
let mintScriptHash;
|
|
239
|
+
if (hasMint) {
|
|
240
|
+
mintScript = cardano_ledger_ts_1.Script.fromCbor(Buffer.from(req.mintingPolicyScript, 'hex'));
|
|
241
|
+
mintScriptHash = mintScript.hash.toString();
|
|
242
|
+
}
|
|
243
|
+
// Build outputs — include multi-assets from script UTxO in continuing output
|
|
244
|
+
const scriptNonAdaAssets = scriptOdatanoUtxo.amount.filter(a => a.unit.toLowerCase() !== 'lovelace' && BigInt(a.quantity) > 0n);
|
|
245
|
+
let outputValue = cardano_ledger_ts_1.Value.lovelaces(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE));
|
|
246
|
+
if (scriptNonAdaAssets.length > 0) {
|
|
247
|
+
outputValue = this._buildLedgerValue(BigInt(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE), scriptOdatanoUtxo.amount);
|
|
248
|
+
}
|
|
249
|
+
// If mints are present and no extraOutputs handle the minted assets, attach positive mints to the primary output.
|
|
250
|
+
if (hasMint && (!resolvedExtraOutputs || resolvedExtraOutputs.length === 0)) {
|
|
251
|
+
for (const action of req.mintActions) {
|
|
252
|
+
const qty = BigInt(action.quantity);
|
|
253
|
+
if (qty > 0n) {
|
|
254
|
+
const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
|
|
255
|
+
outputValue = cardano_ledger_ts_1.Value.add(outputValue, cardano_ledger_ts_1.Value.singleAsset(mintScript.hash, Buffer.from(assetName, 'hex'), qty));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const outputs = [this._buildTxOut(recipientAddress, outputValue, resolvedPrimaryInlineDatum)];
|
|
260
|
+
// Append extra outputs (FR-2). Each is independently min-ADA checked so consumers
|
|
261
|
+
// get a clear, field-attributed error before Buildooor's coin selection runs.
|
|
262
|
+
this._appendExtraOutputs(outputs, resolvedExtraOutputs);
|
|
263
|
+
// Helper to build mints array (FR-1) with specified execution units
|
|
264
|
+
const buildMints = hasMint
|
|
265
|
+
? (exUnits) => req.mintActions.map(action => {
|
|
266
|
+
const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
|
|
267
|
+
return {
|
|
268
|
+
value: cardano_ledger_ts_1.Value.singleAsset(mintScript.hash, Buffer.from(assetName, 'hex'), BigInt(action.quantity)),
|
|
269
|
+
script: {
|
|
270
|
+
inline: mintScript,
|
|
271
|
+
redeemer: resolvedMintRedeemer
|
|
272
|
+
? (0, tx_build_helper_1.jsonToPlutusData)(resolvedMintRedeemer)
|
|
273
|
+
: new plutus_data_1.DataI(action.redeemer ?? 0),
|
|
274
|
+
executionUnits: exUnits
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
})
|
|
278
|
+
: undefined;
|
|
212
279
|
// Helper to build inputs with specified execution units
|
|
213
280
|
const buildInputs = (exUnits) => {
|
|
214
281
|
const scriptInput = {
|
|
@@ -221,6 +288,7 @@ class BuildooorTxBuilder {
|
|
|
221
288
|
const finalExUnits = await this._evaluateExUnits(async () => {
|
|
222
289
|
const evalTx = await this.txBuilder.build({
|
|
223
290
|
inputs: buildInputs(const_1.HIGH_EXECUTION_UNITS), outputs, changeAddress,
|
|
291
|
+
mints: buildMints?.(const_1.HIGH_EXECUTION_UNITS),
|
|
224
292
|
collaterals: collateralUtxos, requiredSigners: req.requiredSigners
|
|
225
293
|
});
|
|
226
294
|
if (!evalTx) {
|
|
@@ -230,12 +298,18 @@ class BuildooorTxBuilder {
|
|
|
230
298
|
}, ctx.evaluateTransaction);
|
|
231
299
|
// Build with final execution units + witness buffer
|
|
232
300
|
const inputs = buildInputs(finalExUnits);
|
|
301
|
+
const mints = buildMints?.(finalExUnits);
|
|
233
302
|
const tx = await this._buildWithWitnessBuffer({
|
|
234
303
|
inputs, outputs, changeAddress,
|
|
304
|
+
mints,
|
|
235
305
|
collaterals: collateralUtxos, requiredSigners: req.requiredSigners
|
|
236
306
|
});
|
|
237
307
|
logger.debug(`Built unsigned Plutus spending transaction successfully with fee: ${tx.body.fee.toString()}`);
|
|
238
|
-
return this._buildResult(req, ctx, this._extractTxDetails(tx), {
|
|
308
|
+
return this._buildResult(req, ctx, this._extractTxDetails(tx), {
|
|
309
|
+
scriptHash: script.hash.toString(),
|
|
310
|
+
mintScriptHash,
|
|
311
|
+
forcedInputsUsed: forcedInputs.length
|
|
312
|
+
});
|
|
239
313
|
}
|
|
240
314
|
catch (err) {
|
|
241
315
|
(0, tx_build_helper_1.mapBuilderError)(err);
|
|
@@ -379,6 +453,60 @@ class BuildooorTxBuilder {
|
|
|
379
453
|
}
|
|
380
454
|
return new cardano_ledger_ts_1.TxOut(params);
|
|
381
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Compute the post-sort input order so __INPUT_IDX__ placeholders (FR-3) resolve to the
|
|
458
|
+
* same indices Buildooor will assign during build(). Order: script-input first by convention,
|
|
459
|
+
* then forced + funding sorted lexicographically on (txHash, outputIndex).
|
|
460
|
+
* Buildooor sorts ALL inputs together; we mirror that exact behaviour via sortInputsLikeBuildooor.
|
|
461
|
+
*/
|
|
462
|
+
_computeSortedInputs(scriptUtxoRef, forcedUtxos, fundingRefs) {
|
|
463
|
+
const all = [
|
|
464
|
+
{ txHash: scriptUtxoRef.txHash, outputIndex: scriptUtxoRef.outputIndex },
|
|
465
|
+
...forcedUtxos.map(u => ({ txHash: u.txHash, outputIndex: u.outputIndex })),
|
|
466
|
+
...fundingRefs
|
|
467
|
+
];
|
|
468
|
+
return (0, plutus_placeholders_1.sortInputsLikeBuildooor)(all);
|
|
469
|
+
}
|
|
470
|
+
/** Extract InputRef list from the Buildooor-shaped funding inputs returned by keepRelevant. */
|
|
471
|
+
_extractFundingRefs(fundingInputs) {
|
|
472
|
+
return fundingInputs.map(i => ({
|
|
473
|
+
txHash: i.utxo.utxoRef.id.toString(),
|
|
474
|
+
outputIndex: i.utxo.utxoRef.index
|
|
475
|
+
}));
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Resolve __INPUT_IDX__ placeholders (FR-3) inside each extraOutput.inlineDatum.
|
|
479
|
+
* Returns a new array with resolved datums; non-datum fields pass through unchanged.
|
|
480
|
+
*/
|
|
481
|
+
_resolveExtraOutputPlaceholders(extraOutputs, resolveCtx) {
|
|
482
|
+
if (!extraOutputs || extraOutputs.length === 0)
|
|
483
|
+
return extraOutputs;
|
|
484
|
+
return extraOutputs.map(extra => ({
|
|
485
|
+
...extra,
|
|
486
|
+
inlineDatum: extra.inlineDatum
|
|
487
|
+
? (0, plutus_placeholders_1.resolveIndexPlaceholders)(extra.inlineDatum, resolveCtx)
|
|
488
|
+
: undefined
|
|
489
|
+
}));
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Append parsed extraOutputs (FR-2) to the outputs array, enforcing min-ADA per entry.
|
|
493
|
+
* Throws TransactionValidationError with the required min-ADA in the message so consumers
|
|
494
|
+
* can adjust without having to inspect Buildooor internals.
|
|
495
|
+
*/
|
|
496
|
+
_appendExtraOutputs(outputs, extraOutputs) {
|
|
497
|
+
if (!extraOutputs || extraOutputs.length === 0)
|
|
498
|
+
return;
|
|
499
|
+
for (let i = 0; i < extraOutputs.length; i++) {
|
|
500
|
+
const extra = extraOutputs[i];
|
|
501
|
+
const value = this._buildLedgerValue(BigInt(extra.lovelaceAmount), extra.assets);
|
|
502
|
+
const txOut = this._buildTxOut(cardano_ledger_ts_1.Address.fromString(extra.address), value, extra.inlineDatum);
|
|
503
|
+
const minLovelaces = this.txBuilder.getMinimumOutputLovelaces(txOut);
|
|
504
|
+
if (BigInt(extra.lovelaceAmount) < minLovelaces) {
|
|
505
|
+
throw new errors_1.TransactionValidationError(`extraOutputs[${i}].lovelaceAmount (${extra.lovelaceAmount}) is below required min-ADA ${minLovelaces.toString()} for the given address/assets/datum`);
|
|
506
|
+
}
|
|
507
|
+
outputs.push(txOut);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
382
510
|
//---------------------------------------------------------------------------
|
|
383
511
|
// UTxO Mapping & Configuration Helpers
|
|
384
512
|
//---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildooor-tx.js","sourceRoot":"","sources":["buildooor-tx.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildooor-tx.js","sourceRoot":"","sources":["buildooor-tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csl-tx.d.ts","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAkC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"csl-tx.d.ts","sourceRoot":"","sources":["csl-tx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAkC,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAKhM,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;GAEG;AACH,qBAAa,YAAa,YAAW,gBAAgB;IACnD,SAAgB,IAAI,kBAAkB;IACtC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,aAAa,CAAiB;IAEtC;;;;OAIG;IACU,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzG;;OAEG;IACU,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAsCvF,oCAAoC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCtG,4BAA4B,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB/G;;OAEG;IACH,OAAO,CAAC,YAAY;IAqJP,mCAAmC,CAAC,GAAG,EAAE,yBAAyB,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA2B7H;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+I3B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAqD5B,qEAAqE;IACrE,OAAO,CAAC,aAAa;IAIrB,wFAAwF;IACxF,OAAO,CAAC,mBAAmB;IAc3B,4DAA4D;IAC5D,OAAO,CAAC,cAAc;IAStB,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IA6BzB,8CAA8C;IAC9C,OAAO,CAAC,YAAY;IA8BpB,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB;IAQ3B,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA4B9B,qDAAqD;IACrD,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;YACW,gBAAgB;IAyC9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkBrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAkBxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}
|
|
@@ -42,6 +42,7 @@ const CSL = __importStar(require("@emurgo/cardano-serialization-lib-nodejs"));
|
|
|
42
42
|
const blake2b_1 = __importDefault(require("blake2b"));
|
|
43
43
|
const tx_build_helper_1 = require("../../utils/tx-build-helper");
|
|
44
44
|
const errors_1 = require("../../utils/errors");
|
|
45
|
+
const plutus_placeholders_1 = require("../../utils/plutus-placeholders");
|
|
45
46
|
const const_1 = require("../../utils/const");
|
|
46
47
|
const cardano_costmodels_ts_1 = require("@harmoniclabs/cardano-costmodels-ts");
|
|
47
48
|
const logger = cds_1.default.log('CSLTxBuilder');
|
|
@@ -133,6 +134,7 @@ class CSLTxBuilder {
|
|
|
133
134
|
}
|
|
134
135
|
async buildUnsignedMintTransaction(req, ctx) {
|
|
135
136
|
try {
|
|
137
|
+
this._rejectIndexPlaceholders(req);
|
|
136
138
|
const finalExUnits = await this._evaluateExUnits((exUnits) => this._buildMintTx(req, ctx, exUnits), ctx.evaluateTransaction);
|
|
137
139
|
const unsignedTx = this._buildMintTx(req, ctx, finalExUnits);
|
|
138
140
|
const txDetails = this._extractTxDetails(unsignedTx);
|
|
@@ -278,14 +280,18 @@ class CSLTxBuilder {
|
|
|
278
280
|
}
|
|
279
281
|
async buildUnsignedPlutusSpendTransaction(req, ctx) {
|
|
280
282
|
try {
|
|
283
|
+
this._rejectIndexPlaceholders(req);
|
|
281
284
|
const finalExUnits = await this._evaluateExUnits((exUnits) => this._buildPlutusSpendTx(req, ctx, exUnits), ctx.evaluateTransaction);
|
|
282
285
|
const unsignedTx = this._buildPlutusSpendTx(req, ctx, finalExUnits);
|
|
283
286
|
const txDetails = this._extractTxDetails(unsignedTx);
|
|
284
287
|
const { hashHex: scriptHash } = this._computeScriptHash(req.plutusScriptExecution.validatorScript);
|
|
288
|
+
const mintScriptHash = (req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript)
|
|
289
|
+
? this._computeScriptHash(req.mintingPolicyScript).hashHex
|
|
290
|
+
: undefined;
|
|
285
291
|
const scriptUtxoRef = req.plutusScriptExecution.scriptUtxo;
|
|
286
292
|
const forcedUsed = (req.forceInputs ?? []).filter(r => !(r.txHash === scriptUtxoRef.txHash && r.outputIndex === scriptUtxoRef.outputIndex)).length;
|
|
287
293
|
logger.info(`Built unsigned Plutus spending transaction. Fee: ${txDetails.feeLovelace}`);
|
|
288
|
-
return this._buildResult(req, ctx, txDetails, { scriptHash, forcedInputsUsed: forcedUsed });
|
|
294
|
+
return this._buildResult(req, ctx, txDetails, { scriptHash, mintScriptHash, forcedInputsUsed: forcedUsed });
|
|
289
295
|
}
|
|
290
296
|
catch (error) {
|
|
291
297
|
logger.error(`buildUnsignedPlutusSpendTransaction error: ${error?.message || error}`);
|
|
@@ -345,14 +351,50 @@ class CSLTxBuilder {
|
|
|
345
351
|
txb.set_inputs(scriptInputsBuilder);
|
|
346
352
|
// Collateral + funding UTxO separation (from candidate sender UTxOs only)
|
|
347
353
|
const { fundingUtxos } = this._setupCollateral(txb, rest);
|
|
354
|
+
// FR-1: Combined spend+mint. When mintActions are present, set up a MintBuilder and
|
|
355
|
+
// (when no extraOutputs handle the assets) fold positive mints into the recipient output.
|
|
356
|
+
const hasMint = !!(req.mintActions && req.mintActions.length > 0 && req.mintingPolicyScript);
|
|
357
|
+
let mintedToPrimaryValue;
|
|
358
|
+
if (hasMint) {
|
|
359
|
+
const { plutusScript: mintScript, cslHash: mintScriptCslHash } = this._computeScriptHash(req.mintingPolicyScript);
|
|
360
|
+
const mintScriptSource = CSL.PlutusScriptSource.new(mintScript);
|
|
361
|
+
const mintBuilder = CSL.MintBuilder.new();
|
|
362
|
+
const mintExUnits = CSL.ExUnits.new(CSL.BigNum.from_str(exUnits.mem), CSL.BigNum.from_str(exUnits.cpu));
|
|
363
|
+
const mintRedeemerData = req.mintRedeemer
|
|
364
|
+
? this._toPlutusData(req.mintRedeemer)
|
|
365
|
+
: CSL.PlutusData.new_integer(CSL.BigInt.from_str('0'));
|
|
366
|
+
const mintRedeemer = CSL.Redeemer.new(CSL.RedeemerTag.new_mint(), CSL.BigNum.from_str('0'), mintRedeemerData, mintExUnits);
|
|
367
|
+
const mintWitness = CSL.MintWitness.new_plutus_script(mintScriptSource, mintRedeemer);
|
|
368
|
+
const positiveAssetsForPrimary = [];
|
|
369
|
+
const mintScriptHashHex = Buffer.from(mintScriptCslHash.to_bytes()).toString('hex');
|
|
370
|
+
for (const action of req.mintActions) {
|
|
371
|
+
const { assetName } = (0, tx_build_helper_1.parseAssetUnit)(action.assetUnit);
|
|
372
|
+
const cslAssetName = CSL.AssetName.new(Buffer.from(assetName, 'hex'));
|
|
373
|
+
const qtyStr = String(action.quantity);
|
|
374
|
+
const mintQty = qtyStr.startsWith('-')
|
|
375
|
+
? CSL.Int.new_negative(CSL.BigNum.from_str(qtyStr.slice(1)))
|
|
376
|
+
: CSL.Int.new(CSL.BigNum.from_str(qtyStr));
|
|
377
|
+
mintBuilder.add_asset(mintWitness, cslAssetName, mintQty);
|
|
378
|
+
if (!qtyStr.startsWith('-') && (!req.extraOutputs || req.extraOutputs.length === 0)) {
|
|
379
|
+
positiveAssetsForPrimary.push({ unit: mintScriptHashHex + assetName, quantity: qtyStr });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
txb.set_mint_builder(mintBuilder);
|
|
383
|
+
if (positiveAssetsForPrimary.length > 0) {
|
|
384
|
+
mintedToPrimaryValue = this._buildCslValue('0', positiveAssetsForPrimary);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
348
387
|
// Create output for recipient with multi-assets from the script UTxO
|
|
349
388
|
const outputValue = CSL.Value.new(CSL.BigNum.from_str(String(req.lovelaceAmount || const_1.MIN_CHANGE_LOVELACE)));
|
|
350
389
|
if (scriptNonAdaAssets.length > 0) {
|
|
351
390
|
outputValue.set_multiasset(this._buildCslMultiAsset(scriptNonAdaAssets));
|
|
352
391
|
}
|
|
353
|
-
const
|
|
392
|
+
const finalOutputValue = mintedToPrimaryValue ? outputValue.checked_add(mintedToPrimaryValue) : outputValue;
|
|
393
|
+
const recipientOutput = CSL.TransactionOutput.new(recipientAddress, finalOutputValue);
|
|
354
394
|
this._attachInlineDatum(recipientOutput, req.inlineDatum);
|
|
355
395
|
txb.add_output(recipientOutput);
|
|
396
|
+
// Append extra outputs (FR-2) — each is min-ADA checked before being added.
|
|
397
|
+
this._appendExtraOutputsCsl(txb, req.extraOutputs);
|
|
356
398
|
// Coin selection from candidate funding UTxOs
|
|
357
399
|
const cslFundingUtxos = this._mapMultiAssetUtxosToCslUtxos(fundingUtxos);
|
|
358
400
|
txb.add_inputs_from(cslFundingUtxos, CSL.CoinSelectionStrategyCIP2.LargestFirstMultiAsset);
|
|
@@ -500,6 +542,55 @@ class CSLTxBuilder {
|
|
|
500
542
|
output.set_plutus_data(this._toPlutusData(datum));
|
|
501
543
|
}
|
|
502
544
|
}
|
|
545
|
+
/**
|
|
546
|
+
* FR-3 guard: the CSL builder cannot resolve __INPUT_IDX__ placeholders because
|
|
547
|
+
* CSL's add_inputs_from selects funding internally and we cannot enumerate the
|
|
548
|
+
* resulting input order without a throwaway first-pass build. Reject up-front so
|
|
549
|
+
* consumers get a clear error pointing at the active builder.
|
|
550
|
+
*/
|
|
551
|
+
_rejectIndexPlaceholders(req) {
|
|
552
|
+
const candidates = [
|
|
553
|
+
req.plutusScriptExecution?.redeemer,
|
|
554
|
+
req.plutusScriptExecution?.datum,
|
|
555
|
+
req.inlineDatum,
|
|
556
|
+
req.mintRedeemer
|
|
557
|
+
];
|
|
558
|
+
if (req.extraOutputs) {
|
|
559
|
+
for (const e of req.extraOutputs)
|
|
560
|
+
candidates.push(e.inlineDatum);
|
|
561
|
+
}
|
|
562
|
+
for (const c of candidates) {
|
|
563
|
+
if (c !== undefined && (0, plutus_placeholders_1.containsIndexPlaceholder)(c)) {
|
|
564
|
+
throw new errors_1.TransactionValidationError('Input-index placeholders (__INPUT_IDX:...__) require the Buildooor transaction builder. Pre-resolve indices client-side or set TX_BUILDERS=buildooor.');
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Append parsed extraOutputs (FR-2) to a CSL TransactionBuilder, enforcing min-ADA per entry.
|
|
570
|
+
* Mirrors BuildooorTxBuilder._appendExtraOutputs so both engines produce equivalent layouts.
|
|
571
|
+
*/
|
|
572
|
+
_appendExtraOutputsCsl(txb, extraOutputs) {
|
|
573
|
+
if (!extraOutputs || extraOutputs.length === 0)
|
|
574
|
+
return;
|
|
575
|
+
const coinsPerByte = this.protocolParameters.coinsPerUtxoSize;
|
|
576
|
+
if (!coinsPerByte) {
|
|
577
|
+
throw new errors_1.TransactionValidationError('Cannot enforce min-ADA on extraOutputs: coinsPerUtxoSize not set in protocol parameters');
|
|
578
|
+
}
|
|
579
|
+
const dataCost = CSL.DataCost.new_coins_per_byte(CSL.BigNum.from_str(String(coinsPerByte)));
|
|
580
|
+
for (let i = 0; i < extraOutputs.length; i++) {
|
|
581
|
+
const extra = extraOutputs[i];
|
|
582
|
+
const addr = CSL.Address.from_bech32(extra.address);
|
|
583
|
+
const value = this._buildCslValue(extra.lovelaceAmount, extra.assets);
|
|
584
|
+
const out = CSL.TransactionOutput.new(addr, value);
|
|
585
|
+
this._attachInlineDatum(out, extra.inlineDatum);
|
|
586
|
+
const requiredMin = CSL.min_ada_for_output(out, dataCost);
|
|
587
|
+
const requestedLovelace = CSL.BigNum.from_str(String(extra.lovelaceAmount));
|
|
588
|
+
if (requestedLovelace.compare(requiredMin) < 0) {
|
|
589
|
+
throw new errors_1.TransactionValidationError(`extraOutputs[${i}].lovelaceAmount (${extra.lovelaceAmount}) is below required min-ADA ${requiredMin.to_str()} for the given address/assets/datum`);
|
|
590
|
+
}
|
|
591
|
+
txb.add_output(out);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
503
594
|
/** Parse PlutusV3 script hex and compute its hash */
|
|
504
595
|
_computeScriptHash(scriptHex) {
|
|
505
596
|
const plutusScript = CSL.PlutusScript.new_v3(Buffer.from(scriptHex, 'hex'));
|