Skip to content

Commit

Permalink
talk slides sources added
Browse files Browse the repository at this point in the history
  • Loading branch information
zelig committed Feb 4, 2017
1 parent 8fe1657 commit f952cdd
Show file tree
Hide file tree
Showing 70 changed files with 4,264 additions and 6 deletions.
15 changes: 9 additions & 6 deletions contents/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -214,15 +214,18 @@ You can also find the (first 2) ethersphere orange papers there.

Public gateways are:

* http://swarm-gateways.net/
* http://web3.download/
* http://swarm-gateways.net
* http://web3.download,
* http://ethereum-swarm.net/
* http://localhost:8500/bzzr:/some/path

Swarm testnet monitor: http://stats.ens.domains/
Drain():
Swarm testnet monitor: http://stats.ens.domains/

Source:
Source code is at https://github.com/ethereum/go-ethereum/

Source code is at https://github.com/ethereum/go-ethereum/

Example dapps are at https://github.com/ethereum/swarm-dapps
Dapps:
Example dapps are at https://github.com/ethereum/swarm-dapps


Binary file added slides/ams-btc-09-2016/cli.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
243 changes: 243 additions & 0 deletions slides/ams-btc-09-2016/devcon-cdn.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@

\subsection{Data Retrieval}
\blockslide{\textbf{Data out}}{How to retrieve data stored in the swarm.}


\begin{frame}{Data Retrieval}
\begin{columns}[T]
\begin{column}{0.4\textwidth}
\small
\alt<1-3>{}{\tiny}{
Everything on the swarm network has an \textbf<1-3>{id}, every chunk of data, every node (even you!). The \textbf<1-3>{id} also functions as an \textbf<1-3>{address}.\\[5mm]
}
\uncover<4->{\alt<4-5>{\small}{\tiny}
When your swarm-enabled dapp wishes to retrieve ``awesome-swarm-slides.pdf'',}
\uncover<5->{\alt<5>{}{\tiny}{it will attempt to retrieve it via its id ``\textbf{H}''.\\[5mm]
}}
\uncover<6->{\alt<6>{\small}{\tiny}
{
In swarm, the content with address ``\textbf{H}'' is stored with the node whose own address is \emph{closest} to \textbf{H}.\\[5mm]
}}
\uncover<7->{\alt<7>{\small}{\tiny}
{
Swarm's \textbf<7>{Retrieval Process} is responsible for deliviering the data to you.
}}
\end{column}

\begin{column}{0.6\textwidth}
\begin{tikzpicture}
\node[scale=0.7]{
\begin{tikzpicture}
\node[visible on=<2->] at (2,2) {\textbf{The Swarm Network:}};

\node[node,visible on=<2->] at (0,0) {};
\node[node,visible on=<2->] at (1,-0.9) {};
\node[node,visible on=<2->] at (0.5,-3) {};
\node[node,visible on=<2->] at (0,-6.3) {};
\node[node,visible on=<2->] at (5.8,-1.2) {};
\node[node,visible on=<2->] at (4,-5.9) {};
\node[node,visible on=<2->] at (4.1,-3) {};
\node[node,visible on=<2->] at (2.1,-2) {};

\node[node,visible on=<2>] at (4,0) (younode) {swarm-node};
\node[peer,visible on=<3->] at (4,0) (you) {You};

\node[visible on=<5->] (chunk) at (1,-5) {$\bullet$};
\node[visible on=<5->] (chunklabel) at (2,-4.5) {H} edge[point,->,visible on =<5->] (chunk);

\node[visible on=<2-6>, node] at (-0.5,-4.2) (close) {};
\node[visible on=<7->, peer] at (-0.5,-4.2) (closestnode) {Closest Node};
\node[visible on=<7->] at (-0.5, -5.5) (hlabel) {Look for ``H'' here}
edge[visible on=<7->,point,->] (closestnode);
\end{tikzpicture}
};
\end{tikzpicture}
\end{column}
\end{columns}

\end{frame}






\begin{frame}{Swarm Retrieval Process}

\begin{tikzpicture}
\node[peer,visible on=<1->] at (12,0) (retriever){Retriever};
\node[visible on=<13>,scale=2] at (12,-1.5) {\Smiley};

\node[visible on=<2->] (chunk) at (4,-5) {$\bullet$};
\node[visible on=<2->] (chunklabel) at (3,-4) {data address} edge[point,->,visible on =<2->] (chunk);

