From d9bb1b6d4ee8b4849afcfccc3a4a093f1a314096 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 9 Jan 2025 10:06:15 +0800 Subject: [PATCH] perf: Make recheck not re-run validate basic (#20208) (#871) Signed-off-by: yihuang Co-authored-by: Dev Ojha Co-authored-by: yihuang --- CHANGELOG.md | 1 + baseapp/baseapp.go | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf3705907b12..4ed8721eda01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (server) [#21941](https://github.com/cosmos/cosmos-sdk/pull/21941) Regenerate addrbook.json for in place testnet. * (store) [#923](https://github.com/crypto-org-chain/cosmos-sdk/pull/923) Enable iavl async pruning. * (store) [#934](https://github.com/crypto-org-chain/cosmos-sdk/pull/934) Add pause pruning. +* (baseapp) [#20208](https://github.com/cosmos/cosmos-sdk/pull/20208) Skip running validateBasic for rechecking txs. ### Bug Fixes diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 3e859f91c395..f7952215dc65 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -915,8 +915,12 @@ func (app *BaseApp) runTxWithMultiStore( } msgs := tx.GetMsgs() - if err := validateBasicTxMsgs(msgs); err != nil { - return sdk.GasInfo{}, nil, nil, err + // run validate basic if mode != recheck. + // as validate basic is stateless, it is guaranteed to pass recheck, given that its passed checkTx. + if mode != execModeReCheck { + if err := validateBasicTxMsgs(msgs); err != nil { + return sdk.GasInfo{}, nil, nil, err + } } for _, msg := range msgs {