SlideShare a Scribd company logo
Copyright ©2017 HAW International Inc. all rights reserved.
福岡ブロックチェーンエコノミー勉強会 in 東京
カラードコインの作り方
2017 / 09 / 27
株式会社ハウインターナショナル
安土 茂亨
Copyright ©2017 HAW International Inc. all rights reserved.
ハウインターナショナル
•Blockchainに関する取り組み
‣2nd Layer技術を中心に研究開発
‣Open Assets Protocolの実装の一つである
openassets-rubyを実装
https://github.com/haw-itn/openassets-ruby
‣BitcoinプロトコルのRuby実装(WIP)
https://github.com/haw-itn/bitcoinrb
•製品・サービス開発
‣Congrechain
‣ブロックチェーンPoC
‣Open Assets Explorer
Copyright ©2017 HAW International Inc. all rights reserved.
カラードコインとは?
ブロックチェーン上で任意のアセットを発行し、信頼できる
第三者機関を必要とせず、アセットを転々流通させることが
できる仕組み。Bitcoinとは異なり、発行主体が存在する。
Open Assets Protocol
Elements
Confidential Assets
Copyright ©2017 HAW International Inc. all rights reserved.
カラードコインの設計に必要な技術要素
● アセットの識別子
発行された任意のアセットを識別するためのユニークな
識別子の管理とアセットへのリンク
● アセットの量
トランザクションで任意のアセットの取引を行うことができ、
その総量が保証される
● アセットの発行パターン(追加発行の有無)
● アセットに関するメタデータとのリンク(オプション)
Copyright ©2017 HAW International Inc. all rights reserved.
カラードコインの実装方法
● オーバーレイ型
既存のトランザクションにOP_RETURNでメタデータを埋め込むことでBitcoin
以外のアセットを表現する実装方法。
通常のBitconのノードから見ると、メタデータが付いているだけのBitcoinの
送金に見え、コンセンサスルールではアセットについて関与しないため、仕様上
無効なトランザクションをブロードキャストできてしまう。
● ネイティブ型
Bitcoinと同様、ネイティブにアセットを取り扱い、コンセンサスルールにも組み
込まれる。コンセンサスルールに組み込まれているため、無効なトランザクショ
ンを作ってもトランザクションの検証に失敗し、ブロードキャストはできない。
Copyright ©2017 HAW International Inc. all rights reserved.
Open Assets Protocolの実装パターン
Copyright ©2017 HAW International Inc. all rights reserved.
Asset
Asset
トランザクションをオーバーレイ
Transaction
Version
Inputs
...
Outputs
Output 1
Marker Output
Output 2
Output 3
Locktime
オーバーレイ型の実装では、トランザクションを
カラーリングされたトランザクションとして識別できる
ような仕組みを導入するが、Bitcoinのノードからみる
と、その実体はあくまで普通のBitcoinのトランザクショ
ンになる。
アセットの送付先はBitcoinと同様、トランザクションのア
ウトプット単位で制御する。Bitcoinのアウトプットには必
ず少額のBitcoinもセットされており、そのBitcoinの量と
は別にアセットの量をオーバーレイする。
※ Bitcoinの量が0だとUTXOとして認識されないため
カラーリングされたトランザクションがカラーリングされていることは、
そのプロトコルに対応したノード/ウォレットでしか認識できない。
Copyright ©2017 HAW International Inc. all rights reserved.
オーバーレイに必要なOP_RETURN
BitcoinのトランザクションのアウトプットにはscriptPubkeyと呼ばれる、
コインのロック条件を記述したスクリプトがセットされている。
一般的なBitcoinを送金するP2PKHのスクリプト
OP_RETURNはスクリプトのOPCODEの1つで、この後ろに任意のデータ
(最大80バイト)をプッシュできる。
※基本的にはトランザクションに付き1つまでで、複数あると非標準トランザクションとみなされ大半
のノードはリレーしない。
scriptPubkeyにOP_RETURNを使うとそのアウトプットは無効なアウトプット
(コインを含まない)として解釈され、ブロックチェーンには記録されるが、
UTXOとしては使用できない。
任意のデータを記録できるOP_RETURNを使って拡張レイヤーを構築する
OP_DUP OP_HASH160 公開鍵ハッシュ OP_EQUALVERIFY OP_CHECKSIG
scriptPubKey
OP_RETURN <任意のデータ>
Copyright ©2017 HAW International Inc. all rights reserved.
Open Assets Protocolのトランザクションには必ず
Marker Outputと呼ばれる特殊な出力が1つ含まれ、
Open Assets Payloadが格納されている。
アセットの量の管理
Transaction
Version
Inputs
...
Outputs
Output 1
Marker Output
Output 2
Locktime
OP_RETURN <Open Assets Payload>
フィールド サイズ 内容
OAP Marker 2バイト Open Assets Protocolの出力であることを示すマーカーで、0x4f41を指定
Version 2バイト Open Assets Protocolのバージョン番号(0x0100)
Asset Quantityの数 1-9バイト Asset Quantityリスト内のアイテム数
Asset Quantityリスト 可変 トランザクションで送付されるアセットの量(LEB128でエンコード)
メタデータの長さ 1-9バイト メタデータの長さ
メタデータ 可変 任意のメタデータ(Asset Definition Pointer等を指定)
※OP_RETURNは任意の80バイトのデータを記録できるスクリプト
Open Assets Payloadで、このトランザクションの各アウトプットに割り当てるアセットの数が決まる。
OP_RETURN 4f41010001e80700
このトランザクションで取引されるアセットの数は1000個で
最初のアウトプットにその量が割当られる
(例)
※ 定義されているのは量のみで、そのAsset IDについてはここでは明示的に定義されていない。
Copyright ©2017 HAW International Inc. all rights reserved.
アセットの発行と送付の識別
Transaction
Version
Inputs
...
Outputs
Marker Output
Output 1
Output 2
Locktime
Marker Outputの位置でアセットの発行と送付のアウトプットを制御
Transaction
Version
Inputs
...
Outputs
Output 1
Marker Output
Output 2
Locktime
アセット発行Tx アセット送付Tx
アセット発行用のアウトプット
アセット送付用のアウトプット
あるアセットの新規発行と別のアセットの送付を1トランザクションで行うことも可能
Copyright ©2017 HAW International Inc. all rights reserved.
Asset IDの算出方法
Transaction
Version
Inputs
Input 1
Outputs
Marker Output
Output 1
Output 2
Locktime
Transaction
Version
Inputs
Input 1
Input 2
Outputs
Marker Output
Output 1
Output 2
Output 3
Locktime
Transaction
Version
Inputs
Input 1
Input 2
Outputs
Output 1
Marker Output
Output 2
Locktime
Transaction
Version
Inputs
Input 1
...
Outputs
Output 1
Output 2
Locktime
アセット送付Tx
アセット送付Tx
アセット発行Tx
アセットの識別子となるAsset IDは発行Txまで遡り
その入力が参照するアウトプットのscriptPubkeyから計算される
scriptPubkey
scriptPubkeyをHASH160し、エンコードしたものが Asset ID
Copyright ©2017 HAW International Inc. all rights reserved.
order based coloring
トランザクションの各インプットが保持しているアセットを、Marker Outputに定義
されている数だけ、順番に各アウトプットに割り当てる方法。
Inputs
Input 0
Asset Quantity : 3
Asset ID : A1
Input 1
Asset Quantity : 2
Asset ID : A1
Input 2
Asset Quantity : N/A
Asset ID : N/A
Input 3
Asset Quantity : 3
Asset ID : A1
Input 4
Asset Quantity : 3
Asset ID : A2
Marker Outputに定義されているAsset Quantity:[10, 4, 4, 1, 2]
Outputs
Output 0
Asset Quantity : 10
Asset ID : A3
Output 1 ( Marker )
Asset Quantity : N/A
Asset ID : N/A
Output 2
Asset Quantity : 4
Asset ID : A1
Output 3
Asset Quantity : 4
Asset ID : A1
Output 4
Asset Quantity : 1
Asset ID : A2
Output 4
Asset Quantity : 2
Asset ID : A2
新規発行アセット
Copyright ©2017 HAW International Inc. all rights reserved.
Asset Definition Pointer
OP_RETURN <Open Assets Payload>
トランザクションにはアセットに関するメタデータ(名称、アセットの定義、アイコ
ン、約款など)を十分に定義できるスペースは無いため、アセットのメタデータを
定義したファイルのポインターを、アセットを新規発行するトランザクションの
Open Assets Payloadのメタデータフィールドにセットする。
OP_RETURN 4f410100016417753d68747470733a2f2f676f6f2e676c2f75617043734a
u=https://goo.gl/uapCsJ
各ウォレットやノードは、アセット発行トランザクションの
メタデータをパースして、アセットの情報を表示する。
Copyright ©2017 HAW International Inc. all rights reserved.
Open Assets Protocolの実装方法
Open Assets Protocolでは、取引するアセットの量と各アウトプットへ
の割当をMarker Outputで行い、アセットの識別子は発行Txまで遡って
計算することで、アセットの量と識別子を管理している。
【メリット】
● トランザクションに最大80バイトのMarker Outputを挿入するだけなのでとて
もデータ効率が良い。(OP_RETURNなのでUTXOとしても管理されない)
● シンプルなプロトコルで各アウトプットには任意のBitcoin Scriptを使用でき
るため、BitcoinのScriptで実装できるコントラクトは、そのままセットにも適用
できる(Atomic SwapやPayment Channelなど)。
【デメリット】
● 各アウトプットの割り当てられているAsset IDを知るためには、アセットの発
行トランザクションまで辿る必要があるため、SPVでは実装できない。
● Bitcoinのコンセンサスルールとは関係ないため、アセットにとって無効なトラ
ンザクションもブロードキャストでき、その保護は各ノード/ウォレットが負う。
Copyright ©2017 HAW International Inc. all rights reserved.
ソフトフォークによるネイティブ実装
Copyright ©2017 HAW International Inc. all rights reserved.
ソフトフォークでカラードコインを実装
Johnson Lau氏によるBitcoinをソフトフォークしてカラードコインに対応する提案
https://github.com/jl2012/bips/blob/color/bip-color.mediawiki
【参照実装】
https://github.com/jl2012/bitcoin/commits/color
※ Tweetにあるように、おそらく導入されることはないと思われる。
これからのスライドはその前提でソフトフォークで実装するとした場合の話。
Copyright ©2017 HAW International Inc. all rights reserved.
Color Commitmentとアウトプットの拡張
Transaction
Version = 3
Inputs
...
Outputs
Color commitment
...
Locktime
<header> <color tag> <bit field>
フィールド サイズ 内容
header 4バイト OP_RETURN OP_PUSHDATA2 0x85 0xad
color tag 32バイト このコミットメントの対象となるcolorの識別子
bit field 可変 トランザクション内のどのアウトプットが
カラーリングされたアウトプットか示すビット列
アセットを送付するトランザクションには、必ずcolor識別子
ごとのColor Commitmentアウトプットが含まれる。
Output
value
scriptPubkey
Output
value
scriptPubkey
color
トランザクションのアウトプットの
構造に color 識別子を表す
256 bit のcolorフィールドを追加
既存のアウトプット構造
各アウトプットにアセットの識別子がセットされるため、出力のアセットが何なのかアウトプットのみで判断できる。
結果SPVノードでもアセットを識別できるようになる。
Copyright ©2017 HAW International Inc. all rights reserved.
アセットの発行と識別子
Input
scriptSig
sequence
OutPoint(txid, index)
sequenceフィールドをビット列として扱い、23番目と24番目
のビットでアセットの発行/送付、発行タイプを識別する。
● 23 番目のみビットがセットされている場合
追加発行が可能なアセットの新規発行を意味する。アセットの識別子は
ダブルSHA256(0x00008000 + 入力が参照するUTXOのscriptPubkey)
識別子がscriptPubkeyで構成されるため、同じscriptPubkeyを使えば、
同じ識別子のアセットが発行できる。
● 24 番目のみビットがセットされている場合
追加発行が不可能な不可能なアセットの新規発行を意味する。アセットの識別子
は、
ダブルSHA256(0x00000001 + 入力が参照するUTXOのOutPoint)
識別子がOutPointで構成されるため、一度発行したら、二度と同じ識別子の
アセットは発行できないことが保証される。
● 23番目と24番目両方のビットがセットされている場合
アセットの送付を意味し、この入力のアセットの識別子は、入力が参照する
アウトプットが持つ識別子になる。
"00000001000000000000000000000000"
0x80000000
"00000000100000000000000000000000"
0x00010000
"00000001100000000000000000000000"
0x80010000
Copyright ©2017 HAW International Inc. all rights reserved.
コンセンサスルールの追加
トランザクションのversionが3以上の場合、以下のチェックに引っかかるトランザク
ションは無効なトランザクションとしてブロックチェーンに組み入れられることはない。
● インプットのアセット数よりアウトプットのアセット数多くないか
● color commitmentにアセットが割り当てられていないか
● color commitmentのデータ長やcolor tag、bit fieldの範囲が不正でないか
● 1アウトプットに複数のアセットが割り当てられていないか
● インプットにアセットがないのに、アセットを送付するbitがセットされていないか
● インプットにアセットがあるのに、新規発行のbitがセットされていないか
● コインベースのアセット手数料が、ブロック内のアセット手数料を超えていない
か
( アセットも手数料としてマイナーが収集することも可能)
Copyright ©2017 HAW International Inc. all rights reserved.
ネイティブの実装方法
ネイティブの実装では、トランザクションの各アウトプットのvalueでアセッ
トの量を、アセットの識別子はアウトプットにcolorフィールドを追加して、
それぞれ管理する。
【メリット】
● 各アウトプットにアセットの識別子がセットされるため、SPVノードでもアセッ
トを扱うことができる。
● コンセンサスルールでアセットの検証も行われるため、無効なトランザクショ
ンがブロックチェーンに格納されることなく、ノードレベルで事前にチェックが
できる。
【デメリット】
● 各アウトプットにcolorフィールド(32バイト)が設けられ、データスペースを消
費する。
● アセットのメタデータを定義する仕様は無い。

