(57)【要約】  本発明は、ビットコインブロックチェーンなどのブロックチェーン技術に関する。本発明は、ブロックチェーントランザクションスクリプトの機能を複数のチャンク又は機能部に分解し、次のチャンクの入力として出力を利用する新規な技術を用いる。効果的には、これは、スクリプトサイズを最小限にしながら複雑なタスク及び計算にブロックチェーンを利用することを可能にし、また計算プロセスの分散化された実行のための新規なアーキテクチャを提供する。本発明は、複数のブロックチェーントランザクションを利用して、コンピュータにより実現されるタスクを実行する方法であって、ブロックチェーントランザクション（Ｔｘ２）における第１の入力（Ｉｎ１）に関連するアンロックスクリプト（ＵＬＳ１）を利用して、スタック上の結果を提供するため、他のトランザクション（Ｔｘ１）のロックスクリプト（ＬＳ１）に少なくとも１つのデータアイテムを提示するステップと、第２の入力（Ｉｎ２）を含むよう前記ブロックチェーントランザクション（Ｔｘ２）を補正するステップと、前記スタックからの結果を含み、前記第２の入力（Ｉｎ２）に関連する更なるアンロックスクリプト（ＵＬＳ２）を生成するステップと、前記スタックからの結果が更なるロックスクリプト（ＬＳ２）に入力として提供されるように、前記更なるアンロックスクリプト（ＵＬＳ２）を前記更なるロックスクリプト（ＬＳ２）に提示するステップとを有する方法を含む。好ましくは、ロックスクリプト（ＬＳ１）及び更なるロックスクリプト（ＬＳ２）は、同一のブロックチェーントランザクション（Ｔｘ１）内で異なる出力に関連して提供される。
2020503749.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックチェーントランザクションを利用してコンピュータにより実現されるタスクを実行する方法であって、
ブロックチェーントランザクションにおける第１の入力に関連するアンロックスクリプトを利用して、スタック上の結果を提供するため、他のトランザクションのロックスクリプトに少なくとも１つのデータアイテムを提示するステップと、
第２の入力を含むよう前記ブロックチェーントランザクションを補正するステップと、
前記スタックからの結果を含み、前記第２の入力に関連する更なるアンロックスクリプトを生成するステップと、
前記スタックからの結果が更なるロックスクリプトに入力として提供されるように、前記更なるアンロックスクリプトを前記更なるロックスクリプトに提示するステップと、
を有する方法。
【請求項２】
請求項１記載のステップの１つ以上を１回より多く実行するステップを更に有する、請求項１記載の方法。
【請求項３】
前記ロックスクリプト内に提供される計算又は命令系列の実行において少なくとも１つのデータアイテムを利用するステップを更に有する、請求項１又は２記載の方法。
【請求項４】
前記更なるロックスクリプト内に提供される計算又は命令系列の実行において前記スタック上に提供される結果を利用するステップを更に有する、請求項１乃至３何れか一項記載の方法。
【請求項５】
前記スタックから前記結果を取得するステップを更に有する、請求項１乃至４何れか一項記載の方法。
【請求項６】
前記スタック上に結果を生成するため、前記ブロックチェーントランザクション及び／又は前記他のトランザクションを検証するステップを更に有する、請求項１乃至５何れか一項記載の方法。
【請求項７】
前記アンロックスクリプト及び前記更なるアンロックスクリプトは、同一の前記ブロックチェーントランザクション内で異なる入力に関連して提供される、請求項１乃至６何れか一項記載の方法。
【請求項８】
前記ロックスクリプト及び前記更なるロックスクリプトは、同一の前記ブロックチェーントランザクション内で異なる出力に関連して提供される、請求項１乃至７何れか一項記載の方法。
【請求項９】
前記更なるアンロックスクリプトを更なるロックスクリプトに提示するステップは、前記スタック上又は異なるスタック上に更なる結果を提供するステップを更に有する、請求項１乃至８何れか一項記載の方法。
【請求項１０】
ブロックチェーンクライアントを利用して、前記スタックから結果を取得するステップを更に有する、請求項１乃至９何れか一項記載の方法。
【請求項１１】
前記ブロックチェーンクライアントは、ビットコインクライアントである、請求項１０記載の方法。
【請求項１２】
ブロックチェーンネットワークに前記ブロックチェーントランザクション及び／又は他のブロックチェーントランザクションを送信するステップを更に有する、請求項１乃至１１何れか一項記載の方法。
【請求項１３】
前記少なくとも１つのデータアイテムは、前記アンロックスクリプト内でメタデータとして提供され、及び／又は、前記結果は、前記更なるアンロックスクリプト内でメタデータとして提供される、請求項１乃至１２何れか一項記載の方法。
【請求項１４】
前記ブロックチェーンは、コンセンサスベースの分散型電子台帳であり、前記ブロックチェーンは、ビットコインブロックチェーンであり、前記トランザクションの１つ、一部又は全てはビットコイントランザクションであり、及び／又は、当該方法は前記ビットコインブロックチェーン上での実行のため構成される、請求項１乃至１３何れか一項記載の方法。
【請求項１５】
当該方法を利用して、最終的な結果を計算し、前記最終的な結果を利用して、ブロックチェーンから離れて実行されるプロセスを制御するステップを更に有する、請求項１乃至１４何れか一項記載の方法。
【請求項１６】
請求項１乃至１５何れか一項記載の方法を実行するよう構成及び設定されるコンピュータにより実現されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にブロックチェーン技術に関し、より詳細にはブロックチェーンを介し複雑な機能を実現することに関する。効果的には、本発明は、計算又は実行されたオペコードの結果が一方から他方に転送されることを可能にし、コンピュータにより実現されるプロセスの活動を有効にする、影響を与える及び指示するための制御機構としてブロックチェーントランザクションを利用する機構を提供する。本発明は特に、限定することなく、自動化されたプロセスの実現及び制御に適する。
【背景技術】
【０００２】
本明細書では、限定することなく、ブロックチェーン及びトランザクションチェーン技術、パーミッション型及び非パーミッション型台帳、共有台帳及びこれらの変形を含む全ての形式の電子的なコンピュータベースの分散型台帳を含むよう“ブロックチェーン”という用語を使用する。他のブロックチェーン実施形態が提案及び開発されてきたが、ブロックチェーン技術の最も広範に知られるアプリケーションはビットコイン台帳である。ビットコインはここでは便宜上及び説明の目的のために参照されうるが、本発明はビットコインブロックチェーンと一緒に利用することに限定されず、他のブロックチェーン実施形態及びプロトコルが本発明の範囲内に属することに留意すべきである。
【０００３】
ブロックチェーンは、トランザクションから構成されるブロックから構成されるコンピュータベースの非中央化された分散システムとして実現されるコンセンサスベースの電子台帳である。各トランザクションは、少なくとも１つの入力と少なくとも１つの出力とを含む。各ブロックは前のブロックのハッシュを含み、当該ブロックは、それの開始以来ブロックチェーンに書き込まれた全てのトランザクションの永久的で変更不可なレコードを作成するよう一緒にチェーン化される。トランザクションは、当該トランザクションの出力がどのようにして、また誰によってアクセス可能であるかを指定する、入出力に埋め込まれるスクリプトとして知られる小さなプログラムを含む。ビットコインプラットフォーム上では、これらのスクリプトはスタックベースのスクリプト言語を用いて記述される。スクリプトは、データアイテムをスタック上にプッシュするか、あるいはスタックからそれらをポップオフする命令（オペコード）から構成される。
【０００４】
トランザクションがブロックチェーンに書き込まれるため、それは“検証”される必要がある。ネットワークノード（マイナ）は、無効なトランザクションがネットワークから拒絶されることによって、各トランザクションが有効であることを保証するための作業を実行する。ノード上にインストールされているソフトウェアクライアントは、それのロック及びアンロックスクリプトを実行することによって、未使用のトランザクション（ＵＴＸＯ）に対して当該検証作業を実行する。ロック及びアンロックスクリプトの実行がＴＲＵＥと評価した場合、トランザクションは有効であり、ブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるため、それは、ｉ）トランザクションを受信した第１のノードによって検証され、トランザクションが検証された場合、ノードはそれをネットワークにおける他のノードに中継し、ｉｉ）マイナによって構築された新たなブロックに追加され、ｉｉｉ）マイニング、すなわち、過去のトランザクションの公開台帳に追加される必要がある。
【０００５】
ブロックチェーン技術は仮想通貨実施形態の利用について最も広く知られているが、デジタル起業家は、ビットコインの基礎となる暗号セキュリティシステムと、新たなシステムを実現するためブロックチェーン上に格納可能なデータとの双方の利用を探求し始めている。それは、ブロックチェーンが仮想通貨の領域に限定されない自動化されたタスク及びプロセスについて利用可能である場合、大変効果的である。そのような手段は、それらのアプリケーションにおいてより多才でありながら、ブロックチェーンの利点（例えば、永久的で改ざん耐性なイベントのレコード、分散処理など）を利用することが可能である。
【０００６】
現在の研究の１つのエリアは、“スマートコントラクト”、すなわち、機械可読なドキュメントに与えられた条件に対して実行され、結果を生成し、その後、これらの結果に依存してアクションを実行させることが可能な入力を処理可能なルールを含む機械実行可能なプログラムの実現のためのブロックチェーンの利用である。
【０００７】
しかしながら、ますます洗練されたアプリケーションがブロックチェーン技術について考案されるに従って、複雑になり続けるスクリプト機能に対する必要がまた生じる。ブロックチェーン技術はスクリプト内で正当に実現可能なことを制限及び限定するよう意図的に設計されているため、技術的問題がここでは生じる。例えば、セキュリティの考慮のため、ビットコインスクリプト言語は、慎重に非チューリング完全である。さらに、ＤｏＳ攻撃を防ぐため、２００個のオペコードの上限がスクリプト毎に課せられている。ビットコイントランザクションスクリプトが２００個より少ないオペコードを含む限り、それは検証及びブロードキャスト可能である。しかしながら、より高度なプログラム要素（例えば、プリミティブ）の出現によって、このリミットは、スマートコントラクトの実行などのアプリケーションのためのより複雑な技術的手段の開発を制限する。
【発明の概要】
【０００８】
従って、セキュリティを損なうことなく、及び／又は、既存のプロトコルの何れかの適応を必要とすることなく、複雑な機能がブロックチェーンスクリプトに構築されることを可能にする技術的手段が必要とされる。好ましくは、当該手段は、ビットコインプロトコルなどの既存のブロックチェーンプロトコルの機能が、ブロックチェーントランザクションを利用することによってインフラストラクチャが新規で効果的な方法によって利用され、スタックがそれの現在のリミットを超えてトランザクションの計算能力を拡大することを可能にすることを許容するであろう。そのような技術は、トランザクションの利用が技術的プロセスの実行を制御し、影響を与え、指示することを可能にするであろう。
【０００９】
そのような手段がここで考案された。本発明は、ここに説明される効果を少なくとも提供する。
【００１０】
本発明は、添付した請求項において規定される。従って、本発明によると、方法及び／又は対応するシステムが提供されうる。
【００１１】
一観点によると、本発明は、ブロックチェーンの利用を介し複雑な関数が実行されることを可能にする技術及び対応する実施形態を提供するとみなされうる。効果的には、当該技術は、各種個別の計算コンポーネントの組み合わせを利用して、指定された関数を実行しうる。これらは、ブロックチェーントランザクション及び／又はブロックチェーンを生成するよう構成され、少なくとも１つのプロセッサ上で実行される１つ以上のソフトウェアベースクライアント、少なくとも１つのストレージリソース（好ましくは、スタックベースデータ構造）、少なくとも１つのデジタルウォレットを含みうる。好ましくは、これは、ビットコインブロックチェーンであってもよい。
【００１２】
本発明の実施例は、複数のトランザクション及びそれらの入出力に対する技術的タスクの分解に関するものであってもよい。本発明の実施例は、少なくとも１つのデータストレージリソースからデータを取得し、当該データを利用して、特に各トランザクション入出力の間でスクリプト出力をわたすことによって、複数のブロックチェーントランザクションに対して実現されるタスク又は計算の実行を制御しうる。
【００１３】
上述した各種システムコンポーネントは、計算及びタスクがブロックチェーントランザクションを介し実行させることを可能にするため、データアイテムを取得してコンポーネント間でわたすよう構成されうる。これらの計算／タスクは、長くて複雑となりうるが、おそらくそこで利用されるスクリプトのサイズ及び／又はオペコードの個数に対して強制されるリミットのため、本発明前にはブロックチェーントランザクションを介し実行できなかった。
【００１４】
トランザクションがブロックチェーン上に配置されると、それらは変更不可であって永久的な方法で記録される。従って、一観点から、本発明は、改良されたブロックチェーンプロトコル、改良されたブロックチェーンクライアント、改良された計算技術及び対応する装置、及び／又は改良されたプロセス制御機構を提供する。
【００１５】
１つの意味では、本発明は、スクリプトサイズ及びオペコードリミットに対するセキュリティに基づく制限を依然として維持しながら、複雑な計算がブロックチェーンプロトコルを介し実行されることを可能にする。本発明の前に、そのような長い計算は、例えば、現在のビットコインプロトコルを利用して不可能であるか、あるいは、スクリプトベースの制限を含まない他の形式のブロックチェーンを利用する必要があった。後者は常に望ましい又は実現可能であるとは限らない。従って、本発明は、エンハンスされたセキュリティ機構を提供する。それがプロトコルを介し従来可能でなかった結果を実現する手段を提供するため、本発明は、改良されたブロックチェーンプロトコルを提供する。
【００１６】
本発明による方法は、複数のブロックチェーントランザクションを利用してコンピュータにより実現されるタスクを実行する方法として説明されうる。さらに又はあるいは、それは、
・２つ以上のそれぞれのブロックチェーントランザクションにおいて提供されるロック及びアンロックスクリプトにタスクの一部の実行を割り当てる又は分散させることによって、コンピュータにより実現されるタスクの実行を制御し、
・スタックベースデータ構造から値を読み込み、それをアンロックスクリプトからロックスクリプトに値としてわたすことによって、コンピュータにより実現されるタスクの実行を制御する、
方法として説明されうる。
【００１７】
当該方法は、
ブロックチェーントランザクション（Ｔｘ２）における第１の入力（Ｉｎ１）に関連するアンロックスクリプト（ＵＬＳ１）を利用して、スタック上の結果を提供するため、他のトランザクション（Ｔｘ１）のロックスクリプト（ＬＳ１）に少なくとも１つのデータアイテムを提示するステップと、
第２の入力（Ｉｎ２）を含むよう前記ブロックチェーントランザクション（Ｔｘ２）を補正するステップと、
前記スタックからの結果を含み、前記第２の入力（Ｉｎ２）に関連する更なるアンロックスクリプト（ＵＬＳ２）を生成するステップと、及び／又は、
前記スタックからの結果が更なるロックスクリプト（ＬＳ２）に入力として提供されるように、前記更なるアンロックスクリプト（ＵＬＳ２）を前記更なるロックスクリプト（ＬＳ２）に提示するステップとを有してもよい。
【００１８】
ブロックチェーントランザクションは、あるバージョンのビットコインプロトコルに従って構成されてもよい。
【００１９】
当該方法は更に、
請求項１のステップの１つ以上は１回より多く実行するステップを有してもよい。
【００２０】
当該方法は更に、
前記ロックスクリプト（ＬＳ１）内に提供される計算又は命令系列の実行において少なくとも１つのデータアイテムを利用するステップを更に有してもよい。
【００２１】
当該方法は更に、
前記更なるロックスクリプト（ＬＳ２）内に提供される計算又は命令系列の実行において前記スタック上に提供される結果を利用するステップを更に有してもよい。
【００２２】
当該方法は更に、
前記スタックから前記結果を取得するステップを更に有してもよい。
【００２３】
当該方法は更に、
前記スタック上に結果を生成するため、前記ブロックチェーントランザクション（Ｔｘ２）及び／又は前記他のトランザクション（Ｔｘ１）を検証するステップを更に有してもよい。
【００２４】
前記アンロックスクリプト（ＵＬＳ１）及び前記更なるアンロックスクリプト（ＵＬＳ２）は、前記同一のブロックチェーントランザクション（Ｔｘ２）内で異なる入力（Ｉｎ１，Ｉｎ２）に関連して提供されてもよい。本発明は、本発明の“実施例１”に関して実質的に後述されるものであってもよく、及び／又は、図１〜３，９ａ及び９ｂに示される具体例によって示される技術又は原理に実質的に従うものであってもよい。
【００２５】
前記ロックスクリプト（ＬＳ１）及び前記更なるロックスクリプト（ＬＳ２）は、前記同一のブロックチェーントランザクション（Ｔｘ１）内で異なる出力に関連して提供されてもよい。効果的には、これは、２つのトランザクションしか機能を実現するため要求されないため、コンパクトで効率的な手段を提供する。これは、スペース及び記憶要求、費用、処理オーバヘッド及び複数のトランザクションの伝搬に関連する他の不利益を低減する。
【００２６】
前記更なるアンロックスクリプト（ＵＬＳ２）を更なるロックスクリプト（ＬＳ２）に提示するステップは、前記スタック上又は異なるスタック上に更なる結果を提供してもよい。スタックはメインスタック又は代替スタックであってもよい。
【００２７】
当該方法は更に、
ブロックチェーンクライアントを利用して、前記スタックから結果を取得するステップを更に有してもよい。前記ブロックチェーンクライアントは、ビットコインクライアントであってもよい。それは、スタックから読み込み、リターン及び／又は取得することが可能となるよう適応化、構成又は設定されうる。
【００２８】
当該方法は更に、
前記ブロックチェーンネットワークに前記ブロックチェーントランザクション（Ｔｘ２）及び／又は他のブロックチェーントランザクション（Ｔｘ１）を送信するステップを更に有してもよい。
【００２９】
前記少なくとも１つのデータアイテムは、前記アンロックスクリプト（ＵＬＳ１）内でメタデータとして提供される。前記結果は、前記更なるアンロックスクリプト（ＵＬＳ２）内でメタデータとして提供されてもよい。
【００３０】
本発明はまた、対応するシステム及び装置を有する。本発明は、上述した又は実質的に以降に説明される何れか上記の方法ステップを実現するよう構成及び設定されるコンピュータにより実現されるシステムを有してもよい。
【００３１】
本発明の上記及び他の態様は、ここに説明される実施例から明らかであり、参照することにより明確になるであろう。本発明の実施例は、添付図面を参照して例示的に説明される。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施例による複数入出力アプローチに関するトランザクションのチェーン及び順次的なステップを示す。
【図２】本発明の第１の実施例の例示的バージョンによるトランザクション１（Ｔｘ１）を示す。
【図３】本発明の第１の実施例の例示的バージョンによるトランザクション２（Ｔｘ２）を示す。
【図４】実施例２の例示的バージョンによる例示的なトランザクションのチェーンを示す。
【図５】実施例２の例示的バージョンによるトランザクション１，２，３，４を示す。
【図６】実施例２の例示的バージョンによるトランザクション１，２，３，４を示す。
【図７】実施例２の例示的バージョンによるトランザクション１，２，３，４を示す。
【図８】実施例２の例示的バージョンによるトランザクション１，２，３，４を示す。
【図９ａ】本発明の例示的バージョンが実施例１によりどのように提供されうるかの図を示す。
【図９ｂ】本発明の例示的バージョンが実施例１によりどのように提供されうるかの図を示す。
【図１０】ブロックチェーンクライアントがスタックの先頭に残されたアイテムを取得するのに利用されることのシンプルな図を示す。
【発明を実施するための形態】
【００３３】
以下の具体例では、最も広く知られているため、ビットコインを例示的なブロックチェーン実施形態及びプロトコルとして用いる。これは、説明のみのためであり、本発明はこれに限定されないことが留意されるべきである。他のブロックチェーン実施形態もまた本発明の範囲内に属する。
【００３４】
ＤｏＳ（Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ）攻撃の配置を防ぐため、デフォルトのビットコインクライアントは、有効なスクリプトに含めることが可能なバイト及びオペコードの最大数に対するリミットを設定する。本出願の優先日において、このリミットは１０，０００バイト及び２０１個のオペコードである。２０１個より多いオペコード又は１０，０００より多いバイトを含むスクリプトは有効でない。価値ある理由のために課されるが、この制限はより高度なスクリプト機能の開発と、ブロックチェーン技術に関連して動作するよう設計可能な技術手段の複雑さの妨げになる。
【００３５】
本発明は、ユーザが２つ以上のブロックチェーントランザクションの利用を介しブロックチェーンスクリプトを複数の入出力に分割することを可能にする２つの技術（実施例）を提供する。双方の実施例は、
・スタックの状態を読み、
・実行されたスクリプトの結果を伝搬する、すなわち、未使用のトランザクション出力の入力に通信し、
・大規模で複雑なスクリプトを複数のより小さいシンプルなユニットに分割する、
よう構成される自動化された計算エージェント（又は“ボット”）の能力に依拠しうる。
【００３６】
ビットコインなどのいくつかのブロックチェーン実施形態では、デフォルトのビットコインクライアントがこの情報アイテムへのアクセスを提供しないとき、カスタムクライアントは、スクリプトの終了後にスタックの状態が読まれることを可能にすることが必要とされうることが留意されるべきである。スタックは、ビットコインコアプログラムに含まれる．ｃｐｐファイルにおけるリストとして表現される。スタックの動作をエミュレートするクラスに数行のコードを挿入することによって、リストに含まれる情報を取得及び返すことが可能である。その後、当該情報は、他の計算リソース及び／又は他の計算における利用のためわたされうる。これは図１０に示される。
【００３７】
実行されたスクリプトの結果の伝搬は、自動化を必要とせず、（少なくとも原理的には）手動により実行可能である。しかしながら、典型的な実施形態では、コンパイラなどの外部システムが複雑なスクリプトを分割する際に関係する処理の自動化を扱うことが期待される。
【００３８】
効果的には、ビットコインプロトコルの何れの修正も本発明によって必要とされない。すなわち、カスタムクライアントはトランザクションを準備するのに必要とされうるが、トランザクションがブロードキャストされると、ビットコインネットワークの全てのノードはそれらを検証することが可能になる。
【００３９】
従って、本発明（の全てのバージョン）によると、基礎となるコンセプトはスクリプトを複数のチャンク又は機能部に分割し、次のチャンクの入力としてチャンクの出力を利用することである。これは、従来技術からの重要な乖離である。それは、ブロックチェーンがスクリプトサイズに対するリミットを維持しながら、複雑なタスク及び計算に利用されることを可能にし、計算プロセスの分散化された実行のための新規なアーキテクチャを提供する。
【００４０】
しかしながら、スクリプトの実行の最終的な結果はバイナリである、すなわち、トランザクションが無効とマークされるか、あるいは、有効とマークされる（それはまたその他の要件も充足していると仮定する）ことが留意されるべきである。従って、１つのチャンクの計算の出力と次のチャンクの計算の入力とを“接続”するため、上述したように、スタック上の値にアクセスし、それらを再利用することが可能な非リファレンスクライアントを利用する必要がある。
【００４１】
以下の方法で、
【００４２】
【数１】
2020503749.tif 000003
ＯＰコードに関して記述可能な以下のシンプルな具体例
【００４３】
【数２】
2020503749.tif 000004
から始める。
【００４４】
これを以下の２つのチャンク
【００４５】
【数３】
2020503749.tif 000005
に分割する。
【００４６】
第１のアプローチによると、ここで説明されるような手段が採用できる。
【００４７】
Ａｌｉｃｅは以下のようにＴｘ１を準備する。
【００４８】
【数４】
2020503749.tif 000006
ここで、Ｂｏｂは以下のようにしてＴｘ２を準備することを始める。
【００４９】
【数５】
2020503749.tif 000007
Ｂｏｂはここでトランザクションに署名し、それを検証し、Ｔｘ１：Ｏｕｔ１のアンロックスクリプトと一緒にチェーン化されたＴｘ２：Ｉｎ１のアンロックスクリプトの出力をスタックから読む（ためにカスタマイズされたクライアントを利用する）。
【００５０】
その後、彼は以下の入出力を加えることによってＴｘ２を変更するであろう。
【００５１】
【数６】
2020503749.tif 000008
ここで、明らかにＯＰ＿５は第１のチャンクの計算の結果である。また、この場合、マルチシグネチャを利用して、Ｂｏｂが他の何れかとＯＰ＿５が置換されたトランザクションをブロードキャストすることを防ぐことが可能である。このアプローチは、多数のチャンク（トランザクションにおける入出力の個数に対するリミットまで）が２つのみのトランザクションを利用してチェーン化可能であるという効果を有する。従って、複雑な機能及び計算が効率的な方法により実行可能であり、２つのみのトランザクションがブロックチェーンネットワークによって検証及びマイニングされることしか必要とされず、ブロックチェーンに対して最小限のストレージ要求しか利用しない。
【００５２】
他のアプローチによると、以下のステップがとられうる。
【００５３】
第１のトランザクションＴｘ１が準備され、入力の全てのオーナによって共同で署名される。入力は以下のロックスクリプトを利用してＡｌｉｃｅの公開鍵に送信される。
【００５４】
【数７】
2020503749.tif 000009
Ａｌｉｃｅは、ここで以下の方法でＴｘ２を準備する。
【００５５】
【数８】
2020503749.tif 000010
ここで、Ｔｘ２：Ｉｎ２はＳＩＧＨＡＳＨ＿ＮＯＮＥフラグと共に署名され、これにより、他の出力が追加できる。当該技術において知られるように、ＳＩＧＨＡＳＨ＿ＮＯＮＥは、入力のみを署名するビットコインシグネチャハッシュタイプである。従って、ＳＩＧＨＡＳＨ＿ＮＯＮＥが利用されるとき、誰もが選択する何れの方法でも出力を修正することができる。
【００５６】
Ｔｘ２：Ｉｎ１は、おそらくＡｌｉｃｅのファンドを参照し、ＳＩＧＨＡＳＨ＿ＳＩＮＧＬＥによりアンロック可能であり、これにより、他の出力が再び追加可能である。現在の形式では、トランザクションはトランザクション費用として金額Ａを移す。しかしながら、Ａｌｉｃｅは現在の形式ではトランザクションをブロードキャストせず、それをローカルに単に検証する。検証プロセスでは、Ｔｘ２：Ｉｎ２のアンロックスクリプトがＴｘ１：Ｏｕｔのロックスクリプトと一緒に実行され、
【００５７】
【数９】
2020503749.tif 000011
スタックの実行の終了時、残りの結果は５になり、すなわち、第１のチャンクの計算の結果になる。Ａｌｉｃｅのカスタムビットコインクライアントは、第１のチャンクの計算の結果を保存又は記録し、以下の２つの出力を加えることによってＴｘ２を修正するが、
【００５８】
【数１０】
2020503749.tif 000012
彼女は、このとき通常のフラグＳＩＧＨＡＳＨ＿ＡＬＬと一緒にＴｘ２の入力を再び署名し、これにより、トランザクションの出力の何れも修正できない。Ｂｏｂは、ＯＰ＿ＲＥＴＵＲＮの後にＯｕｔ３に格納されているデータを読むことによって、計算を終了することができる。
【００５９】
当該技術において知られるように、ＯＰ＿ＲＥＴＵＲＮは、トランザクション出力（ＴｘＯ）を無効としてマーク付けするのに利用可能なビットコインＯＰ＿ＣＯＤＥである。ＯＰ＿ＲＥＴＵＲＮの後に提供されるデータはビットコイン支払に関して無視され、従って、ＯＰ＿ＲＥＴＵＲＮは、ブロックチェーンを介し非支払関連データを伝達するための機構として従来技術において利用されてきた。
【００６０】
Ｂｏｂは、ここで以下のトランザクションを準備する。
【００６１】
【数１１】
2020503749.tif 000013
原理的には、ＯＰ＿ＲＥＴＵＲＮの後、ＤＨＴにインデックス化されたハッシュを格納可能であり、これにより、任意の長さの中間結果がトランザクションの間でわたすことができる。明らかに、本例では、Ａｌｉｃｅは、Ｂｏｂが上述したようなＴｘ３を準備すると信用し、これにより、計算は良好に終了可能である。シンプルな拡張は、Ｔｘ２：Ｏｕｔ２がＡｌｉｃｅとＢｏｂとの双方によって署名されることを要求可能であり、これにより、Ａｌｉｃｅは、Ｂｏｂが正しいトランザクションを準備したと検証可能である。しかしながら、Ｂｏｂは、トランザクションを準備すること、あるいは、それに署名することを拒絶することによって、実行を無限に遅延させることができる。Ａｌｉｃｅはまた、Ｔｘ３を準備し、それをＢｏｂに送信し、ＯＰ＿ＲＥＴＵＲＮ後にデータを格納することを回避できる。このアプローチは、各チャンクの計算がブロックチェーンにあることを確認するのに待機することを必要とすることが留意されるべきである。
【００６２】
基礎となる技術のこれら２つの実施形態の詳細な具体例が、添付図面を参照して以下において提供される。以下の説明は、以下のように構成される。
・“実施例１”は、２つのトランザクションのみ利用する第１のアプローチを説明し、複数の入出力が操作される。
・“実施例２”は、同じ技術的効果を実現するため、複数のトランザクションを“リンク”又はチェーン化する他のアプローチを説明する。２つのアプローチの組み合わせがまた可能であることに留意されたい。
【００６３】
双方の実施例の利用を説明するため、ここで以下のように定義される関数ｆ（ｘ，ｙ，ｚ）を評価する以下の具体例を考える。
【００６４】
【数１２】
2020503749.tif 000014
ここで（又はコンパイラは）、シンプルな関数の和としてｆ（ｘ，ｙ，ｚ）を表現する。
【００６５】
【数１３】
2020503749.tif 000015
双方の実施例において、ｇ１及びｇ２の引数を表す変数ｘ，ｙ，ｚはトランザクションアンロックスクリプトに含まれ、関数ｇ１及びｇ２自体はロックスクリプトに含まれる。従って、以降において、“関数”及び“ロックスクリプト”という用語は互換的に利用する。特に、ｘ及びｙはｇ１を含むロックスクリプトをアンロックするスクリプトにある。同様に、ｇ１（ｘ，ｙ）及びｚは、ｇ２を含むロックスクリプトをアンロックするスクリプトにある。
【００６６】
本明細書の以降のセクションでは、利用する具体例はオペコードＯＰ＿ＡＤＤ及びＰｒＯ＿ＭＵＬＴを含む。これらの識別子はそれぞれ、算術演算加算（＋）及び乗算（・）を表す。オペコードＯＰ＿Ｘ，ＯＰ＿Ｙ及びＯＰ＿Ｚは変数ｘ，ｙ，ｚを表す。シンボルＧ１及びＧ２は、ｇ１及びｇ２に対応するロックスクリプトがアンロックされた後、スタックの先頭の値を表す。ＯＰ＿ＡＤＤは、ビットコインスクリプト言語の一部を構成するオペコードである。“プリミティブオペレータ”を略した“ＰｒＯ＿ＭＵＬＴ”という用語を用いて、乗算演算を実行するよう実行可能な演算を表す。ビットコインの現在のバージョンでは、乗算のためのオペコード（ＯＰ＿ＭＵＬ，ＯＰ＿２ＭＵＬなど）は無効にされ、ＰｒＯ＿ＭＵＬＴは、現在無効にされている機能を提供するためのカスタム定義された処理とすることができる。もちろん、ＯＰ＿ＭＵＬなどのオペコードが再び有効にされた場合、これらは代わりに利用可能である。従って、本発明は、標準的な（有効な）オペコードを利用する機能によってのみ利用可能であり、カスタムビルドな処理の実施形態の詳細は本発明の一部でないか、あるいは、関連する。従って、ＰｒＯ＿ＭＵＬＴがどのように実現されうるかに関する詳細は、本発明の理解に必要でなく、簡単化のためここには含まれていない。
【００６７】
ここに提供される具体例は、長いスクリプトの実行成功を条件として、ファンドがＡｌｉｃｅからＢｏｂに移転される大変シンプルなスマートコントラクトの実行に対応する。スクリプト入力がＢｏｂによって提供され、２つの可能な悪意ある動作を想定可能である。第１に、Ｂｏｂは、スクリプトが実行成功するように誤った入力を提供し、ファンドが彼に移転される。しかしながら、トランザクションがブロックチェーンに格納されると、入力は公衆に利用可能になり、Ａｌｉｃｅがコントラクトに異議を唱えることを可能にする。第２に、ＢｏｂがＡｌｉｃｅからの移転を拒絶するための何らかの理由を有する場合、彼はトランザクションを無限に引き延ばし、従って、コントラクトの実行を防ぐ。最も直接的なシナリオでは、Ａｌｉｃｅは、Ｂｏｂがコントラクトの実行を引き延ばさず、正しい入力を提供することを単に信じる必要がある。更なるセキュリティ機構が、セキュリティを高めるために本発明のコンセプトと共に利用されてもよい。
【００６８】
実施例１：複数の入出力へのスクリプトの分割
図１、９ａ及び９ｂは、実施例１の複数入出力アプローチに関するトランザクションのチェーン及び順次的ステップを示す。Ｔｘ１は、Ｔｘ２によって使用される未使用トランザクション出力（ＵＴＸＯ）のセットを含む。Ｔｘ２の構築はステップ毎に徐々に進められる。各フェーズにおいて、エージェント（自動化されたソフトウェア）は、Ｔｘ１の１つのＵＴＸＯにアンロックスクリプトを提示する。エージェントはＴｘ２を検証し、スタックの先頭の値を読み、新たなアンロックスクリプトを準備する。ブロックチェーントランザクション及びスクリプトの自動化された生成は、当該技術において知られ、従って、ここでは説明されない。
【００６９】
エージェントは、前のステップ（又は以前のステップから）においてスタックから取得された情報を利用してもよく、Ｔｘ１内に含まれる他のＵＴＸＯに当該新たなアンロックスクリプトを提示する。Ｔｘ２は、必要な全てのステップが本タスクに対して実現されると、ブロードキャストされる。
【００７０】
効果的には、この技術は、Ｔｘ２によって提供されるアンロックスクリプトに含まれる引数から、Ｔｘ１のロックスクリプトに含まれる関数を切断する。Ｔｘ１がブロックチェーンに追加され、検証されると、関数は変更不可になる。さらに、この段階では、関数の引数（入力）は未知であってもよい。それらは、Ｔｘ２が準備されるとき、以降にのみ明らかにされる。これは、効果的であり、エンハンスされたセキュリティを提供しうる。
【００７１】
実施例１のステップの系列が図１、９ａ及び９ｂに示され、以下のように説明できる。
ステップ０：Ａｌｉｃｅは、ビットコインネットワークにトランザクション１（図１に示される）を送信する。
ステップ１：Ｂｏｂは、トランザクション２の初期的バージョンを準備する。
ステップ３：Ｂｏｂは、＜Ｂｏｂ’ｓ  ｓｉｇｎａｔｕｒｅ＞＜ＯＰ＿Ｘ＞＜ＯＰ＿Ｙ＞＜Ｒｅｄｅｅｍ  ｓｃｒｉｐｔ  １＞を出力０に提示する。Ｂｏｂは、トランザクション１を検証し、スタックの先頭の値Ｇ１を読むが、トランザクション２をブロードキャストしない。
ステップ４：Ｂｏｂは、＜Ｂｏｂ’ｓ  ｓｉｇｎａｔｕｒｅ＞＜Ｇ１＞＜ＯＰ＿Ｚ＞＜Ｒｅｄｅｅｍ  ｓｃｒｉｐｔ  ２＞を出力１に提示する。Ｂｏｂは、トランザクション２を検証し、スタックの先頭の値Ｇ２を読むが、トランザクション２をブロードキャストしない。
ステップ５：Ｂｏｂは、＜Ｂｏｂ’ｓ  ｓｉｇｎａｔｕｒｅ＞＜Ｇ２＞＜ＯＰ＿Ｘ＞＜Ｒｅｄｅｅｍ  ｓｃｒｉｐｔ  ３＞を出力２に提示する。Ｂｏｂは、トランザクション２を検証し、それをブロードキャストする。
【００７２】
簡単化のため、Ｔｘ１の入力及びＴｘ２の出力に関する包括的な詳細を提供しない。図２は、トランザクション１（Ｔｘ１）を示す。図３は、トランザクション２（Ｔｘ２）を示す。
【００７３】
実施例２：複数のトランザクションへのスクリプトの分割
第２の実施例は、ブロックチェーントランザクションを利用して関数を構成する（図４を参照）。このアプローチは、原理的に前の実施例と類似する。しかしながら、検証フェーズ中、エージェントはスタックの先頭の値を読み、上述したように、ＯＰ＿ＲＥＴＵＲＮ後にそれを追加する。
【００７４】
図５〜８は、実施例２の例示的バージョンによるトランザクション１，２，３，４を示す。
【００７５】
上述した実施例は本発明を限定するものでなく説明するものであり、当業者は添付される請求項によって規定されるような本発明の範囲から逸脱することなく他の多数の実施例を設計可能であることが留意されるべきである。請求項において、括弧内に配置された参照符号は請求項を限定するものとして解釈されない。“有する”などの単語は、何れかの請求項又は明細書全体に列記された以外の要素又はステップの存在を排除しない。本明細書において、“有する”は“含む”又は“構成する”を意味する。要素の単数形の表現は、当該要素の複数形の表現を排除するものでない。本発明は、複数の個別の要素を含むハードウェアによって、また、適切にプログラムされたコンピュータによって実現されてもよい。複数の手段を列挙する装置クレームでは、これらの手段のいくつかは同一のハードウェアアイテムによって実現されてもよい。特定の手段が互いに異なる請求項に記載されているという単なる事実は、これらの手段の組み合わせが効果的に利用可能でないことを示すものでない。
【図１】
2020503749.tif 000016
【図２】
2020503749.tif 000017
【図３】
2020503749.tif 000018
【図４】
2020503749.tif 000019
【図５】
2020503749.tif 000020
【図６】
2020503749.tif 000021
【図７】
2020503749.tif 000022
【図８】
2020503749.tif 000023
【図９ａ】
2020503749.tif 000024
【図９ｂ】
2020503749.tif 000025
【図１０】
2020503749.tif 000026
【国際調査報告】
2020503749.tif 000027
2020503749.tif 000028