From 982aac202f9b56a0c7dc8dd2975f6d1dab976a55 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 12:44:14 +0200 Subject: [PATCH 1/8] Remove migration scripts <=0.38 --- x/auth/legacy/v036/migrate.go | 13 -- x/auth/legacy/v036/migrate_test.go | 26 --- x/auth/legacy/v038/migrate.go | 52 ------ x/auth/legacy/v038/migrate_test.go | 159 ------------------ x/bank/legacy/v036/types.go | 6 - x/distribution/legacy/v036/migrate.go | 30 ---- x/distribution/legacy/v036/migrate_test.go | 64 -------- x/distribution/legacy/v038/migrate.go | 26 --- x/genaccounts/doc.go | 15 -- x/genaccounts/legacy/v034/types.go | 27 ---- x/genaccounts/legacy/v036/migrate.go | 179 --------------------- x/genaccounts/legacy/v036/migrate_test.go | 126 --------------- x/genaccounts/legacy/v036/types.go | 52 ------ x/genutil/client/cli/migrate.go | 4 - x/genutil/legacy/v036/migrate.go | 101 ------------ x/genutil/legacy/v036/migrate_test.go | 107 ------------ x/genutil/legacy/v038/migrate.go | 70 -------- x/genutil/legacy/v038/migrate_test.go | 143 ---------------- x/gov/legacy/v036/migrate.go | 49 ------ x/staking/legacy/v036/migrate.go | 51 ------ x/staking/legacy/v036/migrate_test.go | 104 ------------ x/staking/legacy/v038/migrate.go | 50 ------ 22 files changed, 1454 deletions(-) delete mode 100644 x/auth/legacy/v036/migrate.go delete mode 100644 x/auth/legacy/v036/migrate_test.go delete mode 100644 x/auth/legacy/v038/migrate.go delete mode 100644 x/auth/legacy/v038/migrate_test.go delete mode 100644 x/distribution/legacy/v036/migrate.go delete mode 100644 x/distribution/legacy/v036/migrate_test.go delete mode 100644 x/distribution/legacy/v038/migrate.go delete mode 100644 x/genaccounts/doc.go delete mode 100644 x/genaccounts/legacy/v034/types.go delete mode 100644 x/genaccounts/legacy/v036/migrate.go delete mode 100644 x/genaccounts/legacy/v036/migrate_test.go delete mode 100644 x/genaccounts/legacy/v036/types.go delete mode 100644 x/genutil/legacy/v036/migrate.go delete mode 100644 x/genutil/legacy/v036/migrate_test.go delete mode 100644 x/genutil/legacy/v038/migrate.go delete mode 100644 x/genutil/legacy/v038/migrate_test.go delete mode 100644 x/gov/legacy/v036/migrate.go delete mode 100644 x/staking/legacy/v036/migrate.go delete mode 100644 x/staking/legacy/v036/migrate_test.go delete mode 100644 x/staking/legacy/v038/migrate.go diff --git a/x/auth/legacy/v036/migrate.go b/x/auth/legacy/v036/migrate.go deleted file mode 100644 index 2ab4aa14379b..000000000000 --- a/x/auth/legacy/v036/migrate.go +++ /dev/null @@ -1,13 +0,0 @@ -// DONTCOVER -package v036 - -import ( - v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v034" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36 -// genesis state. This migration removes the CollectedFees coins from the old -// FeeCollectorKeeper. -func Migrate(oldGenState v034auth.GenesisState) GenesisState { - return NewGenesisState(oldGenState.Params) -} diff --git a/x/auth/legacy/v036/migrate_test.go b/x/auth/legacy/v036/migrate_test.go deleted file mode 100644 index 739c43223f6b..000000000000 --- a/x/auth/legacy/v036/migrate_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package v036 - -import ( - "testing" - - "github.com/cosmos/cosmos-sdk/types" - v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v034" - - "github.com/stretchr/testify/require" -) - -func TestMigrate(t *testing.T) { - var genesisState GenesisState - require.NotPanics(t, func() { - genesisState = Migrate(v034auth.GenesisState{ - CollectedFees: types.Coins{ - { - Amount: types.NewInt(10), - Denom: "stake", - }, - }, - Params: v034auth.Params{}, // forwarded structure: filling and checking will be testing a no-op - }) - }) - require.Equal(t, genesisState, GenesisState{Params: v034auth.Params{}}) -} diff --git a/x/auth/legacy/v038/migrate.go b/x/auth/legacy/v038/migrate.go deleted file mode 100644 index 46947075c8b5..000000000000 --- a/x/auth/legacy/v038/migrate.go +++ /dev/null @@ -1,52 +0,0 @@ -package v038 - -import ( - v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v036" - v036genaccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v036" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.38 -// genesis state. -func Migrate(authGenState v036auth.GenesisState, genAccountsGenState v036genaccounts.GenesisState) GenesisState { - accounts := make(GenesisAccounts, len(genAccountsGenState)) - - for i, acc := range genAccountsGenState { - var genAccount GenesisAccount - - baseAccount := NewBaseAccount(acc.Address, acc.Coins.Sort(), nil, acc.AccountNumber, acc.Sequence) - - switch { - case !acc.OriginalVesting.IsZero(): - baseVestingAccount := NewBaseVestingAccount( - baseAccount, acc.OriginalVesting.Sort(), acc.DelegatedFree.Sort(), - acc.DelegatedVesting.Sort(), acc.EndTime, - ) - - if acc.StartTime != 0 && acc.EndTime != 0 { - // continuous vesting account type - genAccount = NewContinuousVestingAccountRaw(baseVestingAccount, acc.StartTime) - } else if acc.EndTime != 0 { - // delayed vesting account type - genAccount = NewDelayedVestingAccountRaw(baseVestingAccount) - } - - case acc.ModuleName != "": - // module account type - genAccount = NewModuleAccount(baseAccount, acc.ModuleName, acc.ModulePermissions...) - - default: - // standard account type - genAccount = baseAccount - } - - accounts[i] = genAccount - } - - accounts = SanitizeGenesisAccounts(accounts) - - if err := ValidateGenAccounts(accounts); err != nil { - panic(err) - } - - return NewGenesisState(authGenState.Params, accounts) -} diff --git a/x/auth/legacy/v038/migrate_test.go b/x/auth/legacy/v038/migrate_test.go deleted file mode 100644 index e83ccfe8e20f..000000000000 --- a/x/auth/legacy/v038/migrate_test.go +++ /dev/null @@ -1,159 +0,0 @@ -package v038 - -import ( - "testing" - "time" - - sdk "github.com/cosmos/cosmos-sdk/types" - v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v034" - v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v036" - v036genaccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v036" - - "github.com/stretchr/testify/require" -) - -func accAddressFromBech32(t *testing.T, addrStr string) sdk.AccAddress { - addr, err := sdk.AccAddressFromBech32(addrStr) - require.NoError(t, err) - return addr -} - -func TestMigrate(t *testing.T) { - var genesisState GenesisState - - params := v034auth.Params{ - MaxMemoCharacters: 10, - TxSigLimit: 10, - TxSizeCostPerByte: 10, - SigVerifyCostED25519: 10, - SigVerifyCostSecp256k1: 10, - } - - acc1 := v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos1f9xjhxm0plzrh9cskf4qee4pc2xwp0n0556gh0"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000)), - Sequence: 1, - AccountNumber: 1, - } - acc2 := v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000000)), - Sequence: 4, - AccountNumber: 2, - ModuleName: "bonded_tokens_pool", - ModulePermissions: []string{"burner", "staking"}, - } - acc3 := v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos17n9sztlhx32tfy0tg0zc2ttmkeeth50yyuv9he"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 10000205)), - OriginalVesting: sdk.NewCoins(sdk.NewInt64Coin("stake", 10000205)), - StartTime: time.Now().Unix(), - EndTime: time.Now().Add(48 * time.Hour).Unix(), - Sequence: 5, - AccountNumber: 3, - } - acc4 := v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos1fmk5elg4r62mlexd36tqjcwyafs7mek0js5m4d"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 10000205)), - OriginalVesting: sdk.NewCoins(sdk.NewInt64Coin("stake", 10000205)), - EndTime: time.Now().Add(48 * time.Hour).Unix(), - Sequence: 15, - AccountNumber: 4, - } - - require.NotPanics(t, func() { - genesisState = Migrate( - v036auth.GenesisState{ - Params: params, - }, - v036genaccounts.GenesisState{acc1, acc2, acc3, acc4}, - ) - }) - - expectedAcc1 := NewBaseAccount(acc1.Address, acc1.Coins, nil, acc1.AccountNumber, acc1.Sequence) - expectedAcc2 := NewModuleAccount( - NewBaseAccount(acc2.Address, acc2.Coins, nil, acc2.AccountNumber, acc2.Sequence), - acc2.ModuleName, acc2.ModulePermissions..., - ) - expectedAcc3 := NewContinuousVestingAccountRaw( - NewBaseVestingAccount( - NewBaseAccount(acc3.Address, acc3.Coins, nil, acc3.AccountNumber, acc3.Sequence), - acc3.OriginalVesting, acc3.DelegatedFree, acc3.DelegatedVesting, acc3.EndTime, - ), - acc3.StartTime, - ) - expectedAcc4 := NewDelayedVestingAccountRaw( - NewBaseVestingAccount( - NewBaseAccount(acc4.Address, acc4.Coins, nil, acc4.AccountNumber, acc4.Sequence), - acc4.OriginalVesting, acc4.DelegatedFree, acc4.DelegatedVesting, acc4.EndTime, - ), - ) - - require.Equal( - t, genesisState, GenesisState{ - Params: params, - Accounts: GenesisAccounts{expectedAcc1, expectedAcc2, expectedAcc3, expectedAcc4}, - }, - ) -} - -func TestMigrateInvalid(t *testing.T) { - testCases := []struct { - name string - acc v036genaccounts.GenesisAccount - }{ - { - "module account with invalid name", - v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000000)), - Sequence: 4, - AccountNumber: 2, - ModuleName: " ", - ModulePermissions: []string{"burner", "staking"}, - }, - }, - { - "module account with invalid permissions", - v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000000)), - Sequence: 4, - AccountNumber: 2, - ModuleName: "bonded_tokens_pool", - ModulePermissions: []string{""}, - }, - }, - { - "module account with invalid address", - v036genaccounts.GenesisAccount{ - Address: accAddressFromBech32(t, "cosmos17n9sztlhx32tfy0tg0zc2ttmkeeth50yyuv9he"), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000000)), - Sequence: 4, - AccountNumber: 2, - ModuleName: "bonded_tokens_pool", - ModulePermissions: []string{"burner", "staking"}, - }, - }, - } - - for _, tc := range testCases { - tc := tc - t.Run(tc.name, func(t *testing.T) { - require.Panics(t, func() { - Migrate( - v036auth.GenesisState{ - Params: v034auth.Params{ - MaxMemoCharacters: 10, - TxSigLimit: 10, - TxSizeCostPerByte: 10, - SigVerifyCostED25519: 10, - SigVerifyCostSecp256k1: 10, - }, - }, - v036genaccounts.GenesisState{tc.acc}, - ) - }) - }) - } -} diff --git a/x/bank/legacy/v036/types.go b/x/bank/legacy/v036/types.go index ada368404855..d536b033bca4 100644 --- a/x/bank/legacy/v036/types.go +++ b/x/bank/legacy/v036/types.go @@ -12,9 +12,3 @@ type ( Supply sdk.Coins `json:"supply" yaml:"supply"` } ) - -func EmptyGenesisState() GenesisState { - return GenesisState{ - Supply: sdk.NewCoins(), // leave this empty as it's filled on initialization - } -} diff --git a/x/distribution/legacy/v036/migrate.go b/x/distribution/legacy/v036/migrate.go deleted file mode 100644 index 7cbe3b99cbb9..000000000000 --- a/x/distribution/legacy/v036/migrate.go +++ /dev/null @@ -1,30 +0,0 @@ -package v036 - -import ( - v034distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v034" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36 -// genesis state. All entries are identical except for validator slashing events -// which now include the period. -func Migrate(oldGenState v034distr.GenesisState) GenesisState { - // migrate slash events which now have the period included - slashEvents := make([]ValidatorSlashEventRecord, len(oldGenState.ValidatorSlashEvents)) - for i, se := range oldGenState.ValidatorSlashEvents { - slashEvents[i] = ValidatorSlashEventRecord{ - ValidatorAddress: se.ValidatorAddress, - Height: se.Height, - Period: se.Event.ValidatorPeriod, - Event: se.Event, - } - } - - return NewGenesisState( - oldGenState.FeePool, oldGenState.CommunityTax, oldGenState.BaseProposerReward, - oldGenState.BonusProposerReward, oldGenState.WithdrawAddrEnabled, - oldGenState.DelegatorWithdrawInfos, oldGenState.PreviousProposer, - oldGenState.OutstandingRewards, oldGenState.ValidatorAccumulatedCommissions, - oldGenState.ValidatorHistoricalRewards, oldGenState.ValidatorCurrentRewards, - oldGenState.DelegatorStartingInfos, slashEvents, - ) -} diff --git a/x/distribution/legacy/v036/migrate_test.go b/x/distribution/legacy/v036/migrate_test.go deleted file mode 100644 index d0cd69e5e50d..000000000000 --- a/x/distribution/legacy/v036/migrate_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package v036 - -import ( - "testing" - - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/types" - v034distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v034" - - "github.com/stretchr/testify/require" -) - -var ( - priv = secp256k1.GenPrivKey() - addr = types.AccAddress(priv.PubKey().Address()) - valAddr, _ = types.ValAddressFromBech32(addr.String()) - - event = v034distr.ValidatorSlashEvent{ - ValidatorPeriod: 1, - Fraction: types.Dec{}, - } -) - -func TestMigrate(t *testing.T) { - var genesisState GenesisState - require.NotPanics(t, func() { - genesisState = Migrate(v034distr.GenesisState{ - ValidatorSlashEvents: []v034distr.ValidatorSlashEventRecord{ - { - ValidatorAddress: valAddr, - Height: 1, - Event: event, - }, - }, - }) - }) - - require.Equal(t, genesisState.ValidatorSlashEvents[0], ValidatorSlashEventRecord{ - ValidatorAddress: valAddr, - Height: 1, - Period: event.ValidatorPeriod, - Event: event, - }) -} - -func TestMigrateEmptyRecord(t *testing.T) { - var genesisState GenesisState - - require.NotPanics(t, func() { - genesisState = Migrate(v034distr.GenesisState{ - ValidatorSlashEvents: []v034distr.ValidatorSlashEventRecord{{}}, - }) - }) - - require.Equal(t, genesisState.ValidatorSlashEvents[0], ValidatorSlashEventRecord{ - ValidatorAddress: valAddr, - Height: 0, - Period: 0, - Event: v034distr.ValidatorSlashEvent{ - ValidatorPeriod: 0, - Fraction: types.Dec{}, - }, - }) -} diff --git a/x/distribution/legacy/v038/migrate.go b/x/distribution/legacy/v038/migrate.go deleted file mode 100644 index 73e933da4589..000000000000 --- a/x/distribution/legacy/v038/migrate.go +++ /dev/null @@ -1,26 +0,0 @@ -package v038 - -// DONTCOVER - -import ( - v036distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v036" -) - -// Migrate accepts exported genesis state from v0.36 or v0.37 and migrates it to -// v0.38 genesis state. All entries are identical except for parameters. -func Migrate(oldGenState v036distr.GenesisState) GenesisState { - params := Params{ - CommunityTax: oldGenState.CommunityTax, - BaseProposerReward: oldGenState.BaseProposerReward, - BonusProposerReward: oldGenState.BonusProposerReward, - WithdrawAddrEnabled: oldGenState.WithdrawAddrEnabled, - } - - return NewGenesisState( - params, oldGenState.FeePool, - oldGenState.DelegatorWithdrawInfos, oldGenState.PreviousProposer, - oldGenState.OutstandingRewards, oldGenState.ValidatorAccumulatedCommissions, - oldGenState.ValidatorHistoricalRewards, oldGenState.ValidatorCurrentRewards, - oldGenState.DelegatorStartingInfos, oldGenState.ValidatorSlashEvents, - ) -} diff --git a/x/genaccounts/doc.go b/x/genaccounts/doc.go deleted file mode 100644 index 2d255ad4651c..000000000000 --- a/x/genaccounts/doc.go +++ /dev/null @@ -1,15 +0,0 @@ -/* -Package genaccounts is now deprecated. - -IMPORTANT: This module has been replaced by ADR 011: Generalize Module Accounts. -The ADR can be found here: https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-011-generalize-genesis-accounts.md. - -Genesis accounts that existed in the genesis application state under `app_state.accounts` -now exists under the x/auth module's genesis state under the `app_state.auth.accounts` key. -Migration can be performed via x/auth/legacy/v038/migrate.go. In addition, because genesis -accounts are now generalized via an interface, it is now up to the application to -define the concrete types and the respective client logic to add them to a genesis -state/file. For an example implementation of the `add-genesis-account` command please -refer to https://github.com/cosmos/gaia/pull/122. -*/ -package genaccounts diff --git a/x/genaccounts/legacy/v034/types.go b/x/genaccounts/legacy/v034/types.go deleted file mode 100644 index f4bb73fa37c4..000000000000 --- a/x/genaccounts/legacy/v034/types.go +++ /dev/null @@ -1,27 +0,0 @@ -// DONTCOVER -package v034 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - ModuleName = "accounts" -) - -type ( - GenesisAccount struct { - Address sdk.AccAddress `json:"address"` - Coins sdk.Coins `json:"coins"` - Sequence uint64 `json:"sequence_number"` - AccountNumber uint64 `json:"account_number"` - - OriginalVesting sdk.Coins `json:"original_vesting"` - DelegatedFree sdk.Coins `json:"delegated_free"` - DelegatedVesting sdk.Coins `json:"delegated_vesting"` - StartTime int64 `json:"start_time"` - EndTime int64 `json:"end_time"` - } - - GenesisState []GenesisAccount -) diff --git a/x/genaccounts/legacy/v036/migrate.go b/x/genaccounts/legacy/v036/migrate.go deleted file mode 100644 index 4da938aeaf79..000000000000 --- a/x/genaccounts/legacy/v036/migrate.go +++ /dev/null @@ -1,179 +0,0 @@ -// DONTCOVER -// nolint -package v036 - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - v034distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v034" - v034accounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v034" - v034gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v034" - v034staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v034" - - "github.com/tendermint/tendermint/crypto" -) - -const ( - notBondedPoolName = "not_bonded_tokens_pool" - bondedPoolName = "bonded_tokens_pool" - feeCollectorName = "fee_collector" - mintModuleName = "mint" - - basic = "basic" - minter = "minter" - burner = "burner" - staking = "staking" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36 -// genesis state. It deletes the governance base accounts and creates the new module accounts. -// The remaining accounts are updated to the new GenesisAccount type from 0.36 -func Migrate( - oldGenState v034accounts.GenesisState, fees sdk.Coins, communityPool sdk.DecCoins, - deposits []v034gov.DepositWithMetadata, vals v034staking.Validators, ubds []v034staking.UnbondingDelegation, - valOutRewards []v034distr.ValidatorOutstandingRewardsRecord, bondDenom, distrModuleName, govModuleName string, -) GenesisState { - - depositedCoinsAccAddr := sdk.AccAddress(crypto.AddressHash([]byte("govDepositedCoins"))) - burnedDepositCoinsAccAddr := sdk.AccAddress(crypto.AddressHash([]byte("govBurnedDepositCoins"))) - - bondedAmt := sdk.ZeroInt() - notBondedAmt := sdk.ZeroInt() - - // remove the two previous governance base accounts for deposits and burned - // coins from rejected proposals add six new module accounts: - // distribution, gov, mint, fee collector, bonded and not bonded pool - var ( - newGenState GenesisState - govCoins sdk.Coins - extraAccounts = 6 - ) - - for _, acc := range oldGenState { - switch { - case acc.Address.Equals(depositedCoinsAccAddr): - // remove gov deposits base account - govCoins = acc.Coins - extraAccounts -= 1 - - case acc.Address.Equals(burnedDepositCoinsAccAddr): - // remove gov burned deposits base account - extraAccounts -= 1 - - default: - newGenState = append( - newGenState, - NewGenesisAccount( - acc.Address, acc.Coins, acc.Sequence, - acc.OriginalVesting, acc.DelegatedFree, acc.DelegatedVesting, - acc.StartTime, acc.EndTime, "", []string{}, - ), - ) - } - } - - var expDeposits sdk.Coins - for _, deposit := range deposits { - expDeposits = expDeposits.Add(deposit.Deposit.Amount...) - } - - if !expDeposits.IsEqual(govCoins) { - panic( - fmt.Sprintf( - "pre migration deposit base account coins ≠ stored deposits coins (%s ≠ %s)", - expDeposits.String(), govCoins.String(), - ), - ) - } - - // get staking module accounts coins - for _, validator := range vals { - switch validator.Status { - case v034staking.Bonded: - bondedAmt = bondedAmt.Add(validator.Tokens) - - case v034staking.Unbonding, v034staking.Unbonded: - notBondedAmt = notBondedAmt.Add(validator.Tokens) - - default: - panic("invalid validator status") - } - } - - for _, ubd := range ubds { - for _, entry := range ubd.Entries { - notBondedAmt = notBondedAmt.Add(entry.Balance) - } - } - - bondedCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, bondedAmt)) - notBondedCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, notBondedAmt)) - - // get distr module account coins - var distrDecCoins sdk.DecCoins - for _, reward := range valOutRewards { - distrDecCoins = distrDecCoins.Add(reward.OutstandingRewards...) - } - - distrCoins, _ := distrDecCoins.Add(communityPool...).TruncateDecimal() - - // get module account addresses - feeCollectorAddr := sdk.AccAddress(crypto.AddressHash([]byte(feeCollectorName))) - govAddr := sdk.AccAddress(crypto.AddressHash([]byte(govModuleName))) - bondedAddr := sdk.AccAddress(crypto.AddressHash([]byte(bondedPoolName))) - notBondedAddr := sdk.AccAddress(crypto.AddressHash([]byte(notBondedPoolName))) - distrAddr := sdk.AccAddress(crypto.AddressHash([]byte(distrModuleName))) - mintAddr := sdk.AccAddress(crypto.AddressHash([]byte(mintModuleName))) - - // create module genesis accounts - feeCollectorModuleAcc := NewGenesisAccount( - feeCollectorAddr, fees, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, feeCollectorName, []string{basic}, - ) - govModuleAcc := NewGenesisAccount( - govAddr, govCoins, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, govModuleName, []string{burner}, - ) - distrModuleAcc := NewGenesisAccount( - distrAddr, distrCoins, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, distrModuleName, []string{basic}, - ) - bondedModuleAcc := NewGenesisAccount( - bondedAddr, bondedCoins, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, bondedPoolName, []string{burner, staking}, - ) - notBondedModuleAcc := NewGenesisAccount( - notBondedAddr, notBondedCoins, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, notBondedPoolName, []string{burner, staking}, - ) - mintModuleAcc := NewGenesisAccount( - mintAddr, sdk.Coins{}, 0, - sdk.Coins{}, sdk.Coins{}, sdk.Coins{}, - 0, 0, mintModuleName, []string{minter}, - ) - - newGenState = append( - newGenState, - []GenesisAccount{ - feeCollectorModuleAcc, govModuleAcc, distrModuleAcc, - bondedModuleAcc, notBondedModuleAcc, mintModuleAcc, - }..., - ) - - // verify the total number of accounts is correct - if len(newGenState) != len(oldGenState)+extraAccounts { - panic( - fmt.Sprintf( - "invalid total number of genesis accounts; got: %d, expected: %d", - len(newGenState), len(oldGenState)+extraAccounts), - ) - } - - return newGenState -} diff --git a/x/genaccounts/legacy/v036/migrate_test.go b/x/genaccounts/legacy/v036/migrate_test.go deleted file mode 100644 index 09f6bb3e6901..000000000000 --- a/x/genaccounts/legacy/v036/migrate_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package v036 - -import ( - "testing" - - "github.com/tendermint/tendermint/crypto" - - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/types" - v034distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v034" - v034accounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v034" - v034gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v034" - v034staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v034" - - "github.com/stretchr/testify/require" -) - -var ( - priv = secp256k1.GenPrivKey() - addr = types.AccAddress(priv.PubKey().Address()) - depositedCoinsAccAddr = types.AccAddress(crypto.AddressHash([]byte("govDepositedCoins"))) - burnedDepositCoinsAccAddr = types.AccAddress(crypto.AddressHash([]byte("govBurnedDepositCoins"))) - - coins = types.Coins{types.NewInt64Coin(types.DefaultBondDenom, 10)} - halfCoins = types.Coins{types.NewInt64Coin(types.DefaultBondDenom, 5)} - - accountDeposited = v034accounts.GenesisAccount{ - Address: depositedCoinsAccAddr, - Coins: coins, - Sequence: 1, - AccountNumber: 1, - - OriginalVesting: coins, - DelegatedFree: coins, - DelegatedVesting: coins, - StartTime: 0, - EndTime: 0, - } - - accountBurned = v034accounts.GenesisAccount{ - Address: burnedDepositCoinsAccAddr, - Coins: coins, - Sequence: 2, - AccountNumber: 2, - - OriginalVesting: coins, - DelegatedFree: coins, - DelegatedVesting: coins, - StartTime: 0, - EndTime: 0, - } - - deposit = v034gov.DepositWithMetadata{ - ProposalID: 1, - Deposit: v034gov.Deposit{ - ProposalID: 1, - Depositor: addr, - Amount: coins, - }, - } -) - -func TestMigrateEmptyRecord(t *testing.T) { - - type args struct { - accounts v034accounts.GenesisState - deposits []v034gov.DepositWithMetadata - } - tests := []struct { - name string - args args - }{ - {"No Accounts", args{v034accounts.GenesisState{}, []v034gov.DepositWithMetadata{}}}, - {"Deposited account", args{v034accounts.GenesisState{accountDeposited}, []v034gov.DepositWithMetadata{deposit}}}, - {"Burned account", args{v034accounts.GenesisState{accountBurned}, []v034gov.DepositWithMetadata{}}}, - {"Burned and deposited accounts", args{v034accounts.GenesisState{accountDeposited, accountBurned}, []v034gov.DepositWithMetadata{deposit}}}, - } - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - require.NotPanics(t, func() { - Migrate( - tt.args.accounts, - types.Coins{}, - types.DecCoins{}, - tt.args.deposits, - v034staking.Validators{}, - []v034staking.UnbondingDelegation{}, - []v034distr.ValidatorOutstandingRewardsRecord{}, - types.DefaultBondDenom, - v034distr.ModuleName, - v034gov.ModuleName, - ) - }) - }) - } -} - -func TestMigrateWrongDeposit(t *testing.T) { - require.Panics(t, func() { - Migrate( - v034accounts.GenesisState{ - accountDeposited, - accountBurned, - }, - types.Coins{}, - types.DecCoins{}, - []v034gov.DepositWithMetadata{ - { - ProposalID: 1, - Deposit: v034gov.Deposit{ - ProposalID: 1, - Depositor: addr, - Amount: halfCoins, - }, - }, - }, - v034staking.Validators{}, - []v034staking.UnbondingDelegation{}, - []v034distr.ValidatorOutstandingRewardsRecord{}, - types.DefaultBondDenom, - v034distr.ModuleName, - v034gov.ModuleName, - ) - }) -} diff --git a/x/genaccounts/legacy/v036/types.go b/x/genaccounts/legacy/v036/types.go deleted file mode 100644 index e91db341db48..000000000000 --- a/x/genaccounts/legacy/v036/types.go +++ /dev/null @@ -1,52 +0,0 @@ -// DONTCOVER -package v036 - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - ModuleName = "accounts" -) - -type ( - GenesisAccount struct { - Address sdk.AccAddress `json:"address" yaml:"address"` - Coins sdk.Coins `json:"coins" yaml:"coins"` - Sequence uint64 `json:"sequence_number" yaml:"sequence_number"` - AccountNumber uint64 `json:"account_number" yaml:"account_number"` - - OriginalVesting sdk.Coins `json:"original_vesting" yaml:"original_vesting"` - DelegatedFree sdk.Coins `json:"delegated_free" yaml:"delegated_free"` - DelegatedVesting sdk.Coins `json:"delegated_vesting" yaml:"delegated_vesting"` - StartTime int64 `json:"start_time" yaml:"start_time"` - EndTime int64 `json:"end_time" yaml:"end_time"` - - ModuleName string `json:"module_name" yaml:"module_name"` - ModulePermissions []string `json:"module_permissions" yaml:"module_permissions"` - } - - GenesisState []GenesisAccount -) - -// NewGenesisAccount creates a new GenesisAccount object -func NewGenesisAccount( - address sdk.AccAddress, coins sdk.Coins, sequence uint64, - vestingAmount, delFree, delVesting sdk.Coins, vestingStartTime, vestingEndTime int64, - module string, permissions []string, -) GenesisAccount { - - return GenesisAccount{ - Address: address, - Coins: coins, - Sequence: sequence, - AccountNumber: 0, // ignored set by the account keeper during InitGenesis - OriginalVesting: vestingAmount, - DelegatedFree: delFree, - DelegatedVesting: delVesting, - StartTime: vestingStartTime, - EndTime: vestingEndTime, - ModuleName: module, - ModulePermissions: permissions, - } -} diff --git a/x/genutil/client/cli/migrate.go b/x/genutil/client/cli/migrate.go index 9bba5c3d8845..d7f1c118199e 100644 --- a/x/genutil/client/cli/migrate.go +++ b/x/genutil/client/cli/migrate.go @@ -14,8 +14,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" - v036 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v036" - v038 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v038" v039 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v039" v040 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v040" v043 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v043" @@ -28,8 +26,6 @@ const flagGenesisTime = "genesis-time" // // Ref: https://github.com/cosmos/cosmos-sdk/issues/5041 var migrationMap = types.MigrationMap{ - "v0.36": v036.Migrate, - "v0.38": v038.Migrate, // NOTE: v0.37 and v0.38 are genesis compatible. "v0.39": v039.Migrate, "v0.42": v040.Migrate, // NOTE: v0.40, v0.41 and v0.42 are genesis compatible. "v0.43": v043.Migrate, diff --git a/x/genutil/legacy/v036/migrate.go b/x/genutil/legacy/v036/migrate.go deleted file mode 100644 index 204eebc233e3..000000000000 --- a/x/genutil/legacy/v036/migrate.go +++ /dev/null @@ -1,101 +0,0 @@ -package v036 - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v034" - v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v036" - v036bank "github.com/cosmos/cosmos-sdk/x/bank/legacy/v036" - v034distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v034" - v036distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v036" - v034genAccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v034" - v036genAccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v036" - "github.com/cosmos/cosmos-sdk/x/genutil/types" - v034gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v034" - v036gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v036" - v036params "github.com/cosmos/cosmos-sdk/x/params/legacy/v036" - v034staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v034" - v036staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v036" -) - -// Migrate migrates exported state from v0.34 to a v0.36 genesis state. -func Migrate(appState types.AppMap, _ client.Context) types.AppMap { - v034Codec := codec.NewLegacyAmino() - cryptocodec.RegisterCrypto(v034Codec) - v034gov.RegisterLegacyAminoCodec(v034Codec) - - v036Codec := codec.NewLegacyAmino() - cryptocodec.RegisterCrypto(v036Codec) - v036gov.RegisterLegacyAminoCodec(v036Codec) - v036distr.RegisterLegacyAminoCodec(v036Codec) - v036params.RegisterLegacyAminoCodec(v036Codec) - - // migrate genesis accounts state - if appState[v034genAccounts.ModuleName] != nil { - var genAccs v034genAccounts.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034genAccounts.ModuleName], &genAccs) - - var authGenState v034auth.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034auth.ModuleName], &authGenState) - - var govGenState v034gov.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034gov.ModuleName], &govGenState) - - var distrGenState v034distr.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034distr.ModuleName], &distrGenState) - - var stakingGenState v034staking.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034staking.ModuleName], &stakingGenState) - - delete(appState, v034genAccounts.ModuleName) // delete old key in case the name changed - appState[v036genAccounts.ModuleName] = v036Codec.MustMarshalJSON( - v036genAccounts.Migrate( - genAccs, authGenState.CollectedFees, distrGenState.FeePool.CommunityPool, govGenState.Deposits, - stakingGenState.Validators, stakingGenState.UnbondingDelegations, distrGenState.OutstandingRewards, - stakingGenState.Params.BondDenom, v036distr.ModuleName, v036gov.ModuleName, - ), - ) - } - - // migrate auth state - if appState[v034auth.ModuleName] != nil { - var authGenState v034auth.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034auth.ModuleName], &authGenState) - - delete(appState, v034auth.ModuleName) // delete old key in case the name changed - appState[v036auth.ModuleName] = v036Codec.MustMarshalJSON(v036auth.Migrate(authGenState)) - } - - // migrate gov state - if appState[v034gov.ModuleName] != nil { - var govGenState v034gov.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034gov.ModuleName], &govGenState) - - delete(appState, v034gov.ModuleName) // delete old key in case the name changed - appState[v036gov.ModuleName] = v036Codec.MustMarshalJSON(v036gov.Migrate(govGenState)) - } - - // migrate distribution state - if appState[v034distr.ModuleName] != nil { - var slashingGenState v034distr.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034distr.ModuleName], &slashingGenState) - - delete(appState, v034distr.ModuleName) // delete old key in case the name changed - appState[v036distr.ModuleName] = v036Codec.MustMarshalJSON(v036distr.Migrate(slashingGenState)) - } - - // migrate staking state - if appState[v034staking.ModuleName] != nil { - var stakingGenState v034staking.GenesisState - v034Codec.MustUnmarshalJSON(appState[v034staking.ModuleName], &stakingGenState) - - delete(appState, v034staking.ModuleName) // delete old key in case the name changed - appState[v036staking.ModuleName] = v036Codec.MustMarshalJSON(v036staking.Migrate(stakingGenState)) - } - - // migrate supply state - appState[v036bank.ModuleName] = v036Codec.MustMarshalJSON(v036bank.EmptyGenesisState()) - - return appState -} diff --git a/x/genutil/legacy/v036/migrate_test.go b/x/genutil/legacy/v036/migrate_test.go deleted file mode 100644 index bdd6c4f0ff55..000000000000 --- a/x/genutil/legacy/v036/migrate_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package v036 - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -var basic034Gov = []byte(` - { - "starting_proposal_id": "2", - "deposits": [ - { - "proposal_id": "1", - "deposit": { - "depositor": "cosmos1grgelyng2v6v3t8z87wu3sxgt9m5s03xvslewd", - "proposal_id": "1", - "amount": [ - { - "denom": "uatom", - "amount": "512000000" - } - ] - } - } - ], - "votes" : [ - { - "proposal_id": "1", - "vote": { - "voter": "cosmos1lktjhnzkpkz3ehrg8psvmwhafg56kfss5597tg", - "proposal_id": "1", - "option": "Yes" - } - } - ], - "proposals": [ - { - "proposal_content": { - "type": "gov/TextProposal", - "value": { - "title": "test", - "description": "test" - } - }, - "proposal_id": "1", - "proposal_status": "Passed", - "final_tally_result": { - "yes": "1", - "abstain": "0", - "no": "0", - "no_with_veto": "0" - }, - "submit_time": "2019-05-03T21:08:25.443199036Z", - "deposit_end_time": "2019-05-17T21:08:25.443199036Z", - "total_deposit": [ - { - "denom": "uatom", - "amount": "512000000" - } - ], - "voting_start_time": "2019-05-04T16:02:33.24680295Z", - "voting_end_time": "2019-05-18T16:02:33.24680295Z" - } - ], - "deposit_params": { - "min_deposit": [ - { - "denom": "uatom", - "amount": "512000000" - } - ], - "max_deposit_period": "1209600000000000" - }, - "voting_params": { - "voting_period": "1209600000000000" - }, - "tally_params": { - "quorum": "0.400000000000000000", - "threshold": "0.500000000000000000", - "veto": "0.334000000000000000" - } - } -`) - -func TestDummyGenesis(t *testing.T) { - genesisDummy := types.AppMap{ - "foo": {}, - "bar": []byte(`{"custom": "module"}`), - } - migratedDummy := Migrate(genesisDummy, client.Context{}) - - // We should not touch custom modules in the map - require.Equal(t, genesisDummy["foo"], migratedDummy["foo"]) - require.Equal(t, genesisDummy["bar"], migratedDummy["bar"]) -} - -func TestGovGenesis(t *testing.T) { - genesis := types.AppMap{ - "gov": basic034Gov, - } - - require.NotPanics(t, func() { Migrate(genesis, client.Context{}) }) -} diff --git a/x/genutil/legacy/v038/migrate.go b/x/genutil/legacy/v038/migrate.go deleted file mode 100644 index 017d0e68fa53..000000000000 --- a/x/genutil/legacy/v038/migrate.go +++ /dev/null @@ -1,70 +0,0 @@ -package v038 - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v036" - v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v038" - v036distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v036" - v038distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v038" - v036genaccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v036" - "github.com/cosmos/cosmos-sdk/x/genutil/types" - v036gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v036" - v036params "github.com/cosmos/cosmos-sdk/x/params/legacy/v036" - v036staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v036" - v038staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v038" - v038upgrade "github.com/cosmos/cosmos-sdk/x/upgrade/legacy/v038" -) - -// Migrate migrates exported state from v0.36/v0.37 to a v0.38 genesis state. -func Migrate(appState types.AppMap, _ client.Context) types.AppMap { - v036Codec := codec.NewLegacyAmino() - cryptocodec.RegisterCrypto(v036Codec) - v036gov.RegisterLegacyAminoCodec(v036Codec) - v036distr.RegisterLegacyAminoCodec(v036Codec) - v036params.RegisterLegacyAminoCodec(v036Codec) - - v038Codec := codec.NewLegacyAmino() - v038auth.RegisterLegacyAminoCodec(v038Codec) - v036gov.RegisterLegacyAminoCodec(v038Codec) - v036distr.RegisterLegacyAminoCodec(v038Codec) - v036params.RegisterLegacyAminoCodec(v038Codec) - v038upgrade.RegisterLegacyAminoCodec(v038Codec) - - if appState[v036genaccounts.ModuleName] != nil { - // unmarshal relative source genesis application state - var authGenState v036auth.GenesisState - v036Codec.MustUnmarshalJSON(appState[v036auth.ModuleName], &authGenState) - - var genAccountsGenState v036genaccounts.GenesisState - v036Codec.MustUnmarshalJSON(appState[v036genaccounts.ModuleName], &genAccountsGenState) - - // delete deprecated genaccounts genesis state - delete(appState, v036genaccounts.ModuleName) - - // Migrate relative source genesis application state and marshal it into - // the respective key. - appState[v038auth.ModuleName] = v038Codec.MustMarshalJSON(v038auth.Migrate(authGenState, genAccountsGenState)) - } - - // migrate staking state - if appState[v036staking.ModuleName] != nil { - var stakingGenState v036staking.GenesisState - v036Codec.MustUnmarshalJSON(appState[v036staking.ModuleName], &stakingGenState) - - delete(appState, v036staking.ModuleName) // delete old key in case the name changed - appState[v038staking.ModuleName] = v038Codec.MustMarshalJSON(v038staking.Migrate(stakingGenState)) - } - - // migrate distribution state - if appState[v036distr.ModuleName] != nil { - var distrGenState v036distr.GenesisState - v036Codec.MustUnmarshalJSON(appState[v036distr.ModuleName], &distrGenState) - - delete(appState, v036distr.ModuleName) // delete old key in case the name changed - appState[v038distr.ModuleName] = v038Codec.MustMarshalJSON(v038distr.Migrate(distrGenState)) - } - - return appState -} diff --git a/x/genutil/legacy/v038/migrate_test.go b/x/genutil/legacy/v038/migrate_test.go deleted file mode 100644 index bbc8b476ed85..000000000000 --- a/x/genutil/legacy/v038/migrate_test.go +++ /dev/null @@ -1,143 +0,0 @@ -package v038_test - -import ( - "testing" - - "github.com/cosmos/cosmos-sdk/client" - v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v036" - v036genaccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v036" - v038 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v038" - "github.com/cosmos/cosmos-sdk/x/genutil/types" - v036staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v036" - - "github.com/stretchr/testify/require" -) - -var genAccountsState = []byte(`[ - { - "account_number": "0", - "address": "cosmos1q7380u26f7ntke3facjmynajs4umlr329vr4ja", - "coins": [ - { - "amount": "1000000000", - "denom": "node0token" - }, - { - "amount": "400000198", - "denom": "stake" - } - ], - "delegated_free": [], - "delegated_vesting": [], - "end_time": "0", - "module_name": "", - "module_permissions": [], - "original_vesting": [], - "sequence_number": "1", - "start_time": "0" - }, - { - "account_number": "0", - "address": "cosmos1tygms3xhhs3yv487phx3dw4a95jn7t7lpm470r", - "coins": [], - "delegated_free": [], - "delegated_vesting": [], - "end_time": "0", - "module_name": "not_bonded_tokens_pool", - "module_permissions": [ - "burner", - "staking" - ], - "original_vesting": [], - "sequence_number": "0", - "start_time": "0" - }, - { - "account_number": "0", - "address": "cosmos1m3h30wlvsf8llruxtpukdvsy0km2kum8g38c8q", - "coins": [], - "delegated_free": [], - "delegated_vesting": [], - "end_time": "0", - "module_name": "mint", - "module_permissions": [ - "minter" - ], - "original_vesting": [], - "sequence_number": "0", - "start_time": "0" - } - ]`) - -var genAuthState = []byte(`{ - "params": { - "max_memo_characters": "256", - "sig_verify_cost_ed25519": "590", - "sig_verify_cost_secp256k1": "1000", - "tx_sig_limit": "7", - "tx_size_cost_per_byte": "10" - } -}`) - -var genStakingState = []byte(`{ - "delegations": [ - { - "delegator_address": "cosmos1q7380u26f7ntke3facjmynajs4umlr329vr4ja", - "shares": "100000000.000000000000000000", - "validator_address": "cosmosvaloper1q7380u26f7ntke3facjmynajs4umlr32qchq7w" - } - ], - "exported": true, - "last_total_power": "400", - "last_validator_powers": [ - { - "Address": "cosmosvaloper1q7380u26f7ntke3facjmynajs4umlr32qchq7w", - "Power": "100" - } - ], - "params": { - "bond_denom": "stake", - "max_entries": 7, - "max_validators": 100, - "unbonding_time": "259200000000000" - }, - "redelegations": null, - "unbonding_delegations": null, - "validators": [ - { - "commission": { - "commission_rates": { - "max_change_rate": "0.000000000000000000", - "max_rate": "0.000000000000000000", - "rate": "0.000000000000000000" - }, - "update_time": "2019-09-24T23:11:22.9692177Z" - }, - "consensus_pubkey": "cosmosvalconspub1zcjduepqygqrt0saxf76lhsmp56rx52j0acdxyjvcdkq3tqvwrsmmm0ke28q36kh9h", - "delegator_shares": "100000000.000000000000000000", - "description": { - "details": "", - "identity": "", - "moniker": "node0", - "website": "" - }, - "jailed": false, - "min_self_delegation": "1", - "operator_address": "cosmosvaloper1q7380u26f7ntke3facjmynajs4umlr32qchq7w", - "status": 2, - "tokens": "100000000", - "unbonding_height": "0", - "unbonding_time": "1970-01-01T00:00:00Z" - } - ] -}`) - -func TestMigrate(t *testing.T) { - genesis := types.AppMap{ - v036auth.ModuleName: genAuthState, - v036genaccounts.ModuleName: genAccountsState, - v036staking.ModuleName: genStakingState, - } - - require.NotPanics(t, func() { v038.Migrate(genesis, client.Context{}) }) -} diff --git a/x/gov/legacy/v036/migrate.go b/x/gov/legacy/v036/migrate.go deleted file mode 100644 index d20df1d9c755..000000000000 --- a/x/gov/legacy/v036/migrate.go +++ /dev/null @@ -1,49 +0,0 @@ -package v036 - -import ( - v034gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v034" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36 -// genesis state. This migration flattens the deposits and votes and updates the -// proposal content to the new -func Migrate(oldGenState v034gov.GenesisState) GenesisState { - deposits := make(v034gov.Deposits, len(oldGenState.Deposits)) - for i, deposit := range oldGenState.Deposits { - deposits[i] = deposit.Deposit - } - - votes := make(v034gov.Votes, len(oldGenState.Votes)) - for i, vote := range oldGenState.Votes { - votes[i] = vote.Vote - } - - proposals := make([]Proposal, len(oldGenState.Proposals)) - for i, proposal := range oldGenState.Proposals { - proposals[i] = Proposal{ - Content: migrateContent(proposal.ProposalContent), - ProposalID: proposal.ProposalID, - Status: proposal.Status, - FinalTallyResult: proposal.FinalTallyResult, - SubmitTime: proposal.SubmitTime, - DepositEndTime: proposal.DepositEndTime, - TotalDeposit: proposal.TotalDeposit, - VotingStartTime: proposal.VotingStartTime, - VotingEndTime: proposal.VotingEndTime, - } - } - - return NewGenesisState( - oldGenState.StartingProposalID, deposits, votes, proposals, - oldGenState.DepositParams, oldGenState.VotingParams, oldGenState.TallyParams, - ) -} - -func migrateContent(proposalContent v034gov.ProposalContent) (content Content) { - switch proposalContent.ProposalType() { - case v034gov.ProposalTypeText: - return NewTextProposal(proposalContent.GetTitle(), proposalContent.GetDescription()) - default: - return nil - } -} diff --git a/x/staking/legacy/v036/migrate.go b/x/staking/legacy/v036/migrate.go deleted file mode 100644 index bb1f78bc4045..000000000000 --- a/x/staking/legacy/v036/migrate.go +++ /dev/null @@ -1,51 +0,0 @@ -// DONTCOVER -package v036 - -import ( - v034staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v034" -) - -// Migrate accepts exported genesis state from v0.34 and migrates it to v0.36 -// genesis state. All entries are identical except for validator slashing events -// which now include the period. -func Migrate(oldGenState v034staking.GenesisState) GenesisState { - return NewGenesisState( - oldGenState.Params, - oldGenState.LastTotalPower, - oldGenState.LastValidatorPowers, - migrateValidators(oldGenState.Validators), - oldGenState.Delegations, - oldGenState.UnbondingDelegations, - oldGenState.Redelegations, - oldGenState.Exported, - ) -} - -func migrateValidators(oldValidators v034staking.Validators) Validators { - validators := make(Validators, len(oldValidators)) - - for i, val := range oldValidators { - validators[i] = Validator{ - OperatorAddress: val.OperatorAddress, - ConsPubKey: val.ConsPubKey, - Jailed: val.Jailed, - Status: val.Status, - Tokens: val.Tokens, - DelegatorShares: val.DelegatorShares, - Description: val.Description, - UnbondingHeight: val.UnbondingHeight, - UnbondingCompletionTime: val.UnbondingCompletionTime, - Commission: Commission{ - CommissionRates: CommissionRates{ - Rate: val.Commission.Rate, - MaxRate: val.Commission.MaxRate, - MaxChangeRate: val.Commission.MaxChangeRate, - }, - UpdateTime: val.Commission.UpdateTime, - }, - MinSelfDelegation: val.MinSelfDelegation, - } - } - - return validators -} diff --git a/x/staking/legacy/v036/migrate_test.go b/x/staking/legacy/v036/migrate_test.go deleted file mode 100644 index 37540427859c..000000000000 --- a/x/staking/legacy/v036/migrate_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package v036_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - v034staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v034" - v036staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v036" -) - -func TestMigrate(t *testing.T) { - aminoCdc := codec.NewLegacyAmino() - consPubKeyEd := ed25519.GenPrivKeyFromSecret([]byte("val0")).PubKey() - consPubKeySecp := secp256k1.GenPrivKeyFromSecret([]byte("val1")).PubKey() - stakingGenState := v034staking.GenesisState{ - Validators: v034staking.Validators{ - v034staking.Validator{ - ConsPubKey: consPubKeyEd, - Status: v034staking.Unbonded, - }, v034staking.Validator{ - ConsPubKey: consPubKeySecp, - Status: v034staking.Unbonded, - }, - }, - } - - migrated := v036staking.Migrate(stakingGenState) - - json, err := aminoCdc.MarshalJSONIndent(migrated, "", " ") - require.NoError(t, err) - - expectedJSON := `{ - "params": { - "unbonding_time": "0", - "max_validators": 0, - "max_entries": 0, - "bond_denom": "" - }, - "last_total_power": "0", - "last_validator_powers": null, - "validators": [ - { - "operator_address": "", - "consensus_pubkey": "cosmosvalconspub1zcjduepq9ymett3nlv6fytn7lqxzd3q3ckvd79eqlcf3wkhgamcl4rzghesq83ecpx", - "jailed": false, - "status": 0, - "tokens": "0", - "delegator_shares": "0", - "description": { - "moniker": "", - "identity": "", - "website": "", - "details": "" - }, - "unbonding_height": "0", - "unbonding_time": "0001-01-01T00:00:00Z", - "commission": { - "commission_rates": { - "rate": "0", - "max_rate": "0", - "max_change_rate": "0" - }, - "update_time": "0001-01-01T00:00:00Z" - }, - "min_self_delegation": "0" - }, - { - "operator_address": "", - "consensus_pubkey": "cosmosvalconspub1addwnpepqwfxk5k5pugwz3quqyzvzupefm3589tw6x9dkzjdkuzn7hgpz33ag84e406", - "jailed": false, - "status": 0, - "tokens": "0", - "delegator_shares": "0", - "description": { - "moniker": "", - "identity": "", - "website": "", - "details": "" - }, - "unbonding_height": "0", - "unbonding_time": "0001-01-01T00:00:00Z", - "commission": { - "commission_rates": { - "rate": "0", - "max_rate": "0", - "max_change_rate": "0" - }, - "update_time": "0001-01-01T00:00:00Z" - }, - "min_self_delegation": "0" - } - ], - "delegations": null, - "unbonding_delegations": null, - "redelegations": null, - "exported": false -}` - - require.Equal(t, expectedJSON, string(json)) -} diff --git a/x/staking/legacy/v038/migrate.go b/x/staking/legacy/v038/migrate.go deleted file mode 100644 index d2f65edadfe7..000000000000 --- a/x/staking/legacy/v038/migrate.go +++ /dev/null @@ -1,50 +0,0 @@ -// DONTCOVER -package v038 - -import ( - v036staking "github.com/cosmos/cosmos-sdk/x/staking/legacy/v036" -) - -// Migrate accepts exported genesis state from v0.36 or v0.37 and migrates it to -// v0.38 genesis state. All entries are identical except for validator descriptions -// which now include a security contact. -func Migrate(oldGenState v036staking.GenesisState) GenesisState { - return NewGenesisState( - oldGenState.Params, - oldGenState.LastTotalPower, - oldGenState.LastValidatorPowers, - migrateValidators(oldGenState.Validators), - oldGenState.Delegations, - oldGenState.UnbondingDelegations, - oldGenState.Redelegations, - oldGenState.Exported, - ) -} - -func migrateValidators(oldValidators v036staking.Validators) Validators { - validators := make(Validators, len(oldValidators)) - - for i, val := range oldValidators { - validators[i] = Validator{ - OperatorAddress: val.OperatorAddress, - ConsPubKey: val.ConsPubKey, - Jailed: val.Jailed, - Status: val.Status, - Tokens: val.Tokens, - DelegatorShares: val.DelegatorShares, - Description: NewDescription( - val.Description.Moniker, - val.Description.Identity, - val.Description.Website, - "", // security contact field - val.Description.Details, - ), - UnbondingHeight: val.UnbondingHeight, - UnbondingCompletionTime: val.UnbondingCompletionTime, - Commission: val.Commission, - MinSelfDelegation: val.MinSelfDelegation, - } - } - - return validators -} From 0c698bdfec54d28011d935ede888fb2c3167c24e Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 12:50:27 +0200 Subject: [PATCH 2/8] Add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33f45f7e88e5..1e10b259d536 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ if input key is empty, or input data contains empty key. * via `ServiceMsg` TypeURLs (e.g. `message.action='/cosmos.bank.v1beta1.Msg/Send'`) does not work anymore, * via legacy `msg.Type()` (e.g. `message.action='send'`) is being deprecated, new `Msg`s won't emit these events. * Please use concrete `Msg` TypeURLs instead (e.g. `message.action='/cosmos.bank.v1beta1.MsgSend'`). +* [\#9291](https://github.com/cosmos/cosmos-sdk/pull/9291) Migration scripts prior to v0.38 have been removed from the CLI `migrate` command. ### API Breaking Changes From 729d3e59a1c8bbc6ea655bdaf6dc5db56f9f73d8 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 12:55:33 +0200 Subject: [PATCH 3/8] remove more --- x/auth/legacy/v036/types.go | 18 ----- x/auth/legacy/v039/migrate.go | 60 ----------------- x/auth/legacy/v039/migrate_test.go | 104 ----------------------------- 3 files changed, 182 deletions(-) delete mode 100644 x/auth/legacy/v036/types.go delete mode 100644 x/auth/legacy/v039/migrate.go delete mode 100644 x/auth/legacy/v039/migrate_test.go diff --git a/x/auth/legacy/v036/types.go b/x/auth/legacy/v036/types.go deleted file mode 100644 index 908165f26505..000000000000 --- a/x/auth/legacy/v036/types.go +++ /dev/null @@ -1,18 +0,0 @@ -// DONTCOVER -package v036 - -import v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v034" - -const ( - ModuleName = "auth" -) - -type ( - GenesisState struct { - Params v034auth.Params `json:"params"` - } -) - -func NewGenesisState(params v034auth.Params) GenesisState { - return GenesisState{params} -} diff --git a/x/auth/legacy/v039/migrate.go b/x/auth/legacy/v039/migrate.go deleted file mode 100644 index c29048fca517..000000000000 --- a/x/auth/legacy/v039/migrate.go +++ /dev/null @@ -1,60 +0,0 @@ -package v039 - -import ( - "fmt" - - v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v038" -) - -// Migrate accepts exported genesis state from v0.38 and migrates it to v0.39 -// genesis state. -func Migrate(oldAuthGenState v038auth.GenesisState) GenesisState { - accounts := make(v038auth.GenesisAccounts, len(oldAuthGenState.Accounts)) - - for i, acc := range oldAuthGenState.Accounts { - switch t := acc.(type) { - case *v038auth.BaseAccount: - accounts[i] = NewBaseAccount(t.Address, t.Coins, t.PubKey, t.AccountNumber, t.Sequence) - - case *v038auth.BaseVestingAccount: - accounts[i] = NewBaseVestingAccount( - NewBaseAccount(t.Address, t.Coins, t.PubKey, t.AccountNumber, t.Sequence), - t.OriginalVesting, t.DelegatedFree, t.DelegatedVesting, t.EndTime, - ) - - case *v038auth.ContinuousVestingAccount: - accounts[i] = NewContinuousVestingAccountRaw( - NewBaseVestingAccount( - NewBaseAccount(t.Address, t.Coins, t.PubKey, t.AccountNumber, t.Sequence), - t.OriginalVesting, t.DelegatedFree, t.DelegatedVesting, t.EndTime, - ), - t.StartTime, - ) - - case *v038auth.DelayedVestingAccount: - accounts[i] = NewDelayedVestingAccountRaw( - NewBaseVestingAccount( - NewBaseAccount(t.Address, t.Coins, t.PubKey, t.AccountNumber, t.Sequence), - t.OriginalVesting, t.DelegatedFree, t.DelegatedVesting, t.EndTime, - ), - ) - - case *v038auth.ModuleAccount: - accounts[i] = NewModuleAccount( - NewBaseAccount(t.Address, t.Coins, t.PubKey, t.AccountNumber, t.Sequence), - t.Name, t.Permissions..., - ) - - default: - panic(fmt.Sprintf("unexpected account type: %T", acc)) - } - } - - accounts = v038auth.SanitizeGenesisAccounts(accounts) - - if err := v038auth.ValidateGenAccounts(accounts); err != nil { - panic(err) - } - - return NewGenesisState(oldAuthGenState.Params, accounts) -} diff --git a/x/auth/legacy/v039/migrate_test.go b/x/auth/legacy/v039/migrate_test.go deleted file mode 100644 index 6972789c0099..000000000000 --- a/x/auth/legacy/v039/migrate_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package v039_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdk "github.com/cosmos/cosmos-sdk/types" - v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v038" - v039auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v039" -) - -func TestMigrate(t *testing.T) { - aminoCdc := codec.NewLegacyAmino() - v039auth.RegisterLegacyAminoCodec(aminoCdc) - - pub1 := ed25519.GenPrivKeyFromSecret([]byte("acc1")).PubKey() - pub2 := secp256k1.GenPrivKeyFromSecret([]byte("acc2")).PubKey() - - acc1 := v038auth.BaseAccount{ - Address: sdk.AccAddress(pub1.Address()), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000)), - Sequence: 1, - AccountNumber: 1, - PubKey: pub1, - } - acc2 := v038auth.BaseAccount{ - Address: sdk.AccAddress(pub2.Address()), - Coins: sdk.NewCoins(sdk.NewInt64Coin("stake", 400000)), - Sequence: 2, - AccountNumber: 2, - PubKey: pub2, - } - - migrated := v039auth.Migrate( - v038auth.GenesisState{ - Accounts: v038auth.GenesisAccounts{&acc1, &acc2}, - }, - ) - - expectedAcc1 := v039auth.NewBaseAccount(acc1.Address, acc1.Coins, acc1.PubKey, acc1.AccountNumber, acc1.Sequence) - expectedAcc2 := v039auth.NewBaseAccount(acc2.Address, acc2.Coins, acc2.PubKey, acc2.AccountNumber, acc2.Sequence) - - require.Equal( - t, migrated, v039auth.GenesisState{ - Accounts: v038auth.GenesisAccounts{expectedAcc1, expectedAcc2}, - }, - ) - - json, err := aminoCdc.MarshalJSONIndent(migrated, "", " ") - require.NoError(t, err) - - expectedJSON := `{ - "params": { - "max_memo_characters": "0", - "tx_sig_limit": "0", - "tx_size_cost_per_byte": "0", - "sig_verify_cost_ed25519": "0", - "sig_verify_cost_secp256k1": "0" - }, - "accounts": [ - { - "type": "cosmos-sdk/Account", - "value": { - "address": "cosmos1j7skdhh9raxdmfhmcy2gxz8hgn0jnhfmujjsfe", - "coins": [ - { - "denom": "stake", - "amount": "400000" - } - ], - "public_key": { - "type": "tendermint/PubKeyEd25519", - "value": "eB0AcLMLKFRNFfh4XAAMstexfAIUQQCDnfjLZ2KJg+A=" - }, - "account_number": "1", - "sequence": "1" - } - }, - { - "type": "cosmos-sdk/Account", - "value": { - "address": "cosmos1v57fx2l2rt6ehujuu99u2fw05779m5e2ux4z2h", - "coins": [ - { - "denom": "stake", - "amount": "400000" - } - ], - "public_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AruDygh5HprMOpHOEato85dLgAsybMJVyxBGUa3KuWCr" - }, - "account_number": "2", - "sequence": "2" - } - } - ] -}` - require.Equal(t, expectedJSON, string(json)) -} From e0c4df5fe9c4aab13a39ee41c5281626c1b8cf6f Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 14:39:22 +0200 Subject: [PATCH 4/8] remove more stuff --- CHANGELOG.md | 2 +- x/genutil/client/cli/migrate.go | 2 - x/genutil/legacy/v039/migrate.go | 44 ---------- x/genutil/legacy/v039/migrate_test.go | 121 -------------------------- 4 files changed, 1 insertion(+), 168 deletions(-) delete mode 100644 x/genutil/legacy/v039/migrate.go delete mode 100644 x/genutil/legacy/v039/migrate_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e10b259d536..58679dddc305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,7 @@ if input key is empty, or input data contains empty key. * via `ServiceMsg` TypeURLs (e.g. `message.action='/cosmos.bank.v1beta1.Msg/Send'`) does not work anymore, * via legacy `msg.Type()` (e.g. `message.action='send'`) is being deprecated, new `Msg`s won't emit these events. * Please use concrete `Msg` TypeURLs instead (e.g. `message.action='/cosmos.bank.v1beta1.MsgSend'`). -* [\#9291](https://github.com/cosmos/cosmos-sdk/pull/9291) Migration scripts prior to v0.38 have been removed from the CLI `migrate` command. +* [\#9291](https://github.com/cosmos/cosmos-sdk/pull/9291) Migration scripts prior to v0.38 have been removed from the CLI `migrate` command. The oldest supported migration is v0.39->v0.42. ### API Breaking Changes diff --git a/x/genutil/client/cli/migrate.go b/x/genutil/client/cli/migrate.go index d7f1c118199e..37e42ac4f704 100644 --- a/x/genutil/client/cli/migrate.go +++ b/x/genutil/client/cli/migrate.go @@ -14,7 +14,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" - v039 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v039" v040 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v040" v043 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v043" "github.com/cosmos/cosmos-sdk/x/genutil/types" @@ -26,7 +25,6 @@ const flagGenesisTime = "genesis-time" // // Ref: https://github.com/cosmos/cosmos-sdk/issues/5041 var migrationMap = types.MigrationMap{ - "v0.39": v039.Migrate, "v0.42": v040.Migrate, // NOTE: v0.40, v0.41 and v0.42 are genesis compatible. "v0.43": v043.Migrate, } diff --git a/x/genutil/legacy/v039/migrate.go b/x/genutil/legacy/v039/migrate.go deleted file mode 100644 index 99c7fce772f4..000000000000 --- a/x/genutil/legacy/v039/migrate.go +++ /dev/null @@ -1,44 +0,0 @@ -package v039 - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v038" - v039auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v039" - v036distr "github.com/cosmos/cosmos-sdk/x/distribution/legacy/v036" - "github.com/cosmos/cosmos-sdk/x/genutil/types" - v036gov "github.com/cosmos/cosmos-sdk/x/gov/legacy/v036" - v036params "github.com/cosmos/cosmos-sdk/x/params/legacy/v036" - v038upgrade "github.com/cosmos/cosmos-sdk/x/upgrade/legacy/v038" -) - -// Migrate migrates exported state from v0.38 to a v0.39 genesis state. -// -// NOTE: No actual migration occurs since the types do not change, but JSON -// serialization of accounts do change. -func Migrate(appState types.AppMap, _ client.Context) types.AppMap { - v038Codec := codec.NewLegacyAmino() - v038auth.RegisterLegacyAminoCodec(v038Codec) - v036gov.RegisterLegacyAminoCodec(v038Codec) - v036distr.RegisterLegacyAminoCodec(v038Codec) - v036params.RegisterLegacyAminoCodec(v038Codec) - v038upgrade.RegisterLegacyAminoCodec(v038Codec) - - v039Codec := codec.NewLegacyAmino() - v039auth.RegisterLegacyAminoCodec(v039Codec) - v036gov.RegisterLegacyAminoCodec(v039Codec) - v036distr.RegisterLegacyAminoCodec(v039Codec) - v036params.RegisterLegacyAminoCodec(v039Codec) - v038upgrade.RegisterLegacyAminoCodec(v039Codec) - - // migrate x/auth state (JSON serialization only) - if appState[v038auth.ModuleName] != nil { - var authGenState v038auth.GenesisState - v038Codec.MustUnmarshalJSON(appState[v038auth.ModuleName], &authGenState) - - delete(appState, v038auth.ModuleName) // delete old key in case the name changed - appState[v039auth.ModuleName] = v039Codec.MustMarshalJSON(v039auth.Migrate(authGenState)) - } - - return appState -} diff --git a/x/genutil/legacy/v039/migrate_test.go b/x/genutil/legacy/v039/migrate_test.go deleted file mode 100644 index 65a7ec3df7e3..000000000000 --- a/x/genutil/legacy/v039/migrate_test.go +++ /dev/null @@ -1,121 +0,0 @@ -package v039_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/client" - v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v038" - v039auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v039" - v039 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v039" - "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -var genAuthState = []byte(`{ - "params": { - "max_memo_characters": "10", - "tx_sig_limit": "10", - "tx_size_cost_per_byte": "10", - "sig_verify_cost_ed25519": "10", - "sig_verify_cost_secp256k1": "10" - }, - "accounts": [ - { - "type": "cosmos-sdk/Account", - "value": { - "address": "cosmos19hz3ee9e3lj9mne4jggj3v8hxjrpre22jukj9y", - "coins": [ - { - "denom": "stake", - "amount": "400000" - } - ], - "public_key": "cosmospub1addwnpepqtezq4ajkevh724ls45zp72x70rj8mhszqf5pxcaahazm8trv490swlf404", - "account_number": 1, - "sequence": 1 - } - }, - { - "type": "cosmos-sdk/ModuleAccount", - "value": { - "address": "cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh", - "coins": [ - { - "denom": "stake", - "amount": "400000000" - } - ], - "public_key": "", - "account_number": 2, - "sequence": 4, - "name": "bonded_tokens_pool", - "permissions": [ - "burner", - "staking" - ] - } - }, - { - "type": "cosmos-sdk/ContinuousVestingAccount", - "value": { - "address": "cosmos1vtzxzyjv506dvhl9pa527xsugf5gez4fnqxq0n", - "coins": [ - { - "denom": "stake", - "amount": "10000205" - } - ], - "public_key": "cosmospub1addwnpepqdxrk48q89xlmnzrr5nkssle05tkp73uknevzaavm53c02v26vlyzz6vcdh", - "account_number": 3, - "sequence": 5, - "original_vesting": [ - { - "denom": "stake", - "amount": "10000205" - } - ], - "delegated_free": [], - "delegated_vesting": [], - "end_time": 1596125048, - "start_time": 1595952248 - } - }, - { - "type": "cosmos-sdk/DelayedVestingAccount", - "value": { - "address": "cosmos1prxkcqclweqa0g28p7vmf6z78ghyeckm4qak30", - "coins": [ - { - "denom": "stake", - "amount": "10000205" - } - ], - "public_key": "cosmospub1addwnpepqwewcad349e2yw3weatf8lzfyv5cd6am9jkk4ajach3f568k6gg47nls3p8", - "account_number": 4, - "sequence": 15, - "original_vesting": [ - { - "denom": "stake", - "amount": "10000205" - } - ], - "delegated_free": [], - "delegated_vesting": [], - "end_time": 1596125048 - } - } - ] -}`) - -var expectedGenAuthState = []byte(`{"params":{"max_memo_characters":"10","tx_sig_limit":"10","tx_size_cost_per_byte":"10","sig_verify_cost_ed25519":"10","sig_verify_cost_secp256k1":"10"},"accounts":[{"type":"cosmos-sdk/Account","value":{"address":"cosmos19hz3ee9e3lj9mne4jggj3v8hxjrpre22jukj9y","coins":[{"denom":"stake","amount":"400000"}],"public_key":{"type":"tendermint/PubKeySecp256k1","value":"AvIgV7K2WX8qv4VoIPlG88cj7vAQE0CbHe36LZ1jZUr4"},"account_number":"1","sequence":"1"}},{"type":"cosmos-sdk/ModuleAccount","value":{"address":"cosmos1fl48vsnmsdzcv85q5d2q4z5ajdha8yu34mf0eh","coins":[{"denom":"stake","amount":"400000000"}],"public_key":"","account_number":"2","sequence":"4","name":"bonded_tokens_pool","permissions":["burner","staking"]}},{"type":"cosmos-sdk/ContinuousVestingAccount","value":{"address":"cosmos1vtzxzyjv506dvhl9pa527xsugf5gez4fnqxq0n","coins":[{"denom":"stake","amount":"10000205"}],"public_key":{"type":"tendermint/PubKeySecp256k1","value":"A0w7VOA5Tf3MQx0naEP5fRdg+jy08sF3rN0jh6mK0z5B"},"account_number":"3","sequence":"5","original_vesting":[{"denom":"stake","amount":"10000205"}],"delegated_free":[],"delegated_vesting":[],"end_time":"1596125048","start_time":"1595952248"}},{"type":"cosmos-sdk/DelayedVestingAccount","value":{"address":"cosmos1prxkcqclweqa0g28p7vmf6z78ghyeckm4qak30","coins":[{"denom":"stake","amount":"10000205"}],"public_key":{"type":"tendermint/PubKeySecp256k1","value":"A7LsdbGpcqI6Ls9Wk/xJIymG67ssrWr2XcXimmj20hFf"},"account_number":"4","sequence":"15","original_vesting":[{"denom":"stake","amount":"10000205"}],"delegated_free":[],"delegated_vesting":[],"end_time":"1596125048"}}]}`) - -func TestMigrate(t *testing.T) { - genesis := types.AppMap{ - v038auth.ModuleName: genAuthState, - } - - var migrated types.AppMap - require.NotPanics(t, func() { migrated = v039.Migrate(genesis, client.Context{}) }) - require.Equal(t, string(expectedGenAuthState), string(migrated[v039auth.ModuleName])) -} From 42f2820e5421f9b97046c0915164658abb07a0dc Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 15:02:37 +0200 Subject: [PATCH 5/8] Fix test --- x/genutil/client/testutil/migrate.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/x/genutil/client/testutil/migrate.go b/x/genutil/client/testutil/migrate.go index 4645f832b52f..5aaa18bf4eb9 100644 --- a/x/genutil/client/testutil/migrate.go +++ b/x/genutil/client/testutil/migrate.go @@ -28,13 +28,7 @@ func (s *IntegrationTestSuite) TestMigrateGenesis() { check func(jsonOut string) }{ { - "migrate 0.34 to 0.36", - `{"chain_id":"test","app_state":{}}`, - "v0.36", - false, "", func(_ string) {}, - }, - { - "migrate 0.37 to 0.42", + "migrate 0.39 to 0.42", v037Exported, "v0.42", true, "Make sure that you have correctly migrated all Tendermint consensus params", func(_ string) {}, From 800910abd9d8b132e2377782a1ca8335390b0451 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Mon, 10 May 2021 15:14:56 +0200 Subject: [PATCH 6/8] Relase wording --- STABLE_RELEASES.md | 8 +++----- x/genutil/client/testutil/migrate.go | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/STABLE_RELEASES.md b/STABLE_RELEASES.md index fd6a88213557..4fb78b771739 100644 --- a/STABLE_RELEASES.md +++ b/STABLE_RELEASES.md @@ -4,13 +4,11 @@ Only the following release series are currently supported and receive bug fixes: -The `0.37.x` release series will continue receiving bug fixes until the Cosmos Hub -migrates to a newer release of the Cosmos-SDK. -* **0.37** will continue receiving bug fixes until the Cosmos Hub migrates to a newer release series of the Cosmos-SDK. -* **0.39 «Launchpad»** will be supported until 6 months after **0.40.0** is published. A fairly strict **bugfix-only** rule applies to pull requests that are requested to be included into a stable point-release. +* **0.39 «Launchpad»** will be supported until 6 months after **0.42.0** is published. A fairly strict **bugfix-only** rule applies to pull requests that are requested to be included into a stable point-release. +* **0.42 «Stargate»** is the latest stable release. -The **0.39 «Launchpad»** release series is maintained in compliance with the **Stable Release Policy** as described in this document. +The **0.42 «Stargate»** release series is maintained in compliance with the **Stable Release Policy** as described in this document. ## Stable Release Policy diff --git a/x/genutil/client/testutil/migrate.go b/x/genutil/client/testutil/migrate.go index 5aaa18bf4eb9..e5dd0f2d13bc 100644 --- a/x/genutil/client/testutil/migrate.go +++ b/x/genutil/client/testutil/migrate.go @@ -28,7 +28,7 @@ func (s *IntegrationTestSuite) TestMigrateGenesis() { check func(jsonOut string) }{ { - "migrate 0.39 to 0.42", + "migrate 0.37 to 0.42", v037Exported, "v0.42", true, "Make sure that you have correctly migrated all Tendermint consensus params", func(_ string) {}, From f6aaa6be25269873f27aedb6335fd17b4542db2b Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Tue, 11 May 2021 11:03:55 +0200 Subject: [PATCH 7/8] Add comment --- x/auth/legacy/v034/types.go | 3 +++ x/auth/legacy/v038/types.go | 3 +++ x/bank/legacy/v036/types.go | 3 +++ x/bank/legacy/v038/types.go | 3 +++ x/distribution/legacy/v034/types.go | 3 +++ x/distribution/legacy/v036/types.go | 3 +++ x/distribution/legacy/v038/types.go | 3 +++ x/evidence/legacy/v038/types.go | 3 +++ x/gov/legacy/v034/types.go | 3 +++ x/gov/legacy/v036/types.go | 3 +++ x/params/legacy/v036/types.go | 3 +++ x/staking/legacy/v034/types.go | 3 +++ x/staking/legacy/v036/types.go | 3 +++ x/staking/legacy/v038/types.go | 3 +++ x/upgrade/legacy/v038/types.go | 3 +++ 15 files changed, 45 insertions(+) diff --git a/x/auth/legacy/v034/types.go b/x/auth/legacy/v034/types.go index 83fa2d36eace..e028b0874044 100644 --- a/x/auth/legacy/v034/types.go +++ b/x/auth/legacy/v034/types.go @@ -1,3 +1,6 @@ +// Package v034 is used for legacy migration scripts. Actual migration scripts +// for v034 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v034 diff --git a/x/auth/legacy/v038/types.go b/x/auth/legacy/v038/types.go index a59098894046..8bda3813f568 100644 --- a/x/auth/legacy/v038/types.go +++ b/x/auth/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v038 // DONTCOVER diff --git a/x/bank/legacy/v036/types.go b/x/bank/legacy/v036/types.go index d536b033bca4..081a41fc11fa 100644 --- a/x/bank/legacy/v036/types.go +++ b/x/bank/legacy/v036/types.go @@ -1,3 +1,6 @@ +// Package v036 is used for legacy migration scripts. Actual migration scripts +// for v036 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v036 diff --git a/x/bank/legacy/v038/types.go b/x/bank/legacy/v038/types.go index eba8d3518ca1..563182c10725 100644 --- a/x/bank/legacy/v038/types.go +++ b/x/bank/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v038 // DONTCOVER diff --git a/x/distribution/legacy/v034/types.go b/x/distribution/legacy/v034/types.go index 4e8b209ad67b..e32b92a5cf55 100644 --- a/x/distribution/legacy/v034/types.go +++ b/x/distribution/legacy/v034/types.go @@ -1,3 +1,6 @@ +// Package v034 is used for legacy migration scripts. Actual migration scripts +// for v034 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v034 diff --git a/x/distribution/legacy/v036/types.go b/x/distribution/legacy/v036/types.go index 2a11518b4ac2..32431b7a0d47 100644 --- a/x/distribution/legacy/v036/types.go +++ b/x/distribution/legacy/v036/types.go @@ -1,3 +1,6 @@ +// Package v036 is used for legacy migration scripts. Actual migration scripts +// for v036 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v036 diff --git a/x/distribution/legacy/v038/types.go b/x/distribution/legacy/v038/types.go index 335fbc1245e2..0422472fbb49 100644 --- a/x/distribution/legacy/v038/types.go +++ b/x/distribution/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v038 import ( diff --git a/x/evidence/legacy/v038/types.go b/x/evidence/legacy/v038/types.go index 8d3cb4f6095f..b42a72f0ae85 100644 --- a/x/evidence/legacy/v038/types.go +++ b/x/evidence/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v038 import ( diff --git a/x/gov/legacy/v034/types.go b/x/gov/legacy/v034/types.go index 14e0b7a26590..83955badd7e8 100644 --- a/x/gov/legacy/v034/types.go +++ b/x/gov/legacy/v034/types.go @@ -1,3 +1,6 @@ +// Package v034 is used for legacy migration scripts. Actual migration scripts +// for v034 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v034 diff --git a/x/gov/legacy/v036/types.go b/x/gov/legacy/v036/types.go index 6632c6da255c..28b42657a0a5 100644 --- a/x/gov/legacy/v036/types.go +++ b/x/gov/legacy/v036/types.go @@ -1,3 +1,6 @@ +// Package v036 is used for legacy migration scripts. Actual migration scripts +// for v036 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v036 diff --git a/x/params/legacy/v036/types.go b/x/params/legacy/v036/types.go index 66cc9e7d8aa9..b71f1ffab844 100644 --- a/x/params/legacy/v036/types.go +++ b/x/params/legacy/v036/types.go @@ -1,3 +1,6 @@ +// Package v036 is used for legacy migration scripts. Actual migration scripts +// for v036 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v036 import ( diff --git a/x/staking/legacy/v034/types.go b/x/staking/legacy/v034/types.go index a69f4cc9b961..868a6901f8a7 100644 --- a/x/staking/legacy/v034/types.go +++ b/x/staking/legacy/v034/types.go @@ -1,3 +1,6 @@ +// Package v034 is used for legacy migration scripts. Actual migration scripts +// for v034 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v034 diff --git a/x/staking/legacy/v036/types.go b/x/staking/legacy/v036/types.go index 5e73da243908..7cc08216682a 100644 --- a/x/staking/legacy/v036/types.go +++ b/x/staking/legacy/v036/types.go @@ -1,3 +1,6 @@ +// Package v036 is used for legacy migration scripts. Actual migration scripts +// for v036 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v036 diff --git a/x/staking/legacy/v038/types.go b/x/staking/legacy/v038/types.go index f8e08acbdf6d..c0eb7946b115 100644 --- a/x/staking/legacy/v038/types.go +++ b/x/staking/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. // DONTCOVER package v038 diff --git a/x/upgrade/legacy/v038/types.go b/x/upgrade/legacy/v038/types.go index db833477bf23..da7b3ae93d40 100644 --- a/x/upgrade/legacy/v038/types.go +++ b/x/upgrade/legacy/v038/types.go @@ -1,3 +1,6 @@ +// Package v038 is used for legacy migration scripts. Actual migration scripts +// for v038 have been removed, but the v039->v042 migration script still +// references types from this file, so we're keeping it for now. package v038 import ( From e2b8445e639c226a620e64d21eac2ebe469f03ad Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Tue, 11 May 2021 11:22:06 +0200 Subject: [PATCH 8/8] Include migratio wording --- STABLE_RELEASES.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/STABLE_RELEASES.md b/STABLE_RELEASES.md index 4fb78b771739..6e5d2da00a5b 100644 --- a/STABLE_RELEASES.md +++ b/STABLE_RELEASES.md @@ -4,7 +4,6 @@ Only the following release series are currently supported and receive bug fixes: - * **0.39 «Launchpad»** will be supported until 6 months after **0.42.0** is published. A fairly strict **bugfix-only** rule applies to pull requests that are requested to be included into a stable point-release. * **0.42 «Stargate»** is the latest stable release. @@ -14,7 +13,7 @@ The **0.42 «Stargate»** release series is maintained in compliance with the ** This policy presently applies *only* to the following release series: -* **0.39 «Launchpad»** +* **0.42 «Stargate»** ### Point Releases @@ -46,6 +45,10 @@ priority is to minimise the risk caused by changes that are not strictly require be correlated with minimising the size of such changes. As such, the same bug may need to be fixed in different ways in stable releases and `master` branch. +### Migrations + +To smoothen the update to the latest stable release, the SDK includes a set of CLI commands for managing migrations between SDK versions, under the `migrate` subcommand. Only migration scripts between stable releases are included. For the current release, **0.39 «Launchpad»** and later migrations are supported. + ### What qualifies as a Stable Release Update (SRU) * **High-impact bugs** @@ -84,12 +87,12 @@ As rule of thumb, the following changes will **NOT** be automatically accepted i ## Stable Release Exception - Procedure -1. Check that the bug is either fixed or not reproducible in `master`. It is, in general, not appropriate to release bug fixes for stable releases without first testing them in `master`. Please apply the label [0.39 «Launchpad»](https://github.com/cosmos/cosmos-sdk/labels/0.39%20LTS%20%28Launchpad%29) to the issue. +1. Check that the bug is either fixed or not reproducible in `master`. It is, in general, not appropriate to release bug fixes for stable releases without first testing them in `master`. Please apply the label [0.42 «Stargate»](https://github.com/cosmos/cosmos-sdk/labels/0.42%20LTS%20%28Stargate%29) to the issue. 2. Add a comment to the issue and ensure it contains the following information (see the bug template below): * **[Impact]** An explanation of the bug on users and justification for backporting the fix to the stable release. * A **[Test Case]** section containing detailed instructions on how to reproduce the bug. * A **[Regression Potential]** section with a clear assessment on how regressions are most likely to manifest as a result of the pull request that aims to fix the bug in the target stable release. -3. **Stable Release Managers** will review and discuss the PR. Once *consensus* surrounding the rationale has been reached and the technical review has successfully concluded, the pull request will be merged in the respective point-release target branch (e.g. `release/launchpad/0.39.X` being `X` the Launchpad's upcoming point-release) and the PR included in the point-release's respective milestone (e.g. `0.39.5`). +3. **Stable Release Managers** will review and discuss the PR. Once *consensus* surrounding the rationale has been reached and the technical review has successfully concluded, the pull request will be merged in the respective point-release target branch (e.g. `release/v0.42.x`) and the PR included in the point-release's respective milestone (e.g. `0.42.5`). ### Stable Release Exception - Bug template @@ -100,7 +103,7 @@ Brief xplanation of the effects of the bug on users and a justification for back #### Test Case -Detailed instructions on how to reproduce the bug on Launchpad's most recently published point-release. +Detailed instructions on how to reproduce the bug on Stargate's most recently published point-release. #### Regression Potential @@ -122,8 +125,7 @@ Their responsibilites include: The Stable Release Managers are appointed by the Interchain Foundation. -*Stable Release Managers* for the **0.39 «Launchpad»** release series follow: +*Stable Release Managers* for the **0.42 «Stargate»** release series follow: * @alessio - Alessio Treglia -* @clevinson - Cory Levinson- -* @ethanfrey - Ethan Frey +* @clevinson - Cory Levinson