(57)【特許請求の範囲】
【請求項１】
ブロックチェーントランザクションのためのコンピュータ実装方法であって、
1つのデータに関して2つ以上のブロックチェーントランザクションを並列に実行するための命令を受信するステップであり、前記2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが、前記データの値を変更し、読み書きセットモデルに基づく、ステップと、
前記2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、
前記ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、前記ブロックチェーントランザクションを示す特殊命令を読み書きセットの代わりに生成するステップであり、前記特殊命令は、
前記データの現在の値からの変化量を示すとともに、
前記スマートコントラクトを実行してブロックチェーンに前記ブロックチェーントランザクションを書き込むときに、前記データの現在値が前記ブロックチェーントランザクションをサポートすることを確認するために使用される、ステップと
を含む、コンピュータ実装方法。
【請求項２】
前記2つ以上のブロックチェーントランザクションからの前記ブロックチェーントランザクションが、前記データから前記変化量を差し引き、前記データの前記現在値が前記ブロックチェーントランザクションをサポートすることを確認することが、前記データの前記現在値が前記変化量以上であることを確認することを含む、請求項1に記載のコンピュータ実装方法。
【請求項３】
コンセンサスソーティングのために前記ブロックチェーントランザクションを提出するステップと、
前記データの前記現在値が前記変化量以上であるとの確認に応じて、前記ブロックチェーントランザクションと関連する前記スマートコントラクトを実行して前記ブロックチェーンに前記ブロックチェーントランザクションを書き込むステップと、
を更に含む、請求項2に記載のコンピュータ実装方法。
【請求項４】
前記データの前記現在値が前記変化量以上であることを確認することが、前記データの前記現在値が、前記ブロックチェーントランザクションを示す前記特殊命令によって示される前記変化量と同じであることを確認することを含まない、請求項3に記載のコンピュータ実装方法。
【請求項５】
前記ブロックチェーントランザクションと関連する前記スマートコントラクトを実行して前記ブロックチェーンに前記ブロックチェーントランザクションを書き込むステップが、
前記ブロックチェーントランザクションと関連するデータブロックを生成するステップと、
前記ブロックチェーンに前記データブロックを公開するステップと、
を含む、請求項3に記載のコンピュータ実装方法。
【請求項６】
前記2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、前記ブロックチェーントランザクションと関連する前記スマートコントラクトを事前実行して、前記ブロックチェーントランザクションを示す前記特殊命令を生成するステップが、
前記データに関して残高確認を行うステップと、
前記データに関する前記残高確認が、前記ブロックチェーントランザクションをサポートする場合、前記ブロックチェーントランザクションを示す前記特殊命令を生成するステップと
を含む、請求項1に記載のコンピュータ実装方法。
【請求項７】
前記特殊命令は、前記スマートコントラクトを実行するときに、前記データの現在値が前記ブロックチェーントランザクションをサポートすることを前記データの現在値が前記変化量以上であることによって確認するために、前記データに比較演算が行われるべきであることをさらに示す、請求項1に記載のコンピュータ実装方法。
【請求項８】
ブロックチェーントランザクションのためのシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合されており、請求項1から7のいずれか一項に記載の方法を行うために、前記1つまたは複数のプロセッサによって実行可能である命令が記憶された1つまたは複数のコンピュータ可読メモリと
を備える、システム。
【請求項９】
請求項1から7のいずれか一項に記載の方法を1つまたは複数のコンピュータに行わせるための命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ブロックチェーン技術の分野に関し、特に、読み書きセットモデル(Read-Write Set Model)ベースのブロックチェーン技術における二重消費問題(Double-Spending Problem)を回避するための方法および装置に関する。
【背景技術】
【０００２】
分散型台帳システム(DLS)は、コンセンサスネットワークおよび/またはブロックチェーンネットワークとも称することができ、参加エンティティが安全かつ不変に取引を行い、データを格納することを可能にする。DLSは、いかなる特定のユーザケースにも関係せず、一般的にブロックチェーンネットワークと称される。ブロックチェーンネットワークの種類の例は、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含むことができる。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御する、選択された一群のエンティティのために提供され、アクセス制御層を含む。
【０００３】
ブロックチェーンネットワークでは、データの再現性のため、デジタル資産が場合により再使用され得る。例えば、複数の並列ブロックチェーントランザクションが同じデジタル資産に関して行われ得る(二重消費と称される)。いくつかの場合において、複数の並列ブロックチェーントランザクションが同じデータに関して読み込む場合、一旦第1の並列ブロックチェーントランザクションがデータを変更すると、他の並列ブロックチェーントランザクションはデータ変更に起因して失敗することがある(二重消費問題と称される)。
【０００４】
現在、2つの主要なブロックチェーンプロセス種類がある。一方は、イーサリアムによって主導されて、最初にコンセンサスを達成し、次にスマートコントラクトを実行し、最後にデータの状態を変更する。他方は、ハイパーレッジャーファブリックによって主導されて、最初に論理的検証のためにスマートコントラクトを事前実行し、次に生成された読み書きセットに対してコンセンサスソーティングを行い、最後に各生成された読み書きセットに対してデータ検証を行う。イーサリアムは順次取引を実行するので、二重消費問題はあり得ない。しかしながら、ハイパーレッジャーファブリックは、読み書きセットに基づく事前実行スマートコントラクト方式を実装しており、二重消費問題に遭遇することがある。
【０００５】
読み書きセットモデルベースのブロックチェーン技術(例えば、ハイパーレッジャーファブリック)における二重消費問題の解決策を提供することが望ましいであろう。
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書は、ブロックチェーントランザクションにおける二重消費問題を回避するための技術を説明する。これらの技術は、概して、1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令を受信するステップであって、2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更する、ステップと、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成するステップであって、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに、同データの現在値がブロックチェーントランザクションをサポートすることを確認(validate)するために特殊命令が使用される、ステップとを含む。
【０００７】
本明細書は、1つまたは複数のプロセッサに結合されており、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実施形態による動作を行わせる命令が記憶された、1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【０００８】
本明細書は、本明細書で提供される方法を実装するためのシステムを更に提供する。本システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実施形態による動作を行わせる命令が記憶された、1つまたは複数のプロセッサに結合されるコンピュータ可読記憶媒体とを含む。
【０００９】
本明細書による方法が、本明細書に記載される態様および特徴の任意の組合せを含んでよいことが認識される。すなわち、本明細書による方法は、本明細書に具体的に記載される態様および特徴の組合せに限定されるのではなく、提供される態様および特徴の任意の組合せも含むことができる。
【００１０】
本明細書の1つまたは複数の実施形態の詳細が、添付図面および以下の説明に明らかにされる。本明細書の他の特徴および利点は、同説明および図面から、ならびに特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【００１１】
【図１】本明細書の実施形態を実行するために使用することができる環境の一例を例示する図である。
【図２】本明細書の実施形態による概念アーキテクチャの一例を例示する図である。
【図３】本明細書の実施形態によるブロックチェーントランザクション実行シナリオの一例を例示するブロック図である。
【図４】本明細書の実施形態による2つの並列ブロックチェーントランザクションのための従来の実行シナリオの一例を例示するブロック図である。
【図５】本明細書の実施形態による2つの並列ブロックチェーントランザクションのための実行シナリオの一例を例示するブロック図である。
【図６】本明細書の実施形態によるブロックチェーントランザクションにおける二重消費問題を回避するための方法の一例を例示するフローチャートである。
【図７】本明細書の実装形態による機器のモジュールの例を描く図である。
【発明を実施するための形態】
【００１２】
様々な図面における同様の参照番号および記号は、同様の要素を示す。
【００１３】
以下の詳細な説明は、読み書きセットモデルベースのブロックチェーン技術における二重消費問題を回避することを説明し、開示される対象を1つまたは複数の特定の実施形態の文脈で当業者が製作および使用することを可能にするために提示される。1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令が受信される。各ブロックチェーントランザクションに対して、対応するスマートコントラクトが事前実行されて、読み書きセットの代わりに特殊命令を生成する。特殊命令は、対応するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認(validate)するために使用される。
【００１４】
開示される実施形態の様々な変更、修正および置換をなすことができ、それらは当業者に直ちに明らかであろうし、定められる一般原則は、本明細書の範囲から逸脱することなく、他の実施形態および用途に適用できる。一部の事例では、記載される対象の理解を得るためには不必要であり、当業者の技術内である1つまたは複数の技術的詳細は、1つまたは複数の記載される実施形態を不明瞭にしないように省略され得る。本明細書は、記載または例示される実施形態に限定されるのではなく、記載される原理および特徴に合わせた最も広い範囲が与えられると意図される。
【００１５】
本明細書の実施形態のための更なる背景を提供するため、かつ上記提示したように、分散型台帳システム(DLS)は、コンセンサスネットワーク(例えば、ピアツーピアノードから構成される)およびブロックチェーンネットワークとも称することができ、参加エンティティが安全かつ不変に取引を行い、データを格納することを可能にする。用語ブロックチェーンが一般に特定のネットワークおよび/またはユースケースと関連付けられるが、ブロックチェーンは本明細書では、いかなる特定のユースケースにも関係なくDLS一般を指すために使用される。
【００１６】
ブロックチェーンは、トランザクションが不変であるようにトランザクションを記憶するデータ構造である。このように、ブロックチェーンに記録されたトランザクションは確実で信頼できる。ブロックチェーンは1つまたは複数のブロックを含む。チェーンにおける各ブロックは、チェーンにおけるそれの直前の以前のブロックの暗号ハッシュを含むことによってその以前のブロックにリンクされる。各ブロックは、タイムスタンプ、それ自身の暗号ハッシュ、および1つまたは複数のトランザクションも含む。トランザクションは、ブロックチェーンネットワークのノードによって既に検証されており、マークルツリーへハッシュおよび符号化される。マークルツリーは、ツリーのリーフノードにおけるデータがハッシュされ、ツリーの各ブランチにおける全てのハッシュがブランチのルートで連結されるデータ構造である。このプロセスはツリー全体のルートまでツリーを上がり続け、そこでツリーにおける全てのデータを表すハッシュを記憶する。ツリーに記憶されたトランザクションのものとされるハッシュは、それがツリーの構造と一致しているかどうかを判定することによって迅速に検証できる。
【００１７】
ブロックチェーンがトランザクションを記憶するための非集中型または少なくとも部分的に非集中型データ構造であるのに対して、ブロックチェーンネットワークは、トランザクションをブロードキャスト、検証および有効化すること等によって1つまたは複数のブロックチェーンを管理、更新および維持する計算ノードのネットワークである。上記提示したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワークまたはコンソーシアムブロックチェーンネットワークとして提供できる。本明細書の実施形態は、コンソーシアムブロックチェーンネットワークに関して本明細書に更に詳細に記載される。しかしながら、本明細書の実施形態が任意の適切な種類のブロックチェーンネットワークで実現できることが企図される。
【００１８】
一般に、コンソーシアムブロックチェーンネットワークは参加エンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、公認されたノードの集合によって制御されており、それらはコンセンサスノードと称することができ、1つまたは複数のコンセンサスノードがそれぞれのエンティティ(例えば、金融機関、保険会社)によって運営される。例えば、10のエンティティ(例えば、金融機関、保険会社)のコンソーシアムがコンソーシアムブロックチェーンネットワークを運営でき、その各々がコンソーシアムブロックチェーンネットワークにおいて少なくとも1つのノードを運営する。
【００１９】
一部の例では、コンソーシアムブロックチェーンネットワーク内に、全てのノードにわたって複製されるブロックチェーンとしてグローバルブロックチェーンが提供される。すなわち、全てのコンセンサスノードがグローバルブロックチェーンに関しては完全状態コンセンサスに達している。コンセンサス(例えば、ブロックチェーンへのブロックの追加への合意)を達成するために、コンソーシアムブロックチェーンネットワーク内にコンセンサスプロトコルが実装される。例えば、コンソーシアムブロックチェーンネットワークは、以下に更に詳細に記載される、実用的ビザンチン障害耐性(PBFT)コンセンサスを実装できる。
【００２０】
図1は、本明細書の実施形態を実行するために使用することができる環境100の一例を例示する図である。一部の例では、環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。環境100は、計算装置106、108およびネットワーク110を含む。一部の例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネットまたはその組合せを含み、ウェブサイト、ユーザ装置(例えば、計算装置)およびバックエンドシステムを接続する。一部の例では、ネットワーク110は有線および/または無線通信リンクを通じてアクセスできる。一部の例では、ネットワーク110は、コンソーシアムブロックチェーンネットワーク102との、および内の通信を可能にする。一般に、ネットワーク110は1つまたは複数の通信ネットワークを表す。いくつかの場合において、計算装置106、108はクラウドコンピューティングシステム(図示せず)のノードとすることができ、または各計算装置106、108は、ネットワークによって相互接続されるいくつかのコンピュータを含み、分散処理システムとして機能する別々のクラウドコンピューティングシステムとすることができる。
【００２１】
描かれた例では、計算システム106、108は各々、コンソーシアムブロックチェーンネットワーク102へのノードとしての参加を可能にする任意の適切な計算システムを含むことができる。計算装置の例には、限定することなく、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレット計算装置およびスマートフォンを含む。一部の例では、計算システム106、108は、コンソーシアムブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。例えば、計算システム106は、第1のエンティティ(例えば、ユーザA)が1つまたは複数の他のエンティティ(例えば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティのコンピュータ実装サービスをホストできる。計算システム108は、第2のエンティティ(例えば、ユーザB)が1つまたは複数の他のエンティティ(例えば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティのコンピュータ実装サービスをホストできる。図1の例では、コンソーシアムブロックチェーンネットワーク102はノードのピアツーピアネットワークとして表され、計算システム106、108はそれぞれ第1のエンティティおよび第2のエンティティのノードを提供し、それらがコンソーシアムブロックチェーンネットワーク102に参加する。
【００２２】
図2は、本明細書の実施形態による概念アーキテクチャ200の一例を例示する図である。概念アーキテクチャ例200は、それぞれ、参加者(Participant)A、参加者B、参加者Cに対応する参加者システム202、204、206を含む。各参加者(例えば、ユーザ、企業)は、複数のノード214を含み、少なくともその一部がブロックチェーン216に情報を不変に記録する、ピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加する。ブロックチェーンネットワーク212内に単一のブロックチェーン216が概略的に描かれるが、本明細書に更に詳細に記載されるように、ブロックチェーン216の複数のコピーが提供されて、ブロックチェーンネットワーク212にわたって維持される。
【００２３】
描かれた例では、各参加者システム202、204、206は、それぞれ、参加者A、参加者B、参加者Cによって、またはそれに代わって提供され、ブロックチェーンネットワーク内でそれぞれのノード214として機能する。本明細書で使用されるように、ノードは一般に、ブロックチェーンネットワーク212に接続される個々のシステム(例えば、コンピュータ、サーバ)を指し、それぞれの参加者がブロックチェーンネットワークに参加することを可能にする。図2の例では、参加者は各ノード214に対応する。しかしながら、参加者がブロックチェーンネットワーク212内で複数のノード214を運営できる、および/または複数の参加者がノード214を共有できることが企図される。一部の例では、参加者システム202、204、206は、プロトコル(例えば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、および/またはリモートプロシージャコール(RPC)を使用してブロックチェーンネットワーク212と、またはそれを通じて通信する。
【００２４】
ノード214は、ブロックチェーンネットワーク212内への異なる参加の程度を有することができる。例えば、一部のノード214がコンセンサスプロセスに参加できる(例えば、ブロックチェーン216にブロックを追加するマイナーノードとして)一方、他のノード214はコンセンサスプロセスに参加しない。別の例として、一部のノード214がブロックチェーン216の完全なコピーを記憶する一方、他のノード214はブロックチェーン216の一部分のコピーを記憶するだけである。例えば、データアクセス特権が、それぞれの参加者がそのそれぞれのシステム内に記憶するブロックチェーンデータを制限できる。図2の例では、参加者システム202、204、206は、ブロックチェーン216のそれぞれの完全なコピー216'、216''、216'''を記憶する。
【００２５】
ブロックチェーン(例えば、図2のブロックチェーン216)は一連のブロックから構成されおり、各ブロックがデータを記憶する。データの例には、2者以上の参加者間のトランザクションを表すトランザクションデータを含む。トランザクションが非限定例として本明細書に使用されるのに対して、任意の適切なデータがブロックチェーンに記憶できる(例えば、文書、画像、ビデオ、オーディオ)ことが企図される。トランザクションの例には、限定することなく、価値があるもの(例えば、資産、製品、サービス、通貨)の交換を含むことができる。トランザクションデータはブロックチェーン内に不変に記憶される。すなわち、トランザクションデータは変更できない。
【００２６】
ブロックへの記憶の前に、トランザクションデータはハッシュされる。ハッシングは、トランザクションデータ(列データとして提供される)を固定長ハッシュ値(同じく列データとして提供される)へ変換するプロセスである。ハッシュ値を非ハッシュ化してトランザクションデータを得ることは可能でない。ハッシングは、トランザクションデータの僅かな変更さえ結果として完全に異なるハッシュ値になることを保証する。更に、上記したように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズにかかわらず、ハッシュ値の長さは固定される。ハッシングは、ハッシュ関数を通じてトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の例には、限定することなく、セキュアハッシュアルゴリズム(SHA)-256を含み、これは256ビットハッシュ値を出力する。
【００２７】
複数のトランザクションのトランザクションデータがハッシュされてブロックに記憶される。例えば、2つのトランザクションのハッシュ値が提供され、それら自体ハッシュされて別のハッシュを提供する。このプロセスは、ブロックに記憶されるべき全てのトランザクションに対して、単一のハッシュ値が提供されるまで繰り返される。このハッシュ値はマークルルートハッシュと称され、ブロックのヘッダに記憶される。トランザクションのいずれかの変更が結果としてそのハッシュ値の変更に、最終的に、マークルルートハッシュの変更になることになる。
【００２８】
ブロックはコンセンサスプロトコルを通じてブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードがコンセンサスプロトコルに参加して作業を行って、ブロックをブロックチェーンに追加させる。そのようなノードはコンセンサスノードと称される。上記提示したPBFTがコンセンサスプロトコルの非限定例として使用される。コンセンサスノードは、コンセンサスプロトコルを実行してブロックチェーンにトランザクションを追加し、ブロックチェーンネットワークの全体の状態を更新する。
【００２９】
更に詳細には、コンセンサスノードは、ブロックヘッダを生成し、ブロックにおけるトランザクションの全てをハッシュし、ブロックにおける全てのトランザクションに対して単一のハッシュ値が提供される(マークルルートハッシュ)まで、ハッシュ値を対に組み合わせて更なるハッシュ値を生成する。このハッシュはブロックヘッダに追加される。コンセンサスノードは、ブロックチェーンにおける最近のブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値も決定する。コンセンサスノードは、ブロックヘッダにナンス値およびタイムスタンプも追加する。
【００３０】
一般に、PBFTは、ビザンチン障害(例えば、故障ノード、悪意のあるノード)に耐える実用的なビザンチン状態機械複製を提供する。これは、障害が発生するであろうと仮定する(例えば、独立ノード障害および/またはコンセンサスノードによって送られる操作メッセージの存在を仮定する)ことによってPBFTで達成される。PBFTでは、コンセンサスノードは、主コンセンサスノードおよびバックアップコンセンサスノードを含む順序で設けられる。主コンセンサスノードは定期的に変更される。トランザクションは、ブロックチェーンネットワークの世界状態に関して合意に達しているブロックチェーンネットワーク内の全てのコンセンサスノードによってブロックチェーンに追加される。このプロセスでは、コンセンサスノード間でメッセージが送信され、各コンセンサスノードは、メッセージが指定されたピアノードから受信されることを証明し、メッセージが送信中に変更されなかったことを検証する。
【００３１】
PBFTでは、コンセンサスプロトコルは、全てのコンセンサスノードが同じ状態で開始する、複数の段階で提供される。初めに、クライアントが、サービス動作を起動する(例えば、ブロックチェーンネットワーク内でトランザクションを実行する)よう、主コンセンサスノードに要求を送る。要求を受信したことに応じて、主コンセンサスノードは、バックアップコンセンサスノードに要求をマルチキャストする。バックアップコンセンサスノードは要求を実行し、各々がクライアントに応答を送る。クライアントは、閾値数の応答が受信されるまで待つ。一部の例では、クライアントは、f+1個の応答が受信されるのを待ち、ここでfは、ブロックチェーンネットワーク内で許容できる障害コンセンサスノードの最大数である。最終結果は、十分な数のコンセンサスノードが、ブロックチェーンに追加されるべき記録の順に関して合意に達し、記録が受理されるかまたは却下されるかのいずれかである。
【００３２】
一部のブロックチェーンネットワークでは、トランザクションのプライバシーを守るために暗号法が実装される。例えば、2つのノードがトランザクションをプライベートに保つことを望めば、ブロックチェーンネットワークにおける他のノードがトランザクションの詳細を認められないように、ノードはトランザクションデータを暗号化できる。暗号法の例には、限定することなく、対称暗号化および非対称暗号化を含む。対称暗号化は、暗号化(すなわち、平文から暗号文を生成すること)のためにも復号化(すなわち、暗号文から平文を生成すること)のためにも単一の鍵を使用する暗号化プロセスを指す。対称暗号化では、複数のノードに同じ鍵が利用可能であり、その結果、各ノードがトランザクションデータを暗/復号化できる。
【００３３】
非対称暗号化は鍵ペアを使用し、ここで、各鍵ペアは秘密鍵および公開鍵を含む。秘密鍵は特定のノードにだけ知られており、公開鍵はブロックチェーンネットワークにおける任意のまたは全ての他のノードに知られている。ノードが別のノードの公開鍵を使用してデータを暗号化でき、暗号化データは、その別のノードの秘密鍵を使用して復号化できる。例えば、図2を再び参照すると、参加者Aが参加者Bの公開鍵を使用して、データを暗号化し、参加者Bに暗号化データを送ることができる。参加者Bはその秘密鍵を使用して、暗号化データ(例えば、暗号文)を復号化し、元データ(例えば、平文)を抽出できる。ノードの公開鍵で暗号化されたメッセージは、ノードの秘密鍵を使用してのみ復号化できる。
【００３４】
非対称暗号化は、デジタル署名を提供するために使用されるが、それは、トランザクションの参加者がトランザクションの他の参加者の他にトランザクションの有効性を確認することを可能にする。例えば、ノードがメッセージにデジタル署名でき、別のノードが、参加者Aのデジタル署名に基づいてメッセージがそのノードによって送られたことを確認できる。デジタル署名は、メッセージが転送中に改竄されていないことを保証するためにも使用することができる。例えば、再び図2を参照すると、参加者Aが参加者Bにメッセージを送ることになる。参加者Aは、メッセージのハッシュを生成し、次いで、その秘密鍵を使用して、ハッシュを暗号化して暗号化ハッシュとしてデジタル署名を提供する。参加者Aは、メッセージにデジタル署名を添付し、参加者Bにデジタル署名付きメッセージを送る。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号化し、ハッシュを抽出する。参加者Bは、メッセージをハッシュし、両ハッシュを比較する。両ハッシュが同じであれば、参加者Bは、メッセージが実際に参加者Aからであり、改竄されなかったことを確認できる。
【００３５】
図3は、本明細書の実施形態によるブロックチェーントランザクション実行シナリオ300の一例を例示するブロック図である。ブロックチェーントランザクション実行シナリオ300は、ユーザ305が40元(40円)を消費する予定であるブロックチェーントランザクションを含む。ブロックチェーントランザクションは、スマートコントラクト事前実行段階310およびデータ記憶検証段階315を含む。便宜上、ブロックチェーントランザクション実行シナリオ300は、1つまたは複数の場所に設けられ、本明細書に従って適切にプログラムされる1つまたは複数のコンピュータのシステム(例えば、図1の計算システム106および/もしくは108または図2の参加者システム202、204および/もしくは206)によって行われるとして記載されることになる。
【００３６】
図3に例示されるように、ユーザ305は、100元のウォレット残高を持つデジタルウォレット320を有する。ユーザ305は40元を消費する322予定である。例えば、スマートコントラクトに対するソフトウェア開発キット(SDK)呼出し324を通じて、40元を消費するブロックチェーントランザクション326が実行のために提出される。ブロックチェーントランザクション326を実行するために、スマートコントラクトが最初に事前実行されて、ブロックチェーントランザクション326に関する論理的検証を行って読み書きセットを生成する。コンセンサスソーティング後に、読み書きセットに基づいてブロックチェーントランザクション326に関するデータ検証が行われて、ブロックチェーントランザクション326が実行成功できるかどうかを判定する。
【００３７】
スマートコントラクト事前実行段階310中に、328で、40元を消費するためのブロックチェーントランザクションが受信される。328から、フローは330に進む。
【００３８】
330で、ユーザの口座残高が読み込まれる(すなわち、残高=100)。スマートコントラクト事前実行段階310中に、ユーザの口座残高は変更されない(すなわち、残高は100元のままである)。330から、フローは332に進む。
【００３９】
332で、40元を消費するブロックチェーントランザクションのためにユーザの口座に十分に(すなわち、十分な)残高があるかどうかについて判定がなされる。40元を消費するブロックチェーントランザクションのためにユーザの口座に十分には残高がないと判定されれば、フローは334に進み、金額不足を示す通知がユーザ305に送られる。言い換えれば、残高不足な状況では、スマートコントラクト事前実行段階310は失敗し、40元を消費するブロックチェーントランザクションは失敗する。そうでなければ、40元を消費するブロックチェーントランザクションのためにユーザの口座に十分に残高があると判定されれば、フローは336に進み、読み書きセットが生成される。例えば、(100->60)の読み書きセットが生成される。(100->60)の読み書きセットは、100元の残高を持つユーザの口座から40元を差し引くこと、および40元を消費するブロックチェーントランザクションが成功した後の60元の残りの残高を持つユーザの口座(例えば、ユーザの口座残高が100元から60元に変化すること)を示す。336の後、生成された読み書きセットを持つブロックチェーントランザクションは、データ記憶検証段階315で確定される前に、コンセンサスソーティングのために提出される338。
【００４０】
データ記憶検証段階315中に、340で、(100->60)の読み書きセットを持つブロックチェーントランザクションが受信される。340から、フローは342に進む。
【００４１】
342で、ユーザの口座残高が読み込まれる(すなわち、残高=100)。342から、フローは344に進む。
【００４２】
344で、ユーザの口座残高が(100->60)の読み書きセットに示される口座残高(すなわち、読み書きセット口座残高=100)に等しいかどうかについて判定がなされる。ユーザの口座残高が(100->60)の読み書きセットに示される口座残高に等しくないと判定されれば、フローは346に進み、データが一致しないことを示すメッセージが送られてユーザ305に通知する。言い換えれば、データ記憶検証段階315は失敗し、結果として40元を消費するブロックチェーントランザクションは失敗する。そうでなければ、ユーザの口座残高が(100->60)の読み書きセットに示される口座残高に等しいと判定されれば、フローは348に進み、(100->60)の読み書きセットに従ってデータベースが変更される(例えば、ユーザの口座残高が100元から60元に変更される)。例えば、40元を消費するブロックチェーントランザクションはブロックチェーンのデータブロックに記憶される。348から、フローは350に進み、消費金額を示すメッセージが送られてユーザ305に通知する。言い換えれば、40元を消費するブロックチェーントランザクションは成功する。
【００４３】
図3に図示されるブロックチェーントランザクション実行シナリオ300は読み書きセットモデルベースのブロックチェーン技術(例えば、ハイパーレッジャーファブリック)を使用する。従前のスマートコントラクト呼出し論理(イーサリアムなど)とは異なり、読み書きセットモデルベースのブロックチェーン技術は論理的検証およびデータ検証を分離する。スマートコントラクト事前実行段階310(例えば、論理的検証)中の実行はデータを変更せず、ブロックチェーンネットワークにおける1つまたは複数のノードの裏付けを得ることができる。コンセンサスソーティング後かつデータ記憶検証段階315(例えば、データ検証)中のトランザクションはデータを変更できる。そうすることで、ブロックチェーン技術の性能を改善できる。
【００４４】
図4は、本明細書の実施形態による2つの並列ブロックチェーントランザクションのための従来の実行シナリオ400の一例を例示するブロック図である。従来の実行シナリオ400は、ユーザ405が2つの並列ブロックチェーントランザクションのうちの各ブロックチェーントランザクションで40元(40円)を消費する予定であった2つの並列ブロックチェーントランザクションを含む。各ブロックチェーントランザクションは、スマートコントラクト事前実行段階410、コンセンサスソーティング段階415およびデータ記憶検証段階420を含む。一部の実施形態において、従来の実行シナリオ400は3つ以上の並列ブロックチェーントランザクションを含むことができる。便宜上、従来の実行シナリオ400は、1つまたは複数の場所に設けられ、本明細書に従って適切にプログラムされる1つまたは複数のコンピュータのシステムによって行われるとして記載されることになる。(例えば、図1の計算システム106および/もしくは108または図2の参加者システム202、204および/もしくは206)。
【００４５】
図4に例示されるように、ユーザ405は、100元のウォレット残高を持つデジタルウォレット422を有する。ユーザ405は、2つの並列ブロックチェーントランザクション424および426で合計80元を消費する予定であった。各ブロックチェーントランザクションは40元を消費することになる。一部の実施形態において、各ブロックチェーントランザクションで異なる額を消費できる。2つの並列ブロックチェーントランザクション424および426を実行するために、スマートコントラクトが最初に事前実行されて、各ブロックチェーントランザクションに関する論理的検証を行って対応する読み書きセットを生成する。コンセンサスソーティング後に、対応する読み書きセットに基づいて各ブロックチェーントランザクションに関するデータ検証が行われて、各ブロックチェーントランザクションが実行成功できるかどうかを判定する。
【００４６】
スマートコントラクト事前実行段階410(図3におけるスマートコントラクト事前実行段階310と同様)中に、ブロックチェーントランザクション424に対して読み書きセット428(すなわち、(100->60))が生成される。読み書きセット428は、100元の残高を持つユーザの口座から40元を差し引くこと、およびブロックチェーントランザクション424が成功した後の60元の残りの残高を持つユーザの口座(例えば、ユーザの口座残高が100元から60元に変化すること)を示す。加えて、ブロックチェーントランザクション426に対して読み書きセット430(すなわち、(100->60))が生成される。
【００４７】
ユーザの口座がいかなる他の消費もしなければ、2つの並列ブロックチェーントランザクション424および426は、スマートコントラクト事前実行段階410中にデータベースに記憶された同じユーザの口座残高を読み込む。したがって、読み書きセット430も、100元の残高を持つユーザの口座から40元を差し引くこと、およびブロックチェーントランザクション426が成功した後の60元の残りの残高を持つユーザの口座(例えば、ユーザの口座残高が100元から60元に変化すること)を示す。
【００４８】
スマートコントラクト事前実行段階410後に、読み書きセット428を持つブロックチェーントランザクションはコンセンサスソーティングのために提出され432、読み書きセット430を持つブロックチェーントランザクションもコンセンサスソーティングのために提出される434。
【００４９】
コンセンサスソーティング段階415の間、便宜上、読み書きセット428を持つブロックチェーントランザクションが、データ記憶検証段階420で実行されるべき第1のトランザクション436とされ、読み書きセット430を持つブロックチェーントランザクションが、データ記憶検証段階420で実行されるべき第2のトランザクション438とされると仮定する。
【００５０】
データ記憶検証段階420(図3におけるデータ記憶検証段階315と同様)中に、読み書きセット428を持つブロックチェーントランザクションが最初に実行される440。440で、ユーザの口座残高が読み込まれる(すなわち、残高=100)。ユーザの口座残高が読み書きセット428に示される口座残高に等しい(すなわち、100==100)との判定がなされる。読み書きセット428に従ってデータベースが変更される(例えば、ユーザの口座残高が100元から60元に変更される)。言い換えれば、読み書きセット428を持つブロックチェーントランザクションに対するデータ記憶検証段階420は成功し、結果としてブロックチェーントランザクション424は成功する。読み書きセット428を持つブロックチェーントランザクションが成功した後に、フローは442に進み、読み書きセット430を持つブロックチェーントランザクションが実行される。442で、ユーザの口座残高が読み込まれる(すなわち、残高=60)。ユーザの口座残高が読み書きセット430に示される口座残高に等しくない(すなわち、60!=100)との判定がなされる。言い換えれば、読み書きセット430を持つブロックチェーントランザクションに対するデータ記憶検証段階420は失敗し、結果としてブロックチェーントランザクション426は失敗する。
【００５１】
図4に例示されるように、2つ以上の並列ブロックチェーントランザクションが1つのデータ(口座残高など)に関して実行されるとき、論理的検証(例えば、スマートコントラクト事前実行段階410)中に各ブロックチェーントランザクションに対して同じデータが読み込まれる。コンセンサスソーティング後かつデータ検証(例えば、データ記憶検証段階420)中に、2つ以上の並列ブロックチェーントランザクションの間で最初に実行されるブロックチェーントランザクション(例えば、ブロックチェーントランザクション424)がデータ検証に成功し、同データを変更する。結果として、最初に実行されたブロックチェーントランザクション後に実行される後続のブロックチェーントランザクションはデータ検証に失敗することになる。言い換えれば、後続のブロックチェーントランザクション(例えば、ブロックチェーントランザクション426)をサポートする十分な残高があるとしても、同データが最初に実行されたブロックチェーントランザクションによって変更されているので、後続のブロックチェーントランザクションはデータ検証に失敗することになる。例えば、最初に実行されたブロックチェーントランザクションを除いて、全ての並列ブロックチェーントランザクションが失敗する。したがって、同データに関して同時トランザクションが頻繁であるとき、従来の実行シナリオ400の性能は非効率であり、より多くのリソースを消費する。
【００５２】
図5は、本明細書の実施形態による2つの並列ブロックチェーントランザクションのための実行シナリオ500の一例を例示するブロック図である。実行シナリオ500は、ユーザ505が2つの並列ブロックチェーントランザクションのうちの各ブロックチェーントランザクションで40元(40円)を消費する予定であった2つの並列ブロックチェーントランザクションを含む。各ブロックチェーントランザクションは、スマートコントラクト事前実行段階510、コンセンサスソーティング段階515およびデータ記憶検証段階520を含む。一部の実施形態において、実行シナリオ500は3つ以上の並列ブロックチェーントランザクションを含むことができる。便宜上、実行シナリオ500は、1つまたは複数の場所に設けられ、本明細書に従って適切にプログラムされる1つまたは複数のコンピュータのシステムによって行われるとして記載されることになる。例えば、適切にプログラムされる計算システム(例えば、図1の計算システム106および/または108、図2の参加者システム202、204および/または206)が実行シナリオ500を行える。
【００５３】
図5に例示されるように、ユーザ505は、100元のウォレット残高を持つデジタルウォレット522を有する。ユーザ505は、2つの並列ブロックチェーントランザクション524および526で合計80元を消費する予定であった。各ブロックチェーントランザクションは40元を消費することになる。一部の実施形態において、各ブロックチェーントランザクションで異なる額を消費できる。2つの並列ブロックチェーントランザクション524および526を実行するために、スマートコントラクトが最初に事前実行されて、各ブロックチェーントランザクションに関する論理的検証を行って対応する読み書きセットを生成する。コンセンサスソーティング後に、対応する読み書きセットに基づいて各ブロックチェーントランザクションに関するデータ検証が行われて、各ブロックチェーントランザクションが実行成功できるかどうかを判定する。
【００５４】
スマートコントラクト事前実行段階510中に、ブロックチェーントランザクション524に対して、図4における読み書きセット428の代わりに、特殊命令528(例えば、(100-40))が生成される。特殊命令528は、ユーザの口座から40元を差し引くことを示す。一部の実施形態において、特殊命令528はスマートコントラクトでの残高変化の決定のために使用される。加えて、ブロックチェーントランザクション526に対して、図4における読み書きセット430の代わりに、特殊命令530(例えば、(100-40))が生成される。特殊命令530も、ユーザの口座から40元を差し引くことを示す。
【００５５】
スマートコントラクト事前実行段階510後に、特殊命令528を持つブロックチェーントランザクションはコンセンサスソーティングのために提出され532、特殊命令530を持つブロックチェーントランザクションもコンセンサスソーティングのために提出される534。
【００５６】
コンセンサスソーティング段階515の間、便宜上、特殊命令528を持つブロックチェーントランザクションが、データ記憶検証段階520で実行されるべき第1のトランザクション536とされ、特殊命令530を持つブロックチェーントランザクションが、データ記憶検証段階520で実行されるべき第2のトランザクション538とされると仮定する。
【００５７】
データ記憶検証段階520中に、特殊命令528を持つブロックチェーントランザクションが最初に実行される540。540で、ユーザの口座残高が読み込まれる(すなわち、残高=100)。ユーザの口座残高が特殊命令528に示される消費額(すなわち、40)以上であるかどうかについて判定がなされる。この場合、ユーザの口座残高が特殊命令528に示される消費額以上である(すなわち、100>=40)と判定される。次いで、特殊命令528に従ってデータベースが変更される(例えば、ユーザの口座から40元が差し引かれる)。言い換えれば、特殊命令528を持つブロックチェーントランザクションに対するデータ記憶検証段階520は成功し、結果としてブロックチェーントランザクション524は成功する。特殊命令528を持つブロックチェーントランザクションが成功した後に、フローは542に進み、特殊命令530を持つブロックチェーントランザクションが実行される。542で、ユーザの口座残高が読み込まれる(すなわち、残高=60)。ユーザの口座残高が特殊命令530に示される消費額(すなわち、40)以上であるかどうかについて判定がなされる。この場合、ユーザの口座残高が特殊命令530に示される消費額以上である(すなわち、60>=40)と判定される。次いで、特殊命令530に従ってデータベースが変更される(例えば、ユーザの口座から40元が差し引かれる)。言い換えれば、特殊命令530を持つブロックチェーントランザクションに対するデータ記憶検証段階520は成功し、結果としてブロックチェーントランザクション526は成功する。
【００５８】
図4における従来の実行シナリオ400とは異なり、図5における実行シナリオ500は、論理的検証(例えば、スマートコントラクト事前実行段階510)中に特殊命令を生成する。例えば、口座残高を検証する代わりに、特殊命令は、口座残高がデータ検証中に対応するブロックチェーントランザクションをサポートすることを確認するために使用することができる。結果として、十分に残高があれば全ての並列ブロックチェーントランザクションが実行成功できる。一部の実施形態において、実行シナリオ500は、1つのデータに関して複数の並列ブロックチェーントランザクションを処理するために既存の読み書きセットモデルベースのブロックチェーン技術(例えば、図4における従来の実行シナリオ400)への拡張として使用することができる。例えば、特殊命令ベースのブロックチェーン技術(例えば、実行シナリオ500)は、同時トランザクションが頻繁な口座に対して使用でき、読み書きセットモデルベースのブロックチェーン技術は、同時トランザクションが少ないまたはない口座に対して使用することができる。一部の実施形態において、特殊命令へ単純な論理指令を組み込める。特殊命令は次いで、データ記憶検証段階中に対応する論理検証を実行して、対応するデータトランザクションが実行成功できるかどうかを判定するために使用することができる。
【００５９】
利点が以下の1つまたは複数を含むことができる。第一に、口座からの同時差引きによって引き起こされる二重消費問題が解決できる。口座に十分に残高がある限り(例えば、特殊命令に従って論理的に妥当)、口座に関する複数の並列ブロックチェーントランザクションが実行成功できる。第二に、特殊命令は、既存の読み書きセットモデルベースのブロックチェーン技術への拡張として導入される。スマートコントラクトでは、残高変化を決定する論理が特殊命令によって呼び出される。ノードがデータ状況確認を行うとき、特殊命令は、残高を確認してデータ状況の妥当性を判定するために使用される。第三に、特殊命令方式は、読み書きセットモデルベースのブロックチェーン技術において1つのデータに単一のポリシー変更が適用される全ての種類の状況に適用可能である。同データは、数値型、状態型およびデータ型の少なくとも1つを含むデータ型を有することができる。
【００６０】
図6は、本明細書の実施形態によるブロックチェーントランザクションにおける二重消費問題を回避するための方法600の一例を例示するフローチャートである。便宜上、方法600は、1つまたは複数の場所に設けられ、本明細書に従って適切にプログラムされる1つまたは複数のコンピュータのシステムによって行われるとして記載されるべき。例えば、適切にプログラムされる計算システム(例えば、図1の計算システム106および/または108、図2の参加者システム202、204および/または206)が方法600を行える。
【００６１】
602で、1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令が受信される。2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更する(例えば、加算する、減算する)。一部の実施形態において、同データは、ブロックチェーンプロセスで使用される(例えば、変更される)データとすることができる。例えば、同データは、ユーザが金銭を消費または金銭を預金できるユーザ口座とすることができる。一部の実施形態において、同データは、数値型、状態型およびデータ型の少なくとも1つを含むデータ型を有することができる。一部の実施形態において、2つ以上のブロックチェーントランザクションは二重消費トランザクションであり、同データに関して並列に実行される。一部の実施形態において、ブロックチェーンは読み書きセットモデルに基づく。
【００６２】
604で、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトが事前実行されて、ブロックチェーントランザクションを示す特殊命令を生成する。特殊命令は、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認するために使用される。一部の実施形態において、特殊命令は、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行すると、読み書きセットの代わりに生成される。言い換えれば、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行するとき、読み書きセットは生成されない。例えば、100元の残高を持つ口座から40元を消費するブロックチェーントランザクションを実行すると、特殊命令(100-40)(図5の528および/または530など)が生成されて、読み書きセット(100->60)(図4の428および/または430など)は生成されない。
【００６３】
一部の実施形態において、ブロックチェーントランザクションは、同データから或る額を差し引くことである。そのような場合、同データの現在値がブロックチェーントランザクションをサポートすることを確認することは、同データの現在値が同額以上であることを確認することを含む。一部の実施形態において、ブロックチェーントランザクションは、同データに或る額を預金することである。そのような場合、同データの現在値がブロックチェーントランザクションをサポートすることを確認することは行われなくてよい。例えば、スマートコントラクトは、同データの現在値を確認することなく実行されて、ブロックチェーンにブロックチェーントランザクションを書き込める。一部の実施形態において、各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成することは、同データに関して残高確認を行うことと、同データに関する残高確認がブロックチェーントランザクションをサポートする場合、ブロックチェーントランザクションを示す特殊命令を生成することとを含む。一部の実施形態において、特殊命令は、同データに行われるべきである比較演算を示す。例えば、比較演算は、同データの現在値を同データから差し引かれることになる額と比較する。
【００６４】
図6に図示される方法600は、追加の、より少ないまたは異なる行為(図6に図示せず)を含むように変更または再構成でき、それらは示される順にまたは異なる順に行える。例えば、604の後、ブロックチェーントランザクションはコンセンサスソーティングのために提出される。同データの現在値が同額以上であることを確認したことに応じて、ブロックチェーントランザクションと関連するスマートコントラクトが実行されてブロックチェーンにブロックチェーントランザクションを書き込む。一部の実施形態において、同データの現在値が同額以上であることを確認することは、同データの現在値が、ブロックチェーントランザクションを示す特殊命令によって示される同データの値と同じであることを確認することを含まない。一部の実施形態において、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むことは、ブロックチェーントランザクションと関連するデータブロックを生成することと、ブロックチェーンにデータブロックを公開することとを含む。一部の実施形態において、図6に図示される行為の1つまたは複数が、例えば、終了条件に達するまで繰り返せるまたは反復できる。一部の実施形態において、図6に図示される個々の行為の1つまたは複数が複数の別々の行為として実行できる、または図6に図示される行為の1つまたは複数の部分集合が単一の行為として結合および実行できる。一部の実施形態において、図6に図示される個々の行為の1つまたは複数が方法600から省略されてもよい。
【００６５】
図7は、本明細書の実装形態による機器700のモジュールの例を描く。
【００６６】
機器700は、ブロックチェーンネットワークにおける二重消費問題を回避するように構成されるブロックチェーンノードの実施形態の一例とすることができ、ブロックチェーンネットワークはコンソーシアムブロックチェーンネットワークである。機器700は上記した実施形態に対応でき、機器700は以下を含む:1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令を受信する受信モジュール702;2つ以上のブロックチェーントランザクションのうちのブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成する事前実行モジュール704;およびコンセンサスソーティングのためにブロックチェーントランザクションを送信する送信モジュール706。
【００６７】
任意選択の実施形態において、2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更し、特殊命令は、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認するために使用される。
【００６８】
任意選択の実施形態において、2つ以上のブロックチェーントランザクションは同データに並列に実行される。
【００６９】
任意選択の実施形態において、ブロックチェーンは読み書きセットモデルに基づく。
【００７０】
任意選択の実施形態において、各ブロックチェーントランザクションに対して、特殊命令は、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行すると、読み書きセットの代わりに生成される。
【００７１】
任意選択の実施形態において、機器700は、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むために、同データの現在値が、ブロックチェーントランザクションによってかつ同データから差し引かれることになる額以上であるかどうかを判定するための判定モジュールを更に含む。
【００７２】
任意選択の実施形態において、同データの現在値がブロックチェーントランザクションをサポートすることを確認することは、同データの現在値が、ブロックチェーントランザクションを示す特殊命令によって示される同データの値と同じであることを確認することを含まない。
【００７３】
任意選択の実施形態において、機器700は、ブロックチェーントランザクションと関連するデータブロックを生成するための生成モジュール、およびブロックチェーンにデータブロックを公開するための公開モジュールを更に含む。
【００７４】
任意選択の実施形態において、機器700は、同データに関して残高確認を行うための残高確認モジュール、および同データに関する残高確認がブロックチェーントランザクションをサポートする場合ブロックチェーントランザクションを示す特殊命令を生成するための生成モジュールを更に含む。
【００７５】
前述の実施形態に例示されるシステム、装置、モジュールまたはユニットは、コンピュータチップもしくはエンティティを使用することによって実装できる、または或る機能を有する製品を使用することによって実装できる。典型的な実施デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せとすることができる。
【００７６】
装置における各モジュールの機能および役割の実施プロセスについては、前述の方法における対応するステップの実施プロセスを参照できる。簡略化のために詳細はここでは省略される。
【００７７】
装置実施形態が基本的に方法実施形態に対応するので、関連部分については、方法実施形態における関連説明を参照できる。前述した装置実施形態は単に一例である。別々の部分として記載されるモジュールは物理的に別々であってもまたはなくてもよく、モジュールとして表示される部分は、物理的モジュールであってもまたはなくてもよく、1つの場所に設けられてもよく、またはいくつかのネットワークモジュールに分散されてもよい。モジュールの一部または全部が、本明細書の解決策の目的を達成するように実需に基づいて選択できる。当業者は創意工夫なしに本明細書の実施形態を理解および実装できる。
【００７８】
図7を再び参照すると、それは、ブロックチェーンデータ事前実行機器の内部機能モジュールおよび構造を例示すると解釈できる。ブロックチェーンデータ事前実行機器は、ブロックチェーンネットワークにおける二重消費問題を回避するように構成されるブロックチェーンノードの一例とすることができる。実行体は本質的に電子装置とすることができ、電子装置は以下を含む:1つまたは複数のプロセッサ、および1つまたは複数のプロセッサの実行可能命令を記憶するように構成されるメモリ。
【００７９】
本明細書に記載される手法は1つまたは複数の技術的効果をもたらすことができる。一部の実施形態において、二重消費問題(1つのデータに関して複数の並列ブロックチェーントランザクションを実行することなど)を処理するために既存の読み書きセットモデルベースのブロックチェーン技術への拡張として特殊命令が導入される。他の実施形態において、1つのデータに関して複数の並列ブロックチェーントランザクションを実行するときに、各ブロックチェーントランザクションに対して、読み書きセットの代わりに特殊命令が生成される。更に他の実施形態において、スマートコントラクトを実行してブロックチェーンに対応するブロックチェーントランザクションを書き込むときに1つのデータの現在値が対応するブロックチェーントランザクションをサポートすることを確認するために特殊命令が使用される。
【００８０】
本対象の記載された実施形態は1つまたは複数の特徴を単独でまたは組合せて含むことができる。
【００８１】
例えば、第1の実施形態において、ブロックチェーントランザクションにおける二重消費問題を回避するためのコンピュータ実装方法であって、1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令を受信するステップであり、2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更する、ステップと、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成するステップであり、特殊命令が、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認するために使用される、ステップとを含む、コンピュータ実装方法。上記および他の記載された実施形態は各々、任意選択で、以下の特徴の1つまたは複数を含むことができる:
【００８２】
第1の特徴は、以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションが同データに関して並列に実行されることを規定する。
【００８３】
第2の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーンが読み書きセットモデルに基づくことを規定する。
【００８４】
第3の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、特殊命令が、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行すると、読み書きセットの代わりに生成されることを規定する。
【００８５】
第4の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからのブロックチェーントランザクションが同データから或る額を差し引くこと、および同データの現在値がブロックチェーントランザクションをサポートすることを確認することが、同データの現在値が同額以上であることを確認することを含むことを規定する。
【００８６】
第5の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、本方法が、コンセンサスソーティングのためにブロックチェーントランザクションを提出するステップと、同データの現在値が同額以上であることを確認したことに応じて、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むステップとを更に含む。
【００８７】
第6の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、同データの現在値が同額以上であることを確認することが、同データの現在値が、ブロックチェーントランザクションを示す特殊命令によって示される同データの値と同じであることを確認することを含まないことを規定する。
【００８８】
第7の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むステップが、ブロックチェーントランザクションと関連するデータブロックを生成するステップと、ブロックチェーンにデータブロックを公開するステップとを含むことを規定する。
【００８９】
第8の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成するステップが、同データに関して残高確認を行うステップと、同データに関する残高確認がブロックチェーントランザクションをサポートする場合、ブロックチェーントランザクションを示す特殊命令を生成するステップとを含むことを規定する。
【００９０】
第9の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、特殊命令が、スマートコントラクトを実行するときに同データに比較演算が行われるべきであることを示すことを規定する。
【００９１】
第2の実施形態において、ブロックチェーントランザクションにおける二重消費問題を回避するためのシステムであって、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、命令が記憶された1つまたは複数のコンピュータ可読メモリであり、同命令が、1つまたは複数のプロセッサによって実行可能であり、1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令を受信することであり、2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更する、ことと、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成することであり、特殊命令が、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認するために使用される、こととを含む動作を行う、コンピュータ可読メモリとを備える、システム。上記および他の記載された実施形態は各々、任意選択で、以下の特徴の1つまたは複数を含むことができる:
【００９２】
第1の特徴は、以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションが同データに関して並列に実行されることを規定する。
【００９３】
第2の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーンが読み書きセットモデルに基づくことを規定する。
【００９４】
第3の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、特殊命令が、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行すると、読み書きセットの代わりに生成されることを規定する。
【００９５】
第4の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからのブロックチェーントランザクションが同データから或る額を差し引くこと、および同データの現在値がブロックチェーントランザクションをサポートすることを確認することが、同データの現在値が同額以上であることを確認することを含むことを規定する。
【００９６】
第5の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、同動作が、コンセンサスソーティングのためにブロックチェーントランザクションを提出することと、同データの現在値が同額以上であることを確認したことに応じて、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むこととを更に含む。
【００９７】
第6の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、同データの現在値が同額以上であることを確認することが、同データの現在値が、ブロックチェーントランザクションを示す特殊命令によって示される同データの値と同じであることを確認することを含まないことを規定する。
【００９８】
第7の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むことが、ブロックチェーントランザクションと関連するデータブロックを生成することと、ブロックチェーンにデータブロックを公開することとを含むことを規定する。
【００９９】
第8の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成することが、同データに関して残高確認を行うことと、同データに関する残高確認がブロックチェーントランザクションをサポートする場合、ブロックチェーントランザクションを示す特殊命令を生成することとを含むことを規定する。
【０１００】
第9の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、特殊命令が、スマートコントラクトを実行するときに同データに比較演算が行われるべきであることを示すことを規定する。
【０１０１】
第3の実施形態において、ブロックチェーントランザクションにおける二重消費問題を回避するための装置であって、1つのデータに関して2つ以上のブロックチェーントランザクションを実行するための命令を受信することであり、2つ以上のブロックチェーントランザクションのうちの全てのブロックチェーントランザクションが同データの値を変更する、ことと、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成することであり、特殊命令が、スマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むときに同データの現在値がブロックチェーントランザクションをサポートすることを確認するために使用される、こととを含む動作を行うための複数のモジュールを備える、装置。上記および他の記載された実施形態は各々、任意選択で、以下の特徴の1つまたは複数を含むことができる:
【０１０２】
第1の特徴は、以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションが同データに関して並列に実行されることを規定する。
【０１０３】
第2の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーンが読み書きセットモデルに基づくことを規定する。
【０１０４】
第3の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、特殊命令が、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行すると、読み書きセットの代わりに生成されることを規定する。
【０１０５】
第4の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからのブロックチェーントランザクションが同データから或る額を差し引くこと、および同データの現在値がブロックチェーントランザクションをサポートすることを確認することが、同データの現在値が同額以上であることを確認することを含むことを規定する。
【０１０６】
第5の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、同動作が、コンセンサスソーティングのためにブロックチェーントランザクションを提出することと、同データの現在値が同額以上であることを確認したことに応じて、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むこととを更に含む。
【０１０７】
第6の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、同データの現在値が同額以上であることを確認することが、同データの現在値が、ブロックチェーントランザクションを示す特殊命令によって示される同データの値と同じであることを確認することを含まないことを規定する。
【０１０８】
第7の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、ブロックチェーントランザクションと関連するスマートコントラクトを実行してブロックチェーンにブロックチェーントランザクションを書き込むことが、ブロックチェーントランザクションと関連するデータブロックを生成することと、ブロックチェーンにデータブロックを公開することとを含むことを規定する。
【０１０９】
第8の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、2つ以上のブロックチェーントランザクションからの各ブロックチェーントランザクションに対して、ブロックチェーントランザクションと関連するスマートコントラクトを事前実行して、ブロックチェーントランザクションを示す特殊命令を生成することが、同データに関して残高確認を行うことと、同データに関する残高確認がブロックチェーントランザクションをサポートする場合、ブロックチェーントランザクションを示す特殊命令を生成することとを含むことを規定する。
【０１１０】
第9の特徴は、以上または以下の特徴のいずれかと組み合わせ可能であり、特殊命令が、スマートコントラクトを実行するときに同データに比較演算が行われるべきであることを示すことを規定する。
【０１１１】
本明細書に記載される対象ならびに行為および動作の実施形態は、デジタル電子回路網で、有形に具現化されたコンピュータソフトウェアもしくはファームウェアで、本明細書に開示される構造およびそれらの構造等価物を含め、コンピュータハードウェアで、またはそれらの1つもしくは複数の組合せで実装できる。本明細書に記載される対象の実施形態は、1つまたは複数のコンピュータプログラム、例えば、データ処理装置による実行のために、またはその動作を制御するためにコンピュータプログラムキャリアに符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装できる。例えば、コンピュータプログラムキャリアには、命令が符号化または記憶された1つまたは複数のコンピュータ可読記憶媒体を含むことができる。キャリアは、磁気、光磁気もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)または他の種類の媒体などの有形の非一時的コンピュータ可読媒体でよい。代替的に、または加えて、キャリアは、データ処理装置による実行のために適切な受信器装置に伝送するための情報を符号化するために発生される人工発生伝搬信号、例えば、機械発生電気、光または電磁信号でよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せである、またはその一部とすることができる。コンピュータ記憶媒体は伝搬信号ではない。
【０１１２】
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプトまたはコードとも称してまたは記載してよく、コンパイラ型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含め、任意の形式のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、エンジン、サブルーチン、または1つもしくは複数の場所にデータ通信ネットワークによって相互接続される1つもしくは複数のコンピュータを含んでよい計算環境での実行に適する他のユニットとしてを含め、任意の形式に展開できる。
【０１１３】
コンピュータプログラムは、ファイルシステムにおけるファイルに対応してよいが、しなくてもよい。コンピュータプログラムは、他のプログラムもしくはデータ、例えば、マークアップ言語文書に記憶される1つもしくは複数のスクリプトを保持するファイルの一部分に、当該プログラムに専用の単一のファイルに、または複数の連係ファイル、例えば、1つもしくは複数のモジュール、サブプログラムもしくはコードの一部分を記憶するファイルに記憶できる。
【０１１４】
コンピュータプログラムの実行のためのプロセッサには、例として、汎用および専用の両マイクロプロセッサ、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、プロセッサに結合される非一時的コンピュータ可読媒体から実行するためのコンピュータプログラムの命令の他にデータを受け取ることになる。
【０１１５】
用語「データ処理装置」は、例としてプログラマブルプロセッサ、コンピュータまたはマルチプロセッサもしくはコンピュータを含め、データを処理するための全ての種類の装置、デバイスおよび機械を包含する。データ処理装置は、専用論理回路網、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)またはGPU(グラフィック処理装置)を含むことができる。同装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを構成するコードも含むことができる。
【０１１６】
本明細書に記載されるプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行して、入力データを演算して出力を生成することによって動作を行う1つまたは複数のコンピュータまたはプロセッサによって行える。プロセスおよび論理フローは、専用論理回路網、例えば、FPGA、ASICもしくはGPUによっても、または専用論理回路網および1つもしくは複数のプログラムされたコンピュータの組合せによっても行える。
【０１１７】
コンピュータプログラムの実行に適するコンピュータは、汎用もしくは専用マイクロプロセッサもしくは両方、または任意の他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリまたは両方から命令およびデータを受け取ることになる。コンピュータの要素には、命令を実行するための中央処理装置ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含むことができる。中央処理装置およびメモリは、専用論理回路網によって補足、またはそれに統合できる。
【０１１８】
一般に、コンピュータは、1つまたは複数の記憶デバイスも含むか、または作動的に結合されてデータを受け取るもしくはデータを転送することになる。記憶デバイスは、例えば、磁気、光磁気もしくは光ディスク、ソリッドステートドライブ、または任意の他の種類の非一時的、コンピュータ可読媒体とすることができる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。したがって、コンピュータは、ローカルおよび/またはリモートである、1つまたは複数のメモリなどの、1つまたは複数の記憶デバイスに結合されてよい。例えば、コンピュータは、コンピュータの不可欠な部品である1つもしくは複数のローカルメモリを含むことができる、またはコンピュータは、クラウドネットワークにある1つもしくは複数のリモートメモリに結合できる。その上、コンピュータは、別のデバイス、例えば、いくつか挙げると、移動電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信器、またはポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込める。
【０１１９】
部品は、直接かまたは1つもしくは複数の中間部品を介してかのいずれかで、互いに電気的または光学的になど通信可能に接続されることによって互い「に結合」できる。部品の一方が他方へ統合されても、部品は互い「に結合」できる。例えば、プロセッサへ統合された記憶部品(例えば、L2キャッシュ部品)はプロセッサ「に結合」されている。
【０１２０】
ユーザとの対話を提供するために、本明細書に記載される対象の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、LCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を提供できる入力デバイス、例えば、キーボードおよびポインティングデバイス、例えば、マウス、トラックボールまたはタッチパッドを有するコンピュータに実装できる、またはそれと通信するように構成できる。ユーザとの対話を提供するために他の種類のデバイスも使用でき、例えば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバックとすることができ、ユーザからの入力は、音響、音声または触覚入力を含め、任意の形態で受け取れる。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、かつそれから文書を受信することによって、例えば、ユーザのデバイス上のウェブブラウザから受信される要求に応じてウェブブラウザにウェブページを送信することによって、またはユーザデバイス、例えば、スマートフォンもしくは電子タブレット上で実行するアプリと対話することによって、ユーザと対話できる。また、コンピュータは、パーソナルデバイス、例えば、メッセージングアプリケーションを実行しているスマートフォンにテキストメッセージまたは他の形式のメッセージを送信し、折り返しユーザから応答メッセージを受信することによって、ユーザと対話できる。
【０１２１】
本明細書は、システム、装置およびコンピュータプログラム部品に関して用語「ように構成される」を使用する。1つまたは複数のコンピュータのシステムが特定の動作または行為を行うように構成されることは、システムが自らに、動作に際してシステムに同動作または行為を行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしたことを意味する。1つまたは複数のコンピュータプログラムが特定の動作または行為を行うように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に同動作または行為を行わせる命令を含むことを意味する。専用論理回路網が特定の動作または行為を行うように構成されることは、回路網が同動作または行為を行う電子論理を有することを意味する。
【０１２２】
本明細書が多くの具体的な実施詳細を含むが、これらは、請求項自体によって定められる、特許請求されるものの範囲への限定としてではなく、むしろ特定の実施形態に固有であり得る特徴の記述として解釈されるべきである。別々の実施形態の文脈で本明細書に記載される或る特徴が、組合せて単一の実施形態でも実現できる。反対に、単一の実施形態の文脈で記載される様々な特徴が、別々に複数の実施形態でも、または任意の適切な下位組合せでも実現できる。その上、特徴が或る組合せで作用すると上記され、しかも当初そのように特許請求され得るが、特許請求された組合せからの1つまたは複数の特徴が一部の場合に同組合せから削除でき、請求項は下位組合せまたは下位組合せの変形とされ得る。
【０１２３】
同様に、動作が特定の順に図面に描かれかつ請求項に列挙されるが、これは、望ましい結果を達成するために、そのような動作が図示される特定の順にもしくは順番に行われること、または全ての例示された動作が行われることを必要とすると理解されるべきではない。或る状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記した実施形態における様々なシステムモジュールおよび部品の分離は、全ての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されたプログラム部品およびシステムが一般に単一のソフトウェア製品に共に統合できるまたは複数のソフトウェア製品へ実装できることが理解されるべきである。
【０１２４】
本対象の特定の実施形態が記載された。他の実施形態は以下の請求項の範囲内である。例えば、請求項に列挙される行為は異なる順に行え、それでも望ましい結果を達成できる。一例として、添付図に描かれるプロセスは、望ましい結果を達成するために、必ずしも図示される特定の順または順番を必要とするわけではない。いくつかの場合において、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【０１２５】
100  環境
102  コンソーシアムブロックチェーンネットワーク
106  計算装置
108  計算装置
110  ネットワーク
200  概念アーキテクチャ
202  参加者システム
204  参加者システム
206  参加者システム
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
216'  ブロックチェーンのコピー
216''  ブロックチェーンのコピー
216'''  ブロックチェーンのコピー
300  ブロックチェーントランザクション実行シナリオ
305  ユーザ
310  スマートコントラクト事前実行段階
315  データ記憶検証段階
320  デジタルウォレット
324  ソフトウェア開発キット(SDK)呼出し
326  ブロックチェーントランザクション
400  従来の実行シナリオ
405  ユーザ
410  スマートコントラクト事前実行段階
415  コンセンサスソーティング段階
420  データ記憶検証段階
422  デジタルウォレット
424  並列ブロックチェーントランザクション
426  並列ブロックチェーントランザクション
428  読み書きセット
430  読み書きセット
436  第1のトランザクション
438  第2のトランザクション
500  実行シナリオ
505  ユーザ
510  スマートコントラクト事前実行段階
515  コンセンサスソーティング段階
520  データ記憶検証段階
522  デジタルウォレット
524  並列ブロックチェーントランザクション
526  並列ブロックチェーントランザクション
528  特殊命令
530  特殊命令
536  第1のトランザクション
538  第2のトランザクション
700  機器
702  受信モジュール
704  事前実行モジュール
706  送信モジュール
【図１】
0006941691.tif 000002
【図２】
0006941691.tif 000003
【図３】
0006941691.tif 000004
【図４】
0006941691.tif 000005
【図５】
0006941691.tif 000006
【図６】
0006941691.tif 000007
【図７】
0006941691.tif 000008