Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement abstract and mock IBC v2 components #445

Merged
merged 163 commits into from
Oct 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
101d9bd
Add hermes-ibc-components crate
soareschen Sep 30, 2024
5646045
Scaffold IBC v2 packet types
soareschen Sep 30, 2024
45a6081
Scaffold packet handlers
soareschen Sep 30, 2024
19bb80f
Draft outgoing packet handlers
soareschen Sep 30, 2024
6cd1029
Draft packet ack handlers
soareschen Sep 30, 2024
8730ac9
Rename PacketPayload to PacketEntry
soareschen Sep 30, 2024
093d5bc
Draft commitment verification
soareschen Sep 30, 2024
73620bc
Draft packet commitment value builder
soareschen Sep 30, 2024
2b7fdcc
Add HasPacketType
soareschen Sep 30, 2024
2c70244
Draft more commitment verification methods
soareschen Sep 30, 2024
2682479
Implement StorePacketAck and define CanQueryConsensusState
soareschen Sep 30, 2024
7d14ee4
Implement VerifySendPacketCommitmentProof
soareschen Sep 30, 2024
7c9a625
Replace RawPacket-Entry/Ack with AnyApp
soareschen Sep 30, 2024
5a40f8d
Implement DisallowDoubleReceive
soareschen Sep 30, 2024
bd7cb17
Implement HandleIncomingPacketEntries
soareschen Sep 30, 2024
1a184a5
Define IbcChainComponents with IncomingPacketHandlerComponent
soareschen Sep 30, 2024
ddfbde2
Implement DisallowTimedOutIncomingPacket
soareschen Sep 30, 2024
746c13c
Generalize IncomingPacketHandler to work with generic App instead of …
soareschen Oct 1, 2024
fdb528a
Swap the generic order from <App, Counterparty> to <Counterparty, App>
soareschen Oct 1, 2024
2810e25
Use HasCommitmentProofType from chain-type-components
soareschen Oct 1, 2024
7f8b563
WIP
soareschen Oct 1, 2024
240a38d
Minor refactoring
soareschen Oct 1, 2024
49fbc19
Add IgnoreDoubleReceive
soareschen Oct 1, 2024
698d68f
Implement EncodeAndHandlePacketEntry
soareschen Oct 1, 2024
cccf58c
Implement WrapHandlerErrorAsAck
soareschen Oct 1, 2024
1418e11
Add IbcTransaction type
soareschen Oct 1, 2024
34c1764
Draft IBC transaction and message handlers
soareschen Oct 1, 2024
a219a0c
Add CanAllocatePacketNonce
soareschen Oct 1, 2024
3570425
Implement CommitSendPacket
soareschen Oct 1, 2024
eef6493
Add CanQuerySendPacketCommitment
soareschen Oct 1, 2024
dff23a6
Make PacketAck singular, and add PacketEntryAck as sub-list
soareschen Oct 1, 2024
7a53e04
Make WrapHandlerErrorAsAck a IncomingPacketHandler
soareschen Oct 1, 2024
de9c353
Add <App> generic to FullIncomingPacketHandler
soareschen Oct 1, 2024
2115cdb
Add WrapHandlerErrorAsAck to FullIncomingPacketHandler
soareschen Oct 1, 2024
d34acd6
Add PacketAck getter and builder
soareschen Oct 1, 2024
deadecf
Add CanBuildPacket
soareschen Oct 1, 2024
a13a063
Implement HandleIbcTransactionMessages
soareschen Oct 1, 2024
216d097
Rename ClientId to ChannelId
soareschen Oct 1, 2024
1960482
Move builder traits to builder:: module
soareschen Oct 2, 2024
15fca05
Add IbcMessageHeader type
soareschen Oct 2, 2024
eec58a9
Implement ValidateHeaderAppIds
soareschen Oct 2, 2024
2887de2
Implement ConvertAndHandleIbcMessage
soareschen Oct 2, 2024
c7ce7e9
Implement IbcMessageHandler and IncomingPacketEntryHandler for UseCon…
soareschen Oct 2, 2024
ae868d5
Rename HasPacketEntryHeaderType to HasPayloadType
soareschen Oct 2, 2024
5e27d37
Rename HasPacketDataType to HasPayloadDataType
soareschen Oct 2, 2024
bec1e7f
Rename CanHandleIncomingPacketEntry to CanHandleIncomingPayload
soareschen Oct 2, 2024
aae0298
Rename and redesign ack handlers
soareschen Oct 2, 2024
11255be
Replace more use of "entries"
soareschen Oct 2, 2024
04cdc4c
Remove remaining use of "entries"
soareschen Oct 2, 2024
403cdf2
Move message and transaction handlers to outgoing::module
soareschen Oct 2, 2024
1ba87ea
Add InHandler to HandleIbcTransactionMessages
soareschen Oct 2, 2024
36621fd
Add new ibc-token-transfer-components crate
soareschen Oct 2, 2024
ce01160
Move HasAddressType and HasDenomType to chain-type-components
soareschen Oct 2, 2024
a48851e
Add HasQuantityType
soareschen Oct 2, 2024
a427510
Draft IBC transfer payload fields
soareschen Oct 2, 2024
1ff8375
Add HasAmountType
soareschen Oct 2, 2024
610fe00
Draft mint traits
soareschen Oct 2, 2024
f4f3b6d
Draft mint registry
soareschen Oct 2, 2024
7cecb5f
Draft implement HandleIncomingIbcTransfer
soareschen Oct 2, 2024
6caf5ac
Check and update escrowed aamount for HandleIncomingIbcTransfer
soareschen Oct 2, 2024
db4fea7
Implement DispatchMintOrUnescrow
soareschen Oct 3, 2024
3d191da
Use CanParseIncomingTransferData in DispatchMintOrUnescrow
soareschen Oct 3, 2024
7b7cc83
Implement HandleIncomingMintTransfer
soareschen Oct 3, 2024
7933db0
Implement HandleIncomingUnescrowTransfer
soareschen Oct 3, 2024
939ee85
Remove HasIbcTransferAmount
soareschen Oct 3, 2024
9a3b422
Drafting SendIbcTransfer
soareschen Oct 3, 2024
0a85f5b
Finish implementing SendIbcTransfer
soareschen Oct 3, 2024
1ee0241
Add ibc-mock-chain crate
soareschen Oct 4, 2024
6c60191
Implement ProvideStringError
soareschen Oct 4, 2024
a20f3e5
Implement MockChain with HasErrorType
soareschen Oct 4, 2024
8f41ed4
Implement HasAppIdType for MockChain
soareschen Oct 4, 2024
b5d6c86
Implement HasChannelId for MockChain
soareschen Oct 4, 2024
ae0720b
Implement HasPacketHeaderType and HasPacketChannelIds
soareschen Oct 4, 2024
d290ec6
Implement HasPacketNonce
soareschen Oct 4, 2024
19553a8
Use upstream FieldGetter
soareschen Oct 4, 2024
d4a738c
Implement HasPacketPayloads
soareschen Oct 4, 2024
debfa8a
Implement HasPacketTimeout
soareschen Oct 4, 2024
59cbaff
Implement HasPayloadAppIds
soareschen Oct 4, 2024
1ce0014
Implement HasIbcMessageAppIds
soareschen Oct 4, 2024
b15da47
Use delegated type map for PacketData
soareschen Oct 4, 2024
9f0dcfa
Add Transfer PacketData types
soareschen Oct 4, 2024
6015f73
Implement HasDenomType and HasAmountType
soareschen Oct 4, 2024
2939763
Implement PacketData types for IBC transfer
soareschen Oct 4, 2024
52c6c5e
Add tagging to MockChain
soareschen Oct 4, 2024
c03c9e8
Add tags to all mock values
soareschen Oct 4, 2024
745f934
Add back phantom Chain generic to IbcTransferUnescrowPacketData
soareschen Oct 4, 2024
5302354
Implement custom provider types for ProvidePayloadDataType
soareschen Oct 6, 2024
35eebe1
Add custom providers for other generic IBC types
soareschen Oct 6, 2024
66c99d9
Use "Use" instead of "Provide" for name of type providers
soareschen Oct 6, 2024
e5b7c51
Rename DelegateTo to UseDelegate
soareschen Oct 6, 2024
f3df1d3
Add UseTaggedType to simplify provider impl for tagged types
soareschen Oct 6, 2024
a41a747
imp: remove ack from incoming packet handlers
Farhad-Shabani Oct 10, 2024
47d5ac0
chore: remove further acks
Farhad-Shabani Oct 10, 2024
9be02f1
chore: remove packet ack types
Farhad-Shabani Oct 10, 2024
b53558e
Add explicit tags to MockChain
soareschen Oct 13, 2024
2350828
Add state fields to mock chain
soareschen Oct 15, 2024
b778bfa
Implement clone for MockChain
soareschen Oct 15, 2024
4ff4c4e
Remove HasPayloadAckType
soareschen Oct 15, 2024
7004b24
Add HasPayloadType and CanSendPacket
soareschen Oct 15, 2024
22b4374
Use IbcPayload inside IbcPacket
soareschen Oct 15, 2024
cb2daac
Make IbcMessage handler return payload directly
soareschen Oct 15, 2024
6ff366c
Implement AllocateNonceAndBuildPacket
soareschen Oct 15, 2024
0119ad8
Implement CommitSendPacket
soareschen Oct 15, 2024
499746f
Implement HandleMessagesAndSendPacket
soareschen Oct 15, 2024
7c2a728
Remove transaction handlers replaced by packet senders
soareschen Oct 15, 2024
71af887
Make IbcMessageHandler return payload header and data separately again
soareschen Oct 15, 2024
276f583
Implement CheckSendPayloadPermission
soareschen Oct 15, 2024
a4475c0
Use chain-level caller instead of putting it in ibc-transaction
soareschen Oct 15, 2024
8bf1384
Add CanQueryClientIdFromChannelId
soareschen Oct 15, 2024
d099d87
Move packet nonce field to packet instead of packet header
soareschen Oct 16, 2024
5303914
Replace IbcTransactionHeader with PacketHeader
soareschen Oct 16, 2024
6571420
Rename MockChainFields to MockChainState
soareschen Oct 16, 2024
d89eb6d
Add some documentation for HasPacketType
soareschen Oct 16, 2024
d4329a4
Simplify implementation of token transfer dispatcher
soareschen Oct 16, 2024
3a0f71a
Add direct tags to mock denom and amount
soareschen Oct 16, 2024
e964565
Put MockChainState behind Mutex
soareschen Oct 16, 2024
96fafda
Add mock balances field
soareschen Oct 16, 2024
c38f7b5
Implement mint on mock chain
soareschen Oct 16, 2024
7ea325d
Implement remaining TokenTransfer methods
soareschen Oct 16, 2024
7976806
Implement mint registry methods
soareschen Oct 16, 2024
2bbd82e
Fix clippy
soareschen Oct 16, 2024
ec824ed
Implement amount methods
soareschen Oct 16, 2024
215ff8b
Implement CanHandleIncomingPayload for IbcTransferMintApp
soareschen Oct 16, 2024
9e7b8fa
Fix clippy
soareschen Oct 16, 2024
46e1620
Implement UnescrowTokenRegistrar
soareschen Oct 17, 2024
92edc2f
Implement EscrowTokenRegistrar
soareschen Oct 17, 2024
098a2a7
Add documentation for escrow registry
soareschen Oct 17, 2024
b8a8fb5
Remove UnescrowAmountExceeded error
soareschen Oct 17, 2024
4c9d729
Implement CanHandleIncomingPayload for IbcTransferUnescrowApp and Ibc…
soareschen Oct 17, 2024
21aa473
Implement CanHandleIncomingPayload for AnyApp
soareschen Oct 17, 2024
d258b26
Use HandleIncomingPacketPayloads
soareschen Oct 17, 2024
346e0f7
Refactor commitment path construction
soareschen Oct 17, 2024
a0f9be2
Implement commitment path builders
soareschen Oct 17, 2024
ffcba28
Implement HasConsensusStateType
soareschen Oct 17, 2024
3bb8d25
Implement commitment value builders
soareschen Oct 17, 2024
7825cd7
Implement ConsensusStateQuerier
soareschen Oct 17, 2024
809036e
Implement CommitmentVerifier
soareschen Oct 17, 2024
8a08e2f
Implement CommitmentStorage
soareschen Oct 17, 2024
26676da
Use CommitReceivePacket
soareschen Oct 17, 2024
1d45ce9
Add generic tag parameter to commitment type traits
soareschen Oct 17, 2024
3dacb39
Use different commitment types for mock send and receive packet
soareschen Oct 17, 2024
1f9292d
Implement HasCommitmentProofHeight
soareschen Oct 17, 2024
cdc2273
Implement ClientIdFromChannelIdQuerier
soareschen Oct 17, 2024
867532f
Use VerifySendPacketCommitmentProof
soareschen Oct 17, 2024
43dc412
Implement HasPacketReceivedQuerier
soareschen Oct 17, 2024
afe5690
Use DisallowDoubleReceive
soareschen Oct 17, 2024
566cb33
Implement time methods
soareschen Oct 17, 2024
5e10163
Use FullIncomingPacketHandler directly
soareschen Oct 17, 2024
8a47873
Reformat imports
soareschen Oct 17, 2024
ad0ca2c
Fix clippy
soareschen Oct 17, 2024
35373cc
Implement CanAllocatePacketNonce
soareschen Oct 17, 2024
5b9c584
Implement CanBuildPacket and CanSendPacket
soareschen Oct 17, 2024
7b76d64
Implement transfer payload builders
soareschen Oct 18, 2024
79cd63a
Implement HasIbcMessageType
soareschen Oct 18, 2024
c26a2af
Refine component wiring
soareschen Oct 18, 2024
4f8d4d9
Wire up IBC message handler
soareschen Oct 18, 2024
4fdbfaf
Use &mut self for handlers for state update
soareschen Oct 18, 2024
ac9abd8
Remove mutex and update mock chain state directly
soareschen Oct 18, 2024
a9068f0
Implement HasCaller
soareschen Oct 18, 2024
20ba2c3
Implement message handler for IbcTransferApp
soareschen Oct 18, 2024
fc001bb
Update cgp
soareschen Oct 21, 2024
37a729a
Merge branch 'main' into ibc-v2
soareschen Oct 21, 2024
fd5fffd
Add changelog
soareschen Oct 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## v0.2.0 (pre-release)

