diff --git a/app/app.go b/app/app.go index 25a21d6f..7bda634d 100644 --- a/app/app.go +++ b/app/app.go @@ -56,13 +56,13 @@ import ( "github.com/persistenceOne/persistenceCore/v11/app/keepers" "github.com/persistenceOne/persistenceCore/v11/app/upgrades" - v11_11_0 "github.com/persistenceOne/persistenceCore/v11/app/upgrades/v11.11.0" + v11_12_0_rc0 "github.com/persistenceOne/persistenceCore/v11/app/upgrades/testnet/v11.12.0-rc0" "github.com/persistenceOne/persistenceCore/v11/client/docs" ) var ( DefaultNodeHome string - Upgrades = []upgrades.Upgrade{v11_11_0.Upgrade} + Upgrades = []upgrades.Upgrade{v11_12_0_rc0.Upgrade} ModuleBasics = module.NewBasicManager(keepers.AppModuleBasics...) ) diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index 9cb9922f..fba3c96f 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -473,7 +473,9 @@ func NewAppKeeper( ) appKeepers.EpochsKeeper.SetHooks( epochstypes.NewMultiEpochHooks( - appKeepers.LiquidStakeIBCKeeper.NewEpochHooks(), appKeepers.RateSyncKeeper.EpochHooks(), + appKeepers.LiquidStakeIBCKeeper.NewEpochHooks(), + appKeepers.LiquidStakeKeeper.EpochHooks(), + appKeepers.RateSyncKeeper.EpochHooks(), ), ) diff --git a/app/upgrades/testnet/v11.12.0-rc0/constants.go b/app/upgrades/testnet/v11.12.0-rc0/constants.go new file mode 100644 index 00000000..fe538e8d --- /dev/null +++ b/app/upgrades/testnet/v11.12.0-rc0/constants.go @@ -0,0 +1,18 @@ +package v11_12_0_rc0 + +import ( + store "github.com/cosmos/cosmos-sdk/store/types" + + "github.com/persistenceOne/persistenceCore/v11/app/upgrades" +) + +const ( + // UpgradeName defines the on-chain upgrade name. + UpgradeName = "v11.12.0-rc0" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: store.StoreUpgrades{}, +} diff --git a/app/upgrades/testnet/v11.12.0-rc0/upgrades.go b/app/upgrades/testnet/v11.12.0-rc0/upgrades.go new file mode 100644 index 00000000..8ea9a10c --- /dev/null +++ b/app/upgrades/testnet/v11.12.0-rc0/upgrades.go @@ -0,0 +1,53 @@ +package v11_12_0_rc0 + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" + + "github.com/persistenceOne/persistenceCore/v11/app/keepers" + "github.com/persistenceOne/persistenceCore/v11/app/upgrades" +) + +func CreateUpgradeHandler(args upgrades.UpgradeHandlerArgs) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("running module migrations...") + + DelegateLiquidStakeRewards(ctx, args.Keepers) + + return args.ModuleManager.RunMigrations(ctx, args.Configurator, vm) + } +} + +func DelegateLiquidStakeRewards(ctx sdk.Context, k *keepers.AppKeepers) { + proxyAccBalance := k.LiquidStakeKeeper.GetProxyAccBalance(ctx, liquidstaketypes.LiquidStakeProxyAcc) + amountToDelegate := proxyAccBalance.Amount + + whitelistedValidators := k.LiquidStakeKeeper.GetParams(ctx).WhitelistedValidators + whitelistedValsMap := liquidstaketypes.GetWhitelistedValsMap(whitelistedValidators) + activeLiquidVals := k.LiquidStakeKeeper.GetActiveLiquidValidators(ctx, whitelistedValsMap) + + // currently auto compounding fee rate is zero, therefore fee logic is added here. + + err := k.LiquidStakeKeeper.LiquidDelegate(ctx, liquidstaketypes.LiquidStakeProxyAcc, activeLiquidVals, amountToDelegate, whitelistedValsMap) + + // if liquid delegate fails then try to delegate to any one active validator + if err != nil { + ctx.Logger().Info("failed to liquid delegate, trying to delegate to any one validator...", "error", err.Error()) + + for _, lv := range activeLiquidVals { + val, _ := k.StakingKeeper.GetValidator(ctx, lv.GetOperator()) + err2 := k.LiquidStakeKeeper.DelegateWithCap(ctx, liquidstaketypes.LiquidStakeProxyAcc, val, amountToDelegate) + if err2 != nil { + ctx.Logger().Info("failed to delegate", "validator", val.GetOperator(), "error", err2.Error()) + // continue with next val + } else { + // successfully delegated, exit + return + } + } + + ctx.Logger().Error("failed to delegate to any of active val set") + } +} diff --git a/go.mod b/go.mod index 09d83653..93a659b4 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/cosmos/ibc-go/v7 v7.4.0 github.com/gorilla/mux v1.8.1 github.com/persistenceOne/persistence-sdk/v2 v2.2.0 - github.com/persistenceOne/pstake-native/v2 v2.13.0 + github.com/persistenceOne/pstake-native/v2 v2.14.0-rc0 github.com/prometheus/client_golang v1.16.0 github.com/skip-mev/pob v1.0.5 github.com/spf13/cast v1.6.0 diff --git a/go.sum b/go.sum index 4ef8b8cc..7937a243 100644 --- a/go.sum +++ b/go.sum @@ -1034,8 +1034,8 @@ github.com/persistenceOne/cosmos-sdk v0.47.10-lsm-rc0 h1:lbSQZUdaaKIpoSAznVESl0v github.com/persistenceOne/cosmos-sdk v0.47.10-lsm-rc0/go.mod h1:Q/eHvXB0Awenk3NCh77NvjpeKGPigawFHIXlz2ayfos= github.com/persistenceOne/persistence-sdk/v2 v2.2.0 h1:ZsBsy/HElkwjPXoASI7CptMFY9C3C/d27G+8bxFDzQw= github.com/persistenceOne/persistence-sdk/v2 v2.2.0/go.mod h1:8VgozZWTPLMdlzsyiuGI0+vLo2fvGYSj/YKM9kiJwrI= -github.com/persistenceOne/pstake-native/v2 v2.13.0 h1:XUYvVwkjjWGQeL+cpcgLUdRtO47+e3YffayGrUNGcvM= -github.com/persistenceOne/pstake-native/v2 v2.13.0/go.mod h1:FcLbnTasZfKKKQJ6nzgzdkDqb3dUlIyraqcsj7DMTfE= +github.com/persistenceOne/pstake-native/v2 v2.14.0-rc0 h1:4vHEFSM6aZ14GzhtT+nsO6jLiB2as/dy5aQT8w8zUfQ= +github.com/persistenceOne/pstake-native/v2 v2.14.0-rc0/go.mod h1:FcLbnTasZfKKKQJ6nzgzdkDqb3dUlIyraqcsj7DMTfE= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= diff --git a/interchaintest/chain_upgrade_test.go b/interchaintest/chain_upgrade_test.go index 0cc5b419..c493d894 100644 --- a/interchaintest/chain_upgrade_test.go +++ b/interchaintest/chain_upgrade_test.go @@ -29,8 +29,8 @@ const ( func TestPersistenceUpgradeBasic(t *testing.T) { var ( chainName = "persistence" - initialVersion = "v11.10.0" - upgradeName = "v11.11.0" + initialVersion = "v11.11.0" + upgradeName = "v11.12.0-rc0" upgradeRepo = PersistenceCoreImage.Repository upgradeBranchVersion = PersistenceCoreImage.Version )