Lighthouse: Possible consensus bug in `process_exits`

Created on 30 Apr 2020  路  2Comments  路  Source: sigp/lighthouse

The process_exits function verifies the voluntary exits in parallel. If there is a duplicate voluntary exit then

    verify!(
        validator.exit_epoch == spec.far_future_epoch,
        ExitInvalid::AlreadyExited(exit.validator_index)
    );

will not trigger, allowing for voluntary exists to be initiated multiple times. The spec requires voluntary exits to not have been initiated.

    # Verify exit has not been initiated
    assert validator.exit_epoch == FAR_FUTURE_EPOCH

(It seems initiate_validator_exit does not provide protection by silently returning early if the validator already initiated an exit.)

bug

Most helpful comment

I'm working on fixing this, and improving our block processing tests in the process. I'm going to see if I can improve the ergonomics of the test builders, which have been long considered quite unwieldy :crossed_fingers:

All 2 comments

Another good catch. I think this is confirmation that we should go through an remove all the parallel iterators from block processing.

I'm working on fixing this, and improving our block processing tests in the process. I'm going to see if I can improve the ergonomics of the test builders, which have been long considered quite unwieldy :crossed_fingers:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

wschwab picture wschwab  路  3Comments

michaelsproul picture michaelsproul  路  4Comments

nickoneill picture nickoneill  路  3Comments

q9f picture q9f  路  3Comments

michaelsproul picture michaelsproul  路  4Comments