- Implement abstract and mock IBC v2 components - [#445](https://github.com/informalsystems/hermes-sdk/pull/445)
- Rename `DelegateTo` to `UseDelegate`.
- Move the following chain trait types to `hermes-chain-type-components`: `HasAddressType`, `HasAmountType`,
`HasDenomType`, `HasCommitmentPrefixType`.

- CGP Refactoring [#440](https://github.com/informalsystems/hermes-sdk/pull/440)
- Update `cgp` version to include the addition of `cgp-type`. [cgp#23](https://github.com/contextgeneric/cgp/pull/23)
- Use `DelegateTo` from `cgp-component` instead of custom constructs to implement delegated chain implementations.
Expand Down
62 changes: 47 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ members = [

"tools/integration-test",
"tools/test-framework",

"crates/ibc/ibc-components",
"crates/ibc/ibc-token-transfer-components",
"crates/ibc/ibc-mock-chain",
]

[workspace.package]
Expand Down Expand Up @@ -157,6 +161,10 @@ hermes-wasm-test-components = { version = "0.1.0" }
hermes-solomachine-chain-components = { version = "0.1.0" }
hermes-solomachine-relayer = { version = "0.1.0" }

hermes-ibc-components = { version = "0.1.0" }
hermes-ibc-token-transfer-components = { version = "0.1.0" }
hermes-ibc-mock-chain = { version = "0.1.0" }

[patch.crates-io]
cgp = { git = "https://github.com/contextgeneric/cgp.git" }
cgp-core = { git = "https://github.com/contextgeneric/cgp.git" }
Expand Down Expand Up @@ -219,3 +227,7 @@ hermes-wasm-test-components = { path = "./crates/wasm/wasm-test-componen

hermes-solomachine-chain-components = { path = "./crates/solomachine/solomachine-chain-components" }
hermes-solomachine-relayer = { path = "./crates/solomachine/solomachine-relayer" }

hermes-ibc-components = { path = "./crates/ibc/ibc-components" }
hermes-ibc-token-transfer-components = { path = "./crates/ibc/ibc-token-transfer-components" }
hermes-ibc-mock-chain = { path = "./crates/ibc/ibc-mock-chain" }
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use cgp::prelude::*;

pub use hermes_chain_type_components::traits::types::commitment_prefix::*;

#[derive_component(IbcCommitmentPrefixGetterComponent, IbcCommitmentPrefixGetter<Chain>)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use cgp::core::component::DelegateTo;
use cgp::core::component::UseDelegate;
use cgp::prelude::*;

use crate::traits::types::channel::{
Expand Down Expand Up @@ -70,7 +70,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ChannelOpenInitMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasInitChannelOptionsType<Counterparty> + HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasIbcChainTypes<Chain>,
Expand All @@ -94,7 +94,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ChannelOpenTryMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasChannelOpenTryPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand All @@ -120,7 +120,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ChannelOpenAckMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasChannelOpenAckPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand All @@ -146,7 +146,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate>
ChannelOpenConfirmMessageBuilder<Chain, Counterparty> for DelegateTo<Components>
ChannelOpenConfirmMessageBuilder<Chain, Counterparty> for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasChannelOpenConfirmPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use cgp::core::component::DelegateTo;
use cgp::core::component::UseDelegate;
use cgp::prelude::*;

use crate::traits::types::connection::{
Expand Down Expand Up @@ -70,7 +70,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate>
ConnectionOpenInitMessageBuilder<Chain, Counterparty> for DelegateTo<Components>
ConnectionOpenInitMessageBuilder<Chain, Counterparty> for UseDelegate<Components>
where
Chain:
HasInitConnectionOptionsType<Counterparty> + HasIbcChainTypes<Counterparty> + HasErrorType,
Expand All @@ -97,7 +97,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ConnectionOpenTryMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasConnectionOpenTryPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand All @@ -123,7 +123,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ConnectionOpenAckMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasConnectionOpenAckPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand All @@ -147,7 +147,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate>
ConnectionOpenConfirmMessageBuilder<Chain, Counterparty> for DelegateTo<Components>
ConnectionOpenConfirmMessageBuilder<Chain, Counterparty> for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasConnectionOpenConfirmPayloadType<Chain> + HasIbcChainTypes<Chain>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use cgp::core::component::DelegateTo;
use cgp::core::component::UseDelegate;
use cgp::prelude::*;

use crate::traits::types::create_client::{
Expand All @@ -21,7 +21,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> CreateClientMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasCreateClientMessageOptionsType<Counterparty> + HasMessageType + HasErrorType,
Counterparty: HasCreateClientPayloadType<Chain>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use alloc::vec::Vec;

use cgp::core::component::DelegateTo;
use cgp::core::component::UseDelegate;
use cgp::prelude::*;

use crate::traits::types::ibc::HasIbcChainTypes;
Expand All @@ -21,7 +21,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> UpdateClientMessageBuilder<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasUpdateClientPayloadType<Chain>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ where
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
writeln!(
f,
"channel not found with channel id {}, port id {}, height {}",
"channel not found with channel id {:?}, port id {}, height {}",
self.channel_id, self.port_id, self.height,
)?;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use alloc::vec::Vec;

use cgp::core::component::DelegateTo;
use cgp::core::component::UseDelegate;
use cgp::prelude::*;

use crate::traits::queries::chain_status::CanQueryChainStatus;
Expand Down Expand Up @@ -138,7 +138,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ClientStateQuerier<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasClientStateType<Chain>,
Expand All @@ -155,7 +155,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> ClientStateWithProofsQuerier<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasCommitmentProofType + HasErrorType,
Counterparty: HasClientStateType<Chain>,
Expand All @@ -172,7 +172,7 @@ where
}

impl<Chain, Counterparty, Components, Delegate> AllClientStatesQuerier<Chain, Counterparty>
for DelegateTo<Components>
for UseDelegate<Components>
where
Chain: HasIbcChainTypes<Counterparty> + HasErrorType,
Counterparty: HasClientStateType<Chain>,
Expand Down
Loading
Loading