# How are block proposals made in Casper?

A blog post says this about block proposals in Casper:

A NXT-style random number generator is used to determine who can generate a block at each height; essentially, this involves taking missing block proposers as a source of entropy.

Making blocks is a process that takes place independently from everything else: validators gather transactions, and when it comes time for them to make a block, they produce one, sign it and send it out to the network.*

How many of the (up to 256) validators have the right to make a block proposal at a given height?

If my understanding is correct, during block proposal, there may be parallel competing blocks at the current height because the consensus-by-bet process has not entirely converged yet. Can a validator place his block proposal on top of any of these top level blocks? While doing so, could he choose one or several of the remaining top level blocks as uncle(s)?

There is precisely one validator with the right to create a block at any given height, randomly (but deterministically) chosen from the validators, weighted by their stakes. If that validator fails to do so, or their block is rejected by the rest of the network, then there is just a "hole" in the chain where that block would have been.

This can happen because CASPER works differently than most other algorithms in that consensus is per-block, not per-chain. Blocks aren't built "atop" other blocks, they just exist at a given height, and only one block may be at a given height in the canonical chain. There's not a link to the previous block.

Whenever the most likely candidate for a height changes (possibly to or from "no block") the final state of the blockchain is recalculated by running transactions in accepted blocks. This, in turn, works because any properly formatted transaction is a valid transaction. If a transaction occurs in two blocks, it most likely just does nothing the second time.

• What is the entropy source for the election?
– Ini
Commented Feb 21, 2018 at 15:18
• This is actually a description of an old version of Casper. It's been years, and I don't remember if there was ever a source of entropy that was agreed upon in this version. Commented Feb 21, 2018 at 21:03
• This is one of the most important topics in non PoW consensus algorithms. Do you how it is implemented on the testnet? The github docu says nothing specific.
– Ini
Commented Feb 22, 2018 at 3:35
• The current CFFG form of Casper is a hybrid of PoW-PoS. The standard Ethash PoW creates blocks, and the Casper contract finalizes them. There hasn't been consensus on a pure PoS proposal mechanism yet. Commented Feb 23, 2018 at 11:11
• Ah, I think I see the source of confusion. There are no "proposals." As I understand it, validators asynchronously vote on whatever block they so please, and if any block accumulates enough votes, it becomes finalized. (The actual mechanism is more complex than that, of course.) There's no intermediate selection of a candidate by a specific validator. Commented Feb 26, 2018 at 20:40