(57)【要約】  ノードのネットワークにおいてデータパケットを伝搬する方法が開示される。該方法は、ノードのうち１つで実現され、第１の期間の間、第１のデータパケットのセットを収集するステップであり、該セットは、ネットワークにおける１つ以上の第１のノードから受信された少なくとも１つのデータパケットを含む、ステップと、複数のエンコードされたデータパケットを取得するステップであり、複数のエンコードされたデータパケットの各１つは、ネットワークコーディングを使用して上記セットの２つ以上の第１のデータパケットを結合することにより生成される、ステップと、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットの、上記ノードに接続された１つ以上の近隣ノードへのマッピングを決定するステップと、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信するステップを含む。
2021517767.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークノードであって、
第１の期間の間、第１のデータパケットのセットを収集し、前記セットは、ネットワークにおける１つ以上の第１のノードから受信された少なくとも１つのデータパケットを含み、
複数のエンコードされたデータパケットを取得し、前記複数のエンコードされたデータパケットの各１つは、ネットワークコーディングを使用して前記セットの２つ以上の第１のデータパケットを結合することにより生成され、
前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットの、前記ノードに接続された１つ以上の近隣ノードへのマッピングを決定し、
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信する
ように構成されたノード。
【請求項２】
前記第１の期間は、予め定義された長さを有する、請求項１に記載のノード。
【請求項３】
前記マッピングを決定することは、前記セットの前記第１のデータパケットの、前記１つ以上の近隣ノードへの第１のサブマッピングと、前記複数のエンコードされたデータパケットの、前記１つ以上の近隣ノードへの第２のサブマッピングを決定することを含み、前記第１及び第２のサブマッピングは、前記セットの前記第１のデータパケット及び前記複数のエンコードされたデータパケットの各々の、前記１つ以上の近隣ノードへの予期されたリレー時間を示す、請求項１又は２に記載のノード。
【請求項４】
前記第１のサブマッピングを決定することは、
前記セットの各第１のデータパケットについて、
前記ノードに接続された２つ以上の近隣ノードを任意に選択することと、
前記選択された２つ以上の近隣ノードを前記第１のサブマッピングにおいて前記第１のデータパケットに関連づけることと、
を含む、請求項３に記載のノード。
【請求項５】
前記複数のエンコードされたデータパケットを取得することは、
前記１つ以上の近隣ノードの各々について、
前記第１のサブマッピングにおいて前記近隣ノードに関連づけられた２つ以上の第１のデータパケットを識別することと、
前記識別された２つ以上の第１のデータパケットを結合してエンコードされたデータパケットを生成することと、
を含む、請求項４に記載のノード。
【請求項６】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信することは、
前記セットの前記第１のデータパケットのうち１つ以上の各々について、
前記第１のデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、
前記次にスケジュールされたリレー時間の所定時間後、前記第１のデータパケットをリレーすることと、
を含む、請求項１乃至５のうちいずれか１項に記載のノード。
【請求項７】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信することは、
前記エンコードされたデータパケットのうち１つ以上の各々について、
前記エンコードされたデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、
前記次にスケジュールされたリレー時間の所定時間後、前記エンコードされたデータパケットをリレーすることと、
を含む、請求項１乃至６のうちいずれか１項に記載のノード。
【請求項８】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信することは、
前記近隣ノードのうち少なくとも１つの各々について、
前記近隣ノードが前記第１のサブマッピングにおいて２つ以上の関連づけられた第１のデータパケットを有すると決定することと、
前記２つ以上の関連づけられた第１のデータパケットのサブセットを前記近隣ノードに送信することと、
を含む、請求項４に記載のノード。
【請求項９】
ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実現される方法であって、前記ネットワーク内の各ノードは、他のノードに対する１つ以上の接続を有し、当該方法は、前記ノードのうち１つにおいて実現され、
第１の期間の間、第１のデータパケットのセットを収集するステップであり、前記セットは、前記ネットワークにおける１つ以上の第１のノードから受信された少なくとも１つのデータパケットを含む、ステップと、
複数のエンコードされたデータパケットを取得するステップであり、前記複数のエンコードされたデータパケットの各１つは、ネットワークコーディングを使用して前記セットの２つ以上の第１のデータパケットを結合することにより生成される、ステップと、
前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットの、前記ノードに接続された１つ以上の近隣ノードへのマッピングを決定するステップと、
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信するステップと、
を含む方法。
【請求項１０】
前記第１の期間は、予め定義された長さを有する、請求項９に記載の方法。
【請求項１１】
前記マッピングを決定するステップは、前記セットの前記第１のデータパケットの、前記１つ以上の近隣ノードへの第１のサブマッピングと、前記複数のエンコードされたデータパケットの、前記１つ以上の近隣ノードへの第２のサブマッピングを決定するステップを含み、前記第１及び第２のサブマッピングは、前記セットの前記第１のデータパケット及び前記複数のエンコードされたデータパケットの各々の、前記１つ以上の近隣ノードへの予期されたリレー時間を示す、請求項９又は１０に記載の方法。
【請求項１２】
前記第１のサブマッピングを決定するステップは、
前記セットの各第１のデータパケットについて、
前記ノードに接続された２つ以上の近隣ノードを任意に選択するステップと、
前記選択された２つ以上の近隣ノードを前記第１のサブマッピングにおいて前記第１のデータパケットに関連づけるステップと、
を含む、請求項１１記載の方法。
【請求項１３】
前記複数のエンコードされたデータパケットを取得するステップは、
前記１つ以上の近隣ノードの各々について、
前記第１のサブマッピングにおいて前記近隣ノードに関連づけられた２つ以上の第１のデータパケットを識別するステップと、
前記識別された２つ以上の第１のデータパケットを結合してエンコードされたデータパケットを生成するステップと、
を含む、請求項１２に記載の方法。
【請求項１４】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第１のデータパケットを前記１つ以上の近隣ノードに送信するステップは、
前記近隣ノードのうち少なくとも１つの各々について、
前記近隣ノードが前記第１のサブマッピングにおいて２つ以上の関連づけられた第１のデータパケットを有すると決定するステップと、
前記２つ以上の関連づけられた第１のデータパケットのサブセットを前記近隣ノードに送信するステップと、
を含む、請求項１２に記載の方法。
【請求項１５】
ノードのネットワークにおいてデータパケットを伝搬する処理に参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体であって、前記プロセッサ実行可能命令は、参加ノードの１つにおけるプロセッサにより実行されたときに、前記プロセッサに請求項９乃至１４のうちいずれか１項に記載の方法を実行させる、非一時的プロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータネットワークに関し、より詳細には、ノード、電子通信、及びネットワーキング技術のネットワークにおいてデータを伝搬するための方法及び装置に関する。それは、ブロックチェーン技術に関連した使用に特に適する。特に、それは、データのセキュアな伝送と、第三者による潜在的に悪意のあるイベントすなわち攻撃の削減に関する。
【背景技術】
【０００２】
本文献では、用語「ブロックチェーン」を用いて、電子的なコンピュータベースの分散台帳の全ての形態を含める。これらには、ブロックチェーン及びトランザクションチェーン技術、許可あり（permissioned）及び許可なし（un-permissioned）台帳、共有台帳、及びこれらの変形が含まれるが、これらに限定されない。ブロックチェーン技術の最も広く知られている適用はビットコイン（登録商標）台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、簡便さ及び例示の目的でビットコインが参照されることがあるが、本発明はビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。用語「ビットコイン（Bitcoin）」は、本明細書において、ビットコインプロトコルに由来し又は基づく全てのバリエーション又はバージョンを指すために使用される。
【０００３】
ブロックチェーンは、合意に基づく電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実現され、同様に、ブロックはトランザクションから構成される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【０００４】
新しいトランザクションを受信したネットワークノードは、すぐにそのトランザクションをネットワーク内の他のノードへプッシュするよう試みる。新しいトランザクションを他のノードに伝送する前に、それは「検証され（validated）」、このことは、それが基準のセットに対してチェックされて、トランザクションが適用可能なブロックチェーンプロトコルに従って適切なトランザクションの基本要件を満たすことを保証することを意味する。
【０００５】
トランザクションがブロックチェーンに書き込まれるために、それは、トランザクションを収集してこれらをブロックにするように設計されたノード（「マイナー」又は「マイニングノード」）によりブロックに組み込まれる。次いで、マイナーは、ノードに関する「プルーフオブワーク（proof  of  work）」を完成させるよう試みる。ブロックチェーンネットワーク全体にわたるマイナーが、トランザクションのブロックを組み立て、そのブロックに関連するプルーフオブワークを完成させるのが最初であるよう競争する。成功したマイナーは、その確認されたブロックをブロックチェーンに追加し、該ブロックは、ネットワークを通じて伝搬され、それにより、ブロックチェーンのコピーを維持する他のノードは、そのレコードを更新することができる。ブロックを受信したノードもまた、そのブロック及びその中の全てのトランザクションを「検証し」、それがプロトコルの形式要件に準拠することを保証する。
【０００６】
ビットコインなどのブロックチェーン技術の認識された利点の１つは、トランザクションの匿名性である。ビットコインユーザの個人の詳細は、ビットコインアドレスに形式的及び明示的に添付されておらず、ブロックチェーンのビットコイン台帳は、パブリックアドレス情報のみ含む。しかしながら、ブロックチェーンが、インターネット上で動作する分散型のピアツーピアネットワークとして構造化されているため、トランザクションの匿名性は、インターネットプロトコル（ＩＰ）アドレス情報を使用してユーザをネットワーク活動とリンクする攻撃により、損なわれる可能性がある。例示として、ブロックチェーンベースのネットワーク上で行われるＩＰトラフィック解析などの非匿名化攻撃（de-anonymization  attacks）は、関心のある第三者がネットワーク上でユーザによりサブミットされたトランザクションを監視し、パブリックに利用可能な情報を使用してトランザクションを彼らのソースにリンクすることを、例えばユーザの公開鍵を彼らのＩＰアドレスとリンクすることによって可能にするおそれがある。
【０００７】
トラフィック解析は、ネットワークノードによる、及びネットワークノード間のトランザクションの伝搬に依存するブロックチェーンベースのネットワークにとって特に問題である。トランザクションを受信するネットワーク内の各ノードは、トランザクションを検証し、その後、それをピアノードに送信する。ビットコインプロトコルにおいて、ノードは、トランザクションのリストを含む「ＩＮＶ」メッセージをピアノードに送信し、「ＩＮＶ」メッセージでアドバタイズされた（advertised）トランザクションの何らかのサブセットを選択する「ＧＥＴＤＡＴＡ」応答メッセージを受信する。次いで、ノードは、要求されたトランザクションをピアノードに送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。攻撃者は、トランザクションがネットワーク内で伝搬されるときに伝送されるデータを傍受し、解析し、最終的に、トランザクションのソースと宛先をリンクするために使用できる情報を得る可能性がある。
【０００８】
トラフィック解析又は他のタイプの非匿名化攻撃を通してネットワークの匿名性を損なう可能性を低減できる、ブロックチェーンベースのネットワークでトランザクションを伝搬する手法を提供することが望ましい。より一般的には、非匿名化攻撃に対する脆弱性を低減するための、ピアツーピアネットワークのノード間でデータをリレーする手法を提供することが望ましい。
【発明の概要】
【０００９】
このような解決法が次に考案されている。
【００１０】
ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法及び装置が提供される。
【００１１】
本発明は、ノードのネットワークにおいてデータパケットを伝搬するノードを提供し得る。ネットワーク内の各ノードは、他のノードに対する１つ以上の接続を有し得る。ノードは、プロセッサと、ネットワーク接続性を提供するネットワークインターフェースと、メモリを含み得る。メモリは、プロセッサ実行可能命令を含んでもよく、該命令は、プロセッサにより実行されたときに、プロセッサに以下で説明される動作のうち１つ以上を実行させる。ノードは、第１の期間の間、第１のデータパケットのセットを収集し、該セットは、ネットワークにおける１つ以上の第１のノードから受信された少なくとも１つのデータパケットを含むように構成され得る。上記命令は、プロセッサに、複数のエンコードされたデータパケットを取得し、複数のエンコードされたデータパケットの各１つは、ネットワークコーディングを使用して上記セットの２つ以上の第１のデータパケットを結合することにより生成されることをさせ得る。上記命令は、プロセッサに、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットの、上記ノードに接続された１つ以上の近隣ノードへのマッピングを決定することをさせ得、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信し得る。
【００１２】
いくつかの実装において、第１の期間は、予め定義された長さを有する。
【００１３】
いくつかの実装において、マッピングを決定することは、上記セットの第１のデータパケットの、１つ以上の近隣ノードへの第１のサブマッピングと、複数のエンコードされたデータパケットの、１つ以上の近隣ノードへの第２のサブマッピングを決定することを含み、第１及び第２のサブマッピングは、上記セットの第１のデータパケット及び複数のエンコードされたデータパケットの各々の、１つ以上の近隣ノードへの予期されたリレー時間を示す。
【００１４】
いくつかの実装において、第１のサブマッピングを決定することは、上記セットの各第１のデータパケットについて、上記ノードに接続された２つ以上の近隣ノードを任意に選択することと、選択された２つ以上の近隣ノードを第１のサブマッピングにおいて第１のデータパケットに関連づけることと、を含む。
【００１５】
いくつかの実装において、複数のエンコードされたデータパケットを取得することは、１つ以上の近隣ノードの各々について、第１のサブマッピングにおいて近隣ノードに関連づけられた２つ以上の第１のデータパケットを識別することと、識別された２つ以上の第１のデータパケットを結合してエンコードされたデータパケットを生成することと、を含む。
【００１６】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信することは、上記セットの第１のデータパケットのうち１つ以上の各々について、第１のデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、次にスケジュールされたリレー時間の所定時間後、第１のデータパケットをリレーすることと、を含む。
【００１７】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信することは、エンコードされたデータパケットのうち１つ以上の各々について、エンコードされたデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、次にスケジュールされたリレー時間の所定時間後、エンコードされたデータパケットをリレーすることと、を含む。
【００１８】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信することは、近隣ノードのうち少なくとも１つの各々について、近隣ノードが第１のサブマッピングにおいて２つ以上の関連づけられた第１のデータパケットを有すると決定することと、２つ以上の関連づけられた第１のデータパケットのサブセットを近隣ノードに送信することと、を含む。
【００１９】
本出願は、ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実現される方法を説明し得る。ネットワーク内の各ノードは、他のノードに対する１つ以上の接続を有し得る。当該方法は、ノードのうち１つで実現されてもよく、第１の期間の間、第１のデータパケットのセットを収集するステップであり、上記セットは、ネットワークにおける１つ以上の第１のノードから受信された少なくとも１つのデータパケットを含む、ステップを含み得る。当該方法は、複数のエンコードされたデータパケットを取得するステップであり、複数のエンコードされたデータパケットの各１つは、ネットワークコーディングを使用して上記セットの２つ以上の第１のデータパケットを結合することにより生成される、ステップを含み得る。当該方法は、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットの、上記ノードに接続された１つ以上の近隣ノードへのマッピングを決定するステップと、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第１のデータパケットを１つ以上の近隣ノードに送信するステップと、を含み得る。
【００２０】
本出願は、ノードのネットワークにおいてデータパケットを伝搬する処理に参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体をさらに説明し得、プロセッサ実行可能命令は、複数の参加ノードのうち１つにおけるプロセッサにより実行されたときに、プロセッサに本明細書に記載される方法のうち１つ以上の動作を実行させる。
【００２１】
本出願は、ネットワークにおけるノードレベルの匿名化を提供するソリューションを説明し得る。より詳細には、本明細書に記載される方法及びシステムは、ネットワーク内のデータ伝搬スキームにおけるノードの機能の不明瞭化を容易にし得る。攻撃者がネットワークにおけるノード間トラフィックを監視し、あるいは特定ノードの近隣ノードへのアクセスを獲得するしても、本方法は、そのような攻撃者が、特定のノードがネットワーク内で伝搬されているデータパケットのソースか又はリレーノードかを判定することをチャレンジングにし得る。ブロックチェーンネットワークにおけるノードの機能／役割を不明瞭化することにより、ネットワーク上の非匿名化攻撃の効果が低減され得、ブロックチェーン上のデータ伝送のセキュリティが改善され得る。
【００２２】
本明細書に記載の例示的な実装の多くので、ブロックチェーントランザクションを具体的に参照する。しかしながら、本明細書に記載の方法及び装置は、非ブロックチェーンデータ伝搬に関連して実現及び適用されてもよいことが理解されるであろう。より一般的には、本開示に記載の方法及び装置は、ピアツーピアネットワークのノード間で様々な異なるタイプのデータを伝搬する際の使用に適し得る。
【図面の簡単な説明】
【００２３】
本発明の１つの態様又は実施形態に関連して記載される任意の特徴は、１つ以上の他の態様／実施形態に関してさらに使用されてもよい。本発明のこれら及び他の態様は、本明細書に記載した実施形態から明らかであり、それを参照して解明されるであろう。次に、本発明の一実施形態が、単に例示として、添付の図面を参照して説明される。
【図１】ブロックチェーンに関連づけられた一例示的なネットワークを示す。
【図２】インプットバッファ及びアウトプットバッファを有する一例示的なブロックチェーンノードを図式的に示す。
【図３】ノードの一例示的ネットワーク内でデータパケットを伝搬するためのプロトコル、拡散ミキサプロトコル（ＤＭＰ）の概略図である。
【図４】ノードの簡略化された例示的なネットワークを示す。
【図５】ＤＭＰに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する一例示的なプロセスをフローチャート形式で示す。
【図６ａ】ＤＭＰに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【図６ｂ】ＤＭＰに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【図６ｃ】ＤＭＰに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【図７】一例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【００２４】
本出願において、用語「及び／又は」は、列挙された要素のうち任意の１つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしもさらなる要素を排除することなく、列挙された要素の全ての可能な組み合わせ及び副組み合わせを、カバーすることが意図される。
【００２５】
本出願において、フレーズ「・・・又は・・・のうち少なくとも１つ」は、列挙された要素のうち任意の１つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしも任意のさらなる要素を排除することなく、必ずしも要素の全てを要することなく、列挙された要素のうち任意の１つ以上をカバーすることが意図される。
【００２６】
最初に、図１を参照する。図１は、ブロックチェーンに関連づけられた一例示的なネットワークをブロック図形式で示し、これは、本明細書においてブロックチェーンネットワーク１００と呼ばれ得る。ブロックチェーンネットワーク１００は、ピアツーピアのオープンメンバーシップネットワークであり、これは、招待なく、又は他のメンバーからの同意なく、誰でも加わることができる。ブロックチェーンネットワーク１００が動作するブロックチェーンプロトコルのインスタンスを実行する分散電子装置は、ブロックチェーンネットワーク１００に参加することができる。このような分散電子装置は、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル、又は他の暗号通貨でもよい。
【００２７】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどのウェアラブルコンピュータ、又は他の電子装置を含む様々なタイプのものでもよい。
【００２８】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネットを通じて実現され、ノード１０２のいくつかは、地理的に分散された場所に位置してもよい。
【００２９】
ノード１０２は、ブロックにグループ化された、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持し、該ブロックの各々は、チェーン内の前のブロックのハッシュを含む。グローバル台帳は、分散された台帳であり、各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することができる。グローバル台帳に影響するノード１０２によるトランザクションは、他のノード１０２により立証され（verified）、それにより、グローバル台帳の正当性が維持される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークの実現及び動作の詳細は、当業者に十分理解されるであろう。
【００３０】
各トランザクションは、１つ以上のインプット及び１つ以上のアウトプットを典型的に有する。インプット及びアウトプットに埋め込まれたスクリプトは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転される先のアドレスでもよい。この価値は、次いで、未使用トランザクションアウトプット（unspent  transaction  output、ＵＴＸＯ）として、そのアウトプットアドレスに関連づけられる。次いで、後続のトランザクションが、インプットとしてそのアドレスを参照して、その価値を消費し、あるいは分散させることができる。
【００３１】
ノード１０２は、ネットワークルーティングからウォレットサービスまで多くの異なる機能を果たして、堅牢かつセキュアな非中央集権的なパブリック台帳を維持することができる。「フルノード（Full  nodes）」は、ブロックチェーンの完全かつ最新のコピーを含み、したがって、パブリック台帳上のトランザクション（使用済み又は未使用）を立証することができる。「軽量ノード（Lightweight  nodes）」（又はＳＰＶ）は、ブロックチェーンのサブセットを維持し、「簡易支払立証（simplified  payment  verification）」手法を使用してトランザクションを立証することができる。軽量ノードは、ブロックのヘッダのみをダウンロードし、各ブロック内のトランザクションをダウンロードするわけではない。したがって、これらのノードは、ピアに依存してそれらのトランザクションを立証する。フル又は軽量ノードであり得る「マイニングノード」は、トランザクションを検証し、ブロックチェーン上で新しいブロックを作成する責任を負う。通常、軽量ノードである「ウォレットノード」は、ユーザのウォレットサービスを取り扱う。ノード１０２は、ＴＣＰ／ＩＰ（トランスミッションコントロールプロトコル）などのコネクション指向プロトコルを使用して互いに通信する。
【００３２】
ノードがピアにトランザクションを送りたいとき、「ＩＮＶＥＮＴＯＲＹ」メッセージがピアに送られ、送信ノードが知っている１つ以上のインベントリオブジェクトを送信する。ピアが「ＧＥＴＤＡＴＡ」メッセージ、すなわちフルトランザクション要求でリプライした場合、トランザクションは「ＴＲＡＮＳＡＣＴＩＯＮ」メッセージを使用して送られる。トランザクションを受信したノードは、それが有効なトランザクションであることを前提として、それを同じ方法でピアに転送する。
【００３３】
次に、図２を参照する。図２は、インプットバッファ２０２及びアウトプットバッファ２０４を有する一例示的なノード２００を図式的に示す。例示的なノード２００は、ｉｎｔＡ、ｉｎｔＢ、ｉｎｔＣ、ｉｎｔＤ等として参照される複数のピアノードとのネットワークインターフェースを有する。インプットバッファ２０２は、様々なピアノードからの入ってくるトランザクションを示し、アウトプットバッファ２０４は、それぞれのインターフェースを通じてのピアノードへの送信のための、トランザクションに対応するアウトプットネットワークパケットを示す。ネットワークパケットは、ノード２００のオペレーティングシステムにより提供されるプリミティブに従って、アプリケーションレベルでシリアルに送受信される。トランザクションｘが単一のイーサネット／ＩＰパケットに適合すると仮定すると、ｍ個のピアへのその伝送は、ｍ個の異なるアウトプットネットワークパケットのバッファリングを必要とする。インプット及びアウトプット双方のネットワークパケットが、他の情報と共に、シリアライズされたトランザクションと、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェースＩＤを含む。
【００３４】
ビットコイントランザクションが生成されると、ソースノードは、ネットワークを通じてトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成したとき、それは、アウトプットバッファ２０４に置かれる。トランザクションは、ピアに直ちに転送されても、あるいはそうでなくてもよい。ビットコインネットワークの現在の実装において、トランザクションは、「拡散伝搬（diffusion  propagation）」として知られるメカニズムにより伝搬され、それにより、各トランザクションソースは、独立した指数関数的な遅延でその近隣にトランザクションを送信する。伝搬における遅延はランダムであり、悪意のある攻撃者のタイミング推定に不確実性をもたらすのに有用である。ピアが特定のトランザクションを受信すると、ピアは、同じトランザクションの将来のリレーを受け入れない可能性がある。例えば、トランザクションハッシュがピアのメモリプールに記憶されてもよく、ピアが同一のトランザクションを拒否することを可能にする。ネットワークを介したトランザクションの「拡散」は対称的であり、このことは、転送ノードが、トランザクションブロードキャストに影響を及ぼすのに近隣ノードのＩＰアドレスに関する情報を使用しないことを意味する。例えば、（ビットコインプロトコルで利用される）「標準」拡散プロセスにおいて、ブロードキャストノードのピアは全て同じトランザクションを受信し、各リレーインスタンスでは、一度に１つのトランザクションのみがピアごとにリレーされる。この「拡散」の対称性は、非匿名化攻撃を行う際にネットワークのピアツーピアのグラフ構造の知識を有する悪意のある第三者により利用される可能性がある。
【００３５】
本開示は、トラフィック解析攻撃に対する保護を改善するために、ブロックチェーンネットワーク上のデータリレーのための代替的な手法を提供する。より詳細には、提案されるリレープロトコルは、データパケットのソースノードとそれらのＩＰアドレスとの間の接続を偽装、隠蔽、又は不明瞭化（obfuscate）するために使用され得る。
【００３６】
本出願は、データパケットの高速伝搬を容易にする方法及び装置についても記載する。いくつかの実装において、ノードは、ピアノードに送信するために２つ以上のデータパケットを単一のメッセージに結合するためのネットワークコーディングの使用を選択的に可能にする。ネットワークコーディングの選択的な使用は、ノードが潜在的なボトルネックであると判定することに基づいてもよい。ノードのネットワークの文脈におけるボトルネックは、例えばデータパケットの伝送を遅くすることにより、ネットワークの性能を制限するノード間のリンクである。ボトルネック（ノード間のリンク）のソースはノードである。一般に、ノードがボトルネックである可能性があるかどうかの判定は、ノードへのインリンク（in-links）（ファンイン（fan-in））の数がノードからのアウトリンク（out-links）（ファンアウト（fan-out））の数を超えているかどうかに基づいてもよい。
【００３７】
ネットワークコーディングの導入は、ブロックチェーンネットワークなどのノードのネットワークにおけるデータ伝送の効率を高める可能性がある。
【００３８】
データリレープロトコル、拡散ミキサプロトコル（Diffusion  Mixer  Protocol、ＤＭＰ）が提案される。ＤＭＰは、２つの独立した拡散段階を含む。第１の段階（「ランダム差動リレー（random  differential  relay）」、又はＲＤＲ）は、リレーデータパケットの混合（mixing）とデータパケットソースの不明瞭化を可能にする。ランダム差動リレー段階の間、各ノードは、データパケットをネットワークにブロードキャストする前、予め定義された時間待機して、そのピアから複数のデータパケットを受信し、収集する。次いで、ノードは、その「エントリノード」に出ていく接続を作成し、これらのエントリノードのうち任意に（例えば、ランダムに）選択されたサブセットに、ほぼ同じタイムスタンプを有する異なるデータパケットを送信する。ノードのエントリノードは、ノードから直接出ていく接続を確立できる近隣ノードである。エントリノードの選択におけるランダム性とリレーデータにおける多様性は、攻撃者にとってネットワークトポロジの再構成をより困難にする可能性がある。
【００３９】
第２の段階（「標準拡散」）は、ネットワーク内のデータパケットの適時かつ信頼性のある伝搬を保証する。標準拡散段階において、各ノードは、全てのそのエントリノードに同じデータパケットをリレーし、各リレーインスタンスでは、一度に１つのデータパケットのみがエントリノード毎にリレーされる。
【００４０】
ブロックチェーンネットワークなどのノードのネットワークでは、ノードの１つ以上がＤＭＰを実現でき得ることに留意されたい。具体的に、ネットワークのノードの１つ以上は、ＤＭＰに参加することにより、その受信データパケットをそのエントリノードにリレーすることができ得る。参加ノードは、例えば、特定のデータパケットを伝搬するために、ＲＤＲプロセスと標準拡散プロセスとの間で選択してもよい。ネットワークのノードは、ＤＭＰに参加することを選んでもよく、非中央集権的方式を介してか、又は中央当局により組み立てられた参加ノードのグループに含めることによってかのいずれかで、プロトコルに加わる。参加ノードは、ＤＭＰに従ってそのアウトプットデータパケットをリレーする。特に、参加ノードがデータパケットを受信した場合、ノードは、ＤＭＰにより規定されたルールを使用して、そのノードに対して選択される伝搬モードに従って、受信データパケットを転送し得る。
【００４１】
データパケットリレーのための提案されるＤＭＰは、図３〜図７を参照して説明される。図３では、ＤＭＰの概略的な視角化を提供する。ノードの例示的なブロックチェーンネットワーク３００が示されている。各ノードはネットワーク端末（すなわち、ブロックチェーンノード）を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一ビットを送信又は受信することが可能であると仮定される。
【００４２】
この例示的なネットワーク３００において、ノードが新しいデータパケットを受信したとき、それはネットワークを通して全ての他のノードに伝搬される。各ノードは、新しいデータパケットをそれらのそれぞれのローカルセットに記憶し、新しいデータパケットをまだ新しいデータパケットを有さない任意のピアノードに転送する。ブロックチェーンネットワーク３００のピアツーピアの性質に起因して、全てのノードが新しいデータパケットを同時に受信するわけではなく、このことは、新しいデータパケットがネットワーク３００内の全てのノードに到達するのにいくらかの時間がかかることを意味する。
【００４３】
図３は、特定のデータパケットＴｘ１を伝搬するためのＤＭＰの２つの段階、すなわち、ランダム差動リレー３０２とＴｘ１の標準拡散３０４を示す。データパケットＴｘ１のソースノード３１０は、時間ｔ１に、データパケットＴｘ１を生成するか、又はそれをピアノードから受信するかのいずれかを行い得る。ＤＭＰに従って、ソースノード３１０は、受信／キューイングされたデータパケットのブロードキャストを開始する前に、その近隣ノードから少なくとも１つ以上の入ってくるデータパケットを受信するのを待機する。図３の例では、時間ｔ２に、データパケットＴｘ２がソースノード３１０により受信されると、時間ｔ３に、データパケットＴｘ１及びＴｘ２が、ソースノード３１０のエントリノードの任意に選択されたサブセットに送られる。データパケットＴｘ１は、エントリノード３１０ｃ及び３１０ｄに転送され、データパケットＴｘ２は、エントリノード３１０ａ及び３１０ｂに転送される。図３の例は単なる例示であり、特に、ソースノード３１０は、その受信データパケットのいずれかを伝搬する前に、２つより多くの入ってくるデータパケットを受信するのを待機してもよい。
【００４４】
エントリノードは、受信したデータパケットをそれら自身のピアにリレーする。例えば、ノード３１０ｂ及び３１０ｄは、データパケットＴｘ２及びＴｘ１をそれぞれ、それらの近隣ノードの１つ以上に転送する。ＤＭＰにおいて、データパケットの各受領者は、受信したデータパケットを伝搬するモードを独立して選択する。ノード３２０は、その拡散モードとして標準拡散を選択するノードの一例である。図３に示すように、ノード３２０は、同じデータパケットＴｘ１を全てのそのエントリノード、すなわち３２０ａ、３２０ｂ、３２０ｃ、３２０ｄ、及び３２０ｅに転送する。
【００４５】
本出願の一態様によれば、ブロックチェーンノードは、特定の期間にわたり第１のデータパケットを収集／バッファリングし、次いで、ネットワークコーディングを使用して、収集された第１のデータパケットのうち２つ以上を結合してエンコードされたデータパケットを生成する。すなわち、ブロックチェーンノードは、複数の第１のデータパケットをエンコードして、エンコードされたデータパケットをそれが分解可能なように生成する。エンコードされたデータパケットは、第１のデータパケットのうち最大のものに小さいオーバヘッドを加えたサイズを有する。
【００４６】
次に、図４を参照する。図４は、ネットワーク４００内のノードの簡略化された例示的なネットワークを示す。各ノードはネットワーク端末（例えば、ブロックチェーンノード）を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一ビットを送信又は受信することが可能であると仮定される。
【００４７】
ノードのうち２つは、ソースＳ１及びＳ２としてラベル付けされ、これらは、２つの新しいデータパケットｔｘ１及びｔｘ２をそれぞれ受信する。この例示的なネットワーク４００において、ノードが新しいデータパケットを受信したとき、それはネットワークを通して全ての他のノードに伝搬される。各ノードは、新たに受信したデータパケットを記憶し、データパケットをまだデータパケットを有さない任意のピアノードに転送する。ネットワーク４００のピアツーピアの性質に起因して、全てのノードが特定の新しいデータパケットを同時に受信するわけではなく、このことは、新しいデータパケットがネットワーク４００内の全てのノードに到達するのにいくらかの時間がかかることを意味する。
【００４８】
ブロックチェーンネットワーク４００のノードのうち２つは、受信者Ｒ１及びＲ２としてラベル付けされる。ノードＩ１及びＩ２は中間ノードであり、Ｉ１とＩ２との間のリンクは、時間Ｔにおけるネットワーク４００のボトルネックを表す。ノードＩ１が、２つの新しいデータパケットＴｘ１及びＴｘ２をほぼ同時に受信したとき、ノードＩ１は、２つのデータパケットのうちいずれを最初に送信するかを決定しなければならない。
【００４９】
ネットワークコーディングを使用し、ノードＩ１は、新しいデータパケットＴｘ１及びＴｘ２を、Ｔｘ１とＴｘ２とのうちより大きいものと同じサイズであるエンコードされたデータパケット（例えば、合成メッセージ）Ｍへ結合することができる。例えば、エンコードされたデータパケットＭは、Ｔｘ１及びＴｘ２の線形結合でもよい。ノードＩ１は、ＭをノードＩ２に送信し、次いで、ノードＩ２は、Ｍを受信者Ｒ１及びＲ２に転送する。受信者Ｒ１及びＲ２は、個々のデータパケットＴｘ１及びＴｘ２を復元することができる。例えば、受信者Ｒ１は、Ｔｘ１及びＭを受信する。Ｍは、Ｔｘ１及びＴｘ２の結合（例えば、Ｔｘ１とＴｘ２のバイナリＸＯＲ）に基づくため、Ｒ１は、Ｔｘ２を導出するために式（Ｔｘ１，Ｔｘ１＋Ｔｘ２）を解くだけでよい。同様に、Ｒ２はＴｘ２を受信し、Ｔｘ１を導出するために式（Ｔｘ２，Ｔｘ１＋Ｔｘ２）を解く必要がある。
【００５０】
ボトルネックは、ネットワークの構成と、データパケットが任意の所与の時間にどこに生成されるかに依存して、ある時間にわたり現れ、あるいは消える可能性がある。ボトルネックは、ネットワークの性能を大きく制限し、具体的にブロックチェーンネットワークの場合にはデータパケット（例えば、トランザクション又はブロック）の伝送を遅くする、ノード間のリンク（エッジ）である。しかしながら、ボトルネック（ノード間のリンク）のソースはノードである。
【００５１】
ネットワークコーディングは、当時の支配的なパケット交換ネットワーキングに対する一代替として開発された。ネットワークコーディングは、ネットワークをリンクキャパシティを有する有向グラフ（Ｎ，Ｌ）としてモデル化し、ノードｎ∈Ｎがブロードキャストキャパシティｈを達成するレートで受信者Ｒ⊆Ｎのセットに情報を通信できることを実証し、ｈは、ネットワークの内部ノードにおけるエンコーディングを条件として、ｓと任意のｒ∈Ｒとの間の最小カットの値である。
【００５２】
カットＣは、グラフＧ＝（Ｖ，Ｅ）の頂点Ｖの、２つの分離したサブセットＳ及びＴへの分割として定義される。カットＣ＝（Ｓ，Ｔ）のカットセットは、一方の端点をＳに、及び他方の端点をＴに有するエッジのセット｛（ｕ，ｖ）∈Ｅ｜ｕ∈Ｓ，ｖ∈Ｔ｝である。
【００５３】
ネットワークコーディングのための一例示的な方法論が、P.A.Chou、Y.Wu、及びK.Jainの「Practical  Network  Coding」により、Proceedings  of  the  annual  Allerton  conference  on  communication  control  and  computing、v.41、pp.40-49、The  University  (2003)（以降「Ｃｈｏｕ」）に記載されており、これはここで参照により援用される。この方法論は、ネットワークトポロジ又はエンコーディング若しくはデコーディング機能のいかなる中央集権的な知識についてもその必要を取り除いた。Ｃｈｏｕは、ネットワークＮが、単位キャパシティエッジ（ｅ）、送信者ｓ∈Ｖ、及び特定数の受信者Ｔ⊆Ｅを有する非巡回グラフＧ＝（Ｖ，Ｅ）として表現できると述べている。ノードの各エッジｅ∈Ｅのアウトプットｖ＝ｉｎ（ｅ）は、シンボルｙ（ｅ）を有し、シンボルｙ（ｅ）は、ｖに入るエッジｅ’上のシンボルｙ（ｅ’）の線形結合である。詳細には、アウトプットは、
【数１】
2021517767.tif 000003
により与えられる。ここで、ｙ（ｅ’ｉ）＝ｘｉ、ｉ＝１，．．．，ｈであり、ベクトルｍｅは、エッジｅについてのノードｖにおけるエンコーディング機能を表すローカルエンコーディングベクトルであり、ｈは、ブロードキャストキャパシティを、送信者と受信者との間の任意のカットにおけるエッジの最小数として示す。
【００５４】
Ｃｈｏｕは、任意のエッジｅ∈Ｅ上のアウトプットｙ（ｅ）は、ソースシンボルの線形結合
【数２】
2021517767.tif 000004
であり、係数のｈ次元ベクトルｇ（ｅ）＝［ｇ１（ｅ），．．．，ｇｈ（ｅ）］は、
【数３】
2021517767.tif 000005
により再帰的に取得できると述べており、ここで、エッジｅ’ｉ上のｇ（ｅ’ｉ）は、ｉ番目の単位ベクトルに対して開始される（initiated）。ベクトルｇ（ｅ）は、ｅに沿ったグローバルエンコーディングベクトルと呼ばれてもよい。そのｈ個の入ってくるエッジに沿ってシンボル
【数４】
2021517767.tif 000006
を受信する任意のノードｔは、グローバルエンコーディングベクトルの行列Ｇｔがランクｈを有する場合、ソースシンボルｘ１，．．．，ｘｈを復元することができる。
【００５５】
出ていくエッジｅのグローバルエンコーディングベクトルは、入ってくるエッジｅ’のグローバルエンコーディングベクトルのローカルエンコーディングに基づくものとして特徴付けられてもよい。
【００５６】
ネットワークコーディングは、ネットワークを通してデータパケットを伝搬するために使用され得ることが理解されるであろう。ネットワークコーディングの使用は、ネットワークから、データパケットを記憶する２つ以上のノードの損失から回復することができるというさらなる利点を提供し得る。特に、中間ノードは、データパケットに関する結合されたデータを含む１つ以上のメッセージを受信しているため、欠落したデータパケットは、ネットワークコーディングメッセージから復元され得る。
【００５７】
次に、図５を参照する。図５は、ＤＭＰのＲＤＲ段階においてネットワーク内でデータパケットを伝搬する一例示的な方法５００をフローチャート形式で示す。方法５００は、例えば、ネットワーク１００などのブロックチェーンネットワークのノードにより実現される。ノードは、この文脈では、マイニングノード、フルノード、バリデータノード（validator  node）、又はブロックチェーンネットワーク内の他タイプの別個のブロックチェーンノードを指すと理解されてもよい。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーンプロトコルを実現する実行ソフトウェアを有するコンピューティングデバイスである。
【００５８】
動作５０２において、ノードに関連づけられたクライアントが、第１の期間Ｔの間、第１のデータパケットのセットを収集する。すなわち、ノードは、ある期間にわたり、入ってくる第１のデータパケットを蓄積する。ブロックチェーンネットワークの文脈において、第１のデータパケットは、ブロックチェーントランザクションを含んでもよい。このセットは、ネットワーク内の１つ以上のピアノードから受信した少なくとも１つのデータパケット、すなわち、入ってくるデータパケットを含む。ブロックチェーンネットワークでは、期間Ｔの間、ノードは、リレーされるべき入ってくるトランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。期間Ｔの長さは、予め定義されてもよい。いくつかの例示的な実装において、時間の長さは、平均接続時間（connection  times）、単位時間当たりに受信される平均データパケット数、又はネットワークにおけるノードの中心性（すなわち、ノードへの入ってくる接続の数）などのパラメータに基づいて変化してもよい。期間Ｔの間、ノードは、第１のデータパケットを蓄積することのみを許可されてもよく、したがって、期間Ｔの間、いかなる第１のデータパケットも送信を防止されてもよい。
【００５９】
動作５０４において、複数のエンコードされたデータパケットが取得される。エンコードされたデータパケットの各々は、ネットワーキングコーディングとローカルエンコーディングベクトルを使用してセットの２つ以上の第１のデータパケットを結合することにより生成される。例えば、複数のエンコードされたデータパケットは、ＸＯＲネットワーキングコーディングスキームを使用することにより生成されてもよく、すなわち、エンコーディングは、第１のデータパケットのＸＯＲコーディングを含む。
【００６０】
上述したように、ランダム差動リレーは、ノードのネットワークにおいてデータパケットを伝搬するための「標準拡散」プロトコルからの逸脱を表す。ＲＤＲの実装において、伝搬ノードは、異なるデータパケットとデータパケットの結合とを同時にエントリノードのランダムに選択されたサブセットにリレーする。伝搬ノードは、データパケットがリレーされるべき１つ以上のエントリノードを各々の収集されたデータパケットにランダムに割り当てることにより、データ構造を作成してもよい。より一般的には、データパケットをそのピアにリレーするネットワークノードは、ノードにより収集された（すなわち、受信され又はローカルに生成された）複数のデータパケットの各々について実行すべきリレーのタイプを指定するそれ自身の内部ルーティングデータ構造を維持してもよい。
【００６１】
本明細書で提案される拡散ミキサプロトコルの文脈において、ＲＤＲを実装するブロックチェーンネットワーク内の各ノードは、それ自身のルーティングデータ構造又は「ＲＤＲテーブル」を独立して構築してもよい。ＲＤＲテーブルは、ＲＤＲプロトコルを採用する各ノードに対してデータパケット割り振りスキームを定義する。すなわち、個々のノードのＲＤＲテーブルは、どんなデータパケットがそのピアのいずれに及びいつリレーされるべきかを管理するために使用される。ＲＤＲテーブルは、所与の時間ΔＴＲＤＲに受信又は生成された全てのデータパケットと、データパケットのソースピアを追跡し得る。ＲＤＲテーブルは、さらなる情報を含んでもよく、例えば、データパケットの第１のインスタンスの到着時間（「ＴｏＡタイムスタンプ」）、データパケットをリレーするために選択された時間（「ＴｏＲタイムスタンプ」）、及び／又はノードにより受信された同じデータパケットのインスタンス数のカウンタなどである。以下に一例示的なＲＤＲテーブルを提供する。
【表１】
2021517767.tif 000007
【００６２】
ノードのローカルＲＤＲテーブルは、新しい情報（タイムアウト、受信又は生成されたトランザクション）が利用可能になったとき、動的に（すなわち、リアルタイムで）更新されてもよい。
【００６３】
動作５０６において、ノードが、（動作５０４で生成された）複数のエンコードされたデータパケット及び動作５０２で収集された第１のデータパケットの、ノードに接続された１つ以上の近隣ノードへのマッピングを決定する。マッピングは、各々のエンコードされたデータパケット及び収集されたセットの第１のデータパケットの、近隣ノードへの予期されたリレー時間を示し得る。この「マッピング」は、ネットワークのノードに対して個々のＲＤＲテーブルを構築するために使用される。詳細には、マッピングは、（ノードで受信又は生成される）データパケットの、その近隣ノードへの送信のための割り当てを示す。
【００６４】
動作５０８において、エンコードされたデータパケット及び収集されたセットの第１のデータパケットの、近隣ノードへのマッピングが決定されると、上記データパケットは、決定されたマッピングに従って近隣ノードに送信される。エンコードされたデータパケット及び収集された第１のデータパケットは、動作５０６で決定されたマッピングにおいてそれらがそれぞれ関連づけられたノードにリレーされる。
【００６５】
次に、図６ａを参照する。図６ａは、ＤＭＰのＲＤＲ段階においてネットワーク内でデータパケットを伝搬する一例示的な方法６００をフローチャート形式で示す。方法６００は、例えば、ネットワーク１００などのブロックチェーンネットワークのノードにより実現される。ノードは、この文脈では、マイニングノード、フルノード、バリデータノード、又はブロックチェーンネットワーク内の他タイプの別個のブロックチェーンノードを指すと理解されてもよい。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーンプロトコルを実現する実行ソフトウェアを有するコンピューティングデバイスである。
【００６６】
動作６０２において、ノードに関連づけられたクライアントは、第１の期間Ｔの間、第１のデータパケットのセットを収集する。ノードは、ある期間にわたり、入ってくる第１のデータパケットを蓄積し、該期間は、予め定義された長さを有し得る。
【００６７】
期間Ｔが満了した後、動作６０４において、収集された第１のデータパケットの、近隣ノードへの第１のマッピングが決定される。図６ｂは、動作６０４における第１のマッピングを決定する一例示的な手法を示す。動作７０２に示すように、いくつかの実装において、ノードは、収集された第１のデータパケットの異なるセットが転送されるそのエントリノードのサブセットを任意に選択してもよい。すなわち、各々の収集された第１のデータパケットについて、ノードは、そのエントリノード（すなわち、ノードが出ていく接続を有する近隣ノード）のうち２つ以上を任意に選択し、選択されたエントリノードに第１のデータパケットを割り当ててもよい。例えば、エントリノードは、ランダムに選択され得る。ノードは、いくつかの実装では、ネットワークに問い合わせてそのピアの新しいアドレスを取得してもよい。ビットコインネットワークにおいて、ノードは、ビットコインコア（Bitcoin  Core）、ＢｉｔｃｏｉｎＪ、又は他のブロックチェーンプロトコルに埋め込まれ、かつビットコイン（又は、他のブロックチェーン）コミュニティメンバにより維持される１つ以上のデータベースソース名（ＤＳＮ）に問い合わせてもよい。応答として、ノードは、入ってくる接続を受け入れる可能性がある利用可能なフルノードのＩＰアドレスを示す１つ以上のＤＳＮレコードを取得する。ピア発見の非中央集権的なバージョンは、ピアに、それらのＩＰアドレスとポート番号を含む「ＡＤＤＲ」メッセージをネットワークに加わる新しいノードに送信させることにより実現されてもよい。
【００６８】
いくつかの実装において、動作６０４の一部として、ネットワーク内のノードの１つ以上が、各々の収集された第１のデータパケットの、第１のデータパケットがリレーされるべきエントリノードへのその割り当てを追跡するテーブル又は他のデータ構造を維持してもよい。ＲＤＲプロセスでは、複数のデータパケットを、転送ノードにより同じピアノードに同時にリレーすることができる。
【００６９】
動作６０６において、複数のエンコードされたデータパケットが取得される。エンコードされたデータパケットの各々は、ネットワーキングコーディングとローカルエンコーディングベクトルを使用して、収集された第１のデータパケットのうち２つ以上を結合することにより生成される。例えば、ＸＯＲネットワーキングコーディングスキームを使用して、エンコードされたデータパケットを生成してもよい。
【００７０】
いくつかの実装において、エンコードされたデータパケットは、動作６０４で決定される第１のマッピングにおいて同じ近隣ノードに割り当てられ／関連づけられたデータパケットを結合することにより取得される。図６ｃは、エンコードされたデータパケットを取得する一例示的な手法を示す。動作８０２において、１つ以上の近隣ノードの各々について、ノードは、第１のマッピングにおいて近隣ノードに関連づけられた２つ以上の第１のデータパケットを識別し、識別された第１のデータパケットを結合してエンコードされたデータパケットを生成する。表１を参照すると、表１は、第１のデータパケット（すなわち、Ｔｘ１〜Ｔｘ３）の、近隣ノード（すなわち、ノードＡ〜Ｅ）への一例示的な第１のマッピングを示し、データパケットＴｘ２及びＴｘ３は双方とも近隣ノードＡに割り当てられ、データパケットＴｘ１及びＴｘ２は双方とも近隣ノードＣに割り当てられ、データパケットＴｘ１及びＴｘ２は双方とも近隣ノードＥに割り当てられている。この例示的なデータリレーでは、エンコードされたデータパケットＴｘ１＋Ｔｘ２及びＴｘ２＋Ｔｘ３は、動作６０６においてノードで生成され得る。
【００７１】
動作６０８において、生成されたエンコードされたデータパケットの、近隣ノードへの第２のマッピングが決定される。第２のマッピングは、エンコードされたデータパケットの各々を送信のために１つ以上の近隣ノードに割り当てる。少なくともいくつかの実装において、第２のマッピングは、エンコードされたデータパケットを、第１のマッピングにおいて該エンコードされたデータパケットの構成要素の第１のデータパケットのうち少なくとも１つに関連づけられたノードに割り当てる。例えば、第２のマッピングにより、エンコードされたデータパケットＴｘ１＋Ｔｘ２は近隣ノードＣ及び／又はＥに割り当てられてもよく、エンコードされたデータパケットＴｘ２＋Ｔｘ３は近隣ノードＡ又はＣに割り当てられてもよい。
【００７２】
動作６１０において、動作６０６で取得されたエンコードされたデータパケットと動作６０２で収集された第１のデータパケットが、第１及び第２のマッピングに従って近隣ノードに送信される。いくつかの実装において、ノードは、特定の近隣ノードが第１のマッピングにおいて２つ以上の関連づけられた第１のデータパケットを有することを判定してもよい。そのような場合、２つ以上の関連づけられた第１のデータパケットのサブセットのみが、その近隣ノードに送信されてもよい。例えば、表１に示された例において、データパケットＴｘ２のみが近隣ノードＡに送信されてもよい。エンコードされたデータパケットＴｘ２＋Ｔｘ３もまたノードＡに送信されるため、２つのデータパケットのうち１つのみが最終的にノードＡにリレーされるとしても、Ｔｘ２とＴｘ３の双方をノードＡで（例えば、ＸＯＲ演算により）導出することができる。ネットワークリレー中の伝送を傍受する攻撃者は、ネットワークコーディングスキームの詳細、又はさらにはネットワークコーディングの使用の詳細を知ることなしでは、結合されている第１のデータパケットのサブセットのみが送信される場合、エンコードされたデータパケットの構成要素の第１のデータパケットを導出することができ得ない。
【００７３】
エンコードされたデータパケット及び収集された第１のデータパケットの、近隣ノードへのマッピングは、方法６００で示唆された順序と異なる順序に従って決定されてもよいことに留意されたい。いくつかの実装において、第１のデータパケットのセットを収集した後、複数のエンコードされたデータパケットが、ネットワークコーディングを使用して収集された第１のデータパケットから生成されてもよく、エンコードされたデータパケットの、近隣ノードへの第１のマッピングが最初決定されてもよい。例えば、第１のマッピングは、各々のエンコードされたデータパケットを、近隣ノードのうち任意に選択されたサブセットに割り当ててもよい。次いで、収集された第１のデータパケットの、近隣ノードへの第２のマッピングを決定することができる。詳細には、第２のマッピングは、第１のデータパケットを、第１のマッピングにおいて第１のデータパケットを１つ以上の他のデータパケットと結合するエンコードされたデータパケットに関連づけられたノードに割り当ててもよい。
【００７４】
いくつかの実装において、第１のデータパケット及びエンコードされたデータパケットのリレーは、近隣ノードへのデータパケットの実際の送信に対して遅延が導入されるようにスケジュールすることができる。例えば、収集された第１のデータパケットのうち１つ以上の各々について、近隣ノードへの第１のデータパケットの、次のスケジュールのリレー時間が決定されてもよく、第１のデータパケットの実際のリレーは、所定時間だけ遅延されてもよい。すなわち、第１のデータパケットは、次にスケジュールされたリレー時間の所定時間後にリレーされてもよい。同様に、エンコードされたデータパケットのうち１つ以上の各々について、近隣ノードへのエンコードされたデータパケットの、次にスケジュールされたリレー時間が決定されてもよく、データパケットの実際のリレーは、次にスケジュールされたリレー時間の所定時間後に達成されてもよい。
【００７５】
次に、図７を参照する。図７は、参加ノード９００の簡略化された例をブロック図形式で示す。ノード９００は、プロセッサ９０２を含み、プロセッサ９０２は、１つ以上のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでもよい。ノード９００は、値、変数、及びいくつかの例ではプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ９０４と、有線又は無線ネットワークを通じてのネットワーク接続性を提供するネットワークインターフェース９０６とをさらに含む。
【００７６】
ノード９００は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション９０８を含み、該命令は実行されたときに、プロセッサ９０２に本明細書に記載の機能又は動作の１つ以上を実行させる。
【００７７】
本明細書に記載された装置及び処理、並びにブロックチェーンノードを構成するための記載された方法／処理を実現する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング手法及び言語を用いて実現され得ることが理解されよう。本出願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造、又は他のこのような実装詳細に限定されない。
【００７８】
上述の実施形態は、本発明を限定するものでなく例示するものであり、当業者は、別記の特許請求の範囲により定義される本発明の範囲から逸脱することなく多くの代替的な実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に付したいかなる参照符号も、特許請求の範囲を限定するものと解釈してはならない。単語「含んでいる」及び「含む」などは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含み、あるいは〜から成る」を意味し、「含んでいる」は、「含んでおり、あるいは〜から成っている」ことを意味する。要素の単数形の参照は、このような要素の複数形の参照を除外するものでなく、その逆もまた同様である。本発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を挙げる装置の請求項において、これらの手段のいくつかは、１つの、及び同じアイテムのハードウェアにより具現化されてもよい。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組み合わせが利益をもたらすように使用できないことを示すわけではない。
【図１】
2021517767.tif 000008
【図２】
2021517767.tif 000009
【図３】
2021517767.tif 000010
【図４】
2021517767.tif 000011
【図５】
2021517767.tif 000012
【図６ａ】
2021517767.tif 000013
【図６ｂ】
2021517767.tif 000014
【図６ｃ】
2021517767.tif 000015
【図７】
2021517767.tif 000016
【国際調査報告】
2021517767.tif 000017
2021517767.tif 000018
2021517767.tif 000019