From 7afe60624e8e7d8e0404ac7e02cbccdf10d193ce Mon Sep 17 00:00:00 2001 From: Jan Ciolek <149345204+jancionear@users.noreply.github.com> Date: Tue, 4 Jun 2024 11:33:05 +0200 Subject: [PATCH] Improve the description of epoch end (#534) The previous description of when an epoch ends was a bit confusing. It mentioned that two conditions are needed for a block to be the last block of an epoch, but in reality only one of them matters, as one condition is implied by the other. This makes the descripion harder to parse - why are there two conditions, if only one of them matters? It can lead to some confusion. Let's improve the description to make it clearer and easier to understand. A diagram is also added for clarity. Refs: [zulip discussion](https://near.zulipchat.com/#narrow/stream/295558-pagoda.2Fcore/topic/When.20does.20an.20Epoch.20end.3F/near/422463251) --------- Co-authored-by: Marcelo Fornet --- specs/BlockchainLayer/EpochManager/Epoch.md | 21 ++++++++++++++---- .../EpochManager/epoch_end_diagram.png | Bin 0 -> 57826 bytes 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 specs/BlockchainLayer/EpochManager/epoch_end_diagram.png diff --git a/specs/BlockchainLayer/EpochManager/Epoch.md b/specs/BlockchainLayer/EpochManager/Epoch.md index 371e81e5a..bab363b5c 100644 --- a/specs/BlockchainLayer/EpochManager/Epoch.md +++ b/specs/BlockchainLayer/EpochManager/Epoch.md @@ -10,29 +10,42 @@ Within one epoch, validator assignment is based on block height: each height has each height and shard have a chunk producer. ### End of an epoch -A block is defined to be the last block in its epoch if it's the genesis block or if the following conditions are met: -- Let `estimated_next_epoch_start = first_block_in_epoch.height + epoch_length` -- `block.height + 1 >= estimated_next_epoch_start` + +Let `estimated_next_epoch_start = first_block_in_epoch.height + epoch_length` + +A `block` is defined to be the last block in its epoch if it's the genesis block or if the following condition is met: + - `block.last_finalized_height + 3 >= estimated_next_epoch_start` `epoch_length` is defined in `genesis_config` and has a value of `43200` height delta on mainnet (12 hours at 1 block per second). +Since every final block must have two more blocks on top of it, it means that the last block in an epoch will have a height of at least `block.last_finalized_height + 2`, so for the last block it holds that `block.height + 1 >= estimated_next_epoch_start`. Its height will be at least `estimated_next_epoch_start - 1`. + +Note that an epoch only ends when there is a final block above a certain height. If there are no final blocks, the epoch will be stretched until the required final block appears. An epoch can potentially be longer than `epoch_length`. + +![Diagram of epoch end](epoch_end_diagram.png) + ### EpochHeight + Epochs on one chain can be identified by height, which is defined the following way: + - Special epoch that contains genesis block only: undefined - Epoch starting from the block that's after genesis: `0` (NOTE: in current implementation it's `1` due to a bug, so there are two epochs with height `1`) - Following epochs: height of the parent epoch plus one ### Epoch id + Every block stores the id of its epoch - `epoch_id`. Epoch id is defined as + - For special genesis block epoch it's `0` - For epoch with height `0` it's `0` (NOTE: the first two epochs use the same epoch id) - For epoch with height `1` it's the hash of genesis block - For epoch with height `T+2` it's the hash of the last block in epoch `T` -### End of an epoch +### Epoch end + - After processing the last block of epoch `T`, `EpochManager` aggregates information from block of the epoch, and computes validator set for epoch `T+2`. This process is described in [EpochManager](EpochManager.md). - After that, the validator set rotates to epoch `T+1`, and the next block is produced by the validator from the new set diff --git a/specs/BlockchainLayer/EpochManager/epoch_end_diagram.png b/specs/BlockchainLayer/EpochManager/epoch_end_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c02f9f3cc9c117a28136319e8521a7a68ecff727 GIT binary patch literal 57826 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