More Related Content

What's hot

Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
Kenji Urushima
 
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
Kaito Minatoya
 
データベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみたデータベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみた
Hyperleger Tokyo Meetup
 
JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602
Masashi Sato
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
bitbank, Inc. Tokyo, Japan
 
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
Ryo Shimamura
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Kindai University
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
 
Bitcoin x javascript
Bitcoin x javascriptBitcoin x javascript
Bitcoin x javascript
Yuki Akiyama
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb, Inc.
 
ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性
Kenji Saito
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
Kindai University
 
Congre chain説明資料
Congre chain説明資料Congre chain説明資料
Congre chain説明資料
Kindai University
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
Takahiro Hayashida
 
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Kenji Urushima
 
Orb 仮想通貨・地域通貨ソリューション
Orb 仮想通貨・地域通貨ソリューションOrb 仮想通貨・地域通貨ソリューション
Orb 仮想通貨・地域通貨ソリューション
Wataru Fukatsu
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶ
Yuto Takei
 
Secrets of Izna
Secrets of IznaSecrets of Izna
Secrets of Iznanyaxt
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live ppt
Asteria Corporation
 
徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年
Kenji Saito
 

What's hot (20)

Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
 
データベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみたデータベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみた
 
JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
 
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Bitcoin x javascript
Bitcoin x javascriptBitcoin x javascript
Bitcoin x javascript
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
 
ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
Congre chain説明資料
Congre chain説明資料Congre chain説明資料
Congre chain説明資料
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
 
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
Certificate TransparencyによるSSLサーバー証明書公開監査情報とその課題の議論
 
