From 4837e760f3bf3883c5aaed30d1578c83effa125f Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Tue, 21 Jan 2025 13:39:30 +0100 Subject: [PATCH 1/9] Add CwClientExecution trait to get Deps and DepsMut --- .../cw-context/src/context/client_ctx.rs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 723d572..144b357 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -2,6 +2,7 @@ //! traits for the `Context` type. use core::fmt::Display; +use cosmwasm_std::{Deps, DepsMut}; use ibc_client_wasm_types::client_state::ClientState as WasmClientState; use ibc_client_wasm_types::consensus_state::ConsensusState as WasmConsensusState; use ibc_core::client::context::{ClientExecutionContext, ClientValidationContext}; @@ -195,3 +196,24 @@ where Ok(()) } } + +pub trait CwClientValidation: ClientValidationContext { + fn cosmwasm_query_context(&self) -> Option>; + fn cosmwasm_execute_context(&self) -> Option>; +} + +pub trait CwClientExecution: CwClientValidation + ClientExecutionContext {} + +impl<'a, C: ClientType<'a>> CwClientValidation for Context<'a, C> +where + >::Error: Display, + >::Error: Display, +{ + fn cosmwasm_query_context(&self) -> Option> { + self.deps + } + + fn cosmwasm_execute_context(&self) -> Option> { + None + } +} From b544a9d369c35e6e51360a46c898860201fdac2f Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Tue, 21 Jan 2025 13:39:57 +0100 Subject: [PATCH 2/9] Clippy fix --- ibc-clients/ics07-tendermint/src/client_type.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ibc-clients/ics07-tendermint/src/client_type.rs b/ibc-clients/ics07-tendermint/src/client_type.rs index 0016572..b3cc259 100644 --- a/ibc-clients/ics07-tendermint/src/client_type.rs +++ b/ibc-clients/ics07-tendermint/src/client_type.rs @@ -6,7 +6,7 @@ use ibc_client_tendermint::consensus_state::ConsensusState; #[derive(Clone, Debug)] pub struct TendermintClient; -impl<'a> ClientType<'a> for TendermintClient { +impl ClientType<'_> for TendermintClient { type ClientState = ClientState; type ConsensusState = ConsensusState; } From 89e6b232cdabd2083ac4d2c7ea050f295fe69062 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Tue, 21 Jan 2025 12:01:34 -0800 Subject: [PATCH 3/9] fix: implement CwClientExecution for Context --- ibc-clients/cw-context/src/context/client_ctx.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 144b357..3399aa1 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -217,3 +217,10 @@ where None } } + +impl<'a, C: ClientType<'a>> CwClientExecution for Context<'a, C> +where + >::Error: Display, + >::Error: Display, +{ +} From 08038c5c1b83f21b460de2eccc2ea04d5af52116 Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Wed, 22 Jan 2025 11:36:11 +0100 Subject: [PATCH 4/9] Correctly implement cosmwasm_execute_context --- ibc-clients/cw-context/src/context/client_ctx.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 3399aa1..424b8d6 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -197,14 +197,14 @@ where } } -pub trait CwClientValidation: ClientValidationContext { +pub trait CwClientValidation<'a>: ClientValidationContext { fn cosmwasm_query_context(&self) -> Option>; - fn cosmwasm_execute_context(&self) -> Option>; + fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; } -pub trait CwClientExecution: CwClientValidation + ClientExecutionContext {} +pub trait CwClientExecution<'a>: CwClientValidation<'a> + ClientExecutionContext {} -impl<'a, C: ClientType<'a>> CwClientValidation for Context<'a, C> +impl<'a, C: ClientType<'a>> CwClientValidation<'a> for Context<'a, C> where >::Error: Display, >::Error: Display, @@ -213,12 +213,12 @@ where self.deps } - fn cosmwasm_execute_context(&self) -> Option> { - None + fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>> { + self.deps_mut.as_mut() } } -impl<'a, C: ClientType<'a>> CwClientExecution for Context<'a, C> +impl<'a, C: ClientType<'a>> CwClientExecution<'a> for Context<'a, C> where >::Error: Display, >::Error: Display, From 0f0fcea233f17806321d85692f75b6c7ded7c170 Mon Sep 17 00:00:00 2001 From: Ranadeep Biswas Date: Wed, 22 Jan 2025 12:29:44 +0100 Subject: [PATCH 5/9] lifetime renaming --- ibc-clients/cw-context/src/context/client_ctx.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 424b8d6..93daa46 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -198,7 +198,7 @@ where } pub trait CwClientValidation<'a>: ClientValidationContext { - fn cosmwasm_query_context(&self) -> Option>; + fn cosmwasm_query_context(&self) -> Option<&Deps<'a>>; fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; } @@ -209,8 +209,8 @@ where >::Error: Display, >::Error: Display, { - fn cosmwasm_query_context(&self) -> Option> { - self.deps + fn cosmwasm_query_context(&self) -> Option<&Deps<'a>> { + self.deps.as_ref() } fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>> { From ce1eb85311c7083775fcc594ecdc843038956a31 Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Wed, 22 Jan 2025 17:31:58 +0100 Subject: [PATCH 6/9] Add generate_sha256_digest to CwClientValidation --- ibc-clients/cw-context/src/context/client_ctx.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 424b8d6..a9b7524 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -2,7 +2,7 @@ //! traits for the `Context` type. use core::fmt::Display; -use cosmwasm_std::{Deps, DepsMut}; +use cosmwasm_std::{Checksum, Deps, DepsMut}; use ibc_client_wasm_types::client_state::ClientState as WasmClientState; use ibc_client_wasm_types::consensus_state::ConsensusState as WasmConsensusState; use ibc_core::client::context::{ClientExecutionContext, ClientValidationContext}; @@ -200,6 +200,7 @@ where pub trait CwClientValidation<'a>: ClientValidationContext { fn cosmwasm_query_context(&self) -> Option>; fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; + fn generate_sha256_digest(&self, data: &[u8]) -> Checksum; } pub trait CwClientExecution<'a>: CwClientValidation<'a> + ClientExecutionContext {} @@ -216,10 +217,15 @@ where fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>> { self.deps_mut.as_mut() } + + fn generate_sha256_digest(&self, data: &[u8]) -> Checksum { + Checksum::generate(data) + } } -impl<'a, C: ClientType<'a>> CwClientExecution<'a> for Context<'a, C> +impl<'a, C> CwClientExecution<'a> for Context<'a, C> where + C: ClientType<'a>, >::Error: Display, >::Error: Display, { From 6489743e3f3b7b3819b4abc6a38d9d142095d537 Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Wed, 22 Jan 2025 17:39:51 +0100 Subject: [PATCH 7/9] Use mutable self for generate_sha256_digest --- ibc-clients/cw-context/src/context/client_ctx.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 0f4ea61..32a8fcb 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -200,7 +200,7 @@ where pub trait CwClientValidation<'a>: ClientValidationContext { fn cosmwasm_query_context(&self) -> Option<&Deps<'a>>; fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; - fn generate_sha256_digest(&self, data: &[u8]) -> Checksum; + fn generate_sha256_digest(&mut self, data: &[u8]) -> Checksum; } pub trait CwClientExecution<'a>: CwClientValidation<'a> + ClientExecutionContext {} @@ -218,7 +218,7 @@ where self.deps_mut.as_mut() } - fn generate_sha256_digest(&self, data: &[u8]) -> Checksum { + fn generate_sha256_digest(&mut self, data: &[u8]) -> Checksum { Checksum::generate(data) } } From 9160e505a664aaa430f9c3cdc40e115d6d364ceb Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Wed, 22 Jan 2025 17:46:20 +0100 Subject: [PATCH 8/9] Revert "Use mutable self for generate_sha256_digest" This reverts commit 6489743e3f3b7b3819b4abc6a38d9d142095d537. --- ibc-clients/cw-context/src/context/client_ctx.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 32a8fcb..0f4ea61 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -200,7 +200,7 @@ where pub trait CwClientValidation<'a>: ClientValidationContext { fn cosmwasm_query_context(&self) -> Option<&Deps<'a>>; fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; - fn generate_sha256_digest(&mut self, data: &[u8]) -> Checksum; + fn generate_sha256_digest(&self, data: &[u8]) -> Checksum; } pub trait CwClientExecution<'a>: CwClientValidation<'a> + ClientExecutionContext {} @@ -218,7 +218,7 @@ where self.deps_mut.as_mut() } - fn generate_sha256_digest(&mut self, data: &[u8]) -> Checksum { + fn generate_sha256_digest(&self, data: &[u8]) -> Checksum { Checksum::generate(data) } } From ca28a50bf49637bf86ee4a0eeac7393e88cd343a Mon Sep 17 00:00:00 2001 From: Luca Joss Date: Mon, 27 Jan 2025 09:03:23 +0100 Subject: [PATCH 9/9] Apply GitHub suggestion --- ibc-clients/cw-context/src/context/client_ctx.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/ibc-clients/cw-context/src/context/client_ctx.rs index 0f4ea61..1e278d3 100644 --- a/ibc-clients/cw-context/src/context/client_ctx.rs +++ b/ibc-clients/cw-context/src/context/client_ctx.rs @@ -198,9 +198,9 @@ where } pub trait CwClientValidation<'a>: ClientValidationContext { - fn cosmwasm_query_context(&self) -> Option<&Deps<'a>>; - fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>>; - fn generate_sha256_digest(&self, data: &[u8]) -> Checksum; + fn deps(&self) -> Option<&Deps<'a>>; + fn deps_mut(&mut self) -> Option<&mut DepsMut<'a>>; + fn checksum(&self, data: &[u8]) -> Checksum; } pub trait CwClientExecution<'a>: CwClientValidation<'a> + ClientExecutionContext {} @@ -210,15 +210,15 @@ where >::Error: Display, >::Error: Display, { - fn cosmwasm_query_context(&self) -> Option<&Deps<'a>> { + fn deps(&self) -> Option<&Deps<'a>> { self.deps.as_ref() } - fn cosmwasm_execute_context(&mut self) -> Option<&mut DepsMut<'a>> { + fn deps_mut(&mut self) -> Option<&mut DepsMut<'a>> { self.deps_mut.as_mut() } - fn generate_sha256_digest(&self, data: &[u8]) -> Checksum { + fn checksum(&self, data: &[u8]) -> Checksum { Checksum::generate(data) } }