From 1bc94cc4942ecbf099d23b2749487b410e92469d Mon Sep 17 00:00:00 2001 From: Erwin Kok Date: Thu, 31 Aug 2023 14:57:44 +0200 Subject: [PATCH 1/3] Added kotlin-libp2p-introduction (WIP) --- .../front_matter/templates/blog-post.yml | 1 + src/_blog/kotlin-libp2p-2023.md | 75 ++++++++++++++++++ src/assets/kotlin-2023.png | Bin 0 -> 129416 bytes 3 files changed, 76 insertions(+) create mode 100644 src/_blog/kotlin-libp2p-2023.md create mode 100644 src/assets/kotlin-2023.png diff --git a/.forestry/front_matter/templates/blog-post.yml b/.forestry/front_matter/templates/blog-post.yml index 348964d4..db68c372 100644 --- a/.forestry/front_matter/templates/blog-post.yml +++ b/.forestry/front_matter/templates/blog-post.yml @@ -137,3 +137,4 @@ pages: - src/_blog/webtransport.md - src/_blog/libp2p-and-Ethereum.md - src/_blog/go-libp2p-2022.md +- src/_blog/kotlin-libp2p-2023.md diff --git a/src/_blog/kotlin-libp2p-2023.md b/src/_blog/kotlin-libp2p-2023.md new file mode 100644 index 00000000..714795f6 --- /dev/null +++ b/src/_blog/kotlin-libp2p-2023.md @@ -0,0 +1,75 @@ +--- +tags: + - libp2p + - kotlin +title: Introducing Kotlin-libp2p +description: +date: 2023-08-29 +permalink: "" +translationKey: '' +header_image: /kotlin-2023.png +author: Erwin Kok +--- + +# The kotlin-libp2p project: An Introduction + +For the last two years I have been working on a new libp2p implementation using Kotlin [libp2p-kotlin](https://github.com/erwin-kok/kotlin-libp2p). I presented briefly this new implementation in the libp2p community call, and Prithvi Shahi +was so kind to invite me to write this short blog, of which I am more than happy to do. This blog describes my journey of those first years, my motivation, what I encountered, and such. + +## Background + +I have been a software engineer for more than 20 years, professionally. And as a hobby... well... almost my entire life. I love creating software and I consider it as art. I love well-structured code, I love quality code (robust and well +tested), I love state-of-the-art code. Btw, I should not forget to mention that this new libp2p implementation is entirely made in my spare time on a personal basis (my employer is not involved in any way). + +## Peer To Peer Networking + +So, it started more or less two years ago when a good friend of my was talking about cryptocurrency, specifically Ethereum. I had (and still have) my Kubernetes "cluster" running (just one single node) and I thought: "Well, why not deploy +Ethereum nodes in my cluster?". Nothing fancy, because it was not connected to main-net, but it was working. Nice! And that made me curious, because I knew cryptocurrency, or at least the technology behind it, is decentralized. How do these +nodes communicate with each other? Because it must be entirely different from client-server communication. How do these nodes find each other? How can a node directly connect to another node (NAT, Firewall)? If 'A' sends something to 'B', +perhaps it passes first 'C', 'D' and 'E'. How does it find the optimal route between 'A' and 'B'? And if a node in the mesh network disconnects, or a new node connects, how does the mesh deal with this dynamic behaviour? And that made me +very interested into peer-to-peer networking. + +## Starting with libp2p + +Once curious about P2P, it was not hard to find [libp2p.io](https://libp2p.io/). Nice! There are even specs there! And an implementation (or implementation**s**). How cool is it to connect to such an existing node? I spun up one of the +go-libp2p examples, and I was 'talking' to it. Being a Java programmer professionally it was almost straight forward for me to use that language. So I was just playing around with the different protocols. At first nothing fancy. + +## Implementing crypto + +One of the first things I had the deal with was the cryptography part. BouncyCastle is a very popular crypto implementation in Java, however, I don't like it. The code is not very understandable and is missing some good documentation. I was +spending days on getting BouncyCastle to work with the different crypto key formats, and in the end I thought "How cool is it to implement it myself?". So I did. I implemented the entire crypto stack and it was working. Cool! Btw, I have to +mention that I did not invent the implementation, I largely used the Go implementation as a reference. But it taught me a lot about elliptic curves, finite field theory, etc. + +## Motivation + +The main reason for me to start this project is educational, and for research purposes. When I started this project I was just "playing" around with some protocols. And, over time, I was curious about the next part: how does mplex work? And +noise? And multiformats? And datastore? Etc... Each time my hands were itching to implement the next part, and the next. And from one thing comes the other. I consider software as an art. Just like Van Gogh loves to paint, I love to create +software. I love to see Kademlia working, I love to see Quic working, etc. etc. + +And, the other part is, its open source. I mean, others can use parts of the software that is beneficial for them. Maybe not the whole project, but some ideas, algorithms, etc. + +## Challenges + +When I think of challenges, three areas pops up: threading, Mplex and Swarm. + +I didn't like the threading part in Java, it was not performing well. And, threads don't scale well. So, I was looking for a "light-threads" library and was considering "Project Loom" at the time. However, Project Loom is still in its +infancy stage, and didn't continue with it. Via a colleague I heard about Kotlin and I immediately became enthusiastic, I think it's a very nice language and coroutines are awesome. For people that don’t know: Kotlin is a language developed +by JetBrains and is the preferred language for Android development (but I personally use it for backend work). The Kotlin compiler compiles Kotlin into JVM bytecode (the same bytecode as Java) so Kotlin can run on any compliant JVM and is +fully interoperable with Java. Although coroutines are great, I had to be aware of several things. For example: Suspendable methods can not be called from non-suspendable methods (I think Go does not have this limitation). This is okay, +however, you have to take this into account when designing/developing the software. And, dead-locks can occur when using thread locking mechanisms such as ReentrantLock. Because when a function acquires a lock and is suspended while holding +the lock, when the function is resumed again, it can run on a different thread. + +Although the Mplex protocol is rather trivial, I had some nasty issues while closing streams and connections in the right order. Streams send a 'ClosedFrame' to its peer to indicate the stream is half closed. But, since several streams +share the same Connection, they also share the same output channel which is managed by the Connection. When I close the stream and also the connection. Due to ordering, the connection close can happen before the stream close. In such a +case, the ' +CloseFrame' can not be sent on a closed channel. So, the connection close has to wait until all streams are closed (which is not trivial since a lot of things happen lazily). + +The Swarm opens connections to peers and synchronizing this is a bit tricky. Imagine multiple clients want to open a connection to the same peer. In this case, only one dial should be made to the peer and the connection must be shared +between those clients (clients have distinct streams running atop of this shared connection). Also, a peer can have multiple addresses and I didn't want to have multiple connections to the same peer using different addresses. So, the +addresses are prioritized. First the first address is dialed. If this fails, the second address is dialed. And so on. The last challenge with swarming that I solved was the retrying mechanism. If a peer is offline, I want retry the dial by +first waiting (this increases between dial attempts) and then do the redial. I synchronized everything by using a priority-queue with timestamps. A feature that I didn't implement yet is dial limiting, e.g. a maximum of N dials can occur +simultaneously. + +## + +## What's Next? diff --git a/src/assets/kotlin-2023.png b/src/assets/kotlin-2023.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9b8691ca784bc8a40f295c2ad0a353079949c2 GIT binary patch literal 129416 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 Date: Thu, 31 Aug 2023 15:25:19 +0200 Subject: [PATCH 2/3] Extended kotlin-libp2p-introduction --- src/_blog/kotlin-libp2p-2023.md | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/_blog/kotlin-libp2p-2023.md b/src/_blog/kotlin-libp2p-2023.md index 714795f6..35c4072a 100644 --- a/src/_blog/kotlin-libp2p-2023.md +++ b/src/_blog/kotlin-libp2p-2023.md @@ -23,8 +23,9 @@ tested), I love state-of-the-art code. Btw, I should not forget to mention that ## Peer To Peer Networking -So, it started more or less two years ago when a good friend of my was talking about cryptocurrency, specifically Ethereum. I had (and still have) my Kubernetes "cluster" running (just one single node) and I thought: "Well, why not deploy -Ethereum nodes in my cluster?". Nothing fancy, because it was not connected to main-net, but it was working. Nice! And that made me curious, because I knew cryptocurrency, or at least the technology behind it, is decentralized. How do these +So, it started more or less two years ago when a good friend of mine was talking about cryptocurrency, specifically Ethereum. I had (and still have) a Kubernetes "cluster" running at home (just one single node) and I thought: "Well, why not +deploy Ethereum nodes in my cluster?". Nothing fancy, because it was not connected to main-net, but it was working. Nice! And that made me curious, because I knew cryptocurrency, or at least the technology behind it, is decentralized. How +do these nodes communicate with each other? Because it must be entirely different from client-server communication. How do these nodes find each other? How can a node directly connect to another node (NAT, Firewall)? If 'A' sends something to 'B', perhaps it passes first 'C', 'D' and 'E'. How does it find the optimal route between 'A' and 'B'? And if a node in the mesh network disconnects, or a new node connects, how does the mesh deal with this dynamic behaviour? And that made me very interested into peer-to-peer networking. @@ -46,7 +47,7 @@ The main reason for me to start this project is educational, and for research pu noise? And multiformats? And datastore? Etc... Each time my hands were itching to implement the next part, and the next. And from one thing comes the other. I consider software as an art. Just like Van Gogh loves to paint, I love to create software. I love to see Kademlia working, I love to see Quic working, etc. etc. -And, the other part is, its open source. I mean, others can use parts of the software that is beneficial for them. Maybe not the whole project, but some ideas, algorithms, etc. +And, the other part is, its open source. Meaning, others can use parts of the software that is beneficial for them. Maybe not the whole project, but some ideas, algorithms, etc. ## Challenges @@ -54,22 +55,30 @@ When I think of challenges, three areas pops up: threading, Mplex and Swarm. I didn't like the threading part in Java, it was not performing well. And, threads don't scale well. So, I was looking for a "light-threads" library and was considering "Project Loom" at the time. However, Project Loom is still in its infancy stage, and didn't continue with it. Via a colleague I heard about Kotlin and I immediately became enthusiastic, I think it's a very nice language and coroutines are awesome. For people that don’t know: Kotlin is a language developed -by JetBrains and is the preferred language for Android development (but I personally use it for backend work). The Kotlin compiler compiles Kotlin into JVM bytecode (the same bytecode as Java) so Kotlin can run on any compliant JVM and is -fully interoperable with Java. Although coroutines are great, I had to be aware of several things. For example: Suspendable methods can not be called from non-suspendable methods (I think Go does not have this limitation). This is okay, +by JetBrains and is the preferred language for Android development. The Kotlin compiler compiles Kotlin into JVM bytecode (the same bytecode as Java) so Kotlin can run on any compliant JVM and is fully interoperable with Java. Although +coroutines are great, I had to be aware of several things. For example: Suspendable methods can not be called from non-suspendable methods (I think Go does not have this limitation). This is okay, however, you have to take this into account when designing/developing the software. And, dead-locks can occur when using thread locking mechanisms such as ReentrantLock. Because when a function acquires a lock and is suspended while holding the lock, when the function is resumed again, it can run on a different thread. -Although the Mplex protocol is rather trivial, I had some nasty issues while closing streams and connections in the right order. Streams send a 'ClosedFrame' to its peer to indicate the stream is half closed. But, since several streams -share the same Connection, they also share the same output channel which is managed by the Connection. When I close the stream and also the connection. Due to ordering, the connection close can happen before the stream close. In such a +Although the Mplex protocol is rather trivial, I had some nasty issues while closing streams and closing connections in the right order. Streams send a 'ClosedFrame' to its peer to indicate the stream is half closed. But, since several +streams +share the same Connection, they also share the same output channel which is managed by the Connection. When I close the stream and also the connection, and due to ordering, the connection close can happen before the stream close. In such a case, the ' CloseFrame' can not be sent on a closed channel. So, the connection close has to wait until all streams are closed (which is not trivial since a lot of things happen lazily). -The Swarm opens connections to peers and synchronizing this is a bit tricky. Imagine multiple clients want to open a connection to the same peer. In this case, only one dial should be made to the peer and the connection must be shared +Lastly, the Swarm is responsible for opening connections to peers. And synchronizing this is a bit tricky. Imagine multiple clients want to open a connection to the same peer. In this case, only one dial should be made to the peer and the +connection must be shared between those clients (clients have distinct streams running atop of this shared connection). Also, a peer can have multiple addresses and I didn't want to have multiple connections to the same peer using different addresses. So, the addresses are prioritized. First the first address is dialed. If this fails, the second address is dialed. And so on. The last challenge with swarming that I solved was the retrying mechanism. If a peer is offline, I want retry the dial by -first waiting (this increases between dial attempts) and then do the redial. I synchronized everything by using a priority-queue with timestamps. A feature that I didn't implement yet is dial limiting, e.g. a maximum of N dials can occur -simultaneously. +first waiting (this increases between dial attempts) and then do the redial. And then multiple times. I synchronized everything by using a priority-queue with timestamps. A feature that I didn't implement yet is dial limiting, e.g. a +maximum of N dials can occur simultaneously. -## +## Satisfactions + +The things the I loved to implement were several: Swarm, Datastore, Eventbus, and more. But the nicest satisfaction I had was the way how to handle ktor streams. I use Ktor as a low-level network library (opening sockets, sending/receiving +packets, etc). Ktor is very generic and there are several ways to do the same thing, using packets(builders), using lambdas, but they all had their limitations/issues. In the end I settled with byte-channels and up till now they fulfil all +my needs. Actually, it is pretty straightforward: using a coroutine that reads N bytes from a byte-channel, do some processing (multiplexing/decrypting/encrypting/etc) and put it on another byte-channel which is shared by the next 'hub', ## What's Next? + +The next part is probably finishing the Identify protocol implementation (because I already started that) and then I start implementing Quic. After Quic I would like to implement Kademlia. Note that I currently do this in my spare time, so I have limited time available. From f8811283dac9babb699b249febd1d63537d47af5 Mon Sep 17 00:00:00 2001 From: Erwin Kok Date: Fri, 1 Sep 2023 10:09:15 +0200 Subject: [PATCH 3/3] Fixed some typos, layout, wording --- src/_blog/kotlin-libp2p-2023.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/_blog/kotlin-libp2p-2023.md b/src/_blog/kotlin-libp2p-2023.md index 35c4072a..c606b703 100644 --- a/src/_blog/kotlin-libp2p-2023.md +++ b/src/_blog/kotlin-libp2p-2023.md @@ -4,7 +4,7 @@ tags: - kotlin title: Introducing Kotlin-libp2p description: -date: 2023-08-29 +date: 2023-09-01 permalink: "" translationKey: '' header_image: /kotlin-2023.png @@ -75,10 +75,13 @@ maximum of N dials can occur simultaneously. ## Satisfactions -The things the I loved to implement were several: Swarm, Datastore, Eventbus, and more. But the nicest satisfaction I had was the way how to handle ktor streams. I use Ktor as a low-level network library (opening sockets, sending/receiving -packets, etc). Ktor is very generic and there are several ways to do the same thing, using packets(builders), using lambdas, but they all had their limitations/issues. In the end I settled with byte-channels and up till now they fulfil all -my needs. Actually, it is pretty straightforward: using a coroutine that reads N bytes from a byte-channel, do some processing (multiplexing/decrypting/encrypting/etc) and put it on another byte-channel which is shared by the next 'hub', +The things that I loved to implement were several: Swarm, Datastore, Eventbus, and more. But the nicest satisfaction I had was the way how to handle ktor streams. I use Ktor as a low-level network library (opening sockets, sending/receiving +packets, etc.). Ktor is very generic and there are several ways to do the same thing, using packets(builders), using lambdas, but they all had their limitations/issues. In the end I settled with byte-channels and up till now they fulfil all +my needs. Actually, it is pretty straightforward: using a coroutine that reads N bytes from a byte-channel, do some processing (multiplexing/decrypting/encrypting/etc.) and put it on another byte-channel which is shared by the next 'hub' of +the processing pipeline. And Kotlin knows the concept of structured concurrency, such that a parent coroutine always waits for completion of its child coroutines (in a tree like structure). And, when a parent is cancelled, all its children +are cancelled as well. ## What's Next? -The next part is probably finishing the Identify protocol implementation (because I already started that) and then I start implementing Quic. After Quic I would like to implement Kademlia. Note that I currently do this in my spare time, so I have limited time available. +The next part is probably finishing the Identify protocol implementation (because I already started that) and then I start implementing Quic. After Quic I would like to implement Kademlia. Note that I currently do this in my spare time, so +I have limited time available.