Skip to content

Commit

Permalink
fix: CNS-v3.1.0 (#1664)
Browse files Browse the repository at this point in the history
* add migrators

* up the version

* add upgrade handlerUpgrade_3_1_0,

* add print

* fix migrator

* add error print on failed migration

* up protocol version

---------

Co-authored-by: Yarom Swisa <yarom@lavanet.xyz git config --global user.name Yarom>
  • Loading branch information
Yaroms and Yarom Swisa committed Sep 1, 2024
1 parent 8481fde commit 0f407c2
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 16 deletions.
1 change: 1 addition & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ var Upgrades = []upgrades.Upgrade{
upgrades.Upgrade_2_5_0,
upgrades.Upgrade_3_0_0,
upgrades.Upgrade_3_0_1,
upgrades.Upgrade_3_1_0,
}

// this line is used by starport scaffolding # stargate/wasm/app/enabledProposals
Expand Down
6 changes: 6 additions & 0 deletions app/upgrades/empty_upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,3 +294,9 @@ var Upgrade_3_0_1 = Upgrade{
CreateUpgradeHandler: defaultUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{},
}

var Upgrade_3_1_0 = Upgrade{
UpgradeName: "v3.1.0",
CreateUpgradeHandler: defaultUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{},
}
35 changes: 35 additions & 0 deletions x/pairing/keeper/migrations.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package keeper

import (
"fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/lavanet/lava/v2/utils"
v2 "github.com/lavanet/lava/v2/x/pairing/migrations/v2"
)

Expand All @@ -20,3 +23,35 @@ func (m Migrator) MigrateVersion2To3(ctx sdk.Context) error {
v2.RemoveAllEpochPayments(ctx, m.keeper.storeKey)
return nil
}

// MigrateVersion3To4 fix delegation total in the stake entries
func (m Migrator) MigrateVersion3To4(ctx sdk.Context) error {
entries := m.keeper.epochStorageKeeper.GetAllStakeEntriesCurrent(ctx)
epoch := m.keeper.epochStorageKeeper.GetCurrentNextEpoch(ctx)
for _, e := range entries {
delegations, err := m.keeper.dualstakingKeeper.GetProviderDelegators(ctx, e.Address, epoch)
if err != nil {
utils.LavaFormatError("failed getting provider delegators at MigrateVersion3To4", err, utils.LogAttr("provider", e.Address))
continue
}

delegateTotal := sdk.ZeroInt()
for _, d := range delegations {
if e.Address == d.Delegator || e.Vault == d.Delegator || d.ChainID != e.Chain {
continue
}
delegateTotal = delegateTotal.Add(d.Amount.Amount)
}
if !e.DelegateTotal.Amount.Equal(delegateTotal) {
fmt.Println("fixing delegate total for", e.Address, e.Chain)

e.DelegateTotal.Amount = delegateTotal
if e.EffectiveStake().LT(m.keeper.specKeeper.GetMinStake(ctx, e.Chain).Amount) {
e.Freeze()
}
m.keeper.epochStorageKeeper.SetStakeEntryCurrent(ctx, e)
}
}

return nil
}
6 changes: 5 additions & 1 deletion x/pairing/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
if err := cfg.RegisterMigration(types.ModuleName, 2, migrator.MigrateVersion2To3); err != nil {
panic(fmt.Errorf("%s: failed to register migration to v3: %w", types.ModuleName, err))
}
// register v3 -> v4 migration
if err := cfg.RegisterMigration(types.ModuleName, 3, migrator.MigrateVersion3To4); err != nil {
panic(fmt.Errorf("%s: failed to register migration to v4: %w", types.ModuleName, err))
}
}

// RegisterInvariants registers the capability module's invariants.
Expand All @@ -157,7 +161,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw
}

// ConsensusVersion implements ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 3 }
func (AppModule) ConsensusVersion() uint64 { return 4 }

// BeginBlock executes all ABCI BeginBlock logic respective to the capability module.
func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
Expand Down
19 changes: 5 additions & 14 deletions x/protocol/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,72 +132,59 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v3: %w", types.ModuleName, err))
}

// register v3 -> v4 migration
if err := cfg.RegisterMigration(types.ModuleName, 3, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v3: %w", types.ModuleName, err))
}

// register v4 -> v5 migration
if err := cfg.RegisterMigration(types.ModuleName, 4, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v5: %w", types.ModuleName, err))
}

// register v5 -> v6 migration
if err := cfg.RegisterMigration(types.ModuleName, 5, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v6: %w", types.ModuleName, err))
}

// register v6 -> v7 migration
if err := cfg.RegisterMigration(types.ModuleName, 6, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v7: %w", types.ModuleName, err))
}

// register v7 -> v8 migration
if err := cfg.RegisterMigration(types.ModuleName, 7, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v8: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 8, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v9: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 9, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v10: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 10, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v11: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 11, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v12: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 12, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v13: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 13, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v14: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 14, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v15: %w", types.ModuleName, err))
}

if err := cfg.RegisterMigration(types.ModuleName, 15, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v16: %w", types.ModuleName, err))
Expand All @@ -222,10 +209,14 @@ func (am AppModule) RegisterServices(cfg module.Configurator) {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v21: %w", types.ModuleName, err))
}
if err := cfg.RegisterMigration(types.ModuleName, 21, migrator.MigrateVersion); err != nil {
// panic:ok: at start up, migration cannot proceed anyhow
panic(fmt.Errorf("%s: failed to register migration to v22: %w", types.ModuleName, err))
}
}

// ConsensusVersion implements ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 21 }
func (AppModule) ConsensusVersion() uint64 { return 22 }

// RegisterInvariants registers the capability module's invariants.
func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {}
Expand Down
2 changes: 1 addition & 1 deletion x/protocol/types/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
var _ paramtypes.ParamSet = (*Params)(nil)

const (
TARGET_VERSION = "3.0.1"
TARGET_VERSION = "3.1.0"
MIN_VERSION = "2.2.2"
)

Expand Down

0 comments on commit 0f407c2

Please sign in to comment.