Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kindai_Blockchain_study01
Search
Keisuke Mori
June 16, 2018
Technology
0
230
Kindai_Blockchain_study01
Keisuke Mori
June 16, 2018
Tweet
Share
More Decks by Keisuke Mori
See All by Keisuke Mori
AWSを使う上で意識しておきたい、クラウドセキュリティ超入門(駆け足版)
kkmory
1
390
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
120
rubyonjets_with_aws_for_research
kkmory
0
560
AWSで動画変換&配信基盤を作った話
kkmory
0
230
Slackであそぼ!!
kkmory
0
110
Git-study-Hackz-treasure
kkmory
0
240
飯塚ブロックチェーン勉強会 #1
kkmory
0
120
Swarm: The distributed storage platform
kkmory
1
750
Other Decks in Technology
See All in Technology
C++26 エラー性動作
faithandbrave
2
750
ハイテク休憩
sat
PRO
2
160
Storage Browser for Amazon S3
miu_crescent
1
190
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.4k
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
14
12k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
230
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
190
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
460
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
460
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
340
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
190
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Fireside Chat
paigeccino
34
3.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Practical Orchestrator
shlominoach
186
10k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Transcript
ブロックチェーン入門 意外と知らないブロックチェーンのしくみ 近畿大学産業理工学部 森 啓輔
今日の流れ
今日の内容 1. ビットコインと仮想通貨 2. ブロックチェーンとは何ぞや 3. ブロックチェーンでできること 4. ブロックチェーン開発をはじめてみよう 5.
質疑応答 3
ビットコインと仮想通貨
仮想通貨持ってるひと
ビットコインとは 6 元祖・仮想通貨 2008年 サトシ・ナカモトが論文を発表(後述) 2010年 ビットコインが初めて実用的に使われる (ピザ1枚=1万BTC≒70億円!) 2014年 マウントゴックス事件 マウントゴックスのサーバーがサイバー攻撃を受け、
ビットコイン約75万BTC(当時のレートで約480億円)と 顧客がビットコインの売買の資金として預けていた現金28億円が消失。
仮想通貨の特徴 7 支払い手段として誰にでも何にでも使える リアルマネーではない コンピュータ上に記録されていて、移動できる レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン )
仮想通貨の特徴 8 支払い手段として誰にでも何にでも使える 日本円と同じように、商品の代金やサービスを受けた対価として 仮想通貨で支払いができる。 ビットコインで支払いができる店舗(例)
仮想通貨の特徴 9 支払い手段として誰にでも何にでも使える コンピュータ上に記録されていて、移動できる 仮想通貨は実体がない ”データ” なので、 PCやスマートフォン上で記録、移動される。 PCやスマートフォンに、”ウォレット” とよばれる
アプリをインストールして仮想通貨を保管。 ネットバンキングと同じような感覚で送金できる ビットコインのウォレットには ”アドレス” という口座番号のようなものが ついていて、送金したい時は相手のアドレスを宛先として送金をする。
仮想通貨の特徴 10 支払い手段として誰にでも何にでも使える レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン ) 交換業者を通じて、仮想通貨を円やドルと交換できる。 →
FXのような為替取引と同じ感覚 仮想通貨交換業者(一部) bitFlyer (bitflyer.com) Zaif (zaif.jp) coincheck (coincheck.com) bitbank (bitbank.cc) ほか12社(2018.5現在)
11
仮想通貨の特徴 12 支払い手段として誰にでも何にでも使える リアルマネーではない 日本通貨でも、外国通貨でもない。 円でもないしドルでもないし、ユーロでもない。 単位の話・・・ ビットコイン(BTC) イーサリアム(ETH)
仮想通貨の特徴(まとめ) 13 支払い手段として誰にでも何にでも使える リアルマネーではない コンピュータ上に記録されていて、移動できる レートが変動し、いろんな人と売買できる( 円 ⇆ ビットコイン )
もっと詳しく …… 改正資金決済法 1号仮想通貨 2号仮想通貨 で検索!
ちょっと休憩&質問タイム
ブロックチェーンとは
ブロックチェーンとは ビットコインなどの仮想通貨を支える技術 2008年にサトシ・ナカモトが論文を発表(日本語訳もある) 16 特定の管理者がいない分散ネットワーク ブロックの内容が改ざん不可能 ビザンチン問題の現実的な解決策 時間軸の再発明
タイムスタンプ 日付や時刻を記した文字列(例:2018-06-15 17:20 +09) 17 時間軸 ¥ 現金を渡す物理的な行為が発生 → 行為が発生した時刻はただ1つに決まる
現金を渡した事実をなかったことにできない 領収証の発行=タイムスタンプ < 物理的タイムスタンプ >
タイムスタンプ 18 Aさんの時間軸 ? < コンピュータ上のタイムスタンプ > コンピュータ上の時刻と現実世界の時刻は必ずしも一致しない → 支払いを行なった事実はいつ起こった?
Bさんの時間軸 AさんとBさんで時間軸が違うため、 いつ支払いが行われたか証明するのが難しくなる
タイムスタンプ 19 基準となる時間軸 ¥ < 中央集権的タイムスタンプ > 中心を決めて、その時刻を基準として時間軸を特定 時間軸が共有されるので行為の発生時刻をきちんと記録できるが…… ・サーバーに負荷がかかりやすい
・サーバーが落ちたら? ・サーバー管理者が不正を働いたら?
タイムスタンプ 20 一般的な時間軸 ¥ < 非中央集権的タイムスタンプ > 新しいタイムスタンプの仕組み → ブロックチェーン
「相対時刻」と「前後関係」を基準とした新しい時間軸 ¥ ¥
分散ネットワーク(P2P) 21 ・ネットワークにつながるコンピュータはすべて対等 ・特別な役割をもつコンピュータがない ・皆がサーバーかつクライアント(ノードという) ノード 特定の管理者がいない=非中央集権的 一部のノードが止まっても、システムは動き続ける
分散システムの合意形成問題 ・ネットワークに悪意ある参加者がいる ・機器の故障などで情報伝達がうまくいかない 22 参加者間で合意形成ができない = システムがうまく動かない 例えばこんなとき……
ビザンチン将軍問題 ネットワークに裏切り者がいる場合、正しい合意が形成できるか? 23 B軍の拠点を攻撃するか、撤退するかで悩み中。 全員で攻撃しなければ兵力が不足し、敗退する。 攻撃/撤退を遠隔地にいる5人の将軍の多数決で決定。 A軍 ? 撤退 撤退
攻撃 攻撃 実は裏切り者
ビザンチン将軍問題 24 撤退 撤退 攻撃 攻撃 攻撃するわー 撤退するわー 兵力が足りず、A軍は敗退してしまう
ビザンチン将軍問題 25 → 離れた将軍どうしでは、悪意ある将軍によって全体の意思決定が できなくなる可能性がある。(ビザンチン障害) ネットワーク内に悪意ある者が紛れ込むことを前提に ビザンチン障害を回避するための仕組みが必要に。 “ コンセンサスアルゴリズム
”
コンセンサスアルゴリズム ビザンチン将軍問題を解決する仕組み ブロックを追加するルールを決めたアルゴリズム 26 サトシ・ナカモトは、ビザンチン将軍問題への現実的な解を示した Proof of Work(プルーフオブワーク)
Proof of Work 27 計算量に応じて新しいブロックを生成する人を決める 一番早く計算できた人に次のブロックを作る権利が与えられる 長いブロックチェーン = 正しいブロックチェーン 人々は報酬を得るため計算競争に参加する
電力をめちゃくちゃ消費する
計算量に応じて新しいブロックを生成する人を決める ハッシュ関数の出力がある値以下になる入力をさがす(とにかく計算) 28 ハッシュ関数 出力値Yから入力値Xを逆算できない関数(逆は簡単) 入力値Xの値を変えると出力値が全く違うものになる ハッシュ関数 入力 出力 Target
≦ X 0≦Y≦99 99 0≦Y≦9999 例:出力が1万通りのハッシュ関数を使った場合 この計算に参加する人 → マイナー
ブロックの改ざんが実質不可能 29 Bのブロックのハッシュ 取引 取引 Nonce Aのブロックのハッシュ 取引 取引 Nonce
Cのブロックのハッシュ 取引 取引 Nonce 各ブロックに直前のブロックのハッシュ値が含まれる 以前のブロックの中身が少しでも変わると、ハッシュ値が違うものになる Bのブロックのハッシュ = AのブロックのハッシュとNonceの数字で決定 (Nonceはマイニングに成功したとき決まる)
一番早く計算した人に次のブロックを作る権利が与えられる マイナーは作成したブロックをブロードキャスト(公開)する 30 世界中のノードがブロックが正しいかを検証して、ブロックを承認する 新 検証 → OK!! → リレー
( 検証に失敗すると破棄 ) ブロードキャスト! 全てのノードに到達
長いブロックチェーン = 正しいブロックチェーン 情報伝達のタイムラグにより、複数の「正しいブロック」が発生 31 正 → ブロックチェーンを分岐させて、どちらも「正しいブロック」とみなす 正 正
正 正 正 正しいブロックチェーン どんな理由があれ、長いブロックチェーンが絶対的に正しい 倫理、社会通念、法的整合性とは関係ない
ブロックを作った人には報酬を得る権利が与えられる 32 ブロックが承認されたら、 計算を頑張った報酬として“自分に12.5BTCを送金する権利” が与えられる マイニングに成功したら報酬がもらえる 人々は報酬を得るため計算競争に参加する
PoW=ビザンチン問題の現実的な解 33 不正をするよりマイニングしたほうが得 時の経過とともにブロックチェーンが覆る可能性が低くなる 赤のブロックを覆したい → そこから現在のブロックまで全て改ざんしないといけないため、 莫大な計算パワーを必要とする(全体の過半数)
ブロックは約10分ごとに1個ずつ増えていくので、時が経てば経つほど ブロックチェーンを覆すことが難しくなる
PoW=ビザンチン問題の現実的な解 34 注:完全に解決したわけではなく、実用上問題ないレベル 6承認(6個のブロックが繋がった)で決済が覆る可能性は確率的に相当低い。 が、可能性が0というわけではない。
Proof of Work の問題点 ・計算のために莫大な電力を使用 環境によくない 電気代が安い中国やモンゴルなどにマイニング工場が作られる → 分散するのがブロックチェーンのいいところなのに…? 35
・マイニングの参入障壁が高くなる マイニング専用機械でのマイニングとなると一般人の参入が難しい
その他のコンセンサスアルゴリズム Proof of Stake 36 コインを多く持っているほど偉い(コイン量 × 保持期間) 流動性が下がる可能性(コインを使わなくなる) →
保持期間が長いものは重みを下げる 取引数や消費数で重みづけをする(Proof of Importance) ブロックチェーンを覆すのが比較的簡単 → 最初はPoWを採用して、世界中にコインが散らばったらPoSに移行
ちょっと休憩&質問タイム
ブロックチェーンでできること
ブロックチェーンの活用方法 ブロックチェーンでできるようになったこと ・中間業者なしで送金や通貨を保管する ・透明な取引(取引情報がブロックに書き込まれる) ・確率的に改ざんされない 39 → いろんなことに応用できるのでは 契約を自動執行できる仕組みが考案(スマートコントラクト )
スマートコントラクトとは ブロックチェーン上で動作する契約の自動執行プログラム 40 買い手の残高を確認 商品を購入 商品を発送 商品が到着→代金が送金 売り手 買い手 例:オークションシステム
代金未払い / 商品未着 / 買う気のない注文 を防ぐことが可能
スマートコントラクトのメリット ・相手が信用できない状態でも契約ができる 41 ブロックチェーンにできごとの履歴が残る ブロックチェーンは誰かが支配しているものではない ・仲介する第三者を排除できる:コスト削減 エスクロー手数料が不要 プログラムが処理してくれる(人の手を介さない)
スマートコントラクトの具体例 42 Blocklancer https://blocklancer.net/
開発をはじめてみよう
おすすめ書籍 44
おすすめ学習サイト 45 CryptoZombies https://cryptozombies.io/jp/ イーサリアムを使ったゲームを作りながら、 スマートコントラクトのプログラミングを学んでいく。 スマートコントラクト開発はじめのいっぽ 丁寧に解説してあるので、絶対やるべき! 5周くらいやると最強になる(らしい)
Twitter 46 ブロックチェーンつよそうな人をフォローしてみる 僕のフォロー欄から探してみるといいかも( https://twitter.com/kmorrrry/following ) ブログを書く(アウトプット) while (1) {
新しい知識を得る → ブログに書く; } ・解説できるレベルになるには勉強が必要 ・認識が間違っていればツッコミをもらえる ・備忘録になる ・困った人の助けになる(ググって出てきたらめっちゃ助かる)
技術者コミュニティ 47 Hi-Ether https://qiita.com/amachino/items/605ff76209d7193dc92c 開発用のETH(イーサリアム)を持っている人限定の開発者向けコミュニティ Slackで活発な議論が行われているほか、オフラインでミートアップも開催。 先日の福岡ミートアップの様子 エンジニアがほとんどだが学生も何人か…
開発をやってみよう
ご静聴ありがとうございました。
Q & A