\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{Ethereum} \textbf{Ethereum} is a public [[blockchain]] which is established as a sequel to [[bitcoin]] with intention to include [[smart contract]]s and distributed applications as envisioned by [[Vitalik Buterin]] in 2013. This platform is considered as the main platform of blockchain 2.0 stage in blockchain technology development; as of 2019 it still uses proof of work. As of 2019, Ethereum mainnet, which supports the Ether cryptocurrency is still officially beta and many improvements in 2019 and 2020 are planned, called Ethereum 1.x, including replacing the present Ethereum virtual machine (EVM) with ewasm virtual machine for [[WebAssembly]] bytecode. Somewhere in 2020 or 2021, a new release of Ethereum based on proof of stake with sharding and many other improvements (including a rent for smart contracts) is planned to be created; the new platform is called Ethereum 2.0 and will qualify for 3rd generation blockchain platform in terms of scalability and speed, and possibly some level of interoperability. Migration of users from the Ethereum 1.x beta chain will be performed via smart contracting, without hard forks. The old net is likely to stay as a read only record of old history and be attached to the new net as a shardchain. The implementations of Ethereum 2.0 are being coded simultaneously by 9 different teams in several different programming languages. Ethereum 1.0 platform has largely influenced development of many subsequent platforms; in particular, [[zoranskoda:Hyperledger]] Fabric is a permissioned blockchain developed by IBM and Linux Foundation on the basis of Ethereum. Most important clients for Ethereum are (see also \href{https://github.com/ethereumbook/ethereumbook/blob/develop/03clients.asciidoc}{here}) \begin{itemize}% \item Metamask (Chrome extension) \href{https://metamask.io}{metamask.io}; source at \href{https://github.com/MetaMask/metamask-plugin}{github} \item Mist browser (web3.js based browser for DApps) is now \href{https://medium.com/@avsa/sunsetting-mist-da21c8e943d2}{deprecated}; \href{https://github.com/ethereum/mist}{github}, \href{https://www.investopedia.com/terms/m/mist-browser.asp}{investopedia} \item parity (node software written in [[Rust]]) \href{https://wiki.parity.io/Setup}{setup} \item Geth (Go Ethereum, node software written in GoLang) \end{itemize} See also about setting your own private Ethereum net in \{this tutorial](https://www.edureka.co/blog/ethereum-private-network-tutorial). A comprehensive book on Ethereum is \begin{itemize}% \item Andreas M. Antonopoulos, Gavin Wood, \emph{Mastering Ethereum: building smart contracts and DApps}, O’Reilly Media, 2018. The book is also on \href{https://github.com/ethereumbook/ethereumbook}{github} together with the sourcecode \end{itemize} \hypertarget{literature}{}\subsection*{{Literature}}\label{literature} See also [[blockchain]], [[smart contract]] and wikipedia article \href{https://en.wikipedia.org/wiki/Ethereum}{Ethereum}. Official page \href{https://www.ethereum.org}{ethereum.org} and \href{https://www.ethereum.org/developers}{developer resources} there. \hypertarget{general}{}\subsubsection*{{General}}\label{general} \begin{itemize}% \item V. Buterin, \emph{Ethereum in 25 minutes}, \href{https://www.youtube.com/watch?v=66SaEDzlmP4}{youtube}; \emph{Blockchain and Ethereum security on the higher level}, \href{https://www.youtube.com/watch?v=UFDAtStVXbc}{youtube} 1:21h \item [[Vitalik Buterin]], Ethereum: A next-generation smart contract and decentralized application platform, \href{https://github.com/ethereum/wiki/wiki/White-Paper.pdf}{pdf} \item Gavin Wood, \emph{Ethereum: a secure decentralised generalised transaction ledger}, Ethereum, Tech. Rep. 2017. \href{https://ethereum.github.io/yellowpaper/paper.pdf}{pdf} \item \href{https://www.parity.io}{parity} blockchain infrastructure for the decentralised web \item \href{https://entethalliance.org}{Enterprise Ethereum Alliance} \end{itemize} Plans for Ethereum future from Ethereum Foundation as of May 2019: \begin{itemize}% \item \href{https://blog.ethereum.org/2019/05/21/ethereum-foundation-spring-2019-update}{blog.ethereum.org/2019/05/21/ethereum-foundation-spring-2019-update} \item A journey through phase 2 of Ethereum 2.0 \href{https://medium.com/@william.j.villanueva/a-journey-through-phase-2-of-ethereum-2-0-c7a2397a36cb}{medium} \item Phase 2 proposal 1 \href{https://notes.ethereum.org/s/HylpjAWsE#}{hackmd} \item V. Buterin, \href{https://ethresear.ch/t/a-layer-1-minimizing-phase-2-state-execution-proposal/5397/4}{A layer-1-minimizing phase 2 state execution proposal}, \href{https://ethresear.ch/t/proposed-further-simplifications-abstraction-for-phase-2/5445}{Proposed further simplifications/abstraction for phase 2} \end{itemize} \hypertarget{protocol_improvements}{}\subsubsection*{{Protocol improvements}}\label{protocol_improvements} \begin{itemize}% \item Vlad Zamfir, Nate Rush, Aditya Asgaonkar, Georgios Piliouras, \emph{Introducing the “Minimal CBC Casper” family of consensus protocols}, \href{https://github.com/cbc-casper/cbc-casper-paper/blob/master/cbc-casper-paper-draft.pdf}{pdf} \item \href{https://www.coindesk.com/information/how-ethereum-works}{how ethereum works} \item Andrew Ashikhmin, Alexey Akhunov, \emph{Red queen's sync protocol for Ethereum}, github/\href{https://github.com/yperbasis/silkworm/raw/master/doc/sync_protocol_v1.pdf}{pdf} \item \href{https://cointelegraph.com/news/an-ethereum-20-proof-of-stake-testnet-blockchain-is-now-live}{cointelegraph.com/news/an-ethereum-20-proof-of-stake-testnet-blockchain-is-now-live} \end{itemize} \hypertarget{whisper}{}\subsubsection*{{Whisper}}\label{whisper} According to Mukhapadhyay, \emph{Ethereum smart contract development} \begin{quote}% When [[Gavin Wood]] laid down the specifications for whisper as a peer-to-peer communication protocol, in his whitepaper on \href{https://github.com/ethereum/wiki/wiki/Whisper-PoC-2-Protocol-Spec}{GitHub}, he designed one of the most interesting technologies in the field of cryptography. At a considerable cost of bandwidth and latency, whisper is able to deliver a 100\% dark operation. By completely dark operations, we mean that there is zero leakage of metadata during peer-to-peer By technical definition, whisper is a messaging system with multi distributed hash table (DHT), with routing privacy acting as a companion protocol to the Ethereum blockchain. Whisper operates in a user-configurable manner with regard to how much information the communicating nodes are willing to leak concerning the decentralized application content that ultimately tracks the user activities. Whisper is based on two key concepts: messages and envelopes. If whisper is considered a datagram messaging service, then an envelope represents an un-encrypted data format, comprehensible by a node, which carries the encrypted message datagram inside it. An envelope consists of original time to live (TTL, in seconds), the absolute time to expiry (UNIX system time), the encrypted message data field, which is the actual payload, topics (cryptographically secure, probabilistic partial classifications of message), and nonce, an arbitrary value. This nonce is used for the PoW to judge the efforts of a peer. The message has a binary flag for signature with an unfixed payload. \end{quote} \hypertarget{ethereum_virtual_machine_storage_and_smart_contracting}{}\subsubsection*{{Ethereum virtual machine, storage and smart contracting}}\label{ethereum_virtual_machine_storage_and_smart_contracting} \begin{itemize}% \item EVM \href{https://medium.com/@hayeah/diving-into-the-ethereum-vm-part-2-storage-layout-bc5349cb11b7}{storage layout} \item \href{https://programtheblockchain.com/posts/2018/03/09/understanding-ethereum-smart-contract-storage}{2018/03/09/understanding-ethereum-smart-contract-storage} \item solidity \href{https://solidity.readthedocs.io}{docs} \item solidity ``guide'', \href{https://www.bitdegree.org/learn/solidity}{bitdegree} \item \href{https://abhiroop.github.io/BlockChain-STM}{stm}, \href{https://www.coindesk.com/three-smart-contract-misconceptions}{smart contract misconceptions}, \href{https://applicature.com/blog/blockchain-technology/ethereum-smart-contract-storage}{more storage}, \href{https://ethereum.stackexchange.com/questions/42/how-can-a-contract-run-itself-at-a-later-time}{contract call at later time}, Where do smart contracts reside in blockchain \href{https://stackoverflow.com/questions/42081194/where-do-smart-contracts-reside-in-blockchain-ethereum-or-hyperledger}{stackoverflow}, \href{https://www.stateofthedapps.com/dapps/chronos}{chronos} \item \href{https://ethereumclassic.github.io/blog/2017-03-13-viper}{viper} \item A. Unterweger et al. \emph{Lessons learned from implementing a privacy-preserving smart contract in Ethereum”}, 2018 9th IFIP Intern. Conf. on New Technologies, Mobility and Security (NTMS) Feb. 2018, pp. 1–5 \href{https://doi.org/10.1109/NTMS.2018.8328739}{doi} \item Ethereum Alarm Clock \href{http://docs.ethereum-alarm-clock.com/en/latest}{documentation} \item \emph{How can a contract run itself at a later time?}, \href{https://ethereum.stackexchange.com/questions/42/how-can-a-contract-run-itself-at-a-later-time}{ethereum.stackexchange} \item how-data-is-stored-in-ethereum \href{https://hackernoon.com/getting-deep-into-ethereum-how-data-is-stored-in-ethereum-e3f669d96033}{hackernoon} \end{itemize} \hypertarget{others}{}\subsubsection*{{Others}}\label{others} Vitalik proposed a privacy mixer for Ethereum to enhance anonymity via groupings \begin{itemize}% \item \emph{Minimal mixer design}, proposal at \href{https://hackmd.io/s/rJj9hEJTN}{hackmd}; \href{https://www.coindesk.com/vitalik-roposes-mixer-to-anonymize-one-off-transactions-on-ethereum}{news at coindesk} \end{itemize} \end{document}