-
Notifications
You must be signed in to change notification settings - Fork 917
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
Beacon node slasher improvement #13549
Commits on Jan 30, 2024
-
Slasher: Ensure all gorouting are stopped before running
Stop
actions.Fixes #13550. In tests, `exitChan` are now useless since waitgroup are used to wait for all goroutines to be stopped.
Configuration menu - View commit details
-
Copy full SHA for 9270c52 - Browse repository at this point
Copy the full SHA 9270c52View commit details -
Configuration menu - View commit details
-
Copy full SHA for d1d287b - Browse repository at this point
Copy the full SHA d1d287bView commit details -
detect_blocks.go
: Improve. - NFC- Rename some variables. - Add comments. - Use second element of `range` when possible.
Configuration menu - View commit details
-
Copy full SHA for 45ce8ed - Browse repository at this point
Copy the full SHA 45ce8edView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0189027 - Browse repository at this point
Copy the full SHA 0189027View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5add622 - Browse repository at this point
Copy the full SHA 5add622View commit details -
Configuration menu - View commit details
-
Copy full SHA for d8462fd - Browse repository at this point
Copy the full SHA d8462fdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f53312 - Browse repository at this point
Copy the full SHA 0f53312View commit details -
Configuration menu - View commit details
-
Copy full SHA for b6bb491 - Browse repository at this point
Copy the full SHA b6bb491View commit details -
LastEpochWrittenForValidators
: Name variables consistently. - NFCAvoid mixes between `indice(s)`and `index(es)`.
Configuration menu - View commit details
-
Copy full SHA for 5c4180c - Browse repository at this point
Copy the full SHA 5c4180cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7049d77 - Browse repository at this point
Copy the full SHA 7049d77View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2508142 - Browse repository at this point
Copy the full SHA 2508142View commit details -
Configuration menu - View commit details
-
Copy full SHA for eefb8ae - Browse repository at this point
Copy the full SHA eefb8aeView commit details -
Configuration menu - View commit details
-
Copy full SHA for c19b8ee - Browse repository at this point
Copy the full SHA c19b8eeView commit details -
Configuration menu - View commit details
-
Copy full SHA for f6b96ed - Browse repository at this point
Copy the full SHA f6b96edView commit details -
Configuration menu - View commit details
-
Copy full SHA for 104e794 - Browse repository at this point
Copy the full SHA 104e794View commit details -
Configuration menu - View commit details
-
Copy full SHA for 257b0cb - Browse repository at this point
Copy the full SHA 257b0cbView commit details -
Test_processQueuedAttestations
: Add 2 test cases:- Same target with different signing roots - Same target with same signing roots
Configuration menu - View commit details
-
Copy full SHA for efdbeb0 - Browse repository at this point
Copy the full SHA efdbeb0View commit details -
checkDoubleVotesOnDisk
==>checkDoubleVotes
.Before this commit, `checkDoubleVotes` did two tasks: - Checking if there are any slashable double votes in the input list of attestations with respect to each other. - Checking if there are any slashable double votes in the input list of attestations with respect to our database. However, `checkDoubleVotes` is called only in `checkSlashableAttestations`. And `checkSlashableAttestations` is called only in: - `processQueuedAttestations`, and in - `IsSlashableAttestation` Study of case `processQueuedAttestations`: --------------------------------------------- In `processQueuedAttestations`, `checkSlashableAttestations` is ALWAYS called after `Database.SaveAttestationRecordsForValidators`. It means that, when calling `checkSlashableAttestations`, `validAtts` are ALREADY stored in the DB. Each attestation of `validAtts` will be checked twice: - Against the other attestations of `validAtts` (the portion of deleted code) - Against the content of the database. One of those two checks is redundent. ==> We can remove the check against other attestations in `validAtts`. Study of case `Database.SaveAttestationRecordsForValidators`: ---------------------------------------------------------------- In `Database.SaveAttestationRecordsForValidators`, `checkSlashableAttestations` is ALWAYS called with a list of attestations containing only ONE attestation. This only attestaion will be checked twice: - Against itself, and an attestation cannot conflict with itself. - Against the content of the database. ==> We can remove the check against other attestations in `validAtts`. ========================= In both cases, we showed that we can remove the check of attestation against the content of `validAtts`, and the corresponding test `Test_checkDoubleVotes_SlashableInputAttestations`.
Configuration menu - View commit details
-
Copy full SHA for 72f108b - Browse repository at this point
Copy the full SHA 72f108bView commit details -
Test_processQueuedBlocks_DetectsDoubleProposals
: Wrap proposals.So we can add new proposals later.
Configuration menu - View commit details
-
Copy full SHA for e171085 - Browse repository at this point
Copy the full SHA e171085View commit details -
Fix slasher multiple proposals false negative.
If a first batch of blocks is sent with: - validator 1 - slot 4 - signing root 1 - validator 1 - slot 5 - signing root 1 Then, if a second batch of blocks is sent with: - validator 1 - slot 4 - signing root 2 Because we have two blocks proposed by the same validator (1) and for the same slot (4), but with two different signing roots (1 and 2), the validator 1 should be slashed. This is not the case before this commit. A new test case has been added as well to check this. Fixes #13551
Configuration menu - View commit details
-
Copy full SHA for d546115 - Browse repository at this point
Copy the full SHA d546115View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9f1c451 - Browse repository at this point
Copy the full SHA 9f1c451View commit details -
Configuration menu - View commit details
-
Copy full SHA for f19225d - Browse repository at this point
Copy the full SHA f19225dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 025110e - Browse repository at this point
Copy the full SHA 025110eView commit details -
Update beacon-chain/db/slasherkv/slasher.go
Co-authored-by: Sammy Rosso <15244892+saolyn@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 6e42331 - Browse repository at this point
Copy the full SHA 6e42331View commit details -
Update beacon-chain/db/slasherkv/slasher.go
Co-authored-by: Sammy Rosso <15244892+saolyn@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 084cd08 - Browse repository at this point
Copy the full SHA 084cd08View commit details -
CheckAttesterDoubleVotes
: Keep happy path without indentation.Well, even if, in our case, "happy path" mean slashing.
Configuration menu - View commit details
-
Copy full SHA for 67235ae - Browse repository at this point
Copy the full SHA 67235aeView commit details -
'SaveAttestationRecordsForValidators': Save the first attestation.
In case of multiple votes, arbitrarily save the first attestation. Saving the first one in particular has no functional impact, since in any case all attestations will be tested against the content of the database. So all but the first one will be detected as slashable. However, saving the first one and not an other one let us not to modify the end to end tests, since they expect the first one to be saved in the database.
Configuration menu - View commit details
-
Copy full SHA for 74fe7af - Browse repository at this point
Copy the full SHA 74fe7afView commit details -
Not to conflict with the new `min` built-in function.
Configuration menu - View commit details
-
Copy full SHA for fec9d56 - Browse repository at this point
Copy the full SHA fec9d56View commit details -
Configuration menu - View commit details
-
Copy full SHA for e9afe03 - Browse repository at this point
Copy the full SHA e9afe03View commit details