IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスド ニュー テクノロジーズ カンパニー リミテッドの特許一覧

特許7012730スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行
<>
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図1
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図2
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図3
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図4A
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図4B
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図5
  • 特許-スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-20
(45)【発行日】2022-01-28
(54)【発明の名称】スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行
(51)【国際特許分類】
   G06F 9/46 20060101AFI20220121BHJP
   G06F 9/48 20060101ALI20220121BHJP
   H04L 9/32 20060101ALI20220121BHJP
【FI】
G06F9/46 430
G06F9/48 300H
H04L9/32 200Z
【請求項の数】 18
(21)【出願番号】P 2019542663
(86)(22)【出願日】2018-12-28
(65)【公表番号】
(43)【公表日】2020-06-25
(86)【国際出願番号】 CN2018124873
(87)【国際公開番号】W WO2019072305
(87)【国際公開日】2019-04-18
【審査請求日】2019-09-26
(73)【特許権者】
【識別番号】520015461
【氏名又は名称】アドバンスド ニュー テクノロジーズ カンパニー リミテッド
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【弁理士】
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ニン・シャ
(72)【発明者】
【氏名】グイル・シェ
(72)【発明者】
【氏名】フシ・デン
【審査官】井上 宏一
(56)【参考文献】
【文献】カナダ国特許出願公開第03054813(CA,A1)
【文献】国際公開第2018/157778(WO,A1)
【文献】米国特許出願公開第2018/0191714(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおけるトランザクションの並列実行のためのコンピュータ実装方法であって、
ブロックチェーンにおいて実行されるべき複数のトランザクションを識別するステップであり、前記複数のトランザクションが実行順序で配置され、前記複数のトランザクションが、1つまたは複数のスマートコントラクトへの1つまたは複数のスマートコントラクトコールを含み、前記1つまたは複数のスマートコントラクトコールの各々が、前記1つまたは複数のスマートコントラクトコールの各々によって呼び出されるそれぞれのスマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストに関連し、前記実行順序は、前記識別された複数のトランザクションの後に、ホワイトリストに関連付けられていないスマートコントラクトへのスマートコントラクトコールを含む、ステップと、
前記複数のトランザクション内のトランザクションのグループを識別するステップであり、各グループ内の前記トランザクションが、前記ブロックチェーンネットワーク内の特定のアカウントセットに関連、前記1つまたは複数のスマートコントラクトコールの各々に関連付けられた前記特定のアカウントセットが、前記1つまたは複数のスマートコントラクトコールに関連付けられた前記ホワイトリストに基づ、ステップと、
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示するステップであり、トランザクションの各グループを実行することが、前記グループ内の前記トランザクションを連続的に、前記実行順序に従って実行することを含む、ステップと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したと判定するステップと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、ホワイトリストに関連付けられていない前記スマートコントラクトコールを実行するよう指示するステップであって、ホワイトリストに関連しない前記スマートコントラクトコールが、すべてのトランザクションの前記グループの並列実行が収束する同期ポイントを表す、ステップと
を含むコンピュータ実装方法。
【請求項2】
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示するステップが、ノードの第1のセットに、トランザクションの第1のグループを実行するよう指示し、ノードの前記第1のセットに、トランザクションの第2のグループを実行するよう指示するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したと判定するステップが、前記複数のトランザクションのすべてのトランザクションが、前記ブロックチェーンネットワークによって維持される前記ブロックチェーンに記憶された1つまたは複数のブロックに含まれていると判定するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示するステップが、ネットワークを介して前記ノードにメッセージを送信するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記ブロックチェーンにおいて実行されるべき前記複数のトランザクションを識別するステップが、前記ブロックチェーンネットワークにブロードキャストされたトランザクションを受信するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記ホワイトリストが、各スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記ホワイトリストが、各スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記ホワイトリストが、各スマートコントラクトへのアクセスが許可されている前記1つまたは複数のアカウントの識別情報を含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
1つまたは複数のコンピュータに結合された非一時的コンピュータ可読記憶媒体であって、
ブロックチェーンにおいて実行されるべき複数のトランザクションを識別することであり、前記複数のトランザクションが実行順序で配置され、1つまたは複数のスマートコントラクトへの1つまたは複数のスマートコントラクトコールを含み、前記1つまたは複数のスマートコントラクトコールの各々が、前記1つまたは複数のスマートコントラクトコールの各々によって呼び出されるそれぞれのスマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストに関連し、前記実行順序は、前記識別された複数のトランザクションの後に、ホワイトリストに関連付けられていないスマートコントラクトへのスマートコントラクトコールを含む、識別することと、
前記複数のトランザクション内のトランザクションのグループを識別することであり、各グループ内の前記トランザクションが、ブロックチェーンネットワーク内の特定のアカウントセットに関連、前記1つまたは複数のスマートコントラクトコールの各々に関連付けられた前記特定のアカウントセットが、前記1つまたは複数のスマートコントラクトコールに関連付けられた前記ホワイトリストに基づ、識別することと、
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示することであり、トランザクションの各グループを実行することが、前記グループ内の前記トランザクションを連続的に、前記実行順序に従って実行することを含む、指示することと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したと判定することと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、ホワイトリストに関連付けられていない前記スマートコントラクトコールを実行するよう指示することであって、ホワイトリストに関連しない前記スマートコントラクトコールが、すべてのトランザクションの前記グループの並列実行が収束する同期ポイントを表す、ことと
を行うための、前記1つまたは複数のコンピュータによって実行可能な命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項10】
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示することが、ノードの第1のセットに、トランザクションの第1のグループを実行するよう指示し、ノードの前記第1のセットに、トランザクションの第2のグループを実行するよう指示することを含む、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項11】
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したと判定することが、前記複数のトランザクションのすべてのトランザクションが、前記ブロックチェーンネットワークによって維持される前記ブロックチェーンに記憶された1つまたは複数のブロックに含まれていると判定することを含む、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示することが、ネットワークを介して前記ノードにメッセージを送信することを含む、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記ブロックチェーンにおいて実行されるべき前記複数のトランザクションを識別することが、前記ブロックチェーンネットワークにブロードキャストされたトランザクションを受信することを含む、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記ホワイトリストが、各スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記ホワイトリストが、各スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記ホワイトリストが、各スマートコントラクトへのアクセスが許可されている前記1つまたは複数のアカウントの識別情報を含む、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合された1つまたは複数のコンピュータ可読メモリであって、
ブロックチェーンにおいて実行されるべき複数のトランザクションを識別することであり、前記複数のトランザクションが実行順序で配置され、1つまたは複数のスマートコントラクトへの1つまたは複数のスマートコントラクトコールを含み、前記1つまたは複数のスマートコントラクトコールの各々が、前記1つまたは複数のスマートコントラクトコールの各々によって呼び出されるそれぞれのスマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストに関連し、前記実行順序は、前記識別された複数のトランザクションの後に、ホワイトリストに関連付けられていないスマートコントラクトへのスマートコントラクトコールを含む、識別することと、
前記複数のトランザクション内のトランザクションのグループを識別することであり、各グループ内の前記トランザクションが、ブロックチェーンネットワーク内の特定のアカウントセットに関連、前記1つまたは複数のスマートコントラクトコールの各々に関連付けられた前記特定のアカウントセットが、前記1つまたは複数のスマートコントラクトコールに関連付けられた前記ホワイトリストに基づ、識別することと、
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示することであり、トランザクションの各グループを実行することが、前記グループ内の前記トランザクションを連続的に、前記実行順序に従って実行することを含む、指示することと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したと判定することと、
前記ブロックチェーンネットワークの前記ノードがトランザクションの前記グループのすべての実行を完了したとの判定に応答して、前記ブロックチェーンネットワークの前記ノードに、ホワイトリストに関連付けられていない前記スマートコントラクトコールを実行するよう指示することであって、ホワイトリストに関連しない前記スマートコントラクトコールが、すべてのトランザクションの前記グループの並列実行が収束する同期ポイントを表す、ことと
を行うための、前記1つまたは複数のコンピュータによって実行可能な命令を記憶した1つまたは複数のコンピュータ可読メモリと
を含むコンピュータ実装システム。
【請求項18】
前記ブロックチェーンネットワークのノードに、トランザクションの前記グループの各々を並列に実行するよう指示することが、ノードの第1のセットに、トランザクションの第1のグループを実行するよう指示し、ノードの前記第1のセットに、トランザクションの第2のグループを実行するよう指示することを含む、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スマートコントラクトホワイトリストに基づくブロックチェーンネットワークにおけるトランザクションの並列実行に関する。
【背景技術】
【0002】
コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散型台帳システム(Distributed ledger system: DLS)によって、参加しているエンティティは安全かつ不変にデータを記憶できる。DLSは、一般に、任意の特定のユーザ事例を参照せずにブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例には、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティの選択グループに提供され、アクセス制御層を含む。
【0003】
スマートコントラクトは、ブロックチェーンネットワークによって記憶され、実行される実行可能ソフトウェア命令のセットである。スマートコントラクトは、一般に、暗号化されずに記憶され、したがって、ブロックチェーンネットワークにおけるすべての参加者が見ることができる。ブロックチェーンネットワークの参加者は、独自のスマートコントラクトを書き、公開することができ、また、一般に、ブロックチェーンネットワークにすでに展開されている(deploy)スマートコントラクトを呼び出すこともできる。
【0004】
ブロックチェーンネットワークで遭遇する1つの問題は、トランザクション(スマートコントラクトコールを含む)が処理される速度である。一般に、ブロックチェーンネットワーク内のノードは、サブミットされた順に連続的にトランザクションを処理する。これによって、トランザクションのスループットが低下し、トランザクションがサブミットされてからクリアされるまでの間の遅延が発生する可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ブロックチェーンネットワークにおけるこれらのトランザクション性能の問題に対処する技法が有利であろう。
【課題を解決するための手段】
【0006】
本明細書の実装形態は、スマートコントラクトホワイトリストに基づいたブロックチェーンネットワークにおけるトランザクションの並列実行のためのコンピュータ実装方法を含む。より具体的には、本明細書の実装形態は、共有の依存関係を有するトランザクションのグループおよびスマートコントラクトコールを他のグループと並列に実行するための技法を対象とする。
【0007】
いくつかの実装形態では、アクションは、ブロックチェーンにおいて実行されるべき複数のトランザクションを識別することであり、トランザクションは実行順序で配置され(arrange)、トランザクションは、スマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストを各々が有している、スマートコントラクトへの1つまたは複数のスマートコントラクトコールを含み、実行順序は、複数のトランザクションの後に配置されたホワイトリストを有しないスマートコントラクトへのスマートコントラクトコールを含む、識別することと、複数のトランザクション内のトランザクションのグループを識別することであり、各グループ内のトランザクションは、ブロックチェーンネットワーク内の特定のアカウントセットに関連付けられ、1つまたは複数のスマートコントラクトコールの各々に関連付けられた特定のアカウントセットは、スマートコントラクトコールに関連付けられたホワイトリストに基づいて決定される、識別することと、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示することであり、トランザクションの各グループを実行することは、グループ内のトランザクションを連続的に、実行順序に従って実行することを含む、指示することと、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したと判定することと、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードに、ホワイトリストを含まないスマートコントラクトコールを実行するよう指示することとを含む。他の実装形態は、コンピュータ記憶デバイス上に符号化された方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。
【0008】
これらおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を随意に含んでいてもよい。
【0009】
いくつかの場合には、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示することは、ノードの第1のセットに、トランザクションの第1のグループを実行するよう指示し、ノードの第1のセットに、トランザクションの第2のグループを実行するよう指示することを含む。
【0010】
いくつかの実装形態では、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したと判定することは、複数のトランザクションのすべてのトランザクションが、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶された1つまたは複数のブロックに含まれていると判定することを含む。
【0011】
いくつかの場合には、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示することは、ネットワークを介してノードにメッセージを送信することを含む。
【0012】
いくつかの場合には、ブロックチェーンにおいて実行されるべき複数のトランザクションを識別することは、ブロックチェーンネットワークにブロードキャストされたトランザクションを受信することを含む。
【0013】
いくつかの実装形態では、ホワイトリストは、各スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる。
【0014】
いくつかの場合には、ホワイトリストは、各スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものである。
【0015】
いくつかの実装形態では、ホワイトリストは、各スマートコントラクトへのアクセスが許可されている1つまたは複数のアカウントの識別情報(identification)を含む。
【0016】
いくつかの場合には、ホワイトリストは、各スマートコントラクトへのアクセスが許可されている1つまたは複数を記憶する各スマートコントラクトの外部の場所への参照を含む。
【0017】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【0018】
本明細書は、本明細書で提供される方法を実施するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【0019】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含む場合があることが諒解される。すなわち、本明細書による方法は、本明細書で具体的に説明した態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【0020】
本明細書の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載されている。本明細書の他の特徴および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0021】
図1】本明細書の実装形態を実行するために使用できる環境の一例を示す図である。
図2】本明細書の実装形態による概念的アーキテクチャの一例を示す図である。
図3】本明細書の実装形態によるスマートコントラクトホワイトリストを可能にするための環境の一例を示す図である。
図4A】本明細書の実装形態によるブロックチェーンネットワークにおけるトランザクションの実行順序の一例を示す図である。
図4B】本明細書の実装形態によるブロックチェーンネットワークにおけるトランザクションの並列実行順序の一例を示す図である。
図5】本明細書の実装形態に従って実行できるプロセスの一例を示す図である。
図6】本明細書の実装形態による装置のモジュールの一例を示す図である。
【発明を実施するための形態】
【0022】
様々な図面における同様の参照符号は、同様の要素を示す。
【0023】
本明細書の実装形態は、スマートコントラクトのアカウントホワイトリストを実施するためのコンピュータ実装方法を含む。より具体的には、本明細書の実装形態は、スマートコントラクトの作成者が、どのアカウントがスマートコントラクトを呼び出すことができるかを指定するホワイトリストを定義できるようにするための技法を対象とする。
【0024】
本明細書の実装形態のさらなる内容を提供するために、また上記で紹介したように、コンセンサスネットワーク(たとえば、ピアツーピアノードで構成される)およびブロックチェーンネットワークとも呼ばれる分散型台帳システム(DLS)によって、参加しているエンティティは、安全かつ不変にトランザクションを実行し、データを記憶できる。ブロックチェーンという用語は、本明細書では、任意の特定の使用事例を参照せずにDLSを一般的に指すために使用される。
【0025】
ブロックチェーンは、トランザクションが不変であり、その後検証できるようにトランザクションを記憶するデータ構造である。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号化ハッシュを含めることによって、チェーン内のその直前の前のブロックにリンクされる。各ブロックは、タイムスタンプ、それ自体の暗号化ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシュされ、マークルツリーに符号化される。マークルツリーは、ツリーのリーフノードのデータがハッシュされ、ツリーの各ブランチのすべてのハッシュがブランチのルートで連結されるデータ構造である。このプロセスは、ツリーをツリー全体のルートまで続け、これは、ツリー内のすべてのデータを表すハッシュを記憶する。ツリーに記憶されているトランザクションのものであるとされるハッシュは、ツリーの構造と一致しているかどうかを判定することによって、迅速に検証できる。
【0026】
ブロックチェーンは、トランザクションを記憶するためのデータ構造であるのに対して、ブロックチェーンネットワークは、1つまたは複数のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供できる。
【0027】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンネットワークにおいて協働し、各々がパブリックブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、パブリックブロックチェーンネットワークは、参加しているエンティティに対するパブリックネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加されるために、エンティティ(ノード)の大部分がすべてのブロックに署名しなければならない。例示的なパブリックブロックチェーンネットワークには、ブロックチェーンと呼ばれる分散型台帳を活用する特定のピアツーピア決済ネットワークがある。しかしながら、上記のように、ブロックチェーンという用語は、任意の特定のブロックチェーンネットワークを特に参照せずに分散型台帳を一般的に指すために使用される。
【0028】
一般に、コンソーシアムブロックチェーンネットワークは、参加しているエンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、認可されたノードのセットによって制御され、1つまたは複数のノードはそれぞれのエンティティ(たとえば、金融機関、保険会社など)によって動作される。たとえば、10のエンティティ(たとえば、金融機関、保険会社など)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを動作させることができ、その各々は、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、コンソーシアムブロックチェーンネットワークは、参加しているエンティティに対してプライベートネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、各エンティティ(ノード)がすべてのブロックに署名しなければならない。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、少なくともエンティティ(ノード)のサブセット(たとえば、少なくとも7つのエンティティ)がすべてのブロックに署名しなければならない。
【0029】
本明細書の実装形態は、任意の適切なタイプのブロックチェーンネットワークで実現できると企図される。
【0030】
本明細書の実装形態は、上記の文脈を考慮して本明細書でさらに詳細に説明される。より具体的には、上記で紹介したように、本明細書の実装形態は、スマートコントラクトの作成者が、どのアカウントがスマートコントラクトを呼び出すことができるかを指定するホワイトリストを定義できるようにするための技法を対象とする。
【0031】
一般に、スマートコントラクトは、ブロックチェーンに記憶され、ブロックチェーンネットワークのノードによって実行される1つまたは複数のコンピュータ命令のセットである。スマートコントラクトのコードは、一般に、ブロックチェーンネットワークのノード(バイトコードなど)によって実行可能な形式に変換され、バイトコード自体またはスマートコントラクトバイトコードを取り出すように構成されたバイトコードがブロックチェーンに記憶される。次いで、スマートコントラクトコードで定義された関数は、ブロックチェーンネットワークの参加者によって呼び出すことができ、それによって、ノードは呼び出された関数の命令を実行する。
【0032】
本明細書は、スマートコントラクトの作成者が、スマートコントラクトの呼出しを許可されたブロックチェーンネットワーク内のアカウントのリスト(ホワイトリスト)を指定することを可能にする技法を記載する。ブロックチェーンネットワークの参加者が、ブロックチェーンネットワークによって管理されているブロックチェーンに展開されたスマートコントラクトを呼び出すと、参加者は、呼出しの一部としてアカウントを提供する。ブロックチェーンネットワークは、参加者のアカウントについてスマートコントラクトに関連付けられたホワイトリストをチェックする。参加者のアカウントがホワイトリスト内にある場合、ブロックチェーンネットワークは、スマートコントラクトコールを実行する。参加者のアカウントがホワイトリスト内にない場合、ブロックチェーンネットワークは、スマートコントラクトコールを実行しない。ブロックチェーンネットワークは、参加者がスマートコントラクトにアクセスできなかった記録を記憶してもよい。
【0033】
本明細書の実装形態は、共有の依存関係を有するトランザクションのグループ(スマートコントラクトコールを含む)を他のグループと並列に実行することを対象とする。スマートコントラクトコールによって影響を受けるアカウントは、スマートコントラクトに関連付けられたホワイトリストに基づいて決定できる。異なるグループにおけるトランザクションは互いに依存関係がない(たとえば、ブロックチェーンネットワーク内の同じアカウントに影響を与えない)ので、異なるグループにおけるトランザクションが互いに実行される順序は、ブロックチェーンネットワークの全体的な状態に影響しない。したがって、これらのトランザクションは並列に実行でき、このことは、ブロックチェーンネットワークにおけるトランザクションスループットの向上につながる可能性がある。
【0034】
図1は、本明細書の実装形態を実行するために使用できる環境100の一例を示す。いくつかの例では、環境100によって、エンティティは、ブロックチェーンネットワーク102に参加できる。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、ワイヤードおよび/またはワイヤレス通信リンクを介してアクセスできる。いくつかの例では、ネットワーク110は、ブロックチェーンネットワーク102との、およびブロックチェーンネットワーク102内の通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。いくつかの場合には、コンピューティングデバイス106、108は、クラウドコンピューティングシステム(図示せず)のノードとすることができ、または各コンピューティングデバイス106、108は、ネットワークによって相互接続され、分散処理システムとして機能する複数のコンピュータを含む別個のクラウドコンピューティングシステムとすることができる。
【0035】
図示された例では、コンピューティングシステム106、108は各々、ブロックチェーンネットワーク102へのノードとしての参加を可能にする任意の適切なコンピューティングシステムを含むことができる。コンピューティングデバイスの例には、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、スマートフォンがある。いくつかの例では、コンピューティングシステム106、108は、ブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(たとえば、他の参加者)とのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティ(たとえば、参加者A)のコンピュータ実装サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(たとえば、他の参加者)とのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティ(たとえば、参加者B)のコンピュータ実装サービスをホストすることができる。図1の例では、ブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、それぞれ、ブロックチェーンネットワーク102に参加する第1のエンティティおよび第2のエンティティのノードを提供する。
【0036】
図2は、本明細書の実装形態による概念的アーキテクチャ200の一例を示す。概念的アーキテクチャ200の例は、参加者A、参加者B、および参加者Cにそれぞれ対応する参加者システム202、204、206を含む。各参加者(たとえば、ユーザ、企業)は、複数のノード214を含むピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加し、その少なくとも一部は、ブロックチェーン216に情報を不変に記録する。単一のブロックチェーン216がブロックチェーンネットワーク212内に概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、本明細書でさらに詳細に説明されるように、ブロックチェーンネットワーク212にわたって維持される。
【0037】
図示された例では、各参加者システム202、204、206は、それぞれ参加者A、参加者B、および参加者Cによって、またはそれらに代わって提供され、ブロックチェーンネットワーク内のそれぞれのノード214として機能する。本明細書で使用されるように、ノードは一般に、ブロックチェーンネットワーク212に接続され、それぞれの参加者がブロックチェーンネットワークに参加することを可能にする個々のシステム(たとえば、コンピュータ、サーバ)を指す。図2の例では、参加者は、各ノード214に対応する。しかしながら、参加者は、ブロックチェーンネットワーク212内の複数のノード214を動作させることができ、および/または複数の参加者がノード214を共有できることが企図されている。いくつかの例では、参加者システム202、204、206は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、および/またはリモートプロシージャ呼出し(RPC)を使用して、ブロックチェーンネットワーク212と、またはそれを介して通信する。
【0038】
ノード214は、ブロックチェーンネットワーク212内で様々な参加度合いを有することができる。たとえば、いくつかのノード214は、コンセンサスプロセスに参加することができ(たとえば、ブロックチェーン216にブロックを追加するマインダノードとして)、他のノード214は、コンセンサスプロセスに参加しない。別の例として、いくつかのノード214は、ブロックチェーン216の完全なコピーを記憶し、他のノード214は、ブロックチェーン216の一部のコピーのみを記憶する。たとえば、データアクセス権限は、それぞれの参加者がそれぞれのシステム内に記憶するブロックチェーンデータを制限できる。図2の例では、参加者システム202、204、206は、ブロックチェーン216のそれぞれの完全なコピー216'、216''、216'''を記憶する。
【0039】
ブロックチェーン(たとえば、図2のブロックチェーン216)は、ブロックのチェーンから構成され、各ブロックはデータを記憶する。データの例には、2人以上の参加者間のトランザクションを表すトランザクションデータがある。本明細書ではトランザクションを非限定的な例として使用しているが、(たとえば、文書、画像、ビデオ、音声など)任意の適切なデータをブロックチェーンに記憶できることが企図される。トランザクションの例には、限定はしないが、価値のあるもの(資産、製品、サービスなど)の交換があり得る。トランザクションデータは、ブロックチェーン内に不変に記憶される。すなわち、トランザクションデータは変更できない。
【0040】
ブロックに記憶する前に、トランザクションデータはハッシュされる。ハッシングは、トランザクションデータ(文字列データとして提供される)を固定長のハッシュ値(同じく文字列データとして提供される)に変換するプロセスである。ハッシュ値をハッシュ解除してトランザクションデータを取得することはできない。ハッシングによって、トランザクションデータのわずかな変更でさえも、まったく異なるハッシュ値が得られる。さらに、上述のように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズに関係なく、ハッシュ値の長さは固定されている。ハッシングは、ハッシュ関数を介してトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の例には、限定はしないが、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256がある。
【0041】
複数のトランザクションのトランザクションデータはハッシュされ、ブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が提供され、それ自体がハッシュされて別のハッシュが提供される。このプロセスは、ブロックに記憶されるべきすべてのトランザクションについて、単一のハッシュ値が提供されるまで繰り返される。このハッシュ値は、マークルルートハッシュと呼ばれ、ブロックのヘッダに記憶される。トランザクションのうちのいずれかの変更によって、そのハッシュ値が変更され、最終的に、マークルルートハッシュが変更される。
【0042】
ブロックは、コンセンサスプロトコルを介してブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードはコンセンサスプロトコルに参加し、ブロックチェーンにブロックを追加するために競争する。そのようなノードは、マイナー(またはマイナーノード)と呼ばれる。上記で紹介したPOWは、非限定的な例として使用される。
【0043】
マイナーノードは、コンセンサスプロセスを実行して、ブロックチェーンにトランザクションを追加する。複数のマイナーノードがコンセンサスプロセスに参加するが、ブロックチェーンにブロックを書き込むことができるマイナーノードは1つのみである。すなわち、マイナーノードは、コンセンサスプロセスで競合して、ブロックチェーンにブロックを追加する。さらに具体的には、マイナーノードは、トランザクションプールから保留中のトランザクションを定期的に収集する(たとえば、もしあれば、ブロックに含めることができるトランザクションの数のあらかじめ定義された制限まで)。トランザクションプールは、ブロックチェーンネットワークの参加者からのトランザクションメッセージを含む。マイナーノードはブロックを構築し、ブロックにトランザクションを追加する。トランザクションをブロックに追加する前に、マイナーノードは、トランザクションのいずれかがブロックチェーンのブロックにすでに含まれているかどうかをチェックする。トランザクションが別のブロックにすでに含まれている場合、そのトランザクションは破棄される。
【0044】
マイナーノードは、ブロックヘッダを生成し、ブロック内のすべてのトランザクションをハッシュし、ハッシュ値をペアで組み合わせて、ブロック内のすべてのトランザクションについて単一のハッシュ値が提供されるまで、さらなるハッシュ値を生成する(マークルルートハッシュ)。このハッシュは、ブロックヘッダに追加される。マイナーは、ブロックチェーン内の最も最近のブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値も決定する。マイナーノードはまた、ナンス値およびタイムスタンプをブロックヘッダに追加する。マイニングプロセスでは、マイナーノードは、必要なパラメータを満たすハッシュ値を見つけようとする。マイナーノードは、必要なパラメータを満たすハッシュ値を見つけるまで、ナンス値を変更し続ける。
【0045】
ブロックチェーンネットワーク内のすべてのマイナーは、必要なパラメータを満たすハッシュ値を見つけようとし、このようにして、互いに競合する。最終的に、マイナーノードのうちの1つが、必要なパラメータを満たすハッシュ値を見つけ、これをブロックチェーンネットワーク内の他のすべてのマイナーノードに宣伝する。他のマイナーノードはハッシュ値を検証し、正しいと判定された場合、ブロック内の各トランザクションを検証し、ブロックを受け入れ、ブロックチェーンのコピーにブロックを追加する。このようにして、ブロックチェーンのグローバルな状態は、ブロックチェーンネットワーク内のすべてのマイナーノードにわたって一貫している。上記で説明したプロセスは、POWコンセンサスプロトコルである。
【0046】
非限定的な例は、図2を参照して提供される。この例では、参加者Aは参加者Bに金額を送信することを望む。参加者Aはトランザクションメッセージ(たとえば、From、To、およびValueフィールドを含む)を生成し、トランザクションメッセージをブロックチェーンネットワークに送信し、ブロックチェーンネットワークは、トランザクションメッセージをトランザクションプールに追加する。ブロックチェーンネットワーク内の各マイナーノードはブロックを作成し、トランザクションプールからすべてのトランザクションを取得し(たとえば、もしあれば、ブロックに追加できるトランザクションの数のあらかじめ定義された制限まで)、トランザクションをブロックに追加する。このようにして、参加者Aによって公開されたトランザクションがマイナーノードのブロックに追加される。
【0047】
いくつかのブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために、暗号化が実施される。たとえば、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を識別できないように、2つのノードがトランザクションをプライベートに保ちたい場合、ノードは、トランザクションデータを暗号化できる。暗号方法の例には、限定はしないが、対称暗号化、および非対称暗号化がある。対称暗号化とは、暗号化(プレーンテキストから暗号文を生成)と復号(暗号文からプレーンテキストを生成)の両方に単一のキーを使用する暗号化プロセスを指す。対称暗号化では、複数のノードが同じキーを利用可能であるため、各ノードは、トランザクションデータを暗号化/復号できる。
【0048】
非対称暗号化は、各々秘密鍵および公開鍵を含む鍵ペアを使用し、秘密鍵はそれぞれのノードのみに知られており、公開鍵はブロックチェーンネットワーク内の任意のまたはすべての他のノードに知られている。ノードは、別のノードの公開鍵を使用してデータを暗号化し、暗号化されたデータは、他のノードの秘密鍵を使用して復号できる。たとえば、再び図2を参照すると、参加者Aは、参加者Bの公開鍵を使用してデータを暗号化し、暗号化されたデータを参加者Bに送信できる。参加者Bは、その秘密鍵を使用して暗号化されたデータ(暗号文)を復号し、元のデータ(プレーンテキスト)を抽出することができる。ノードの公開キーで暗号化されたメッセージは、ノードの秘密鍵を使用してのみ復号できる。
【0049】
非対称暗号化は、デジタル署名を提供するために使用され、トランザクションの参加者がトランザクションの他の参加者、およびトランザクションの有効性を確認できるようにする。たとえば、ノードは、メッセージにデジタル署名することができ、別のノードは、参加者Aのデジタル署名に基づいて、ノードによってメッセージが送信されたことを確認できる。デジタル署名を使用して、伝送途中にメッセージが改ざんされないようにすることもできる。たとえば、再び図2を参照すると、参加者Aは、メッセージを参加者Bに送信する。参加者Aはメッセージのハッシュを生成し、次いで、その秘密鍵を使用して、ハッシュを暗号化して、暗号化ハッシュとしてデジタル署名を提供する。参加者Aは、デジタル署名をメッセージに追加し、デジタル署名付きのメッセージを参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。参加者Bは、メッセージをハッシュし、ハッシュを比較する。ハッシュが同じ場合、参加者Bは、メッセージが実際に参加者Aからのものであり、改ざんされていないことを確認できる。
【0050】
図3は、本明細書の実装形態によるスマートコントラクトホワイトリストを可能にするための環境300の一例を示す。図示のように、スマートコントラクト302は、図2のブロックチェーンネットワーク212のブロックチェーン216に記憶される。スマートコントラクト302は、命令304およびホワイトリスト306を含む。ホワイトリスト306は、1つまたは複数のアカウント308を含む。
【0051】
上記で説明したように、スマートコントラクト302は、ブロックチェーン216に記憶される。ブロックチェーンネットワーク212の参加者は、スマートコントラクト302を呼び出すことができ、これによって、ブロックチェーンネットワーク212のノード214に命令304を実行させることができる。いくつかの実装形態では、ブロックチェーンネットワークのノード214は、スマートコントラクトの呼出し側によって指定されたアカウントがホワイトリスト306によって指定された1つまたは複数のアカウント308に含まれているかどうかをチェックする。アカウントがホワイトリスト306にある場合、ノード214は命令304を実行する。アカウントがホワイトリスト306にない場合、ノード214は命令304を実行しない。
【0052】
いくつかの実装形態では、命令304は、たとえば、Solidity、Serpent、LLL、Viper、Mutan、C、C++、Python、Java(登録商標)、Javascript、または他のプログラミング言語など、ブロックチェーンネットワーク212のノード214によってサポートされる高水準プログラミング言語で書かれたソフトウェアコードとすることができる。命令304は、スマートコントラクト302に関連付けられたソフトウェアコードから生成されたコンパイル済みバイトコードであってもよい。
【0053】
いくつかの実装形態では、ホワイトリスト306およびアカウント308は、スマートコントラクト302とともにブロックチェーン216に記憶される。いくつかの場合には、ホワイトリスト306およびアカウント308は、スマートコントラクト302の命令304内に含まれる。たとえば、ホワイトリスト306は、プリプロセッサ命令または特別にフォーマットされたコメントなどの命令304内の指示文に含まれてもよい。ホワイトリスト306は、関数デコレータなど、スマートコントラクトをオーサリングするために使用されるプログラミング言語に固有の構成体を使用して含まれてもよい。ホワイトリスト306は、命令304内の実行可能命令で指定されてもよい。いくつかの実装形態では、ノード214が命令304を実行する前にホワイトリスト306が検査される。ホワイトリスト306が実行可能命令に含まれるときなど、いくつかの場合、ノード214は、ホワイトリスト306を評価する前に命令304の実行を開始してもよい。たとえば、スマートコントラクト302は、呼出し側のアカウントをパラメータとして受け取り、呼出し側がホワイトリスト306に基づいてスマートコントラクトを呼び出すことを許可されていることを検証する命令304で定義されたプライベート関数を含むことができる。そのような関数は、スマートコントラクト302が実行されると自動的に呼び出され、呼出し側のアカウントがコントラクトの実行を許可されていない場合、スマートコントラクト302は単に終了することができる。いくつかの場合には、スマートコントラクト302を実行しているノード214は、ホワイトリスト306をチェックするためにプライベート関数を呼び出し、プライベート関数への呼出しが、呼出し側のアカウントがスマートコントラクト302を実行することを許可されていることを示す場合にのみ、スマートコントラクト302のメイン関数を実行できる。
【0054】
図4Aは、本明細書の実装形態によるブロックチェーンネットワークにおけるトランザクションの実行順序400の一例を示す。図示のように、実行順序400は、ブロックチェーンネットワークのノードによって実行されるべき順序に従って順序付けられた複数のトランザクション(405、410、415、420)を含む。トランザクション405a、405b、および405cは、スマートコントラクトの呼出しである。スマートコントラクトコールに加えて、実行順序400は、たとえば同じアカウントに影響を与えるなど、共通の依存関係(クロスハッチングで示す)を共有するトランザクションの複数のグループを含む。スマートコントラクトコール405aおよび405bは、スマートコントラクトを実行でき、したがって、スマートコントラクトによって状態を変更できるアカウントを定義するそれぞれのホワイトリストの内容に基づいて他のトランザクションとグループ化される。下記のように、トランザクションの各グループは、本明細書の実装形態に従ってブロックチェーンネットワークのノードによって並列に実行できる。
【0055】
図4Bは、本明細書の実装形態によるブロックチェーンネットワークにおけるトランザクションの並列実行順序450の一例を示す。図示のように、並列実行順序450では、トランザクションのグループ455、460、および465が識別されている。図4Bに示し、上記で説明したように、ブロックチェーンネットワークのノードは、トランザクションのグループを並列に実行できる。いくつかの場合には、グループ内のすべてのトランザクションが共通の依存関係を共有し、したがって、元の実行順序に従って順次実行される。これによって、ブロックチェーンネットワークの状態(たとえば、勘定残高)が、図4Aの実行順序400に従ってトランザクションを実行した後のように、並列実行順序450に従ってトランザクションを実行した結果と確実に同じになる。
【0056】
図4Bのトランザクションのいずれかを実行する前に、アカウントAの残高が0ドルであり、トランザクション410aは、アカウントBからアカウントAへの400ドルの額の支払いを表し、トランザクション410bは、アカウントAからアカウントCへの50ドルの支払いを表す例を考える。トランザクション410aおよび410bが連続して実行される場合(最初に実行順序400で説明したように)、アカウントAには、最初に400ドルが振り込まれ、次いで、50ドルが引き落とされ、250ドルの残高が残る。しかしながら、トランザクション410aと410bが連続して実行されず、410aの前にトランザクション410bが実行される場合、トランザクション410bの支払いが実行されると、アカウントAの残高は0ドルになる。このシナリオでは、アカウントAは、支払いを行うのに十分な残高がなく、これによって、トランザクション410bがブロックチェーンネットワークによって拒否される可能性がある。
【0057】
この例に基づいて、トランザクション420aがアカウントDからアカウントEへの100ドルの支払いを表す場合を考える。トランザクション420aの影響を受けるアカウント(アカウントDおよびE)は、トランザクション410aおよび410b(アカウントA、B、およびC)の影響を受けるアカウントを含まないので、トランザクション420aは、トランザクション410aおよび410bと共通の依存関係を持たない。したがって、トランザクション420aは、トランザクション410aおよび410bと並列に実行できる。
【0058】
スマートコントラクトコール(405a~cなど)は、スマートコントラクトの実行が影響するアカウントがスマートコントラクト自体に基づいて決定できない可能性があるという点で、他のタイプのトランザクションとは異なる。スマートコントラクトは、ブロックチェーンネットワーク内の任意の参加者によって呼び出すことができる実行可能なソフトウェアプログラムであるので、理論的には、ブロックチェーンネットワークにおける任意のアカウントに影響を与える可能性がある。しかしながら、上記で説明したホワイトリストを追加すると、特定のスマートコントラクトが影響を与える可能性のあるアカウントを決定できる。ホワイトリスト内のアカウントのみがスマートコントラクトを実行できるので、それらのアカウントのみが、スマートコントラクトの実行によって状態(残高など)が変更される可能性を有する。したがって、ホワイトリストによって、同じアカウントに影響する他のトランザクションとともに、ブロックチェーンネットワークにおいて並列に実行するために、スマートコントラクトコールをグループ化できる。
【0059】
いくつかの実装形態では、連続して実行されるべきトランザクションを一緒にグループ化することができる。たとえば、図4Bに示すように、トランザクション410a~bおよびスマートコントラクトコール405bは、455にグループ化され、トランザクション415a~eは、460にグループ化され、トランザクション420a~cおよびスマートコントラクトコール405aは、465にグループ化される。グループ455、460、465の各々は、ブロックチェーンネットワークのノードによって並列に実行できる。トランザクショングループ455、460、および465を並列に実行すると、すべてのトランザクションが連続して実行された場合にただ1つではなく、ネットワークが一度に3つのトランザクションを並列に実行しているので、ブロックチェーンネットワークにおけるトランザクションスループットが向上する可能性がある。
【0060】
いくつかの実装形態では、スマートコントラクトがホワイトリストを含まない場合、ブロックチェーンネットワーク内の任意のアカウントがスマートコントラクトを実行できる。スマートコントラクトコール405cは、ホワイトリストを指定しないスマートコントラクトコールである。スマートコントラクトコール405cは、ブロックチェーンネットワークにおける任意のアカウントによって実行できるので、他のトランザクションと並列に実行できない。コントラクトコール405cは、並列実行が収束する同期ポイントを表す。コントラクトコールは、スマートコントラクトを構成する命令の実行につながるので、特定のコントラクトコールが影響するアカウントの範囲を決定することができない場合がある。たとえば、特定のアカウントおよび支払い金額をパラメータとして受け取り、何らかの条件が当てはまる場合に特定のアカウントに支払い金額を適用する単純なスマートコントラクトを考える。このスマートコントラクトの呼出し側は、スマートコントラクトが呼び出されるときに特定のアカウントを指定するので、スマートコントラクト自体(すなわち、ソースコード)の定義から、スマートコントラクトへの特定の呼出しが影響するアカウントを判定することはできない。このために、いくつかの実装形態では、コントラクトコールは、ブロックチェーンネットワーク内のすべてのアカウントに影響を与える可能性があるトランザクションと見なすことができ、したがって、他のトランザクションと並列に実行することができない。したがって、並列実行順序450は、コントラクトコール405cに到達すると収束する。たとえば、図示のように、グループ455、460、および465は、コントラクトコール405cに到達するまで並列に実行される。この時点で、ブロックチェーンネットワークは、グループ455、460、および465におけるすべてのトランザクションが実行を完了するまで待ち、次いで、スマートコントラクトコール405cの実行に進む。
【0061】
図5は、本明細書の実装形態に従って実行できるプロセス500の一例を示す。いくつかの実装形態では、プロセス500は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行されてもよい。
【0062】
502で、ブロックチェーンで実行されるべき複数のトランザクションが識別される。トランザクションは実行順序で配列され、スマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストを各々が有している、スマートコントラクトへの1つまたは複数のスマートコントラクトコールを含んでいてもよい。実行順序は、複数のトランザクションの後に配置されたホワイトリストを有しないスマートコントラクトへのスマートコントラクトコールを含む。いくつかの場合には、ブロックチェーンにおいて実行されるべき複数のトランザクションを識別することは、ブロックチェーンネットワークにブロードキャストされたトランザクションを受信することを含む。いくつかの実装形態では、各スマートコントラクトのホワイトリストは、各スマートコントラクトに関連付けられた実行可能な命令のセット内に含まれる。ホワイトリストは、各スマートコントラクトに関連付けられた実行可能な命令のセットとは別個のものでもよい。ホワイトリストは、各スマートコントラクトへのアクセスが許可されている1つまたは複数のアカウントの識別情報を含むことができる。いくつかの場合には、ホワイトリストは、各スマートコントラクトへのアクセスが許可されている1つまたは複数を記憶する各スマートコントラクトの外部の場所への参照を含む。
【0063】
504で、複数のトランザクション内でトランザクションのグループが識別され、各グループ内のトランザクションは、ブロックチェーンネットワーク内の特定のアカウントセットに関連付けられ、1つまたは複数のスマートコントラクトコールの各々に関連付けられた特定のアカウントセットは、スマートコントラクトコールに関連付けられたホワイトリストに基づいて決定される。
【0064】
506で、ブロックチェーンネットワークのノードが、トランザクションのグループの各々を並列に実行するよう指示され、トランザクションの各グループを実行することは、グループ内のトランザクションを連続的に、実行順序に従って実行することを含む。いくつかの場合には、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示することは、ノードの第1のセットに、トランザクションの第1のグループを実行するよう指示し、ノードの第1のセットに、トランザクションの第2のグループを実行するよう指示することを含む。いくつかの場合には、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示することは、ネットワークを介してノードにメッセージを送信することを含む。
【0065】
508で、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したとの判定が行われる。いくつかの場合には、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したと判定することは、複数のトランザクションにおけるすべてのトランザクションが、ブロックチェーンネットワークによって維持されるブロックチェーンに記憶された1つまたは複数のブロックに含まれていると判定することを含む。
【0066】
510で、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したとの判定に応答して、ブロックチェーンネットワークのノードは、ホワイトリストを含まないスマートコントラクトコールを実行するよう指示される。
【0067】
図6は、本明細書の実装形態による装置600のモジュールの一例を示す。装置600は、コンソーシアムブロックチェーンネットワークなどのブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするように構成された装置の例示的な実装とすることができる。装置600は、上記で説明した実装形態に対応することができ、装置600は、ブロックチェーンにおいて実行されるべき複数のトランザクションを識別する第1の識別器または第1の識別ユニット602であり、トランザクションは実行順序で配置され、トランザクションは、スマートコントラクトの実行を許可されている1つまたは複数のアカウントを識別するホワイトリストを各々が有している、スマートコントラクトへの1つまたは複数のスマートコントラクトコールを含み、実行順序は、複数のトランザクションの後に配置されたホワイトリストを有しないスマートコントラクトへのスマートコントラクトコールを含む、第1の識別器または第1の識別ユニット602と、複数のトランザクション内のトランザクションのグループを識別するための第2の識別器または第2の識別ユニット604であり、各グループ内のトランザクションは、ブロックチェーンネットワーク内の特定のアカウントセットに関連付けられ、1つまたは複数のスマートコントラクトコールの各々に関連付けられた特定のアカウントセットは、スマートコントラクトコールに関連付けられたホワイトリストに基づいて決定される、第2の識別器または第2の識別ユニット604と、ブロックチェーンネットワークのノードに、トランザクションのグループの各々を並列に実行するよう指示するための第1のインストラクターまたは第1の指示ユニット606であり、トランザクションの各グループを実行することは、グループ内のトランザクションを連続的に、実行順序に従って実行することを含む、第1のインストラクターまたは第1の指示ユニット606と、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したと判定するための決定器または決定ユニット608と、ブロックチェーンネットワークのノードがトランザクションのグループのすべての実行を完了したとの判定に応じて、ブロックチェーンネットワークのノードに、ホワイトリストを含まないスマートコントラクトコールを実行するよう指示するための第2のインストラクターまたは第2の指示ユニット610とを含む。
【0068】
前の実装形態で示されたシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用することによって実装でき、あるいはある機能を有する製品を使用することによって実装できる。典型的な実装デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲーム機、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せとすることができる。
【0069】
装置内の各ユニットの機能および役割の実装プロセスについては、以前の方法の対応するステップの実装プロセスを参照することができる。簡単のために、詳細はここでは省略する。
【0070】
装置の実装は、基本的に、方法の実装に対応するので、関連する部分については、方法の実装の関連する説明を参照できる。前に説明した装置の実装は一例にすぎない。また、別々の部分として記載されているユニットは、物理的に別個であってもなくてもよく、ユニットとして表示されている部分は、物理ユニットであってもなくてもよく、1つの位置に配置されていてもいくつかのネットワークユニットに分散されてもよい。本明細書の解決策の目的を達成するために、モジュールの一部または全部を、実際の要求に基づいて選択することができる。当業者は、創造的な取り組みなしに本出願の実装形態を理解し実施することができる。
【0071】
再び図6を参照すると、ブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするための装置の構造および内部機能モジュールを示すものと解釈することができる。並列実行装置は、ブロックチェーンネットワークにおけるトランザクションの並列実行を可能にするように構成された装置の一例とすることができる。
【0072】
本明細書に記載された主題およびアクションおよび動作の実装形態は、デジタル電子回路、有形に具現化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実装形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置によって実行される、またはデータ処理装置の動作を制御するためのコンピュータプログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。キャリアは、有形の非一時的コンピュータ記憶媒体であってもよい。代替的にまたは追加として、キャリアは、人工的に生成された伝搬信号、たとえば、データ処理装置によって実行するための適切なレシーバ装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号とすることができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができ、またはその一部とすることができる。コンピュータ記憶媒体は、伝搬信号ではない。
【0073】
「データ処理装置」という用語は、たとえば、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。データ処理装置は、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)などの専用論理回路を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むこともできる。
【0074】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも呼ばれるまたは記述されることもあるコンピュータプログラムは、コンパイルもしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境での実行に適した他のユニットとしてなど、あらゆる形式で展開でき、環境は、1つまたは複数の場所にデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含む場合がある。
【0075】
コンピュータプログラムは、必ずしも必要はないが、ファイルシステム内のファイルに対応する場合がある。コンピュータプログラムは、問題のプログラム専用の単一のファイル、あるいは、たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルなど、複数のコーディネートされたファイルに、たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプトなど、他のプログラムまたはデータを保持するファイルの一部に記憶することができる。
【0076】
本明細書で記述されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって動作を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICまたはGPUなどの専用論理回路によって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行することができる。
【0077】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、またはその両方、あるいは任意の他の種類の中央処理装置に基づくことが可能である。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含むことができる。中央処理装置およびメモリは、専用論理回路によって補うことができ、またはそれに組み込むことができる。
【0078】
一般に、コンピュータは、少なくとも1つの非一時的コンピュータ可読記憶媒体(コンピュータ可読メモリとも呼ばれる)に結合される。コンピュータに結合された記憶媒体は、コンピュータの内部構成要素(たとえば、統合されたハードドライブ)または外部構成要素(たとえば、ユニバーサルシリアルバス(USB)ハードドライブもしくはネットワーク経由でアクセスされるストレージシステム)とすることができる。記憶媒体の例には、たとえば、磁気、磁気光学、または光ディスク、半導体ドライブ、クラウド記憶システムなどのネットワーク記憶リソース、または他のタイプの記憶媒体などがある。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイス中に組み込むことができる。
【0079】
ユーザとの対話を提供するために、本明細書で説明する主題の実装は、情報をユーザに表示するためのディスプレイデバイス、たとえばLCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供できる入力デバイス、たとえばキーボード、およびマウス、トラックボールまたはタッチパッドなどのポインティングデバイスを有するコンピュータ上に実装し、またはそれと通信するように構成することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによってなど、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、またはスマートフォンや電子タブレットなどのユーザデバイスで実行されているアプリと対話することによってユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、代わりに、ユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0080】
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるとは、システムが、動作中、システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。専用ロジック回路が特定の動作またはアクションを実行するように構成されるとは、その回路が動作またはアクションを実行する電子ロジックを有することを意味する。
【0081】
本明細書は、多くの具体的な実装の詳細を含むが、これらは、特許請求の範囲自体によって定義される特許請求の範囲に対する限定ではなく、むしろ特定の実装に固有の場合がある特徴の説明として解釈されるものとする。別個の実装形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実装形態において組み合わせて実現することもできる。逆に、単一の実装形態の文脈で記載されている様々な特徴は、複数の実装形態で別々にまたは任意の適切な部分組合せで実現することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述され、当初はそのように請求される場合があるが、いくつかの場合、請求された組合せからの1つまたは複数の特徴を、組合せから削除することができ、特許請求の範囲は、部分組合せ、または部分組合せの変形を対象とする場合がある。
【0082】
同様に、動作が図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、そのような動作が、示された特定の順序で、または逐次的な順序で実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上述した実装形態における様々なシステムモジュールおよび構成要素の分離は、すべての実装形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【0083】
主題の特定の実装形態が記載されている。他の実装形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの場合には、マルチタスキングおよび並列処理が有利である場合がある。
【符号の説明】
【0084】
100 環境
102 ブロックチェーンネットワーク
106 コンピューティングデバイス
108 コンピューティングデバイス
110 ネットワーク
200 アーキテクチャ
202 参加者システム
204 参加者システム
206 参加者システム
212 ブロックチェーンネットワーク
214 ノード
216 ブロックチェーン
300 環境
302 スマートコントラクト
304 命令
306 ホワイトリスト
308 アカウント
400 実行順序
405 スマートコントラクトコール
410 トランザクション
415 トランザクション
420 トランザクション
450 並列実行順序
455 トランザクションのグループ
460 トランザクションのグループ
465 トランザクションのグループ
500 プロセス
600 装置
602 第1の識別器または第1の識別ユニット
604 第2の識別器または第2の識別ユニット
606 第1のインストラクターまたは第1の指示ユニット
608 判定器または判定ユニット
610 第2のインストラクターまたは第2の指示ユニット
図1
図2
図3
図4A
図4B
図5
図6