How does Shelley mainet handle "nothing at stake" and "adversarial fork" problems?


Just a quick question, I cannot find the updated information about what has been done in Shelley to prevent “Nothing at stake” problem and “adversarial fork”, and any problem reflecting the fact that a stakeholder would not have to commit to a specific block extending a specific blockchain, but could try multiple ones without any cost . During the ITN I seem to remember that adversarial forks were a problem in practice.

I think that turnarounds for these problems were often proposed when talking about Pos, and do not seem that complicated. Introducing a mechanism that make it costfull for a pool to broadcast to the network, or send to a part of the network, a block that does not end up being integrated into the final chain. But I’ve not heard any such mechanism introduced to cardano.

Can you explain?

This article and videos gives somes clues:

I think the answer may be that Ouroboros assumes in its analysis that honest parties will only produce one block per slot, even if it would be in their interest to produce one for every existing chain, in order to minimize probability to loose block rewards. “Honest players speak at most once in any slot”

If that is so, I think it might be quite a costfull assumption. I think we can presumably consider that 51% will be honest, if honesty is not directly against their personal interest, and they have no direct gain to hope if they are dishonest on their own.

A possibility to consider, is of course the fact that a pool creating more than one block per slot will be known publicly as doing so, and will loose confidence from its delegates, and will eventually have a hard time finding delagated stake. And that would be the cost of creating more than one block per slot. But It seems more risky and uncertain than a cost that would be directly integrated into the protocol itself.

I would be Interested to hear more about that.