diff --git a/light-client/ibc-client-starknet-types/src/client_state.rs b/light-client/ibc-client-starknet-types/src/client_state.rs index 990f75d3..1502c0f5 100644 --- a/light-client/ibc-client-starknet-types/src/client_state.rs +++ b/light-client/ibc-client-starknet-types/src/client_state.rs @@ -1,5 +1,6 @@ use cgp::prelude::*; use ibc_core::client::types::Height; +use ibc_core::host::types::identifiers::ChainId; pub const STARKNET_CLIENT_STATE_TYPE_URL: &str = "/StarknetClientState"; @@ -7,5 +8,5 @@ pub const STARKNET_CLIENT_STATE_TYPE_URL: &str = "/StarknetClientState"; #[derive(Clone, Debug, PartialEq, derive_more::From, HasField)] pub struct StarknetClientState { pub latest_height: Height, - pub chain_id: String, + pub chain_id: ChainId, } diff --git a/light-client/ibc-client-starknet-types/src/encoding/impls/client_state.rs b/light-client/ibc-client-starknet-types/src/encoding/impls/client_state.rs index 230c121e..2282d11d 100644 --- a/light-client/ibc-client-starknet-types/src/encoding/impls/client_state.rs +++ b/light-client/ibc-client-starknet-types/src/encoding/impls/client_state.rs @@ -8,7 +8,7 @@ use hermes_protobuf_encoding_components::components::{MutDecoderComponent, MutEn use hermes_protobuf_encoding_components::impls::encode_mut::proto_field::decode_required::DecodeRequiredProtoField; use hermes_protobuf_encoding_components::impls::encode_mut::proto_field::encode::EncodeLengthDelimitedProtoField; use ibc_core::client::types::Height; -use starknet::core::types::Felt; +use ibc_core::host::types::identifiers::ChainId; use crate::StarknetClientState; @@ -38,11 +38,14 @@ delegate_components! { } impl Transformer for EncodeStarknetClientState { - type From = Product![Height, Felt]; + type From = Product![Height, ChainId]; type To = StarknetClientState; fn transform(product![latest_height, chain_id]: Self::From) -> Self::To { - StarknetClientState { latest_height, chain_id: chain_id.to_string() } + StarknetClientState { + latest_height, + chain_id, + } } } diff --git a/light-client/ibc-client-starknet/src/client_state/execution.rs b/light-client/ibc-client-starknet/src/client_state/execution.rs index d8b72f75..6ee83a5e 100644 --- a/light-client/ibc-client-starknet/src/client_state/execution.rs +++ b/light-client/ibc-client-starknet/src/client_state/execution.rs @@ -61,7 +61,7 @@ where let new_client_state = ClientStateType { latest_height: header.height, - chain_id: "dummy".to_string(), // TODO: fill with correct info + chain_id: "dummy".parse().unwrap(), // TODO: fill with correct info } .into(); diff --git a/relayer/crates/starknet-chain-components/src/impls/payload_builders/create_client.rs b/relayer/crates/starknet-chain-components/src/impls/payload_builders/create_client.rs index 3906b9dc..e440835a 100644 --- a/relayer/crates/starknet-chain-components/src/impls/payload_builders/create_client.rs +++ b/relayer/crates/starknet-chain-components/src/impls/payload_builders/create_client.rs @@ -7,6 +7,7 @@ use hermes_relayer_components::chain::traits::types::create_client::{ }; use ibc::core::client::types::error::ClientError; use ibc::core::client::types::Height; +use ibc::core::host::types::identifiers::ChainId; use ibc::primitives::Timestamp; use crate::types::client_state::{StarknetClientState, WasmStarknetClientState}; @@ -26,7 +27,7 @@ where CreateClientPayloadOptions = StarknetCreateClientPayloadOptions, > + HasCreateClientPayloadType + CanQueryChainStatus - + HasChainId + + HasChainId + CanRaiseError, { async fn build_create_client_payload( @@ -41,7 +42,7 @@ where wasm_code_hash: create_client_options.wasm_code_hash.into(), client_state: StarknetClientState { latest_height: Height::new(0, 1).map_err(Chain::raise_error)?, - chain_id: chain.chain_id().to_string(), + chain_id: chain.chain_id().clone(), }, }; diff --git a/relayer/crates/starknet-chain-components/src/impls/types/chain_id.rs b/relayer/crates/starknet-chain-components/src/impls/types/chain_id.rs index e9a4593f..8b2d890c 100644 --- a/relayer/crates/starknet-chain-components/src/impls/types/chain_id.rs +++ b/relayer/crates/starknet-chain-components/src/impls/types/chain_id.rs @@ -1,8 +1,9 @@ use cgp::core::Async; use hermes_relayer_components::chain::traits::types::chain_id::ProvideChainIdType; +use ibc::core::host::types::identifiers::ChainId; pub struct ProvideFeltChainId; impl ProvideChainIdType for ProvideFeltChainId { - type ChainId = String; + type ChainId = ChainId; } diff --git a/relayer/crates/starknet-chain-components/src/impls/types/client.rs b/relayer/crates/starknet-chain-components/src/impls/types/client.rs index 25d9a0c3..385db5d0 100644 --- a/relayer/crates/starknet-chain-components/src/impls/types/client.rs +++ b/relayer/crates/starknet-chain-components/src/impls/types/client.rs @@ -7,6 +7,7 @@ use hermes_relayer_components::chain::traits::types::client_state::{ }; use hermes_relayer_components::chain::traits::types::consensus_state::ProvideConsensusStateType; use hermes_relayer_components::chain::traits::types::height::HasHeightType; +use ibc::core::host::types::identifiers::ChainId; use crate::types::client_state::WasmStarknetClientState; use crate::types::consensus_state::WasmStarknetConsensusState; @@ -30,7 +31,7 @@ impl ClientStateFieldsGetter where Chain: HasHeightType + HasClientStateType - + HasChainIdType, + + HasChainIdType, { fn client_state_latest_height(client_state: &WasmStarknetClientState) -> u64 { client_state.client_state.latest_height.revision_height() @@ -45,6 +46,6 @@ where } fn client_state_chain_id(client_state: &WasmStarknetClientState) -> Chain::ChainId { - client_state.client_state.chain_id.to_string() + client_state.client_state.chain_id.clone() } } diff --git a/relayer/crates/starknet-chain-context/src/contexts/chain.rs b/relayer/crates/starknet-chain-context/src/contexts/chain.rs index cca42b9e..c2b39420 100644 --- a/relayer/crates/starknet-chain-context/src/contexts/chain.rs +++ b/relayer/crates/starknet-chain-context/src/contexts/chain.rs @@ -6,6 +6,7 @@ use cgp::core::field::impls::use_field::WithField; use cgp::core::types::impls::WithType; use cgp::prelude::*; use hermes_cairo_encoding_components::types::as_felt::AsFelt; +use hermes_chain_type_components::traits::types::chain_id::HasChainIdType; use hermes_chain_type_components::traits::types::commitment_proof::HasCommitmentProofType; use hermes_chain_type_components::traits::types::height::HasHeightType; use hermes_chain_type_components::traits::types::message_response::HasMessageResponseType; @@ -153,7 +154,7 @@ use hermes_test_components::chain::traits::queries::balance::CanQueryBalance; use hermes_test_components::chain::traits::types::address::HasAddressType; use hermes_test_components::chain::traits::types::wallet::WalletTypeComponent; use ibc::core::channel::types::packet::Packet; -use ibc::core::host::types::identifiers::{PortId as IbcPortId, Sequence}; +use ibc::core::host::types::identifiers::{ChainId, PortId as IbcPortId, Sequence}; use starknet::accounts::SingleOwnerAccount; use starknet::core::types::Felt; use starknet::providers::jsonrpc::HttpTransport; @@ -167,7 +168,7 @@ use crate::impls::error::HandleStarknetChainError; #[derive(HasField, Clone)] pub struct StarknetChain { pub runtime: HermesRuntime, - pub chain_id: String, + pub chain_id: ChainId, pub rpc_client: Arc>, pub account: SingleOwnerAccount>, LocalWallet>, pub ibc_client_contract_address: Option, @@ -248,7 +249,7 @@ impl JsonRpcClientGetter for StarknetChainContextComponents { } impl ChainIdGetter for StarknetChainContextComponents { - fn chain_id(chain: &StarknetChain) -> &String { + fn chain_id(chain: &StarknetChain) -> &ChainId { &chain.chain_id } } @@ -263,6 +264,7 @@ pub trait CanUseStarknetChain: + HasDefaultEncoding + HasCommitmentProofType + HasAddressType
+ + HasChainIdType + HasSelectorType + HasBlobType> + HasCommitmentPrefixType> @@ -371,6 +373,7 @@ pub trait CanUseCosmosChainWithStarknet: HasClientStateType + HasUpdateClientPayloadType + HasInitConnectionOptionsType + + HasChainIdType + HasCounterpartyMessageHeight + HasClientStateFields + CanQueryClientState diff --git a/relayer/crates/starknet-cli/src/contexts/app.rs b/relayer/crates/starknet-cli/src/contexts/app.rs index a6f9c088..e4397d0f 100644 --- a/relayer/crates/starknet-cli/src/contexts/app.rs +++ b/relayer/crates/starknet-cli/src/contexts/app.rs @@ -64,7 +64,7 @@ use hermes_starknet_integration_tests::contexts::chain_driver::StarknetChainDriv use hermes_starknet_relayer::contexts::builder::StarknetBuilder; use hermes_test_components::chain_driver::traits::config::ConfigUpdater; use ibc::core::client::types::Height; -use ibc::core::host::types::identifiers::ClientId as CosmosClientId; +use ibc::core::host::types::identifiers::{ChainId, ClientId as CosmosClientId}; use starknet::core::types::Felt; use toml::to_string_pretty; @@ -137,7 +137,7 @@ delegate_components! { delegate_components! { StarknetParserComponents { - (QueryClientStateArgs, symbol!("chain_id")): ParseFromString, + (QueryClientStateArgs, symbol!("chain_id")): ParseFromString, (QueryClientStateArgs, symbol!("client_id")): ParseFromString, (QueryClientStateArgs, symbol!("height")): ParseFromOptionalString, @@ -146,13 +146,13 @@ delegate_components! { (QueryConsensusStateArgs, symbol!("query_height")): ParseFromOptionalString, (QueryConsensusStateArgs, symbol!("consensus_height")): ParseFromOptionalString, - (QueryChainStatusArgs, symbol!("chain_id")): ParseFromString, + (QueryChainStatusArgs, symbol!("chain_id")): ParseFromString, - (QueryBalanceArgs, symbol!("chain_id")): ParseFromString, + (QueryBalanceArgs, symbol!("chain_id")): ParseFromString, (QueryBalanceArgs, symbol!("address")): ParseFromString, (QueryBalanceArgs, symbol!("denom")): ParseFromString, - (UpdateClientArgs, symbol!("host_chain_id")): ParseFromString, + (UpdateClientArgs, symbol!("host_chain_id")): ParseFromString, (UpdateClientArgs, symbol!("client_id")): ParseFromString, (UpdateClientArgs, symbol!("counterparty_client_id")): ParseFromString, (UpdateClientArgs, symbol!("target_height")): ParseFromOptionalString, diff --git a/relayer/crates/starknet-integration-tests/src/contexts/bootstrap.rs b/relayer/crates/starknet-integration-tests/src/contexts/bootstrap.rs index a32efeeb..9873998d 100644 --- a/relayer/crates/starknet-integration-tests/src/contexts/bootstrap.rs +++ b/relayer/crates/starknet-integration-tests/src/contexts/bootstrap.rs @@ -138,7 +138,7 @@ impl ChainDriverBuilder for StarknetBootstrapComponents { let chain = StarknetChain { runtime: runtime.clone(), - chain_id: chain_id.to_string(), + chain_id: chain_id.to_string().parse().unwrap(), rpc_client, account, ibc_client_contract_address: None, diff --git a/relayer/crates/starknet-relayer/src/build/components/relay/build.rs b/relayer/crates/starknet-relayer/src/build/components/relay/build.rs index 9c761492..2e02cc33 100644 --- a/relayer/crates/starknet-relayer/src/build/components/relay/build.rs +++ b/relayer/crates/starknet-relayer/src/build/components/relay/build.rs @@ -13,7 +13,7 @@ impl RelayBuilder, Index<1>> for StarknetBuildComponen async fn build_relay( build: &StarknetBuilder, _index: PhantomData<(Index<0>, Index<1>)>, - _src_chain_id: &String, + _src_chain_id: &ChainId, dst_chain_id: &ChainId, src_client_id: &StarknetClientId, dst_client_id: &CosmosClientId, diff --git a/relayer/crates/starknet-relayer/src/contexts/builder.rs b/relayer/crates/starknet-relayer/src/contexts/builder.rs index 904621fb..75ba261c 100644 --- a/relayer/crates/starknet-relayer/src/contexts/builder.rs +++ b/relayer/crates/starknet-relayer/src/contexts/builder.rs @@ -88,7 +88,7 @@ impl ChainBuilder> for StarknetBuildComponents { async fn build_chain( build: &StarknetBuilder, _index: PhantomData>, - _chain_id: &String, + _chain_id: &ChainId, ) -> Result { build.build_chain().await }