Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Interchain accounts v1 #380

Merged
merged 80 commits into from
Dec 7, 2021
Merged
Changes from 1 commit
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
f6303dd
migrate ibc-account module to ibc-go
colin-axner Jul 15, 2021
c27653a
Add @seantking to CODEOWNERS for interchain accounts module
colin-axner Jul 15, 2021
0148576
rename ibc-account -> interchain-accounts (#280)
colin-axner Jul 21, 2021
b870be4
Integrate ICA into testing package, add simple keeper tests (#282)
colin-axner Jul 22, 2021
c3be169
Add interchain account OnChanOpenInit and InitInterchainAccount tests…
colin-axner Jul 23, 2021
a9cdf5a
feat: ica proto (#305)
seantking Jul 29, 2021
2a160ed
ICA OnChanOpenTry update + tests (#299)
colin-axner Aug 5, 2021
38ebbff
test: adding test for OnChanOpenConfirm (#312)
seantking Aug 5, 2021
881276f
fix: updating port-id & fixing OnChanOpenInit bug (#321)
seantking Aug 9, 2021
9d3f02c
Add counterparty port ID to controller portID (#319)
colin-axner Aug 9, 2021
b4d82a2
test: check active channel is correct (#324)
seantking Aug 13, 2021
8acf6e6
Removed memkey from ICA keeper (#342)
lukerhoads Aug 24, 2021
1bf7930
moving stateless GenerateAddress func to types (#352)
damiannolan Aug 27, 2021
599ad7f
update ica branch codeowners (#353)
colin-axner Aug 27, 2021
0174855
move Get/SetInterchainAccount to keeper.go, add tests (#355)
damiannolan Aug 30, 2021
01bb9bf
chore: interchain accounts cleanup, cli alias (#362)
damiannolan Aug 31, 2021
2a3e526
updating interchain accounts pkg naming (#364)
damiannolan Sep 1, 2021
74fb34e
adding ica grpc query tests (#368)
damiannolan Sep 2, 2021
d37f2ec
updating grpc query tests, removing queryClient on KeeperTestSuite (#…
damiannolan Sep 6, 2021
e8d0dde
ICA: Adding tests for relay.go (#337)
seantking Sep 13, 2021
e0cef86
Update ICA on main + add app version negotiation stub (#403)
seantking Sep 14, 2021
b5ad323
Merge branch 'main' into interchain-accounts
seantking Sep 15, 2021
7c7bf8e
Merge pull request #407 from cosmos/sean/chore-merge-conflicts-ica
seantking Sep 15, 2021
3517def
fix err message (#419)
colin-axner Sep 20, 2021
e7cf4d3
feat: ica app version negotiation (#410)
damiannolan Sep 20, 2021
e64fb25
test: adding tests for OnRecvPacket (#412)
seantking Sep 23, 2021
bf9f20a
Merge branch 'main' into interchain-accounts
colin-axner Sep 23, 2021
7fb133e
chore: merge latest main to interchain-accounts (#435)
damiannolan Sep 23, 2021
c149317
chore: update ica prefix for port identifiers (#434)
damiannolan Sep 23, 2021
581ca29
test: account/keeper tests for ICA (#420)
seantking Sep 24, 2021
c4fcc0e
feat: module account address derivation (#428)
damiannolan Sep 24, 2021
df1aa03
ICA: tests for module.go (#424)
seantking Sep 24, 2021
77b7869
additional code cov and clean up (#440)
damiannolan Sep 27, 2021
3271da8
Merge branch 'main' into interchain-accounts
colin-axner Sep 29, 2021
0db5c95
split ica module.go into ibc_module.go (#453)
colin-axner Sep 29, 2021
e24294c
Rename IBCAccountPacketData, Remove TxRaw (#456)
colin-axner Oct 4, 2021
064aa42
Rename DeserializeTx, enforce []sdk.Msg usage in SerializeCosmosTx (#…
colin-axner Oct 6, 2021
1f87f2e
remove computeVirtualTxHash (#473)
colin-axner Oct 7, 2021
f129376
chore: ctrl port connection id validation (#454)
damiannolan Oct 7, 2021
e072e67
chore: correctly set/delete active channels (#463)
damiannolan Oct 7, 2021
9595948
remove ica hooks (#480)
colin-axner Oct 8, 2021
9450085
chore: minor nits - renaming and error msgs (#464)
damiannolan Oct 11, 2021
0ae4a75
chore: update portkey to include port ID (#467)
damiannolan Oct 11, 2021
3e9afcb
ICA: Rename TxBody, Remove serialization logic from controller, intro…
colin-axner Oct 12, 2021
c5ac29c
chore(spec): remove old specification
seantking Oct 13, 2021
300f133
Merge pull request #486 from cosmos/sean/ica/chore-remove-old-spec
seantking Oct 13, 2021
cd263c7
ica: unspecified type enum for interchain account packet data (#487)
damiannolan Oct 13, 2021
4db5c83
chore: ica audit nitpicks (#483)
damiannolan Oct 13, 2021
bd10403
fixed typo (#507)
crodriguezvega Nov 1, 2021
03ada27
ica: move Serialize/DeserializeCosmosTx to package types (#493)
damiannolan Nov 2, 2021
9fc8b82
Merge branch 'main' of github.com:cosmos/ibc-go into colin/update-int…
colin-axner Nov 2, 2021
cc2c3c9
ica: TrySendTx error handling nits (#491)
damiannolan Nov 3, 2021
afb4132
Merge branch 'interchain-accounts' of github.com:cosmos/ibc-go into c…
colin-axner Nov 3, 2021
df9ec49
chore: adding damo to codeowners (#520)
seantking Nov 3, 2021
977c889
Merge branch 'interchain-accounts' of github.com:cosmos/ibc-go into c…
colin-axner Nov 3, 2021
7c662cb
Merge pull request #518 from cosmos/colin/update-interchain-accounts
colin-axner Nov 3, 2021
cb478a1
Merge branch 'main' of github.com:cosmos/ibc-go into interchain-accounts
colin-axner Nov 3, 2021
f88b4d7
ica: AuthenticateTx/executeTx clean up (#490)
damiannolan Nov 4, 2021
a8d5d79
Merge branch 'interchain-accounts' of github.com:cosmos/ibc-go into c…
colin-axner Nov 4, 2021
05d434e
update interchain accounts (#521)
colin-axner Nov 4, 2021
cd2f81d
ICA Controller Side Middleware (#417)
colin-axner Nov 5, 2021
3ff5bf8
ica: genesis state implementation (#481)
damiannolan Nov 5, 2021
b8bc1a8
test: relay tests for TrySendTx/OnRecvPacket (#531)
damiannolan Nov 12, 2021
7efc384
ICA controller/host submodules (#541)
damiannolan Nov 18, 2021
b87b806
chore: ica submodules minor improvements and cleanup
damiannolan Nov 19, 2021
3a06187
test: adding test for RegisterInterchainAccount & adding check to rel…
seantking Nov 19, 2021
37f5c9f
ICA Code Hygiene (#553)
seantking Nov 19, 2021
009cbec
ica: wrong handshake flow tests (#538)
colin-axner Nov 26, 2021
5bed1d7
ica: genesis state validation (#554)
damiannolan Nov 29, 2021
e6a5583
Rename imports within host/controller (#571)
colin-axner Nov 30, 2021
d681c0d
Add Enable/Disable controller/host on-chain params (#566)
colin-axner Dec 1, 2021
eedb0cb
Disable usage of controller and host submodules based on on-chain par…
colin-axner Dec 1, 2021
e6e4caa
add grpc query for controller and host params (#574)
colin-axner Dec 1, 2021
eac5ade
modify ica portid to be interchain-account instead of ibcaccount (#577)
colin-axner Dec 1, 2021
4fed4a7
feat: allowlist host param using msg typeURLs (#576)
damiannolan Dec 1, 2021
f77f4be
Add cli query for host and controller params (#578)
colin-axner Dec 1, 2021
7fc714f
renmaing ModuleName to SubModuleName for ica controller/host (#579)
damiannolan Dec 1, 2021
2583421
Merge branch 'main' into interchain-accounts
colin-axner Dec 1, 2021
22e87de
add tests/code coverage for OnRecv, OnTimeout and OnAck for controlle…
colin-axner Dec 3, 2021
a617025
Merge branch 'main' into interchain-accounts
colin-axner Dec 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: allowlist host param using msg typeURLs (#576)
* add ica params

Add new Params type to ICA. A single test is added to check defaults and validation.
Usage within the ICA keepers is still needed

* regenerate params proto into host and controller submodules

* split params implementation into host/controller

* add keeper params logic

* Apply suggestions from code review

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* add host genesis init/export params test case

* updating host proto params to include msg allowlist

* adding surrounds for new allowlist host param

* enforcing msg is present in allowlist in AuthenticateTx, updating tests

* regenerating protos post merge conflict

* applying suggestinons from review

* adding strings.Trimspace as suggested

Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>
damiannolan and colin-axner authored Dec 1, 2021
commit 4fed4a76e6955ecaa3360457b42f739d38986888
9 changes: 6 additions & 3 deletions modules/apps/27-interchain-accounts/host/ibc_module_test.go
Original file line number Diff line number Diff line change
@@ -139,7 +139,7 @@ func (suite *InterchainAccountsTestSuite) TestOnChanOpenTry() {
},
{
"host submodule disabled", func() {
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false))
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false, []string{}))
}, false,
},
{
@@ -260,7 +260,7 @@ func (suite *InterchainAccountsTestSuite) TestOnChanOpenConfirm() {
},
{
"host submodule disabled", func() {
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false))
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false, []string{}))
}, false,
},
{
@@ -399,7 +399,7 @@ func (suite *InterchainAccountsTestSuite) TestOnRecvPacket() {
},
{
"host submodule disabled", func() {
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false))
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), types.NewParams(false, []string{}))
}, false,
},
{
@@ -452,6 +452,9 @@ func (suite *InterchainAccountsTestSuite) TestOnRecvPacket() {
}
packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)

// malleate packetData for test cases
tc.malleate()

Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
suite.Require().True(found)
suite.Require().Equal(TestAccAddress.String(), accountAdrr)

expParams := types.NewParams(false)
expParams := types.NewParams(false, nil)
params := suite.chainA.GetSimApp().ICAHostKeeper.GetParams(suite.chainA.GetContext())
suite.Require().Equal(expParams, params)
}
9 changes: 8 additions & 1 deletion modules/apps/27-interchain-accounts/host/keeper/params.go
Original file line number Diff line number Diff line change
@@ -14,9 +14,16 @@ func (k Keeper) IsHostEnabled(ctx sdk.Context) bool {
return res
}

// GetAllowMessages retrieves the host enabled msg types from the paramstore
func (k Keeper) GetAllowMessages(ctx sdk.Context) []string {
var res []string
k.paramSpace.Get(ctx, types.KeyAllowMessages, &res)
return res
}

// GetParams returns the total set of the host submodule parameters.
func (k Keeper) GetParams(ctx sdk.Context) types.Params {
return types.NewParams(k.IsHostEnabled(ctx))
return types.NewParams(k.IsHostEnabled(ctx), k.GetAllowMessages(ctx))
}

// SetParams sets the total set of the host submodule parameters.
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ func (suite *KeeperTestSuite) TestParams() {
suite.Require().Equal(expParams, params)

expParams.HostEnabled = false
expParams.AllowMessages = []string{"/cosmos.staking.v1beta1.MsgDelegate"}
suite.chainA.GetSimApp().ICAHostKeeper.SetParams(suite.chainA.GetContext(), expParams)
params = suite.chainA.GetSimApp().ICAHostKeeper.GetParams(suite.chainA.GetContext())
suite.Require().Equal(expParams, params)
6 changes: 6 additions & 0 deletions modules/apps/27-interchain-accounts/host/keeper/relay.go
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"

"github.com/cosmos/ibc-go/v2/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v2/modules/apps/27-interchain-accounts/types"
channeltypes "github.com/cosmos/ibc-go/v2/modules/core/04-channel/types"
)
@@ -16,7 +17,12 @@ func (k Keeper) AuthenticateTx(ctx sdk.Context, msgs []sdk.Msg, portID string) e
return sdkerrors.Wrapf(icatypes.ErrInterchainAccountNotFound, "failed to retrieve interchain account on port %s", portID)
}

allowMsgs := k.GetAllowMessages(ctx)
for _, msg := range msgs {
if !types.ContainsMsgType(allowMsgs, msg) {
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "message type not allowed: %s", sdk.MsgTypeURL(msg))
}

for _, signer := range msg.GetSigners() {
if interchainAccountAddr != signer.String() {
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "unexpected signer address: expected %s, got %s", interchainAccountAddr, signer.String())
49 changes: 49 additions & 0 deletions modules/apps/27-interchain-accounts/host/keeper/relay_test.go
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import (
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"

"github.com/cosmos/ibc-go/v2/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v2/modules/apps/27-interchain-accounts/types"
transfertypes "github.com/cosmos/ibc-go/v2/modules/apps/transfer/types"
clienttypes "github.com/cosmos/ibc-go/v2/modules/core/02-client/types"
@@ -49,6 +50,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -74,6 +78,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -105,6 +112,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msgDelegate), sdk.MsgTypeURL(msgUndelegate)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -137,6 +147,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -173,6 +186,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -196,6 +212,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -219,6 +238,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -253,6 +275,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
true,
},
@@ -309,6 +334,27 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
},
false,
},
{
"unauthorised: message type not allowed", // NOTE: do not update params to explicitly force the error
func() {
msg := &banktypes.MsgSend{
FromAddress: suite.chainB.SenderAccount.GetAddress().String(),
ToAddress: suite.chainB.SenderAccount.GetAddress().String(),
Amount: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100))),
}

data, err := icatypes.SerializeCosmosTx(suite.chainA.GetSimApp().AppCodec(), []sdk.Msg{msg})
suite.Require().NoError(err)

icaPacketData := icatypes.InterchainAccountPacketData{
Type: icatypes.EXECUTE_TX,
Data: data,
}

packetData = icaPacketData.GetBytes()
},
false,
},
{
"unauthorised: signer address is not the interchain account associated with the controller portID",
func() {
@@ -327,6 +373,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
}

packetData = icaPacketData.GetBytes()

params := types.NewParams(true, []string{sdk.MsgTypeURL(msg)})
suite.chainB.GetSimApp().ICAHostKeeper.SetParams(suite.chainB.GetContext(), params)
},
false,
},
95 changes: 77 additions & 18 deletions modules/apps/27-interchain-accounts/host/types/host.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions modules/apps/27-interchain-accounts/host/types/keys.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
package types

import (
sdk "github.com/cosmos/cosmos-sdk/types"
)

const (
// ModuleName defines the interchain accounts host module name
ModuleName = "icahost"

// StoreKey is the store key string for the interchain accounts host module
StoreKey = ModuleName
)

// ContainsMsgType returns true if the sdk.Msg TypeURL is present in allowMsgs, otherwise false
func ContainsMsgType(allowMsgs []string, msg sdk.Msg) bool {
for _, v := range allowMsgs {
if v == sdk.MsgTypeURL(msg) {
return true
}
}

return false
}
30 changes: 27 additions & 3 deletions modules/apps/27-interchain-accounts/host/types/params.go
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ package types

import (
"fmt"
"strings"

paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
)
@@ -14,6 +15,8 @@ const (
var (
// KeyHostEnabled is the store key for HostEnabled Params
KeyHostEnabled = []byte("HostEnabled")
// KeyAllowMessages is the store key for the AllowMessages Params
KeyAllowMessages = []byte("AllowMessages")
)

// ParamKeyTable type declaration for parameters
@@ -22,15 +25,16 @@ func ParamKeyTable() paramtypes.KeyTable {
}

// NewParams creates a new parameter configuration for the host submodule
func NewParams(enableHost bool) Params {
func NewParams(enableHost bool, allowMsgs []string) Params {
return Params{
HostEnabled: enableHost,
HostEnabled: enableHost,
AllowMessages: allowMsgs,
}
}

// DefaultParams is the default parameter configuration for the host submodule
func DefaultParams() Params {
return NewParams(DefaultHostEnabled)
return NewParams(DefaultHostEnabled, nil)
}

// Validate validates all host submodule parameters
@@ -39,13 +43,18 @@ func (p Params) Validate() error {
return err
}

if err := validateAllowlist(p.AllowMessages); err != nil {
return err
}

return nil
}

// ParamSetPairs implements params.ParamSet
func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {
return paramtypes.ParamSetPairs{
paramtypes.NewParamSetPair(KeyHostEnabled, p.HostEnabled, validateEnabled),
paramtypes.NewParamSetPair(KeyAllowMessages, p.AllowMessages, validateAllowlist),
}
}

@@ -57,3 +66,18 @@ func validateEnabled(i interface{}) error {

return nil
}

func validateAllowlist(i interface{}) error {
allowMsgs, ok := i.([]string)
if !ok {
return fmt.Errorf("invalid parameter type: %T", i)
}

for _, typeURL := range allowMsgs {
if strings.TrimSpace(typeURL) == "" {
return fmt.Errorf("parameter must not contain empty strings: %s", allowMsgs)
}
}

return nil
}
Original file line number Diff line number Diff line change
@@ -10,5 +10,5 @@ import (

func TestValidateParams(t *testing.T) {
require.NoError(t, types.DefaultParams().Validate())
require.NoError(t, types.NewParams(false).Validate())
require.NoError(t, types.NewParams(false, []string{}).Validate())
}
Original file line number Diff line number Diff line change
@@ -10,6 +10,6 @@ import "gogoproto/gogo.proto";
// Params defines the set of on-chain interchain accounts parameters.
// The following parameters may be used to disable the controller submodule.
message Params {
// controller_enabled enables or disables the controller submodule.
// controller_enabled enables or disables the controller submodule.
bool controller_enabled = 1 [(gogoproto.moretags) = "yaml:\"controller_enabled\""];
}
Original file line number Diff line number Diff line change
@@ -10,6 +10,8 @@ import "gogoproto/gogo.proto";
// Params defines the set of on-chain interchain accounts parameters.
// The following parameters may be used to disable the host submodule.
message Params {
// host_enabled enables or disables the host submodule.
// host_enabled enables or disables the host submodule.
bool host_enabled = 1 [(gogoproto.moretags) = "yaml:\"host_enabled\""];
// allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.
repeated string allow_messages = 2 [(gogoproto.moretags) = "yaml:\"allow_messages\""];
}
6 changes: 3 additions & 3 deletions proto/ibc/applications/interchain_accounts/v1/genesis.proto
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ message ControllerGenesisState {
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"active_channels\""];
repeated RegisteredInterchainAccount interchain_accounts = 2
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"interchain_accounts\""];
repeated string ports = 3;
repeated string ports = 3;
ibc.applications.interchain_accounts.controller.v1.Params params = 4 [(gogoproto.nullable) = false];
}

@@ -32,8 +32,8 @@ message HostGenesisState {
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"active_channels\""];
repeated RegisteredInterchainAccount interchain_accounts = 2
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"interchain_accounts\""];
string port = 3;
ibc.applications.interchain_accounts.host.v1.Params params = 4 [(gogoproto.nullable) = false];
string port = 3;
ibc.applications.interchain_accounts.host.v1.Params params = 4 [(gogoproto.nullable) = false];
}

// ActiveChannel contains a pairing of port ID and channel ID for an active interchain accounts channel
Original file line number Diff line number Diff line change
@@ -29,4 +29,3 @@ message InterchainAccountPacketData {
message CosmosTx {
repeated google.protobuf.Any messages = 1;
}