ビットコイン~原理からソースまで~

22
原原原原原原原原原原 ~~

Upload: bitbank-inc-tokyo-japan

Post on 24-Jun-2015

496 views

Category:

Technology


0 download

DESCRIPTION

社外向け勉強会 2014年10月14日(火)

TRANSCRIPT

Page 1: ビットコイン~原理からソースまで~

~原理からソースまで~

Page 2: ビットコイン~原理からソースまで~

ビットコインとは?•勘違いが多い•雑な例え方•先入観は捨てて•素晴らしく見える•理解すれば簡単

Page 3: ビットコイン~原理からソースまで~

ビットコインの始まり• 論文は2008年 10 月 31 日

metzdowd.com にて公開• バージョン 0.1 は 2009/01/09

• Windows のみ• CLI 無し• wxWidgets と BerkeleyDB と

Boost を使用• MVS でコンパイル

• 2010 年中旬にGavin Andresen & Jeff Garzik に舵を取ってもらった。

Page 4: ビットコイン~原理からソースまで~

現リリースについてごちゃごちゃになっていたソースのモジュール化ガヴィン氏がリードの座をウラジミール氏に譲渡現在目標は新機能より、ソースの安定化現 UI は Qt 、ストレージは Level DB「テストネット」と「メインネット」整数は殆どリトルエンディアン、 IP アドレスと

 ポート番号のみビッグエンディアン

Page 5: ビットコイン~原理からソースまで~

モジュール

P2P ネットワーク採掘アルゴリズムGUI / インターフェースブロックチェーン

取引契約条件ウォレット管理ペイメント ( 送金 )

Page 6: ビットコイン~原理からソースまで~

形成アルゴリズムハッシュ (SHA-256 & RIPEMD-160)公開鍵 vs 公開鍵ハッシュECDSA / secp256k1マークルツリーブルームフィルター

Page 7: ビットコイン~原理からソースまで~

ビットコインの P2P ネットワークDNS を用いてシードサーバーへ接続1000 ピア以下のリストをダウンロード旧バージョンでは IRC を使っていた ( < 0.6)TCP/8333 でリッスン状態メッセージの送受信をピアと行う「 inv 」メッセージで最新状態に

ちょうど先日 (10/12) にヘッダ先同期が仮実装

Page 8: ビットコイン~原理からソースまで~

取引とはビットコインの拡張性がここにあり入力と出力の概念コーディングのことを「契約条件」と呼ぶコード以外のデータも挿入可未使用出力のことを「 UTXO 」と呼ぶ採掘手数料は出力に当てられていない入力の余分「コインベース」取引は特別

Page 9: ビットコイン~原理からソースまで~

取引を見ようTXID: 'B'

入力 1 中の 1: 出力元 : TX 'A' (Bob)入力額 : 5 BTC

出力 1 中の 1:出力先 : Charlie の公開鍵ハッシュ出力額 : 4 BTC

採掘手数料 : 1 BTC

コインベース TXID 'A'

報酬 : 25 BTC採掘者 : Bob

出力先 : Bob の公開鍵

TXID: 'C'

入力 1 中の 1: 出力先 : TX 'A' (Bob)入力額 : 7 BTC

出力 1 中の 1:出力先 : Alice の公開鍵ハッシュ出力額 : 6.5 BTC

採掘手数料 : 0.5 BTC

UTXO / 残高 採掘者 Bob: 13 BTC

Charlie: 4 BTC Alice: 6.5 BTC

採掘手数料 : 1.5 BTC

Page 10: ビットコイン~原理からソースまで~

取引の連鎖

TXID 'B'

TXID 'C' ( 複数入力 )

コインベース TXID 'A'

Block #300( 最古 )

Block #301 Block #302 Block #303( 最新 )

ブロック跨ぎでも!

Page 11: ビットコイン~原理からソースまで~

