diff --git a/.golangci.yml b/.golangci.yml index e0936cf9359a..fc99cbe16dec 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,23 +1,33 @@ -run: - deadline: 1m +# run: +# # timeout for analysis, e.g. 30s, 5m, default is 1m +# timeout: 5m linters: - enable-all: true - disable: - - gocyclo - - gochecknoinits - - gochecknoglobals - - dupl - - interfacer - - unparam - - lll + enable: + - bodyclose + - deadcode + - depguard + - dogsled + - goconst + - gocritic + - gofmt + - goimports + - golint + - gosec + - gosimple + - govet + - ineffassign - maligned + - misspell + - nakedret + - prealloc + - staticcheck + - structcheck + - typecheck + - unconvert + - unused + disable: - errcheck - - scopelint - - varcheck - - godox - - funlen - - whitespace issues: exclude-rules: @@ -37,3 +47,9 @@ issues: linters-settings: dogsled: max-blank-identifiers: 3 + maligned: + # print struct with more effective memory layout or not, false by default + suggest-new: true + +service: + golangci-lint-version: 1.19.x diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 939c4414fca6..7f16fe75220e 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -53,7 +53,7 @@ type ( ) // BaseApp reflects the ABCI application implementation. -type BaseApp struct { +type BaseApp struct { // nolint: maligned // initialized on creation logger log.Logger name string // application name from abci.Info @@ -631,7 +631,6 @@ func (app *BaseApp) runTx(mode runTxMode, txBytes []byte, tx sdk.Tx) (result sdk } // runMsgs iterates through all the messages and executes them. -// nolint: gocyclo func (app *BaseApp) runMsgs(ctx sdk.Context, msgs []sdk.Msg, mode runTxMode) (result sdk.Result) { msgLogs := make(sdk.ABCIMessageLogs, 0, len(msgs)) diff --git a/baseapp/helpers.go b/baseapp/helpers.go index 3a1d3abf2ffa..349f7775f3d7 100644 --- a/baseapp/helpers.go +++ b/baseapp/helpers.go @@ -10,17 +10,16 @@ import ( var isAlphaNumeric = regexp.MustCompile(`^[a-zA-Z0-9]+$`).MatchString -// nolint - Mostly for testing +// Mostly for testing func (app *BaseApp) Check(tx sdk.Tx) (result sdk.Result) { return app.runTx(runTxModeCheck, nil, tx) } -// nolint - full tx execution +// full tx execution func (app *BaseApp) Simulate(txBytes []byte, tx sdk.Tx) (result sdk.Result) { return app.runTx(runTxModeSimulate, txBytes, tx) } -// nolint func (app *BaseApp) Deliver(tx sdk.Tx) (result sdk.Result) { return app.runTx(runTxModeDeliver, nil, tx) } diff --git a/client/context/context.go b/client/context/context.go index c99fb5a32da5..2fd6ff66f8be 100644 --- a/client/context/context.go +++ b/client/context/context.go @@ -23,7 +23,7 @@ import ( // CLIContext implements a typical CLI context created in SDK modules for // transaction handling and queries. type CLIContext struct { - Codec *codec.Codec + FromAddress sdk.AccAddress Client rpcclient.Client ChainID string Keybase cryptokeys.Keybase @@ -33,14 +33,14 @@ type CLIContext struct { HomeDir string NodeURI string From string - TrustNode bool - UseLedger bool BroadcastMode string Verifier tmlite.Verifier + FromName string + Codec *codec.Codec + TrustNode bool + UseLedger bool Simulate bool GenerateOnly bool - FromAddress sdk.AccAddress - FromName string Indent bool SkipConfirm bool } diff --git a/client/keys/codec_test.go b/client/keys/codec_test.go index e8459aa635af..739d5e9d04c8 100644 --- a/client/keys/codec_test.go +++ b/client/keys/codec_test.go @@ -18,7 +18,7 @@ type testCases struct { func getTestCases() testCases { return testCases{ - // nolint: govet + // nolint:govet []keys.KeyOutput{ {"A", "B", "C", "D", "E", 0, nil}, {"A", "B", "C", "D", "", 0, nil}, diff --git a/crypto/encode_test.go b/crypto/encode_test.go index 06d6dadc1571..90c5df68d963 100644 --- a/crypto/encode_test.go +++ b/crypto/encode_test.go @@ -47,7 +47,7 @@ func checkAminoJSON(t *testing.T, src interface{}, dst interface{}, isNil bool) require.Nil(t, err, "%+v", err) } -// nolint: vet +// nolint: govet func ExamplePrintRegisteredTypes() { cdc.PrintTypes(os.Stdout) // Output: | Type | Name | Prefix | Length | Notes | diff --git a/crypto/keys/hd/hdpath.go b/crypto/keys/hd/hdpath.go index 165feca3ec32..a92d79be1f21 100644 --- a/crypto/keys/hd/hdpath.go +++ b/crypto/keys/hd/hdpath.go @@ -50,7 +50,6 @@ func NewParams(purpose, coinType, account uint32, change bool, addressIdx uint32 } // Parse the BIP44 path and unmarshal into the struct. -// nolint: gocyclo func NewParamsFromPath(path string) (*BIP44Params, error) { spl := strings.Split(path, "/") if len(spl) != 5 { diff --git a/crypto/keys/hd/hdpath_test.go b/crypto/keys/hd/hdpath_test.go index e375094cb1ee..a5110e2cbde2 100644 --- a/crypto/keys/hd/hdpath_test.go +++ b/crypto/keys/hd/hdpath_test.go @@ -19,7 +19,7 @@ func mnemonicToSeed(mnemonic string) []byte { return bip39.NewSeed(mnemonic, defaultBIP39Passphrase) } -// nolint: vet +// nolint:govet func ExampleStringifyPathParams() { path := NewParams(44, 0, 0, false, 0) fmt.Println(path.String()) @@ -101,7 +101,7 @@ func TestParamsFromPath(t *testing.T) { } -// nolint: vet +// nolint:govet func ExampleSomeBIP32TestVecs() { seed := mnemonicToSeed("barrel original fuel morning among eternal " + diff --git a/crypto/keys/keybase.go b/crypto/keys/keybase.go index b009657788f1..00ac5c2373b5 100644 --- a/crypto/keys/keybase.go +++ b/crypto/keys/keybase.go @@ -69,16 +69,16 @@ var ( // // NOTE: dbKeybase will be deprecated in favor of keyringKeybase. type dbKeybase struct { - db dbm.DB base baseKeybase + db dbm.DB } // newDBKeybase creates a new dbKeybase instance using the provided DB for // reading and writing keys. func newDBKeybase(db dbm.DB) Keybase { return dbKeybase{ - db: db, base: baseKeybase{}, + db: db, } } diff --git a/crypto/keys/keyring.go b/crypto/keys/keyring.go index a80f5f5ce2b5..3a6161f4f90d 100644 --- a/crypto/keys/keyring.go +++ b/crypto/keys/keyring.go @@ -31,8 +31,8 @@ var _ Keybase = keyringKeybase{} // keyringKeybase implements the Keybase interface by using the Keyring library // for account key persistence. type keyringKeybase struct { - db keyring.Keyring base baseKeybase + db keyring.Keyring } var maxPassphraseEntryAttempts = 3 @@ -453,7 +453,6 @@ func (kb keyringKeybase) writeInfo(name string, info Info) { } } -//nolint: funlen func lkbToKeyringConfig(name, dir string, buf io.Reader, test bool) keyring.Config { if test { return keyring.Config{ diff --git a/go.sum b/go.sum index f7e38807ccb3..a3bda84a39c7 100644 --- a/go.sum +++ b/go.sum @@ -237,8 +237,6 @@ github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrn github.com/tendermint/crypto v0.0.0-20190823183015-45b1026d81ae h1:AOXNM7c2Vvo45SjAgeWF8Wy+NS7/NCqzRNpUc+HPAec= github.com/tendermint/crypto v0.0.0-20190823183015-45b1026d81ae/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.14.1/go.mod h1:i/UKE5Uocn+argJJBb12qTZsCDBcAYMbR92AaJVmKso= -github.com/tendermint/go-amino v0.15.0 h1:TC4e66P59W7ML9+bxio17CPKnxW3nKIRAYskntMAoRk= -github.com/tendermint/go-amino v0.15.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/go-amino v0.15.1 h1:D2uk35eT4iTsvJd9jWIetzthE5C0/k2QmMFkCN+4JgQ= github.com/tendermint/go-amino v0.15.1/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/iavl v0.12.4 h1:hd1woxUGISKkfUWBA4mmmTwOua6PQZTJM/F0FDrmMV8= diff --git a/store/errors/errors.go b/store/errors/errors.go index 361a10fdb0da..98e1b8aa1330 100644 --- a/store/errors/errors.go +++ b/store/errors/errors.go @@ -4,7 +4,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// nolint - reexport const ( CodeOK = sdk.CodeOK CodeInternal = sdk.CodeInternal @@ -14,10 +13,8 @@ const ( CodespaceRoot = sdk.CodespaceRoot ) -// nolint - reexport type Error = sdk.Error -// nolint - reexport func ErrInternal(msg string) Error { return sdk.ErrInternal(msg) } diff --git a/store/iavl/store.go b/store/iavl/store.go index f7e603962de6..917d4e434305 100644 --- a/store/iavl/store.go +++ b/store/iavl/store.go @@ -307,14 +307,14 @@ func (st *Store) Query(req abci.RequestQuery) (res abci.ResponseQuery) { // Implements types.Iterator. type iavlIterator struct { - // Underlying store - tree *iavl.ImmutableTree - // Domain start, end []byte - // Iteration order - ascending bool + key []byte // The current key (mutable) + value []byte // The current value (mutable) + + // Underlying store + tree *iavl.ImmutableTree // Channel to push iteration values. iterCh chan cmn.KVPair @@ -325,13 +325,11 @@ type iavlIterator struct { // Close this to signal that state is initialized. initCh chan struct{} - //---------------------------------------- - // What follows are mutable state. mtx sync.Mutex - invalid bool // True once, true forever - key []byte // The current key - value []byte // The current value + ascending bool // Iteration order + + invalid bool // True once, true forever (mutable) } var _ types.Iterator = (*iavlIterator)(nil) diff --git a/store/tracekv/store.go b/store/tracekv/store.go index ee9558ecbe5a..f95c7f5840dc 100644 --- a/store/tracekv/store.go +++ b/store/tracekv/store.go @@ -169,7 +169,6 @@ func (tkv *Store) CacheWrapWithTrace(_ io.Writer, _ types.TraceContext) types.Ca // writeOperation writes a KVStore operation to the underlying io.Writer as // JSON-encoded data where the key/value pair is base64 encoded. -// nolint: errcheck func writeOperation(w io.Writer, op operation, tc types.TraceContext, key, value []byte) { traceOp := traceOperation{ Operation: op, diff --git a/tests/gobash.go b/tests/gobash.go index 29a703479ee3..3d4166dd30d6 100644 --- a/tests/gobash.go +++ b/tests/gobash.go @@ -12,7 +12,6 @@ import ( // ExecuteT executes the command, pipes any input to STDIN and return STDOUT, // logging STDOUT/STDERR to t. -// nolint: errcheck func ExecuteT(t *testing.T, cmd, input string) (stdout, stderr string) { t.Log("Running", cmd) diff --git a/tests/util.go b/tests/util.go index bde6a82ebd96..b17ebec1c8de 100644 --- a/tests/util.go +++ b/tests/util.go @@ -99,7 +99,7 @@ func waitForHeight(height int64, url string) { for { // Since this is in a testing file we are accepting nolint to be passed - res, err = http.Get(url) //nolint:gosec + res, err = http.Get(url) // nolint:gosec if err != nil { panic(err) } @@ -151,7 +151,7 @@ func WaitForStart(url string) { time.Sleep(time.Millisecond * 100) var res *http.Response - res, err = http.Get(url) //nolint:gosec Error is arising in testing files, accepting nolint + res, err = http.Get(url) // nolint:gosec if err != nil || res == nil { continue } diff --git a/types/config.go b/types/config.go index b3e569bcb82f..e24ccef4c0e0 100644 --- a/types/config.go +++ b/types/config.go @@ -10,14 +10,14 @@ const DefaultKeyringServiceName = "cosmos" // Config is the structure that holds the SDK configuration parameters. // This could be used to initialize certain configuration parameters for the SDK. type Config struct { - mtx sync.RWMutex - sealed bool - bech32AddressPrefix map[string]string - coinType uint32 fullFundraiserPath string + keyringServiceName string + bech32AddressPrefix map[string]string txEncoder TxEncoder addressVerifier func([]byte) error - keyringServiceName string + mtx sync.RWMutex + coinType uint32 + sealed bool } // cosmos-sdk wide global singleton diff --git a/types/context_test.go b/types/context_test.go index 2da1abd6fe21..6da85b6d3983 100644 --- a/types/context_test.go +++ b/types/context_test.go @@ -91,7 +91,7 @@ func TestLogContext(t *testing.T) { require.Equal(t, *logger.logs, []string{"debug", "info", "error"}) } -type dummy int64 //nolint: unused +type dummy int64 //nolint:unused func (d dummy) Clone() interface{} { return d diff --git a/types/decimal.go b/types/decimal.go index 7f8d004e5e8f..c9b751d9c07e 100644 --- a/types/decimal.go +++ b/types/decimal.go @@ -45,7 +45,6 @@ func precisionInt() *big.Int { return new(big.Int).Set(precisionReuse) } -// nolint - common values func ZeroDec() Dec { return Dec{new(big.Int).Set(zeroInt)} } func OneDec() Dec { return Dec{precisionInt()} } func SmallestDec() Dec { return Dec{new(big.Int).Set(oneInt)} } @@ -394,7 +393,6 @@ func (d Dec) String() string { // |_____: / | $$$ | // |________| -// nolint - go-cyclo // Remove a Precision amount of rightmost digits and perform bankers rounding // on the remainder (gaussian rounding) on the digits which have been removed. // diff --git a/types/errors.go b/types/errors.go index f59a4126c08e..1447a21b4cd3 100644 --- a/types/errors.go +++ b/types/errors.go @@ -328,7 +328,7 @@ func AppendMsgToErr(msg string, err string) string { } // returns the index of the message in the ABCI Log -// nolint: deadcode unused +// nolint:deadcode,unused func mustGetMsgIndex(abciLog string) int { msgIdx := strings.Index(abciLog, "message\":\"") if msgIdx == -1 { diff --git a/x/auth/client/cli/broadcast.go b/x/auth/client/cli/broadcast.go index a445c88a0938..37590787b4dd 100644 --- a/x/auth/client/cli/broadcast.go +++ b/x/auth/client/cli/broadcast.go @@ -37,7 +37,7 @@ $ tx broadcast ./mytxn.json } res, err := cliCtx.BroadcastTx(txBytes) - cliCtx.PrintOutput(res) // nolint:errcheck + cliCtx.PrintOutput(res) return err }, diff --git a/x/auth/types/account_test.go b/x/auth/types/account_test.go index 1c5cdc030bc4..754ccb9eef87 100644 --- a/x/auth/types/account_test.go +++ b/x/auth/types/account_test.go @@ -12,11 +12,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/exported" ) -var ( - stakeDenom = "stake" - feeDenom = "fee" -) - func TestBaseAddressPubKey(t *testing.T) { _, pub1, addr1 := KeyTestPubAddr() _, pub2, addr2 := KeyTestPubAddr() diff --git a/x/bank/internal/keeper/keeper.go b/x/bank/internal/keeper/keeper.go index e1bb53631df7..cd0242e23f17 100644 --- a/x/bank/internal/keeper/keeper.go +++ b/x/bank/internal/keeper/keeper.go @@ -316,7 +316,6 @@ func (keeper BaseSendKeeper) SetCoins(ctx sdk.Context, addr sdk.AccAddress, amt } // GetSendEnabled returns the current SendEnabled -// nolint: errcheck func (keeper BaseSendKeeper) GetSendEnabled(ctx sdk.Context) bool { var enabled bool keeper.paramSpace.Get(ctx, types.ParamStoreKeySendEnabled, &enabled) diff --git a/x/distribution/keeper/test_common.go b/x/distribution/keeper/test_common.go index 5a86232f140d..73c709e317e1 100644 --- a/x/distribution/keeper/test_common.go +++ b/x/distribution/keeper/test_common.go @@ -6,7 +6,6 @@ import ( "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" @@ -23,7 +22,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/distribution/types" ) -//nolint: deadcode unused +//nolint:deadcode,unused var ( delPk1 = ed25519.GenPrivKey().PubKey() delPk2 = ed25519.GenPrivKey().PubKey() @@ -47,7 +46,6 @@ var ( valConsPk3 = ed25519.GenPrivKey().PubKey() valConsAddr1 = sdk.ConsAddress(valConsPk1.Address()) valConsAddr2 = sdk.ConsAddress(valConsPk2.Address()) - valConsAddr3 = sdk.ConsAddress(valConsPk3.Address()) // TODO move to common testing package for all modules // test addresses @@ -56,10 +54,6 @@ var ( valAccAddr1, valAccAddr2, valAccAddr3, } - emptyDelAddr sdk.AccAddress - emptyValAddr sdk.ValAddress - emptyPubkey crypto.PubKey - distrAcc = supply.NewEmptyModuleAccount(types.ModuleName) ) diff --git a/x/distribution/types/common_test.go b/x/distribution/types/common_test.go index 2b36925a23c8..c9dbfde6f0b1 100644 --- a/x/distribution/types/common_test.go +++ b/x/distribution/types/common_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// nolint: deadcode unused +// nolint:deadcode,unused,varcheck var ( delPk1 = ed25519.GenPrivKey().PubKey() delPk2 = ed25519.GenPrivKey().PubKey() diff --git a/x/gov/types/vote.go b/x/gov/types/vote.go index 39783913ada8..ca49fdb6fa52 100644 --- a/x/gov/types/vote.go +++ b/x/gov/types/vote.go @@ -143,7 +143,6 @@ func (vo VoteOption) String() string { } // Format implements the fmt.Formatter interface. -// nolint: errcheck func (vo VoteOption) Format(s fmt.State, verb rune) { switch verb { case 's': diff --git a/x/mock/app.go b/x/mock/app.go index c1595ad79374..1e59e050507b 100644 --- a/x/mock/app.go +++ b/x/mock/app.go @@ -110,7 +110,6 @@ func (app *App) CompleteSetup(newKeys ...sdk.StoreKey) error { } // InitChainer performs custom logic for initialization. -// nolint: errcheck func (app *App) InitChainer(ctx sdk.Context, _ abci.RequestInitChain) abci.ResponseInitChain { // Load the genesis accounts @@ -282,7 +281,6 @@ func GeneratePrivKeyAddressPairsFromRand(rand *rand.Rand, n int) (keys []crypto. // RandomSetGenesis set genesis accounts with random coin values using the // provided addresses and coin denominations. -// nolint: errcheck func RandomSetGenesis(r *rand.Rand, app *App, addrs []sdk.AccAddress, denoms []string) { accts := make([]authexported.Account, len(addrs)) randCoinIntervals := []BigInterval{ diff --git a/x/params/commmon_test.go b/x/params/commmon_test.go index 59f718103da4..5ca01ad98d40 100644 --- a/x/params/commmon_test.go +++ b/x/params/commmon_test.go @@ -1,4 +1,4 @@ -// nolint: deadcode unused +// nolint:deadcode,unused package params import ( diff --git a/x/slashing/internal/keeper/test_common.go b/x/slashing/internal/keeper/test_common.go index 680f9cd436ac..721967ca88c4 100644 --- a/x/slashing/internal/keeper/test_common.go +++ b/x/slashing/internal/keeper/test_common.go @@ -1,4 +1,4 @@ -// nolint:deadcode unused +// nolint:deadcode,unused // DONTCOVER // noalias package keeper @@ -131,7 +131,7 @@ func newPubKey(pk string) (res crypto.PubKey) { panic(err) } var pkEd ed25519.PubKeyEd25519 - copy(pkEd[:], pkBytes[:]) + copy(pkEd[:], pkBytes) return pkEd } diff --git a/x/slashing/simulation/decoder_test.go b/x/slashing/simulation/decoder_test.go index 19444dcaed45..c4b1a2a8922b 100644 --- a/x/slashing/simulation/decoder_test.go +++ b/x/slashing/simulation/decoder_test.go @@ -15,7 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/slashing/internal/types" ) -// nolint:deadcode unused +// nolint:deadcode,unused,varcheck var ( delPk1 = ed25519.GenPrivKey().PubKey() delAddr1 = sdk.AccAddress(delPk1.Address()) diff --git a/x/staking/keeper/test_common.go b/x/staking/keeper/test_common.go index e33ac3a20822..b00bdc00e3f6 100644 --- a/x/staking/keeper/test_common.go +++ b/x/staking/keeper/test_common.go @@ -28,7 +28,7 @@ import ( ) // dummy addresses used for testing -// nolint: unused deadcode +// nolint:unused, deadcode var ( Addrs = createTestAddrs(500) PKs = createTestPubKeys(500) @@ -282,7 +282,7 @@ func TestingUpdateValidator(keeper Keeper, ctx sdk.Context, validator types.Vali return validator } -// nolint: deadcode unused +// nolint:deadcode, unused func validatorByPowerIndexExists(k Keeper, ctx sdk.Context, power []byte) bool { store := ctx.KVStore(k.storeKey) return store.Has(power) diff --git a/x/staking/test_common.go b/x/staking/test_common.go index 94f0f9a9aa84..c7b1073fc74f 100644 --- a/x/staking/test_common.go +++ b/x/staking/test_common.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/types" ) -// nolint: deadcode unused +// nolint:deadcode,unused,varcheck var ( priv1 = secp256k1.GenPrivKey() addr1 = sdk.AccAddress(priv1.PubKey().Address()) diff --git a/x/staking/types/delegation.go b/x/staking/types/delegation.go index 3c483a9531ca..a3e1fab1bc9b 100644 --- a/x/staking/types/delegation.go +++ b/x/staking/types/delegation.go @@ -394,7 +394,7 @@ func (d DelegationResponses) String() (out string) { // responses. type RedelegationResponse struct { Redelegation - Entries []RedelegationEntryResponse `json:"entries" yaml:"entries"` // nolint: structtag + Entries []RedelegationEntryResponse `json:"entries" yaml:"entries"` } // RedelegationEntryResponse is equivalent to a RedelegationEntry except that it diff --git a/x/staking/types/test_utils.go b/x/staking/types/test_utils.go index e5c84b414452..9ab8aabfe82c 100644 --- a/x/staking/types/test_utils.go +++ b/x/staking/types/test_utils.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// nolint: deadcode unused +// nolint:deadcode,unused var ( pk1 = ed25519.GenPrivKey().PubKey() pk2 = ed25519.GenPrivKey().PubKey() diff --git a/x/supply/internal/keeper/integration_test.go b/x/supply/internal/keeper/integration_test.go index a09f21e4bdea..be065ea16ae8 100644 --- a/x/supply/internal/keeper/integration_test.go +++ b/x/supply/internal/keeper/integration_test.go @@ -15,7 +15,7 @@ var ( holder = "holder" ) -// nolint: deadcode unused +// nolint:deadcode,unused func createTestApp(isCheckTx bool) (*simapp.SimApp, sdk.Context) { app := simapp.Setup(isCheckTx)