From 79348902be41f15aa3ba75337553ccfda532c5b5 Mon Sep 17 00:00:00 2001 From: aron Date: Sun, 17 Apr 2016 04:41:01 +0200 Subject: [PATCH] more latex --- swarm/docs/sw^3/fig/accuse.tex | 59 ++++++++++++++++++++++ swarm/docs/sw^3/fig/failedretrieve.tex | 56 ++++++++++++++++++++ swarm/docs/sw^3/fig/failure-and-audit.pdf | Bin 0 -> 25545 bytes swarm/docs/sw^3/fig/failure-and-audit.tex | 53 +++++++++++++++++++ swarm/docs/sw^3/fig/normaloperations.pdf | Bin 0 -> 32830 bytes swarm/docs/sw^3/fig/normaloperations.tex | 53 +++++++++++++++++++ swarm/docs/sw^3/fig/normalops.tex | 58 +++++++++++++++++++++ 7 files changed, 279 insertions(+) create mode 100644 swarm/docs/sw^3/fig/accuse.tex create mode 100644 swarm/docs/sw^3/fig/failedretrieve.tex create mode 100644 swarm/docs/sw^3/fig/failure-and-audit.pdf create mode 100644 swarm/docs/sw^3/fig/failure-and-audit.tex create mode 100644 swarm/docs/sw^3/fig/normaloperations.pdf create mode 100644 swarm/docs/sw^3/fig/normaloperations.tex create mode 100644 swarm/docs/sw^3/fig/normalops.tex diff --git a/swarm/docs/sw^3/fig/accuse.tex b/swarm/docs/sw^3/fig/accuse.tex new file mode 100644 index 000000000000..ef6494633d7a --- /dev/null +++ b/swarm/docs/sw^3/fig/accuse.tex @@ -0,0 +1,59 @@ + +\begin{tikzpicture}[node distance=1cm, auto,] + + +%owner +% \node[punkt] at (-2,0) (owner) {owner}; +\node at (-2,0) (owner){}; +%guardian, arrow from owner +\node[punkt, right=2cm of owner] (guardian) {guardian} +% edge[pil, <-] node[auto] {\begin{tabular}{c}\small{store} \\\small{request}\end{tabular}} (owner) +; + +%node after guardian - arrow to node +\node[right=2cm of guardian] (rog) {}; +\node[node, below=of rog] (node1) {node} + (node1.west) edge[pil, <-, bend left=45] node[left=5pt] {\begin{tabular}{r}finger point /\\\quad audit request\end{tabular}} (guardian.south); + + +\node[punkt, text width=6em] (pseudo) at (3.4,-8.8) {closest node}; +% +\node[node] (node2) at (4,-3) {node} + (node2.north east) edge[pil, <-, dashed, bend right=45] node[right=-12pt] { + \begin{tabular}{r}finger point /\\\quad audit request\end{tabular} + } (node1.south east); +% \node[node] (node3) at (9,-4) {node}; +\node[punkt] (retriever) at (10,-1) {retriever} +% edge[pil, ->, bend right=10] node[left=1pt]{retrieval} node[right=1pt]{ request} (node3) + ; +% \node[punkt] (pseudo) at (3.4,-8.8) {closest node}; +\node[punkt] (custodian) at (2.5,-6) {custodian} +(custodian.-15) edge[pil,dashed, bend left=30, <->] node[auto]{ + \begin{tabular}{c}missing\\ link\end{tabular} + }(pseudo) +% (node4.west) edge[pil,dashed] (custodian) + (custodian.west) edge[pil, <-, bend left=70] node[left]{\begin{tabular}{r}finger point /\\\quad audit request\end{tabular}} (node2.west) +% (custodian.-15) edge[pil,dashed, bend left=30, <->] node[auto]{ +% \begin{tabular}{c}missing\\ link\end{tabular} +% }(pseudo) +; +% \node[node] (node4) at (8,-6) {node} +% (node4.south) edge[pil, ->, bend left=45] node[left=3pt]{failed}node[right=1pt]{ retrieval}(pseudo.east) +% (node4.north) edge[pil,<-,dashed, bend left=15] node[auto]{forwarding}(node3); + +% \node (chunklabel) at (3.5,-4) {chunk address}; +% \node (chunk) at (4.2,-5.5) {$\bullet$} +% edge[pil, <-] (chunklabel.south); +% \node[draw, shape=circle, dotted, minimum size=6.5cm] at (chunk) {}; + +% \node at (5.5,-4.5) {most proximate}; + +\node (chunklabel) at (1,-7) {chunk address}; +\node (chunk) at (3,-8) {$\bullet$} + edge[pil, <-] (chunklabel.south east) + (retriever.west) edge[pil, ->, bend right=15] node[above=2pt]{accusation} (guardian) + + + ; + +\end{tikzpicture} diff --git a/swarm/docs/sw^3/fig/failedretrieve.tex b/swarm/docs/sw^3/fig/failedretrieve.tex new file mode 100644 index 000000000000..65a5c858c122 --- /dev/null +++ b/swarm/docs/sw^3/fig/failedretrieve.tex @@ -0,0 +1,56 @@ +\begin{tikzpicture}[node distance=1cm, auto,] + + +%owner +% \node[punkt] at (-2,0) (owner) {owner}; +% \node at (-2,0) (owner){}; +%guardian, arrow from owner +% \node[punkt, right=2cm of owner] (guardian) {guardian} +% edge[pil, <-] node[auto] {\begin{tabular}{c}\small{store} \\\small{request}\end{tabular}} (owner) +; + +%node after guardian - arrow to node +% \node[right=2cm of guardian] (rog) {}; +% \node[node, below=of rog] (node1) {node} +% (node1.west) edge[pil, <-, bend left=45] node[left=3pt] {finger point} (guardian.south) +; + + +\node[punkt, text width=6em] (pseudo) at (3.4,-8.8) {closest node}; +% +% \node[node] (node2) at (4,-3) {node} +% (node2.east) edge[pil, <-, dashed, bend right=45] node[right=1pt] {finger point} (node1.-60); +\node[node] (node3) at (9,-4) {node}; +\node[punkt] (retriever) at (10,-1) {retriever} + edge[pil, ->, bend right=10] node[left=1pt]{retrieval} node[right=1pt]{ request} (node3); +% \node[punkt] (pseudo) at (3.4,-8.8) {closest node}; +\node[punkt] (custodian) at (2.5,-6) {custodian} +(custodian.-15) edge[pil,dashed, bend left=30, <->] node[auto]{ + \begin{tabular}{c}missing\\ link\end{tabular} + }(pseudo) +% (node4.west) edge[pil,dashed] (custodian) +% (custodian.west) edge[pil, <-, bend left=70] node[auto]{finger point} (node2.west) +% (custodian.-15) edge[pil,dashed, bend left=30, <->] node[auto]{ +% \begin{tabular}{c}missing\\ link\end{tabular} +% }(pseudo) +; +\node[node] (node4) at (8,-6) {node} + (node4.south) edge[pil, ->, bend left=45] node[left=3pt]{failed}node[right=1pt]{ retrieval}(pseudo.east) + (node4.north) edge[pil,<-,dashed, bend left=15] node[auto]{forwarding}(node3); + +% \node (chunklabel) at (3.5,-4) {chunk address}; +% \node (chunk) at (4.2,-5.5) {$\bullet$} +% edge[pil, <-] (chunklabel.south); +% \node[draw, shape=circle, dotted, minimum size=6.5cm] at (chunk) {}; + +% \node at (5.5,-4.5) {most proximate}; + +\node (chunklabel) at (1,-7) {chunk address}; +\node (chunk) at (3,-8) {$\bullet$} + edge[pil, <-] (chunklabel.south east) + + ; + + + +\end{tikzpicture} diff --git a/swarm/docs/sw^3/fig/failure-and-audit.pdf b/swarm/docs/sw^3/fig/failure-and-audit.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a39bec6008f9ae0efe568bf06d8e1760019d8ca1 GIT binary patch literal 25545 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', + %Define style for boxes + punkt/.style={ + rectangle, + rounded corners, + draw=black, thick, + text width=4.5em, + minimum height=2em, + text centered}, + node/.style={ + rectangle, + rounded corners, + draw=black, thin, + text width=3.5em, + minimum height=2em, + text centered}, + node/.style={ + rectangle, + rounded corners, + draw=black, + text width=4.5em, + minimum height=2em, + text centered, + fill={rgb:black,1;white,3}}, + % Define arrow style + pil/.style={ + ->, + thick, + shorten <=2pt, + shorten >=2pt,} +every node/.style={align=center} +} + +\begin{document} + +\begin{tikzpicture} +% \node[scale=0.25] at (0,0) { +% \input{normalops.tex} +% }; +\node[scale=0.25] at (0,0) { +\input{failedretrieve.tex} +}; +\node[scale=0.25] at (3.5,0) { +\input{accuse.tex} +}; +\end{tikzpicture} +\end{document} diff --git a/swarm/docs/sw^3/fig/normaloperations.pdf b/swarm/docs/sw^3/fig/normaloperations.pdf new file mode 100644 index 0000000000000000000000000000000000000000..291494e05232f0f43e83b04c5fbd3dc545c675d3 GIT binary patch literal 32830 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ĽNaN%!3!`^s^TJ0h|2r>UP!W+`{zjVLw& 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', + %Define style for boxes + punkt/.style={ + rectangle, + rounded corners, + draw=black, thick, + text width=4.5em, + minimum height=2em, + text centered}, + node/.style={ + rectangle, + rounded corners, + draw=black, thin, + text width=3.5em, + minimum height=2em, + text centered}, + node/.style={ + rectangle, + rounded corners, + draw=black, + text width=4.5em, + minimum height=2em, + text centered, + fill={rgb:black,1;white,3}}, + % Define arrow style + pil/.style={ + ->, + thick, + shorten <=2pt, + shorten >=2pt,} +every node/.style={align=center} +} + +\begin{document} + +\begin{tikzpicture} +\node[scale=0.25] at (0,0) { +\input{normalops.tex} +}; +% \node[scale=0.25] at (3,0) { +% \input{failedretrieve.tex} +% }; +% \node[scale=0.25] at (6,0) { +% \input{accuse.tex} +% }; +\end{tikzpicture} +\end{document} diff --git a/swarm/docs/sw^3/fig/normalops.tex b/swarm/docs/sw^3/fig/normalops.tex new file mode 100644 index 000000000000..5d306c7a14ff --- /dev/null +++ b/swarm/docs/sw^3/fig/normalops.tex @@ -0,0 +1,58 @@ +\begin{tikzpicture}[node distance=1cm, auto,] + + +%owner +\node[punkt] at (-2,0) (owner) {owner}; + +%guardian, arrow from owner +\node[punkt, right=2cm of owner] (guardian) {guardian} + edge[pil, <-] node[auto] {\begin{tabular}{c}\small{store} \\\small{request}\end{tabular}} (owner); + +%node after guardian - arrow to node +\node[right=2cm of guardian] (rog) {}; +\node[node, below=of rog] (node1) {node} + edge[pil, <-, bend right=30] node[right=3pt] {forwarding} (guardian.east); + +% +\node[node] (node2) at (4,-3) {node} + (node2.east) edge[pil, <-, dashed, bend right=45] node[right=1pt] {forwarding} (node1.-60); +\node[node] (node3) at (9,-4) {node}; +\node[punkt] (retriever) at (10,-1) {retriever} + edge[pil, ->, bend right=10] node[left=1pt]{retrieval} node[right=1pt]{ request} (node3); +% \node[punkt] (pseudo) at (3.4,-8.8) {closest node}; +\node[punkt] (custodian) at (2.5,-6) {custodian} +% (node4.west) edge[pil,dashed] (custodian) + (custodian.west) edge[pil, <-, bend left=70] node[auto]{forwarding} (node2.west) +% (custodian.-15) edge[pil,dashed, bend left=30, <->] node[auto]{ +% \begin{tabular}{c}missing\\ link\end{tabular} +% }(pseudo) +; +\node[node] (node4) at (8,-6) {node} + (node4.south west) edge[pil, ->, bend left=45] node[above=1pt]{retrieval}(custodian.south east) + (node4.north) edge[pil,<-,dashed, bend left=15] node[auto]{forwarding}(node3); + +\node (chunklabel) at (3.5,-4) {chunk address}; +\node (chunk) at (4.2,-5.5) {$\bullet$} + edge[pil, <-] (chunklabel.south); +% \node[draw, shape=circle, dotted, minimum size=6.5cm] at (chunk) {}; + +% \node at (5.5,-4.5) {most proximate}; + + + + +% %nodes +% \node[punkt] (market) {Market (b)}; +% \node[punkt, inner sep=5pt,below=0.5cm of market] +% (formidler) {Intermediaries (c)}; +% % We make a dummy figure to make everything look nice. +% \node[above=of market] (dummy) {}; +% \node[right=of dummy] (t) {Ultimate borrower} +% edge[pil,bend left=45] (market.east) % edges are used to connect two nodes +% edge[pil, bend left=45] (formidler.east); % .east since we want +% % consistent style +% \node[left=of dummy] (g) {Ultimate lender} +% edge[pil, bend right=45] (market.west) +% edge[pil, bend right=45] (formidler.west) +% edge[pil,<->, bend left=45] node[auto] {Direct (a)} (t); +\end{tikzpicture}