Replies: 5 comments 2 replies
-
@litt3, adding you in case you are interested in this topic. |
Beta Was this translation helpful? Give feedback.
-
The problem is that the further a node is behind, the greater the overhead is per sync for the sender to iterate over the hashgraph into the past. This cost is paid for each and every sync, regardless of whether 1 event or 10k events are sent. Since switching to birth rounds entails discarding far future events, it won't be possible to perform large syncs, and the inefficiency will be more impactful. This inefficient syncing could be severe enough that transaction handling is no longer the main bottleneck. Rather, a far behind node might just not be able to get events via sync quickly enough to catch up. |
Beta Was this translation helpful? Give feedback.
-
I agree with @litt3. Some minor clarifications.
This is the key point. If I have event
A minor point, if gossiping with an honest peer, the peer should never send future events. In general, the only time future events need to be discarded is if an attacker is sending events they know are in a peer's future.
I'd suggest thinking of this as "inefficient syncing WILL be severe enough". I experimentally observed this behavior on a real network at scale. If this problem is ignored, I have a high degree of confidence that it will render the sync gossip implementation non-functional when birth rounds are enabled. |
Beta Was this translation helpful? Give feedback.
-
Thank you both for explaining - makes sense! We could keep track of tips by birth round - the most recent event by each creator with a given birth round, keyed by birth round. That way the sender can easily lookup the tips to starts its traversal from the tips of the birth round according to what the receiver will accept. I suppose the value would also be a map, keyed by node id. There is probably a better way to set it up. Will be a fun problem to think on. |
Beta Was this translation helpful? Give feedback.
-
We used to have a sync algorithm implemented that had children pointers, I think it required a lot less traversal. The problem with it was not the algorithm itself, it was the implementation. We could potentially see if that algorithm might solve this issue. |
Beta Was this translation helpful? Give feedback.
-
@cody-littley, in a recent proposal from @rbair23 you posted this:
I want to understand this better. If a node that falls slightly behind due to a temporary network interruption, why could it not catch up via gossip after birth rounds are used to discard events that are too far in the future? Assuming that the behind node can processes events and transactions at least slightly faster than the network, it will advance its birth rounds and, therefore, the future events it can receive via gossip, and eventually catch up. What am I missing?
Beta Was this translation helpful? Give feedback.
All reactions