diff --git a/src/_blog/2023-11-introducing-nabu.md b/src/_blog/2023-11-introducing-nabu.md index c785a299..adfca735 100644 --- a/src/_blog/2023-11-introducing-nabu.md +++ b/src/_blog/2023-11-introducing-nabu.md @@ -11,7 +11,7 @@ tags: - 'bitswap' --- -[


](modules.png)
+[
](../assets/nabu/modules.png)
Nabu's API empowers developers with the following methods:
* [id](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-id)
@@ -58,7 +58,7 @@ Let's shed some light on the first of these gems – the P2P HTTP proxy. A compo
Its function is simple yet transformative: it proxies incoming HTTP requests to the specified $peerid while trimming the preceding "/p2p/$peerid/http" path. On the other end, the setup forwards incoming requests to a designated endpoint. This paradigm grants the convenience of traditional HTTP-based architecture, sans the complexities of DNS and TLS certificate authorities. By addressing the node using its public key, secure connections become effortlessly achievable. The diagram below illustrates how we use this proxy in Peergos.
-[
](p2p-http-proxy.png)
+[
](../assets/nabu/p2p-http-proxy.png)
For a simpler example of using this, see our single file demo [chat app](https://github.com/Peergos/nabu-chat/blob/main/src/main/java/chat/Chat.java).
@@ -74,13 +74,13 @@ This leads us to the next optimisation, enabled by only sending block requests t
### Benchmark
We benchmarked Nabu against a real-world dataset – the Peergos PKI – consisting of a [CHAMP](https://blog.acolyer.org/2015/11/27/hamt/) structure with six layers, 6000 blocks, and a total size of ~2 MiB. The results speak volumes: while standard Kubo took 120 seconds to retrieve this dataset using the pin command, Nabu accomplished the task in a mere 5 seconds. And, this was achieved without any significant optimization or parallelisation, leaving much room for further enhancement.
-[
](nabu-speed.png)
+[
](../assets/nabu/nabu-speed.png)
## Compatibility
Ensuring seamless integration, we subjected Nabu to a suite of interoperability tests against all libp2p implementations, including go-libp2p, rust-libp2p, js-libp2p, and nim-libp2p across historical versions. The results of these tests are documented [here](https://github.com/libp2p/test-plans/actions/runs/5671451848/attempts/1#summary-15368587233). Some of the results are below.
-[
](nabu-interop.png)
+[
](../assets/nabu/nabu-interop.png)
## Bringing Nabu to Life: Integration and Usage
Getting started with Nabu is simple. Choose between utilizing it through the HTTP API or embedding it directly into your process. Here's a compilable example of the embedding process in Java: