@@ -18,28 +18,19 @@ package upgrade
1818
1919import (
2020 "context"
21- "fmt"
22- "sort"
2321
24- "cosmossdk.io/core/address"
2522 "cosmossdk.io/log"
26- "cosmossdk.io/math"
2723 upgradetypes "cosmossdk.io/x/upgrade/types"
28- dollarkeeper "dollar.noble.xyz/v2/keeper"
29- vaultstypes "dollar.noble.xyz/v2/types/vaults"
3024 sdk "github.com/cosmos/cosmos-sdk/types"
3125 "github.com/cosmos/cosmos-sdk/types/module"
3226 clientkeeper "github.com/cosmos/ibc-go/v8/modules/core/02-client/keeper"
33- authoritytypes "github.com/noble-assets/authority/types"
3427)
3528
3629func CreateUpgradeHandler (
3730 mm * module.Manager ,
3831 cfg module.Configurator ,
3932 logger log.Logger ,
40- addressCdc address.Codec ,
4133 clientKeeper clientkeeper.Keeper ,
42- dollarKeeper * dollarkeeper.Keeper ,
4334) upgradetypes.UpgradeHandler {
4435 return func (ctx context.Context , _ upgradetypes.Plan , vm module.VersionMap ) (module.VersionMap , error ) {
4536 vm , err := mm .RunMigrations (ctx , cfg , vm )
@@ -54,94 +45,13 @@ func CreateUpgradeHandler(
5445 // Maintenance Multisig. As a result, expired clients on mainnet must
5546 // be manually recovered as part of a software upgrade.
5647 if sdkCtx .ChainID () == MainnetChainID {
57- // Substitute the IBC light client for the evmos_9001-2 chain.
58- err = clientKeeper .RecoverClient (sdkCtx , "07-tendermint-12 " , "07-tendermint-208 " )
48+ // Substitute the IBC light client for the coreum-mainnet-1 chain.
49+ err = clientKeeper .RecoverClient (sdkCtx , "07-tendermint-71 " , "07-tendermint-226 " )
5950 if err != nil {
60- logger .Error ("failed to recover evmos_9001-2 client" , "error" , err )
61- }
62- // Substitute the IBC light client for the haqq_11235-1 chain.
63- err = clientKeeper .RecoverClient (sdkCtx , "07-tendermint-58" , "07-tendermint-194" )
64- if err != nil {
65- logger .Error ("failed to recover haqq_11235-1 client" , "error" , err )
51+ logger .Error ("failed to recover coreum-mainnet-1 client" , "error" , err )
6652 }
6753 }
6854
69- vaultServer := dollarkeeper .NewVaultsMsgServer (dollarKeeper )
70-
71- // Unlock all user positions from the Staked Vault.
72- if err = endVaultsSeasonTwo (ctx , logger , addressCdc , dollarKeeper , vaultServer ); err != nil {
73- return vm , err
74- }
75-
76- // Pause all Vaults permanently.
77- if _ , err = vaultServer .SetPausedState (ctx , & vaultstypes.MsgSetPausedState {
78- Signer : authoritytypes .ModuleAddress .String (),
79- Paused : vaultstypes .ALL ,
80- }); err != nil {
81- return vm , err
82- }
83-
8455 return vm , nil
8556 }
8657}
87-
88- // endVaultsSeasonTwo handles the logic to end Vaults Season Two, unlocking all
89- // Staked vault user positions.
90- func endVaultsSeasonTwo (
91- ctx context.Context ,
92- logger log.Logger ,
93- addressCdc address.Codec ,
94- k * dollarkeeper.Keeper ,
95- vaultServer vaultstypes.MsgServer ,
96- ) error {
97- // Get all the vaults positions.
98- positions , err := k .GetVaultsPositions (ctx )
99- if err != nil {
100- return err
101- }
102-
103- // Create a mapping by address and the total positions amount.
104- stakedUsers := map [string ]math.Int {}
105- var stakedUsersAddress []string
106-
107- // Iterate through all the positions.
108- logger .Info ("collecting vault positions" )
109- for _ , position := range positions {
110- switch position .Vault {
111- case vaultstypes .STAKED :
112- addr , err := addressCdc .BytesToString (position .Address )
113- if err != nil {
114- logger .Warn ("invalid position address: " + err .Error ())
115- continue
116- }
117-
118- if _ , exists := stakedUsers [addr ]; ! exists {
119- stakedUsers [addr ] = position .Amount
120- stakedUsersAddress = append (stakedUsersAddress , addr )
121- } else {
122- stakedUsers [addr ] = stakedUsers [addr ].Add (position .Amount )
123- }
124- }
125- }
126-
127- sort .Strings (stakedUsersAddress )
128-
129- // Unlock all the Staked vault positions.
130- logger .Info (fmt .Sprintf ("unlocking %d staked vault positions" , len (stakedUsers )))
131- stakedUsersProcessed := 0
132- for _ , stakedUserAddr := range stakedUsersAddress {
133- stakedUserTotalAmount := stakedUsers [stakedUserAddr ]
134- if _ , unlockErr := vaultServer .Unlock (ctx , & vaultstypes.MsgUnlock {
135- Signer : stakedUserAddr ,
136- Vault : vaultstypes .STAKED ,
137- Amount : stakedUserTotalAmount ,
138- }); unlockErr != nil {
139- logger .Error (fmt .Sprintf ("failed to unlock staked vault position for %s: %v" , stakedUserAddr , err ))
140- continue
141- }
142- stakedUsersProcessed += 1
143- }
144- logger .Info (fmt .Sprintf ("unlocked %d/%d staked vault positions successfully" , stakedUsersProcessed , len (stakedUsers )))
145-
146- return nil
147- }
0 commit comments