diff --git a/main.pdf b/main.pdf index 5ee5459..d1f8aea 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/report/src/bib/main.bib b/report/src/bib/main.bib index ec8af75..474e0fc 100644 --- a/report/src/bib/main.bib +++ b/report/src/bib/main.bib @@ -252,4 +252,20 @@ @misc{heimbach2024deanonymizingethereumvalidatorsp2p primaryClass={cs.CR}, url={https://arxiv.org/abs/2409.04366}, } -https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md \ No newline at end of file +https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md + +@article{random-selection, + title = {Random Selection}, + author = {@corwintines and @pettinarip and @nhsz and @nalepae}, + note = {Accessed: 21-11-2024}, + url = {https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/block-proposal/#random-selection} +} + +@inproceedings{upgrading-ethereum-randomness, + author = {Edgington, Ben}, + title = {Randomness}, + year = {2023}, + url = {https://eth2book.info/capella/book.pdf}, + booktitle = {Upgrading Ethereum}, + pages = {134–149} +} diff --git a/report/src/sections/02-background.tex b/report/src/sections/02-background.tex index fc675f3..2bd4ae5 100644 --- a/report/src/sections/02-background.tex +++ b/report/src/sections/02-background.tex @@ -140,6 +140,24 @@ \subsubsection{Validator punishments}\label{subsubsec:valpunish} At worst, a validator can end up having all their ETH burned, if enough other validators are also slashed. \subsection{RANDAO}\label{subsec:randao} +As mentioned in~\autoref{subsec:validator}, the validators are chosen to propose a block by a random-number-generator called RANDAO\footnote{\href{https://github.com/randao/randao}{RANDAO - GitHub}}. +The random selection is decided by the RANDAO algorithm, which is used every slot. +Each chosen proposer will get the RANDAO value computed at the previous slot and \texttt{XOR} it with the hash of their private key and epoch number. + + +This creates what is called the RANDAO reveal. +It can be verified with the proposer's public key. +This, of course, happens at all 32 slots of an epoch, making up the randomness of the reveal. +At the end of each epoch, the latest reveal constitutes to the seed, which is used to determine who the next proposers are going to be. + + +Being chosen as a block proposer comes with some duties, such as creating the block. +This means that they need to know in advance if they are going to be the proposer of a block. + +The proposer selection among the validators is done two epochs in advance~\cite{random-selection}. +More specifically, the selection for epoch $n+2$ happens at the end of epoch $n$~\cite{upgrading-ethereum-randomness}. +This means that a validator knows at least one epoch, at most two epochs, in advance if they are proposing a block. + \subsection{ENR}\label{subsec:enr} A~\gls{enr} is a record that contains information about a node in the network~\cite{EIP-778:Ethereum-Node-Records}.