diff options
author | Antoine A <> | 2022-09-19 16:12:37 +0200 |
---|---|---|
committer | Antoine A <> | 2022-09-19 16:12:37 +0200 |
commit | e495e935cf6e679a7fef3c69f1e175568da19f81 (patch) | |
tree | 5cdcc01dc0fe11379dc34daa9cf45b0775b6a2cd | |
parent | 609ac4867d7733fe663c097af3413c3d3712941e (diff) | |
download | depolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.tar.gz depolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.tar.bz2 depolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.zip |
BRAINS2022 presentation update
-rw-r--r-- | pres-brains22/presentation.tex | 267 |
1 files changed, 58 insertions, 209 deletions
diff --git a/pres-brains22/presentation.tex b/pres-brains22/presentation.tex index 72050a1..9ad6d6a 100644 --- a/pres-brains22/presentation.tex +++ b/pres-brains22/presentation.tex @@ -9,7 +9,7 @@ \title{Depolymerization} \subtitle{Integrating GNU Taler with blockchain-based cryptocurrencies} -\author{Antoine d'Aligny} +\author{ Antoine d'Aligny \and Emmanuel Benoist \and Christian Grothoff} \institute{Bern University of Applied Sciences} \date{\today} \titlegraphic{\includegraphics[width=2.5cm]{../docs/media/taler.png}} @@ -134,106 +134,59 @@ \end{center} \end{frame} -\begin{frame}{Blockchain-based cryptocurrencies}{What is a blockchain?} - \begin{center} - \begin{tikzpicture}[ - block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, - ar/.style={-stealth}, - nconf/.style={dotted}, - ] - \node[block](1){}; - \node[block,right=5mm of 1](2){$T_0$}; - \node[block,right=5mm of 2](3){}; - \node[block,right=5mm of 3](4){$T_1$}; - \node[block,right=5mm of 4](5){}; - \node[block,right=5mm of 5](6){}; - \node[block,nconf,right=5mm of 6](7){$T_2$}; - \draw[ar] (1) -- (2); - \draw[ar] (2) -- (3); - \draw[ar] (3) -- (4); - \draw[ar] (4) -- (5); - \draw[ar] (5) -- (6); - \draw[ar] (6) -- (7); - \end{tikzpicture} - \end{center} - \begin{center} - Append-only database composed of a list of linked blocks - \end{center} -\end{frame} - -\begin{frame}{Blockchain-based cryptocurrencies}{Distributed Ledger} - \begin{center} - \begin{tikzpicture}[ - block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, - ar/.style={-stealth}, - pink/.style={draw=teal, fill=teal!10}, - tan/.style={draw=orange, fill=orange!10}, - blue/.style={draw=magenta, fill=magenta!10}, - node/.style={circle, minimum size=7mm}, - ] - % Common - \node[block](2){}; - \node[block,right=5mm of 2](3){}; - \node[block,pink,right=5mm of 3](4){}; - \draw[ar] (2) -- (3); - \draw[ar] (3) -- (4); - - % Center - \node[block,pink,right=5mm of 4](5){B}; - \draw[ar] (4) -- (5); - - % Top - \node[block,blue,above=7mm of 5](5t){A}; - \draw[ar] (4.east) -- (5t.west); - - % Bottom - \node[block,tan,below=7mm of 4](4b){}; - \node[block,tan,below=7mm of 5](5b){C}; - \draw[ar] (3.east) -- (4b.west); - \draw[ar] (4b) -- (5b); - - % Network - \node[node,blue,above left=0.1cm and 2cm of 2](A) {A}; - \node[node,pink,below left=1cm and 0.45cm of A](B) {B}; - \node[node,tan,below right=1cm and 0.45cm of A](C) {C}; - \draw (A) -- (B); - \draw (B) -- (C); - \draw (C) -- (A); - \end{tikzpicture} - \begin{center} - Peer-to-peer network of nodes reaching consensus - \end{center} - \end{center} -\end{frame} - -\begin{frame}{Blockchain-based cryptocurrencies}{Consensus protocol} - \begin{itemize} - \item Enforce a delay between blocks - \item Require coordinated effort to create new block - \item The longest chain is the consensus - \end{itemize} +\begin{frame}{Blockchain-based cryptocurrencies} \begin{columns} \column{0.4\paperwidth} \begin{block}{\textbf{BTC} Bitcoin} \begin{itemize} \item Proof of Work - \item new block every 10 min - \item 4 txs per sec + \item new block every $\simeq$10 min + \item $\simeq$4 txs per sec \end{itemize} \end{block} \column{0.4\paperwidth} \begin{block}{\textbf{ETH} Ethereum} \begin{itemize} \item Proof of Stake - \item new block every 12 sec - \item 14 txs per sec + \item new block every $\simeq$12 sec + \item $\simeq$14 txs per sec \end{itemize} \end{block} \end{columns} \end{frame} +\begin{frame}{Storing metadata}{Bitcoin} + \begin{block}{Bitcoin - Credit} + \begin{itemize} + \item Transactions from code + \item Only 32B + URI + \item \textbf{OP\_RETURN} + \end{itemize} + \end{block} + \begin{block}{Bitcoin - Debit} + \begin{itemize} + \item Transactions from common wallet software + \item Only 32B + \item \textbf{Fake Segwit Addresses} + \end{itemize} + \end{block} +\end{frame} -\begin{frame}{Distributed Ledger limitations}{Chain reorganization} +\begin{frame}{Storing metadata}{Ethereum} + \begin{block}{Smart contract ?} + \begin{itemize} + \item Logs in smart contract is the recommend way {\tiny (ethereum.org)} + \item Expensive (additional storage and execution fees) + \item Avoidable attack surface (error prone) + \end{itemize} + \end{block} + \begin{block}{Custom input format} + Use input data in transactions, usually used to call smart contract, to + store our metadata. + \end{block} +\end{frame} + +\begin{frame}{Chain reorganization} \begin{center} \begin{tikzpicture}[ block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, @@ -248,137 +201,42 @@ \draw[ar] (2) -- (3); % Current - \only<-2>{ - \node[block,right=5mm of 3](4){}; - \node[block,right=5mm of 4](5){$T$}; - \node[block,nconf,right=5mm of 5](6){}; - \draw[ar] (5) -- (6); - } - \only<3->{ - \node[block,replaced,right=5mm of 3](4){}; - \node[block,replaced,right=5mm of 4](5){$T$}; - } + \node[block,replaced,right=5mm of 3](4){}; + \node[block,replaced,right=5mm of 4](5){$T$}; \draw[ar] (3) -- (4); \draw[ar] (4) -- (5); - \only<2->{ - % Fork - \node[block,above=7mm of 4](4p){}; - \only<-3>{ - \node[block,right=5mm of 4p](5p){}; - } - \only<4->{ - \node[block,err,right=5mm of 4p](5p){$T'$}; - } - \node[block,right=5mm of 5p](6p){}; - \node[block,nconf,right=5mm of 6p](7p){ - \only<3>{$T$} - }; - \draw[ar] (3.east) -- (4p.west); - \draw[ar] (4p) -- (5p); - \draw[ar] (5p) -- (6p); - \draw[ar] (6p) -- (7p); - } - - % Indication - \only<2->{ - \node [right=2mm of 7p]{\emph{ - \only<2>{ - new - } - \only<3->{ - active - } - }}; - } - \node [right=14mm of 6]{\emph{ - \only<-2>{ - active - } - \only<3->{ - fork - } - }}; - \end{tikzpicture} - \end{center} - \begin{center} - \only<1>{ - We have a chain with an important transaction - } - \only<2>{ - We may discover a new longer chain - } - \only<3>{ - The important transaction is now pending - } - \only<4>{ - A conflict can invalidate the transaction - } - \end{center} -\end{frame} - -\begin{frame}{Distributed Ledger limitations}{Confirmation delay} - \begin{center} - \begin{tikzpicture}[ - block/.style={rectangle,draw=black,fill=black!10,minimum size=7mm}, - conf/.style={draw=black!60!green,fill=black!60!green!10}, - nconf/.style={dotted}, - err/.style={draw=black!60!red,fill=black!60!red!10}, - ar/.style={-stealth} - ] - % Common - \node[block,conf](2){}; - \node[block,conf,right=5mm of 2](3){$T_0$}; - \draw[ar] (2) -- (3); - - % Current - \only<1>{ - \node [block,nconf,right=5mm of 3](4){}; - } - \only<2->{ - \node [block,conf,right=5mm of 3](4){\only<3>{$T_3$}}; - } - \node[block,nconf,right=5mm of 4](5){}; - \node[block,nconf,right=5mm of 5](6){$T_1$}; - \draw[ar] (3) -- (4); - \draw[ar] (4) -- (5); - \draw[ar] (5) -- (6); - % Fork - \only<-2>{ - \node [block,nconf,above=7mm of 4](4p){}; + \node[block,above=7mm of 4](4p){}; + \only<1>{ + \node[block,right=5mm of 4p](5p){}; } - \only<3>{ - \node [block,dashed,err,above=7mm of 4](4p){$T_3'$}; + \only<2>{ + \node[block,err,right=5mm of 4p](5p){$T'$}; } - \node[block,nconf,right=5mm of 4p](5p){$T_2$}; - \node[block,nconf,right=5mm of 5p](6p){}; - \node[block,nconf,right=5mm of 6p](7p){}; + \node[block,right=5mm of 5p](6p){}; + \node[block,nconf,right=5mm of 6p](7p){ + \only<1>{$T$} + }; \draw[ar] (3.east) -- (4p.west); \draw[ar] (4p) -- (5p); \draw[ar] (5p) -- (6p); \draw[ar] (6p) -- (7p); + % Indication - \node [right=5mm of 7p]{\emph{new}}; - \node [right=17mm of 6]{\emph{active}}; + \node [right=5mm of 7p]{\emph{active}}; + \node [right=29mm of 5]{\emph{fork}}; \end{tikzpicture} \end{center} \begin{center} - \only<1>{Confirmation delay} - \only<2>{Handling harmless reorganizations} - \only<3>{Handling harmful reorganizations} + \only<1>{Reorganization can remove transaction from the chain} + \only<2>{A conflict can invalidate the transaction} \end{center} \end{frame} -\begin{frame}{Distributed Ledger limitations}{Stuck transactions} - \begin{block}{Transaction fees} - \begin{itemize} - \item Block production incentive - \item Variable by design - \end{itemize} - \end{block} +\begin{frame}{Stuck transactions} \begin{center} \begin{tikzpicture}[ dot/.style={circle,fill,inner sep=1pt,} @@ -411,7 +269,7 @@ \item 1 wei = $10^{-18}$ ETH \item actually more than 120 580 000 without cap \item average fee: 21 000 * 14 = 294 000 Gwei or 0.000295 ETH - \item truncated at $10^{-8}$ ETH it can still contain any amount you can send without losing money + \item truncated at $10^{-8}$ ETH it can still represent any amount you can send without losing money \end{itemize} \end{block} \end{frame} @@ -431,18 +289,9 @@ \end{itemize} \end{frame} -\begin{frame}{Conclusion}{Future work} - \begin{itemize} - \item Wallet-to-wallet payments are WIP - \item Legal concerns around known-your-customer with cryptocurrencies - \end{itemize} - - \begin{block}{Availability} - An experimental public Depolymerization exchange is available at - \url{https://bitcoin.ice.bfh.ch/}. To use the service, one only needs - to install a GNU Taler wallet from \url{https://wallet.taler.net/} and - instruct it to use this exchange to withdraw coins. - \end{block} +\begin{frame}{Conclusion}{Demo} + An experimental public Depolymerization exchange is available at \url{https://bitcoin.ice.bfh.ch/}. You can try it by installing a GNU Taler wallet from \url{https://wallet.taler.net/} and instruct it to use this exchange to withdraw coins. + % Replace with demo \end{frame} \end{document} |