Upload
kenji-saito
View
571
Download
0
Embed Size (px)
Citation preview
ブロックチェーン 2.0ブロックチェーン連続講義第 6 回
慶應義塾大学 SFC研究所上席所員斉藤賢爾
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.1/42
今回のテーマブロックチェーン 2.0
ブロックチェーンの弱点を補ったり、デジタル通貨以外に応用するための多様な技術についての解説です
存在証明、カラードコイン/オープンアセッツ、Proof of
Stake、サイドチェーン、ビットコインブロックチェーンの拡張や応用事例など、それぞれの技術のもつ可能性と限界について解説します
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.2/42
ブロックチェーン 2.01. ビットコインブロックチェーンの応用2. ビットコインブロックチェーンの拡張3. ブロックチェーンの拡張技術
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.3/42
1. ビットコインブロックチェーンの応用
Abra –送金界の Uber – as is応用事例Proof of Existence –存在証明 –用途外応用事例
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.4/42
Abra送金界の Uber
https://www.goabra.com
近所の個人や店舗等を利用して現金を入出金Abraは送金業だが、自分ではお金を預からないcf. Uberはタクシー業だが、自分では車両を持たないcf. Airbnbはホテル業だが、自分では宿泊施設を持たない
システム内での送金は無料
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.5/42
AbraとはP2P送金ネットワークモバイルアプリに入金(テラーまたはデビットカード経由)
アプリから送金 (無料)
テラー (teller)から出金テラー→人間 ATM →すなわち ATM
誰もが金銭出納係になれるビットコインをバックエンドとして利用
BTCに交換して送金
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.6/42
手数料Abraはテラーが大体 1.5%の手数料を設定することを推奨Abraは取引当たり 0.25%の手数料を設定テラーが手数料を取らなければ、Abraも取らない(by CEO)
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.7/42
バックエンドBTCを移転 (USD価格を 3日間固定)
ヘッジコストは Abraの手数料に含まれる固定価格失効に関する UIは将来整備 (昨秋の時点)
ヘッジコントラクトは当初はサーバに格納スマートコントラクトに移行
“Don’t lose your phone!” (秘密鍵の在処は?)
Abraはユーザのお金を預からないマルチシグは検討したが最初のバージョンでは使っていない
本来、カラードコインで実装できるという印象
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.8/42
Proof of Existence (存在証明)個人が開設してしまった公証サービス
https://proofofexistence.com
ある時点で文書が存在していたことを証明文書自体を公開することなく所持していることを証明改ざんがあれば検出
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.9/42
Proof of Existence (存在証明)
指定された文書のダイジェストをビットコインブロックチェーンに埋め込む (出力スクリプト部分に)
OP_RETURNの後ろにOP_RETURN =その時点でスクリプト実行を失敗と見なす
⇒ 誰も受け取れない宛先 (burn =消 (焼) 失)として利用される
0x444f4350524f4f46 (‘DOCPROOF’) に続いて文書の SHA-256ダイジェストを埋め込む
Bitcoin blockchain explorer等で探してみてください毎日のように利用されています
手数料は 5 mBTC (0.005 BTC)
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.10/42
2. ビットコインブロックチェーンの拡張
カラードコインの概念オープンアセッツSegregated Witness
拡張のための手続き
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.11/42
カラードコインの概念ビットコインブロックチェーンで BTC以外の「量」を取り扱う次のようなことに応用可能
独自/既存の通貨、証券、スマートプロパティ、. . .
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.12/42
カラードコイン (Colored Coins)
ビットコインのブロックチェーンにビットコイン以外の状態遷移を載せる「量」に BTC以外の意味を持たせる ←元々はこういう発想図は過去に検討された設計
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.13/42
異なるカラードコイン実現方式EPOBC
前頁の図の方式の延長上にある
オープンアセッツ (Open Assets)
OP_RETURNのみの活用にもとづく方式
両者に互換性はない
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.14/42
オープンアセッツOpen Assets Protocol (OAP)
ビットコインブロックチェーンの上で任意の「量」の体系を取り扱えるようにするハック(ハック =とりあえずの解法)
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.15/42
IDと量アセット ID (asset ID)
1. 秘密鍵を生成する2. 対応する公開鍵ダイジェストに向けた出力スクリプトを作るアセット発行取引の最初の入力で参照する
3. 当該スクリプトの 160ビットダイジェストを得る=アセット ID (アセットを互いと区別するための識別子)
4. base58check形式では ‘A’から始まる(バージョンバイト = 23)
アセット量 (asset quantity)
当該アセットが何単位あるかBTCの量とは独立
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.16/42
マーカー出力OP_RETURNに続けて以下のペイロードを PUSH
項目 意味 サイズマーカー 0x4f41 (‘OA’) =オープンアセッツ 2バイトバージョン 現在は 0x0100 2バイトアセット量の数 可変長整数 1∼9バイトアセット量リスト LEB128形式符号無し整数の列 可変長メタデータ長 可変長整数 1∼9バイトメタデータ 空でもよい 可変長
マーカー出力の手前の出力はアセットの発行マーカー出力より後ろの出力はアセットの移転
いずれも対応するアセット量がゼロでない限りブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.17/42
オープンアセッツのデータ構造
赤い部分がオープンアセッツプロトコルを通して見える世界ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.18/42
Segregated Witnessビットコインブロックチェーンで署名データを取引データ本体から分離するハック(ハック =とりあえずの解法)
展性 (malleability)を根絶できるデータ転送を効率化したりデータサイズを縮小できる
必要がなければ署名や公開鍵のデータを転送しない
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.19/42
取引のデータ構造
入力スクリプトを取りやめるその代わりに、入力における証明 (witness)の方法をパターン化
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.20/42
コミットメントブロックのデータに対する新しいルール生成取引の出力スクリプトにて、OP_RETURNに続けて以下のペイロードを PUSH
項目 意味 サイズヘッダー 0xaa21a9ed 4バイト証明 (witness)ルート 二重 SHA-256値 32バイト
ただし証明ルートは、拡張された取引データ全体のダイジェストについて、取引の Merkleルートと同様に計算
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.21/42
証明プログラム (1)
P2WPKH (version 0) (pay-to-(witnessed)-public-key-hash)
witness (証明): <署名 > <公開鍵 >
scriptSig (入力スクリプト): 空scriptPubKey (出力スクリプト) 0 <20-byteダイジェスト >
20-byteダイジェストで指定された公開鍵への送金証明を <署名 > <公開鍵 > CHECKSIG と解釈
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.22/42
証明プログラム (2)
P2WSH (version 0) (pay-to-(witnessed)-script-hash)
witness: < 署名 1 > <1 < 公開鍵 1 > < 公開鍵 2 > 2 CHECKMULTISIG>
scriptSig: 空scriptPubKey 0 <32-byteダイジェスト >
32-byteダイジェストで指定されたスクリプトを処理この例では 1-out-of-2マルチシグの確認
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.23/42
拡張のための手続きビットコインブロックチェーンの技術を更新するには?
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.24/42
BIP (Bitcoin Improvement Proposal)
提案文書兼仕様書ex. BIP 1 : BIP Purposes and Guidelines
https://github.com/bitcoin/bips/blob/master/bip-0001.mediawiki
ex. BIP 141 : Segregated Witness (Consensuslayer)
TCP/IPにおける RFCや XMPPにおける XEPと同様異なるのは、現場でテストされずディプロイされうること
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.25/42
3. ブロックチェーンの拡張技術Proof of Stake (持ち分証明)
サイドチェーン信頼できるタイムスタンプのための試案
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.26/42
Proof of Stake (持ち分証明)
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.27/42
Proof of Stakeとは?ブロックを生成できる確率が、当該コインの持ち分の多さに応じて上昇する次の利点をもつと言われるエネルギー消費が低い (無視できる)
集約がより困難 (コインの過半数を所有できるか)
ピアコインなどで採用される
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.28/42
Proof of Stakeの一般式
Hn(PD + id + t + . . .) ≤2n × balance
d
Hn : nビット値を出力する暗号学的ハッシュ関数(ex. SHA-256 (n = 256))
PD : 直前のブロックのダイジェストid : アカウントの識別子 (ex. 公開鍵のダイジェスト)
t : 時刻 (ex. UNIX時刻 (秒))
balance : 当該アカウントの残高d : 難易度 (ex. コインの総量)
ダイジェストを用いる POWの形式で表されるブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.29/42
Proof of Stakeの 3つの問題1. コインの溜め込み2. “Nothing at Stake”
短期的問題長期的問題
3. 低コスト 51%攻撃
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.30/42
コインの溜め込み持ち分が多い方が有利なので、コインは溜め込まれ、使われない傾向が生じる貨幣メディアとしての基本機能が阻害される
対策 : Proof of Stake Velocity
古いコインの持ち分評価を下げるReddcoinなどで採用される
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.31/42
Nothing at Stake -短期的問題
事故または故意にチェインが分岐した場合、参加者には事態を収拾する動機がない何も賭けていない
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.32/42
Nothing at Stake -長期的問題
システムを開始した者は何度でも全体をやり直せるジェネシスブロックの時点で持ち分は 100%
その他の参加者も、持ち分さえあればそこからやり直せる素の Proof of Stakeでは偽造を抑止できない
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.33/42
低コスト 51%攻撃コインの過半数を取得する意思と、そのための十分な資金の証拠を表明するすると、システムの正常な維持が期待できないと予想されるため、コインの価格が急落するそこでコインを買い占める
原理的には、ほとんどコストを払わずにコインの過半数を入手できる
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.34/42
サイドチェーンポリシーの異なるチェーンを併用できるとされるが . . .
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.35/42
サイドチェーン技術とその問題
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.36/42
ブロックチェーンにおけるトークン
希ではあるが、後戻りの可能性をもつサイドチェーンでは、後戻りがチェーンを跨ぐ危険性がある
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.37/42
サイドチェーンの無意味性信用が存在しないことを前提
→ ある取引列の終端が確定できない確定できるのであればメインチェーンに依拠する理由はない
⇒ サイドチェーンを採用する理由は無い
新しい発見ではなく、サイドチェーンの論文に書かれている記述から金融への応用可能性についてもたらされる帰結
A. Back, et. al., “Enabling Blockchain Innovations with
Pegged Sidechains”, 2014
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.38/42
信頼できるタイムスタンプのための試案
普通の意味での分散タイムスタンプサーバの実現に向けて
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.39/42
課題一般にブロックのタイムスタンプは信用できない(何重かの意味で)
1. そもそも取引の時刻を表さない2. マイニング過程で操作されうる時刻を進めることで異なるダイジェストを得られる
取引の発生時刻や確定 (しないけど)時刻を取り扱うには?
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.40/42
解決方法の例取引データ内にタイムスタンプを格納するこれも自己申告となるビットコインブロックチェーンであれば、例によって OP_RETURNが利用可能
時刻サーバによるデジタル署名を施すサーバを使うだって?!
ビットコインではそもそも DNSを用いているネームサーバ群をボランティアが運用している
⇒ 同じことでは?
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.41/42
ご質問や議論を
ブロックチェーン連続講義第 6 回「ブロックチェーン 2.0」— 2016-04-01 – p.42/42