Skip to content

Commit

Permalink
merge interchain-accounts branch
Browse files Browse the repository at this point in the history
  • Loading branch information
colin-axner committed Oct 6, 2021
2 parents 51a487b + e24294c commit f5f18fd
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 298 deletions.
29 changes: 7 additions & 22 deletions docs/ibc/proto-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@
- [Query](#ibc.applications.interchain_accounts.v1.Query)

- [ibc/applications/interchain_accounts/v1/types.proto](#ibc/applications/interchain_accounts/v1/types.proto)
- [IBCAccountPacketData](#ibc.applications.interchain_accounts.v1.IBCAccountPacketData)
- [IBCTxBody](#ibc.applications.interchain_accounts.v1.IBCTxBody)
- [IBCTxRaw](#ibc.applications.interchain_accounts.v1.IBCTxRaw)
- [InterchainAccountPacketData](#ibc.applications.interchain_accounts.v1.InterchainAccountPacketData)

- [Type](#ibc.applications.interchain_accounts.v1.Type)

Expand Down Expand Up @@ -399,22 +398,6 @@ Query defines the gRPC querier service.



<a name="ibc.applications.interchain_accounts.v1.IBCAccountPacketData"></a>

### IBCAccountPacketData
Packet data is comprised of raw transaction & type of transaction


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `type` | [Type](#ibc.applications.interchain_accounts.v1.Type) | | |
| `data` | [bytes](#bytes) | | |






<a name="ibc.applications.interchain_accounts.v1.IBCTxBody"></a>

### IBCTxBody
Expand All @@ -430,15 +413,17 @@ Body of a tx for an ics27 IBC packet



<a name="ibc.applications.interchain_accounts.v1.IBCTxRaw"></a>
<a name="ibc.applications.interchain_accounts.v1.InterchainAccountPacketData"></a>

### IBCTxRaw
Raw tx body
### InterchainAccountPacketData
InterchainAccountPacketData is comprised of araw transaction,type of transaction and optional memo field.


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `body_bytes` | [bytes](#bytes) | | |
| `type` | [Type](#ibc.applications.interchain_accounts.v1.Type) | | |
| `data` | [bytes](#bytes) | | |
| `memo` | [string](#string) | | |



Expand Down
4 changes: 2 additions & 2 deletions modules/apps/27-interchain-accounts/ibc_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (im IBCModule) OnRecvPacket(
) ibcexported.Acknowledgement {
ack := channeltypes.NewResultAcknowledgement([]byte{byte(1)})

var data types.IBCAccountPacketData
var data types.InterchainAccountPacketData
if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil {
ack = channeltypes.NewErrorAcknowledgement(fmt.Sprintf("cannot unmarshal ICS-27 interchain account packet data: %s", err.Error()))
}
Expand Down Expand Up @@ -127,7 +127,7 @@ func (im IBCModule) OnAcknowledgementPacket(
if err := types.ModuleCdc.UnmarshalJSON(acknowledgement, &ack); err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-27 interchain account packet acknowledgment: %v", err)
}
var data types.IBCAccountPacketData
var data types.InterchainAccountPacketData
if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-27 interchain account packet data: %s", err.Error())
}
Expand Down
6 changes: 1 addition & 5 deletions modules/apps/27-interchain-accounts/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,7 @@ func (k Keeper) SerializeCosmosTx(cdc codec.BinaryCodec, msgs []sdk.Msg) ([]byte
Messages: msgAnys,
}

txRaw := &types.IBCTxRaw{
BodyBytes: cdc.MustMarshal(txBody),
}

bz, err := cdc.Marshal(txRaw)
bz, err := cdc.Marshal(txBody)
if err != nil {
return nil, err
}
Expand Down
24 changes: 9 additions & 15 deletions modules/apps/27-interchain-accounts/keeper/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (

// TODO: implement middleware functionality, this will allow us to use capabilities to
// manage helper module access to owner addresses they do not have capabilities for
func (k Keeper) TrySendTx(ctx sdk.Context, portID string, data interface{}) ([]byte, error) {
func (k Keeper) TrySendTx(ctx sdk.Context, portID string, data interface{}, memo string) ([]byte, error) {
// Check for the active channel
activeChannelId, found := k.GetActiveChannel(ctx, portID)
if !found {
Expand All @@ -30,7 +30,7 @@ func (k Keeper) TrySendTx(ctx sdk.Context, portID string, data interface{}) ([]b
destinationPort := sourceChannelEnd.GetCounterparty().GetPortID()
destinationChannel := sourceChannelEnd.GetCounterparty().GetChannelID()

return k.createOutgoingPacket(ctx, portID, activeChannelId, destinationPort, destinationChannel, data)
return k.createOutgoingPacket(ctx, portID, activeChannelId, destinationPort, destinationChannel, data, memo)
}

func (k Keeper) createOutgoingPacket(
Expand All @@ -40,6 +40,7 @@ func (k Keeper) createOutgoingPacket(
destinationPort,
destinationChannel string,
data interface{},
memo string,
) ([]byte, error) {
if data == nil {
return []byte{}, types.ErrInvalidOutgoingData
Expand Down Expand Up @@ -72,9 +73,10 @@ func (k Keeper) createOutgoingPacket(
return []byte{}, channeltypes.ErrSequenceSendNotFound
}

packetData := types.IBCAccountPacketData{
packetData := types.InterchainAccountPacketData{
Type: types.EXECUTE_TX,
Data: txBytes,
Memo: memo,
}

// timeoutTimestamp is set to be a max number here so that we never recieve a timeout
Expand All @@ -98,17 +100,9 @@ func (k Keeper) createOutgoingPacket(
// DeserializeCosmosTx will unmarshal and unpack a slice of transaction bytes
// into a slice of sdk.Msg's.
func (k Keeper) DeserializeCosmosTx(_ sdk.Context, txBytes []byte) ([]sdk.Msg, error) {
var txRaw types.IBCTxRaw

err := k.cdc.Unmarshal(txBytes, &txRaw)
if err != nil {
return nil, err
}

var txBody types.IBCTxBody

err = k.cdc.Unmarshal(txRaw.BodyBytes, &txBody)
if err != nil {
if err := k.cdc.Unmarshal(txBytes, &txBody); err != nil {
return nil, err
}

Expand Down Expand Up @@ -202,7 +196,7 @@ func (k Keeper) ComputeVirtualTxHash(txBytes []byte, seq uint64) []byte {
}

func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet) error {
var data types.IBCAccountPacketData
var data types.InterchainAccountPacketData

if err := types.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil {
return sdkerrors.Wrapf(types.ErrUnknownPacketData, "cannot unmarshal ICS-27 interchain account packet data")
Expand All @@ -226,7 +220,7 @@ func (k Keeper) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet) error
}
}

func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IBCAccountPacketData, ack channeltypes.Acknowledgement) error {
func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, data types.InterchainAccountPacketData, ack channeltypes.Acknowledgement) error {
switch ack.Response.(type) {
case *channeltypes.Acknowledgement_Error:
if k.hook != nil {
Expand All @@ -245,7 +239,7 @@ func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Pac
}
}

func (k Keeper) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IBCAccountPacketData) error {
func (k Keeper) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet, data types.InterchainAccountPacketData) error {
if k.hook != nil {
k.hook.OnTxFailed(ctx, packet.SourcePort, packet.SourceChannel, k.ComputeVirtualTxHash(data.Data, packet.Sequence), data.Data)
}
Expand Down
26 changes: 7 additions & 19 deletions modules/apps/27-interchain-accounts/keeper/relay_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ func (suite *KeeperTestSuite) TestTrySendTx() {
suite.SetupTest() // reset
path = NewICAPath(suite.chainA, suite.chainB)
suite.coordinator.SetupConnections(path)
memo := "memo"

err := suite.SetupICAPath(path, TestOwnerAddress)
suite.Require().NoError(err)
Expand All @@ -96,7 +97,7 @@ func (suite *KeeperTestSuite) TestTrySendTx() {

tc.malleate()

_, err = suite.chainA.GetSimApp().ICAKeeper.TrySendTx(suite.chainA.GetContext(), portID, msg)
_, err = suite.chainA.GetSimApp().ICAKeeper.TrySendTx(suite.chainA.GetContext(), portID, msg, memo)

if tc.expPass {
suite.Require().NoError(err)
Expand Down Expand Up @@ -131,28 +132,15 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
txBytes, err := suite.chainA.GetSimApp().ICAKeeper.SerializeCosmosTx(suite.chainA.Codec, []sdk.Msg{msg})
suite.Require().NoError(err)

data := types.IBCAccountPacketData{Type: types.EXECUTE_TX,
data := types.InterchainAccountPacketData{Type: types.EXECUTE_TX,
Data: txBytes}
packetData = data.GetBytes()
}, true,
},
{
"Cannot deserialize txBytes", func() {
txBytes = []byte("invalid tx bytes")
data := types.IBCAccountPacketData{Type: types.EXECUTE_TX,
Data: txBytes}
packetData = data.GetBytes()
}, false,
},
{
"Cannot deserialize txBytes: invalid IBCTxRaw", func() {
txBody := []byte("invalid tx body")
txRaw := &types.IBCTxRaw{
BodyBytes: txBody,
}

txBytes = suite.chainB.Codec.MustMarshal(txRaw)
data := types.IBCAccountPacketData{Type: types.EXECUTE_TX,
data := types.InterchainAccountPacketData{Type: types.EXECUTE_TX,
Data: txBytes}
packetData = data.GetBytes()
}, false,
Expand All @@ -162,13 +150,13 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
txBytes = []byte{}
// Type here is an ENUM
// Valid type is types.EXECUTE_TX
data := types.IBCAccountPacketData{Type: 100,
data := types.InterchainAccountPacketData{Type: 100,
Data: txBytes}
packetData = data.GetBytes()
}, false,
},
{
"Cannot unmarshal interchain account packet data into types.IBCAccountPacketData", func() {
"Cannot unmarshal interchain account packet data into types.InterchainAccountPacketData", func() {
packetData = []byte{}
}, false,
},
Expand All @@ -186,7 +174,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() {
// build packet data
txBytes, err := suite.chainA.GetSimApp().ICAKeeper.SerializeCosmosTx(suite.chainA.Codec, []sdk.Msg{msg})
suite.Require().NoError(err)
data := types.IBCAccountPacketData{Type: types.EXECUTE_TX,
data := types.InterchainAccountPacketData{Type: types.EXECUTE_TX,
Data: txBytes}
packetData = data.GetBytes()
}, false,
Expand Down
2 changes: 1 addition & 1 deletion modules/apps/27-interchain-accounts/types/packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
)

func (packet IBCAccountPacketData) GetBytes() []byte {
func (packet InterchainAccountPacketData) GetBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&packet))
}
Loading

0 comments on commit f5f18fd

Please sign in to comment.