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のDouble Spend
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shu Kobuchi
September 09, 2017
Programming
720
0
Share
BitcoinのDouble Spend
2017年9月9日OSC東京Fall内の東海道らぐLT大会にて、BitcoinのDouble Spend(二重支払い)を行なった場合にどうなるのかを発表しました。
Shu Kobuchi
September 09, 2017
More Decks by Shu Kobuchi
See All by Shu Kobuchi
AIエージェント・エコノミーの幕開け 〜 オープンプロトコルが変えるビジネスの未来 〜
shukob
0
150
AIエージェント・エコノミーの幕開け 〜オープンプロトコルが変えるビジネスの未来〜
shukob
0
120
Google Cloudでの動画解析と検索のサービス紹介と比較
shukob
0
96
MCP・A2A概要 〜Google Cloudで構築するなら〜
shukob
0
360
AIエージェント入門 自律性の基礎からオープンプロトコルMCP・A2Aによる連携まで
shukob
0
120
AIエージェントの自律性と協調性を解放する Google CloudによるMCP・A2A実装のエンタープライズ戦略
shukob
0
87
学術的根拠から読み解くNotebookLMの音声活用法
shukob
1
1.1k
AIエージェント入門 〜基礎からMCP・A2Aまで〜
shukob
1
390
Google Cloudサービスの生成AI関連サービス
shukob
0
140
Other Decks in Programming
See All in Programming
Rethinking API Platform Filters
vinceamstoutz
0
5.1k
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
170
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
130
Ruby and LLM Ecosystem 2nd
koic
1
1.4k
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.5k
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
270
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
140
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
130
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.4k
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
130
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
110
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
95
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
Why Our Code Smells
bkeepers
PRO
340
58k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Visualization
eitanlees
150
17k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
440
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
How to Talk to Developers About Accessibility
jct
2
170
We Have a Design System, Now What?
morganepeng
55
8.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Transcript
BitcoinのDouble Spend 2017年9月9日 東海道らぐLT大会@OSC Tokyo Fall 小渕 周(Shu Kobuchi)
自己紹介 なまえ:小渕 周(こぶち しゅう) 最終学歴:ブロックチェーン大学校 エンジニアブロンズコース 写真はEthereum発明者 Vitalik Buterin
Bitcoinとは • 全取引履歴をノードが持つP2P型通貨 • Bitcoin公式ノード(Bitcoin Core)はOSS • Bitcoinのデーモンはbitcoind • bitcoindをLinuxにインストール(Ubuntu推奨)
• hHps://bitcoin.org/ja/
取引TransacOon(TX)構造 AliceからBobとEdgarに送金する場合 Output OutputIndex:0 Alice → Bob OutputIndex:1 Alice →
Edgar 前のTXID:C CのOutputIndex:0 Carol → Alice Input 前のTXID:D DのOutputIndex:1 Devid → Alice OutputIndex:2 Alice → Alice(お釣り)
BitcoinのTransacOon(TX) • 取引を作成したらP2P網にブロードキャスト • 入力BTC ≧ 出力BTC • 「入力 –
出力」はネットワーク手数料(わずか) • ネットワーク手数料はマイナー報酬に • マイナー報酬 = coinbase(今は12.5BTC) + ネッ トワーク手数料
TX ValidaOon • TXIDとOutputIndexで一意に決まったBTCを秘 密鍵を持ったAliceだけが送金できる • TXをブロードキャストして、転送するときはTX として正しいかをチェック • 「入力≧出力」「正しい形式のアドレスに送
金」など • ValidaOonがTrueでノードのMemoryPoolに一 時保存
TXチェーン チェーンだが、一直線ではなく、網目 TX TX TX TX Coinbase TX TX TX
TX TX TX TX TX TX マイナー報酬(前がない) 後がないのは未使用
ブロックは何のため? • 取引を承認して、マークルルートにまとめて、 ナンスを当てはめてブロックのハッシュ値を計 算する。そのハッシュ値の頭◦桁が全て0に なるまで膨大な電気代をかけて計算する。こ の行為を「マイニング」と呼び、成功すれば、 マイニング報酬がもらえる • 「取引の承認」って何よ?
ブロックは二重支払い防止のため • 二重取引がないのを確認するのが承認 • TXはタイムスタンプを持っていない(P2Pの場 合はノードによって時刻がマチマチ) • 秘密鍵があればどのノードからでも送金がで きる •
別々のノードで同じTXID OutoutIndexを二重 支払いに使ったら?
二重支払いしたとき • 自分のノードのMemory PoolにはTXは一つだ け入り、片方は入らなかったとする(Aが入り、 Bがはじかれる) • ブロックにBが取り込まれると、自分のノード でAはなくなり、BのTXが保存させる •
実際に実験してわかった
日本暗号通貨ユーザ会 • この後、13:00から302教室にてセッション • 「最近の仮想通貨について」 • CONNPASS 暗号通貨読書/勉強会 • hHps://cryptocurrency.connpass.com/
• 次回は9/26(火)19:30- • 会場はLIFULL(最寄駅:東京メトロ半蔵門)