tendermint: abci: use EndBlock to control empty block creation

Since some apps will change the app hash every block, even with empty blocks, setting create_empty_blocks=false won’t achieve anything.

To solve this, we could add a Pause bool field to ResponseEndBlock that tells Tendermint whether to make a new block right away or not.

We should write a proper ADR before making this change. Note that any state transitions that occur in the last block committed will not have light-client proofs until the next block is committed, so apps need to be careful when setting Pause=true

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 10
  • Comments: 25 (20 by maintainers)

Commits related to this issue

Most upvoted comments

I think it would still be a valuable addition. I believe that the create_empty_blocks=false setting is currently largely useless when some of the standard SDK modules are enabled, notably staking.

Our solution to this has been to move stuff out of the app_state and into an external database. Being able to just signal that a finalizing block is not needed for this state change seems to be the superior option to me.