(57)【特許請求の範囲】
【請求項１】
複数のノードを含むブロックチェーンネットワーク内のイベント駆動型ワークフロー処理のためのコンピュータで実行される方法であって、
前記ブロックチェーンネットワーク内のワークフロー処理ノードにおいて、クライアントから、ワークフロープログラムを実行することの要求を受信するステップであって、前記ワークフロープログラムが、前記ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される、ステップと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた動作を識別するステップと、
前記ワークフロー処理ノードによって、前記ブロックチェーンネットワーク内の前記複数のノードのサブセットに前記識別された動作を割り当てるステップであって、前記ノードのサブセット内の各ノードが、前記ノードのサブセット内の他のノードとは別個に前記動作を実行するように構成され、前記ブロックチェーンネットワーク内の前記ノードの各々が、前記ブロックチェーンネットワークに参加する複数のエンティティのうちの1つに関連付けられており、前記ノードのサブセットが、前記ブロックチェーンネットワークに参加する前記複数のエンティティの各々に関連付けられた少なくとも1つのノードを含む、ステップと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記実行された動作の処理結果を識別するステップであって、各処理結果が、前記ノードのサブセット内の特定のノードに関連付けられ、前記特定のノードによって生成された前記実行された動作の結果を表す、ステップと、
前記ワークフロー処理ノードによって、前記識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、前記動作の前記コンセンサス結果を決定するステップとを含み、
前記動作が第1の動作であり、前記方法が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた第2の動作を識別するステップであって、前記第2の動作が前記第1の動作とは別である、ステップと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記第2の動作を割り当てるステップと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記第2の動作の処理結果を識別するステップと、
前記コンセンサスしきい値未満の数のノードが同じ処理結果に関連付けられていることに基づいて、前記第2の動作についてコンセンサス結果が存在しないと判断するステップとをさらに含む、
コンピュータで実行される方法。
【請求項２】
前記ブロックチェーンに前記動作の前記コンセンサス結果を記憶するステップをさらに含む、
請求項１に記載のコンピュータで実行される方法。
【請求項３】
前記動作が第1の動作であり、前記方法が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた最後の動作を識別するステップであって、前記最後の動作が、前記第1の動作とは別であり、前記ワークフロープログラムに関連付けられた命令の順序付けられたセット内の最後に現れる、ステップと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記最後の動作を割り当てるステップと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記最後の動作の処理結果を識別するステップと、
前記識別された処理結果に基づいて、前記最後の動作のコンセンサス結果を決定するステップと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムが正常に実行を完了したことを示す応答を前記クライアントに送信するステップとをさらに含む、
請求項１に記載のコンピュータで実行される方法。
【請求項４】
前記ワークフロー処理ノードによって、前記ワークフロープログラムの実行が成功しなかったことを示す応答を前記クライアントに送信するステップをさらに含む、
請求項１に記載のコンピュータで実行される方法。
【請求項５】
識別された各処理結果が、関連するノードによってデジタル署名される、
請求項１に記載のコンピュータで実行される方法。
【請求項６】
前記ワークフロープログラムが、前記複数のノードによって実行されるように構成された実行可能バイトコードを含む、
請求項１に記載のコンピュータで実行される方法。
【請求項７】
前記識別された動作を前記ノードのサブセットに割り当てることが、前記ワークフロー処理ノードによって、前記ノードのサブセットの各々に対する前記動作に関連付けられたリモートプロシージャ呼出しを実行することを含む、
請求項１に記載のコンピュータで実行される方法。
【請求項８】
前記ブロックチェーンがイーサリアムブロックチェーンであり、前記ワークフロープログラムがスマートコントラクトプログラムである、
請求項１に記載のコンピュータで実行される方法。
【請求項９】
以下の処理を行うために、コンピュータシステムによって実行可能な1つまたは複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記処理が、
ブロックチェーンネットワーク内のワークフロー処理ノードにおいて、クライアントから、ワークフロープログラムを実行することの要求を受信することであって、前記ワークフロープログラムが、前記ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される、ことと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた動作を識別することと、
前記ワークフロー処理ノードによって、前記ブロックチェーンネットワーク内の複数のノードのサブセットに前記識別された動作を割り当てることであって、前記ノードのサブセット内の各ノードが、前記ノードのサブセット内の他のノードとは別個に前記動作を実行するように構成され、前記ブロックチェーンネットワーク内の前記ノードの各々が、前記ブロックチェーンネットワークに参加する複数のエンティティのうちの1つに関連付けられており、前記ノードのサブセットが、前記ブロックチェーンネットワークに参加する前記複数のエンティティの各々に関連付けられた少なくとも1つのノードを含む、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記実行された動作の処理結果を識別することであって、各処理結果が、前記ノードのサブセット内の特定のノードに関連付けられ、前記特定のノードによって生成された前記実行された動作の結果を表す、ことと、
前記ワークフロー処理ノードによって、前記識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、前記動作の前記コンセンサス結果を決定することとを含み、
前記動作が第1の動作であり、前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた第2の動作を識別することとであって、前記第2の動作が前記第1の動作とは別である、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記第2の動作を割り当てることと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記第2の動作の処理結果を識別することと、
前記コンセンサスしきい値未満の数のノードが同じ処理結果に関連付けられていることに基づいて、前記第2の動作についてコンセンサス結果が存在しないと判断することとをさらに含む、
非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記処理が、
前記ブロックチェーンに前記動作の前記コンセンサス結果を記憶することをさらに含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記動作が第1の動作であり、前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた最後の動作を識別することであって、前記最後の動作が、前記第1の動作とは別であり、前記ワークフロープログラムに関連付けられた命令の順序付けられたセット内の最後に現れる、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記最後の動作を割り当てることと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記最後の動作の処理結果を識別することと、
前記識別された処理結果に基づいて、前記最後の動作のコンセンサス結果を決定することと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムが正常に実行を完了したことを示す応答を前記クライアントに送信することとをさらに含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムの実行が成功しなかったことを示す応答を前記クライアントに送信することをさらに含む、
請求項１１に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
識別された各処理結果が、関連するノードによってデジタル署名される、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記ワークフロープログラムが、前記複数のノードによって実行されるように構成された実行可能バイトコードを含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記識別された動作を前記ノードのサブセットに割り当てることが、前記ワークフロー処理ノードによって、前記ノードのサブセットの各々に対する前記動作に関連付けられたリモートプロシージャ呼出しを実行することを含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合され、かつ前記1つまたは複数のコンピュータによって実行された場合に以下の処理を行うための1つまたは複数の命令を記憶する有形の非一時的マシン可読記憶媒体を有する1つまたは複数のコンピュータメモリデバイスとを含むシステムであって、前記処理が、
ブロックチェーンネットワーク内のワークフロー処理ノードにおいて、クライアントから、ワークフロープログラムを実行することの要求を受信することであって、前記ワークフロープログラムが、前記ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される、ことと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた動作を識別することと、
前記ワークフロー処理ノードによって、前記ブロックチェーンネットワーク内の複数のノードのサブセットに前記識別された動作を割り当てることであって、前記ノードのサブセット内の各ノードが、前記ノードのサブセット内の他のノードとは別個に前記動作を実行するように構成され、前記ブロックチェーンネットワーク内の前記ノードの各々が、前記ブロックチェーンネットワークに参加する複数のエンティティのうちの1つに関連付けられており、前記ノードのサブセットが、前記ブロックチェーンネットワークに参加する前記複数のエンティティの各々に関連付けられた少なくとも1つのノードを含む、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記実行された動作の処理結果を識別することであって、各処理結果が、前記ノードのサブセット内の特定のノードに関連付けられ、前記特定のノードによって生成された前記実行された動作の結果を表す、ことと、
前記ワークフロー処理ノードによって、前記識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、前記動作の前記コンセンサス結果を決定することとを含み、
前記動作が第1の動作であり、前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた第2の動作を識別することとであって、前記第2の動作が前記第1の動作とは別である、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記第2の動作を割り当てることと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記第2の動作の処理結果を識別することと、
前記コンセンサスしきい値未満の数のノードが同じ処理結果に関連付けられていることに基づいて、前記第2の動作についてコンセンサス結果が存在しないと判断することとをさらに含む、
システム。
【請求項１７】
前記処理が、
前記ブロックチェーンに前記動作の前記コンセンサス結果を記憶することをさらに含む、
請求項１６に記載のシステム。
【請求項１８】
前記動作が第1の動作であり、前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムに関連付けられた最後の動作を識別することであって、前記最後の動作が、前記第1の動作とは別であり、前記ワークフロープログラムに関連付けられた命令の順序付けられたセット内の最後に現れる、ことと、
前記ワークフロー処理ノードによって、前記ノードのサブセットに前記最後の動作を割り当てることと、
前記ワークフロー処理ノードによって、前記ノードのサブセット内のノードに関連付けられた前記最後の動作の処理結果を識別することと、
前記識別された処理結果に基づいて、前記最後の動作のコンセンサス結果を決定することと、
前記ワークフロー処理ノードによって、前記ワークフロープログラムが正常に実行を完了したことを示す応答を前記クライアントに送信することとをさらに含む、
請求項１６に記載のシステム。
【請求項１９】
前記処理が、
前記ワークフロー処理ノードによって、前記ワークフロープログラムの実行が成功しなかったことを示す応答を前記クライアントに送信することをさらに含む、
請求項１６に記載のシステム。
【請求項２０】
識別された各処理結果が、関連するノードによってデジタル署名される、
請求項１６に記載のシステム。
【請求項２１】
前記ワークフロープログラムが、前記複数のノードによって実行されるように構成された実行可能バイトコードを含む、
請求項１６に記載のシステム。
【請求項２２】
前記識別された動作を前記ノードのサブセットに割り当てることが、前記ワークフロー処理ノードによって、前記ノードのサブセットの各々に対する前記動作に関連付けられたリモートプロシージャ呼出しを実行することを含む、
請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、イベント駆動型ブロックチェーンワークフロー処理に関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散型台帳システム(Distributed ledger system: DLS)によって、参加しているエンティティは安全かつ不変にデータを記憶できる。DLSは、一般に、任意の特定のユーザ事例(たとえば暗号通貨など)を参照せずにブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例には、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。パブリックブロックチェーンネットワークは、すべてのエンティティがDLSを使用し、コンセンサスプロセスに参加するためにオープンである。特定のエンティティに対してプライベートブロックチェーンネットワークが提供されており、読取りおよび書込み許可を中央で制御する。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティの選択グループに提供され、アクセス制御層を含む。
【０００３】
プライベートブロックチェーンネットワークでは、マルチパーティの協調は困難であり、リソース集約的であり得る。従来のブロックチェーン環境では、多数のノードが同じタスクを実行している場合がある。たとえば、ブロックチェーンに記憶されているスクリプト(たとえば、スマートコントラクトなど)を実行するとき、ブロックチェーンネットワークに参加している各ノードは、スクリプトから同じ命令を並行して実行している可能性がある。そのような構成は、命令の結果に関するコンセンサスを達成するのに適しているが、このコンセンサスに到達するために費やされるリソースの観点からは効率が悪い場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書の実装形態は、イベント駆動型ブロックチェーンワークフロー処理のためのコンピュータで実行される方法を含む。より詳細には、本明細書の実装形態は、ブロックチェーンネットワーク内の複数の他のノードにタスクを明確に割り当てることによって、ブロックチェーンから発せられるタスクの処理をワークフローノードが管理するイベント駆動型プロセスを対象とする。
【０００５】
いくつかの実装形態では、アクションは、ブロックチェーンネットワーク内のワークフロー処理ノードにおいて、クライアントから、ワークフロープログラムを実行することの要求を受信することであり、ワークフロープログラムは、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される、受信することと、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた動作を識別することと、ワークフロー処理ノードによって、ブロックチェーンネットワーク内の複数のノードのサブセットに識別された動作を割り当てることであり、ノードのサブセット内の各ノードは、ノードのサブセット内の他のノードとは別個に動作を実行するように構成される、割り当てることと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた実行された動作の処理結果を識別することであり、各処理結果は、ノードのサブセット内の特定のノードに関連付けられ、特定のノードによって生成された実行された動作の結果を表す、識別することと、ワークフロー処理ノードによって、識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、動作のコンセンサス結果を決定することとを含む。
【０００６】
他の実装形態は、コンピュータ記憶デバイス上に符号化された方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。
【０００７】
これらおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を随意に含み得る。
【０００８】
いくつかの場合には、この方法は、ブロックチェーンに動作のコンセンサス結果を記憶するステップを含むことができる。
【０００９】
いくつかの実装形態では、動作は第1の動作であり、方法は、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた最後の動作を識別するステップであって、最後の動作は、第1の動作とは別であり、ワークフロープログラムに関連付けられた命令の順序付けられたセット内の最後に現れる、ステップと、ワークフロー処理ノードによって、ノードのサブセットに最後の動作を割り当てるステップと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた最後の動作の処理結果を識別するステップと、識別された処理結果に基づいて、最後の動作のコンセンサス結果を決定するステップと、ワークフロー処理ノードによって、ワークフロープログラムが正常に実行を完了したことを示す応答をクライアントに送信するステップとをさらに含む。
【００１０】
いくつかの場合には、動作は第1の動作であり、方法は、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた第2の動作を識別するステップであって、第2の動作が第1の動作とは別である、ステップと、ワークフロー処理ノードによって、ノードのサブセットに第2の動作を割り当てるステップと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた第2の動作の処理結果を識別するステップと、コンセンサスしきい値未満の数のノードが同じ処理結果に関連付けられていることに基づいて、第2の動作についてコンセンサス結果が存在しないと判断するステップとをさらに含む。
【００１１】
いくつかの実装形態では、方法は、ワークフロー処理ノードによって、ワークフロープログラムの実行が成功しなかったことを示す応答をクライアントに送信するステップを含み得る。
【００１２】
いくつかの場合には、識別された各処理結果は、関連するノードによってデジタル署名される。
【００１３】
いくつかの態様では、ワークフロープログラムは、複数のノードによって実行されるように構成された実行可能バイトコードを含む。
【００１４】
いくつかの場合には、識別された動作をノードのサブセットに割り当てることは、ワークフロー処理ノードによって、ノードのサブセットの各々に対する動作に関連付けられたリモートプロシージャ呼出しを実行することを含む。
【００１５】
いくつかの実装形態では、ブロックチェーンは、イーサリアムブロックチェーンであり、ワークフロープログラムは、スマートコントラクトプログラムである。
【００１６】
いくつかの態様では、ブロックチェーンネットワーク内のノードの各々は、ブロックチェーンネットワークに参加する複数のエンティティのうちの1つに関連付けられている。
【００１７】
いくつかの実装形態では、ノードのサブセットは、ブロックチェーンネットワークに参加する複数のエンティティの各々に関連付けられた少なくとも1つのノードを含む。
【００１８】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【００１９】
本明細書は、本明細書で提供される方法を実装するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【００２０】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることが諒解される。すなわち、本明細書による方法は、本明細書で具体的に説明した態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【００２１】
本明細書の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載されている。本明細書の他の特徴および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００２２】
【図１】本明細書の実装形態を実行するために使用できる例示的な環境を示す図である。
【図２】本明細書の実装形態による例示的な概念的アーキテクチャを示す図である。
【図３】本明細書の実装形態によるイベント駆動型ブロックチェーンワークフロー処理のための例示的なシステムを示す図である。
【図４】本明細書の実装形態によるワークフロープログラムを実行するための例示的なプロセスを示す図である。
【図５】本明細書の実装形態によるワークフロープログラムを実行するための例示的なプロセスを示す図である。
【図６】本明細書の実装形態に従って実行できる例示的なプロセスを示す図である。
【発明を実施するための形態】
【００２３】
様々な図面における同様の参照符号は、同様の要素を示す。
【００２４】
本明細書の実装形態は、イベント駆動型ブロックチェーンワークフロー処理のためのコンピュータで実行される方法を含む。より詳細には、本明細書の実装形態は、イベント駆動型ブロックチェーンワークフロー処理を対象とする。いくつかの実装形態では、アクションは、クライアントから、ブロックチェーンネットワーク内のワークフロー処理ノードにおいて、ワークフロープログラムを実行することの要求を受信することであり、ワークフロープログラムは、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される、受信することと、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた動作を識別することと、ワークフロー処理ノードによって、ブロックチェーンネットワーク内の複数のノードのサブセットに識別された動作を割り当てることであり、ノードのサブセット内の各ノードは、ノードのサブセット内の他のノードとは別個に動作を実行するように構成される、割り当てることと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた実行された動作の処理結果を識別することであり、各処理結果は、ノードのサブセット内の特定のノードに関連付けられ、特定のノードによって生成された実行された動作の結果を表す、識別することと、識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、動作のコンセンサス結果を決定することとを含む。
【００２５】
本明細書の実装形態のさらなる内容を提供するために、上記で紹介したように、コンセンサスネットワーク(たとえば、ピアツーピアノードで構成される)およびブロックチェーンネットワークとも呼ばれる分散型台帳システム(DLS)によって、参加しているエンティティは、安全かつ不変にトランザクションを実行し、データを記憶できる。ブロックチェーンという用語は一般に、様々な暗号通貨ネットワークに関連付けられているが、任意の特定の使用事例を参照せずにDLSを一般的に指すために、本明細書ではブロックチェーンが使用される。
【００２６】
ブロックチェーンは、将来のトランザクションがすべての以前のトランザクションアクティビティとの整合性について検証されることを可能にする方法でトランザクションを記憶するデータ構造である。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号化ハッシュを含めることによって、チェーン内のその直前の前のブロックにリンクされる。各ブロックは、タイムスタンプ、それ自体の暗号化ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシュされ、マークルツリーに符号化される。マークルツリーは、ツリーのリーフノードのデータがハッシュされ、ツリーの各ブランチのすべてのハッシュがブランチのルートで連結されるデータ構造である。このプロセスは、ツリーをツリー全体のルートまで続け、これは、ツリー内のすべてのデータを表すハッシュを記憶する。ツリーに記憶されているトランザクションのものであるとされるハッシュは、ツリーの構造と一致しているかどうかを判断することによって、迅速に検証できる。
【００２７】
ブロックチェーンは、トランザクションを記憶するためのデータ構造であるのに対して、ブロックチェーンネットワークは、特定のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供できる。パブリックブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンネットワークにおいて協働し、各々がパブリックブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、パブリックブロックチェーンネットワークは、参加しているエンティティに関してパブリックネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加されるために、エンティティ(ノード)の大部分がすべてのブロックに署名しなければならない。パブリックブロックチェーンネットワークの例には、ピアツーピア支払いネットワークである様々な暗号通貨ネットワークがある。暗号通貨ネットワークは、ブロックチェーンと呼ばれる分散型台帳を活用する。しかしながら、上記のように、ブロックチェーンという用語は、任意の特定の暗号通貨ネットワークを特に参照せずに分散型台帳を一般的に指すために使用される。
【００２８】
一般に、パブリックブロックチェーンネットワークは、パブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワーク内のすべてのノードと共有され、グローバルブロックチェーンに記憶される。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全な状態のコンセンサスにある。コンセンサスを達成するために(ブロックチェーンへのブロックの追加の合意など)、パブリックブロックチェーンネットワーク内にコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルは、限定はしないが、暗号通貨ネットワークに実装されたプルーフオブワーク(POW)を含む。
【００２９】
一般に、特定のエンティティに対してプライベートブロックチェーンネットワークが提供されており、読取りおよび書込み許可を中央で制御する。エンティティはどのノードが、ブロックチェーンネットワークに参加できるかを制御する。結果として、プライベートブロックチェーンネットワークは一般に、許可されたネットワークと呼ばれ、誰がネットワークに参加できるか、および参加のレベル(たとえば、いくつかのトランザクションのみへの参加など)を制限する。様々なタイプのアクセス制御機構を使用できる(たとえば、既存の参加者が新しいエンティティの追加に投票する、規制当局が入場を制御できる)。
【００３０】
一般に、コンソーシアムブロックチェーンネットワークは、参加しているエンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、認可されたノードのセットによって制御され、1つまたは複数のノードはそれぞれのエンティティ(たとえば、金融機関、保険会社など)によって動作される。たとえば、10のエンティティ(たとえば、金融機関、保険会社など)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを動作させることができ、その各々は、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、コンソーシアムブロックチェーンネットワークは、参加しているエンティティに関してプライベートネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、各エンティティ(ノード)がすべてのブロックに署名しなければならない。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、少なくともエンティティ(ノード)のサブセット(たとえば、少なくとも7つのエンティティ)がすべてのブロックに署名しなければならない。
【００３１】
本明細書の実装形態は、誰がネットワークに参加できるかに制限が課されるプライベートブロックチェーンネットワークを参照して本明細書でさらに詳細に説明される。しかしながら、本明細書の実装形態は、任意の適切なタイプのブロックチェーンネットワークで実現できると企図される。
【００３２】
本明細書の実装形態は、上記の文脈を考慮して本明細書でさらに詳細に説明される。より詳細には、上記で紹介したように、本明細書の実装形態は、ブロックチェーンネットワーク内の複数の他のノードにタスクを明確に割り当てることによって、ブロックチェーンから発せられるタスクの処理をワークフローノードが管理するイベント駆動型プロセスを対象とする。
【００３３】
本明細書で説明する技法は、ブロックチェーン技術の主要な利点の1つであるコンセンサス機構を維持しながら、ブロックチェーンネットワークでのタスクの分散処理の性能が低いという技術的問題に対する技術的解決策を表す。たとえば、本技法は、従来の実装形態で各ノードが競争して各動作を完了するのではなく、ブロックチェーンネットワーク内のどのノードが特定の動作を実行するかを明確に管理することを伴う。また、本技法は、複数のノードに同じ動作を送信し、コンセンサスの結果に同意しなければならないノードの数のしきい値を構成することによって、コンセンサス機構を維持する。さらに、本技法のイベント駆動型の性質(たとえば、ワークフロー処理ノードが特定のメッセージをノードに送信して動作を割り当てる)は、更新のためにブロックチェーンを定期的にポーリングするのではなく、ワークフロー処理ノードからのイベントが処理を開始するのをノードが単に待つことができるため、性能をさらに向上させる。
【００３４】
図1は、本明細書の実装形態を実行するために使用できる例示的な環境100を示す。いくつかの例では、例示的な環境100によって、エンティティは、プライベートブロックチェーンネットワーク102に参加できる。例示的な環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、ワイヤードおよび/またはワイヤレス通信リンクを介してアクセスできる。いくつかの例では、ネットワーク110は、プライベートブロックチェーンネットワーク102との、およびプライベートブロックチェーンネットワーク102内の通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。
【００３５】
図示された例では、コンピューティングシステム106、108は各々、プライベートブロックチェーンネットワーク102のノードとしての参加を可能にする任意の適切なコンピューティングシステムを含むことができる。例示的なコンピューティングデバイスは、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、スマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、プライベートブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティ(たとえば、ユーザA)のコンピュータ実装サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(たとえば他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティ(たとえばユーザB)のコンピュータ実装サービスをホストすることができる。図1の例では、プライベートブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、それぞれ、プライベートブロックチェーンネットワーク102に参加する第1のエンティティおよび第2のエンティティのノードを提供する。
【００３６】
図2は、本明細書の実装形態による例示的なアーキテクチャ200を示す。例示的な概念的アーキテクチャ200は、エンティティ層202、ホストサービス層204、およびブロックチェーンネットワーク層206を含む。図示された例では、エンティティ層202は、3つのエンティティ、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれのトランザクション管理システム208を有する。
【００３７】
図示された例では、ホストサービス層204は、各トランザクション管理システム208のためのインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、ネットワーク(たとえば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例では、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワーク層206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワーク層206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワーク層206との間の通信は、リモートプロシージャ呼出し(RPC)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208のブロックチェーンネットワークノードを「ホスト」する。たとえば、インターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【００３８】
本明細書で説明するように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を不変に記録する複数のノード214を含むピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、プライベートブロックチェーンネットワークに参加している2つ以上のエンティティ間で実行されるトランザクションに関連付けられた情報を記憶する。
【００３９】
図3は、本明細書の実装形態によるイベント駆動型ブロックチェーンワークフロー処理のための例示的なシステムを示す。図示のように、システムは、ブロックチェーンネットワークに参加する他のノード315a〜cおよび320a、bと通信しているワークフロー処理ノード305を含む。ブロックチェーンネットワークは、ブロックチェーン316を含む。プログラム325は、ブロックチェーン316に記憶されており、いくつかの動作または命令330を含む。クライアント340は、ワークフロー処理ノード305と通信している。
【００４０】
動作中、クライアント340は、ブロックチェーン316に記憶されたワークフロープログラム305の実行を要求する要求をワークフロー処理ノード305に送信する。ワークフロー処理ノード305は、ブロックチェーン316からプログラム325を読み取り、プログラム325の一部として実行されるべき動作330を識別する。次いで、ワークフロー処理ノード305は、識別された動作330を実行するためにブロックチェーンネットワーク内の複数のノードを選択する。図3に示す例では、ワークフロー処理ノード305は、割り当てられたノード315a〜cを選択しているが、割り当てられていないノード320a〜bは命令を処理しない。ワークフロー処理ノード305が動作を実行するためにノード315a〜cを選択すると、割り当てられたノード315a〜cの各々が動作を実行し、動作の結果をワークフロー処理ノード305に返す。ノード315a〜cの各々が動作330を独立して実行しているので、ノード315a〜cの各々は、ワークフロー処理ノード305に動作の結果を提供する。ワークフロー処理ノード305は、受信された結果を分析して、ノード315a〜cによって動作330のコンセンサス結果に到達したかどうかを判断する。このプロセスは、図4および図5に関してより詳細に説明される。
【００４１】
図4は、本明細書の実装形態によるワークフロープログラム(たとえば、図3のプログラム325)を実行するための例示的なプロセス400を示す。図示のように、プロセスは、図3のワークフロー処理ノード305とノード315a〜cとの間の対話を伴う。
【００４２】
405で、ワークフロー処理ノード305は、クライアント要求を受信する。いくつかの実装形態では、プライベートインターネットプロトコル(IP)ネットワーク、インターネットなどのパブリックIPネットワーク、または他のネットワークなどのネットワークを介して、ワークフロー処理ノード305によって要求が受信され得る。要求は、ハイパーテキスト転送プロトコル(HTTP)、リモートプロシージャ呼出し(RPC)、または他のプロトコルなどのネットワーク通信プロトコルに従ってフォーマットされ得る。要求は、ブロックチェーンネットワークのノードによる実行のためのワークフロープログラムの識別を含み得る。いくつかの実装形態では、要求は、ワークフロープログラムが記憶されているブロックチェーン内の場所を含み得る。
【００４３】
410で、ワークフロー処理ノードは、ブロックチェーンから要求されたワークフロープログラムを取り出す。いくつかの場合には、ワークフロープログラムは、ブロックチェーンに記憶されたスマートコントラクトプログラムである。ワークフロープログラムは、ブロックチェーンに記憶されたバイトコード(たとえば、Java(登録商標)バイトコードなど)のセットとすることもできる。ワークフロープログラムは、ワークフロー処理ノード305の指示の下でノード315a〜cによって実行されるように構成された任意のプログラミング言語の命令のセットとすることもできる。
【００４４】
415a〜cで、ワークフロー処理ノードは、取り出されたワークフロープログラムから第1の動作をノード315a〜cに割り当てる。420a〜cで、ノード315a〜cは、割り当てられた第1の動作を独立して実行する。425a〜cで、ノード315a〜cは各々、第1の動作の実行から取得された結果を送信する。たとえば、結果は、たとえば、ワークフロープログラムに関連付けられたメモリスペースの更新された値、更新されたプログラムカウンタ、または動作の完了後のワークフロープログラムの状態に関する他の情報を含む、動作を実行した後のワークフロープログラムの更新された実行状態の表現であり得る。
【００４５】
430で、ワークフロー処理ノード305は、ノード315a〜cからの結果を分析して、コンセンサス結果に達したかどうかを判断する。たとえば、ワークフロー処理ノード305は、コンセンサス結果を達成するために同じ結果を返さなければならないノードの数を指定するコンセンサスしきい値で構成され得る。図示のように、一致する結果の数がこのしきい値以上である場合、ワークフロー処理ノード305は、コンセンサスに達したと判断する。例示的なプロセス400では、しきい値は3であり、3つのノード315a〜cのすべてからの結果は同じであり、コンセンサスに達したことを示している。
【００４６】
435で、ワークフロー処理ノード305は、上記の分析に基づいてコンセンサスに達したと判断する。ワークフロー処理ノード305は、第1の動作の結果をブロックチェーンに追加し、415aでワークフロープログラムの次の動作から開始してプロセス400を繰り返す。
【００４７】
図5は、本明細書の実装形態によるワークフロープログラムを実行するための例示的なプロセス500を示す。プロセス500は、ワークフロー処理ノード305が、割り当てられたノード315a〜cからの動作の異なる結果の受信をどのように処理するかの一例を提供する。
【００４８】
505で、ワークフロー処理ノード305は、クライアント要求を受信する。いくつかの実装形態では、プライベートIPネットワーク、インターネットなどのパブリックIPネットワーク、または他のネットワークなどのネットワークを介して、ワークフロー処理ノード305によって要求が受信され得る。要求は、HTTP、RPC、または他のプロトコルなどのネットワーク通信プロトコルに従ってフォーマットされ得る。要求は、ブロックチェーンネットワークのノードによる実行のためのワークフロープログラムの識別を含み得る。いくつかの実装形態では、要求は、ワークフロープログラムが記憶されているブロックチェーン内の場所を含み得る。
【００４９】
510で、ワークフロー処理ノードは、ブロックチェーンから要求されたワークフロープログラムを取り出す。いくつかの場合には、ワークフロープログラムは、ブロックチェーンに記憶されたスマートコントラクトプログラムである。ワークフロープログラムは、ブロックチェーンに記憶されたバイトコード(たとえば、Java(登録商標)バイトコードなど)のセットとすることもできる。ワークフロープログラムは、ワークフロー処理ノード305の指示の下でノード315a〜cによって実行されるように構成された任意のプログラミング言語の命令のセットとすることもできる。
【００５０】
515a〜cで、ワークフロー処理ノードは、取り出されたワークフロープログラムから第1の動作をノード315a〜cに割り当てる。520a〜cで、ノード315a〜cは、割り当てられた第1の動作を独立して実行する。525a〜cで、ノード315a〜cは各々、第1の動作の実行から取得された結果を送信する。たとえば、結果は、たとえば、ワークフロープログラムに関連付けられたメモリスペースの更新された値、更新されたプログラムカウンタ、または動作の完了後のワークフロープログラムの状態に関する他の情報を含む、動作を実行した後のワークフロープログラムの更新された実行状態の表現であり得る。
【００５１】
530で、ワークフロー処理ノード305は、ノード315a〜cからの結果を分析して、コンセンサス結果に達したかどうかを判断する。図示のように、ノード315cからの結果は、ノード315a、bからの結果とは異なる。したがって、3つのノードのうち2つのみが同じ結果を返した。上述した3のコンセンサスしきい値が与えられると、同じ結果を返すノードの数(2)はしきい値未満であり、動作の結果に関してコンセンサスに達していないことを示す。
【００５２】
535で、コンセンサスに達していないという決定に基づいて、ワークフロー処理ノード305は、ワークフロープログラムの実行を終了する。いくつかの実装形態では、ワークフロー処理ノード305は、要求されたワークフロープログラムがコンセンサスの欠如により終了したという指示をクライアント340に送信し得る。いくつかの場合には、ワークフロー処理ノード305は、ブロックチェーンからトランザクションを削除する、または(たとえば、終了したプログラムの動作によって引き落とされた資金を返すために任意のアカウントに振り込むなど)以前の動作の効果を取り消すために追加のトランザクションをサブミットすることによって、プログラムから任意の以前の動作を「ロールバック」し得る。
【００５３】
いくつかの実装形態では、所定の時間の後、結果に関して合意したノードの数がしきい値未満である場合、コンセンサスなしの決定が行われる。
【００５４】
図6は、本明細書の実装形態に従って実行できる例示的なプロセス600を示す。いくつかの実装形態では、例示的なプロセス600は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。
【００５５】
605で、ブロックチェーンネットワーク内のワークフロー処理ノードは、クライアントから、ワークフロープログラムを実行することの要求を受信し、ワークフロープログラムは、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶される。いくつかの場合には、ブロックチェーンは、イーサリアムブロックチェーンであり、ワークフロープログラムは、スマートコントラクトプログラムである。
【００５６】
610で、ワークフロー処理ノードは、ワークフロープログラムに関連付けられた動作を識別する。いくつかの場合には、ワークフロープログラムは、複数のノードによって実行されるように構成された実行可能バイトコードを含む。
【００５７】
615で、ワークフロー処理ノードは、ブロックチェーンネットワーク内の複数のノードのサブセットに識別された動作を割り当て、ノードのサブセット内の各ノードは、ノードのサブセット内の他のノードとは別個に動作を実行するように構成される。いくつかの場合には、識別された動作をノードのサブセットに割り当てることは、ワークフロー処理ノードによって、ノードのサブセットの各々に対する動作に関連付けられたリモートプロシージャ呼出しを実行することを含む。いくつかの場合には、ブロックチェーンネットワーク内のノードの各々は、ブロックチェーンネットワークに参加する複数のエンティティのうちの1つに関連付けられ、ノードのサブセットは、ブロックチェーンネットワークに参加する複数のエンティティの各々に関連付けられた少なくとも1つのノードを含む。
【００５８】
620で、ワークフロー処理ノードは、ノードのサブセット内のノードに関連付けられた実行された動作の処理結果を識別し、各処理結果は、ノードのサブセット内の特定のノードに関連付けられ、特定のノードによって生成された実行された動作の結果を表す。いくつかの場合には、識別された各処理結果は、関連するノードによってデジタル署名される。
【００５９】
625で、ワークフロー処理ノードは、識別された処理結果が、コンセンサス結果に一致するコンセンサスしきい値以上の数のノードに関連付けられていることに基づいて、動作のコンセンサス結果を決定する。いくつかの実装形態では、ワークフロー処理ノードは、ブロックチェーンに動作のコンセンサス結果を記憶する。
【００６０】
いくつかの場合には、動作は第1の動作であり、プロセス600は、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた最後の動作を識別することであり、最後の動作は、第1の動作とは別であり、ワークフロープログラムに関連付けられた命令の順序付けられたセット内の最後に現れる、識別することと、ワークフロー処理ノードによって、ノードのサブセットに最後の動作を割り当てることと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた最後の動作の処理結果を識別することと、識別された処理結果に基づいて、最後の動作のコンセンサス結果を決定することと、ワークフロー処理ノードによって、ワークフロープログラムが正常に実行を完了したことを示す応答をクライアントに送信することとを含む。
【００６１】
実装形態では、動作は第1の動作であり、プロセス600は、ワークフロー処理ノードによって、ワークフロープログラムに関連付けられた第2の動作を識別することであり、第2の動作が第1の動作とは別である、識別することと、ワークフロー処理ノードによって、ノードのサブセットに第2の動作を割り当てることと、ワークフロー処理ノードによって、ノードのサブセット内のノードに関連付けられた第2の動作の処理結果を識別することと、コンセンサスしきい値未満の数のノードが同じ処理結果に関連付けられていることに基づいて、第2の動作についてコンセンサス結果が存在しないと判断することとを含む。いくつかの場合には、ワークフロー処理ノードは、ワークフロープログラムの実行が成功しなかったことを示す応答をクライアントに送信する。
【００６２】
本明細書に記載された主題およびアクションおよび動作の実装形態は、デジタル電子回路、有形に具現化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実装形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置によって実行される、またはデータ処理装置の動作を制御するためのコンピュータプログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。キャリアは、有形の非一時的コンピュータ記憶媒体であってもよい。代替的にまたは追加として、キャリアは、人工的に生成された伝搬信号、たとえば、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号とすることができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができ、またはその一部とすることができる。コンピュータ記憶媒体は、伝搬信号ではない。
【００６３】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。データ処理装置は、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)などの専用論理回路を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むこともできる。
【００６４】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも呼ばれるまたは記述されることもあるコンピュータプログラムは、コンパイルもしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境での実行に適した他のユニットとしてなど、あらゆる形式で展開でき、環境は、1つまたは複数の場所にデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含む場合がある。
【００６５】
コンピュータプログラムは、必ずしも必要はないが、ファイルシステム内のファイルに対応し得る。コンピュータプログラムは、問題のプログラム専用の単一のファイル、あるいは、たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルなど、複数のコーディネートされたファイルに、たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプトなど、他のプログラムまたはデータを保持するファイルの一部に記憶することができる。
【００６６】
本明細書で記述されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって動作を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICまたはGPUなどの専用論理回路によって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行することができる。
【００６７】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、またはその両方、あるいは任意の他の種類の中央処理装置に基づき得る。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含むことができる。中央処理装置およびメモリは、専用論理回路によって補うまたはそれに組み込むことができる。
【００６８】
一般に、コンピュータは、少なくとも1つの非一時的コンピュータ可読記憶媒体(コンピュータ可読メモリとも呼ばれる)に結合される。コンピュータに結合された記憶媒体は、コンピュータの内部構成要素(たとえば、統合されたハードドライブ)または外部構成要素(たとえば、ユニバーサルシリアルバス(USB)ハードドライブもしくはネットワーク経由でアクセスされるストレージシステム)とすることができる。記憶媒体の例には、たとえば、磁気、磁気光学、または光ディスク、半導体ドライブ、クラウド記憶システムなどのネットワーク記憶リソース、または他のタイプの記憶媒体などがある。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイス中に組み込むことができる。
【００６９】
ユーザとの対話を提供するために、本明細書で説明する主題の実装は、情報をユーザに表示するためのディスプレイデバイス、たとえばLCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供できる入力デバイス、たとえばキーボード、およびマウス、トラックボールまたはタッチパッドなどのポインティングデバイスを有するコンピュータ上に実装され、またはそれと通信するように構成され得る。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによってなど、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、またはスマートフォンや電子タブレットなどのユーザデバイスで実行されているアプリと対話することによってユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、代わりに、ユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【００７０】
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるとは、システムが、動作中、システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。専用ロジック回路が特定の動作またはアクションを実行するように構成されるとは、その回路が動作またはアクションを実行する電子ロジックを有することを意味する。
【００７１】
本明細書は、多くの具体的な実装の詳細を含むが、これらは、特許請求の範囲自体によって定義される特許請求される範囲に対する限定ではなく、むしろ特定の実装形態に固有であり得る特徴の説明として解釈されるものとする。別個の実装形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実装形態において組み合わせて実現することもできる。逆に、単一の実装形態の文脈で記載されている様々な特徴は、複数の実装形態で別々にまたは任意の適切な部分組合せで実現することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述され、当初はそのように特許請求され得るが、いくつかの場合、特許請求された組合せからの1つまたは複数の特徴を、組合せから削除することができ、特許請求の範囲は、部分組合せ、または部分組合せの変形を対象とし得る。
【００７２】
同様に、動作が図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、そのような動作が、示された特定の順序で、または逐次的な順序で実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述した実装形態における様々なシステムモジュールおよび構成要素の分離は、すべての実装形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【００７３】
主題の特定の実装形態が記載されている。他の実装形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの場合には、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００７４】
100  環境
102  プライベートブロックチェーンネットワーク
106  コンピューティングデバイス
108  コンピューティングデバイス
110  ネットワーク
200  アーキテクチャ
202  エンティティ層
204  ホストサービス層
206  ブロックチェーンネットワーク層
208  トランザクション管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
305  ワークフロー処理ノード
315  ノード
316  ブロックチェーン
320  ノード
325  プログラム
330  動作
340  クライアント
400  プロセス
500  プロセス
600  プロセス
【図１】
0006883111.tif 000002
【図２】
0006883111.tif 000003
【図３】
0006883111.tif 000004
【図４】
0006883111.tif 000005
【図５】
0006883111.tif 000006
【図６】
0006883111.tif 000007