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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuichi Kiri
March 01, 2019
Technology
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜぼくが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
500
自己組織的な開発チームを如何にして作り上げるか / how to build self-organizing team
kiririmode
8
9.6k
このConsulがすごい!/consul is great!
kiririmode
0
500
Other Decks in Technology
See All in Technology
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
200
強化学習「理論」入門
enakai00
3
3.6k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
220
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
ガバメントクラウドでのランサムウェア対策
techniczna
2
1k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
250
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
190
第3回しろおびセキュリティスポンサーセッション
log0417
0
160
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
GitHub's CSS Performance
jonrohan
1033
470k
Embracing the Ebb and Flow
colly
88
5.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.3k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Six Lessons from altMBA
skipperchong
29
4.4k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
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における創発的コンセンサス ★各ノードは単純な(?)ルールに従うだけ ★リーダーすら必要としない ★コンセンサス(合意)がひっくり返されることは(ほぼ)ない ★改竄は困難