Prevent validators from proposing blocks until they have received new blocks from ≥ 1/3 of validators (by stake weight)

Description

Currently blocks can be proposed almost arbitrarily through the BlockAPI createBlock endpoint. There are some restrictions; for example, If no new deploys have been sent to the validator, createBlock will return a "No New Deploys" error.

This ticket is to create a new restriction such that a validator may not propose a new block until it has received a set S of blocks such that

  • the blocks in S were not in the validator’s view of the dag when it last proposed, and

  • the stake weights of the validators proposing at least one block in S sum up to more than 1/3 of the total stake.

If these conditions are not met, the propose must fail with "Must wait for more blocks from other validators."

Implementing these restrictions on the BlockAPI endpoint should be one ticket. Implementing verification that any particular block does not violate these restrictions should be a different ticket; it should allow a slashing of stake anywhere from 0 (ignore that the validator is misbehaving) to infinity (burn that validator’s stake).

Status

Assignee

Daniyar Itegulov

Reporter

Rao Bhamidipati

Components

None

Story Points

None

Epic Link

Sprint

Priority

High