Skip to content

Commit 12ec2ac

Browse files
committed
feat:Add more helper
Signed-off-by: Chen Kai <281165273grape@gmail.com>
1 parent 857083e commit 12ec2ac

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/consensus/helpers/finality.zig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const std = @import("std");
2+
const primitives = @import("../../primitives/types.zig");
3+
const consensus = @import("../../consensus/types.zig");
4+
const configs = @import("../../configs/config.zig");
5+
const constants = @import("../../primitives/constants.zig");
6+
const preset = @import("../../presets/preset.zig");
7+
const phase0 = @import("../../consensus/phase0/types.zig");
8+
const altair = @import("../../consensus/altair/types.zig");
9+
const electra = @import("../../consensus/electra/types.zig");
10+
const epoch_helper = @import("../../consensus/helpers/epoch.zig");
11+
12+
pub fn getFinalizationDelay(state: *const consensus.BeaconState) u64 {
13+
return epoch_helper.getPreviousEpoch(state) - state.finalizedCheckpointEpoch();
14+
}
15+
16+
pub fn isInInactivityLeak(state: *const consensus.BeaconState) bool {
17+
return getFinalizationDelay(state) > preset.ActivePreset.get().MIN_EPOCHS_TO_INACTIVITY_PENALTY;
18+
}

src/consensus/helpers/validator.zig

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,22 @@ pub fn getUnslashedParticipatingIndices(
539539
return result_slice;
540540
}
541541

542+
pub fn getEligibleValidatorIndices(state: *consensus.BeaconState,allocator:std.mem.Allocator) ![]primitives.ValidatorIndex {
543+
const previous_epoch = epoch_helper.getPreviousEpoch(state);
544+
var eligible = std.ArrayList(primitives.ValidatorIndex).init(allocator);
545+
defer eligible.deinit();
546+
547+
for (state.validators(), 0..) |v, index| {
548+
if (isActiveValidator(&v, previous_epoch) or
549+
(v.slashed and previous_epoch + 1 < v.withdrawable_epoch)) {
550+
try eligible.append(@as(primitives.ValidatorIndex, index));
551+
}
552+
}
553+
554+
return eligible.toOwnedSlice();
555+
}
556+
557+
542558
test "test getBalanceChurnLimit" {
543559
preset.ActivePreset.set(preset.Presets.minimal);
544560
defer preset.ActivePreset.reset();

src/root.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub const bls = @import("./bls/bls.zig");
3030
pub const deposit_helper = @import("consensus/helpers/deposit.zig");
3131
pub const voluntary_exit_helper = @import("consensus/helpers/voluntary_exit.zig");
3232
pub const justification_finalization_helper = @import("consensus/helpers/justification_finalization.zig");
33+
pub const finality = @import("consensus/helpers/finality.zig");
3334

3435
test {
3536
@import("std").testing.refAllDeclsRecursive(@This());

0 commit comments

Comments
 (0)