In this second installment of Meet Your Maintainer, I reached out to Konrad from DIVA.EXCHANGE to talk about DIVA’s research and services. DIVA.EXCHANGE is developing software with the goal of providing free banking technology for everyone. It is secure without a central infrastructure, and based on blockchain and I2P technology.
What got you interested in I2P?
About 10 years ago I had a presentation for “Technologieforum Zug” - a very local technology network for business guys. I was introducing I2P and Tor as overlay networks to them - to show them that other interesting things exist out there.
I was always very much interested in cryptography related technology. In general I can say that my core interests were and still are: networks, freedom and privacy on both a technical and social level, interesting algos, like HashCash between 2000 and 2010, which was a very well working Proof-of-Work algo created at Universities in the UK in the late 90’s.
I2P fascinated me because it is really carefully done - from the architecture to the implementation in Java and C++. Personally I prefer de-coupled and small programs doing one thing. Hence I was pretty fascinated by the C++ version, I2Pd, which is lean, fast and without dependencies. It works very well for me.
What are the qualities in its technical capacity that aligned with your own work or interests?
I adore craftsmanship. That’s art. And I2P is modern craftsmanship. I2P creates values for end users values which can’t be bought: autonomy, liberty and serenity.
I2P fascinates me because it’s agnostic. Anyone can run anything on I2P as long as it talks TCP or UDP - and can handle some latency. Really: “the network is the computer” and the communication is truly private according to the current state of knowledge.
Who is DIVA for?
DIVA gets actively developed and therefore the project is for researchers, software developers, communicators (writers, illustrators…) and for people who want to learn really new stuff in the area of distributed technology.
Once DIVA grows up - please don’t ask me when - DIVA will be a fully distributed, self-hosted bank for everyone.
Can you tell me about what DIVA does?
As said, DIVA will be a fully distributed, self-hosted bank for everyone. “Banking” means: savings, payments, investments, loans - so all that stuff everybody is doing everyday. Please note in this context: DIVA works without any central infrastructure and DIVA will never - as long as I have something to say - be a coin or token. There can’t be any central business model involved. If a transaction creates fees because a node of the distributed infrastructure did some work, then these fees remain at the node which did the work.
Why a “bank”? Because financial liberty and autonomy is key to live a good and peaceful life and to be able to make all those smaller and larger daily decisions in freedom. Therefore people shall own their small and secure technology components to do whatever they like to do without being nudged.
Well, say hello to DIVA, based on I2P.
What are your upcoming goals? What are your stretch goals?
There is a very close goal: understanding the impact of SSU2 which has been lately implemented in I2P. This is a technical goal for the next few weeks.
Then, probably this year: some cryptocurrency transactions using DIVA on testnets. Please don’t forget: DIVA is a research project and people shall be motivated to do their own stuff with DIVA - the way they need it. We don’t run any infrastructure or alike for others except some transparent test networks to increase the knowledge and wisdom of everyone. It’s recommended to stay in touch with DIVA via social networks (twitter.com/@DigitalValueX) or chats to be inspired what to do with DIVA.
I also want to touch an important part for the I2P community: DIVA is based on divachain - which is then based on I2P. Divachain is a very generic fully distributed storage layer. So, just as an example: if some I2P developer believes that a fully distributed, trustless DNS would be a great idea - well, that’s yet another use case of divachain. Fully distributed - no trust needed - all anonymous.
What are some of the other services and contributions you are responsible for?
DIVA.EXCHANGE - which is the open association developing DIVA - runs a reseed server for I2P since a few years. So probably almost every I2P user got somehow in touch with us in the past. Just a note: the DIVA.EXCHANGE reseed server is also available as .onion service - so I2P bootstrapping can be done via the tor network - which is, at least from my perspective, an additional protection layer while entering the network.
DIVA has also created an I2P SAM library. So developers can create any modern application based on I2P. It’s on github and getting more and more popular: github.com/diva-exchange/i2p-sam/. It’s complete, well documented and offers lots of examples.
What are some of the priorities you think that anyone who wants to contribute to the I2P network should consider?
Run your I2P node. Take a look at the different flavours, like Docker versions of I2Pd, or other installs available for multiple operating systems. There are several flavours available and it’s important to be comfortable with the local installation and configuration.
Then: think about your skills - networking skills, programming skills, communication skills? I2P offers lots of interesting challenges: people with networking skills might want to run a reseed server - they are very important to the network. Programmers might help with the Go, C++ or Java version of I2P. And communicators are always needed: talking about I2P from an objective and realistic perspective is helping a lot. Every little bit is great.
Last but not least: if you are a researcher or student - please get in touch with us at DIVA.EXCHANGE or the I2P team - research work is important for I2P.
Where do you see the conversation and outlook on tools like I2P now?
Probably I have to say something about the outlook: I2P is important to everyone. I hope that the I2P community - developers, communicators, etc. - remains motivated by the few which deeply appreciate their hard work on truly challenging technology.
I hope that more and more developers see the benefit to develop software based on I2P. Because this would create more use cases for end users. Then I also hope, that the core I2P programs remain simple and become maybe even more de-coupled. Let me make an example what I mean with “de-coupled”: user interfaces probably should not be baked into applications by developers - because there are front end designers which do have great knowledge and years of experience. Developers should just create an API, like a unix or websocket or a REST interface, so that other services can use the program the way they want it. This makes developers and end users happy.
Can you tell me a bit about your own I2P workflow? What are your own use cases?
I am a developer, tester and researcher. So I need all my stuff in containers to remain flexible. I2Pd is running in 1..n containers on multiple systems to serve stuff like: feeding reseed requests, serving the diva.i2p test website, running parts of the DIVA I2P test network - see testnet.diva.exchange and I also have containers to serve my local browsers as a combined I2P and Tor proxy.
How can the I2P community support your work?
We are on social media, like twitter.com/@DigitalValueX - so follow us there. Additionally we would love to see even more involvement on github.com/diva-exchange - it already got more and more attention in the past months. Thanks a lot for that!
Glossary Of Key Terms
Reseed hosts are needed to for bootstrapping, that is, providing the initial set of I2P nodes for your I2P node to talk to. Depending on the status of your node it may need to bootstrap every now and then if many of the nodes it knows of aren’t contactable.
Reseeding is done over an encrypted connection and all of the bootstrap information is signed by the reseed host you connect to, making it impossible for an unauthenticated source to provide you with false information.
A node or peer is part of a network of computers sharing resources. When you download and install I2P, you participate in routing traffic for others. Every person using I2P is a node or peer. In some cases. people can supply more bandwidth or resources than others to the network. However, peer diversity is important and the more people who use I2P, the stronger the network becomes. When it comes to setting up your node, you can customize and configure your connection and workflow with the I2P network.
I2Pd is a C++ implementation of the I2P protocol is differs from the I2P Java software in the following ways:
Java I2P has built-in applications for torrents, e-mail and so on. i2pd is just a router which you can use with other software through I2CP interface. i2pd does not require Java. It’s written in C++. i2pd consumes less memory and CPU. i2pd can be compiled everywhere gcc or clang presented (including Raspberry and routers). i2pd has some major optimizations for faster cryptography which leads to less consumption of processor time and energy.
In terms of the differences or benefits of using either the C++ or Java version of I2P, the question often comes up. Recently, idk responded to this question on the I2P subreddit. Ultimately, it depends on a persons own use case or desired workflow.
Easy-Install Bundle is the best way to use I2P on Windows for people just getting started. It will automatically get you from starting the router to successfully browsing, every time. However, it doesn’t register as a Windows service, so it’s not as good to use as a 24/7 transit node yet. It contains everything you need to browse, but it’s designed around using I2P interactively and not running services, necessarily.
i2pd on the other hand is very light and efficient and is designed expressly to run as a service. It’s great at being a 24/7 transit node, especially if you install it on your router, or on a Linux server somewhere. It’s got less tools built-in though, so if you want to torrent or browse, you will need to add those tools externally.
Konrad has provided insight into of some of the terms used during the conversation.
Bank for Everyone
The possibility to run locally installed software which is able to do everything a well-known bank can: send and receive payments for anything, give and receive loans, manage investments, etc. Such banking software shall neither be depending on any central software components nor supervised or censored by central components. It’s run and managed by its owner only with all its benefits and reliabilities. The network (see “Blockchain” and “Consensus”) tries to make sure that no network participant (a user running his own bank) is able to cheat.
A piece of software which is able to reliably store arbitrary data. Copies of the software and the storage space is distributed within a network of any size where the network participants do not necessarily trust each other (or maybe not even know each other). A synonym of “blockchain” is “Distributed Layer Technology (DLT)”. A blockchain has nothing to do with “coins” or “tokens”. These are just blockchain based applications. Blockchain is a base technology which mainly solves the problem of “trust & abuse” within a network.
In a distributed system the majority of the participants need to agree on the state of data (the “truth, as defined by the majority” - from a data perspective). This is a continuous process driven by locally installed software and this is called consensus. There are multiple valid consensus algorithms available. Bottom line: all consensus algorithms cost something: CPU cycles, communication capacity etc. - in short: a bunch of data sets is the input and a single reliable, fully distributed data set valid for the majority in the network is the output.