ブロックチェーンに
冷水をぶっかける
HN: Bizuayeu
ブロックチェーンとは何か?
• ブロックと呼ばれるデータ群を時系列順に
接続するというデータ構造
• ブロックの内部には、電子署名付きの
トランザクションが含まれている
• ブロックには一つ前のブロックのハッシュ値も含まれるため、
あるブロックを改竄すると
以降のブロックのハッシュ値に矛盾が生じる
(=過去のトランザクションの改竄は基本的に不可能)
• 仮想通貨として話題のビットコインは
ブロックチェーンで運営されている
ブロックチェーンのイメージ
任意の値任意の値任意の値任意の値
(nonce)(nonce)(nonce)(nonce)
任意の値任意の値任意の値任意の値
(nonce)(nonce)(nonce)(nonce)
任意の値任意の値任意の値任意の値
(nonce)(nonce)(nonce)(nonce)
【参照】 http://www.virtualcurrency.jp/?p=315
何故ブロックチェーンが注目されるのか?:P2Pデータ管理
• データ管理に中心となる調停者が不要(=P2Pデータ管理)
① ネットワークに参加する全てのノードが
ブロックチェーンを保持する
② トランザクションは全てのノードにブロードキャストされる
③ ブロックの内部に任意の値(=nonce)を持たせ、
かつハッシュ値に条件を設定することで、
ハッシュ計算に負荷を与える
(例:ハッシュ値の頭13桁は全て0にならないといけない)
④ 一定のタイミングでハッシュ計算を行い、
条件を満たすハッシュ値を最初に見つけたノードが
ブロックをコミットし、全ノードにコミット済ブロックを
ブロードキャストする
P2Pデータ管理イメージ
【参照】 http://www.slideshare.net/11ro_yamasaki/bitcoin2 ← オススメ!
何故ブロックチェーンが注目されるのか?:データの改竄に強い
• データの改竄に強い
→ トランザクションに電子署名が付いているため、
秘密鍵が盗まれない限り、なりすましが不可能
→ 残高がバランスしないトランザクションは
個々のノードで否認される前提となっている
→ どのノードがブロックをコミットできるか分からないため、
ノード自体が不正を行うリスクが抑えられている
→ ハッシュのチェーン構造により、
過去のトランザクションの改竄が現実的ではない
ブロックチェーンによるP2Pデータ管理の弱点
• トランザクションの確定に時間が掛かる(10分~∞)
• データ管理の質を上げるためには多数のノードが必要
→ 誰がどういったインセンティブでノードに参加するのか?
• P2Pデータ管理にコストメリットがあるとは断言できない
→ 電子署名付きのトランザクションという重いデータで構成された
ブロックチェーンを全ノードが運用する
(ノードが消費するリソースは考慮されていない!)
• パフォーマンスを向上させるためには
プロトコルレベルの処理を書き換える必要がある
→ スケールアウトできる仕組みにはなっていない
→ 全ノードのプロトコルを同時にアップデートできるのか?
(特にセキュリティのHotFixとかはエコシステムへの負担が大)
• 残高がバランスしないトランザクションを認めるには
特別ルールが必要(例:ビットコインのマイニング)
で、頑張ってブロックチェーン使う意味ってあるんだっけ?
• トランザクションの確定に時間が掛かっても
問題無いサービスにしか利用できない
(もしくはリスクを肩代わりする必要がある)
• ノードまで含めたエコシステムを形成するのが面倒臭い
• 形成されたエコシステムに手を入れるのも面倒臭い
• エコシステムを集中管理できるように試みると
結局それなりの体制が必要になる(=コストが掛かる)
⇒ ブロックチェーンがフィットする
シチュエーションって実は少ないのでは?
何故ブロックチェーンが注目されるのか?:P2Pデータ管理
• データ管理に中心となる調停者が不要(=P2Pデータ管理)
① ネットワークに参加する全てのノードが
ブロックチェーンを保持する
② トランザクションは全てのノードにブロードキャストされる
③ ブロックの内部に任意の値(=nonce)を持たせ、
かつハッシュ値に条件を設定することで、
ハッシュ計算に負荷を与える
(例:ハッシュ値の頭17桁は全て0にならないといけない)
④ 一定のタイミングでハッシュ計算を行い、
条件を満たすハッシュ値を最初に見つけたノードが
ブロックをコミットし、全ノードにコミット済ブロックを
ブロードキャストする
冗長性が必要なら
クラウドDBで良いじゃん!
何故ブロックチェーンが注目されるのか?:データの改竄に強い
• データの改竄に強い
→ トランザクションに電子署名が付いているため、
秘密鍵が盗まれない限り、なりすましが不可能
→ 残高がバランスしないトランザクションは
個々のノードで否認される前提となっている
→ どのノードがブロックをコミットできるか分からないため、
ノード自体が不正を行うリスクが抑えられている
→ ハッシュのチェーン構造により、
過去のトランザクションの改竄が現実的ではない
クライアントで
FIDO認証すれば良いじゃん!
そんなバリデーションなら
DBでも可能っす
ブロックチェーンの本質
突き詰めて言ってしまえば…
• 従来型のDB
→ 悪人が管理に紛れ込まないことが前提
→ 悪人対策のセキュリティにコストが嵩む
→ パフォーマンスを向上させるのが比較的容易
• ブロックチェーン
→ 悪人が管理に紛れ込むことが前提
→ 悪人対策がプロトコルレベルで盛り込まれている
→ パフォーマンスを向上させるのが難しい
どちらの極からスタートして現実との折り合いを付けるのか?
折り合いを付けるためには、IT技術と見識の両方が必要

ブロックチェーンに冷水をぶっかける