4 ms·
It's a bit hard to express this with plain English so maybe it makes sense to just write out the pseudo-code. A: attack if acks from B > 0 B: attack if acks f
by dwohnitmok 7y ago
It's a bit hard to express this with plain English so maybe it makes sense to just write out the pseudo-code.
A: attack if acks from B > 0
B: attack if acks from A > 0
Let's look at the current
A --> B : Original message (not an ack)
A <-- B : Ack from B (A is now committed to attacking)
A -/> B : Ack from A is lost, B does not attack
Okay let's change it up
A: attack if acks from B > 1
B: attack if acks from A > 0
A --> B : Original message (not an ack)
A <-- B : Ack from B (A is not yet committed to attacking)
A --> B : Ack from A (B is committed to attacking)
A </- B : Ack from B is lost, A does not attack
The essential problem (which I failed to explain correctly) is that while you can always go from a fixed set of interactions and work out a protocol that would've worked for that particular interaction, you can't go the other direction (starting with a protocol and throwing arbitrary interactions at it).