Files
i2p.www/i2p2www/blog/2022/09/26/meet-your-maintainer-divaexchange.rst

348 lines
14 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% 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 DIVAs 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
90s.
{%- 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. Thats art. And I2P is modern craftsmanship. I2P
creates values for end users values which cant be bought: autonomy,
liberty and serenity.
{%- endtrans %}
{% trans -%}
I2P fascinates me because its 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 dont 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 cant 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 dont forget: DIVA is a research project and people
shall be motivated to do their own stuff with DIVA - the way they need
it. We dont run any infrastructure or alike for others except some
transparent test networks to increase the knowledge and wisdom of
everyone. Its 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, thats 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. Its on github and getting more and
more popular:
`github.com/diva-exchange/i2p-sam/ <http://github.com/diva-exchange/i2p-sam/>`__.
Its 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 its 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 arent 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. Its 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 doesnt
register as a Windows service, so its not as good to use as a 24/7
transit node yet. It contains everything you need to browse, but its
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. Its great at being a 24/7 transit node,
especially if you install it on your router, or on a Linux server
somewhere. Its 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. Its 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 %}