forked from I2P_Developers/i2p.www
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 %}
|