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

     1  package v047
     2  
     3  import (
     4  	"github.com/cosmos/cosmos-sdk/client"
     5  	v1auth "github.com/cosmos/cosmos-sdk/x/auth/migrations/v1"
     6  	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
     7  	bankv4 "github.com/cosmos/cosmos-sdk/x/bank/migrations/v4"
     8  	banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
     9  	v1distr "github.com/cosmos/cosmos-sdk/x/distribution/migrations/v1"
    10  	v3distr "github.com/cosmos/cosmos-sdk/x/distribution/migrations/v3"
    11  	distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
    12  	"github.com/cosmos/cosmos-sdk/x/genutil/types"
    13  	v4gov "github.com/cosmos/cosmos-sdk/x/gov/migrations/v4"
    14  	govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
    15  	groupv2 "github.com/cosmos/cosmos-sdk/x/group/migrations/v2"
    16  )
    17  
    18  // Migrate migrates exported state from v0.46 to a v0.47 genesis state.
    19  func Migrate(appState types.AppMap, clientCtx client.Context) (types.AppMap, error) {
    20  	// Migrate x/bank.
    21  	bankState := appState[banktypes.ModuleName]
    22  	if len(bankState) > 0 {
    23  		var oldBankState banktypes.GenesisState
    24  		clientCtx.Codec.MustUnmarshalJSON(bankState, &oldBankState)
    25  		newBankState := bankv4.MigrateGenState(&oldBankState)
    26  		appState[banktypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(newBankState)
    27  	}
    28  
    29  	if govOldState, ok := appState[v4gov.ModuleName]; ok {
    30  		// unmarshal relative source genesis application state
    31  		var old govv1.GenesisState
    32  		clientCtx.Codec.MustUnmarshalJSON(govOldState, &old)
    33  
    34  		// delete deprecated x/gov genesis state
    35  		delete(appState, v4gov.ModuleName)
    36  
    37  		// set the x/gov genesis state with new state.
    38  		new, err := v4gov.MigrateJSON(&old)
    39  		if err != nil {
    40  			return nil, err
    41  		}
    42  		appState[v4gov.ModuleName] = clientCtx.Codec.MustMarshalJSON(new)
    43  	}
    44  
    45  	// Migrate x/auth group policy accounts
    46  	if authOldState, ok := appState[v1auth.ModuleName]; ok {
    47  		var old authtypes.GenesisState
    48  		clientCtx.Codec.MustUnmarshalJSON(authOldState, &old)
    49  		newAuthState := groupv2.MigrateGenState(&old)
    50  		appState[v1auth.ModuleName] = clientCtx.Codec.MustMarshalJSON(newAuthState)
    51  	}
    52  
    53  	// Migrate x/distribution params (reset unused)
    54  	if oldDistState, ok := appState[v1distr.ModuleName]; ok {
    55  		var old distrtypes.GenesisState
    56  		clientCtx.Codec.MustUnmarshalJSON(oldDistState, &old)
    57  		newDistState := v3distr.MigrateJSON(&old)
    58  		appState[v1distr.ModuleName] = clientCtx.Codec.MustMarshalJSON(newDistState)
    59  	}
    60  
    61  	return appState, nil
    62  }