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
700
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アプリケーションにおけるRAGとデータベースの役割
shukob
0
460
ビットコイン・ブロックチェーン入門
shukob
0
130
生成AI入門
shukob
2
380
Mastering Bitcoin Third Editionの紹介
shukob
0
150
NFT技術概論
shukob
0
320
やさしいERC20開発
shukob
0
160
ビットコイン・ブロックチェーン入門
shukob
0
180
日本のビットコイン決済を振り返る
shukob
0
110
ビットコイン・ライトニングネットワーク概論
shukob
0
260
Other Decks in Programming
See All in Programming
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
8
2.1k
スクラムチームと認知負荷 - ニフティのスクラムトーク Vol2. / NIFTY Tech Talk #18
niftycorp
PRO
1
120
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
360
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
220
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
420
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
310
Git Lint
bkuhlmann
4
740
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
180
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
ゆるい個人開発のススメ
kuroppe1819
10
930
try! Swift Tokyo 2024のLT枠に採択されたプロポーザルを出すときに考えていたこと
ski
0
340
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Optimizing for Happiness
mojombo
370
69k
Building Better People: How to give real-time feedback that sticks.
wjessup
354
18k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
The Cult of Friendly URLs
andyhume
74
5.7k
Agile that works and the tools we love
rasmusluckow
324
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
WebSockets: Embracing the real-time Web
robhawkes
59
7k
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(最寄駅:東京メトロ半蔵門)