diff --git a/docs/pos_downloader.drawio b/docs/pos_downloader.drawio new file mode 100644 index 000000000..ffb00578e --- /dev/null +++ b/docs/pos_downloader.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/pos_downloader.png b/docs/pos_downloader.png new file mode 100644 index 000000000..63871821a Binary files /dev/null and b/docs/pos_downloader.png differ diff --git a/eth/stagedsync/README.md b/eth/stagedsync/README.md index 42d561db8..d2858191e 100644 --- a/eth/stagedsync/README.md +++ b/eth/stagedsync/README.md @@ -58,6 +58,11 @@ So, when we are generating indexes or hashed state, we do a multi-step process. This optimization sometimes leads to dramatic (orders of magnitude) write speed improvements. +## What happens after the Merge? + +In the Proof-of-Stake world staged sync becomes somewhat more complicated, as the following diagram shows. +![](/docs/pos_downloader.png) + ## Stages (for the up to date list see [`stagedsync.go`](/eth/stagedsync/stagedsync.go) and [`stagebuilder.go`](/eth/stagedsync/stagebuilder.go)): Each stage consists of 2 functions `ExecFunc` that progesses the stage forward and `UnwindFunc` that unwinds the stage backwards. diff --git a/eth/stagedsync/stage_headers.go b/eth/stagedsync/stage_headers.go index 2dcc20c48..87b8ebb76 100644 --- a/eth/stagedsync/stage_headers.go +++ b/eth/stagedsync/stage_headers.go @@ -141,7 +141,8 @@ func SpawnStageHeaders( } } -// HeadersPOS processes Proof-of-Stake requests (newPayload, forkchoiceUpdated) +// HeadersPOS processes Proof-of-Stake requests (newPayload, forkchoiceUpdated). +// It also saves PoS headers downloaded by (*HeaderDownload)StartPoSDownloader into the DB. func HeadersPOS( s *StageState, u Unwinder,