Orb 仮想通貨・地域通貨ソリューション
Orb 仮想通貨・地域通貨ソリューションOrb 仮想通貨・地域通貨ソリューション
Orb 仮想通貨・地域通貨ソリューション
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶ
 
Secrets of Izna
Secrets of IznaSecrets of Izna
Secrets of Izna
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live ppt
 
徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年
 

Similar to 福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」

201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report
Takashi Torii
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
Kensaku Komatsu
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
Sho Yoshida
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
Pierre3 小林
 
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
Nat Sakimura
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
yaegashi
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
VirtualTech Japan Inc.
 
Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
Hyperleger Tokyo Meetup
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
Isao Takaesu
 
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
知礼 八子
 
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナーOpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
VirtualTech Japan Inc.
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
Tomokazu Kizawa
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
VirtualTech Japan Inc.
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
OpenStack API
OpenStack APIOpenStack API
OpenStack API
Akira Yoshiyama
 
エンタープライズソフトウェア開発とOSS
エンタープライズソフトウェア開発とOSSエンタープライズソフトウェア開発とOSS
エンタープライズソフトウェア開発とOSS
Hiroshi Nakamura
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
Kaoru Maeda
 
Contiv
ContivContiv

Similar to 福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」 (20)

201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
.NETの自作ツール公開手段
.NETの自作ツール公開手段.NETの自作ツール公開手段
.NETの自作ツール公開手段
 
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
 
Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
 
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
第2回すだちくん勉強会におけるIoT最新動向と題したプレゼン資料
 
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナーOpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
OpenStack Summit Sydney Report (NEC鳥居) - OpenStack最新情報セミナー
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
OpenStack環境構築入門 - OpenStack最新情報セミナー 2014年6月
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
OpenStack API
OpenStack APIOpenStack API
OpenStack API
 