\node[peer,visible on=<4-12>, dimmed on=<13->] at (8.5,-0.5) (connectedpeer){peer}
(retriever.-150) edge[point, ->,visible on=<5>,dimmed on=<6-12>, bend left=15]
node[below=2pt,visible on=<5>, dimmed on=<6-12>] {request}
(connectedpeer.-10);

\node[node,visible on=<6-11>, dimmed on=<12->] at (6,-2) (firstnode){some node}
(connectedpeer.-70) edge[point,->,visible on=<6>, dimmed on=<7-11>,bend left=30]
node[right of=2pt,visible on=<6>, dimmed on=<7-11>] {request}
(firstnode.east);

\node[node,visible on=<7-10>, dimmed on=<11->] at (7.5,-4.5) (secondnode){other node}
(firstnode.-70) edge[point,->,dashed,visible on=<7>, dimmed on=<8-10>,bend left=10]
node[right of=2pt,visible on=<7>, dimmed on=<8-10>] {requests...}
(secondnode.120);

\node[peer,visible on=<3-9>, dimmed on=<10->] at (4,-6) (closestnode){closest node}
(secondnode.-110) edge[point,->,visible on=<8>, dimmed on=<9>,out=-110,in=0]
node[right of=2pt,visible on=<8>, dimmed on=<9>] {request}
(closestnode.east)
(closestnode) edge[thick,point,->,visible on=<9>] node[above=2pt,visible on=<9>]{deliver} (secondnode)
(secondnode.north west) edge[thick, point,->,visible on=<10>, dashed] node[left of=2pt,visible on=<10>]{deliveries} (firstnode.-120)
(firstnode.55) edge[thick,point,->,visible on=<11>] node[left of=2pt,visible on=<11>]{deliver} (connectedpeer.-150)
(connectedpeer) edge[thick,point,->,visible on=<12>] node[above=2pt,visible on=<12>]{deliver} (retriever)
;

\node[chunk, scale=0.6,visible on=<3->, below=3pt of closestnode.-50] {};
\node[chunk, scale=0.6,visible on=<9->, below=3pt of secondnode.-50] {};
\node[chunk, scale=0.6,visible on=<10->, below=3pt of firstnode.-50] {};
\node[chunk, scale=0.6,visible on=<11->, below=3pt of connectedpeer.-50] {};
\node[chunk, scale=0.6,visible on=<12->, below=3pt of retriever.-50] {};
\end{tikzpicture}
\end{frame}




\subsection[SWAP]{Paying for data}
\wholeslide{SWAP: \textbf{Sw}arm \textbf{A}ccounting \textbf{P}rotocol}

\begin{frame}{SWAP: Swarm Accounting Protocol}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\small
The \textbf{Swarm Accounting Protocol} keeps track of all data retrieved via the swarm retrieval process. It is used to facilitate automated payments between peers for the bandwidth they provide.\\
\uncover<2->{Note: Bandwidth accounting \alt<2>{\alert{has to be}}{is} per-peer.\\[5mm]}

\uncover<9->{When the peer connection becomes too imbalanced, a \emph{payment} is initiated.}
\end{column}

\begin{column}{0.5\textwidth}
\begin{center}
\begin{tikzpicture}
\node[peer,visible on=<3->] at (-2,0) (node1) {Me};
\node[peer,visible on=<4->] at (2,0) (node2) {Peer}
(node1.50) edge[point,->,dashed,visible on=<5->,bend right=30,out=50,in=130] node[below=10pt,visible on=<7->,scale=0.8] (sup){data delivered} (node2.130)
(node2.-130) edge[point,->,dashed,visible on=<6->,bend left=30,in=130,out=50] node[above=10pt,visible on=<9->,scale=0.8]{data received} (node1.-50)
;
\node[visible on=<8->,below= 2mm of sup]{\Large{-}};
\end{tikzpicture}
\end{center}
\end{column}

\end{columns}
\end{frame}

\begin{frame}{The chequebook and the channel}
\begin{itemize}
\item It is \emph{impossible} to pay for every chunk of data delivered.
\item<2-> Even batch payments would constitute unacceptable blockchain bloat (and transaction cost).
\end{itemize}
\uncover<3->{Instead of processing every payment on-chain, SWAP employs a \emph{chequebook} smart contract:}
\begin{itemize}
\item<4-> Cheques are passed between connected swarm nodes (peers) off-chain.
\item<4-> Peers can cash in (process on-chain) the received cheques at any time.
\item<4-> Issued cheques are \emph{cumulative} and \textbf{only the last cheque has to be cashed}.
\end{itemize}
\uncover<5>{SWAP will soon also be usable via \emph{payment channels} (Raiden).}
\end{frame}

