Async channel version negotiation? #4272
michaelfig
started this conversation in
Ideas
Replies: 2 comments 7 replies
-
@AdityaSripal, @colin-axner I'd appreciate your opinions on this. |
Beta Was this translation helpful? Give feedback.
3 replies
-
@crodriguezvega, the spec change is merged in cosmos/ibc#1019. Would it be possible to schedule the |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi,
I'm asking here to gather ideas around how to enable channel version negotiation to be performed asynchronously.
In ibc-go v7.2.0's
ibc-go/modules/core-keeper/msg_server.go
's ChannelOpenTry function has the following synchronous calls to determine the version and return it to the submitter:For the Agoric chain, it is desirable to have the version negotiation initiated by
cbs.OnChanOpenTry
serviced by an async (possibly across several blocks) JS smart contract call, finally resulting in a separatek.ChannelKeeper.WriteOpenTryChannel
. In the absence of this feature, I have to (hackishly) just assume that themsg.CounterpartyVersion
is acceptable, return it to the tx submitter, and crash later if the JS contract would have negotiated something different.Is there a way to make this part of the handshake implementable async, similar to how the
k.ChannelKeeper.WriteAcknowledgement
can be done in a later block than when the RecvPacket transaction is handled?I don't have a clear suggestion for how to accomplish this without a relayer-breaking change.
Thanks for any advice you can offer!
Beta Was this translation helpful? Give feedback.
All reactions