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
1
Share
なぜぼくがbitcoinに心惹かれるのか
Yuichi Kiri
March 01, 2019
More Decks by Yuichi Kiri
See All by Yuichi Kiri
CloudNativeなサービス用環境を構築するツールキット Eponaを作った/toolkit to create cloud-native environment for our services
kiririmode
0
480
自己組織的な開発チームを如何にして作り上げるか / how to build self-organizing team
kiririmode
8
9.5k
このConsulがすごい!/consul is great!
kiririmode
0
490
Other Decks in Technology
See All in Technology
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
990
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
120
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
620
[みん強]AIの価値を最大化するデータ基盤戦略:Self-Service型Data Meshへの転換とAgentic AI Meshに向けた取り組み with Snowflake他
y_matsubara
1
110
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
440
オライリーイベント登壇資料「鉄リサイクル・産廃業界におけるAI技術実応用のカタチ」
takarasawa_
0
410
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
190
可視化から活用へ — Mesh化・Segmentation・アライメントの研究動向
gpuunite_official
0
220
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
1
340
LookerとADKで作る社内AIエージェント
chanyou0311
0
260
サイボウズ、プラットフォームエンジニアリング始めるってよ ― プラットフォームチームの事業貢献と組織アラインメントの強化
ueokande
0
120
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.7k
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
200
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
WENDY [Excerpt]
tessaabrams
10
37k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
A designer walks into a library…
pauljervisheath
211
24k
For a Future-Friendly Web
brad_frost
183
10k
Ethics towards AI in product and experience design
skipperchong
2
270
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
360
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
740
Embracing the Ebb and Flow
colly
88
5k
KATA
mclloyd
PRO
35
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における創発的コンセンサス ★各ノードは単純な(?)ルールに従うだけ ★リーダーすら必要としない ★コンセンサス(合意)がひっくり返されることは(ほぼ)ない ★改竄は困難