(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-26
(45)【発行日】2024-04-03
(54)【発明の名称】ブロックチェーンを用いて実施される機械実行可能コントラクトの状態を決定する、コンピュータにより実装されるシステム及び方法
(51)【国際特許分類】
G06F 16/907 20190101AFI20240327BHJP
G06Q 20/38 20120101ALI20240327BHJP
H04L 9/32 20060101ALI20240327BHJP
G06F 16/28 20190101ALI20240327BHJP
【FI】
G06F16/907
G06Q20/38 310
H04L9/32 200Z
G06F16/28
【外国語出願】
(21)【出願番号】P 2022134169
(22)【出願日】2022-08-25
(62)【分割の表示】P 2019538623の分割
【原出願日】2018-01-29
【審査請求日】2022-08-25
(32)【優先日】2017-01-31
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヒメネス-デルガード,ペドロ
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】国際公開第2017/010455(WO,A1)
【文献】米国特許出願公開第2016/0306982(US,A1)
【文献】国際公開第2017/005527(WO,A1)
【文献】アントノプロス アンドレアス,ビットコインとブロックチェーン,第1版,日本,NTT出版株式会社 長谷部 敏治,2016年07月21日,p.022-023,120-124,140-144,161,230
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06Q 10/00-99/00
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンの未使用アウトプット(UTXO)に含まれる情報を検索する、コンピュータにより実施される方法であって、
a)機械実行可能スマートコントラクトの複数の状態の中の所与の状態について、前記所与の状態に関連付けられたメタデータに基づき、情報公開鍵を生成するステップと、
b)前記情報公開鍵に関連する検索語を構成するステップと、
c)前記検索語に一致する未使用アウトプット(UTXO)について前記ブロックチェーンを検索するステップと、
を含み、
前記情報公開鍵を生成することは、前記所与の状態を、少なくとも、指定段階、メタデータ構成段階、及び評価段階に通すことを含む、方法。
【請求項2】
d)前記検索語に一致する前記未使用アウトプット(UTXO)から情報を抽出するステップと、
e)前記抽出した情報から、前記機械実行可能スマートコントラクトの状態を決定するステップと、
を更に含む請求項1に記載の方法。
【請求項3】
前記機械実行可能スマートコントラクトは、決定性有限オートマトンを用いて実施され、前記機械実行可能スマートコントラクトの状態を決定するステップは、前記決定性有限オートマトンの状態を決定するステップを含む、請求項1又は2に記載の方法。
【請求項4】
前記所与の状態に対して再生可能処理を適用することにより、暗号鍵が生成され、同じ再生可能処理が検索中の前記ブロックチェーンの未使用アウトプット(UTXO)に含まれる情報を生成している、請求項1~3のいずれかに記載の方法。
【請求項5】
前記検索語は、前記情報公開鍵から構成される請求項1~4のいずれかに記載の方法。
【請求項6】
検索することは、検索及び一致段階により提供され、前記検索語に一致する未使用アウトプット(UTXO)は、前記情報公開鍵と及び/又は前記所与の状態に関連付けられたメタデータとペアにされる、請求項1~5のいずれかに記載の方法。
【請求項7】
ペアにすることは、データベース内で提供される、請求項6に記載の方法。
【請求項8】
前記指定段階は、前記所与の状態を選択することを含み、前記所与の
状態を識別するためにコード又はタグ指定段階を含む、請求項1~7のいずれかに記載の方法。
【請求項9】
前記メタデータ構成段階は、前記所与の状態及び/又は前記コード若しくはタグをメタデータに変換することを含む、請求項8に記載の方法。
【請求項10】
前記メタデータは、前記情報公開鍵に組み込まれる、請求項9に記載の方法。
【請求項11】
結合段階を更に含み、前記結合段階は、ロックスクリプトを生成することを含む、請求項1~10のいずれかに記載の方法。
【請求項12】
前記結合段階は、前記ロックスクリプトのハッシュを生成する、請求項11に記載の方法。
【請求項13】
前記評価段階は、前記ロックスクリプト又は前記ロックスクリプトのハッシュから、値を取得して、前記検索語を提供することを含む、請求項11又は12に記載の方法。
【請求項14】
システムであって、
コンピュータにより実装され、請求項1~13のいずれかに記載の方法を実行するよう構成されるシステム。
【請求項15】
ブロックチェーンを介してDFAを実施するよう構成される少なくとも1つのコンピューティングエージェントと、
ブロックチェーンプラットフォームと、
を更に含む請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータにより実装されるシステム及び方法のようなシステムに関し、特に、状態に関する情報を確立するコンピュータにより実装されるシステム及び方法に関する。本発明は、特に、ブロックチェーンにおける使用、及びコントラクトの決定性有限オートマトン(DFA)実装、並びにそれらの中での状態の決定に適する。
【背景技術】
【0002】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳を含むよう使用される。これらは、限定ではないが、ブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【0003】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される総意に基づく電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の転送を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード(マイナー)は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション(UTXO)に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、i)トランザクションを受信した第1ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ii)マイナーにより構築された新しいブロックに追加し、iii)マインされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【0005】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点(例えば、永久的、イベントの耐タンパレコード、分散プロセス、等)を利用できる。
【0006】
現在の研究の一分野は、「スマートコントラクト(smart contracts)」の実装のためのブロックチェーンの使用である。これらは、機械可読取引又は合意の条件の実行を自動化するために設計されたコンピュータプログラムである。自然言語で記述され得る従来の取引と異なり、スマートコントラクトは、結果を生成するためにインプットを処理できるルールを含み、該結果に依存して動作を実行させることのできる、機械実行可能プログラムである。
【0007】
ブロックチェーンに関連する関心の他の分野は、ブロックチェーンを介する現実世界のエンティティの表現及び転送のための「トークン」(又は「カラードコイン」)の使用である。潜在的に機密な又は秘密のアイテムは、識別可能な意味又は値を有しないトークンにより表現できる。したがって、トークンは、現実世界のアイテムをブロックチェーンから参照できるようにする識別子として機能する。
【0008】
ブロックチェーン技術に伴う1つの問題は、ブロックチェーン上で関心情報を発見可能であることである。多数の従来技術の文献は、ブロックチェーン上で関心情報を発見することに関する方法を開示している。このような従来の方法の例は以下に簡単に記載される。
【0009】
Chris Pacia他による、プレゼンテーション「OpenBazaar-Ratings, reviews and reputation」は、ブロックチェーンに基づく評価システムを開示する。買いトランザクションが生じると、買い手と売り手の間で金銭が交換される。買い手は、他者に提供されるサービスのレビューを見えるように残すこともできる。ベンダGUID(Globally Unique Identifier)、連続する評価、及びコントラクトハッシュのようなデータは、OP_RETURNに追加される。スライドは、ベンダがタグ付けされたブロックチェーンのOP_RETURNアウトプットをクエリすることにより、ユーザにより残されたレビューを検索する機能を開示する。
【0010】
US2016292672は、ブロックチェーン記憶システムを利用する取引システムを開示する。取引システムが、ブロックチェーンシステムにクエリして、取引を実施する前に、取引パーティが取引されるべき株式を所有することをチェックすることが開示されている。これは、取引されるべき株式に対応する、トレーダにより所有される未使用トランザクションが存在するかどうかを決定することにより達成される。
【0011】
US2017005804は、金融取引を行いたいと望む特定人物により所有されるアセットについてブロックチェーンが検索されるシステムを開示する。この検証は、ブロックチェーンにアクセスし、ソース参加者が、十分な量の対象アセットにリンクされている未使用アウトプットブロックチェーントランザクションに関連付けられていると決定することにより達成される。この処理は、ソース参加者に関連付けている複数の異なるブロックチェーントランザクションを合計して、ソース参加者により「所有されている」合計アセット量を決定することを含んでよい。
【発明の概要】
【0012】
既存のシステム及び方法に伴う課題は、ブロックチェーン上で実施される機械実行可能コントラクトの状態のような特定種類の情報の抽出が、可能ではないこと、又は、少なくとも効率的方法で達成困難であることである。これは、例えば決定性有限オートマトン(deterministic finite automaton:DFA)の使用を通じた機械実行可能コントラクトの実施を一層困難にする。
【0013】
したがって、ブロックチェーンにブロードキャストされる情報が時間により変化する重大な変化にも拘わらず、情報の抽出を可能にするソリューションを提供することが望ましい。
【0014】
このような改良されたソリューションが考案される。本発明は、添付の請求項及び/又は本発明の記述、及び/又は本願明細書に説明される特徴、オプション、及び可能性において、定められる。
【0015】
第1の態様によると、本発明は、ブロックチェーンの未使用アウトプット(UTXO)に含まれる情報を検索する方法を提供する。当該方法は、
(a)関心情報を決定し、該関心情報に関連する鍵を取得するステップと、
(b)前記鍵に関連する検索語を構成するステップと、
(c)前記検索語に一致する未使用アウトプット(UTXO)について前記ブロックチェーンを検索するステップと、を含む。
【0016】
前記方法は、機械実行可能スマートコントラクトの状態を検索する方法を提供し得る。前記方法は、DFAで実装された機械実行可能スマートコントラクトの状態を検索する方法を提供し得る。例えば、ブロックチェーン上で実施される機械実行可能コントラクトの状態を決定する方法が提供され得る。前記方法は、
(a)関心情報を決定し、該関心情報に関連する暗号鍵を生成するステップと、
(b)前記暗号鍵に関連する検索語を構成するステップと、
(c)前記検索語に一致する未使用アウトプット(UTXO)について前記ブロックチェーンを検索するステップと、を含み、
前記関心情報は、機械実行可能スマートコントラクトの状態であり、前記方法は、
(d)前記検索語に一致する前記未使用アウトプット(UTXO)から情報を抽出するステップと、
(e)前記抽出した情報から前記機械実行可能スマートコントラクトの前記状態を決定するステップと、を含み、
前記機械実行可能スマートコントラクトは、決定性有限オートマトンを用いて実装されてよく、前記機械実行可能スマートコントラクトの前記状態を決定する前記ステップは、前記決定性有限オートマトンの状態を決定するステップを含んでよい。
【0017】
前記方法は、前記鍵が、1つ以上の段階を通じて前記関心情報を処理することにより取得されることを提供し得る。前記鍵を取得するための前記1つ以上の段階は、指定段階、メタデータ構成段階、エージェント関連付け段階、結合段階、値取得段階を含んでよい。前記鍵は、前記値取得段階からのアウトプットであってよい。
【0018】
前記方法は、前記鍵が、前記関心情報に再生可能処理を適用することにより取得され、同じ再生可能処理が、検索されているブロックチェーンの未使用アウトプット(UTXO)に含まれる前記情報を生成している、ことを提供し得る。
【0019】
前記方法は、前記検索語が前記鍵から、例えばアドレス導出段階を通じて構成されることを提供し得る。
【0020】
前記方法は、検索する前記ステップが、検索及び照合段階により提供されることを提供し得る。
【0021】
前記方法は、前記検索語に一致する未使用アウトプット(UTXO)が、前記鍵と及び/又は前記関心情報とペアにされることを提供し得る。ペアにすることは、データベース及び/又はデ―タベース段階の中で提供され得る。
【0022】
前記方法は、指定段階、メタデータ構成段階、エージェント関連付け段階、結合段階、値取得段階、データベース化段階、及びアドレス導出段階、ウォレット形成段階、検索及び照合段階、のうちの1つ以上を含んでよい。
【0023】
上記段階のうちの各々の可能性は、以下に詳述される。
【0024】
本発明の第1の態様は、本願明細書の他の場所に記載される特徴、オプション、及び可能性のうちの任意のものを含んでよい。
【0025】
第2の態様によると、本発明は、本発明の第1の態様の方法を実施するよう構成される、場合によっては本願明細書の他の場所に記載される機能、オプション、及び可能性のうちの任意のものを実行するよう構成されるシステムを含む、システム、望ましくはコンピュータにより実装されるシステム、を提供する。
【0026】
前記システムは、
ブロックチェーンを介してDFAを実施するよう構成される少なくとも1つの計算エージェントと、
ブロックチェーンプラットフォームと、を更に含んでよい。
【0027】
本発明の第2の態様は、本願明細書の他の場所に記載される特徴、オプション、及び可能性のうちの任意のものを含んでよい。
【0028】
したがって、本発明によると、以下の中から、オプション、可能性、及び特徴が提供され又は更に提供されてよい。
【0029】
方法及び/又はシステムは、指定段階を含んでよい。指定段階は、関心情報を選択するステップを含み得る。指定段階は、識別子指定段階を含み又は該段階であってよい。前記指定段階は、コード又はタグ指定段階を含み又は該段階であってよい。
【0030】
前記関心情報は、前記情報セットからの選択であってよい。前記関心情報は、状態、望ましくは決定性有限オートマトンの状態、最も望ましくは機械実行可能スマートコントラクトの状態であってよい。前記情報セットは、例えばDFAの限られた可能な状態に限定されてよい。
【0031】
前記関心情報はユーザにより選択されてよい。前記関心情報はDFAにより選択されてよい。前記関心情報はネットワーク内の1つ以上のエージェントにより選択されてよい。
【0032】
前記関心情報の1つ以上の識別子が決定されてよい。識別子はコードであってよい。識別子はタグであってよい。コードは、1つの状態のような、1つの関心情報のみを示してよい。タグは、1つの状態のような、1つの関心情報のみを示してよい。
【0033】
方法及び/又はシステムは、メタデータ構成段階を含んでよい。前記関心情報は、より望ましくはコード又はタグは、したがって、メタデータに変換されてよい。前記関心情報、より望ましくは前記コード又はタグは、したがって、暗号ハッシュにより処理されてよい。理想的には、2回のこのような暗号ハッシュが直列に適用される。メタデータ、特にハッシュメタデータは、後にフォーマットされてよい。前記関心情報は、より望ましくは前記コード又はタグは、したがって、より望ましくはそのメタデータは、公開鍵に組み込まれてよい。公開鍵は、情報公開鍵を指定されてよい。
【0034】
前記方法及び/又はシステムは、エージェント関連付け段階を含んでよい。前記エージェント関連付け段階は、1つ以上のエージェント、望ましくはUTXO、例えば機械実行可能スマートコントラクトからのUTXO、望ましくはDFAにより実施されたものを実行するよう構成された1つ以上のエージェントを選択してよい。選択したエージェントのうちの1つ以上又は全部は、公開鍵を提供してよい。1つ以上の公開鍵は、指定されたエージェント公開鍵であってよい。
【0035】
方法及び/又はシステムは、結合段階、望ましくは公開鍵結合段階を提供してよい。結合段階は、情報公開鍵を1つ以上のエージェント公開鍵と結合してよい。前記結合段階は、P2SHマルチシグネチャRedeemスクリプトのようなマルチシグネチャRedeemスクリプトを生成してよい。結合段階は、理想的には前記情報公開鍵及び前記1つ以上のエージェント公開鍵から、ロックスクリプトを提供してよい。前記結合段階は、前記ロックスクリプトのハッシュを生成してよい。前記ロックスクリプトの前記ハッシュは、scriptPubKeyを指定されてよい。
【0036】
前記方法及び/又はシステムは、値を取得するための値取得段階を含んでよい。前記方法及び/又はシステムは、ロックスクリプト値のような値を取得するためのロックスクリプト値取得段階を含んでよい。前記方法及び/又はシステムは、例えばロックスクリプト値又はscriptpubKey値のような値を取得するためのscriptPubKey値取得段階を含んでよい。前記値取得段階は、ロックスクリプトの又はより望ましくは前記ロックスクリプトのハッシュ、及び更に望ましくはscriptPubKeyの値を取得してよい。
【0037】
前記方法及び/又はシステムは、例えばデータベースの構成を提供するためのデータベース化段階を含んでよい。
【0038】
前記データベースは前記ブロックチェーンの外部にあってよい。前記データベースは集中型であってよい。前記データベースは、例えばネットワーク内で、場合によっては分散型ハッシュテーブルのように、分散型であってよい。前記データベース化は、Python辞書を用いて行われてよい。前記データベースは、望ましくは、分散型ネットワークのようなネットワーク内の各ノードにアクセス可能である。1つ以上又は全部のノードは、計算エージェントを設けられてよい。
【0039】
前記データベース化段階は、関心情報を鍵にマッピングするステップを含んでよい。前記鍵は、前記ロックスクリプトの値、より望ましくはscriptPubKeyの値のような、前記値取得段階からの値であってよい。鍵は単一の値にリンクされてよい。鍵は単一のコード又はタグにリンクされてよい。鍵は単一の関心情報にリンクされてよい。情報を前記鍵にマッピングするステップは、結合の前記鍵へのマッピングの半分を提供してよい。前記結合のもう半分は、検索及び照合段階で、前記鍵にマッピングされてよい。前記データベース化段階及び/又はマッピングは、ハッシュテーブルとして実装されてよい。
【0040】
前記方法及び/又はシステムは、スクリプトハッシュアドレス導出段階のような、アドレス導出段階を含んでよい。前記アドレスは、前記情報公開鍵及びエージェント公開鍵から、望ましくはロックスクリプトから、更に望ましくはロックスクリプトのハッシュから、及び理想的にはscriptPubKeyから、導出されてよい。アドレスは、P2SHアドレスのようなスクリプトハッシュアドレスであってよい。
【0041】
方法及び/又はシステムは、ウォレット形成段階を含んでよい。前記ウォレット形成段階は、スクリプトハッシュアドレスのような前記アドレスのうちの1つ以上又は全部を、ウォレットに、望ましくは前記ウォレット内のアカウント又はフォルダに、追加するステップを含んでよい。
【0042】
前記方法及び/又はシステムは、検索及び照合段階を含んでよい。前記検索及び照合段階は、アルゴリズムにより実施されてよい。前記検索及び照合段階は、前記スクリプトハッシュアドレスのような前記アドレスとの1つ以上の一致について、前記ブロックチェーン内を探すステップを含んでよい。前記検索及び照合段階は、ウォレットから、理想的には前記ウォレット形成段階の前記ウォレットから、前記スクリプトハッシュアドレスのような前記アドレスを取得してよい。前記検索及び照合段階は、前記検索で使用される前記アドレスに一致する、前記ブロックチェーン内のUTXOの詳細を取得してよい。
【0043】
前記方法及び/又はシステムは、場合によっては、前記検索及び照合段階内に及び/又は前記データベース化段階内に、アドレスに一致するUTXOの取得した詳細を鍵にマッピングするステップを含んでよい。前述のように、該マッピングの生じる鍵は、単一の値に、又は単一のコード又はタグに、又は単一の関心情報に、リンクされてよい。結果として、前記鍵への前記結合の網半分のマッピングが、検索及び照合段階で提供される。
【0044】
一致が得られると、前記方法及び/又はシステムは、タグ又は状態のような、どの関心情報がUTXO内に存在するかを明白に決定したものと考えられ得る。
【0045】
前記方法及び/又はシステムは、同時に1つより多くの関心情報との一致を探してよい。
【0046】
したがって、例えば、未使用トランザクション(UTXO)、ブロックチェーン及びコントラクトの決定性有限オートマトン(DFA)実装、並びにこれらの中の状態の決定の文脈の中で、機械実行可能コントラクトの状態に関する情報を確立する、コンピュータにより実装されるシステム及び方法が詳述される。段階は、関心情報及び該情報を識別するコード又はタグを決定するステップと、該コード又はタグに関連付けられたメタデータを構成するステップと、これを前記情報に関連付けられるエージェントの公開鍵と結合するステップと、を含み得る。各スクリプトのscriptPubKey値は、外部データベースを構成する際に、より具体的には、関心情報にリンクされたscriptPubKey値からの鍵をマッピングする際に、使用するための鍵を提供するために使用されてよい。結合の他の半分を取得するために、デジタルウォレットを投入するために使用される、scriptPubKey値からのスクリプトハッシュアドレスの導出がある。検索及び照合アルゴリズムは、次に、ブロックチェーン上のスクリプトハッシュアドレスと一致するUTXOを見付けるために使用される。これらは、次に、前述のデータベースに、スクリプトハッシュアドレスに、したがって結合を完成させるための鍵に一致するUTXOを投入する。一致は、最も信頼できる方法で状態を示す。
【図面の簡単な説明】
【0047】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【
図1】P2SHトランザクションにおける、scriptPubKeyを含むブロックチェーントランザクションを示す。
【
図2】本発明の一実施形態における、メタデータの構成、P2SH Redeemスクリプト、scriptPubKey及びビットコインアドレスを示す擬似コードを示す。
【
図3】本発明の一実施形態による、UTXOの外部データベースに含まれる情報へのマッピングを記載する図である。
【
図4】本発明が組み込まれ得るシステムの概略を示す。
【
図5】ブロックチェーンに基づくDFA実装を示す。
【発明を実施するための形態】
【0048】
未使用トランザクションアウトプット(Unspent transaction outputs:UTXO)は、ブロックチェーンの基本的特徴である。非常に様々なアセットの非常に様々なトランザクションが、ブロックチェーンを通じて可能である。UTXOの数は膨大であり、それらは、各フルノード(full-node)ビットコインクライアントに及び全体としてUTXOセット又はUTXOプールとして知られている。
【0049】
UTXOは、ビットコイン額、及び標準的には特定ユーザアドレスに関連するロックスクリプト又は債務(encumbrance)の形式である。多くのトランザクションの多様さについて、情報をブロックチェーントランザクションに組み込むためのデータ部分がUTXO内にも存在する。データ部分は、コード、タグ、又はメタデータの形式であってよい。特定のコード、タグ、又はメタデータを発見する能力、及び/又は一般的なブロックチェーンに格納された情報を系統的に発見し抽出する能力は、現在実行可能ではなく、特に本発明が解決しようとする潜在的課題である。
【0050】
本発明は、これを解決し、可能な情報をブロックチェーンから抽出することにより該情報へのアクセスを提供しようとする。
【0051】
コード、タグ、又はメタデータを発見する際の、及び更には情報を抽出する際の困難は、UTXO及びそのデータ部分の内容がどのように生じるかを考慮することから明らかである。
【0052】
一般に、ブロックチェーントランザクションのフォーマットは、それに格納された情報が長いバイトチェーンの形式で生じることを強いる。この情報は、有用になる前に、フィルタリングされ処理されなければならない。さらに、セキュリティ、プライバシ、及び技術的理由から、チェーンは実際には(複数の)ハッシュの何らかの形式であるので、元の情報、例えばこれらのバイトチェーンからの有意義なメッセージを再構成することは実現不可能である。例えば、ビットコインアドレスは、次にフォーマットされる複数のハッシュを有する、公開鍵の複数のハッシュである。同様の状況が、同様の処理により得られた署名スクリプト又はブロックチェーントランザクションパズルに適用される。これは、それらをネットワークによりアクセス可能にし、例えば、暗号公開鍵、等の形式を有する必要がある。
【0053】
以下で本発明の実装を例証するために使用される特定の実施形態は、ブロックチェーンに基づく決定性有限オートマトンDFAであり、これに関連して、関心情報はDFAの状態である。特定の例では、関心のあるUTXOはP2SH(typepay-to-script-hash)型であると仮定する。状態機械の特定の状態に関連付けられたトランザクションを実行する(使用する)ために、1つのエージェントが割り当てられることが更に考慮される。
【0054】
この特定の実施形態における第1ステップでは、情報(DFAの状態を識別するタグ又はコード)は、先ず、公開鍵に含まれるメタデータフィールドを構成するために、ハッシュされる。公開鍵のフォームの中のメタデータフィールドは、(債務を提供する)責任のあるエージェントの公開鍵と結合される。結果は、P2SHの2つのうちの1つのマルチシグネチャRedeemスクリプトの中に置かれる。このRedeemスクリプトは、また、ブロックチェーントランザクションを形成するバイトチェーンの部分として最終的に配置されるロックスクリプト(scriptPubKey)を導出するために、ハッシュされ、追加情報を伝達する他のバイトと結合される。
【0055】
これらのステップを通ること、及びネットワークに格納されたものから元の情報を復元することは、この特定の実施形態におけるこの時点では、より一般的な場合と同様に、むしろ望みのない作業であることが、明らかにされるべきである。
【0056】
本発明及びその特定の実施形態の詳細は、以下に議論される。本発明の動作の概略がこの段階で提供される。動作は、以下の一般的ステップを提供する。
1.関心情報を決定し、該情報を識別するコード又はタグを指定する。以下に詳細に議論するDFAの実施形態では、これは、ブロックチェーンに基づくDFAとして具現化される特定コントラクトの特定状態であってよい。
2.該コード又はタグに関連付けられたメタデータを構成する。DFAの実施形態では、これは、関心のある特定状態の、場合によっては関心のある特定コントラクト種別に特有のコード又はタグであってよい。
3.どのエージェント(又はエージェントのセット)が情報に関連付けられるかを決定する。ここでも、DFAの実施形態では、これは、関心のある特定状態に対応するUTXOを使用するよう割り当てられたエージェントであってよい。
4.これらのコード又はタグに関連付けられたメタデータを含む公開鍵を、関連エージェントの公開鍵と結合し、スクリプトを与える。DFAの実施形態では、これは、メタデータを有する公開鍵、及びエージェントからの公開鍵であってよく、次にP2SHマルチシグネチャRedeemスクリプトに結合される。
5.照合に関連する外部データベースの中で使用する鍵を提供するために、各スクリプトのscriptPubKeyを導出する。DFAの実施形態では、これは、コードに、したがって関心状態にリンクする鍵として表される値であってよい。
6.scriptPubKey値からの鍵がマッピングされ、後の段階に入るために結合の他の半分を有する関心情報にリンクされ得るデータベースを構成する。
DFAの実施形態では、鍵は、やがて発見され、照合され、及び追加されるUTXOと共に、コード、従って関心状態にマッピングされる。
7.scriptPubKey値からスクリプトハッシュアドレスを導出する。DFAの実施形態では、これは以下も適用する;
8.これらのスクリプトハッシュアドレスを有するデジタルウォレットを投入する。DFAの実施形態では、これは以下も適用する;
9.検索及び照合アルゴリズムを用いて、ブロックチェーン上のスクリプトハッシュアドレスを照合することによりUTXOを見付ける。
DFAの実施形態では、これは以下も適用する;
10.前述のデータベースに、スクリプトハッシュアドレスに、したがって結合を完成させるための鍵に一致するUTXOを投入する。DFAの実施形態では、これは、アルゴリズムが、一致するUTXOのスクリプトハッシュアドレスを発見すると、システムが、どの状態タグがUTXO内に存在するかを明白に決定していることを意味する。つまり、実質的に、状態が検出されている。
【0057】
ブロックチェーン内の情報からの情報の完全な復元は絶望的な作業であるが、予め知られている情報については、特定のタグが暗号通貨のUTXO内に存在するか否かを依然として決定できることに留意すべきである。これは、DFAシステム内でタグを示す状態に当てはまる。したがって、DFAマシンがその許可された状態のうちの1つにあるか否かをこれに基づき検出することが可能である。
【0058】
ここで、構造により、DFAは、一度に、有限状態セットのうちの1つにのみ存在できることに言及する価値がある。しかしながら、検出器は、同等に、任意の数のタグ又は他の種類の知られている情報を検出するのに適する。
【0059】
初期段階は、情報からロックスクリプトに組み込まれたメタデータへ遷移する、概略で上述した段階を反映する。
【0060】
したがって、初期ステップであるコード指定段階では、関心情報が選択される。この情報は、関心のある状態であってよい。検索されるべき(特定状態のような)該情報を識別するこれらのコード又はタグが次に指定される。これらは、状態遷移テーブルにおいて詳述される全ての状態の、コード又はタグの完全なセットから選択されたコード又はタグであってよい。したがって、コード指定段階は、表記ステップであり、直ちに実装可能である。
【0061】
これらのコード又はタグは、第2ステップであるメタデータ構成段階への入力を形成する。このステップでは、コード又はタグのダブルハッシュは、コード又はタグを、これらを反映したメタデータフォーマットに変換する。このメタデータは、次に、フォーマットされ、情報公開鍵内に置かれる。
【0062】
コントラクトの特定の状態に関連付けられた可能なエージェントに関して、更なる選択が行われる:エージェント関連付け段階。1又は複数のエージェントは、UTXOを実行する(使用する)よう割り当てられたパーティである。関連付けられたエージェントは、1又は複数のエージェント公開鍵を提供する。1又は複数のエージェントは、DFAの文脈では状態に依存する可能性がある。1又は複数のエージェントは、全エージェントのうちの部分集合であってよい:リスティング。1又は複数のエージェントは、後述のように、DFAとインタフェースするために使用される計算エージェントと異なる。したがってエージェント関連付け段階は、割り当てステップであり、直ちに実装可能である。
【0063】
メタデータ構成段階からの出力である、中にメタデータを有する情報公開鍵、及び、エージェント関連付け段階からのエージェント公開鍵は、次の段階である結合段階で使用される。結合段階では、2つの公開鍵(及びしたがって、情報公開鍵内のメタデータ)は、P2SHマルチシグネチャRedeemスクリプト内で結合される。公開鍵は、ロックスクリプトを生成するために使用される。ロックスクリプトは、次に、また、ロックスクリプトのハッシュであるscriptPubKeyにより置換される。
【0064】
次の段階である、scriptPubKey値取得段階で、結合段階からの1つ以上のハッシュされたロックスクリプトのscriptPubKey値が確立される。
図1は、P2SHトランザクションの文脈で、値が直接取得できるscriptPubKeyの構成を示す。これらのscriptPubKey値は、次に、最終的にマッピングされる結合に対して鍵として動作する。この段階で、鍵は、それぞれの関心のあるコード又はタグに対する知られている関係を有する。最終的にマッピングされる結合の他の部分は、後述する検索及び照合段階で発見される。
【0065】
結合のマッピングは、検索語データベース内に構成される:データベース化段階。検索語データベースは、ブロックチェーンの外部にある。結果として、scriptPubKeyからの値を表す鍵をそれぞれの関心のあるコード又はタグと共にマッピングすることにより、辞書が提供される。鍵のセットを値にマッピングできる構造である辞書は、ハッシュテーブルとしてより自然に実施される。
【0066】
留意すべきことに、使用される特定データベースの形式は、本発明にとって本質的ではなく、本発明の範囲を限定すべきではない。
【0067】
問題のシステムが、
図4のDFA実装の場合に、分散化されている場合、ネットワークの各ノードは、検索語データベースに(ローカルに又はリモートで)アクセス可能であるか、又は標準的に分散ハッシュテーブルとして分散方法で実装されることも可能である。
【0068】
データベース化段階510は、Python dictionary、ハッシュテーブルの概念を実施するビルトインデータ型を用いて実行できる。
【0069】
次の段階であるスクリプトハッシュアドレス導出段階で、scriptPubKey値からスクリプトハッシュアドレスを導出する(段階512)。例示的アプローチでは、P2SHについて、スクリプトハッシュアドレスを生成するとき、HASH160を使用する(最初にSHA256を、次にRIPEMD160を適用することを意味する)。これらの演算の結果に、ネットワーク1が使用されていること(mainnet、testtet、等)を示す「versionbyte」値を(ストリングの始めに)付加する。次に、「チェックサム(checksum)」の計算がある。これは、全体のHASH256である。次に、処理は、両方のストリングを連結し、ベース58内の結果を符号化する。これはP2SHアドレスである。スクリプトに対して別の方法を使用する場合、これら全てが変わる。したがって、これは本発明の本質ではなく、本発明の範囲を限定しない。
【0070】
技術的レベルでのステップの説明により、(疑似)コードの簡略化されたスクリプトが与えられる。これらのスクリプトで使用された言語はPython3であるが、通常、これは本発明範囲又はその開発方法の限定を意味すべきではない。
図2は、メタデータの構成、エージェントの公開鍵を有する該メタデータのP2SH Redeemスクリプトへの結合、及びscriptPubKey及びアドレスの擬似コードを提示する。実際には、上述のメタデータ構成段階、結合段階、scripPubKey値取得段階、及びスクリプトハッシュアドレス導出段階である。
【0071】
スクリプトハッシュアドレスを取得すると、処理は、該アドレスをウォレットに追加することに進む:ウォレット形成段階。アドレスは、使用されるウォレット内の特定コントラクトアカウントに追加されることが望ましい。
【0072】
利用される検索及び照合アルゴリズムは、次に、これらのアドレスと一致するUTXOを検索するために、ウォレットから開始され得る:検索及び照合段階。照合は、一致するエージェントだけでなく、一致するコントラクト状態も反映する。検索及び照合段階は、標準的なビットコインコアクライアントコマンドにより達成できる。多くの検索及び照合アルゴリズムは、この目的に適している。例えば、全てのUTXOは、ループを用いて検索され得る。
【0073】
アルゴリズムが、検索中のスクリプトハッシュアドレスに一致する、UTXOセット内のスクリプトハッシュアドレスを発見すると、関心のあるUTXOセット内のscriptPubKeyが発見される。これは、抽出され、次に上述の外部データベースにマッピングされ得る。UTXOは、自身のscriptPubKeyにより鍵にマッピングされ、したがって、コード又はタグに、したがって関心のある元の情報に戻り、好適な実施形態では特定状態を表す。
【0074】
この最後の段階における照合は、システムが、どの状態タグがUTXO内に存在するかを明白に決定することを提供する。つまり、実質的に、状態が検出される(detected)。照合処理は、一致するスクリプトハッシュアドレス、したがって鍵、したがって状態タグを有する全てのUTXOについて繰り返す。
【0075】
実際に知られている情報、つまり値(values)(私達の例ではコントラクト及び状態タグ)のブロックチェーンUTXOに格納された鍵(keys)への、事実上は値へのポインタの、このマッピングの説明は
図3に与えられる。データベースのために使用される構造がハッシュテーブルである場合、鍵の追加ハッシングは、所望の情報の値にアクセスする前に、生じることに留意する。これは、一般的な場合を表すことを意味するので、図示されない。
【0076】
今度の場合も、マッピングは事実上、辞書生成処理であるので、これはPython dictionary、ハッシュテーブルの概念を実施するビルトインデータ型を用いて実行できる。
【0077】
検索ウォレット変更
非慣例的/特別なソフトウェアが、状態遷移検出器の実装、又はより一般的に知られている情報検索で回避されるならば、全体的な簡易性及び実装の容易さにおいて有利である。もちろん、このようなソフトウェアは代替として提供され得る。
【0078】
この文脈では、ビットコインコアクライアント(使用するのに好適な標準的ユーザインタフェース)を通じてアクセス可能なUTXOのみが、ユーザのビットコインウォレットに含まれるアドレスに関連付けられてものであることに留意することが重要である。検索処理では、探し求められている鍵は、必ずしもその基準を満たさない。これに立ち向かうために、外部データベースにも含まれる鍵についてUTXOデータベースを検索するためにウォレットが使用可能になる前に、対応するscriptPubKey値に関連付けられたビットコインアドレスを構成する必要がある。これは、上述したハッシング及びフォーマット処理により達成される。それらを構成すると、次に、それらを検索ユーザのビットコインウォレットに追加する必要がある。
【0079】
特定コントラクトを実施する、ブロックチェーンに基づくDFAの私達の実施例の場合には、さらに、コントラクトに関連するアドレスを、一方で特定アカウント(account)、ウォレットの部分集合に関連付けあることが、自然であり且つ都合がよい。しかしながら、この最後のステップは、厳格に必要ではなく、限定ではなく追加の効果及び構造を提供する私達の設計の特定の特徴として取り入れることができる。したがって、これは本発明の範囲を限定すること意味しない。
【0080】
本発明の使用のコンテキスト
知られている情報を抽出する能力は、多くのコンテキストにおいて望ましい。このようなコンテキストは、メタデータがブロックチェーンに組み込まれる状況を含み得る。例は、他のアセット、例えば株式、証券、クーポン、所有権、商品、トークン、データなどを表すために使用される、トークン化の場合又は「カラードコイン(colored coins)」を含み得る。
【0081】
情報を発見し抽出する能力が重要である1つの特定のコンテキストは、情報が機械の状態であり得る、ブロックチェーンに基づくDFAである。
【0082】
スマートコントラクトの実装におけるDFAの使用の更なる詳細は、次章で与えられる。
【0083】
DFAの使用
本章は、DFAがどれだけ有用であるかについての背景を与えるために、スマートコントラクトを実装するDFAを参照して、提供される。
【0084】
この説明のためのコンテキストでは、コントラクトのような処理又はタスクをモデル化するDFAの定義が与えられる。DFAは、計算エージェント又は「ボット」と呼ばれてもよい計算リソースの関連システムと相互作用する。これらの計算エージェントは、トランザクションを生成しそれらをブロックチェーンに提出するよう構成される。このDFAの実施形態はコントラクトに関するが、DFAの使用はコントラクトに限定されない。
【0085】
図4を参照すると、本発明は、ハードウェア及びソフトウェアコンポーネントを含むコンピューティングプラットフォーム-ブロックチェーン-上で具現化される抽象DFAとして処理の実現を提供する。
【0086】
図4は、本発明の説明のための実施形態に従い構成されたシステムの概観を提供する。システムは、命令を受信するために他のエンティティ4(例えば、人間又は他のコンピュータ)と相互作用可能な計算エージェント3を有する。これらの命令は、例えばどのスマートコントラクトを生成し及び実行すべきかであり得る。したがって、計算エージェント3は、物理的世界と相互作用して、それら自身の外部で、「現実世界」において、イベントに応答し及びイベントを生じることにより、本発明を実施する。
【0087】
コントラクト自体の仕様は、任意の機械実行可能フォーマット、例えばxBRLで提供され、セキュア且つ非集中的方法で、例えばトレント(torrent)ネットワーク上の分散ハッシュテーブル(distributed hash table:DHT)5内に、格納され得る。コントラクトの仕様から、計算エージェントはDFA2を構成する。DFA2は、1つ以上エージェントによりブロックチェーン1上で後に具現化される。
【0088】
DFA2自体は、有限セット{S,I,t,s0,F}として指定される。ここで、Sは、コントラクト/DFAが存在し得る可能な状態の(有限)集合であり、Iは、本願明細書の文脈ではコントラクトと関連して生じ得る任意のイベント又は条件、例えば支払が行われる、証券の満期に達する、契約相手の債務不履行、等を意味するインプット(アルファベットとしても知られる)の(有限)集合である。本願のメカニズムでは、これらのインプット信号は、1つ以上のエージェントにより受信され/生成され、該エージェントは次にシステムの次の状態(場合によっては同じ状態)を決定する。
【0089】
DFAの第3コンポーネントは、遷移関数t:S×I→Sである。「DFA」における用語「決定性」は、決定の一意性:状態及びインプットが与えられると、唯一の新しい状態(場合によっては同じ状態)が存在する、を表す。したがって、初期状態(S0)及びインプットの履歴が与えられると、計算(コントラクト)の結果は、全ての可能な最終結果の集合の中のユニークな1つである(F⊆S)。全てのこれらの要素が確立されると、DFAは、遷移テーブルにより完全に定められ、全ての可能な現在状態及びインプット信号についての将来の状態を指定する。DFAの状態は、それ自体が、ブロックチェーン上の未使用トランザクションアウトプット(UTXO)に関連付けられる。従来知られているように、ビットコインネットワークは、全ての利用可能UTXOを絶えず追跡する。実施形態によると、DFAがある状態から別の状態へ移行するメカニズムは、ブロックチェーントランザクションにより本発明に従い具現化される(実施される)。事実上、ブロックチェーン上のトランザクションはある状態(前のトランザクションのインプット)に関連付けられたUTXOを使用し、次の状態(アウトプット)に関連付けられたUTXOを生成する。
【0090】
<例:割引(ゼロクーポン)債券>
説明のために、以下では、通常、ある価格で(通常はその額面価格に対して割引して)購入され次にその元金が満期時に返金されるまでの特定時間の間保持される単純な債券類である、割引(ゼロクーポン)債券を検討する。検討する可能な状態はS={s0,f0,f1}であり、それぞれ保持状態(s0)、コントラクトの正常終了(幸運な経路を辿った場合)又は幸せな結末(f0)、及び失敗した、例えば訴訟、の状態(f1)を示す。システムの最終状態は、したがってF={f0,f1}である。検討するアルファベットは、I={r,d,e}であり、それぞれ満了時(又は前)の元金の返済金(r)、満了時(又は前)の発行人の債務不履行(d)、及び返金を伴わないコントラクトの満了(e)を示す。この単純なコントラクトの遷移マトリクスは表1に示される。
【0091】
[表1]ゼロクーポン債券を表すDFAの遷移テーブル
【0092】
【表1】
留意すべきことに、最終状態はコントラクトの完了を表し、したがってそれらから更なる状態が指定される必要はない(現在、遷移テーブル内の「-」として示されるが、これらの線は省略され得る)。原則として、より多くの状態及び/又はインプット(並びにアクション)がこの証券について定められ得るが、これは、コントラクトの複雑性に関連する邪魔な詳細事項を挿入するのではなく、本発明の基本的な新規な態様を説明するために、単純性及び明確性のために本願明細書において行われていない。
【0093】
図5は、(ビットコイン)ブロックチェーン上のゼロクーポン債券DFAの実施形態を表す。状態は円により表され、機械をある状態から他の状態へ移行させるビットコイントランザクションは青色三角形により表される。
図5ではエージェントにより受信されるインプットは省略されるが、各状態において、これらのインプットに従い1つ又は他の遷移が生じるべきであり、これが1つ又は他のビットコイントランザクション(例えば、状態s
0の中のt
0又はt
1)の構成により図中に反映されること、状態を変えない遷移にはトランザクションが必要ないこと、したがってそれらは省略されることに留意する。DFAの遷移トランザクション(t
i)に加えて、初期発生トランザクション(o)、及びコントラクトの完了に対応するトランザクション(c
i)が考えられる。
【0094】
以下では、トランザクション(発生、遷移、及び完了)における資金の流れに注意を向ける。重要なことに、DFA及び(金融)コントラクトの有限性により、プロセスは多数の遷移の後に完了することに気付く。これは、コントラクトの確立及び実行の最大コストが結合され、予め、例えばDFAの確立時に、決定できることを必ずしも意味しない(関与する計算エージェント及びビットコインマイナーのための幾つかの有限料金を想定する)。これは、考えられる最長経路を辿るコントラクトを実行するために必要な合計資金額により与えられる。これは、勿論、実行中の無限ループの可能性を排除するが、しかし、これは現在の(金融)コントラクトに関連しないこと、永久拘束のようなコントラクトでさえ、その名称にも拘わらず将来の特定時点で完了すべき債券であること、例えば負債のあるエンティティが消滅する又はインフレにより支払が無視できるほど小さくなること、に留意する。
【0095】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する(comprising又はcomprises)」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する(comprises)」は「含む(includes)又は構成される(consists of)」を意味し、「有する(comprising)」は「含む(including)又は構成される(including of)」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、1つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。