Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save disassembler/d94c81ec1a0698112a7002ea26fced4a to your computer and use it in GitHub Desktop.
Save disassembler/d94c81ec1a0698112a7002ea26fced4a to your computer and use it in GitHub Desktop.
Originally, shortly before the Shelley launch, in reviewing the incentives spec
engineers in formal methods and architecture noticed that there was a 'lambda'
parameter (between 0 and 1) that was basically the fraction by which an
adversary could undercut everyone else on costs. If this param was 0 then the
whole thing collapsed to 0, i.e. the sybil attack became cheap, but there was no
mechanism in the design to make sure this parameter was bigger than 0. So we
added one: the min fee, to stop the adversary from undercutting everyone and
making themselves look super-competitive.
If someone creates many pools, they will not be attractive to first mover
delegates (allowing min-cost == 0 on the other hand, removes this first mover
delegation counter incentive).
As an aside, from an analytical perspective this really has to do with how
myopic are the players - if they are reasonably non-myopic it won’t matter. In
the original paper we argue it didn’t matter because we were thinking
participants to be non-myopic.
Furthermore, the research is assuming that everyone is playing the same game,
and trying to maximize their rewards/payoffs (in which case min-fee is not
needed). But the whole point of the min-fee is that the adversary is playing by
the same rules but for a different payoff: their interest is not making money
from SPO rewards but from attacking/destroying the system by accumulating enough
delegated stake to mess with consensus. This means the adversary in the SPO game
is prepared to lose money if it means they can accumulate enough stake to do
something nefarious.
The thing we need to remember is:
Just because it works in theory doesn't mean it works in practice.
But it does at least need to work in theory, or it will (almost certainly) not
work in practice.
So the theory analysis is necessary but not sufficient for it to work in
practice.
On a side-note, folks I talked to want to remove min cost, either by new
analysis proving it isn't necessary, or by adjusting the game rules for it not
to be necessary. But we want to do it safely, and not make a rash drop it to
zero and see what happens approach.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment