annotate final_pre/pre.tex @ 12:2e843f65ac5f

update
author akahori
date Tue, 19 Feb 2019 15:28:07 +0900
parents
children 117794d50054
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
akahori
parents:
diff changeset
1 \documentclass[twocolumn,twoside,9.5pt]{jarticle}
akahori
parents:
diff changeset
2 \usepackage[dvipdfmx]{graphicx}
akahori
parents:
diff changeset
3 \usepackage{picins}
akahori
parents:
diff changeset
4 \usepackage{fancyhdr}
akahori
parents:
diff changeset
5 \usepackage{abstract}
akahori
parents:
diff changeset
6 \usepackage{url}
akahori
parents:
diff changeset
7 %\pagestyle{fancy}
akahori
parents:
diff changeset
8 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究発表会}
akahori
parents:
diff changeset
9 \rhead{}
akahori
parents:
diff changeset
10 \cfoot{}
akahori
parents:
diff changeset
11
akahori
parents:
diff changeset
12 \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
akahori
parents:
diff changeset
13 \setlength{\headheight}{0mm}
akahori
parents:
diff changeset
14 \setlength{\headsep}{5mm}
akahori
parents:
diff changeset
15 \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
akahori
parents:
diff changeset
16 \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
akahori
parents:
diff changeset
17 \setlength{\textwidth}{181mm}
akahori
parents:
diff changeset
18 \setlength{\textheight}{261mm}
akahori
parents:
diff changeset
19 \setlength{\footskip}{0mm}
akahori
parents:
diff changeset
20 \pagestyle{empty}
akahori
parents:
diff changeset
21
akahori
parents:
diff changeset
22 \input{dummy.tex}
akahori
parents:
diff changeset
23 \renewcommand{\abstractname}{Abstract}
akahori
parents:
diff changeset
24 \begin{document}
akahori
parents:
diff changeset
25 \title{Blockchain implements in Christie}
akahori
parents:
diff changeset
26 %\title{Supporting NAT in Screen Sharing System TreeVNC}
akahori
parents:
diff changeset
27 \author{155753A 氏名 {赤堀}{貴一} 指導教員 : 河野 真治}
akahori
parents:
diff changeset
28 \date{}
akahori
parents:
diff changeset
29 \twocolumn [
akahori
parents:
diff changeset
30 \maketitle
akahori
parents:
diff changeset
31 \begin{onecolabstract}
akahori
parents:
diff changeset
32
akahori
parents:
diff changeset
33 Data corruption and inconsistency in computers causes severe problem. Therefore, detect corruption and inconsistency by Blockchain. The Blockchain is a distributed system. It is possible to compare between hash value and data which is correct. Even if there are incorrect operation and tampering, data are possible to recover with Blockchain.
akahori
parents:
diff changeset
34
akahori
parents:
diff changeset
35 We are developing Christie and GearsOS. Christie is a distributed framework and GearsOS is a Operating System. GearsOS Filesystem will refer to Christie. if implementing block chain in Christie and implementing it in GearsOS, makes it possible to detect data corruption and inconsistency in the GearsOS file system. In addition, it is possible to configure decentralized distributed network between Gears OS. if it does not configure, data is protected. So, our purpose can be achieved.
akahori
parents:
diff changeset
36
akahori
parents:
diff changeset
37 In this study, We implement Blockchain in Christie and run it in distributed environment on PC cluster.
akahori
parents:
diff changeset
38 \end{onecolabstract}]
akahori
parents:
diff changeset
39 \thispagestyle{fancy}
akahori
parents:
diff changeset
40
akahori
parents:
diff changeset
41 \section{研究目的}
akahori
parents:
diff changeset
42
akahori
parents:
diff changeset
43 コンピュータにおいてデータの破損や不整合は深刻な異常を引き起こす原因となる. そのため, 破損, 不整合を検知するためにブロックチェーン技術を用いたい. ブロックチェーンは分散ネットワーク技術であり, データの破損や不整合をハッシュ値によって比較できる. そして, 誤操作や改ざんがあった場合でも, ブロックチェーンを用いることでデータの追跡が行える.
akahori
parents:
diff changeset
44
akahori
parents:
diff changeset
45 当研究室では分散フレームワークとしてChristieを開発しており, これはGearsOSにファイルシステムに組み込む予定がある. そのため, Christieにブロックチェーンを実装し, GearsOSに組み込むことにより, GearsOSのファイルシステムにおいてデータの破損, 不整合を検知できる. また, GearsOS同士による分散ファイルシステムを構成することができ, 非中央的にデータの分散ができるようになる. もし分散システムを構成しない場合でもデータの整合性保持は行え, 上記の目的は達成できる.
akahori
parents:
diff changeset
46
akahori
parents:
diff changeset
47 本研究では, Christieにブロックチェーンを実装し, 実際に学科のPCクラスタ上の分散環境で動かす.
akahori
parents:
diff changeset
48
akahori
parents:
diff changeset
49 \section{ブロックチェーン}
akahori
parents:
diff changeset
50 ブロックチェーンとは分散型台帳技術とも呼ばれ, 複数のトランザクションをまとめたブロックをつなげたものを, システムに参加しているすべてのノードが参照できる技術である.
akahori
parents:
diff changeset
51 ブロックチェーンを実装することは次のようなメリットが有る.
akahori
parents:
diff changeset
52
akahori
parents:
diff changeset
53 \begin{itemize}
akahori
parents:
diff changeset
54 \item データの追跡, 検証が容易である.
akahori
parents:
diff changeset
55 \item 中央管理者が存在しない. 単一障害点がない.
akahori
parents:
diff changeset
56 \end{itemize}
akahori
parents:
diff changeset
57
akahori
parents:
diff changeset
58 データの追跡, 検証が容易であるのは, ブロックの構造によるものである. ブロックの構造は簡易化すれば次のようなものである.
akahori
parents:
diff changeset
59
akahori
parents:
diff changeset
60 \begin{itemize}
akahori
parents:
diff changeset
61 \item 前のブロックの暗号化ハッシュ.
akahori
parents:
diff changeset
62 \item タイムスタンプ.
akahori
parents:
diff changeset
63 \item トランザクションリスト.
akahori
parents:
diff changeset
64 \end{itemize}
akahori
parents:
diff changeset
65
akahori
parents:
diff changeset
66 ブロックは図\ref{fig:chain}のようにhashでつながっている. 一つのブロックが変更されれば, その後に連なるブロックも整合性が保たれないため, これによってデータの整合性保持が行える.
akahori
parents:
diff changeset
67
akahori
parents:
diff changeset
68 \begin{figure}[h]
akahori
parents:
diff changeset
69 \centering
akahori
parents:
diff changeset
70 \fbox{
akahori
parents:
diff changeset
71 \includegraphics[scale=0.3]{./images/chain.pdf}
akahori
parents:
diff changeset
72 }
akahori
parents:
diff changeset
73 \caption{hash chain}
akahori
parents:
diff changeset
74 \label{fig:chain}
akahori
parents:
diff changeset
75 \end{figure}
akahori
parents:
diff changeset
76
akahori
parents:
diff changeset
77
akahori
parents:
diff changeset
78 トランザクション, ブロックともにノード間で伝搬され, ノードごとに検証される. そして検証を終え, 不正なトランザクション, ブロックであれば破棄する. 検証に通った場合は, トランザクションはTransaction PoolにTransactionを貯めておき, ブロックはブロックチェーンに取り組まれ, また検証したノードからトランザクション, ブロックがブロードキャストされる. ノード間はP2Pで通信が行われている.
akahori
parents:
diff changeset
79
akahori
parents:
diff changeset
80 同時に異なるノードで複数のブロックができることを, forkという. これによってブロックチェーンの分岐が起こる.
akahori
parents:
diff changeset
81 ブロックチェーンの分岐を収束させるにはコンセンサスアルゴリズムを使用する.
akahori
parents:
diff changeset
82
akahori
parents:
diff changeset
83 \section{コンセンサスアルゴリズム}
akahori
parents:
diff changeset
84 コンセンサスアルゴリズムとは, 一意の値を分散環境上で決めるためのアルゴリズムである.
akahori
parents:
diff changeset
85
akahori
parents:
diff changeset
86 今回は分散アルゴリズムとしてPaxosを実装した.
akahori
parents:
diff changeset
87
akahori
parents:
diff changeset
88
akahori
parents:
diff changeset
89 \section{Christie}
akahori
parents:
diff changeset
90
akahori
parents:
diff changeset
91 Christieは当研究室で開発している分散フレームワークである. ChristieはJavaで書かれているが, 当研究室で開発しているGearsOSに組み込まれる予定がある. そのため, GearsOSを構成する言語Continuation based Cと似た概念がある. Christieに存在する概念として次のようなものがある.
akahori
parents:
diff changeset
92
akahori
parents:
diff changeset
93 \begin{itemize}
akahori
parents:
diff changeset
94 \item CodeGear(以下CG)
akahori
parents:
diff changeset
95 \item DataGear(以下DG)
akahori
parents:
diff changeset
96 \item CodeGearManager(以下CGM)
akahori
parents:
diff changeset
97 \item DataGearManager(以下DGM)
akahori
parents:
diff changeset
98 \end{itemize}
akahori
parents:
diff changeset
99
akahori
parents:
diff changeset
100 CGはクラス, スレッドに相当し, DGは変数データに相当する. CGMはノードであり, DGM, CG, DGを管理する. DGMはDGを管理するものであり, putという操作により変数データ, つまりDGを格納できる.
akahori
parents:
diff changeset
101
akahori
parents:
diff changeset
102 DGMにはLocalとRemoteと2つの種類があり, Localであれば, LocalのCGMが管理しているDGMに対し, DGを格納していく. Remoteであれば接続したRemote先のCGMのDGMにDGを格納できる. DGを取り出す際にはアノテーションを付けることで, データの取り出し方も指定できる. Take, Peekという操作があり, Takeは読み込んだDGが消えるが, PeekはDGを消さずにそのまま残す. また, RemoteTake, RemotePeekというものもあり, リモート先を指定することにより, RemoteDGMからデータを取ることができる.
akahori
parents:
diff changeset
103
akahori
parents:
diff changeset
104 CGはCGMによって実行されるが, 実行するにはCGに必要なDGが全て揃う必要がある. もしDGが全て揃わない場合, CGMはずっとlistenし, データが揃うまで実行を待つ.
akahori
parents:
diff changeset
105
akahori
parents:
diff changeset
106
akahori
parents:
diff changeset
107 \section{まとめ}
akahori
parents:
diff changeset
108
akahori
parents:
diff changeset
109
akahori
parents:
diff changeset
110 \nocite{*}
akahori
parents:
diff changeset
111 \bibliographystyle{junsrt}
akahori
parents:
diff changeset
112 \bibliography{reference}
akahori
parents:
diff changeset
113 \end{document}