I'm unsure how Proof of Stake prevents double spending. In PoW it's evident that I need 51% of the hashing power of the network, to "overtake" the real chain with my fraudulent fork. But what stops me in Proof of Stake to:

  1. Save the current chain as is.
  2. Send 1 coin to Bob
  3. Go offline and add blocks to my backed up chain, excluding my prior transactions, and wait until it's larger than the real blockchain
  4. Go online and broadcast the fraudulent fork.

Does the rest of the network have a way to see that I cheated by adding my own blocks? In PoW they could check the hash, but they can't here. I of course wouldn't get any fees or rewards for the "fake" blocks, but I would still get my money back, that I send to Bob.

Hope someone can clarify why this is not possible, and how the network can spot that I wasn't selected to add those blocks.


What you are describing is a well documented problem with Proof of Stake called Nothing at Stake theory.

In PoW they could check the hash, but they can't here.

That's incorrect. You could produce a valid hash and still have double spend transactions in PoW. That is because bitcoin blockchain is designed to accept the longest chain (technically, chain with the most proof of work). However, to launch such an attack in a PoW chain, the attacker must either control >50% of hashing power to mine faster than the rest of the network or split his computing power in half if he wants to mine on competing chains. That is not economically sound decision and hence cannot be achieved with PoW. However, in PoS the shortcoming arises because it costs a validator nothing to validate transactions on multiple forks.

How to prevent Nothing at Stake Attack?

There have been proposed theories that involves penalizing validators if they simultaneously create blocks on multiple chains, by means of including proof of misbehavior. This means malicious validator's deposit is deducted if two conflicting signed block headers are found into the blockchain as a later point in time. This can be achieved because, to qualify as a validator, nodes will have to lock certain in the chain through a smart contract.

  • Okay, that makes sense. But in case of nothing-at-stake, why are the mechanism accepting that a forger can validate two blocks simultaneously? I.e. if there are two forks, and I receive two blocks, one for each, from the same validator - what's the issue of not just rejecting both of them? Simply having a rule, that you can only validate one chain should solve the problem? Or what am I missing? – Benjamin Larsen Apr 23 '19 at 22:33
  • If two forgers reach a solution at the same time, fork in the blockchain is created. In an ideal case other participants reject one chain and follow the other. But in ‘Nothing at Stake’ validators on the network want to maximize their profit and as a result will continue validation on both chains as they will lose rewards on the other chain if they stop validating that chain. The PoW protocol is protected against this problem as the validators will have to split their computational power between the two chains, but there is nothing to split in PoS as their coins reside in both chains. – Ugam Kamat Apr 24 '19 at 8:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.