エンタープライズソフトウェア開発とOSS
エンタープライズソフトウェア開発とOSSエンタープライズソフトウェア開発とOSS
エンタープライズソフトウェア開発とOSS
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
 
Contiv
ContivContiv
Contiv
 

Recently uploaded

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (15)

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」

  • 1. Copyright ©2017 HAW International Inc. all rights reserved. 福岡ブロックチェーンエコノミー勉強会 in 東京 カラードコインの作り方 2017 / 09 / 27 株式会社ハウインターナショナル 安土 茂亨
  • 2. Copyright ©2017 HAW International Inc. all rights reserved. ハウインターナショナル •Blockchainに関する取り組み ‣2nd Layer技術を中心に研究開発 ‣Open Assets Protocolの実装の一つである openassets-rubyを実装 https://github.com/haw-itn/openassets-ruby ‣BitcoinプロトコルのRuby実装(WIP) https://github.com/haw-itn/bitcoinrb •製品・サービス開発 ‣Congrechain ‣ブロックチェーンPoC ‣Open Assets Explorer
  • 3. Copyright ©2017 HAW International Inc. all rights reserved. カラードコインとは? ブロックチェーン上で任意のアセットを発行し、信頼できる 第三者機関を必要とせず、アセットを転々流通させることが できる仕組み。Bitcoinとは異なり、発行主体が存在する。 Open Assets Protocol Elements Confidential Assets
  • 4. Copyright ©2017 HAW International Inc. all rights reserved. カラードコインの設計に必要な技術要素 ● アセットの識別子 発行された任意のアセットを識別するためのユニークな 識別子の管理とアセットへのリンク ● アセットの量 トランザクションで任意のアセットの取引を行うことができ、 その総量が保証される ● アセットの発行パターン(追加発行の有無) ● アセットに関するメタデータとのリンク(オプション)
  • 5. Copyright ©2017 HAW International Inc. all rights reserved. カラードコインの実装方法 ● オーバーレイ型 既存のトランザクションにOP_RETURNでメタデータを埋め込むことでBitcoin 以外のアセットを表現する実装方法。 通常のBitconのノードから見ると、メタデータが付いているだけのBitcoinの 送金に見え、コンセンサスルールではアセットについて関与しないため、仕様上 無効なトランザクションをブロードキャストできてしまう。 ● ネイティブ型 Bitcoinと同様、ネイティブにアセットを取り扱い、コンセンサスルールにも組み 込まれる。コンセンサスルールに組み込まれているため、無効なトランザクショ ンを作ってもトランザクションの検証に失敗し、ブロードキャストはできない。
  • 6. Copyright ©2017 HAW International Inc. all rights reserved. Open Assets Protocolの実装パターン
  • 7. Copyright ©2017 HAW International Inc. all rights reserved. Asset Asset トランザクションをオーバーレイ Transaction Version Inputs ... Outputs Output 1 Marker Output Output 2 Output 3 Locktime オーバーレイ型の実装では、トランザクションを カラーリングされたトランザクションとして識別できる ような仕組みを導入するが、Bitcoinのノードからみる と、その実体はあくまで普通のBitcoinのトランザクショ ンになる。 アセットの送付先はBitcoinと同様、トランザクションのア ウトプット単位で制御する。Bitcoinのアウトプットには必 ず少額のBitcoinもセットされており、そのBitcoinの量と は別にアセットの量をオーバーレイする。 ※ Bitcoinの量が0だとUTXOとして認識されないため カラーリングされたトランザクションがカラーリングされていることは、 そのプロトコルに対応したノード/ウォレットでしか認識できない。
  • 8. Copyright ©2017 HAW International Inc. all rights reserved. オーバーレイに必要なOP_RETURN BitcoinのトランザクションのアウトプットにはscriptPubkeyと呼ばれる、 コインのロック条件を記述したスクリプトがセットされている。 一般的なBitcoinを送金するP2PKHのスクリプト OP_RETURNはスクリプトのOPCODEの1つで、この後ろに任意のデータ (最大80バイト)をプッシュできる。 ※基本的にはトランザクションに付き1つまでで、複数あると非標準トランザクションとみなされ大半 のノードはリレーしない。 scriptPubkeyにOP_RETURNを使うとそのアウトプットは無効なアウトプット (コインを含まない)として解釈され、ブロックチェーンには記録されるが、 UTXOとしては使用できない。 任意のデータを記録できるOP_RETURNを使って拡張レイヤーを構築する OP_DUP OP_HASH160 公開鍵ハッシュ OP_EQUALVERIFY OP_CHECKSIG scriptPubKey OP_RETURN <任意のデータ>
  • 9. Copyright ©2017 HAW International Inc. all rights reserved. Open Assets Protocolのトランザクションには必ず Marker Outputと呼ばれる特殊な出力が1つ含まれ、 Open Assets Payloadが格納されている。 アセットの量の管理 Transaction Version Inputs ... Outputs Output 1 Marker Output Output 2 Locktime OP_RETURN <Open Assets Payload> フィールド サイズ 内容 OAP Marker 2バイト Open Assets Protocolの出力であることを示すマーカーで、0x4f41を指定 Version 2バイト Open Assets Protocolのバージョン番号(0x0100) Asset Quantityの数 1-9バイト Asset Quantityリスト内のアイテム数 Asset Quantityリスト 可変 トランザクションで送付されるアセットの量(LEB128でエンコード) メタデータの長さ 1-9バイト メタデータの長さ メタデータ 可変 任意のメタデータ(Asset Definition Pointer等を指定) ※OP_RETURNは任意の80バイトのデータを記録できるスクリプト Open Assets Payloadで、このトランザクションの各アウトプットに割り当てるアセットの数が決まる。 OP_RETURN 4f41010001e80700 このトランザクションで取引されるアセットの数は1000個で 最初のアウトプットにその量が割当られる (例) ※ 定義されているのは量のみで、そのAsset IDについてはここでは明示的に定義されていない。
  • 10. Copyright ©2017 HAW International Inc. all rights reserved. アセットの発行と送付の識別 Transaction Version Inputs ... Outputs Marker Output Output 1 Output 2 Locktime Marker Outputの位置でアセットの発行と送付のアウトプットを制御 Transaction Version Inputs ... Outputs Output 1 Marker Output Output 2 Locktime アセット発行Tx アセット送付Tx アセット発行用のアウトプット アセット送付用のアウトプット あるアセットの新規発行と別のアセットの送付を1トランザクションで行うことも可能
  • 11. Copyright ©2017 HAW International Inc. all rights reserved. Asset IDの算出方法 Transaction Version Inputs Input 1 Outputs Marker Output Output 1 Output 2 Locktime Transaction Version Inputs Input 1 Input 2 Outputs Marker Output Output 1 Output 2 Output 3 Locktime Transaction Version Inputs Input 1 Input 2 Outputs Output 1 Marker Output Output 2 Locktime Transaction Version Inputs Input 1 ... Outputs Output 1 Output 2 Locktime アセット送付Tx アセット送付Tx アセット発行Tx アセットの識別子となるAsset IDは発行Txまで遡り その入力が参照するアウトプットのscriptPubkeyから計算される scriptPubkey scriptPubkeyをHASH160し、エンコードしたものが Asset ID
  • 12. Copyright ©2017 HAW International Inc. all rights reserved. order based coloring トランザクションの各インプットが保持しているアセットを、Marker Outputに定義 されている数だけ、順番に各アウトプットに割り当てる方法。 Inputs Input 0 Asset Quantity : 3 Asset ID : A1 Input 1 Asset Quantity : 2 Asset ID : A1 Input 2 Asset Quantity : N/A Asset ID : N/A Input 3 Asset Quantity : 3 Asset ID : A1 Input 4 Asset Quantity : 3 Asset ID : A2 Marker Outputに定義されているAsset Quantity:[10, 4, 4, 1, 2] Outputs Output 0 Asset Quantity : 10 Asset ID : A3 Output 1 ( Marker ) Asset Quantity : N/A Asset ID : N/A Output 2 Asset Quantity : 4 Asset ID : A1 Output 3 Asset Quantity : 4 Asset ID : A1 Output 4 Asset Quantity : 1 Asset ID : A2 Output 4 Asset Quantity : 2 Asset ID : A2 新規発行アセット
  • 13. Copyright ©2017 HAW International Inc. all rights reserved. Asset Definition Pointer OP_RETURN <Open Assets Payload> トランザクションにはアセットに関するメタデータ(名称、アセットの定義、アイコ ン、約款など)を十分に定義できるスペースは無いため、アセットのメタデータを 定義したファイルのポインターを、アセットを新規発行するトランザクションの Open Assets Payloadのメタデータフィールドにセットする。 OP_RETURN 4f410100016417753d68747470733a2f2f676f6f2e676c2f75617043734a u=https://goo.gl/uapCsJ 各ウォレットやノードは、アセット発行トランザクションの メタデータをパースして、アセットの情報を表示する。
  • 14. Copyright ©2017 HAW International Inc. all rights reserved. Open Assets Protocolの実装方法 Open Assets Protocolでは、取引するアセットの量と各アウトプットへ の割当をMarker Outputで行い、アセットの識別子は発行Txまで遡って 計算することで、アセットの量と識別子を管理している。 【メリット】 ● トランザクションに最大80バイトのMarker Outputを挿入するだけなのでとて もデータ効率が良い。(OP_RETURNなのでUTXOとしても管理されない) ● シンプルなプロトコルで各アウトプットには任意のBitcoin Scriptを使用でき るため、BitcoinのScriptで実装できるコントラクトは、そのままセットにも適用 できる(Atomic SwapやPayment Channelなど)。 【デメリット】 ● 各アウトプットの割り当てられているAsset IDを知るためには、アセットの発 行トランザクションまで辿る必要があるため、SPVでは実装できない。 ● Bitcoinのコンセンサスルールとは関係ないため、アセットにとって無効なトラ ンザクションもブロードキャストでき、その保護は各ノード/ウォレットが負う。
  • 15. Copyright ©2017 HAW International Inc. all rights reserved. ソフトフォークによるネイティブ実装
  • 16. Copyright ©2017 HAW International Inc. all rights reserved. ソフトフォークでカラードコインを実装 Johnson Lau氏によるBitcoinをソフトフォークしてカラードコインに対応する提案 https://github.com/jl2012/bips/blob/color/bip-color.mediawiki 【参照実装】 https://github.com/jl2012/bitcoin/commits/color ※ Tweetにあるように、おそらく導入されることはないと思われる。 これからのスライドはその前提でソフトフォークで実装するとした場合の話。
  • 17. Copyright ©2017 HAW International Inc. all rights reserved. Color Commitmentとアウトプットの拡張 Transaction Version = 3 Inputs ... Outputs Color commitment ... Locktime <header> <color tag> <bit field> フィールド サイズ 内容 header 4バイト OP_RETURN OP_PUSHDATA2 0x85 0xad color tag 32バイト このコミットメントの対象となるcolorの識別子 bit field 可変 トランザクション内のどのアウトプットが カラーリングされたアウトプットか示すビット列 アセットを送付するトランザクションには、必ずcolor識別子 ごとのColor Commitmentアウトプットが含まれる。 Output value scriptPubkey Output value scriptPubkey color トランザクションのアウトプットの 構造に color 識別子を表す 256 bit のcolorフィールドを追加 既存のアウトプット構造 各アウトプットにアセットの識別子がセットされるため、出力のアセットが何なのかアウトプットのみで判断できる。 結果SPVノードでもアセットを識別できるようになる。
  • 18. Copyright ©2017 HAW International Inc. all rights reserved. アセットの発行と識別子 Input scriptSig sequence OutPoint(txid, index) sequenceフィールドをビット列として扱い、23番目と24番目 のビットでアセットの発行/送付、発行タイプを識別する。 ● 23 番目のみビットがセットされている場合 追加発行が可能なアセットの新規発行を意味する。アセットの識別子は ダブルSHA256(0x00008000 + 入力が参照するUTXOのscriptPubkey) 識別子がscriptPubkeyで構成されるため、同じscriptPubkeyを使えば、 同じ識別子のアセットが発行できる。 ● 24 番目のみビットがセットされている場合 追加発行が不可能な不可能なアセットの新規発行を意味する。アセットの識別子 は、 ダブルSHA256(0x00000001 + 入力が参照するUTXOのOutPoint) 識別子がOutPointで構成されるため、一度発行したら、二度と同じ識別子の アセットは発行できないことが保証される。 ● 23番目と24番目両方のビットがセットされている場合 アセットの送付を意味し、この入力のアセットの識別子は、入力が参照する アウトプットが持つ識別子になる。 "00000001000000000000000000000000" 0x80000000 "00000000100000000000000000000000" 0x00010000 "00000001100000000000000000000000" 0x80010000
  • 19. Copyright ©2017 HAW International Inc. all rights reserved. コンセンサスルールの追加 トランザクションのversionが3以上の場合、以下のチェックに引っかかるトランザク ションは無効なトランザクションとしてブロックチェーンに組み入れられることはない。 ● インプットのアセット数よりアウトプットのアセット数多くないか ● color commitmentにアセットが割り当てられていないか ● color commitmentのデータ長やcolor tag、bit fieldの範囲が不正でないか ● 1アウトプットに複数のアセットが割り当てられていないか ● インプットにアセットがないのに、アセットを送付するbitがセットされていないか ● インプットにアセットがあるのに、新規発行のbitがセットされていないか ● コインベースのアセット手数料が、ブロック内のアセット手数料を超えていない か ( アセットも手数料としてマイナーが収集することも可能)
  • 20. Copyright ©2017 HAW International Inc. all rights reserved. ネイティブの実装方法 ネイティブの実装では、トランザクションの各アウトプットのvalueでアセッ トの量を、アセットの識別子はアウトプットにcolorフィールドを追加して、 それぞれ管理する。 【メリット】 ● 各アウトプットにアセットの識別子がセットされるため、SPVノードでもアセッ トを扱うことができる。 ● コンセンサスルールでアセットの検証も行われるため、無効なトランザクショ ンがブロックチェーンに格納されることなく、ノードレベルで事前にチェックが できる。 【デメリット】 ● 各アウトプットにcolorフィールド(32バイト)が設けられ、データスペースを消 費する。 ● アセットのメタデータを定義する仕様は無い。