Slide 1

Slide 1 text

ブロックチェーン入門 意外と知らないブロックチェーンのしくみ 近畿大学産業理工学部  森 啓輔

Slide 2

Slide 2 text

今日の流れ

Slide 3

Slide 3 text

今日の内容 1. ビットコインと仮想通貨 2. ブロックチェーンとは何ぞや 3. ブロックチェーンでできること 4. ブロックチェーン開発をはじめてみよう 5. 質疑応答 3

Slide 4

Slide 4 text

ビットコインと仮想通貨

Slide 5

Slide 5 text

仮想通貨持ってるひと

Slide 6

Slide 6 text

ビットコインとは 6     元祖・仮想通貨 2008年 サトシ・ナカモトが論文を発表(後述) 2010年 ビットコインが初めて実用的に使われる (ピザ1枚=1万BTC≒70億円!) 2014年 マウントゴックス事件 マウントゴックスのサーバーがサイバー攻撃を受け、     ビットコイン約75万BTC(当時のレートで約480億円)と 顧客がビットコインの売買の資金として預けていた現金28億円が消失。

Slide 7

Slide 7 text

仮想通貨の特徴 7    支払い手段として誰にでも何にでも使える    リアルマネーではない    コンピュータ上に記録されていて、移動できる    レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン )

Slide 8

Slide 8 text

仮想通貨の特徴 8    支払い手段として誰にでも何にでも使える 日本円と同じように、商品の代金やサービスを受けた対価として 仮想通貨で支払いができる。 ビットコインで支払いができる店舗(例)

Slide 9

Slide 9 text

仮想通貨の特徴 9    支払い手段として誰にでも何にでも使える    コンピュータ上に記録されていて、移動できる 仮想通貨は実体がない ”データ” なので、 PCやスマートフォン上で記録、移動される。 PCやスマートフォンに、”ウォレット” とよばれる アプリをインストールして仮想通貨を保管。 ネットバンキングと同じような感覚で送金できる ビットコインのウォレットには ”アドレス” という口座番号のようなものが ついていて、送金したい時は相手のアドレスを宛先として送金をする。

Slide 10

Slide 10 text

仮想通貨の特徴 10    支払い手段として誰にでも何にでも使える    レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン ) 交換業者を通じて、仮想通貨を円やドルと交換できる。 → FXのような為替取引と同じ感覚 仮想通貨交換業者(一部) bitFlyer (bitflyer.com) Zaif (zaif.jp) coincheck (coincheck.com) bitbank (bitbank.cc) ほか12社(2018.5現在)

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

仮想通貨の特徴 12    支払い手段として誰にでも何にでも使える    リアルマネーではない 日本通貨でも、外国通貨でもない。 円でもないしドルでもないし、ユーロでもない。 単位の話・・・ ビットコイン(BTC) イーサリアム(ETH)

Slide 13

Slide 13 text

仮想通貨の特徴(まとめ) 13    支払い手段として誰にでも何にでも使える    リアルマネーではない    コンピュータ上に記録されていて、移動できる    レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン ) もっと詳しく …… 改正資金決済法 1号仮想通貨 2号仮想通貨 で検索!

Slide 14

Slide 14 text

ちょっと休憩&質問タイム

Slide 15

Slide 15 text

ブロックチェーンとは

Slide 16

Slide 16 text

ブロックチェーンとは ビットコインなどの仮想通貨を支える技術 2008年にサトシ・ナカモトが論文を発表(日本語訳もある) 16    特定の管理者がいない分散ネットワーク    ブロックの内容が改ざん不可能    ビザンチン問題の現実的な解決策    時間軸の再発明

Slide 17

Slide 17 text

タイムスタンプ 日付や時刻を記した文字列(例:2018-06-15 17:20 +09) 17 時間軸 ¥ 現金を渡す物理的な行為が発生 → 行為が発生した時刻はただ1つに決まる   現金を渡した事実をなかったことにできない 領収証の発行=タイムスタンプ < 物理的タイムスタンプ >

Slide 18

Slide 18 text

タイムスタンプ 18 Aさんの時間軸 ? < コンピュータ上のタイムスタンプ > コンピュータ上の時刻と現実世界の時刻は必ずしも一致しない → 支払いを行なった事実はいつ起こった? Bさんの時間軸 AさんとBさんで時間軸が違うため、 いつ支払いが行われたか証明するのが難しくなる

Slide 19

Slide 19 text

タイムスタンプ 19 基準となる時間軸 ¥ < 中央集権的タイムスタンプ > 中心を決めて、その時刻を基準として時間軸を特定 時間軸が共有されるので行為の発生時刻をきちんと記録できるが…… ・サーバーに負荷がかかりやすい ・サーバーが落ちたら? ・サーバー管理者が不正を働いたら?

