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

Add support for Hermes to identify whether it is compatible with a chain (based on SDK version) #1057

Closed
6 tasks
greg-szabo opened this issue Jun 7, 2021 · 0 comments · Fixed by #1145
Closed
6 tasks
Assignees
Labels
I: dependencies Internal: related to dependencies I: logic Internal: related to the relaying logic O: new-feature Objective: cause to add a new feature or support
Milestone

Comments

@greg-szabo
Copy link
Member

greg-szabo commented Jun 7, 2021

Crate

relayer
relayer-cli

Summary

Test: gaiad 4.2.1 -> regen 1.1.0 transfer
(SDK 0.42.4 -> 0.43.0.beta1)

Problem Definition

The transfer goes through but the acknowledgment packet does not return.

As it turns out the WriteAcknowledgmentEv that 0.43 emits is not currently supported by hermes v0.4.0. Further testing showed that we can't initiate a transfer from the 0.43 chain either.

Proposal

The problem in general is parsing the new value of message.action field, so in some sense this issue is a duplicate of #918. We'll separate the two as follows:

  • With this issue we'll capture the problem of identifying if a chain's SDK version is compatible with Hermes. This means that at initialization time Hermes should perform a chain query to the applications RPC port on endpoint /node_info and check that the SDK version falls within a compatible range. Using the command line, this looks as follows:
> curl localhost:27051/node_info | jq '.application_version.build_deps' | grep sdk
  "github.com/cosmos/cosmos-sdk@v0.42.0-rc0 => github.com/regen-network/cosmos-sdk@v0.42.4-regen-1",

for a newer SDK with changed action in events:

  "github.com/cosmos/cosmos-sdk@v0.43.0-beta1.0.20210520130629-fbb50cfa0a43",

Acceptance Criteria

  • Add support to identify if Hermes is connected to a chain whose SDK is compatible with itself. Define what should be the appropriate behavior in case of connecting to an incompatible chain
    • one option is to at least write errors in the log and continue executing regardless (the optimistic approach)
    • slightly preferable: disconnect from the chain (prefer safety over liveness)

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate milestone (priority) applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@greg-szabo greg-szabo added this to the 06.2021 milestone Jun 7, 2021
@adizere adizere changed the title SDK 0.43 compatibility Add support for Hermes to identify whether it is compatible with a chain (based on SDK version) Jun 7, 2021
@adizere adizere modified the milestones: 06.2021, 07.2021 Jun 8, 2021
@adizere adizere self-assigned this Jun 8, 2021
@adizere adizere modified the milestones: 07.2021, 06.2021 Jun 8, 2021
@adizere adizere linked a pull request Jul 2, 2021 that will close this issue
6 tasks
@adizere adizere mentioned this issue Jul 2, 2021
7 tasks
@adizere adizere added I: dependencies Internal: related to dependencies O: new-feature Objective: cause to add a new feature or support I: logic Internal: related to the relaying logic labels Jul 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I: dependencies Internal: related to dependencies I: logic Internal: related to the relaying logic O: new-feature Objective: cause to add a new feature or support
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants