Some checks are pending
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
85 lines
3 KiB
Go
85 lines
3 KiB
Go
package baseapp
|
|
|
|
import (
|
|
cmtproto "git.cw.tr/mukan-network/mukan-consensus/proto/tendermint/types"
|
|
|
|
errorsmod "cosmossdk.io/errors"
|
|
|
|
sdk "git.cw.tr/mukan-network/mukan-sdk/types"
|
|
sdkerrors "git.cw.tr/mukan-network/mukan-sdk/types/errors"
|
|
)
|
|
|
|
// SimCheck defines a CheckTx helper function that used in tests and simulations.
|
|
func (app *BaseApp) SimCheck(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, *sdk.Result, error) {
|
|
// runTx expects tx bytes as argument, so we encode the tx argument into
|
|
// bytes. Note that runTx will actually decode those bytes again. But since
|
|
// this helper is only used in tests/simulation, it's fine.
|
|
bz, err := txEncoder(tx)
|
|
if err != nil {
|
|
return sdk.GasInfo{}, nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "%s", err)
|
|
}
|
|
|
|
gasInfo, result, _, err := app.runTx(execModeCheck, bz, tx)
|
|
return gasInfo, result, err
|
|
}
|
|
|
|
// Simulate executes a tx in simulate mode to get result and gas info.
|
|
func (app *BaseApp) Simulate(txBytes []byte) (sdk.GasInfo, *sdk.Result, error) {
|
|
gasInfo, result, _, err := app.runTx(execModeSimulate, txBytes, nil)
|
|
return gasInfo, result, err
|
|
}
|
|
|
|
func (app *BaseApp) SimDeliver(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, *sdk.Result, error) {
|
|
// See comment for Check().
|
|
bz, err := txEncoder(tx)
|
|
if err != nil {
|
|
return sdk.GasInfo{}, nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "%s", err)
|
|
}
|
|
|
|
gasInfo, result, _, err := app.runTx(execModeFinalize, bz, tx)
|
|
return gasInfo, result, err
|
|
}
|
|
|
|
func (app *BaseApp) SimTxFinalizeBlock(txEncoder sdk.TxEncoder, tx sdk.Tx) (sdk.GasInfo, *sdk.Result, error) {
|
|
// See comment for Check().
|
|
bz, err := txEncoder(tx)
|
|
if err != nil {
|
|
return sdk.GasInfo{}, nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "%s", err)
|
|
}
|
|
|
|
gasInfo, result, _, err := app.runTx(execModeFinalize, bz, tx)
|
|
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 {
|
|
return sdk.NewContext(app.checkState.ms, header, true, app.logger).
|
|
WithMinGasPrices(app.minGasPrices)
|
|
}
|
|
|
|
return sdk.NewContext(app.finalizeBlockState.ms, header, false, app.logger)
|
|
}
|
|
|
|
// NewContext returns a new sdk.Context with a empty header
|
|
func (app *BaseApp) NewContext(isCheckTx bool) sdk.Context {
|
|
return app.NewContextLegacy(isCheckTx, cmtproto.Header{})
|
|
}
|
|
|
|
func (app *BaseApp) NewUncachedContext(isCheckTx bool, header cmtproto.Header) sdk.Context {
|
|
return sdk.NewContext(app.cms, header, isCheckTx, app.logger)
|
|
}
|
|
|
|
func (app *BaseApp) GetContextForFinalizeBlock(txBytes []byte) sdk.Context {
|
|
return app.getContextForTx(execModeFinalize, txBytes)
|
|
}
|
|
|
|
func (app *BaseApp) GetContextForCheckTx(txBytes []byte) sdk.Context {
|
|
return app.getContextForTx(execModeCheck, txBytes)
|
|
}
|