public void MaximumPenalties() { // Arrange IServiceProvider testServiceProvider = TestSystem.BuildTestServiceProvider(); BeaconState state = TestState.PrepareTestState(testServiceProvider); StateListLengths stateListLengths = testServiceProvider.GetService <IOptions <StateListLengths> >().Value; BeaconStateAccessor beaconStateAccessor = testServiceProvider.GetService <BeaconStateAccessor>(); int slashedCount = (state.Validators.Count / 3) + 1; Epoch currentEpoch = beaconStateAccessor.GetCurrentEpoch(state); Epoch outEpoch = currentEpoch + new Epoch((ulong)stateListLengths.EpochsPerSlashingsVector / 2); var slashedIndices = Enumerable.Range(0, slashedCount).ToList(); SlashValidators(testServiceProvider, state, slashedIndices, Enumerable.Repeat(outEpoch, slashedCount)); Gwei totalBalance = beaconStateAccessor.GetTotalActiveBalance(state); Gwei totalPenalties = state.Slashings.Aggregate(Gwei.Zero, (accumulator, x) => accumulator + x); (totalBalance / 3).ShouldBeLessThanOrEqualTo(totalPenalties); // Act RunProcessSlashings(testServiceProvider, state); // Assert foreach (int index in slashedIndices) { state.Balances[index].ShouldBe(Gwei.Zero, $"Incorrect balance {index}"); } }