---
# System prepended metadata

title: Переключение чекпоинтов
tags: [workflow]

---

---
tags: workflow
---

# Переключение чекпоинтов

## Revekznbdyst



## SetCurrentJustifiedCheckpoint

Устанавливается в два этапа:
1. Проверка условия и установка предыдущей эпохи
2. Проверка условия и установка текущей эпохи

### Проверка условия и установка предыдущей эпохи

> `beacon-chain/core/epoch/precompute/justification_finalization.go:82`
> func weighJustificationAndFinalization(...) (...)

Условие:


$3*prevEpochTargetBalance >= 2*totalActiveBalance$ 


### Проверка условия и установка текущей эпохи

Условие:

$3*currEpochTargetBalance >= 2*totalActiveBalance$ 

#### где:

__totalActiveBalance__ - the total effective balance of all active validators during current epoch.

$totalActiveBalance = \sum_{i=1}^{cfg.SlotsPerEpoch}{\sum_{c=1}^{committeesPerSlot_i}{len(committee_{ic}) * cfg.MaxEffectiveBalance}}$

__prevEpochTargetBalance__ - the total effective balance of all validators who attested for epoch boundary block during prev epoch. 


$prevEpochTargetBalance = len(statePreviousEpochTargetUnaggrAttestations) * cfg.MaxEffectiveBalance$


__currEpochTargetBalance__ - the total effective balance of all validators who attested for epoch boundary block during current epoch.

$currEpochTargetBalance = len(stateCurrentEpochTargetUnaggrAttestations) * cfg.MaxEffectiveBalance$

> поскольку срабатывает на последнем слоте эпохи, атеестаций за этот слот  нет

где:

__committeesPerSlot__ - количество комитетов в слоте, 1-4
__cfg.SlotsPerEpoch__ - 32

__cfg.MaxEffectiveBalance__ - сумма депозита для активации валидатора, 32000 wot


__len(statePreviousEpochTargetUnaggrAttestations)__ - кол-во  неагрегированных таргет-аттестаций за __прошлую эпоху__ в стейте.


__len(stateCurrentEpochTargetUnaggrAttestations)__ - кол-во неагрегированных таргет-аттестаций за __текущую эпоху__ в стейте.