Slide 20

Slide 20 text

タイムスタンプ 20 一般的な時間軸 ¥ < 非中央集権的タイムスタンプ > 新しいタイムスタンプの仕組み → ブロックチェーン 「相対時刻」と「前後関係」を基準とした新しい時間軸 ¥ ¥

Slide 21

Slide 21 text

分散ネットワーク(P2P) 21 ・ネットワークにつながるコンピュータはすべて対等 ・特別な役割をもつコンピュータがない ・皆がサーバーかつクライアント(ノードという) ノード    特定の管理者がいない=非中央集権的    一部のノードが止まっても、システムは動き続ける

Slide 22

Slide 22 text

分散システムの合意形成問題 ・ネットワークに悪意ある参加者がいる ・機器の故障などで情報伝達がうまくいかない 22 参加者間で合意形成ができない = システムがうまく動かない 例えばこんなとき……

Slide 23

Slide 23 text

ビザンチン将軍問題 ネットワークに裏切り者がいる場合、正しい合意が形成できるか? 23 B軍の拠点を攻撃するか、撤退するかで悩み中。 全員で攻撃しなければ兵力が不足し、敗退する。 攻撃/撤退を遠隔地にいる5人の将軍の多数決で決定。 A軍 ? 撤退 撤退 攻撃 攻撃 実は裏切り者

Slide 24

Slide 24 text

ビザンチン将軍問題 24 撤退 撤退 攻撃 攻撃 攻撃するわー 撤退するわー 兵力が足りず、A軍は敗退してしまう

Slide 25

Slide 25 text

ビザンチン将軍問題 25 → 離れた将軍どうしでは、悪意ある将軍によって全体の意思決定が   できなくなる可能性がある。(ビザンチン障害) ネットワーク内に悪意ある者が紛れ込むことを前提に ビザンチン障害を回避するための仕組みが必要に。 “ コンセンサスアルゴリズム ”

Slide 26

Slide 26 text

コンセンサスアルゴリズム ビザンチン将軍問題を解決する仕組み ブロックを追加するルールを決めたアルゴリズム 26 サトシ・ナカモトは、ビザンチン将軍問題への現実的な解を示した Proof of Work(プルーフオブワーク)

Slide 27

Slide 27 text

Proof of Work 27    計算量に応じて新しいブロックを生成する人を決める    一番早く計算できた人に次のブロックを作る権利が与えられる    長いブロックチェーン = 正しいブロックチェーン    人々は報酬を得るため計算競争に参加する    電力をめちゃくちゃ消費する

Slide 28

Slide 28 text

計算量に応じて新しいブロックを生成する人を決める ハッシュ関数の出力がある値以下になる入力をさがす(とにかく計算) 28 ハッシュ関数  出力値Yから入力値Xを逆算できない関数(逆は簡単)  入力値Xの値を変えると出力値が全く違うものになる ハッシュ関数 入力 出力 Target ≦ X 0≦Y≦99 99 0≦Y≦9999 例:出力が1万通りのハッシュ関数を使った場合 この計算に参加する人 → マイナー

Slide 29

Slide 29 text

ブロックの改ざんが実質不可能 29 Bのブロックのハッシュ 取引 取引 Nonce Aのブロックのハッシュ 取引 取引 Nonce Cのブロックのハッシュ 取引 取引 Nonce 各ブロックに直前のブロックのハッシュ値が含まれる 以前のブロックの中身が少しでも変わると、ハッシュ値が違うものになる Bのブロックのハッシュ = AのブロックのハッシュとNonceの数字で決定 (Nonceはマイニングに成功したとき決まる)

Slide 30

Slide 30 text

一番早く計算した人に次のブロックを作る権利が与えられる マイナーは作成したブロックをブロードキャスト(公開)する 30 世界中のノードがブロックが正しいかを検証して、ブロックを承認する 新 検証 → OK!! → リレー ( 検証に失敗すると破棄 ) ブロードキャスト! 全てのノードに到達

Slide 31

Slide 31 text

長いブロックチェーン = 正しいブロックチェーン 情報伝達のタイムラグにより、複数の「正しいブロック」が発生 31 正 → ブロックチェーンを分岐させて、どちらも「正しいブロック」とみなす 正 正 正 正 正 正しいブロックチェーン    どんな理由があれ、長いブロックチェーンが絶対的に正しい    倫理、社会通念、法的整合性とは関係ない

Slide 32

Slide 32 text

