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

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!

This is great! Once some of the details of the costs are spec’d out, I’d love to know as a user how long it would take me to get “free” messages while running a node. And what sort of uptime would I need? Mostly the reason for this, is that, as a user, i don’t really expect to pay for messaging. So, if the node is running in our pocket (ie in the Status app), it will have some very limited uptime, but would that be enough uptime to get me free messaging?

I love this idea and I’ve been wanting for someone to try it for a long time.

It seems like it could be nearly 1:1 even. For every message you forward you earn one message of send. Or maybe 0.9:1 whatever it ends up being. That means you can start chatting within mere moments of connecting to peers because you’ll instantly be pummeled with messages to forward from your new peers.

Even if you chat a couple moments at a time, whenever you have your phone open, it seems like it could easily be enough time to earn a useful amount of chat points.

Performing trust-minimized work for a protocol (aka "generalized mining") is a different narrative than most realize.
This is not portfolio theory.
This is a narrative on the evolution of the internet
...and how you invest in it.
Let me explain 👇

Excellent. Make hosting a specialized node into a Status mode and we have incentivized Status-desktop running.

One thing I’d add - there should be a generic “unreliable” channel, a lobby of sorts where people can post free messages, and they’re forwarded as resources allow or via altruistic nodes or via a queue, or a combo of all three. We don’t want people without the means to pay for prioritizing or receiving their messages (even if only dust is required, they still need to get the dust) to be left in a silent darkness as they open the app and try to start chatting. The teller network can help solve the problems of setting people up with starter funds, but given that a free starter batch of digital cash, BAT-style, would not be an option for the sake of spam prevention and accumulation of free funds, we’d definitely need a special free channel with a message queue maintained.

To really know this we need to model it and perhaps simulate it as well. I’m just sure that the cost of burning to send a message needs to be higher than the payment to receive due to spam. The amount of uptime needed will depend on the traffic in the network itself and number of receivers for the particular channel.

We probably can’t be 1:1 due to spam. i.e an attacker could connect to at least 1 peer wanting to pay, and use that to fund his own messages. The cost to send has to be higher. At a limit it would be (∑payment_per_receiver)+ϵ but probably less if we consider multiple paths, mechanism to avoid duplicated messages, and more importantly the receiver being able to increase their own price tolerance as a spam prevention mechanism (basically the equivalent to whisper nodes increasing the minimum PoW)

So, ideally forwarding packages initially is quick enough to gain funds to send messages, and this way we get a ‘free’ system for ‘normal’ participants. There is always the possibility of supporting the old PoW side by side, for nodes that are willing to accept it.

I agree that Whisper PoW has a lot of issues. In addition to that, there are some other concerns regarding Whisper: not provable that it’ll scale to a reasonable number of nodes (broadcast based and quadratic bouncing messages); non-rigorous assumptions regarding anonymity (sender anonymity not guaranteed for global passive adversary; relay mode/bloom filter tweaking for perf leads to worse anonymity); little standing/research in anonymity communication protocol research (outside of Ethereum/blockchain space).

Alternatively, it can be seen as a completely separate effort that can be swapped in as a component at the layer, so you could imagine Whisper/PRBS/PSS/Mixnet being different transport privacy solutions.

E.g. one could imagine the anti-spam measure being a choice, and this mode would be a certain protocol version/capability. This could ensure Ethereum nodes in general run this protocol version, as opposed to just being a Status specific thing.

I also agree re challenges for state channel implementation, but this is also what is exciting! I need to chew on this for a while, but I’d like to be involved in the requirements/specification effort of this.

There’s a similarity of goals here with P2P file-sharing networks like BitTorrent that want to quantify contributions to the network and incentivise certain behaviours. Worth a look at their proposed solutions:

Researchers at Delft University of Technology have released a major update to their decentralized and pseudo-anonymous BitTorrent client. The new Tribler has its very own blockchain that tracks how much people are sharing, so users can be rewarded...

How exactly would the burning work? You could do it with an on-chain transaction, but it seems like you’re looking for something much more “micro” than that. Some probabilistic scheme where you make a security deposit, then for each message attach a signed ticket and one week later there’s a 1/65536 chance (based on on-chain randomness) that this ticket could be used to delete a $0.5 deposit and give a commission to whoever includes the transaction?