(57)【要約】  ノードのネットワークにおいてデータパケットを伝搬させる方法が開示される。当該方法は、第１時間期間の間に、第１データパケットのセットを収集するステップであって、前記セットは前記ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１データパケットを含む、ステップと、前記ネットワークノードのリンクの中で、前記ネットワークノードに接続された複数の近隣ノードへの利用可能帯域幅を決定するステップと、中継するために前記第１データパケットの各々を１つ以上の近隣ノードに割り当てるマッピングを決定するステップであって、前記マッピングは前記第１データパケットの各々の中継の期待時間を示し、前記マッピングを決定するステップは、前記第１データパケットの各々について、以下：前記第１データパケットが中継のために前記マッピングにより割り当てられる第１の数のピアノード；１つ以上のピアノードに前記第１データパケットを中継するときの遅延の第１時間長；前記ネットワークノードからの前記第１データパケットのホップ数；のうちの少なくとも１つを設定するための基礎として前記利用可能帯域幅を使用する、ステップと、前記の決定したマッピングに従い、前記複数の近隣ノードへ、前記セットのうちの前記第１データパケットを送信するステップと、を含む。
2021524197.tif 000002
【特許請求の範囲】
【請求項１】
ノードのネットワークの中でデータパケットを伝搬する、コンピュータにより実施される方法であって、
ネットワークノードにおいて、第１時間期間の間に、第１データパケットのセットを収集するステップであって、前記セットは、前記ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１データパケットを含む、ステップと、
前記ネットワークノードのリンクの中で、前記ネットワークノードに接続された複数の近隣ノードへの利用可能帯域幅を決定するステップと、
中継するために、前記第１データパケットの各々を１つ以上の近隣ノードに割り当てるマッピングを決定するステップであって、前記マッピングは、前記第１データパケットの各々の中継の期待時間を示し、前記マッピングを決定するステップは、前記第１データパケットの各々について、以下：
前記第１データパケットが中継のために前記マッピングにより割り当てられる第１の数のピアノード、
１つ以上のピアノードに前記第１データパケットを中継するときの遅延の第１時間長、
前記ネットワークノードからの前記第１データパケットのホップ数、
のうちの少なくとも１つを設定するための基礎として前記利用可能帯域幅を使用する、ステップと、
前記の決定したマッピングに従い、前記複数の近隣ノードへ、前記セットのうちの前記第１データパケットを送信するステップと、
を含む方法。
【請求項２】
前記利用可能帯域幅を決定するステップは、前記複数の近隣ノードへの少なくとも１つの前記ネットワークノードのリンクの各々の中で、利用可能帯域幅の指示子を取得するステップを含む、請求項１に記載の方法。
【請求項３】
前記マッピングを決定するステップは、
前記利用可能帯域幅に基づき、前記第１データパケットが中継のために前記マッピングにより割り当てられるピアノードの数の可能な値の範囲を決定するステップと、
前記第１の数のピアノードとして設定するために、前記決定した範囲の中の数を選択するステップと、
を含む、請求項１又は２に記載の方法。
【請求項４】
第１データパケットの前記セットから選択された少なくとも１つの第１データパケットについて、以下：
前記少なくとも１つの第１データパケットが中継のために割り当てられるピアノードの第１セット、
前記第１セットの第２サブセットであって、前記第２サブセットは、前記ネットワークノードから前記少なくとも１つの第１データパケットを受信すると、前記少なくとも１つの第１データパケットを自身の近隣ノードへ中継するよう指定されたピアノードのみを含む、第２サブセット、
を識別するステップ、を更に含む請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記決定したマッピングに従い前記複数の近隣ノードへ、前記セットのうちの前記第１データパケットを送信するステップは、
前記少なくとも１つの第１データパケットについて、
前記第２サブセットに含まれるピアノードへ、前記少なくとも１つの第１データパケットを送信するステップと、
前記第２サブセットに含まれないピアノードへ、変更データパケットを送信するステップであって、前記変更データパケットは、前記少なくとも１つの第１データパケットのピアノードへの更なる中継が禁止されることを示すために変更された前記少なくとも１つの第１データパケットを含む、ステップと、
を含む、請求項４に記載の方法。
【請求項６】
前記少なくとも１つの第１データパケットのピアノードへの更なる中継が禁止されることを示すために、前記少なくとも１つの第１データパケットの中の追加ビットを設定するステップ、を更に含む請求項５に記載の方法。
【請求項７】
前記少なくとも１つの第１データパケットは、第１データパケットの前記セットから任意に選択される、請求項４〜６のいずれか一項に記載の方法。
【請求項８】
前記少なくとも１つの第１データパケットは、前記少なくとも１つの第１データパケットが前記ネットワークノードにより１つ以上のピアノードへ以前に送信されたことがあると決定することに基づき、選択される、請求項４〜７のいずれか一項に記載の方法。
【請求項９】
前記決定したマッピングに従い、前記複数の近隣ノードへ前記セットのうちの前記第１データパケットを送信するステップは、
前記セットのうちの１つ以上の第１データパケットの各々について、
前記第１データパケットを近隣ノードへ中継するための次のスケジューリングされた時間を決定するステップと、
前記第１データパケットを中継する前記次のスケジューリングされた時間の後の前記第１時間長である時点で、前記第１データパケットを中継するステップと、
を含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記第１時間長は、前記利用可能帯域幅に反比例する、請求項９に記載の方法。
【請求項１１】
前記ネットワークノードは、少なくとも１つの第１データパケットを生成するよう構成され、前記マッピングを決定するステップは、
前記少なくとも１つの生成された第１データパケットの各々について、
前記ネットワークノードにより前に生成された所定数の第１データパケットを識別するステップと、
前記前に生成された第１データパケットに関連する中継ノードセットのリストを取得するステップであって、前記中継ノードセットは、前記前に生成された第１データパケットがそれぞれ中継される近隣ノードを含む、ステップと、
前記取得したリストの中で、前記中継ノードセットと異なる近隣ノードのセットを識別することに基づき、中継ノードの第１セットを選択するステップと、
を含む、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
中継ノードの前記第１セットを選択するステップは、前記取得したリストに含まれない２つ以上の近隣ノードのセットを任意に選択するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記複数の近隣ノードへの前記ネットワークノードのリンクの中の前記利用可能帯域幅の変化を検出するステップ、を更に含み、
前記マッピングを決定するステップは、前記第１データパケットの各々について、以下：
前記第１データパケットが中継のために前記マッピングにより割り当てられる第１の数のピアノード、
前記第１データパケットを１つ以上のピアノードへ中継するときの遅延の第１時間長、
前記ネットワークノードからの前記第１データパケットのホップ数、
のうちの少なくとも１つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含む、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
請求項１〜１３のいずれか一項に記載の方法を実行するコンピュータにより実装されたシステム。
【請求項１５】
コンピュータシステムを請求項１〜１３のいずれか一項に記載の方法を実行するようにする命令を格納した非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータネットワークに関し、より詳細には、ノードのネットワークの中でデータを伝搬させる方法及び装置、電子通信、及びネットワーク技術に関する。本発明は、ブロックチェーン技術に関連して使用することに特に適する。特に、本発明は、データのセキュアな伝送、及び第三者による起こり得る悪意あるイベント、つまり攻撃の低減に関する。
【背景技術】
【０００２】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Ｂｉｔｃｏｉｎ台帳である。Ｂｉｔｃｏｉｎは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はＢｉｔｃｏｉｎブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。用語「Ｂｉｔｃｏｉｎ」は、（オリジナル）Ｂｉｔｃｏｉｎプロトコル／実装／プラットフォームから得られるプロトコル／実装／プラットフォームの全てのバージョン及び変形を含むことを意図している。
【０００３】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Ｂｉｔｃｏｉｎプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション（unspent  transaction,  UTXO）のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真（TRUE）と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、（ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、（ｉｉ）マイナーにより構築された新しいブロックに追加される、（ｉｉｉ）マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【０００５】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Ｂｉｔｃｏｉｎの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益（例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等）を利用しながら、それらの用途をより多様化し得る。
【０００６】
Ｂｉｔｃｏｉｎのようなブロックチェーン技術の認知されている利点の１つは、トランザクションの匿名性である。Ｂｉｔｃｏｉｎユーザの個人的詳細は、Ｂｉｔｃｏｉｎアドレスに公式に明示的に付帯されず、ブロックチェーンのＢｉｔｃｏｉｎ台帳は公開アドレス情報のみを含む。しかしながら、ブロックチェーンは、インターネット上で動作する分散型のピアツーピアネットワークとして構造化されるので、トランザクションの匿名性は、ユーザをネットワーク活動にリンクするＩＰ（Internet  Protocol）アドレス情報を使用する攻撃により危険に晒される。説明のために、ブロックチェーンに基づくネットワーク上で行われるＩＰトラフィック分析のような匿名化解除攻撃は、関心のある第三者に、ユーザによりネットワークへと提出されたトランザクションをモニタさせ、公に利用可能な情報を用いてトランザクションをそれらのソースに、例えばユーザの公開鍵を彼らのＩＰアドレスにリンクすることにより、リンクさせる。
【０００７】
トラフィック分析は、ネットワークノードによる及びそれらの間のトランザクションの伝搬に依存するブロックチェーンに基づくネットワークでは、特に問題である。トランザクションを受信するネットワーク内の各ノードは、トランザクションを検証し、後にそれをピアノードへ送信する。Ｂｉｔｃｏｉｎプロトコルでは、ノードは、トランザクションのリストを含む「ＩＮＶ」メッセージをピアノードへ送信し、「ＩＮＶ」メッセージの中で広告されたトランザクションの何からのサブセットを選択する「ＧＥＴＤＡＴＡ」応答メッセージを受信する。ノードは、次に、要求されたトランザクションをピアノードへ送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。攻撃者は、トランザクションがネットワーク内を伝搬するとき送信されるデータを傍受し分析して、最終的にはトランザクションの送信元（ソース）と宛先とをリンクするために使用可能な情報を得る。
【０００８】
トラフィック分析を通じてネットワーク匿名性を危険に晒す可能性又は他の種類の匿名化解除攻撃の可能性を低減できる、ブロックチェーンに基づくネットワークにおけるトランザクションを伝搬する技術を提供することが望ましい。より一般的には、匿名化解除攻撃に対する脆弱性を低減するために、ピアツーピアネットワークのノード間でデータを中継する技術を提供することが望ましい。
【０００９】
このようなソリューションがここで考案された。
【００１０】
従って、本発明によると、添付の請求項において定められる方法及び装置が提供される。
【発明の概要】
【００１１】
本発明は、ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実施される方法を提供し得る。方法は、
ネットワークノードにおいて、第１時間期間の間に、第１データパケットのセットを収集するステップであって、前記セットは、前記ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１データパケットを含む、ステップと、
前記ネットワークノードに接続された複数の近隣ノードへの前記ネットワークノードのリンクの中で、利用可能帯域幅を決定するステップと、
前記第１データパケットの各々を中継のために１つ以上の近隣ノードに割り当てるマッピングを決定するステップであって、前記マッピングは、前記第１データパケットの各々の中継の期待時間を示す、ステップと、を含んでよい。前記マッピングの決定は、前記第１データパケットの各々について、以下：
前記第１データパケットが中継のために前記マッピングにより割り当てられるピアノードの第１の数、
前記第１データパケットを１つ以上のピアノードへ中継するときの遅延の第１時間長、
前記ネットワークノードからの前記第１データパケットのホップ数、
のうちの少なくとも１つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含んでよい。前記方法は、前記セットのうちの前記第１データパケットを、前記決定したマッピングに従い、前記複数の近隣ノードへ送信するステップを更に含んでよい。
【００１２】
幾つかの実装では、前記利用可能帯域幅を決定するステップは、前記複数の近隣ノードへの少なくとも１つの前記ネットワークノードのリンクの各々の中で、利用可能帯域幅の指示子を取得するステップを含んでよい。
【００１３】
幾つかの実装では、前記マッピングを決定するステップは、
前記利用可能帯域幅に基づき、前記第１データパケットが中継のために前記マッピングにより割り当てられるピアノードの数の可能な値の範囲を決定するステップと、
前記第１の数のピアノードとして設定するために、前記決定した範囲の中の数を選択するステップと、を含んでよい。
【００１４】
幾つかの実装では、前記方法は、第１データパケットの前記セットから選択された少なくとも１つの第１データパケットについて、以下：
前記少なくとも１つの第１データパケットが中継のために割り当てられるピアノードの第１セット、
前記第１セットの第２サブセットであって、前記第２サブセットは、前記ネットワークノードから前記少なくとも１つの第１データパケットを受信すると、前記少なくとも１つの第１データパケットを自身の近隣ノードへ中継するよう指定されたピアノードのみを含む、第２サブセット、
を識別するステップ、を更に含んでよい。
【００１５】
幾つかの実装では、前記決定したマッピングに従い前記複数の近隣ノードへ、前記セットのうちの前記第１データパケットを送信するステップは、
前記少なくとも１つの第１データパケットについて、
前記第２サブセットに含まれるピアノードへ、前記少なくとも１つの第１データパケットを送信するステップと、
前記第２サブセットに含まれないピアノードへ、変更データパケットを送信するステップであって、前記変更データパケットは、前記少なくとも１つの第１データパケットのピアノードへの更なる中継が禁止されることを示すために変更された前記少なくとも１つの第１データパケットを含む、ステップと、を含んでよい。
【００１６】
幾つかの実装では、前記方法は、前記少なくとも１つの第１データパケットのピアノードへの更なる中継が禁止されることを示すために、前記少なくとも１つの第１データパケットの中の追加ビットを設定するステップ、を更に含んでよい。
【００１７】
幾つかの実装では、前記少なくとも１つの第１データパケットは、第１データパケットの前記セットから任意に選択されてよい。
【００１８】
幾つかの実装では、前記少なくとも１つの第１データパケットは、前記少なくとも１つの第１データパケットが前記ネットワークノードにより１つ以上のピアノードへ前に送信されたという決定に基づき、選択されてよい。
【００１９】
幾つかの実装では、前記決定したマッピングに従い、前記複数の近隣ノードへ前記セットのうちの前記第１データパケットを送信するステップは、
前記セットのうちの１つ以上の第１データパケットの各々について、
前記第１データパケットを近隣ノードへ中継するための次のスケジューリングされた時間を決定するステップと、
前記第１データパケットを中継する前記次のスケジューリングされた時間の後の前記第１時間長である時点で、前記第１データパケットを中継するステップと、を含んでよい。
【００２０】
幾つかの実装では、前記第１時間長は、前記利用可能帯域幅に逆比例してよい。
【００２１】
幾つかの実装では、前記ネットワークノードは、少なくとも１つの第１データパケットを生成するよう構成され、前記マッピングを決定するステップは、
前記少なくとも１つの生成された第１データパケットの各々について、
前記ネットワークノードにより前に生成された所定数の第１データパケットを識別するステップと、
前記前に生成された第１データパケットに関連する中継ノードセットのリストを取得するステップであって、前記中継ノードセットは、前記前に生成された第１データパケットがそれぞれ中継される近隣ノードを含む、ステップと、
前記取得したリストの中で、前記中継ノードセットと異なる近隣ノードのセットを識別することに基づき、中継ノードの第１セットを選択するステップと、を含んでよい。
【００２２】
幾つかの実装では、中継ノードの前記第１セットを選択するステップは、前記取得したリストに含まれない２つ以上の近隣ノードのセットを任意に選択するステップを含んでよい。
【００２３】
幾つかの実装では、前記方法は、前記複数の近隣ノードへの前記ネットワークノードのリンクの中の前記利用可能帯域幅の変化を検出するステップ、を更に含んでよく、
前記マッピングを決定するステップは、前記第１データパケットの各々について、以下：
前記第１データパケットが中継のために前記マッピングにより割り当てられるピアノードの第１の数、
前記第１データパケットを１つ以上のピアノードへ中継するときの遅延の第１時間長、
前記ネットワークノードからの前記第１データパケットのホップ数、
のうちの少なくとも１つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含む。
【００２４】
本発明は、前述の又は本願明細書の別の場所に記載の方法を実行するためのコンピュータにより実装されるシステムを提供し得る。
【００２５】
本発明は、前述の又は本願明細書の別に記載の方法を実行するようコンピュータシステムを適応するための命令を格納した非一時的コンピュータ可読記憶媒体を提供してよい。
【００２６】
本願は、ノードのネットワークの中でデータの伝搬中に帯域幅を管理する技術を提供する。ノードによるそのピアへのデータパケットの中継は、ノードの近隣ノードへの該ノードのリンクの中で帯域幅利用可能性を考慮するよう制御され得る。従って、ノードは、自身の利用可能帯域幅の変化にリアルタイムに適応し、自身のデータ中継割り当てを相応して更新することが可能であってよい。本願明細書に記載の技術及び発見法は、データ伝搬処理における冗長中継の削減をもたらし、ネットワークトラフィック及びノード間帯域幅の使用率の向上を実現する。
【００２７】
本願は、ネットワーク内のノードレベルの匿名性を提供するソリューションも記載する。より具体的には、本願明細書に記載の方法及びシステムは、ネットワーク内のデータ伝搬方式においてノードの機能を分かりにくくすることを助ける。攻撃者がネットワーク内のノード間トラフィックを監視し又は特定ノードの近隣ノードへのアクセスを得ようとした場合でも、本発明の方法は、このような攻撃者が特定ノードがネットワーク内を伝搬しているデータパケットのソース又は中継ノードであるかを決定することを困難にする。ブロックチェーンネットワークの中のノードの機能／役割を分かりにくくするために、ネットワークに対する匿名性解除攻撃の効き目が低減され、ブロックチェーン上のデータ伝送のセキュリティが向上され得る。
【００２８】
更に、本願の技術は、ノードが近隣ノードへの該ノードのリンクの帯域幅使用率を管理することを可能にすると同時に、該ノードにより中継されたデータパケットのソース及び宛先の匿名性を維持することを助ける。ノードのリソース（例えば、帯域幅）に対する制約を考慮することにより、データ伝搬のためのより現実的、実用的な方式が得られる。これｒなお技術は、ネットワークのノードを制御するエンティティに、それらの選好及び必要に従い、必要に応じてデータ伝搬プロトコルのパラメータを設定する能力も提供する。
【００２９】
本願明細書に記載の例示的な実装の多くでは、ブロックチェーントランザクションを特に参照する。しかしながら、本願明細書に記載の方法及び装置は、非ブロックチェーントランザクション伝搬と関連して実装され適用されてよいことが理解される。より一般的には、本開示に記載の方法及び装置は、ピアツーピアネットワークのノードの間で種々の異なる種類のデータを伝搬するときに使用するのに適してよい。
【図面の簡単な説明】
【００３０】
本発明の一態様又は実施形態に関連して記載される任意の特徴は、１つ上の他の態様／実施形態に関して使用されてもよい。本発明の上述の及び他の態様は、ここに記載の実施形態から明らかであり及びそれらを参照して教示される。本発明の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図１】ブロックチェーンに関連する例示的なネットワークを示す。
【図２】インプットバッファ及びアウトプットバッファを有する例示的なブロックチェーンノードを概略的に示す。
【図３】例示的なノードのネットワークにおいてトランザクションを伝搬するプロトコル、ＤＭＰ（Diffusion  Mixer  Protocol）の概略図である。
【図４】ＤＭＰに従うノードのネットワークにおけるトランザクションの中継の一例を示す。
【図５】ＤＭＰに従うブロックチェーンネットワーク内でデータパケットを伝搬するための例示的な処理をフローチャート形式で示す。
【図６】ＤＭＰに従うブロックチェーンネットワーク内でデータパケットを伝搬するための別の例示的な処理をフローチャート形式で示す。
【図７】ＤＭＰに従うブロックチェーンネットワーク内でデータパケットを伝搬するための別の例示的な処理をフローチャート形式で示す。
【図８】ブロックチェーンネットワークの中のノードで生成され又は受信されたデータパケットを送信する例示的な処理をフローチャート形式で示す。
【図９】ブロックチェーンネットワーク内のノードで生成されたデータパケットを送信するための例示的な処理をフローチャート形式で示す。
【図１０】ブロックチェーンネットワーク内のノードで受信されたデータパケットを中継するための例示的な処理をフローチャート形式で示す。
【図１１】ノードのネットワーク内でデータパケットを伝搬するときの宛先ミキシングの例を示す。
【図１２】ノードのネットワーク内のデータパケットの遅延中継の例を示す。
【図１３】ノードの帯域幅制約に基づきデータ中継割り当てを決定する例示的な処理をフローチャート形式で示す。
【図１４】ノードの帯域幅制約に基づきデータ中継割り当てを決定する別の例示的な処理をフローチャート形式で示す。
【図１５】ノードの帯域幅制約の変化に基づきデータ中継割り当てを更新する例示的な処理をフローチャート形式で示す。
【図１６】例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【００３１】
先ず図１を参照すると、図１は、本願明細書でブロックチェーンネットワーク１００と呼ばれ得るブロックチェーンに関連した例示的なネットワークをブロック図形式で示す。ブロックチェーンネットワーク１００は、招待無しに又は他のメンバからの承諾無しに誰でも参加できるピアツーピア開放型メンバーネットワークである。ブロックチェーンネットワーク１００の動作するブロックチェーンプロトコルのインスタンスを実行している分散型電子装置は、ブロックチェーンネットワーク１００に参加してよい。このような分散型電子装置は、ノード１０２と呼ばれてよい。ブロックチェーンプロトコルは、例えばＢｉｔｃｏｉｎプロトコル又は他の暗号通貨であってよい。
【００３２】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップコンピュータのようなコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む種々の種類であってよい。
【００３３】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含んでよい適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネットを介して実装され、ノード１０２のうちの幾つかは、地理的に離れた場所に配置されてよい。
【００３４】
ノード１０２は、ブロックチェーン上の全部のトランザクションのグローバル台帳を維持する。トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は分散台帳であり、各ノード１０２は、グローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２により検証され、グローバル台帳の有効性が維持される。Ｂｉｔｃｏｉｎプロトコルを使用するようなブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【００３５】
各トランザクションは、標準的に１つ以上のインプット及び１つ以上のアウトプットを有する。スクリプトは、インプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるべきアドレスであってよい。この価値は、次に、未使用トランザクションアウトプット（unspent  transaction  output  (UTXO)）として該アウトプットアドレスに関連付けられる。後のトランザクションは、従って、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【００３６】
ノード１０２は、堅牢且つセキュアな分散型公開台帳を維持するために、ネットワークルーティングからウォレットサービスまで多数の異なる機能を遂行できる。「フルノード」は、ブロックチェーンの完全且つ最新のコピーを含み、従って、公開台帳にある任意のトランザクション（使用済み又は未使用）を検証できる。「軽量ノード」（又はＳＰＶ）は、ブロックチェーンのサブセットを維持し、「簡易支払い検証（simplified  payment  verification）」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダをダウンロードするだけである。これらのノードは、従って、それらのトランザクションを検証するためにピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、トランザクションを検証すること、及びブロックチェーン上で新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを処理する。ノード１０２は、ＴＣＰ／ＩＰ（Transmission  Control  Protocol）のようなコネクション型プロトコルを用いて互いに通信する。
【００３７】
ノードがトランザクションをピアへ送信したいとき、「ＩＮＶＥＮＴＯＲＹ」メッセージがピアへ送信され、送信側ノードに知られている１つ以上のインベントリ（inventory）オブジェクトを送信する。ピアが「ＧＥＴＤＡＴＡ」メッセージ、つまり完全トランザクション要求に依存する場合、トランザクションは「ＴＲＡＮＳＡＣＴＩＯＮ」メッセージを用いて送信される。トランザクションを受信したノードは、該トランザクションが有効なトランザクションであるならば、それを同じ方法で自身のピアへ転送する。
【００３８】
図２を参照すると、インプットバッファ２０２及びアウトプットバッファ２０４を有する例示的なノード２００が図示される。例示的なノード２００は、ｉｎｔＡ、ｉｎｔＢ、ｉｎｔＣ、ｉｎｔＤ、等として参照される、複数のピアノードとのネットワークインタフェースを有する。インプットバッファ２０２は、種々のピアノードからの入力トランザクションを示す。アウトプットバッファ２０４は、それぞれのインタフェースを介してピアノードへ送信するための、トランザクションに対応する出力されるネットワークパケットを示す。ネットワークパケットは、ノード２００のオペレーティングシステムにより提供されるプリミティブに従い、アプリケーションレベルで順次送信及び受信される。トランザクションｘが単一のＥｔｈｅｒｎｅｔ／ＩＰパケットに適合すると仮定すると、ｍ個のピアへの該トランザクションｘの送信は、ｍ個の異なる出力ネットワークパケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方が、他の情報と一緒に、シリアル化トランザクション、及び送信側／受信側ピアへのＴＣＰ／ＩＰコネクションを表す論理インタフェースＩＤを含む。
【００３９】
Ｂｉｔｃｏｉｎトランザクションが生成されると、ソースノードは、ネットワークを介してトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成すると、それはアウトプットバッファ２０４に入れられる。トランザクションは、ピアへ直ちに転送されてよく又はそうでなくてよい。Ｂｉｔｃｏｉｎネットワークの現在の実装では、トランザクションは、「拡散伝搬（diffusion  propagation）」として知られるメカニズムにより伝搬される。それにより、各トランザクションソースは、独立した指数的遅延を伴い、トランザクションを自身に近隣へ送信する。伝搬における遅延はランダムであり、悪意ある攻撃者による時間推定に不確かさを導入するのに役立つ。ピアが特定のトランザクションを受信すると、ピアは、同じトランザクションの将来の中継を受け入れなくてよい。例えば、トランザクションハッシュがピアのメモリプールに格納されてよく、ピアが同一トランザクションを拒否できるようにする。ネットワークを通じるトランザクションの「拡散」は対称的である。これは、転送側ノードが、トランザクションブロードキャストに影響を与えるために近隣ノードのＩＰアドレスに関する情報を使用しないことを意味する。例えば、「標準的」拡散処理（Ｂｉｔｃｏｉｎプロトコルで利用される）では、ブロードキャスト側ノードの全部のピアは、同じトランザクションを受信し、各中継インスタンスで、ピア当たり一度に１つのトランザクションだけが中継される。この「拡散」の対称性は、匿名化解除攻撃を行う際に、ネットワークのピアツーピアグラフ構造の知識を有する悪意ある第三者により悪用されることがある。
【００４０】
本開示は、トラフィック分析攻撃に対する保護を向上するために、ブロックチェーンネットワーク上でのトランザクション中継のための代替的技術を提供する。より詳細には、提案の中継プロトコルは、トランザクションのソースノードとそれらのＩＰアドレスとの間の接続を偽装し、隠し、又は難読化するために使用されてよい。
【００４１】
トランザクション中継プロトコル、ＤＭＰ（Diffusion  Mixer  Protocol）が提案される。ＭＤＰは、２つの独立した拡散段階を含む。第１段階（「ランダム差中継（random  differential  relay）」又はＲＤＲ）は、中継されるトランザクションのミキシング、及びトランザクションソースの難読化を可能にする。ランダム差中継段階の間、各ノードは、トランザクションをネットワークへブロードキャストする前に、所定時間量だけ待機して、自身のピアから複数のトランザクションを受信し及び収集する。ノードは次に、自身の「エントリノード」への出力接続を生成し、これらのエントリノードの任意に（例えばランダムに）選択したサブセットへ、ほぼ同じタイムスタンプを有する異なるトランザクションを送信する。ノードのエントリノードは、ノードからの直接出力接続が確立できる近隣ノードである。エントリノードの選択の際のランダム性、及び中継されるトランザクションの多様性は、攻撃者がネットワークトポロジを再構成することを一層困難にし得る。
【００４２】
第２段階（「標準的拡散」（standard  diffusion））は、ネットワーク内でトランザクションの時間的及び信頼できる伝搬を保証する。標準的拡散段階では、各ノードは、同じトランザクションを自身の全部のエントリノードへ中継し、各中継インスタンスでは、エントリノード当たり、一度に１個のトランザクションだけが中継される。
【００４３】
留意すべきことに、ブロックチェーンネットワークのようなノードのネットワークでは、ノードのうちの１つ以上は、ＤＭＰを実装可能であってよい。具体的に、ネットワークのノードのうちの１つ以上は、ＤＭＰに参加することにより、自身の受信したデータパケットを自身のエントリノードへ中継可能であってよい。参加ノードは、例えば、特定のデータパケットを伝搬するために、ＲＤＲ処理と標準的拡散処理との間で選択してよい。ネットワークのノードは、ＤＭＰに参加することを選び、分散型方法で、又は中央局により構成される参加ノードのグループへの包含を通じて、プロトコルに参加してよい。参加ノードは、自身の出力ネットワークパケットをＤＭＰに従い中継する。特に、参加ノードがデータパケットを受信した場合、ノードは、ＤＭＰにより指定されたルールを用いて、ノードのために選択された伝搬モードに従い、受信したデータパケットを転送してよい。
【００４４】
トランザクション中継のための提案されるＤＭＰは、図３〜７を参照して説明される。図３は、ＤＭＰの概略図を提供する。ノードの例示的なブロックチェーンネットワーク３００が示される。各ノードは、ネットワーク端末（つまり、ブロックチェーンノード）を表し、エッジはノード間のリンクを表す。説明の目的で、リンク毎に、一度に単一のビットを送信又は受信することが可能であると想定する。
【００４５】
この例示的なネットワーク３００では、各ノードは、未確定トランザクションのセットを維持し、従って、ノードが新しいトランザクションを受信すると、それはネットワークを通じて全部の他のノードへ伝搬される。各ノードは、新しいトランザクションを検証し、それら個々のローカルセットの中に格納し、該新しいトランザクションを未だ有しない任意のピアノードへ該新しいトランザクションを転送する。ブロックチェーンネットワーク３００のピアツーピア特性により、全部のノードは、新しいトランザクションを同時に受信しない。これは、新しいトランザクションがネットワーク３００内の全部のノードに到達するまでに何らかの時間を要することを意味する。
【００４６】
図３は、特定のトランザクションＴｘ１を伝搬するためのＤＭＰの２つの段階、つまりＴｘ１のランダム差中継３０２及び標準的拡散３０４を示す。トランザクションＴｘ１のソースノード３１０は、時間ｔ１で、トランザクションＴｘ１を生成し、又はそれをピアノードから受信してよい。ＤＭＰに従い、ソースノード３１０は、受信した／待ち行列に入れられたトランザクションのブロードキャストを開始する前に、自身の近隣ノードから少なくとも１つ以上の入力トランザクションを受信するために待機する。図３の例では、トランザクションＴｘ２がソースノード３１０により時間ｔ２で受信されると、トランザクションＴｘ１及びＴｘ２は、時間ｔ３で、ソースノード３１０のエントリノードの任意に選択されたサブセットへ送信される。トランザクションＴｘ１は、エントリノード３１０ｃ及び３１０ｄへ転送され、一方で、トランザクションＴｘ２はエントリノード３１０ａ及び３１０ｂへ転送される。図３の例は、単に説明のためであり、特に、ソースノード３１０は、自身の受信したトランザクションのうちのいずれかを伝搬する前に、２つより多くの入力トランザクションを受信するために待機してよい。
【００４７】
エントリノードは、受信したトランザクションをそれら自身のピアへ中継する。例えば、ノード３１０ｂ及び３１０ｄは、トランザクションＴｘ２及びＴｘ１をそれぞれ、自身の近隣ノードのうちの１つ以上へ転送する。ＤＭＰでは、トランザクションの各受信者は、受信したトランザクションの伝搬モードを独立して選択する。ノード３２０は、自身の拡散モードとして標準的拡散を選択するノードの一例である。図３に示すように、ノード３２０は、同じトランザクションＴｘ１を、自身の全部のエントリノード、つまり３２０ａ、３２０ｂ、３２０ｃ、３２０ｄ、３２０ｅへ転送する。
【００４８】
図５を参照すると、ＤＭＰのＲＤＲ段階で、ネットワーク内でデータパケットを伝搬する例示的な方法５００がフローチャート形式で示される。方法５００は、例えばネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。ノードは、この状況では、マイニングノード、フルノード、検証ノード、又はブロックチェーンネットワーク内の他の種類の個別ブロックチェーンノードを表すと理解されてよい。ノードは、ネットワーク接続、計算リソース、及びブロックチェーンプロトコルを実装する実行ソフトウェアを有するコンピューティング装置である。
【００４９】
動作５０２で、ノードに関連付けられたクライアントは、第１種類の少なくとも１つのデータパケットを生成する。ブロックチェーンネットワークのコンテキストでは、第１種類のデータパケットは、ブロックチェーントランザクションを含んでよい。つまり、クライアントは、ネットワークの他のノードへ伝搬されるべきブロックチェーントランザクションを生成してよい。
【００５０】
動作５０４で、ノードは、第１時間期間Ｔの間、第１種類のデータパケットのセットを収集する。つまり、ノードは、時間期間に渡り、第１種類のデータパケットを蓄積する。セットは、少なくとも１つの生成されたデータパケット、及びネットワーク内の１つ以上のピアノードから受信された第１種類の少なくとも１つのデータパケット、を含む。このように、ノードにより生成されたデータパケットは、近隣ノードから受信された同じ種類のデータパケットと混合（ミキシング、mix）される。ブロックチェーンネットワークでは、時間期間Tの間、ノードは、中継されるべき入力トランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。時間期間長Tは予め定められてよい。幾つかの例示的な実装では、時間長は、平均接続時間、単位時間当たり受信されるトランザクションの平均数、又はネットワーク内のノードの中心性（つまり、ノードへの入力接続の数）のようなパラメータに基づき変化してよい。時間期間Tの間、ノードは、第１種類のデータパケットを蓄積することを許可されるだけでよく、従って、時間期間Tの間、第１種類の任意のデータパケットを送信することを抑制されてよい。
【００５１】
動作５０６で、ノードは、収集されたデータパケットの異なるセットが転送される、自身のエントリノードのサブセットを任意に選択する。より具体的には、収集されたデータパケットのセットの中の各データパケットについて、ノードは、自身のエントリノード（つまり、ノードが出力接続を有する近隣ノード）のうちの２つ以上を任意に選択し、データパケットを選択したエントリノードに割り当てる。例えば、エントリノードは、ランダムに選択されてよい。ノードは、幾つかの実装では、ネットワークに問い合わせて、自身のピアの新鮮なアドレスを取得してよい。Ｂｉｔｃｏｉｎネットワークでは、ノードは、Ｂｉｔｃｏｉｎ  Ｃｏｒｅ、ＢｉｔｃｏｉｎＪ、又は他のブロックチェーンプロトコルに埋め込まれ、Ｂｉｔｃｏｉｎ（又は他のブロックチェーン）コミュニティメンバにより維持される１つ以上のデータベースソース名（database  source  names  (DSN)）を問い合わせてよい。応答として、ノードは、入力接続を受け入れる利用可能なフルノードのＩＰアドレスを示す１つ以上のＤＳＮレコードを取得する。ピア発見の分散化バージョンは、ピアにそれらのＩＰアドレス及びネットワークに参加する新しいノードへのポート番号を含む「ＡＤＤＲ」メッセージを送信させることにより、実装されてよい。
【００５２】
幾つかの実装では、動作５０６の部分として、ネットワーク内の１つ以上のノードは、データパケットが中継されるべきエントリノードへの各々の収集されたデータパケットの自身の割り当てを追跡するテーブル又は他のデータ構造を維持してよい。図４は、ブロックチェーンネットワーク内のＤＭＰのＲＤＲ段階におけるソースノード４１０のトランザクション中継の一例を示す。表１は、ソースノード４１０のエントリノードへの、収集されたトランザクションＴｘ１〜Ｔｘ５の例示的な割り当てである。エントリノードは、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈとして示される。図４及び表１に示すように、ソースノード４１０は、各トランザクションを少なくとも２つのエントリノードに中継し、複数のトランザクションが同じノードを経由して中継できる。例えば、トランザクションＴｘ３、Ｔｘ４、及びＴｘ５は、全部同時にエントリノードＥを経由して中継される。より一般的には、ＲＤＲ段階では、複数のデータパケットは、転送ノードにより同じピアノードに同時に中継され得る。必ずしも全部のエントリノードが、ＤＭＰの所与のインスタンスでソースノード４１０からトランザクションを受信するのではない。表１の例では、エントリノードＣ及びＧは、ソースノード４１０からトランザクションを受信しない。
表１
【表１】
2021524197.tif 000003
【００５３】
図５を再び参照すると、収集したデータパケットの各々について、動作５０８で、ノードは、データパケットを（任意に又はランダムに）選択したエントリノードの各々に送信する。各選択されたエントリノードは、データパケットをネットワーク内の１つ以上の第２ノード（例えば、エントリノードのピア）へ、該エントリノードについてランダムに選択されたデータ伝搬モードを用いて、中継するよう構成される。つまり、各選択されたエントリノードは、受信したデータパケットを、自身のピアのうちの１つ以上に、該エントリノードのために独立に選択された伝搬モードを用いて転送する。図４の例示的なトランザクションでは、トランザクションＴｘ１〜Ｔｘ５の各々は、トランザクションの割り当てられたエントリノードへ転送される。
【００５４】
ソースノード４１０からトランザクションを受信する各ノードは、次に、受信したトランザクションを（もしあれば）自身のピアノードのうちの１つ以上に転送するときに使用すべき伝搬／拡散モードをランダムに選択する。特に、トランザクションを受信するエントリノードは、ランダムに、標準的拡散処理又はＲＤＲ処理に従いトランザクションを中継することを選択する。２つの選択肢の間の選択はランダムである。従って、ＤＭＰでは、２つの拡散処理は、確率的に交互に生じる。つまり、ＲＤＲ段階と標準的拡散段階との間の明確な区別はない。この拡散処理の混合（ミキシング（mixing））の結果として、攻撃者がランダムなデータ伝搬により又は標準的な拡散によりノードのセットが中継することの間の分離を識別することに基づきネットワークのトポロジを再構成することが一層困難になる。
【００５５】
幾つかの実装では、拡散モードのエントリノードによるランダムな選択は、ソースノードから中継されたデータパケットに加えてメッセージを受信することを含んでよい。エントリノードは、次に、ランダム値（例えば、乱数）を生成し、それを受信したメッセージに付加して、例えばＳＨＡ−２５６を用いて結果をハッシングしてよい。エントリノードは、次に、ハッシュ値をチェックし、その結果、該ハッシュ値に関連する所定のルールに基づき拡散モードを取得できる（例えば、ハッシュの最終文字が数字である場合、ＲＤＲを拡散モードとして選択する）。代替又は追加で、拡散モードの選択は、任意のランダム化処理（例えば、乱数生成器）を用いて行うことができる。ここで、入力及び／又は出力接続の数、単位時間当たり受信されるデータパケットの平均数、等のような因子に依存して、モードのうちの一方を選択する確率は、モードのうちの他方を選択する確率より大きくてよい。
【００５６】
特定のデータパケットを伝搬するとき、伝搬側ノードの匿名性保護のレベルと伝搬の全体速度との間で平衡を取ることが望ましい。特定レベルの匿名性を保証する手段が非常に煩雑な場合（例えば、非常に多くのネットワークリソースを要求する、ネットワークのノードがデータパケットを中継するときに意図的に未活用になる、等）、データを適時に拡散するときのネットワークの効率が損なわれることがある。従って、幾つかの実装では、中継ノードによる伝搬モードのランダムな選択は、重み付けされてよい。特に、異なる確率が、２つ以上の伝搬モード（つまり、ＲＤＲ、標準的拡散、等）の各々に割り当てられてよい。その結果、確率は、匿名性のデータ伝搬速度との比例的な重要性を反映する。例えば、幾つかのインスタンスでは、より高く定められた確率は、特定のネットワークのノードのＲＤＲモードに関連付けられてよく、伝搬されるデータの匿名性の保護により大きな重要性が置かれる。
【００５７】
図５の方法５００は、ノードにより実装され、該ノードは、自身の第１種類のデータパケットを生成する。特に、ＤＭＰに参加し、ネットワークの残りの部分への伝搬のためにデータパケットを生成するノードが、方法５００を実行する。図６は、中継ノード、又は異なるノードにより生成されたデータパケットを転送又は中継するノード、により実行される例示的な処理を示す。つまり、中継ノードは、特定のデータパケットの中継の間に転送すべきデータを自身で生成せず、代わりにデータパケットの「中継」機能を提供するノードである。動作５５０で、中継ノードは、独立して、自身のデータ伝搬モードを選択する。中継ノードは、例えば、ＲＤＲモードと標準的拡散モードとの間で選択してよい。標準的拡散モードが選択された場合（これは、動作５５２で決定されてよい）、中継ノードは、動作５５４で自身のエントリノードの全部にデータパケットを転送する。図６の例では、伝搬モードの選択は、２つの可能な選択肢の間で行われ、本例は限定されず、他の例では、３つ以上の可能な伝搬モードが存在してよい。方法５００で、選択されたモードがＲＤＲである場合（これは、動作５５２で決定されてよい）、中継ノードは、図５の動作５０４、５０６、及び５０８に対応するステップ５５６、５５８、及び５６０を実行する。
【００５８】
図７を参照すると、ネットワーク内でデータパケットを伝搬する例示的な処理６００がフローチャート形式で示される。処理６００は、ブロックチェーンネットワークの他のノードへの複数の入力及び出力接続を有するブロックチェーンノードに実装されてよい。
【００５９】
処理６００の動作６０２、６０４、６０６、及び６１０は、それぞれ方法５００の動作５０２、５０４、５０６、及び５０８に対応する。動作６０８で、ノードは、動作６１０で収集したデータパケットを自身の割り当てられたエントリノードへ送信する前に、トリガ条件が満たされているか否かを決定する。特に、データパケットの送信は、適切なトリガ条件が満たされていることを検出することに応答して実行される。トリガ条件が満たされていないとき、ノードは、自身のエントリ／ピアノードへ該データパケットのいずれかを中継することなく、第１種類のデータパケットを収集し続ける。
【００６０】
トリガ条件は、十分な数の入力データパケットを収集するよう及び／又は十分な時間量の間、入力データパケットを収集するよう、ノードに指示するために使用されてよい。例えば、所定の閾値に基づき、充足が決定されてよい。例えば、複数の入力データパケットをネットワーク内のピアノードへ同時に伝搬する前に、該複数の入力データパケットを収集することにより、ノードから発生する中継トラフィックを監視する攻撃者は、中継されるデータパケットの正しいソースとしてノードを容易に識別できない。
【００６１】
幾つかの実装では、トリガ条件は、動作６０２においてノードにより第１種類の少なくとも１つのデータパケットが生成された時間からの、所定の期間の終了であってよい。つまり、ノードは、ノードが同じ種類のデータパケットを生成した時から該データパケットのうちのいずれかがノードにより伝搬されるまでの所定の時間期間の間、入力データパケット（例えば、トランザクション）を監視し及び収集するよう設計されてよい。この条件は、ノードにより生成されたデータパケットが、同時にブロードキャスト可能な同じ種類のより多くのデータパケットを収集した後に、伝搬されることを保証することを試みるときに有用であってよい。それにより、攻撃者が、ノードを生成されたデータパケットのソースとして正しく識別することを困難にする。
【００６２】
幾つかの実装では、トリガ条件は、ノードのピアから第１種類の少なくとも１つの入力データパケットのうちの第１のデータパケットの受信時間からの、所定の期間の終了であってよい。つまり、ノードは、このような入力データパケットのうちの第１のデータパケットが受信されたときから開始する所定時間期間の間、入力データパケットを監視し収集するよう設計されてよい。この条件は、より多くのデータパケット、つまりノード自身により生成された又は他のピアから受信したデータパケットが、ネットワークの残りの部分へブロードキャストする前に、収集されることを保証しようとするとき、役立つ。
【００６３】
幾つかの実装では、トリガ条件は、収集したデータパケットの数が第１時間期間の間に閾数に達することであってよい。特に、ノードは、第１時間期間の終了、又は所定の閾数のデータパケットがノードにより収集されること、のうちの早い方まで、入力データパケットを監視し収集するよう設計されてよい。
【００６４】
＜ランダム差中継（Random  Differential  Relay  (RDR)）の発見法＞
上述のように、ランダム差中継は、ノードのネットワークにおけるトランザクションの伝搬のための「標準的拡散」プロトコルからの新発展を表す。ＲＤＲを実装するとき、伝搬側ノードは、エントリノードのランダムに選択されたサブセットに、異なるトランザクションを同時に中継する。伝搬ノードは、トランザクションが中継されるべき１つ以上のエントリノードに各収集したトランザクションをランダムに割り当てることにより、表１に示したデータ構造のようなデータ構造を生成してよい。より一般的には、自身のペイアにデータパケットを中継するネットワークノードは、ノードにより収集された（つまり、受信された又はローカルに生成された）複数のデータパケットのうちの各々について実行すべき中継の種類を指定する自身の内部ルーティングデータ構造を維持してよい。
【００６５】
本願明細書で提案される拡散混合プロトコル（Diffusion  Mixer  Protocol）のコンテキストでは、ＲＤＲを実装するブロックチェーンネットワーク内の各ノードは、自身のルーティングデータ構造、又は「ＲＤＲテーブル」を独立に構築してよい。ＲＤＲテーブルは、ＲＤＲプロトコルを採用するノード毎にトランザクション割り当て方式を定義する。つまり、個々のノードのＲＤＲテーブルは、どのトランザクションがどのピアにいつ中継されるべきかを管理するために使用される。ＲＤＲテーブルは、所与の時間量ΔＴＲＤＲの間に受信され又は生成される全部のトランザクション、及びトランザクションのソースピアを追跡してよい。ＲＤＲテーブルは、トランザクションの第１インスタンスの到着時間（「ＴｏＡタイムスタンプ」）、トランザクションを中継するために選択された時間（「ＴｏＲタイムスタンプ」）、及び／又はノードにより受信された同じトランザクションのインスタンスの数のカウンタ、のような追加情報を含んでよい。例示的なＲＤＲテーブルが以下に提供される。
表２
【表２】
2021524197.tif 000004
【００６６】
ノードのローカルＲＤＲテーブルは、新しい情報（タイムアウト、受信又は生成されたトランザクション）が利用可能になると、動的に（つまり、リアルタイムに）更新されてよい。本開示は、個々のＲＤＲテーブルの構築及び更新に貢献する種々の発見法（heuristics）、又は「サブシステム」を提供する。これらのサブシステムは、ＲＤＲテーブルの中で指定されたトランザクション割り当てを更新するために適用され得るルール又はガイドラインのセットとして考えることができる。これらのサブシステムに含まれる方針は、トランザクションソースの難読化を向上し、個々のノードのチュ系動作により生成されるネットワークトラフィックを平衡させるのに役立ち得る。提案されるサブシステムのセット、つまりソースミキシング、中継ミキシング、宛先ミキシング、到着時間ミキシング、及びソース制御は、収集されたトランザクション中継情報をマージするために、及びネットワークリソースの最適割り当てを提供する使用できる。
【００６７】
図８を参照すると、ネットワーク内のノードにおいて生成又は受信されたデータパケットを送信する例示的な方法７００がフローチャート形式で示される。方法７００は、提案されるサブシステム／発見法のうちの少なくとも１つのルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法７００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法７００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１種類のデータパケット（例えば、トランザクション）を生成し又は受信するよう構成されるノードにより実行される。
【００６８】
動作７０２で、ノードに関連付けられたクライアントは、第１種類の少なくとも１つのデータパケットを生成する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【００６９】
動作７０４で、ノードは、第１時間期間Ｔの間、第１種類のデータパケットのセットを収集する。つまり、ノードは、時間期間に渡り、第１種類のデータパケットを蓄積する。セットは、少なくとも１つの生成されたデータパケット、及びネットワーク内の１つ以上のピアノードから受信された第１種類の少なくとも１つのデータパケット、を含む。このように、ノードにより生成されたデータパケットは、近隣ノードから受信された同じ種類のデータパケットと混合（ミキシング、mix）される。
【００７０】
動作７０６で、収集されたセットのデータパケットの、該ノードに接続された複数の近隣ノードへのマッピングが決定される。マッピングは、セットのうちの各データパケットの、近隣ノードへの中継の期待時間を示す。この「マッピング」は、ネットワークのノードの個々のローカルＲＤＲテーブルを構成するために使用される。本開示に記載されたサブシステム／発見法のうちの１つ以上は、ＲＤＲテーブルの構成に（部分的に又は独立して）貢献してよい。特に、１つ以上の異なるサブマッピングは、収集したデータパケットの近隣ノードへのマッピングを決定するときに適用されてよい。サブマッピングは、少なくとも２つの異なる種類であってよい。第１種類のサブマッピングは、同じソース（つまり、生成側ノード）を有する任意の２つのデータパケットを、中継のために、近隣ノードのうちの異なるサブセットに割り当てる。以下に更に詳述する「ソースミキシング」及び「中継ミキシング」サブシステムは、この第１種類のサブマッピングの例である。第２種類のサブマッピングは、ノードにおいて生成された又はノードにより同じ時間間隔でピアノードから受信された任意の２つのデータパケットに中継の異なる期待時間を割り当てる。「到着時間ミキシング」サブシステムは、この第２種類のサブマッピングの一例である。
【００７１】
動作７０８で、収集されたセットのうちのデータパケットの近隣ノードへのマッピングが決定されると、該データパケットは、決定したマッピングに従い近隣ノードへ送信される。
【００７２】
ＲＤＲテーブル内に定義されたトランザクション割り当てを更新するために、個々のサブシステムが独立して実装されることが理解される。つまり、各サブシステムは、他のサブシステムと独立に、ＲＤＲテーブルを別個に採用してよい。従って、個々のサブシステムは、トランザクションを中継ノードに割り当てる異なる方法、従ってトランザクションを伝搬する異なる技術を提供してよい。
【００７３】
＜ソースミキシング＞
ソースミキシングサブシステムの基礎にある原理は、ノードにおいてローカルに生成されたトランザクションがピアの重複しないサブセットに送信されるべきであるということである。説明のために、ノードｘが２つのトランザクションｔｘｉ及びｔｘｉ＋１を生成した場合、これらのトランザクションの中継のために選択されたピアのセットは、それぞれＳ（ｔｘｉ）及びＳ（ｔｘｉ＋１）と示され、Ｓ（ｔｘｉ）≠Ｓ（ｔｘｉ＋１）を満たす。
【００７４】
つまり、２つの続いて起こるトランザクションのピアのセットは、少なくとも１つのピアだけ異なる。この不平等性は、ノードにおいて生成されたトランザクションの初期中継のパターンについての任意の悪意ある検索を複雑にすることを助けることができる。この概念は、以下のようにδＳＭ次（degree）のソースミキシングに拡張できる：
Ｓ（ｔｘｉ＋ａ）≠Ｓ（ｔｘｉ＋ｂ）、∀（ａ，ｂ）∈［０，δＳＭ−１］、ａ≠ｂ
【００７５】
図９を参照すると、ネットワーク内のノードにおいて生成されたデータパケットを送信する例示的な方法８００がフローチャート形式で示される。方法８００は、ソースミキシングサブシステム／発見法のルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法８００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法８００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１種類のデータパケット（例えば、トランザクション）を生成するよう構成されるノードにより実行される。
【００７６】
動作８０２で、ノードに関連付けられたクライアントは、第１種類の少なくとも１つのデータパケットを生成する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【００７７】
ノードは、少なくとも１つの生成されたデータパケットの、自身の近隣ノード（つまりピア）への第１マッピングを決定する。特に、ピアの複数のサブセットは、ノードにおいて生成されたデータパケットを中継するために選択される。各データパケットは、第１マッピングにより、中継ノードの特定のサブセットに関連付けられる。データパケット毎に、動作８０４で、ノードにより前に生成された第１種類の所定数の第１データパケットが識別される。これらは、既にノードによりピアへ送信されたデータパケット、又は前に生成されたがノードのピアへ未だ中継されていないデータパケットであってよい。
【００７８】
動作８０６で、第１データパケットに関連付けられた中継ノードセットのリストが取得される。中継ノードセットは、第１データパケットがそれぞれ中継される（又は中継のために割り当てられる）近隣ノード（ピア）を含む。つまり、中継ノードセットは、第１データパケットのうちの個々のデータパケットが割り当てられるノードのピアのサブセットを示す。
【００７９】
動作８０８で、中継ノードの第１セットは、動作８０６で取得されたリストの中の中継ノードと異なる近隣ノードのセットを識別することに基づき選択される。例えば、中継ノードの第１セットは、中継ノードセットの取得したリストに含まれない２つ以上の近隣ノードのセットを任意に選択することにより、選択されてよい。幾つかの実装では、選択された第１セットが２つ以上のピアにより取得されたリストの中の中継ノードセットと異なるという要件が課されてよい。つまり、上限は、中継ノードの選択された第１セットと取得したリスト内の中継ノードセットのうちのいずれか１つとの間の交差集合に属する要素の数に設定されてよい。
【００８０】
方法８００は、単一のデータパケットがノードにおいて生成された後に、又はノードが複数の生成されたデータパケットを収集した後に、ノードにより実行されてよい。特に、ノードは、（ＤＭＰのＲＤＲ段階と同様に）時間期間に渡り第１種類のデータパケットを生成し蓄積し、蓄積したデータパケットの中継ノードセットへの第１マッピングを決定してよい。これらの場合に、データパケットは、それぞれ、中継ノードの任意に選択されたサブセットに割り当てられてよく、このようなサブセットのいかなる２つも互いに等しくないことを保証する。
【００８１】
中継ノードの第１セットに含まれるために選択された近隣ノードの数は、任意に決定されてよい。少なくとも幾つかの実装では、第１セットのために選択されたピアの数は、伝搬側ノードの帯域幅要件（例えば、固定時間枠の中の入力及び出力データの累積量）に従い制限される。特に、ローカルに生成したトランザクションの中継のために選択されたピアの数は、ネットワーク負荷問題を解決するため、又はソース難読化を向上するために、調整されてよい。例えば、第１セットに含まれるピアの数は、以下により定義され得る：
ｍ（ｔｘｉ）＝ｍＳＭ±ｒｎｄ（ξＳＭ）
ここで、ｍＳＭはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、ｒｎｄ（ξＳＭ）は、０とξＳＭ−１との間のランダムな整数を表す。
【００８２】
中継ノードの第１セットの選択は、次に、それぞれのデータパケットに関連して第１マッピングの中に設定できる。言い換えると、第１マッピングは、データパケットが中継ノードの第１セットに関連付けられる（つまり割り当てられる）ことを示してよい。動作８１０で、データパケットは、決定された第１マッピングに従い送信される。
【００８３】
＜中継ミキシング＞
中継ミキシングサブシステムは、ノードにより受信されたトランザクションが、ノードのピアの重複しないサブセットへ中継されるべきであるという概念を前提とする。同じノードにより受信された２つの異なるトランザクションのために選択された中継ピアの間の交差集合に属する要素の数を表すためにパラメータλを用いて、中継ミキシングの背後にある思想は以下により捉えることができる。
【数１】
2021524197.tif 000005
ここで、δＲＭは、中継ミキシングの次数（degree）である。不等式（１）は、不等式を満たす中継ノードへのトランザクションの割り当てを発見するトランザクション割り当て問題を定義する。中継ミキシングストラテジは、従って、（１）の中のパラメータλを変化することにより制御できる。λが設定されると、トランザクション割り当て問題に対する準最適解の反復的検索が実行される。中継ミキシングサブシステムは、ノードが１つ以上のトランザクションを受信する各ピアｐｉについて不等式（１）が満たされることを要求し得る。例えば、ピアｐｉから受信した最後のδＲＭ個のトランザクション：
【数２】
2021524197.tif 000006
は、これらのトランザクションについて不等式（１）が満たされることを要求することにより、中継ミキシングを実施するために使用されてよい。従って、幾つかの実装では、個々のパラメータλｉは、各ピアｐｉについてそれぞれ定義されてよい。このように、ソース難読化は、ノードがトランザクションを受信するピアｐ１、ｐ２、．．．、pm毎にトランザクション中継のために独立したデータ構造を生成することにより実装されてよく、中継ノードへの受信したトランザクションの割り当てを識別する。
【００８４】
代替として、他の実装では、パラメータλは、ユニークなシステムパラメータ、特定の時間ウインドウ及びＲＤＲテーブルに格納された情報を用いて更新される時間と共に変化するパラメータλｔ、又は特定の時間ウインドウ及びＲＤＲテーブルに格納された情報を用いて更新されるピア毎の時間と共に変化するパラメータλｔｉ、であってよい。
【００８５】
一般的ピアのトランザクション割り当ての組み合わせの数は、以下の通りである：
【数３】
2021524197.tif 000007
ここで、ｍはノードのピアの数であり、δＲＭは中継ミキシングの次数（degree）であり、ｘは中継のために選択されたピアの平均数である。準最適解の反復的検索は、以下の幾つかの可能な方法で進められてよい。
【００８６】
・反復の最大数を設定し、最小数の横断ピアによるトランザクション割り当てを選択する；
・反復の最大数を設定するが、横断ピアの所与の閾値に達した場合に、処理を早く中断する；
・反復の最大数を設定し、要件が満たされない場合にλの値を増大し、処理を再開する；
・反復の最大数を設定し、要件が満たされない場合にｘの値を変更し、処理を再開する；
・反復の最大数を設定し、要件が満たされない場合にｍの値を減少し、処理を再開する。
【００８７】
反復の最大数が固定時間ウインドウΔＴＲＭにより代用される場合、アプローチの別のセットが考えられる。
【００８８】
中継ノードのセットに含まれるために選択された近隣ノードの数は、任意に決定されてよい。少なくとも幾つかの実装では、セットのために選択されたピアの数は、伝搬側ノードの帯域幅要件（例えば、固定時間枠の中の入力及び出力データの累積量）に従い制限される。特に、ローカルに生成したトランザクションの中継のために選択されたピアの数は、ネットワーク負荷問題を解決するため、又はソース難読化を向上するために、調整されてよい。例えば、第１セットに含まれるピアの数は以下により定義され得る：
ｍ（ｔｘｉ）＝ｍＲＭ±ｒｎｄ（ξＲＭ）
ここで、ｍＲＭはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、ｒｎｄ（ξＲＭ）は、０とξＲＭ−１との間のランダムな整数を表す。幾つかの実施形態では、ξＳＭ及びξＲＭは同じ値を有してよい。
【００８９】
図１０を参照すると、ネットワーク内のノードにおいて受信されたデータパケットを中継する例示的な方法９００がフローチャート形式で示される。方法９００は、中継ミキシングサブシステム／発見法のルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法９００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法９００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１種類のデータパケット（例えば、トランザクション）を受信するよう構成されるノードにより実行される。
【００９０】
動作９０２で、ノードに関連付けられたクライアントは、第１種類の少なくとも１つのデータパケットを受信する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【００９１】
ノードは、少なくとも１つの受信されたデータパケットの、自身の近隣ノード（つまりピア）への第２マッピングを決定する。特に、ピアの複数のサブセットは、ノードにおいて生成されたデータパケットを中継するために選択される。各データパケットは、第２マッピングにより、中継ノードの特定のサブセットに関連付けられる。データパケット毎に、動作９０４で、ノードにより最近受信された第１種類の所定数の第２データパケットが識別される。これらは、既にノードによりピアへ送信されたデータパケット、又は前に受信されたがノードのピアへ未だ中継されていないデータパケットであってよい。
【００９２】
動作９０６で、近隣ノードの固定セットへの第２データパケットの第１割り当てが決定される。特に、第１割り当ては、所定条件を満たす近隣ノードへの第２データパケットの１つ以上の割り当てから選択される。この動作は、上述の不等式（１）に対する準最適解の反復的検索に対応する。つまり、（１）を満たす中継ノードへのデータパケットの割り当てのうち、ユニークな割り当て（例えば、最少横断ピアを有する割り当て）が決定される。（１）によりキャプチャされるように、近隣ノードの固定セットへの第２データパケットの割り当ては、第２データパケットのうちの任意の２つについて、該第２データパケットの両方が（中継のために）割り当てられる近隣ノードの数が所定の閾値以下である場合に、所定条件を満たす。
【００９３】
動作９０６で識別された近隣ノードへの第２データパケットのユニークな割り当ては、次に第２マッピングに設定できる。言い換えると、第２マッピングは、第２データパケット（つまり、ノードが自身のピアから受信したデータパケット）がそれぞれ割り当てられる中継ノードを示してよい。動作９０８で、少なくとも１つの受信したデータパケットは、決定された第２マッピングに従い中継される。
【００９４】
方法９００は、単一のデータパケットがノードにおいて受信された後に、又はノードが複数の受信されたデータパケットを収集した後に、ノードにより実行されてよい。特に、ノードは、（ＤＭＰのＲＤＲ段階と同様に）時間期間に渡り第１種類のデータパケットを受信し蓄積し、蓄積したデータパケットの中継ノードセットへのマッピングを決定してよい。これらの場合に、データパケットは、それぞれ、中継ノードの任意に選択されたサブセットに割り当てられてよく、このようなサブセットのいかなる２つも互いに等しくないことを保証する。
【００９５】
＜宛先ミキシング＞
宛先ミキシング発見法は、ノードの出方向の接続が異なるピアにより中継されるトランザクションを実行するべきであるという思想をキャプチャする。この発見法は、中継ミキシングサブシステムの特別な場合と考えられる。何故なら、後者が、同じソースピアからの中継のためにピアの重複しないサブセットの生成を含むからである。方法９００では、宛先ミキシングは、動作９０６で、第１ノード（つまり、ノードがデータパケットを受信するノード）のうちの任意の２つについて、該２つの第１ノードから受信した全部の第２データパケットのセットが、第１割り当てにおいて少なくとも２つの異なる近隣ノードに割り当てられることを保証することにより、実装されてよい。例えば、図１１は、ノードｉの宛先ミキシングの例を示す。宛先ミキシングサブシステムは、ノードａが、所与の時間ウインドウΔＴＤＭで、同じノードｃにより中継された２つのトランザクションを受信しないことを保証する。従って、ノードｉでノードｃから受信された２つのトランザクションのうちの一方のみが、ノードａに中継される。
【００９６】
幾つかの実装では、宛先ミキシングは、時間ウインドウΔＴＤＭ毎に、ピアの異なるサブセットに対して有効にされてよい。例えば、サブセットは、パラメータ（ｍＤＭ、δＤＭ、ξＤＭ）と共にソースミキシングについて記載されたのと同様の方法で割り当てられてよい。このストラテジは、所与のトランザクションについて、ソース及び宛先の非相関に貢献し得る。
【００９７】
＜到着時間ミキシング＞
到着時間ミキシング発見法は、データパケット中継に関するソース及び宛先情報の非相関を助けるために、データパケットの遅延された中継を実装する。（例えば、ＤＭＰのＲＤＲ段階で）例えば、時間ウインドウΔＴＤＭの中で収集された（又は生成された）データパケット（例えば、トランザクション）は、中継のために、ΔＴｉの終わりにスケジューリングされてよい（図１２のＲＤＲｉ）。到着時間ミキシングサブシステムは、ＲＤＲｉだけ中継を遅延させる。幾つかの実装では、データパケットの中継は、倍数ｑΔＴｉ、例えばＲＤＲｊ、ＲＤＲｊ＋１、ＲＤＲｊ＋２、等だけ遅延されてよい。従って、到着時間ミキシング発見法によると、ノードにより受信した（又は生成した）データパケットの中継は、近隣ノードへの受信したデータパケットの中継のための次のスケジューリング時間の決定、及び中継のための次のスケジューリングされた時間の後の所定時間量のデータパケットの中継を含む。ΔＴｉ内で収集された全部のトランザクションは、ΔＴｉ＋ｑΔＴで中継される。又は、ΔＴｉ内で収集された各トランザクションｊは、所与のΔＴｉ＋ｑｊΔＴで中継される。
【００９８】
ランダム変数ｑは、幾つかの例では、以下の負の指数確率密度関数を有してよい：
ｐｄｆｑ（ｘ）＝ｃ×ｅ−（ｘ＋ｇ）
【００９９】
ここで、ｃ及びｇは、それぞれ、乗算及び加算係数である。
【０１００】
＜ソース制御＞
悪意あるピアは、同じデータパケット（又は一群のデータパケット）を複数回、所与のノードｉへプッシュすることを試みて、ｉのローカル中継ストラテジの中のパターンを発見しようとすることがある。例えば、悪意あるピアノードは、ｉへの２つの接続を生成し、ｉの入力及び出力トラフィックがどのように関連するかを監視してよい。ソース制御サブシステムは、各ピアから受信可能なデータパケットの数について特定の閾値を設定することにより実装される。ピアが所与のデータパケットの閾値を超えた場合、その接続は、永久に又は一時的に閉じられる。ノードが、ブロックチェーントランザクションのような所与のデータパケットを受信するインスタンスの数は、ＲＤＲテーブルに格納されてよい。
【０１０１】
＜負荷平衡＞
負荷平衡は、他のサブシステムによりピアへの中継のために既に割り当てられたデータパケットのシャッフルを周期的に実行するために使用されてよい。負荷平衡モジュールの目的は、幾つかのピア接続におけるトラフィック過負荷又は単一の障害点を回避するために、ピアの間の中継分布を平均化することである。負荷平衡のために以下の２つの異なるアプローチが実装されてよい。
【０１０２】
・各データパケットｊは、それらのサイズ（つまり、インプットの数、アウトプットの数、アンロック及びロックスクリプトのサイズ）に関わらず同じ重みｗｊを有する；
・各データパケットｊは、それ自体のサイズ［単位：バイト］に比例する、それ自体の重みｗｊを有する。
【０１０３】
例えば、方法８００で、近隣ノードの固定セットへの第２データパケットの第２割り当てが決定されてよく、第２割り当ては、ノードのアウトプットインタフェースにおけるトラフィックの平衡を考慮した第１割り当ての再構成である。累積値ｃｉは、以下のように、中継するためにスケジューリングされたデータパケットの数ｎｉに対して、ピアｉ毎に計算される：
【数４】
2021524197.tif 000008
【０１０４】
続いて、中継すべきデータパケットをシャッフルしてピア毎の平均値ｃ＊を得るために、反復的方法が実行される。
【数５】
2021524197.tif 000009
【０１０５】
このデータパケットのシャッフルを解決する種々の異なる発見法が利用可能であってよい。例えば、データパケットのサブセットの中継を予想するために、又は出て行くトラフィックの負荷平衡を向上するために、異なる優先度が異なるサブシステムに割り当てられてよい。更に、異なるサブシステムの実行は、データパケットの複製又は一致しない割り当てを導入し得る。これは、中継の活性化の前に解決される必要がある。
【０１０６】
＜ノード帯域幅およびＤＭＰ＞
拡散ミキシングプロトコル（Diffusion  Mixer  Protocol）は、近隣ノードへの、ネットワークノードの種々のリンク／チャネルの中の、ネットワークノードの利用可能帯域幅を考慮するよう構成されてよい。送信の品質及びタイミングを含むネットワークのノード間でのデータパケットの伝送の種々の態様は、利用可能なノード間の帯域幅容量に依存し得る。
【０１０７】
ノードのネットワーク内のデータパケットの伝搬のコンテキストでは、ネットワークノードにより中継されるデータパケットのソース及び宛先の匿名性を向上する能力と、ネットワークノードの利用可能な帯域幅リソースの効率的利用との間のバランスを取ることが望ましい。特に、ネットワークノードのピアへのデータ中継を割り当てるアルゴリズム（例えば、Diffusion  Mixer  Protocol）は、有利なことに、ネットワークノードのリソース制約により軽減される。例えば、幾つかの例では、種々の制約が、ネットワークノードのリソース制限に基づき、データ中継割り当てアルゴリズムの（例えば、上限及び／又は下限を設定する）１つ以上のパラメータに課されてよい。
【０１０８】
説明として、ノードがデータパケットを自身のピアのうちの１つ以上へ送信するとき、ノードは、データパケットがノードのピアへの中継のために賢明な方法で割り当てられるように、近隣ノードへの自身のリンクの中で、利用可能な帯域幅を考える必要がある。中継されるデータのソースの匿名性を向上する技術は、結果として高い帯域幅使用率をもたらし得る。例えば、ネットワークノードがデータパケットを中継するために多数のエントリノードを選択した場合、ネットワークノードの出力リンク容量は、望ましくないレベルにまで低下し得る。別の例として、（ＲＤＲで）到着時間ミキシングを実施するために１つ以上のデータパケットの中継を遅延することは、許容可能なレベルを超えてノード間チャネルを占有させてしまう。ネットワークノードのリソース制約に依存してパラメータの制御を可能にするアルゴリズムは、データ中継の性能向上、及びネットワークトラフィック管理の両方を実現できる。
【０１０９】
図１３を参照すると、ネットワーク内でデータパケットを伝搬する例示的な処理１０００が示される。より具体的には、処理１０００は、ネットワークノードの帯域幅制約に基づき、データ中継割り当てを決定する技術を表す。方法１０００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。特に、方法１０００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１種類のデータパケット（例えば、トランザクション）を受信するノードにより実行される。
【０１１０】
動作１００２で、ノードは、第１時間期間Ｔの間、第１データパケットのセットを収集する。つまり、ノードは、固定時間期間に渡り、第１データパケットを蓄積する。セットは、ネットワーク内の１つ以上のピアノードから受信された少なくとも１つの第１データパケットを含む。ブロックチェーンネットワークでは、時間期間Tの間、ノードは、中継されるべき入力トランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。時間期間長Tは予め定められてよい。
【０１１１】
動作１００４で、ノード（又はノードと異なるエンティティ）は、自身の複数の近隣ノードへの自身のリンクの中で、利用可能な帯域幅を決定する。ノードは、近隣ノードへの自身のリンク／チャネルの各々の中で、帯域幅及びスループットを決定してよい。特に、ノードの少なくとも１つのリンクのうちの各々の中の利用可能帯域幅の数値又は指示子が得られてよい。幾つかの実装では、ノードの出方向リンクのうちの全部の中の全体の利用可能帯域幅を表す値／指示子が取得されてよい。例えば、データパケットを伝搬する処理１０００に参加するために利用可能なノードのリンクのうちの比率を表す値／指示子が導出されてよい。
【０１１２】
更に、データ中継に対するノードの帯域幅の望ましい割り当て（つまり、Diffusion  Mixer  Protocol）を表すパラメータが決定されてよい。例えば、パラメータは、割り当て可能な帯域幅の最大量を表してよい。パラメータの値は、例えば、ノード、ノードの集合、及び／又はノードを含むネットワークを制御するエンティティにより手動で設定されてよい。代替として、以下に更に詳述するように、パラメータの値は、ノードの利用可能な帯域幅の検出された変化に基づき、自動的に更新されてよい。
【０１１３】
動作１００６で、第１データパケットの各々を中継のために１つ以上の近隣ノードに割り当てるマッピングが決定される。つまり、ノードのピアへのデータパケットの中継割り当てが導出される。マッピングは、動作１００２でノードにより収集された第１データパケットのうちの１つ以上の中継の期待時間を示す。
【０１１４】
第１データパケットの中継割り当ては、（動作１００４で取得された）利用可能帯域幅情報を設定の基礎として用いて、第１データパケットの各々について、決定される。データ中継の種々のパラメータのうちの少なくとも１つは、第１データパケットが中継のためにマッピングにより割り当てられるピアノードの第１の数、第１データパケットを１つ以上のピアノードへ中継するときの遅延の第１時間長、及び第１データパケットのネットワークノードからのホップ数、を含む。つまり、データ中継処理のこれらのパラメータのうちの１つ以上は、ノードの近隣ノードへのリンクの中の、該ノードの利用可能帯域幅に基づき設定され又は調整されてよい。
【０１１５】
幾つかの実装では、ノードの利用可能帯域幅に関する情報は、上述のサブシステム（例えば、ソースミキシング、中継ミキシング、等）のうちの１つ以上のサブシステム、又はピアノードへのデータパケットの中継割り当てを制御するために利用される他の発見法のパラメータを設定するために使用されてよい。
【０１１６】
前述のように、ＲＤＲでデータパケット中継のために選択されたピアの数は、以下のように制限されてよい：
ｍｍｉｎ≦ｍｍａｘ≦ｍ
ここで、ｍは、ネットワークノードの合計ピア数を表す。利用可能帯域幅の指示を表すパラメータψ∈［０，１］、及び固定ウインドウ（例えば、ΔＴＲＭ、ΔＴＳＭ）の中で中継された及び／又は生成されたデータパケットの平均数μが与えられると、ピア数の境界についての構成セットは、以下のように導出される：
・ψ＝１ならば、ｍｍａｘ＝ｍ及びｍｍｉｎ＝ｍａｘ（０，２μ−ｍｍａｘ）
・ψ＝０ならば、ｍｍａｘ＝１及びｍｍｉｎ＝０
つまり、μは［ｍｍｉｎ，ｍｍａｘ］の中点に対応する。最小及び最大の境界は、ψの関数として表すことができる：
【数６】
2021524197.tif 000010
ここで、式は最も近い整数値について評価される。言い換えると、ネットワークノードの利用可能帯域幅（ψにより表される）に基づき、第１データパケットが中継のためにマッピングにより割り当てられるピアの数の可能な値の範囲が決定されてよい。決定された範囲内の数値が、マッピングが第１データパケットを中継するピアノードの第１の数として設定するために、（例えば、任意に、ランダムに）選択できる。
【０１１７】
２μ−ｍｍａｘ≦０ならば、ｍｍｉｎは０に設定される。通常、ψ及びｍの値が大きいほど、範囲［ｍｍｉｎ，ｍｍａｘ］が大きくなる。つまり、利用可能帯域幅及びピアノードが多いほど、第１データパケットの中継を受信するよう設定されるべきピアノードの数において、柔軟性が大きくなる。
【０１１８】
幾つかの実装では、平均μは、時間の関数として変化するようモデル化されてよい。（ソースミキシング及び中継ミキシングの）μの値は、例えば、三角関数を用いてモデル化されてよい：
【数７】
2021524197.tif 000011
ここで、μ＊はμ（ｔ）の期待値を表し、ｋは正弦波の周期を制御する。
【０１１９】
第１データパケットの中継を受信するために選択されたピアの数の可能な値の範囲（ｍ（ｔｘｉ））は、更に精緻化され得る。例えば、ソースミキシングサブシステムのシナリオでは：
ｍ（ｔｘｉ）＝ｍＳＭ±ｒｎｄ（ξＳＭ）
ここで、ｍＳＭはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、ｒｎｄ（ξＳＭ）は、０とξＳＭ−１との間のランダムな整数を表す。ξＳＭの例示的な確率分布関数は、範囲［−ξＳＭ，ξＳＭ］内の９５％のエネルギを有する離散ガウス分布である。より一般的な「スキュー（skew）正規分布」は、確率密度関数ＰＤＦξにより以下のように特徴付けることができる：
【数８】
2021524197.tif 000012
【０１２０】
平均値の右側の値は、ネットワーク内のデータパケットの初期伝搬を助けるために優先されてよいので、ソースミキシングの場合に、スキューは、分布の両側の間の非対称を表すために役立ち得る。関数は、以下の平均μξ及び分散σ２ξを有する：
【数９】
2021524197.tif 000013
【０１２１】
上式において、ω、ρ、及びαは、それぞれ曲線の規模、位置、及び形状を表す。従って、μξ及びσ２ξは、（１）範囲［ｍｍｉｎ，ｍｍａｘ］、及び（２）中継のために選択されたピアの平均数を表す公称値、つまりμＳＭ（ｔ）に従い構成されてよい。幾つかの実装では、以下の構成は、平均及び分散を定義するときに適切に使用されてよい：
【数１０】
2021524197.tif 000014
【０１２２】
第３の式は、未知の変数ω、ρ、αについて解くために選択できる。例えば、αとψとの間の相関は、以下のように表されてよい：
α＝８ψ−４、又は、α＝８．６ｔａｎｈ（ψ−０．５）
【０１２３】
ネットワークノードの利用可能帯域幅に基づき制御され得る別のパラメータは、データパケットの中継のときの遅延の時間である。遅延される中継（つまり、中継割り当て／マッピングにより示される中継の期待時間の後の所定時間長でデータパケットを送信すること）は、データパケットに関するソース及び宛先情報を非相関するのに役立ち得る。例えば、時間ウインドウΔＴの中で収集された又は生成されたデータパケットは、ΔＴの倍数ｑΔＴに等しい遅延を有し中継されてよい。ここで、ｑはランダム変数である。非相関の程度と中継における遅延の程度との間でバランスを取るために、ランダム変数ｑは、負の指数確率密度関数を有してよい。
【０１２４】
通常、中継における遅延の長さは、ノードの利用可能帯域幅に逆比例してよい。特に、ψの値が低いほど、中継の遅延が長い。この関係は、次式を用いて表され得る：
【数１１】
2021524197.tif 000015
ここで、ｎは前の時間ウインドウで受信されたデータパケットの数の推定を表し、ΔＴ＊は公称時間ウインドウ、つまり遅延される中継の下限を表す。ΔＴ＊の値は、平均接続時間、又はノードのネットワークの中でのノードの中心度（つまり、ノードへの入り方向接続の数）に基づき変化してよい。
【０１２５】
動作１００８で、収集されたセットの第１データパケットは、動作１００６で決定されたマッピングに従い、ネットワークノードの近隣ノードへ送信される。幾つかの実装では、収集された第１データパケットのサブセットのみが、マッピングにより指定された中継割り当てに従い送信される。
【０１２６】
図１４を参照すると、ネットワーク内でデータパケットを伝搬する別の例示的な処理１１００が示される。方法１１００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。特に、方法１１００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１データパケット（例えば、トランザクション）を受信するノードにより実行される。
【０１２７】
処理１１００は、第１データパケットが一旦ネットワークノードにより伝搬されると、第１データパケットが伝わるホップ数を設定する技術を導入する。動作１１０２で、第１データパケットのセットが収集され、動作１１０４で、近隣ノードへのノードのリンクの中で、ノードの利用可能帯域幅が決定される。次に動作１１０６で、ノードにより収集された第１データパケットのマッピングが決定され、該マッピングは、第１データパケットの各々を中継のために１つ以上の近隣ノードに割り当てる。
【０１２８】
動作１１０８で、第１データパケットのセットから選択された少なくとも１つの第１データパケットについて、該少なくとも１つの第１データパケットが中継のために割り当てられるピアノードの第１セットが識別される。この識別は、動作１１０４で決定されたマッピングを参照して行われる。
【０１２９】
動作１１１０で、第１セットのうちの第２サブセットが識別される。第２サブセットのピアノードは、ネットワークノードから少なくとも１つの第１データパケットを受信すると、少なくとも１つの第１データパケットを自身の近隣ノードへ中継するよう指定される。つまり、ピアノードの第２サブセットは、少なくとも１つの第１データパケットを自身のピアへ転送することにより、少なくとも１つの第１データパケットのネットワークを通じる伝搬に貢献する。少なくとも１つの第１データパケットが第２サブセットのピアノードへ中継されると、少なくとも１つの第１データパケットの伝搬は、ネットワークの更なるノードへと続く。他方で、少なくとも１つの第１データパケットが、第２サブセットに含まれない第１セットのピアノードに中継されると、これらのピアノードは、少なくとも１つの第１データパケットをそれらの近隣ノードのいずれにも転送しない。
【０１３０】
動作１１１２で、少なくとも１つの第１データパケットについて、ノードは、少なくとも１つの第１データパケットを、第２サブセットに含まれるピアノードへ送信する。動作１１１４で、少なくとも１つの第１データパケットについて、ノードは、少なくとも１つの第１データパケットの変更バージョンを、第２サブセットに含まれない第１セットのピアノードへ送信する。変更データパケットは、少なくとも１つの第１データパケットのピアノードへの更なる中継が禁止されることを示すよう変更された少なくとも１つの第１データパケットを含む。このように、ピアノードのグループ（つまり、第２サブセットのピア）は、少なくとも１つの第１データパケットの伝搬を続けるよう構成され、一方で、ピアノードの異なるグループ（つまり、第２サブセットに含まれないピア）は、ネットワークノードから少なくとも１つの第１データパケットを受信するだけであり、それをそれらのピアに中継しない。更に伝搬されるデータパケットを、ネットワークノードからの単一ホップだけ伝わるデータパケットから区別することにより、ネットワークノードの中でデータ伝搬方式におけるデータパケットの冗長な中継の数を低減することが可能になる。
【０１３１】
例えば、２つのノードがピアの同じセットを有する場合、該２つのノードに中継されるデータパケットについて、該２つのノードの両方によりそれらのピアへ更に伝搬されることは、それらのピアへ送信されるデータパケットの複製を生じるので、冗長である。既にネットワークの他の識別可能なノードを宛先とする可能性のあるデータパケットにより伝達されたホップ数を制限することにより、ネットワーク帯域幅の不要な消費が抑えられ又は低減され得る。
【０１３２】
第２サブセットに含まれない第１セットのピアへ転送されるデータパケットは、更に伝搬されるべき（つまり、第２サブセットのピアへ転送される）データパケットからそれらを区別するためにマークされてよい。例えば、第２サブセットに含まれないピアへ転送される少なくとも１つの第１データパケットの中に、該データパケットの他のノードへの更なる中継が禁止されることを示すために、追加ビットが設定されてよい。
【０１３３】
少なくとも１つの第１データパケットは、幾つかの実装では、第１データパケットの収集されたセットから任意に選択されてよい。代替として、少なくとも１つの第１データパケットは、ネットワークノードにより１つ以上のピアノードへ前に送信されたという決定に基づき、選択されてよい。別の例として、少なくとも１つの第１データパケットは、ｎ１ｈｏｐ毎に中継されるデータパケットをランダムに設定することにより選択されてよい。ｎ１ｈｏｐの値は、ｍ及びψの両方に依存する。特に、一般的に、ｍ及びψの値が高いほど、ｎ１ｈｏｐが高くなる。例えば、相関は、以下のように２次関数によりモデル化できる：
ｎ１ｈｏｐ＝（ｍ−１）ψ２＋１
【０１３４】
図１５を参照すると、ネットワーク内でデータパケットを伝搬する別の例示的な処理１２００が示される。方法１２００は、例えば図１のネットワーク１００のようなブロックチェーンネットワークのノードにより実装される。特に、方法１２００は、ＤＭＰに参加し、ネットワークの残りの部分へ伝搬するために第１データパケット（例えば、トランザクション）を受信するノードにより実行される。
【０１３５】
ノードは、動作１２０２で、第１データパケットのセットを収集し、動作１２０４で、近隣ノードへのノードのリンクの中で、利用可能帯域幅を決定する。次に動作１２０６で、データパケットのピアへのマッピング／中継割り当てが決定される。
【０１３６】
動作１２０８で、ネットワークノードの利用可能帯域幅の変化が検出される。利用可能帯域幅は、ネットワークノードの他の通信活動に依存して増加又は減少し得る。変化は、ネットワークノードによりリアルタイムに検出されてよく、動作１２１０で、ピアノードへの中継のためにデータパケットの更新されたマッピングが、利用可能帯域幅の更新された指示に基づき、リアルタイムに決定される。特に、マッピングの１つ以上のパラメータは、利用可能帯域幅に関する更新された情報に基づき設定されてよい。係数は、第１データパケットが中継のためにマッピングにより割り当てられるピアノードの第１の数、第１データパケットを１つ以上のピアノードへ中継するときの遅延の第１時間長、及び第１データパケットのネットワークノードからのホップ数、を含む。
【０１３７】
動作１２１２で、第１データパケットは、更新されたマッピング／中継割り当てに基づき、ネットワークノードの近隣ノードへ送信される。
【０１３８】
ネットワークノードの利用可能帯域幅に関する情報は、どの拡散モードがＤＭＰの間に利用すべきかの決定に影響を与えてよい。より具体的には、ネットワークノードは、ＲＤＲモード又は標準的拡散モードに切り替えるかを、ノードの近隣への該ノードのリンクの中で現在利用可能な帯域幅に基づき、決定してよい。拡散モードの間の切り替えは、ＲＤＲにより生成される処理オーバヘッドが非常に高い場合、利用可能帯域幅はネットワーク最適化を要求せず、ローカルシステムは２つの拡散モードの間で周期的に交互になるよう設定される。
【０１３９】
図１６を参照すると、参加ノード１６００の簡易な例がブロック図形式で示される。ノード１６００は、１つ以上のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでよいプロセッサ１６０２を含む。ノード１６００は、値、変数、及び幾つかの例ではプロセッサ実行可能プログラム命令を格納するための永久及び非永久メモリと、有線又は無線ネットワークを介するネットワーク接続を提供するネットワークインタフェース１６０６と、を含んでよいメモリ１６０４を更に含む。
【０１４０】
ノード１６００は、実行されるとプロセッサ１６０２に本願明細書に記載の機能又は動作のうちの１つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション１６０８を含む。
【０１４１】
本願明細書に記載の装置及び処理、及びブロックチェーンノードを構成するための記載された方法／処理を実装する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を用いて実現されてよい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング習慣、データ構造、又は他のそのような実装の詳細に限定されない。
【０１４２】
上述の実施形態は、本発明を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本発明の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」（comprising、comprises）等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本発明は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、１つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【図１】
2021524197.tif 000016
【図２】
2021524197.tif 000017
【図３】
2021524197.tif 000018
【図４】
2021524197.tif 000019
【図５】
2021524197.tif 000020
【図６】
2021524197.tif 000021
【図７】
2021524197.tif 000022
【図８】
2021524197.tif 000023
【図９】
2021524197.tif 000024
【図１０】
2021524197.tif 000025
【図１１】
2021524197.tif 000026
【図１２】
2021524197.tif 000027
【図１３】
2021524197.tif 000028
【図１４】
2021524197.tif 000029
【図１５】
2021524197.tif 000030
【図１６】
2021524197.tif 000031
【国際調査報告】
2021524197.tif 000032
2021524197.tif 000033
2021524197.tif 000034