# Waku Workshop | Guru T | Privacy preserving web3 communications at scale with Waku | ETHDam 2024

- Channel: [CryptoCanal](https://streameth.org/cryptocanal)
- Date: 2024-10-07
- Duration: 19:45
- Watch: https://streameth.org/watch/yt-K1S0Zzzeiqo
- YouTube: https://www.youtube.com/watch?v=K1S0Zzzeiqo

## Description

Workshop with Guru T - “Privacy preserving web3 communications at scale with Waku” from ETHDam 2024. 
https://twitter.com/hackyguru https://waku.org/ https://twitter.com/waku_org

James Campbell - MC of ETHDam, Hackathon Organiser, and Web3 Developer.

ETHDam - a conference and hackathon held in the heart of Amsterdam, Netherlands from April 12th to 14th, 2024, celebrated its second edition, gathering more than 600 participants. 

In the dynamic space of ETHDam, privacy and security took center stage, featuring groundbreaking discussions on hacks, recovery, and the revolutionary work of figures like Pertsev. Privacy is dead in crypto, people that know, know. People who don’t know, should know. 
ETHDam is powered by CryptoCanal, an education and events platform growing in Amsterdam, spreading its roots to Rotterdam and Zürich.
Keep up with us to see updates on future events: https://www.cryptocanal.org/ 
Follow CryptoCanal on X: https://twitter.com/CryptoCanal
Join CryptoCanal TG Community: https://t.me/CryptoCanalCommunity 
Join CryptoCanal Discord: https://discord.com/invite/XJVjpCqQBz

We would like to thank our partners that made this event possible. 🌷
Battleship Partner 
🛳Oasis Network https://oasisprotocol.org/

Jet Ski Partner
🛩⛷  NEAR https://near.org/

Canoe Partners
🛶WAKU https://waku.org/
🛶Trail of Bits https://www.trailofbits.com/
🛶Avalanche https://www.avax.network/
🛶Privacy + Scaling Explorations https://pse.dev/en
🛶Threshold https://threshold.network/

Our Canoe Partner & Official Node Provider
🛶dRPC https://drpc.org/

Sponsor
🤝EF Ecosystem Support Program https://esp.ethereum.foundation/

Paddle Partners
🚣ChainSecurity https://chainsecurity.com/
🚣Lido https://lido.fi/
🚣Cyber Capital https://www.cyber.capital/
🚣Diva https://www.divastaking.net/
🚣Firn Protocol https://firn.cash/
🚣Beefy https://beefy.com/
🚣0xbow https://www.0xbow.io/
🚣Obscura https://obscura.build/
🚣Panther https://www.pantherprotocol.io/
🚣Maven 11 https://www.maven11.com/
🚣Zama https://www.zama.ai/
🚣zkSync https://zksync.io/
🚣Secret Network https://scrt.network/

ETHDam AfterParty Fren
🥳Bitvavo https://bitvavo.com/en

Chapters:
00:00:00 - Introduction 
00:01:56 - The Importance of Address Privacy
00:03:20 - The Features of Waku
00:04:49 - Introduction to Waku and its protocols
00:06:25 - Setting up Content Topics and Categories
00:07:53 - The Structure of Data Packets in Waku Network
00:09:26 - Resources for Developing with Vaku
00:10:51 - Block IoT and Beam Mo: IoT Communication and Serverless Location Sharing
00:12:25 - Decoupling Identity from Prompts
00:13:59 - Setting up encoders and decoders
00:15:36 - Sending and Receiving Messages in Waku
00:17:25 - Node Incentivization
00:19:06 - Message Size Limit in the Waku Network

## Transcript

[Music] welcome everybody to the eth dam workshops we'll be having 20 minute workshops with about five minutes of questions for each one up until six o'clock uh my name is James I'm going to be running this stage today and tomorrow um first of all we have Guru from waku who uh well let him introduce his own talk thank you thank you yeah hey guys I'm Guru from waku I am one of the co-contributors and I'm helping waku reach the developer audience so yeah I'm here to help you guys build amazing stuff with vaku so moving forward can we have the presentation y is this you oh no coming through that's his pres okay perfect so moving forward web to Communications do not preserve your privacy out of the box so every time you make an interaction online be it a chat message or or every time you click a button on the internet your interaction is being a stopped by multiple Web Two sharks and your social graph and private data can be exploited by various centralized Gatekeepers be it search engines or indexing services or any kind of web2 service so your messages are linked to your centralized identities like IP addresses so every time you send a message your IP address lets a lot more information than you think it can be the sender and receiver details the location of the sender and receiver and also all the private metadata associated with these messages and this information can facilitate large scale censorship and survillance attacks which can hinder your spe freedom of speech and this problem is not specific to chat it's pretty much with all the use cases like gaming marketplaces location sharing apps and pretty much anything that requires machine to machine or machine to human communication so we are solving this exact problem we are building a family of robust sensorship assistent communication protocols that are designed to enable privacy Focus messaging for your web3 apps vaku has six main values the first one being privacy the whole design and architecture of the vaku network and vaku Protocols are privacy preserving and the second one is the censorship persistance which automatically comes in with privacy and the third one is modularity vaku is not blockchain specific it can be implemented with any blockchain it's something that comp complements a blockchain it's not at all related to layer ones or layer twos here it's something that can complement a blockchain and we are also super adaptive which means that you can run vaku in mobile devices or resource Rich environments like your uh clouds VP VPS and you know clusters servers it's also securely scalable which means U vaku Network as a whole can grow according to the requirements of the apps that are using waku and finally we are also dos protected which means that you know all the centralized attacks cannot be carried out over here so the best part is waku did it without compromizing on the identity and privacy of users so I'll be talking about it in the upcoming slides but getting into it again vaku is not a blockchain and vaku is not a chat messaging protocol but a generalized censorship resistance preserving communication protocol and it can catter many use cases starting from gaming to anything Communications now looking at the history it all started in 2013 when the ethereum white paper was introduced in the ethereum white paper back then we had the Holy Trinity of decentralized web into three segments the first one being ethereum for consensus swam for storage whisper for communications and these together formed the ethereum white paper but over the years swam and Whisper have disappeared out of the developer conversations one the developers who have been in the ecosystem for quite a long time know about it and ethereum itself has been misinterpreted to be the communications and storage layer of web3 so until 20 20 there were not much of teams working on top of of whisper and in 2020 vaku replaced whisper in the status app and today vaku is trying to evolve as the standard of web three communications when you look at the segments within waku we have two segments the first one being waku protocols which developers can use for building amazing apps on top of waku and the second one is the waku network which is like the backbone of the whole vaku ecosystem vaku protocols we have a lot of protocols but for this specific hackathon we'd highlight three main protocols which are our light protocols light push filter and store so each of the protocol has a different uh use case when you're building an app light push is used for sending a message into a Content topic and filter is used for subscribing messages from a Content topic and store is a temporary storage for persisting your messages for some time so I'm sure a lot of you must be hearing content topics for the first time but it's the way in which we uh architecture or filter messages within the vaku network we have multiple content topics for example topic a topic B topic C over here and we have multiple peers listening to different content topics so this is how the whole vaku network is architectured and when you are developing you'll be setting up a Content Topic in the form which is given here for example your application name which could be super crypto followed by your version which is one followed by the content topic name you can have multiple categories for example for notifications for messages for um you know friend requests so have you can have more content topic categories and finally the type of encoding that you use so we we have most of the documentation that we have uses Proto Proto Buffs so that's why we have it over here so about adaptability we have as you can see here vaku can catter something like a cluster which has more resource to something like a browser which has very less resources available so the light protocols that we mentioned earlier are the ones that catter the resource restricted environments like browsers and mobile phones and usually at hackathons a lot of use cases revolve around these protocols so that's why we wanted to give you the give you more insights about these protocols and revising the protocols again light push is used for sending a data into a Content topic and filter is used for receiving data or retrieving data from a Content topic and store is for persistence now when you look at the structure of each and every data packet that is being transmitted or transferred uh this is how it should be looking the content topic which is going to be the routing mechanism for the uh data packet to reach the particular person and then the payload which carries the message data and The Meta which uh takes in application specific processing prompts and timestamp which is basically the time of the message and finally epimeral which uh takes a true or false value based on your preference of the message getting stored on the network so if you want the message to be persistent on the network you should set ephimeral to true and if it's false it's going to be evaporative so it's not getting stored in the network at all it's truly peerto pure so anyone can run a vaku node right now uh we already have a Docker compost command to help you set up a vaku node on your machine and you can find more about running your vaku node by scanning this QR code it's pretty simple it should just take you a few minutes and to know more about the network specifications we have a RFC listed on our research website you can scan this RFC to know more about it but just to visualize how fast vaku messages can be this is how fast it is it starts from Singapore to Bangalore to San Francisco to New York and this is simulated in a real world testing scenario with a 2kb size message object but yeah this is the kind of efficiency that we are trying to achieve with vaku of course vaku is definitely a early stage developer tool or an early stage project but uh yeah this is on the uh full run this is the kind of efficiency that we wish to offer the developers looking at the resources we have three main resources that we want to highlight the first one being our documentation which is a holy grail of waku it pretty much has all the quot Snippets and everything that you need to build on waku and we also have an idea board which has Community curated ideas we have around UH 60 ideas from different people in our community you can also contribute to the idea board if you want to see something built on top of vaku but if you're going to hacker the hackathon make sure to check this out because it has a good number of ideas like building a GitHub on top of vaku and a lot of cool ideas and finally the awesome vaku reposter which has links to all the projects from different faku hackathons so we did around around five or six hackathons uh in the last 12 months so you can find all the projects from these hackathons around 85 projects from these hackathons in this reposter can also be a source of inspiration and we also have previous Workshop recordings in this particular reposter and you can find it on GitHub I also want to Spotlight a few projects that we had from previous hackathons uh this can be a very good way to validate your use cases before you start building so the first project is block iot which is basically an iot system that communicates using waku protocols imagine uh Raspberry Pi at your home which is connected to your U smart devices like your let's say your uh TV and your appliances so it's going to be amazing because waku can also c a lot of hardware and iot related use cases so block iot is one of the references that can help you get some inspiration and the second one is beam Mo which is one of my favorites so right now when you use U location sharing apps on your mobile phones it either gets into uh you know the centralized stakeholders for transferring the data because everything happens through servers but beam is an example for serverless wallet to wallet location sharing so if you know an ethereum address of a person who you wish to share your location you can do it without getting your location into the hands of uh these centralized stakeholders we also have a game called Battle of cards which is a fun multiplayer WWE game built on top of vaku and finally Mr Fox is one of the recently bust projects from our recent hackathons they've built a privacy preserving decentralized web 3A assistant which totally decouples your identity from prompts so for example if you're using an llm which is available on the internet each time you send a message to the llm it's going to know what the messages along with the person or the identity of the person who is sending the message this is a very big risk for someone who's uh you know for someone who's uh querying different kinds of uh prompts and it can also be crucial for medical related Proms and a lot of you know uh privacy uh privacy demand prompts so this is where Mr Fox uses waku to decouple the identity from the prompts so that the llm doesn't have to know who is sending the message or who is sending the prompt but it'll just you know know the data or the payload which is associated with The Prompt so these are the project highlights that I wanted to mention and again if you want to know more we also have a learn section in the documentation and you can also ask your questions uh in Discord card but uh yeah I just wanted to give a quick overview about how to use uh vaku SDK practically I was just building this in the morning so I have like a couple of bucks please uh forgive me for that but as you can see the first step is to create a light node which is already completed once you start the application and the second step is to discover peers around you and connect to the peers so that is also completed and the third step is to set up encoders and decoders which is completed now looking at the code for the same application which is running on Local Host uh this is the specific code that you want to have on the top for initializing your node just hit node. start after you run create no light node command so we also have a testing environment for developers it's called default bootstrap Fleet so you can just pass in this attribute default bootstrap to true if you want to use default bootstrap nodes so it's basically a fleet that we've configured for development purposes so once you're done setting up a node you can go ahead and uh wait for a successful Pier connection so for that you can run the function wait for remote piers and pass in the node object and yeah that should get your perer connection completed and after that you create encoders and decoders so for the vaku SDK we don't really have a default set of uh like some preferred encryption along with the SDK you are free to use any kind of encryption uh mechanism or library that you want to use and for setting up encoders uh which is available in the package you can simply uh run the create encoder command function and you can pass in the content topic inside the function with fimal as true so this is where you have to set it as false if you don't want the messages to persist in the network so once encoders are completed uh it's pretty much the same for decoders you can uh have create decoder function and pass content topic into it so this should get all the three first three steps completed for you and once all the three steps are completed now we are ready to send and receive message messages so let me try sending a high also uh be mindful about the disconnection problems at this point with our uh libraries so if you keep your application without uh you know without usage for some time it sometimes tends to get disconnected which is understandable for a early stage project so yeah this is pretty much how it is supposed to to work you can see that the message is getting sent and uh right now I'm running a store query but uh if you use a filter query it should pretty much appear over here let me try refreshing it yeah so we can see the received data over here and we don't have clear benchmarks about uh waku U let's say latency and stuff right now but we do have some um you know benchmarks which are not yet uh guaranteed but we definitely have some benchmarks uh you can check them out at metric. vacu.org we have the benchmarks public but yeah that's pretty much about waku I think I'll use the next five minutes for some questions if you have any and if you have more we can do one-on-one thank you very much can we give Guru a round of applause does anyone have any questions I'll come over with the mic I have one so the uh uh a waku node can easily be set up with like a nice Docker composed um command is there are the nodes incentivized in any way are they how are you managing their behavior and making sure they're doing the right thing yeah incentivization current is currently work in progress we are having our research teams doing their job right now about incentivization but yeah like uh we have more than 45 notes as far as I know from today morning running without any incentivization so there's definitely some uh good Community revolving vaku already but yeah once incentivization is here we'll we'll probably boost up yeah very enough anyone else can you send can you send any kind of data yes it like any kind of file any yeah so the reason why we use messaging at times is to uh you know it's a technical definition in a way that the size of the message object cannot be big but you can definitely send ipfs IDs or you know any kind of content IDs or any kind of data into it but obviously keeping in mind that the data cannot be too big for the vaku network so yeah like I would say U yeah I think Alvaro from my team can answer this we impose a limit of 150 kilobytes per message awesome thank you cool if there's one more question or we can do it one-on one one I guess perfect thank you [Music]
