From f72ded1085926f333002f0c6c84aa481c2072e02 Mon Sep 17 00:00:00 2001 From: ppedziwiatr Date: Fri, 26 May 2023 14:36:18 +0200 Subject: [PATCH] fix: inner writes evaluator fix - verify inner call type --- src/contract/InnerWritesEvaluator.ts | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/contract/InnerWritesEvaluator.ts b/src/contract/InnerWritesEvaluator.ts index a4ea372..a09f998 100644 --- a/src/contract/InnerWritesEvaluator.ts +++ b/src/contract/InnerWritesEvaluator.ts @@ -14,17 +14,19 @@ export class InnerWritesEvaluator { private evalForeignCalls(rootContractTxId: string, interaction: InteractionCall, result: Array) { Object.keys(interaction.interactionInput.foreignContractCalls).forEach((foreignContractCallKey) => { const foreignContractCall = interaction.interactionInput.foreignContractCalls[foreignContractCallKey]; - Object.keys(foreignContractCall.interactions).forEach((k) => { - const foreignInteraction = foreignContractCall.interactions[k]; - if ( - foreignInteraction.interactionInput.dryWrite && - !result.includes(foreignContractCall.contractTxId) && - rootContractTxId !== foreignContractCall.contractTxId /*"write-backs"*/ - ) { - result.push(foreignContractCall.contractTxId); - } - this.evalForeignCalls(rootContractTxId, foreignInteraction, result); - }); + if (foreignContractCall.innerCallType == 'write') { + Object.keys(foreignContractCall.interactions).forEach((k) => { + const foreignInteraction = foreignContractCall.interactions[k]; + if ( + foreignInteraction.interactionInput.dryWrite && + !result.includes(foreignContractCall.contractTxId) && + rootContractTxId !== foreignContractCall.contractTxId /*"write-backs"*/ + ) { + result.push(foreignContractCall.contractTxId); + } + this.evalForeignCalls(rootContractTxId, foreignInteraction, result); + }); + } }); } }