[Ethereum] the safest minimum block time to use without having any problem on Proof-of-Authority consensus

block-intervalprivate-blockchainproof-of-authority

On the following blog, at very last paragraph, Vitalik Buterin mentioned that:

Hence, a 3-second target block time (and 5s actual block time) may be
quite viable. As usual, we’ll be more conservative at first and not
take things that far, but a block time of 12s does nevertheless seem
to be very much achievable.

I am not sure that does this statement holds on Proof-of-Authority consensus. Please see my example CustomGenesis.json file.

On the Proof-of-work consensus block time is dynamically changes based on the network, but on the Proof-of-Authority consensus, block time is fixed and we cannot change it after block-time is defined on the genesis block.

"clique": {
  "period": 15,
  "epoch": 30000
}

For example Rinkeby Ethereum testnet uses Proof-of-Authority and its block time is 15 seconds.

By following this tutorial, I have created a private chain based on Proof-of-Authority by using clique consensus engine - proof-of-authority. By default, blocks also recommended is 15 seconds. The problem is after, when we decide the block time on the genesis file, in future we cannot change it.

$ puppeth
...
How many seconds should blocks take? (default = 15)
> 15

Assume that we have a private ethereum-network with good network connectivity.

[Q] What might be the safest minimum block time to use without having any problem on Proof-of-Authority consensus?

For example, could I use 12 seconds or even less (such as 5 seconds) for block time without having any problem? If no, what kind of problems will I face with?

Thank you for your valuable time and help.

Best Answer

PoA in Aura consensus engine of parity defaults to 5s, which has been tested to run with good stability. PoA network runs one such infrastructure.

I have tested for a 1 sec PoA using aura running across 4 different geographical regions. This is the minimum possible and one that I have successfully tested :) Stability testing across more regions is still in progress. Will update with more info.

Update

Stability testing was successful. Only problems that were faced were regarding timings, the servers have to be synchronised with same time. After resolving this issue, there were no more problems.

The main thing being that they all need to have a synchronised time.

Possible problems that you might face:

  • Whichever server goes out of sync in time, fails to verify blocks from other ones. So the one which is out of sync, will follow its own chain if it is one of the validator node, or remain stuck if it is a normal sync node.
  • If one validator stops for some reason, other will continue the chain, and at that time, there will be a slight instability in average block time. But everything will come back to normal when all validators come back online.

Personally, I think 5s is a decent time for PoA and runs smoothly without any problems. If you wanna read about Aura, see Aura Consensus Protocol Audit.