annotate slide/slide.html @ 21:3776a23274a7

fix slide
author akahori
date Wed, 20 Feb 2019 18:22:57 +0900
parents 828b13d9c918
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
9627f1774b45 add slide
akahori
parents:
diff changeset
1 <!DOCTYPE html>
9627f1774b45 add slide
akahori
parents:
diff changeset
2 <html>
9627f1774b45 add slide
akahori
parents:
diff changeset
3 <head>
9627f1774b45 add slide
akahori
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
5 <title>Christieによる<br>ブロックチェーンの実装</title>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
6
9627f1774b45 add slide
akahori
parents:
diff changeset
7 <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17]">
9627f1774b45 add slide
akahori
parents:
diff changeset
8 <meta name="author" content="赤堀 貴一" >
9627f1774b45 add slide
akahori
parents:
diff changeset
9
9627f1774b45 add slide
akahori
parents:
diff changeset
10 <!-- style sheet links -->
9627f1774b45 add slide
akahori
parents:
diff changeset
11 <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection">
9627f1774b45 add slide
akahori
parents:
diff changeset
12 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
9627f1774b45 add slide
akahori
parents:
diff changeset
13 <link rel="stylesheet" href="s6/themes/print.css" media="print">
9627f1774b45 add slide
akahori
parents:
diff changeset
14 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection">
9627f1774b45 add slide
akahori
parents:
diff changeset
15
9627f1774b45 add slide
akahori
parents:
diff changeset
16 <!-- JS -->
9627f1774b45 add slide
akahori
parents:
diff changeset
17 <script src="s6/js/jquery-1.11.3.min.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
18 <script src="s6/js/jquery.slideshow.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
19 <script src="s6/js/jquery.slideshow.counter.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
20 <script src="s6/js/jquery.slideshow.controls.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
21 <script src="s6/js/jquery.slideshow.footer.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
22 <script src="s6/js/jquery.slideshow.autoplay.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
23
9627f1774b45 add slide
akahori
parents:
diff changeset
24 <!-- prettify -->
9627f1774b45 add slide
akahori
parents:
diff changeset
25 <link rel="stylesheet" href="scripts/prettify.css">
9627f1774b45 add slide
akahori
parents:
diff changeset
26 <script src="scripts/prettify.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
27
9627f1774b45 add slide
akahori
parents:
diff changeset
28 <script>
9627f1774b45 add slide
akahori
parents:
diff changeset
29 $(document).ready( function() {
9627f1774b45 add slide
akahori
parents:
diff changeset
30 Slideshow.init();
9627f1774b45 add slide
akahori
parents:
diff changeset
31
9627f1774b45 add slide
akahori
parents:
diff changeset
32 $('code').each(function(_, el) {
9627f1774b45 add slide
akahori
parents:
diff changeset
33 if (!el.classList.contains('noprettyprint')) {
9627f1774b45 add slide
akahori
parents:
diff changeset
34 el.classList.add('prettyprint');
9627f1774b45 add slide
akahori
parents:
diff changeset
35 }
9627f1774b45 add slide
akahori
parents:
diff changeset
36 });
9627f1774b45 add slide
akahori
parents:
diff changeset
37 prettyPrint();
9627f1774b45 add slide
akahori
parents:
diff changeset
38 } );
9627f1774b45 add slide
akahori
parents:
diff changeset
39
9627f1774b45 add slide
akahori
parents:
diff changeset
40
9627f1774b45 add slide
akahori
parents:
diff changeset
41 </script>
9627f1774b45 add slide
akahori
parents:
diff changeset
42
9627f1774b45 add slide
akahori
parents:
diff changeset
43 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
9627f1774b45 add slide
akahori
parents:
diff changeset
44 <!--[if IE]>
9627f1774b45 add slide
akahori
parents:
diff changeset
45 <script src="s6/js/jquery.microsoft.js"></script>
9627f1774b45 add slide
akahori
parents:
diff changeset
46 <![endif]-->
9627f1774b45 add slide
akahori
parents:
diff changeset
47
9627f1774b45 add slide
akahori
parents:
diff changeset
48
9627f1774b45 add slide
akahori
parents:
diff changeset
49
9627f1774b45 add slide
akahori
parents:
diff changeset
50 </head>
9627f1774b45 add slide
akahori
parents:
diff changeset
51 <body>
9627f1774b45 add slide
akahori
parents:
diff changeset
52
9627f1774b45 add slide
akahori
parents:
diff changeset
53 <div class="layout">
9627f1774b45 add slide
akahori
parents:
diff changeset
54 <div id="header"></div>
9627f1774b45 add slide
akahori
parents:
diff changeset
55 <div id="footer">
9627f1774b45 add slide
akahori
parents:
diff changeset
56 <div align="right">
9627f1774b45 add slide
akahori
parents:
diff changeset
57 <img src="s6/images/logo.svg" width="200px">
9627f1774b45 add slide
akahori
parents:
diff changeset
58 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
59 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
60 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
61
9627f1774b45 add slide
akahori
parents:
diff changeset
62 <div class="presentation">
9627f1774b45 add slide
akahori
parents:
diff changeset
63
9627f1774b45 add slide
akahori
parents:
diff changeset
64 <div class='slide cover'>
9627f1774b45 add slide
akahori
parents:
diff changeset
65 <table width="90%" height="90%" border="0" align="center">
9627f1774b45 add slide
akahori
parents:
diff changeset
66 <tr>
9627f1774b45 add slide
akahori
parents:
diff changeset
67 <td>
9627f1774b45 add slide
akahori
parents:
diff changeset
68 <div align="center">
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
69 <h1><font color="#808db5">Christieによる<br>ブロックチェーンの実装</font></h1>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
70 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
71 </td>
9627f1774b45 add slide
akahori
parents:
diff changeset
72 </tr>
9627f1774b45 add slide
akahori
parents:
diff changeset
73 <tr>
9627f1774b45 add slide
akahori
parents:
diff changeset
74 <td>
9627f1774b45 add slide
akahori
parents:
diff changeset
75 <div align="left">
9627f1774b45 add slide
akahori
parents:
diff changeset
76 赤堀 貴一
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
77 並列信頼研
10
9627f1774b45 add slide
akahori
parents:
diff changeset
78 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
9627f1774b45 add slide
akahori
parents:
diff changeset
79 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
80 </td>
9627f1774b45 add slide
akahori
parents:
diff changeset
81 </tr>
9627f1774b45 add slide
akahori
parents:
diff changeset
82 </table>
9627f1774b45 add slide
akahori
parents:
diff changeset
83 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
84
9627f1774b45 add slide
akahori
parents:
diff changeset
85 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
86 <!-- === begin markdown block ===
9627f1774b45 add slide
akahori
parents:
diff changeset
87
9627f1774b45 add slide
akahori
parents:
diff changeset
88 generated by markdown/1.2.0 on Ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17]
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
89 on 2019-02-20 15:49:43 +0900 with Markdown engine kramdown (1.17.0)
10
9627f1774b45 add slide
akahori
parents:
diff changeset
90 using options {}
9627f1774b45 add slide
akahori
parents:
diff changeset
91 -->
9627f1774b45 add slide
akahori
parents:
diff changeset
92
9627f1774b45 add slide
akahori
parents:
diff changeset
93 <!-- _S9SLIDE_ -->
9627f1774b45 add slide
akahori
parents:
diff changeset
94 <h1 id="section">目次</h1>
9627f1774b45 add slide
akahori
parents:
diff changeset
95
9627f1774b45 add slide
akahori
parents:
diff changeset
96 <ul>
13
akahori
parents: 12
diff changeset
97 <li>研究目的</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
98 <li>ブロックチェーンとは</li>
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
99 <li>コンセンサスアルゴリズム</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
100 <li>Christieとは</li>
9627f1774b45 add slide
akahori
parents:
diff changeset
101 <li>TopologyManagerの実装</li>
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
102 <li>PCクラスタ上でPaxosの実行</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
103 <li>まとめ</li>
9627f1774b45 add slide
akahori
parents:
diff changeset
104 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
105
9627f1774b45 add slide
akahori
parents:
diff changeset
106
9627f1774b45 add slide
akahori
parents:
diff changeset
107 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
108 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
109 <!-- _S9SLIDE_ -->
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
110 <h1 id="os">OS単位での分散システム</h1>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
111
9627f1774b45 add slide
akahori
parents:
diff changeset
112 <ul>
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
113 <li>コンピュータのデータに不整合は起こり得る. 不整合は誤操作や, 複数人によるデータの同時書き込みによって起こる.</li>
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
114 <li>ブロックチェーンはデータを分散でき, 不整合の検知が可能である.</li>
12
akahori
parents: 10
diff changeset
115 <li>当研究室ではGearsOS, そしてGearsOSに組み込む予定がある分散フレームワークChristieがある.</li>
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
116 <li>Christieにブロックチェーンを実装し, GearsOSに組み込むことで, GearsOS間の分散ファイルシステムを構成することが可能になる. また, 分散ファイルシステムを作らずとも, hash chainとしてデータの不整合を検知できる.</li>
12
akahori
parents: 10
diff changeset
117 <li>よって, Christieにブロックチェーンを実装する.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
118 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
119
9627f1774b45 add slide
akahori
parents:
diff changeset
120
9627f1774b45 add slide
akahori
parents:
diff changeset
121 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
122 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
123 <!-- _S9SLIDE_ -->
9627f1774b45 add slide
akahori
parents:
diff changeset
124 <h1 id="section-1">ブロックチェーンとは</h1>
9627f1774b45 add slide
akahori
parents:
diff changeset
125
12
akahori
parents: 10
diff changeset
126 <p>ブロックチェーンとは分散型台帳技術と呼ばれる. 複数のトランザクションをまとめたブロックをつなげたものを, 台帳と呼ぶ. その台帳をシステムに参加しているノードが保持する技術である.</p>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
127
20
828b13d9c918 update slide
akahori
parents: 19
diff changeset
128 <p>ブロック同士はハッシュでつながっている. そのため, 1つのブロックが変更されると, それ以降のブロックの整合性が保たれないため, そのHashを調べることで不整合を検知できる</p>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
129
12
akahori
parents: 10
diff changeset
130 <div style="text-align: center;">
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
131 <img src="./images/blockchain.svg" alt="blockchain" width="800" />
12
akahori
parents: 10
diff changeset
132 </div>
akahori
parents: 10
diff changeset
133
akahori
parents: 10
diff changeset
134
akahori
parents: 10
diff changeset
135 </div>
akahori
parents: 10
diff changeset
136 <div class='slide '>
akahori
parents: 10
diff changeset
137 <!-- _S9SLIDE_ -->
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
138 <h1 id="section-2">コンセンサスアルゴリズム</h1>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
139
9627f1774b45 add slide
akahori
parents:
diff changeset
140 <ul>
12
akahori
parents: 10
diff changeset
141 <li>コンセンサスアルゴリズムは分散環境上で値を一意に決めるためのアルゴリズムである.
akahori
parents: 10
diff changeset
142 <ul>
akahori
parents: 10
diff changeset
143 <li>Paxos, Raftなどが有名. 簡単に言えば多数決を安全に行うためのアルゴリズム.</li>
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
144 <li>分散環境に故障モデルというものがあって, コンセンサスアルゴリズムでレベルが4段階ある.
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
145 <ul>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
146 <li>故障が起きない.</li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
147 <li>任意のマシンが故障し, メッセージを受信したり送れない可能性がある.</li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
148 <li>メッセージに遅延が発生する. そのため, マシンが壊れたのかどうか処理に時間がかかっているのかわからない.</li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
149 <li>悪意あるマシンがいる可能性がある.</li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
150 </ul>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
151 </li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
152 <li>Paxos, Raftはレベル3で, ノードに裏切り者がいなければ安全に動く.</li>
12
akahori
parents: 10
diff changeset
153 </ul>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
154 </li>
9627f1774b45 add slide
akahori
parents:
diff changeset
155 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
156
9627f1774b45 add slide
akahori
parents:
diff changeset
157
9627f1774b45 add slide
akahori
parents:
diff changeset
158 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
159 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
160 <!-- _S9SLIDE_ -->
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
161 <h1 id="section-3">プライベートブロックチェーンのコンセンサスアルゴリズム</h1>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
162
9627f1774b45 add slide
akahori
parents:
diff changeset
163 <ul>
12
akahori
parents: 10
diff changeset
164 <li>プライベートブロックチェーンは管理者が許可するノードしか参加しない. つまり, レベル3のコンセンサスアルゴリズムで十分.</li>
akahori
parents: 10
diff changeset
165 <li>新しいブロックもパブリックブロックチェーンより早く作れる.</li>
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
166 <li>よってPaxosを実装しました.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
167 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
168
9627f1774b45 add slide
akahori
parents:
diff changeset
169
9627f1774b45 add slide
akahori
parents:
diff changeset
170 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
171 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
172 <!-- _S9SLIDE_ -->
13
akahori
parents: 12
diff changeset
173 <h1 id="paxos">Paxos</h1>
akahori
parents: 12
diff changeset
174
akahori
parents: 12
diff changeset
175 <ul>
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
176 <li>Proposerが値を提案する.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
177 <li>Acceptorが値を決める.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
178 <li>Learnerが決めた値を集計して, 多数決により値を選択する.</li>
13
akahori
parents: 12
diff changeset
179 </ul>
akahori
parents: 12
diff changeset
180
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
181 <div style="text-align: center;">
1bbebae0635c update slide
akahori
parents: 16
diff changeset
182 <img src="./images/paxos-choice.svg" alt="blockchain" width="800" />
1bbebae0635c update slide
akahori
parents: 16
diff changeset
183 </div>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
184
13
akahori
parents: 12
diff changeset
185
akahori
parents: 12
diff changeset
186 </div>
akahori
parents: 12
diff changeset
187 <div class='slide '>
akahori
parents: 12
diff changeset
188 <!-- _S9SLIDE_ -->
10
9627f1774b45 add slide
akahori
parents:
diff changeset
189 <h1 id="christie">Christieとは</h1>
9627f1774b45 add slide
akahori
parents:
diff changeset
190
9627f1774b45 add slide
akahori
parents:
diff changeset
191 <ul>
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
192 <li>分散プログラミングを簡単に書けるjavaのフレームワーク.</li>
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
193 <li>研究室で使っていたAliceの問題点を解消した.
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
194 <ul>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
195 <li>データの取り出しをアノテーションを用いてシンプルに記述することができるようになった. そのため, ソースコードの可視性が上がった.</li>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
196 <li>テストが簡単になった. AliceではLocalDataGearManagerを一つしか持てないため, LocalDataGearManagerの通信のテストが難しかった. Christieは複数のLocalDataGearManagerを持てるようになったため, 1つのアプリケーション内で分散のテストができるようになった.</li>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
197 </ul>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
198 </li>
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
199 <li>Continued based C(CbC)と似た書き方が可能. DataGearという単位でDataの移動ができる.</li>
13
akahori
parents: 12
diff changeset
200 <li>まだAliceから引き継いでない機能でTopologyManagerというものがある. これは, Topologyを構成するための機能.</li>
akahori
parents: 12
diff changeset
201 <li>簡単に言えば, ノード間の配線をしてくれる. 分散環境上で実験を行いたい場合に便利なため, これを実装してからPaxosを実装した.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
202 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
203
9627f1774b45 add slide
akahori
parents:
diff changeset
204
9627f1774b45 add slide
akahori
parents:
diff changeset
205 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
206 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
207 <!-- _S9SLIDE_ -->
9627f1774b45 add slide
akahori
parents:
diff changeset
208 <h1 id="topologymanager">TopologyManagerとは</h1>
9627f1774b45 add slide
akahori
parents:
diff changeset
209
9627f1774b45 add slide
akahori
parents:
diff changeset
210 <ul>
12
akahori
parents: 10
diff changeset
211 <li>TopologyManagerは参加を表明したノード(TopologyNode)を元にTopologyを作る.</li>
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
212 <li>TopologyManagerはdotファイルというものを読み込んで, そのとおりにTopologyを生成する.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
213 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
214
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
215 <pre><code>digraph test {
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
216 node0 -&gt; node1 [label="right"]
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
217 node1 -&gt; node2 [label="right"]
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
218 node2 -&gt; node0 [label="right"]
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
219 }
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
220 </code></pre>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
221
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
222 <div style="text-align: center;">
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
223 <img src="./images/ring.svg" alt="blockchain" width="300" />
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
224 </div>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
225
10
9627f1774b45 add slide
akahori
parents:
diff changeset
226
9627f1774b45 add slide
akahori
parents:
diff changeset
227 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
228 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
229 <!-- _S9SLIDE_ -->
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
230 <h1 id="christie-1">Christieによる実装の利点</h1>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
231
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
232 <p>ブロックチェーンの実装に伴ってわかったChristieの利点を述べる.</p>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
233
9627f1774b45 add slide
akahori
parents:
diff changeset
234 <ul>
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
235 <li>ブロック, トランザクションを送るのが簡単. ChristieはDataGearという単位でデータを保持するため, データ構造に@Messageを付け, putすることでデータの送信ができる.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
236 <li>TopologyManagerでのテストが便利. dotファイルが有れば, TopologyManagerが任意の形でTopologyを作れる. そのため, ノードの配置について理想のテスト環境を作ることができる.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
237 <li>ソースコードの機能ごとにファイルが実装できるため, 見通しが良い. ChristieはCbCのgotoと同じように関数が終わるとsetupによって別の関数に移動する. そのため自然に機能ごとにファイルを作るため, 見通しが良くなった.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
238 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
239
9627f1774b45 add slide
akahori
parents:
diff changeset
240
9627f1774b45 add slide
akahori
parents:
diff changeset
241 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
242 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
243 <!-- _S9SLIDE_ -->
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
244 <h1 id="pcpaxos">PCクラスタ上でのPaxosの実行</h1>
13
akahori
parents: 12
diff changeset
245
16
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
246 <ul>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
247 <li>ブロックチェーンにおいて, 分散環境上でテストしなければいけないのはコンセンサスアルゴリズムである. そのため, Paxosを実装し, 実際の分散環境上で動かした.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
248 <li>評価は値が一意に決まるかどうかである. 値が一意に決まるならば, リーダーがコンセンサスをとっても良いし, ブロックごとにコンセンサスをとっても良い.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
249 <li>今回は単純化のために, 整数でコンセンサスを取る.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
250 <li>また, ノードはproposerが2つ, acceptorが3つ, learnerが1つという構成で実験した.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
251 <li>その結果, 値が一意に決まることがわかった.</li>
22e7e5667b99 update slide
akahori
parents: 13
diff changeset
252 </ul>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
253
9627f1774b45 add slide
akahori
parents:
diff changeset
254
9627f1774b45 add slide
akahori
parents:
diff changeset
255 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
256 <div class='slide '>
9627f1774b45 add slide
akahori
parents:
diff changeset
257 <!-- _S9SLIDE_ -->
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
258 <h1 id="paxos1">Paxos実行結果1</h1>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
259
1bbebae0635c update slide
akahori
parents: 16
diff changeset
260 <div style="text-align: center;">
1bbebae0635c update slide
akahori
parents: 16
diff changeset
261 <img src="./images/paxos1.svg" alt="blockchain" width="800" />
1bbebae0635c update slide
akahori
parents: 16
diff changeset
262 </div>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
263
1bbebae0635c update slide
akahori
parents: 16
diff changeset
264
1bbebae0635c update slide
akahori
parents: 16
diff changeset
265 </div>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
266 <div class='slide '>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
267 <!-- _S9SLIDE_ -->
1bbebae0635c update slide
akahori
parents: 16
diff changeset
268 <h1 id="section-4">まとめ</h1>
21
3776a23274a7 fix slide
akahori
parents: 20
diff changeset
269
10
9627f1774b45 add slide
akahori
parents:
diff changeset
270 <ul>
19
1bbebae0635c update slide
akahori
parents: 16
diff changeset
271 <li>Christieを用いてコンセンサスアルゴリズムのPaxos, ブロック, トランザクション, proof of workも実装した.</li>
1bbebae0635c update slide
akahori
parents: 16
diff changeset
272 <li>これらを繋げてブロックチェーンにできれば, Christieにブロックチェーンが実装できる. パブリックブロックチェーンもプライベートブロックチェーンもどちらも作れる. 2つ作って速度比較も行える.</li>
10
9627f1774b45 add slide
akahori
parents:
diff changeset
273 </ul>
9627f1774b45 add slide
akahori
parents:
diff changeset
274 <!-- === end markdown block === -->
9627f1774b45 add slide
akahori
parents:
diff changeset
275 </div>
9627f1774b45 add slide
akahori
parents:
diff changeset
276
9627f1774b45 add slide
akahori
parents:
diff changeset
277
9627f1774b45 add slide
akahori
parents:
diff changeset
278 </div><!-- presentation -->
9627f1774b45 add slide
akahori
parents:
diff changeset
279 </body>
9627f1774b45 add slide
akahori
parents:
diff changeset
280 </html>