How does validation work in proof of stake?


Hi everyone!

I’ve been doing some extra digging into how PoS works. What I’m having trouble tracking down is how validators decide whether they believe a block is valid or not.

In contrast to Bitcoin’s PoW Shaw256 hashes, what does PoS use to validate blocks?

I understand the staking aspect to PoS and also understand how the protocol chooses a validator out of those who staked their eth, but the gap in my understanding is how a validator would actually validate a block.

Thanks in advance for your help, Toshi community :slight_smile:


Hopefully this will help to clarify things.


@FaierPlay Here is another article I found to be very useful.


Hi Kakurat,

Just finished reading the first explanation you sent.

Although a good summary, it still doesn’t explain how a forger decides which block is worth staking. It also doesn’t explain what the process to validate a block is once a forger is selected.

Going to take a look at the second link you sent!


Maybe to truly understand it we need to analyse the code that makes the actual decisions in the process (maybe with a flow chart), bearing in mind that the example given (QTUM) has different (aging) rules than other Proof of Stake systems. Also, the hybrid examples (including PIVX) only used Proof of Work for an interim time while the coin distribution gets into people’s hands, and then they switch to Proof of Stake. So, effectively, POW does not have any part in consensus in PIVX (and its forks), except in the beginning.

In some or maybe most POS currencies a coin ages over some number of blocks according to some formula that also involves the coin weight, but afterwards age has no bearing on the chance of winning, (I think). So the chance of a 1000 coin stake winning would be equal, whether that UTXO was created one week ago or a year ago, but each time a competitor wins it drops out of the contenders’ set until it ages enough to stake again.


Hi Ian, I understand the aging process to select a validator. What I don’t understand is:

  1. How does a validator decide “I’m going to stake this block”? How would he/she know that the transaction is legit beforehand?

  2. If he/she stakes a block and with the age/stake size they are selected, how does he/she then go about actually VALIDATING a transaction? Is it similar to PoW where it uses a previous block’s hash + hash of the block + a plug to generate a sepecific hash? In other words, what exactly does the validator DO to validate a block once they are selected?