Ryan's invention in 2003/2004 was the idea to do accounting in edge only rather than both edge and vertice.
https://i.ibb.co/pjrjFD6B/ripple-graph.pngAfter RipplePay, the next step was Ripple Inter Server Protocol, and by 2006 the decentralized multihop payment coordination was a cancel-on-timeout 2-phase commit, with the goal of doing the timeout in "chunks" such that the penalty the timeout introduces would serve as an incentive but not detrimental. The problem with that 2-phase commit is that it only had a penalty on one of the phases (the 2nd phase), and when the penalty was made gradual the cumulative timeout got very long (Ryan referred to "daily penalty rate" in the old Source Forge mailing list) which undermines the timeout as the solution to "stuck payments" in the first phase - where there was no penalty. So Ryan hit a road block, and it was not possible to move past it.
Thus progress stopped in 2006. An attempt at a "hack" was done in 2008 with "staggered timeouts" but it did not fix the problem (and this is why Lightning Network today uses 7 hour delta timeouts...) Thus anything after 2006 was just running in circles, role playing that the problem was solved when it was in fact not. The problem had hit a road block, in 2006.
Fast forward to 2024. I then decided no one had finished Ripple, and I gave it a try myself (without having studied the cancel-on-timeout 2-phase commit from Ryan). I came up with a finish-on-timeout 2-phase commit, the other of the two possible ways to do a 2-phase commit. This approach seemed to work well, I realized it had a penalty on the first phase that should be done gradually (thus the timeout in "chunks"), but then I ran into the problem that there was no penalty on the second phase (i.e., the same problem Ryan ran into, but, from the opposite direction). I started to study Ryan's solution, and co-incidentally, I noticed that if you placed his solution after mine, with an extra phase in between to switch the timeout behviour from finish to cancel, you got a penalty on each phase and thus the "chunked penalty" could work.
https://i.ibb.co/SgdBxkf/example.pngWith the decentralized multihop payment coordination finally solved after 20 years, it was easy to build Ripple Inter Server Protocol.
I decided to write a somewhat low-level and self-sufficient codebase in C, with more or less zero dependencies. It is less than 3000 lines of code, and works great. It prioritized simple, dumb solutions. It limits your trustlines to 16. It uses symmetric cryptography only, and only as "message authentication code". The rationale was: sometimes the dumber solutions are easier to agree on, since they are dumber. It is easy to build versions with elliptic curve asymmetric cryptography or anything else, but to start with, there has to be a proven reference implementation, and that is what I built.
The source code is on
https://pastebin.com/C6qQPdph as one single file. Anyone can feed it into any AI to get things explained, and it is fairly easy to get overview of it all yourself since it is just 3000 lines of code. It is nothing.
For the multi-user version, see
https://resilience.me/ for the code, it's a proxy with a web UI that runs the resilience.c binaries for each user. Works great. Anyone who wants a more sophisticated version can easily build it, my priority was dumb, robust reference implementation that can stand the test of time and preferences on what public key cryptography to use or anything else.
Ripple Inter Server Protocol has been finished since this summer (with an anti-spam feature added this fall) and works great. If anyone is interested in networking, I am available for correspondence. Or if anyone wants to grow the network on your own given the solution to decentralized payments now exists and has been formally presented and proven with implementation, also great.
Hope to see Ripple succeed, and possibly with my "path-based redistribution" (which is fully decentralized, no central agreement on how much you "donate", or pay in tax) as well.
Also note, the reason Ryan solved decentralized multihop, is specifically because all accounting was moved to the edges and vertices made "null". In such a system, it is entirely meaningless without solving the multihop part well (whereas a traditional system like SWIFT can still do the vertice-banking well, and the edge-multihop becomes more of an afterthought). So Ripple uniquely had no choice: solve it, or, be an entirely meaningless system. And Ryan solved half of it by 2006, and I added the other half in 2025. Why I solved it? I also had no choice. I had invented Resilience in 2012, and it required Ripple to work. Emergence by emergency...
Peace, Johan