diff --git a/.circleci/config.yml b/.circleci/config.yml index 6efc087a7..1ae67cd65 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -28,6 +28,11 @@ jobs: key: go-mod-v6-{{ checksum "go.sum" }} paths: - "/home/circleci/.go_workspace/pkg/mod" + - run: + name: Lint + command: | + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.50.1 + ./bin/golangci-lint run - run: name: Run tests command: | @@ -43,6 +48,6 @@ jobs: # Invoke jobs via workflows # See: https://circleci.com/docs/2.0/configuration-reference/#workflows workflows: - build-and-test: + build-lint-test: jobs: - build diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..891b3fd6d --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,103 @@ +run: + timeout: 5m + disable-all: true + enable: + - asasalint + - asciicheck + - bidichk + - bodyclose + - containedctx + - contextcheck + - cyclop + - decorder + - depguard + - dogsled + - dupl + - durationcheck + - errcheck + - errchkjson + - errname + - errorlint + - execinquery + - exhaustive + - exhaustivestruct + - exhaustruct + - exportloopref + - forbidigo + - forcetypeassert + - funlen + - gci + - gochecknoglobals + - gochecknoinits + - gocognit + - goconst + - gocritic + - gocyclo + - godot + - godox + - goerr113 + - gofumpt + - goheader + - golint + - gomnd + - gomoddirectives + - gomodguard + - goprintffuncname + - gosec + - gosimple + - govet + - grouper + - ifshort + - importas + - ineffassign + - interfacebloat + - interfacer + - ireturn + - lll + - loggercheck + - maintidx + - makezero + - maligned + - misspell + - nakedret + - nestif + - nilerr + - nilnil + - nlreturn + - noctx + - nolintlint + - nonamedreturns + - nosnakecase + - nosprintfhostport + - paralleltest + - prealloc + - predeclared + - promlinter + - reassign + - revive + - rowserrcheck + - scopelint + - sqlclosecheck + - staticcheck + - structcheck + - stylecheck + - tagliatelle + - tenv + - testableexamples + - testpackage + - thelper + - tparallel + - typecheck + - unconvert + - unparam + - unused + - usestdlibvars + - varcheck + - varnamelen + - wastedassign + - whitespace + - wrapcheck + - wsl + +issues: + max-same-issues: 0 diff --git a/app/export.go b/app/export.go index 203306d28..32ff9374b 100644 --- a/app/export.go +++ b/app/export.go @@ -46,7 +46,7 @@ func (app *BabylonApp) ExportAppStateAndValidators( // prepare for fresh start at zero height // NOTE zero height genesis is a temporary feature which will be deprecated -// in favour of export at a block height +// in favour of export at a block height func (app *BabylonApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { applyAllowedAddrs := false @@ -109,7 +109,7 @@ func (app *BabylonApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) app.DistrKeeper.SetFeePool(ctx, feePool) - app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) + app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) //nolint:errcheck // either we ignore the error here or propogate up the stack return false }) @@ -123,8 +123,8 @@ func (app *BabylonApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr if err != nil { panic(err) } - app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) - app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) + app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) //nolint:errcheck // either we ignore the error here or propogate up the stack + app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) //nolint:errcheck // either we ignore the error here or propogate up the stack } // reset context height diff --git a/app/test_helpers.go b/app/test_helpers.go index 6f2e7c3c1..75395f567 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -5,12 +5,14 @@ import ( "encoding/hex" "encoding/json" "fmt" - tmconfig "github.com/tendermint/tendermint/config" "math/rand" "strconv" "testing" "time" + "cosmossdk.io/math" + tmconfig "github.com/tendermint/tendermint/config" + "github.com/babylonchain/babylon/app/params" appparams "github.com/babylonchain/babylon/app/params" "github.com/babylonchain/babylon/testutil/datagen" @@ -394,7 +396,7 @@ func createIncrementalAccounts(accNum int) []sdk.AccAddress { } // AddTestAddrsFromPubKeys adds the addresses into the BabylonApp providing only the public keys. -func AddTestAddrsFromPubKeys(app *BabylonApp, ctx sdk.Context, pubKeys []cryptotypes.PubKey, accAmt sdk.Int) { +func AddTestAddrsFromPubKeys(app *BabylonApp, ctx sdk.Context, pubKeys []cryptotypes.PubKey, accAmt math.Int) { initCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), accAmt)) for _, pk := range pubKeys { @@ -404,17 +406,17 @@ func AddTestAddrsFromPubKeys(app *BabylonApp, ctx sdk.Context, pubKeys []cryptot // AddTestAddrs constructs and returns accNum amount of accounts with an // initial balance of accAmt in random order -func AddTestAddrs(app *BabylonApp, ctx sdk.Context, accNum int, accAmt sdk.Int) []sdk.AccAddress { +func AddTestAddrs(app *BabylonApp, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { return addTestAddrs(app, ctx, accNum, accAmt, createRandomAccounts) } // AddTestAddrs constructs and returns accNum amount of accounts with an // initial balance of accAmt in random order -func AddTestAddrsIncremental(app *BabylonApp, ctx sdk.Context, accNum int, accAmt sdk.Int) []sdk.AccAddress { +func AddTestAddrsIncremental(app *BabylonApp, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { return addTestAddrs(app, ctx, accNum, accAmt, createIncrementalAccounts) } -func addTestAddrs(app *BabylonApp, ctx sdk.Context, accNum int, accAmt sdk.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { +func addTestAddrs(app *BabylonApp, ctx sdk.Context, accNum int, accAmt math.Int, strategy GenerateAccountStrategy) []sdk.AccAddress { testAddrs := strategy(accNum) initCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), accAmt)) diff --git a/app/utils.go b/app/utils.go index b07c13dc9..9705ebe72 100644 --- a/app/utils.go +++ b/app/utils.go @@ -3,7 +3,6 @@ package app import ( "bytes" "fmt" - "io/ioutil" "os" "path/filepath" "text/template" @@ -128,5 +127,5 @@ func writeConfigToFile(configFilePath string, config *config.ClientConfig) error return err } - return ioutil.WriteFile(configFilePath, buffer.Bytes(), 0600) + return os.WriteFile(configFilePath, buffer.Bytes(), 0600) } diff --git a/btctxformatter/formatter.go b/btctxformatter/formatter.go index 061b88eda..527e37a4a 100644 --- a/btctxformatter/formatter.go +++ b/btctxformatter/formatter.go @@ -224,7 +224,7 @@ func (header *formatHeader) validateHeader( expectedPart uint8, ) error { if !bytes.Equal(header.tag, expectedTag) { - return errors.New(fmt.Sprintf("data does not have expected tag, expected tag: %v, got tag: %v", expectedTag, header.tag)) + return fmt.Errorf("data does not have expected tag, expected tag: %v, got tag: %v", expectedTag, header.tag) } if header.version > CurrentVersion { diff --git a/cmd/babylond/cmd/genbls.go b/cmd/babylond/cmd/genbls.go index 8f02249e5..4fb1d0dc8 100644 --- a/cmd/babylond/cmd/genbls.go +++ b/cmd/babylond/cmd/genbls.go @@ -2,23 +2,22 @@ package cmd import ( "errors" - "fmt" + "path/filepath" + "strings" + "github.com/babylonchain/babylon/app" "github.com/babylonchain/babylon/privval" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" tmconfig "github.com/tendermint/tendermint/config" tmos "github.com/tendermint/tendermint/libs/os" - "path/filepath" - "strings" ) func GenBlsCmd() *cobra.Command { cmd := &cobra.Command{ Use: "create-genesis-bls", Short: "Create genesis BLS key file for the validator", - Long: strings.TrimSpace( - fmt.Sprintf(`genbls will create a BLS key file that consists of + Long: strings.TrimSpace(`genbls will create a BLS key file that consists of {address, bls_pub_key, pop, pub_key} where pop is the proof-of-possession that proves the ownership of bls_pub_key which is bonded with pub_key. @@ -29,7 +28,6 @@ and the existence of priv_validator_key.json which contains the validator privat Example: $ babylond genbls --home ./ `), - ), RunE: func(cmd *cobra.Command, args []string) error { homeDir, _ := cmd.Flags().GetString(flags.FlagHome) diff --git a/cmd/babylond/cmd/genesis.go b/cmd/babylond/cmd/genesis.go index ed88c35be..9caf49a22 100644 --- a/cmd/babylond/cmd/genesis.go +++ b/cmd/babylond/cmd/genesis.go @@ -73,6 +73,9 @@ Example: } appState, genDoc, err = PrepareGenesis(clientCtx, appState, genDoc, genesisParams, chainID) + if err != nil { + return fmt.Errorf("failed to prepare genesis: %w", err) + } if err = mbm.ValidateGenesis(clientCtx.Codec, clientCtx.TxConfig, appState); err != nil { return fmt.Errorf("error validating genesis file: %s", err) diff --git a/cmd/babylond/cmd/root.go b/cmd/babylond/cmd/root.go index 93dcfc853..c04b2dac8 100644 --- a/cmd/babylond/cmd/root.go +++ b/cmd/babylond/cmd/root.go @@ -246,7 +246,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a homeDir := cast.ToString(appOpts.Get(flags.FlagHome)) snapshotDir := filepath.Join(homeDir, "data", "snapshots") - snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) + snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) //nolint:staticcheck // Prefer the old-fashioned way. if err != nil { panic(err) } diff --git a/crypto/bls12381/bls_test.go b/crypto/bls12381/bls_test.go index e87d9dc8d..d433e9499 100644 --- a/crypto/bls12381/bls_test.go +++ b/crypto/bls12381/bls_test.go @@ -1,8 +1,9 @@ package bls12381 import ( - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" ) // Tests single BLS sig verification @@ -86,7 +87,9 @@ func TestAccumulativeAggregation(t *testing.T) { } sig := Sign(sks[n-1], msgb) aggSig, err = AggrSig(aggSig, sig) + require.Nil(t, err) aggPK, err = AggrPK(aggPK, pks[n-1]) + require.Nil(t, err) res, err = Verify(aggSig, aggPK, msga) require.False(t, res) require.Nil(t, err) diff --git a/privval/file.go b/privval/file.go index e9f012d85..46e70831a 100644 --- a/privval/file.go +++ b/privval/file.go @@ -3,11 +3,11 @@ package privval import ( "errors" "fmt" - "github.com/cosmos/cosmos-sdk/crypto/codec" - "io/ioutil" "os" "path/filepath" + "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" tmcrypto "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" @@ -31,6 +31,8 @@ const ( ) // copied from github.com/tendermint/tendermint/privval/file.go" +// +//nolint:unused func voteToStep(vote *tmproto.Vote) int8 { switch vote.Type { case tmproto.PrevoteType: @@ -116,7 +118,7 @@ func LoadWrappedFilePVEmptyState(keyFilePath, stateFilePath string) *WrappedFile // If loadState is true, we load from the stateFilePath. Otherwise, we use an empty LastSignState. func loadWrappedFilePV(keyFilePath, stateFilePath string, loadState bool) *WrappedFilePV { - keyJSONBytes, err := ioutil.ReadFile(keyFilePath) + keyJSONBytes, err := os.ReadFile(keyFilePath) if err != nil { tmos.Exit(err.Error()) } @@ -135,7 +137,7 @@ func loadWrappedFilePV(keyFilePath, stateFilePath string, loadState bool) *Wrapp pvState := privval.FilePVLastSignState{} if loadState { - stateJSONBytes, err := ioutil.ReadFile(stateFilePath) + stateJSONBytes, err := os.ReadFile(stateFilePath) if err != nil { tmos.Exit(err.Error()) } diff --git a/simapp/state.go b/simapp/state.go index 6c130ac34..58f5c17ee 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -4,8 +4,8 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "math/rand" + "os" "time" sdkmath "cosmossdk.io/math" @@ -59,7 +59,7 @@ func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simty case config.ParamsFile != "": appParams := make(simtypes.AppParams) - bz, err := ioutil.ReadFile(config.ParamsFile) + bz, err := os.ReadFile(config.ParamsFile) if err != nil { panic(err) } @@ -198,7 +198,7 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { - bytes, err := ioutil.ReadFile(genesisFile) + bytes, err := os.ReadFile(genesisFile) if err != nil { panic(err) } diff --git a/simapp/utils.go b/simapp/utils.go index bf21621d5..110278212 100644 --- a/simapp/utils.go +++ b/simapp/utils.go @@ -2,7 +2,7 @@ package simapp import ( "encoding/json" - "io/ioutil" + "os" "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" @@ -39,12 +39,12 @@ func SetupSimulation(dirPrefix, dbName string) (simtypes.Config, dbm.DB, string, logger = log.NewNopLogger() } - dir, err := ioutil.TempDir("", dirPrefix) + dir, err := os.MkdirTemp("", dirPrefix) if err != nil { return simtypes.Config{}, nil, "", nil, false, err } - db, err := sdk.NewLevelDB(dbName, dir) + db, err := sdk.NewLevelDB(dbName, dir) //nolint:staticcheck // Prefer the old-fashioned way. if err != nil { return simtypes.Config{}, nil, "", nil, false, err } @@ -64,7 +64,7 @@ func SimulationOperations(app simapp.App, cdc codec.JSONCodec, config simtypes.C } if config.ParamsFile != "" { - bz, err := ioutil.ReadFile(config.ParamsFile) + bz, err := os.ReadFile(config.ParamsFile) if err != nil { panic(err) } diff --git a/test/utils.go b/test/utils.go index ca63c00f4..532a78527 100644 --- a/test/utils.go +++ b/test/utils.go @@ -164,6 +164,7 @@ func GenerateNEmptyHeaders(tip *bbn.BTCHeaderBytes, n uint64) []bbn.BTCHeaderByt return headers } +//nolint:unused func (b *TestTxSender) insertSpvProof(p1 *btccheckpoint.BTCSpvProof, p2 *btccheckpoint.BTCSpvProof) (*txservice.BroadcastTxResponse, error) { address := b.getSenderAddress() @@ -220,6 +221,7 @@ func (b *TestTxSender) getSelfAccount() (acctypes.AccountI, error) { return b.getAccount(b.getSenderAddress()) } +//nolint:unused func (b *TestTxSender) insertBTCHeaders(currentTip uint64, headers []bbn.BTCHeaderBytes) error { lenHeaders := len(headers) @@ -242,6 +244,7 @@ func (b *TestTxSender) insertBTCHeaders(currentTip uint64, headers []bbn.BTCHead return nil } +//nolint:unused func (b *TestTxSender) insertNEmptyBTCHeaders(n uint64) error { currentTip := b.GetBtcTip() headers := GenerateNEmptyHeaders(currentTip.Header, n) @@ -282,7 +285,7 @@ func LatestHeight(c *grpc.ClientConn) (int64, error) { return 0, err } - return latestResponse.Block.Header.Height, nil + return latestResponse.Block.Header.Height, nil //nolint:staticcheck // deprecated call, suggests to use sdk_block instead } func WaitForHeight(c *grpc.ClientConn, h int64) (int64, error) { diff --git a/types/btc_header_bytes_test.go b/types/btc_header_bytes_test.go index 67163afa4..9093c671a 100644 --- a/types/btc_header_bytes_test.go +++ b/types/btc_header_bytes_test.go @@ -3,10 +3,11 @@ package types_test import ( "bytes" "encoding/json" - "github.com/babylonchain/babylon/testutil/datagen" - "github.com/babylonchain/babylon/types" "math/rand" "testing" + + "github.com/babylonchain/babylon/testutil/datagen" + "github.com/babylonchain/babylon/types" ) func FuzzBTCHeaderBytesBytesOps(f *testing.F) { @@ -45,7 +46,7 @@ func FuzzBTCHeaderBytesBytesOps(f *testing.F) { } t.Skip() } - if bytes.Compare(m, bz) != 0 { + if !bytes.Equal(m, bz) { t.Errorf("Marshal returned %s while %s was expected", m, bz) } @@ -60,7 +61,7 @@ func FuzzBTCHeaderBytesBytesOps(f *testing.F) { if sz != len(bz) { t.Errorf("MarhslTo marshalled %d bytes instead of %d", sz, len(bz)) } - if bytes.Compare(m, bz) != 0 { + if !bytes.Equal(m, bz) { t.Errorf("MarshalTo copied %s while %s was expected", m, bz) } @@ -160,7 +161,7 @@ func FuzzBTCHeaderBytesJSONOps(f *testing.F) { } t.Skip() } - if bytes.Compare(h, jsonHex) != 0 { + if !bytes.Equal(h, jsonHex) { t.Errorf("Marshal returned %s while %s was expected", h, jsonHex) } if invalidHeader { diff --git a/types/btc_header_hash_bytes_test.go b/types/btc_header_hash_bytes_test.go index 116798162..7395bf936 100644 --- a/types/btc_header_hash_bytes_test.go +++ b/types/btc_header_hash_bytes_test.go @@ -3,11 +3,12 @@ package types_test import ( "bytes" "encoding/json" + "math/rand" + "testing" + "github.com/babylonchain/babylon/testutil/datagen" "github.com/babylonchain/babylon/types" "github.com/btcsuite/btcd/chaincfg/chainhash" - "math/rand" - "testing" ) func FuzzBTCHeaderHashBytesBytesOps(f *testing.F) { @@ -48,7 +49,7 @@ func FuzzBTCHeaderHashBytesBytesOps(f *testing.F) { } t.Skip() } - if bytes.Compare(m, bz) != 0 { + if !bytes.Equal(m, bz) { t.Errorf("Marshal returned %s while %s was expected", m, bz) } @@ -63,7 +64,7 @@ func FuzzBTCHeaderHashBytesBytesOps(f *testing.F) { if sz != len(bz) { t.Errorf("MarshalTo marshalled %d bytes instead of %d", sz, len(bz)) } - if bytes.Compare(m, bz) != 0 { + if !bytes.Equal(m, bz) { t.Errorf("MarshalTo copied %s while %s was expected", m, bz) } @@ -169,7 +170,7 @@ func FuzzBTCHeaderHashBytesJSONOps(f *testing.F) { } t.Skip() } - if bytes.Compare(h, jsonHex) != 0 { + if !bytes.Equal(h, jsonHex) { t.Errorf("Marshal returned %s while %s was expected", h, jsonHex) } diff --git a/x/btccheckpoint/client/cli/tx.go b/x/btccheckpoint/client/cli/tx.go index 1fcba5d82..c6358bc6b 100644 --- a/x/btccheckpoint/client/cli/tx.go +++ b/x/btccheckpoint/client/cli/tx.go @@ -15,6 +15,7 @@ var ( DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds()) ) +//nolint:unused const ( flagPacketTimeoutTimestamp = "packet-timeout-timestamp" listSeparator = "," diff --git a/x/btccheckpoint/handler.go b/x/btccheckpoint/handler.go index 7c6d10724..4882127c9 100644 --- a/x/btccheckpoint/handler.go +++ b/x/btccheckpoint/handler.go @@ -13,7 +13,6 @@ import ( func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) switch msg := msg.(type) { default: diff --git a/x/btccheckpoint/keeper/msg_server_test.go b/x/btccheckpoint/keeper/msg_server_test.go index 268588f5c..406bd6044 100644 --- a/x/btccheckpoint/keeper/msg_server_test.go +++ b/x/btccheckpoint/keeper/msg_server_test.go @@ -38,6 +38,7 @@ func b2Hash(m *btcctypes.MsgInsertBTCSpvProof) *bbn.BTCHeaderHashBytes { return m.Proofs[1].ConfirmingBtcHeader.Hash() } +//nolint:unused func b2TxIdx(m *btcctypes.MsgInsertBTCSpvProof) uint32 { return m.Proofs[1].BtcTransactionIndex } diff --git a/x/btccheckpoint/module.go b/x/btccheckpoint/module.go index 8225e68ec..debdbf97b 100644 --- a/x/btccheckpoint/module.go +++ b/x/btccheckpoint/module.go @@ -77,7 +77,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck // generally we don't handle errors in these registration functions } // GetTxCmd returns the capability module's root tx command. diff --git a/x/btccheckpoint/types/btcutils_test.go b/x/btccheckpoint/types/btcutils_test.go index d4d08b0fd..1f27123ed 100644 --- a/x/btccheckpoint/types/btcutils_test.go +++ b/x/btccheckpoint/types/btcutils_test.go @@ -11,6 +11,7 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" ) +//nolint:unused func hashFromString(s string) *chainhash.Hash { hash, e := chainhash.NewHashFromStr(s) if e != nil { diff --git a/x/btclightclient/handler.go b/x/btclightclient/handler.go index 96a595979..5f6d8b152 100644 --- a/x/btclightclient/handler.go +++ b/x/btclightclient/handler.go @@ -12,7 +12,7 @@ import ( // NewHandler ... func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) + _ = ctx.WithEventManager(sdk.NewEventManager()) switch msg := msg.(type) { default: diff --git a/x/btclightclient/keeper/base_btc_header_test.go b/x/btclightclient/keeper/base_btc_header_test.go index 4f857c826..a7c2bdd86 100644 --- a/x/btclightclient/keeper/base_btc_header_test.go +++ b/x/btclightclient/keeper/base_btc_header_test.go @@ -29,7 +29,7 @@ func FuzzKeeperBaseBTCHeader(f *testing.F) { blcKeeper.SetBaseBTCHeader(ctx, *headerInfo1) retrievedHeaderInfo = blcKeeper.GetBaseBTCHeader(ctx) if retrievedHeaderInfo == nil { - t.Errorf("GetBaseBTCHeader returned nil when a BaseBTCHeader had been set") + t.Fatalf("GetBaseBTCHeader returned nil when a BaseBTCHeader had been set") } if !headerInfo1.Eq(retrievedHeaderInfo) { t.Errorf("GetBaseBTCHeader did not set the provided BaseBTCHeader") diff --git a/x/btclightclient/keeper/grpc_query_test.go b/x/btclightclient/keeper/grpc_query_test.go index 89195435d..e8c25630b 100644 --- a/x/btclightclient/keeper/grpc_query_test.go +++ b/x/btclightclient/keeper/grpc_query_test.go @@ -1,11 +1,12 @@ package keeper_test import ( + "math/rand" + "testing" + "github.com/babylonchain/babylon/testutil/datagen" bbn "github.com/babylonchain/babylon/types" "github.com/cosmos/cosmos-sdk/types/query" - "math/rand" - "testing" testkeeper "github.com/babylonchain/babylon/testutil/keeper" "github.com/babylonchain/babylon/x/btclightclient/types" @@ -143,7 +144,7 @@ func FuzzContainsQuery(f *testing.F) { // Test nil input resp, err := blcKeeper.Contains(sdkCtx, nil) if resp != nil { - t.Errorf("Nil input led to a non-nil response") + t.Fatalf("Nil input led to a non-nil response") } if err == nil { t.Errorf("Nil input led to a nil error") @@ -159,7 +160,7 @@ func FuzzContainsQuery(f *testing.F) { t.Errorf("Valid input let to an error: %s", err) } if resp == nil { - t.Errorf("Valid input led to nil response") + t.Fatalf("Valid input led to nil response") } if resp.Contains { t.Errorf("Non existent header hash led to true result") @@ -172,7 +173,7 @@ func FuzzContainsQuery(f *testing.F) { t.Errorf("Valid input let to an error: %s", err) } if resp == nil { - t.Errorf("Valid input led to nil response") + t.Fatalf("Valid input led to nil response") } if !resp.Contains { t.Errorf("Existent header hash led to false result") @@ -350,7 +351,7 @@ func FuzzTipQuery(f *testing.F) { t.Errorf("valid input led to an error: %s", err) } if resp == nil { - t.Errorf("Valid input led to nil response") + t.Fatalf("Valid input led to nil response") } if !resp.Header.Eq(tree.GetTip()) { t.Errorf("Invalid header returned. Expected %s, got %s", tree.GetTip().Hash, resp.Header.Hash) @@ -385,12 +386,13 @@ func FuzzBaseHeaderQuery(f *testing.F) { tree := genRandomTree(blcKeeper, ctx, 1, 10) query := types.NewQueryBaseHeaderRequest() + resp, err = blcKeeper.BaseHeader(sdkCtx, query) if err != nil { t.Errorf("valid input led to an error: %s", err) } if resp == nil { - t.Errorf("Valid input led to nil response") + t.Fatalf("Valid input led to nil response") } if !resp.Header.Eq(tree.GetRoot()) { t.Errorf("Invalid header returned. Expected %s, got %s", tree.GetRoot().Hash, resp.Header.Hash) diff --git a/x/btclightclient/keeper/state_test.go b/x/btclightclient/keeper/state_test.go index b25910384..37f77e9b7 100644 --- a/x/btclightclient/keeper/state_test.go +++ b/x/btclightclient/keeper/state_test.go @@ -2,12 +2,13 @@ package keeper_test import ( "fmt" + "math/rand" + "testing" + "github.com/babylonchain/babylon/testutil/datagen" testkeeper "github.com/babylonchain/babylon/testutil/keeper" "github.com/babylonchain/babylon/x/btclightclient/types" sdk "github.com/cosmos/cosmos-sdk/types" - "math/rand" - "testing" ) func FuzzHeadersStateCreateHeader(f *testing.F) { @@ -45,7 +46,7 @@ func FuzzHeadersStateCreateHeader(f *testing.F) { // Test whether the tip and storages are set tip := blcKeeper.HeadersState(ctx).GetTip() if tip == nil { - t.Errorf("Creation of base header did not lead to creation of tip") + t.Fatalf("Creation of base header did not lead to creation of tip") } if !baseHeader.Eq(tip) { t.Errorf("Tip does not correspond to the one submitted %s %s", baseHeader.Hash, tip.Hash) @@ -82,7 +83,7 @@ func FuzzHeadersStateCreateHeader(f *testing.F) { // Check whether the tip was updated tip = blcKeeper.HeadersState(ctx).GetTip() if tip == nil { - t.Errorf("Tip became nil instead of getting updated") + t.Fatalf("Tip became nil instead of getting updated") } if !childMostWork.Eq(tip) { t.Errorf("Tip did not get properly updated") @@ -343,7 +344,7 @@ func FuzzHeadersStateHeadersByHeight(f *testing.F) { for i = 0; i < numHeaders; i++ { headerInfo := datagen.GenRandomBTCHeaderInfoWithParent(baseHeader) hashCount[headerInfo.Hash.MarshalHex()] = true - blcKeeper.InsertHeader(ctx, headerInfo.Header) + blcKeeper.InsertHeader(ctx, headerInfo.Header) //nolint:errcheck } var headersAdded uint64 = 0 @@ -458,8 +459,8 @@ func FuzzHeadersStateGetHighestCommonAncestor(f *testing.F) { t.Skip() } // Insert them into storage - blcKeeper.InsertHeader(ctx, childRoot1.Header) - blcKeeper.InsertHeader(ctx, childRoot2.Header) + blcKeeper.InsertHeader(ctx, childRoot1.Header) //nolint:errcheck + blcKeeper.InsertHeader(ctx, childRoot2.Header) //nolint:errcheck // Add them into the data structures maintained by the tree tree.Add(childRoot1, commonAncestor) tree.Add(childRoot2, commonAncestor) diff --git a/x/btclightclient/keeper/triggers.go b/x/btclightclient/keeper/triggers.go index f6dab880b..b3be7b9cc 100644 --- a/x/btclightclient/keeper/triggers.go +++ b/x/btclightclient/keeper/triggers.go @@ -9,19 +9,19 @@ func (k Keeper) triggerHeaderInserted(ctx sdk.Context, headerInfo *types.BTCHead // Trigger AfterBTCHeaderInserted hook k.AfterBTCHeaderInserted(ctx, headerInfo) // Emit HeaderInserted event - ctx.EventManager().EmitTypedEvent(&types.EventBTCHeaderInserted{Header: headerInfo}) + ctx.EventManager().EmitTypedEvent(&types.EventBTCHeaderInserted{Header: headerInfo}) //nolint:errcheck } func (k Keeper) triggerRollBack(ctx sdk.Context, headerInfo *types.BTCHeaderInfo) { // Trigger AfterBTCRollBack hook k.AfterBTCRollBack(ctx, headerInfo) // Emit BTCRollBack event - ctx.EventManager().EmitTypedEvent(&types.EventBTCRollBack{Header: headerInfo}) + ctx.EventManager().EmitTypedEvent(&types.EventBTCRollBack{Header: headerInfo}) //nolint:errcheck } func (k Keeper) triggerRollForward(ctx sdk.Context, headerInfo *types.BTCHeaderInfo) { // Trigger AfterBTCRollForward hook k.AfterBTCRollForward(ctx, headerInfo) // Emit BTCRollForward event - ctx.EventManager().EmitTypedEvent(&types.EventBTCRollForward{Header: headerInfo}) + ctx.EventManager().EmitTypedEvent(&types.EventBTCRollForward{Header: headerInfo}) //nolint:errcheck } diff --git a/x/btclightclient/module.go b/x/btclightclient/module.go index ce9f159fe..f84dd82a6 100644 --- a/x/btclightclient/module.go +++ b/x/btclightclient/module.go @@ -77,7 +77,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck // generally we don't handle errors here } // GetTxCmd returns the capability module's root tx command. diff --git a/x/btclightclient/types/btc_header_info_test.go b/x/btclightclient/types/btc_header_info_test.go index b4d85f361..eb82a5021 100644 --- a/x/btclightclient/types/btc_header_info_test.go +++ b/x/btclightclient/types/btc_header_info_test.go @@ -1,12 +1,12 @@ package types_test import ( - sdkmath "cosmossdk.io/math" - "bytes" "math/rand" "testing" + sdkmath "cosmossdk.io/math" + "github.com/babylonchain/babylon/testutil/datagen" "github.com/babylonchain/babylon/x/btclightclient/types" ) @@ -15,7 +15,6 @@ func FuzzNewHeaderInfo(f *testing.F) { datagen.AddRandomSeedsToFuzzer(f, 100) f.Fuzz(func(t *testing.T, seed int64) { - // If either of the hash strings is not of appropriate length // or not valid hex, generate a random hex randomly rand.Seed(seed) @@ -28,7 +27,7 @@ func FuzzNewHeaderInfo(f *testing.F) { headerInfo := types.NewBTCHeaderInfo(expectedHeaderBytes, expectedHeaderHashBytes, height, &work) // Check that all attributes are properly set if headerInfo == nil { - t.Errorf("returned object is nil") + t.Fatalf("returned object is nil") } if headerInfo.Header == nil { t.Errorf("Header inside header info is nil") @@ -38,12 +37,12 @@ func FuzzNewHeaderInfo(f *testing.F) { } gotHeaderBytes := headerInfo.Header.MustMarshal() - if bytes.Compare(expectedHeaderBytes.MustMarshal(), gotHeaderBytes) != 0 { + if !bytes.Equal(expectedHeaderBytes.MustMarshal(), gotHeaderBytes) { t.Errorf("Expected header %s got %s", expectedHeaderBytes, gotHeaderBytes) } gotHashBytes := *headerInfo.Hash - if bytes.Compare(expectedHeaderHashBytes.MustMarshal(), gotHashBytes.MustMarshal()) != 0 { + if !bytes.Equal(expectedHeaderHashBytes.MustMarshal(), gotHashBytes.MustMarshal()) { t.Errorf("Expected header hash %s got %s", expectedHeaderHashBytes, gotHashBytes) } diff --git a/x/btclightclient/types/keys_test.go b/x/btclightclient/types/keys_test.go index 820443bb6..39d4d2bc9 100644 --- a/x/btclightclient/types/keys_test.go +++ b/x/btclightclient/types/keys_test.go @@ -2,12 +2,13 @@ package types_test import ( "bytes" + "math/rand" + "testing" + "github.com/babylonchain/babylon/testutil/datagen" bbn "github.com/babylonchain/babylon/types" "github.com/babylonchain/babylon/x/btclightclient/types" sdk "github.com/cosmos/cosmos-sdk/types" - "math/rand" - "testing" ) func FuzzHeadersObjectKey(f *testing.F) { @@ -28,7 +29,7 @@ func FuzzHeadersObjectKey(f *testing.F) { expectedKey = append(expectedKey, headerHashBytes...) gotKey := types.HeadersObjectKey(height, &headerHash) - if bytes.Compare(expectedKey, gotKey) != 0 { + if !bytes.Equal(expectedKey, gotKey) { t.Errorf("Expected headers object key %s got %s", expectedKey, gotKey) } }) @@ -46,21 +47,21 @@ func FuzzHeadersObjectHeightAndWorkKey(f *testing.F) { var expectedHeightKey []byte expectedHeightKey = append(expectedHeightKey, headerHashBytes...) gotHeightKey := types.HeadersObjectHeightKey(&headerHash) - if bytes.Compare(expectedHeightKey, gotHeightKey) != 0 { + if !bytes.Equal(expectedHeightKey, gotHeightKey) { t.Errorf("Expected headers object height key %s got %s", expectedHeightKey, gotHeightKey) } var expectedWorkKey []byte expectedWorkKey = append(expectedWorkKey, headerHashBytes...) gotWorkKey := types.HeadersObjectWorkKey(&headerHash) - if bytes.Compare(expectedWorkKey, gotWorkKey) != 0 { + if !bytes.Equal(expectedWorkKey, gotWorkKey) { t.Errorf("Expected headers object work key %s got %s", expectedWorkKey, gotWorkKey) } }) } func TestTipKey(t *testing.T) { - if bytes.Compare(types.TipKey(), types.TipPrefix) != 0 { + if !bytes.Equal(types.TipKey(), types.TipPrefix) { t.Errorf("Expected tip key %s got %s", types.TipKey(), types.TipPrefix) } } diff --git a/x/btclightclient/types/msgs_test.go b/x/btclightclient/types/msgs_test.go index 63dfd315d..f6a9769a3 100644 --- a/x/btclightclient/types/msgs_test.go +++ b/x/btclightclient/types/msgs_test.go @@ -1,12 +1,12 @@ package types_test import ( - sdkmath "cosmossdk.io/math" - "bytes" "math/rand" "testing" + sdkmath "cosmossdk.io/math" + "github.com/babylonchain/babylon/testutil/datagen" bbn "github.com/babylonchain/babylon/types" "github.com/babylonchain/babylon/x/btclightclient/types" @@ -28,7 +28,7 @@ func FuzzMsgInsertHeader(f *testing.F) { // Get the signer structure var signer sdk.AccAddress - signer.Unmarshal(addressBytes) + signer.Unmarshal(addressBytes) //nolint:errcheck // this is a test // Perform modifications on the header errorKind = rand.Intn(2) @@ -64,12 +64,12 @@ func FuzzMsgInsertHeader(f *testing.F) { t.Errorf("Valid parameters led to error") } if msgInsertHeader == nil { - t.Errorf("nil returned") + t.Fatalf("nil returned") } if msgInsertHeader.Header == nil { t.Errorf("nil header") } - if bytes.Compare(newHeader.MustMarshal(), msgInsertHeader.Header.MustMarshal()) != 0 { + if !bytes.Equal(newHeader.MustMarshal(), msgInsertHeader.Header.MustMarshal()) { t.Errorf("Expected header bytes %s got %s", newHeader.MustMarshal(), msgInsertHeader.Header.MustMarshal()) } @@ -82,5 +82,4 @@ func FuzzMsgInsertHeader(f *testing.F) { t.Errorf("Invalid message did not fail") } }) - } diff --git a/x/btclightclient/types/querier_test.go b/x/btclightclient/types/querier_test.go index dc83af439..064f3a12f 100644 --- a/x/btclightclient/types/querier_test.go +++ b/x/btclightclient/types/querier_test.go @@ -14,7 +14,7 @@ import ( func TestNewQueryParamsRequest(t *testing.T) { newQueryParams := types.NewQueryParamsRequest() if newQueryParams == nil { - t.Errorf("A nil object was returned") + t.Fatalf("A nil object was returned") } emptyQueryParams := types.QueryParamsRequest{} @@ -31,7 +31,7 @@ func TestNewQueryHashesRequest(t *testing.T) { } newQueryHashes := types.NewQueryHashesRequest(&req) if newQueryHashes == nil { - t.Errorf("A nil object was returned") + t.Fatalf("A nil object was returned") } expectedQueryHashes := types.QueryHashesRequest{ @@ -55,12 +55,12 @@ func FuzzNewQueryContainsRequest(f *testing.F) { t.Errorf("returned error for valid hex %s", hexHash) } if queryContains == nil { - t.Errorf("returned a nil reference to a query") + t.Fatalf("returned a nil reference to a query") } if queryContains.Hash == nil { t.Errorf("has an empty hash attribute") } - if bytes.Compare(*(queryContains.Hash), btcHeaderHashBytes.MustMarshal()) != 0 { + if !bytes.Equal(*(queryContains.Hash), btcHeaderHashBytes.MustMarshal()) { t.Errorf("expected hash bytes %s got %s", btcHeaderHashBytes.MustMarshal(), *(queryContains.Hash)) } }) @@ -73,7 +73,7 @@ func TestNewQueryMainChainRequest(t *testing.T) { } newQueryMainChain := types.NewQueryMainChainRequest(&req) if newQueryMainChain == nil { - t.Errorf("A nil object was returned") + t.Fatalf("A nil object was returned") } expectedQueryMainChain := types.QueryMainChainRequest{ diff --git a/x/checkpointing/client/cli/tx.go b/x/checkpointing/client/cli/tx.go index 555521e25..d22211c75 100644 --- a/x/checkpointing/client/cli/tx.go +++ b/x/checkpointing/client/cli/tx.go @@ -2,20 +2,22 @@ package cli import ( "fmt" + "strconv" + "strings" + "github.com/babylonchain/babylon/crypto/bls12381" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" cosmoscli "github.com/cosmos/cosmos-sdk/x/staking/client/cli" "github.com/spf13/cobra" - "strconv" - "strings" "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" "github.com/babylonchain/babylon/x/checkpointing/types" ) +//nolint:unused const ( flagPacketTimeoutTimestamp = "packet-timeout-timestamp" listSeparator = "," @@ -82,7 +84,7 @@ func CmdTxAddBlsSig() *cobra.Command { func CmdWrappedCreateValidator() *cobra.Command { cmd := cosmoscli.NewCreateValidatorCmd() cmd.Long = strings.TrimSpace( - fmt.Sprintf(`create-validator will create a new validator initialized + string(`create-validator will create a new validator initialized with a self-delegation to it using the BLS key generated for the validator (e.g., via babylond create-bls-key). This command creates a MsgWrappedCreateValidator message which is a wrapper of cosmos-sdk's diff --git a/x/checkpointing/client/cli/utils.go b/x/checkpointing/client/cli/utils.go index 5a246042f..a29c89903 100644 --- a/x/checkpointing/client/cli/utils.go +++ b/x/checkpointing/client/cli/utils.go @@ -3,9 +3,10 @@ package cli import ( "errors" "fmt" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "path/filepath" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + flag "github.com/spf13/pflag" "github.com/cosmos/cosmos-sdk/client" @@ -104,8 +105,10 @@ func buildWrappedCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs home, _ := fs.GetString(flags.FlagHome) valKey, err := getValKeyFromFile(home) + if err != nil { + return txf, nil, err + } wrappedMsg, err := types.NewMsgWrappedCreateValidator(msg, &valKey.BlsPubkey, valKey.PoP) - if err != nil { return txf, nil, err } diff --git a/x/checkpointing/genesis_test.go b/x/checkpointing/genesis_test.go index 42c045554..542177053 100644 --- a/x/checkpointing/genesis_test.go +++ b/x/checkpointing/genesis_test.go @@ -48,6 +48,7 @@ func TestInitGenesis(t *testing.T) { addr, err := sdk.ValAddressFromBech32(genKeys[i].ValidatorAddress) require.NoError(t, err) blsKey, err := ckptKeeper.GetBlsPubKey(ctx, addr) + require.NoError(t, err) require.True(t, genKeys[i].BlsKey.Pubkey.Equal(blsKey)) } } diff --git a/x/checkpointing/handler.go b/x/checkpointing/handler.go index a572129ec..a939e5a03 100644 --- a/x/checkpointing/handler.go +++ b/x/checkpointing/handler.go @@ -12,7 +12,7 @@ import ( // NewHandler ... func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) + _ = ctx.WithEventManager(sdk.NewEventManager()) switch msg := msg.(type) { default: diff --git a/x/checkpointing/keeper/grpc_query_checkpoint.go b/x/checkpointing/keeper/grpc_query_checkpoint.go index d48354e9b..108fb8bbc 100644 --- a/x/checkpointing/keeper/grpc_query_checkpoint.go +++ b/x/checkpointing/keeper/grpc_query_checkpoint.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "github.com/babylonchain/babylon/x/checkpointing/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" @@ -81,11 +82,11 @@ func (k Keeper) RecentEpochStatusCount(ctx context.Context, req *types.QueryRece sdkCtx := sdk.UnwrapSDKContext(ctx) // minus 1 is because the current epoch is not finished tipEpoch := k.GetEpoch(sdkCtx).EpochNumber - 1 - if tipEpoch < 0 { + if tipEpoch < 0 { //nolint:staticcheck // uint64 doesn't go below zero but we want to let people know that's an invalid request. return nil, status.Error(codes.InvalidArgument, "invalid request") } targetEpoch := tipEpoch - req.EpochCount + 1 - if targetEpoch < 0 { + if targetEpoch < 0 { //nolint:staticcheck // uint64 doesn't go below zero targetEpoch = 0 } // iterate epochs in the reverse order and count epoch numbers for each status diff --git a/x/checkpointing/keeper/keeper_test.go b/x/checkpointing/keeper/keeper_test.go index b213b3a37..70fd5430a 100644 --- a/x/checkpointing/keeper/keeper_test.go +++ b/x/checkpointing/keeper/keeper_test.go @@ -157,7 +157,7 @@ func FuzzKeeperCheckpointEpoch(f *testing.F) { datagen.GenRandomByteArray(btctxformatter.BlsSigLength), t, ) - epoch, err = ckptKeeper.CheckpointEpoch(ctx, btcCkptBytes) + _, err = ckptKeeper.CheckpointEpoch(ctx, btcCkptBytes) require.ErrorIs(t, err, types.ErrInvalidRawCheckpoint) // 3. check a conflicting checkpoint; signed on a random lastcommithash diff --git a/x/checkpointing/keeper/msg_server_test.go b/x/checkpointing/keeper/msg_server_test.go index 78580812c..09628e884 100644 --- a/x/checkpointing/keeper/msg_server_test.go +++ b/x/checkpointing/keeper/msg_server_test.go @@ -106,6 +106,9 @@ func buildMsgWrappedCreateValidator(addr sdk.AccAddress) (*types.MsgWrappedCreat } blsPrivKey := bls12381.GenPrivKey() pop, err := privval.BuildPoP(tmValPrivkey, blsPrivKey) + if err != nil { + return nil, err + } blsPubKey := blsPrivKey.PubKey() return types.NewMsgWrappedCreateValidator(createValidatorMsg, &blsPubKey, pop) diff --git a/x/checkpointing/module.go b/x/checkpointing/module.go index c185c105a..9531c2c3e 100644 --- a/x/checkpointing/module.go +++ b/x/checkpointing/module.go @@ -77,7 +77,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck // generally we don't handle errors here } // GetTxCmd returns the capability module's root tx command. diff --git a/x/checkpointing/types/genesis.go b/x/checkpointing/types/genesis.go index f1518f396..da816d210 100644 --- a/x/checkpointing/types/genesis.go +++ b/x/checkpointing/types/genesis.go @@ -3,7 +3,7 @@ package types import ( "encoding/json" "errors" - "io/ioutil" + "os" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -59,7 +59,7 @@ func NewGenesisKey(delAddr sdk.ValAddress, blsPubKey *bls12381.PublicKey, pop *P } func LoadGenesisKeyFromFile(filePath string) (*GenesisKey, error) { - genBlsJSONBytes, err := ioutil.ReadFile(filePath) + genBlsJSONBytes, err := os.ReadFile(filePath) if err != nil { return nil, err } diff --git a/x/checkpointing/types/types.go b/x/checkpointing/types/types.go index 7f12b47a7..ca4ece4eb 100644 --- a/x/checkpointing/types/types.go +++ b/x/checkpointing/types/types.go @@ -5,6 +5,7 @@ import ( "crypto/sha256" "encoding/hex" "errors" + "github.com/babylonchain/babylon/crypto/bls12381" epochingtypes "github.com/babylonchain/babylon/x/epoching/types" "github.com/boljen/go-bitmap" @@ -201,8 +202,5 @@ func BytesToCkptWithMeta(cdc codec.BinaryCodec, bz []byte) (*RawCheckpointWithMe } func (m RawCkptHash) Equals(h RawCkptHash) bool { - if bytes.Compare(m.Bytes(), h.Bytes()) == 0 { - return true - } - return false + return bytes.Equal(m.Bytes(), h.Bytes()) } diff --git a/x/checkpointing/types/utils.go b/x/checkpointing/types/utils.go index 9d178777e..896280790 100644 --- a/x/checkpointing/types/utils.go +++ b/x/checkpointing/types/utils.go @@ -51,6 +51,9 @@ func (m RawCkptHash) Bytes() []byte { func FromBTCCkptBytesToRawCkpt(btcCkptBytes []byte) (*RawCheckpoint, error) { btcCkpt, err := btctxformatter.DecodeRawCheckpoint(btctxformatter.CurrentVersion, btcCkptBytes) + if err != nil { + return nil, err + } var lch LastCommitHash err = lch.Unmarshal(btcCkpt.LastCommitHash) if err != nil { diff --git a/x/epoching/keeper/epoch_msg_queue.go b/x/epoching/keeper/epoch_msg_queue.go index 366dae51b..6e70cee6f 100644 --- a/x/epoching/keeper/epoch_msg_queue.go +++ b/x/epoching/keeper/epoch_msg_queue.go @@ -144,8 +144,11 @@ func (k Keeper) HandleQueuedMsg(ctx sdk.Context, msg *types.QueuedMessage) (*sdk return nil, err } // self-bonded to the created validator - k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_CREATED) - k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_BONDED) + k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_CREATED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack + if err != nil { + return nil, err + } + k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_BONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack case *types.QueuedMessage_MsgDelegate: delAddr, err := sdk.AccAddressFromBech32(unwrappedMsg.MsgDelegate.DelegatorAddress) if err != nil { @@ -156,8 +159,8 @@ func (k Keeper) HandleQueuedMsg(ctx sdk.Context, msg *types.QueuedMessage) (*sdk return nil, err } // created and bonded to the validator - k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_CREATED) - k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_BONDED) + k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_CREATED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack + k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_BONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack case *types.QueuedMessage_MsgUndelegate: delAddr, err := sdk.AccAddressFromBech32(unwrappedMsg.MsgUndelegate.DelegatorAddress) if err != nil { @@ -169,7 +172,7 @@ func (k Keeper) HandleQueuedMsg(ctx sdk.Context, msg *types.QueuedMessage) (*sdk } // unbonding from the validator // (in `ApplyMatureUnbonding`) AFTER mature, unbonded from the validator - k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_UNBONDING) + k.RecordNewDelegationState(ctx, delAddr, valAddr, types.BondState_UNBONDING) //nolint:errcheck // either we ignore the error here, or propoagate up the stack case *types.QueuedMessage_MsgBeginRedelegate: delAddr, err := sdk.AccAddressFromBech32(unwrappedMsg.MsgBeginRedelegate.DelegatorAddress) if err != nil { @@ -181,7 +184,7 @@ func (k Keeper) HandleQueuedMsg(ctx sdk.Context, msg *types.QueuedMessage) (*sdk } // unbonding from the source validator // (in `ApplyMatureUnbonding`) AFTER mature, unbonded from the source validator, created/bonded to the destination validator - k.RecordNewDelegationState(ctx, delAddr, srcValAddr, types.BondState_UNBONDING) + k.RecordNewDelegationState(ctx, delAddr, srcValAddr, types.BondState_UNBONDING) //nolint:errcheck // either we ignore the error here, or propoagate up the stack default: panic(sdkerrors.Wrap(types.ErrInvalidQueuedMessageType, msg.String())) } @@ -189,7 +192,7 @@ func (k Keeper) HandleQueuedMsg(ctx sdk.Context, msg *types.QueuedMessage) (*sdk return result, nil } -// based on a function with the same name in `baseapp.go`` +// based on a function with the same name in `baseapp.go` func cacheTxContext(ctx sdk.Context, txid []byte, msgid []byte, height uint64) (sdk.Context, sdk.CacheMultiStore) { ms := ctx.MultiStore() // TODO: https://github.com/cosmos/cosmos-sdk/issues/2824 diff --git a/x/epoching/keeper/epoch_msg_queue_test.go b/x/epoching/keeper/epoch_msg_queue_test.go index 822a778a2..6ca85d841 100644 --- a/x/epoching/keeper/epoch_msg_queue_test.go +++ b/x/epoching/keeper/epoch_msg_queue_test.go @@ -1,11 +1,12 @@ package keeper_test import ( - appparams "github.com/babylonchain/babylon/app/params" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "math/rand" "testing" + appparams "github.com/babylonchain/babylon/app/params" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/babylonchain/babylon/x/epoching/testepoching" "github.com/babylonchain/babylon/x/epoching/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -142,7 +143,7 @@ func FuzzHandleQueuedMsg_MsgWrappedUndelegate(f *testing.F) { rand.Seed(seed) helper := testepoching.NewHelperWithValSet(t) - ctx, keeper, genAccs := helper.Ctx, helper.EpochingKeeper, helper.GenAccs + _, keeper, genAccs := helper.Ctx, helper.EpochingKeeper, helper.GenAccs // get genesis account's address, whose holder will be the delegator require.NotNil(t, genAccs) @@ -150,7 +151,7 @@ func FuzzHandleQueuedMsg_MsgWrappedUndelegate(f *testing.F) { genAddr := genAccs[0].GetAddress() // BeginBlock of block 1, and thus entering epoch 1 - ctx = helper.BeginBlock() + ctx := helper.BeginBlock() epoch := keeper.GetEpoch(ctx) require.Equal(t, uint64(1), epoch.EpochNumber) @@ -219,7 +220,7 @@ func FuzzHandleQueuedMsg_MsgWrappedBeginRedelegate(f *testing.F) { rand.Seed(seed) helper := testepoching.NewHelperWithValSet(t) - ctx, keeper, genAccs := helper.Ctx, helper.EpochingKeeper, helper.GenAccs + _, keeper, genAccs := helper.Ctx, helper.EpochingKeeper, helper.GenAccs // get genesis account's address, whose holder will be the delegator require.NotNil(t, genAccs) @@ -227,7 +228,7 @@ func FuzzHandleQueuedMsg_MsgWrappedBeginRedelegate(f *testing.F) { genAddr := genAccs[0].GetAddress() // BeginBlock of block 1, and thus entering epoch 1 - ctx = helper.BeginBlock() + ctx := helper.BeginBlock() epoch := keeper.GetEpoch(ctx) require.Equal(t, uint64(1), epoch.EpochNumber) diff --git a/x/epoching/keeper/epoch_slashed_val_set.go b/x/epoching/keeper/epoch_slashed_val_set.go index f7a40a51e..d5ccc7600 100644 --- a/x/epoching/keeper/epoch_slashed_val_set.go +++ b/x/epoching/keeper/epoch_slashed_val_set.go @@ -1,6 +1,7 @@ package keeper import ( + "cosmossdk.io/math" "github.com/babylonchain/babylon/x/epoching/types" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -40,7 +41,7 @@ func (k Keeper) GetSlashedVotingPower(ctx sdk.Context, epochNumber uint64) int64 panic(types.ErrUnknownSlashedVotingPower) } // get value - var slashedVotingPower sdk.Int + var slashedVotingPower math.Int if err := slashedVotingPower.Unmarshal(bz); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } @@ -54,6 +55,9 @@ func (k Keeper) AddSlashedValidator(ctx sdk.Context, valAddr sdk.ValAddress) err epochNumber := k.GetEpoch(ctx).EpochNumber store := k.slashedValSetStore(ctx, epochNumber) thisVotingPower, err := k.GetValidatorVotingPower(ctx, epochNumber, valAddr) + if err != nil { + panic(sdkerrors.Wrap(types.ErrMarshal, err.Error())) + } thisVotingPowerBytes, err := sdk.NewInt(thisVotingPower).Marshal() if err != nil { panic(sdkerrors.Wrap(types.ErrMarshal, err.Error())) @@ -87,7 +91,7 @@ func (k Keeper) GetSlashedValidators(ctx sdk.Context, epochNumber uint64) types. if powerBytes == nil { panic(types.ErrUnknownValidator) } - var power sdk.Int + var power math.Int if err := power.Unmarshal(powerBytes); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } diff --git a/x/epoching/keeper/epoch_val_set.go b/x/epoching/keeper/epoch_val_set.go index 652aa9d49..32c8a9f12 100644 --- a/x/epoching/keeper/epoch_val_set.go +++ b/x/epoching/keeper/epoch_val_set.go @@ -1,6 +1,7 @@ package keeper import ( + "cosmossdk.io/math" "github.com/babylonchain/babylon/x/epoching/types" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/store/prefix" @@ -18,7 +19,7 @@ func (k Keeper) GetValidatorSet(ctx sdk.Context, epochNumber uint64) types.Valid for ; iterator.Valid(); iterator.Next() { addr := sdk.ValAddress(iterator.Key()) powerBytes := iterator.Value() - var power sdk.Int + var power math.Int if err := power.Unmarshal(powerBytes); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } @@ -102,7 +103,7 @@ func (k Keeper) GetValidatorVotingPower(ctx sdk.Context, epochNumber uint64, val if powerBytes == nil { return 0, types.ErrUnknownValidator } - var power sdk.Int + var power math.Int if err := power.Unmarshal(powerBytes); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } @@ -123,7 +124,7 @@ func (k Keeper) GetTotalVotingPower(ctx sdk.Context, epochNumber uint64) int64 { if powerBytes == nil { panic(types.ErrUnknownTotalVotingPower) } - var power sdk.Int + var power math.Int if err := power.Unmarshal(powerBytes); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } diff --git a/x/epoching/keeper/modified_staking.go b/x/epoching/keeper/modified_staking.go index 39ce97b90..e07074821 100644 --- a/x/epoching/keeper/modified_staking.go +++ b/x/epoching/keeper/modified_staking.go @@ -36,7 +36,7 @@ func (k Keeper) ApplyMatureUnbonding(ctx sdk.Context, epochNumber uint64) { k.stk.UnbondAllMatureValidators(ctx) // record state update of being UNBONDED for mature validators for _, valAddr := range matureValidators { - k.RecordNewValState(currentCtx, valAddr, types.BondState_UNBONDED) + k.RecordNewValState(currentCtx, valAddr, types.BondState_UNBONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack } // get all mature unbonding delegations the epoch boundary from the ubd queue. @@ -60,7 +60,7 @@ func (k Keeper) ApplyMatureUnbonding(ctx sdk.Context, epochNumber uint64) { // Babylon modification: record delegation state // AFTER mature, unbonded from the validator - k.RecordNewDelegationState(currentCtx, delAddr, valAddr, types.BondState_UNBONDED) + k.RecordNewDelegationState(currentCtx, delAddr, valAddr, types.BondState_UNBONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack currentCtx.EventManager().EmitEvent( sdk.NewEvent( @@ -102,9 +102,9 @@ func (k Keeper) ApplyMatureUnbonding(ctx sdk.Context, epochNumber uint64) { // Babylon modification: record delegation state // AFTER mature, unbonded from the source validator, created/bonded to the destination validator - k.RecordNewDelegationState(currentCtx, delAddr, valSrcAddr, types.BondState_UNBONDED) - k.RecordNewDelegationState(currentCtx, delAddr, valDstAddr, types.BondState_CREATED) - k.RecordNewDelegationState(currentCtx, delAddr, valDstAddr, types.BondState_BONDED) + k.RecordNewDelegationState(currentCtx, delAddr, valSrcAddr, types.BondState_UNBONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack + k.RecordNewDelegationState(currentCtx, delAddr, valDstAddr, types.BondState_CREATED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack + k.RecordNewDelegationState(currentCtx, delAddr, valDstAddr, types.BondState_BONDED) //nolint:errcheck // either we ignore the error here, or propoagate up the stack currentCtx.EventManager().EmitEvent( sdk.NewEvent( diff --git a/x/epoching/module.go b/x/epoching/module.go index 96aa89088..77ad84fe9 100644 --- a/x/epoching/module.go +++ b/x/epoching/module.go @@ -78,7 +78,7 @@ func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Rout // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint: errcheck // cosmos convention is not to check the error here. } // GetTxCmd returns the capability module's root tx command. diff --git a/x/epoching/simulation/decoder.go b/x/epoching/simulation/decoder.go index 8be43f68f..6346110b9 100644 --- a/x/epoching/simulation/decoder.go +++ b/x/epoching/simulation/decoder.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" + "cosmossdk.io/math" "github.com/babylonchain/babylon/x/epoching/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -46,7 +47,7 @@ func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string { case bytes.Equal(kvA.Key[:1], types.VotingPowerKey), bytes.Equal(kvA.Key[:1], types.SlashedVotingPowerKey): - var powerA, powerB sdk.Int + var powerA, powerB math.Int if err := powerA.Unmarshal(kvA.Value); err != nil { panic(sdkerrors.Wrap(types.ErrUnmarshal, err.Error())) } diff --git a/x/epoching/testepoching/helper.go b/x/epoching/testepoching/helper.go index fd6c92372..2e3e98ff2 100644 --- a/x/epoching/testepoching/helper.go +++ b/x/epoching/testepoching/helper.go @@ -4,6 +4,7 @@ import ( "github.com/babylonchain/babylon/crypto/bls12381" "testing" + "cosmossdk.io/math" appparams "github.com/babylonchain/babylon/app/params" "github.com/stretchr/testify/require" @@ -146,14 +147,14 @@ func (h *Helper) EndBlock() sdk.Context { // CreateValidator calls handler to create a new staking validator // TODO: change to the wrapped version in the checkpointing module (require modifying checkpointing module) -func (h *Helper) CreateValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount sdk.Int, ok bool) { +func (h *Helper) CreateValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int, ok bool) { coin := sdk.NewCoin(appparams.DefaultBondDenom, stakeAmount) h.createValidator(addr, pk, coin, ok) } // CreateValidatorWithValPower calls handler to create a new staking validator with zero commission // TODO: change to the wrapped version in the checkpointing module (require modifying checkpointing module) -func (h *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotypes.PubKey, valPower int64, ok bool) sdk.Int { +func (h *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotypes.PubKey, valPower int64, ok bool) math.Int { amount := h.StakingKeeper.TokensFromConsensusPower(h.Ctx, valPower) coin := sdk.NewCoin(appparams.DefaultBondDenom, amount) h.createValidator(addr, pk, coin, ok) @@ -162,7 +163,7 @@ func (h *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotypes // CreateValidatorMsg returns a message used to create validator in this service. // TODO: change to the wrapped version in the checkpointing module (require modifying checkpointing module) -func (h *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount sdk.Int) *stakingtypes.MsgCreateValidator { +func (h *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int) *stakingtypes.MsgCreateValidator { coin := sdk.NewCoin(appparams.DefaultBondDenom, stakeAmount) msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, ZeroCommission(), sdk.OneInt()) require.NoError(h.t, err) @@ -177,7 +178,7 @@ func (h *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coi } // WrappedDelegate calls handler to delegate stake for a validator -func (h *Helper) WrappedDelegate(delegator sdk.AccAddress, val sdk.ValAddress, amount sdk.Int) *sdk.Result { +func (h *Helper) WrappedDelegate(delegator sdk.AccAddress, val sdk.ValAddress, amount math.Int) *sdk.Result { coin := sdk.NewCoin(appparams.DefaultBondDenom, amount) msg := stakingtypes.NewMsgDelegate(delegator, val, coin) wmsg := types.NewMsgWrappedDelegate(msg) @@ -193,7 +194,7 @@ func (h *Helper) WrappedDelegateWithPower(delegator sdk.AccAddress, val sdk.ValA } // WrappedUndelegate calls handler to unbound some stake from a validator. -func (h *Helper) WrappedUndelegate(delegator sdk.AccAddress, val sdk.ValAddress, amount sdk.Int) *sdk.Result { +func (h *Helper) WrappedUndelegate(delegator sdk.AccAddress, val sdk.ValAddress, amount math.Int) *sdk.Result { unbondAmt := sdk.NewCoin(appparams.DefaultBondDenom, amount) msg := stakingtypes.NewMsgUndelegate(delegator, val, unbondAmt) wmsg := types.NewMsgWrappedUndelegate(msg) @@ -201,7 +202,7 @@ func (h *Helper) WrappedUndelegate(delegator sdk.AccAddress, val sdk.ValAddress, } // WrappedBeginRedelegate calls handler to redelegate some stake from a validator to another -func (h *Helper) WrappedBeginRedelegate(delegator sdk.AccAddress, srcVal sdk.ValAddress, dstVal sdk.ValAddress, amount sdk.Int) *sdk.Result { +func (h *Helper) WrappedBeginRedelegate(delegator sdk.AccAddress, srcVal sdk.ValAddress, dstVal sdk.ValAddress, amount math.Int) *sdk.Result { unbondAmt := sdk.NewCoin(appparams.DefaultBondDenom, amount) msg := stakingtypes.NewMsgBeginRedelegate(delegator, srcVal, dstVal, unbondAmt) wmsg := types.NewMsgWrappedBeginRedelegate(msg) diff --git a/x/epoching/testepoching/tm.go b/x/epoching/testepoching/tm.go index f7ff4ed28..4427b57c1 100644 --- a/x/epoching/testepoching/tm.go +++ b/x/epoching/testepoching/tm.go @@ -1,9 +1,9 @@ package testepoching import ( + "cosmossdk.io/math" "github.com/babylonchain/babylon/testutil/datagen" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" tmcrypto "github.com/tendermint/tendermint/crypto" tmtypes "github.com/tendermint/tendermint/types" @@ -20,7 +20,7 @@ func GetTmConsPubKey(v stakingtypes.Validator) (tmcrypto.PubKey, error) { } // ToTmValidator casts an SDK validator to a tendermint type Validator. -func ToTmValidator(v stakingtypes.Validator, r sdk.Int) (*tmtypes.Validator, error) { +func ToTmValidator(v stakingtypes.Validator, r math.Int) (*tmtypes.Validator, error) { tmPk, err := GetTmConsPubKey(v) if err != nil { return nil, err @@ -30,7 +30,7 @@ func ToTmValidator(v stakingtypes.Validator, r sdk.Int) (*tmtypes.Validator, err } // ToTmValidators casts all validators to the corresponding tendermint type. -func ToTmValidators(v stakingtypes.Validators, r sdk.Int) ([]*tmtypes.Validator, error) { +func ToTmValidators(v stakingtypes.Validators, r math.Int) ([]*tmtypes.Validator, error) { validators := make([]*tmtypes.Validator, len(v)) var err error for i, val := range v { diff --git a/x/epoching/types/expected_keepers.go b/x/epoching/types/expected_keepers.go index 89a55ecf7..bd0e8e475 100644 --- a/x/epoching/types/expected_keepers.go +++ b/x/epoching/types/expected_keepers.go @@ -3,6 +3,7 @@ package types import ( "time" + "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" abci "github.com/tendermint/tendermint/abci/types" @@ -39,7 +40,7 @@ type StakingKeeper interface { BondDenom(ctx sdk.Context) string HasReceivingRedelegation(ctx sdk.Context, delAddr sdk.AccAddress, valDstAddr sdk.ValAddress) bool HasMaxRedelegationEntries(ctx sdk.Context, delegatorAddr sdk.AccAddress, validatorSrcAddr, validatorDstAddr sdk.ValAddress) bool - ValidateUnbondAmount(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt sdk.Int) (sdk.Dec, error) + ValidateUnbondAmount(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt math.Int) (sdk.Dec, error) ValidatorQueueIterator(ctx sdk.Context, endTime time.Time, endHeight int64) sdk.Iterator UnbondingToUnbonded(ctx sdk.Context, validator stakingtypes.Validator) stakingtypes.Validator RemoveValidator(ctx sdk.Context, address sdk.ValAddress) diff --git a/x/zoneconcierge/client/cli/tx.go b/x/zoneconcierge/client/cli/tx.go index 091cb80cc..1e0d535f4 100644 --- a/x/zoneconcierge/client/cli/tx.go +++ b/x/zoneconcierge/client/cli/tx.go @@ -15,6 +15,7 @@ var ( DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds()) ) +//nolint:unused const ( flagPacketTimeoutTimestamp = "packet-timeout-timestamp" listSeparator = "," diff --git a/x/zoneconcierge/keeper/grpc_query_test.go b/x/zoneconcierge/keeper/grpc_query_test.go index 671b22f87..345634240 100644 --- a/x/zoneconcierge/keeper/grpc_query_test.go +++ b/x/zoneconcierge/keeper/grpc_query_test.go @@ -137,7 +137,7 @@ func FuzzFinalizedChainInfo(f *testing.F) { SimulateHeadersAndForksViaHook(ctx, hooks, czChainID, numHeaders, numForkHeaders) hooks.AfterEpochEnds(ctx, epochNum) - hooks.AfterRawCheckpointFinalized(ctx, epochNum) + hooks.AfterRawCheckpointFinalized(ctx, epochNum) //nolint:errcheck // ignore error // check if the chain info of this epoch is recorded or not resp, err := zcKeeper.FinalizedChainInfo(ctx, &zctypes.QueryFinalizedChainInfoRequest{ChainId: czChainID, Prove: true}) diff --git a/x/zoneconcierge/keeper/msg_server_test.go b/x/zoneconcierge/keeper/msg_server_test.go index 0e91d1903..092ab042c 100644 --- a/x/zoneconcierge/keeper/msg_server_test.go +++ b/x/zoneconcierge/keeper/msg_server_test.go @@ -10,6 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) +//nolint:unused func setupMsgServer(t testing.TB) (types.MsgServer, context.Context) { k, ctx := keepertest.ZoneConciergeKeeper(t, nil, nil, nil, nil) return keeper.NewMsgServerImpl(*k), sdk.WrapSDKContext(ctx) diff --git a/x/zoneconcierge/module.go b/x/zoneconcierge/module.go index 981cfc86d..ee59187f4 100644 --- a/x/zoneconcierge/module.go +++ b/x/zoneconcierge/module.go @@ -71,7 +71,7 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) + types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) //nolint:errcheck // either we propogate the error up the stack, or don't check here. } // GetTxCmd returns the root Tx command for the module. The subcommands of this root command are used by end-users to generate new transactions containing messages defined in the module