Lokinet contributors share insights into the ongoing rewrite process.
Rewriting Lokinet has been a continually escalating process. It has felt much like swapping an engine in a car, where often the forward-looking best choice is to replace the surrounding components as well. Lokinet touches a lot of different parts of the device it's running on, all in service of operating a complex communication protocol.
That protocol is itself composed of smaller atomic units of communication; a four-hop path is really a series of single-hop connections, with the high-level pattern mediated through them. However, the high-level patterns are undercut by a faulty, unreliable foundation. Just like building a pyramid, if the blocks at the bottom are off by centimetres, the entire structure is compromised. Each building block in the new Lokinet has been reworked and redesigned with efficiency, privacy, and stability in mind.
Rewriting has also been an opportunity to revisit aspects core to the fundamental precepts of Lokinet, like informational security ensured through onion encryption and multi-platform interoperability. Ultimately, this will mediate all Session application traffic as well. Many necessary changes have been made, as it’s easier to change the kitchen countertops when you’re already repainting the cabinets. As a result, the Lokinet reformulation is very much an act of ontology creation. It is a state machine, operating a syntax where there are “things that do things to other things” and “places where these things are done.”
A testnet has been operating on the re-written Lokinet for the entire second-half of the rewrite process. Service node operators can look forward to dramatically increased efficiency in operating logic, from gossiping RC’s, mediating paths, and full mesh integration for every node. Clients are fully path-capable, much more rapidly than before. Here are some raw numbers (all debug builds) straight from the terminal, given a fresh client, default configuration, 0 RCs held locally, no IP optimizations (0RTT, etc):
Start, load, configure, initialize, connect to bootstrap seed, fetch RC’s, connect to 8 relays (twice as many as normally needed): 1.34 seconds on average
All of the above, plus building four 4-hop paths: 1.53 seconds on average
More work obviously remains on the to-do list, like platform-specific polling on platforms unfriendly to polling (thanks MacOS) and reformulating introsets and the keys encrypting them. However, all core functionalities are right on track, and the current unstable development code is on the lokinet/quic-wip branch. Users can look forward to a drastically different user experience with the reformulated Lokinet, and more insights to come on the next Lokinet Rewrite update.