Copyright © 2016 TIS Inc. All rights reserved.
5分でわかる
ブロックチェーンの基本的な仕組み
嶋村 亮
2016年2月17日
TIS株式会社
5分でわかる
1自己紹介
嶋村 亮
Shimamura Ryo
@cooklecurry
2本日のテーマ
ブロックチェーン
の基本的な仕組み
3ブロックチェーンとは
不正が難しい取引台帳
ブロックチェーンはどういう技術?
4不正とは
取引の改竄 二重取引
A
C
B
10コイン
10コイン
10コイン
A
C
B
×
5ブロックチェーンの仕組み
データ構造
+
データの管理方法
6ブロックチェーンの仕組み
データ構造
+
データの管理方法
7データ構造
ブロック
取引:A → B
取引:C → D
取引:E → F
一定時間内に発生した取引をまとめる
8データ構造
ブロック1つ前のブロック
取引:A → B
ハ
ッ
シ
ュ
取引:C → D
取引:E → F
取引:P → Q
ハ
ッ
シ
ュ
取引:R → S
取引:T → U
1つ前のブロックのハッシュも含める
9データ構造 -ハッシュ-
4ec288e11f533dba63ff3d0a842d4ebe
取引:P → Q
ハ
ッ
シ
ュ
取引:R → S
取引:T → U
元のデータを要約した短いデータ
10データ構造 -ハッシュ-
4ec288e11f533dba63ff3d0a842d4ebe
cb32411e38910bfca6e5f0b89b0f2733
取引:P → Q
ハ
ッ
シ
ュ
取引:R → S
取引:T → U
取引:P → Q
ハ
ッ
シ
ュ
取引:R → M
取引:T → U
元のデータを変更すると変わる。
11データ構造
過去 最近
各ブロックは時系列でつながっている
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
取
引
12データ構造
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
ハ
ッ
シ
ュ
取
引
ハ
ッ
シ
ュ
取
引
改竄
改竄するには後続ブロックも作り直し
13データ構造
過去のブロックの改竄は大変
14データ構造
ブロック
+
チェーン(鎖)のように伸びる
ブロックチェーン
15データ構造
1つ前の取引 新しい取引
内容:A → Bハ
ッ
シ
ュ Bの公開鍵
Aの署名
内容:B → Cハ
ッ
シ
ュ Cの公開鍵
Bの署名
取引データもつながっている
16データ構造 -公開鍵暗号-
秘密鍵
自分だけが
知っている鍵
公開鍵
他人に
公開している鍵
対応する2つの鍵による暗号方式
17データ構造
1つ前の取引 新しい取引
内容:A → Bハ
ッ
シ
ュ Bの公開鍵
Aの署名
内容:B → Cハ
ッ
シ
ュ Cの公開鍵
B秘密鍵で署名
新しい取引は秘密鍵の所有者が作成
18疑問
データ構造を守らなければ
不正ができるのでは?
19ブロックチェーンの仕組み
データ構造
+
データの管理方法
20データの管理方法
普通のシステム ブロックチェーン
データはネットワークの各参加者が管理
21データの管理方法
参加者の誰かが新しいブロックを配布
22データの管理方法
各参加者は検証後、各自データに追加
+
+
+
+
+
23データの管理方法
大きく2つの方法
誰が新しいブロックを配布するか?
24データの管理方法
Proof of Work
25データの管理方法 - Proof of Work -
000000088d3a603a6dddeba052aa0af
ハ
ッ
シ
ュ
取
引
+
新しいブロックに追加すると、0から始まるハッシュ
になるようなデータを求めなさい。
問題
計算を早く解いた参加者が配布
26データの管理方法 - Proof of Work -
多くの電気と時間が必要
27データの管理方法
Proof of Stake
28データの管理方法 - Proof of Stake -
A
D
C
B
コイン保有割合から選ばれた参加者が配布
29
新しいブロックに
含まれる取引
A → B
過去のすべての取引
OK
NG
(二重取引)
C → D
B → P
B → Q
E → F
・
・
データの管理方法
過去のすべての取引データで検証
30データの管理方法
まだ確定していない
31
ブロック
データの管理方法
ブロック
ブロック
ブロック
? or ?
チェーンは分岐することがある
32データの管理方法
ブロック ブロック ブロック
ブロック ブロックブロック ブロック
ブロック
一番長いチェーンを正とする
33データの管理方法
ブロック ブロック ブロック
ブロック ブロックブロック ブロック
ブロック
仮に3つブロックがつながったら
正しいチェーンとした場合
他の分岐したチェーンは捨てられる
34データの管理方法
参加者のチェーンの様子
35データの管理方法
A
B
C
36データの管理方法
未確定データ
A
B
C
37データの管理方法
未確定データ
A
B
C
38データの管理方法
未確定データ
A
B
C
39データの管理方法
確定データ 未確定データ
A
B
C
40データの管理方法
確定データ 未確定データ
A
B
C
41データの管理方法
確定データ 未確定データ
A
一時的に参加者間はデータ不整合
B
C
42データの管理方法
確定データ 未確定データ
A
一時的に参加者間はデータ不整合
B
C
43データの管理方法
確定データ 未確定データ
A
一時的に参加者間はデータ不整合
B
C
44データの管理方法
確定データ 未確定データ
A
最終的に1つのデータに収束
B
C
45まとめ
データ構造
+
データの管理方法
不正が難しい取引台帳
THANK YOU

