Block weight is divided between 3 different types of transaction classes:
- mandatory
- operation
- normal
Each type has a max_total
. The max_total
is used so that any one type does not dominate the block. In any case, there is a max_block
for which the sum of these classes cannot exceed.
Below is an illustration with a 3 normal transactions that have reach itits limit, 2 mandatory transactions, and 1 operational transactionstransaction. Also, the note that the block is not full.
/// | |`max_block`
/// | |
/// | | -- `Mandatory` limit (unlimited)
/// |# | | |
/// |# | `Ext3` | - - `Operational` limit
/// |# | `Ext2` |- - `Normal` limit
/// | # | `Ext1` |# |
/// | #| `on_initialize` |# #|
/// | #| `base_block` |###|
/// |NOM| |NOM|
Questions:
Please tell me if the following understanding is correct: In the case that there are no more operational or mandatory transactions that can fill up the remaining space and normal transactions have reach its limitslimit. A block is created and will NOT attempt to fill the remaining space with more normal transactions?
If the above is true, what are the limitations that prevents an architectural design that attempts to always fill up the remaining space?
Can I reach into the transaction pool to see if I can add more normal transactions to fill up the remaining space?