Skip to content

Commit

Permalink
Remove the use of relayer-all-in-one traits in relayer-cosmos cra…
Browse files Browse the repository at this point in the history
…te (#62)

* Refine trait bounds for extra chain components

* Ensure that CosmosChain implements UseExtraChainComponents

* Add event relayer dependencies to UseExtraChainComponents

* Separate out chain depedencies for event and packet relayers

* Add dependency closure for ibc message sender

* Simplify dependency closure for packet relayer

* Finish relay dependency closure for channel handshake relayer

* Finish chain depedency closure for channel handshake

* CosmosChain now implements channel handshake components

* Remove the use of OfaChainWrapper

* Remove the use of relayer-all-in-one traits in relayer-cosmos

* Fix clippy

* Disable solomachine tests

* Add back OfaChain implementation for CosmosChain to not break solomachine
  • Loading branch information
soareschen authored Oct 10, 2023
1 parent 4b1c302 commit 6daeb85
Show file tree
Hide file tree
Showing 45 changed files with 617 additions and 412 deletions.
12 changes: 6 additions & 6 deletions crates/relayer-all-in-one/src/one_for_all/impls/chain/types.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
use cgp_core::HasErrorType;
use ibc_relayer_components::chain::traits::components::packet_fields_reader::PacketFieldsReader;
use ibc_relayer_components::chain::traits::components::packet_from_write_ack_builder::PacketFromWriteAckBuilder;
use ibc_relayer_components::chain::traits::types::chain_id::{HasChainId, HasChainIdType};
use ibc_relayer_components::chain::traits::types::event::HasEventType;
use ibc_relayer_components::chain::traits::types::height::{CanIncrementHeight, HasHeightType};
use ibc_relayer_components::chain::traits::types::ibc::{
HasCounterpartyMessageHeight, HasIbcChainTypes,
};
use ibc_relayer_components::chain::traits::types::ibc_events::send_packet::HasSendPacketEvent;
use ibc_relayer_components::chain::traits::types::ibc_events::write_ack::{
CanBuildPacketFromWriteAckEvent, HasWriteAckEvent,
};
use ibc_relayer_components::chain::traits::types::ibc_events::write_ack::HasWriteAckEvent;
use ibc_relayer_components::chain::traits::types::message::{
CanEstimateMessageSize, HasMessageType,
};
Expand Down Expand Up @@ -191,13 +190,14 @@ where
}
}

impl<Chain, Counterparty> CanBuildPacketFromWriteAckEvent<OfaChainWrapper<Counterparty>>
for OfaChainWrapper<Chain>
impl<Chain, Counterparty>
PacketFromWriteAckBuilder<OfaChainWrapper<Chain>, OfaChainWrapper<Counterparty>>
for OfaComponents
where
Chain: OfaIbcChain<Counterparty>,
Counterparty: OfaChainTypes,
{
fn build_packet_from_write_ack_event(ack: &Self::WriteAckEvent) -> &Self::IncomingPacket {
fn build_packet_from_write_ack_event(ack: &Chain::WriteAckEvent) -> &Chain::IncomingPacket {
Chain::extract_packet_from_write_ack_event(ack)
}
}
Expand Down
2 changes: 2 additions & 0 deletions crates/relayer-components-extra/src/components/extra/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ use ibc_relayer_components::chain::traits::components::create_client_payload_bui
use ibc_relayer_components::chain::traits::components::message_sender::MessageSenderComponent;
use ibc_relayer_components::chain::traits::components::packet_commitments_querier::PacketCommitmentsQuerierComponent;
use ibc_relayer_components::chain::traits::components::packet_fields_reader::PacketFieldsReaderComponent;
use ibc_relayer_components::chain::traits::components::packet_from_write_ack_builder::PacketFromWriteAckBuilderComponent;
use ibc_relayer_components::chain::traits::components::receive_packet_message_builder::ReceivePacketMessageBuilderComponent;
use ibc_relayer_components::chain::traits::components::receive_packet_payload_builder::ReceivePacketPayloadBuilderComponent;
use ibc_relayer_components::chain::traits::components::received_packet_querier::ReceivedPacketQuerierComponent;
Expand Down Expand Up @@ -69,6 +70,7 @@ delegate_components!(
CreateClientPayloadBuilderComponent,
UpdateClientMessageBuilderComponent,
UpdateClientPayloadBuilderComponent,
PacketFromWriteAckBuilderComponent,
]:
DefaultChainComponents<BaseComponents>,
);

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
use ibc_relayer_components::chain::traits::types::channel::HasChannelHandshakePayloads;
use ibc_relayer_components::chain::traits::types::client_state::HasClientStateType;
use ibc_relayer_components::chain::traits::types::consensus_state::HasConsensusStateType;
use ibc_relayer_components::chain::traits::types::height::HasHeightType;
use ibc_relayer_components::chain::traits::types::ibc::HasIbcChainTypes;
use ibc_relayer_components::chain::traits::types::packets::ack::HasAckPacketPayload;
use ibc_relayer_components::chain::traits::types::packets::receive::HasReceivePacketPayload;
use ibc_relayer_components::chain::traits::types::packets::timeout::HasTimeoutUnorderedPacketPayload;
use ibc_relayer_components::chain::traits::types::update_client::HasUpdateClientPayload;

use crate::components::extra::closures::chain::channel_handshake::UseExtraChainComponentsForChannelHandshake;
use crate::components::extra::closures::chain::event_relayer::UseExtraChainComponentsForEventRelayer;
use crate::components::extra::closures::chain::packet_relayer::UseExtraChainComponentsForPacketRelayer;

pub trait CanUseExtraChainComponents<Counterparty>:
UseExtraChainComponentsForPacketRelayer<Counterparty>
+ UseExtraChainComponentsForEventRelayer<Counterparty>
+ UseExtraChainComponentsForChannelHandshake<Counterparty>
where
Counterparty: HasHeightType
+ HasClientStateType<Self>
+ HasConsensusStateType<Self>
+ HasIbcChainTypes<Self>
+ HasUpdateClientPayload<Self>
+ HasReceivePacketPayload<Self>
+ HasAckPacketPayload<Self>
+ HasTimeoutUnorderedPacketPayload<Self>
+ HasChannelHandshakePayloads<Self>,
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
use cgp_core::HasComponents;
use ibc_relayer_components::chain::traits::components::chain_status_querier::CanQueryChainHeight;
use ibc_relayer_components::chain::traits::components::channel_handshake_message_builder::{
CanBuildChannelHandshakeMessages, ChannelHandshakeMessageBuilder,
};
use ibc_relayer_components::chain::traits::components::channel_handshake_payload_builder::{
CanBuildChannelHandshakePayloads, ChannelHandshakePayloadBuilder,
};
use ibc_relayer_components::chain::traits::components::client_state_querier::CanQueryClientState;
use ibc_relayer_components::chain::traits::types::channel::{
HasChannelHandshakePayloads, HasInitChannelOptionsType,
};
use ibc_relayer_components::chain::traits::types::client_state::HasClientStateType;
use ibc_relayer_components::chain::traits::types::consensus_state::HasConsensusStateType;
use ibc_relayer_components::chain::traits::types::ibc::HasIbcChainTypes;
use ibc_relayer_components::chain::traits::types::ibc_events::channel::{
HasChannelOpenInitEvent, HasChannelOpenTryEvent,
};
use ibc_relayer_components::chain::traits::types::update_client::HasUpdateClientPayload;

use crate::components::extra::chain::ExtraChainComponents;
use crate::components::extra::closures::chain::message_sender::UseExtraChainComponentsForIbcMessageSender;

