informalsystems / informalsystems/hermes
Multihop PoC
- Dominant language
- Rust
- Stars
- 505
- Forks
- 399
- PR merge metrics
- No merged PRs in 30d
Description
## Summary
PoC implementation for multihop.
### IBC specification
- [ics-033](https://github.com/cosmos/ibc/tree/main/spec/core/ics-033-multi-hop)
- Might need updates with changes we make
- [ics-004](https://github.com/cosmos/ibc/blob/main/spec/core/ics-004-channel-and-packet-semantics/README.md)
- Search for `multihop` to understand on-chain handling
- [ics-003](https://github.com/cosmos/ibc/blob/main/spec/core/ics-003-connection-semantics/README.md)
- Search for `multihop` to understand on-chain handling
### ibc-go PoC implementation
- [Repository](https://github.com/polymerdao/ibc-go/tree/polymer/multihop-main)
- Includes new/changed protos (to include and use in some `ibc-proto-rs` branch)
- Might need to make changes (forked Dec 2023)
### Protos
- [x] Update `ibc-proto-rs` (@romac)
- https://github.com/cosmos/ibc-proto-rs/pull/206
### Channel CLIs
- [x] [`tx chan-open-init`](https://github.com/informalsystems/hermes/blob/master/crates/relayer-cli/src/commands/tx/channel.rs)
- [x] https://github.com/informalsystems/hermes/issues/3950
- [x] [`tx chan-open-try`](https://github.com/informalsystems/hermes/blob/master/crates/relayer-cli/src/commands/tx/channel.rs)
- [x] https://github.com/informalsystems/hermes/issues/3987
- [x] [`tx chan-open-ack`](https://github.com/informalsystems/hermes/blob/master/crates/relayer-cli/src/commands/tx/channel.rs)
- [x] https://github.com/informalsystems/hermes/issues/4049
- [x] [`tx chan-open-confirm`](https://github.com/informalsystems/hermes/blob/master/crates/relayer-cli/src/commands/tx/channel.rs)
- [x] https://github.com/informalsystems/hermes/issues/4055
- [x] [`create channel`](https://github.com/informalsystems/hermes/blob/master/crates/relayer-cli/src/commands/create/channel.rs)
- [x] https://github.com/informalsystems/hermes/issues/4062
### Hermes
- [ ] Add multihop support to packet relaying
- [ ] https://github.com/informalsystems/hermes/issues/4084
### Lesser priority
- [ ] Add multihop support to `tx chan-close-init`
- [ ] Add multihop support to `tx chan-close-confirm`
- [ ] Add multihop support to `tx ft-transfer`
---
### Task overview
- [x] Implement `MultihopProof`
- [x] Implement `GenerateMultihopProof`
- [ ] Should look at the spec and figure out the best approach for Hermes, write a multihop ADR
- e.g. `calcProofHeights` should actually be something like `updateClientsAndGetProofHeights`
- `queryIntermediateProofs` could be done in parallel with `updateClientsAndGetProofHeights`
- [ ] Add multihop proofs to:
- [x] chann_open_try
- [x] ack
- [x] confirm
- [ ] close
- [ ] close_confirm
- [ ] recv_packet
- [ ] acknowledgement
- [ ] timeout
- [ ] timeout_on_close,
- [ ] Implement `ChanCloseFrozen`
- [ ] Monitor spanned client states
- [ ] Trigger `ChanCloseFrozen` to both channel ends
- [ ] Events - need to adapt as some change to include multihop connections (e.g. `send_packet`, etc)
- [ ] Upgrade a channel from single-hop to multi-hop, perform all required checks when upgrading (ie. that the connections are open, etc.)
____
#### For Admin Use
- [ ] Not duplicate issue
- [ ] Appropriate labels applied
- [ ] Appropriate milestone (priority) applied
- [ ] Appropriate contributors tagged
- [ ] Contributor assigned/self-assigned
Contributor guide
Assessment
This issue has not been assessed yet.