diff --git a/baseapp/test_helpers.go b/baseapp/test_helpers.go index 288e611fb8..32991aeb12 100644 --- a/baseapp/test_helpers.go +++ b/baseapp/test_helpers.go @@ -40,6 +40,12 @@ func (app *BaseApp) SimDeliver(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, return gasInfo, result, err } +// SimWriteState is an entrypoint for simulations only. They are not executed during the normal ABCI finalize +// block step but later. Therefor an extra call to the root multi-store (app.cms) is required to write the changes. +func (app *BaseApp) SimWriteState() { + app.finalizeBlockState.ms.Write() +} + // NewContextLegacy returns a new sdk.Context with the provided header func (app *BaseApp) NewContextLegacy(isCheckTx bool, header cmtproto.Header) sdk.Context { if isCheckTx { diff --git a/x/simulation/simulate.go b/x/simulation/simulate.go index 771382406c..9335f03247 100644 --- a/x/simulation/simulate.go +++ b/x/simulation/simulate.go @@ -246,6 +246,7 @@ func SimulateFromSeedX( proposerAddress = validators.randomProposer(r) if config.Commit { + app.SimWriteState() if _, err := app.Commit(); err != nil { return params, fmt.Errorf("commit failed at height %d: %w", blockHeight, err) }