How does the Clique PoA consensus protocol choose the next minting/mining node? Is it random (within the bounds of the number of blocks that must be elapsed before a node can mint/mine another block)?

I am further confused by looking at https://www.rinkeby.io/#stats and seeing they are listing a network hashrate and difficulty.

  • @j-doe, have you found answer on this question? I have same issue. – Ivan Burlutskiy Jan 10 '18 at 8:36
  • 1
    @IvanBurlutskiy I have not found a definitive answer, sorry. As far as I can tell, nodes just "race" to sign blocks (when they are eligible, because the required number of blocks have elapsed since the last time they signed). To prevent the "race" from being too close and causing forks, there is a random "offset" time added to the block interval. This causes one node to sign before the others. [I am not sure any of this is correct, but it is my naive reading of the code] – J. Doe Jan 12 '18 at 9:50

All the details are documented here: https://github.com/ethereum/EIPs/issues/225

In short, the facts for a system with N sealers:

  • every block has a preferred sealer (in-turn signing), which will set the block difficulty to 2
  • if the preferred sealer does not sign the block, other sealers can jump in (out-of-turn), but they can set the block difficulty only to 1
  • The preferred sealer is switching by applying round-robin
  • The forks still can happen, the heaviest chain (-> block difficulties added) will win (-> GHOST-protocol)
  • Out-of-turn sealers will delay they block proposal, in order to give the in-turn sealer a better chance to get his proposal propagated through the network.
  • When a sealer in Clique signs a block, he is not allowed to seal the next floor(N / 2) blocks

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.