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

Relayer v2 architecture redesign and new packet worker MVP #2478

Closed
wants to merge 506 commits into from
Closed
Show file tree
Hide file tree
Changes from 155 commits
Commits
Show all changes
506 commits
Select commit Hold shift + click to select a range
37a872f
Move CosmosTelemetry to CosmosFullChain
soareschen Oct 10, 2022
7616bf1
Rename and move Cosmos Chain/Relay Env to Context
soareschen Oct 10, 2022
6b89f2d
Move Cosmos constructs into base::
soareschen Oct 10, 2022
2fe5035
Move Cosmos batch and telemetry constructs to full::
soareschen Oct 10, 2022
f3d5f64
Refactoring sub-relayer components
soareschen Oct 10, 2022
549b05d
Refactor FullRelayer
soareschen Oct 10, 2022
cee6f5b
Refactor filter component
soareschen Oct 10, 2022
b08939b
Use FilterRelayer in FullComponents
soareschen Oct 10, 2022
b1251cb
Add TimeoutRelayer component
soareschen Oct 10, 2022
2d118bb
Add AfoFullRelay trait bounds
soareschen Oct 10, 2022
ffea48f
Add AfoFullChainContext
soareschen Oct 10, 2022
553f58b
Move all_for_one modules up
soareschen Oct 10, 2022
a0dc92d
Move relayer-cosmos modules up one level
soareschen Oct 10, 2022
bda133f
Move core modules
soareschen Oct 11, 2022
4f057b1
Moving chain and relay traits
soareschen Oct 11, 2022
3625ce8
Reorganized all base modules
soareschen Oct 11, 2022
659246e
Rename all-in-one constructs
soareschen Oct 11, 2022
1cd28ed
Move OFA chain/relay wrapper types
soareschen Oct 11, 2022
39dc033
Rename Chain/Relay Context ot Has Chain/Relay Types
soareschen Oct 11, 2022
9fa3ffa
Remove OfaError
soareschen Oct 12, 2022
bec0312
Rename OFA Components traits
soareschen Oct 12, 2022
ed75f0d
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 13, 2022
56d7103
Refactoring transaction code with context-generic programming
soareschen Oct 14, 2022
715d8ed
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 14, 2022
ddcbd2b
Use simplest form of context-generic for easier understanding
soareschen Oct 14, 2022
955ebc8
Implement CanSendTxWithFee
soareschen Oct 14, 2022
161d058
Implement estimate_fee_and_send_tx in context-generic style
soareschen Oct 14, 2022
45ca4a8
Refactor CanEstimateTxGas and CanQueryReceivedPacket
soareschen Oct 17, 2022
65847d0
Refactor QueryConsensusState
soareschen Oct 17, 2022
ce09d1d
Refactor CanQueryConsensusState
soareschen Oct 17, 2022
62ecbe1
Rename context module to types module
soareschen Oct 17, 2022
60c173d
Refactor CanQueryChainStatus
soareschen Oct 17, 2022
2f10f33
Move packet relayer impls into submodules
soareschen Oct 17, 2022
6820b7e
Rename SendChainStatusQueryToOfa
soareschen Oct 17, 2022
dac2ed3
Move OfaChainComponents trait to parent
soareschen Oct 17, 2022
fd80f59
Reorganize OFA relay impls
soareschen Oct 17, 2022
bca7658
Refactor CanBuildUpdateClientMessage
soareschen Oct 17, 2022
f31cfff
Refactor CanSendIbcMessages
soareschen Oct 17, 2022
8b99ba5
Rename OfaBaseChainTypes to OfaChainTypes
soareschen Oct 17, 2022
13c58af
Refactor CanBuildReceivePacketMessage
soareschen Oct 17, 2022
96d790c
Refactor CanBuildAckPacketMessage
soareschen Oct 17, 2022
0a0a49a
Refactor CanBuildTimeoutUnorderedPacketMessage
soareschen Oct 17, 2022
84ecab7
Refactor CanRelayPacket
soareschen Oct 17, 2022
59559d6
Refactor CanRelayReceivePacket
soareschen Oct 17, 2022
8fb12c3
Refactor CanRelayAckPacket
soareschen Oct 17, 2022
d3a1a3f
Refactor CanBuildTimeoutUnorderedPacketMessage
soareschen Oct 17, 2022
a128147
Move OfaRelayComponents to parent module
soareschen Oct 17, 2022
94ff03a
Move OFA wrapper types
soareschen Oct 17, 2022
b8c96b2
Rename Components to Preset
soareschen Oct 17, 2022
e2741af
Improve BatchMessageWorker type constraints
soareschen Oct 17, 2022
6ea1969
Move around preset types
soareschen Oct 17, 2022
899398e
Implement WaitTimeoutUnorderedPacketMessage #2735
soareschen Oct 17, 2022
d7e1275
Remove PacketRelayer from preset
soareschen Oct 17, 2022
d58b92d
Remove ReceivePacketRelayer from preset
soareschen Oct 17, 2022
1c3dd37
Remove AckPacketRelayer from preset
soareschen Oct 17, 2022
5fb1cca
Remove TimeoutRelayer from preset
soareschen Oct 17, 2022
1dcf0b6
Remove UpdateClientMessageBuilder from preset
soareschen Oct 17, 2022
f092568
Remove TimeoutUnorderedMessageBuilder from preset
soareschen Oct 17, 2022
acb799c
Remove BatchPreset
soareschen Oct 17, 2022
ea1d09f
Refactor CanSendIbcMessagesFromBatchWorker
soareschen Oct 17, 2022
110aacd
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 17, 2022
33f1511
Re-introduce PacketRelayer into relay preset
soareschen Oct 18, 2022
3ef33d3
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 18, 2022
524d318
More links fixed
ljoss17 Oct 19, 2022
127d25b
Revert "More links fixed"
ljoss17 Oct 19, 2022
42630d4
Merge commit '2122813a0c816c52e8d3bd387bc6618956428434' into soares/r…
soareschen Oct 25, 2022
d71cdc4
Fix fee errors
soareschen Oct 25, 2022
562ad15
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 25, 2022
2283558
Define explicit HasField traits for each field
soareschen Oct 25, 2022
fa1ff70
Implement query account methods
soareschen Oct 25, 2022
e2e88d3
Implement wait_tx
soareschen Oct 25, 2022
0c0408c
Implement SimpleTxSender
soareschen Oct 25, 2022
b40deb6
Minor refactoring
soareschen Oct 26, 2022
f46be48
Pass account sequence explicitly
soareschen Oct 26, 2022
8ac1f7d
Draft abstract transaction traits
soareschen Oct 26, 2022
6881152
More abstract transaction components
soareschen Oct 26, 2022
2eee879
Add RelayToChain wrapper
soareschen Oct 27, 2022
7c93c00
Refine message as tx sender
soareschen Oct 27, 2022
5831344
Implement PollTxResponse
soareschen Oct 27, 2022
1216943
Implement NaiveNonceAllocator
soareschen Oct 27, 2022
c481369
Move runtime traits to crate::base::runtime
soareschen Oct 27, 2022
7f4a420
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 27, 2022
3c231ad
Add back Signer type and pass it explicitly
soareschen Oct 27, 2022
33016e5
Refactor Cosmos tx impls to follow abstract tx implementation
soareschen Oct 27, 2022
33bbac7
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 27, 2022
dade967
Implement RetryNonceAllocator
soareschen Oct 27, 2022
d70d679
Add very basic Kani verification test
soareschen Oct 28, 2022
fcf591d
Revert "Add very basic Kani verification test"
soareschen Oct 28, 2022
5de1604
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Oct 28, 2022
98fedac
Update dependency versions
soareschen Oct 28, 2022
89feaf1
Refactor simple_send_tx to follow the flow of SimpleTxSender
soareschen Oct 28, 2022
ee53cd1
Add back Kani verification tests in tools/
soareschen Oct 30, 2022
42ed55b
Polling of futures inside Kani is working
soareschen Oct 30, 2022
fb2d533
Minor edits
soareschen Nov 1, 2022
57f29e0
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Nov 1, 2022
f64cf35
Enable full relayer to relay timeout packets (#2789)
seanchen1991 Nov 3, 2022
c8e9da4
Merge branch 'soares/relayer-next' of github.com:informalsystems/ibc-…
soareschen Nov 3, 2022
3803bb3
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Nov 3, 2022
a100826
Merge branch 'master' into soares/relayer-next
soareschen Nov 4, 2022
e0e1e7d
Update Rust version to 1.65.0
soareschen Nov 4, 2022
7c6a08e
Update documentations to reflect MSRV changes
soareschen Nov 4, 2022
7bfcc1b
Update MSRV in relayer-rest
soareschen Nov 4, 2022
8c42b4e
Merge branch 'soares/rust-1.65' into soares/relayer-next
soareschen Nov 4, 2022
c178e9e
Merge branch 'master' into soares/relayer-next
soareschen Nov 7, 2022
9f422f6
Merge branch 'master' into soares/relayer-next
soareschen Nov 11, 2022
9c2b9c6
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Nov 11, 2022
440790e
Moving RetryRelayer to FullPreset (#2845)
seanchen1991 Nov 14, 2022
e68e07c
Merge branch 'master' into soares/relayer-next
soareschen Nov 14, 2022
79f3a51
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Nov 18, 2022
5604cfc
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Nov 22, 2022
639338e
Merge branch 'master' into soares/relayer-next
soareschen Dec 2, 2022
4ee4eea
Fix issue causing relayer to not generate an Ack (#2921)
ljoss17 Dec 6, 2022
c8b0b88
Fix clippy
soareschen Dec 6, 2022
0f4ef63
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Dec 6, 2022
6ef55b9
Merge branch 'master' into soares/relayer-next
soareschen Dec 8, 2022
751a41f
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Dec 12, 2022
05d635c
Allow sub-contexts to have different `Error` types with functions to …
soareschen Dec 12, 2022
bfdc6b3
Relayer v2 ADR and documentation (#2858)
soareschen Dec 15, 2022
5626e2e
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Dec 15, 2022
84173a7
Mock chain context (#2785)
ljoss17 Dec 15, 2022
6a20f0c
Implement ability to query for IBC write acknowledgements (#2907)
seanchen1991 Dec 15, 2022
6c9ea21
Stub query_write_ack_event in MockChainContext
soareschen Dec 15, 2022
869278d
Use GAT to define generic MPSC channel context (#2935)
soareschen Dec 15, 2022
0ae0c04
Split out one-for-all runtime features to OfaBaseRuntime and OfaFullR…
soareschen Dec 16, 2022
ef7d6b5
Use `Arc` in one-for-all wrappers (#2959)
soareschen Dec 16, 2022
9c066be
Add incoming and outgoing packet types to chain context (#2960)
soareschen Dec 16, 2022
bb17922
Implement Transaction Context (#2962)
soareschen Dec 20, 2022
f91e234
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Dec 20, 2022
f70b513
Mock chain improvements and fixes (#2968)
ljoss17 Jan 3, 2023
32338e5
Move message building methods to chain context (#2986)
seanchen1991 Jan 11, 2023
d256a5a
Merge branch 'master' into soares/relayer-next
soareschen Jan 11, 2023
590f482
Fir formatting and clippy
soareschen Jan 11, 2023
05fc8f4
Fix failed doc tests
soareschen Jan 11, 2023
62fb576
Merge branch 'master' into soares/relayer-next
soareschen Jan 23, 2023
14a2e26
Fix doc test
soareschen Jan 23, 2023
9838705
Fix doc tests
soareschen Jan 24, 2023
108fd27
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jan 24, 2023
5d3f320
Implement Event source components (#2985)
ljoss17 Jan 24, 2023
5255814
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jan 25, 2023
a57d01c
Improve mock chain test coverage (#3020)
seanchen1991 Jan 26, 2023
19e12f4
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jan 27, 2023
bc18db6
Fix clippy
soareschen Jan 27, 2023
9dedae1
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jan 30, 2023
afa7d92
Fix clippy
soareschen Jan 30, 2023
c5dcaef
Document constructs in `ibc_relayer_framework::base::chain`, part 1 (…
soareschen Jan 30, 2023
0ca1985
Refactor message batch worker implementation to make use of auto-trai…
soareschen Jan 31, 2023
8c68c96
Add two-way relay context and auto relayers
soareschen Feb 1, 2023
a656780
Implement AfoBaseBiRelay and simplify HasTwoWayRelay trait
soareschen Feb 1, 2023
e3ded62
Simplify AfoBaseRelay
soareschen Feb 2, 2023
4435cd6
Implement two-way relay context (#3055)
soareschen Feb 2, 2023
bc9bda9
Add TokioRuntimeContext type equality to AFO Cosmos chain
soareschen Feb 8, 2023
307b130
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Feb 14, 2023
8e38d2b
Fix merge error
soareschen Feb 14, 2023
2288860
Document constructs in `ibc_relayer_framework::base::chain`, part 2 (…
soareschen Feb 14, 2023
269a3ce
Define Relayer-next CLI and instantiate a relay context from the `rel…
seanchen1991 Feb 14, 2023
53cd694
Merge branch 'master' into soares/relayer-next
soareschen Feb 14, 2023
27296ce
Update links to concurrency architecture diagrams
soareschen Feb 15, 2023
7a8dbb0
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Feb 15, 2023
7eb57fb
Enable `experimental` feature flag for relayer-next CLI (#3081)
seanchen1991 Feb 15, 2023
50216f5
Implement builder constructs to build the relay contexts (#3094)
soareschen Feb 21, 2023
996fa39
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Feb 21, 2023
53d6355
Merge branch 'master' into soares/relayer-next
soareschen Feb 22, 2023
4117fd3
Builder context improvements (#3117)
soareschen Feb 22, 2023
c70d2a4
Move base module to ibc-relayer-components crate
soareschen Feb 23, 2023
35aff9c
Fix import paths in ibc-relayer-components
soareschen Feb 23, 2023
122bea4
Move all-in-one modules to ibc-relayer-all-in-one
soareschen Feb 23, 2023
15cab9e
Fix import paths
soareschen Feb 23, 2023
c4b51de
Reorder imports
soareschen Feb 23, 2023
cc462c7
Move full module to ibc-relayer-components-extra
soareschen Feb 23, 2023
eb63200
Fix imports
soareschen Feb 23, 2023
48dc436
Move full all-in-one modules to ibc-relayer-all-in-one-extra
soareschen Feb 23, 2023
1e04691
Fix imports
soareschen Feb 23, 2023
1f43915
Move all-in-one modules into base::
soareschen Feb 23, 2023
bd2e4f6
Fix import
soareschen Feb 23, 2023
6767743
Fix imports
soareschen Feb 23, 2023
5711a91
Fix imports in relayer-cosmos
soareschen Feb 23, 2023
ac27d31
Fix remaining imports
soareschen Feb 23, 2023
1a8efcb
Remove relayer-all-in-one-extra crate
soareschen Feb 23, 2023
70a0587
Rename relayer-framework-test to relayer-mock
soareschen Feb 23, 2023
9057b12
Use futures_core and futures_util to reduce dependency size
soareschen Feb 23, 2023
4eb5725
Fix cargo doc warnings
soareschen Feb 23, 2023
bdebf28
Fix formatting
soareschen Feb 23, 2023
17bb4f8
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Mar 1, 2023
9a67fa0
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Mar 4, 2023
13d1f8c
Fix merge error
soareschen Mar 4, 2023
d3f5d7e
Implement structured logging context (#3132)
soareschen Mar 4, 2023
72d4f0c
Remove unused changes
soareschen Mar 7, 2023
d9e069b
Merge branch 'master' into soares/relayer-next
soareschen Mar 13, 2023
f4fa844
Fix clippy
soareschen Mar 13, 2023
3c72e24
Merge branch 'master' into soares/relayer-next
soareschen Mar 14, 2023
72670a8
Try to run HttpClient in compat mode
soareschen Mar 14, 2023
65d82e6
Revert non-relevant changes to relayer crate
soareschen Mar 14, 2023
e571944
Revert irrelevant changes to integration tests
soareschen Mar 14, 2023
8c5540a
Cosmos event subscription now needs compat mode
soareschen Mar 14, 2023
2c98d28
Fix clippy and remove excess logs
soareschen Mar 14, 2023
f1f92f7
Fix clippy
soareschen Mar 14, 2023
549f942
Merge branch 'master' into soares/relayer-next
soareschen Mar 14, 2023
6784757
Remove obsolete new files
soareschen Mar 14, 2023
52ece44
Remove TryFrom<IbcEvent> for WriteAcknowledgement
soareschen Mar 14, 2023
79a5a69
Merge branch 'master' into soares/relayer-next
soareschen Mar 15, 2023
a576069
Fix doctests
soareschen Mar 15, 2023
b7b3875
Submit batch messages asynchronously in separate task (#3168)
soareschen Mar 15, 2023
03379c7
Merge branch 'master' into soares/relayer-next
soareschen Mar 15, 2023
90ca796
Move concurrency architectures documentation to wiki
soareschen Mar 15, 2023
577099c
Remove Cargo doc link to ADR
soareschen Mar 15, 2023
e6d6930
Remove cargo doc links inside ADR
soareschen Mar 15, 2023
ef0e626
Implement packet lock for packet relayer synchronization (#3172)
soareschen Mar 15, 2023
9777205
Remove duplicate events inside Cosmos event subscription (#3173)
soareschen Mar 16, 2023
da18d2c
Document relay contexts (#3205)
seanchen1991 Mar 29, 2023
2335078
Abstract test framework (#3178)
ljoss17 Apr 25, 2023
c87c07a
Merge branch 'master' into soares/relayer-next
soareschen Jun 22, 2023
d605e1e
Fix tests
soareschen Jun 22, 2023
c34e5da
Fix clippy
soareschen Jun 22, 2023
4fc4e7f
Consolidate the base/full all-in-one traits into one layer (#3442)
soareschen Jun 26, 2023
1237b88
Decouple the incoming/outgoing packet types of a chain context with i…
soareschen Jun 26, 2023
45660ec
Merge branch 'master' into soares/relayer-next
soareschen Jul 3, 2023
c3f0724
Implement basic IBC connection handshake in relayer-next (#3457)
soareschen Jul 3, 2023
3bd4a87
Merge branch 'master' into soares/relayer-next
soareschen Jul 4, 2023
ffbe5c2
Implement basic IBC client creation components in relayer-next (#3464)
soareschen Jul 6, 2023
612ed64
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 5, 2023
6251577
Implement basic IBC channel handshake in relayer-next (#3463)
ljoss17 Jul 10, 2023
d2f8ee2
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 10, 2023
cc1c1a8
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 13, 2023
c7763f5
Implement `UpdateClient` chain components and remove depdency to `For…
soareschen Jul 14, 2023
cd89acd
Fix clippy warnings on Rust 1.71 (#3477)
romac Jul 13, 2023
afdedbf
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 14, 2023
24052d5
Refactor IBC chain constructs (#3483)
soareschen Jul 17, 2023
9e6bbb5
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 17, 2023
ce2ebe8
Merge branch 'master' into soares/relayer-next
soareschen Jul 25, 2023
5455965
Fix merge error
soareschen Jul 25, 2023
4da518c
Refactor Cosmos messages and payloads (#3504)
soareschen Jul 26, 2023
d647eb5
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Jul 25, 2023
13bc2c8
Implement packet clearing in relayer next (#3488)
ljoss17 Aug 4, 2023
9c1bcf0
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Aug 4, 2023
a80b841
Backport changes in solomachine branch to relayer-next (#3527)
soareschen Aug 8, 2023
aa80935
Use component graph design pattern to manage components (#3528)
soareschen Aug 9, 2023
5c95908
Forward common components in ExtraComponents to DefaultComponents
soareschen Aug 9, 2023
bf1407d
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Aug 15, 2023
9579ec6
Use component delegation pattern for core relayer components (#3539)
soareschen Aug 15, 2023
4238d6c
Remove one-for-all runtime constructs (#3542)
soareschen Aug 16, 2023
2bb6098
Merge remote-tracking branch 'origin/master' into soares/relayer-next
soareschen Aug 16, 2023
db6262d
Remove one-for-all transaction constructs (#3543)
soareschen Aug 16, 2023
1f9d100
Merge branch 'master' into soares/relayer-next
soareschen Aug 18, 2023
3de33a2
Merge branch 'master' into soares/relayer-next
soareschen Sep 4, 2023
8dec7c5
Introduce component graph constraint closure (#3588)
soareschen Sep 5, 2023
77a63f4
Introduce component graph constraint closure, part 2 (#3590)
soareschen Sep 6, 2023
08e6f05
Merge branch 'master' into soares/relayer-next
soareschen Sep 6, 2023
4610637
Merge branch 'master' into soares/relayer-next
soareschen Sep 25, 2023
4ebcde2
Fix merge errors
soareschen Sep 25, 2023
e5403fd
Fix clippy
soareschen Sep 25, 2023
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
2 changes: 1 addition & 1 deletion .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ jobs:
run: |
nix shell .#python .#${{ matrix.chain.package }} -c cargo \
test -p ibc-integration-test --no-fail-fast -- \
--nocapture --test-threads=2
--nocapture --test-threads=1

ordered-channel-test:
runs-on: ubuntu-latest
Expand Down
58 changes: 58 additions & 0 deletions Cargo.lock

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

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ resolver = "2"
members = [
"modules",
"relayer",
"relayer-framework",
"relayer-framework-guide",
"relayer-cosmos",
"relayer-cli",
"relayer-rest",
"telemetry",
Expand Down
2 changes: 1 addition & 1 deletion clippy.toml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
msrv = "1.60.0"
msrv = "1.63.0"
9 changes: 9 additions & 0 deletions docs/architecture/adr-012-ibc-relayer-v1.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ADR 012: IBC Relayer V1.5

## Changelog

* 2022-07-29: Initial Draft

## Problem Statement

## Context
4 changes: 4 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@
apalache
;

inherit (nixpkgs)
mdbook
;

python = nixpkgs.python3.withPackages (p: [
p.toml
]);
Expand Down
1 change: 1 addition & 0 deletions modules/src/core/ics02_client/client_consensus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ pub trait ConsensusState: Clone + core::fmt::Debug + Send + Sync {
fn wrap_any(self) -> AnyConsensusState;
}

#[non_exhaustive]
#[derive(Clone, Debug, PartialEq, Eq, Serialize)]
#[serde(tag = "type")]
pub enum AnyConsensusState {
Expand Down
12 changes: 12 additions & 0 deletions modules/src/core/ics02_client/height.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use crate::prelude::*;
use core::cmp::Ordering;

use core::num::ParseIntError;
use core::ops::Add;
use core::str::FromStr;

use flex_error::{define_error, TraceError};
Expand Down Expand Up @@ -68,6 +69,17 @@ impl Height {
}
}

impl Add<u64> for Height {
type Output = Self;

fn add(self, delta: u64) -> Self {
Self {
revision_number: self.revision_number,
revision_height: self.revision_height + delta,
}
}
}

impl PartialOrd for Height {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
Expand Down
3 changes: 3 additions & 0 deletions modules/src/core/ics04_channel/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,9 @@ define_error! {
InvalidAcknowledgement
| _ | { "Acknowledgment cannot be empty" },

InvalidAcknowledgementEvent
| _ | { "IBC event is not a write acknowledgement event" },

AcknowledgementExists
{ sequence: Sequence }
| e | {
Expand Down
11 changes: 11 additions & 0 deletions modules/src/core/ics04_channel/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,17 @@ impl From<WriteAcknowledgement> for IbcEvent {
}
}

impl TryFrom<IbcEvent> for WriteAcknowledgement {
type Error = Error;

fn try_from(event: IbcEvent) -> Result<Self, Error> {
match event {
IbcEvent::WriteAcknowledgement(ev) => Ok(ev),
_ => Err(Error::invalid_acknowledgement_event()),
}
}
}

impl TryFrom<WriteAcknowledgement> for AbciEvent {
type Error = Error;

Expand Down
6 changes: 6 additions & 0 deletions modules/src/signer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ define_error! {
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Display)]
pub struct Signer(String);

impl Signer {
pub fn dummy() -> Self {
Self("cosmos000000000000000000000000000000000000000".to_string())
}
}

impl FromStr for Signer {
type Err = SignerError;

Expand Down
54 changes: 54 additions & 0 deletions relayer-cosmos/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
[package]
name = "ibc-relayer-cosmos"
version = "0.18.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
keywords = ["blockchain", "consensus", "cosmos", "ibc", "tendermint"]
repository = "https://github.com/informalsystems/ibc-rs"
authors = ["Informal Systems <hello@informal.systems>"]
rust-version = "1.60"
description = """
Implementation of an IBC Relayer in Rust, as a library
"""

[package.metadata.docs.rs]
all-features = true

[features]
default = ["flex-error/std", "flex-error/eyre_tracer"]

[dependencies]
ibc = { version = "0.18.0", path = "../modules" }
ibc-proto = { version = "0.20.0", path = "../proto" }
ibc-relayer = { version = "0.18.0", path = "../relayer" }
ibc-relayer-framework = { version = "0.18.0", path = "../relayer-framework" }

serde = "1.0"
serde_derive = "1.0"
async-trait = "0.1.56"
flex-error = { version = "0.4.4", default-features = false }
prost = { version = "0.11" }
eyre = "0.6.8"
tokio = "1.19.2"
itertools = "0.10.3"

[dependencies.tendermint]
version = "=0.23.9"
features = ["secp256k1"]

[dependencies.tendermint-rpc]
version = "=0.23.9"
features = ["http-client", "websocket-client"]

[dependencies.tendermint-light-client]
version = "=0.23.9"
default-features = false
features = ["rpc-client", "secp256k1", "unstable"]

[dependencies.tendermint-light-client-verifier]
version = "=0.23.9"
default-features = false

[dependencies.tendermint-proto]
version = "=0.23.9"
104 changes: 104 additions & 0 deletions relayer-cosmos/src/cosmos/context/chain.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
use ibc::core::ics04_channel::events::WriteAcknowledgement;
use ibc::core::ics04_channel::packet::Sequence;
use ibc::core::ics24_host::identifier::{ChannelId, ClientId, ConnectionId, PortId};
use ibc::events::IbcEventType;
use ibc::signer::Signer;
use ibc::timestamp::Timestamp;
use ibc::Height;
use ibc_relayer::chain::cosmos::types::config::TxConfig;
use ibc_relayer::chain::cosmos::types::events::channel::extract_packet_and_write_ack_from_tx;
use ibc_relayer::keyring::KeyEntry;
use ibc_relayer_framework::traits::contexts::chain::{ChainContext, IbcChainContext};
use ibc_relayer_framework::traits::contexts::error::HasError;
use ibc_relayer_framework::traits::contexts::ibc_event::HasIbcEvents;
use ibc_relayer_framework::traits::contexts::runtime::HasRuntime;
use ibc_relayer_framework::traits::core::Async;
use tendermint::abci::responses::Event;
use tendermint::abci::Event as AbciEvent;

use crate::cosmos::context::runtime::CosmosRuntime;
use crate::cosmos::error::Error;
use crate::cosmos::message::CosmosIbcMessage;

#[derive(Clone)]
pub struct CosmosChainContext<Handle> {
pub handle: Handle,
pub signer: Signer,
pub tx_config: TxConfig,
pub key_entry: KeyEntry,
}

pub struct WriteAcknowledgementEvent(pub WriteAcknowledgement);

impl<Handle: Async> HasError for CosmosChainContext<Handle> {
type Error = Error;
}

impl<Handle: Async> HasRuntime for CosmosChainContext<Handle> {
type Runtime = CosmosRuntime;

fn runtime(&self) -> &CosmosRuntime {
&CosmosRuntime
}
}

impl<Handle: Async> ChainContext for CosmosChainContext<Handle> {
type Height = Height;

type Timestamp = Timestamp;

type Message = CosmosIbcMessage;

type Event = Event;
}

impl<Chain, Counterparty> IbcChainContext<CosmosChainContext<Counterparty>>
for CosmosChainContext<Chain>
where
Chain: Async,
Counterparty: Async,
{
type ClientId = ClientId;

type ConnectionId = ConnectionId;

type ChannelId = ChannelId;

type PortId = PortId;

type Sequence = Sequence;

type IbcMessage = CosmosIbcMessage;

type IbcEvent = Event;
}

impl TryFrom<AbciEvent> for WriteAcknowledgementEvent {
type Error = ();

fn try_from(event: AbciEvent) -> Result<Self, ()> {
if let Ok(IbcEventType::WriteAck) = event.type_str.parse() {
let (packet, write_ack) =
extract_packet_and_write_ack_from_tx(&event).map_err(|_| ())?;

let ack = WriteAcknowledgement {
height: Height::new(0, 1).unwrap(),
packet,
ack: write_ack,
};

Ok(WriteAcknowledgementEvent(ack))
} else {
Err(())
}
}
}

impl<Chain, Counterparty> HasIbcEvents<CosmosChainContext<Counterparty>>
for CosmosChainContext<Chain>
where
Chain: Async,
Counterparty: Async,
{
type WriteAcknowledgementEvent = WriteAcknowledgementEvent;
}
3 changes: 3 additions & 0 deletions relayer-cosmos/src/cosmos/context/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pub mod chain;
pub mod relay;
pub mod runtime;
Loading