Meet Your Maintainer: DIVA.EXCHANGE

In this second instalment 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

I2P Terms

Reseed Host
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.

Node/ Peer
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 (I2Pdaemon)
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.

I2Pd https://i2pd.readthedocs.io/en/latest/user-guide/FAQ/
Site: https://i2pd.website/

In terms of the differences or benefits of using either the C++ or Java version of I2P, the question often comes up. Ultimately, it depends on a persons own use case or desired workflow.

Recently, idk responded to the question on the I2P subreddit:

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.

Citation:

I2Pd https://i2pd.readthedocs.io/en/latest/user-guide/FAQ/
Site: https://i2pd.website/

r/i2p https://www.reddit.com/r/i2p/comments/xljpul/comment/ipjurh9/?utm_source=share&utm_medium=web2x&context=3

DIVA Terms

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.

Blockchain
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.

Consensus
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.