@@ -8,13 +8,17 @@ import (
88 "github.com/cosmos/cosmos-sdk/types/module"
99 govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
1010 govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
11+ "github.com/ethereum/go-ethereum/common"
12+
13+ erc20keeper "github.com/haqq-network/haqq/x/erc20/keeper"
1114)
1215
1316// CreateUpgradeHandler creates an SDK upgrade handler for Evmos v20
1417func CreateUpgradeHandler (
1518 mm * module.Manager ,
1619 configurator module.Configurator ,
1720 gk govkeeper.Keeper ,
21+ ek erc20keeper.Keeper ,
1822) upgradetypes.UpgradeHandler {
1923 return func (c context.Context , _ upgradetypes.Plan , vm module.VersionMap ) (module.VersionMap , error ) {
2024 ctx := sdk .UnwrapSDKContext (c )
@@ -30,6 +34,13 @@ func CreateUpgradeHandler(
3034 logger .Debug ("Updating expedited prop params..." )
3135 if err := UpdateExpeditedPropsParams (ctx , gk ); err != nil {
3236 logger .Error ("error while updating gov params" , "error" , err .Error ())
37+ return nil , err
38+ }
39+
40+ logger .Debug ("Register dynamic precompiles..." )
41+ if err := RegisterDynamicPrecompiles (ctx , ek ); err != nil {
42+ logger .Error ("error while registering erc20 precompiles" , "error" , err .Error ())
43+ return nil , err
3344 }
3445
3546 return vm , nil
@@ -63,3 +74,19 @@ func UpdateExpeditedPropsParams(ctx sdk.Context, gk govkeeper.Keeper) error {
6374 }
6475 return gk .Params .Set (ctx , params )
6576}
77+
78+ func RegisterDynamicPrecompiles (ctx sdk.Context , ek erc20keeper.Keeper ) error {
79+ erc20Params := ek .GetParams (ctx )
80+ if len (erc20Params .DynamicPrecompiles ) == 0 {
81+ return nil
82+ }
83+
84+ // if a precompile is present we should register the account with the erc20 codehash
85+ for _ , precompile := range erc20Params .DynamicPrecompiles {
86+ if err := ek .RegisterERC20CodeHash (ctx , common .HexToAddress (precompile )); err != nil {
87+ return err
88+ }
89+ }
90+
91+ return nil
92+ }
0 commit comments