Skip to content

Commit e90d973

Browse files
committed
feat: added evm changes in app.go
1 parent adadb82 commit e90d973

File tree

5 files changed

+541
-248
lines changed

5 files changed

+541
-248
lines changed

app/app.go

Lines changed: 106 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,21 @@ import (
110110
ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
111111
"github.com/spf13/cast"
112112

113+
// srvflags "github.com/zeta-chain/node/server/flags"
114+
115+
evmante "github.com/zeta-chain/ethermint/app/ante"
116+
ethermint "github.com/zeta-chain/ethermint/types"
117+
"github.com/zeta-chain/ethermint/x/evm"
118+
evmkeeper "github.com/zeta-chain/ethermint/x/evm/keeper"
119+
evmtypes "github.com/zeta-chain/ethermint/x/evm/types"
120+
"github.com/zeta-chain/ethermint/x/feemarket"
121+
feemarketkeeper "github.com/zeta-chain/ethermint/x/feemarket/keeper"
122+
feemarkettypes "github.com/zeta-chain/ethermint/x/feemarket/types"
123+
113124
pushchainmodule "pushchain/x/pushchain"
114125
pushchainmodulekeeper "pushchain/x/pushchain/keeper"
115126
pushchainmoduletypes "pushchain/x/pushchain/types"
127+
116128
// this line is used by starport scaffolding # stargate/app/moduleImport
117129

118130
appparams "pushchain/app/params"
@@ -187,6 +199,7 @@ var (
187199
stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
188200
govtypes.ModuleName: {authtypes.Burner},
189201
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
202+
evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner},
190203
// this line is used by starport scaffolding # stargate/app/maccPerms
191204
}
192205
)
@@ -203,6 +216,8 @@ func init() {
203216
}
204217

205218
DefaultNodeHome = filepath.Join(userHomeDir, "."+Name)
219+
// manually update the power reduction by replacing micro (u) -> atto (a) evmos
220+
sdk.DefaultPowerReduction = ethermint.PowerReduction
206221
}
207222

208223
// App extends an ABCI application, but with most of its parameters exported.
@@ -249,6 +264,10 @@ type App struct {
249264
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
250265
ScopedICAHostKeeper capabilitykeeper.ScopedKeeper
251266

267+
// evm keepers
268+
EvmKeeper *evmkeeper.Keeper
269+
FeeMarketKeeper feemarketkeeper.Keeper
270+
252271
PushchainKeeper pushchainmodulekeeper.Keeper
253272
// this line is used by starport scaffolding # stargate/app/keeperDeclaration
254273

@@ -296,10 +315,12 @@ func New(
296315
govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey,
297316
feegrant.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, icahosttypes.StoreKey,
298317
capabilitytypes.StoreKey, group.StoreKey, icacontrollertypes.StoreKey, consensusparamtypes.StoreKey,
318+
evmtypes.StoreKey,
319+
feemarkettypes.StoreKey,
299320
pushchainmoduletypes.StoreKey,
300321
// this line is used by starport scaffolding # stargate/app/storeKey
301322
)
302-
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
323+
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey)
303324
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
304325

305326
app := &App{
@@ -343,7 +364,7 @@ func New(
343364
app.AccountKeeper = authkeeper.NewAccountKeeper(
344365
appCodec,
345366
keys[authtypes.StoreKey],
346-
authtypes.ProtoBaseAccount,
367+
ethermint.ProtoAccount,
347368
maccPerms,
348369
sdk.Bech32PrefixAccAddr,
349370
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
@@ -415,6 +436,43 @@ func New(
415436
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
416437
)
417438

439+
// Create Ethermint keepers
440+
tracer := "evm.tracer"
441+
feeSs := app.GetSubspace(feemarkettypes.ModuleName)
442+
app.FeeMarketKeeper = feemarketkeeper.NewKeeper(
443+
appCodec,
444+
authtypes.NewModuleAddress(govtypes.ModuleName),
445+
keys[feemarkettypes.StoreKey],
446+
tkeys[feemarkettypes.TransientKey],
447+
feeSs,
448+
app.ConsensusParamsKeeper,
449+
)
450+
evmSs := app.GetSubspace(evmtypes.ModuleName)
451+
452+
app.EvmKeeper = evmkeeper.NewKeeper(
453+
appCodec,
454+
keys[evmtypes.StoreKey],
455+
tkeys[evmtypes.TransientKey],
456+
authtypes.NewModuleAddress(govtypes.ModuleName),
457+
app.AccountKeeper,
458+
app.BankKeeper,
459+
app.StakingKeeper,
460+
&app.FeeMarketKeeper,
461+
tracer,
462+
evmSs,
463+
// precompiles.StatefulContracts(
464+
// &app.FungibleKeeper,
465+
// app.StakingKeeper,
466+
// app.BankKeeper,
467+
// app.DistrKeeper,
468+
// appCodec,
469+
// storetypes.TransientGasConfig(),
470+
// ),
471+
nil,
472+
app.ConsensusParamsKeeper,
473+
aggregateAllKeys(keys, tkeys, memKeys),
474+
)
475+
418476
groupConfig := group.DefaultConfig()
419477
/*
420478
Example of setting group params:
@@ -588,6 +646,8 @@ func New(
588646
params.NewAppModule(app.ParamsKeeper),
589647
transferModule,
590648
icaModule,
649+
feemarket.NewAppModule(app.FeeMarketKeeper, feeSs),
650+
evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, evmSs),
591651
pushchainModule,
592652
// this line is used by starport scaffolding # stargate/app/appModule
593653

@@ -601,6 +661,7 @@ func New(
601661
app.mm.SetOrderBeginBlockers(
602662
// upgrades should be run first
603663
upgradetypes.ModuleName,
664+
evmtypes.ModuleName,
604665
capabilitytypes.ModuleName,
605666
minttypes.ModuleName,
606667
distrtypes.ModuleName,
@@ -621,6 +682,7 @@ func New(
621682
paramstypes.ModuleName,
622683
vestingtypes.ModuleName,
623684
consensusparamtypes.ModuleName,
685+
feemarkettypes.ModuleName,
624686
pushchainmoduletypes.ModuleName,
625687
// this line is used by starport scaffolding # stargate/app/beginBlockers
626688
)
@@ -647,6 +709,8 @@ func New(
647709
upgradetypes.ModuleName,
648710
vestingtypes.ModuleName,
649711
consensusparamtypes.ModuleName,
712+
evmtypes.ModuleName,
713+
feemarkettypes.ModuleName,
650714
pushchainmoduletypes.ModuleName,
651715
// this line is used by starport scaffolding # stargate/app/endBlockers
652716
)
@@ -678,6 +742,8 @@ func New(
678742
upgradetypes.ModuleName,
679743
vestingtypes.ModuleName,
680744
consensusparamtypes.ModuleName,
745+
evmtypes.ModuleName,
746+
feemarkettypes.ModuleName,
681747
pushchainmoduletypes.ModuleName,
682748
// this line is used by starport scaffolding # stargate/app/initGenesis
683749
}
@@ -713,11 +779,21 @@ func New(
713779
// initialize BaseApp
714780
anteHandler, err := ante.NewAnteHandler(
715781
ante.HandlerOptions{
716-
AccountKeeper: app.AccountKeeper,
717-
BankKeeper: app.BankKeeper,
782+
AccountKeeper: app.AccountKeeper,
783+
BankKeeper: app.BankKeeper,
784+
// EvmKeeper: app.EvmKeeper,
785+
// FeeMarketKeeper: app.FeeMarketKeeper,
718786
SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
719787
FeegrantKeeper: app.FeeGrantKeeper,
720-
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
788+
SigGasConsumer: evmante.DefaultSigVerificationGasConsumer,
789+
// DisabledAuthzMsgs: []string{
790+
// sdk.MsgTypeURL(
791+
// &evmtypes.MsgEthereumTx{},
792+
// ), // disable the Msg types that cannot be included on an authz.MsgExec msgs field
793+
// // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}),
794+
// // sdk.MsgTypeURL(&vestingtypes.MsgCreatePermanentLockedAccount{}),
795+
// // sdk.MsgTypeURL(&vestingtypes.MsgCreatePeriodicVestingAccount{}),
796+
// },
721797
},
722798
)
723799
if err != nil {
@@ -903,6 +979,8 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
903979
paramsKeeper.Subspace(ibcexported.ModuleName)
904980
paramsKeeper.Subspace(icacontrollertypes.SubModuleName)
905981
paramsKeeper.Subspace(icahosttypes.SubModuleName)
982+
paramsKeeper.Subspace(evmtypes.ModuleName)
983+
paramsKeeper.Subspace(feemarkettypes.ModuleName)
906984
paramsKeeper.Subspace(pushchainmoduletypes.ModuleName)
907985
// this line is used by starport scaffolding # stargate/app/paramSubspace
908986

@@ -918,3 +996,26 @@ func (app *App) SimulationManager() *module.SimulationManager {
918996
func (app *App) ModuleManager() *module.Manager {
919997
return app.mm
920998
}
999+
1000+
// aggregateAllKeys aggregates all the keys in a single map.
1001+
func aggregateAllKeys(
1002+
keys map[string]*storetypes.KVStoreKey,
1003+
tKeys map[string]*storetypes.TransientStoreKey,
1004+
memKeys map[string]*storetypes.MemoryStoreKey,
1005+
) map[string]storetypes.StoreKey {
1006+
allKeys := make(map[string]storetypes.StoreKey, len(keys)+len(tKeys)+len(memKeys))
1007+
1008+
for k, v := range keys {
1009+
allKeys[k] = v
1010+
}
1011+
1012+
for k, v := range tKeys {
1013+
allKeys[k] = v
1014+
}
1015+
1016+
for k, v := range memKeys {
1017+
allKeys[k] = v
1018+
}
1019+
1020+
return allKeys
1021+
}

0 commit comments

Comments
 (0)