-
Notifications
You must be signed in to change notification settings - Fork 194
/
upgrades.go
76 lines (63 loc) · 2.85 KB
/
upgrades.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package v15
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper"
stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper"
)
var (
UpgradeName = "v15"
EvmosChainId = "evmos_9001-2"
EvmosOuterMinRedemptionRate = sdk.MustNewDecFromStr("1.290")
EvmosInnerMinRedemptionRate = sdk.MustNewDecFromStr("1.318")
EvmosMaxRedemptionRate = sdk.MustNewDecFromStr("1.500")
RedemptionRateOuterMinAdjustment = sdk.MustNewDecFromStr("0.05")
RedemptionRateInnerMinAdjustment = sdk.MustNewDecFromStr("0.03")
RedemptionRateInnerMaxAdjustment = sdk.MustNewDecFromStr("0.05")
RedemptionRateOuterMaxAdjustment = sdk.MustNewDecFromStr("0.10")
)
// CreateUpgradeHandler creates an SDK upgrade handler for v15
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
icqKeeper icqkeeper.Keeper,
stakeibcKeeper stakeibckeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
ctx.Logger().Info("Starting upgrade v15...")
// Set host zone redemption rate bounds based on a percentage of their current rate
ctx.Logger().Info("Updating redemption rate bounds...")
for _, hostZone := range stakeibcKeeper.GetAllHostZone(ctx) {
if hostZone.ChainId == EvmosChainId {
hostZone.MinRedemptionRate = EvmosOuterMinRedemptionRate
hostZone.MinInnerRedemptionRate = EvmosInnerMinRedemptionRate
hostZone.MaxInnerRedemptionRate = EvmosMaxRedemptionRate
hostZone.MaxRedemptionRate = EvmosMaxRedemptionRate
stakeibcKeeper.SetHostZone(ctx, hostZone)
} else {
outerMinDelta := hostZone.RedemptionRate.Mul(RedemptionRateOuterMinAdjustment)
innerMinDelta := hostZone.RedemptionRate.Mul(RedemptionRateInnerMinAdjustment)
innerMaxDelta := hostZone.RedemptionRate.Mul(RedemptionRateInnerMaxAdjustment)
outerMaxDelta := hostZone.RedemptionRate.Mul(RedemptionRateOuterMaxAdjustment)
outerMin := hostZone.RedemptionRate.Sub(outerMinDelta)
innerMin := hostZone.RedemptionRate.Sub(innerMinDelta)
innerMax := hostZone.RedemptionRate.Add(innerMaxDelta)
outerMax := hostZone.RedemptionRate.Add(outerMaxDelta)
hostZone.MinRedemptionRate = outerMin
hostZone.MinInnerRedemptionRate = innerMin
hostZone.MaxInnerRedemptionRate = innerMax
hostZone.MaxRedemptionRate = outerMax
stakeibcKeeper.SetHostZone(ctx, hostZone)
}
}
// Clear all stale delegator shares queries
ctx.Logger().Info("Deleting stale ICQs...")
for _, query := range icqKeeper.AllQueries(ctx) {
if query.CallbackId == stakeibckeeper.ICQCallbackID_Delegation {
icqKeeper.DeleteQuery(ctx, query.Id)
}
}
return mm.RunMigrations(ctx, configurator, vm)
}
}