2021-08-02 16:50:16 +00:00
|
|
|
|
---
|
|
|
|
|
layout: post
|
2021-08-06 10:17:19 +00:00
|
|
|
|
name: "Privacy-preserving p2p economic spam protection in Waku v2"
|
|
|
|
|
title: "Privacy-preserving p2p economic spam protection in Waku v2"
|
|
|
|
|
date: 2021-03-05 12:00:00 +0800
|
2021-08-02 16:50:16 +00:00
|
|
|
|
author: sanaztaheri
|
|
|
|
|
published: true
|
|
|
|
|
permalink: /rln-relay
|
2021-08-06 10:17:19 +00:00
|
|
|
|
category: research
|
2021-08-02 16:50:16 +00:00
|
|
|
|
---
|
2021-08-06 10:17:19 +00:00
|
|
|
|
|
2021-08-06 13:40:07 +00:00
|
|
|
|
<p class="post__intro">
|
|
|
|
|
For the past 3 months, we have been working on bringing Waku v2 to the
|
|
|
|
|
browser. Our aim is to empower dApps with Waku v2, and it led to the creation
|
|
|
|
|
of a new library. We believe now is good time to introduce it!
|
2021-08-02 16:50:16 +00:00
|
|
|
|
</p>
|
|
|
|
|
|
2021-08-06 13:40:07 +00:00
|
|
|
|
<div class="post__block">
|
|
|
|
|
<h2 class="post__subheading">Waku v2</h2>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
First, let’s review what Waku v2 is and what problem it is trying to solve.
|
|
|
|
|
</p>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
Waku v2 comes from a need to have a more scalable, better optimised solution
|
|
|
|
|
for the Status app to achieve decentralised communications on resource
|
|
|
|
|
restricted devices (i.e., mobile phones). The Status chat feature was
|
|
|
|
|
initially built over Whisper. However, Whisper has a number of caveats which
|
|
|
|
|
makes it inefficient for mobile phones. For example, with Whisper, all
|
|
|
|
|
devices are receiving all messages which is not ideal for limited data
|
|
|
|
|
plans.
|
|
|
|
|
</p>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
To remediate this, a Waku mode (then Waku v1), based on devp2p, was
|
|
|
|
|
introduced. To further enable web and restricted resource environments, Waku
|
|
|
|
|
v2 was created based on libp2p. The migration of the Status chat feature to
|
|
|
|
|
Waku v2 is currently in progress. We see the need of such solution in the
|
|
|
|
|
broader Ethereum ecosystem, beyond Status.
|
|
|
|
|
</p>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
This is why we are building Waku v2 as a decentralised communication
|
|
|
|
|
platform for all to use and build on. If you want to read more about Waku v2
|
|
|
|
|
and what it aims to achieve, checkout What’s the Plan for Waku v2?.Since
|
|
|
|
|
last year, we have been busy defining and implementing Waku v2 protocols in
|
|
|
|
|
nim-waku, from which you can build wakunode2. Wakunode2 is an adaptive and
|
|
|
|
|
modular Waku v2 node, it allows users to run their own node and use the Waku
|
|
|
|
|
v2 protocols they need. The nim-waku project doubles as a library, that can
|
|
|
|
|
be used to add Waku v2 support to native applications.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="post__block">
|
|
|
|
|
<h2 class="post__subheading">Waku v2 in the browser</h2>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
JS-Waku is a JavaScript library that allows your dApp, wallet or other web
|
|
|
|
|
app to interact with the Waku v2 network. It is available right now on npm:
|
|
|
|
|
</p>
|
|
|
|
|
<div class="text-white post__text">
|
|
|
|
|
<span class="bg-black px-2">const waku = await Waku.create({});</span>
|
|
|
|
|
</div>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
As it is written in TypeScript, types are included in the npm package to
|
|
|
|
|
allow easy integration with TypeScript, ClojureScript and other typed
|
|
|
|
|
languages that compile to JavaScript.
|
|
|
|
|
</p>
|
|
|
|
|
<p class="post__text">
|
|
|
|
|
Key Waku v2 protocols are already available:
|
|
|
|
|
<a
|
|
|
|
|
class="link link--body hover:opacity-50"
|
|
|
|
|
href="https://vac.dev/"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
>message,</a
|
|
|
|
|
>
|
|
|
|
|
<a
|
|
|
|
|
class="link link--body hover:opacity-50"
|
|
|
|
|
href="https://vac.dev/"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
>store,</a
|
|
|
|
|
>
|
|
|
|
|
<a
|
|
|
|
|
class="link link--body hover:opacity-50"
|
|
|
|
|
href="https://vac.dev/"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
>relay</a
|
|
|
|
|
>
|
|
|
|
|
and
|
|
|
|
|
<a
|
|
|
|
|
class="link link--body hover:opacity-50"
|
|
|
|
|
href="https://vac.dev/"
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
|
>light push,</a
|
|
|
|
|
>
|
|
|
|
|
enabling your dApp to:
|
|
|
|
|
</p>
|
|
|
|
|
<ul class="post__text">
|
|
|
|
|
<li>Send and receive near-instant messages on the Waku network (relay),</li>
|
|
|
|
|
<li>
|
|
|
|
|
Query nodes for messages that may have been missed, e.g. due to poor
|
|
|
|
|
cellular network (store),
|
|
|
|
|
</li>
|
|
|
|
|
<li>Send messages with confirmations (light push).</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|