hemingway

This commit is contained in:
fryorcraken.eth 2022-11-08 14:21:40 +11:00
parent 6a1bd01432
commit 3178744a06
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4
1 changed files with 64 additions and 74 deletions

View File

@ -8,24 +8,15 @@ published: true
permalink: /waku-for-all permalink: /waku-for-all
categories: waku, dapp, infrastructure, public good, platform, operator categories: waku, dapp, infrastructure, public good, platform, operator
summary: | summary: |
Waku is an open communication protocol and network that decentralized apps and infrastructure can use for their Waku is an open communication protocol and network. Decentralized apps and infrastructure can use Waku for their
communication needs. It is designed to enable dApps and decentralized infrastructure projects to have secure, private, communication needs. It is designed to enable dApps and decentralized infrastructure projects to have secure, private,
scalable communication. Waku is available in several languages and platforms, from Web to mobile to desktop to cloud. scalable communication. Waku is available in several languages and platforms, from Web to mobile to desktop to cloud.
We initially pushed Waku adoption to the Web ecosystem, we learned that Waku is usable in a variety of complex applications Initially, We pushed Waku adoption to the Web ecosystem, we learned that Waku is usable in a variety of complex applications
and infrastructure projects. We have prioritized our effort to make Waku usable on various platforms and environments. and infrastructure projects. We have prioritized our effort to make Waku usable on various platforms and environments.
image: /img/black-waku-logo-with-name.png image: /img/black-waku-logo-with-name.png
discuss: TODO discuss: TODO
--- ---
<!--
Audience: Reader curious about Waku/following Waku
Goal:
- Trigger Ha-ha moment for Waku possibilities
- Explain shift from Web to all dApps
- Make it clear that Waku is being field tested, it is more than a research project
- Ideas on how to contribute/participate/play with Waku
-->
# Background # Background
We have built Waku to be a communication layer for Web3. Waku is a collection of protocols to chose from for your We have built Waku to be a communication layer for Web3. Waku is a collection of protocols to chose from for your
@ -36,16 +27,17 @@ It is designed to run on any device, from mobile to the cloud.
<!-- TODO: more about Waku Readiness --> <!-- TODO: more about Waku Readiness -->
This involves research efforts in various domains: conversational security, protocol incentivization, zero-knowledge, This involves research efforts in various domains: conversational security, protocol incentivization, zero-knowledge,
anonymity to name a few. etc.
To ensure we reach our goals, we knew that early dogfooding of Waku was necessary, even if research was still Waku involves several novel technologies. Hence, we knew that early dogfooding of Waku was necessary. Even if research
_in progress_ [[1]](#footnote1). Thus, as soon as Waku protocols and software were usable, we started to push for the was still _in progress_ [[1]](#footnote1). Thus, as soon as Waku protocols and software were usable, we started to push
adoption of Waku. This started back in 2021. for the adoption of Waku. This started back in 2021.
Waku is the communication component of the Web3 trifecta, which originally was Ethereum (contracts), Swarm (storage) Waku is the communication component of the Web3 trifecta. This trifecta was Ethereum (contracts), Swarm
and Whisper (communication). Hence, it made sense to first target dApps which already uses one of the Web3 pillars: Ethereum. (storage) and Whisper (communication). Hence, it made sense to first target dApps which already uses one of the Web3
pillars: Ethereum.
As most dApps are web apps, we naturally started the development of [js-waku for the browser](https://vac.dev/presenting-js-waku). As most dApps are web apps, we started the development of [js-waku for the browser](https://vac.dev/presenting-js-waku).
Once ready, we reached out to dApps to integrate Waku, added [prizes to hackathons](https://twitter.com/waku_org/status/1451400128791605254?s=20&t=Zhc0BEz6RVLkE_SeE6UyFA) Once ready, we reached out to dApps to integrate Waku, added [prizes to hackathons](https://twitter.com/waku_org/status/1451400128791605254?s=20&t=Zhc0BEz6RVLkE_SeE6UyFA)
and gave [talks](https://docs.wakuconnect.dev/docs/presentations/). and gave [talks](https://docs.wakuconnect.dev/docs/presentations/).
@ -53,13 +45,13 @@ and gave [talks](https://docs.wakuconnect.dev/docs/presentations/).
We also assumed that we would see patterns in the usage of Waku, that we would facilitate with the help of We also assumed that we would see patterns in the usage of Waku, that we would facilitate with the help of
[SDKs](https://github.com/status-im/wakuconnect-vote-poll-sdk). [SDKs](https://github.com/status-im/wakuconnect-vote-poll-sdk).
Finally, we created a number of web apps: Finally, we created several web apps:
[examples](https://docs.wakuconnect.dev/docs/examples/) [examples](https://docs.wakuconnect.dev/docs/examples/)
and [PoCs](https://github.com/status-iM/gnosis-safe-waku). and [PoCs](https://github.com/status-iM/gnosis-safe-waku).
By discussing with Waku users and watching it being adopted, we learned a few facts: By discussing with Waku users and watching it being used, we learned a few facts:
1. The potential use cases for Waku are varied and numerous: 1. The potential use cases for Waku are varied and many:
- Wallet <> dApp communication: [WalletConnect](https://medium.com/walletconnect/walletconnect-v2-0-protocol-whats-new-3243fa80d312), [XMTP](https://xmtp.org/docs/dev-concepts/architectural-overview/) - Wallet <> dApp communication: [WalletConnect](https://medium.com/walletconnect/walletconnect-v2-0-protocol-whats-new-3243fa80d312), [XMTP](https://xmtp.org/docs/dev-concepts/architectural-overview/)
- Off-chain (and private) marketplace: - Off-chain (and private) marketplace:
[RAILGUN](https://twitter.com/RAILGUN_Project/status/1556780629848727552?s=20&t=NEKQJiJAfg5WJqvuF-Ym_Q) & [RAILGUN](https://twitter.com/RAILGUN_Project/status/1556780629848727552?s=20&t=NEKQJiJAfg5WJqvuF-Ym_Q) &
@ -67,69 +59,66 @@ By discussing with Waku users and watching it being adopted, we learned a few fa
- Signature exchange for a multi-sign wallet: [Gnosis Safe x Waku](https://github.com/status-im/gnosis-safe-waku) - Signature exchange for a multi-sign wallet: [Gnosis Safe x Waku](https://github.com/status-im/gnosis-safe-waku)
- Off-chain Game moves/actions: [Super Card Game (EthOnline 2021)](https://showcase.ethglobal.com/ethonline2021/super-card-game) - Off-chain Game moves/actions: [Super Card Game (EthOnline 2021)](https://showcase.ethglobal.com/ethonline2021/super-card-game)
- Decentralized Pastebin: [Debin](https://debin.io/) - Decentralized Pastebin: [Debin](https://debin.io/)
2. Many projects are interested in having an embedded decentralized chat feature in their dApp, 2. Many projects are interested in having an embedded chat in their dApp,
3. There are a number of complex applications, which are not a simple web app, that need Waku as a solution. Taking RAILGUN as an example: 3. There are complex applications, which are not a simple web app, that need Waku as a solution. Taking RAILGUN as an example:
- Web wallet - Web wallet
- + React Native mobile wallet - + React Native mobile wallet
- + NodeJS node/backend. - + NodeJS node/backend.
(1) means that it is not that easy to create SDKs that facilitate using js-waku's usage. (1) means that it is not that easy to create SDKs that facilitate using js-waku's usage.
(2) was a clear candidate for an SDK. (2) was a clear candidate for an SDK. Yet, building a chat app is a complex task. Hence, the Status app team tackled
However, building a chat app is a complex task so the effort was done by the Status app team in the form of [Status Web](https://github.com/status-im/status-web/). this in the form of [Status Web](https://github.com/status-im/status-web/).
Finally, (3) was the most important lesson. Finally, (3) was the most important lesson. We learned that multi-tier applications need Waku for decentralized and
We learned that complex platforms which include mobile, web, backend and desktop software censorship-resistant communications. For these projects, js-waku is simply not enough. They need Waku to work in their
need Waku for decentralized and censorship-resistant communications. Golang backend, Unity desktop game and React Native mobile app.
For these projects, js-waku is simply not enough.
Said projects need to integrate Waku in their Golang or NodeJS backend, in their C# desktop application and React Native mobile app.
From a business angle, we were also able to identify several actors and to better position Waku as a product:
- platforms: Projects that uses Waku to handle communication, projects have their own end users,
- operators: Operators run Waku nodes and are incentivized to do so because they are also platforms or they use Waku's incentivization protocols,
- developers: Developers are usually part of a platforms or solo hackers learning Web3,
- contributors: Developers and researchers keen to contribute to Waku due to their interest in the domain of decentralization, privacy, censorship-resistance, zero-knowledge, etc.
As we tackled the effort to make Waku [multi](https://github.com/status-im/go-waku/tree/master/examples)-[platform](https://github.com/status-im/waku-react-native),
we realized we had to pivot the outreach effort beyond web dApps.
We understood that we should see the whole Waku software suite We understood that we should see the whole Waku software suite
([js-waku](https://github.com/waku-org/js-waku), ([js-waku](https://github.com/waku-org/js-waku),
[nwaku](https://github.com/status-im/nwaku), [nwaku](https://github.com/status-im/nwaku),
[go-waku](https://github.com/status-im/go-waku), [go-waku](https://github.com/status-im/go-waku),
[waku-react-native](https://github.com/waku-org/waku-react-native), [waku-react-native](https://github.com/waku-org/waku-react-native),
[etc](https://github.com/waku-org)) as an asset for the success of Waku. [etc](https://github.com/waku-org)) as an asset for its success.
Outreach, marketing, documentation must not be limited to the web, but target all platforms, from mobile to desktop to the cloud to the web. That we should not limit outreach, marketing, documentation efforts to the web, but to target all platforms.
From a market perspective, we identified several actors to target:
- platforms: Projects that uses Waku to handle communication,
- operators: Operators run Waku nodes and are incentivized to do so,
- developers: Developers are usually part of a platforms or solo hackers learning Web3,
- contributors: Developers and researchers with interests in decentralization, privacy, censorship-resistance,
zero-knowledge, etc.
# Waku for All Decentralized Applications and Infrastructures # Waku for All Decentralized Applications and Infrastructures
In 2022, we shifted our focus to make the various Waku implementations **usable and used**. In 2022, we shifted our focus to make the various Waku implementations **usable and used**.
When promoting, documenting or discussing Waku with Web3 projects, We made Waku [multi](https://github.com/status-im/go-waku/tree/master/examples)-[platform](https://github.com/status-im/waku-react-native).
we are able to leverage all Waku implementations to better serve the user's needs:
We shifted Waku positioning to leverage all Waku implementations and better serve the user's needs:
- Running a node for your projects and want to use Waku? Use [nwaku](https://github.com/status-im/nwaku). - Running a node for your projects and want to use Waku? Use [nwaku](https://github.com/status-im/nwaku).
- Going mobile? Use [Waku React Native](https://github.com/status-im/waku-react-native). - Going mobile? Use [Waku React Native](https://github.com/status-im/waku-react-native).
- C++ Desktop Game? Use [go-waku's C-Bindings](https://github.com/status-im/go-waku/tree/master/examples/c-bindings). - C++ Desktop Game? Use [go-waku's C-Bindings](https://github.com/status-im/go-waku/tree/master/examples/c-bindings).
- And of course, web app? Use [js-waku](https://github.com/status-im/js-waku). - Web app? Use [js-waku](https://github.com/status-im/js-waku).
We are also consolidating the documentation for all implementations on a single website (work in progress) We are consolidating the documentation for all implementations on a single website ([work in progress](https://github.com/waku-org/waku.org/issues/15))
so it is easier for a developer to find the right information. to improve developer experience.
This year, we also started the _operator outreach_ effort to push for users to run their own Waku nodes. This year, we also started the _operator outreach_ effort to push for users to run their own Waku nodes. We have
We have recently concluded our [first operator trial run](https://github.com/status-im/nwaku/issues/828). recently concluded our [first operator trial run](https://github.com/status-im/nwaku/issues/828).
[Nwaku](https://vac.dev/introducing-nwaku)'s documentation, stability and performance has improved, [Nwaku](https://vac.dev/introducing-nwaku)'s documentation, stability and performance has improved. It is now easier to
it is now easier to run your [own Waku node](https://github.com/status-im/nwaku/tree/master/docs/operators). run your [own Waku node](https://github.com/status-im/nwaku/tree/master/docs/operators).
Today, operator wannabes most likely run their own nodes to support or use the Waku network. Today, operator wannabes most likely run their own nodes to support or use the Waku network.
As we are [dogfooding](https://twitter.com/oskarth/status/1582027828295790593?s=20&t=DPEP6fXK6KWbBjV5EBCBMA) We are [dogfooding](https://twitter.com/oskarth/status/1582027828295790593?s=20&t=DPEP6fXK6KWbBjV5EBCBMA)
[Waku RLN](https://github.com/status-im/nwaku/issues/827), [Waku RLN](https://github.com/status-im/nwaku/issues/827), our novel economic spam protection protocol,
our novel economic spam protection protocol, and looking at [incentivizing the Waku Store protocol](https://github.com/vacp2p/research/issues/99).
and looking at [incentivizing the Waku Store protocol](https://github.com/vacp2p/research/issues/99), This way, we are adding reasons to run your own Waku node.
we are adding further reasons to run your own Waku node.
For those who were following us in 2021, note that we are retiring the web focused _Waku Connect_ branding in favour of the _Waku_ branding. For those who were following us in 2021, know that we are retiring the _Waku Connect_ branding in favour of the _Waku_
branding.
# Waku for Your Project # Waku for Your Project
@ -142,16 +131,17 @@ Here are a couple of use cases we recently investigated:
Most ([[2] [3]](#references) roll-ups use a centralized sequencer or equivalent. Running several sequencers is not as straightforward as running several execution nodes. Most ([[2] [3]](#references) roll-ups use a centralized sequencer or equivalent. Running several sequencers is not as straightforward as running several execution nodes.
Waku can help: Waku can help:
- Provide a neutral marketplace for a mempool: If sequencers compete for L2 tx fees, they may not be incentivized to share user transactions with other sequencers. - Provide a neutral marketplace for a mempool: If sequencers compete for L2 tx fees, they may not be incentivized to
Waku nodes can act as a neutral network to enable all sequences to access transactions (as Waku nodes are agnostic to message payloads). share transactions with other sequencers. Waku nodes can act as a neutral network to enable all sequences to access
- Enable censorship-resistant wallet<>L2 communication: By integration Waku in user wallets and sequencers, interaction with the L2 could be done in a decentralized manner, avoiding the usage of a single point of failure (RPC URL). transactions.
- Provide rate limiting mechanism for spam protection: If the data exchanged between sequencers/nodes is encrypted or split (block chunks), then a rate limit mechanism may be needed to avoid DDOS attacks. [RLN](https://rfc.vac.dev/spec/32/) can provide this. - Enable censorship-resistant wallet<>L2 communication,
- Provide rate limiting mechanism for spam protection: Using [RLN](https://rfc.vac.dev/spec/32/) to prevent DDOS.
## Device pairing and communication ## Device pairing and communication
Using [Waku Device Pairing](https://rfc.vac.dev/spec/43/), it will be possible for a user to pair devices and enable a secure encrypted communication channel between them. With [Waku Device Pairing](https://rfc.vac.dev/spec/43/), a user can setup a secure encrypted communication channel
As this channel would operate over Waku, it would be censorship-resistant and privacy preserving. between their devices. As this channel would operate over Waku, it would be censorship-resistant and privacy preserving.
This two devices could be: These two devices could be:
- Ethereum node and mobile phone to access a remote admin panel, - Ethereum node and mobile phone to access a remote admin panel,
- Alice's phone and Bob's phone for any kind of secure communication, - Alice's phone and Bob's phone for any kind of secure communication,
@ -161,13 +151,13 @@ Check [js-waku#950](https://github.com/waku-org/js-waku/issues/950) for the late
# Get Involved # Get Involved
If you are a developer, grab any of the Waku implementations and integrate it in your app: https://waku.org/platform. Developer? Grab any of the Waku implementations and integrate it in your app: https://waku.org/platform.
Researcher? See https://vac.dev/contribute on how to participate to Waku research. Researcher? See https://vac.dev/contribute to participate in Waku research.
Not a developer but techie enough? Try to run your own node: https://waku.org/operator. Tech-savvy? Try to run your own node: https://waku.org/operator.
Otherwise, you can play around with the various web examples: https://github.com/waku-org/js-waku-examples#readme. Otherwise, play around with the various [web examples](https://github.com/waku-org/js-waku-examples#readme).
If you want to help, we are [hiring](https://jobs.status.im/)! If you want to help, we are [hiring](https://jobs.status.im/)!
@ -177,13 +167,12 @@ What you can expect next:
- [Scalability and performance studies](https://forum.vac.dev/t/waku-v2-scalability-studies/142/9) and improvement across Waku software, - [Scalability and performance studies](https://forum.vac.dev/t/waku-v2-scalability-studies/142/9) and improvement across Waku software,
- [New websites](https://github.com/waku-org/waku.org/issues/15) to easily find documentation about Waku and its implementations, - [New websites](https://github.com/waku-org/waku.org/issues/15) to easily find documentation about Waku and its implementations,
- Delivery of the latest Waku protocols in all code bases and cross client PoCs - New Waku protocols implemented in all code bases and cross client PoCs
([noise](https://rfc.vac.dev/spec/35/), [noise-sessions](https://rfc.vac.dev/spec/37/), ([noise](https://rfc.vac.dev/spec/35/), [noise-sessions](https://rfc.vac.dev/spec/37/),
[waku-rln-relay](https://rfc.vac.dev/spec/17/), etc), [waku-rln-relay](https://rfc.vac.dev/spec/17/), etc),
- Easier to [run your own waku node](https://github.com/status-im/nwaku/issues/828), more operator trials, - Easier to [run your own waku node](https://github.com/status-im/nwaku/issues/828), more operator trials,
- Improvement of existing protocols based on field-testing feedback and functional requirements - Dogfooding and Improvement of existing protocols (e.g. [Waku Filter](https://github.com/vacp2p/rfc/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++12%2FWAKU2-FILTER)),
(e.g. [Waku Filter](https://github.com/vacp2p/rfc/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++12%2FWAKU2-FILTER)), - Continue our focus Waku portability: Browser,
- Continue our focus on ensuring that Waku can run anywhere: Browser,
[Raspberry Pi Zero](https://twitter.com/richardramos_me/status/1574405469912932355?s=20&t=DPEP6fXK6KWbBjV5EBCBMA) and other restricted-resource environments, [Raspberry Pi Zero](https://twitter.com/richardramos_me/status/1574405469912932355?s=20&t=DPEP6fXK6KWbBjV5EBCBMA) and other restricted-resource environments,
- More communication & marketing effort around Waku and the Waku developer community. - More communication & marketing effort around Waku and the Waku developer community.
@ -191,7 +180,8 @@ What you can expect next:
## References ## References
- <a id="footnote1">[1]</a> Waku is modular, composed of several protocols, hence some Waku protocols may be mature and widely used while new protocols are still being designed. - <a id="footnote1">[1]</a> Waku is modular; it is a suite of protocols; hence some Waku protocols may be mature, while
Which means that research continues to be _ongoing_ while Waku is already used in production. new protocols are still being designed. Which means that research continues to be _ongoing_ while
Waku is already used in production.
- [[2]](https://community.optimism.io/docs/how-optimism-works/#block-production) The Optimism Foundation runs the only block produce on the Optimism network. - [[2]](https://community.optimism.io/docs/how-optimism-works/#block-production) The Optimism Foundation runs the only block produce on the Optimism network.
- [[3]](https://l2beat.com/) Top 10 L2s are documented has having a centralized operator. - [[3]](https://l2beat.com/) Top 10 L2s are documented has having a centralized operator.