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 additional IBC handshake components to validate state before/after relaying #12

Open
5 tasks
soareschen opened this issue Jul 11, 2023 · 0 comments

Comments

@soareschen
Copy link
Collaborator

Summary

In informalsystems/hermes#2925, we implemented the base connection and channel handshake components to get IBC handshake working in relayer-next. However, the base components blindly perform the handshake steps without first validating the current state of the connection/channel.

In this follow up issue, we will implement additional middleware components that wrap around the base handshake components to perform such validation:

  • A skip relayer would skip a specific handshake step if the target chain's connection/channel state is already or after the expected state. This can happen if there are other relayers relaying the handshake in parallel.
  • A validate relayer would validate that the target chain's connection/channel state is updated to the expected state after the corresponding message is processed.
  • A retry relayer would retry a wrapped handshake step if it fails for some reasons, such as network error during query or errors from other messages in a batched transaction. We can reuse the HasRetryableError trait to determine if an error is retryable.

We may want to implement dedicated middleware components for each specific handshake step, rather than wrapping the overall handshake relayer. e.g. the ChannelOpenTry and ChannelOpenAck relayers would each have their own skip, validate, and retry middleware components.

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate milestone (priority) applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@soareschen soareschen transferred this issue from informalsystems/hermes Sep 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🩹 Triage
Development

No branches or pull requests

1 participant