More Related Content
More from bitbank, Inc. Tokyo, Japan (20)
ビットコイン~原理からソースまで~
- 3. ビットコインの始まり
• 論文は2008年10月31日
metzdowd.comにて公開
• バージョン0.1は2009/01/09
• Windowsのみ
• CLI無し
• wxWidgetsとBerkeleyDBと
Boostを使用
• MVSでコンパイル
• 2010年中旬に
Gavin Andresen & Jeff Garzikに舵を取ってもらった。
- 5. モジュール
P2Pネットワーク
採掘アルゴリズム
GUI / インターフェース
ブロックチェーン
取引
契約条件
ウォレット管理
ペイメント(送金)
- 8. 取引とは
ビットコインの拡張性がここにあり
入力と出力の概念
コーディングのことを「契約条件」と呼ぶ
コード以外のデータも挿入可
未使用出力のことを「UTXO」と呼ぶ
採掘手数料は出力に当てられていない入力の余分
「コインベース」取引は特別
- 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
- 10. 取引の連鎖
TXID 'B'
TXID 'C' (複数入力)
Block #300
(最古)
コインベース
TXID 'A'
Block #301 Block #302 Block #303
(最新)
- 11. 取引は契約なり
「送金」というのは行為というより記録
全取引は契約のように条件が盛り込まれている
Forthのようにスタック手法(registerなし)、
チューリング完全でない
StackはLittle Endian、可変長整数、MSBで+-が決まる
False = 0、True = 0以外のデータ全て
エラーが無く、Stackの最上層がTrueなら成立
採掘者は採掘する前に契約のTrueさを確認
通常ピアも横渡しする前に確認
- 13. ブロックとは?
承認(採掘)された取引の塊
平均的に1ブロック400-600取引程度
サイズの上限が1000 KiB
コインベース取引が1つ
前ブロックのヘッダのハッシュ
含まれた取引のマークルルーツ
ノンス
- 14. ブロックを見てみよう
Block #299
ヘッダ
取引A
取引B
取引C
取引D
取引E
取引F
取引G
ハッシュに含まれない:
Magic No バージョン情報
Blocksize malloc() and sanity
Transaction count Sanity/speed opt.
ハッシュに含まれる:
Version 拡張性を見据えて
hashPrevBlock 前ブロックID
hashMerkleRoot 取引の承認
Time タイムスタンプ
Target Bits 難易度: 低=難
Nonce Proof of work
- 15. ブロックチェーンとは?
特定の順番にあるブロックの連鎖
ビットコイン史上全ての取引が含まれている
大体33万ブロックでサイズが22GB程度(2014/10/12)
ブロック高さが絶対的な時間の位置
ブロック深さが最新ブロックに対する相対的な
時間の位置
0.9以降はヘッダのみのSPVモードに対応(26MB程度)
ゆくゆくは非UTXOの取引を除く「Pruning」も可能
- 16. 採掘者の仕事は?
ダブルスペンド防止と通貨の発行
もらった取引をブロックに入れていく
有効なブロックID(ハッシュ)を見つける
有効なブロック発見時にネットワークに配信
2016ブロック(約2週間)ごとに難易度が自動調整
ブロックのハッシュが前ブロックのハッシュに
依存するため、攻撃者との競争がブロックを
見つける度に再び0からスタートする
- 17. ブロックチェーンの動き
300
301 302 303
304 305 306
無効なブロック
報酬無し
無駄な時間
=
採掘者のお金の無駄
短いチェーンが負ける
有効なブロック
=25 BTC の報酬
ブロック高さ(時間)
7 ブロック(約70分)
- 20. 近い将来
x.509 とhttp 連動
NFC でネット不要
BIP 70 (瞬時確認)
契約条件解禁
サイドチェーン
BIPsのGithubを参照!
https://github.com/bitcoin/bips
- 21. スケーリングについて
ビットコインは平均1秒1取引のペースで動く
今の上限は故意に抑えられた結果
本当の一番のネックは取引・ブロックの
ハッシュ確認の処理時間
恐らく一般デスクトップ型のCPUでは
1秒4,000取引が限界ではないかと
ネットワークの速度でいうと16 Mbps
ブロックチェーンの膨大化
サトシ氏の一番の悩みがネットワークが
技術的成熟する前に広まりすぎてしまうこと