diff --git a/.golangci.yml b/.golangci.yml index 1007bcfa..f740ede6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -5,7 +5,7 @@ run: linters: enable: - # - bodyclose + - bodyclose - deadcode - depguard - dogsled @@ -13,38 +13,30 @@ linters: - errcheck - goconst - gocritic - - gofmt - - goimports + - gofumpt - revive - gosec - gosimple - govet - ineffassign - # - lll TODO: enable + - lll - misspell - nakedret - prealloc - exportloopref - staticcheck - # - structcheck - stylecheck - # - typecheck #TODO: enable + - typecheck - unconvert - # - unparam + - unparam - unused - varcheck - nolintlint - asciicheck - # - exhaustive - exportloopref - gofumpt - gomodguard - # - nestif - # - nlreturn - # - noctx - # - rowserrcheck - # - whitespace - # - wsl + - whitespace issues: exclude-rules: @@ -57,6 +49,8 @@ issues: max-same-issues: 50 linters-settings: + lll: + line-length: 150 dogsled: max-blank-identifiers: 3 golint: diff --git a/CHANGELOG.md b/CHANGELOG.md index 17de3f9c..a3ed44cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* (lint) [#1298](https://github.com/evmos/ethermint/pull/1298) 150 character line length limit, gofumpt, and linting * (rpc) [#1229](https://github.com/evmos/ethermint/pull/1229) Add support for configuring RPC `MaxOpenConnections` * (feemarket) [\#1165](https://github.com/evmos/ethermint/pull/1165) Add hint in specs about different gas terminology for gas in Cosmos and Ethereum. * (cli) [#1226](https://github.com/evmos/ethermint/pull/1226) Add custom app db backend flag. diff --git a/app/ante/eip712.go b/app/ante/eip712.go index 76a88364..6367a023 100644 --- a/app/ante/eip712.go +++ b/app/ante/eip712.go @@ -49,7 +49,11 @@ func NewEip712SigVerificationDecorator(ak evmtypes.AccountKeeper, signModeHandle // AnteHandle handles validation of EIP712 signed cosmos txs. // it is not run on RecheckTx -func (svd Eip712SigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { +func (svd Eip712SigVerificationDecorator) AnteHandle(ctx sdk.Context, + tx sdk.Tx, + simulate bool, + next sdk.AnteHandler, +) (newCtx sdk.Context, err error) { // no need to verify signatures on recheck tx if ctx.IsReCheckTx() { return next(ctx, tx, simulate) diff --git a/app/ante/eth.go b/app/ante/eth.go index c997ec65..98dfef4a 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -96,7 +96,12 @@ func NewEthAccountVerificationDecorator(ak evmtypes.AccountKeeper, ek EVMKeeper) // - any of the msgs is not a MsgEthereumTx // - from address is empty // - account balance is lower than the transaction cost -func (avd EthAccountVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { +func (avd EthAccountVerificationDecorator) AnteHandle( + ctx sdk.Context, + tx sdk.Tx, + simulate bool, + next sdk.AnteHandler, +) (newCtx sdk.Context, err error) { if !ctx.IsCheckTx() { return next(ctx, tx, simulate) } @@ -134,7 +139,6 @@ func (avd EthAccountVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx if err := evmkeeper.CheckSenderBalance(sdkmath.NewIntFromBigInt(acct.Balance), txData); err != nil { return ctx, sdkerrors.Wrap(err, "failed to check sender balance") } - } return next(ctx, tx, simulate) } diff --git a/app/ante/fees.go b/app/ante/fees.go index c0547004..8064ef3a 100644 --- a/app/ante/fees.go +++ b/app/ante/fees.go @@ -62,7 +62,10 @@ func (mpd MinGasPriceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate } if !feeCoins.IsAnyGTE(requiredFees) { - return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "provided fee < minimum global fee (%s < %s). Please increase the gas price.", feeCoins, requiredFees) + return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, + "provided fee < minimum global fee (%s < %s). Please increase the gas price.", + feeCoins, + requiredFees) } return next(ctx, tx, simulate) @@ -132,7 +135,7 @@ func (empd EthMinGasPriceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul if fee.LT(requiredFee) { return ctx, sdkerrors.Wrapf( sdkerrors.ErrInsufficientFee, - "provided fee < minimum global fee (%d < %d). Please increase the priority tip (for EIP-1559 txs) or the gas prices (for access list or legacy txs)", + "provided fee < minimum global fee (%d < %d). Please increase the priority tip (for EIP-1559 txs) or the gas prices (for access list or legacy txs)", //nolint:lll fee.TruncateInt().Int64(), requiredFee.TruncateInt().Int64(), ) } diff --git a/app/app.go b/app/app.go index da44c574..158bf7a3 100644 --- a/app/app.go +++ b/app/app.go @@ -310,40 +310,81 @@ func NewEthermintApp( // use custom Ethermint account for contracts app.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), ethermint.ProtoAccount, maccPerms, sdk.GetConfig().GetBech32AccountAddrPrefix(), + appCodec, keys[authtypes.StoreKey], + app.GetSubspace(authtypes.ModuleName), + ethermint.ProtoAccount, + maccPerms, + sdk.GetConfig().GetBech32AccountAddrPrefix(), ) app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.BlockedAddrs(), + appCodec, + keys[banktypes.StoreKey], + app.AccountKeeper, + app.GetSubspace(banktypes.ModuleName), + app.BlockedAddrs(), ) stakingKeeper := stakingkeeper.NewKeeper( - appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName), + appCodec, keys[stakingtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.GetSubspace(stakingtypes.ModuleName), ) app.MintKeeper = mintkeeper.NewKeeper( - appCodec, keys[minttypes.StoreKey], app.GetSubspace(minttypes.ModuleName), &stakingKeeper, - app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, + appCodec, + keys[minttypes.StoreKey], + app.GetSubspace(minttypes.ModuleName), + &stakingKeeper, + app.AccountKeeper, + app.BankKeeper, + authtypes.FeeCollectorName, ) app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, keys[distrtypes.StoreKey], app.GetSubspace(distrtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, authtypes.FeeCollectorName, + appCodec, + keys[distrtypes.StoreKey], + app.GetSubspace(distrtypes.ModuleName), + app.AccountKeeper, + app.BankKeeper, + &stakingKeeper, + authtypes.FeeCollectorName, ) app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, keys[slashingtypes.StoreKey], &stakingKeeper, app.GetSubspace(slashingtypes.ModuleName), + appCodec, + keys[slashingtypes.StoreKey], + &stakingKeeper, + app.GetSubspace(slashingtypes.ModuleName), ) app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), invCheckPeriod, app.BankKeeper, authtypes.FeeCollectorName, + app.GetSubspace(crisistypes.ModuleName), + invCheckPeriod, + app.BankKeeper, + authtypes.FeeCollectorName, ) - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) + app.FeeGrantKeeper = feegrantkeeper.NewKeeper( + appCodec, + keys[feegrant.StoreKey], + app.AccountKeeper) // set the governance module account as the authority for conducting upgrades - app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + app.UpgradeKeeper = upgradekeeper.NewKeeper( + skipUpgradeHeights, + keys[upgradetypes.StoreKey], + appCodec, + homePath, + app.BaseApp, + authtypes.NewModuleAddress(govtypes.ModuleName).String()) // register the staking hooks // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks app.StakingKeeper = *stakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), + stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), + app.SlashingKeeper.Hooks()), ) - app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper) + app.AuthzKeeper = authzkeeper.NewKeeper( + keys[authzkeeper.StoreKey], + appCodec, + app.MsgServiceRouter(), + app.AccountKeeper) tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer)) diff --git a/app/utils.go b/app/utils.go index 78b9abef..03fefdbe 100644 --- a/app/utils.go +++ b/app/utils.go @@ -59,7 +59,15 @@ func Setup(isCheckTx bool, patchGenesis func(*EthermintApp, simapp.GenesisState) // SetupWithDB initializes a new EthermintApp. A Nop logger is set in EthermintApp. func SetupWithDB(isCheckTx bool, patchGenesis func(*EthermintApp, simapp.GenesisState) simapp.GenesisState, db dbm.DB) *EthermintApp { - app := NewEthermintApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{}) + app := NewEthermintApp(log.NewNopLogger(), + db, + nil, + true, + map[int64]bool{}, + DefaultNodeHome, + 5, + encoding.MakeConfig(ModuleBasics), + simapp.EmptyAppOptions{}) if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewTestGenesisState(app.AppCodec()) @@ -236,7 +244,6 @@ func genesisStateWithValSet(codec codec.Codec, genesisState simapp.GenesisState, } validators = append(validators, validator) delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) - } // set validators and delegations stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) diff --git a/client/keys/add.go b/client/keys/add.go index 94104096..e1d0b8d2 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -247,7 +247,9 @@ func printCreate(cmd *cobra.Command, k *keyring.Record, showMnemonic bool, mnemo // print mnemonic unless requested not to. if showMnemonic { - if _, err := fmt.Fprintf(cmd.ErrOrStderr(), "\n**Important** write this mnemonic phrase in a safe place.\nIt is the only way to recover your account if you ever forget your password.\n\n%s\n\n", mnemonic); err != nil { + if _, err := fmt.Fprintf(cmd.ErrOrStderr(), + "\n**Important** write this mnemonic phrase in a safe place.\nIt is the only way to recover your account if you ever forget your password.\n\n%s\n\n", //nolint:lll + mnemonic); err != nil { return fmt.Errorf("failed to print mnemonic: %v", err) } } diff --git a/client/testnet.go b/client/testnet.go index 42c13ba4..a3309d60 100644 --- a/client/testnet.go +++ b/client/testnet.go @@ -89,7 +89,10 @@ func addTestnetFlagsToCmd(cmd *cobra.Command) { cmd.Flags().Int(flagNumValidators, 4, "Number of validators to initialize the testnet with") cmd.Flags().StringP(flagOutputDir, "o", "./.testnets", "Directory to store initialization data for the testnet") cmd.Flags().String(flags.FlagChainID, "", "genesis file chain-id, if left blank will be randomly created") - cmd.Flags().String(sdkserver.FlagMinGasPrices, fmt.Sprintf("0.000006%s", ethermint.AttoPhoton), "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01photino,0.001stake)") + cmd.Flags().String(sdkserver.FlagMinGasPrices, + fmt.Sprintf("0.000006%s", + ethermint.AttoPhoton), + "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01photino,0.001stake)") cmd.Flags().String(flags.FlagKeyAlgorithm, string(hd.EthSecp256k1Type), "Key signing algorithm to generate keys for") } @@ -114,7 +117,7 @@ func NewTestnetCmd(mbm module.BasicManager, genBalIterator banktypes.GenesisBala func testnetInitFilesCmd(mbm module.BasicManager, genBalIterator banktypes.GenesisBalancesIterator) *cobra.Command { cmd := &cobra.Command{ Use: "init-files", - Short: "Initialize config directories & files for a multi-validator testnet running locally via separate processes (e.g. Docker Compose or similar)", + Short: "Initialize config directories & files for a multi-validator testnet running locally via separate processes (e.g. Docker Compose or similar)", //nolint:lll Long: `init-files will setup "v" number of directories and populate each with necessary files (private validator, genesis, config, etc.) for running "v" validator nodes. @@ -152,7 +155,9 @@ Example: addTestnetFlagsToCmd(cmd) cmd.Flags().String(flagNodeDirPrefix, "node", "Prefix the directory name for each node with (node results in node0, node1, ...)") cmd.Flags().String(flagNodeDaemonHome, "evmosd", "Home directory of the node's daemon configuration") - cmd.Flags().String(flagStartingIPAddress, "192.168.0.1", "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)") + cmd.Flags().String(flagStartingIPAddress, + "192.168.0.1", + "Starting IP address (192.168.0.1 results in persistent peers list ID0@192.168.0.1:46656, ID1@192.168.0.2:46656, ...)") cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)") return cmd diff --git a/ethereum/eip712/eip712.go b/ethereum/eip712/eip712.go index 2f5b5eea..f8895f04 100644 --- a/ethereum/eip712/eip712.go +++ b/ethereum/eip712/eip712.go @@ -313,7 +313,6 @@ func traverseFields( } if fieldType.Kind() == reflect.Struct { - var fieldTypedef string if isCollection { diff --git a/indexer/kv_indexer_test.go b/indexer/kv_indexer_test.go index e183e3db..b7a27f86 100644 --- a/indexer/kv_indexer_test.go +++ b/indexer/kv_indexer_test.go @@ -62,7 +62,7 @@ func TestKVIndexer(t *testing.T) { "success, format 1", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 0, Events: []abci.Event{ {Type: types.EventTypeEthereumTx, Attributes: []abci.EventAttribute{ @@ -82,7 +82,7 @@ func TestKVIndexer(t *testing.T) { "success, format 2", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 0, Events: []abci.Event{ {Type: types.EventTypeEthereumTx, Attributes: []abci.EventAttribute{ @@ -104,7 +104,7 @@ func TestKVIndexer(t *testing.T) { "success, exceed block gas limit", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 11, Log: "out of gas in location: block gas meter; gasWanted: 21000", Events: []abci.Event{}, @@ -116,7 +116,7 @@ func TestKVIndexer(t *testing.T) { "fail, failed eth tx", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 15, Log: "nonce mismatch", Events: []abci.Event{}, @@ -128,7 +128,7 @@ func TestKVIndexer(t *testing.T) { "fail, invalid events", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 0, Events: []abci.Event{}, }, @@ -139,7 +139,7 @@ func TestKVIndexer(t *testing.T) { "fail, not eth tx", &tmtypes.Block{Header: tmtypes.Header{Height: 1}, Data: tmtypes.Data{Txs: []tmtypes.Tx{txBz2}}}, []*abci.ResponseDeliverTx{ - &abci.ResponseDeliverTx{ + { Code: 0, Events: []abci.Event{}, }, diff --git a/rpc/apis.go b/rpc/apis.go index e6ca8f11..063f393c 100644 --- a/rpc/apis.go +++ b/rpc/apis.go @@ -57,7 +57,12 @@ var apiCreators map[string]APICreator func init() { apiCreators = map[string]APICreator{ - EthNamespace: func(ctx *server.Context, clientCtx client.Context, tmWSClient *rpcclient.WSClient, allowUnprotectedTxs bool, indexer ethermint.EVMTxIndexer) []rpc.API { + EthNamespace: func(ctx *server.Context, + clientCtx client.Context, + tmWSClient *rpcclient.WSClient, + allowUnprotectedTxs bool, + indexer ethermint.EVMTxIndexer, + ) []rpc.API { evmBackend := backend.NewBackend(ctx, ctx.Logger, clientCtx, allowUnprotectedTxs, indexer) return []rpc.API{ { @@ -94,7 +99,12 @@ func init() { }, } }, - PersonalNamespace: func(ctx *server.Context, clientCtx client.Context, _ *rpcclient.WSClient, allowUnprotectedTxs bool, indexer ethermint.EVMTxIndexer) []rpc.API { + PersonalNamespace: func(ctx *server.Context, + clientCtx client.Context, + _ *rpcclient.WSClient, + allowUnprotectedTxs bool, + indexer ethermint.EVMTxIndexer, + ) []rpc.API { evmBackend := backend.NewBackend(ctx, ctx.Logger, clientCtx, allowUnprotectedTxs, indexer) return []rpc.API{ { @@ -115,7 +125,12 @@ func init() { }, } }, - DebugNamespace: func(ctx *server.Context, clientCtx client.Context, _ *rpcclient.WSClient, allowUnprotectedTxs bool, indexer ethermint.EVMTxIndexer) []rpc.API { + DebugNamespace: func(ctx *server.Context, + clientCtx client.Context, + _ *rpcclient.WSClient, + allowUnprotectedTxs bool, + indexer ethermint.EVMTxIndexer, + ) []rpc.API { evmBackend := backend.NewBackend(ctx, ctx.Logger, clientCtx, allowUnprotectedTxs, indexer) return []rpc.API{ { @@ -126,7 +141,12 @@ func init() { }, } }, - MinerNamespace: func(ctx *server.Context, clientCtx client.Context, _ *rpcclient.WSClient, allowUnprotectedTxs bool, indexer ethermint.EVMTxIndexer) []rpc.API { + MinerNamespace: func(ctx *server.Context, + clientCtx client.Context, + _ *rpcclient.WSClient, + allowUnprotectedTxs bool, + indexer ethermint.EVMTxIndexer, + ) []rpc.API { evmBackend := backend.NewBackend(ctx, ctx.Logger, clientCtx, allowUnprotectedTxs, indexer) return []rpc.API{ { @@ -141,7 +161,13 @@ func init() { } // GetRPCAPIs returns the list of all APIs -func GetRPCAPIs(ctx *server.Context, clientCtx client.Context, tmWSClient *rpcclient.WSClient, allowUnprotectedTxs bool, indexer ethermint.EVMTxIndexer, selectedAPIs []string) []rpc.API { +func GetRPCAPIs(ctx *server.Context, + clientCtx client.Context, + tmWSClient *rpcclient.WSClient, + allowUnprotectedTxs bool, + indexer ethermint.EVMTxIndexer, + selectedAPIs []string, +) []rpc.API { var apis []rpc.API for _, ns := range selectedAPIs { diff --git a/rpc/backend/account_info.go b/rpc/backend/account_info.go index 3b3103ce..69fed508 100644 --- a/rpc/backend/account_info.go +++ b/rpc/backend/account_info.go @@ -35,7 +35,10 @@ func (b *Backend) GetCode(address common.Address, blockNrOrHash rpctypes.BlockNu } // GetProof returns an account object with proof and any storage proofs -func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNrOrHash rpctypes.BlockNumberOrHash) (*rpctypes.AccountResult, error) { +func (b *Backend) GetProof(address common.Address, + storageKeys []string, + blockNrOrHash rpctypes.BlockNumberOrHash, +) (*rpctypes.AccountResult, error) { blockNum, err := b.GetBlockNumber(blockNrOrHash) if err != nil { return nil, err diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index b572f5e5..87c6ec72 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -196,7 +196,6 @@ func (b *Backend) SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.Transac if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { return args, fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) } - } else { if args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil { return args, errors.New("maxFeePerGas or maxPriorityFeePerGas specified but london is not active yet") diff --git a/rpc/backend/node_info.go b/rpc/backend/node_info.go index 4438a32a..d858f011 100644 --- a/rpc/backend/node_info.go +++ b/rpc/backend/node_info.go @@ -233,7 +233,12 @@ func (b *Backend) ListAccounts() ([]common.Address, error) { } // NewAccount will create a new account and returns the address for the new account. -func (b *Backend) NewMnemonic(uid string, language keyring.Language, hdPath, bip39Passphrase string, algo keyring.SignatureAlgo) (*keyring.Record, error) { +func (b *Backend) NewMnemonic(uid string, + language keyring.Language, + hdPath, + bip39Passphrase string, + algo keyring.SignatureAlgo, +) (*keyring.Record, error) { info, _, err := b.clientCtx.Keyring.NewMnemonic(uid, keyring.English, bip39Passphrase, bip39Passphrase, algo) if err != nil { return nil, err diff --git a/rpc/backend/tracing.go b/rpc/backend/tracing.go index 37fa2003..af546ad3 100644 --- a/rpc/backend/tracing.go +++ b/rpc/backend/tracing.go @@ -113,7 +113,10 @@ func (b *Backend) TraceTransaction(hash common.Hash, config *evmtypes.TraceConfi // traceBlock configures a new tracer according to the provided configuration, and // executes all the transactions contained within. The return value will be one item // per transaction, dependent on the requested tracer. -func (b *Backend) TraceBlock(height rpctypes.BlockNumber, config *evmtypes.TraceConfig, block *tmrpctypes.ResultBlock) ([]*evmtypes.TxTraceResult, error) { +func (b *Backend) TraceBlock(height rpctypes.BlockNumber, + config *evmtypes.TraceConfig, + block *tmrpctypes.ResultBlock, +) ([]*evmtypes.TxTraceResult, error) { txs := block.Block.Txs txsLength := len(txs) diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index 13ff3400..48f48c56 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -269,7 +269,10 @@ func (e *PublicAPI) GetCode(address common.Address, blockNrOrHash rpctypes.Block } // GetProof returns an account object with proof and any storage proofs -func (e *PublicAPI) GetProof(address common.Address, storageKeys []string, blockNrOrHash rpctypes.BlockNumberOrHash) (*rpctypes.AccountResult, error) { +func (e *PublicAPI) GetProof(address common.Address, + storageKeys []string, + blockNrOrHash rpctypes.BlockNumberOrHash, +) (*rpctypes.AccountResult, error) { e.logger.Debug("eth_getProof", "address", address.Hex(), "keys", storageKeys, "block number or hash", blockNrOrHash) return e.backend.GetProof(address, storageKeys, blockNrOrHash) } @@ -279,7 +282,10 @@ func (e *PublicAPI) GetProof(address common.Address, storageKeys []string, block /////////////////////////////////////////////////////////////////////////////// // Call performs a raw contract call. -func (e *PublicAPI) Call(args evmtypes.TransactionArgs, blockNrOrHash rpctypes.BlockNumberOrHash, _ *rpctypes.StateOverride) (hexutil.Bytes, error) { +func (e *PublicAPI) Call(args evmtypes.TransactionArgs, + blockNrOrHash rpctypes.BlockNumberOrHash, + _ *rpctypes.StateOverride, +) (hexutil.Bytes, error) { e.logger.Debug("eth_call", "args", args.String(), "block number or hash", blockNrOrHash) blockNum, err := e.backend.GetBlockNumber(blockNrOrHash) @@ -345,7 +351,10 @@ func (e *PublicAPI) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional * return e.backend.EstimateGas(args, blockNrOptional) } -func (e *PublicAPI) FeeHistory(blockCount rpc.DecimalOrHex, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*rpctypes.FeeHistoryResult, error) { +func (e *PublicAPI) FeeHistory(blockCount rpc.DecimalOrHex, + lastBlock rpc.BlockNumber, + rewardPercentiles []float64, +) (*rpctypes.FeeHistoryResult, error) { e.logger.Debug("eth_feeHistory") return e.backend.FeeHistory(blockCount, lastBlock, rewardPercentiles) } @@ -499,7 +508,11 @@ func (e *PublicAPI) FillTransaction(args evmtypes.TransactionArgs) (*rpctypes.Si // Resend accepts an existing transaction and a new gas price and limit. It will remove // the given transaction from the pool and reinsert it with the new gas price and limit. -func (e *PublicAPI) Resend(_ context.Context, args evmtypes.TransactionArgs, gasPrice *hexutil.Big, gasLimit *hexutil.Uint64) (common.Hash, error) { +func (e *PublicAPI) Resend(_ context.Context, + args evmtypes.TransactionArgs, + gasPrice *hexutil.Big, + gasLimit *hexutil.Uint64, +) (common.Hash, error) { e.logger.Debug("eth_resend", "args", args.String()) return e.backend.Resend(args, gasPrice, gasLimit) } diff --git a/rpc/namespaces/ethereum/eth/filters/api.go b/rpc/namespaces/ethereum/eth/filters/api.go index 0f6cf05d..bf41baf0 100644 --- a/rpc/namespaces/ethereum/eth/filters/api.go +++ b/rpc/namespaces/ethereum/eth/filters/api.go @@ -136,7 +136,12 @@ func (api *PublicFilterAPI) NewPendingTransactionFilter() rpc.ID { return rpc.ID(fmt.Sprintf("error creating pending tx filter: %s", err.Error())) } - api.filters[pendingTxSub.ID()] = &filter{typ: filters.PendingTransactionsSubscription, deadline: time.NewTimer(deadline), hashes: make([]common.Hash, 0), s: pendingTxSub} + api.filters[pendingTxSub.ID()] = &filter{ + typ: filters.PendingTransactionsSubscription, + deadline: time.NewTimer(deadline), + hashes: make([]common.Hash, 0), + s: pendingTxSub, + } go func(txsCh <-chan coretypes.ResultEvent, errCh <-chan error) { defer cancelSubs() @@ -455,7 +460,13 @@ func (api *PublicFilterAPI) NewFilter(criteria filters.FilterCriteria) (rpc.ID, filterID = logsSub.ID() - api.filters[filterID] = &filter{typ: filters.LogsSubscription, crit: criteria, deadline: time.NewTimer(deadline), hashes: []common.Hash{}, s: logsSub} + api.filters[filterID] = &filter{ + typ: filters.LogsSubscription, + crit: criteria, + deadline: time.NewTimer(deadline), + hashes: []common.Hash{}, + s: logsSub, + } go func(eventCh <-chan coretypes.ResultEvent) { defer cancelSubs() diff --git a/rpc/namespaces/ethereum/eth/filters/filter_system.go b/rpc/namespaces/ethereum/eth/filters/filter_system.go index a990074e..17d4f304 100644 --- a/rpc/namespaces/ethereum/eth/filters/filter_system.go +++ b/rpc/namespaces/ethereum/eth/filters/filter_system.go @@ -27,8 +27,12 @@ import ( ) var ( - txEvents = tmtypes.QueryForEvent(tmtypes.EventTx).String() - evmEvents = tmquery.MustParse(fmt.Sprintf("%s='%s' AND %s.%s='%s'", tmtypes.EventTypeKey, tmtypes.EventTx, sdk.EventTypeMessage, sdk.AttributeKeyModule, evmtypes.ModuleName)).String() + txEvents = tmtypes.QueryForEvent(tmtypes.EventTx).String() + evmEvents = tmquery.MustParse(fmt.Sprintf("%s='%s' AND %s.%s='%s'", + tmtypes.EventTypeKey, + tmtypes.EventTx, + sdk.EventTypeMessage, + sdk.AttributeKeyModule, evmtypes.ModuleName)).String() headerEvents = tmtypes.QueryForEvent(tmtypes.EventNewBlockHeader).String() ) diff --git a/server/flags/flags.go b/server/flags/flags.go index 77e02d65..aea74bc7 100644 --- a/server/flags/flags.go +++ b/server/flags/flags.go @@ -69,8 +69,8 @@ func AddTxFlags(cmd *cobra.Command) (*cobra.Command, error) { cmd.PersistentFlags().String(flags.FlagFrom, "", "Name or address of private key with which to sign") cmd.PersistentFlags().String(flags.FlagFees, "", "Fees to pay along with transaction; eg: 10aphoton") cmd.PersistentFlags().String(flags.FlagGasPrices, "", "Gas prices to determine the transaction fee (e.g. 10aphoton)") - cmd.PersistentFlags().String(flags.FlagNode, "tcp://localhost:26657", ": to tendermint rpc interface for this chain") - cmd.PersistentFlags().Float64(flags.FlagGasAdjustment, flags.DefaultGasAdjustment, "adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored ") + cmd.PersistentFlags().String(flags.FlagNode, "tcp://localhost:26657", ": to tendermint rpc interface for this chain") //nolint:lll + cmd.PersistentFlags().Float64(flags.FlagGasAdjustment, flags.DefaultGasAdjustment, "adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored ") //nolint:lll cmd.PersistentFlags().StringP(flags.FlagBroadcastMode, "b", flags.BroadcastSync, "Transaction broadcasting mode (sync|async|block)") cmd.PersistentFlags().String(flags.FlagKeyringBackend, keyring.BackendOS, "Select keyring's backend") diff --git a/server/json_rpc.go b/server/json_rpc.go index 332c2c9e..ddbb837e 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -19,7 +19,13 @@ import ( ) // StartJSONRPC starts the JSON-RPC server -func StartJSONRPC(ctx *server.Context, clientCtx client.Context, tmRPCAddr, tmEndpoint string, config *config.Config, indexer ethermint.EVMTxIndexer) (*http.Server, chan struct{}, error) { +func StartJSONRPC(ctx *server.Context, + clientCtx client.Context, + tmRPCAddr, + tmEndpoint string, + config *config.Config, + indexer ethermint.EVMTxIndexer, +) (*http.Server, chan struct{}, error) { tmWsClient := ConnectTmWS(tmRPCAddr, tmEndpoint, ctx.Logger) logger := ctx.Logger.With("module", "geth") diff --git a/server/start.go b/server/start.go index 5278ee54..2843aba4 100644 --- a/server/start.go +++ b/server/start.go @@ -131,7 +131,7 @@ which accepts a path for the resulting pprof file. cmd.Flags().String(srvflags.Address, "tcp://0.0.0.0:26658", "Listen address") cmd.Flags().String(srvflags.Transport, "socket", "Transport protocol: socket, grpc") cmd.Flags().String(srvflags.TraceStore, "", "Enable KVStore tracing to an output file") - cmd.Flags().String(server.FlagMinGasPrices, "", "Minimum gas prices to accept for transactions; Any fee in a tx must meet this minimum (e.g. 0.01photon;0.0001stake)") + cmd.Flags().String(server.FlagMinGasPrices, "", "Minimum gas prices to accept for transactions; Any fee in a tx must meet this minimum (e.g. 0.01photon;0.0001stake)") //nolint:lll cmd.Flags().IntSlice(server.FlagUnsafeSkipUpgrades, []int{}, "Skip a set of upgrade heights to continue the old binary") cmd.Flags().Uint64(server.FlagHaltHeight, 0, "Block height at which to gracefully halt the chain and shutdown the node") cmd.Flags().Uint64(server.FlagHaltTime, 0, "Minimum block time (in Unix seconds) at which to gracefully halt the chain and shutdown the node") @@ -140,7 +140,7 @@ which accepts a path for the resulting pprof file. cmd.Flags().Bool(server.FlagTrace, false, "Provide full stack traces for errors in ABCI Log") cmd.Flags().String(server.FlagPruning, pruningtypes.PruningOptionDefault, "Pruning strategy (default|nothing|everything|custom)") cmd.Flags().Uint64(server.FlagPruningKeepRecent, 0, "Number of recent heights to keep on disk (ignored if pruning is not 'custom')") - cmd.Flags().Uint64(server.FlagPruningInterval, 0, "Height interval at which pruned heights are removed from disk (ignored if pruning is not 'custom')") + cmd.Flags().Uint64(server.FlagPruningInterval, 0, "Height interval at which pruned heights are removed from disk (ignored if pruning is not 'custom')") //nolint:lll cmd.Flags().Uint(server.FlagInvCheckPeriod, 0, "Assert registered invariants every N blocks") cmd.Flags().Uint64(server.FlagMinRetainBlocks, 0, "Minimum block height offset during ABCI commit to prune Tendermint blocks") cmd.Flags().String(srvflags.AppDBBackend, "", "The type of database for application and snapshots databases") @@ -157,20 +157,20 @@ which accepts a path for the resulting pprof file. cmd.Flags().StringSlice(srvflags.JSONRPCAPI, config.GetDefaultAPINamespaces(), "Defines a list of JSON-RPC namespaces that should be enabled") cmd.Flags().String(srvflags.JSONRPCAddress, config.DefaultJSONRPCAddress, "the JSON-RPC server address to listen on") cmd.Flags().String(srvflags.JSONWsAddress, config.DefaultJSONRPCWsAddress, "the JSON-RPC WS server address to listen on") - cmd.Flags().Uint64(srvflags.JSONRPCGasCap, config.DefaultGasCap, "Sets a cap on gas that can be used in eth_call/estimateGas unit is aphoton (0=infinite)") - cmd.Flags().Float64(srvflags.JSONRPCTxFeeCap, config.DefaultTxFeeCap, "Sets a cap on transaction fee that can be sent via the RPC APIs (1 = default 1 photon)") + cmd.Flags().Uint64(srvflags.JSONRPCGasCap, config.DefaultGasCap, "Sets a cap on gas that can be used in eth_call/estimateGas unit is aphoton (0=infinite)") //nolint:lll + cmd.Flags().Float64(srvflags.JSONRPCTxFeeCap, config.DefaultTxFeeCap, "Sets a cap on transaction fee that can be sent via the RPC APIs (1 = default 1 photon)") //nolint:lll cmd.Flags().Int32(srvflags.JSONRPCFilterCap, config.DefaultFilterCap, "Sets the global cap for total number of filters that can be created") cmd.Flags().Duration(srvflags.JSONRPCEVMTimeout, config.DefaultEVMTimeout, "Sets a timeout used for eth_call (0=infinite)") cmd.Flags().Duration(srvflags.JSONRPCHTTPTimeout, config.DefaultHTTPTimeout, "Sets a read/write timeout for json-rpc http server (0=infinite)") cmd.Flags().Duration(srvflags.JSONRPCHTTPIdleTimeout, config.DefaultHTTPIdleTimeout, "Sets a idle timeout for json-rpc http server (0=infinite)") - cmd.Flags().Bool(srvflags.JSONRPCAllowUnprotectedTxs, config.DefaultAllowUnprotectedTxs, "Allow for unprotected (non EIP155 signed) transactions to be submitted via the node's RPC when the global parameter is disabled") + cmd.Flags().Bool(srvflags.JSONRPCAllowUnprotectedTxs, config.DefaultAllowUnprotectedTxs, "Allow for unprotected (non EIP155 signed) transactions to be submitted via the node's RPC when the global parameter is disabled") //nolint:lll cmd.Flags().Int32(srvflags.JSONRPCLogsCap, config.DefaultLogsCap, "Sets the max number of results can be returned from single `eth_getLogs` query") cmd.Flags().Int32(srvflags.JSONRPCBlockRangeCap, config.DefaultBlockRangeCap, "Sets the max block range allowed for `eth_getLogs` query") - cmd.Flags().Int(srvflags.JSONRPCMaxOpenConnections, config.DefaultMaxOpenConnections, "Sets the maximum number of simultaneous connections for the server listener") + cmd.Flags().Int(srvflags.JSONRPCMaxOpenConnections, config.DefaultMaxOpenConnections, "Sets the maximum number of simultaneous connections for the server listener") //nolint:lll cmd.Flags().Bool(srvflags.JSONRPCEnableIndexer, false, "Enable the custom tx indexer for json-rpc") - cmd.Flags().String(srvflags.EVMTracer, config.DefaultEVMTracer, "the EVM tracer type to collect execution traces from the EVM transaction execution (json|struct|access_list|markdown)") - cmd.Flags().Uint64(srvflags.EVMMaxTxGasWanted, config.DefaultMaxTxGasWanted, "the gas wanted for each eth tx returned in ante handler in check tx mode") + cmd.Flags().String(srvflags.EVMTracer, config.DefaultEVMTracer, "the EVM tracer type to collect execution traces from the EVM transaction execution (json|struct|access_list|markdown)") //nolint:lll + cmd.Flags().Uint64(srvflags.EVMMaxTxGasWanted, config.DefaultMaxTxGasWanted, "the gas wanted for each eth tx returned in ante handler in check tx mode") //nolint:lll cmd.Flags().String(srvflags.TLSCertPath, "", "the cert.pem file path for the server TLS configuration") cmd.Flags().String(srvflags.TLSKeyPath, "", "the key.pem file path for the server TLS configuration") diff --git a/server/util.go b/server/util.go index 4e14e4fd..34bffd50 100644 --- a/server/util.go +++ b/server/util.go @@ -21,7 +21,13 @@ import ( ) // AddCommands adds server commands -func AddCommands(rootCmd *cobra.Command, defaultNodeHome string, appCreator types.AppCreator, appExport types.AppExporter, addStartFlags types.ModuleInitFlags) { +func AddCommands( + rootCmd *cobra.Command, + defaultNodeHome string, + appCreator types.AppCreator, + appExport types.AppExporter, + addStartFlags types.ModuleInitFlags, +) { tendermintCmd := &cobra.Command{ Use: "tendermint", Short: "Tendermint subcommands", @@ -86,7 +92,6 @@ func MountGRPCWebServices( logger tmlog.Logger, ) { for _, res := range grpcResources { - logger.Info("[GRPC Web] HTTP POST mounted", "resource", res) s := router.Methods("POST").Subrouter() diff --git a/tests/importer/chain_ctx.go b/tests/importer/chain_ctx.go index f87e0f73..1f249787 100644 --- a/tests/importer/chain_ctx.go +++ b/tests/importer/chain_ctx.go @@ -96,8 +96,12 @@ func (cc *ChainContext) Finalize( // Note: The block header and state database might be updated to reflect any // consensus rules that happen at finalization (e.g. block rewards). // TODO: Figure out if this needs to be hooked up to any part of the ABCI? -func (cc *ChainContext) FinalizeAndAssemble(_ ethcons.ChainHeaderReader, _ *ethtypes.Header, _ *ethstate.StateDB, _ []*ethtypes.Transaction, - _ []*ethtypes.Header, _ []*ethtypes.Receipt, +func (cc *ChainContext) FinalizeAndAssemble(_ ethcons.ChainHeaderReader, + _ *ethtypes.Header, + _ *ethstate.StateDB, + _ []*ethtypes.Transaction, + _ []*ethtypes.Header, + _ []*ethtypes.Receipt, ) (*ethtypes.Block, error) { return nil, nil } diff --git a/tests/importer/importer_test.go b/tests/importer/importer_test.go index 4b6d5173..a32a7302 100644 --- a/tests/importer/importer_test.go +++ b/tests/importer/importer_test.go @@ -56,7 +56,7 @@ type ImporterTestSuite struct { ctx sdk.Context } -/// DoSetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. +// / DoSetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. func (suite *ImporterTestSuite) DoSetupTest(t require.TestingT) { checkTx := false suite.app = app.Setup(checkTx, nil) diff --git a/tests/rpc/rpc_pending_test.go b/tests/rpc/rpc_pending_test.go index 4dc79764..95e84c1e 100644 --- a/tests/rpc/rpc_pending_test.go +++ b/tests/rpc/rpc_pending_test.go @@ -1,7 +1,5 @@ // This is a test utility for Ethermint's Web3 JSON-RPC services. -// // To run these tests please first ensure you have the ethermintd running -// // You can configure the desired HOST and MODE as well in integration-test-all.sh package rpc diff --git a/tests/rpc/utils.go b/tests/rpc/utils.go index cd681c24..58a89df6 100644 --- a/tests/rpc/utils.go +++ b/tests/rpc/utils.go @@ -173,7 +173,7 @@ func DeployTestContract(t *testing.T, addr []byte) (hexutil.Bytes, map[string]in param := make([]map[string]string, 1) param[0] = make(map[string]string) param[0]["from"] = "0x" + fmt.Sprintf("%x", addr) - param[0]["data"] = "0x6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029" + param[0]["data"] = "0x6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029" //nolint:lll param[0]["gas"] = "0x200000" rpcRes := Call(t, "personal_unlockAccount", []interface{}{param[0]["from"], ""}) @@ -212,7 +212,7 @@ func DeployTestContractWithFunction(t *testing.T, addr []byte) hexutil.Bytes { // } // } - bytecode := "0x608060405234801561001057600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a260d08061004d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063eb8ac92114602d575b600080fd5b606060048036036040811015604157600080fd5b8101908080359060200190929190803590602001909291905050506062565b005b8160008190555080827ff3ca124a697ba07e8c5e80bebcfcc48991fc16a63170e8a9206e30508960d00360405160405180910390a3505056fea265627a7a723158201d94d2187aaf3a6790527b615fcc40970febf0385fa6d72a2344848ebd0df3e964736f6c63430005110032" + bytecode := "0x608060405234801561001057600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a260d08061004d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063eb8ac92114602d575b600080fd5b606060048036036040811015604157600080fd5b8101908080359060200190929190803590602001909291905050506062565b005b8160008190555080827ff3ca124a697ba07e8c5e80bebcfcc48991fc16a63170e8a9206e30508960d00360405160405180910390a3505056fea265627a7a723158201d94d2187aaf3a6790527b615fcc40970febf0385fa6d72a2344848ebd0df3e964736f6c63430005110032" //nolint:lll param := make([]map[string]string, 1) param[0] = make(map[string]string) diff --git a/types/chain_id.go b/types/chain_id.go index c56843ee..0688423c 100644 --- a/types/chain_id.go +++ b/types/chain_id.go @@ -15,7 +15,12 @@ var ( regexEIP155 = `[1-9][0-9]*` regexEpochSeparator = `-{1}` regexEpoch = `[1-9][0-9]*` - ethermintChainID = regexp.MustCompile(fmt.Sprintf(`^(%s)%s(%s)%s(%s)$`, regexChainID, regexEIP155Separator, regexEIP155, regexEpochSeparator, regexEpoch)) + ethermintChainID = regexp.MustCompile(fmt.Sprintf(`^(%s)%s(%s)%s(%s)$`, + regexChainID, + regexEIP155Separator, + regexEIP155, + regexEpochSeparator, + regexEpoch)) ) // IsValidChainID returns false if the given chain identifier is incorrectly formatted. diff --git a/x/evm/client/cli/query.go b/x/evm/client/cli/query.go index 252705f6..a6753272 100644 --- a/x/evm/client/cli/query.go +++ b/x/evm/client/cli/query.go @@ -33,7 +33,7 @@ func GetStorageCmd() *cobra.Command { cmd := &cobra.Command{ Use: "storage [address] [key]", Short: "Gets storage for an account with a given key and height", - Long: "Gets storage for an account with a given key and height. If the height is not provided, it will use the latest height from context.", + Long: "Gets storage for an account with a given key and height. If the height is not provided, it will use the latest height from context.", //nolint:lll Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) diff --git a/x/evm/handler_test.go b/x/evm/handler_test.go index 117e927e..8d998f2e 100644 --- a/x/evm/handler_test.go +++ b/x/evm/handler_test.go @@ -62,7 +62,7 @@ type EvmTestSuite struct { dynamicTxFee bool } -/// DoSetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. +// DoSetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. func (suite *EvmTestSuite) DoSetupTest(t require.TestingT) { checkTx := false diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index 23ade327..a0087a93 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -93,7 +93,7 @@ func (suite *KeeperTestSuite) SetupTest() { suite.SetupApp(checkTx) } -/// SetupApp setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. +// SetupApp setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. func (suite *KeeperTestSuite) SetupApp(checkTx bool) { t := suite.T() // account key, use a constant account to keep unit test deterministic. diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index fcaceee9..4942fc61 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -343,7 +343,13 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, tx *ethtypes.Transaction) (*t // # Commit parameter // // If commit is true, the `StateDB` will be committed, otherwise discarded. -func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context, msg core.Message, tracer vm.EVMLogger, commit bool, cfg *types.EVMConfig, txConfig statedb.TxConfig) (*types.MsgEthereumTxResponse, error) { +func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context, + msg core.Message, + tracer vm.EVMLogger, + commit bool, + cfg *types.EVMConfig, + txConfig statedb.TxConfig, +) (*types.MsgEthereumTxResponse, error) { var ( ret []byte // return bytes from evm execution vmErr error // vm errors do not effect consensus and are therefore not assigned to err diff --git a/x/evm/keeper/utils.go b/x/evm/keeper/utils.go index 2b7465b3..6d0d37d9 100644 --- a/x/evm/keeper/utils.go +++ b/x/evm/keeper/utils.go @@ -60,7 +60,10 @@ func (k Keeper) DeductTxCostsFromUserBalance( baseFee := k.getBaseFee(ctx, london) if baseFee != nil && txData.GetGasFeeCap().Cmp(baseFee) < 0 { - return nil, 0, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "the tx gasfeecap is lower than the tx baseFee: %s (gasfeecap), %s (basefee) ", txData.GetGasFeeCap(), baseFee) + return nil, 0, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, + "the tx gasfeecap is lower than the tx baseFee: %s (gasfeecap), %s (basefee) ", + txData.GetGasFeeCap(), + baseFee) } feeAmt = txData.EffectiveFee(baseFee) diff --git a/x/evm/simulation/operations.go b/x/evm/simulation/operations.go index 9f48abc8..cd5800ad 100644 --- a/x/evm/simulation/operations.go +++ b/x/evm/simulation/operations.go @@ -115,7 +115,8 @@ func SimulateEthSimpleTransfer(ak types.AccountKeeper, k *keeper.Keeper) simtype } // SimulateEthCreateContract simulate create an ERC20 contract. -// It makes operationSimulateEthCallContract the future operations of SimulateEthCreateContract to ensure valid contract call. +// It makes operationSimulateEthCallContract the future operations of SimulateEthCreateContract +// to ensure valid contract call. func SimulateEthCreateContract(ak types.AccountKeeper, k *keeper.Keeper) simtypes.Operation { return func( r *rand.Rand, bapp *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -203,7 +204,12 @@ func SimulateEthTx( } // CreateRandomValidEthTx create the ethereum tx with valid random values -func CreateRandomValidEthTx(ctx *simulateContext, from, to *common.Address, amount *big.Int, data *hexutil.Bytes) (ethTx *types.MsgEthereumTx, err error) { +func CreateRandomValidEthTx(ctx *simulateContext, + from, + to *common.Address, + amount *big.Int, + data *hexutil.Bytes, +) (ethTx *types.MsgEthereumTx, err error) { gasCap := ctx.rand.Uint64() estimateGas, err := EstimateGas(ctx, from, to, data, gasCap) if err != nil { @@ -269,7 +275,12 @@ func RandomTransferableAmount(ctx *simulateContext, address common.Address, esti } // GetSignedTx sign the ethereum tx and packs it as a signing.Tx . -func GetSignedTx(ctx *simulateContext, txBuilder client.TxBuilder, msg *types.MsgEthereumTx, prv cryptotypes.PrivKey) (signedTx signing.Tx, err error) { +func GetSignedTx( + ctx *simulateContext, + txBuilder client.TxBuilder, + msg *types.MsgEthereumTx, + prv cryptotypes.PrivKey, +) (signedTx signing.Tx, err error) { builder, ok := txBuilder.(tx.ExtensionOptionsTxBuilder) if !ok { return nil, fmt.Errorf("can not initiate ExtensionOptionsTxBuilder") diff --git a/x/evm/types/tracer.go b/x/evm/types/tracer.go index d3827c70..ffe08816 100644 --- a/x/evm/types/tracer.go +++ b/x/evm/types/tracer.go @@ -60,7 +60,13 @@ func NewNoOpTracer() *NoOpTracer { } // CaptureStart implements vm.Tracer interface -func (dt NoOpTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { +func (dt NoOpTracer) CaptureStart(env *vm.EVM, + from common.Address, + to common.Address, + create bool, + input []byte, + gas uint64, + value *big.Int) { } // CaptureState implements vm.Tracer interface diff --git a/x/feemarket/keeper/keeper_test.go b/x/feemarket/keeper/keeper_test.go index f6005d2c..c699d1d6 100644 --- a/x/feemarket/keeper/keeper_test.go +++ b/x/feemarket/keeper/keeper_test.go @@ -69,7 +69,7 @@ func TestKeeperTestSuite(t *testing.T) { RunSpecs(t, "Keeper Suite") } -/// SetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. +// SetupTest setup test environment, it uses`require.TestingT` to support both `testing.T` and `testing.B`. func (suite *KeeperTestSuite) SetupTest() { checkTx := false suite.app = app.Setup(checkTx, nil) diff --git a/x/feemarket/simulation/genesis.go b/x/feemarket/simulation/genesis.go index bae2c26d..987e4c1b 100644 --- a/x/feemarket/simulation/genesis.go +++ b/x/feemarket/simulation/genesis.go @@ -12,7 +12,13 @@ import ( // RandomizedGenState generates a random GenesisState for nft func RandomizedGenState(simState *module.SimulationState) { - params := types.NewParams(simState.Rand.Uint32()%2 == 0, simState.Rand.Uint32(), simState.Rand.Uint32(), simState.Rand.Uint64(), simState.Rand.Int63(), sdk.ZeroDec(), types.DefaultMinGasMultiplier) + params := types.NewParams(simState.Rand.Uint32()%2 == 0, + simState.Rand.Uint32(), + simState.Rand.Uint32(), + simState.Rand.Uint64(), + simState.Rand.Int63(), + sdk.ZeroDec(), + types.DefaultMinGasMultiplier) blockGas := simState.Rand.Uint64() feemarketGenesis := types.NewGenesisState(params, blockGas)