-
Notifications
You must be signed in to change notification settings - Fork 332
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
Hermes relaying modes: push versus pull relaying #2850
Comments
It sounds like what you want is to have poll-based relaying compared to the current push-based or event-based relaying. For the new relayer design, this should be just a matter of switching from a poll-based event source to a push-based event source. Otherwise, we could implement multiple event source implementations and allow relaying based on contract-specific events. For the current v1 relayer, we could refactor the |
Two examples of CW IBC that users provided where the Websocket functionality doesn't work: |
I shared here a tweet and it happened that the suggestion is already being discussed so I would like to add my motivation here.
|
@kaisbaccour Thanks for sharing your experience with us! This all makes sense! We are tracking the issue with wasm events in #3190 and #2809. I am actually working on switching to a poll-based model which eschews the WebSocket stream, which should solve the problem you are seeing: #3209 |
Summary of problem
Some Hermes users are running the relayer with
clear_interval = 1
. This effectively means that the relayer does not use the WS and scans each chain every block, relaying packets based on the periodic packet clearing functionality.In general, it's not good to allow users to use Hermes in ways in which is not properly documented and tested, and in environments for which we didn't design it.
I learned about this use-case from a user that was transferring NFTs across networks. They could not rely on the websocket functionality because sending NFTs was done from a WASM contract, which does not emit events tagged with
module = ibc
attribute, hence Hermes does not catch those events. Similar problem was reported by this other user (#2809), who is also using WASM contracts for triggering transfers.Proposal
I think we should consider introducing a native feature that allows Hermes to bypass the Websocket and run in a "periodic packet clearing mode" only. For the moment, let's distinguish push relaying from pull relaying (TODO: figure out more appropriate names).
start
functionalityIt's unclear what the pull mode would look like, eg:
start
CLI but add an option--periodic
or something like that?Next steps
Note the milestone for this is v1.4, so not an immediate priority.
This is just a meta issue to trace some next steps and feasiblity:
@soareschen & @ljoss17 and @seanchen1991 to consider the implications and feasibility of a pull-based design in the context of new architectureis the pull mode possible with v1.5 / v2 ?@romac and @ancazamfir to consider the implications of a pull mode in the context of IBC node designRelated issues
"message"
events #3190wasm
messages #2809For Admin Use
The text was updated successfully, but these errors were encountered: