ブロックチェーン技術の詳細
創生学部創生学修課程3年
伊勢田 氷琴
アジェンダ
ブロックチェーン技術誕生の背景
↓
ブロックチェーン技術の概要
↓
技術詳細
↓
具体的な応用
ブロックチェーンとは
「電子署名とハッシュポインタを使用し改ざん検出が容易なデー
タ構造を持ち、且つ、当該データをネットワーク上に分散する多
数のノードに保持させることで、高可用性およびデータ同一性等
を実現する技術を広義のブロックチェーンと呼ぶ。」
-日本ブロックチェーン協会による定義
ブロックチェーンとは
• そもそも暗号通貨の基幹技術
として開発された
• 最初の実装例はBitCoin
• 謎の天才サトシ・ナカモトに
よって2009から運用されてい
る
• 2019/3/15現在、総流通額は
85537507944ドル
=9兆0190億7483万7615円
→通貨をデジタルに実装するた
めに必要な技術として開発され
た
通貨をデジタルに実装するために
• 自分が持っている額以上使えないようにする
→ダブルスペンディングの防止
• 通貨を複製出来ないようにする
→偽造防止
• 他人の通貨を横取りできないようにする
→盗難防止
従来の貨幣システム
貨幣システム
• 通し番号や透かしで偽造防止
• 自分が持ってる以上の額は物
理的に支払い不可能
• 盗難には警察機能で対応
銀行システム
• 中央集権的
• 誰がいくら持っているという
情報を台帳で管理
• 自分の口座にある以上の金額
の使用はシステムが防止
• ハッキングなどを行い、口座
情報を書き換えない限り他人
の金を使うことは出来ない
中央集権型システム
• 絶対的な管理者が全てを管理するシステム
• 単一の主体が全取引を監視し、不正を阻止する
• システムの信頼性は管理者が担保する
• デメリット
→単一障害点が存在する
→取引にファイナリティが存在しない
→単一の管理者に依存する可能性がある
→管理者を信頼できなくても、他に代替案がない
サトシ・ナカモトの問題意識
• 最初のブロックに刻まれたメッセージ
「The Times 03/Jan/2009 Chancellor on brink of second
bailout for bank」
→”2009年3月月曜日、首相は2度目の銀行救済の瀬戸際にいる”
• 銀行システムというシステムが、他の権力の影響を受けている
ことを示唆している
サトシ・ナカモトの問題意識
• 圧倒的な権力を持つ管理者が、取引履歴を操作できる
• 従って、全ての取引にファイナリティが存在し得ない
→自分の資産が寄って立つシステムが、信用上の脆弱性を孕んで
いる
→また、管理者の信頼性に利用者は多額の手数料を払っている
自分の資産を、誰の信頼にも依らず、証明できる方法はないか
ブロックチェーンの特徴
• データの改竄が難しい
→2重支払い
• 暗号によってトランザクションを保護する
→盗窃の防止
• 電子署名と特殊なデータ構造によって資産を証明する
→偽造防止
ブロックチェーンによって
信頼できる第3者がシステムの信頼性を担保する
システム自体が信頼性を担保する
ブロックチェーン技術の3大要素
• データ構造
→取引の真正性を担保する
• ネットワークシステム
→分散型のシステムを構築する
• セキュリティ技術
→取引の信頼性を担保する
コンセンサス・アルゴリズム
マイニング
データ構造
• ブロックチェーンという言葉そのもの
• 取引データを以下のように数珠繫ぎ状につなげていく構造
Block 0 Block 2Block 1 Block 3 Block 4
ネットワークアーキテクチャ
• 単一の主体が全てを管理する✕
• P2P(Peer to Peer)ネットワーク
• 各ノードがシステムを分散させて全
体を維持する
• 各ノードに重要度は無く、1対1で接
続される
セキュリティ技術
• 暗号学的ハッシュ関数
→セキュリティ=匿名性を担保する
• 電子署名
→自らの資産の正当性を証明する
セキュリティ技術
• 暗号学的ハッシュ関数
→セキュリティ=匿名性を担保する
• 電子署名
→自らの資産の正当性を証明する
セキュリティ 暗号学的ハッシュ関数
ハッシュ関数とは、以下の特性を持つ関数のことである
• 衝突耐性
→異なる値を入力すると、必ず異なる値を出力すること
• 秘匿性
→出力から入力を求めることが困難であること
• パズル親和性
→出力から入力を求めるために、膨大な計算量が必要であること
• 決定性
→同じ入力からは必ず同じ出力が得られること
セキュリティ 暗号学的ハッシュ関数
• 例えば、以下のテキストをハッシュ関数(sha256)にかけてみる
と
元の文: “Lasting dream won’t last.”
ハッシュ値:
“a4e834827a07bfd9a8931c91fa74c548101dba5ed2ff507bdb06
85819c0d0ec3 ”
セキュリティー暗号学的ハッシュ値
• 元の文を少しだけ変えてみると
元の文: “Lasting dream won’t last.”
新しい文:“Lasting dream won’t last”
元のハッシュ値:
“a4e834827a07bfd9a8931c91fa74c548101dba5ed2ff507bdb068581
9c0d0ec3”
新たなハッシュ値:
“088709c42ee341b2288f0bb0daee251a4d70e110500d56b5f4c9a9d
157fe5dc2 ”
全然違う!
セキュリティ技術
• 暗号学的ハッシュ関数
→セキュリティ=匿名性を担保する
• 電子署名
→自らの資産の正当性を証明する
先に公開鍵暗号方式の説明をする
セキュリティー公開鍵暗号方式
• 通常、データを暗号化する鍵とデータを複合する鍵は同じであ
る。このような方式を共通鍵暗号方式という
→共通鍵暗号方式では、そもそも鍵を共有することが困難という
鍵配送問題がある
• 公開鍵暗号方式では、2本の鍵を用意し、どちらの鍵でも暗号
化と複合の両方を行うことができるようにする
• 主に暗号化に使う鍵を公開鍵
• 主に複合に使う鍵を秘密鍵という
セキュリティー公開鍵暗号方式
例 仮定
• アリスが、ボブに秘密の文書を送る必要があるとする
• しかし、二人の間の通信路はイブによって全て傍受されている
とする
セキュリティー公開鍵暗号方式
①アリスはボブの公開鍵を手に入れ、その鍵をもって文書を暗号
化する(公開鍵は誰に見られても良い)
②暗号化された文書をボブへ送付する
③ボブは自らの秘密鍵でアリスからの文書を複合する
セキュリティー公開鍵暗号方式
①アリスはボブの公開鍵を
手に入れる
②ボブの公開鍵を
使って文書を暗号化
する
③暗号文を送付する
???
114514114514
114514114514
114154114514
①ボブは自分の秘密鍵で暗
号文を複合する
イブ
ボブアリス
セキュリティー電子署名
• 電子署名は、先程の公開鍵暗号方式を逆に利用し、ある文書が製作者に
よって送られたもの(或いは作成されたもの)であることを証明する技術で
ある
→情報の真正性を証明する
• 以下のことに注意する
→秘密鍵と公開鍵の機能は等価である
→即ち、公開鍵で暗号化したものは、秘密鍵で複合できるように、
秘密鍵で暗号化したものは、公開鍵で複合できる
→複合はペアの鍵同士でのみ可能
→同じハッシュ関数であれば、同じ入力には同じ出力を返す
セキュリティー電子署名
• 仮定
ボブは、アリスが送った文章が、確かにアリスから送られたものなのか確
認したいとする
• 手順
①アリスは、ボブに送る文書に、元の文書をハッシュ化したメッセージダ
イジェストを作成し、自分の秘密鍵で暗号化した値を一緒に送信する
②ボブは、アリスの公開鍵を手に入れる
③メッセージダイジェストをアリスの公開鍵で複合する。この値をXとす
る
④ボブは元の文章をハッシュ化し、メッセージダイジェストを作成する。
この値をYとする
⑤XとYを照合し、合致すればアリスが送ったものと証明できる
セキュリティー電子署名
ボブアリス
①アリスはメッセージ
ダイジェストを作成
②ボブの公開鍵を
使って文書を暗号化
する
③ボブはアリスの公開
鍵を入手する
②ボブの秘密鍵でを
使って文書を複合する
③自分でメッ
セージダイジェ
ストを作成
③メッセージダイジェス
トをアリスの公開鍵で複
合し、自分の作成したも
のと比較する
元の文書+メッセー
ジダイジェストを
送信
sha256
sha256
ブロックチェーン技術の3大要素
• データ構造
→取引の真正性を担保する
• ネットワークシステム
→分散型のシステムを構築する
• セキュリティ技術
→取引の信頼性を担保する
コンセンサス・アルゴリズム
マイニング
データ構造ートランザクション
• トランザクションとは、1つの取引のことを指す
• 例えば下図のように、AさんからBさんへ1BTC送ることを、1
トランザクションとして扱う
1
BTC
アカウントベースのトランザクション
• 銀行などのシステムはアカウントベースで金の流れを管理する
→AからBへの送金は、Aの残高をx円減らし、Bの残高をx円プラ
するといった管理を行う
→このシステムには「書き換える管理者」への信頼性が必要なた
め、ビットコインの理念に合致しない…
※ブロックチェーン技術の応用の一つである、イーサリアムはブロックチェーン技術とアカウント
ベースの管理を両立させている
ビットコインのトランザクション
• ビットコインでは、資金の流れを補足し、資産の正当性を証明
するために、UTXOモデルと電子署名を使用する
• ビットコインにおける送金は、
①その資金はどこから来たのか →UTXOモデル
②その資金を使う正当性はあるのか →電子署名
この2点さえ完全に補足できれば資金の移動の補足と正当性を証
明できると考える
UTXOモデル
• 例えばAさんからBさんへの送金を考える
• Aさん資産は3BTCで、1BTCをBさんへ送金する
• このとき、1BTCを残して送金するのではなく、残った2BTCは
再び自分に送金する
1
BTC
2
BTC
UTXOモデル
• そもそもビットコインはアカウントベースではないため、資金
を「残す」ということが出来ない。そもそも残しておくための
アカウントが存在しない
• 全ての資産はアカウントではなく、秘密鍵に紐付けられている
• そのため、全資金を1度のトランザクションで使い切る必要が
ある
• このとき、残った資金のことを、未使用(送金に使われていな
い)の出力という意味でUTXOと呼ぶ
ビットコインのトランザクション(再掲)
• UTXOモデルとは、資金の流れを以下の方法によって補足する
技術である(UTXO:Unspent Transacion Output)
①その資金はどこから来たのか←これは解決
②その資金を使う正当性はあるのか
この2点さえ完全に補足できれば資金の移動が可能になる
トランザクション
• 資金の正当性とは、その資金が、無から生まれたのではなく、
確実に誰かから送金されてきたものであると証明しなければな
らない
• このことを示すには、送金者が「確実に送金した」ことを証明
する必要がある
→電子署名を確認
トランザクションの例
• ここで、AさんからBさんへ送金し、BさんがさらにCさんに送
金する例を考える
• Aさんの資産は3BTC、Bさん、Cさんは初めは0BTCとする
• Aさんの資産は以前Tさんから送られてきたものとする
トランザクション
Aさん Bさん Cさん
1BTC
+A署名
Aさんの
署名は正
当!
Bさんの
署名は正
当!
1BTC
+B署名
2BTC
+署名
3BTC
+T署名
Tの署名の正当性が確認
できれば送金できる
Aの署名の正当性が確認
できれば送金できる
・・・
Bの署名の正当性が確認
できれば送金できる
送って
ヨシ!
送って
ヨシ!
トランザクション
• このように、前の所有者からの電子署名を確認できれば送金が
可能になる
• 自分の資産の送金可能性は、前の所有者から確実に自分に資産
が受け継がれたことを証明する電子署名にかかっている
出典 “Bitcoin: A Peer-to-Peer Electronic Cash System”
データ構造ートランザクション
• 実際のトランザクションの中身
バージョン 送金先数 受信先数
トランザクションの入力リスト
トランザクションの出力リスト
ブロックの高さ
データ構造ーブロックチェーン
• これまでトランザクションの仕組みを述べたが、単にトランザ
クションを無造作に記録しただけでは2重支払いを防ぐことが
出来ない
• 2重支払いとは、同じコインを別の支払いに当てることであり、
いわばコインの偽造である
→この問題は、トランザクションの記録だけでは「時系列」を管
理できていないことに原因がある
→「以前」取引に使ったコインを参照し、既に使われていれば、
そのコインを使わせないといった仕組みを実装するだけで防ぐこ
とができる
データ構造ーブロックチェーン
• トランザクション時系列を管理するための台帳がブロック
チェーンである
→ブロックチェーンに格納されたトランザクションのみを正当な
取引として認証する
→トランザクションをブロックチェーンに格納する仕組みをマイ
ニングと言う
データ構造ーブロックチェーン
• ブロックチェーンの中身
前のブロックヘッダのハッシュ
ブロックヘッダ
タイムスタンプ ナンス
マークルツリーのルートハッシュ
トランザクション1
トランザクション2
・
・
・
難易度
データ構造ーブロックチェーン
• ブロックチェーンはトランザクションの正当性を証明する重要な仕
組みである
• 従って、攻撃者が自分に有利なトランザクションを含むチェーンを
勝手に繋げることが出来てしまう場合、信頼性に致命的な影響を与
える
• そのため、ビットコインでは2つの防止策を討っている
①チェーンを複製する難易度を上げる
②最長のチェーンを正当なものと見なし、当該チェーンに含まれな
いトランザクションを無効化する
→②を特にコンセンサス・アルゴリズムという
②最長のチェーンを正当なものと見なす
攻撃者は既に支
払った
114514BTCを取
り戻すTxを含める
他のマイナーには
チェーンが分岐し
たように見える
どっちが本物?
こっちのほうが長
いから本物やな
Block 0 Block 2Block 1 Block 3 Block 4
Block 2 Block 3
Block 5・・・
Block 5・・・
長いチェーン作れ
んかった…
攻撃者が成功する場合
Block 0 Block 2Block 1
Block 1 Block 2
・・・
攻撃者は自分が既
に支払った
114514BTCを取
り戻すTxを含める
Block 3 Block 4
こっちのほうが
長いな
どっちが本物?
やったぜ
Block 6・・・
Block 4
攻撃者が成功する場合
• こういった攻撃が成功する確率は、攻撃者が悪意のあるトラン
ザクションを含めたチェーンを用意し始めた地点で、メインの
チェーンからどれだけ離れているかに依存する
• 例えば、下の例の場合、攻撃者が3つ目のブロックを作成して
いるとき、メインのチェーンでは既に5個目を作成中であるた
め、2個遅れている
Block 0 Block 2Block 1 Block 3 Block 4
Block 1 Block 2
Block 5・・・
Block 3・・・
攻撃者が成功する場合
• 攻撃者がメインのチェーンに比べてz個のブロック遅れをとっ
ているとき、チェーンが覆る確率qzは
p=誠実なノードがブロックを見つける確率
q=攻撃者がブロックを見つける確率
とすると
if p ≤ q qz=1
if p ≥ q qz= ൗ
q
p
z
と表すことができる
攻撃者が成功する場合
• q=0.1のとき、ブロックが覆る可能性が十分小さくなるには、z
が高々10程度あればよい
• これはつまり、10個もブロックの個数が離れればチェーンが覆
る確率はほぼ0になることを示している
• 実際に、ビットコインでは上にブロックが10個積まれた地点で
トランザクションが確定する
• しかし、ブロックを作るのが容易では簡単にチェーンが覆って
しまう=qの値が大きくなる
→ブロックを繋げる作業にある程度の負荷を課す
①チェーンを複製する難易度を上げる
• チェーンの偽造を難しくさせる仕組
みはここにある
• これは、チェーンを繋げるマイニン
グという仕組みに組み込まれている
• 前のブロックヘッダのハッシュを次
のブロックび含めることで、チェー
ンが確実に接続されていることが確
認できる
• この検証は誰でも行うことができる
前のブロックヘッダのハッシュ
ブロックヘッダ
タイムスタンプ ナンス
マークルツリーのルートハッシュ
トランザクション1
トランザクション2
・
・
・
難易度
マイニング
• チェーンを繋げる作業のこと
• ナンスという値を最初に見つけたマイナーがブロックを繋げる
ことができる
• ブロックを繋いだマイナーにはビットコインが配られる
• これがビットコインのシステムを維持するインセンティブとな
る
→大きく分けて、PoWとPoSという2つの方式がある
マイニングーPoW
①マイナーはブロックヘッダにnonceを足し合わせた値を作る
②その値をハッシュ関数に通し、ハッシュ値を得る
③このハッシュ値が、ある一定の値以下ならその値をチェーンを
繋げることができる
④条件を満たさなければ、nonceの値を変えて①に戻る
→ハッシュ関数の性質上、nonceの値+ブロックヘッダのハッ
シュ値は簡単に得ることができ、条件を満たしたことを他のノー
ドが検証できる
マイニングーPoW
(ブロックヘッダ+
nonce)=X
Y=ハッシュ関数(X)
Y<Difficulty
成功 報酬ゲット
Nonce + 1
No
Yes
条件を満たすnonce=
ゴールデンノンスは
いつ出現するか分からない
(=値を変えて総当りしているため
確率的に出現する)
それでも計算を続ける様を
マイニング=採掘
になぞらえている
マイニングーPoW
• 基本的には堅牢な仕組みだが、
①51%攻撃を受ける可能性がある
②エネルギーが過剰に使われてしまう
というデメリットがある
※51%攻撃とは、全体の51%以上のCPUパワーを持つことがで
きれば、理論的にチェーンを覆すことができることをいう
マイニングーPoS
• 先に述べたデメリットを軽減するため、PoS:Proof of Stake(資
産の証明)という方式が考え出された
• これはブロックを繋ぐ権利を全ノード中から確率的に選ぶとい
う方式である
• 資産が多いほどブロックを繋ぐ権利を得やすい
→この方式はなぜ上手く行くのか?
マイニングーPoS
• 一般的に、PoSアルゴリズムのとき、51%攻撃を行うには、相
当量の資産を保持する必要がある
• 攻撃が加えられたことが明らかになれば、貨幣の信用は無くな
り、当該通貨が暴落することは確実である
• その結果、自分の資産が目減りすることになるので、資産を多
く持つノードは誠実に行動するだろう、という理論に基づいて
いる
→PoSは経済的インセンティブを巧みに使ったマイニング方法
まとめ
• ブロックチェーンは貨幣のデジタルな実装のために
窃盗・偽造・ダブルスペンディングの防止
といった機能を兼ね備えている
• 上記の昨日の実装のために
電子署名・暗号学的ハッシュ関数・
P2P・特殊なデータ構造
といった要素技術が使用されている
→これらの技術はかなり前から存在するものだが、その組み合わ
せ方に妙がある
まとめ
• このような性質を一般的に言えば、ブロックチェーン技術は、
これまで信頼できる第3者の存在が無しには担保不可能であった
情報の、
機密性・完全性・真正性・信頼性・追跡可能性
システムの、
可用性
を管理者の存在なしに、システム自体によって担保できる技術と言
える
このことは非常に応用の効く性質であり、目下IoTや電子投票など、
上記の性質を満たす必要のある数多くのシステムへの応用実験がな
されている
最後に
• ブロックチェーンは世の中を変えてしまうのか?
→その答えは恐らくNoである
• 先に挙げた通り、ブロックチェーン技術を取り入れることに
よって得られるメリットは、情報の
機密性・完全性・真正性・信頼性・追跡可能性・可用性
などを、管理者の存在なしに確保できる技術である
最後に
• しかし、これらのメリットは既に管理者の存在によって我々に
もたらされているものであり、その管理者が居なくなったとし
ても、我々の享受できるものは変わらない
• よって、ブロックチェーン技術は我々の目に見える場所ではな
く、目には見えない裏方の技術として発展していくと考えられ
る
→よく使われるアナロジーはTCP/IP
→インターネットで情報を送受するプロトコルなど、普段は意識
する必要がないため
参考文献
• Satoshi Nakamoto(2009),” Bitcoin: A Peer-to-Peer Electronic
Cash System”
• 岸上 順一 , 藤村 滋 , 渡邊 大喜 , 大橋 盛徳 , 中平 篤(2017),「ブロックチェーン技
術入門」
• 松浦健一郎,司ゆき(2018),「仮想通貨の作り方」
• 結城浩(2017),「暗号技術入門」
• 野口悠紀雄(2018),「ブロックチェーン革命」
• Bitcoin.org,「ビットコインの仕組み」,
https://bitcoin.peryaudo.org/design.html (参照 2020/3/19)
• @flare(Qiita)(2019),「ビットコイン技術入門 2/3(データ構造・マイニング
編)」,
https://qiita.com/flare/items/54579a31204bb785c9dd#%E6%9A%97%E5%8F
%B7%E5%AD%A6%E7%9A%84%E3%83%8F%E3%83%83%E3%82%B7%E3%83
%A5%E9%96%A2%E6%95%B0 (参照 2020/2/19)

BlockChain Introduction