387 lines
26 KiB
HTML
387 lines
26 KiB
HTML
<!DOCTYPE html>
|
||
<html class="h-full" lang="en-US">
|
||
<head>
|
||
|
||
<title>Vac - Waku v2 Update</title>
|
||
|
||
|
||
<meta charset="utf-8" />
|
||
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
||
<title>Vac</title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<script async defer src="https://cdn.simpleanalytics.io/hello.js"></script>
|
||
<noscript><img src="https://api.simpleanalytics.io/hello.gif" alt="" /></noscript>
|
||
|
||
<!-- Fathom - simple website analytics - https://github.com/usefathom/fathom -->
|
||
<script>
|
||
(function (f, a, t, h, o, m) {
|
||
a[h] =
|
||
a[h] ||
|
||
function () {
|
||
(a[h].q = a[h].q || []).push(arguments);
|
||
};
|
||
(o = f.createElement("script")), (m = f.getElementsByTagName("script")[0]);
|
||
o.async = 1;
|
||
o.src = t;
|
||
o.id = "fathom-script";
|
||
m.parentNode.insertBefore(o, m);
|
||
})(document, window, "//fathom.status.im/tracker.js", "fathom");
|
||
fathom("set", "siteId", "YELIA");
|
||
fathom("trackPageview");
|
||
</script>
|
||
<!-- / Fathom -->
|
||
|
||
<!-- Twitter cards -->
|
||
<meta name="twitter:site" content="@vacp2p" />
|
||
<meta name="twitter:creator" content="@oskarth" />
|
||
<meta name="twitter:title" content="Waku v2 Update" />
|
||
|
||
|
||
<meta name="twitter:description" content="A research log. Read on to find out what is going on with Waku v2, a messaging protocol. What has been happening? What is coming up next?" />
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:image" content="https://vac.dev/assets/img/vac.png" />
|
||
|
||
<!-- end of Twitter cards -->
|
||
|
||
<link rel="shortcut icon" href="/assets/img/favicon.png" type="image/png" />
|
||
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin />
|
||
<link rel="preload" href="/fonts/OpenSans-SemiBold.woff2" as="font" type="font/woff2" crossorigin />
|
||
<link rel="preload" href="/fonts/OpenSans-SemiBoldItalic.woff2" as="font" type="font/woff2" crossorigin />
|
||
<link rel="stylesheet" href="/assets/css/style.css" />
|
||
</head>
|
||
|
||
<body class="h-full flex flex-col font-body">
|
||
<div class="flex-grow container max-w-screen-xl mx-auto px-5 md:px-12 lg:pt-6">
|
||
<header class="sm:sticky sm:top-0 bg-white z-50">
|
||
<div class="container max-w-screen-xl sm:border-b">
|
||
<div class="nav-section flex justify-between items-center py-3 md:py-5 lg:py-10">
|
||
<div class="logo md:pr-8 l:p-0">
|
||
<a href="/"><img src="/assets/img/logo.png" alt="Vac logo" class="w-9 h-11" /></a>
|
||
</div>
|
||
<div class="flex justify-between items-center w-9/12">
|
||
<div class="burger block sm:hidden z-50">
|
||
<button class="burger__button burger__button--open fixed top-2 right-5 w-12 h-12" type="button" aria-label="Mobile menu button">
|
||
<img class="burger__icon" src="/assets/img/burger.svg" alt="Open menu button" />
|
||
</button>
|
||
<button class="burger__button burger__button--close hidden fixed top-2 right-5 w-12 h-12" type="button" aria-label="Close mobile menu button">
|
||
<img class="burger__icon burger__icon--close" src="/assets/img/close.svg" alt="Close menu button" />
|
||
</button>
|
||
</div>
|
||
|
||
<nav class="nav max-w-screen-xm md:max-w-screen-sl container">
|
||
<ul class="nav__list hidden sm:flex justify-between container text-xs font-semibold md:pr-8 l:p-0">
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#work">Work</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#about">About</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#join">Join Vac</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/research-log">Research log</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/media">Media</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a href="https://forum.vac.dev/" target="_blank" rel="noopener noreferrer">Forum</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
<ul class="social items-center hidden md:flex">
|
||
<li class="pr-5">
|
||
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">
|
||
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M24.8872 3.04499C23.9872 3.43499 23.0572 3.70498 22.0672 3.82499C23.0872 3.22498 23.8672 2.26499 24.2272 1.09499C23.2672 1.66499 22.2172 2.05499 21.1072 2.29499C20.2072 1.33499 18.9172 0.734985 17.5072 0.734985C14.7772 0.734985 12.5872 2.95499 12.5872 5.65499C12.5872 6.04499 12.6172 6.40498 12.7072 6.76498C8.62721 6.58498 5.02721 4.60498 2.59721 1.63499C0.857207 4.75498 2.80721 7.33499 4.09721 8.20499C3.31721 8.20499 2.53721 7.96499 1.87721 7.60499C1.87721 10.035 3.58721 12.045 5.80721 12.495C5.32721 12.645 4.24721 12.735 3.58721 12.585C4.21721 14.535 6.04721 15.975 8.17721 16.005C6.49721 17.325 4.03721 18.375 0.887207 18.045C3.07721 19.455 5.65721 20.265 8.44721 20.265C17.5072 20.265 22.4272 12.765 22.4272 6.28499C22.4272 6.07499 22.4272 5.86499 22.3972 5.65499C23.4172 4.90499 24.2572 4.03499 24.8872 3.04499Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li class="pr-5">
|
||
<a href="https://github.com/vacp2p" target="_blank" rel="noopener noreferrer">
|
||
<svg width="26" height="25" viewBox="0 0 26 25" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M12.8857 0.856567C6.26021 0.856567 0.915339 6.20154 0.950043 12.7951C0.9778 18.0687 4.43935 22.5427 9.21766 24.1227C9.81824 24.2327 10.0353 23.864 10.0336 23.5474C10.0321 23.2635 10.0177 22.5129 10.0065 21.5171C6.67274 22.238 5.95552 19.9163 5.95552 19.9163C5.40376 18.5369 4.61433 18.1698 4.61433 18.1698C3.51994 17.4296 4.69151 17.4444 4.69151 17.4444C5.89646 17.5291 6.53549 18.6751 6.53549 18.6751C7.61609 20.4989 9.35182 19.9727 10.0342 19.6665C10.1382 18.8951 10.4459 18.3689 10.7878 18.0702C8.12222 17.7684 5.31483 16.7443 5.29076 12.1708C5.2839 10.8672 5.74629 9.80152 6.50989 8.96619C6.3838 8.66445 5.96641 7.45009 6.61027 5.80766C6.61027 5.80766 7.61658 5.4866 9.9167 7.03094C10.8723 6.76636 11.8976 6.63408 12.9191 6.62962C13.9376 6.63556 14.9658 6.76636 15.9257 7.03242C18.2081 5.48809 19.2163 5.80914 19.2163 5.80914C19.8789 7.45306 19.4743 8.66594 19.3529 8.96767C20.1268 9.80301 20.5959 10.8687 20.6028 12.1723C20.6269 16.7577 17.8272 17.767 15.1558 18.0628C15.5882 18.4314 15.976 19.1597 15.9819 20.273C15.9903 21.8693 15.9821 23.1565 15.9841 23.5474C15.9858 23.867 16.2038 24.2386 16.8122 24.1212C21.5663 22.5397 24.9778 18.0672 24.95 12.7951C24.9153 6.20154 19.5142 0.856567 12.8857 0.856567Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">
|
||
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M22.7861 9.04256C21.8482 5.74455 20.7799 4.04048 20.7627 4.00991C20.7017 3.93459 19.189 2.104 15.5271 0.75L15.0353 2.0764C16.7774 2.72057 18.0116 3.50643 18.6899 4.01419C16.6599 3.40408 14.2431 3.03041 12.1008 3.03041C9.95851 3.03041 7.53775 3.40408 5.50128 4.01419C6.18496 3.50648 7.42744 2.72057 9.17631 2.0764L8.69846 0.75C5.02238 2.104 3.49044 3.93459 3.42863 4.00991C3.41108 4.04048 2.32479 5.74455 1.35221 9.04256C0.414855 12.2208 0.0415214 16.7045 0.027872 16.8843C0.109225 17.0131 1.97891 20.25 7.12077 20.25L8.43406 18.3536C6.97595 17.964 5.58693 17.3357 4.31689 16.4832L5.10228 15.3069C7.15122 16.6822 9.54509 17.4092 12.0251 17.4092C14.5051 17.4092 16.9067 16.6822 18.9701 15.3069L19.7431 16.4832C18.4641 17.3357 17.0684 17.964 15.6062 18.3536L16.8995 20.25C22.0414 20.25 23.9452 17.0131 24.0279 16.8843C24.0161 16.7045 23.69 12.2208 22.7861 9.04256ZM8.79853 12.7392H7.39228L7.40468 10.3841H8.81093L8.79853 12.7392ZM16.7071 12.7392H15.3008L15.3132 10.3841H16.7195L16.7071 12.7392Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="overlay container max-w-screen-sm w-full hidden sm:hidden fixed top-0 right-0 h-screen bg-black bg-opacity-40 z-30">
|
||
<nav class="nav-mobile hidden fixed top-0 right-0 flex flex-col justify-between items-center pt-14 px-12 pb-5 bg-white w-9/12 h-3/4 z-40">
|
||
<ul class="nav__list flex flex-col flex-1 justify-between items-center container box-content w-32 h-auto max-h-nav text-xs font-normal">
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#work">Work</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#about">About</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/#join">Join Vac</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/research-log">Research log</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a class="nav__link" href="/media">Media</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
|
||
|
||
</li>
|
||
<li class="hover:opacity-50">
|
||
|
||
<a href="https://forum.vac.dev/" target="_blank" rel="noopener noreferrer">Forum</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
<ul class="social items-center flex mt-8">
|
||
<li class="pr-5">
|
||
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">
|
||
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M24.8872 3.04499C23.9872 3.43499 23.0572 3.70498 22.0672 3.82499C23.0872 3.22498 23.8672 2.26499 24.2272 1.09499C23.2672 1.66499 22.2172 2.05499 21.1072 2.29499C20.2072 1.33499 18.9172 0.734985 17.5072 0.734985C14.7772 0.734985 12.5872 2.95499 12.5872 5.65499C12.5872 6.04499 12.6172 6.40498 12.7072 6.76498C8.62721 6.58498 5.02721 4.60498 2.59721 1.63499C0.857207 4.75498 2.80721 7.33499 4.09721 8.20499C3.31721 8.20499 2.53721 7.96499 1.87721 7.60499C1.87721 10.035 3.58721 12.045 5.80721 12.495C5.32721 12.645 4.24721 12.735 3.58721 12.585C4.21721 14.535 6.04721 15.975 8.17721 16.005C6.49721 17.325 4.03721 18.375 0.887207 18.045C3.07721 19.455 5.65721 20.265 8.44721 20.265C17.5072 20.265 22.4272 12.765 22.4272 6.28499C22.4272 6.07499 22.4272 5.86499 22.3972 5.65499C23.4172 4.90499 24.2572 4.03499 24.8872 3.04499Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li class="pr-5">
|
||
<a href="https://github.com/vacp2p" target="_blank" rel="noopener noreferrer">
|
||
<svg width="26" height="25" viewBox="0 0 26 25" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M12.8857 0.856567C6.26021 0.856567 0.915339 6.20154 0.950043 12.7951C0.9778 18.0687 4.43935 22.5427 9.21766 24.1227C9.81824 24.2327 10.0353 23.864 10.0336 23.5474C10.0321 23.2635 10.0177 22.5129 10.0065 21.5171C6.67274 22.238 5.95552 19.9163 5.95552 19.9163C5.40376 18.5369 4.61433 18.1698 4.61433 18.1698C3.51994 17.4296 4.69151 17.4444 4.69151 17.4444C5.89646 17.5291 6.53549 18.6751 6.53549 18.6751C7.61609 20.4989 9.35182 19.9727 10.0342 19.6665C10.1382 18.8951 10.4459 18.3689 10.7878 18.0702C8.12222 17.7684 5.31483 16.7443 5.29076 12.1708C5.2839 10.8672 5.74629 9.80152 6.50989 8.96619C6.3838 8.66445 5.96641 7.45009 6.61027 5.80766C6.61027 5.80766 7.61658 5.4866 9.9167 7.03094C10.8723 6.76636 11.8976 6.63408 12.9191 6.62962C13.9376 6.63556 14.9658 6.76636 15.9257 7.03242C18.2081 5.48809 19.2163 5.80914 19.2163 5.80914C19.8789 7.45306 19.4743 8.66594 19.3529 8.96767C20.1268 9.80301 20.5959 10.8687 20.6028 12.1723C20.6269 16.7577 17.8272 17.767 15.1558 18.0628C15.5882 18.4314 15.976 19.1597 15.9819 20.273C15.9903 21.8693 15.9821 23.1565 15.9841 23.5474C15.9858 23.867 16.2038 24.2386 16.8122 24.1212C21.5663 22.5397 24.9778 18.0672 24.95 12.7951C24.9153 6.20154 19.5142 0.856567 12.8857 0.856567Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">
|
||
<svg width="25" height="21" viewBox="0 0 25 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="hover:opacity-50">
|
||
<path
|
||
d="M22.7861 9.04256C21.8482 5.74455 20.7799 4.04048 20.7627 4.00991C20.7017 3.93459 19.189 2.104 15.5271 0.75L15.0353 2.0764C16.7774 2.72057 18.0116 3.50643 18.6899 4.01419C16.6599 3.40408 14.2431 3.03041 12.1008 3.03041C9.95851 3.03041 7.53775 3.40408 5.50128 4.01419C6.18496 3.50648 7.42744 2.72057 9.17631 2.0764L8.69846 0.75C5.02238 2.104 3.49044 3.93459 3.42863 4.00991C3.41108 4.04048 2.32479 5.74455 1.35221 9.04256C0.414855 12.2208 0.0415214 16.7045 0.027872 16.8843C0.109225 17.0131 1.97891 20.25 7.12077 20.25L8.43406 18.3536C6.97595 17.964 5.58693 17.3357 4.31689 16.4832L5.10228 15.3069C7.15122 16.6822 9.54509 17.4092 12.0251 17.4092C14.5051 17.4092 16.9067 16.6822 18.9701 15.3069L19.7431 16.4832C18.4641 17.3357 17.0684 17.964 15.6062 18.3536L16.8995 20.25C22.0414 20.25 23.9452 17.0131 24.0279 16.8843C24.0161 16.7045 23.69 12.2208 22.7861 9.04256ZM8.79853 12.7392H7.39228L7.40468 10.3841H8.81093L8.79853 12.7392ZM16.7071 12.7392H15.3008L15.3132 10.3841H16.7195L16.7071 12.7392Z"
|
||
fill="#151512"
|
||
/>
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
|
||
<main class="bg-white text-black flex flex-col"><section class="container max-w-screen-xl flex flex-col items-center pt-10 pb-0 md:pb-10 lg:pb-0">
|
||
<div class="info-block max-w-680 pb-5 sm:pb-10 overflow-hidden">
|
||
<div class="post mb-10">
|
||
<h1 class="text-xl md:text-xxl mb-5 sm:max-w-md lg:max-w-2xl">Waku v2 Update</h1>
|
||
<div>
|
||
<span class="text-s lg:text-base"> 28 Sep 2020 • by </span>
|
||
<a href="/authors/oskarth" class="text-s lg:text-base font-bold hover:underline">oskarth</a>
|
||
</div>
|
||
</div>
|
||
<div class="post__content"><p>It has been a while since the last post. It is time for an update on Waku v2. Aside from getting more familiar with libp2p (specifically nim-libp2p) and some vacation, what have we been up to? In this post we’ll talk about what we’ve gotten done since last time, and briefly talk about immediate next steps and future. But first, a recap.</p>
|
||
|
||
<h1 id="recap">Recap</h1>
|
||
|
||
<p>In the last post (<a href="https://vac.dev/waku-v2-plan">Waku v2 plan</a>) we explained the rationale of Waku v2 - the current Waku network is fragile and doesn’t scale. To solve this, Waku v2 aims to reduce amplification factors and get more user run nodes. We broke the work down into three separate tracks.</p>
|
||
|
||
<ol>
|
||
<li>Track 1 - Move to libp2p</li>
|
||
<li>Track 2 - Better routing</li>
|
||
<li>Track 3 - Accounting and user-run nodes</li>
|
||
</ol>
|
||
|
||
<p>As well as various rough components for each track. The primary initial focus is track 1. This means things like: moving to FloodSub, simplify the protocol, core integration, topic interest behavior, historical message caching, and Waku v1<>v2 bridge.</p>
|
||
|
||
<h1 id="current-state">Current state</h1>
|
||
|
||
<p>Let’s talk about the state of specs and our main implementation nim-waku. Then we’ll go over our recent testnet, Nangang, and finish off with a Web PoC.</p>
|
||
|
||
<h2 id="specs">Specs</h2>
|
||
|
||
<p>After some back and forth on how to best structure things, we ended up breaking down the specs into a few pieces. While Waku v2 is best thought of as a cohesive whole in terms of its capabilities, it is made up of several protocols. Here’s a list of the current specs and their status:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://rfc.vac.dev/spec/10/">Main spec</a> (draft)</li>
|
||
<li><a href="https://rfc.vac.dev/spec/11/">Relay protocol spec</a> (draft)</li>
|
||
<li><a href="https://rfc.vac.dev/spec/12">Filter protocol spec</a> (raw)</li>
|
||
<li><a href="https://rfc.vac.dev/spec/13">Store protocol spec</a> (raw)</li>
|
||
<li><a href="https://rfc.vac.dev/spec/15/">Bridge spec</a> (raw)</li>
|
||
</ul>
|
||
|
||
<p>Raw means there is not yet an implementation that corresponds fully to the spec, and draft means there is an implementation that corresponds to the spec. In the interest of space, we won’t go into too much detail on the specs here except to note a few things:</p>
|
||
|
||
<ul>
|
||
<li>The relay spec is essentially a thin wrapper on top of PubSub/FloodSub/GossipSub</li>
|
||
<li>The filter protocol corresponds to previous light client mode in Waku v1</li>
|
||
<li>The store protocol corresponds to the previous mailserver construct in Waku v1</li>
|
||
</ul>
|
||
|
||
<p>The filter and store protocol allow for adaptive nodes, i.e. nodes that have various capabilities. For example, a node being mostly offline, or having limited bandwidth capacity. The bridge spec outlines how to bridge the Waku v1 and v2 networks.</p>
|
||
|
||
<h2 id="implementation">Implementation</h2>
|
||
|
||
<p>The main implementation we are working on is <a href="https://github.com/status-im/nim-waku/">nim-waku</a>. This builds on top of libraries such as <a href="https://github.com/status-im/nim-libp2p">nim-libp2p</a> and others that the <a href="https://nimbus.team/">Nimbus team</a> have been working on as part of their Ethereum 2.0 client.</p>
|
||
|
||
<p>Currently nim-waku implements the relay protocol, and is close to implementing filter and store protocol. It also exposes a <a href="https://github.com/status-im/nim-waku/blob/master/docs/api/v2/node.md">Nim Node API</a> that allows libraries such as <a href="https://github.com/status-im/status-nim">nim-status</a> to use it. Additionally, there is also a rudimentary JSON RPC API for command line scripting.</p>
|
||
|
||
<h2 id="nangang-testnet">Nangang testnet</h2>
|
||
|
||
<p>Last week we launched a very rudimentary internal testnet called Nangang. The goal was to test basic connectivity and make sure things work end to end. It didn’t have things like: client integration, encryption, bridging, multiple clients, store/filter protocol, or even a real interface. What it did do is allow Waku developers to “chat” via RPC calls and looking in the log output. Doing this meant we exposed and fixed a few blockers, such as connection issues, deployment, topic subscription management, protocol and node integration, and basic scripting/API usage. After this, we felt confident enough to upgrade the main and relay spec to “draft” status.</p>
|
||
|
||
<h2 id="waku-web-poc">Waku Web PoC</h2>
|
||
|
||
<p>As a bonus, we wanted to see what it’d take to get Waku running in a browser. This is a very powerful capability that enables a lot of use cases, and something that libp2p enables with its multiple transport support.</p>
|
||
|
||
<p>Using the current stack, with nim-waku, would require quite a lot of ground work with WASM, WebRTC, Websockets support etc. Instead, we decided to take a shortcut and hack together a JS implementation called <a href="https://github.com/vacp2p/waku-web-chat/">Waku Web Chat</a>. This quick hack wouldn’t be possible without the people behind <a href="https://github.com/libp2p/js-libp2p-examples/">js-libp2p-examples</a> and <a href="https://github.com/libp2p/js-libp2p">js-libp2p</a> and all its libraries. These are people like Jacob Heun, Vasco Santos, and Cayman Nava. Thanks!</p>
|
||
|
||
<p>It consists of a brower implementation, a NodeJS implementation and a bootstrap server that acts as a signaling server for WebRTC. It is largely a bastardized version of GossipSub, and while it isn’t completely to spec, it does allow messages originating from a browser to eventually end up at a nim-waku node, and vice versa. Which is pretty cool.</p>
|
||
|
||
<h1 id="coming-up">Coming up</h1>
|
||
|
||
<p>Now that we know what the current state is, what is still missing? what are the next steps?</p>
|
||
|
||
<h2 id="things-that-are-missing">Things that are missing</h2>
|
||
|
||
<p>While we are getting closer to closing out work for track 1, there are still a few things missing from the initial scope:</p>
|
||
|
||
<p>1) Store and filter protocols need to be finished. This means basic spec, implementation, API integration and proven to work in a testnet. All of these are work in progress and expected to be done very soon. Once the store protocol is done in a basic form, it needs further improvements to make it production ready, at least on a spec/basic implementation level.</p>
|
||
|
||
<p>2) Core integration was mentioned in scope for track 1 initially. This work has stalled a bit, largely due to organizational bandwidth and priorities. While there is a Nim Node API that in theory is ready to be used, having it be used in e.g. Status desktop or mobile app is a different matter. The team responsible for this at Status (<a href="https://github.com/status-im/status-nim">status-nim</a> has been making progress on getting nim-waku v1 integrated, and is expected to look into nim-waku v2 integration soon. One thing that makes this a especially tricky is the difference in interface between Waku v1 and v2, which brings
|
||
us too…</p>
|
||
|
||
<p>3) Companion spec for encryption. As part of simplifying the protocol, the routing is decoupled from the encryption in v2 (<a href="https://github.com/vacp2p/specs/issues/158">1</a>, <a href="https://github.com/vacp2p/specs/issues/181">2</a>). There are multiple layers of encryption at play here, and we need to figure out a design that makes sense for various use cases (dapps using Waku on their own, Status app, etc).</p>
|
||
|
||
<p>4) Bridge implementation. The spec is done and we know how it should work, but it needs to be implemented.</p>
|
||
|
||
<p>5) General tightening up of specs and implementation.</p>
|
||
|
||
<p>While this might seem like a lot, a lot has been done already, and the majority of the remaining tasks are more amendable to be pursued in parallel with other efforts. It is also worth mentioning that part of track 2 and 3 have been started, in the form of moving to GossipSub (amplification factors) and basics of adaptive nodes (multiple protocols). This is in addition to things like Waku Web which were not part of the initial scope.</p>
|
||
|
||
<h2 id="upcoming">Upcoming</h2>
|
||
|
||
<p>Aside from the things mentioned above, what is coming up next? There are a few areas of interest, mentioned in no particular order. For track 2 and 3, see previous post for more details.</p>
|
||
|
||
<p>1) Better routing (track 2). While we are already building on top of GossipSub, we still need to explore things like topic sharding in more detail to further reduce amplification factors.</p>
|
||
|
||
<p>2) Accounting and user-run nodes (track 3). With store and filter protocol getting ready, we can start to implement accounting and light connection game for incentivization in a bottom up and iterative manner.</p>
|
||
|
||
<p>3) Privacy research. Study better and more rigorous privacy guarantees. E.g. how FloodSub/GossipSub behaves for common threat models, and how custom packet
|
||
format can improve things like unlinkability.</p>
|
||
|
||
<p>4) zkSnarks RLN for spam protection and incentivization. We studied this <a href="https://vac.dev/feasibility-semaphore-rate-limiting-zksnarks">last year</a> and recent developments have made this relevant to study again. Create an <a href="https://github.com/vacp2p/specs/issues/189">experimental spec/PoC</a> as an extension to the relay protocol. Kudos to Barry Whitehat and others like Kobi Gurkan and Koh Wei Jie for pushing this!</p>
|
||
|
||
<p>5) Ethereum M2M messaging. Being able to run in the browser opens up a lot of doors, and there is an opportunity here to enable things like a decentralized WalletConnect, multi-sig transactions, voting and similar use cases. This was the original goal of Whisper, and we’d like to deliver on that.</p>
|
||
|
||
<p>As you can tell, quite a lot of thing! Luckily, we have two people joining as protocol engineers soon, which will bring much needed support for the current team of ~2-2.5 people. More details to come in further updates.</p>
|
||
|
||
<hr />
|
||
|
||
<p>If you are feeling adventurous and want to use early stage alpha software, check out the <a href="https://github.com/status-im/nim-waku/tree/master/docs">docs</a>. If you want to read the specs, head over to <a href="https://rfc.vac.dev/spec/10/">Waku spec</a>. If you want to talk with us, join us on <a href="https://get.status.im/chat/public/vac">Status</a> or on <a href="https://t.me/vacp2p">Telegram</a> (they are bridged).</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</div>
|
||
<footer class="footer bg-black flex flex-shrink-0 justify-center">
|
||
<div class="container max-w-screen-xl flex sl:justify-between lm:justify-start p-5 md:px-12 md:pt-5 lg:py-10">
|
||
<div class="logo mr-10 sm:mr-0 sm:w-2/12 lg:w-3/12">
|
||
<a href="/"><img src="/assets/img/logo.png" alt="Vac logo" class="w-9 h-11" /></a>
|
||
</div>
|
||
|
||
<div class="flex flex-col xm:flex-row xm:justify-between sm:w-10/12 lg:w-9/12">
|
||
<p class="hidden sl:inline-block sl:mr-10 text-xxs lg:text-base text-white opacity-75">Vac researches peer-to-peer, private, censorship resistant communication</p>
|
||
<nav class="flex max-w-xs mr-0 xm:mr-5 l:mr-32 mb-5 sm:mb-0">
|
||
<div class="flex">
|
||
<div class="flex flex-col mr-5 sm:mr-10 sl:mr-14">
|
||
<p class="text-xxs lg:text-base text-white opacity-75 mb-5 lg:mb-8">Research</p>
|
||
<ul>
|
||
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
|
||
<a href="/research-log" target="_blank" rel="noopener noreferrer">Log</a>
|
||
</li>
|
||
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
|
||
<a href="https://rfc.vac.dev/" target="_blank" rel="noopener noreferrer">Specs</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="flex flex-col sl:mr-14">
|
||
<p class="text-xxs lg:text-base text-white opacity-75 mb-5 lg:mb-8">Socials</p>
|
||
<ul>
|
||
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
|
||
<a href="https://twitter.com/vacp2p" target="_blank" rel="noopener noreferrer">Twitter</a>
|
||
</li>
|
||
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
|
||
<a href="https://discord.gg/PQFdubGt6d" target="_blank" rel="noopener noreferrer">Discord</a>
|
||
</li>
|
||
<li class="text-xxs lg:text-base text-white hover:opacity-50 mb-5">
|
||
<a href="https://t.me/vacp2p" target="_blank" rel="noopener noreferrer">Telegram</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</div></nav></div>
|
||
</div>
|
||
</footer>
|
||
<script src="/assets/js/main.min.js"></script>
|
||
<script src="/assets/js/smooth-scroll.min.js"></script>
|
||
|
||
</body>
|
||
</html>
|