---
layout: post
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
author: sanaztaheri
published: true
permalink: /rln-relay
category: research
---

<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!
</p>

<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>
