summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine A <>2022-09-19 16:12:37 +0200
committerAntoine A <>2022-09-19 16:12:37 +0200
commite495e935cf6e679a7fef3c69f1e175568da19f81 (patch)
tree5cdcc01dc0fe11379dc34daa9cf45b0775b6a2cd
parent609ac4867d7733fe663c097af3413c3d3712941e (diff)
downloaddepolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.tar.gz
depolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.tar.bz2
depolymerization-e495e935cf6e679a7fef3c69f1e175568da19f81.zip
BRAINS2022 presentation update
-rw-r--r--pres-brains22/presentation.tex267
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}