Skip to content

Commit 06edc0b

Browse files
fix: introduce AcknowledgementStatus instead
1 parent 3087ee2 commit 06edc0b

File tree

5 files changed

+32
-10
lines changed

5 files changed

+32
-10
lines changed

crates/ibc/src/applications/interchain_accounts/controller/callback.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::applications::interchain_accounts::metadata::Metadata;
66
use crate::applications::interchain_accounts::port::default_host_port_id;
77
use crate::applications::interchain_accounts::port::verify_controller_port_id_prefix;
88
use crate::core::ics04_channel::acknowledgement::Acknowledgement;
9-
use crate::core::ics04_channel::acknowledgement::AcknowledgementResult;
9+
use crate::core::ics04_channel::acknowledgement::AcknowledgementStatus;
1010
use crate::core::ics04_channel::channel::Counterparty;
1111
use crate::core::ics04_channel::channel::Order;
1212
use crate::core::ics04_channel::channel::State;
@@ -265,7 +265,10 @@ pub fn on_recv_packet_execute(
265265
) -> (ModuleExtras, Acknowledgement) {
266266
(
267267
ModuleExtras::empty(),
268-
AcknowledgementResult::success("").into(), // TODO: return error
268+
AcknowledgementStatus::error(
269+
InterchainAccountError::not_allowed("packet cannot be received").into(),
270+
)
271+
.into(),
269272
)
270273
}
271274

crates/ibc/src/applications/interchain_accounts/error.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::core::ics04_channel::acknowledgement::StatusValue;
12
use crate::core::ics04_channel::error::ChannelError;
23
use crate::core::ContextError;
34
use crate::prelude::*;
@@ -116,6 +117,12 @@ impl From<ChannelError> for InterchainAccountError {
116117
}
117118
}
118119

120+
impl From<InterchainAccountError> for StatusValue {
121+
fn from(err: InterchainAccountError) -> Self {
122+
StatusValue::new(err.to_string()).expect("error message cannot be empty")
123+
}
124+
}
125+
119126
#[derive(Clone, Debug)]
120127
pub enum Code {
121128
/// cannot be empty!

crates/ibc/src/applications/interchain_accounts/host/callback.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22
33
use alloc::string::ToString;
44

5+
use crate::applications::interchain_accounts::ack_success;
56
use crate::applications::interchain_accounts::context::InterchainAccountExecutionContext;
67
use crate::applications::interchain_accounts::context::InterchainAccountValidationContext;
78
use crate::applications::interchain_accounts::error::InterchainAccountError;
89
use crate::applications::interchain_accounts::metadata::Metadata;
910
use crate::applications::interchain_accounts::port::default_host_port_id;
1011
use crate::core::ics04_channel::acknowledgement::Acknowledgement;
11-
use crate::core::ics04_channel::acknowledgement::AcknowledgementResult;
12+
use crate::core::ics04_channel::acknowledgement::AcknowledgementStatus;
1213
use crate::core::ics04_channel::channel::Counterparty;
1314
use crate::core::ics04_channel::channel::Order;
1415
use crate::core::ics04_channel::packet::Packet;
@@ -280,31 +281,31 @@ pub fn on_recv_packet_execute(
280281
Err(e) => {
281282
return (
282283
ModuleExtras::empty(),
283-
AcknowledgementResult::from_error(e).into(),
284+
AcknowledgementStatus::error(e.into()).into(),
284285
)
285286
}
286287
};
287288

288289
if !params.host_enabled {
289290
return (
290291
ModuleExtras::empty(),
291-
AcknowledgementResult::from_error(InterchainAccountError::not_supported(
292-
"host chain is not enabled.",
293-
))
292+
AcknowledgementStatus::error(
293+
InterchainAccountError::not_supported("host chain is not enabled.").into(),
294+
)
294295
.into(),
295296
);
296297
}
297298

298299
if let Err(e) = on_recv_packet(ctx_b, packet) {
299300
return (
300301
ModuleExtras::empty(),
301-
AcknowledgementResult::from_error(e).into(),
302+
AcknowledgementStatus::error(e.into()).into(),
302303
);
303304
}
304305

305306
(
306307
ModuleExtras::empty(),
307-
AcknowledgementResult::success("").into(), //TODO: what's the result string?
308+
AcknowledgementStatus::success(ack_success()).into(),
308309
)
309310
}
310311

crates/ibc/src/applications/interchain_accounts/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,14 @@ pub const MODULE_ID_STR: &str = "interchainaccounts";
2525

2626
/// ICS27 application current version.
2727
pub const VERSION: &str = "ics27-1";
28+
29+
/// The successful string used for creating an acknowledgement status,
30+
/// equivalent to `base64::encode(0x01)`.
31+
pub const ACK_SUCCESS: &str = "AQ=="; //TODO: what's the result string?
32+
33+
use crate::core::ics04_channel::acknowledgement::StatusValue;
34+
35+
/// Returns a successful acknowledgement status for the interchain accounts application.
36+
pub fn ack_success() -> StatusValue {
37+
StatusValue::new(ACK_SUCCESS).expect("ack status value is never supposed to be empty")
38+
}

crates/ibc/src/applications/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
#[cfg(feature = "serde")]
44
pub mod transfer;
55

6-
#[cfg(feature = "interchain-accounts")]
6+
// #[cfg(feature = "interchain-accounts")]
77
pub mod interchain_accounts;

0 commit comments

Comments
 (0)