Skip to content

Commit

Permalink
fix(deferredack): add custom ack type
Browse files Browse the repository at this point in the history
Signed-off-by: aeryz <[email protected]>
  • Loading branch information
aeryz committed Jun 8, 2024
1 parent 2a1318c commit 6d4fa43
Show file tree
Hide file tree
Showing 13 changed files with 152 additions and 154 deletions.
6 changes: 5 additions & 1 deletion cosmwasm/ucs01-relay-api/src/protocol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,11 @@ pub trait TransferProtocol {
let packet = Self::Packet::try_from(ibc_packet.clone().data)?;
// same branch as failure ack
let memo = Into::<String>::into(packet.extension().clone());
let ack = GenericAck::Err("giving up on forwarded packet after timeout".to_owned());
let ack = GenericAck::Err(
b"giving up on forwarded packet after timeout"
.to_vec()
.into(),
);
let refund_msgs = if let Some((ack_msgs, _)) = self.pfm_ack(
ack,
ibc_packet.clone(),
Expand Down
8 changes: 4 additions & 4 deletions cosmwasm/ucs01-relay-api/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use cosmwasm_schema::cw_serde;
use cosmwasm_std::{Binary, Coin, HexBinary, IbcEndpoint, StdError, Uint128, Uint256};
use ethabi::{ParamType, Token};

pub type GenericAck = Result<Binary, String>;
pub type GenericAck = Result<Binary, Binary>;

#[derive(thiserror::Error, Debug)]
pub enum EncodingError {
Expand Down Expand Up @@ -294,8 +294,8 @@ impl TryFrom<Binary> for Ucs01Ack {
impl From<Ucs01Ack> for GenericAck {
fn from(value: Ucs01Ack) -> Self {
match value {
Ucs01Ack::Failure => Err(Default::default()),
Ucs01Ack::Success => Ok(Default::default()),
Ucs01Ack::Failure => Err([0].into()),
Ucs01Ack::Success => Ok([1].into()),
}
}
}
Expand Down Expand Up @@ -333,7 +333,7 @@ impl From<Ics20Ack> for GenericAck {
fn from(value: Ics20Ack) -> Self {
match value {
Ics20Ack::Result(err) => Ok(err),
Ics20Ack::Error(err) => Err(err),
Ics20Ack::Error(err) => Err(err.into_bytes().into()),
}
}
}
Expand Down
28 changes: 12 additions & 16 deletions cosmwasm/ucs01-relay/src/protocol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -671,17 +671,15 @@ impl<'a> TransferProtocol for Ics20Protocol<'a> {
Vec::from_iter(
(!value_string.is_empty()).then_some((ATTR_SUCCESS, value_string)),
),
Acknowledgement {
response: Some(Response::Result(value.to_vec())),
},
value.to_vec(),
)
}
Err(error) => (
self.send_tokens_failure(sender, &String::new(), tokens)?,
Vec::from_iter((!error.is_empty()).then_some((ATTR_ERROR, error.clone()))),
Acknowledgement {
response: Some(Response::Error(error)),
},
Vec::from_iter(
(!error.is_empty()).then_some((ATTR_ERROR, error.clone().to_string())),
),
error.to_vec(),
),
};

Expand Down Expand Up @@ -709,7 +707,7 @@ impl<'a> TransferProtocol for Ics20Protocol<'a> {
let value = MsgWriteDeferredAck {
sender: self.self_addr().to_string(),
deferred_packet_info: Some(deferred_packet_into),
ack: Some(ack_def),
ack: ack_def,
}
.encode_to_vec();

Expand Down Expand Up @@ -1057,17 +1055,15 @@ impl<'a> TransferProtocol for Ucs01Protocol<'a> {
Vec::from_iter(
(!value_string.is_empty()).then_some((ATTR_SUCCESS, value_string)),
),
Acknowledgement {
response: Some(Response::Result(value.to_vec())),
},
value.to_vec(),
)
}
Err(error) => (
self.send_tokens_failure(sender, &String::new().as_bytes().into(), tokens)?,
Vec::from_iter((!error.is_empty()).then_some((ATTR_ERROR, error.clone()))),
Acknowledgement {
response: Some(Response::Error(error)),
},
Vec::from_iter(
(!error.is_empty()).then_some((ATTR_ERROR, error.clone().to_string())),
),
error.to_vec(),
),
};

Expand Down Expand Up @@ -1095,7 +1091,7 @@ impl<'a> TransferProtocol for Ucs01Protocol<'a> {
let value = MsgWriteDeferredAck {
sender: self.self_addr().to_string(),
deferred_packet_info: Some(deferred_packet_into),
ack: Some(ack_def),
ack: ack_def,
}
.encode_to_vec();

Expand Down
2 changes: 1 addition & 1 deletion generated/rust/protos/Cargo.toml

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

56 changes: 28 additions & 28 deletions generated/rust/protos/src/deferredack.v1beta1.rs

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

60 changes: 30 additions & 30 deletions generated/rust/protos/src/deferredack.v1beta1.tonic.rs

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

2 changes: 1 addition & 1 deletion uniond/proto/deferredack/v1beta1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ message MsgWriteDeferredAck {

string sender = 1 [ (gogoproto.moretags) = "yaml:\"sender\"" ];
DeferredPacketInfo deferredPacketInfo = 2;
ibc.core.channel.v1.Acknowledgement ack = 3;
bytes ack = 3;
}

message MsgWriteDeferredAckResponse {
Expand Down
4 changes: 0 additions & 4 deletions uniond/x/deferredack/bindings/message_plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,6 @@ func PerformWriteDeferredAck(deferredAckKeeper *deferredackkeeper.Keeper, ctx sd

msgWriteDeferredAck := deferredacktypes.NewMsgWriteDeferredAck(writeDeferredAck.DeferredPacketInfo, writeDeferredAck.Ack)

if err := msgWriteDeferredAck.Ack.ValidateBasic(); err != nil {
return nil, errorsmod.Wrap(err, "content of write msg deferred ack is invalid")
}

res, err := msgServer.WriteDeferredAck(ctx, msgWriteDeferredAck)

if err != nil {
Expand Down
4 changes: 1 addition & 3 deletions uniond/x/deferredack/bindings/types/msg.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package types

import (
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"

"union/x/deferredack/types"
)

Expand All @@ -19,5 +17,5 @@ type DeferredAckMsg struct {
// but this admin can be changed using the ChangeAdmin binding.
type WriteDeferredAck struct {
DeferredPacketInfo types.DeferredPacketInfo `json:"deferred_packet_info"`
Ack channeltypes.Acknowledgement
Ack types.Acknowledgement
}
2 changes: 1 addition & 1 deletion uniond/x/deferredack/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func NewKeeper(
}
}

func (k *Keeper) WriteDeferredAck(ctx sdk.Context, deferredPacketInfo *types.DeferredPacketInfo, ack channeltypes.Acknowledgement) error {
func (k *Keeper) WriteDeferredAck(ctx sdk.Context, deferredPacketInfo *types.DeferredPacketInfo, ack types.Acknowledgement) error {
_, chanCap, err := k.channelKeeper.LookupModuleByChannel(ctx, deferredPacketInfo.RefundPortId, deferredPacketInfo.RefundChannelId)

if err != nil {
Expand Down
Loading

0 comments on commit 6d4fa43

Please sign in to comment.