hermes
hermes copied to clipboard
Support cosmos-sdk 0.45 and 0.46 chains side by side
Summary
The relayer should work with chain nodes based on both cosmos-sdk 0.45 / tendermint 0.34 and cosmos-sdk 0.46 / tendermint 0.35.
Problem Definition
While the Cosmos ecosystem transitions to Cosmos SDK 0.46, the relayer should be expected to connect chains working on both old and new versions of the protocols and specifications. There are breaking changes in at least tendermint 0.35, so the issue is more complex than just updating the libraries to the latest protocol and adding a few backward compatibility adaptations.
Proposal
- [ ] Update ibc-proto code generation to tendermint 0.35, cosmos-sdk 0.46 and a compatible revision of ibc-go definitions TBD. Adapt the code using the protocol structures (#2213).
- [ ] Extend tendermint-rs to interoperate with tendermint RPC 0.34 as a static API variant (that is, no need to support both versions with a single client type).
- [ ] Implement support for both old and new (i.e. pre- and post-break) version combinations of tendermint RPC, Cosmos-SDK and IBC with dynamic selection in ibc and ibc-relayer (the same chain endpoint should be able to dynamically discover the versions used by the node and adapt to the protocol).
Acceptance Criteria
Hermes is able to connect and relay between the following node versions, as confirmed by tests:
- [ ] Gaia 7.0
- [ ] Gaia Rho
TODO: add other node implementations we care about?
At least one test run should exercise relaying between SDK 0.45 and 0.46 nodes.
For Admin Use
- [ ] Not duplicate issue
- [ ] Appropriate labels applied
- [ ] Appropriate milestone (priority) applied
- [ ] Appropriate contributors tagged
- [ ] Contributor assigned/self-assigned
Is this issue still relevant in its current form?
Right before the release, Cosmos SDK 0.46 switched back from Tendermint 0.35 to 0.34. So at least you only need to worry about one Tendermint version for the two SDK versions.
Right! I've updated the issue to reflect that, switch from 0.45->0.46 to 0.46->0.47, and update on the progress.