ブロックを作った人には報酬を得る権利が与えられる 32 ブロックが承認されたら、 計算を頑張った報酬として“自分に12.5BTCを送金する権利” が与えられる    マイニングに成功したら報酬がもらえる    人々は報酬を得るため計算競争に参加する

Slide 33

Slide 33 text

PoW=ビザンチン問題の現実的な解 33    不正をするよりマイニングしたほうが得    時の経過とともにブロックチェーンが覆る可能性が低くなる 赤のブロックを覆したい → そこから現在のブロックまで全て改ざんしないといけないため、   莫大な計算パワーを必要とする(全体の過半数)   ブロックは約10分ごとに1個ずつ増えていくので、時が経てば経つほど   ブロックチェーンを覆すことが難しくなる

Slide 34

Slide 34 text

PoW=ビザンチン問題の現実的な解 34 注:完全に解決したわけではなく、実用上問題ないレベル 6承認(6個のブロックが繋がった)で決済が覆る可能性は確率的に相当低い。 が、可能性が0というわけではない。

Slide 35

Slide 35 text

Proof of Work の問題点 ・計算のために莫大な電力を使用   環境によくない   電気代が安い中国やモンゴルなどにマイニング工場が作られる → 分散するのがブロックチェーンのいいところなのに…? 35 ・マイニングの参入障壁が高くなる マイニング専用機械でのマイニングとなると一般人の参入が難しい

Slide 36

Slide 36 text

その他のコンセンサスアルゴリズム Proof of Stake 36 コインを多く持っているほど偉い(コイン量 × 保持期間) 流動性が下がる可能性(コインを使わなくなる)  → 保持期間が長いものは重みを下げる    取引数や消費数で重みづけをする(Proof of Importance) ブロックチェーンを覆すのが比較的簡単  → 最初はPoWを採用して、世界中にコインが散らばったらPoSに移行

Slide 37

Slide 37 text

ちょっと休憩&質問タイム

Slide 38

Slide 38 text

ブロックチェーンでできること

Slide 39

Slide 39 text

ブロックチェーンの活用方法 ブロックチェーンでできるようになったこと ・中間業者なしで送金や通貨を保管する ・透明な取引(取引情報がブロックに書き込まれる) ・確率的に改ざんされない 39 → いろんなことに応用できるのでは 契約を自動執行できる仕組みが考案(スマートコントラクト )

Slide 40

Slide 40 text

スマートコントラクトとは ブロックチェーン上で動作する契約の自動執行プログラム 40 買い手の残高を確認 商品を購入 商品を発送 商品が到着→代金が送金 売り手 買い手 例:オークションシステム 代金未払い / 商品未着 / 買う気のない注文 を防ぐことが可能

Slide 41

Slide 41 text

スマートコントラクトのメリット ・相手が信用できない状態でも契約ができる 41 ブロックチェーンにできごとの履歴が残る ブロックチェーンは誰かが支配しているものではない ・仲介する第三者を排除できる:コスト削減 エスクロー手数料が不要 プログラムが処理してくれる(人の手を介さない)

Slide 42

Slide 42 text

スマートコントラクトの具体例 42 Blocklancer https://blocklancer.net/

Slide 43

Slide 43 text

開発をはじめてみよう

Slide 44

Slide 44 text

おすすめ書籍 44

Slide 45

Slide 45 text

おすすめ学習サイト 45 CryptoZombies https://cryptozombies.io/jp/ イーサリアムを使ったゲームを作りながら、 スマートコントラクトのプログラミングを学んでいく。 スマートコントラクト開発はじめのいっぽ 丁寧に解説してあるので、絶対やるべき! 5周くらいやると最強になる(らしい)

Slide 46

Slide 46 text

Twitter 46 ブロックチェーンつよそうな人をフォローしてみる 僕のフォロー欄から探してみるといいかも( https://twitter.com/kmorrrry/following ) ブログを書く(アウトプット) while (1) { 新しい知識を得る → ブログに書く; } ・解説できるレベルになるには勉強が必要 ・認識が間違っていればツッコミをもらえる ・備忘録になる ・困った人の助けになる(ググって出てきたらめっちゃ助かる)

Slide 47

Slide 47 text

技術者コミュニティ 47 Hi-Ether https://qiita.com/amachino/items/605ff76209d7193dc92c 開発用のETH(イーサリアム)を持っている人限定の開発者向けコミュニティ Slackで活発な議論が行われているほか、オフラインでミートアップも開催。 先日の福岡ミートアップの様子 エンジニアがほとんどだが学生も何人か…

Slide 48

Slide 48 text

開発をやってみよう

Slide 49

Slide 49 text

ご静聴ありがとうございました。

Slide 50

Slide 50 text

Q & A