Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2e07ac5

Browse files
committedFeb 16, 2022
fix: counterparty address must chain channelID
1 parent 2c1ff0b commit 2e07ac5

18 files changed

+206
-98
lines changed
 

‎docs/ibc/proto-docs.md

+2
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,7 @@ RegisteredRelayerAddress contains the address and counterparty address for a spe
829829
| ----- | ---- | ----- | ----------- |
830830
| `address` | [string](#string) | | |
831831
| `counterparty_address` | [string](#string) | | |
832+
| `channel_id` | [string](#string) | | |
832833

833834

834835

@@ -1040,6 +1041,7 @@ MsgRegisterCounterpartyAddress is the request type for registering the counterpa
10401041
| ----- | ---- | ----- | ----------- |
10411042
| `address` | [string](#string) | | |
10421043
| `counterparty_address` | [string](#string) | | |
1044+
| `channel_id` | [string](#string) | | |
10431045

10441046

10451047

‎modules/apps/29-fee/ibc_module.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func (im IBCModule) OnRecvPacket(
196196

197197
ack := im.app.OnRecvPacket(ctx, packet, relayer)
198198

199-
forwardRelayer, found := im.keeper.GetCounterpartyAddress(ctx, relayer.String())
199+
forwardRelayer, found := im.keeper.GetCounterpartyAddress(ctx, relayer.String(), packet.DestinationChannel)
200200

201201
// incase of async aknowledgement (ack == nil) store the ForwardRelayer address for use later
202202
if ack == nil && found {

‎modules/apps/29-fee/ibc_module_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ func (suite *FeeTestSuite) TestOnRecvPacket() {
448448
{
449449
"source relayer is empty string",
450450
func() {
451-
suite.chainB.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainB.GetContext(), suite.chainA.SenderAccount.GetAddress().String(), "")
451+
suite.chainB.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainB.GetContext(), suite.chainA.SenderAccount.GetAddress().String(), "", suite.path.EndpointB.ChannelID)
452452
},
453453
false,
454454
true,
@@ -486,7 +486,7 @@ func (suite *FeeTestSuite) TestOnRecvPacket() {
486486
cbs, ok := suite.chainB.App.GetIBCKeeper().Router.GetRoute(module)
487487
suite.Require().True(ok)
488488

489-
suite.chainB.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainB.GetContext(), suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String())
489+
suite.chainB.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainB.GetContext(), suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), suite.path.EndpointB.ChannelID)
490490

491491
// malleate test case
492492
tc.malleate()

‎modules/apps/29-fee/keeper/genesis.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, state types.GenesisState) {
1313
}
1414

1515
for _, addr := range state.RegisteredRelayers {
16-
k.SetCounterpartyAddress(ctx, addr.Address, addr.CounterpartyAddress)
16+
k.SetCounterpartyAddress(ctx, addr.Address, addr.CounterpartyAddress, addr.ChannelId)
1717
}
1818

1919
for _, forwardAddr := range state.ForwardRelayers {

‎modules/apps/29-fee/keeper/genesis_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
4646
{
4747
Address: sender,
4848
CounterpartyAddress: counterparty,
49+
ChannelId: ibctesting.FirstChannelID,
4950
},
5051
},
5152
}
@@ -62,7 +63,7 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
6263
suite.Require().True(isEnabled)
6364

6465
// check relayers
65-
addr, found := suite.chainA.GetSimApp().IBCFeeKeeper.GetCounterpartyAddress(suite.chainA.GetContext(), sender)
66+
addr, found := suite.chainA.GetSimApp().IBCFeeKeeper.GetCounterpartyAddress(suite.chainA.GetContext(), sender, ibctesting.FirstChannelID)
6667
suite.Require().True(found)
6768
suite.Require().Equal(genesisState.RegisteredRelayers[0].CounterpartyAddress, addr)
6869
}
@@ -88,7 +89,7 @@ func (suite *KeeperTestSuite) TestExportGenesis() {
8889
sender := suite.chainA.SenderAccount.GetAddress().String()
8990
counterparty := suite.chainB.SenderAccount.GetAddress().String()
9091
// set counterparty address
91-
suite.chainA.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainA.GetContext(), sender, counterparty)
92+
suite.chainA.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainA.GetContext(), sender, counterparty, ibctesting.FirstChannelID)
9293

9394
// set forward relayer address
9495
suite.chainA.GetSimApp().IBCFeeKeeper.SetForwardRelayerAddress(suite.chainA.GetContext(), packetID, sender)

‎modules/apps/29-fee/keeper/keeper.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,15 @@ func (k Keeper) DisableAllChannels(ctx sdk.Context) {
135135

136136
// SetCounterpartyAddress maps the destination chain relayer address to the source relayer address
137137
// The receiving chain must store the mapping from: address -> counterpartyAddress for the given channel
138-
func (k Keeper) SetCounterpartyAddress(ctx sdk.Context, address, counterpartyAddress string) {
138+
func (k Keeper) SetCounterpartyAddress(ctx sdk.Context, address, counterpartyAddress, channelID string) {
139139
store := ctx.KVStore(k.storeKey)
140-
store.Set(types.KeyRelayerAddress(address), []byte(counterpartyAddress))
140+
store.Set(types.KeyRelayerAddress(address, channelID), []byte(counterpartyAddress))
141141
}
142142

143143
// GetCounterpartyAddress gets the relayer counterparty address given a destination relayer address
144-
func (k Keeper) GetCounterpartyAddress(ctx sdk.Context, address string) (string, bool) {
144+
func (k Keeper) GetCounterpartyAddress(ctx sdk.Context, address, channelID string) (string, bool) {
145145
store := ctx.KVStore(k.storeKey)
146-
key := types.KeyRelayerAddress(address)
146+
key := types.KeyRelayerAddress(address, channelID)
147147

148148
if !store.Has(key) {
149149
return "", false
@@ -166,6 +166,7 @@ func (k Keeper) GetAllRelayerAddresses(ctx sdk.Context) []*types.RegisteredRelay
166166
addr := &types.RegisteredRelayerAddress{
167167
Address: keySplit[1],
168168
CounterpartyAddress: string(iterator.Value()),
169+
ChannelId: keySplit[2],
169170
}
170171

171172
registeredAddrArr = append(registeredAddrArr, addr)

‎modules/apps/29-fee/keeper/keeper_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,13 @@ func (suite *KeeperTestSuite) TestGetAllRelayerAddresses() {
156156
sender := suite.chainA.SenderAccount.GetAddress().String()
157157
counterparty := suite.chainB.SenderAccount.GetAddress().String()
158158

159-
suite.chainA.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainA.GetContext(), sender, counterparty)
159+
suite.chainA.GetSimApp().IBCFeeKeeper.SetCounterpartyAddress(suite.chainA.GetContext(), sender, counterparty, ibctesting.FirstChannelID)
160160

161161
expectedAddr := []*types.RegisteredRelayerAddress{
162162
{
163163
Address: sender,
164164
CounterpartyAddress: counterparty,
165+
ChannelId: ibctesting.FirstChannelID,
165166
},
166167
}
167168

‎modules/apps/29-fee/keeper/msg_server.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (k Keeper) RegisterCounterpartyAddress(goCtx context.Context, msg *types.Ms
1818
ctx := sdk.UnwrapSDKContext(goCtx)
1919

2020
k.SetCounterpartyAddress(
21-
ctx, msg.Address, msg.CounterpartyAddress,
21+
ctx, msg.Address, msg.CounterpartyAddress, msg.ChannelId,
2222
)
2323

2424
k.Logger(ctx).Info("Registering counterparty address for relayer.", "Address:", msg.Address, "Counterparty Address:", msg.CounterpartyAddress)

‎modules/apps/29-fee/keeper/msg_server_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package keeper_test
33
import (
44
"github.com/cosmos/ibc-go/v3/modules/apps/29-fee/types"
55
channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"
6+
ibctesting "github.com/cosmos/ibc-go/v3/testing"
67
)
78

89
func (suite *KeeperTestSuite) TestRegisterCounterpartyAddress() {
@@ -35,14 +36,14 @@ func (suite *KeeperTestSuite) TestRegisterCounterpartyAddress() {
3536
sender = suite.chainA.SenderAccount.GetAddress().String()
3637
counterparty = suite.chainB.SenderAccount.GetAddress().String()
3738
tc.malleate()
38-
msg := types.NewMsgRegisterCounterpartyAddress(sender, counterparty)
39+
msg := types.NewMsgRegisterCounterpartyAddress(sender, counterparty, ibctesting.FirstChannelID)
3940

4041
_, err := suite.chainA.SendMsgs(msg)
4142

4243
if tc.expPass {
4344
suite.Require().NoError(err) // message committed
4445

45-
counterpartyAddress, _ := suite.chainA.GetSimApp().IBCFeeKeeper.GetCounterpartyAddress(ctx, suite.chainA.SenderAccount.GetAddress().String())
46+
counterpartyAddress, _ := suite.chainA.GetSimApp().IBCFeeKeeper.GetCounterpartyAddress(ctx, suite.chainA.SenderAccount.GetAddress().String(), ibctesting.FirstChannelID)
4647
suite.Require().Equal(counterparty, counterpartyAddress)
4748
} else {
4849
suite.Require().Error(err)

‎modules/apps/29-fee/transfer_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (suite *FeeTestSuite) TestFeeTransfer() {
4646
// to differentiate from the chainA.SenderAccount for checking successful relay payouts
4747
relayerAddress := suite.chainB.SenderAccount.GetAddress()
4848

49-
msgRegister := types.NewMsgRegisterCounterpartyAddress(suite.chainB.SenderAccount.GetAddress().String(), relayerAddress.String())
49+
msgRegister := types.NewMsgRegisterCounterpartyAddress(suite.chainB.SenderAccount.GetAddress().String(), relayerAddress.String(), ibctesting.FirstChannelID)
5050
_, err = suite.chainB.SendMsgs(msgRegister)
5151
suite.Require().NoError(err) // message committed
5252

‎modules/apps/29-fee/types/genesis.pb.go

+87-35
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎modules/apps/29-fee/types/keys.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ func FeeEnabledKey(portID, channelID string) []byte {
4444
}
4545

4646
// KeyRelayerAddress returns the key for relayer address -> counteryparty address mapping
47-
func KeyRelayerAddress(address string) []byte {
48-
return []byte(fmt.Sprintf("%s/%s", RelayerAddressKeyPrefix, address))
47+
func KeyRelayerAddress(address, channelID string) []byte {
48+
return []byte(fmt.Sprintf("%s/%s/%s", RelayerAddressKeyPrefix, address, channelID))
4949
}
5050

5151
// KeyForwardRelayerAddress returns the key for packetID -> forwardAddress mapping

‎modules/apps/29-fee/types/keys_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import (
1212
func TestKeyRelayerAddress(t *testing.T) {
1313
var (
1414
relayerAddress = "relayer_address"
15+
channelID = "channel-0"
1516
)
1617

17-
key := types.KeyRelayerAddress(relayerAddress)
18-
require.Equal(t, string(key), fmt.Sprintf("%s/relayer_address", types.RelayerAddressKeyPrefix))
18+
key := types.KeyRelayerAddress(relayerAddress, channelID)
19+
require.Equal(t, string(key), fmt.Sprintf("%s/%s/%s", types.RelayerAddressKeyPrefix, relayerAddress, channelID))
1920
}

‎modules/apps/29-fee/types/msgs.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ const (
1717
)
1818

1919
// NewMsgRegisterCounterpartyAddress creates a new instance of MsgRegisterCounterpartyAddress
20-
func NewMsgRegisterCounterpartyAddress(address, counterpartyAddress string) *MsgRegisterCounterpartyAddress {
20+
func NewMsgRegisterCounterpartyAddress(address, counterpartyAddress, channelID string) *MsgRegisterCounterpartyAddress {
2121
return &MsgRegisterCounterpartyAddress{
2222
Address: address,
2323
CounterpartyAddress: counterpartyAddress,
24+
ChannelId: channelID,
2425
}
2526
}
2627

0 commit comments

Comments
 (0)
Please sign in to comment.