diff --git a/app/upgrades.go b/app/upgrades.go index 80832f4..81f145c 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -11,7 +11,7 @@ import ( v009 "github.com/Asphere-xyz/tacchain/app/upgrades/v0.0.9" v101 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.1" v102 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.2" - v103 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.3" + v104 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.4" ) // Upgrades list of chain upgrades @@ -21,7 +21,7 @@ var Upgrades = []upgrades.Upgrade{ v0011.Upgrade, v101.Upgrade, v102.Upgrade, // liquid stake - v103.Upgrade, // ed25519 precompile + v104.Upgrade, // ed25519 precompile } // RegisterUpgradeHandlers registers the chain upgrade handlers diff --git a/app/upgrades/v1.0.4/upgrades.go b/app/upgrades/v1.0.4/upgrades.go new file mode 100644 index 0000000..cf503a2 --- /dev/null +++ b/app/upgrades/v1.0.4/upgrades.go @@ -0,0 +1,48 @@ +package v104 + +import ( + "context" + "slices" + + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Asphere-xyz/tacchain/app/upgrades" + "github.com/cosmos/cosmos-sdk/types/module" + + evmtypes "github.com/cosmos/evm/x/vm/types" +) + +const UpgradeName = "v1.0.4" + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: storetypes.StoreUpgrades{}, +} + +func CreateUpgradeHandler( + mm upgrades.ModuleManager, + configurator module.Configurator, + ak *upgrades.AppKeepers, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + vm, err := mm.RunMigrations(ctx, configurator, fromVM) + if err != nil { + return vm, err + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + + evmParams := ak.EVMKeeper.GetParams(sdkCtx) + target := evmtypes.Ed25519PrecompileAddress + if !slices.Contains(evmParams.ActiveStaticPrecompiles, target) { + evmParams.ActiveStaticPrecompiles = append(evmParams.ActiveStaticPrecompiles, target) + if err := ak.EVMKeeper.SetParams(sdkCtx, evmParams); err != nil { + return vm, err + } + } + return vm, nil + } +}