-
Notifications
You must be signed in to change notification settings - Fork 46
/
codec.go
115 lines (99 loc) · 4.51 KB
/
codec.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package types
import (
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/legacy"
"github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting/exported"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec"
"github.com/desmos-labs/desmos/v7/types/crypto/ethsecp256k1"
)
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
// Register custom key types
cdc.RegisterConcrete(ðsecp256k1.PubKey{}, ethsecp256k1.PubKeyName, nil)
cdc.RegisterConcrete(ðsecp256k1.PrivKey{}, ethsecp256k1.PrivKeyName, nil)
legacy.RegisterAminoMsg(cdc, &MsgSaveProfile{}, "desmos/MsgSaveProfile")
legacy.RegisterAminoMsg(cdc, &MsgDeleteProfile{}, "desmos/MsgDeleteProfile")
legacy.RegisterAminoMsg(cdc, &MsgRequestDTagTransfer{}, "desmos/MsgRequestDTagTransfer")
legacy.RegisterAminoMsg(cdc, &MsgCancelDTagTransferRequest{}, "desmos/MsgCancelDTagTransferRequest")
legacy.RegisterAminoMsg(cdc, &MsgAcceptDTagTransferRequest{}, "desmos/MsgAcceptDTagTransferRequest")
legacy.RegisterAminoMsg(cdc, &MsgRefuseDTagTransferRequest{}, "desmos/MsgRefuseDTagTransferRequest")
legacy.RegisterAminoMsg(cdc, &MsgLinkChainAccount{}, "desmos/MsgLinkChainAccount")
legacy.RegisterAminoMsg(cdc, &MsgUnlinkChainAccount{}, "desmos/MsgUnlinkChainAccount")
legacy.RegisterAminoMsg(cdc, &MsgSetDefaultExternalAddress{}, "desmos/MsgSetDefaultExternalAddress")
legacy.RegisterAminoMsg(cdc, &MsgLinkApplication{}, "desmos/MsgLinkApplication")
legacy.RegisterAminoMsg(cdc, &MsgUnlinkApplication{}, "desmos/MsgUnlinkApplication")
legacy.RegisterAminoMsg(cdc, &MsgUpdateParams{}, "desmos/x/profiles/MsgUpdateParams")
cdc.RegisterConcrete(&Params{}, "desmos/x/profiles/Params", nil)
cdc.RegisterInterface((*AddressData)(nil), nil)
cdc.RegisterConcrete(&Bech32Address{}, "desmos/Bech32Address", nil)
cdc.RegisterConcrete(&Base58Address{}, "desmos/Base58Address", nil)
cdc.RegisterConcrete(&HexAddress{}, "desmos/HexAddress", nil)
cdc.RegisterInterface((*Signature)(nil), nil)
cdc.RegisterConcrete(&SingleSignature{}, "desmos/SingleSignature", nil)
cdc.RegisterConcrete(&CosmosMultiSignature{}, "desmos/CosmosMultiSignature", nil)
cdc.RegisterConcrete(&Profile{}, "desmos/Profile", nil)
}
func RegisterInterfaces(registry types.InterfaceRegistry) {
registry.RegisterImplementations((*authtypes.AccountI)(nil), &Profile{})
registry.RegisterImplementations((*exported.VestingAccount)(nil), &Profile{})
registry.RegisterImplementations((*authtypes.GenesisAccount)(nil), &Profile{})
registry.RegisterInterface(
"desmos.profiles.v3.AddressData",
(*AddressData)(nil),
&Bech32Address{},
&Base58Address{},
&HexAddress{},
)
registry.RegisterInterface(
"desmos.profiles.v3.Signature",
(*Signature)(nil),
&SingleSignature{},
&CosmosMultiSignature{},
)
registry.RegisterImplementations(
(*cryptotypes.PubKey)(nil),
ðsecp256k1.PubKey{},
)
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgSaveProfile{},
&MsgDeleteProfile{},
&MsgRequestDTagTransfer{},
&MsgCancelDTagTransferRequest{},
&MsgAcceptDTagTransferRequest{},
&MsgRefuseDTagTransferRequest{},
&MsgLinkChainAccount{},
&MsgUnlinkChainAccount{},
&MsgLinkApplication{},
&MsgUnlinkApplication{},
&MsgSetDefaultExternalAddress{},
&MsgUpdateParams{},
)
msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
}
var (
amino = codec.NewLegacyAmino()
// AminoCdc references the global x/profiles module codec. Note, the codec should
// ONLY be used in certain instances of tests and for JSON encoding as Amino is
// still used for that purpose.
//
// The actual codec used for serialization should be provided to x/profiles and
// defined at the application level.
AminoCdc = codec.NewAminoCodec(amino)
)
func init() {
RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino)
sdk.RegisterLegacyAminoCodec(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
// Register all Amino interfaces and concrete types on the gov Amino codec so that this can later be
// used to properly serialize MsgSubmitProposal instances
RegisterLegacyAminoCodec(govcodec.Amino)
}