Mercurial > hg > Papers > 2019 > aka-thesis
changeset 21:3776a23274a7
fix slide
author | akahori |
---|---|
date | Wed, 20 Feb 2019 18:22:57 +0900 |
parents | 828b13d9c918 |
children | 4aaec2c74af5 |
files | final_main/chapter2/chapter2.tex slide/slide.html slide/slide.md |
diffstat | 3 files changed, 29 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/final_main/chapter2/chapter2.tex Wed Feb 20 15:37:20 2019 +0900 +++ b/final_main/chapter2/chapter2.tex Wed Feb 20 18:22:57 2019 +0900 @@ -7,9 +7,6 @@ ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロック, そのブロックをハッシュによって繋げ, 前後関係を表した台帳というものを, システムに参加している複数のノードが保持する技術である. ブロックチェーンにはパブリック型とコンソーシアム型の2種類がある. パブリック型は不特定多数のノードを対象にしており, コンソーシアム型は管理者が許可したノードが参加している. -\section{P2P} -ブロックチェーンのネットワーク間はP2Pで動く. つまり, ブロックチェーンネットワークはサーバー, クライアントの区別がなく, すべてのノードが平等である. そのため, 非中央的にデータの管理を行う. - \section{ブロックとその構造} ブロックチェーンにおけるブロックは, 複数のトランザクションをまとめたものである. ブロックの構造は使用するコンセンサスアルゴリズムによって変わるが, 基本的な構造としては次のとおりである. @@ -60,8 +57,16 @@ \section{fork} -ブロックの生成をしたあとにブロードキャストをすると, ブロック高の同じ, もしくは相手のブロック高のほうが高いブロックチェーンにたどり着く場合がある. もちろん, 相手のブロックチェーンはそのブロックを破棄する. しかしこの場合, 異なるブロックを持った2つのブロックチェーンができる. この状態をforkという. fork状態になると, 2つの異なるブロックチェーンができることになるため, 1つにまとめなければならない. 1つにまとめるためにコンセンサスアルゴリズムを使うが, コンセンサスアルゴリズムについては次章で説明する. +ブロックの生成をしたあとにブロードキャストをすると, ブロック高の同じ, もしくは相手のブロック高のほうが高いブロックチェーンにたどり着く場合がある. もちろん, 相手のブロックチェーンはそのブロックを破棄する. しかしこの場合, 異なるブロックを持った2つのブロックチェーンができる. この状態をforkという. その状態を図\ref{fig:fork}に示す. fork状態になると, 2つの異なるブロックチェーンができることになるため, 1つにまとめなければならない. 1つにまとめるためにコンセンサスアルゴリズムを使う. コンセンサスアルゴリズムについては次章で説明する. +\begin{figure}[H] +\centering + \fbox{ + \includegraphics[scale=1]{} + } +\caption{} +\label{fig:} +\end{figure}
--- a/slide/slide.html Wed Feb 20 15:37:20 2019 +0900 +++ b/slide/slide.html Wed Feb 20 18:22:57 2019 +0900 @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> - <title>Christieによるブロックチェーンの実装</title> + <title>Christieによる<br>ブロックチェーンの実装</title> <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17]"> <meta name="author" content="赤堀 貴一" > @@ -66,7 +66,7 @@ <tr> <td> <div align="center"> - <h1><font color="#808db5">Christieによるブロックチェーンの実装</font></h1> + <h1><font color="#808db5">Christieによる<br>ブロックチェーンの実装</font></h1> </div> </td> </tr> @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17] - on 2019-02-20 14:44:28 +0900 with Markdown engine kramdown (1.17.0) + on 2019-02-20 15:49:43 +0900 with Markdown engine kramdown (1.17.0) using options {} --> @@ -113,7 +113,7 @@ <li>コンピュータのデータに不整合は起こり得る. 不整合は誤操作や, 複数人によるデータの同時書き込みによって起こる.</li> <li>ブロックチェーンはデータを分散でき, 不整合の検知が可能である.</li> <li>当研究室ではGearsOS, そしてGearsOSに組み込む予定がある分散フレームワークChristieがある.</li> - <li>Christieにブロックチェーンを実装し, GearsOSに組み込むことで, GearsOS間の分散システムを構成することが可能になる. また, 分散システムを作らずとも, hash chainとしてデータの不整合を検知できる.</li> + <li>Christieにブロックチェーンを実装し, GearsOSに組み込むことで, GearsOS間の分散ファイルシステムを構成することが可能になる. また, 分散ファイルシステムを作らずとも, hash chainとしてデータの不整合を検知できる.</li> <li>よって, Christieにブロックチェーンを実装する.</li> </ul> @@ -141,7 +141,15 @@ <li>コンセンサスアルゴリズムは分散環境上で値を一意に決めるためのアルゴリズムである. <ul> <li>Paxos, Raftなどが有名. 簡単に言えば多数決を安全に行うためのアルゴリズム.</li> - <li>故障モデルというものがあって, コンセンサスアルゴリズムでレベルが4段階ある. Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く.</li> + <li>分散環境に故障モデルというものがあって, コンセンサスアルゴリズムでレベルが4段階ある. + <ul> + <li>故障が起きない.</li> + <li>任意のマシンが故障し, メッセージを受信したり送れない可能性がある.</li> + <li>メッセージに遅延が発生する. そのため, マシンが壊れたのかどうか処理に時間がかかっているのかわからない.</li> + <li>悪意あるマシンがいる可能性がある.</li> + </ul> + </li> + <li>Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く.</li> </ul> </li> </ul> @@ -170,8 +178,6 @@ <li>Learnerが決めた値を集計して, 多数決により値を選択する.</li> </ul> -<p>これによって, 値が一意に決まる.</p> - <div style="text-align: center;"> <img src="./images/paxos-choice.svg" alt="blockchain" width="800" /> </div> @@ -183,7 +189,8 @@ <h1 id="christie">Christieとは</h1> <ul> - <li>研究室で使っていたAliceの問題点を解消した, 分散プログラミングを簡単に書けるjavaのフレームワーク. + <li>分散プログラミングを簡単に書けるjavaのフレームワーク.</li> + <li>研究室で使っていたAliceの問題点を解消した. <ul> <li>データの取り出しをアノテーションを用いてシンプルに記述することができるようになった. そのため, ソースコードの可視性が上がった.</li> <li>テストが簡単になった. AliceではLocalDataGearManagerを一つしか持てないため, LocalDataGearManagerの通信のテストが難しかった. Christieは複数のLocalDataGearManagerを持てるようになったため, 1つのアプリケーション内で分散のテストができるようになった.</li> @@ -213,7 +220,7 @@ </code></pre> <div style="text-align: center;"> - <img src="./images/ring.svg" alt="blockchain" width="800" /> + <img src="./images/ring.svg" alt="blockchain" width="300" /> </div> @@ -259,8 +266,8 @@ <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-4">まとめ</h1> + <ul> - <li>実装をし, 分散環境でのデバッグが難しいことがわかった.</li> <li>Christieを用いてコンセンサスアルゴリズムのPaxos, ブロック, トランザクション, proof of workも実装した.</li> <li>これらを繋げてブロックチェーンにできれば, Christieにブロックチェーンが実装できる. パブリックブロックチェーンもプライベートブロックチェーンもどちらも作れる. 2つ作って速度比較も行える.</li> </ul>
--- a/slide/slide.md Wed Feb 20 15:37:20 2019 +0900 +++ b/slide/slide.md Wed Feb 20 18:22:57 2019 +0900 @@ -1,4 +1,4 @@ -title: Christieによるブロックチェーンの実装 +title: Christieによる<br>ブロックチェーンの実装 author: 赤堀 貴一 profile: 並列信頼研 lang: Japanese @@ -43,7 +43,7 @@ - 悪意あるマシンがいる可能性がある. - Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く. - +- # プライベートブロックチェーンのコンセンサスアルゴリズム @@ -87,7 +87,7 @@ ``` <div style="text-align: center;"> - <img src="./images/ring.svg" alt="blockchain" width="100"> + <img src="./images/ring.svg" alt="blockchain" width="300"> </div> # Christieによる実装の利点