Skip to content

Commit f44934e

Browse files
committed
Use zip() to loop over libauth & cs inputs/outputs
1 parent 0ef29ab commit f44934e

1 file changed

Lines changed: 17 additions & 21 deletions

File tree

packages/cashscript/src/LibauthTemplate.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -349,35 +349,32 @@ const generateTemplateScenarioTransaction = (
349349
csTransaction: TransactionType,
350350
slotIndex: number,
351351
): WalletTemplateScenario['transaction'] => {
352-
const inputs = libauthTransaction.inputs.map((input, inputIndex) => {
353-
const csInput = csTransaction.inputs[inputIndex] as Utxo;
354-
const libauthInput = libauthTransaction.inputs[inputIndex];
355-
352+
const zippedInputs = zip(csTransaction.inputs, libauthTransaction.inputs);
353+
const inputs = zippedInputs.map(([csInput, libauthInput], inputIndex) => {
356354
return {
357-
outpointIndex: input.outpointIndex,
358-
outpointTransactionHash: binToHex(input.outpointTransactionHash),
359-
sequenceNumber: input.sequenceNumber,
355+
outpointIndex: libauthInput.outpointIndex,
356+
outpointTransactionHash: binToHex(libauthInput.outpointTransactionHash),
357+
sequenceNumber: libauthInput.sequenceNumber,
360358
unlockingBytecode: generateTemplateScenarioBytecode(csInput, libauthInput, inputIndex, 'p2pkh_placeholder_unlock', slotIndex === inputIndex),
361359
} as WalletTemplateScenarioInput;
362360
});
363361

364362
const locktime = libauthTransaction.locktime;
365363

366-
const outputs = libauthTransaction.outputs.map((output, index) => {
367-
const csOutput = csTransaction.outputs[index];
368-
364+
const zippedOutputs = zip(csTransaction.outputs, libauthTransaction.outputs);
365+
const outputs = zippedOutputs.map(([csOutput, libauthOutput]) => {
369366
if (csOutput && contract) {
370367
return {
371368
lockingBytecode: generateTemplateScenarioTransactionOutputLockingBytecode(csOutput, contract),
372-
token: serialiseTokenDetails(output.token),
373-
valueSatoshis: Number(output.valueSatoshis),
369+
token: serialiseTokenDetails(libauthOutput.token),
370+
valueSatoshis: Number(libauthOutput.valueSatoshis),
374371
} as WalletTemplateScenarioTransactionOutput;
375372
}
376373

377374
return {
378-
lockingBytecode: `${binToHex(output.lockingBytecode)}`,
379-
token: serialiseTokenDetails(output.token),
380-
valueSatoshis: Number(output.valueSatoshis),
375+
lockingBytecode: `${binToHex(libauthOutput.lockingBytecode)}`,
376+
token: serialiseTokenDetails(libauthOutput.token),
377+
valueSatoshis: Number(libauthOutput.valueSatoshis),
381378
} as WalletTemplateScenarioTransactionOutput;
382379
});
383380

@@ -391,13 +388,12 @@ const generateTemplateScenarioSourceOutputs = (
391388
libauthTransaction: TransactionBch,
392389
slotIndex: number,
393390
): Array<WalletTemplateScenarioOutput<true>> => {
394-
return csTransaction.inputs.map((input, inputIndex) => {
395-
const libauthInput = libauthTransaction.inputs[inputIndex];
396-
391+
const zippedInputs = zip(csTransaction.inputs, libauthTransaction.inputs);
392+
return zippedInputs.map(([csInput, libauthInput], inputIndex) => {
397393
return {
398-
lockingBytecode: generateTemplateScenarioBytecode(input, libauthInput, inputIndex, 'p2pkh_placeholder_lock', inputIndex === slotIndex),
399-
valueSatoshis: Number(input.satoshis),
400-
token: serialiseTokenDetails(input.token),
394+
lockingBytecode: generateTemplateScenarioBytecode(csInput, libauthInput, inputIndex, 'p2pkh_placeholder_lock', inputIndex === slotIndex),
395+
valueSatoshis: Number(csInput.satoshis),
396+
token: serialiseTokenDetails(csInput.token),
401397
};
402398
});
403399
};

0 commit comments

Comments
 (0)