Hello, everyone. Thank you for joining this event, and thank you very much for the organization
of this death room. Much appreciated. I know how much work this is. Awesome work. Thank
you. So thanks a lot to the whole FOSTEM team. Really cool. This presentation here is mainly
about privacy. And the I2P network is a so-called overlay network, which I will shortly introduce.
And I'm the JavaScript TypeScript library maintainer of this library, which allows you
as developers, me as developer, to write privacy by design applications. Privacy by design
means a few things, which I'm going to talk about shortly after the introduction. I'm
a totally independent researcher and developer, and I'm one of the co-founders behind Diva.exchange,
we're just a loose of bunch of developers and researchers spread all over the world,
very much interested in privacy topics. And one of the topics is free banking technology
for everyone, which is not part of this presentation, but it's no centralized model involved in
my work, so there is no business model at all involved, because if I'm fully distributed,
fully distributed, not only decentralized, fully distributed, it's totally impossible
by design to introduce business models. Obviously, no coin, no token, or things like that. I'd
like to talk quickly about the motivation. So, why I2P-SAM, this SAM got developed, and
how we set up a completely distributed network like I2P, an overlay network. And I obviously
like to talk about creation of applications, so how we do that, and how we can do that.
We look at the use cases and then some questions and take-outs. All right. I'm Conrad, I live
in Switzerland, so, bonjour. Great to have you here. And I lecture at the University
of Applied Science in Lucerne, Central Switzerland, a bit about microservices and fully distributed
systems, where I'm a bit an alien in this cloud world, because today everything is cloud,
but I'm not cloud, I'm peer-to-peer. And now we're here at this I2P network. Let me ask
you a question. Please raise your hands. Who ever got in touch with an overlay peer-to-peer
network like I2P? Again, I'm not totally lonely, so thank you very much. There are a few which
have heard of it, and in a nutshell, I2P is a fully anonymous confidentiality giving messaging
system. So it's, you have the general internet as you know it, and where all the cloud applications
are running somewhere in central services. And this I2P network is a layer on top, it's
a software layer, and everybody who's running such an I2P node is becoming a client and
a server. So when I'm talking about a node, a node which might be run by every one of
you, you're a client and you're a server. You're both at the same time, and you're helping
the network. There are around 34,000 I2P routers in the network, which is a joke. That's nothing.
That's compared to the internet infrastructure as we know it today. That's tiny. That's nothing.
But still, these 34,000 routers, more or less, they run this fully anonymous and fully confidential
messaging system. And please, it's an overlay network. It's not, well, some media call it,
but it's not a darknet. It's just an overlay network. It's a piece of software. It's a
technical solution to a problem. And the problem is we want anonymity and we want confidentiality,
because these two things, by definition, define total privacy. And if I want to disclose my
private stuff, it's my decision and only my decision. And that's the point behind privacy.
All right. So I ask you now, please, in this room, to be open towards peer-to-peer applications
which are a bit more complex, but not really complicated, and open your mind for something
which has nothing to do with the cloud. All right. Why did I do the work and develop a
library, an I2P SAM library? Well, the I2P core developers, they are super cool, hardcore
network guys. And they love what they do since 20 years. Devo chain, which is a fully distributed
storage layer, so something to store data in without trust. And that's kind of a problem.
You can't be spied out. Everything you exchange is totally private. And there is no man in
the middle. There is no man in the middle. Because, again, this I2P network works like
a garlic. All the messages which are hopping through this network from node to node, from
peer to peer, they're multiple times encrypted. So you send your message from your application
into the network layer, and it ends up at the destination, and it's multiple times encrypted.
Just by using the library. That was the motivation. When you appear to peer, just by definition,
you get a bunch of problems you don't really want. And it's complicated a bit to get into
it. So at Devo, we thought, hey, come on, let's build a few Docker containers to simplify
this process. And today, the students at the University of Applied Science and Lucerne,
they were able to set up a complete test network and a complete developer network within a
few minutes. And that's this Docker container you find on GitHub. And, by the way, also
mirrored to Kodberg. But you find it on GitHub. And then you can start by initializing these
containers with a simple script. And with one go, you have your I2P connectivity available.
You have, if you like to, a storage layer available. And you can start programming. You
can start developing without needing to care about all the complexity of such a peer-to-peer
network. And this is a screenshot of GitHub. And here I'd like to be totally open. All
we do at Devo and all I'm doing is really, really free Libre software. There are no
strings attached or strange stuff or things you need from somewhere else. It's really
free. It's really Libre. And it's very strict licensing, which we're doing. So that's quite
important for me personally to have open source software at its core. And that's very important
for me. So there exists also a simplified version. I told you, you need a network to
communicate between your peers. You need maybe a storage layer on top. But the storage layer
is not a necessity. So if you say, well, I just want to communicate. I do not want to
store anything. I do not want to store data. Then you don't need a blockchain because you
don't want to store data. So if you just need to communicate in your application between
peers, then you have this simpler setup. You go with NPM install, I2P SAM. And in there
is a YAML file. That's the last one. So this is SAM.Devo.I2P.YML. And you initialize this
container in there. And you have a very much simplified application development environment
available without storage capabilities. The library got quite popular in the last months.
It has to do with one thing we did for the DNS crowd, domain name system, domain name
service. And the students at the University of Applied Science State got the job from me
to create an API for a DNS system for I2P because I2P does not even have a DNS. So welcome
to Stone Age. And so the library got used by the students and got more popular in the
last months, which is nice. And here we have this, by the way, who is familiar with Docker?
Who is using Docker? Okay. Right. So great. Almost everybody. So yeah, here you have
a YAML file. I don't have to say much. You use it. And, ta-da, you have your environment
available. And everything is available on GitHub on Mirage to Codeberg. Now I want to
go through theoretically to two simple use cases to inspire you to create your own privacy
by design application, your own. We go through two examples. One is reading and the other
example is writing. As you said, as I said, every note in the network, you are a client
and the server at the same time because you're a router within the I2P network. So what we're
doing first, we're reading something from the network. Now the documentation on NPM,
the documentation on GitHub for this library is quite grown up. It's quite complete. That's
my personal view on it. If you have a different view, please do not hesitate to tell me and
improve this documentation because I can learn that much from you. So here we have an example
of creating a reading stream. So you want to read some data from another node in the
I2P network. And you can simply use this very first quick start example and then replace
only the IP which points to your Docker container which we have seen in the YAML file just before
and ta-da, you're communicating through the I2P network. That's it. So privacy by design
and exchanging private messages, totally confidential, anonymous, over the existing
internet infrastructure isn't difficult anymore. Here it is. It's not more. And the same thing
is now also if we're looking into writing data which means nothing else, you're offering
a service on the overlay network I2P. There is the other example in the readme which is
doing both things at the same time. The second example is creating a writing instance. So
serving some data and at the same time, that's the very last part here at the end, it's
reading data. And it's not doing this locally by simply locally connecting from the reading
instance to the writing instance. No, it goes through the overlay network, through I2P completely
and it does its job. A word of warning, I2P is not fast. Confidentiality and total anonymity
has a price tag attached. And this price tag is called speed, latency. So to give you an
idea, when we're reading and writing data from the diva blockchain where we're exchanging
this data over peers, distributed all over the network, we have latencies of three till
five seconds. Three till five seconds. That feels like 1992 or something. So that's the
cost of privacy. You don't get privacy for free. Right, a few use cases. And I'd like
to highlight the second one. The first one is the free banking. That's where I'm working
together with and everybody is invited because we're totally transparent. So if banking is
your thing, yeah, join in. If chat is your thing, then the I2P development team is really
would be super happy to, would be super happy that somebody hops into the chat challenge.
You don't have to worry that the chat application is not good enough because I2P simply has
nothing. So it would be a great thing to start somewhere. And if you're a good user interface
designer or user experience designer, hey, they would be like in heaven if they get something
like that. That would be, wow. Additionally, games could be a topic for some people. But
the latency could be a killer there. So it would be interesting. Right. Since I have
now around eight minutes left, as my colleagues have shown me, which is great, I'd already
like to enter the links, discussions, feedback and questions face of this presentation. So
please, any questions? Oh, yes. Call to action. There are some questions. And there is a micro
phone. Hi. Thank you very much for your presentation. So usually in secure systems, one of the issue
is that due to security, there is more friction for the user. And that's also part of the
cost of implementing secure systems. So, of course, here, almost everybody used Docker.
So that's not an issue. But for, let's say, my grandma, that's going to be a bit more
difficult. It's probably also not the target audience. But on the network side, have you
tried, for example, setting up a compatibility layer with WebSockets or WebRTC so that the
full stack could be run from the browser? Yeah. Short answer. Yes, WebSockets. WebSockets,
not WebRTC. WebSockets is used by Diva, which is a real-time banking exchange system running
on your own device. Yes. Yes. Everything which you, as JavaScript developers and TypeScript
developers do know is on board, it just might be sometimes a bit slow. But I do not believe
that there are additional user experience challenge. Obviously, you're totally right.
But since you are the developer, I have, I just deliver the glue. I just deliver the
glue between the privacy network and the end user interfaces. So the human-machine interaction,
which we as developers should create. But this here, this library is just the glue, which
gives you privacy by design. Thank you very much for this question. More questions? Please.
Hi. Thanks for the presentation as well. How does it compare to other peer-to-peer networks
such as IPFS, for instance? Thank you very much for this question. There are other presentations
in the lightning talk, in the lightning room, just afterwards. First, I have the I2P presentation,
and then there are other overlay networks. Honestly, I can't compare it because I'm
the I2P guy. It says I2P here. But there is quite some research around which compares
these networks. What I'd like to lay out is, on the research gate, which is the academic
network for papers, there are some interesting papers around to read about darknets, and
now I call it darknet, which have storage capabilities suitable for large files. Please
do your own research. Please think what you're doing. Privacy is important, but there are
also bad actors out there. So do your own research, and please read the research gate
papers and articles about overlay networks. Is this okay for you?
When are the lightning talks? It's today the lightning talks. There will be lightning
talks today comparing those different. Okay. So the speed of the networks, the latencies.
No? Don't worry. I'm going to check the links. Thank you.
More questions? Sorry. I actually had a question about the latency. The problem is the number
of the servers know that we have only 34,000. That's the problem. If we got more, that would
mean that we can speed it up. It doesn't let it go faster.
Interesting question. The question is, if there are more nodes in the network, will the network
become faster? By building overlay networks, now theory, tunnel building is involved. Tunnel
means a message hops over several nodes in the network. Now, a message comp can be only
as fast as the slowest node in this route, so in this tunnel. Just by stacking up additional
nodes in this network is not necessarily decreasing the latency of the network. It depends off
the available bandwidth and performance of all the nodes involved within one tunnel.
So the answer to your question is, it depends. More questions?
Yeah. Since there's no other questions, could you give some more context about your free
banking use case, the first one? Right. Yeah. It's a JavaScript type script
application. It's built to exchange any existing or any future digital value, which can be
something like to take an example, which everybody understands, Bitcoin, but also can be something
like a piece of music and art, which is digitally available. It has nothing to do with Ethereum
or directly. It's just an exchange system for all digital values. And here we require
by definition in our foundation, it has to be private by design, because we want that
people decide and not some operation in the center. That's the context I'd like to give
here. Other questions? And thank you very much for your time. Thank you a lot.