# Creating a proposal
A block consists of a header, transactions, votes (the commit), and a list of evidence of malfeasance (ie. signing conflicting votes).
We include no more than 1/10th of the maximum block size
(ConsensusParams.Block.MaxBytes
) of evidence with each block.
# Reaping transactions from the mempool
When we reap transactions from the mempool, we calculate maximum data
size by subtracting maximum header size (MaxHeaderBytes
), the maximum
amino overhead for a block (MaxAminoOverheadForBlock
), the size of
the last commit (if present) and evidence (if present). While reaping
we account for amino overhead for each transaction.
# Validating transactions in the mempool
Before we accept a transaction in the mempool, we check if it's size is no more than {MaxDataSize}. {MaxDataSize} is calculated using the same formula as above, except we subtract the max number of evidence, {MaxNum} by the maximum size of evidence