Why I wrote LLARP

Recently I happened across a bitcoin talk thread while peeking at my blog's http access log at a time when I should've been doing work instead.

I'll probably take this chance to make it very clear what llarp/lokinet is and is not and why it even exists in the first place.

I can say that, in my opinion, llarp/lokinet is attempting to be a protocol to replace i2p.

I2P has a mountain of technical debt in their protocols that have been taking several (5+) years now to rectify. It is in fact easier to rewrite the whole thing than to rebase the protocol atop sanity. I am not the first person to suggest this by any means, nor the first to attempting it. The first attempt I have seen was the shadow protocol from 2013. For whatever reason it died off, I personally suspect it was because of …

Read more ...

Lokinet Update March 2019

We are most likely on schedule for an end of Q1 2019 "public release" of lokinet if all goes well in the internal testing phase. ( don't know why we are considering it a public release since the code is public already but eh... ‾\(._.)/‾ ) We have an internal code freeze in mid march and I hope to have a stable build ready.

Unit tests are HARD D:

It's been about 10 months since I started working on lokinet full time. The master branch on github has been relatively stable for 2 months and work on the staging branch is very heavy. We have currently 855 test cases across 95 test suites and we're not even close to full test coverage. You can generate a progress report on unit test converage as of now (March 2019) here. My personal goal is to get at least 85% coverage on the code base by …

Read more ...

i2pd 2.23.0 static arm build

my unofficial static arm build for i2pd 2.23.0 is up here.

make sure to check the signature and verify the hash


e4cf21c06ae441030253dcb636eb05f0b5dc6405879b86b3b8f734a3195856ab20163c780c1c144e47f50dd9f8dc748bd243739262e2bd98fe05dac473c5c4b8  i2pd

the build was compiled with -Os and stripped for smaller size, so you may have better speed on systems without speculative execution like the raspberry pi 1.


  • openssl 1.1.1a
  • boost 1.62.0

nntpchan 3.1.0 released

Rejoice, nntpchan 3.1.0 has been tagged.

This release is a security update so All NODES are advised to upgrade

  • prevent mod message pubkey spoofing
  • support for ed25519-blake2b signatures

Download on github here and join us on IRC to peer into the main network.

we are on the following networks:

rizon: irc.rizon.net #nntpchan

freenode: irc.freenode.org #nntpchan

Kovri and the curious case of code rot (part 3)

Before the final post I'll give on this topic, a bit of backstory as I understand it.

During winter of 2015 (or was it 2016? I forget.) orignal the original author of i2pd took a 2 week winter vacation while the codebase was in shambles. During this break some of the contributors of i2pd decided to hard fork the codebase starting with turning all the tabs to spaces. It is unclear if Anonimal was a part of the group or not.

When original came back he flipped his living shit and put his new changes that used openssl onto Bitbucket and then later merged it on Github in another branch. This is the historical reason why i2pd uses the openssl branch and not master as the primary branch.

Kovri is based off the code base before the openssl branch which is truly godawful, however almost none of it remains in …

Read more ...

Kovri and the curious case of code rot (part 2)

Kovri has decided to fork the i2p protocol stack [1]. I too have had frustrations with the direction and pase of java i2p and I can understand why they made this descision.

In my personal opinion, I don't think kovri will succeed in their fork of the i2p protocol stack with its current talent pool. After their 2 years of shuffling whitespaces around and not noticing code leaking regions of memory (until stiffing a security researcher that found it while exploit hunting) I don't think they'll produce a minimum viable product for a very very very long time, if ever. This is not meant to poke fun at the people at monero and kovri as I really wanted to see the fork succeed, very much so and I am dissapointed in the net result of the effort.

Parallell to all this kovri tom foolery, since Late April 2018 I have …

Read more ...

Quick Lokinet Update December 2018

A very large amount of work happened with lokinet development since the last blog update in august. As of writing, exit traffic works, hidden services work and service node traffic is wired up but untested. I also took the liberty of refactoring the dns code used in lokinet.

If lokinet is to thrive you want to make the transition to it as painless as possible, hence why I chose DNS as the primary mechanism of controlling when to look up things on the network. Most if not all network aware programs use DNS first when trying to figure out how to connect to something, excpet if it looks like an IP address. It's far more complex under the hood but from the end user's point of view it's effectively so.

By having lokinet expose IP and DNS only, everything written should trivially work with little or no application porting needed …

Read more ...

i2pd 2.21 released

i2pd (I2P Daemon) is a full-featured C++ implementation of I2P client.

I2P (Invisible Internet Protocol) is a universal anonymous network layer. All communications over I2P are anonymous and end-to-end encrypted, participants don't reveal their real IP addresses.

I2P client is a software used for building and using anonymous I2P networks. Such networks are commonly used for anonymous peer-to-peer applications (filesharing, cryptocurrencies) and anonymous client-server applications (websites, instant messengers, chat-servers).

I2P allows people from all around the world to communicate and share information without restrictions.

i2pd is licensed under the 3-clause BSD license, binary packages are available for Debian, Ubuntu, OS X, FreeBSD, Android and Windows.

View release on GitHub

Changelog for i2pd version 2.21:


  • NTCP2 ipv6 incoming connections
  • Support android api > 26
  • Show total number of destination's outgoing tags in the web console


  • Use EdDSA, x25519 and SipHash from openssl 1.1.1 if available


  • Bandwidth …

Read more ...

i2pd 2.20.0 static arm build

my unofficial static arm build for i2pd 2.20.0 is up here.

make sure to check the signature or verify the hash


f10bf0c2e913e420125ac392fa9c27f8ccdd16268acec5a1ef7e5b96621e813b05c5361c862e2bfa48e3d3590c7dff127c9676ddc78f7497945f120161ac43be  i2pd


bc5ab06804f076c0b8118e1bf29aef1ba5432bf39440c0b5d696187b87312f84  i2pd

the build was compiled with -Os and stripped for smaller size, so you may have better speed on systems without speculative execution like the raspberry pi 1.


  • openssl 1.1.1
  • boost 1.62.0

LokiNET 0.2.2 released

The first mostly working version of LokiNET has been released, 0.2.2.

This means that it's now time to start getting people to run LokiNET routing infrastructure, yes that includes you. If you have a spare server and don't mind a little bit of bandwidth being put to use for "science and such" please consider helping out by setting up lokinet in particiation mode.

The rest of this blog will document the process of compiling from source and setting

Install the build dependencies (assuming ubuntu or debian here):

$ sudo apt install libcap-dev build-essential cmake ninja-build git libtool autoconf

Next, check out the lokinet source code, this repo is recursive.

$ git clone --recursive https://github.com/loki-project/lokinet-builder ~/lokinet-builder

Now we build lokinet

$ cd ~/lokinet-builder
$ make

The result is a lokinet binary as well as a few other tools that you can ignore for now.

Install the lokinet binary to …

Read more ...