取引は契約なり「送金」というのは行為というより記録全取引は契約のように条件が盛り込まれているForth のようにスタック手法 (register なし ) 、

  チューリング完全でないStack は Little Endian 、可変長整数、 MSB で +- が決まるFalse = 0 、 True = 0 以外のデータ全てエラーが無く、 Stack の最上層が True なら成立採掘者は採掘する前に契約の True さを確認通常ピアも横渡しする前に確認

Page 12: ビットコイン~原理からソースまで~

契約条件について現在コマンドが 100 個程度よく使われるのが十数個 'standard' vs 'non-standard'四つほどの

 テンプレートが殆ど間違いは巻き戻せない

Page 13: ビットコイン~原理からソースまで~

ブロックとは?承認 ( 採掘 ) された取引の塊平均的に 1 ブロック 400- 600 取引程度サイズの上限が 1000 KiBコインベース取引が 1 つ前ブロックのヘッダのハッシュ含まれた取引のマークルルーツノンス

Page 14: ビットコイン~原理からソースまで~

ブロックを見てみよう

取引 A

取引 B

取引 C

取引 D

取引 E

取引 F

Block #299

ヘッダ

取引 G

ハッシュに含まれる :

Version 拡張性を見据えてhashPrevBlock 前ブロック ID

hashMerkleRoot 取引の承認Time タイムスタンプTarget Bits 難易度 : 低=難

Nonce Proof of work

ハッシュに含まれない :

Magic No バージョン情報Blocksize malloc() and sanity

Transaction count Sanity/speed opt.

Page 15: ビットコイン~原理からソースまで~

ブロックチェーンとは?特定の順番にあるブロックの連鎖ビットコイン史上全ての取引が含まれている大体 33万ブロックでサイズが 22GB 程度 (2014/10/12)ブロック高さが絶対的な時間の位置ブロック深さが最新ブロックに対する相対的な

 時間の位置0.9 以降はヘッダのみの SPV モードに対応 (26MB 程度 )ゆくゆくは非 UTXO の取引を除く「 Pruning 」も可能

Page 16: ビットコイン~原理からソースまで~

採掘者の仕事は?ダブルスペンド防止と通貨の発行もらった取引をブロックに入れていく有効なブロック ID( ハッシュ ) を見つける有効なブロック発見時にネットワークに配信2016 ブロック ( 約 2週間 ) ごとに難易度が自動調整 ブロックのハッシュが前ブロックのハッシュに依存するため、攻撃者との競争がブロックを見つける度に再び0からスタートする

Page 17: ビットコイン~原理からソースまで~

ブロックチェーンの動き

300

301 302 303

304 305 306

無効なブロック報酬無し

無駄な時間採掘者のお金の無駄短いチェーンが負ける

=有効なブロック

25 BTC の報酬=

ブロック高さ (時間 )

7 ブロック ( 約 70 分 )

Page 18: ビットコイン~原理からソースまで~

100,000,000 サトシ

1 ビットコインとは何か?

Page 19: ビットコイン~原理からソースまで~

サトシとは?未使用出力 (UTXO) の出力額公開鍵ハッシュに宛ててある取引の中ブロックの中 ブロックチェーンの中

Page 20: ビットコイン~原理からソースまで~

近い将来x.509 と http 連動NFC でネット不要BIP 70 (瞬時確認 )契約条件解禁サイドチェーンBIPs の Github を参照!

https://github.com/bitcoin/bips

Page 21: ビットコイン~原理からソースまで~

スケーリングについてビットコインは平均 1秒 1 取引のペースで動く今の上限は故意に抑えられた結果本当の一番のネックは取引・ブロックの

 ハッシュ確認の処理時間恐らく一般デスクトップ型の CPU では

  1秒 4,000 取引が限界ではないかとネットワークの速度でいうと 16 Mbpsブロックチェーンの膨大化サトシ氏の一番の悩みがネットワークが

 技術的成熟する前に広まりすぎてしまうこと

Page 22: ビットコイン~原理からソースまで~

ご清聴ありがとうございます本日受講された皆様限定!

ビットバンクウォレットを作成された方にもれなくビットコインをプレゼントします!

https://bitbankwallet.jp/