(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-28
(45)【発行日】2023-07-06
(54)【発明の名称】自己監視ブロックチェーンのための安全な合意に基づくエンドースメント
(51)【国際特許分類】
G06F 9/50 20060101AFI20230629BHJP
【FI】
G06F9/50 150D
(21)【出願番号】P 2020562204
(86)(22)【出願日】2019-06-05
(86)【国際出願番号】 EP2019064665
(87)【国際公開番号】W WO2019238499
(87)【国際公開日】2019-12-19
【審査請求日】2021-10-28
(32)【優先日】2018-06-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】デ カーロ、アンジェロ
(72)【発明者】
【氏名】ナタラジャン、センシルナタン
(72)【発明者】
【氏名】シェン、チュン フイ
(72)【発明者】
【氏名】ラグノーリ、エマニュエル
(72)【発明者】
【氏名】ウエダ、ヨウヘイ
(72)【発明者】
【氏名】ラマクリシュナ、ヴェンカトラマン
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2017-123116(JP,A)
【文献】米国特許出願公開第2018/0121909(US,A1)
【文献】佐中晋,Hyperledger Fabric v1.0|合意形成と管理方式を一新,iMagazine,[online],2018年03月26日,<URL:https://www.imagazine.co.jp/hyperledger-fabric-v1-0%EF%BD%9C%E5%90%88%E6%84%8F%E5%BD%A2%E6%88%90%E3%81%A8%E7%AE%A1%E7%90%86%E6%96%B9%E5%BC%8F%E3%82%92%E4%B8%80%E6%96%B0/>
【文献】MANEVICH, Y., BARGER,A. and TOCK, Y.,POSTER: Service Discovery for Hyperledger Fabric,arXiv,1805.02105v1, [online],2018年05月05日,pp.1-4,<URL:https://arxiv.org/abs/1805.02105v1>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ノードが、ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を、前記1つまたは複数のエンドースメント要求をブロックに格納するように構成された順序付けノードに送信することと、
前記ノードが、前記エンドースメントを実行してエンドースメント応答を処理するように構成されたエンドースメント・ブロックチェーン・ピアの性能指標を、前記1つまたは複数のエンドースメント要求が含まれるブロックの情報に基づいて監視することと、
前記ノードが、前記性能指標に基づいてエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと、
前記ノードが、エンドースされたブロックチェーン・トランザクションを受信することと
を含んでいる、コンピュータ実装方法。
【請求項2】
前記ブロックは、前記順序付けノードにより、複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に送信される、請求項1に記載の方法。
【請求項3】
前記エンドースメント応答は、前記順序付けノードにより、ブロックに格納されており、
前記性能指標が、前記1つまたは複数のエンドースメント要求のブロック高さおよび対応する前記エンドースメント応答のブロック高さに基づく前記エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでいる、請求項1または2に記載の方法。
【請求項4】
各ピア処理速度に従う順序で複数のエンドースメント・ブロックチェーン・ピアをランク付けすることをさらに含んでいる、請求項3に記載の方法。
【請求項5】
前記複数のエンドースメント・ブロックチェーン・ピアのうちの最低の処理時間を有するエンドースメント・ブロックチェーン・ピアが、前記複数のエンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項4に記載の方法。
【請求項6】
前記ブロックが、前記1つまたは複数のエンドースメント要求、1つまたは複数のエンドースメント応答、1つまたは複数のエンドースメント応答確認およびトランザクション・レコードを含んでいる、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることが、複数のエンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に、前記エンドースメント要求を割り当てることを含んでいる、請求項1に記載の方法。
【請求項8】
ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を、前記1つまたは複数のエンドースメント要求をブロックに格納するように構成された順序付けノードに送信するように構成された送信器と
プロセッサであって、
前記エンドースメントを実行してエンドースメント応答を処理するように構成されたエンドースメント・ブロックチェーン・ピアの性能指標を、前記1つまたは複数のエンドースメント要求が含まれるブロックの情報に基づいて監視することと、
前記性能指標に基づいてエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと
を実行するように構成された前記プロセッ
サと、
エンドースされたブロックチェーン・トランザクションを受信するように構成された受信器と
を備えている、装置。
【請求項9】
前記ブロックは、前記順序付けノードにより、複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に送信される、請求項8に記載の装置。
【請求項10】
前記エンドースメント応答は、前記順序付けノードにより、ブロックに格納されており、
前記性能指標が、前記1つまたは複数のエンドースメント要求のブロック高さおよび対応する前記エンドースメント応答のブロック高さに基づく前記エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでいる、請求項8または9に記載の装置。
【請求項11】
前記プロセッサが、各ピア処理速度に従う順序で複数のエンドースメント・ブロックチェーン・ピアをランク付けするようにさらに構成されている、請求項10に記載の装置。
【請求項12】
前記複数のエンドースメント・ブロックチェーン・ピアのうちの最低の処理時間を有するエンドースメント・ブロックチェーン・ピアが、前記複数のエンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項11に記載の装置。
【請求項13】
前記ブロックが、前記1つまたは複数のエンドースメント要求、1つまたは複数のエンドースメント応答、1つまたは複数のエンドースメント応答確認、およびトランザクション・レコードを含んでいる、請求項8~12のいずれか1項に記載の装置。
【請求項14】
前記プロセッサが、複数のエンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に、前記エンドースメント要求を割り当てることによって、前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てる、請求項8に記載の装置。
【請求項15】
命令を提供するコンピュータ可読ストレージ媒体であって、前記命令が、実行された場合に、プロセッサに、
ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を、前記1つまたは複数のエンドースメント要求をブロックに格納するように構成された順序付けノードに送信することと、
前記エンドースメントを実行してエンドースメント応答を処理するように構成されたエンドースメント・ブロックチェーン・ピアの性能指標を、前記1つまたは複数のエンドースメント要求が含まれるブロックの情報に基づいて監視することと、
前記性能指標に基づいてエンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることと、
エンドースされたブロックチェーン・トランザクションを受信することと
を実行させる、コンピュータ可読ストレージ媒体。
【請求項16】
前記ブロックは、前記順序付けノードにより、複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に送信される、請求項15に記載のコンピュータ可読ストレージ媒体。
【請求項17】
前記エンドースメント応答は、前記順序付けノードにより、ブロックに格納されており、前記性能指標が、前記1つまたは複数のエンドースメント要求のブロック高さおよび対応する前記エンドースメント応答のブロック高さに基づいて前記エンドースメント・ブロックチェーン・ピアのピアの処理速度を含んでいる、請求項15または16に記載のコンピュータ可読ストレージ媒体。
【請求項18】
前記プロセッサが、
各ピアの処理速度に従う順序で複数のエンドースメント・ブロックチェーン・ピアをランク付けすることを実行するようにさらに構成されている、請求項17に記載のコンピュータ可読ストレージ媒体。
【請求項19】
前記複数のエンドースメント・ブロックチェーン・ピアのうちの最低の処理時間を有するエンドースメント・ブロックチェーン・ピアが、前記複数のエンドースメント・ブロックチェーン・ピアのランクのリスト内で最下位にランク付けされる、請求項18に記載のコンピュータ可読ストレージ媒体。
【請求項20】
前記ブロックが、前記1つまたは複数のエンドースメント要求、1つまたは複数のエンドースメント応答、1つまたは複数のエンドースメント応答確認、および、トランザクション・レコードを含んでおり、前記性能指標に基づいて前記エンドースメント要求を前記エンドースメント・ブロックチェーン・ピアに割り当てることが、複数のエンドースメント・ブロックチェーン・ピアのうちの他のものより速い処理速度を有している、前記複数のエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に、前記エンドースメント要求を割り当てることを含んでいる、請求項15に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般に、ブロックチェーン上の合意およびピア管理手順に関連しており、より詳細には、自己監視ブロックチェーン(self-monitoring blockchain)内のトランザクションのエンドースメントおよびコミットメントを含むブロックチェーン・タスクの委任を伴う最適なピア管理のために、ブロックチェーン上のピアを監視することに関連している。
【背景技術】
【0002】
ブロックチェーンは、情報を格納するためのパブリックな台帳として使用されることがある。ブロックチェーンは、主に金融トランザクションに使用されるが、商品およびサービスに関連するさまざまな情報(すなわち、製品、パッケージ、状態など)を格納することができる。非集中的方式は、権限および信用を非集中的ネットワークに提供し、そのノードが継続的かつ連続的にトランザクションをパブリックな「ブロック」に記録できるようにし、ブロックチェーンと呼ばれる一意の「チェーン」を作成する。暗号は、トランザクション・ソースの認証を保護するためにハッシュ・コードを介して使用され、中央の仲介を不要とする。ブロックチェーンは、ブロックチェーンのブロック内に継続的に増大するレコードのリストを維持する分散データベースであり、変更不可能な特性のため、改ざんおよび改訂から保護される。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含む。ブロックチェーンは、情報の保持、追跡、転送、および検証に使用され得る。ブロックチェーンは分散システムであるため、トランザクションをブロックチェーン台帳に追加する前に、すべてのピアが合意状態に達する必要がある。
【0003】
従来、ブロックチェーン・ネットワーク内で動作しているピアは、さまざまなリソースおよび制約を有することがあり、ブロックチェーン・トランザクションを処理するときに、異なる速度のエンドースメントおよびコミットメントをもたらす。ピアは、中央処理装置(CPU:central processing unit)の速度、使用可能なメモリ、およびディスクの速度/容量などの、制限されたリソースを含んでいることがある。ピアは、特定の時間に過多の要求を処理して、過負荷になることもある。ピアは、そのようなトランザクションを処理するための宣伝された処理能力に関して不正直であるか、または過大評価することもある。その結果、ピアは、ブロックチェーンの動作におけるエンドースメント・フェーズおよびコミットメント・フェーズの両方においてボトルネックになる可能性がある。
【0004】
最適な性能を実現するために、ブロックチェーン・ネットワークは、すべてのピアで同じように、またはピアの能力に比例して、エンドースメント・フェーズおよびコミットメント・フェーズの負荷のバランスを取る必要がある。特定のピアの使用率における増加または減少は、それらのピアに割り当てられた特定の時間でのトランザクションの負荷要件に依存する。一般に、負荷バランシングまたは負荷スケーリングに対して推奨されるポリシーは、ブロックチェーン・ネットワーク内の過剰利用、過小利用、またはボトルネックを決定するための信頼できる手法を提供することができる。最先端の許可型ネットワークは、自己評価機能および自己修正機能を有していない。特定の実行時に非効率的なピアを識別するための動作は、通常、存在しない。ブロックチェーン・ネットワークは、自動的に拡張可能ではなく、負荷は、プロビジョニングされたすべてのピアにわたって均一に分散され得ない。また、実行時のより大きい負荷をサポートするために、ピア・ノードを動的に追加することはできない。さらに、ピア・ノードは、必要に応じてエンドーサがコミッター(committer)またはオーダラ(orderers)になるなどの、他の役割を果たすために再プロビジョニングされない。ネットワークを手動で評価すること、およびスケールアップすること、またはリバランスすることは可能であるが、この手法は、信頼できる監視する実体がない場合に、各組織がそのような変更を独立して実行しなければならないため、リスクをもたらす。過剰プロビジョニングは、リソースの浪費をもたらし、過小プロビジョニングは、性能不足をもたらす。ある組織によって負荷を管理するときの間違った決定は、同じブロックチェーン・ネットワーク上の他の組織の性能に悪影響を与える可能性がある。
【発明の概要】
【0005】
本発明の1つの態様は、ブロックチェーン・トランザクションのエンドースメントを実行するためのエンドースメント要求を識別することと、エンドースメント要求を順序付けノードに送信することと、エンドースメント・ブロックチェーン・ピア(endorsement blockchain peer)の性能指標を監視することと、性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てることと、エンドースされたブロックチェーン・トランザクションを受信することとのうちの少なくとも1つを含んでいる方法を提供する。
【0006】
別の態様は、ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を識別するように構成されたプロセッサと、1つまたは複数のエンドースメント要求を順序付けノードに送信するように構成された送信器とを備え、このプロセッサが、エンドースメント・ブロックチェーン・ピアの性能指標を監視し、性能指標に基づいて1つまたは複数のエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるようにさらに構成されており、さらに、エンドースされたブロックチェーン・トランザクションを受信するように構成されている受信器を含んでいる、装置を提供する。
【0007】
さらに別の態様は、命令を格納するように構成されたコンピュータ可読ストレージ媒体を提供し、これらの命令は、実行された場合に、プロセッサに、ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を識別するステップと、1つまたは複数のエンドースメント要求を順序付けノードに送信するステップと、エンドースメント・ブロックチェーン・ピアの性能指標を監視するステップと、性能指標に基づいて1つまたは複数のエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるステップと、エンドースされたブロックチェーン・トランザクションを受信するステップとを実行させる。
【図面の簡単な説明】
【0008】
【
図1A】例示の実施形態に従って、ブロックチェーン・トランザクションの負荷を処理するためのピアの監視および選択の手順の論理ネットワーク図を示す図である。
【
図1B】例示の実施形態に従って、ピアの管理および負荷処理手順の間に実行される一連の動作のシステム構成図を示す図である。
【
図1C】例示の実施形態に従って、ピアの負荷容量を識別し、各性能に従ってピアをランク付けする、例示的なピアの処理の管理図を示す図である。
【
図2A】例示の実施形態に従って、アセット共有のシナリオに関する、例示的なピア・ノード・ブロックチェーン・アーキテクチャの構成を示す図である。
【
図2B】例示の実施形態に従って、例示的なピア・ノード・ブロックチェーン構成を示す図である。
【
図3】例示の実施形態に従って、許可型ブロックチェーン・ネットワークを示す図である。
【
図4】例示の実施形態に従って、ピア管理およびトランザクション管理の構成を実行するためのシステム・メッセージ図を示す図である。
【
図5A】例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の例示的な方法のフロー図を示す図である。
【
図5B】例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の別の例示的な方法のフロー図を示す図である。
【
図6A】例示の実施形態に従って、本明細書において説明されている1つまたは複数の動作に従って、ブロックチェーンに対してさまざまな動作を実行するように構成された例示的な物理的インフラストラクチャを示す図である。
【
図6B】例示の実施形態に従って、契約当事者間での例示的なスマート・コントラクトの構成、およびブロックチェーン上でスマート・コントラクト条項を執行するように構成された仲介サーバを示す図である。
【
図7】例示の実施形態のうちの1つまたは複数をサポートするように構成された例示的なコンピュータ・システムを示す図である。
【発明を実施するための形態】
【0009】
本明細書の図において概略的に説明され、示されているように、本明細書のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、関連する図および説明において表されている方法、装置、コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態に関する詳細な説明は、適用の範囲を制限するよう意図されておらず、単に選択された実施形態を代表している。
【0010】
本明細書全体を通して説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な様態で組み合わせられてよい。例えば、語句「例示の実施形態」、「一部の実施形態」、またはその他の同様の言葉の使用は、本明細書全体を通じて、実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれてよいということを指している。したがって、語句「例示の実施形態」、「一部の実施形態において」、「その他の実施形態において」、またはその他の同様の言葉の出現は、本明細書全体を通じて、必ずしもすべてが実施形態の同じグループを指しておらず、説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な様態で組み合わせられてよい。
【0011】
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、パケット、フレーム、データグラムなどの多くの種類のメッセージまたはネットワーク・データに適用されてよい。さらに、特定の種類のメッセージ、信号伝達、およびプロトコルが例示の実施形態において示されることがあるが、それらは特定の種類のメッセージ、信号伝達、またはプロトコルに限定されない。
【0012】
例示の実施形態は、選択的ピア管理手順を使用してブロックチェーン分散システムをサポートする方法、デバイス、ネットワーク、またはシステム、あるはその組み合わせを提供する。ブロックチェーンは、互いに通信する複数のノードを含んでいる分散システムである。ブロックチェーンは、チェーンコード(例えば、スマート・コントラクトなど)と呼ばれるプログラムを操作し、状態および台帳のデータを保持し、トランザクションを実行する。一部のトランザクションは、チェーンコード上で呼び出される動作である。一般に、ブロックチェーン・トランザクションは、特定のブロックチェーン・メンバーによって「エンドース」されなければならず、エンドースされたトランザクションのみが、ブロックチェーンにコミットされてよく、ブロックチェーンの状態に影響を与える。エンドースされていない他のトランザクションは、無視される。管理機能およびパラメータのための1つまたは複数の特殊なチェーンコードが存在することがあり、それらは、システム・チェーンコードと総称される。
【0013】
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理的な機能を実行してよい。ノードは、信頼できるドメイン内でグループ化され、さまざまなやり方でそれらのノードを制御する論理エンティティに関連付けられる。ノードは、トランザクション呼び出しをエンドーサ(例えば、ピア)にサブミットし、トランザクション提案を順序付けサービス(例えば、オーダラ)にブローキャストするクライアントまたはサブミット・クライアント・ノードなどの、さまざまな種類を含んでよい。別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードであることができる。ピアはエンドーサの役割を持つこともできるが、これは必須要件ではない。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットする際、およびブロックチェーンのワールド・ステートを変更する際の、システム内の各ピア・ノードへのブロードキャストなどの、配信保証を実施し、これは、通常は制御情報および設定情報を含んでいる初期ブロックチェーン・トランザクションの別の名前である。
【0014】
台帳は、ブロックチェーンのすべての状態遷移の順序付けられた耐改ざん性のレコードである。状態遷移は、参加している関係者(例えば、クライアント・ノード、順序付けノード、エンドーサノード、ピア・ノードなど)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じてよい。トランザクションは、1つまたは複数のオペランド(作成、更新、削除など)として台帳にコミットされているアセットのキーとバリューのペアのセットをもたらしてよい。台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。通常は、1つのチャネルにつき1つの台帳が存在する。各ピア・ノードは、それらのピア・ノードがメンバーになっているチャネルごとに、台帳のコピーを維持する。
【0015】
チェーンは、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックはN個のトランザクションのシーケンスを含んでおり、ここで、Nは1以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでいる。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって互いにリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることはできない。最も最近追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追記専用という性質を効率的にサポートするピア・ノードのファイル・システム(すなわち、ローカル、取り付けられたストレージ、クラウドなど)に格納されてよい。
【0016】
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれているすべてのキーの最新のバリューを表す。現在の状態は、チャネルに知られている最新のキーのバリューを表すため、ワールド・ステートと呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーのバリューが状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されて(必要な場合は、生成されて)よい。
【0017】
例示の実施形態は、実行時のピアの性能の継続的評価および低速なピアまたはボトルネックとなっているピアの識別を、信頼できる否認不可能な方法で提供する。リソースの評価は、ネットワーク全体で負荷をリバランスする能力、またはピアの役割および負荷を追加/削除/変更して最適な効率を実現する能力、あるいはその両方を提供することができる。ブロックチェーン・ネットワーク内で、ノードは通常、相互に信頼されていない。エンティティは、異なる組織によって所有され、管理されている。ある組織の監視サービスが、別の組織の監視サービスを信頼していないことがある。クライアントは、どのピアがエンドースメント要求を送信するべきかを決定し、またそれらのピアからのどの応答を、オーダラノードに送信されるトランザクション・エンベロープのために選択するべきか決定するため、ブロックチェーン・トランザクションの実行を管理することにおいて、有意な行動の自由を持っている。
【0018】
例示の実施形態は、エンドースメント手順をブロックチェーン・トランザクションにすることを提供する。エンドースメント要求およびエンドースメント応答は、それらが生成されるときに順序付けられ、ブロック内に収集され、否認防止のために共有台帳にコミットされる。ピア間の既知の差異を識別して処理することは、ネットワーク自己評価手順においてブロックチェーンを調べることによって推測され得る。
【0019】
動作中に、クライアント・ノードが、エンドースメント要求を、1つまたは複数のエンドーシング・ピアの代わりにオーダラノードに送信する。エンドースメント要求およびエンドースメント応答は、ブロックに格納され、ピアは、クライアントからの直接的要求ではなく、オーダラノードからのブロックの受信時にエンドースメントを実行し、次に、応答をオーダラ/順序付けノードに送信する。監視およびリバランスすることは、トランザクションごとにエンドースメント要求およびエンドースメント応答のブロック高さを比較することを含めて、ピアの相対的処理速度を監視することによって、各クライアントによって実行され得る。その結果、ピアの選択は、それらのピアについて識別された処理速度の降順に、それらの識別されたピアにエンドースメント要求を送信することによって実行されてよい。
【0020】
図1Aは、例示の実施形態に従って、ブロックチェーン・トランザクションの負荷を処理するためのピアの監視および選択の手順の論理ネットワーク図を示している。
図1Aを参照すると、構成100Aは、解析モジュール110からエンドーサ選択111を受信するクライアント・ノード114を含んでおり、解析モジュール110は、ピア・ノード管理の目的でピアの統計値113を監視して決定するように構成されている、ノードのうちのいずれかのコンピュータ処理システムの一部であってよい。ピアをプロビジョニングし、ピアへの割り当てを要求するブロックチェーン・トランザクションの負荷をリバランスするために、ピア情報が使用されてよい。クライアント114は、エンドーサ要求115をサブミットしてよく、これは、キューに入れられてよく、オーダラノード116に対してエンドースメント115を必要としてよく、オーダラノード116は、エンドースメントの合意ブロックチェーン・トランザクション120を実行するように設定されたオーダラノード116のプールの一部であってよい。トランザクション・エンベロープ117も、オーダラノード116に送信される。オーダラノード116の出力は、エンドースメント確認119を含んでよく、ピア割り当ての決定が提供された後にピアに配布されるブロック121を含んでもよい。
【0021】
負荷バランシング・モジュール112は、ピア130の監視されて更新された活動に基づいてピアのネットワークを再構成131してよい。ブロック121は、ピアが、活動中の負荷の目標を達成するために必要なエンドースすることまたはコミットすることあるいはその両方を行えるようにする。コミット・ピア140は、VSCC142を含むエンドースされたトランザクションを記録する(123)ためのトランザクションのコミットのみを実行してよい。他のピア138は、この例では、エンドースメント・システム・チェーンコード(ESCC:endorsement system chaincode)134、検証システム・チェーンコード(VSCC:verification system chaincode)136、およびチェーンコード(CC:chaincode)132を用いてトランザクションをエンドースしてコミットする。次に、エンドースされたトランザクション125および記録されたエンドース済みトランザクション127が、台帳にコミットされる。
【0022】
上記の要素は、エンドースメント・プロセスを制御する基本的コンポーネントである。システム・チェーンコードは、エンドーサが実行されているプロセスと同じプロセス内で実行される、特権のあるチェーンコードである。システム・チェーンコードは、エンドーサのすべてのリソースに対するアクセスを有する。一方、チェーンコードは、明確に定義されたインターフェイスと情報をやりとりする1つのコードである。提案をエンドースするために、エンドーサは、この提案が参照しているCCを最初に実行し、その後、チェーンコードの出力が、署名を生成するESCCに渡される。この署名は、提案のエンドースメントを表す。これらのエンドースメントは、トランザクション内に配置され、このトランザクションが、ブロック内にトランザクションを順序付けしてブロックを配布する順序付けサービスに送信される。コミット・ピアによってブロックが受信された後に、そのブロック内の各トランザクションが、エンドースメント・ポリシーが満たされている(すなわち、十分なエンドースメントが存在する)ことを検証するVSCCに渡される。
【0023】
図1Bは、例示の実施形態に従って、ピアの管理および負荷処理手順の間に実行される一連の動作のシステム構成図を示している。
図1Bを参照すると、システム構成100Bは、クライアント・ノード152と、エンドースメントおよびコミットメントを実行する第1のピア154と、トランザクションのコミットを実行する第2のピア156と、ピアへのブロックチェーンの負荷の分散を管理するオーダラノード158とを含んでいる。クライアント152は、エンドーサ・リスト162を含むエンドースメント要求およびトランザクション提案を、負荷の分散を管理するオーダラノード158に送信してよいオーダラノード158は、コミット・ピア用のブロック164を構築する。ブロック166が、識別されたピア154/156に送信される。ピア156は、トランザクション・エンベロープを処理してよく(168)、他のピア154は、同じことを実行してよく、エンドースメント要求およびエンドースメント応答を処理してもよい(172)。次に、ピアは、コミットされたイベント174をクライアント152にサブミットしてよく、それは、エンドースメント応答176をオーダラノード158にサブミットする。それに応じて、ブロック178がピアに送信され、エンドーシング・ピアが、エンドースメント確認182をクライアント152にサブミットし、クライアント152は、エンドースメント確認を処理し、トランザクション・エンベロープ184を作成し、トランザクション・エンベロープ184は、オーダラノード158に送信される(186)。「E」はエンドーサを表し、「C」はコミッターを表す。処理されたトランザクション・エンベロープが、台帳にコミットされる。エンドースメント確認の処理中に、ピアの処理時間が識別され、ブロック高さと比較される。ピアのうちのいずれかについての既知の統計値に対する更新が実行され、それらの認識された処理能力で、ピアが再び並べ替えられる。
【0024】
対応するエンドースメント提案が台帳に現れるなどの、特定のイベントの結果として、トランザクションが生成される。ここで、現れるということは、エンドースメント提案がブロックチェーン(例えば、台帳)の特定のブロックに含まれるということを示している。ブロック高さは、ブロックチェーンのジェネシス・ブロックからの距離である。エンドースメント応答(すなわち、エンドースメント・ポリシーに依存する1つまたは複数の応答)が、台帳に現れる。各エンドースメント応答は、台帳の特定のブロックに現れる。したがって、ジェネシス・ブロックからの特定の距離(すなわち、ブロック高さ)が識別され得る。この時点で、ピアの応答性を測定するために、エンドースメント提案およびエンドースメント応答の距離またはブロック高さが比較され得る。
【0025】
図1Cは、例示の実施形態に従って、ピアの負荷容量を識別し、各性能に従ってピアをランク付けする、例示的なピアの処理の管理図を示している。
図1Cを参照すると、高速なピア、低速なピア、および中間の速度のピアを識別するための手順が、ピア処理能力モデル100Cに示されており、ピアP1、P2、P3、およびP4が、ブロックチェーンの処理サイクルを完了するために必要な時間にわたって監視されている。例えば、台帳トランザクション190が、P1によって約2の時間単位にわたって処理されており、P2およびP3によって約3の時間単位にわたって処理されている。P4は19の時間単位を必要とし、したがって、他のピアよりはるかに低速である。ピアは、それらの処理時間に従ってランク付けされてよい。ピアのプロセスは、すべてのピアに関するトランザクション提案191、ピアP1からのトランザクション応答192、ピアP2およびP3からのトランザクション応答193、ならびにピアP4からのトランザクション応答194として識別される。すべての応答が受信された後に、合意が実行される(195)。明らかに、第4のピアP4は、他のピアと比較した場合に、最適な処理プラットフォームを提供しておらず、したがってP4は、ピアのランク付けのリストの最後尾に移動されるべきである。その結果、P4は、より少ないエンドースメント要求を受信し、純粋にコミットする役割に切り替えられ、オーダラネットワークに追加される。ブロックは、「t0」(ブロック0)でのジェネシス・ブロックから成長し続ける高さによって測定され、「ti」は高さ「i」でのブロックである。
【0026】
例示の実施形態によれば、メッセージおよびブロック内容の処理では、メッセージの種類は、クライアントからオーダラに送信されるエンドースメント要求と、ピアからオーダラに送信されるエンドースメント応答と、オーダラからピアに送信されるエンドースメント応答確認と、ピアからクライアントに送信されるブロック・コミット・イベントとを含んでよい。観察できるように、オーダラは、メッセージの転送および割り当ての労力の大部分の管理に取り組む。
【0027】
ブロック内では、ブロックは、クライアントによって作成された、エンドースメント要求、エンドースメント応答、エンドースメント応答確認、およびトランザクション・エンベロープまたは「トランザクション」を含んでよい。1つの例では、監視手順は、クライアントに対する資格認定に基づいて、厳密に必要とされるよりも多くのエンドースメントを受信しようとしているクライアントを識別してよい。クライアントは、ピアの応答を任意に拒否することができず、または監視手順によって検出されずに、ピアからの応答が受信されたことを否定することができず、あるいはその両方を行うことができない。また、クライアントは、識別されずに不完全なトランザクション・エンベロープまたは不正なトランザクション・エンベロープをサブミットすることができず、ピアは、エンドースメントおよびコミットメントの処理で、実際に提供できる速度よりも速いように装うことができない。この構成は、より大きく効率的なトランザクションのスループットおよびより短いトランザクションの待ち時間を提供する。
【0028】
図2Aは、例示の実施形態に従って、ブロックチェーン・システムのアーキテクチャの構成200Aを示している。
図2Aを参照すると、ブロックチェーン・アーキテクチャ200Aは、ブロックチェーン・トランザクションの追加および検証プロセス(合意)に参加する特定のブロックチェーン要素(例えば、ブロックチェーン・ノード281~284のグループ280)を含んでよい。ブロックチェーン・ノード281~284のうちの1つまたは複数は、トランザクションをエンドースしてよく、1つまたは複数のブロックチェーン・ノード281~284は、アーキテクチャ200A内のすべてのブロックチェーン・ノードに順序付けサービスを提供してよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層220に格納されたブロックチェーンの変更不可能な台帳に書き込もうとしてよく、この書き込みのコピーが、基盤になる物理的インフラストラクチャ210にも格納されてよい。ブロックチェーンの構成は、格納されたプログラム/アプリケーション・コード250(例えば、チェーンコード、スマート・コントラクトなど)にアクセスして実行するためにアプリケーション・プログラミング・インターフェイス(API:application programming interface)260にリンクされた1つまたは複数のアプリケーション270を含んでよく、プログラム/アプリケーション・コード250は、参加者によって要求されてカスタマイズされた構成に従って作成することができ、それら自身の状態を維持し、それら自身のアセットを制御し、外部の情報を受信することができる。
【0029】
ブロックチェーン・ベースまたはプラットフォーム205は、ブロックチェーン・データ、サービス(例えば、暗号信用サービス、仮想実行環境など)および、基盤になる物理的コンピュータ・インフラストラクチャのさまざまな層を含み、これらは、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい。ブロックチェーン層220は、プログラム・コードを処理し、物理的インフラストラクチャ210に参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス230は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
【0030】
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム205によって公開された1つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム/アプリケーション・コード250を処理および実行してよい。コード250は、ブロックチェーンのアセットを制御してよい。例えば、コード250は、データを格納および転送することができ、スマート・コントラクトおよび関連するチェーンコードの形態で、条件または実行の対象になるその他のコード要素とともに、ノード281~284によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組み合わせなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、認証およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用され得る。1つの例では、ピア性能データ222が、ブロックチェーン層220に含まれている1つまたは複数の処理エンティティ(例えば、仮想マシン)によって識別され、処理されてよい。この結果は、ブロックチェーンのタスク/イベントの処理のためにブロックが割り当てられるべき(224)ピア・エンティティに関連付けられた最適なコンピューティング・プラットフォームを識別することを含んでよい。
【0031】
チェーンコード内で、高水準のアプリケーションおよびプログラミング言語を使用して、スマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納、または複製、あるいはその組み合わせが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトに関連付けられた条件が満たされていることに応答して実行され得る、該スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、1つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
【0032】
スマート・コントラクトは、データをキーとバリューのペアの形式でブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納されたバリューを読み取り、それらをアプリケーションの動作において使用することができる。スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックになること、またはプライベートとして暗号化されて維持されること、あるいはその両方が行われ得る。スマート・コントラクトによって使用/生成される一時的データは、提供された実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別された後に削除される。
【0033】
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載されているように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて検証される。動作中に、チェーンコードは、ハッシュを受信し、以前に格納された特徴抽出器によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出してよい。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュとが一致する場合、チェーンコードは、認証キーを、要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。
図2Aのこの例では、タスクをピアに委任するときに参照する目的で、ピアの性能指標が、ブロックチェーン・トランザクション・ブロックおよびその他の情報源に書き込まれてよい。
【0034】
図2Bは、例示の一実施形態に従って、ブロックチェーンのノード間のトランザクション・フロー200Bの例を示している。
図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード201によってエンドーシング・ピア・ノード281に送信されるトランザクション提案291を含んでよい。エンドーシング・ピア281は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションをシミュレートしてよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー/バリューのバージョンのセット(読み取られたセット)、およびチェーンコードに書き込まれたキー/バリューのセット(書き込まれたセット)を含んでよい。提案応答292が、承認されている場合は、エンドースメント署名と共に、クライアント201に返送される。クライアント201は、エンドースメントをトランザクションのペイロード293にまとめて、順序付けサービス・ノード284にブロードキャストする。その後、順序付けサービス・ノード284は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア281~283に配信する。ブロックチェーンへのコミットの前に、各ピア281~283がトランザクションを検証してよい。例えば、ピアは、エンドースメント・ポリシーをチェックし、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード293に対する署名を認証したことを確認することができる。
【0035】
再び
図2Bを参照すると、クライアント・ノード201が、要求を構築してエンドーサであるピア・ノード281に送信することによって、トランザクション291を開始する。クライアント201は、NODE、JAVA(登録商標)、PYTHONなどのサポートされているソフトウェア開発キット(SDK:software development kit)を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なAPIを利用してトランザクション提案を生成する。提案は、データが台帳から読み取られること、または台帳に書き込まれること(すなわち、アセットの新しいキーとバリューのペアを書き込むこと)、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求である。SDKは、トランザクション提案を、適切に設計された形式(例えば、リモート・プロシージャ・コール(RPC:remote procedure call)を経由するプロトコル・バッファ)にパッケージ化するためのシム(sim)として機能し、クライアントの暗号的クレデンシャル情報を受け取って、トランザクション提案の一意の署名を生成してよい。
【0036】
それに応じて、エンドーシング・ピア・ノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでにサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および(d)そのチャネル上で提案された操作を実行するための適切な権限がサブミッター(例では、クライアント201)に与えられていることを検証してよい。エンドーシング・ピア・ノード281は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含んでいるトランザクション結果を生成する。ただしこの時点では、台帳に対する更新は行われない。292で、バリューのセットが、エンドーシング・ピア・ノード281の署名と共に、提案応答292としてクライアント201のSDKに返され、このSDKが、アプリケーションが使用するためのペイロードを構文解析する。
【0037】
それに応じて、クライアント201のアプリケーションが、エンドーシング・ピアの署名を検査/検証し、提案応答を比較して、提案応答が同じであるかどうかを判定する。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査し、通常は、トランザクションを順序付けノード・サービス284にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス284にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定されたエンドースメント・ポリシーが満たされているかどうか(すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションをエンドースしたかどうか)を判定する。ここで、クライアントは、トランザクションの複数の関係者のうちの1つのみを含んでよい。この場合、各クライアントは、それ自身のエンドーシング・ノードを含んでよく、各エンドーシング・ノードがトランザクションをエンドースする必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法でエンドースされていないトランザクションを転送する場合でも、エンドースメント・ポリシーが、ピアによってまだ実施され、コミット検証フェーズで維持されるようにする。
【0038】
検査に成功した後に、ステップ293で、クライアント201が、エンドースメントをトランザクションにまとめ、順序付けノード284へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストする。トランザクションは、読み取り/書き込みセット、エンドーシング・ピアの署名、およびチャネルIDを含んでよい。順序付けノード284は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けノード284は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
【0039】
トランザクションのブロックは、順序付けノード284からチャネル上のすべてのピア・ノード281~283に配信される。エンドースメント・ポリシーが満たされていることを保証し、読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクション294が検証される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ295で、各ピア・ノード281~283は、ブロックをチャネルのチェーンに追加し、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションが有効にされたか、または無効にされたかを通知するために、イベントが発行される。
【0040】
図3は許可型ブロックチェーン・ネットワーク300の例を示しており、許可型ブロックチェーン・ネットワーク300は、分散型の非集中的ピア・ツー・ピア・アーキテクチャ、ならびにユーザの役割および権限を管理する認証局318を特徴とする。この例では、ブロックチェーン・ユーザ302は、トランザクションを許可型ブロックチェーン・ネットワーク310にサブミットしてよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、REST APIを介して直接的に、または同様の方法によって、発行されてよい。信頼できるビジネス・ネットワークは、監査人(例えば、米国の株式市場における証券取引委員会)などの規制者システム314にアクセスを提供してよい。一方、ブロックチェーン・ネットワーク運用者308は、ノード312のシステムを介して、規制者システム314を「監査人」として登録し、ブロックチェーン・ユーザ302を「クライアント」として登録するなどの、メンバーの権限を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
【0041】
ブロックチェーン開発者システム316は、チェーンコードおよびクライアント側のアプリケーションを書き込む。ブロックチェーン開発者システム316は、RESTインターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース330からのクレデンシャル情報をチェーンコードに含めるために、開発者システム316は、アウトオブバンド接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ302は、ピア・ノード312を介してネットワークに接続する。ピア・ノード312は、いずれかのトランザクションを開始する前に、ユーザのエンロールメントおよびトランザクション証明書を認証局318から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク310上でトランザクションを実行するために、それらのデジタル証明書を処理しなければならない。一方、チェーンコードを動作させようとしているユーザは、従来のデータ・ソース330上のそれらのユーザのクレデンシャル情報を検証することが必要になることがある。ユーザの認証を確認するために、チェーンコードは、従来の処理プラットフォーム320を介して、このデータへのアウトオブバンド接続を使用することができる。
【0042】
図4は、例示の実施形態に記載されている、ピア管理およびトランザクション管理の構成を実行するためのシステム・メッセージ図を示している。
図4を参照すると、構成400は、オーダラ410がピア420およびブロックチェーン430との動作を管理する別のシナリオを提供する。動作中に、オーダラは、ピア・ノード420による割り当ておよび処理を必要とするさまざまなエンドースメント要求を識別する(412)。ピア・ノードの分析/性能情報が監視されて解析され(414)、ピアがランク付けされ(416)、相対的な処理能力に見合った順序で並べ替えられる。ピアは、さまざまなタスクに関連する情報を含めるために作成された(418)ブロックを受信してよい。ピアの性能指標のランク付けと一致する様態でエンドースメント要求を配布するために、ブロックの割り当てが実行される(422)。例えば、ブロックチェーンの負荷処理の性能を最適化するために、最高の能力評価を有するピアには、他のどのピアよりも前にエンドースメント要求が与えられる。トランザクションがエンドースされて完了した後に、トランザクションが、コミットするためにブロックチェーン430に転送される(424)。
【0043】
図5Aは、例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の例示的な方法のフロー
図500Aを示している。
図5Aを参照すると、この方法は、ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を識別することと(512)、1つまたは複数のエンドースメント要求を順序付けノードに送信することと(514)、エンドースメント・ブロックチェーン・ピアの性能指標を監視することと(516)、性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てることと(518)、エンドースされたブロックチェーン・トランザクションを受信することと(522)を含んでよい。
【0044】
この方法は、確認および処理のためにブロックをピアに送信する前に、エンドースメント要求をブロックに格納することを含んでもよい。この方法は、ブロックをエンドースメント・ブロックチェーン・ピアのうちの1つまたは複数に送信することを含んでもよい。性能指標は、1つまたは複数のエンドースメント要求のブロック高さに基づく、エンドースメント・ブロックチェーン・ピアのピア処理速度を含んでよい。この方法は、各ピアの処理速度に従う順序でエンドースメント・ブロックチェーン・ピアをランク付けすることを含んでもよい。最低の処理時間を有するエンドースメント・ブロックチェーン・ピアは、エンドースメント・ブロックチェーン・ピアのランクのリスト内で、最下位にランク付けされる。ブロックは、1つまたは複数のエンドースメント要求、1つまたは複数のエンドースメント応答、1つまたは複数のエンドースメント応答確認応答、およびトランザクション・レコードを含む。性能指標に基づいてエンドースメント要求をエンドースメント・ブロックチェーン・ピアに割り当てるときに、プロセスは、エンドースメント要求を、他のブロックチェーン・ピアより速い処理速度を有している、エンドースメント・ブロックチェーン・ピアのうちの特定の1つに割り当てることも含む。
【0045】
図5Bは、例示の実施形態に従って、ブロックチェーン内のピア管理およびトランザクション管理の別の例示的な方法のフロー図を示している。
図5Bを参照すると、方法500Bは、ブロックチェーン・トランザクションのエンドースメントを実行するための1つまたは複数のエンドースメント要求を識別することと(552)、エンドースメント・ブロックチェーン・ピアの性能指標を監視することと(554)、最適な性能指標を有する信頼できるエンドースメント・ブロックチェーン・ピアのグループを作成することと(556)、1つまたは複数のエンドースメント要求をグループに割り当てることと(558)、エンドースされたブロックチェーン・トランザクションを受信することと(562)を含んでいる。
【0046】
ピアの性能解析に加えて、最適な性能を有するピアは、ブロックチェーン・トランザクションおよびエンドースメント要求を管理するように形成されたグループの一部であってよい。このようにして、信頼できるピアのグループに頼ることによって、特定のピアを識別する必要性が取り除かれる。上位のブロックチェーン・ピアが識別されると、それらのブロックチェーン・ピアを、性能に基づいて上位のピアのグループ内に配置することができ、二次のピアが、別のグループ内の三次のピアと共に、グループに内に配置されてもよい。トランザクションのエンドースメント、コミットメントなどのための割り当てが行われる場合、タスクをグループに送信することができ、処理タスク・イベントのために明確に識別されるのとは対照的に、ランダムに選択されたグループ内の1つのノードによって、そのタスクを選択または処理することができる。
【0047】
図6Aは、例示の実施形態による、動作の例示的な方法のうちの1つまたは複数にしたがうブロックチェーン上で様々な動作を実行するように構成された例示的な物理的インフラストラクチャを示している。
図6Aを参照すると、例示的な構成600Aは、ブロックチェーン620およびスマート・コントラクト640を含んでいる物理的インフラストラクチャ610を含んでおり、物理的インフラストラクチャ610は、例示の実施形態のいずれかに含まれている動作のステップ612のいずれかを実行してよい。ステップ/動作612は、1つまたは複数のフロー図または論理図あるいはその両方において説明されたか、または示されたステップのうちの1つまたは複数を含んでよい。これらのステップは、コンピュータ・システムの構成の物理的インフラストラクチャ610上に存在する1つまたは複数のスマート・コントラクト640またはブロックチェーン620あるいはその両方に書き込まれるか、またはこれらから読み取られる、出力または書き込み情報を表してよい。実行されたスマート・コントラクト640またはブロックチェーン620あるいはその両方から、データが出力され得る。物理的インフラストラクチャ610は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。
【0048】
図6Bは、例示の実施形態に従って、契約当事者間での例示的なスマート・コントラクトの構成、およびブロックチェーンに対してスマート・コントラクトの条件を執行するように構成された仲介サーバを示している。
図6Bを参照すると、構成600Bは、通信セッション、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト640によって動作させられるアセット転送セッションまたはプロセスあるいは手順を表してよい。スマート・コントラクトの実行、動作、および実行結果は、サーバ654によって管理されてよい。スマート・コントラクト640の内容は、スマート・コントラクト・トランザクションの関係者であるエンティティ652および656のうちの1つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込まれてよい。
【0049】
前述の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(RAM:random access memory)、フラッシュ・メモリ、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read-only memory)、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disk read-only memory)、または当技術分野において知られた任意のその他の形態のストレージ媒体に存在してよい。
【0050】
例示的なストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、ストレージ媒体はプロセッサと一体であってよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(ASIC:application specific integrated circuit)に存在してよい。代替方法では、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してよい。例えば、
図7は、前述したコンポーネントのいずれかなどを表すか、またはそれらに統合されてよい、例示的なコンピュータ・システム・アーキテクチャ700を示している。
【0051】
図7は、本明細書に記載された本出願の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、コンピューティング・ノード700は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【0052】
コンピューティング・ノード700内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ702が存在する。コンピュータ・システム/サーバ702での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【0053】
コンピュータ・システム/サーバ702は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでよい。コンピュータ・システム/サーバ702は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実践されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【0054】
図7に示すように、クラウド・コンピューティング・ノード700内のコンピュータ・システム/サーバ702は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ702のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット704、システム・メモリ706、および、システム・メモリ706を含むさまざまなシステム・コンポーネントをプロセッサ704に結合するバスを含んでよいが、これらに限定されない。
【0055】
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含むが、これらに限定されない。
【0056】
コンピュータ・システム/サーバ702は、通常、種々のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ702によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブルの媒体を含む。システム・メモリ706は、一実施形態では、他の図のフロー図を実装する。システム・メモリ706は、ランダム・アクセス・メモリ(RAM:random access memory)710またはキャッシュ・メモリ712あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ702は、その他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、非リムーバブル、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム714を提供することができる。図示されていないが、リムーバブル、不揮発性の磁気ディスク(例えば、「フロッピー(登録商標)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などのリムーバブル、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバスに接続することができる。下で詳細に示され、説明されるように、メモリ706は、本出願のさまざまな実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
【0057】
(少なくとも1つの)プログラム・モジュール718のセットを含んでいるプログラム/ユーティリティ716が、限定ではなく例として、メモリ706に格納されてよく、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも同様である。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール718は、通常、本明細書に記載された本出願のさまざまな実施形態の機能または方法あるいはその両方を実行する。
【0058】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。さらに、本出願の形態は、コンピュータ可読プログラム・コードが具現化されている1つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってよい。
【0059】
また、コンピュータ・システム/サーバ702は、キーボード、ポインティング・デバイス、ディスプレイ722などの1つまたは複数の外部デバイス720、ユーザがコンピュータ・システム/サーバ702と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ702が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。このような通信は、I/Oインターフェイス724を介して行うことができる。さらに、コンピュータ・システム/サーバ702は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ726を介して通信することができる。図示されているように、ネットワーク・アダプタ726は、バスを介してコンピュータ・システム/サーバ702の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ702と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0060】
システム、方法、およびコンピュータ可読媒体のうちの少なくとも1つの例示の実施形態が添付の図面において示され、前述の詳細な説明において説明されたが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再配置、変更、および置き換えを行うことができるということが理解されるであろう。例えば、さまざまな図のシステムの機能は、本明細書に記載されたモジュールまたはコンポーネントのうちの1つまたは複数によって、あるいは分散アーキテクチャにおいて実行することができ、送信器、受信器、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの1つまたは複数によって実行されてよい。さらに、本明細書に記載された機能は、さまざまな時間に、さまざまなイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてよい。また、さまざまなモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその組み合わせを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの1つまたは複数を介して、あるいはその両方によって、送信または受信されてよい。
【0061】
当業者は、「システム」を、パーソナル・コンピュータ、サーバ、コンソール、PDA(personal digital assistant)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化できるということを、理解するであろう。「システム」によって実行されているとして前述の機能を提示することは、本出願の範囲を限定するように全く意図されておらず、多くの実施形態のうちの1つの例を提供するよう意図されている。実際に、本明細書で開示された方法、システム、および装置は、計算技術に一致する局所的な分散された形態で実装されてよい。
【0062】
本明細書において説明されたシステムの特徴の一部が、それらの実装の独立性を特に強調するために、モジュールとして提示されていることに、注意するべきである。例えば、モジュールは、カスタム超大規模集積(VLSI:very large-scale integration)回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、またはその他の個別のコンポーネントを備えているハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス・プロセッシング・ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
【0063】
モジュールは、さまざまな種類のプロセッサによって実行するために、ソフトウェアにおいて少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、プロシージャ、または関数として編成されてよいコンピュータ命令の1つまたは複数の物理的または論理的ブロックを備えてよい。それにもかかわらず、識別されたモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、異なる位置に格納された異種の命令を含んでよく、それらの命令は、論理的に一緒に結合された場合にモジュールを含み、モジュールの規定された目的を達成する。さらに、モジュールはコンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータの格納に使用される任意のその他の媒体であってよい。
【0064】
実際に、実行可能コードのモジュールは、単一の命令であるか、または多くの命令であることができ、複数の異なるコード・セグメントにわたって、異なるプログラム間および複数のメモリ・デバイスにまたがって、分散されてもよい。同様に、操作可能なデータが、識別され、本明細書ではモジュール内で示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。操作可能なデータは、単一のデータ・セットとして収集されてよく、または異なるストレージ・デバイスを含む、異なる位置にわたって分散されてよく、システムまたはネットワーク上の単なる電子信号として、少なくとも部分的に存在してよい。
【0065】
本明細書の図において概略的に説明され、示されているように、本出願のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、実施形態の詳細な説明は、請求される本出願の範囲を限定するよう意図されておらず、単に、本出願の選択された実施形態を表している。
【0066】
当業者は、開示された順序とは異なる順序でステップを使用して、または開示された構成におけるハードウェア要素とは異なるハードウェア要素を使用して、あるいはその両方を使用して、前述の内容を実践できるということを、容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、特定の変更、変形、および代替の構造が明白であるということは、当業者にとって明らかであろう。
【0067】
本出願の好ましい実施形態が説明されたが、説明された実施形態が単なる例であり、それらの実施形態と同等のものおよびそれらの実施形態に対する変更の全範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)で考えた場合、本出願の範囲が添付の特許請求の範囲のみによって定義されるべきであるということが、理解されるべきである。