A year ago today, Stefan Thomas wrote his pivotal github issue introducing ILPv4
, with which the Interledger project decided to focus on streaming payments ("each payment is very small") rather than "all-or-nothing" payments.
As I mentioned in my survey
, ILP/STREAM holds an important niche within the field of Network Ledger Technology, and ILP/STREAM is finding great applications in for instance Coil's web monetization platform, and in micropayments for Cog microservices on Codius, so that's an exciting development!
With Interledger's new focus on streaming payments, the all-or-nothing payment functionality that the ILP-KIT stack supported until then (along with its on-ledger escrow / XCAT functionality), became deprecated. Today I'm giving you NLT-KIT, an open source fork, and continuation of (roughly) the old ILP-KIT's product spec. The name is a pun on Network Ledger Technology = "NLT" and "ILP-KIT", and although it's still a bit buggy at this stage (contributions warmly invited!), what it does is the following:
- users can send each other payments on peer-to-peer trustlines (paying with self-issued money / IOUs)
- this can be between two users on the same server, or on two different servers. In fact I only implemented the federated messaging code path, so if you pay someone who happens to be on the same server, the server goes out and makes a http call to itself. :)
- a trustline can be "topped up" in a circular multi-hop transaction using SHA256 hashlocks. Another way of saying this is that the multi-hop transaction is a multi-hop payment, but for the interpretation of some regulatory frameworks, it's clearer if all transactions are either two-party direct payments for goods/services, or circular multi-hop transactions that have the effect of multi-lateral netting between equal peers, rather than money transmission from a sender to a final recipient.
- routing uses "landmarks": give yourself a random name ('landmark'), learn the landmarks of your neighbors, announce which landmarks you can route network money to/from, and then on a multi-hop transaction, include a list of landmarks as routing hints. There are two kinds of landmarks, ones that describe a node, and ones that describe an end-point on a trustline. Routes always lead to a node (landmark) via a previous node (approach), so one route represents the ability to reach either "landmark" or "landmark:approach". See https://github.com/ledgerloops/nlt-kit/blob/master/docs/Routing.md
- NLT-KIT uses SNAP to implement Synchronized Network Acccounting.
- For simplicity, only one currency is supported, the Unicurn (UCR).
NLT-KIT is not very different from SettleNetwork or ILP-KIT, except maybe for the landmark routing which I think some readers of this list might find interesting.
Try it out, and let me know what you think! :)