Moves ContextualCheckFinalizerCommit() in ATMP after checking for already spent txs, this prevents the function from banning nodes that relies commits we already know.
Reviews the current DoS scores for the contextual checks on commits to have a more realistic and correct behavior:
malformed commits cause ban.
commits spending unknown txs cause a moderate increase in DoS (we go to disk each time).
duplicate commits are invalid but do not cause a score DoS increase.
The following causes are now assigning a different DoS value:
bad-deposit-malformed now assigns 100 -> was 10 before
bad-deposit-vout-script now assigns 100 -> was 10 before
bad-deposit-script-not-solvable now assigns 100 -> was 10 before
bad-deposit-cannot-extract-validator-address now assigns 100 -> was 10 before
bad-deposit-invalid now assigns 100 -> was 10 before
bad-vote-malformed now assigns 100 -> was 10 before
bad-vote-vout-script now assigns 100 -> was 10 before
bad-vote-data-format now assigns 100 -> was 10 before
bad-scriptpubkey-pubkey-format now assigns 100 -> was 10 before
bad-vote-prev-not-deposit-vote-or-logout now assigns 100 -> was 10 before
bad-vote-not-same-payvoteslash-script now assigns 100 -> was 10 before
bad-logout-malformed now assigns 100 -> was 10 before
bad-logout-vout-script now assigns 100 -> was 10 before
bad-logout-script-not-solvable now assigns 100 -> was 10 before
bad-logout-cannot-extract-validator-address now assigns 100 -> was 10 before
bad-logout-not-from-validator now assigns 100 -> not there before,
bad-logout-invalid now assigns 0 -> this catches all the other causes not specified before and it should not cause ban (LOGOUT_NOT_YET_A_VALIDATOR, LOGOUT_ALREADY_DONE).
bad-logout-prev-not-deposit-or-vote now assigns 100 -> was 10 before
bad-logout-not-same-payvoteslash-script now assigns 100 -> was 10 before
bad-withdraw-malformed now assigns 100 -> was 10 before
bad-withdraw-vout-script-invalid-p2pkh now assigns 100 -> was 10 before
bad-withdraw-script-not-solvable now assigns 100 -> was 10 before
bad-withdraw-cannot-extract-validator-address now assigns 100 -> was 10 before
bad-withdraw-prev-not-logout-or-vote now assigns 100 -> was 10 before
bad-withdraw-script-not-solvable now assigns 100 -> was 10 before
bad-slash-data-format now assigns 100 -> was 10 before
bad-slash-not-slashable now assigns 100 -> was 10 before
SLASH_TOO_EARLY and SLASH_ALREADY_SLASHED now assigns 0 -> was 10 before
This PR tries to achieve the following:
ContextualCheckFinalizerCommit()
in ATMP after checking for already spent txs, this prevents the function from banning nodes that relies commits we already know.The following causes are now assigning a different DoS value:
bad-deposit-malformed
now assigns 100 -> was 10 beforebad-deposit-vout-script
now assigns 100 -> was 10 beforebad-deposit-script-not-solvable
now assigns 100 -> was 10 beforebad-deposit-cannot-extract-validator-address
now assigns 100 -> was 10 beforebad-deposit-invalid
now assigns 100 -> was 10 beforebad-vote-malformed
now assigns 100 -> was 10 beforebad-vote-vout-script
now assigns 100 -> was 10 beforebad-vote-data-format
now assigns 100 -> was 10 beforebad-scriptpubkey-pubkey-format
now assigns 100 -> was 10 beforebad-vote-prev-not-deposit-vote-or-logout
now assigns 100 -> was 10 beforebad-vote-not-same-payvoteslash-script
now assigns 100 -> was 10 beforebad-logout-malformed
now assigns 100 -> was 10 beforebad-logout-vout-script
now assigns 100 -> was 10 beforebad-logout-script-not-solvable
now assigns 100 -> was 10 beforebad-logout-cannot-extract-validator-address
now assigns 100 -> was 10 beforebad-logout-not-from-validator
now assigns 100 -> not there before,bad-logout-invalid
now assigns 0 -> this catches all the other causes not specified before and it should not cause ban (LOGOUT_NOT_YET_A_VALIDATOR, LOGOUT_ALREADY_DONE).bad-logout-prev-not-deposit-or-vote
now assigns 100 -> was 10 beforebad-logout-not-same-payvoteslash-script
now assigns 100 -> was 10 beforebad-withdraw-malformed
now assigns 100 -> was 10 beforebad-withdraw-vout-script-invalid-p2pkh
now assigns 100 -> was 10 beforebad-withdraw-script-not-solvable
now assigns 100 -> was 10 beforebad-withdraw-cannot-extract-validator-address
now assigns 100 -> was 10 beforebad-withdraw-prev-not-logout-or-vote
now assigns 100 -> was 10 beforebad-withdraw-script-not-solvable
now assigns 100 -> was 10 beforebad-slash-data-format
now assigns 100 -> was 10 beforebad-slash-not-slashable
now assigns 100 -> was 10 beforeSLASH_TOO_EARLY
andSLASH_ALREADY_SLASHED
now assigns 0 -> was 10 before