Introduction
Waku is a proposed fork of Whisper. It was created to incrementally improve in areas that Whisper is lacking in, with special attention to resource restricted devices.
It is a collaboration between Vac, the Status app and nim-eth / status/whisper client teams. In this thread we report on progress of this project.
Background reading
Fixing Whisper: https://discuss.status.im/t/fixing-whisper-for-great-profit/1419/17
Waku project proposal: https://notes.status.im/Ek_UZ_7nTn6y7TWU9pGOcg?view#
Waku kickoff notes: https://notes.status.im/dge-rNtCSwyUaUGPeh_bbQ#
Waku project board: https://github.com/orgs/vacp2p/projects/2
Project goals
- The primary goal is to fix the immediate bandwidth scalability issues with Whisper. See Fixing Whisper for great profit for background and rationale.
Secondary goals are:
-
Ensure our already forked version of Whisper is documented enough to allow others to use the protocol, most immediately status-nim. Aside from new waku mode node modifications, this includes existing light node modifications, mailserver protocol, and additional packet codes.
-
Increased ownership of our own existing protocol stack for Core, with iterative improvements and allowing for protocol upgrades. This includes future iterative improvements such as moving to libp2p, accounting for resources, settlement, alternative spam resistance solutions (zkSNARKs?), alternative routing (pss?), remote log usage, etc. If we do this right, culturally moving from
waku/0 to waku/1/2/3
will be more efficient than trying to getwhisper/v7
EIP accepted.
Teritiary goals are:
- Improve our way of working together and increase accountability, with a more focused group of stakeholders, closer-to-implementation research and research sprints.
Stakeholders
- Oskar (swarm lead, research and specs)
- Dean (research and specs)
- Kim (Nim implementation)
- Adam (Go implementation)
- Andrea MP (Everywhere; Core integration)
Proposed milestones/sprints
Very rough. The goal should be to get waku in a state that it is ready for the [Status] app on the order of a few/some weeks (4-6?).
waku/0 - Nov 11 - Nov 25
- Separate protocol that is backwards compatibility with Whisper/v6 and works through console-client/status-nim-tests
- Fork of EIP627 and our modifications (packet codes, light client, mailserver) and new waku mode in own spec as draft
waku/1 (+2w) - Nov 25 - Dec 02
- Specs moved over to Vac and good enough to enable e.g. Nim/Go client interop; rate limiting and resource accounting draft
- Nim and Go clients working in isolation with waku mode as well as with its own kind (nim whisper6<>nim waku; geth whisper6<>nim waku)
- Preparation for enabling it in app as an option
waku/1 (+2w) - Dec 02 - 16
- Cross-client working
- Specs in Vac in solid state and publicly available/reported on; clear problem isolation on next medium term steps (libp2p, pss, zksnarks, settlement etc)
- Integration into app
- Handover to Core; reflection point to see if it makes sense to continue as a separate team and where additional enhancements should lie / fit into other research work
In future posts we’ll post updates as the project progresses.