vac.dev-experimental-old/_posts/2021-06-05-presenting-js-wa...

107 lines
3.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: post
name: "Presenting JS-Waku: Waku v2 in the Browser"
title: "Presenting JS-Waku: Waku v2 in the Browser"
date: 2021-06-04 12:00:00 +0800
author: franck
published: true
permalink: /presenting-js-waku
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, lets 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 Whats 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>