Skip to content

Commit

Permalink
Fix migration
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderbez committed Sep 12, 2019
1 parent 7cef4d1 commit ae1569f
Show file tree
Hide file tree
Showing 5 changed files with 138 additions and 11 deletions.
124 changes: 124 additions & 0 deletions x/auth/legacy/v0_38/migrate_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package v038

import (
"encoding/json"
"testing"

v034auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v0_34"
v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v0_36"

"github.com/stretchr/testify/require"
)

func TestMigrate(t *testing.T) {
var genesisState GenesisState

params := v034auth.Params{
MaxMemoCharacters: 10,
TxSigLimit: 10,
TxSizeCostPerByte: 10,
SigVerifyCostED25519: 10,
SigVerifyCostSecp256k1: 10,
}
rawAccounts := `[
{
"address": "cosmos1dfp05pasnts7a4lupn889vptjtrxzkk5f7027f",
"coins": [
{
"denom": "node0token",
"amount": "1000000000"
},
{
"denom": "stake",
"amount": "500000000"
}
],
"sequence_number": "0",
"account_number": "0",
"original_vesting": [],
"delegated_free": [],
"delegated_vesting": [],
"start_time": "0",
"end_time": "0",
"module_name": "",
"module_permissions": null
},
{
"address": "cosmos1f6dangl9ggdhuvkcwhswserr8fzra6vfzfjvh2",
"coins": [
{
"denom": "node1token",
"amount": "1000000000"
},
{
"denom": "stake",
"amount": "500000000"
}
],
"sequence_number": "0",
"account_number": "0",
"original_vesting": [],
"delegated_free": [],
"delegated_vesting": [],
"start_time": "0",
"end_time": "0",
"module_name": "",
"module_permissions": null
},
{
"address": "cosmos1gudmxhn5anh5m6m2rr4rsfhgvps8fchtgmk7a6",
"coins": [
{
"denom": "node2token",
"amount": "1000000000"
},
{
"denom": "stake",
"amount": "500000000"
}
],
"sequence_number": "0",
"account_number": "0",
"original_vesting": [],
"delegated_free": [],
"delegated_vesting": [],
"start_time": "0",
"end_time": "0",
"module_name": "",
"module_permissions": null
},
{
"address": "cosmos1kluvs8ff2s3hxad4jpmhvca4crqpcwn9xyhchv",
"coins": [
{
"denom": "node3token",
"amount": "1000000000"
},
{
"denom": "stake",
"amount": "500000000"
}
],
"sequence_number": "0",
"account_number": "0",
"original_vesting": [],
"delegated_free": [],
"delegated_vesting": [],
"start_time": "0",
"end_time": "0",
"module_name": "",
"module_permissions": null
}
]`

require.NotPanics(t, func() {
genesisState = Migrate(
v036auth.GenesisState{
Params: params,
},
json.RawMessage(rawAccounts),
)
})

require.Equal(t, genesisState, GenesisState{Params: params, Accounts: json.RawMessage(rawAccounts)})
}
6 changes: 3 additions & 3 deletions x/genaccounts/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ 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 `genaccounts`
now exists under the x/auth module's genesis state under the `accounts` key. Migration
can be performed via x/auth/legacy/v0_38/migrate.go. In addition, because genesis
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/v0_38/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
Expand Down
2 changes: 2 additions & 0 deletions x/genutil/client/cli/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import (
"github.com/cosmos/cosmos-sdk/version"
extypes "github.com/cosmos/cosmos-sdk/x/genutil"
v036 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v0_36"
v038 "github.com/cosmos/cosmos-sdk/x/genutil/legacy/v0_38"
)

var migrationMap = extypes.MigrationMap{
"v0.36": v036.Migrate,
"v0.38": v038.Migrate,
}

const (
Expand Down
2 changes: 1 addition & 1 deletion x/genutil/legacy/v0_36/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (
func Migrate(appState genutil.AppMap) genutil.AppMap {
v034Codec := codec.New()
codec.RegisterCrypto(v034Codec)
v034gov.RegisterCodec(v034Codec)

v036Codec := codec.New()
codec.RegisterCrypto(v036Codec)
v034gov.RegisterCodec(v034Codec)
v036gov.RegisterCodec(v036Codec)

// migrate genesis accounts state
Expand Down
15 changes: 8 additions & 7 deletions x/genutil/legacy/v0_38/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,28 @@ import (
"github.com/cosmos/cosmos-sdk/codec"
v036auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v0_36"
v038auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v0_38"
v036genAccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v0_36"
v036genaccounts "github.com/cosmos/cosmos-sdk/x/genaccounts/legacy/v0_36"
"github.com/cosmos/cosmos-sdk/x/genutil"
)

// Migrate migrates exported state from v0.34 to a v0.36 genesis state.
func Migrate(appState genutil.AppMap) genutil.AppMap {
// migrate genesis accounts state
v036Codec := codec.New()
codec.RegisterCrypto(v036Codec)

v038Codec := codec.New()
codec.RegisterCrypto(v038Codec)

if appState[v036genAccounts.ModuleName] != nil {

if appState[v036genaccounts.ModuleName] != nil {
var authGenState v036auth.GenesisState
v038Codec.MustUnmarshalJSON(appState[v036auth.ModuleName], &authGenState)
v036Codec.MustUnmarshalJSON(appState[v036auth.ModuleName], &authGenState)

appState[v038auth.ModuleName] = v038Codec.MustMarshalJSON(
v038auth.Migrate(authGenState, appState[v036genAccounts.ModuleName]),
v038auth.Migrate(authGenState, appState[v036genaccounts.ModuleName]),
)

delete(appState, v036genAccounts.ModuleName)
// delete deprecated genaccounts genesis state
delete(appState, v036genaccounts.ModuleName)
}

return appState
Expand Down

0 comments on commit ae1569f

Please sign in to comment.