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
なぜぼくがbitcoinに心惹かれるのか
Search
Yuichi Kiri
March 01, 2019
Technology
1
1k
なぜぼくがbitcoinに心惹かれるのか
Yuichi Kiri
March 01, 2019
Tweet
Share
More Decks by Yuichi Kiri
See All by Yuichi Kiri
CloudNativeなサービス用環境を構築するツールキット Eponaを作った/toolkit to create cloud-native environment for our services
kiririmode
0
430
自己組織的な開発チームを如何にして作り上げるか / how to build self-organizing team
kiririmode
8
9.2k
このConsulがすごい!/consul is great!
kiririmode
0
460
Other Decks in Technology
See All in Technology
『ささAI』ネタづくりをささえるAI📝 (にぼしいわし担当:GIFTech2025)
masapyon1212
0
100
Part2 GitHub Copilotってなんだろう
tomokusaba
2
720
250510 StepFunctionのテスト自動化始めました vol.1
east_takumi
1
200
社内 Web システムのフロントエンド技術刷新: React Router v7 vs. TanStack Router
musasabibyun
0
130
MCP でモノが動くとおもしろい/It is interesting when things move with MCP
bitkey
2
290
自動化の第一歩 -インフラ環境構築の自動化について-
smt7174
1
120
クラウドネイティブ環境の脅威モデリング
kyohmizu
1
400
Gateway H2 モジュールで スマートホーム入門
minoruinachi
0
140
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
100
使えるデータ基盤を作る技術選定の秘訣 / selecting-the-right-data-technology
pei0804
1
140
OPENLOGI Company Profile
hr01
0
63k
雑に疎通確認だけしたい...せや!CloudShell使ったろ!
alchemy1115
0
210
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
7
420
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Into the Great Unknown - MozCon
thekraken
38
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Why Our Code Smells
bkeepers
PRO
336
57k
Gamification - CAS2011
davidbonilla
81
5.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Optimizing for Happiness
mojombo
378
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
Navigating Team Friction
lara
185
15k
Transcript
なぜぼくが Bitcoinに 心奪われるのか kiririmode@吉祥寺.pm #17
自己紹介 ★ アカウント: kiririmode ★ Blog: 理系学生日記 ★ 株式会社TIS ★
木利友一
わたしとPerl ★テクノロジーを好きにさせてくれたのが Perl ★世は Plagger 全盛の時代 ★Googleで「はらへった」と検索するとピザが届く時代 ★Perl Monger への憧れ
★プログラミングは楽しい ★テクノロジーは楽しい ★エンジニアリングは楽しい
報恩謝徳 ★テクノロジーの楽しさ ★テクノロジーの奥深さ
最近の業務 ★Bitcoinテクノロジーを使ったプラットフォーム開発 ★Bitcoinのテクノロジーはめちゃくちゃ面白い ★中央集権機関のない通貨発行 ★楕円曲線暗号とその応用 ★大規模P2Pネットワークにおけるビザンチン・フォールトトレランス ★互いに信頼しないノード間での信頼できる取引 ★目の前に広がるこれまでまったく知らなかった世界
Bitcoinの技術 今日のテーマ: 創発的コンセンサス
そもそもBitcoinとは? ★仮想通貨(暗号資産) ★中央サーバ・管理者無しで発行される通貨 ★プロトコル名 ★プロトコルなので、実装は多数ある ★RI: Bitcoin Core (C++) ★btcd
(golang) ★Perl実装は見当たらず… ★ネットワーク名 ★Bitcoinプロトコルを動かすノードで構成されるP2P NW
Bitcoinネットワーク ★各ノードでプロトコルスタックが動作するP2Pネットワーク ★bitcoin core(bitcoind)/btcd/etc. ★特定の機関に信用を依存しない (trustless) ★no authority. no leader
(⇔ Paxos, Raft) ★各ノードは隣接ノードとトランザクションやブロックをやり取り bitcoind bitcoind bitcoind btcd bitcoind
中央集権機関がない通貨発行 ★どうやって二重支払がないことを担保するか ★ぼくが[ID:abc]の一万円札をaliceに送る ★ぼくが[ID:abc]の一万円札をbobに送る ★一万円札には実体がある ★みんな銀行を信じている ★偽札の製造は、精巧な印刷技術で防止される ★誰がどの一万円札を持っている? ★誰が誰にいつ千円を支払った?
分散システムが直面する問題 ビザンチン将軍問題
ビザンチン将軍問題 ★相互に通信しあうノード ★通信は途絶し得る ★ノードは故障し得る ★ノードは故意に偽の情報を流し得る 全体として正しい合意を 形成できるか (consensus problem)
Bitcoinの世界のコンセンサス ★Bitcoinにおける合意の対象 ★「何を誰が所有しているのか」 ★emergent consensus (創発的コンセンサス) ★各ノードは単純なルールに従うのみ ★個々のノード間の相互作用によって、 ネットワーク全体として「合意」が形成される 相互作用を繰り返すだけで、
ネットワーク全体として一つの合意に収斂する
他のemergentな例 ★群れとしての蟻は餌への最短経路を探すことができる ★複数の蛙が鳴くタイミングが勝手に同期していく ★群れとしての鳥が飛ぶときに編隊を形づくる 相互作用を繰り返すだけで、 全体として一つの振舞いに収斂する
単純なルール 1. トランザクション検証 2. トランザクションのブロックへの集積 (マイニング) 3. ブロック検証とブロックチェーンへの埋め込み 4. ブロックチェーンの選択
(合意形成)
単純なルール 1. トランザクション検証 2. トランザクションのブロックへの集積 3. ブロック検証とブロックチェーンへの埋め込み 4. ブロックチェーンの選択 (合意形成)
トランザクション検証 ★送られてきたトランザクション(tx)を転送する前の検証 ★format/二重支払いでない/標準tx/etc. ★有効なトランザクションだけがNWを流れることを保証 ★無効なトランザクションは捨てる tx txの検証 tx tx txの検証
txの検証
単純なルール 1. トランザクション検証 2. トランザクションのブロックへの集積 3. ブロック検証とブロックチェーンへの埋め込み 4. ブロックチェーンの選択 (合意形成)
トランザクションの集積 ★トランザクションはNWを流れるだけでは意味を為さない ★ブロックに記録されてはじめて参加者から承認される ★ブロックにトランザクションを集積しチェーンに繋ぐこと: マイニング ★マイニングを行うノード:マイナー
マイニング ★受信したTXをブロックに集積すること ★1つのブロックには2,000程度のTXが集積される ★集積のためにはマイナーが計算問題を解く必要がある ★ブロックを繋げることが前ブロックの「承認」 Version Previous Block Hash Merkle
Root Timestamp Difficulty Target Nonce transa ctions block #100 block header block #99 block #101 今の問題難易度 マイナーの回答欄
マイナーの解く計算問題 ★問題「SHA-256(block header) < Difficulty TargetとなるNonceを探せ」 ★ポイント: Block Header は前のブロックにも依存する
★なぜなら前のBlockのハッシュを含むから Version Previous Block Hash Merkle Root Timestamp Difficulty Target Nonce transa ctions block header 今の問題難易度 マイナーの回答欄 block #99
Proof of Work ★Block Header は前のブロックにも依存する ★チェーンが後ろに繋がるほど改竄が困難 ★改竄するにはマイナーがこれまで投入した計算量が必要 ★チェーンが繋がるほどブロック内のTXは信頼ができる ★現実的には6ブロック繋がればOK的なかんじ
マイニングを行うインセンティブ ★マイナーはマイニングの早いもの勝ち競争を行っている ★競争を行うために大量のハッシュ計算 ★一番早く作られたブロックが皆に共有されていく ★マイナーのインセンティブは何か ★競争に勝利したマイナーはBitcoinを得ることができる ★「自分がBitcoinを得た」というTXをブロックに集積する権利
単純なルール 1. トランザクション検証 2. トランザクションのブロックへの集積 (マイニング) 3. ブロック検証とブロックチェーンへの埋め込み 4. ブロックチェーンの選択
(合意形成)
ブロックチェーンへの埋め込み ★マイナーは問題が解け次第ブロックをbroadcast ★ブロックを受け取ったノードはブロックを検証 ★競争に負けたマイナーは次の競争を始める ★検証に成功後、ノード自身の持つBlockchainに追加 block blockの検証 block block blockの検証
blockの検証
単純なルール 1. トランザクション検証 2. トランザクションのブロックへの集積 (マイニング) 3. ブロック検証とブロックチェーンへの埋め込み 4. ブロックチェーンの選択
(合意形成)
ブロックチェーンの選択 ★ブロックを受信したノードは自身のBlock chainに繋ぐ ★同じ世代のブロックを複数受信した場合: ★累積Difficultyが大きい方のBlockを繋ぐ ★ネットワーク全体として計算力が多くつぎ込まれたBlockが Chainに追加されていく block #99 block
#100 block #101 block #101
まとめ ★Bitcoinにおける創発的コンセンサス ★各ノードは単純な(?)ルールに従うだけ ★リーダーすら必要としない ★コンセンサス(合意)がひっくり返されることは(ほぼ)ない ★改竄は困難