diff --git a/papers/CasperTFG/CasperTFG.tex b/papers/CasperTFG/CasperTFG.tex index e8fa5d84..64b3c82e 100644 --- a/papers/CasperTFG/CasperTFG.tex +++ b/papers/CasperTFG/CasperTFG.tex @@ -83,7 +83,13 @@ \subsection{Comparing Traditional Consensus to Blockchain Consensus} Blockchain consensus protocols like Bitcoin do not finalize/decide on one block at a time.\cite{nakamoto} In fact, the Bitcoin blockchain in particular does not make ``finalized decisions'' at all; blocks are ``orphaned'' if/when they are not in the highest total difficulty chain. \cite{orphanBitcoin} However, if the miners are able to mine on the same blockchain, then the blocks that get deep enough into the blockchain won't be reverted (``orphaned''). A block's depth in the blockchain therefore serves as a proxy for finalization. In the average case for blockchain consensus protocols, each node only requires approximately one message, $\mathcal{O}(1)$, for every block. \footnote{For Bitcoin, refer to \cite{nakamoto}, section 5 on pp. 3–4.} -Traditional consensus protocol research has focused on producing protocols that are asynchronously safe (i.e.\ blocks won't be reverted due to arbitrary timing of future events) and live in asynchrony (or partial synchrony) (i.e.\ nodes eventually decide on new blocks) \cite{Fischer_Lynch_Paterson_FLP_Impossibility_1985}. On the other hand, the Bitcoin blockchain is not safe in an asynchonous network but is safe and live (for unknown block-depth or ``confirmation count'') in a ``partially synchronous network''. +Traditional consensus protocol research has focused on producing protocols that are asynchronously safe (i.e.\ blocks won't be reverted due to arbitrary timing of future events) and live in asynchrony (or partial synchrony) (i.e.\ nodes eventually decide on new blocks). On the other hand, the Bitcoin blockchain is not safe in an asynchonous network but is safe and live (for unknown block-depth or ``confirmation count'') in a ``partially synchronous network''.\cite{Pass_Seeman_Shelat_2016} Specifically, the following properties are proven to be required for a blockchain to be safe (which Bitcoin is proven to satisfy), all with overwhelming probability (in $T$): \cite[pp.~4–5]{Pass_Seeman_Shelat_2016, pp.~4–5} +\begin{itemize} +\item \textit{consistency}: at any point, the chains of two honest players can differ only in the last $T$ blocks; +\item \textit{future self-consistence}: at any two points, $r$ and $s$, the chains of any honest player at $r$ and $s$ differ only within the last $T$ blocks; +\item \textit{g-chain growth}: at any point in the execution, the chain of honest players grows by at least $T$ blocks in the last $T/g$ rounds; where $g$ is called the chain-growth of the protocol. +\item \textit{\mu-chain quality}: for any $T$ consecutive blocks in any chain held by some honest player, the fraction of blocks that were "contributed by honest players" is at least \mu. +\end{itemize} Traditional Byzantine fault tolerant consensus protocols have precisely stated Byzantine fault tolerance numbers (often they can tolerate less than a third of Byzantine faults, or up to $t$ faults when there are $3t + 1$ nodes)[CITE]. On the other hand, it is less clear exactly how many faults (measured as a proportion of hashrate) the Bitcoin blockchain protocol can tolerate. diff --git a/papers/CasperTFG/ethereum.bib b/papers/CasperTFG/ethereum.bib index 1c0837a1..193d31e4 100644 --- a/papers/CasperTFG/ethereum.bib +++ b/papers/CasperTFG/ethereum.bib @@ -1,3 +1,21 @@ +@misc{Pass_Seeman_Shelat_2016, + title = {{Analysis of the Blockchain Protocol in Asynchronous Networks}}, + author = "Rafael Pass and Lior Seeman and Abhi Shelat", + url = "https://eprint.iacr.org/2016/454.pdf", + year = "2016", + month = "September", +} + +@misc{Garay_Kiayias_Leonardos_2017, + title = {{The Bitcoin Backbone Protocol: Analysis and Applications}}, + author = "Juan A. Garay and Aggelos Kiayias and Nikos Leonardos", + url = "https://123doc.org/document/4286628-the-bitcoin-backbone-protocol.htm", + journal = "Proc. Eurocrypt 2015", + note = {{An abridged version of this paper appears in Proc. Eurocrypt 2015.}}, + year = "2017", + month = "February", +} + @misc{orphanBitcoin, title = {{Orphan Blocks}}, url = "https://bitcoin.org/en/developer-guide#orphan-blocks",