\begin{frame}{The chequebook and the channel}
\begin{overlayarea}{\textwidth}{5.2cm}
\setbeamercovered{transparent}% Dim out "inactive" elements
\begin{columns}[t]
\column{0.5\textwidth}
\begin{block}{Chequebook}
\textbf{Pro:}
\begin{enumerate}
\item<1>{Offchain payments}
\item<2>{Low barrier to entry (pay anyone)}
\end{enumerate}
\textbf{Con:}
\begin{enumerate}
\item<3>{Cheques can bounce (payment not guaranteed)}
\end{enumerate}
\end{block}
\column{0.5\textwidth}
\begin{block}{Channel}
\textbf{Pro:}
\begin{enumerate}
\item<1>{Offchain payments}
\item<3>{Secure - payments guaranteed}
\end{enumerate}
\textbf{Con:}
\begin{enumerate}
\item<2>{High barrier to entry (must first join channel network)}
\end{enumerate}
\end{block}
\end{columns}
\end{overlayarea}
\uncover<4>{
Regardless of \emph{how} payments are processed, SWAP demonstrates how a swarm can have \textbf{programmable incentives}. In particular, a network of profit-maximising nodes using SWAP results in an automatically scaling content delivery network.
}
\end{frame}


\begin{frame}{Swarm CDN is auto-scaling}
\begin{tikzpicture}
\node[peer,visible on=<1->] at (12,0) (retriever){};

\node[visible on=<1->] (chunk) at (4,-5) {$\bullet$};
\node[visible on=<1->] (chunklabel) at (3,-4) {data address} edge[point,->,visible on =<1->] (chunk);

\node[node,visible on=<2->,] at (8.5,-0.5) (connectedpeer){}
(retriever.-150) edge[point, ->,visible on=<4-8>, bend left=15]
node[below=2pt,visible on=<4>] {request}
(connectedpeer.-10);

\node[node,visible on=<2->] at (6,-2) (firstnode){}
(connectedpeer.-70) edge[point,->,visible on=<4-7>,bend left=30]
node[right of=2pt,visible on=<4>] {request}
(firstnode.east);

\node[node,visible on=<2->] at (7.5,-4.5) (secondnode){}
(firstnode.-70) edge[point,->,dashed,visible on=<4-6>,bend left=10]
node[right of=2pt,visible on=<4>] {requests...}
(secondnode.120);

\node[peer,visible on=<2->] at (4,-6) (closestnode){}
(secondnode.-110) edge[point,->,visible on=<4-5>,out=-110,in=0]
node[right of=2pt,visible on=<4>] {request}
(closestnode.east)
(closestnode) edge[thick,point,->,visible on=<5>] (secondnode)
(secondnode.north west) edge[thick, point,->,visible on=<6>, dashed] (firstnode.-120)
(firstnode.55) edge[thick,point,->,visible on=<7>] (connectedpeer.-150)
(connectedpeer) edge[thick,point,->,visible on=<8>] (retriever)
;

\node[chunk, scale=0.6,visible on=<3->, below=3pt of closestnode.-50] {};
\node[chunk, scale=0.6,visible on=<5->, below=3pt of secondnode.-50] {};
\node[chunk, scale=0.6,visible on=<6-9>, below=3pt of firstnode.-50] {};
\node[chunk, scale=0.6,visible on=<7-9>, below=3pt of connectedpeer.-50] {};
\node[chunk, scale=0.6,visible on=<8->, below=3pt of retriever.-50] {};


\node[peer, visible on=<11->] at (12,-6) (newguy){};
\node[node, visible on=<11->] at (11,-4) (newnode){}
(newguy) edge[point,->,visible on=<12-15>,dashed,bend left=20] (newnode)
(newnode) edge[point,->,visible on=<13-14>,bend left=20] (secondnode)
;

\node[chunk, scale=0.6,visible on=<14->, below=3pt of newnode.-50] {}
(secondnode) edge[thick,point,->,visible on=<14>] (newnode);
\node[chunk, scale=0.6,visible on=<15->, below=3pt of newguy.-50] {}
(newnode) edge[thick,point,->,visible on=<15>] (newguy);

\node[visible on=<16>,scale=4] at (3,-1) {\Smiley};

\end{tikzpicture}
\end{frame}

Binary file added slides/ams-btc-09-2016/devcon-files.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit f952cdd

Please sign in to comment.