# 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 @@ +Paxos 1proposer1proposer1proposer2proposer2acceptor1acceptor1acceptor2acceptor2acceptor3acceptor3learner1learner1Prepare requestProposal(7, 1)Promise SuccessProposal(7, 1)Prepare requestProposal(8, 2)Promise SuccessProposal(8, 2)Accept requestProposal(8, 2)AcceptProposal(8, 2)AcceptProposal(8, 2)AcceptProposal(8, 2)AcceptProposal(8, 2)chosenProposal(8, 2) \ 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 @@ +Paxos 2proposer1proposer1proposer2proposer2acceptor1acceptor1acceptor2acceptor2acceptor3acceptor3learner1learner1Prepare requestProposal(7, 1)Promise SuccessProposal(7, 1)Prepare requestProposal(8, 2)Promise SuccessProposal(8, 2)Accept requestProposal(7, 1)Accept FailProposal(8, 2)Accept requestProposal(8, 2)AcceptProposal(8, 2)AcceptProposal(8, 2)Prepare requestProposal(13, 1)Promise SuccessBut AcceptedProposal(8, 2)Promise SuccessProposal(13, 1)Accept requestProposal(8, 2)Accept FailProposal(8, 2)Accept requestProposal(13, 2)AcceptProposal(13, 2)AcceptProposal(13, 2)AcceptProposal(13, 2)AcceptProposal(13, 2)chosenProposal(13, 2) \ 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 @@ +Paxos 3proposer1proposer1proposer2proposer2acceptor1acceptor1acceptor2acceptor2acceptor3acceptor3learner1learner1Prepare requestProposal(7, 1)Promise SuccessProposal(7, 1)Accept RequestProposal(7, 1)AcceptProposal(7,1)AcceptProposal(7, 1)Prepare requestProposal(8, 2)Promise SuccessProposal(8, 2)Promise SuccessBut AcceptedProposal(7, 1)Accept requestProposal(7, 1)Accept FailPromisedProposal(8, 2)Prepare requestProposal(13, 1)Promise SuccessProposal(13, 1)Accept requestProposal(13, 1)AcceptProposal(13, 1)AcceptProposal(13, 1)AcceptProposal(13, 1)AcceptProposal(13, 1)AcceptProposal(13, 1)AcceptProposal(13, 1)chosenProposal(13, 1) \ No newline at end of file diff -r d6cca85616e2 -r 0ad9752c0c85 final_main/main.pdf Binary file final_main/main.pdf has changed