Whisper and Swarm Protocol for RTC
Decentralised, Distributed and Deniable, Communication.
- Track: Real Time Communications devroom
- Room: H.1309 (Van Rijn)
- Day: Sunday
- Start: 14:10
- End: 14:30
Whisper is the “plausibly deniable routing” protocol within Ethereum. We will outline its intended use cases, it’s advantages, topology and the uses to which it is being put today.
When it comes to pear to pear and person to person communication in an untrusted network cryproeconomicly incentivised and decentralised system are a viable alternative to altruistic services like Tor or proprietary systems like whatsapp etc.
The Swarm protocol (which is largely designed for the storage and dissemination of larger amounts of data) contains PSS (Postal Service over Swarm)
with the following Goals
Enable messaging between nodes that are not directly connected through IP.
Allow full, partial and no disclosure of addresses of communicating nodes. ("luminosity")
Asymmetric and symmetric encryption using ephemeral keys.
Transparent implementation of devp2p protocols over pss.
Decentralized storage of undelivered messages. (mailserver)
Create a fully decentralized end-user messaging platform that's end-to-end encrypted.
Status, is an ethereum light client for Android and iOS (and soon for desktop) which uses Whisper for text based chat applications. Conceived as a mobile OS for Ethereum, status now combines a messenger, a browser and a chatbot interface that can act as a chat like, command line tool. Status is a user friendly, privacy respecting, gateway for everyday smartphone users to begin consuming, routing and serving Ðistributed Application on ethereum.
In the serverless model that ethereum uses one method that distributed applications can use for machine to machine communication is ethereum’s Whisper protocol.
Whisper may be the appropriate protocol if your use case: Needs to preserve a level of anonymity or plausible deniability for either or both message originators and recipients. Your Dapps need to coordinate before sending a final transaction. For example a decentralised market or token exchange where two clients may need to settle a deal before actually initializing a transaction, or sensors of some kind aggregating data or updating one another. Publish small amounts of information that don’t need to persist but instead live for a limited amount of time. From minutes to several days. If your data needs to live for longer than that, then nodes can be incentivised (from outside the protocol) using a token model for example to store and forward messages. You wish to propagate time bound but non time critical updates to n recipients. For instance, tweets, weather updates, traffic reports, IOT metrics etc.
Some specifics of the Whisper protocol are:
The API is only exposed to contracts, never to user accounts. Low-bandwidth: Only designed for smaller data transfers. Unpredictabe latency: Not designed for real-time communication of data. 1-1 or 1-N communication. PoW (spam throttling) in Whisper
Whisper messages (envelopes) undergo a process called “sealing”, which basically incentivises users to spend computational resources prior to sending the message. Internally, sealing involves hashing contents of the message repeatedly into the smallest possible number.
What this means to you as a developer is that if you want your messages to have priority over others on the network, you’ll need to spend more computational resources “sealing” them. You can specify this through the `work` parameter when posting a new message. The more work that you perform locally, the faster your message will propagate through the network.
Note that there is no way to specify exact latency times, rather you can only estimate based on how much work you perform during the “sealing” process.
TTL
TTL is the amount of time your messages live on the network, specified in seconds.
Filtering
Whisper is low-level, meaning that it is identity-based instead of application-based. Messages, therefore, can be sent directly to another participant by using the recipient’s public key. Listeners on the other hand, can filter messages by specific senders or specific topics.
With web3
you can listen for Whisper messages like this:
Swarm
Whisper in action for RTC.
Case study - Status.im There is a clear trend towards mobile first computing and chat applications are the dominant medium for personal communication on mobile. To provide a decentralised and distributed infrastructure that is private, robust and sustainable (even in a hostile network) requires the balancing of incentives between ‘providers’ and ‘consumers’.
Status uses a token model to incentivises the existence of Nodes that store and forward Whisper messages to subscribers who fund their data acquisition through micropayments of ERC20 tokens.
Status Road Map
Speakers
Nick (ethereumnick) |