Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクト

633 views

Published on

e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクト

Published in: Technology
  • Be the first to comment

e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクト

  1. 1. Copyright ©2016 HAW International Inc. all rights reserved. e-ZUKA Tech Night Bitcoinのブロックチェーンで できるコントラクト 2016/08/10 株式会社ハウインターナショナル 安土茂亨
  2. 2. Copyright ©2016 HAW International Inc. all rights reserved. 株式会社ハウインターナショナル Blockchainに関する取り組み •共同研究 ‣カラードコインの電子投票などへの応用 ‣Open Assets Protocolの実装の一つである openassets-rubyを独自開発しGithubで公開 ‣共同研究者 - 近畿大学 産業理工学部 山崎重一郎 教授 ● 専門分野:暗号技術など •製品・サービス開発 ‣Congrechain ‣ブロックチェーン実証環境Chaintope ‣Open Assets Explorer
  3. 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. 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. 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. 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. 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. 8. Copyright ©2016 HAW International Inc. all rights reserved. マルチシグ Bitcoinを使用する際に複数個の署名を必要とする仕組み。 3人のうち2人の署名があればBitcoinを使用できる アリス ボブ キャロル 2 アリスの公開鍵 ボブの公開鍵 キャロルの公開鍵 3 CHECKMULTISIG 2-of-3のマルチシグScript
  9. 9. Copyright ©2016 HAW International Inc. all rights reserved. タイムロック 将来のある時点までBitcoinをロックする仕組み ● OP_CLTV(Check Locktime Verify) 絶対時刻でロックする方法 この出力を指定ブロック高 or 指定時刻までロックする ● OP_CSV(Check Sequence Verify) 相対時間でロックする方法 この出力を持つトランザクションがBlockに含まれてから ○○ブロック経過するまでロックする
  10. 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. 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. 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. 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. 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. 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. 16. Copyright ©2016 HAW International Inc. all rights reserved. Bitcoinで作るコントラクト Bitcoinではコインのロック及びその解除条件を Scriptとして記述し、コントラクトを表現する。 ● マルチシグ ● タイムロック(OP_CLTV、OP_CSV) ● SIGHASH_TYPEによる部分的な署名 ● etc...

×