pub trait Epoch: Debug {
    type NextEpochDescriptor;
    type Slot: Ord + Copy + Debug;

    // Required methods
    fn start_slot(&self) -> Self::Slot;
    fn end_slot(&self) -> Self::Slot;
    fn increment(&self, descriptor: Self::NextEpochDescriptor) -> Self;
}
Expand description

Epoch data, distinguish whether it is genesis or not.

Once an epoch is created, it must have a known start_slot and end_slot, which cannot be changed. Consensus engine may modify any other data in the epoch, if needed.

Required Associated Types§

source

type NextEpochDescriptor

Descriptor for the next epoch.

source

type Slot: Ord + Copy + Debug

Type of the slot number.

Required Methods§

source

fn start_slot(&self) -> Self::Slot

The starting slot of the epoch.

source

fn end_slot(&self) -> Self::Slot

Produce the “end slot” of the epoch. This is NOT inclusive to the epoch, i.e. the slots covered by the epoch are self.start_slot() .. self.end_slot().

source

fn increment(&self, descriptor: Self::NextEpochDescriptor) -> Self

Increment the epoch data, using the next epoch descriptor.

Implementors§