-
Notifications
You must be signed in to change notification settings - Fork 391
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
Multi-hop packet routing in IBC #548
Comments
Types of multi-hop routing:
Hops could be called "links". |
What we need to think about immediately is just what data structure alterations will be required for (3). |
|
Some things confuse me about the multihop use case. If the system is end to end, do I show validaty proofs in consensus for all the intermediary hops to the end hops or just the validity proofs? Can we think of this as wrapping an IBC packet inside another IBC packet? I can sort of imagine in two ways. In one way, effectively Alice and Charlie have a channel but no connection. The connection is provided by Bob'ss connection to Alice and Bob's connection to Charlie. Must packets in that channel be source routed so that they say they are only valid if they have originated over the specified connections? |
In model (3), the verification steps for a packet from A to B through H would be as follows:
I believe this is the first way you are describing (though I am not quite sure which was the second way), and once the handshake takes place (the handshake would involve |
How does A know the connections/ hops to reach B?
Is this needed if the channel is "pinned" to a sequence of connections?
When a channel is setup by A, the "IBC routing" module on H determines the next hop/ connection towards the destination B. At this point, if we follow a typical routing implementation, a "forwarding" entry is set so a simple lookup for future packets destined to B will be performed. In the presence of pre-established channels I don't understand why the packets need to be source routed. |
I think so - just for lookup purposes, not semantically. Alternatively we could decide that channel names are unique on a single chain and avoid this.
I am not quite sure I follow. Are you suggesting packet-switched routing? I don't think that makes sense for IBC because the security assumptions change depending on the route - source routing enables the sender to choose all the hops and thus all the security assumptions. |
Aren't packets over a channel following the same route as the channel itself? why do they need again the source route? |
They need the connection identifiers to distinguish between channels which might have the same name but use different connections. |
I understand this but I have a feeling the intermediate connection info is redundant and only source and destination connections are required; since the source route has been previously passed in during channel handshake the next hop/ connection should be known by intermediate nodes when they look up the destination channel ID+connection. |
Agreed, that would probably work, the relevant routes could be stored in a routing table and should be unique by channel and source connection. |
Some thoughts/ questions on the channel handshake: |
Data structure changes for future compatibility:
Is anything else required? Packet metadata can change later without an issue. |
Loopback will be handled when multi-hop is supported? |
Ah, let's do that now (no reason not to), excellent point. |
Alternatively, channel identifiers could be unique per-port - that seems to make more sense... Then the channel key = |
Note also points raised in #65 (comment) (closed in favor of this issue). |
Multi-hop transaction pricing also seems like huge UX barrier if you're traversing multiple chains and may stall before completion. edit: just noticed this issue was raised in comment 65 above |
is there any progress on this problem? |
@AdityaSripal Do you think the ICS 33 PR covers the requirements described here? If yes, can we then close the issue? |
Followup from #126.
Think about multi-hop case, prepare IBC protocol for eventual usage as such.
The text was updated successfully, but these errors were encountered: