-
Notifications
You must be signed in to change notification settings - Fork 1
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
Stage 5 block verification failed for #12733 #39
Comments
we can confirm now that the error is reproduceable if trying to resync a node that happened to be part of the active validator set in the past. |
stage 5 verification fails, because of is_end_epoch argument cannot get calculated. on close block, do_keygen() is getting called. In the section "// We are a validator: Decrypt and deserialize our row and compare it to the commitment." This rows array holds the PART data. It looks like the validator "0x5C132de048605FB4e90B97a14cd25DA230dAf218" wrote a part, |
All blocks are verified on import, requiring all contract calls to be executed exactly the same way on all nodes. Stage 5 verification excecutes all contract calls as well as all system calls to verify that the same state results as specified in the block's header. If the state after all calls differs from the state root specified in the block's header stage 5 verification fails! The block rewards contract is executed when the block is getting closed, and only accepts a single boolean argument: If for some reason on some pending validators this argument is false when it should be true. This results in a stage 5 verification error, which marks the block as "bad block" which prevents it from being imported. If that block in fact was correct, syncing will fail indefinitely because this block is falsely marked as "bad" and no following block can be imported either. So how can this happen?The
On decrypting the information written into the Part for us by other pending validators we encounter a decryption error. This happens in the
It looks like the validator "0x5C132de048605FB4e90B97a14cd25DA230dAf218" wrote a part, with information that we ("0x40703fe50d7cbd36bc70295d29a93ec05badc6bd") are unable to decrypt. This fails the generation of the new hbbft Keys even if technically there would be enough Parts and Acks written to finish Key generation. |
We experienced the same error on the same block on different machines, while other machines with the similiar hardware could process the block
documentation for the import of an existing block: https://openethereum.github.io/Trace-NewBlock
Branch with additional logging information about whats going on: https://github.com/SurfingNerd/openethereum-3.x/tree/surfingnerd/stage-5-logging
The text was updated successfully, but these errors were encountered: