(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークにおけるトランザクションの並列実行のためのコンピュータで実行される方法であって、
ブロックチェーン内で実行される複数のトランザクションを特定するステップであって、前記トランザクションが実行順序で並べられ、前記実行順序が、前記複数のトランザクションの後に並べられたコントラクトコールを含む、ステップと、
前記複数のトランザクション内のトランザクショングループを特定するステップであって、各グループ内の各トランザクションが、当該グループ内の残りのトランザクションと同じ、前記ブロックチェーンネットワーク内の口座に関連付けられる、ステップと、
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令するステップであって、各トランザクショングループを実行することが、そのグループ内の前記トランザクションを逐次的に、前記実行順序に従って実行することを含む、ステップと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定するステップと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、前記コントラクトコールを実行するように命令するステップとを含む、
方法。
【請求項２】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令するステップが、
第1のノードセットに、第1のトランザクショングループを実行するように命令するステップと、
第1のノードセットに、第2のトランザクショングループを実行するように命令するステップとを含む、
請求項1に記載の方法。
【請求項３】
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定するステップが、
前記複数のトランザクションのうちの全てのトランザクションが、前記ブロックチェーンネットワークによって維持されるブロックチェーン内に格納された1つまたは複数のブロック内に含まれていると判定するステップを含む、
請求項1に記載の方法。
【請求項４】
前記ブロックチェーンネットワークの前記ノードが前記コントラクトコールの実行を完了したと判定するステップと、
前記ブロックチェーン内で実行される第2の複数のトランザクションを特定するステップであって、前記第2の複数のトランザクションが前記コントラクトコールの後に前記実行順序で並べられる、ステップと、
前記第2の複数のトランザクション内の第2のトランザクショングループを特定するステップと、
前記ブロックチェーンネットワークのノードに、前記第2のトランザクショングループの各々を並列に実行するように命令するステップであって、各第2のトランザクショングループを実行することが、その第2のグループ内の前記トランザクションを逐次的に、前記実行順序に従って実行することを含む、ステップとをさらに含む、
請求項1に記載の方法。
【請求項５】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令するステップが、
前記ノードにネットワークを介してメッセージを送るステップを含む、
請求項1に記載の方法。
【請求項６】
ブロックチェーン内で実行される前記複数のトランザクションを特定するステップが、
前記ブロックチェーンネットワークにブロードキャストされたトランザクションを受け取るステップを含む、
請求項1に記載の方法。
【請求項７】
前記コントラクトコールが、前記ブロックチェーンネットワークによって維持されるブロックチェーン内に格納されたスマートコントラクトを実行することの要求である、
請求項1に記載の方法。
【請求項８】
1つまたは複数のコンピュータに結合され、かつ以下の動作を行うように前記1つまたは複数のコンピュータによって実行可能な命令を格納した非一時的コンピュータ可読記憶媒体であって、前記動作が、
ブロックチェーン内で実行される複数のトランザクションを特定することであって、前記トランザクションが実行順序で並べられ、前記実行順序が、前記複数のトランザクションの後に並べられたコントラクトコールを含む、ことと、
前記複数のトランザクション内のトランザクショングループを特定することであって、各グループ内の各トランザクションが、そのグループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる、ことと、
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することであって、各トランザクショングループを実行することが、そのグループ内のトランザクションを逐次的に、前記実行順序に従って実行することを含む、ことと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定することと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、前記コントラクトコールを実行するように命令することとを含む、
非一時的コンピュータ可読記憶媒体。
【請求項９】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することが、
第1のノードセットに、第1のトランザクショングループを実行するように命令することと、
第1のノードセットに、第2のトランザクショングループを実行するように命令することとを含む、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定することが、
前記複数のトランザクションのうちの全てのトランザクションが、前記ブロックチェーンネットワークによって維持されるブロックチェーン内に格納された1つまたは複数のブロック内に含まれていると判定することを含む、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記非一時的コンピュータ可読記憶媒体が、以下の動作を行うように前記1つまたは複数のコンピュータによって実行可能な命令をさらに格納し、前記動作が、
前記ブロックチェーンネットワークの前記ノードが前記コントラクトコールの実行を完了したと判定することと、
前記ブロックチェーン内で実行される第2の複数のトランザクションを特定することであって、前記第2の複数のトランザクションが前記コントラクトコールの後に前記実行順序で並べられる、特定することと、
前記第2の複数のトランザクション内の第2のトランザクショングループを特定することと、
前記ブロックチェーンネットワークのノードに、前記第2のトランザクショングループの各々を並列に実行するように命令することであって、各第2のトランザクショングループを実行することが、その第2のグループ内の前記トランザクションを逐次的に、前記実行順序に従って実行することを含む、こととを含む、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することが、
前記ノードにネットワークを介してメッセージを送ることを含む、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記ブロックチェーン内で実行される前記複数のトランザクションを特定することが、
前記ブロックチェーンネットワークにブロードキャストされたトランザクションを受け取ることを含む、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記コントラクトコールが、前記ブロックチェーンネットワークによって維持されるブロックチェーン内に格納されたスマートコントラクトを実行することの要求である、
請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合され、かつ以下の動作を行うように前記1つまたは複数のコンピュータによって実行可能な命令を格納した1つまたは複数のコンピュータ可読メモリとを備えたシステムであって、前記動作が、
ブロックチェーン内で実行される複数のトランザクションを特定することであって、前記トランザクションが実行順序で並べられ、前記実行順序が、前記複数のトランザクションの後に並べられたコントラクトコールを含む、ことと、
前記複数のトランザクション内のトランザクショングループを特定することであって、各グループ内の各トランザクションが、当該グループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる、ことと、
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することであって、各トランザクショングループを実行することが、そのグループ内の前記トランザクションを逐次的に、前記実行順序に従って実行することを含む、ことと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定することと、
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、前記コントラクトコールを実行するように命令することとを含む、
システム。
【請求項１６】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することが、
第1のノードセットに、第1のトランザクショングループを実行するように命令することと、
第1のノードセットに、第2のトランザクショングループを実行するように命令することとを含む、
請求項15に記載のシステム。
【請求項１７】
前記ブロックチェーンネットワークの前記ノードが全ての前記トランザクショングループの実行を完了したと判定することが、
前記複数のトランザクションのうちの全てのトランザクションが、前記ブロックチェーンネットワークによって維持されるブロックチェーン内に格納された1つまたは複数のブロック内に含まれていると判定することを含む、
請求項15に記載のシステム。
【請求項１８】
前記コンピュータ可読メモリが、以下の動作を行うように前記1つまたは複数のコンピュータによって実行可能な命令をさらに格納し、前記動作が、
前記ブロックチェーンネットワークの前記ノードが前記コントラクトコールの実行を完了したと判定することと、
前記ブロックチェーン内で実行される第2の複数のトランザクションを特定することであって、前記第2の複数のトランザクションが前記コントラクトコールの後に前記実行順序で並べられる、ことと、
前記第2の複数のトランザクション内の第2のトランザクショングループを特定することと、
前記ブロックチェーンネットワークのノードに、前記第2のトランザクショングループの各々を並列に実行するように命令することであって、各第2のトランザクショングループを実行することが、その第2のグループ内の前記トランザクションを逐次的に、前記実行順序に従って実行することを含む、こととを含む、
請求項15に記載のシステム。
【請求項１９】
前記ブロックチェーンネットワークのノードに、前記トランザクショングループの各々を並列に実行するように命令することが、
前記ノードにネットワークを介してメッセージを送ることを含む、
請求項15に記載のシステム。
【請求項２０】
前記ブロックチェーン内で実行される前記複数のトランザクションを特定することが、
前記ブロックチェーンネットワークにブロードキャストされたトランザクションを受け取ることを含む、
請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ブロックチェーンネットワークにおけるトランザクションの並列実行に関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークとも呼ばれることのある分散型台帳システム(DLS)は、参加エンティティが安全かつ変更不可能にデータを格納することを可能にするものである。DLSは、どんな特定のユーザケースとも無関係に、ブロックチェーンネットワークと一般に呼ばれる。ブロックチェーンネットワークのタイプの例としては、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。コンソーシアムブロックチェーンネットワークは、選択された1群のエンティティのために設けられるものであり、これらのエンティティがコンセンサスプロセスを制御し、コンソーシアムブロックチェーンネットワークはまた、アクセス制御層を含む。
【０００３】
ブロックチェーンネットワークにおいて遭遇する1つの問題は、トランザクションが処理される速度である。一般に、ブロックチェーンネットワーク内のノードは、トランザクションを、それらがサブミットされた順序で逐次的に処理する。このことが、低いトランザクションスループット、およびトランザクションがサブミットされたときと、それがクリアされる(clear)ときとの間の遅延を招くことがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
ブロックチェーンネットワークにおけるこれらのトランザクション性能問題に対処するための技法が有利となろう。
【０００５】
本明細書の実装形態は、ブロックチェーンネットワークにおけるトランザクションの並列実行のためのコンピュータで実行される方法を含む。より具体的には、本明細書の実装形態は、共通の依存関係を有するトランザクショングループを、他のグループと並列に実行することを対象とする。
【０００６】
いくつかの実装形態では、アクションは、ブロックチェーン内で実行される複数のトランザクションを特定することであって、これらのトランザクションが実行順序で並べられ、実行順序が、複数のトランザクションの後に並べられたコントラクトコール(contract call)を含む、特定することと、複数のトランザクション内のトランザクショングループを特定することであって、各グループ内の各トランザクションが、そのグループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる、特定することと、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することであって、各トランザクショングループを実行することが、そのグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む、命令することと、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したと判定することと、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードに、コントラクトコールを実行するように命令することとを含む。他の実装形態には、対応するシステム、装置、および方法のアクションを実施するように構成された、コンピュータ記憶デバイス上に符号化されたコンピュータプログラムが含まれる。
【０００７】
これらの実装形態および他の実装形態は各々、任意選択により、以下の特徴のうちの1つまたは複数を含み得る。
【０００８】
場合によっては、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することが、第1のノードセットに、第1のトランザクショングループを実行するように命令することと、第1のノードセットに、第2のトランザクショングループを実行するように命令することとを含む。
【０００９】
いくつかの実装形態では、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したと判定することが、複数のトランザクションのうちの全てのトランザクションが、ブロックチェーンネットワークによって維持されるブロックチェーン内に格納された1つまたは複数のブロック内に含まれていると判定することを含む。
【００１０】
いくつかの実装形態では、方法は、ブロックチェーンネットワークのノードがコントラクトコールの実行を完了したと判定することと、ブロックチェーン内で実行される第2の複数のトランザクションを特定することであって、第2の複数のトランザクションがコントラクトコールの後に実行順序で並べられる、特定することと、第2の複数のトランザクション内の第2のトランザクショングループを特定することと、ブロックチェーンネットワークのノードに、第2のトランザクショングループの各々を並列に実行するように命令することであって、各第2のトランザクショングループを実行することが、その第2のグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む、命令することとを含む。
【００１１】
場合によっては、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することが、それらのノードにネットワークを介してメッセージを送ることを含む。
【００１２】
場合によっては、ブロックチェーン内で実行される複数のトランザクションを特定することが、ブロックチェーンネットワークにブロードキャストされたトランザクションを受け取ることを含む。
【００１３】
いくつかの実装形態では、コントラクトコールが、ブロックチェーンネットワークによって維持されるブロックチェーン内に格納されたスマートコントラクトを実行することの要求である。
【００１４】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると本明細書において提供する方法の実装形態による動作を1つまたは複数のプロセッサに実施させる命令を格納した、1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【００１５】
本明細書は、本明細書において提供する方法を実施するためのシステムをさらに提供する。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると本明細書において提供する方法の実装形態による動作を1つまたは複数のプロセッサに実施させる命令を格納した、1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【００１６】
本明細書による方法が、本明細書において説明する態様および特徴のどんな組合せも含み得ることが、理解されよう。すなわち、本明細書による方法は、本明細書において具体的に説明する態様および特徴の組合せに限定されるのではなく、提供される態様および特徴のどんな組合せも含む。
【００１７】
本明細書の1つまたは複数の実装形態の詳細については、添付の図面および下の説明において記述される。本明細書の他の特徴および利点は、説明および図面から、また特許請求の範囲から、明らかとなろう。
【図面の簡単な説明】
【００１８】
【図１】本明細書の実装形態を実行するために使用することのできる環境の一例を示す図である。
【図２】本明細書の実装形態による概念アーキテクチャの一例を示す図である。
【図３Ａ】本明細書の実装形態による、ブロックチェーンネットワークにおけるトランザクションの実行順序の一例を示す図である。
【図３Ｂ】本明細書の実装形態による、ブロックチェーンネットワークにおけるトランザクションの並列実行順序の一例を示す図である。
【図４】本明細書の実装形態に従って実行することのできるプロセスの一例を示す図である。
【図５】本明細書の実装形態による装置のモジュールの例を示す図である。
【発明を実施するための形態】
【００１９】
さまざまな図面中の同様の参照符号は、同様の要素を示す。
【００２０】
本明細書の実装形態は、ブロックチェーンネットワークにおけるトランザクションの並列実行のためのコンピュータで実行される方法を含む。より具体的には、本明細書の実装形態は、共通の依存関係を有するトランザクショングループを、他のグループと並列に実行することを対象とする。いくつかの実装形態では、アクションは、ブロックチェーン内で実行される複数のトランザクションを特定することであって、これらのトランザクションが実行順序で並べられ、実行順序が、複数のトランザクションの後に並べられたコントラクトコールを含む、特定することと、複数のトランザクション内のトランザクショングループを特定することであって、各グループ内の各トランザクションが、そのグループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる、特定することと、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することであって、各トランザクショングループを実行することが、そのグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む、命令することと、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したと判定することと、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードに、コントラクトコールを実行するように命令することとを含む。
【００２１】
本明細書の実装形態にさらなる文脈を提供すべく、また上で紹介したように、(例えばピアツーピアノードで構成される)コンセンサスネットワーク、およびブロックチェーンネットワークとも呼ばれることのある、分散型台帳システム(DLS)は、参加エンティティが安全かつ変更不可能にトランザクションを行い、データを格納することを可能にするものである。ブロックチェーンという用語は、本明細書においては、どんな特定のユースケースとも無関係にDLSのことを一般に指すのに使用される。
【００２２】
ブロックチェーンは、トランザクションが変更不可能であるように、かつトランザクションを後に検証できるように、トランザクションを格納するデータ構造である。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、チェーン内でその直前にある先行ブロックに、先行ブロックの暗号ハッシュを含めることによってリンクされる。各ブロックは、タイムスタンプ、それ自体の暗号ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシュされ、マークルツリーに符号化される。マークルツリーは、ツリーのリーフノードのところのデータがハッシュされ、ツリーの各ブランチ内の全てのハッシュがブランチのルート(root)のところで連結される、データ構造である。このプロセスは、ツリーの上方へツリー全体のルートに至るまで継続し、そのルートが、ツリー内の全てのデータを表すハッシュを格納する。ツリー内に格納されたトランザクションのものであるとされるハッシュは、それがツリーの構造と矛盾がないかどうかを判定することによって、迅速に検証することができる。
【００２３】
ブロックチェーンが、トランザクションを格納するためのデータ構造であるのに対して、ブロックチェーンネットワークは、1つまたは複数のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして設けることができる。パブリックブロックチェーンネットワークでは、コンセンサスプロセスが、コンセンサスネットワークのノードによって制御される。例えば、数百のエンティティが、数千のエンティティが、数百万のエンティティでさえもが、パブリックブロックチェーンネットワークに協力することができ、そのそれぞれが、パブリックブロックチェーンネットワーク内の少なくとも1つのノードを運営する。したがって、パブリックブロックチェーンネットワークは、参加エンティティに関するパブリックなネットワークと見なすことができる。いくつかの例では、ブロックが有効になりブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加されるように、エンティティ(ノード)の大多数がどのブロックにも承認しなければならない。例示的パブリックブロックチェーンネットワークとしては、ブロックチェーンと呼ばれる分散型台帳を活用する、特定のピアツーピア支払いネットワークがある。しかし、上記したように、ブロックチェーンという用語は、どんな特定のブロックチェーンネットワークとも特に無関係に分散型台帳のことを一般に指すのに使用される。
【００２４】
一般に、コンソーシアムブロックチェーンネットワークは、参加エンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスが、権限が付与された1組のノードによって制御され、1つまたは複数のノードが、それぞれのエンティティ(例えば金融機関、保険会社)によって運営されている。例えば、10個のエンティティ(例えば金融機関、保険会社)からなるコンソーシアムが、コンソーシアムブロックチェーンネットワークを運営することができ、そのそれぞれが、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを運営する。したがって、コンソーシアムブロックチェーンネットワークは、参加エンティティに関するプライベートなネットワークと見なすことができる。いくつかの例では、ブロックが有効になりブロックチェーンに追加されるように、各エンティティ(ノード)が、どのブロックにも承認しなければならない。いくつかの例では、ブロックが有効になりブロックチェーンに追加されるように、エンティティ(ノード)の少なくともサブセット(例えば少なくとも7つのエンティティ)が、どのブロックにも承認しなければならない。
【００２５】
本明細書の実装形態は、どんな適切なタイプのブロックチェーンネットワークにおいても実現することができる。
【００２６】
本明細書の実装形態について、本明細書の中で、上記の文脈に鑑みてさらに詳細に説明する。より具体的には、また上で紹介したように、本明細書の実装形態は、共通の依存関係を有するトランザクショングループを、他のグループと並列に実行することを対象とする。異なるグループ内のトランザクションは、互いに依存関係がない(例えば、ブロックチェーンネットワーク内の同一口座に影響を及ぼさない)ので、異なるグループ内のトランザクションが互いに実行される順序は、ブロックチェーンネットワークのステート全体に影響を及ぼさない。したがって、これらのトランザクションは並列に実行することができ、それにより、ブロックチェーンネットワーク内でのトランザクションスループットを向上させることができる。
【００２７】
図1は、本明細書の実装形態を実行するために使用することのできる環境100の一例を示す。いくつかの例では、環境100は、パブリックブロックチェーンネットワーク102へのエンティティの参加を可能にする。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(例えばコンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110には、有線通信リンクおよび/またはワイヤレス通信リンクを介してアクセスすることができる。いくつかの例では、ネットワーク110は、パブリックブロックチェーンネットワーク102との通信、およびパブリックブロックチェーンネットワーク102内での通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。場合によっては、コンピューティングデバイス106、108は、クラウドコンピューティングシステム(図示せず)のノードとすることができ、または各コンピューティングデバイス106、108を、ネットワークによって相互接続された複数のコンピュータを含み、分散処理システムとして機能する、別々のクラウドコンピューティングシステムとすることができる。
【００２８】
図示の例では、コンピューティングシステム106、108は、それぞれが、パブリックブロックチェーンネットワーク102へのノードとしての参加を可能にする任意の適切なコンピューティングシステムを含むことができる。コンピューティングデバイスの例としては、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンがある。いくつかの例では、コンピューティングシステム106、108は、パブリックブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティ(例えば参加者A)の、トランザクション管理システムなどのコンピュータ実装サービスをホストすることができ、このトランザクション管理システムは、第1のエンティティがその、1つまたは複数の他のエンティティ(例えば他の参加者)とのトランザクションを管理するために使用するものである。コンピューティングシステム108は、第2のエンティティ(例えば参加者B)の、トランザクション管理システムなどのコンピュータ実装サービスをホストすることができ、このトランザクション管理システムは、第2のエンティティがその、1つまたは複数の他のエンティティ(例えば他の参加者)とのトランザクションを管理するために使用するものである。図1の例では、パブリックブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表されており、コンピューティングシステム106、108はそれぞれ、第1のエンティティのノードおよび第2のエンティティのノードとなっており、それらが、パブリックブロックチェーンネットワーク102に参加している。
【００２９】
図2は、本明細書の実装形態による概念アーキテクチャ200の一例を示す。概念アーキテクチャ200のこの例は、参加者システム202、204、206を含み、それらはそれぞれ、参加者A、参加者B、および参加者Cに対応する。各参加者(例えばユーザ、企業)は、ブロックチェーンネットワーク212に参加し、ブロックチェーンネットワーク212は、その少なくとも一部が情報をブロックチェーン216内に変更不可能に記録する複数のノード214を含む、ピアツーピアネットワークとして設けられている。ブロックチェーンネットワーク212内に単一のブロックチェーン216が概略的に示されているが、本明細書においてさらに詳細に説明するように、ブロックチェーン216の複数のコピーが形成され、ブロックチェーンネットワーク212全体にわたって維持される。
【００３０】
図示の例では、各参加者システム202、204、206がそれぞれ、参加者A、参加者B、および参加者Cによって、またはそれらの代理として設けられ、ブロックチェーンネットワーク内のそれぞれのノード214として機能する。本明細書では、ノードは一般に、ブロックチェーンネットワーク212に接続されるとともにそれぞれの参加者がブロックチェーンネットワークに参加することを可能にする、個々のシステム(例えばコンピュータ、サーバ)を指す。図2の例では、参加者は各ノード214に対応する。しかし、参加者がブロックチェーンネットワーク212内の複数のノード214を運営できること、かつ/または複数の参加者がノード214を共有できることが企図されている。いくつかの例では、参加者システム202、204、206はブロックチェーンネットワーク212と、またはブロックチェーンネットワーク212を通じて、プロトコル(例えばハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、かつ/またはリモートプロシージャコール(RPC)を使用して通信する。
【００３１】
ノード214は、ブロックチェーンネットワーク212内でさまざまな参加の度合いを有することができる。例えば、(例えばブロックチェーン216にブロックを追加するマイナーノードとして)コンセンサスプロセスに参加することのできるノード214もあれば、コンセンサスプロセスに参加しないノード214もある。別の例として、ブロックチェーン216の完全コピーを格納するノード214もあれば、ブロックチェーン216の一部分のコピーを格納するにすぎないノード214もある。例えば、データアクセス権が、それぞれの参加者がそのそれぞれに対応するシステム内に格納するブロックチェーンデータを制限することができる。図2の例では、参加者システム202、204、206は、それぞれに対応するブロックチェーン216の完全コピー216'、216''、216'''を格納する。
【００３２】
ブロックチェーン(例えば図2のブロックチェーン216)は、ブロックの連鎖で構成され、各ブロックがデータを格納する。データの例としては、2つ以上の参加者間のトランザクションを表すトランザクションデータがある。トランザクションが本明細書では非限定的な例として使用されているが、任意の適切なデータをブロックチェーン内に格納できることが企図されている(例えばドキュメント、画像、ビデオ、オーディオ)。トランザクションの例としては、限定はしないが、価値のあるもの(例えば資産、製品、サービス)の交換があり得る。トランザクションデータは、ブロックチェーン内に変更不可能に格納される。すなわち、トランザクションデータを変更することはできない。
【００３３】
ブロック内に格納する前に、トランザクションデータはハッシュされる。ハッシュ化は、(文字列データとしてもたらされる)トランザクションデータを(やはり文字列データとしてもたらされる)固定長ハッシュ値に変換するプロセスである。ハッシュ値をアンハッシュして(un-hash)、トランザクションデータを得ることは不可能である。ハッシュ化は、トランザクションデータが少しでも変化するとハッシュ値が完全に異なる結果となることを確実にするものである。さらに、上記したように、ハッシュ値は固定長のものである。すなわち、トランザクションデータのサイズがどうであれ、ハッシュ値の長さは固定である。ハッシュ化は、トランザクションデータを、ハッシュ関数を通じて処理して、ハッシュ値を生成することを含む。ハッシュ関数の一例としては、限定はしないが、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256がある。
【００３４】
複数のトランザクションのトランザクションデータがハッシュされ、ブロック内に格納される。例えば、2つのトランザクションのハッシュ値がもたらされ、それら自体がハッシュされて、別のハッシュがもたらされる。このプロセスが、ブロック内に格納される全てのトランザクションに対してただ1つのハッシュ値がもたらされるまで反復される。このハッシュ値は、マークルルートハッシュと呼ばれ、ブロックのヘッダ内に格納される。トランザクションのいずれかに変化があると、そのハッシュ値が変化する結果となり、最終的には、マークルルートハッシュが変化する結果となる。
【００３５】
ブロックは、ブロックチェーンに、コンセンサスプロトコルを通じて追加される。ブロックチェーンネットワーク内の複数のノードが、コンセンサスプロトコルに参加し、ブロックチェーンにブロックを追加させようと競い合う。そのようなノードは、マイナー(またはマイナーノード)と呼ばれる。上で紹介したPOWが、非限定的な例として使用される。
【００３６】
マイナーノードは、ブロックチェーンにトランザクションを追加するために、コンセンサスプロセスを実行する。複数のマイナーノードがコンセンサスプロセスに参加するが、ただ1つのマイナーノードだけが、ブロックチェーンにブロックを書き込むことができる。すなわち、マイナーノードは、コンセンサスプロセスにおいて、ブロックチェーンにそれらのブロックを追加させようと競い合う。さらに詳細には、マイナーノードは、保留中のトランザクションをトランザクションプールから(例えば、ブロック内に含めることのできるトランザクション数の予め定められた限度があればその限度まで)定期的に収集する。トランザクションプールは、ブロックチェーンネットワーク内の参加者からのトランザクションメッセージを含む。マイナーノードは、ブロックを構築し、そのブロックにそれらのトランザクションを追加する。ブロックにトランザクションを追加する前に、マイナーノードは、それらのトランザクションのうちのいずれかがすでにブロックチェーンのブロック内に含められているかどうかをチェックする。トランザクションがすでに別のブロック内に含められている場合、そのトランザクションは破棄される。
【００３７】
マイナーノードは、ブロックヘッダを生成し、ブロック内の全てのトランザクションをハッシュし、ハッシュ値を2つずつ組み合わせてさらなるハッシュ値を生成し、それを、ブロック内の全てのトランザクションにとってただ1つのハッシュ値がもたらされるまで続ける(マークルルートハッシュ)。このハッシュが、ブロックヘッダに追加される。マイナーはまた、ブロックチェーン内の一番最近のブロック(すなわちブロックチェーンに追加された最後のブロック)のハッシュ値を特定する。マイナーノードは、ブロックヘッダにナンス値およびタイムスタンプも追加する。マイニングプロセスにおいて、マイナーノードは、要求されるパラメータを満たすハッシュ値を見いだそうと試みる。マイナーノードは、要求されるパラメータを満たすハッシュ値を見いだすまで、ナンス値を変更し続ける。
【００３８】
ブロックチェーンネットワーク内のどのマイナーも、要求されるパラメータを満たすハッシュ値を見いだそうと試み、このようにして、互いに競い合う。最終的に、マイナーノードのうちの1つが、要求されるパラメータを満たすハッシュ値を見いだし、それをブロックチェーンネットワーク内の他の全てのマイナーノードにアドバタイズする。他のマイナーノードは、そのハッシュ値を検証し、正しいと判定された場合、ブロック内の各トランザクションを検証し、ブロックを承認し、ブロックをブロックチェーンのそれらのコピーに加える。このようにして、ブロックチェーンのグローバルステートは、ブロックチェーンネットワーク内の全てのマイナーノードにわたって一貫している。上で説明したプロセスは、POWコンセンサスプロトコルである。
【００３９】
図2を参照して、非限定的な例を示す。この例では、参加者Aがある金額を参加者Bに送りたい。参加者Aは、(例えばFromフィールド、Toフィールド、およびValueフィールドを含む)トランザクションメッセージを生成し、そのトランザクションメッセージをブロックチェーンネットワークに送り、ブロックチェーンネットワークがそのトランザクションメッセージをトランザクションプールに追加する。ブロックチェーンネットワーク内の各マイナーノードがブロックを作成し、全てのトランザクションをトランザクションプールから(例えば、ブロックに追加することのできるトランザクション数の予め定められた限度があればその限度まで)選択し、それらのトランザクションをブロックに追加する。このようにして、参加者Aによって公開されたトランザクションが、マイナーノードのブロックに追加される。
【００４０】
一部のブロックチェーンネットワークでは、トランザクションのプライバシを維持するために、暗号技術が実施される。例えば、2つのノードが、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を識別することができないようにトランザクションをプライベートに保ちたい場合、それらのノードはトランザクションデータを暗号化することができる。暗号方式の例としては、限定はしないが、対称暗号化および非対称暗号化がある。対称暗号化は、(平文から暗号文を生成する)暗号化と(暗号文から平文を生成する)復号化の両方にただ1つの鍵を使用する、暗号化処理を指す。対称暗号化では、複数のノードが同じ鍵を入手することができ、したがって、各ノードはトランザクションデータを暗号化/復号化することができる。
【００４１】
非対称暗号化は、秘密鍵と公開鍵をそれぞれが含む鍵ペアを使用し、秘密鍵は、それぞれのノードのみに知られており、公開鍵は、ブロックチェーンネットワーク内の他の、いずれかまたは全てのノードに知られている。あるノードが、別のノードの公開鍵を使用してデータを暗号化することができ、暗号化データは、他のノードの秘密鍵を使用して復号化することができる。例えば、図2を再度参照すると、参加者Aは、参加者Bの公開鍵を使用してデータを暗号化し、暗号化データを参加者Bに送ることができる。参加者Bはその秘密鍵を使用して暗号化データ(暗号文)を復号化し、元のデータ(平文)を抽出することができる。あるノードの公開鍵を用いて暗号化されたメッセージは、そのノードの秘密鍵を使用してのみ復号化することができる。
【００４２】
非対称暗号化は、トランザクションの参加者がトランザクションの他の参加者ならびにトランザクションの正当性を確認することを可能にするデジタル署名の形成に使用される。例えば、あるノードがメッセージにデジタル署名をすることができ、別のノードが、メッセージがそのノードによって送られたことを、参加者Aのデジタル署名に基づいて確認することができる。デジタル署名は、確実にメッセージが伝送中に改ざんされないようにするために使用することもできる。例えば、再度図2を参照すると、参加者Aが参加者Bにメッセージを送ることになっている。参加者Aは、メッセージのハッシュを生成し、次いで、その秘密鍵を使用してハッシュを暗号化して、暗号化ハッシュとしてのデジタル署名を形成する。参加者Aはこのデジタル署名をメッセージに添付し、デジタル署名付きメッセージを参加者Bに送る。参加者Bはこのデジタル署名を、参加者Aの公開鍵を使用して復号化し、ハッシュを抽出する。参加者Bは、メッセージをハッシュし、これらのハッシュ同士を比較する。これらのハッシュが同じである場合、参加者Bは、メッセージが確かに参加者Aからのものであったこと、および改ざんされていなかったことを確認することができる。
【００４３】
本明細書の実装形態にさらなる文脈を提供するために、図3Aは、本明細書の実装形態による、ブロックチェーンネットワークにおけるトランザクションの実行順序300の一例を示す。図示のように、実行順序300は、複数のトランザクション(305、310、315、320)を含み、それらは、ブロックチェーンネットワークのノードによってそれらが実行されるべき順序に従って、順番に並べられている。トランザクション305a、305b、および305cは、スマートコントラクトのコールである。スマートコントラクトコールに加えて、実行順序300は、例えば同一口座に影響を及ぼすなどの、(平行線模様によって示される)共通の依存関係を共有する、複数のトランザクショングループを含む。トランザクション310a、310bは第1のグループを表し、トランザクション315a〜eは第2のグループを表し、トランザクション320a〜cは第3のグループを表す。下で説明するように、各トランザクショングループは、本明細書の実装形態に従って、ブロックチェーンネットワークのノードによって並列に実行することができる。
【００４４】
図3Bは、本明細書の実装形態による、ブロックチェーンネットワークにおけるトランザクションの並列実行順序350の一例を示す。図示のように、並列実行順序350では、トランザクショングループ355、360、365、370、および375が特定されている。ブロックチェーンネットワークのノードは、図3Bに示し、論じるように、これらのトランザクショングループを並列に実行することができる。場合によっては、グループ内の全てのトランザクションが、共通の依存関係を共有し、したがって、元の実行順序に従って逐次的に実行される。これにより、並列実行順序350に従ってトランザクションを実行する結果としてのブロックチェーンネットワークのステート(例えば口座残高)が、図3Aの実行順序300に従ってトランザクションを実行した後にそうなるはずであるのと同じになることが確実になる。
【００４５】
図3Bのトランザクションのいずれかを実行する前に口座Aの残高が$0である例について考えられたい。ここで、トランザクション310aは、口座Bから口座Aへの$300という金額の支払いを表し、トランザクション310bは、口座Aから口座Cへの$50の支払いを表す。トランザクション310aおよび310bが、(実行順序300において当初説明したように)逐次的に実行される場合、口座Aは最初に$300が資金供給され、次いで$50だけ引き落とされ、$250の残高が残る。しかし、トランザクション310aおよび310bが逐次的に実行されず、トランザクション310bが310aより前に実行される場合、トランザクション310bの支払いが実行されるときに、口座Aの残高は$0である。口座Aは、このシナリオにおいては、支払いに資金供給するのに十分な残高を有しておらず、そのため、トランザクション310bがブロックチェーンネットワークによって拒絶されるおそれがある。
【００４６】
この例に基づいて、トランザクション320aが口座Dから口座Eへの$100の支払いを表す場合を考えられたい。トランザクション320aによって影響を受ける口座(口座DおよびE)は、トランザクション310aおよび310bによって影響を受ける口座(口座A、B、およびC)のいずれも含んでいないので、トランザクション320aは、トランザクション310aおよび310bと共通の依存関係を有していない。したがって、トランザクション320aは、トランザクション310aおよび310bと並列に実行することができる。
【００４７】
いくつかの実装形態では、逐次的に実行すべきトランザクションを、一緒にグループ化することができる。例えば、図3Bに示すように、トランザクション310a〜bが、355内にグループ化され、トランザクション315a、315b、および315cが、360内にグループ化され、トランザクション320aが、365内にグループ化されている。グループ355、360、および365はそれぞれ、ブロックチェーンネットワークのノードによって並列に実行することができる。トランザクショングループ355、360、および365を並列に実行すると、ブロックチェーンネットワーク上でのトランザクションスループットを向上させることができ、というのも、ネットワークはこのとき、全てのトランザクションが逐次的に実行されるならただ1つのトランザクションを実行しているところ、3つのトランザクションを同時に並列に実行しているためである。
【００４８】
図3Bは、コントラクトコール305a〜cも含む。コントラクトコールは、並列実行が収束する同期点になっている。コントラクトコールにより、スマートコントラクトを構成する命令が実行されるので、個別のコントラクトコールが影響を及ぼす口座の範囲を特定することは可能ではない場合がある。例えば、特定の口座および支払い金額をパラメータとしてとり、何らかの条件が真である場合に支払い金額を特定の口座に適用する、単純なスマートコントラクトを考えられたい。このスマートコントラクトの呼び出し元が、スマートコントラクトの呼び出しの際に特定の口座を指定するので、スマートコントラクト自体の定義(すなわちそのソースコード)から、スマートコントラクトの個別のコールが影響を及ぼすのはどの口座かを特定することは可能ではない。この理由から、いくつかの実装形態では、コントラクトコールは、ブロックチェーンネットワーク内の全ての口座に影響を及ぼす可能性のあるトランザクションと見なすことができ、したがってそれを、他のトランザクションと並列に実行することはできない。したがって、並列実行順序350は、コントラクトコールに到達したときに収束する。例えば、図示のように、グループ355、360、および365は、コントラクトコール305bに到達するまで並列に実行される。この時点で、ブロックチェーンネットワークは、グループ355、360、および365内の全てのトランザクションが実行を完了するまで待機し、次いで、スマートコントラクトコール305bの実行を進める。
【００４９】
コントラクトコール305bが完了した後に、トランザクショングループ(例えば370および375)をやはり、別のスマートコントラクトコール(例えば305c)に遭遇するまで、ブロックチェーンネットワークによって並列に実行することができ、その遭遇時点で、並列実行はこの場合も、スマートコントラクトコールの実行の前に収束する。
【００５０】
図4は、本明細書の実装形態に従って実行することのできるプロセス400の一例を示す。いくつかの実装形態では、プロセス400は、1つまたは複数のコンピューティングデバイスを使用して実行される、1つまたは複数のコンピュータ実行可能プログラムを使用して実施されてよい。
【００５１】
402において、ブロックチェーン内で実行される複数のトランザクションが特定される。これらのトランザクションは実行順序で並べられ、実行順序が、複数のトランザクションの後に並べられたコントラクトコールを含む。場合によっては、ブロックチェーン内で実行される複数のトランザクションを特定することが、ブロックチェーンネットワークにブロードキャストされたトランザクションを受け取ることを含む。いくつかの実装形態では、コントラクトコールは、ブロックチェーンネットワークによって維持されるブロックチェーン内に格納されたスマートコントラクトを実行することの要求である。
【００５２】
404において、複数のトランザクション内のトランザクショングループが特定され、各グループ内の各トランザクションが、そのグループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる。
【００５３】
406において、ブロックチェーンネットワークのノードが、トランザクショングループの各々を並列に実行するように命令され、各トランザクショングループを実行することが、そのグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む。場合によっては、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することが、第1のノードセットに、第1のトランザクショングループを実行するように命令することと、第1のノードセットに、第2のトランザクショングループを実行するように命令することとを含む。いくつかの実装形態では、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令することが、それらのノードにネットワークを介してメッセージを送ることを含む。
【００５４】
408において、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したとの判定が行われる。いくつかの実装形態では、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したと判定することが、複数のトランザクションのうちの全てのトランザクションが、ブロックチェーンネットワークによって維持されるブロックチェーン内に格納された1つまたは複数のブロック内に含まれていると判定することを含む。
【００５５】
410において、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードが、コントラクトコールを実行するように命令される。
【００５６】
いくつかの実装形態では、プロセス400は、ブロックチェーンネットワークのノードがコントラクトコールの実行を完了したと判定することと、ブロックチェーン内で実行される第2の複数のトランザクションを特定することであって、第2の複数のトランザクションが実行順序の中でコントラクトコールの後に並べられている、特定することと、
第2の複数のトランザクション内の第2のトランザクショングループを特定することと、ブロックチェーンネットワークのノードに、第2のトランザクショングループの各々を並列に実行するように命令することであって、各第2のトランザクショングループを実行することが、その第2のグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む、命令することとを含む。
【００５７】
図5は、本明細書の実装形態による装置500のモジュールの例を示す。装置500は、コンソーシアムブロックチェーンネットワークなどのブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするように構成された装置の、例示的実装形態とすることができる。装置500は、上で説明した実装形態に対応してよく、装置500は次の、ブロックチェーン内で実行される複数のトランザクションを特定するための、第1の特定部または第1の特定ユニット502であって、これらのトランザクションが実行順序で並べられ、実行順序が、複数のトランザクションの後に並べられたコントラクトコールを含む、第1の特定部または第1の特定ユニット502と、複数のトランザクション内のトランザクショングループを特定するための、第2の特定部または第2の特定ユニット504であって、各グループ内の各トランザクションが、そのグループ内の残りのトランザクションと同じ、ブロックチェーンネットワーク内の口座に関連付けられる、第2の特定部または第2の特定ユニット504と、ブロックチェーンネットワークのノードに、トランザクショングループの各々を並列に実行するように命令するための、第1の命令部または第1の命令ユニット506であって、各トランザクショングループを実行することが、そのグループ内のトランザクションを逐次的に、実行順序に従って実行することを含む、第1の命令部または第1の命令ユニット506と、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したと判定するための、判定部または判定ユニット508と、ブロックチェーンネットワークのノードが全てのトランザクショングループの実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードに、コントラクトコールを実行するように命令するための、第2の命令部または第2の命令ユニット510とを含む。
【００５８】
先の実装形態において示したシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用して実装することもでき、ある特定の機能を有する製品を使用して実装することもできる。典型的な実装デバイスがコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、セルラー電話、カメラ付き電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスのいずれかの組合せとすることができる。
【００５９】
機能の実施プロセスおよび装置内の各ユニットの役割については、先の方法における対応するステップの実施プロセスを参照することができる。簡単のために、本明細書では詳細は省略する。
【００６０】
装置実装形態は基本的に方法実装形態に対応するので、関連する部分については、方法実装形態における関連する説明を参照することができる。先に説明した装置実装形態は、単なる一例である。別々の部分として説明したユニットは、物理的に別々であってもよく、そうでなくてもよく、ユニットとして表示された部分は、物理的なユニットであってもよく、そうでなくてもよく、1つの位置にあってもよく、いくつかのネットワークユニット上に分散されていてもよい。モジュールの一部または全てを、本明細書の解決策の目的を達成すべく、実際の必要性に基づいて選択することができる。当業者なら、創造的な努力なしに本出願の実装形態を理解し実装することができよう。
【００６１】
図5を再度参照すると、図5は、ブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするための装置の、内部機能モジュールおよび構造を示すものと解釈することができる。この並列実行装置は、ブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするように構成された装置の一例とすることができる。
【００６２】
本明細書において説明した本主題ならびにアクションおよび動作の実装形態は、デジタル電子回路として、有形に具現化されたコンピュータソフトウェアもしくはファームウェアとして、本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアとして、またはそれらのうちの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  参加者システム
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
216'  完全コピー
216''  完全コピー
216'''  完全コピー
300  実行順序
305  トランザクション
305a  トランザクション、コントラクトコール
305b  トランザクション、スマートコントラクトコール
305c  トランザクション、スマートコントラクトコール
310  トランザクション
310a  トランザクション
310b  トランザクション
315  トランザクション
315a  トランザクション
315b  トランザクション
315c  トランザクション
315d  トランザクション
315e  トランザクション
320  トランザクション
320a  トランザクション
320b  トランザクション
320c  トランザクション
350  並列実行順序
355  トランザクショングループ
360  トランザクショングループ
365  トランザクショングループ
370  トランザクショングループ
375  トランザクショングループ
400  プロセス
500  装置
502  第1の特定部または第1の特定ユニット
504  第2の特定部または第2の特定ユニット
506  第1の命令部または第1の命令ユニット
508  判定部または判定ユニット
510  第2の命令部または第2の命令ユニット
A  参加者、口座
B  参加者、口座
C  参加者、口座
D  口座
E  口座
【図１】
0006816300.tif 000002
【図２】
0006816300.tif 000003
【図３Ａ】
0006816300.tif 000004
【図３Ｂ】
0006816300.tif 000005
【図４】
0006816300.tif 000006
【図５】
0006816300.tif 000007