More Related Content
Similar to e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクト (20)
e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクト
- 1. Copyright ©2016 HAW International Inc. all rights reserved.
e-ZUKA Tech Night
Bitcoinのブロックチェーンで
できるコントラクト
2016/08/10
株式会社ハウインターナショナル
安土茂亨
- 2. Copyright ©2016 HAW International Inc. all rights reserved.
株式会社ハウインターナショナル
Blockchainに関する取り組み
•共同研究
‣カラードコインの電子投票などへの応用
‣Open Assets Protocolの実装の一つである
openassets-rubyを独自開発しGithubで公開
‣共同研究者
- 近畿大学 産業理工学部 山崎重一郎 教授
● 専門分野:暗号技術など
•製品・サービス開発
‣Congrechain
‣ブロックチェーン実証環境Chaintope
‣Open Assets Explorer
- 3. Copyright ©2016 HAW International Inc. all rights reserved.
Blockchainのデータ構造
Block
Transaction Input
Output
Block Block Block
Transaction
Transaction
Input
Output
Output
Output
Output
10 min 10 min 10 min
- 4. Copyright ©2016 HAW International Inc. all rights reserved.
Blockchainのデータ構造
Transaction
Input
Output
Input
Output
Output
Transaction
Input
Output
Output
Transaction
Input
Output
Input
Output
Output
Transaction
Input
Input
…
入力は必ず既存のトランザク
ションの出力と1対1になる
入力に使われていない出力(UTXO)が
使用可能なBitcoinの量
- 5. Copyright ©2016 HAW International Inc. all rights reserved.
通常のBitcoinの送付
Transaction
Output (3 BTC)Input (5 BTC)
Output (2 BTC)
【Address】
1Kci5….iNbt
【Address】
19XW….VpA
アリス
ボブ
アリスからボブに3 BTCを送付
②署名
③ブロードキャスト
①トランザクションを作成
- 6. Copyright ©2016 HAW International Inc. all rights reserved.
アドレスの種類
● P2PKH(Pay to PubKey Hash)
”1”から始まる一般的に利用されるアドレスで、
相手の公開鍵ハッシュへ支払う。
BTCを受け取ったユーザは、公開鍵ハッシュに対応する
秘密鍵を使えばBTCを使用できる。
● P2SH(Pay to Script Hash)
”3”から始まるアドレスで、公開鍵に代わって任意の
スクリプトのハッシュへ支払う。
このBTCを利用するには元のScript(redeem script)を
知り、その解除条件を満たす必要がある。
- 7. Copyright ©2016 HAW International Inc. all rights reserved.
Bitcoinで使えるScript
BitcoinにはTransaction内にスタック型のScriptが記述でき、
このScriptを使ってBitcoinの取引を行っている。
P2PKHを使った送金であれば ↓
このロックを解除するのが
● 署名と公開鍵をスタックにPUSH
● OP_DUPでスタックの一番上のアイテム(公開鍵)をコピー
● OP_HASH160で一番上のアイテム(公開鍵)の
RIPMED160(SHA256×2)のハッシュ値を返却
● OP_EQUALVERIFYでさっき計算したハッシュ値とトランザクションの
公開鍵のハッシュが一致するかチェック
● OP_CHECKSIGで署名が公開鍵に対応したものかチェック
OP_DUP OP_HASH160 公開鍵ハッシュ OP_EQUALVERIFY OP_CHECKSIG
公開鍵に対応した秘密鍵による署名 公開鍵
- 8. Copyright ©2016 HAW International Inc. all rights reserved.
マルチシグ
Bitcoinを使用する際に複数個の署名を必要とする仕組み。
3人のうち2人の署名があればBitcoinを使用できる
アリス ボブ キャロル
2 アリスの公開鍵 ボブの公開鍵 キャロルの公開鍵 3 CHECKMULTISIG
2-of-3のマルチシグScript
- 9. Copyright ©2016 HAW International Inc. all rights reserved.
タイムロック
将来のある時点までBitcoinをロックする仕組み
● OP_CLTV(Check Locktime Verify)
絶対時刻でロックする方法
この出力を指定ブロック高 or 指定時刻までロックする
● OP_CSV(Check Sequence Verify)
相対時間でロックする方法
この出力を持つトランザクションがBlockに含まれてから
○○ブロック経過するまでロックする
- 10. Copyright ©2016 HAW International Inc. all rights reserved.
Scriptを組み合わせて作るコントラクト
● 有効期限のあるエスクロー
アリスとボブとエスクローのうち2つの署名があれば、
いつでもBitcoinを利用可能だが、30日経過すると
アリスの署名だけでBitcoinを利用可能になる。
IF
2 <アリスの公開鍵> <ボブの公開鍵> <エスクローの公開鍵> 3 CHECKMULTISIGVERIFY
ELSE
"30d" CHECKSEQUENCEVERIFY DROP
<アリスの公開鍵> CHECKSIGVERIFY
ENDIF
- 11. Copyright ©2016 HAW International Inc. all rights reserved.
Scriptを組み合わせて作るコントラクト
● 資金の凍結
● 期間限定クーポン
Open Assets等のアセットと組み合わせて
期間を限定したクーポンアセットを表現
IF
<アリスの公開鍵> CHECKSIGVERIFY
ELSE
"30d" CHECKSEQUENCEVERIFY DROP
<管理者の公開鍵> CHECKSIGVERIFY
ENDIF
<凍結時間> CHECKLOCKTIMEVERIFY DROP DUP HASH160 <所有者の公開
鍵> EQUALVERIFY CHECKSIG
- 12. Copyright ©2016 HAW International Inc. all rights reserved.
P2SH(Pay to Script Hash)
<凍結時間> CHECKLOCKTIMEVERIFY DROP DUP HASH160 <所有者の公開
鍵> EQUALVERIFY CHECKSIG
03883e0db1752103e39299dcced3f711fd5042bb491d6351ec38b1e05140817
9ca579f1d7b4ac80bac
c367b99a86f207d6345ff37a32b7001a64fc70f4
シリアライズ
ハッシュ生成
HASH160 c367b99a86f207d6345ff37a32b7001a64fc70f4 EQUAL
P2SHスクリプト作成
3NB4S1dZew1kYzxyikM2T6qEsF2mZ3zCzLk
P2SHアドレス
- 13. Copyright ©2016 HAW International Inc. all rights reserved.
Bitcoin 2.0と呼ばれるプロダクトの一種。
Bitcoinに色付けをすることで株式、証券、ユーザ独自通貨等のあらゆる資産
を表現し、Blockchain上でアセットの発行や送付を可能にするプロトコル。
Bitcoinと異なり、発行主体が存在するため債権債務関係などを構成できる。
第三者機関による
オーソリティが必要
Open Assets Protocol
従来の権利の移転
Blockchainにおける権利の移転
Block Block Block
Transaction
Output
Input
第三者機関
ブロードキャスト
署名
- 14. Copyright ©2016 HAW International Inc. all rights reserved.
Asset IDによる色付け
色を識別するID = Asset ID(発行者の秘密鍵から生成)
“AJk2Gx5V67S2wNuwTK5hef3TpHunfbjcmX”
Asset Quantity
Asset QuantityでBitcoinとは別にアセットの量を定義
Metadata
アセットに関する定義をJSONで定義
※約款のような位置付け
Open Assets Protocolに登場する概念
- 15. Copyright ©2016 HAW International Inc. all rights reserved.
BitcoinのBlockchainの上位Protocol
Transaction
Input
Output
Input
Output
Output
通常のBitcoinのトランザクションにMarker Outputと呼ばれる特殊な出力を
1つ加えることでOpen Assetsのトランザクションになる
OP_RETURN 4f41010001904e00...
Marker Output
OAP Marker 4f41
Version number 0100
Asset quantity count 1
Asset quantity list [ 2000 ]
Metadata length 16
Metadata u=http://goo.gl/fS4mEj
Bitcoinの上位Protocolであるため
Bitcoinの制約を受けるが、
BitcoinのScriptなど機能は
そのまま利用可能
- 16. Copyright ©2016 HAW International Inc. all rights reserved.
Bitcoinで作るコントラクト
Bitcoinではコインのロック及びその解除条件を
Scriptとして記述し、コントラクトを表現する。
● マルチシグ
● タイムロック(OP_CLTV、OP_CSV)
● SIGHASH_TYPEによる部分的な署名
● etc...