Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In-turn signers should override out-of-turn blocks #8

Closed
soc1c opened this issue Apr 19, 2019 · 2 comments
Closed

In-turn signers should override out-of-turn blocks #8

soc1c opened this issue Apr 19, 2019 · 2 comments

Comments

@soc1c
Copy link

soc1c commented Apr 19, 2019

We should add that in-turn signers should continue to produce their block even if they receive an out-of-turn block for that height before they publish their in-turn one. Otherwise clock drift and the lack of a minimum delay for out of turn blocks can cause an online in-turn validator from publishing their block and cause problems for the network. There's a more detailed explanation of how this happens at https://docs.google.com/document/d/1tmsr66sAPJmIZfSy5zck1uxnLzaXYxvzTNL5CF1pJQ0/edit#heading=h.ic4qz2ybx51

ref ethereum#1570 (comment)

@ChainSafeSystems
Copy link
Member

Proposal: Add two configurable options for the Clique algorithm:

OUT_OF_TURN_DELAY_MULTIPLIER
Currently explicitly 500ms in the spec

MIN_OUT_OF_TURN_DELAY
New concept so Rinkeby and Görli are effectively using 0ms.
Absolute minimum amount of time to wait before publishing an out of turn block

Delay calculation is then:
MIN_OUT_OF_TURN_DELAY + rand(SIGNER_COUNT * OUT_OF_TURN_DELAY_MULTIPLER)

@soc1c
Copy link
Author

soc1c commented Apr 20, 2019

9f5cfc8 proposes

  • Each singer is allowed to sign maximum one out of SIGNER_LIMIT consecutive blocks. The order is not fixed, but in-turn signing weighs more (DIFF_INTURN) than out of turn one (DIFF_NOTURN). In case an out-of-turn block is received, an in-turn signer should continue to publish their block to ensure the chain always prefers in-turn blocks in any case. This prevents in-turn validators to be prevented from publishing their block and potential network problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants