Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
- [\#301](https://github.com/cosmos/evm/pull/301) Add 4-node localnet infrastructure for testing multi-validator setups
- [\#304](https://github.com/cosmos/evm/pull/304) Add system test framework for integration testing
- [\#344](https://github.com/cosmos/evm/pull/344) Add txpool RPC namespace stubs in preparation for app-side mempool implementation
- [\#440](https://github.com/cosmos/evm/pull/440) Enforce app creator returning application implement AppWithPendingTxStream in build time.

### STATE BREAKING

Expand Down
7 changes: 4 additions & 3 deletions evmd/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ import (
"github.com/cosmos/cosmos-sdk/x/staking"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
cosmosevmserver "github.com/cosmos/evm/server"
)

func init() {
Expand All @@ -147,9 +148,9 @@ const appName = "evmd"
var defaultNodeHome string

var (
_ runtime.AppI = (*EVMD)(nil)
_ servertypes.Application = (*EVMD)(nil)
_ ibctesting.TestingApp = (*EVMD)(nil)
_ runtime.AppI = (*EVMD)(nil)
_ cosmosevmserver.Application = (*EVMD)(nil)
_ ibctesting.TestingApp = (*EVMD)(nil)
)

// EVMD extends an ABCI application, but with most of its parameters exported.
Expand Down
9 changes: 6 additions & 3 deletions evmd/cmd/evmd/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,14 +175,17 @@ func initRootCmd(rootCmd *cobra.Command, evmApp *evmd.EVMD) {
cfg.Seal()

defaultNodeHome := evmdconfig.MustGetDefaultNodeHome()
sdkAppCreator := func(l log.Logger, d dbm.DB, w io.Writer, ao servertypes.AppOptions) servertypes.Application {
return newApp(l, d, w, ao)
}
rootCmd.AddCommand(
genutilcli.InitCmd(evmApp.BasicModuleManager, defaultNodeHome),
genutilcli.Commands(evmApp.TxConfig(), evmApp.BasicModuleManager, defaultNodeHome),
cmtcli.NewCompletionCmd(rootCmd, true),
debug.Cmd(),
confixcmd.ConfigCommand(),
pruning.Cmd(newApp, defaultNodeHome),
snapshot.Cmd(newApp),
pruning.Cmd(sdkAppCreator, defaultNodeHome),
snapshot.Cmd(sdkAppCreator),
NewTestnetCmd(evmApp.BasicModuleManager, banktypes.GenesisBalancesIterator{}, appCreator{}),
)

Expand Down Expand Up @@ -272,7 +275,7 @@ func newApp(
db dbm.DB,
traceStore io.Writer,
appOpts servertypes.AppOptions,
) servertypes.Application {
) cosmosevmserver.Application {
var cache storetypes.MultiStorePersistentCache

if cast.ToBool(appOpts.Get(sdkserver.FlagInterBlockCache)) {
Expand Down
15 changes: 13 additions & 2 deletions server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import (
cosmosevmtypes "github.com/cosmos/evm/types"

errorsmod "cosmossdk.io/errors"
"cosmossdk.io/log"
pruningtypes "cosmossdk.io/store/pruning/types"

"github.com/cosmos/cosmos-sdk/client"
Expand All @@ -53,6 +54,14 @@ import (
// DBOpener is a function to open `application.db`, potentially with customized options.
type DBOpener func(opts types.AppOptions, rootDir string, backend dbm.BackendType) (dbm.DB, error)

type Application interface {
types.Application
AppWithPendingTxStream
}

// AppCreator is a function that allows us to lazily initialize an application implementing with AppWithPendingTxStream.
type AppCreator func(log.Logger, dbm.DB, io.Writer, types.AppOptions) Application

// StartOptions defines options that can be customized in `StartCmd`
type StartOptions struct {
AppCreator types.AppCreator
Expand All @@ -61,9 +70,11 @@ type StartOptions struct {
}

// NewDefaultStartOptions use the default db opener provided in tm-db.
func NewDefaultStartOptions(appCreator types.AppCreator, defaultNodeHome string) StartOptions {
func NewDefaultStartOptions(appCreator AppCreator, defaultNodeHome string) StartOptions {
return StartOptions{
AppCreator: appCreator,
AppCreator: func(l log.Logger, d dbm.DB, w io.Writer, ao types.AppOptions) types.Application {
return appCreator(l, d, w, ao)
},
DefaultNodeHome: defaultNodeHome,
DBOpener: cosmosevmserverconfig.OpenDB,
}
Expand Down
Loading