(57)【特許請求の範囲】
【請求項１】
ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するためのコンピュータ実施方法であって、
前記第１のノードと前記第２のノードとの間に第１の通信セッションを確立するために、前記第１のノードによって、前記第２のノードに前記第１のノードのノード識別子を提供し、前記第１のノードによって、前記第２のノードから前記第２のノードのノード識別子を受信することと、
前記第１のノードによって、前記第１のノードと前記第２のノードとの間に第２の通信セッションが存在するかどうかを判断することと、
前記第１のノードと前記第２のノードとの間に前記第２の通信セッションが存在するという判断に応答して、前記第１のノードによって、前記第１のノードの前記ノード識別子及び前記第２のノードの前記ノード識別子に基づいて、前記第１の通信セッション及び前記第２の通信セッションのうちの１つを終了することと
を含み、
前記終了することが、
前記第１のノード及び前記第２のノードのうち、より大きなノード識別子を有するノードを決定すること、又は、前記第１のノード及び前記第２のノードのうち、より小さなノード識別子を有するノードを決定することと、
前記第１の通信セッション及び前記第２の通信セッションのうち、前記決定されたノードから送信された接続要求に基づいて確立された通信セッションを決定することと、
終了のために、前記第１の通信セッション及び前記第２の通信セッションのうちの前記決定された通信セッションを選択することと
を含む、方法。
【請求項２】
前記第１のノードによって、前記第１のノードと前記第２のノードとの間の接続を終了することをさらに含み、前記終了した接続は、前記第１の通信セッション及び前記第２の通信セッションのうちの前記終了した通信セッションが確立されていた接続である、請求項１に記載の方法。
【請求項３】
前記第１のノードによって、前記第２のノードに前記第１のノードのノード識別子を提供し、前記第１のノードによって、前記第２のノードから前記第２のノードのノード識別子を受信する前に、
前記第１のノードと前記第２のノードとの間の接続を確立するために、前記第１のノードによって、前記第２のノードに第１の接続要求を送信すること、又は、
前記第１のノードと前記第２のノードとの間の前記接続を確立するために、前記第１のノードによって、前記第２のノードから第２の接続要求を受信すること
のうちの１つをさらに含む、請求項１又は２に記載の方法。
【請求項４】
前記第１のノードと前記第２のノードとの間の前記接続が確立される前に、
前記第１のノードによって、前記第１のノードと前記第２のノードとの間に、前の通信セッションが存在するかどうかを判断することと、
前記第１のノードと前記第２のノードとの間に、前の通信セッションが存在しないという判断に応答して、前記第１のノードと前記第２のノードとの間の前記接続を確立するために、前記第１のノードによって、前記第２のノードと関連付けられたインターネットプロトコル（ＩＰ）アドレスに前記第１の接続要求を送信することと
をさらに含む、請求項３に記載の方法。
【請求項５】
前記第１のノードと前記第２のノードとの間の前記接続が確立された後に、
前記第１のノードによって、前記第１のノードと前記第２のノードとの間に、前の通信セッションが存在するかどうかを判断することと、
前記第１のノードと前記第２のノードとの間に、前の通信セッションが存在しないという判断に応答して、前記第１のノードによって、前記第２のノードに前記第１のノードの前記ノード識別子を前記提供すること、及び前記第２のノードから前記第２のノードの前記ノード識別子を前記受信することを実行することと
をさらに含む、請求項３に記載の方法。
【請求項６】
伝送制御プロトコル（ＴＣＰ）接続が、前記第１のノードと前記第２のノードとの間の前記接続として確立され、前記方法が、
前記ＴＣＰ接続に基づいて前記第１の通信セッションを確立すること
をさらに含む、請求項３に記載の方法。
【請求項７】
前記第２のノードに前記第１のノードの前記ノード識別子を提供する前に、前記第１のノードによって、前記第１のノードのプライベートキーを使用して前記第１のノードの前記ノード識別子を暗号化すること
をさらに含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するためのコンピューティングデバイスであって、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサに結合され、請求項１〜７のいずれか一項に記載の方法を実行するために、前記１つ又は複数のプロセッサによって実行可能である命令が格納された１つ又は複数のコンピュータ可読メモリと
を含む、コンピューティングデバイス。
【請求項９】
ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための装置であって、請求項１〜７のいずれか一項に記載の方法を実行するための複数のモジュールを含む、装置。
【請求項１０】
コンピューティングデバイスのプロセッサによって実行されると、請求項１〜７のいずれか一項に記載の方法を前記コンピューティングデバイスに実行させる命令が格納されたコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
[0001]  本明細書は、概して、コンピュータ技術に関し、より具体的には、ブロックチェーンシステムのノード間の通信を確立するための方法及びデバイスに関する。
【背景技術】
【０００２】
背景
[0002]  分散型台帳システム（ＤＬＳ）又は合意システムとしても知られているブロックチェーンシステムは、参加エンティティが、安全に且つ不変にデータを格納できるようにすることができる。ブロックチェーンシステムは、特定の使用事例を参照することなく、いかなるＤＬＳも含み得、パブリック、プライベート及びコンソーシアムブロックチェーンネットワークに対して使用することができる。パブリックブロックチェーンネットワークは、システムの使用及び合意プロセスへの参加を行うためにすべてのエンティティに対して開かれている。プライベートブロックチェーンネットワークは、特定のエンティティに対して提供され、読み取り及び書き込み許可を中央制御する。コンソーシアムブロックチェーンネットワークは、選択されたエンティティグループに対して提供され、合意プロセスを制御し、アクセス制御層を含む。
【０００３】
[0003]  ブロックチェーンシステムは、１つ又は複数のブロックチェーンを維持する。ブロックチェーンは、データ（取引など）を格納するためのデータ構造であり、悪意のある関係者によるデータの改ざん及び操作を防ぐことができる。
【０００４】
[0004]  ブロックチェーンシステムは、ピアツーピア（Ｐ２Ｐ）ネットワークを使用して実施され、ノードは、例えば、固定されたセントラルサーバを必要とすることなく、互いに直接通信する。Ｐ２Ｐネットワークの各ノードは、Ｐ２Ｐネットワークの別のノードとの通信を開始することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]  そのようなシステムの１つでは、Ｐ２Ｐネットワークの２つのノード（ノードＡ及びノードＢ）は両方とも、通信を開始するために、接続要求を互いに送信することができる。両方の接続要求が処理された場合は、結果として生じたネットワークは、ノードＡとノードＢとの間で確立された２つの冗長接続を含むことになる。別のそのようなシステムでは、２つのノードの間でより大きなノード識別子を有するノードのみが、接続要求の送信を認められる。より小さなノード識別子を有するノードが、いかなる接続要求を受信することも認められない場合は（例えば、セキュリティ上の理由で）、２つのノード間での通信を確立することはできない。
【課題を解決するための手段】
【０００６】
概要
[0006]  一態様では、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するためのコンピュータ実施方法は、第１のノードと第２のノードとの間に第１の通信セッションを確立するために、第１のノードによって、第２のノードに第１のノードのノード識別子を提供し、第１のノードによって、第２のノードから第２のノードのノード識別子を受信することと、第１のノードによって、第１のノードと第２のノードとの間に第２の通信セッションが存在するかどうかを判断することと、第１のノードと第２のノードとの間に第２の通信セッションが存在するという判断に応答して、第１のノードによって、第１のノードのノード識別子及び第２のノードのノード識別子に基づいて、第１の通信セッション及び第２の通信セッションのうちの１つを終了することとを含む。
【０００７】
[0007]  別の態様では、ブロックチェーンシステムの第１のノードを実施するためのコンピューティングデバイスは、１つ又は複数のプロセッサと、１つ又は複数のプロセッサに結合され、命令が格納された１つ又は複数のコンピュータ可読メモリとを含む。命令は、１つ又は複数のプロセッサによって実行可能であり、第１のノードと第２のノードとの間に第１の通信セッションを確立するために、ブロックチェーンシステムの第２のノードに第１のノードのノード識別子を提供し、第２のノードから第２のノードのノード識別子を受信することと、第１のノードと第２のノードとの間に第２の通信セッションが存在するかどうかを判断することと、第１のノードと第２のノードとの間に第２の通信セッションが存在するという判断に応答して、第１のノードのノード識別子及び第２のノードのノード識別子に基づいて、第１の通信セッション及び第２の通信セッションのうちの１つを終了することとが行われる。
【０００８】
[0008]  さらなる別の態様では、非一時的コンピュータ可読媒体は、コンピューティングデバイスのプロセッサによって実行されると、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法をコンピューティングデバイスに実行させる命令を格納する。方法は、第１のノードと第２のノードとの間に第１の通信セッションを確立するために、第１のノードによって、第２のノードに第１のノードのノード識別子を提供し、第１のノードによって、第２のノードから第２のノードのノード識別子を受信することと、第１のノードによって、第１のノードと第２のノードとの間に第２の通信セッションが存在するかどうかを判断することと、第１のノードと第２のノードとの間に第２の通信セッションが存在するという判断に応答して、第１のノードによって、第１のノードのノード識別子及び第２のノードのノード識別子に基づいて、第１の通信セッション及び第２の通信セッションのうちの１つを終了することとを含む。
【０００９】
図面の簡単な説明
[0009]  この明細書に組み込まれ、この明細書の一部を構成する添付の図面は、実施形態を示す。図面を参照する以下の説明では、別段の表現がない限り、異なる図面における同じ番号は、同じ又は同様の要素を表す。
【図面の簡単な説明】
【００１０】
【図１】[0010]実施形態による、ブロックチェーンシステムの概略図である。
【図２】[0011]実施形態による、ブロックチェーンシステムのノードを実施するためのコンピューティングデバイスの概略図である。
【図３】[0012]実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法のフローチャートである。
【図４】[0013]実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法のフローチャートである。
【図５】[0014]実施形態による、ブロックチェーンシステムの概略図である。
【図６】[0015]実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための装置のブロック図である。
【発明を実施するための形態】
【００１１】
詳細な説明
[0016]  本明細書の実施形態は、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法及びデバイスを提供する。方法及びデバイスは、第１のノード及び第２のノードの各々が、第１のノードと第２のノードとの間に通信セッションを確立するために接続要求を送信できるようにする。次いで、方法及びデバイスは、第１のノードと第２のノードとの間に複数の通信セッションが確立されているかどうかをチェックし、確立されている場合は、第１及び第２のノードのノード識別子に基づいて、余分な通信セッション及び余分な通信セッションが確立された接続を終了することができる。
【００１２】
[0017]  本明細書で開示される実施形態は、１つ又は複数の技術的効果を有する。いくつかの実施形態では、方法及びデバイスは、ブロックチェーンシステムのすべてのノードに接続を要求する能力を提供する。これにより、さらなる柔軟性が可能になり、ある条件下（例えば、ノードが、事前に確立されたあるルールを満たすことができず、従って、別のノードとの接続を要求することができない場合）で起こり得る欠乏を防ぐ。他の実施形態では、方法及びデバイスは、ブロックチェーンシステムの所定の１対のノード間に複数の通信セッションが確立されているかどうかをチェックする能力を提供する。これにより、ブロックチェーンシステムは、ノード間の冗長接続の確立を回避できるようになり、それにより、演算資源が節約され、同時に、安全な環境におけるノード間の通信が促進される。さらなる他の実施形態では、そのような安全な環境は、ある要件（例えば、あるノードは、セキュリティ上の理由で、接続を要求することのみが認められており、受信したすべての接続要求を拒否する必要がある場合）を満たす。さらなる他の実施形態では、方法及びデバイスは、ブロックチェーンシステムのノードを、それらのノードのＩＰアドレスを使用することなく、識別する能力を提供する。これにより、１つのＩＰアドレスを複数のノードをサポートするために使用することができ、それにより、システム柔軟性が向上する。実用的には、１つのＩＰアドレスが複数のノードをサポートできるようにすることで、１つのコンピューティングデバイスが複数のノードをホストすることが可能になり、それにより、ブロックチェーンシステムを実施するためのハードウェアコストが低減される。
【００１３】
[0018]  以下の説明は、実施形態の詳細を提供する。実施形態では、ブロックチェーンは、データ（例えば、取引）を格納するデータ構造であり、取引が不変であり且つ後に検証することができるように格納される。ブロックチェーンは、１つ又は複数のブロックを含む。各ブロックは、前のブロックの暗号学的ハッシュを含むことによって、ブロックチェーンにおいてそのブロックの直前にある前のブロックにリンクされる。また、各ブロックは、タイムスタンプ、それ自体の暗号学的ハッシュ及び１つ又は複数の取引も含み得る。一般にブロックチェーンシステムのノードによって既に検証されている取引は、ハッシュ化し、符号化してデータ構造（マークル木など）に埋め込むことができる。マークル木では、木の葉ノードにおけるデータがハッシュ化され、木の各枝におけるすべてのハッシュは、枝の根において連結することができる。このプロセスは、木の上から木全体の根まで続き、木のすべてのデータを表すハッシュを格納する。木に格納された取引を意味するハッシュは、木の構造と一致するかどうかを判断することによって、迅速に検証することができる。
【００１４】
[0019]  ブロックチェーンシステムは、１つ又は複数のブロックチェーンを管理、更新及び維持する演算ノードのネットワークを含む。ネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、又はコンソーシアムブロックチェーンネットワークであり得る。例えば、多くのエンティティ（数百、数千又は数百万のエンティティなど）がパブリックブロックチェーンネットワークで動作することができ、エンティティの各々は、パブリックブロックチェーンネットワークの少なくとも１つのノードにおいて動作する。それに従って、パブリックブロックチェーンネットワークは、参加エンティティに対するパブリックネットワークと見なすことができる。場合により、大多数のエンティティ（ノード）は、ブロックを有効にし、ブロックチェーンネットワークのブロックチェーンに追加するために、すべてのブロックにサインしなければならない。パブリックブロックチェーンネットワークの例は、ブロックチェーンと呼ばれる分散型台帳を活用する特定のピアツーピアペイメントネットワークを含む。
【００１５】
[0020]  一般に、パブリックブロックチェーンネットワークは、公的取引をサポートすることができる。公的取引は、パブリックブロックチェーンネットワークのノードのすべてと共有され、グローバルブロックチェーンに格納される。グローバルブロックチェーンは、すべてのノードにわたって複製されたブロックチェーンであり、すべてのノードは、グローバルブロックチェーンに対して完全な状態の合意にある。合意（例えば、ブロックチェーンへのブロックの追加への同意）に達するようにするため、パブリックブロックチェーンネットワークにおいて合意プロトコルが実施される。合意プロトコルの例は、プルーフ・オブ・ワーク（ＰＯＷ）（例えば、いくつかの暗号通貨ネットワークにおいて実施される）、プルーフ・オブ・ステーク（ＰＯＳ）及びプルーフ・オブ・オーソリティ（ＰＯＡ）を含む。
【００１６】
[0021]  一般に、プライベートブロックチェーンネットワークは、特定のエンティティに対して提供することができ、読み取り及び書き込み許可を中央制御する。エンティティは、どのノードがブロックチェーンネットワークに参加することができるかを制御する。結果的に、プライベートブロックチェーンネットワークは、一般に、誰がネットワークへの参加を認められているか及びその参加レベル（例えば、ある取引のみ）に対する制限が課されるパーミッション型ネットワークと呼ばれる。様々なタイプのアクセス制御メカニズム（例えば、既存の参加者が新しいエンティティの追加に投票する、規制機構がアドミッションを制御できる）を使用することができる。
【００１７】
[0022]  一般に、コンソーシアムブロックチェーンネットワークは、参加エンティティの間で私的なものであり得る。コンソーシアムブロックチェーンネットワークでは、合意プロセスは、許可されたノードセットによって制御され、１つ又は複数のノードは、それぞれのエンティティ（例えば、金融機関、保険会社）によって操作される。例えば、１０のエンティティ（例えば、金融機関、保険会社）のコンソーシアムは、コンソーシアムブロックチェーンネットワークを操作することができ、その各々は、コンソーシアムブロックチェーンネットワークの少なくとも１つのノードを操作する。それに従って、コンソーシアムブロックチェーンネットワークは、参加エンティティに対するプライベートネットワークと見なすことができる。いくつかの例では、各エンティティ（ノード）は、ブロックを有効にし、ブロックチェーンに追加するために、すべてのブロックにサインしなければならない。いくつかの例では、エンティティ（ノード）の少なくともサブセット（例えば、少なくとも７つのエンティティ）は、ブロックを有効にし、ブロックチェーンに追加するために、すべてのブロックにサインしなければならない。
【００１８】
[0023]  図１は、実施形態による、ブロックチェーンシステム１００の概略図を示す。図１を参照すると、ブロックチェーンシステム１００は、ブロックチェーン１２０で動作するように構成された多数のノード（例えば、ノード１０２〜１１０）を含み得る。ノード１０２〜１１０は、ピアツーピア（Ｐ２Ｐ）ネットワークなどのネットワーク１１２を形成することができる。ノード１０２〜１１０の各々は、ブロックチェーン１２０のコピーを格納するように構成されたコンピューティングデバイス（コンピュータ又はコンピュータシステムなど）でも、コンピューティングデバイス上で実行しているソフトウェア（プロセス又はアプリケーションなど）でもよい。ノード１０２〜１１０の各々は、一意識別子を有し得る。
【００１９】
[0024]  ブロックチェーン１２０は、図１のブロックＢ１〜Ｂ５などのデータブロックの形態の増大する記録リストを含み得る。ブロックＢ１〜Ｂ５の各々は、タイムスタンプ、前のブロックの暗号学的ハッシュ及び現在のブロックのデータ（金融取引などの取引であり得る）を含み得る。例えば、図１に示されるように、ブロックＢ５は、タイムスタンプ、ブロックＢ４の暗号学的ハッシュ及びブロックＢ５の取引データを含み得る。また、例えば、前のブロックの暗号学的ハッシュを生成するために、前のブロックに対してハッシュ操作を実行することができる。ハッシュ操作は、ＳＨＡ−２５６などのハッシュアルゴリズムを通じて、様々な長さの入力を固定長の暗号出力に変換することができる。
【００２０】
[0025]  ノード１０２〜１１０は、ブロックチェーン１２０の動作を実行するように構成することができる。例えば、ノード（例えば、ノード１０２）がブロックチェーン１２０への新しいデータの格納を希望する際、そのノードは、ブロックチェーン１２０に追加される新しいブロックを生成し、ネットワーク１１２の他のノード（例えば、ノード１０４〜１１０）に新しいブロックをブロードキャストすることができる。新しいブロックの正当性（例えば、その署名及び取引の有効性）に基づいて、他のノードは、新しいブロックを受け入れることを決定することができ、その結果、ノード１０２及び他のノードは、新しいブロックを、ブロックチェーン１２０の個々のコピーに追加することができる。このプロセスを繰り返すにつれて、ますます多くのデータブロックをブロックチェーン１２０に追加することができる。
【００２１】
[0026]  図２は、実施形態による、ブロックチェーンシステムのノード（例えば、ノード１０２（図１））を実施するためのコンピューティングデバイス２００の概略図を示す。図２を参照すると、コンピューティングデバイス２００は、通信インタフェース２０２、プロセッサ２０４、及びメモリ２０６を含み得る。
【００２２】
[0027]  通信インタフェース２０２は、ネットワークのコンピューティングデバイス２００と他のノード（例えば、ノード１０４〜１１０（図１））を実施するデバイスとの間の通信を機能させることができる。いくつかの実施形態では、通信インタフェース２０２は、インターネット規格又はプロトコルなどの１つ又は複数の通信規格、サービス総合デジタル網（ＩＳＤＮ）規格などをサポートするように構成される。いくつかの実施形態では、通信インタフェース２０２は、ローカルエリアネットワーク（ＬＡＮ）カード、ケーブルモデム、衛星モデム、データバス、ケーブル、無線通信チャネル、電波ベース通信チャネル、セルラ通信チャネル、インターネットプロトコル（ＩＰ）ベース通信デバイス、或いは、有線及び／又は無線通信用の他の通信デバイスのうちの１つ又は複数を含み得る。いくつかの実施形態では、通信インタフェース２０２は、パブリッククラウドインフラ、プライベートクラウドインフラ、ハイブリッドパブリック／プライベートクラウドインフラに基づき得る。
【００２３】
[0028]  プロセッサ２０４は、１つ又は複数の専用処理ユニット、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は様々な他のタイプのプロセッサ若しくは処理ユニットを含み得る。プロセッサ２０４は、メモリ２０６と結合され、メモリ２０６に格納された命令を実行するように構成される。
【００２４】
[0029]  メモリ２０６は、プロセッサ実行可能命令及びデータ（ブロックチェーン１２０（図１）のコピーなど）を格納するように構成することができる。メモリ２０６は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、電気的消去型プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、消去型プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、プログラム可能読み取り専用メモリ（ＰＲＯＭ）、読み取り専用メモリ（ＲＯＭ）、磁気メモリ、フラッシュメモリ又は磁気若しくは光ディスクなど、任意のタイプの揮発性若しくは不揮発性メモリデバイス又はその組合せを含み得る。メモリ２０６の命令がプロセッサ２０４によって実行されると、コンピューティングデバイス２００は、ブロックチェーン１２０上の動作を実行することができる。
【００２５】
[0030]  ブロックチェーンシステム１００（図１）の動作を機能させるため、ネットワーク１１２のノード１０２〜１１０は、ノード間通信方法に従って動作することができる。このノード間通信方法は、ネットワークの第１のノードと第２のノードとの間の通信を確立するためのプロセスを指定することができ、その結果、２つのノード間の冗長接続を回避することができる。
【００２６】
[0031]  例えば、ノード１０２及び１０４は、接続要求を送信する前に、例えば、それらのノードの対応するＩＰアドレスに基づいて、接続が既に確立されているかどうかを検証することができる。それに加えて、接続要求が受信され次第、受信ノードは、接続が既に確立されているかどうかを検証することができる。受信ノードは、接続が既に確立されていると判断した場合は、接続要求を拒否し、冗長接続を効果的に回避することができる。
【００２７】
[0032]  図３は、実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法３００のフローチャートを示す。例えば、ブロックチェーンシステムは、複数のノードを含むＰ２Ｐネットワークとして実施することができる。また、例えば、方法３００は、第２のノードとしてのノード１０４（図１）との通信を開始するために、第１のノードとしてのノード１０２（図１）によって実行することができる。
【００２８】
[0033]  図１及び３を参照すると、ステップ３０２では、ノード１０２は、ノード１０２とノード１０４との間に前の通信セッションが既に存在しているか又は確立されているかどうかを検証することができる。例えば、通信セッションは、ノード１０２とノード１０４との間の一時的な対話型の情報交換であり得る。具体的な実施形態に応じて、通信セッションは、アプリケーション層又はセッション層に確立することができる。いくつかの実施形態では、ノード１０２は、ノード１０４のノード識別子を使用して、ノード１０２とノード１０４との間に通信セッションが既に存在しているかどうかを検証することができる。
【００２９】
[0034]  ステップ３０４では、ノード１０２とノード１０４との間に前の通信セッションが既に存在しているとノード１０２が判断した場合は、ノード１０２は、方法３００の実行を終了することができる。他方では、ノード１０２とノード１０４との間に前の通信セッションが存在しないとノード１０２が判断した場合は、ステップ３０６において、ノード１０２は、ノード１０４と関連付けられたＩＰアドレスに接続要求を送信することができる。例えば、接続要求は、ノード１０２とノード１０４との間の物理的な通信チャネルを確立するように構成される。いくつかの実施形態では、ノード１０２は、トランスポート層レベルでのノード１０４との接続を要求することができる（例えば、ノード１０４との伝送制御プロトコル（ＴＣＰ）接続の確立を要求する）。いくつかの実施形態では、ノード１０２は、ノード１０４との通信セッションを作成することなくＴＣＰ接続を確立することによって、ステップ３０６を実行することができる。
【００３０】
[0035]  ステップ３０８では、ノード１０２は、ノード１０４との接続が成功したかどうかを判断することができる。成功しなかった場合（例えば、ノード１０４によって接続要求が拒否されたため）は、ノード１０２は、方法３００の実行を終了することができる。他方では、接続が成功したとノード１０２が判断した場合は、ステップ３１０において、ノード１０２は、ノード１０２とノード１０４との間に通信セッションが存在するかどうかをさらに判断することができる。例えば、ノード１０２がノード１０４との接続を要求する際、ノード１０４もまた、ノード１０２と接続してノード１０２との通信セッションを確立することを要求する可能性がある。ステップ３１０においてノード１０２とノード１０４との間に通信セッションが存在するとノード１０２が判断した場合は、ノード１０２は、方法３００の実行を終了することができる。そうでなければ、ノード１０２は、ステップ３１２に進むことができる。
【００３１】
[0036]  ステップ３１２では、ノード１０２は、ノード１０４にノード１０２のノード識別子を提供し、且つ、ノード１０４からノード１０４のノード識別子を受信することによって、ノード１０４とノード識別子を交換することができる。いくつかの実施形態では、ノード１０２及びノード１０４の各々は、セキュリティ上の理由で、それらのノードのプライベートキーを使用して交換にサインすることができる。例えば、ノード１０２は、ノード１０２のプライベートキーを使用してそのノード識別子を暗号化することができ、ノード１０４は、ノード１０４のプライベートキーを使用してそのノード識別子を暗号化することができる。しかし、いくつかの実施形態では、ノード１０２及び１０４が安全な環境（例えば、隔離されたテスト環境）で動作している場合など、プライベートキーを使用して交換にサインすることは必要ではない場合がある。具体的な実施形態は変化し得るが、この交換の目的は、ステップ３１４においてノード１０２とノード１０４との間の接続上に通信セッションを確立するためにノード識別子の交換を機能させることである点を理解されたい。
【００３２】
[0037]  ステップ３１６では、ノード１０２は、ノード１０２とノード１０４との間に別の通信セッション（例えば、たった今ステップ３１４において確立された通信セッションとは異なる前の通信セッション）が既に存在しているかどうかを判断することができる。例えば、ノード１０２がノード１０４とノード識別子を交換する際、ノード１０４もまた、ノード１０２との通信セッションを確立する可能性がある。ノード１０２とノード１０４との間に他の通信セッションが存在しないとノード１０２が判断した場合は、ノード１０２は、方法３００の実行を終了することができる。他方では、ノード１０２とノード１０４との間に別の通信セッションが既に存在しているとノード１０２が判断した場合は、ノード１０２は、事前に確立されたルールに基づいて、通信セッションのうちの１つを終了するために、ステップ３１８に進むことができる。また、ノード１０２は、終了した通信セッションが確立されていたノード１０２とノード１０４との間の接続を終了することもできる。
【００３３】
[0038]  事前に確立されたルールは、ノード識別子に基づき得る。例えば、ノード１０２は、より大きな（又はより小さな）ノード識別子を有するノードによって開始された通信セッションの終了を選択することができる。また、事前に確立されたルールは、使用される因子が通信セッションを系統的に区別できる限り、他の因子にも基づき得、その結果、ある通信セッションの存続を認め、且つ、他のすべての通信セッションを識別して終了することができる。例えば、事前に確立されたルールは、ノード１０２が、以前に確立されたすべての通信セッションを終了し、ごく最近確立された通信セッションを維持することを要請し得る。
【００３４】
[0039]  図４は、実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための方法４００のフローチャートである。例えば、ブロックチェーンシステムは、複数のノードを含むＰ２Ｐネットワークで実施される。また、例えば、方法４００は、第１のノードとしてのノード１０２（図１）によって送信された接続要求を処理するために、第２のノードとしてのノード１０４（図１）によって実行することができる。
【００３５】
[0040]  図１及び４を参照すると、ステップ４０２では、ノード１０４は、ノード１０２によって送信された接続要求を受信することができる。いくつかの実施形態では、ノード１０２は、トランスポート層レベルでのノード１０４との接続を要求することができる（例えば、ノード１０４との伝送制御プロトコル（ＴＣＰ）接続の確立を要求する）。ノード１０４は、要求を処理し、ノード１０２との接続を相応に確立することができる。
【００３６】
[0041]  ステップ４０４では、ノード１０４は、ノード１０２にノード１０４のノード識別子を提供し、且つ、ノード１０２からノード１０２のノード識別子を受信することによって、ノード１０２とノード識別子を交換することができる。いくつかの実施形態では、ノード１０２及びノード１０４の各々は、セキュリティ上の理由で、それらのノードのプライベートキーを使用して交換にサインすることができる。しかし、いくつかの実施形態では、ノード１０２及び１０４が安全な環境（例えば、隔離されたテスト環境）で動作している場合など、プライベートキーを使用して交換にサインすることは必要ではない場合がある。具体的な実施形態は変化し得るが、この交換の目的は、ステップ４０６においてノード１０２とノード１０４との間の接続上に通信セッションを確立するためにノード識別子の交換を機能させることである点を理解されたい。
【００３７】
[0042]  ステップ４０８では、ノード１０４は、ノード１０２とノード１０４との間に別の通信セッション（例えば、たった今ステップ４０６において確立された通信セッションとは異なる前の通信セッション）が既に存在しているかどうかを判断することができる。例えば、ノード１０４がノード１０２とノード識別子を交換する際、ノード１０２もまた、ノード１０４との通信セッションを確立する可能性がある。ノード１０２とノード１０４との間に前の通信セッションが存在しないとノード１０４が判断した場合は、ノード１０４は、方法４００の実行を終了することができる。他方では、ノード１０２とノード１０４との間に前の通信セッションが既に存在しているとノード１０４が判断した場合は、ノード１０４は、事前に確立されたルールに基づいて、通信セッションのうちの１つを終了するために、ステップ４１０に進むことができる。また、ノード１０４は、終了した通信セッションが確立されていたノード１０２とノード１０４との間の接続を終了することもできる。
【００３８】
[0043]  いくつかの実施形態では、ノード１０４は、どの通信セッションを終了するかを選択するために、ノード１０２によって使用されたものと同じ事前に確立されたルールを使用するように構成される。例えば、終了するセッションとして、より大きなノード識別子を有するノードによって開始された通信セッションを選択するようにノード１０２が構成される場合は、ノード１０４は、同じルールを使用するように構成され、それにより、ノード１０２とノード１０４とが同じ通信セッションを終了させるようにすることができる。
【００３９】
[0044]  理解されるように、上記で説明される第１のノードと第２のノードとの間の通信を確立するための方法は、第１及び第２のノードのノード識別子に基づく。従って、示される実施形態において複数のノードをサポートするために１つのＩＰアドレスを使用することができる。その結果、示される実施形態において１つのコンピューティングデバイスを使用して複数のノードを実施することができる。
【００４０】
[0045]  図５は、実施形態による、ブロックチェーンシステム５００の概略図を示す。図５を参照すると、ブロックチェーンシステム５００は、ブロックチェーン１２０で動作するように構成されたノード１０２〜１１０（図１）と同様に、ブロックチェーン５２０で動作するように構成された複数のノード５０２〜５１０を含み得る。その上、コンピューティングデバイス５３０が、ノード５０２〜５０６をホストするように構成される。コンピューティングデバイス５３０は、コンピューティングデバイス２００（図２）と同様の方法で実施することができる。すなわち、コンピューティングデバイス５３０は、通信インタフェース、プロセッサ及びメモリを含み得る。いくつかの実施形態では、コンピューティングデバイス５３０は、ノード５０２〜５０６をホストするために、ハイパーバイザ及び／又は仮想マシンを実施することができる。いくつかの実施形態では、コンピューティングデバイス５３０は、並列実行されるプロセス又はアプリケーションとしてノード５０２〜５０６をホストすることができる。また、コンピューティングデバイス５３０は、ノード５０２〜５０６をホストするために他のコンピューティング技法を使用することもできる。
【００４１】
[0046]  １つのコンピューティングデバイスを使用して複数のノードをホストする能力を有することで、ブロックチェーンシステムに対するハードウェアコストを低減することができる。しかし、これらのコンピューティングデバイスは、複数のノードをホストする必要はない。図５に示されるように、例えば、コンピューティングデバイス５４０及び５５０を使用して、単に１つのノード５０８及び５１０をそれぞれホストすることができ、すべてのノード５０２〜５１０は、上記で説明されるように、ブロックチェーン５２０で動作するために集合的に動作することができる。その上、本明細書の実施形態に従って構成された方法は、ノードが接続要求を開始できることに対して、いかなる制限も課さないということに留意されたい。
【００４２】
[0047]  上記で提示される様々な実施形態は、単なる例示であり、制限するものではない。例えば、ノード１０２及び１０４（図１）は、方法３００（図３）及び４００（図４）の実行を示すために使用されているが、ブロックチェーンシステム１００のいかなるノードも、別のノードとの通信を要求するために方法３００を使用することができる。同様に、ブロックチェーンシステム１００のいかなるノードも、受信した接続要求を処理するために方法４００を使用することができる。
【００４３】
[0048]  方法３００及び４００は、上記で説明されるパブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、又はコンソーシアムブロックチェーンネットワークなど、様々なタイプのブロックチェーンネットワークにおいて使用することができる。また、方法３００及び４００は、本明細書の精神及び範囲から逸脱することなく、例えば、記録管理、暗号通貨、ブロックチェーンベースの分散型台帳又は同様のものなど、様々なタイプのアプリケーションにおいても使用することができる。
【００４４】
[0049]  図６は、実施形態による、ブロックチェーンシステムの第１のノードと第２のノードとの間の通信を確立するための装置６００のブロック図である。例えば、装置６００は、第１のノード及び第２のノードの各々を実施することができる。また、例えば、装置６００は、ソフトウェアプロセスの実施形態であり得、方法３００（図３）又は方法４００（図４）に相当し得る。図６を参照すると、装置６００は、交換モジュール６０２、判断モジュール６０４、及び終了モジュール６０６を含み得る。
【００４５】
[0050]  交換モジュール６０２は、第１のノードと第２のノードとの間に第１の通信セッションを確立するために、第２のノードに第１のノードのノード識別子を提供し、第２のノードから第２のノードのノード識別子を受信することができる。判断モジュール６０４は、第１のノードと第２のノードとの間に第２の通信セッションが存在するかどうかを判断することができる。終了モジュール６０６は、第１のノードと第２のノードとの間に第２の通信セッションが存在するという判断に応答して、第１のノードのノード識別子及び第２のノードのノード識別子に基づいて、第１の通信セッション及び第２の通信セッションのうちの１つを終了することができる。
【００４６】
[0051]  また、装置６００は、通信モジュール６０８も含み得る。通信モジュール６０８は、第１のノードと第２のノードとの間の接続を確立するために、第２のノードに接続要求を送信すること、又は、第２のノードから接続要求を受信することができる。通信モジュール６０８は、第１のノードと第２のノードとの間の接続上に通信セッションもさらに確立することができる。
【００４７】
[0052]  上記で説明されるモジュールの各々は、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアの組合せとして実施することができる。例えば、上記で説明されるモジュールの各々は、メモリに格納されたプロセッサ実行命令を使用して実施することができる。また、例えば、上記で説明されるモジュールの各々は、説明される方法を実行するための、１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コントローラ、マイクロコントローラ、マイクロプロセッサ又は他の電子コンポーネントと共に実施することができる。さらに、例えば、上記で説明されるモジュールの各々は、コンピュータチップ又はエンティティを使用することによって実施することも、ある機能を有する製品を使用することによって実施することもできる。一実施形態では、装置６００は、コンピュータであり得、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、Ｅメール受信及び送信デバイス、ゲームコンソール、タブレットコンピュータ、着用可能デバイス、又は、これらのデバイスの任意の組合せであり得る。
【００４８】
[0053]  装置６００の各モジュールの機能及び役割の実施プロセスに対し、上記で説明される方法の対応するステップを参照することができる。簡単にするため、ここでは、詳細を省略する。
【００４９】
[0054]  いくつかの実施形態では、コンピュータプログラム製品は、上記で説明される方法をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する非一時的コンピュータ可読記憶媒体を含み得る。
【００５０】
[0055]  コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を格納することができる非一時的なデバイスであり得る。コンピュータ可読記憶媒体は、例えば、これらに限定されないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置又は前述の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去型プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、命令が記録されたパンチカード又は溝状の隆起構造などの機械的符号化デバイス、及び、前述の任意の適切な組合せを含む。
【００５１】
[0056]  上記で説明される方法を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、オブジェクト指向プログラミング言語及び従来の手続き型プログラミング言語を含む１つ若しくは複数のプログラミング言語の任意の組合せで記載されたソースコード若しくはオブジェクトコードであり得る。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとしてコンピューティングデバイス上で完全に実行することも、第１のコンピューティングデバイス上で部分的に実行し、第１のコンピューティングデバイスからリモート設置された第２のコンピューティングデバイス上で部分的に実行することもできる。後者のシナリオでは、第２のリモートコンピューティングデバイスは、ローカルエリアネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じて、第１のコンピューティングデバイスに接続することができる。
【００５２】
[0057]  コンピュータ可読プログラム命令は、機械を生成するために汎用若しくは専用コンピュータ又は他のプログラム可能データ処理装置のプロセッサに提供することができ、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、上記で説明される方法を実施するための手段を作成することができる。
【００５３】
[0058]  図のフローチャート及び図面は、アーキテクチャ、機能性、並びに、本明細書の様々な実施形態によるデバイス、方法及びコンピュータプログラム製品の可能な実施形態の動作を示す。この関連で、フローチャート又は図面のブロックは、特定の機能を実施するための１つ又は複数の実行可能命令を含むソフトウェアプログラム、セグメント又はコードの一部分を表し得る。また、いくつかの代替の実施形態では、ブロックに記述される機能は、図に記述される順番以外で起こり得ることにも留意すべきである。例えば、関与する機能性に応じて、連続して示される２つのブロックを、実際には、実質的に同時に実行することも、場合により、ブロックを逆の順番で実行することもできる。また、図面及び／又はフローチャートの各ブロック、並びに図面及びフローチャートのブロックの組合せは、指定された機能若しくは動作を実行する専用ハードウェアベースシステムによって又は専用ハードウェアとコンピュータ命令の組合せによって実施できることにも留意されたい。
【００５４】
[0059]  明確にするために別個の実施形態の文脈において説明されている本明細書のある特徴は、単一の実施形態において組み合わせて提供することもできることが理解されている。逆に、簡単にするために単一の実施形態の文脈において説明されている本明細書の様々な特徴は、別々に、任意の適切な下位組合せで又は本明細書の他の任意の説明される実施形態に適するように提供することもできる。様々な実施形態の文脈において説明されているある特徴は、そのように記述されない限り、それらの実施形態の絶対不可欠な特徴ではない。
【００５５】
[0060]  本明細書では、様々な要素を説明するために「第１の」及び「第２の」などの用語が使用されているが、要素はこれらの用語によって制限されるべきではなく、これらの用語は要素を区別するためだけに使用されることが理解されている。例えば、本明細書の精神及び範囲から逸脱することなく、第１の要素（例えば、第１のノード）は、第２の要素（例えば、第２のノード）と呼ぶこともでき、同様に、第２の要素は、第１の要素と呼ぶこともできる。
【００５６】
[0061]  本明細書は、特定の実施形態と併せて説明してきたが、多くの代替の形態、変更形態及び変形形態が当業者にとって明らかであろう。それに従って、以下の請求項は、請求項の条件内に収まるそのようなすべての代替の形態、変更形態及び変形形態を取り入れる。
【図１】
0006920442.tif 000002
【図２】
0006920442.tif 000003
【図３】
0006920442.tif 000004
【図４】
0006920442.tif 000005
【図５】
0006920442.tif 000006
【図６】
0006920442.tif 000007