ビットコイン~原理からソースまで~
DESCRIPTION
社外向け勉強会 2014年10月14日(火)TRANSCRIPT
~原理からソースまで~
ビットコインとは?•勘違いが多い•雑な例え方•先入観は捨てて•素晴らしく見える•理解すれば簡単
ビットコインの始まり• 論文は2008年 10 月 31 日
metzdowd.com にて公開• バージョン 0.1 は 2009/01/09
• Windows のみ• CLI 無し• wxWidgets と BerkeleyDB と
Boost を使用• MVS でコンパイル
• 2010 年中旬にGavin Andresen & Jeff Garzik に舵を取ってもらった。
現リリースについてごちゃごちゃになっていたソースのモジュール化ガヴィン氏がリードの座をウラジミール氏に譲渡現在目標は新機能より、ソースの安定化現 UI は Qt 、ストレージは Level DB「テストネット」と「メインネット」整数は殆どリトルエンディアン、 IP アドレスと
ポート番号のみビッグエンディアン
モジュール
P2P ネットワーク採掘アルゴリズムGUI / インターフェースブロックチェーン
取引契約条件ウォレット管理ペイメント ( 送金 )
形成アルゴリズムハッシュ (SHA-256 & RIPEMD-160)公開鍵 vs 公開鍵ハッシュECDSA / secp256k1マークルツリーブルームフィルター
ビットコインの P2P ネットワークDNS を用いてシードサーバーへ接続1000 ピア以下のリストをダウンロード旧バージョンでは IRC を使っていた ( < 0.6)TCP/8333 でリッスン状態メッセージの送受信をピアと行う「 inv 」メッセージで最新状態に
ちょうど先日 (10/12) にヘッダ先同期が仮実装
取引とはビットコインの拡張性がここにあり入力と出力の概念コーディングのことを「契約条件」と呼ぶコード以外のデータも挿入可未使用出力のことを「 UTXO 」と呼ぶ採掘手数料は出力に当てられていない入力の余分「コインベース」取引は特別
取引を見よう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
取引の連鎖
TXID 'B'
TXID 'C' ( 複数入力 )
コインベース TXID 'A'
Block #300( 最古 )
Block #301 Block #302 Block #303( 最新 )
ブロック跨ぎでも!
取引は契約なり「送金」というのは行為というより記録全取引は契約のように条件が盛り込まれているForth のようにスタック手法 (register なし ) 、
チューリング完全でないStack は Little Endian 、可変長整数、 MSB で +- が決まるFalse = 0 、 True = 0 以外のデータ全てエラーが無く、 Stack の最上層が True なら成立採掘者は採掘する前に契約の True さを確認通常ピアも横渡しする前に確認
契約条件について現在コマンドが 100 個程度よく使われるのが十数個 'standard' vs 'non-standard'四つほどの
テンプレートが殆ど間違いは巻き戻せない
ブロックとは?承認 ( 採掘 ) された取引の塊平均的に 1 ブロック 400- 600 取引程度サイズの上限が 1000 KiBコインベース取引が 1 つ前ブロックのヘッダのハッシュ含まれた取引のマークルルーツノンス
ブロックを見てみよう
取引 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.
ブロックチェーンとは?特定の順番にあるブロックの連鎖ビットコイン史上全ての取引が含まれている大体 33万ブロックでサイズが 22GB 程度 (2014/10/12)ブロック高さが絶対的な時間の位置ブロック深さが最新ブロックに対する相対的な
時間の位置0.9 以降はヘッダのみの SPV モードに対応 (26MB 程度 )ゆくゆくは非 UTXO の取引を除く「 Pruning 」も可能
採掘者の仕事は?ダブルスペンド防止と通貨の発行もらった取引をブロックに入れていく有効なブロック ID( ハッシュ ) を見つける有効なブロック発見時にネットワークに配信2016 ブロック ( 約 2週間 ) ごとに難易度が自動調整 ブロックのハッシュが前ブロックのハッシュに依存するため、攻撃者との競争がブロックを見つける度に再び0からスタートする
ブロックチェーンの動き
300
301 302 303
304 305 306
無効なブロック報酬無し
無駄な時間採掘者のお金の無駄短いチェーンが負ける
=有効なブロック
25 BTC の報酬=
ブロック高さ (時間 )
7 ブロック ( 約 70 分 )
100,000,000 サトシ
1 ビットコインとは何か?
サトシとは?未使用出力 (UTXO) の出力額公開鍵ハッシュに宛ててある取引の中ブロックの中 ブロックチェーンの中
近い将来x.509 と http 連動NFC でネット不要BIP 70 (瞬時確認 )契約条件解禁サイドチェーンBIPs の Github を参照!
https://github.com/bitcoin/bips
スケーリングについてビットコインは平均 1秒 1 取引のペースで動く今の上限は故意に抑えられた結果本当の一番のネックは取引・ブロックの
ハッシュ確認の処理時間恐らく一般デスクトップ型の CPU では
1秒 4,000 取引が限界ではないかとネットワークの速度でいうと 16 Mbpsブロックチェーンの膨大化サトシ氏の一番の悩みがネットワークが
技術的成熟する前に広まりすぎてしまうこと
ご清聴ありがとうございます本日受講された皆様限定!
ビットバンクウォレットを作成された方にもれなくビットコインをプレゼントします!
https://bitbankwallet.jp/