forked from osmosis-labs/osmosis
/
upgrades.go
61 lines (51 loc) · 2.09 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
package v7
import (
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
"github.com/PaddyMc/osmosis/v8/app/keepers"
lockupkeeper "github.com/PaddyMc/osmosis/v8/x/lockup/keeper"
mintkeeper "github.com/PaddyMc/osmosis/v8/x/mint/keeper"
superfluidtypes "github.com/PaddyMc/osmosis/v8/x/superfluid/types"
)
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
keepers *keepers.AppKeepers,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
// Set wasm old version to 1 if we want to call wasm's InitGenesis ourselves
// in this upgrade logic ourselves.
//
// vm[wasm.ModuleName] = wasm.ConsensusVersion
//
// Otherwise we run this, which will run wasm.InitGenesis(wasm.DefaultGenesis())
// and then override it after.
newVM, err := mm.RunMigrations(ctx, configurator, vm)
if err != nil {
return newVM, err
}
// Since we provide custom DefaultGenesis (privileges StoreCode) in
// app/genesis.go rather than the wasm module, we need to set the params
// here when migrating (is it is not customized).
params := keepers.WasmKeeper.GetParams(ctx)
params.CodeUploadAccess = wasmtypes.AllowNobody
keepers.WasmKeeper.SetParams(ctx, params)
// Merge similar duration lockups
ctx.Logger().Info("Merging lockups for similar durations")
lockupkeeper.MergeLockupsForSimilarDurations(
ctx, *keepers.LockupKeeper, keepers.AccountKeeper,
lockupkeeper.BaselineDurations, lockupkeeper.HourDuration,
)
ctx.Logger().Info("Migration for superfluid staking")
superfluidAsset := superfluidtypes.SuperfluidAsset{
Denom: "gamm/pool/1",
AssetType: superfluidtypes.SuperfluidAssetTypeLPShare,
}
keepers.SuperfluidKeeper.AddNewSuperfluidAsset(ctx, superfluidAsset)
// Set the supply offset from the developer vesting account
mintkeeper.SetInitialSupplyOffsetDuringMigration(ctx, *keepers.MintKeeper)
return newVM, err
}
}