pub trait UseExtraChainComponentsForChannelHandshake<Counterparty>:
UseExtraChainComponentsForIbcMessageSender<Counterparty>
+ HasInitChannelOptionsType<Counterparty>
+ HasChannelOpenTryEvent<Counterparty>
+ CanQueryClientState<Counterparty>
+ CanBuildChannelHandshakePayloads<Counterparty>
+ CanBuildChannelHandshakeMessages<Counterparty>
+ HasChannelOpenInitEvent<Counterparty>
+ CanQueryChainHeight
where
Counterparty: HasClientStateType<Self>
+ HasConsensusStateType<Self>
+ HasIbcChainTypes<Self>
+ HasUpdateClientPayload<Self>
+ HasChannelHandshakePayloads<Self>,
{
}

impl<Chain, Counterparty, ChainComponents> UseExtraChainComponentsForChannelHandshake<Counterparty>
for Chain
where
Chain: HasChannelOpenInitEvent<Counterparty>
+ HasChannelOpenTryEvent<Counterparty>
+ HasInitChannelOptionsType<Counterparty>
+ HasChannelHandshakePayloads<Counterparty>
+ UseExtraChainComponentsForIbcMessageSender<Counterparty>
+ HasComponents<Components = ExtraChainComponents<ChainComponents>>,
Counterparty: HasClientStateType<Chain>
+ HasConsensusStateType<Chain>
+ HasIbcChainTypes<Chain>
+ HasUpdateClientPayload<Chain>
+ HasChannelHandshakePayloads<Chain>,
ChainComponents: ChannelHandshakePayloadBuilder<Chain, Counterparty>
+ ChannelHandshakeMessageBuilder<Chain, Counterparty>,
Chain::Height: Clone,
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use cgp_core::{HasComponents, HasErrorType};
use ibc_relayer_components::chain::traits::components::counterparty_chain_id_querier::{
CanQueryCounterpartyChainId, CounterpartyChainIdQuerier,
};
use ibc_relayer_components::chain::traits::components::packet_from_write_ack_builder::{
CanBuildPacketFromWriteAck, PacketFromWriteAckBuilder,
};
use ibc_relayer_components::chain::traits::logs::packet::CanLogChainPacket;
use ibc_relayer_components::chain::traits::types::chain_id::HasChainId;
use ibc_relayer_components::chain::traits::types::client_state::HasClientStateType;
use ibc_relayer_components::chain::traits::types::ibc::HasIbcChainTypes;
use ibc_relayer_components::chain::traits::types::ibc_events::send_packet::HasSendPacketEvent;
use ibc_relayer_components::chain::traits::types::ibc_events::write_ack::HasWriteAckEvent;
use ibc_relayer_components::logger::traits::has_logger::HasLoggerType;

use crate::components::extra::chain::ExtraChainComponents;

pub trait UseExtraChainComponentsForEventRelayer<Counterparty>:
HasChainId
+ HasLoggerType
+ HasSendPacketEvent<Counterparty>
+ CanLogChainPacket<Counterparty>
+ CanQueryCounterpartyChainId<Counterparty>
+ CanBuildPacketFromWriteAck<Counterparty>
where
Counterparty: HasIbcChainTypes<Self>,
{
}

