-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
0.39->0.40 CLI
migrate
command (#6839)
* WIP on BaseAccount protobuf pub_key * WIP on BaseAccount.PubKey * Migrate supply * Change validator_slash_event * Add evidence * Add evidence to genutil migrate * Fix lint * Add println * No _ in package name * Add slashing migrate * Add tests for slashing * Add capacity to array * stray fmt.Prinlnt * WIP on BaseAccount pub key * Put current types in v0_40 * Add evidence old types * Remove useless impl * Add RegisterInterface * Add clientCtx to argument * Register evidence interfaces * Update PubKey * Update Account * Docs * WIP on protobuf keys * Use Type() and Bytes() in sr25519 pub key Equals * Add tests * Add few more tests * Update other pub/priv key types Equals * Fix PrivKey's Sign method * Rename variables in tests * Fix infinite recursive calls * Use tm ed25519 keys * Add Sign and VerifySignature tests * Remove ed25519 and sr25519 references * proto linting * Add proto crypto file * Implement some of the new multisig proto type methods * Add tests for MultisigThresholdPubKey * Add tests for pubkey pb/amino conversion functions * Move crypto types.go and register new proto pubkeys * Add missing pointer ref * Address review comments * panic in MultisigThresholdPubKey VerifySignature * Fix compile errors * Remove pk conversion in ante handler * Use internal crypto.PubKey in multisig * Add tests for MultisigThresholdPubKey VerifyMultisignature * Only keep LegacyAminoMultisigThresholdPubKey and move to proto keys to v1 * Remove conversion functions and introduce internal PubKey type * Override Amino marshaling for proto pubkeys * Merge master * Make proto-gen * Start removal of old PubKeyMultisigThreshold references * Fix tests * Fix solomachine * Fix ante handler tests * Pull latest go-amino * Remove ed25519 * Remove old secp256k1 PubKey and PrivKey * Uncomment test case * Fix linting issues * More linting * Revert tests keys values * Add Amino overrides to proto keys * Add pubkey test * Fix tests * Use threshold isntead of K * Standardize Type * Revert standardize types commit * Fix build * Fix lint * Fix lint * Add comment * Register crypto.PubKey * Add empty key in BuildSimTx * Simplify proto names * Unpack interfaces for signing desc * Fix IBC tests? * Format proto * Use secp256k1 in ibc * Fixed merge issues * Uncomment tests * Update x/ibc/testing/solomachine.go * UnpackInterfaces for solomachine types * Remove old multisig * Add amino marshal for multisig * Fix lint * Correctly register amino * One test left! * Remove old struct * Fix test * Fix test * Unpack into tmcrypto * Remove old threshold pubkey tests * Fix register amino * Fix lint * Use sdk crypto PubKey in multisig UnpackInterfaces * Potential fix? * Register LegacyAminoPubKey * Register our own PubKey * Register tmcrypto PubKey * Register both PubKeys * Register interfaces in test * Refactor fiels * Add comments * Remove old cosmos-sdk/crypto/keys reference * Use anil's suggestion * Add norace back * Use our own ed25519 * Fix pubkey types * Fix network tests * Fix more tests * Make ibc work? * Use TM pubkey in NewValidator * Fix lint * Put interface in tpyes * rerun CI * Better name register * Remove stray code * Add ed25519 tests * Check nil * Correct interface impl assert * rerun CI * Add fix for Bech32 * Address comments * FIx lint * Add tests for solomachine unpack interfaces * Fix query tx by hash * Better name in amino register * Fix lint * Add back ed25519 test (fixes #7352) * go mod tidy * Fix merge issues * Sort import * Add test for backwards-compatibility * Fix tests * Fix merge issue * Fix merge issues * Fix tests build * Fix tests * Marshal to proto * Fix 040 marshalling * Remove dontcover * Fix equivocation * Add vesting * Fix vesting * Fix slashing test * Fix evidence test * Remove pb.go files * Fix legacy auth tests * deterministic tests help * Fix auth tests * Remove useless code * Small cleanups * Add comment * Fix migrate hub * fmt.Println * No need to marshal indent * Update proto comment * Fix merge issues * Support nil pubkey * Use protobuf empty * Address comments * Fix tests * Unify legacy package names Co-authored-by: Aaron Craelius <[email protected]> Co-authored-by: Aaron Craelius <[email protected]> Co-authored-by: blushi <[email protected]> Co-authored-by: Alexander Bezobchuk <[email protected]> Co-authored-by: colin axnér <[email protected]> Co-authored-by: Zaki Manian <[email protected]> Co-authored-by: Alessio Treglia <[email protected]>
- Loading branch information
1 parent
6fa8330
commit d9ede65
Showing
64 changed files
with
1,269 additions
and
520 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
// DONTCOVER | ||
// nolint | ||
package v0_34 | ||
package v034 | ||
|
||
import ( | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
|
4 changes: 2 additions & 2 deletions
4
x/auth/legacy/v0_36/migrate.go → x/auth/legacy/v036/migrate.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
x/auth/legacy/v0_36/migrate_test.go → x/auth/legacy/v036/migrate_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
x/auth/legacy/v0_38/migrate.go → x/auth/legacy/v038/migrate.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
package v040 | ||
|
||
import ( | ||
pt "github.com/gogo/protobuf/types" | ||
|
||
codectypes "github.com/cosmos/cosmos-sdk/codec/types" | ||
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" | ||
v039auth "github.com/cosmos/cosmos-sdk/x/auth/legacy/v039" | ||
"github.com/cosmos/cosmos-sdk/x/auth/tx" | ||
v040auth "github.com/cosmos/cosmos-sdk/x/auth/types" | ||
v040vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" | ||
) | ||
|
||
// convertBaseAccount converts a 0.39 BaseAccount to a 0.40 BaseAccount. | ||
func convertBaseAccount(old *v039auth.BaseAccount) *v040auth.BaseAccount { | ||
// In `x/auth/legacy/v038/migrate.go`, when creating a BaseAccount, we | ||
// explicitly set the PublicKey field to nil. This propagates until 0.40, | ||
// and we don't know the PubKey for those accounts, so we just put an empty | ||
// string inside the Any. | ||
var any *codectypes.Any | ||
var err error | ||
if old.PubKey != nil { | ||
any, err = tx.PubKeyToAny(old.PubKey) | ||
} else { | ||
s := pt.Empty{} | ||
any, err = codectypes.NewAnyWithValue(&s) | ||
} | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
return &v040auth.BaseAccount{ | ||
Address: old.Address.String(), | ||
PubKey: any, | ||
AccountNumber: old.AccountNumber, | ||
Sequence: old.Sequence, | ||
} | ||
} | ||
|
||
// convertBaseVestingAccount converts a 0.39 BaseVestingAccount to a 0.40 BaseVestingAccount. | ||
func convertBaseVestingAccount(old *v039auth.BaseVestingAccount) *v040vesting.BaseVestingAccount { | ||
baseAccount := convertBaseAccount(old.BaseAccount) | ||
|
||
return &v040vesting.BaseVestingAccount{ | ||
BaseAccount: baseAccount, | ||
OriginalVesting: old.OriginalVesting, | ||
DelegatedFree: old.DelegatedFree, | ||
DelegatedVesting: old.DelegatedVesting, | ||
EndTime: old.EndTime, | ||
} | ||
} | ||
|
||
// Migrate accepts exported x/auth genesis state from v0.38/v0.39 and migrates | ||
// it to v0.40 x/auth genesis state. The migration includes: | ||
// | ||
// - Removing coins from account encoding. | ||
func Migrate(authGenState v039auth.GenesisState) *v040auth.GenesisState { | ||
// Convert v0.39 accounts to v0.40 ones. | ||
var v040Accounts = make([]v040auth.GenesisAccount, len(authGenState.Accounts)) | ||
for i, v039Account := range authGenState.Accounts { | ||
switch v039Account := v039Account.(type) { | ||
case *v039auth.BaseAccount: | ||
{ | ||
v040Accounts[i] = convertBaseAccount(v039Account) | ||
} | ||
case *v039auth.ModuleAccount: | ||
{ | ||
v040Accounts[i] = &v040auth.ModuleAccount{ | ||
BaseAccount: convertBaseAccount(v039Account.BaseAccount), | ||
Name: v039Account.Name, | ||
Permissions: v039Account.Permissions, | ||
} | ||
} | ||
case *v039auth.BaseVestingAccount: | ||
{ | ||
v040Accounts[i] = convertBaseVestingAccount(v039Account) | ||
} | ||
case *v039auth.ContinuousVestingAccount: | ||
{ | ||
v040Accounts[i] = &v040vesting.ContinuousVestingAccount{ | ||
BaseVestingAccount: convertBaseVestingAccount(v039Account.BaseVestingAccount), | ||
StartTime: v039Account.StartTime, | ||
} | ||
} | ||
case *v039auth.DelayedVestingAccount: | ||
{ | ||
v040Accounts[i] = &v040vesting.DelayedVestingAccount{ | ||
BaseVestingAccount: convertBaseVestingAccount(v039Account.BaseVestingAccount), | ||
} | ||
} | ||
case *v039auth.PeriodicVestingAccount: | ||
{ | ||
vestingPeriods := make([]v040vesting.Period, len(v039Account.VestingPeriods)) | ||
for j, period := range v039Account.VestingPeriods { | ||
vestingPeriods[j] = v040vesting.Period{ | ||
Length: period.Length, | ||
Amount: period.Amount, | ||
} | ||
} | ||
v040Accounts[i] = &v040vesting.PeriodicVestingAccount{ | ||
BaseVestingAccount: convertBaseVestingAccount(v039Account.BaseVestingAccount), | ||
StartTime: v039Account.StartTime, | ||
VestingPeriods: vestingPeriods, | ||
} | ||
} | ||
default: | ||
panic(sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "got invalid type %T", v039Account)) | ||
} | ||
|
||
} | ||
|
||
// Convert v0.40 accounts into Anys. | ||
anys := make([]*codectypes.Any, len(v040Accounts)) | ||
for i, v040Account := range v040Accounts { | ||
any, err := codectypes.NewAnyWithValue(v040Account) | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
anys[i] = any | ||
} | ||
|
||
return &v040auth.GenesisState{ | ||
Params: v040auth.Params{ | ||
MaxMemoCharacters: authGenState.Params.MaxMemoCharacters, | ||
TxSigLimit: authGenState.Params.TxSigLimit, | ||
TxSizeCostPerByte: authGenState.Params.TxSizeCostPerByte, | ||
SigVerifyCostED25519: authGenState.Params.SigVerifyCostED25519, | ||
SigVerifyCostSecp256k1: authGenState.Params.SigVerifyCostSecp256k1, | ||
}, | ||
Accounts: anys, | ||
} | ||
} |
Oops, something went wrong.