From 2d8866be302a9989914b1c75c7f9bc1b50d47191 Mon Sep 17 00:00:00 2001 From: Manav Aggarwal Date: Wed, 19 Oct 2022 21:39:46 -0400 Subject: [PATCH] modify executeNonFraudulentStateTransactions to accomodate case when EndBlock is fraudulent --- baseapp/abci.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/baseapp/abci.go b/baseapp/abci.go index 3af7311822230..a4c7639bde9c6 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -166,8 +166,12 @@ func (app *BaseApp) GetAppHash(req abci.RequestGetAppHash) (res abci.ResponseGet return res } -func (app *BaseApp) executeNonFraudulentTransactions(req abci.RequestGenerateFraudProof) { - nonFraudulentRequests := req.DeliverTxRequests[:len(req.DeliverTxRequests)-1] +func (app *BaseApp) executeNonFraudulentTransactions(req abci.RequestGenerateFraudProof, isDeliverTxFraudulent bool) { + numNonFraudulentRequests := len(req.DeliverTxRequests) + if isDeliverTxFraudulent { + numNonFraudulentRequests = numNonFraudulentRequests - 1 + } + nonFraudulentRequests := req.DeliverTxRequests[:numNonFraudulentRequests] for _, deliverTxRequest := range nonFraudulentRequests { app.DeliverTx(*deliverTxRequest) } @@ -194,7 +198,7 @@ func (app *BaseApp) GenerateFraudProof(req abci.RequestGenerateFraudProof) (res app.BeginBlock(beginBlockRequest) if !isBeginBlockFraudulent { // BeginBlock is not the fraudulent state transition - app.executeNonFraudulentTransactions(req) + app.executeNonFraudulentTransactions(req, isDeliverTxFraudulent) cms.ResetAllTraceWriters() @@ -220,7 +224,7 @@ func (app *BaseApp) GenerateFraudProof(req abci.RequestGenerateFraudProof) (res // Fast-forward to right before fradulent state transition occured app.BeginBlock(beginBlockRequest) if !isBeginBlockFraudulent { - app.executeNonFraudulentTransactions(req) + app.executeNonFraudulentTransactions(req, isDeliverTxFraudulent) } // Export the app's current trace-filtered state into a Fraud Proof and return it