impl<Chain, Counterparty, ChainComponents> UseExtraChainComponentsForEventRelayer<Counterparty>
for Chain
where
Chain: HasErrorType
+ HasChainId
+ HasLoggerType
+ HasSendPacketEvent<Counterparty>
+ CanLogChainPacket<Counterparty>
+ HasIbcChainTypes<Counterparty>
+ HasClientStateType<Counterparty>
+ HasWriteAckEvent<Counterparty>
+ HasComponents<Components = ExtraChainComponents<ChainComponents>>,
Counterparty: HasIbcChainTypes<Chain>,
ChainComponents: CounterpartyChainIdQuerier<Chain, Counterparty>
+ PacketFromWriteAckBuilder<Chain, Counterparty>,
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
use cgp_core::HasComponents;
use ibc_relayer_components::chain::traits::components::chain_status_querier::{
CanQueryChainStatus, ChainStatusQuerier,
};
use ibc_relayer_components::chain::traits::components::client_state_querier::{
CanQueryClientState, ClientStateQuerier,
};
use ibc_relayer_components::chain::traits::components::consensus_state_height_querier::{
CanQueryConsensusStateHeight, ConsensusStateHeightQuerier,
};
use ibc_relayer_components::chain::traits::components::consensus_state_querier::{
CanQueryConsensusState, ConsensusStateQuerier,
};
use ibc_relayer_components::chain::traits::components::message_sender::{
CanSendMessages, MessageSender,
};
use ibc_relayer_components::chain::traits::components::update_client_message_builder::{
CanBuildUpdateClientMessage, UpdateClientMessageBuilder,
};
use ibc_relayer_components::chain::traits::components::update_client_payload_builder::{
CanBuildUpdateClientPayload, UpdateClientPayloadBuilder,
};
use ibc_relayer_components::chain::traits::types::chain_id::HasChainId;
use ibc_relayer_components::chain::traits::types::client_state::{
HasClientStateFields, HasClientStateType,
};
use ibc_relayer_components::chain::traits::types::consensus_state::HasConsensusStateType;
use ibc_relayer_components::chain::traits::types::height::CanIncrementHeight;
use ibc_relayer_components::chain::traits::types::ibc::{
HasCounterpartyMessageHeight, HasIbcChainTypes,
};
use ibc_relayer_components::chain::traits::types::status::HasChainStatusType;
use ibc_relayer_components::chain::traits::types::update_client::HasUpdateClientPayload;
use ibc_relayer_components::logger::traits::has_logger::HasLoggerType;
use ibc_relayer_components::runtime::traits::runtime::HasRuntime;

use crate::components::extra::chain::ExtraChainComponents;
use crate::telemetry::traits::metrics::HasBasicMetrics;
use crate::telemetry::traits::telemetry::HasTelemetry;

pub trait UseExtraChainComponentsForIbcMessageSender<Counterparty>:
HasRuntime
+ HasChainId
+ HasLoggerType
+ CanIncrementHeight
+ CanSendMessages
+ CanQueryChainStatus
+ HasConsensusStateType<Counterparty>
+ HasClientStateFields<Counterparty>
+ HasCounterpartyMessageHeight<Counterparty>
+ CanQueryClientState<Counterparty>
+ CanQueryConsensusState<Counterparty>
+ CanQueryConsensusStateHeight<Counterparty>
+ CanBuildUpdateClientPayload<Counterparty>
+ CanBuildUpdateClientMessage<Counterparty>
where
Counterparty: HasClientStateType<Self>
+ HasConsensusStateType<Self>
+ HasIbcChainTypes<Self>
+ HasUpdateClientPayload<Self>,
{
}

impl<Chain, Counterparty, ChainComponents> UseExtraChainComponentsForIbcMessageSender<Counterparty>
for Chain
where
Chain: HasRuntime
+ HasChainId
+ HasLoggerType
+ CanIncrementHeight
+ HasTelemetry
+ HasChainStatusType
+ HasConsensusStateType<Counterparty>
+ HasClientStateFields<Counterparty>
+ HasCounterpartyMessageHeight<Counterparty>
+ HasIbcChainTypes<Counterparty>
+ HasClientStateType<Counterparty>
+ HasUpdateClientPayload<Counterparty>
+ HasComponents<Components = ExtraChainComponents<ChainComponents>>,
Counterparty: HasIbcChainTypes<Chain>
+ HasClientStateType<Chain>
+ HasConsensusStateType<Chain>
+ HasUpdateClientPayload<Chain>,
Chain::Telemetry: HasBasicMetrics,
ChainComponents: MessageSender<Chain>
+ ChainStatusQuerier<Chain>
+ ConsensusStateQuerier<Chain, Counterparty>
+ ClientStateQuerier<Chain, Counterparty>
+ ConsensusStateHeightQuerier<Chain, Counterparty>
+ UpdateClientPayloadBuilder<Chain, Counterparty>
+ UpdateClientMessageBuilder<Chain, Counterparty>,
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pub mod all;
pub mod channel_handshake;
pub mod event_relayer;
pub mod message_sender;
pub mod packet_relayer;
Loading

0 comments on commit 6daeb85

Please sign in to comment.