The spammer's dilemma

To spam, or not to spam, that is the question. The setup is as follows: in IOTA 2.0, the available bandwidth (for example, 1000tps), will be fairly divided between the actors according to their access mana. If the system is congested (the whole bandwidth is used), then, in the long run, no actor can exceed its quota; if the system is far from congestion, then exceeding one’s quota can be tolerated. See e.g. https://govern.iota.org/t/the-networking-layer-in-coordicide/369, https://govern.iota.org/t/buffer-management-for-the-icca-scheduler/1226, https://govern.iota.org/t/buffer-management-for-the-icca-scheduler/1226 for more details.

Since, as we all know, the token distribution (and hence the mana distribution too) is quite uneven, the large mana holders will have also proportionally large throughput quotas that they potentially won’t be wholly using for their own needs. They therefore would either sell the access mana directly (to those who want to operate their own nodes), or operate public nodes themselves to process other’s transactions. In some cases, they would be potentially giving some access to these nodes for free – if you are well invested into something, you naturally want it to grow-and-prosper, and so it’s in your interest to attract more users to the ecosystem. However, we of course cannot rely on (reasonable) altruism entirely; surely there will be many actors who will charge a fee for using their nodes.

Now, we finally come to the main topic of this note. It is clear that there will always be some demand for such node services – there will be people who do not want to deal with the costs of creating/maintaining own nodes, there will be businesses who want to guarantee their share in the bandwidth for the future in the case the system eventually becomes congested even if currently it is not, etc. However, it is also clear that the situation “the whole system is congested” is favorable for these big players: in such a case, all users which need more throughput would have to buy it, potentially at high prices. In view of that, some people argue that all big mana holders would be permanently spamming to occupy all their quota, and the system will be permanently congested. If there were only one big player (or all big players had some binding agreement on the common strategy, which is essentially the same), that would indeed be the case. On the other hand, we will now see that the situation is completely different when there are at least two big independent players (by the way, I didn’t rigorously define what I mean by “big player”, but hopefully you understand me anyway). Let us denote those by 1,\ldots,N, and let’s say that player k uses the “spamming strategy” if it decides to occupy its whole throughput quota by “completing” it with spam, and “non-spamming strategy” if it doesn’t do so. The strategy vector of the players is S=(s_1,\ldots,s_N), where s_k\in\{0,1\} is the k\rm{th} player’s strategy, 0 stands for spamming and 1 for non-spamming.

Claim. Assume N\geq 2. Then, the unique Nash equilibrium of the system is S=(1,\ldots,1) (that is, all players are not spamming).

Proof. In fact, this is really analogous to the Prisoner’s dilemma – a basic example in Game Theory which illustrates that the players’ behaviors will be not necessarily those that guarantee the “greatest common good” for them. Note that

  • since malicious spamming of the sort “I’m spamming the hell out of the system to make you pay more” is not exactly a socially acceptable behavior (and IOTA is supposed to be a collaborative system, based on “you help me, I help you” principle), the spamming players will probably try to disguise their spamming to look like a legitimate activity; in any case, if someone clearly identifies some of his messages as spam, it would be reasonable for the honest actors to punish him (e.g., by reducing his bandwidth).

  • now, if you are a customer who is looking for a node service provider for your transactions, which one would you choose, one who has spare bandwidth, or one who is completely occupied already? Clearly, you would choose the former one, because then you will be sure that your transactions will go through soon; it seems not likely that completely occupied nodes would get any new customers.

Therefore, we see that if s_k=0, then the k\rm{th} player would increase its expected payoff by adopting strategy 1 (i.e., non-spamming); this shows the claim. \Box

How can one distinguish? Unless the messages metadata consists of a string like “SPAM!” I am not sure how can this be done. If the spammer is afraid of punishment it will probably not be this obvious.

I am not clear on the exact details of the congestion control, honestly, but the strategy has to be binary?
Suppose we have a very low natural TPS, then maybe a strategy of spamming some fraction of the capacity can prove to be beneficial in getting little guys to move to a paid service?

I would say that, whenever the malicious node uses the rate setter, the spam is undetectable. But someone using the rate setter can effectively congest the network, so I guess the “spamming strategy” is behaving like a honest, best effort node.

That’s my point: if it’s not 100% obvious, then I, as a customer, also cannot be 100% sure that this node is not genuinely occupied (and so it wouldn’t be able to make room for my messages without putting me to some queue, making me pay extra fee, or something similar). Therefore, between the spammer’s node and objectively not overloaded node I will choose the latter one.

I considered it to be binary just for a start; but again think from your expected payoff perspective. What is your individual benefit of increasing your spamming rate? Maybe you would accidentally lose some very big client (who just barely doesn’t fit into your available bandwidth) this way?

Maybe…
It is hard for me to think whether there could be some good strategy to increase profits… you think this can be simulated somehow?
Or maybe there are too many variables and unknowns to come to a conclusion?

Hmmm… not sure if it’s easy to simulate, since it involves customers’ choices. But, to understand the NE(s), you have to think about individual strategies of selfish players. If the others are doing what they are doing and I’m thinking about increasing my spamming rate, I have to ask myself “what impact on global prices will that have (those should increase, but by how much?) and (most importantly) how much would I benefit from this increase (my customers will pay higher prices, but the number of my customers will decrease)?”. We can think about some adequate model, of course. For now, it’s only quite clear that “everybody 100% saturate their quotas with spam” is not a NE, because then I (as an individual player) would decrease my spamming, get real customers, and, consequently, increase the proportion of paying customers in my throughput.

In any case (kinda “by continuity”), spamming a bit in an empty network may be a good idea (but that’s good for confirmations anyway), but spamming too much is clearly individually disadvantageous.

A node can fill its allowed bandwidth (+ whatever is unoccupied by other nodes) with messages that have random content in them. This is equivalent to spam that is not classifiable as spam.

The spamming node can provide an excellent service in sending a costumer’s messages despite its apparent bandwidth being full, since the true bandwidth might be even almost empty. Since the service that the node provides is on a second layer it seems natural that relevant metrics for the end user are derived from performance on the “experienced” second layer.

The experience metrics however may not be correlated to the level the node fills its bandwidth on the Tangle. Rather it might be something like average confirmation time, social ratings, price. If the latter metrics turn out to display the node to be more favourable I would choose the node based on these metrics over metrics that are derived from the layer 1, whose meaning is difficult to evaluate for an end user.

If it’s not classifiable (whatever that means) as spam, then my point stands: I, as a customer, cannot be sure whether that node is not genuinely 100% occupied.

The percentage of the available quota that a node uses is a very easy metric to evaluate, imo. Also, if we are talking about “social ratings” (again, whatever that means), in a collaborative system like IOTA the “I’m spamming to make you pay more”-attitude is likely to affect that sort of rating in a negative way.