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
240
AI時代におけるMLOpsのTips
shukob
2
74
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
720
生成AI入門
shukob
0
310
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
650
生成AIアプリケーションにおけるRAGとデータベースの役割
shukob
0
1.3k
Other Decks in Programming
See All in Programming
AIプログラミング雑キャッチアップ
yuheinakasaka
19
4.9k
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
340
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
8
1.5k
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
990
Rubyと自由とAIと
yotii23
6
1.8k
PEPCは何を変えようとしていたのか
ken7253
3
290
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
7
4.2k
Bedrock Agentsレスポンス解析によるAgentのOps
licux
3
930
ナレッジイネイブリングにAIを活用してみる ゆるSRE勉強会 #9
nealle
0
160
DevNexus - Create AI Infused Java Apps with LangChain4j
kdubois
0
120
TCAを用いたAmebaのリアーキテクチャ
dazy
0
210
Boos Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
470
Featured
See All Featured
For a Future-Friendly Web
brad_frost
176
9.6k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
Documentation Writing (for coders)
carmenintech
68
4.6k
Done Done
chrislema
182
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Building Your Own Lightsaber
phodgson
104
6.2k
Adopting Sorbet at Scale
ufuk
75
9.2k
The Language of Interfaces
destraynor
156
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Unsuck your backbone
ammeep
669
57k
Embracing the Ebb and Flow
colly
84
4.6k
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(最寄駅:東京メトロ半蔵門)