Intro
The goal of this proposal is to arrive to a whisper-like protocol that uses Incentivization instead of proof of work while maintaining most of Whisper’s characteristics. In addition it can provide a use case for SNT and continuous funding to Status for the development of the network.
This post is a high level overview ahead of a more formal specification.
Issues with Whisper POW
Whisper uses POW, this has several issues:
- Not consistent: The generated pow value itself can vary depending on the device the client runs and even programming language used.
- Wasted Energy consumption: Particularly bad for mobile devices.
- No incentives to run a node: There is no incentive for nodes to forward messages, or even verify the pow. As such running full whisper nodes essentially depends on good will and as result there isn’t currently a well developed decentralized network nor any incentive for this to happen.
Incentivization
The Incentivization is done by what we shall call PRBS, meaning Pay to Receive, Burn to Send. Connections between nodes are payment channels, and the token amounts used are assumed to be micro-transactions. Message exchange between two connecting nodes update this state channel.
Incentivization of message forwarding
For a node to receive messages, it needs to open a state channel to a peer, signing which topics (a bloom filter) they are interested in, together with how much they are willing to pay for each message they receive in that topic, as well as the minimum cost of that message for the sender.
The values will vary from node to node depending on number of peers they have and which topics they are interested in. For e.g if node A has two nodes willing to pay it for topic X, then node A itself will have the incentive to pay more for topic X. Thus, more popular topics will likely have higher delivery rates and potentially be cheaper. There is also incentive for nodes to connect to more peers to get more potential ‘buyers’ for what they can forward.
Spam prevention
To post a brand new message a sender needs to burn funds. All messages need to be attached with a proof of burning of funds for this message. This acts as a spam prevention mechanism. The cost of sending messages must be higher than the cost of receiving for that topic.
Continuous funding for status
The burner address can be 0x0. However, as part of the protocol it can also be the address of the Status DAO or GmbH. This would introduce a use for SNT plus provide continuous funding for development of the platform.
Normal users & specialized nodes
normal users
Normal users can earn tokens by having their nodes forward messages, they can then use these funds to cover the cost of sending their own messages. This effectively should make the platform ‘free’ to use for most participating users. Another option is for the user to register with 3rd party (status?) that can provide some initial micro-funds enough to get started, or a gateway that provides this service in return for some action.
specialized nodes
Just like miners in Ethereum, dedicated forwarding nodes can be created by users to earn fees from forwarding messages, incentivizing a healthy & decentralized network.
Next steps
To do next:
- Flesh out state channel & smart contracts (i.e spec + implementation), specially in regards to arbitration. burning funds, etc…
- Model economics and or simulate network, For e.g:
—> How much more expensive should be the cost to send be than the cost to receive in order to effectively prevent spam?
—> If dedicated whisper nodes are launched, how much can they be expected to profit? In what network conditions?
—> What is the predicted delivery rate and prices for popular channels vs small channels? - POC in murmur and/or statusd
Call To Action
We’re Looking for anyone interested in helping this effort through a pragmatic & iterative approach. Let’s build the future!