Have noticed "lightning network" seems to rely on same DoS prevention as Interledger did before "stream payments" and same as Ripple Inter Server Protocol ideas used in 2008-2012, so I can apologize publicly to David and agree that "lightning" has things in common with Ripple. Just like ideas where each node is a mutual currency community like a LETS (like Evgenis ideas) have things in common with Ripple. All those systems have to solve the coordination decentralized multi-hop payments, they are all in the same boat.
And, I have solved how to coordinate multi-hop payments.
The problem is Denial of Service (DoS) attacks. A timeout is part of the solution, but a timeout cannot exist without also imposing a penalty (the timeout always leads to a penalty), and with that a risk of penalizing a non-attacker.
The solution to avoid penalizing a non-attacker is to do the penalty in "chunks", continuous timeouts with "chunks" of payment rather than all the payment at once.
But, with continuous timeouts, the duration of the combined timeouts gets too long. So the timeout itself can no longer prevent DoS, only the penalty can.
A timeout can be used in one of two ways. It can cancel the payment once the timeout is reached, or it can finish the payment once timeout is reached. Either way it is used, there is DoS vectors that are not penalized.
Only by combining the two ways the timeout can be used (starting with that it finishes the payment and ending with that it cancels the payment) can all DoS vectors be penalized. I.e., only by combining both "trivial solutions" can the penalty be done in "chunks" (which leads to much longer penalty duration and thus makes the timeout itself vulnerable to DoS attacks).
Then for the scenario where attacker controls both ends of penalty (the sender and receiver) the fees added on top of payment (and paid out in proportion to how long payment was stuck) is also needed.
It is quite easy to see why no one managed to solve this. It is not overly complicated, but, both "trivial solutions" (the one Ryan had in 2006 and the one I had this winter) are incomplete solutions, but they are still good enough that they might seem like the complete solution. I mean, every single multi-hop payment system for the past 20 years has assumed the trivial solution that defaults to cancel is "it". I assume people considered the other one (that defaults to finish), and some may have preferred it. Myself, I saw it as a full solution just like others see the other trivial solution in "lightning" etc as the full solution. But, it seems no one considered combining them. I only did so because of the feedback from Ryan and Michiel, for example, who defended the "cancel on timeout" approach and did not seem to support the "finish on timeout" approach (although it is equally good, more or less).
David, Jorge, have both publicly demonstrated here they will not interact with my claim to have solved multihop payments (based on critique of my person but without a single word said about my solution) and this is fair, but to do my part to meet half way I can acknowledge "lighting" and any other multi-hop system has a lot in common. Ripple should also be allowed to be its own thing though (and my Resilience only works on Ripple...), but all projects need the same thing and I have here in this mailing list presented exactly what that thing is.
I attach an extremely simple to understand pdf, with flow chart illustrations that show both "trivial solutions" and the combined solution (the one it seems no one has noticed until me now).
Peace, Johan