diff --git a/specs/_features/eip6914/beacon-chain.md b/specs/_features/eip6914/beacon-chain.md index 2c60c9bdb..1e0b20747 100644 --- a/specs/_features/eip6914/beacon-chain.md +++ b/specs/_features/eip6914/beacon-chain.md @@ -1,4 +1,4 @@ -EIP-6914 -- The Beacon Chain +# EIP-6914 -- The Beacon Chain ## Table of contents diff --git a/specs/_features/eip6914/fork-choice.md b/specs/_features/eip6914/fork-choice.md new file mode 100644 index 000000000..25adc82d6 --- /dev/null +++ b/specs/_features/eip6914/fork-choice.md @@ -0,0 +1,36 @@ +# EIP-6914 -- Fork Choice + +## Table of contents + + + + + +- [Introduction](#introduction) +- [Fork choice](#fork-choice) + - [Handlers](#handlers) + - [`on_reused_index`](#on_reused_index) + + + + +## Introduction + +This is the modification of the fork choice according to EIP-6914. + +## Fork choice + +A new handler is added with this upgrade: + +- `on_reused_index(store, index)` whenever a validator index `index: ValidatorIndex` is reused. That is, [`get_index_for_new_validator()`](./beacon-chain.md#get_index_for_new_validator) provides an index due to a return value of `True` from [`is_reusable_validator()`](./beacon-chain.md#is_reusable_validator). + +This new handler is used to update the list of equivocating indices to be synchronized with the canonical chain. + +### Handlers + +#### `on_reused_index` + +```python +def on_reused_index(store: Store, index: ValidatorIndex) -> None: + store.equivocating_indices.discard(index) +```