Nothing Is Cheaper Than Proof of Work (2015)
The idea that marginal costs necessarily approach marginal revenues is plain wrong. The Ethereum wiki [1] says it best:<p>&gt; It&#x27;s not enough to simply say that marginal cost approaches marginal revenue; one must also posit a plausible mechanism by which someone can actually expend that cost. For example, if tomorrow I announce that every day from then on I will give $100 to a randomly selected one of a given list of ten people (using my laptop&#x27;s &#x2F;dev&#x2F;urandom as randomness), then there is simply no way for anyone to send $99 to try to get at that randomness. Either they are not in the list of ten, in which case they have no chance no matter what they do, or they are in the list of ten, in which case they don&#x27;t have any reasonable way to manipulate my randomness so they&#x27;re stuck with getting the expected-value $10 per day.<p>The author here suggests that grinding attacks could be that plausible mechanism, but in a PoS system with a minimum account age, grinding attacks depend on being able to predict the state of the blockchain&#x27;s entropy after that minimum age has passed. See [2] for some ideas about how entropy can be generated.<p>Keep in mind that grinding attacks aren&#x27;t free due transaction fees, so an attacker needs a certain degree of confidence that an entropy state will occur in order for a grinding attack to have a positive expected value; they can&#x27;t just create a huge number accounts to cover all the possible states. In a well-designed system, the minimum account age and minimum transaction fee will be chosen such that all grinding attacks have negative expected value.<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;ethereum&#x2F;wiki&#x2F;wiki&#x2F;Proof-of-Stake-FAQ" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ethereum&#x2F;wiki&#x2F;wiki&#x2F;Proof-of-Stake-FAQ</a><p>[2] <a href="https:&#x2F;&#x2F;vitalik.ca&#x2F;files&#x2F;randomness.html" rel="nofollow">https:&#x2F;&#x2F;vitalik.ca&#x2F;files&#x2F;randomness.html</a>