Why do GoQuorum writes block even without any transaction? #1416
-
Hi, |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
We are currently figuring out what to change in order to add a possible option for producing less empty blocks. There is no simple answer for multiple reasons. We want to delay the empty block production, not stop them completely, because some smart contracts may rely on the 'now' instruction to have a recent timestamp on read calls. In solidity 0.7, 'now' is deprecated, 'block.timestamp' should be used. There is no way to access a real 'now' like any OS as it relies on the latest block's timestamp. There is an EIP for IBFT and an early implementation made. (https://media.consensys.net/scaling-consensus-for-enterprise-explaining-the-ibft-algorithm-ba86182ea668) Compared to Raft in GoQuorum, which is a not a standard eth miner and doesn't produce empty blocks, IBFT relies on the eth miner process and structure, and also, to maintain the network (liveness), proposal has to be exchanged between miners on expected time in order to round change as expected. It looks like there is a rule where the IBFT proposal ID is related to the block ID. (I read somewhere that the IBFT round number is included in the block) |
Beta Was this translation helpful? Give feedback.
-
Thanks for quick reply. I found
|
Beta Was this translation helpful? Give feedback.
-
It is 5 seconds period between blocks. (with or without tx) Gas limit is related to the operations made by the contracts for executing transactions. I understand that reaching this limit will end on pausing the execution of transactions until the block is released, therefore you are wasting computing time. (yet I have check it's the case in reality) Anyway we propose 1 sec because it provides the best throughput. |
Beta Was this translation helpful? Give feedback.
It is 5 seconds period between blocks. (with or without tx)
Gas limit is related to the operations made by the contracts for executing transactions.
https://ethereum.org/en/developers/docs/blocks/#block-size
I understand that reaching this limit will end on pausing the execution of transactions until the block is released, therefore you are wasting computing time. (yet I have check it's the case in reality)
Anyway we propose 1 sec because it provides the best throughput.