-
Notifications
You must be signed in to change notification settings - Fork 796
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
Time discrepancy false positive with Teku #3421
Comments
Have you inquired with Teku about this? It looks like it might be a discrepancy in how we define the lighthouse/validator_client/src/check_synced.rs Lines 58 to 71 in df51a73
|
I think I found out when this happens: if there are two or more consecutive empty slots on the beacon chain. So it looks like Teku doesn't update the head slot (or sync distance) when there are empty slots, while lighthouse expects it to go up. Teku logs on Prater:
Lighthouse VC logs:
What I haven't found out yet is why this error only appears during the doppelganger protection phase. |
I've seen several reports now of users seeing this even when they're not using doppelganger protection. I think your diagnosis about the head slot behaviour must be correct. |
False positives can also be observed with Lodestar ChainSafe/lodestar#5555. As outlined already, there seems to be a different interpretation of what value should be used for Lighthouse always does the calculation based on current / clock slot lighthouse/beacon_node/http_api/src/lib.rs Line 2737 in c3321dd
Whereas Lodestar does not consider the current / clock slot at all when node is synced (only when syncing), hence it can't be used to detect a time discrepancy. The sync_distance is always set to 0 and the head slot is set to the head of fork choice. This breaks the assumptions Lighthouse has when determining a time discrepancy as missed blocks would set the head behind while sync distance is still 0 as mentioned in #3421 (comment). For Lodestar, the time discrepancy error can already be observed with a single missed block as by the time Lighthouse calls syncing status API the head might not yet be updated resulting in a two (2) slot difference. According to the beacon spec, the Lodestar implementation seems correct sync_distance:
allOf:
- description: "How many slots node needs to process to reach head. 0 if synced."
- $ref: "../../beacon-node-oapi.yaml#/components/schemas/Uint64" But I am not sure how accurate those property descriptions are, for Clock drifts have been a relatively frequent issue, especially for solo stakers and I would like to see a solution for this on Lodestar to warn users about it ChainSafe/lodestar#6037. As Lighthouse is the only client right now as far as I am aware that does anything in that direction, it would be interesting to get your thoughts on this. |
Description
During the doppelganger protection phase I received multiple error messages from the VC warning about time discrepancy, even though both VC and BN run on the same machine with correct NTP time.
Version
2.5.1 running on Prater
Present Behaviour
After upgrading to 2.5.1 and restarting, the Lighthouse VC went into the doppelganger listening phase. It successfully connected to both configured beacon nodes, a Teku 22.8.0 and a Lighthouse 2.5.1 running on the same machine, fully synced. During the doppelganger protection phase I then received multiple times the log message
There were no error messages about the Lighthouse BN, but that might be only because it was listed as second prio BN.
After the doppelganger protection phase ended, there were no further time discrepancy errors.
Expected Behaviour
No error messages about time discrepancy also during the doppelganger protection phase.
Steps to resolve
The text was updated successfully, but these errors were encountered: