Skip to content

Commit

Permalink
use ChainId for chain_id type
Browse files Browse the repository at this point in the history
  • Loading branch information
rnbguy committed Jan 10, 2025
1 parent 7ced046 commit b8dcf58
Show file tree
Hide file tree
Showing 11 changed files with 31 additions and 21 deletions.
3 changes: 2 additions & 1 deletion light-client/ibc-client-starknet-types/src/client_state.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
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";

#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq, derive_more::From, HasField)]
pub struct StarknetClientState {
pub latest_height: Height,
pub chain_id: String,
pub chain_id: ChainId,
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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,
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand All @@ -26,7 +27,7 @@ where
CreateClientPayloadOptions = StarknetCreateClientPayloadOptions,
> + HasCreateClientPayloadType<Counterparty, CreateClientPayload = StarknetCreateClientPayload>
+ CanQueryChainStatus<ChainStatus = StarknetChainStatus>
+ HasChainId<ChainId = String>
+ HasChainId<ChainId = ChainId>
+ CanRaiseError<ClientError>,
{
async fn build_create_client_payload(
Expand All @@ -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(),
},
};

Expand Down
Original file line number Diff line number Diff line change
@@ -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<Chain: Async> ProvideChainIdType<Chain> for ProvideFeltChainId {
type ChainId = String;
type ChainId = ChainId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -30,7 +31,7 @@ impl<Chain, Counterparty> ClientStateFieldsGetter<Chain, Counterparty>
where
Chain: HasHeightType<Height = u64>
+ HasClientStateType<Counterparty, ClientState = WasmStarknetClientState>
+ HasChainIdType<ChainId = String>,
+ HasChainIdType<ChainId = ChainId>,
{
fn client_state_latest_height(client_state: &WasmStarknetClientState) -> u64 {
client_state.client_state.latest_height.revision_height()
Expand All @@ -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()
}
}
9 changes: 6 additions & 3 deletions relayer/crates/starknet-chain-context/src/contexts/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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<JsonRpcClient<HttpTransport>>,
pub account: SingleOwnerAccount<Arc<JsonRpcClient<HttpTransport>>, LocalWallet>,
pub ibc_client_contract_address: Option<Felt>,
Expand Down Expand Up @@ -248,7 +249,7 @@ impl JsonRpcClientGetter<StarknetChain> for StarknetChainContextComponents {
}

impl ChainIdGetter<StarknetChain> for StarknetChainContextComponents {
fn chain_id(chain: &StarknetChain) -> &String {
fn chain_id(chain: &StarknetChain) -> &ChainId {
&chain.chain_id
}
}
Expand All @@ -263,6 +264,7 @@ pub trait CanUseStarknetChain:
+ HasDefaultEncoding<AsFelt, Encoding = StarknetCairoEncoding>
+ HasCommitmentProofType<CommitmentProof = StarknetCommitmentProof>
+ HasAddressType<Address = Felt>
+ HasChainIdType<ChainId = ChainId>
+ HasSelectorType<Selector = Felt>
+ HasBlobType<Blob = Vec<Felt>>
+ HasCommitmentPrefixType<CommitmentPrefix = Vec<u8>>
Expand Down Expand Up @@ -371,6 +373,7 @@ pub trait CanUseCosmosChainWithStarknet: HasClientStateType<StarknetChain, Clien
+ HasConsensusStateType<StarknetChain, ConsensusState = CometConsensusState>
+ HasUpdateClientPayloadType<StarknetChain, UpdateClientPayload = CometUpdateHeader>
+ HasInitConnectionOptionsType<StarknetChain, InitConnectionOptions = CosmosInitConnectionOptions>
+ HasChainIdType<ChainId = ChainId>
+ HasCounterpartyMessageHeight<StarknetChain>
+ HasClientStateFields<StarknetChain>
+ CanQueryClientState<StarknetChain>
Expand Down
10 changes: 5 additions & 5 deletions relayer/crates/starknet-cli/src/contexts/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -137,7 +137,7 @@ delegate_components! {

delegate_components! {
StarknetParserComponents {
(QueryClientStateArgs, symbol!("chain_id")): ParseFromString<String>,
(QueryClientStateArgs, symbol!("chain_id")): ParseFromString<ChainId>,
(QueryClientStateArgs, symbol!("client_id")): ParseFromString<ClientId>,
(QueryClientStateArgs, symbol!("height")): ParseFromOptionalString<u64>,

Expand All @@ -146,13 +146,13 @@ delegate_components! {
(QueryConsensusStateArgs, symbol!("query_height")): ParseFromOptionalString<u64>,
(QueryConsensusStateArgs, symbol!("consensus_height")): ParseFromOptionalString<Height>,

(QueryChainStatusArgs, symbol!("chain_id")): ParseFromString<String>,
(QueryChainStatusArgs, symbol!("chain_id")): ParseFromString<ChainId>,

(QueryBalanceArgs, symbol!("chain_id")): ParseFromString<String>,
(QueryBalanceArgs, symbol!("chain_id")): ParseFromString<ChainId>,
(QueryBalanceArgs, symbol!("address")): ParseFromString<Felt>,
(QueryBalanceArgs, symbol!("denom")): ParseFromString<Felt>,

(UpdateClientArgs, symbol!("host_chain_id")): ParseFromString<String>,
(UpdateClientArgs, symbol!("host_chain_id")): ParseFromString<ChainId>,
(UpdateClientArgs, symbol!("client_id")): ParseFromString<ClientId>,
(UpdateClientArgs, symbol!("counterparty_client_id")): ParseFromString<CosmosClientId>,
(UpdateClientArgs, symbol!("target_height")): ParseFromOptionalString<Height>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ impl ChainDriverBuilder<StarknetBootstrap> 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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ impl RelayBuilder<StarknetBuilder, Index<0>, 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,
Expand Down
2 changes: 1 addition & 1 deletion relayer/crates/starknet-relayer/src/contexts/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ impl ChainBuilder<StarknetBuilder, Index<0>> for StarknetBuildComponents {
async fn build_chain(
build: &StarknetBuilder,
_index: PhantomData<Index<0>>,
_chain_id: &String,
_chain_id: &ChainId,
) -> Result<StarknetChain, HermesError> {
build.build_chain().await
}
Expand Down

0 comments on commit b8dcf58

Please sign in to comment.