5分でわかるブロックチェーンの基本的な仕組み

Editor's Notes

  • #2 それでは5分でわかるブロックチェーンの基本的な仕組みについて発表したいと思います(next)
  • #3 F営1の嶋村です。(next)
  • #4 さっそく本題に入ります。(next)
  • #5 ブロックチェーンとはどういう技術かというと不正が難しい取引台帳を実現する技術になります。使い方によっては誰にとっても不正が難しい取引台帳になりますのでビットコインのような仮想通貨の取引に使われています。(next)
  • #6 ここでいう不正とは「取引の改竄」と「二重取引」になります。(next)
  • #7 では、どのようにして不正が難しい取引台帳を実現しているかというとデータ構造とデータの管理方法で実現しています。(next)
  • #8 まずはデータ構造から見ていきます。(next)
  • #9 ブロックチェーンでは一定時間内に発生した取引データをまとめてブロックにします。(next)
  • #10 このブロックには時系列で1つ前のブロックのハッシュも含めます。(next)
  • #11 ハッシュというのは元のデータを要約した短いデータです。(next)
  • #12 元のデータを少しでも変更すると、ハッシュも変わるという特徴があります。(next)
  • #13 この特徴によって 各ブロックは時系列で1つ前のブロックとつながっていますので、(next)
  • #14 改竄するには すべての後続ブロックの作り直しが必要になります。(next)
  • #15 過去のブロックになるほど改竄は大変になります。(next)
  • #16 このようにブロックがつながって鎖(チェーン)のように伸びていくのでブロックチェーンと言われています。(next)
  • #17 さきほどのブロックに含まれていた取引データもつながっています。(next)
  • #18 取引データにはハッシュに加えて公開鍵暗号という技術が使われています。これは 秘密鍵で暗号化したデータは 対応する公開鍵でしか複合化できない という特徴があります。(next)
  • #19 この特徴を用いて 新しい取引は 既存の取引に含まれる公開鍵に対応する秘密鍵を持っている人しかできない とすることで 新しい取引が有効かどうか確認ができます。(next)
  • #20 ですが、データ構造をまもらなければ不正ができるのではないか、という疑問がでてきます。(next)
  • #21 そこで次にデータの管理方法を見ていきます。(next)
  • #22 ブロックチェーンでは管理者がデータを一元管理しているわけではなくて、ネットワークの参加者が各自管理しています。そのため改竄するには各参加者のデータを改竄する必要があるため不正が難しくなっています。(next)
  • #23 新しい取引の登録には参加者の誰かが新しいブロックを配布して、(next)
  • #24 各参加者はブロックを検証後、問題がなければ各自データに追加します。(next)
  • #25 では、誰が新しいブロックを配布するのかというと、大きく2つの方法があります。(next)
  • #26 1つは Proof of Work と呼ばれます。(next)
  • #27 この方法では新しいブロックに関する計算を早く解いた参加者が配布します。Bitcoinで使われています。(next)
  • #28 この方法は権利を得る計算のためだけに 多くの電気と時間が必要になる という問題があります。(next)
  • #29 その問題点の改善のために考えられたのが Proof of Stake になります。(next)
  • #30 この方法では「ブロックチェーンで取引されるコインの保有割合に応じて選ばれた参加者」が配布します。このようにして誰が配布するか決定します。(next)
  • #31 さて、新しいブロックが配布されると 各参加者は検証をします。 各参加者は過去のすべての取引データを持っていますので、新しいブロックに含まれる取引の検証ができます。二重取引もここで検知できます。検証に問題がなければ 各自、新しいブロックを登録します。(next)
  • #32 ですが まだデータが確定したわけではありません。(next)
  • #33 なぜかというと、複数の参加者が同時に計算が終わるなどによって 新しいブロックが同時に配布されることがあります。 各参加者はどちらのブロックが正しいか判断できません。 そのため、先に受け取ったほうを正とするものの両方のブロックを登録し チェーンが分岐します。(next)
  • #34 その後、あとに続くブロックが一番長いチェーンを正とします。(next)
  • #35 正しいチェーンを決めたら ほかの分岐したチェーンは捨てられます。 仮にブロックのあとに3つブロックがつながったら正とする場合、下のチェーンが残ります。(next)
  • #36 このようなブロックの管理を各参加者が実施しています。 例えば3人の参加者のチェーンの様子を見てみるとこんなイメージです。(next)
  • #37 (next)
  • #38 ブロックが配布されてきます。(next)
  • #39 (next)
  • #40 (next)
  • #41 3つブロックが続きましたので 1つ目のブロックは確定データになります。(next)
  • #42 同様に、2つ目のブロックは緑のブロックが正になり、紫のチェーンは捨てられます。(next)
  • #43 一時的に(next)
  • #44 参加者間のデータ不整合は(next)
  • #45 ありますが(next)
  • #46 最終的に1つのデータに収束していきます。(next)
  • #47 まとめるとブロックチェーンではこれらの仕組みで 不正が難しい取引台帳を実現しています。(next)
  • #48 以上、簡単ですが ブロックチェーンの基本的な仕組みでした。(next)