# HG changeset patch
# User akahori
# Date 1550482532 -32400
# Node ID 0ad9752c0c8556f4c1397b06da2eb04f3a8e74da
# Parent d6cca85616e23f2688d775828a11b28c89a2684a
add chapter5 and 6
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/bibliography.tex
--- a/final_main/bibliography.tex Sat Feb 16 23:15:20 2019 +0900
+++ b/final_main/bibliography.tex Mon Feb 18 18:35:32 2019 +0900
@@ -13,16 +13,33 @@
\bibitem{bitcoin}
Bitcoin: A Peer-to-Peer Electronic Cash System \\
\url{https://bitcoin.org/bitcoin.pdf}\\
-(2018年2月15日 アクセス)
+(Accessed: 2018/2/15)
+
+\bibitem{ethereum}
+Ethereum Homestead Documentation \\
+\url{http://www.ethdocs.org/en/latest/}\\
+(Accessed: 2018/2/17)
+
+
+\bibitem{paxos}
+Paxos made Simple \\
+\url{https://lamport.azurewebsites.net/pubs/paxos-simple.pdf}
+(Accessed: 2018/2/17)
+
+\bibitem{christie}
+照屋のぞみ. 分散フレームワークChristieの設計, Master’s thesis, 琉球大学 大学院理工学研究科, 2018.
+
\bibitem{torque}
TORQUE Introduction. \\
\url{http://docs.adaptivecomputing.com/torque/4-2-8/help.htm#topics/0-intro/introduction.htm\%3FTocPath\%3DWelcome\%7C_____1}\\
-(2018年2月15日 アクセス)
+(Accessed: 2018/2/15)
+
\bibitem{qsub-doc}
qsub document. \\
\url{http://docs.adaptivecomputing.com/torque/4-0-2/Content/topics/commands/qsub.htm}\\
-(2018年2月15日 アクセス)
+(Accessed: 2018/2/15)
+
\end{thebibliography}
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/chapter2/chapter2.tex
--- a/final_main/chapter2/chapter2.tex Sat Feb 16 23:15:20 2019 +0900
+++ b/final_main/chapter2/chapter2.tex Mon Feb 18 18:35:32 2019 +0900
@@ -5,7 +5,7 @@
%%**************************************
\chapter{ブロックチェーンについて}
-ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロック, そのブロックをハッシュによって繋げ, 前後関係を表した台帳というものを, システムに参加しているすべてのノードが保持する技術である. ブロックチェーンにはパブリック型とコンソーシアム型の2種類がある. パブリック型は不特定多数のノードを対象にしており, コンソーシアム型は管理者が許可したノードが参加している.
+ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロック, そのブロックをハッシュによって繋げ, 前後関係を表した台帳というものを, システムに参加している複数のノードが保持する技術である. ブロックチェーンにはパブリック型とコンソーシアム型の2種類がある. パブリック型は不特定多数のノードを対象にしており, コンソーシアム型は管理者が許可したノードが参加している.
\section{P2P}
ブロックチェーンのネットワーク間はP2Pで動く. つまり, ブロックチェーンネットワークはサーバー, クライアントの区別がなく, すべてのノードが平等である. そのため, 非中央的にデータの管理を行う.
@@ -65,5 +65,6 @@
+
%%文書終了****************************
\end{document}
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/chapter3/chapter3.tex
--- a/final_main/chapter3/chapter3.tex Sat Feb 16 23:15:20 2019 +0900
+++ b/final_main/chapter3/chapter3.tex Mon Feb 18 18:35:32 2019 +0900
@@ -27,6 +27,7 @@
\end{itemize}
nonceはブロックのパラメータに含まれる. difficultyはProof of Workの難しさ, 正確に言えば1つのブロックを生成する時間を調整している.
+
Proof of Workはこれらのパラメータを使って次のようにブロックを作る.
\begin{enumerate}
@@ -84,7 +85,7 @@
\item プロセスは停止する可能性がある. また, 復旧する可能性もある.
\end{enumerate}
-Proof of Workにある特性の4がないが, これは許可したノードのみが参加可能だからである. つまり, 悪意あるノードが参加する可能性が少ないためである.
+Proof of Workにある特性の4がないが, コンソーシアムブロックチェーンは3つの問題を解決するだけで十分である. なぜならば, コンソーシアムブロックチェーンは許可したノードのみが参加可能だからである. つまり, 悪意あるノードが参加する可能性が少ないためだ.
Paxosは3つの役割のノードがある.
@@ -95,9 +96,9 @@
\end{description}
Paxosのアルゴリズムに入る前に, 定義された用語を説明する. 以下にその用語の定義を示す.\begin{description}
-\item[提案(リクエスト)] 提案は, 異なる提案ごとにユニークな提案番号と, 値からなる. 提案番号とは, 異なる提案を見分けるための識別子であり, 単調増加する. 値は一意に決まってほしいデータである.
+\item[提案] 提案は, 異なる提案ごとにユニークな提案番号と値からなる. 提案番号とは, 異なる提案を見分けるための識別子であり, 単調増加する. 値は一意に決まってほしいデータである.
\item[値(提案)がacceptされる] acceptorによって値(提案)が決まること.
-\item[値(提案)が選択される] 過半数以上のacceptorによって, 値(提案)がacceptされた場合, それを値(提案)が選択されたと言う.
+\item[値(提案)が選択(chosen)される] 過半数以上のacceptorによって, 値(提案)がacceptされた場合, それを値(提案)が選択されたと言う.
\end{description}
@@ -144,7 +145,7 @@
\section{Paxosによるブロックチェーン}
PaxosはProof of Workに比べ, CPUのリソースを消費せず, Transactionの確定に時間がかからない. そのため, Paxosでブロックのコンセンサスを取るブロックチェーンを実装することにはメリットが有る.
-また, Paxos自体がそもそもリーダー選出に向いているアルゴリズムである. そのため, リーダーを決め, そのノードのブロックチェーンの一貫性のみを考えることもできる.
+また, Paxos自体がリーダー選出に向いているアルゴリズムである. そのため, リーダーを決め, そのノードのブロックチェーンの一貫性のみを考えることもできる.
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/chapter5/chapter5.tex
--- a/final_main/chapter5/chapter5.tex Sat Feb 16 23:15:20 2019 +0900
+++ b/final_main/chapter5/chapter5.tex Mon Feb 18 18:35:32 2019 +0900
@@ -6,7 +6,7 @@
%%**************************************
\chapter{評価}
-本研究では, 実際にコンセンサスアルゴリズムPaxosを分散環境上で実行した. 分散環境上で動かすため, JobSchedulerの一種であるTorque Resource Manager(Torque)を使った. ここではTorqueとはなにか, どのような目的で評価をしたかを述べる.
+本研究では, 実際にコンセンサスアルゴリズムPaxosを分散環境上で実行した. 分散環境上で動かすため, JobSchedulerの一種であるTorque Resource Manager(Torque)を使った. ここではTorqueとはなにか, どのような評価をしたかを述べる.
\section{Torqueとは}
@@ -37,8 +37,47 @@
\lstinputlisting[caption=torque-example.sh,label=code:torque-example]{./src/torque-example.sh}
-「\#PBS オプション」とすることにより実行環境を設定できる. 使用できるオプションは参考文献\cite{qsub-doc}に書かれてある. 例として, ノード数10(vm0からvm9まで), jobの名前を「ExampleJob」という形で実行した. その結果をExampleJobが
+「\#PBS オプション」とすることにより実行環境を設定できる. 使用できるオプションは参考文献\cite{qsub-doc}に書かれてある. このスクリプトでは, ノード数10(vm0からvm9まで), jobの名前を「ExampleJob」という形で実行する設定をしている. もし, このコードを投入した場合, Submit/Interactive Nodesが各vmにsshし, hostnameコマンドを実行する.
+実行後はstdout, stderrorの出力を「job名.o数字」, 「job名.e数字」というファイルに書き出す.
+
+\section{PCクラスタ上でのPaxosの実験}
+
+PCクラスタ上で実際にPaxosを動かしてみる. 今回は単純化し, proposerの数を2, acceptorの数を3, learnerの数を1としてPaxosを動かし, 値が一意に決まるかどうかを見る. また, わかりやすいように提案の値を整数とし, 各proposerごとに異なった値とした. 正確には, 「proposer + 数字」 の数字の部分を値とし, コンセンサスを取るようにした.
+
+実験を3回行い, シーケンス図で結果を示したものを図\ref{fig:paxos1}, 図\ref{fig:paxos2}, 図\ref{fig:paxos3}に示す. なおこの結果はプログラム中のLog4j2を用いたlogの出力を元にLeanerが値を選択するまでを図にしたものである.
+
+\begin{figure}[H]
+\centering
+ \fbox{
+ \includegraphics[scale=0.5]{./images/paxos1.pdf}
+ }
+\caption{実験1回目のPaxos}
+\label{fig:paxos1}
+\end{figure}
+
+\begin{figure}[H]
+\centering
+ \fbox{
+ \includegraphics[scale=0.8]{./images/paxos2.pdf}
+ }
+\caption{実験2回目のPaxos}
+\label{fig:paxos2}
+\end{figure}
+
+
+\begin{figure}[H]
+\centering
+ \fbox{
+ \includegraphics[scale=0.8]{./images/paxos3.pdf}
+ }
+\caption{実験3回目のPaxos}
+\label{fig:paxos3}
+\end{figure}
+
+いずれも一意の値を決めることができている. また, Learnerが値を選択した後でも, Paxosは常に決めた値を持ち続けるアルゴリズムである. 参照したLog4j2の出力では提案番号25, 31まで提案を続けていたが, 値がこれ以降に覆ることはなかった.
+
+今回はわかりやすいように値を数字で行った実験だったが, これをトランザクション, ブロックに応用することで, ブロックチェーンにおけるコンセンサス部分を完成させることができる.
%%文書終了****************************
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/chapter6/chapter6.tex
--- a/final_main/chapter6/chapter6.tex Sat Feb 16 23:15:20 2019 +0900
+++ b/final_main/chapter6/chapter6.tex Mon Feb 18 18:35:32 2019 +0900
@@ -5,6 +5,13 @@
%%**************************************
\chapter{まとめ}
+本研究ではブロックチェーンと, 分散環境上で値を一意に決めるコンセンサスアルゴリズムを述べ, Christieという分散フレームワークで実際にPaxosを作り, PCクラスタ上で動かした. その結果, コンセンサスの結果として一意のデータが取り出せることがわかった.
+
+まだPCクラスタ上ではブロックチェーンを動かすことができない. しかし, Block, Transaction, Hash生成, 署名のためのクラスはいずれも作られている. Transactionにおいてはまだファイルのデータを入れる機能は実装していないが, これらを組み合わせれば簡易的なブロックチェーンが作れる. そのため, あとはPaxosとこれらのクラスをどのようにつなげるかが問題となる.
+また, Proof of Workを行うクラスも作られている. そのため, ブロックチェーンが実装できた場合, このクラスを用いてPaxosと速度比較も行える.
+
+今後の課題としては, Paxosによるブロックチェーンを作り, 分散クラスタ上でファイルのやり取りができるかを見る. その際にどの程度スケーラビリティがあるのか, Proof of Workと比較し, どの程度速度が変わるのかを調べていきたい.
+
%%文書終了****************************
\end{document}
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos.graffle
Binary file final_main/images/paxos.graffle has changed
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos.pu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos.pu Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,95 @@
+@startuml
+title Paxos1
+/' ======= style ======= '/
+
+skinparam sequence {
+ArrowColor black
+LifeLineBorderColor black
+
+ParticipantBorderColor black
+ParticipantBackgroundColor white
+ParticipantPadding 20
+}
+
+/' ======= node name ======= '/
+
+/' === proposers === '/
+participant proposer1
+activate proposer1
+participant proposer2
+activate proposer2
+
+/' === acceptors === '/
+participant acceptor1
+activate acceptor1
+participant acceptor2
+activate acceptor2
+participant acceptor3
+activate acceptor3
+
+/' === learners === '/
+participant learner1
+activate learner1
+
+/' ======= uml ======= '/
+
+proposer2 -> acceptor1:Prepare request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+acceptor2 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+acceptor3 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Fail\n\
+Proposal(8, 2)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+proposer2 -> acceptor1:Accept request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor2 --> proposer2:Accept \n\
+Proposal(8, 2)
+acceptor2 --> learner1:accept \n\
+Proposal(8, 2)
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(13, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(13, 1)
+acceptor3 --> proposer1:Promise Success\n\
+Proposal(13, 1)
+
+acceptor1 --> proposer2:Accept Fail\n\
+Proposal(13, 1)
+acceptor3 --> proposer2:Accept Fail\n\
+Proposal(13, 1)
+proposer1 -> acceptor1:accept request \n\
+Proposal(13, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+
+acceptor2 --> proposer1:accept \n\
+Proposal(13, 1)
+acceptor2 --> learner1:accept \n\
+Proposal(13, 1)
+
+
+
+@enduml
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos1.pdf
Binary file final_main/images/paxos1.pdf has changed
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos1.pu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos1.pu Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,74 @@
+@startuml
+title Paxos 1
+/' ======= style ======= '/
+
+skinparam sequence {
+ArrowColor black
+LifeLineBorderColor black
+
+ParticipantBorderColor black
+ParticipantBackgroundColor white
+ParticipantPadding 20
+}
+
+/' ======= node name ======= '/
+
+/' === proposers === '/
+participant proposer1
+activate proposer1
+participant proposer2
+activate proposer2
+
+/' === acceptors === '/
+participant acceptor1
+activate acceptor1
+participant acceptor2
+activate acceptor2
+participant acceptor3
+activate acceptor3
+
+/' === learners === '/
+participant learner1
+activate learner1
+
+/' ======= uml ======= '/
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(7, 1)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+proposer2 -> acceptor1:Prepare request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+acceptor2 --> proposer2
+acceptor3 --> proposer2
+
+proposer2 -> acceptor1:Accept request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Accept \n\
+Proposal(8, 2)
+acceptor1 -> learner1:Accept \n\
+Proposal(8, 2)
+
+acceptor2 --> proposer2:Accept \n\
+Proposal(8, 2)
+acceptor2 -> learner1:Accept \n\
+Proposal(8, 2)
+
+learner1 -> learner1:chosen \n\
+Proposal(8, 2)
+
+@enduml
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos1.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos1.svg Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,71 @@
+
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos2.pdf
Binary file final_main/images/paxos2.pdf has changed
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos2.pu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos2.pu Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,116 @@
+@startuml
+title Paxos 2
+/' ======= style ======= '/
+
+skinparam sequence {
+ArrowColor black
+LifeLineBorderColor black
+
+ParticipantBorderColor black
+ParticipantBackgroundColor white
+ParticipantPadding 20
+}
+
+/' ======= node name ======= '/
+
+/' === proposers === '/
+participant proposer1
+activate proposer1
+participant proposer2
+activate proposer2
+
+/' === acceptors === '/
+participant acceptor1
+activate acceptor1
+participant acceptor2
+activate acceptor2
+participant acceptor3
+activate acceptor3
+
+/' === learners === '/
+participant learner1
+activate learner1
+
+/' ======= uml ======= '/
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(7, 1)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+proposer2 -> acceptor1:Prepare request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+acceptor2 --> proposer2
+acceptor3 --> proposer2
+
+proposer1 -> acceptor1:Accept request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+
+
+acceptor1 --> proposer1:Accept Fail\n\
+Proposal(8, 2)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+
+proposer2 -> acceptor2:Accept request \n\
+Proposal(8, 2)
+
+acceptor2 --> proposer2:Accept \n\
+Proposal(8, 2)
+acceptor2 -> learner1:Accept \n\
+Proposal(8, 2)
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(13, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor2 --> proposer1:Promise Success\n\
+But Accepted \n\
+Proposal(8, 2)
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(13, 1)
+acceptor3 --> proposer1
+
+proposer2 -> acceptor1:Accept request \n\
+Proposal(8, 2)
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Accept Fail\n\
+Proposal(8, 2)
+acceptor3 --> proposer2
+
+proposer1 -> acceptor1:Accept request \n\
+Proposal(13, 2)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer2:Accept \n\
+Proposal(13, 2)
+acceptor1 -> learner1:Accept \n\
+Proposal(13, 2)
+
+
+acceptor2 --> proposer2:Accept \n\
+Proposal(13, 2)
+acceptor2 -> learner1:Accept \n\
+Proposal(13, 2)
+
+learner1 -> learner1:chosen \n\
+Proposal(13, 2)
+
+@enduml
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos2.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos2.svg Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,102 @@
+
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos3.pdf
Binary file final_main/images/paxos3.pdf has changed
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos3.pu
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos3.pu Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,112 @@
+@startuml
+title Paxos 3
+/' ======= style ======= '/
+
+skinparam sequence {
+ArrowColor black
+LifeLineBorderColor black
+
+ParticipantBorderColor black
+ParticipantBackgroundColor white
+ParticipantPadding 20
+}
+
+/' ======= node name ======= '/
+
+/' === proposers === '/
+participant proposer1
+activate proposer1
+participant proposer2
+activate proposer2
+
+/' === acceptors === '/
+participant acceptor1
+activate acceptor1
+participant acceptor2
+activate acceptor2
+participant acceptor3
+activate acceptor3
+
+/' === learners === '/
+participant learner1
+activate learner1
+
+/' ======= uml ======= '/
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(7, 1)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+proposer1 -> acceptor3:Accept Request \n\
+Proposal(7, 1)
+acceptor3 --> proposer1: Accept \n\
+Proposal(7,1)
+acceptor3 -> learner1:Accept \n\
+Proposal(7, 1)
+
+
+proposer2 -> acceptor1:Prepare request \n\
+Proposal(8, 2)
+proposer2 -> acceptor2
+proposer2 -> acceptor3
+
+acceptor1 --> proposer2:Promise Success\n\
+Proposal(8, 2)
+acceptor2 --> proposer2
+acceptor3 --> proposer2:Promise Success \n\
+But Accepted \n\
+Proposal(7, 1)
+
+proposer1 -> acceptor1:Accept request \n\
+Proposal(7, 1)
+proposer1 -> acceptor2
+
+acceptor1 --> proposer1:Accept Fail\n\
+Promised \n\
+Proposal(8, 2)
+acceptor2 --> proposer1
+
+
+proposer1 -> acceptor1:Prepare request \n\
+Proposal(13, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Promise Success\n\
+Proposal(13, 1)
+acceptor2 --> proposer1
+acceptor3 --> proposer1
+
+
+proposer1 -> acceptor1:Accept request \n\
+Proposal(13, 1)
+proposer1 -> acceptor2
+proposer1 -> acceptor3
+
+acceptor1 --> proposer1:Accept \n\
+Proposal(13, 1)
+acceptor1 -> learner1:Accept \n\
+Proposal(13, 1)
+
+acceptor2 --> proposer1:Accept \n\
+Proposal(13, 1)
+acceptor2 -> learner1:Accept \n\
+Proposal(13, 1)
+
+
+
+acceptor3 --> proposer1:Accept \n\
+Proposal(13, 1)
+acceptor3 -> learner1:Accept \n\
+Proposal(13, 1)
+
+learner1 -> learner1:chosen \n\
+Proposal(13, 1)
+
+@enduml
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/images/paxos3.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/final_main/images/paxos3.svg Mon Feb 18 18:35:32 2019 +0900
@@ -0,0 +1,97 @@
+
\ No newline at end of file
diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/main.pdf
Binary file final_main/main.pdf has changed