github.com/cosmos/cosmos-sdk@v0.50.10/x/genutil/migrations/v046/migrate.go (about)

     1  package v046
     2  
     3  import (
     4  	"github.com/cosmos/cosmos-sdk/client"
     5  	"github.com/cosmos/cosmos-sdk/x/genutil/types"
     6  	v2gov "github.com/cosmos/cosmos-sdk/x/gov/migrations/v2"
     7  	v3gov "github.com/cosmos/cosmos-sdk/x/gov/migrations/v3"
     8  	govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
     9  	stakingv2 "github.com/cosmos/cosmos-sdk/x/staking/migrations/v2"
    10  	stakingv3 "github.com/cosmos/cosmos-sdk/x/staking/migrations/v3"
    11  	stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
    12  )
    13  
    14  // Migrate migrates exported state from v0.43 to a v0.46 genesis state.
    15  func Migrate(appState types.AppMap, clientCtx client.Context) (types.AppMap, error) {
    16  	// Migrate x/gov.
    17  	if appState[v2gov.ModuleName] != nil {
    18  		// unmarshal relative source genesis application state
    19  		var old govv1beta1.GenesisState
    20  		clientCtx.Codec.MustUnmarshalJSON(appState[v2gov.ModuleName], &old)
    21  
    22  		// delete deprecated x/gov genesis state
    23  		delete(appState, v2gov.ModuleName)
    24  
    25  		// Migrate relative source genesis application state and marshal it into
    26  		// the respective key.
    27  		new, err := v3gov.MigrateJSON(&old)
    28  		if err != nil {
    29  			return nil, err
    30  		}
    31  		appState[v3gov.ModuleName] = clientCtx.Codec.MustMarshalJSON(new)
    32  	}
    33  
    34  	// Migrate x/staking.
    35  	if appState[stakingv2.ModuleName] != nil {
    36  		// unmarshal relative source genesis application state
    37  		var old stakingtypes.GenesisState
    38  		clientCtx.Codec.MustUnmarshalJSON(appState[stakingv2.ModuleName], &old)
    39  
    40  		// delete deprecated x/staking genesis state
    41  		delete(appState, stakingv2.ModuleName)
    42  
    43  		// Migrate relative source genesis application state and marshal it into
    44  		// the respective key.
    45  		new, err := stakingv3.MigrateJSON(old)
    46  		if err != nil {
    47  			return nil, err
    48  		}
    49  		appState[stakingv3.ModuleName] = clientCtx.Codec.MustMarshalJSON(&new)
    50  	}
    51  
    52  	return appState, nil
    53  }