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
Shu Kobuchi
September 09, 2017
Programming
0
710
BitcoinのDouble Spend
2017年9月9日OSC東京Fall内の東海道らぐLT大会にて、BitcoinのDouble Spend(二重支払い)を行なった場合にどうなるのかを発表しました。
Shu Kobuchi
September 09, 2017
Tweet
Share
More Decks by Shu Kobuchi
See All by Shu Kobuchi
AIエージェント元年@日本生成AIユーザ会
shukob
1
260
AI時代におけるMLOpsのTips
shukob
2
98
AIエージェント元年
shukob
0
170
論文紹介 ”Long-Context LLMs Meet RAG: Overcoming Challenges for Long Inputs in RAG” @GDG Tokyo
shukob
0
490
論文紹介 ”Long-Context LLMs Meet RAG: Overcoming Challenges for Long Inputs in RAG”
shukob
0
100
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
730
生成AI入門
shukob
0
320
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
660
生成AIアプリケーションにおけるRAGとデータベースの役割
shukob
0
1.3k
Other Decks in Programming
See All in Programming
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
430
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.4k
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
120
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the benefits are huge)
lmammino
1
160
CSS Linter による Baseline サポートの仕組み
ryo_manba
1
160
DevNexus - Create AI Infused Java Apps with LangChain4j
kdubois
0
130
未経験でSRE、はじめました! 組織を支える役割と軌跡
curekoshimizu
1
200
TCAを用いたAmebaのリアーキテクチャ
dazy
0
220
GoとPHPのインターフェイスの違い
shimabox
2
220
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
170
ML.NETで始める機械学習
ymd65536
0
240
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
1.1k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Bash Introduction
62gerente
611
210k
Designing for Performance
lara
605
68k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
It's Worth the Effort
3n
184
28k
A Philosophy of Restraint
colly
203
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Adopting Sorbet at Scale
ufuk
75
9.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Statistics for Hackers
jakevdp
797
220k
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(最寄駅:東京メトロ半蔵門)