-
Notifications
You must be signed in to change notification settings - Fork 0
/
genesis.go
140 lines (116 loc) · 3.93 KB
/
genesis.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package types
import (
controllertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types"
hosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types"
host "github.com/cosmos/ibc-go/v7/modules/core/24-host"
)
// DefaultGenesis creates and returns the interchain accounts GenesisState
func DefaultGenesis() *GenesisState {
return &GenesisState{
ControllerGenesisState: DefaultControllerGenesis(),
HostGenesisState: DefaultHostGenesis(),
}
}
// NewGenesisState creates and returns a new GenesisState instance from the provided controller and host genesis state types
func NewGenesisState(controllerGenesisState ControllerGenesisState, hostGenesisState HostGenesisState) *GenesisState {
return &GenesisState{
ControllerGenesisState: controllerGenesisState,
HostGenesisState: hostGenesisState,
}
}
// Validate performs basic validation of the interchain accounts GenesisState
func (gs GenesisState) Validate() error {
if err := gs.ControllerGenesisState.Validate(); err != nil {
return err
}
if err := gs.HostGenesisState.Validate(); err != nil {
return err
}
return nil
}
// DefaultControllerGenesis creates and returns the default interchain accounts ControllerGenesisState
func DefaultControllerGenesis() ControllerGenesisState {
return ControllerGenesisState{
Params: controllertypes.DefaultParams(),
}
}
// NewControllerGenesisState creates a returns a new ControllerGenesisState instance
func NewControllerGenesisState(channels []ActiveChannel, accounts []RegisteredInterchainAccount, ports []string, controllerParams controllertypes.Params) ControllerGenesisState {
return ControllerGenesisState{
ActiveChannels: channels,
InterchainAccounts: accounts,
Ports: ports,
Params: controllerParams,
}
}
// Validate performs basic validation of the ControllerGenesisState
func (gs ControllerGenesisState) Validate() error {
for _, ch := range gs.ActiveChannels {
if err := host.ChannelIdentifierValidator(ch.ChannelId); err != nil {
return err
}
if err := host.PortIdentifierValidator(ch.PortId); err != nil {
return err
}
}
for _, acc := range gs.InterchainAccounts {
if err := host.PortIdentifierValidator(acc.PortId); err != nil {
return err
}
if err := icatypes.ValidateAccountAddress(acc.AccountAddress); err != nil {
return err
}
}
for _, port := range gs.Ports {
if err := host.PortIdentifierValidator(port); err != nil {
return err
}
}
if err := gs.Params.Validate(); err != nil {
return err
}
return nil
}
// DefaultHostGenesis creates and returns the default interchain accounts HostGenesisState
func DefaultHostGenesis() HostGenesisState {
return HostGenesisState{
Port: icatypes.HostPortID,
Params: hosttypes.DefaultParams(),
}
}
// NewHostGenesisState creates a returns a new HostGenesisState instance
func NewHostGenesisState(channels []ActiveChannel, accounts []RegisteredInterchainAccount, port string, hostParams hosttypes.Params) HostGenesisState {
return HostGenesisState{
ActiveChannels: channels,
InterchainAccounts: accounts,
Port: port,
Params: hostParams,
}
}
// Validate performs basic validation of the HostGenesisState
func (gs HostGenesisState) Validate() error {
for _, ch := range gs.ActiveChannels {
if err := host.ChannelIdentifierValidator(ch.ChannelId); err != nil {
return err
}
if err := host.PortIdentifierValidator(ch.PortId); err != nil {
return err
}
}
for _, acc := range gs.InterchainAccounts {
if err := host.PortIdentifierValidator(acc.PortId); err != nil {
return err
}
if err := icatypes.ValidateAccountAddress(acc.AccountAddress); err != nil {
return err
}
}
if err := host.PortIdentifierValidator(gs.Port); err != nil {
return err
}
if err := gs.Params.Validate(); err != nil {
return err
}
return nil
}