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
260
Kindai_Blockchain_study01
Keisuke Mori
June 16, 2018
Tweet
Share
More Decks by Keisuke Mori
See All by Keisuke Mori
AWSを使う上で意識しておきたい、クラウドセキュリティ超入門(駆け足版)
kkmory
1
410
[JAWS-SG#02] 個人開発やハッカソンで役立つ、便利APIのつくりかた
kkmory
0
150
rubyonjets_with_aws_for_research
kkmory
0
580
AWSで動画変換&配信基盤を作った話
kkmory
0
250
Slackであそぼ!!
kkmory
0
130
Git-study-Hackz-treasure
kkmory
1
270
飯塚ブロックチェーン勉強会 #1
kkmory
0
140
Swarm: The distributed storage platform
kkmory
1
810
Other Decks in Technology
See All in Technology
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
180
[AWS 秋のオブザーバビリティ祭り 2025 〜最新アップデートと生成 AI × オブザーバビリティ〜] Amazon Bedrock AgentCore で実現!お手軽 AI エージェントオブザーバビリティ
0nihajim
2
1.6k
設計は最強のプロンプト - AI時代に武器にすべきスキルとは?-
kenichirokimura
1
320
仕様駆動 x Codex で 超効率開発
ismk
2
1k
LLM APIを2年間本番運用して苦労した話
ivry_presentationmaterials
16
11k
龍昌餃子で理解するWebサーバーの並行処理モデル - 東葛.dev #9
kozy4324
1
140
CodexでもAgent Skillsを使いたい
gotalab555
7
3.5k
Snowflake Marketplaceには”PODB”という便利なオープンデータがあってAI Ready対応してるらしいよ/the-snowflake-marketplace-has-a-useful-open-data-source-called-PODB-that-is-apparently-AI-ready
shinyaa31
0
270
プロダクトエンジニアとしてのマインドセットの育み方 / How to improve product engineer mindset
saka2jp
2
200
メタプログラミングRuby問題集の活用
willnet
2
660
【AWS reInvent 2025 関西組 事前勉強会】re:Inventの“感動と興奮”を思い出してモチベ爆上げしたいです
ttelltte
0
120
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
2
230
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
660
Navigating Team Friction
lara
190
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Optimizing for Happiness
mojombo
379
70k
Agile that works and the tools we love
rasmusluckow
331
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Bash Introduction
62gerente
615
210k
Building Adaptive Systems
keathley
44
2.8k
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