Context
Currently inside Desmos we have the following Tendermint consensus params set:
create_empty_blocks: true
create_empty_blocks_interval: 0s
timeout_commit: 1s
timeout_propose: 3s
peer_gossip_sleep_duration: 100ms
This has lead the chain to produce a lot of empty blocks at the current rate of 1 every 5-6 seconds, causing new validators to take up to 6 hours to completely sync the node the first time they start it up.
While empty blocks are used to tell the chain has not stopped (its the only meaning they have), I really think that this should be addressed in some way.
After @kwunyeung told me e-Money have been able to create a 1-minute-heartbeat system, I've browsed through their code and seen that they have set the following parameters instead:
create_empty_blocks: false
create_empty_blocks_interval: 60s
timeout_commit: 500ms
timeout_propose: 2s
peer_gossip_sleep_duration: 25ms
This code can be found inside e-Money's cmd main.go file.
As @kwunyeung said, they are setting all the other parameters as the create_empty_blocks might not work now (but Ethan Frey should have pointed this out already). To fix these they are using all the other 4 to make all the nodes act the same way, effectively lowering the production of empty blocks.
@kwunyeung also said IOV has managed to do a similar thing but with a 5 minutes heartbeat instead.
What I think we should do is implement a 2 minutes heartbeat, as I think we will have enough transactions in any case in the future, and lowering this amount could affect the calculations of slashing and block rewards which are currently based on block height, as @kwunyeung said too.
What are your thoughts @kwunyeung @bragaz?
CC @angelorc
Context
Currently inside Desmos we have the following Tendermint consensus params set:
create_empty_blocks:truecreate_empty_blocks_interval:0stimeout_commit:1stimeout_propose:3speer_gossip_sleep_duration:100msThis has lead the chain to produce a lot of empty blocks at the current rate of 1 every 5-6 seconds, causing new validators to take up to 6 hours to completely sync the node the first time they start it up.
While empty blocks are used to tell the chain has not stopped (its the only meaning they have), I really think that this should be addressed in some way.
After @kwunyeung told me e-Money have been able to create a 1-minute-heartbeat system, I've browsed through their code and seen that they have set the following parameters instead:
create_empty_blocks:falsecreate_empty_blocks_interval:60stimeout_commit:500mstimeout_propose:2speer_gossip_sleep_duration:25msThis code can be found inside e-Money's cmd main.go file.
As @kwunyeung said, they are setting all the other parameters as the
create_empty_blocksmight not work now (but Ethan Frey should have pointed this out already). To fix these they are using all the other 4 to make all the nodes act the same way, effectively lowering the production of empty blocks.@kwunyeung also said IOV has managed to do a similar thing but with a 5 minutes heartbeat instead.
What I think we should do is implement a 2 minutes heartbeat, as I think we will have enough transactions in any case in the future, and lowering this amount could affect the calculations of slashing and block rewards which are currently based on block height, as @kwunyeung said too.
What are your thoughts @kwunyeung @bragaz?
CC @angelorc