Skip to content

Commit

Permalink
Merge branch 'tomas/fix-pos-slashing' (#1246)
Browse files Browse the repository at this point in the history
* tomas/fix-pos-slashing:
  changelog: add #1246
  app/ledger/finalize_block: slash after copying of validator sets
  scripts: add a helper to repeat e2e test
  • Loading branch information
tzemanovic committed Apr 12, 2023
2 parents 9fdbd23 + cdcf1c0 commit 23546b5
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .changelog/unreleased/bug-fixes/1246-fix-pos-slashing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- PoS: Fixed an issue with slashable evidence processed
and applied at a new epoch causing a ledger to crash.
([#1246](https://github.com/anoma/namada/pull/1246))
6 changes: 4 additions & 2 deletions apps/src/lib/node/ledger/shell/finalize_block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ where
)?;
}

// Invariant: This has to be applied after
// `copy_validator_sets_and_positions` if we're starting a new epoch
self.slash();

let wrapper_fees = self.get_wrapper_tx_fees();
let mut stats = InternalStats::default();

Expand Down Expand Up @@ -543,8 +547,6 @@ where
.wl_storage
.update_epoch(height, header_time)
.expect("Must be able to update epoch");

self.slash();
(height, new_epoch)
}

Expand Down
29 changes: 29 additions & 0 deletions scripts/repeat-e2e-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/sh
# Run an e2e test at most n times, exit at first failure.
# This can be handy for testing of non-deterministic issues that are tricky to
# reproduce.
#
# The first arg is the max number of repetitions and second is the exact name
# of the test.
#
# Usage example:
# $ scripts/repeat-e2e-test.sh 10 e2e::ledger_tests::run_ledger
#
# Adapted from https://gitlab.com/tezos/tezos/-/blob/master/tests_python/scripts/repeat_test.sh

NUM=$1
TEST=$2
# Thanks internet https://stackoverflow.com/a/4774063/3210255
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
NIGHTLY=$(cat "$SCRIPTPATH"/../rust-nightly-version)

for i in $(seq 1 "$NUM")
do
echo "Execution $i/$NUM"
if ! RUST_BACKTRACE=1 NAMADA_E2E_KEEP_TEMP=true NAMADA_E2E_DEBUG=true cargo "+$NIGHTLY" test "$TEST" -Z unstable-options -- --exact --test-threads=1 --nocapture; then
exit 1
fi
done
exit 0


0 comments on commit 23546b5

Please sign in to comment.