Skip to content

Commit

Permalink
chore(upgrade): combine v16 upgrade handlers (#2231)
Browse files Browse the repository at this point in the history
* combine upgrade handlers into one

* remove rc upgrade constants and comment out hard fork logic

* update changelog - remove not-included PR

---------

Co-authored-by: tom <tomasguerraalda@hotmail.com>
  • Loading branch information
MalteHerrmann and GAtom22 committed Jan 5, 2024
1 parent 261d411 commit fcedcf5
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 140 deletions.
1 change: 0 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@ Ref: https://keepachangelog.com/en/1.0.0/
- (app) [#2139](https://github.com/evmos/evmos/pull/2139) Remove old upgrade handlers logic.
- (outpost) [#2171](https://github.com/evmos/evmos/pull/2171) Add channelID selector based on the ChainID.
- (db) [#2182](https://github.com/evmos/evmos/pull/2182) Bump RocksDB version to `v8.8.1`.
- (api) [#2198] (https://github.com/evmos/evmos/pull/2198) Remove deprecated `RegisterCoinProposal` from store to avoid breaking the governance proposals query.
- (outposts) [#2215](https://github.com/evmos/evmos/pull/2215) backport handle cases for input and output denoms without token pair lookup
- (cli) [#2212](https://github.com/evmos/evmos/pull/2212) Remove ValidateBasic in cli.
- (swagger) [#2219](https://github.com/evmos/evmos/pull/2219) Update Swagger configuration to remove outdated entries and update vesting module version.
Expand Down
34 changes: 7 additions & 27 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,10 @@ func (app *Evmos) setPostHandler() {
// BeginBlocker will schedule the upgrade plan and perform the state migration (if any).
func (app *Evmos) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
// Perform any scheduled forks before executing the modules logic
app.ScheduleForkUpgrade(ctx)
//
// NOTE: there are no scheduled forks currently, uncomment when needed
// app.ScheduleForkUpgrade(ctx)

return app.mm.BeginBlock(ctx, req)
}

Expand Down Expand Up @@ -1257,37 +1260,14 @@ func (app *Evmos) setupUpgradeHandlers() {
v16.UpgradeName,
v16.CreateUpgradeHandler(
app.mm, app.configurator,
app.EvmKeeper,
app.AccountKeeper,
app.BankKeeper,
app.InflationKeeper,
app.EvmKeeper,
app.GovKeeper,
app.InflationKeeper,
),
)

// v16-rc2 upgrade handler
app.UpgradeKeeper.SetUpgradeHandler(
v16.UpgradeNameTestnetRC2,
v16.CreateUpgradeHandlerRC2(app.mm, app.configurator),
)

// v16-rc3 upgrade handler
app.UpgradeKeeper.SetUpgradeHandler(
v16.UpgradeNameTestnetRC3,
v16.CreateUpgradeHandlerRC3(app.mm, app.configurator),
)

// v16-rc4 upgrade handler
app.UpgradeKeeper.SetUpgradeHandler(
v16.UpgradeNameTestnetRC4,
v16.CreateUpgradeHandlerRC4(app.mm, app.configurator, app.AccountKeeper),
)

// v16-rc5 upgrade handler
app.UpgradeKeeper.SetUpgradeHandler(
v16.UpgradeNameTestnetRC5,
v16.CreateUpgradeHandlerRC5(app.mm, app.configurator, app.BankKeeper, app.GovKeeper),
)

// When a planned update height is reached, the old binary will panic
// writing on disk the height and name of the update that triggered it
// This will read that value, and execute the preparations for the upgrade.
Expand Down
64 changes: 27 additions & 37 deletions app/forks.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,7 @@
package app

import (
"fmt"

v16 "github.com/evmos/evmos/v16/app/upgrades/v16"

sdk "github.com/cosmos/cosmos-sdk/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"

"github.com/evmos/evmos/v16/utils"
)

// ScheduleForkUpgrade executes any necessary fork logic for based upon the current
Expand All @@ -22,34 +15,31 @@ import (
//
// 1. Release a non-breaking patch version so that the chain can set the scheduled upgrade plan at upgrade-height.
// 2. Release the software defined in the upgrade-info
func (app *Evmos) ScheduleForkUpgrade(ctx sdk.Context) {
// NOTE: there are no mainnet forks for the existing versions
if utils.IsMainnet(ctx.ChainID()) {
return
}

upgradePlan := upgradetypes.Plan{
Height: ctx.BlockHeight(),
}

// handle mainnet forks with their corresponding upgrade name and info
switch ctx.BlockHeight() {
case v16.TestnetUpgradeHeight:
upgradePlan.Name = v16.UpgradeNameTestnetRC4
upgradePlan.Info = v16.UpgradeInfo
default:
// No-op
return
}

// schedule the upgrade plan to the current block hight, effectively performing
// a hard fork that uses the upgrade handler to manage the migration.
if err := app.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan); err != nil {
panic(
fmt.Errorf(
"failed to schedule upgrade %s during BeginBlock at height %d: %w",
upgradePlan.Name, ctx.BlockHeight(), err,
),
)
}
func (app *Evmos) ScheduleForkUpgrade(_ sdk.Context) {
// NOTE: there are no scheduled forks at the moment

// upgradePlan := upgradetypes.Plan{
// Height: ctx.BlockHeight(),
// }
//
// // handle mainnet forks with their corresponding upgrade name and info
// switch ctx.BlockHeight() {
// case v16.TestnetUpgradeHeight:
// upgradePlan.Name = v16.UpgradeNameTestnetRC4
// upgradePlan.Info = v16.UpgradeInfo
// default:
// // No-op
// return
// }
//
// // schedule the upgrade plan to the current block hight, effectively performing
// // a hard fork that uses the upgrade handler to manage the migration.
// if err := app.UpgradeKeeper.ScheduleUpgrade(ctx, upgradePlan); err != nil {
// panic(
// fmt.Errorf(
// "failed to schedule upgrade %s during BeginBlock at height %d: %w",
// upgradePlan.Name, ctx.BlockHeight(), err,
// ),
// )
// }
}
12 changes: 1 addition & 11 deletions app/upgrades/v16/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,6 @@ package v16
const (
// UpgradeName is the shared upgrade plan name for mainnet
UpgradeName = "v16.0.0"
// UpgradeNameTestnetRC2 is the shared upgrade plan name for testnet rc2 upgrade
UpgradeNameTestnetRC2 = "v16.0.0-rc2"
// UpgradeNameTestnetRC3 is the shared upgrade plan name for testnet rc3 patch upgrade
UpgradeNameTestnetRC3 = "v16.0.0-rc3"
// UpgradeNameTestnetRC4 is the shared upgrade plan name for testnet rc4 hard-fork upgrade
UpgradeNameTestnetRC4 = "v16.0.0-rc4"
// TestnetUpgradeHeight defines the Evmos testnet block height on which the rc3 upgrade will take place
TestnetUpgradeHeight = 19465900
// UpgradeNameTestnetRC5 is the shared upgrade plan name for testnet rc5 upgrade
UpgradeNameTestnetRC5 = "v16.0.0-rc5"
// UpgradeInfo defines the binaries that will be used for the upgrade
UpgradeInfo = `'{"binaries":{"darwin/amd64":"https://github.com/evmos/evmos/releases/download/v16.0.0-rc5/evmos_16.0.0-rc5_Darwin_arm64.tar.gz","darwin/x86_64":"https://github.com/evmos/evmos/releases/download/v16.0.0-rc5/evmos_16.0.0-rc5_Darwin_x86_64.tar.gz","linux/arm64":"https://github.com/evmos/evmos/releases/download/v16.0.0-rc5/evmos_16.0.0-rc5_Linux_arm64.tar.gz","linux/amd64":"https://github.com/evmos/evmos/releases/download/v16.0.0-rc5/evmos_16.0.0-rc5_Linux_amd64.tar.gz","windows/x86_64":"https://github.com/evmos/evmos/releases/download/v16.0.0-rc5/evmos_16.0.0-rc5_Windows_x86_64.zip"}}'`
UpgradeInfo = `'{"binaries":{"darwin/amd64":"https://github.com/evmos/evmos/releases/download/v16.0.0/evmos_16.0.0_Darwin_arm64.tar.gz","darwin/x86_64":"https://github.com/evmos/evmos/releases/download/v16.0.0/evmos_16.0.0_Darwin_x86_64.tar.gz","linux/arm64":"https://github.com/evmos/evmos/releases/download/v16.0.0/evmos_16.0.0_Linux_arm64.tar.gz","linux/amd64":"https://github.com/evmos/evmos/releases/download/v16.0.0/evmos_16.0.0_Linux_amd64.tar.gz","windows/x86_64":"https://github.com/evmos/evmos/releases/download/v16.0.0/evmos_16.0.0_Windows_x86_64.zip"}}'`
)
72 changes: 8 additions & 64 deletions app/upgrades/v16/upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ import (
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
ek *evmkeeper.Keeper,
ak authkeeper.AccountKeeper,
bk bankkeeper.Keeper,
inflationKeeper inflationkeeper.Keeper,
ek *evmkeeper.Keeper,
gk govkeeper.Keeper,
inflationKeeper inflationkeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
logger := ctx.Logger().With("upgrade", UpgradeName)
Expand All @@ -46,6 +47,11 @@ func CreateUpgradeHandler(
logger.Error("failed to enable outposts", "error", err.Error())
}

// Add Burner role to fee collector
if err := MigrateFeeCollector(ak, ctx); err != nil {
logger.Error("failed to migrate the fee collector", "error", err.Error())
}

if err := BurnUsageIncentivesPool(ctx, bk); err != nil {
logger.Error("failed to burn inflation pool", "error", err.Error())
}
Expand All @@ -55,7 +61,6 @@ func CreateUpgradeHandler(
}

// Remove the deprecated governance proposals from store
// TODO include this in rc5 testnet upgrade
logger.Debug("deleting deprecated incentives module proposals...")
DeleteIncentivesProposals(ctx, gk, logger)

Expand All @@ -73,64 +78,3 @@ func CreateUpgradeHandler(
return mm.RunMigrations(ctx, configurator, vm)
}
}

// CreateUpgradeHandlerRC2 creates an SDK upgrade handler for v16.0.0-rc2
func CreateUpgradeHandlerRC2(
mm *module.Manager,
configurator module.Configurator,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, vm)
}
}

// CreateUpgradeHandlerRC3 creates an SDK upgrade handler for v16.0.0-rc3
func CreateUpgradeHandlerRC3(
mm *module.Manager,
configurator module.Configurator,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, vm)
}
}

// CreateUpgradeHandlerRC4 creates an SDK upgrade handler for v16.0.0-rc4
func CreateUpgradeHandlerRC4(
mm *module.Manager,
configurator module.Configurator,
ak authkeeper.AccountKeeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
logger := ctx.Logger().With("upgrade", UpgradeNameTestnetRC4)

// Add Burner role to fee collector
if err := MigrateFeeCollector(ak, ctx); err != nil {
logger.Error("failed to migrate the fee collector", "error", err.Error())
}
return mm.RunMigrations(ctx, configurator, vm)
}
}

// CreateUpgradeHandlerRC5 creates an SDK upgrade handler for v16.0.0-rc5
func CreateUpgradeHandlerRC5(
mm *module.Manager,
configurator module.Configurator,
bk bankkeeper.Keeper,
gk govkeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
logger := ctx.Logger().With("upgrade", UpgradeName)

if err := BurnUsageIncentivesPool(ctx, bk); err != nil {
logger.Error("failed to burn inflation pool", "error", err.Error())
}

// Remove the deprecated governance proposals from store
logger.Debug("deleting deprecated incentives module proposals...")
DeleteIncentivesProposals(ctx, gk, logger)

// Leave modules are as-is to avoid running InitGenesis.
logger.Debug("running module migrations ...")
return mm.RunMigrations(ctx, configurator, vm)
}
}

0 comments on commit fcedcf5

Please sign in to comment.