348 lines
14 KiB
ReStructuredText
348 lines
14 KiB
ReStructuredText
{% trans -%}
|
||
==================================
|
||
Meet your Maintainer: DivaExchange
|
||
==================================
|
||
{%- endtrans %}
|
||
.. meta::
|
||
:author: sadie
|
||
:date: 2022-09-26
|
||
:category: general
|
||
:excerpt: {% trans %}A conversation with DivaExchange{% endtrans %}
|
||
|
||
{% trans -%}
|
||
*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.*
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}What got you interested in I2P?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}What are the qualities in its technical capacity that aligned with
|
||
your own work or interests?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Who is DIVA for?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
Once DIVA grows up - please don’t ask me when - DIVA will be a fully
|
||
distributed, self-hosted bank for everyone.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Can you tell me about what DIVA does?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
Well, say hello to DIVA, based on I2P.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}What are your upcoming goals? What are your stretch goals?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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 <http://twitter.com/@DigitalValueX>`__) or
|
||
chats to be inspired what to do with DIVA.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}What are some of the other services and contributions you are
|
||
responsible for?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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/ <http://github.com/diva-exchange/i2p-sam/>`__.
|
||
It’s complete, well documented and offers lots of examples.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}What are some of the priorities you think that anyone who wants to
|
||
contribute to the I2P network should consider?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Where do you see the conversation and outlook on tools like I2P now?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Can you tell me a bit about your own I2P workflow? What are your own
|
||
use cases?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}How can the I2P community support your work?{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
We are on social media, like
|
||
`twitter.com/@DigitalValueX <http://twitter.com/@DigitalValueX>`__ - so
|
||
follow us there. Additionally we would love to see even more involvement
|
||
on `github.com/diva-exchange <http://github.com/diva-exchange>`__ - it
|
||
already got more and more attention in the past months. Thanks a lot for
|
||
that!
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Glossary Of Key Terms{%- endtrans %}**
|
||
|
||
**{% trans -%}I2P Terms{%- endtrans %}**
|
||
|
||
**{% trans -%}Reseed Host{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Node/Peer{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**I2Pd (I2Pdaemon)**
|
||
|
||
{% trans -%}
|
||
I2Pd is a C++ implementation of the I2P protocol is differs from the I2P
|
||
Java software in the following ways:
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
*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.*
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
Citation: https://i2pd.readthedocs.io/en/latest/user-guide/FAQ/ Site:
|
||
https://i2pd.website/
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
*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.*
|
||
{%- endtrans %}
|
||
|
||
{% trans -%}
|
||
*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.*
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Diva Terms{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
Konrad has provided insight into of some of the terms used during the
|
||
conversation.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Bank for Everyone{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Blockchain{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|
||
|
||
**{% trans -%}Consensus{%- endtrans %}**
|
||
|
||
{% trans -%}
|
||
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.
|
||
{%- endtrans %}
|