(57)【要約】  ノードのネットワークでデータ・パケットを伝搬させる方法が開示される。複数のノードのうちの１つにおいて実行される方法は：少なくとも１つの第１タイプのデータ・パケットを生成するステップ；第１期間の間に第１タイプのデータ・パケットのセットを収集するステップであって、セットは、少なくとも１つの生成したデータ・パケットと、ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１タイプのデータ・パケットとを含む、ステップ；セットのうちのデータ・パケットとノードに接続される複数の隣接ノードとのマッピングを決定するステップであって、マッピングは、セットのうちの各データ・パケットの隣接ノードに対する中継予想時間を指定し、マッピングを決定するステップは：中継に同じ送信元を含む任意の２つのデータ・パケットを、隣接ノードの異なるサブセットに割り当てる第１サブ・マッピング；及び同じ時間インターバル内に１つ以上の第１ノードからノードにより受信した又はノードで生成した任意の２つのデータ・パケットに、異なる中継予想時間を指定する第２サブ・マッピングのうちの少なくとも１つを決定するステップを含む、ステップを含む。
2021513265.tif 000002
【特許請求の範囲】
【請求項１】
ノードのネットワークでデータ・パケットを伝搬させる、コンピュータが実行する方法であって、前記ネットワーク内の各ノードは他ノードに対する１つ以上のコネクションを有し、前記方法は：
少なくとも１つの第１タイプのデータ・パケットを生成するステップ；
第１期間の間に前記第１タイプのデータ・パケットのセットを収集するステップであって、前記セットは、少なくとも１つの生成したデータ・パケットと、前記ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１タイプのデータ・パケットとを含む、ステップ；及び
前記セットのうちのデータ・パケットとノードに接続される複数の隣接ノードとのマッピングを決定するステップであって、前記マッピングは、前記セットのうちの各データ・パケットの隣接ノードに対する中継予想時間を指定し、前記マッピングを決定するステップは：
中継に同じ送信元を含む任意の２つのデータ・パケットを、前記隣接ノードの異なるサブセットに割り当てる第１サブ・マッピング；及び
同じ時間インターバル内に前記１つ以上の第１ノードから前記ノードにより受信した又は前記ノードで生成した任意の２つのデータ・パケットに、異なる中継予想時間を指定する第２サブ・マッピング；
のうちの少なくとも１つを決定するステップを含む、ステップ；及び
決定されたマッピングに従って、前記セットのうちのデータ・パケットを前記複数の隣接ノードに送信するステップ；
を含む方法。
【請求項２】
前記第１サブ・マッピングを決定するステップは、少なくとも１つの生成したデータ・パケットの各々について：
前記ノードにより以前に生成した所定数の第１タイプの第１データ・パケットを識別するステップ；
前記第１データ・パケットに関連する中継ノード・セットのリストを取得するステップであって、前記中継ノード・セットは、前記第１データ・パケットがそれぞれ中継される先の隣接ノードを含む、ステップ；及び
取得した前記リストにおける中継ノード・セットとは異なる隣接ノードのセットを識別することに基づいて、中継ノードの第１セットを選択するステップ；
を含む、請求項１に記載の方法。
【請求項３】
前記中継ノードの第１セットを選択するステップは、取得した前記リストに含まれていない２つ以上の隣接ノードのセットを任意に選択するステップを含む、請求項２に記載の方法。
【請求項４】
選択された前記第１セットは、少なくとも２つのノードにより取得された前記リストにおける中継ノード・セットとは異なる、請求項２又は３に記載の方法。
【請求項５】
前記第１セットに含まれるように選択される隣接ノードの数は任意に決定される、請求項２〜４のうちの何れか１項に記載の方法。
【請求項６】
前記第１セットに含まれるように選択される隣接ノードの数は、前記ノードの帯域幅条件に従って制限される、請求項２〜５のうちの何れか１項に記載の方法。
【請求項７】
前記第１サブ・マッピングを決定するステップは、１つ以上の第１ノードの各々について：
前記第１ノードから最近受信した第１タイプの所定数の第２データ・パケットを識別するステップ；及び
前記第２データ・パケットの、隣接ノードの固定セットに対する第１割り当てを決定するステップであって、前記第１割り当ては、前記第２データ・パケットの、所定の条件を充足する隣接ノードに対する１つ以上の割り当てから選択される、ステップ；
を含む、請求項１〜６のうちの何れか１項に記載の方法。
【請求項８】
第２データ・パケットの、隣接ノードの固定セットに対する割り当ては、前記第２データ・パケットのうちの任意の２つについて、前記第２データ・パケットの双方が割り当てられる隣接ノードの数が所定の閾値以下である場合に、前記所定の条件を充足する、請求項７に記載の方法。
【請求項９】
前記第１ノードのうちの任意の２つについて、前記２つの第１ノードから受信した全ての第２データ・パケットのセットは、前記第１割り当てにおいて、少なくとも２つの異なる隣接ノードに割り当てられる、請求項７又は８に記載の方法。
【請求項１０】
前記第２データ・パケットの、隣接ノードの固定セットに対する第２割り当てを決定するステップであって、前記第２割り当ては、前記ノードの出力インターフェースにおけるトラフィックのバランスをとるための前記第１割り当ての再設定である、ステップを更に含む請求項７〜９のうちの何れか１項に記載の方法。
【請求項１１】
前記第２サブ・マッピングを決定するステップは、前記セットの１つ以上のデータ・パケットの各々について：
前記データ・パケットの隣接ノードに対する次の中継予定時間を決定するステップ；
前記次の中継予定時間の後、所定の長さの時間に、前記データ・パケットを中継するステップ；
を含む、請求項１〜１０のうちの何れか１項に記載の方法。
【請求項１２】
前記所定の長さの時間は第１期間の倍数である、請求項１１に記載の方法。
【請求項１３】
前記１つ以上の第１ノードの各々から受信することが可能なデータ・パケットの最大数を設定するステップを更に含む請求項１〜１２のうちの何れか１項に記載の方法。
【請求項１４】
エンティティのためのコンテンツをブロックチェーンに送信するプロセスに参加するコンピューティング・デバイスであって、請求項１〜１３のうちの何れか１項に記載の方法を実行するように構成されているコンピューティング・デバイス。
【請求項１５】
ノードのネットワークでデータ・パケットを伝搬させるプロセスに参加するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ読み取り可能な媒体であって、前記プロセッサ実行可能命令は、参加ノードのうちの１つにおけるプロセッサにより実行されると、請求項１〜１３のうちの何れか１項に記載の方法を前記プロセッサに実行させる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・ネットワークに関し、特にノードのネットワークでデータを伝搬させるための方法及び装置、電子通信、並びにネットワーク技術に関する。それはブロックチェーン技術に関連して使用することに特に適している。特に、データの安全な伝送に関連し、第三者による攻撃や潜在的な悪意のあるイベント、即ち攻撃の緩和に関連する。
【背景技術】
【０００２】
この文書において我々は「ブロックチェーン」という用語を電子的な、コンピュータ・ベースの、分散型のあらゆる形式の台帳を含むように使用する。これらは、ブロックチェーン及びトランザクション・チェーンの技術、許可型及び非許可型の台帳、共有台帳、並びにそれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装も提案され開発されている。便宜上及び説明の目的で本願ではビットコインが言及されるかもしれないが、本発明はビットコイン・ブロックチェーンで使用することに限定されず、代替的なブロックチェーン実装及びプロトコルも、本発明の範囲内にあることに留意すべきである。用語「ビットコイン」は本願ではビットコイン・プロトコル又はブロックチェーンに由来するプロトコル、ブロックチェーン及び実装の任意の及び全てのバリエーションを含むように使用される。
【０００３】
ブロックチェーンは、コンピュータ・ベースの非セントラル化された分散システムとして実現されるコンセンサス・ベースの電子台帳であり、これはトランザクションを成すブロックから構成される。各トランザクションは、ブロックチェーン・システムの参加者間でのデジタル資産のコントロールの移転をエンコードするデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。各ブロックは前のブロックのハッシュを含み、その結果、ブロックは共にチェーン化されるようになり、ブロックチェーンの開始以来そこに書き込まれてきた全てのトランザクションの永続的で変更不可能な記録を作成する。トランザクションは、トランザクションの入力及び出力に組み込まれたスクリプトとして知られる小さなプログラムを含み、それはトランザクションの出力がどのように、そして誰によってアクセスされ得るかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベースのスクリプト言語を使用して書き込まれる。
【０００４】
新しいトランザクションを受信したネットワーク・ノードは、そのトランザクションをネットワーク内の他のノードにプッシュすることを速やかに試みるであろう。新しいトランザクションを他のノードに送信する前に、それは「検証され」、適用可能なブロックチェーン・プロトコルに従ってトランザクションが適切なトランザクションの基本要件を充足することを保証するために、一組の基準に対して検査されることを意味する。
【０００５】
ブロックチェーンに書き込まれるトランザクションのために、それはノード（「マイナー」又は「マイニング・ノード」）によりブロックに組み込まれ、そのノードはトランザクションを収集し且つトランザクションをブロックに形成するように設計されている。次に、マイナーはそのノードに関する「プルーフ・オブ・ワーク」を完了することを試みる。ブロックチェーン・ネットワーク中のマイナーは、トランザクションのブロックを組み立てた１番になること、及びそのブロックに対する関連するプルーフ・オブ・ワークを完了することを競う。勝利したマイナーは、確認したブロックをブロックチェーンに追加し、そのブロックはネットワークを介して伝搬され、その結果、ブロックチェーンのコピーを保持する他のノードは各自の記録を更新することが可能である。ブロックを受け取るそれらのノードは、そのブロック及びそこの全てのトランザクションを「検証」し、それがプロトコルの正式な要件に従っていることを保証する。
【発明の概要】
【０００６】
ビットコインのようなブロックチェーン技術の認識されている利点のうちの１つは、取引の匿名性（ａｎｏｎｙｍｉｔｙ）である。ビットコイン・ユーザーの個人的な詳細は、形式的にも明示的にもビットコイン・アドレスに付いてはおらず、ブロックチェーンのビットコイン台帳は、公のアドレス情報を含むだけである。しかしながら、ブロックチェーンは、インターネットのトップで動作する分散型のピア・ツー・ピア・ネットワークとして構成されているので、インターネット・プロトコル（ＩＰ）アドレス情報を使用してユーザーをネットワーク活動にリンクさせる攻撃によって、トランザクションの匿名性は損なわれてしまう可能性がある。例として、ブロックチェーン・ベースのネットワークで行われるＩＰトラフィック分析のような非匿名化攻撃（ｄｅ−ａｎｏｎｙｍｉｚａｔｉｏｎ  ａｔｔａｃｋｓ）は、関心のある第三者が、ネットワークでユーザーによってサブミットされたトランザクションを監視し、公に利用可能な情報を使ってトランザクションをそれらのソースに、例えばユーザーの公開鍵を彼らのＩＰアドレスにリンクすることによって結び付けることが可能であるかもしれない。
【０００７】
トラフィック分析は、ネットワーク・ノードによる及びネットワーク・ノード間のトランザクションの伝搬を当てにするブロックチェーン・ベースのネットワークにとって特に問題である。トランザクションを受信するネットワーク内の各ノードは、トランザクションを検証し、次いでそれをピア・ノードに送信する。例えば、ビットコイン・プロトコルでは、ノードは、トランザクションのリストを含む「ＩＮＶ」メッセージをピア・ノードに送信し、「ＩＮＶ」メッセージで通知されたトランザクションのうちの一部のサブセットを選択する「ＧＥＴＤＡＴＡ」応答メッセージを受信する。次いで、ノードは要求されたトランザクションをピア・ノードに送信する。このプロセスは、ノードが接続されている各ピア・ノードに対して実行される。攻撃者は、トランザクションがネットワーク内で伝搬される場合に伝送されるデータを傍受して分析し、最終的に、トランザクションの送信元及び送信先をリンクするために使用することが可能な情報を獲得する可能性がある。
【０００８】
トラフィック分析又は他のタイプの非匿名化攻撃によりネットワーク匿名性を損なう可能性を減少させることが可能な、ブロックチェーン・ベースのネットワークにおけるトランザクションを伝搬する技術を提供することが望ましい。より一般的には、非匿名化攻撃に対する脆弱性を減らすために、ピア・ツー・ピア・ネットワークのノード間でデータを中継する技術を提供することが望ましい。
【０００９】
そのような解決策が講じられる。
【００１０】
従って本発明によれば添付の特許請求の範囲で規定されるような方法及び装置が提供される。
【００１１】
本願は、ノードのネットワーク内でデータ・パケットを伝搬させるためのノードを述べており、ここで、ネットワーク内の各ノードは他のノードに対する１つ以上のコネクションを有する。ノードは、少なくとも１つの第１タイプのデータ・パケットを生成するステップと；第１期間の間に第１タイプのデータ・パケットのセットを収集するステップであって、そのセットは、少なくとも１つの生成したデータ・パケットと、ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１タイプのデータ・パケットとを含む、ステップと；セットのうちのデータ・パケットとノードに接続される複数の隣接ノードとのマッピングを決定するステップであって、マッピングは、セットのうちの各データ・パケットの隣接ノードに対する中継予想時間を指定している、ステップと；を実行するように構成されることが可能である。セットのうちのデータ・パケットと複数の隣接ノードとのマッピングを決定するステップは：中継に同じ送信元を含む任意の２つのデータ・パケットを、隣接ノードの異なるサブセットに割り当てる第１サブ・マッピング；及び同じ時間インターバル内に１つ以上の第１ノードからノードにより受信した又はノードで生成した任意の２つのデータ・パケットに、異なる中継予想時間を指定する第２サブ・マッピング；のうちの少なくとも１つを決定するステップを含むことが可能である。ノードは、決定されたマッピングに従って、セットのうちのデータ・パケットを複数の隣接ノードに送信するように更に構成される可能性がある。
【００１２】
ノードは、プロセッサと、ネットワーク接続を提供するネットワーク・インターフェースと、メモリとを含む可能性がある。メモリは、プロセッサによって実行されると、上述の動作をプロセッサに実行させるプロセッサ実行可能命令を含む可能性がある。
【００１３】
本願はコンピュータで実行される方法を述べている。これは、ノードのネットワークでデータ・パケットを伝搬させる方法として述べることが可能であり、ネットワーク内の各ノードは他ノードに対する１つ以上のコネクションを有する。方法は、複数のノードのうちの１つで実行されることが可能であり、本方法は：少なくとも１つの第１タイプのデータ・パケットを生成するステップと；第１期間の間に第１タイプのデータ・パケットのセットを収集するステップであって、そのセットは、少なくとも１つの生成したデータ・パケットと、ネットワーク内の１つ以上の第１ノードから受信した少なくとも１つの第１タイプのデータ・パケットとを含む、ステップと；セットのうちのデータ・パケットとノードに接続される複数の隣接ノードとのマッピングを決定するステップであって、マッピングは、セットのうちの各データ・パケットの、隣接ノードに対する中継の予想時間を指定する、ステップと；を含む可能性がある。セットのうちのデータ・パケットと複数の隣接ノードとのマッピングを決定するステップは：中継に同じ送信元を含む任意の２つのデータ・パケットを、隣接ノードの異なるサブセットに割り当てる第１サブ・マッピング；及び同じ時間インターバル内に１つ以上の第１ノードからノードにより受信された又はノードで生成された任意の２つのデータ・パケットに、異なる中継予想時間を指定する第２サブ・マッピング；のうちの少なくとも１つを決定するステップを含む可能性がある。本方法は、決定されたマッピングに従って、セットのうちのデータ・パケットを複数の隣接ノードに送信するステップを更に含む可能性がある。
【００１４】
一部の実装において、第１サブ・マッピングを決定するステップは、少なくとも１つの生成したデータ・パケットの各々について：ノードにより以前に生成した所定数の第１タイプの第１データ・パケットを識別するステップと；第１データ・パケットに関連する中継ノード・セットのリストを取得するステップであって、中継ノード・セットは、第１データ・パケットがそれぞれ中継される先の隣接ノードを含む、ステップと；取得したリストにおける中継ノード・セットとは異なる隣接ノードのセットを識別することに基づいて、中継ノードの第１セットを選択するステップと；を含む可能性がある。
【００１５】
一部の実装において、中継ノードの第１セットを選択するステップは、取得したリストに含まれていない２つ以上の隣接ノードのセットを任意に選択するステップを含む可能性がある。
【００１６】
一部の実装において、中継ノードの選択された第１セットは、少なくとも２つのノードにより取得されたリストにおける中継ノード・セットとは異なる可能性がある。
【００１７】
一部の実装において、第１セットに含まれるように選択される隣接ノードの数は任意に決定される可能性がある。
【００１８】
一部の実装において、第１セットに含まれるように選択される隣接ノードの数は、ノードの帯域幅条件に従って制限される可能性がある。
【００１９】
一部の実装において、第１サブ・マッピングを決定するステップは、１つ以上の第１ノードの各々について：第１ノードから最近受信した第１タイプの所定数の第２データ・パケットを識別するステップと；第２データ・パケットの、隣接ノードの固定セットに対する第１割り当てを決定するステップであって、第１割り当ては、第２データ・パケットの、所定の条件を充足する隣接ノードに対する１つ以上の割り当てから選択される、ステップと；を含む可能性がある。
【００２０】
一部の実装において、第２データ・パケットの、隣接ノードの固定セットに対する割り当ては、第２データ・パケットのうちの任意の２つについて、第２データ・パケットの双方が割り当てられる隣接ノードの数が所定の閾値以下である場合に、所定の条件を充足している可能性がある。
【００２１】
一部の実装において、第１ノードのうちの任意の２つについて、２つの第１ノードから受信した全ての第２データ・パケットのセットは、第１割り当てにおいて、少なくとも２つの異なる隣接ノードに割り当てられる可能性がある。
【００２２】
一部の実装において、本方法は、第２データ・パケットの、隣接ノードの固定セットに対する第２割り当てを決定するステップを更に含む可能性があり、第２割り当ては、ノードの出力インターフェースにおけるトラフィックの均衡を図るための第１割り当ての再設定である。
【００２３】
一部の実装において、第２サブ・マッピングを決定するステップは、セットの１つ以上のデータ・パケットの各々について：データ・パケットの隣接ノードに対する次の中継予定時間を決定するステップと；次の中継予定時間の後、所定の時間内に、データ・パケットを中継するステップと；を含む可能性がある。
【００２４】
一部の実装において、所定の時間は第１期間の倍数である可能性がある。
【００２５】
一部の実装において、本方法は、１つ以上の第１ノードの各々から受信することが可能なデータ・パケットの最大数を設定するステップを更に含む可能性がある。
【００２６】
本願は、エンティティのためのコンテンツをブロックチェーンに送信するプロセスに参加するコンピューティング・デバイスも述べており、コンピューティング・デバイスは、本願で説明される１つ以上の方法の動作を実行するように構成される。
【００２７】
本願は、ノードのネットワークでデータ・パケットを伝搬させるプロセスに参加するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ読み取り可能な媒体も述べており、プロセッサ実行可能命令は、複数の参加ノードのうちの１つにおけるプロセッサで実行されると、本願で説明される１つ以上の方法の動作をプロセッサに実行させる。
【００２８】
本願は、ネットワークにおけるノード・レベルの匿名化を提供するための（好ましくはブロックチェーン・ベースの）ソリューションを述べている。特に、本願で説明される方法及びシステムは、ネットワーク内のデータ伝搬方式におけるノードの機能を分かりにくくすることを促進する。たとえ攻撃者がネットワーク内のノード間トラフィックを監視したり、特定のノードの隣接ノードへのアクセスを獲得したりしたとしても、本方法は、特定のノードがネットワーク内で伝搬しているデータ・パケットの送信元であるか又は中継ノードであるかどうかを、そのような攻撃者が判別することを困難にする。ブロックチェーン・ネットワークにおけるノードの機能／役割を分かりにくくすることによって、ネットワークにおける非匿名化攻撃の効率は低下する可能性があり、ブロックチェーンにおける又はブロックチェーンを介したデータ伝送のセキュリティは改善される可能性がある。
【００２９】
本願で説明される多くの実装例において、ブロックチェーン・トランザクションを具体的に参照するが；本願で記載される方法及びデバイスは、ブロックチェーン以外のトランザクション伝搬に関連して実装及び適用されてもよいことが理解されるであろう。より一般的には、本開示で説明される方法及びデバイスは、ピア・ツー・ピア・ネットワークのノード間で多種多様なデータを伝搬するために使用することに適している可能性がある。
【図面の簡単な説明】
【００３０】
本発明の１つの態様又は実施形態に関連して記載される任意の特徴は、１つ以上の他の態様／実施形態に関連して使用されてもよい。本発明のこれら及び他の態様は、本願で説明される実施形態から明らかになり、それに関連して説明される。本発明の実施形態は、単なる例示として、添付図面に関連して参照して説明される：
【００３１】
【図１】ブロックチェーンに関連付けられる例示的なネットワークを示す。
【００３２】
【図２】入力バッファ及び出力バッファを有する例示的なブロックチェーン・ノードを図式的に示す。
【００３３】
【図３】ノードの例示的なネットワーク内でトランザクションを伝搬するためのプロトコル、拡散ミキサ・プロトコル（Ｄｉｆｆｕｓｉｏｎ  Ｍｉｘｅｒ  Ｐｒｏｔｏｃｏｌ，ＤＭＰ）の概略図である。
【００３４】
【図４】ノードのネットワークにおけるトランザクションのＤＭＰによる中継の例を示す。
【００３５】
【図５】ブロックチェーン・ネットワークでデータ・パケットをＤＭＰに従って伝搬するための例示的なプロセスをフローチャート形式で示す。
【００３６】
【図６】ブロックチェーン・ネットワークでデータ・パケットをＤＭＰに従って伝搬するための別の例示的なプロセスをフローチャート形式で示す。
【００３７】
【図７】ブロックチェーン・ネットワークでデータ・パケットをＤＭＰに従って伝搬するための別の例示的なプロセスをフローチャート形式で示す。
【００３８】
【図８】ブロックチェーン・ネットワーク内のノードで生成又は受信されたデータ・パケットを送信するための例示的なプロセスをフローチャート形式で示す。
【００３９】
【図９】ブロックチェーン・ネットワーク内のノードで生成されたデータ・パケットを送信するための例示的なプロセスをフローチャート形式で示す。
【００４０】
【図１０】ブロックチェーン・ネットワーク内のノードで受信されたデータ・パケットを中継するための例示的なプロセスをフローチャート形式で示す。
【００４１】
【図１１】ノードのネットワークにおけるデータ・パケットの伝搬における宛先混合の例を示す。
【００４２】
【図１２】ノードのネットワークにおけるデータ・パケットの遅延中継の例を示す。
【００４３】
【図１３】例示的なブロックチェーン・ノードをブロック図形式で示す。
【発明を実施するための形態】
【００４４】
本願において、用語「及び／又は」は、列挙された要素のうちの単独の１つ、任意のサブ・コンビネーション、又は全ての要素、を含む列挙された要素の全ての可能な組み合わせ及びサブ・コンビネーションを、必ずしも追加の要素を排除することなくカバーするように意図されている。
【００４５】
本願において、「〜又は〜のうちの少なくとも１つ」という言い回しは、列挙された要素のうちの単独の１つ、任意のサブ・コンビネーション、又は全ての要素、を含む列挙された要素の任意の１つ以上を、必ずしも何らかの追加の要素を排除することなく、必ずしも全ての要素を必須とすることなくカバーするように意図されている。
【００４６】
先ず図１を参照すると、これはブロックチェーン・ネットワーク１００として本願で言及されてよいブロックチェーンに関連した例示的なネットワークをブロック図の形式で示している。ブロックチェーン・ネットワーク１００はピア・ツー・ピアのオープン・メンバーシップ・ネットワークであり、誰でも、招待されることなく、又は他のメンバーからの同意を得ることなく、参加することが可能である。ブロックチェーン・ネットワーク１００が動作する際に従うブロックチェーン・プロトコルのインスタンスを実行する分散された電子デバイスは、ブロックチェーン・ネットワーク１００に参加することができる。そのような分散された電子デバイスは、ノード１０２と言及される可能性がある。ブロックチェーン・プロトコルは例えばビットコイン・プロトコル又は他の暗号通貨であってもよい。
【００４７】
ブロックチェーン・プロトコルを実行する電子デバイスであって、ブロックチェーン・ネットワーク１００のノード１０２を形成するものは、例えばデスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー等のコンピュータ、スマートフォンのようなモバイル・デバイス、スマート・ウォッチのようなウェアラブル・コンピュータ、又は他の電子デバイスを含む種々のタイプのものであってもよい。
【００４８】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線の通信技術を含むことが可能な適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーン・ネットワーク１００は、少なくとも部分的にインターネット上で実装され、一部のノード１０２は地理的に分散した位置に配置されてもよい。
【００４９】
ノード１０２は、ブロックにグループ化されたブロックチェーン上の全てのトランザクションのグローバル台帳を維持し、各ブロックは、チェーン内で先行するブロックのハッシュを含む。グローバル台帳は分散された台帳であり、各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することが可能である。グローバル台帳に影響を及ぼすノード１０２によるトランザクションは、グローバル台帳の有効性が維持されるように、他ノード１０２によって検証される。ビットコイン・プロトコルを利用するもののようなブロックチェーン・ネットワークの実装及び動作の詳細は、当業者によって理解されるであろう。
【００５０】
各トランザクションは、典型的には、１つ以上の入力及び１つ以上の出力を有する。入力及び出力に組み込まれるスクリプトは、トランザクションの出力がどのように、誰によってアクセスされ得るかを指定する。トランザクションの出力は、トランザクションの結果として価値（ｖａｌｕｅ）が転送される先のアドレスであってもよい。この価値は、次いで未使用のトランザクション出力（ＵＴＸＯ）として、その出力アドレスに関連付けられる。その後、後続のトランザクションは、その価値を使用又は消費するために、そのアドレスを入力として参照することが可能である。
【００５１】
ノード１０２は、ネットワーク・ルーティングから財布サービスに至るまで、多くの様々な機能を果たし、堅牢で安全な非セントラル化されたパブリック台帳を維持することが可能である。「フル・ノード（Ｆｕｌｌ  ｎｏｄｅｓ）」は、ブロックチェーンの完全かつ最新のコピーを含み、それゆえに、パブリック台帳における任意のトランザクション（使用済み又は未使用）を検証することができる。「軽量ノード」（又はＳＰＶ）は、ブロックチェーンのサブセットを維持し、「簡易化された決済検証」技術を用いてトランザクションを検証することができる。軽量ノードは、ブロックのヘッダをダウンロードするだけであり、各ブロック内のトランザクションをダウンロードしない。従ってこれらのノードは各自のトランザクションを検証ためにピアを当てにする。フル又は軽量ノードであり得る「マイニング・ノード」は、トランザクションを検証し、ブロックチェーンにおいて新しいブロックを作成する責任を負う。典型的には軽量ノードである「ウォレット・ノード（Ｗａｌｌｅｔ  ｎｏｄｅｓ）」は、ユーザーのウォレット・サービスを処理する。ノード１０２は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）のようなコネクション指向プロトコルを用いて互いに通信する。
【００５２】
ノードがトランザクションをピアに送信することを希望する場合、「ＩＮＶＥＮＴＯＲＹ」メッセージがピアに送信され、送信ノードに知られている１つ以上のインベントリ・オブジェクトを伝える。ピアが「ＧＥＴＤＡＴＡ」メッセージ、即ち完全なトランザクション・リクエストで応える場合、トランザクションは「ＴＲＡＮＳＡＣＴＩＯＮ」メッセージを利用して送信される。トランザクションを受信したノードは、それが有効なトランザクションである条件の下で、同じ方法でピアに転送する。
【００５３】
図２を次に参照すると、これは入力バッファ２０２及び出力バッファ２０４を有する例示的なノード２００を図式的に示している。例示的なノード２００は、ｉｎｔＡ、ｉｎｔＢ、ｉｎｔＣ、ｉｎｔＤなどとして参照される複数のピア・ノードとのネットワーク・インターフェースを有する。入力バッファ２０２は、種々のピア・ノードからの入力トランザクションを示し、出力バッファ２０４は、それぞれのインターフェースを介してピア・ノードへ伝送するための、トランザクションに対応する出力ネットワーク・パケットを示す。ネットワーク・パケットは、ノード２００のオペレーティング・システムによって提供されるプリミティブに従って、アプリケーション・レベルでシリアルに送受信される。トランザクションｘが単一のイーサーネット／ＩＰパケットに適合すると仮定すると、ｍ個のピアへの送信は、ｍ個の異なる出力ネットワーク・パケットのバッファリングを必要とする。入力及び出力ネットワーク・パケットは両方とも、他の情報と共に、シリアル化されたトランザクションと、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェースＩＤとを含む。
【００５４】
一旦トランザクションが生成されると、ソース・ノードはネットワーク上でトランザクション・メッセージをブロードキャストする。一般に、クライアントがトランザクションを生成すると、それは出力バッファ２０４に入れられる。トランザクションは、直ちにピアに転送される場合とされない場合がある。ノード・ネットワークの一部の実装では、トランザクションは「拡散伝搬（ｄｉｆｆｕｓｉｏｎ  ｐｒｏｐａｇａｔｉｏｎ）」と呼ばれるメカニズムによって伝搬され、それにより、各トランザクション・ソースは、トランザクションを、独立した指数遅延でその隣接ノードに伝送する。伝搬の遅延はランダムであり、悪意のある攻撃者のタイミング推定に不確定性を導入するのに有用である。ピアが特定のトランザクションを受信すると、ピアは同じトランザクションの将来の中継を受け入れない可能性があり；例えば、トランザクション・ハッシュがピアのメモリ・プールに格納され、ピアが同一のトランザクションを拒否することを可能にする。ネットワークを介するトランザクションの「拡散」は、対称的であり、つまり転送ノードはトランザクション・ブロードキャストに影響を及ぼす隣接ノードのＩＰアドレスに関する情報を使用しないことを意味する。例えば「標準（ｓｔａｎｄａｒｄ）」拡散プロセスでは、ブロードキャスト・ノードのピアは全て同じトランザクションを受信し、各々の中継インスタンスでは、一度に唯一つのトランザクションがピア毎に中継される。この「拡散」の対称的な性質は、非匿名化攻撃を行う際に、ネットワークのピア・ツー・ピア・グラフ構造の知識を有する悪意の第三者によって悪用される可能性がある。
【００５５】
本開示は、ブロックチェーン・ネットワークでのトランザクション中継のための代替技術を提供し、トラフィック分析攻撃に対する保護を改善する。特に、提案される中継プロトコルは、トランザクションの送信元ノードとそれらのＩＰアドレスとの間の結び付きを偽装、隠蔽、又は不明瞭化するために使用されることが可能である。
【００５６】
トランザクション中継プロトコル、拡散ミキサ・プロトコル（ＤＭＰ）が提案される。ＤＭＰは２つの独立した拡散ステージを含む。第１ステージ（「ランダム差分中継（ｒａｎｄｏｍ  ｄｉｆｆｅｒｅｎｔｉａｌ  ｒｅｌａｙ，ＲＤＲ）」）は、中継されるトランザクションの混合、及びトランザクション・ソースの不明瞭化を可能にする。ランダム差分中継ステージの間に、各ノードは、トランザクションをネットワークにブロードキャストする前に、所定の時間長だけ待機し、ピアから複数のトランザクションを受信及び収集する。ノードは、次いで「エントリ・ノード」に対する進出コネクションを作成し、ほぼ同じタイムスタンプを有する異なるサブセットを、これらのエントリ・ノードのうちの任意に（例えばランダムに）選択されたサブセットに送信する。ノードのうちのエントリ・ノードは、直接的な進出コネクションがそのノードからそこへ確立されることが可能な隣接ノードである。エントリ・ノードの選択におけるランダム性と中継トランザクションにおけるダイバーシティは、攻撃者にとって、ネットワーク・トポロジの再構成をより困難にすることが可能である。
【００５７】
第２ステージ（「標準拡散」）は、ネットワーク内でのトランザクションの時宜にかなった信頼できる伝搬を保証する。標準拡散ステージでは、各ノードは、同じトランザクションを全てのエントリ・ノードに中継し、各々の中継インスタンスでは、一度に唯一つのトランザクションがエントリ・ノードごとに中継される。
【００５８】
ブロックチェーン・ネットワークのようなノードのネットワークでは、１つ以上のノードがＤＭＰを実装することが可能であることに留意すべきである。具体的には、ネットワークの１つ以上のノードは、ＤＭＰに参加することによって、受信したデータ・パケットをそのエントリ・ノードに中継することができる。参加ノードは、例えば特定のデータ・パケットを伝搬するために、ＲＤＲプロセスと標準拡散プロセスとの間で選択することが可能である。ネットワークのノードは、ＤＭＰに参加することを選択することが可能であり、非セントラル化された方式によって、又は中央当局によって構成される参加ノードのグループへの包含によって、プロトコルに参加することができる。参加ノードは、ＤＭＰに従って出力ネットワーク・パケットを中継する。特に、参加ノードがデータ・パケットを受信した場合、ノードは、ＤＭＰによって規定されるルールを使用して、そのノードに対して選択される伝搬モードに従って、受信したデータ・パケットを転送することが可能である。
【００５９】
トランザクション中継のための提案されるＤＭＰは、図３〜７を参照して説明される。ＤＭＰの概略的な眺めは図３において提供される。ノードの例示的なブロックチェーン・ネットワーク３００が示されている。各ノードはネットワーク端末（即ちブロックチェーン・ノード）を表す一方、エッジはノード間のリンクを表す。この説明の目的のために、各リンクに対して、一度に単一ビットを送受信することが可能であることが想定される。
【００６０】
この例のネットワーク３００では、ノードが新しいトランザクションを受信した場合に、それがネットワークを介して他の全てのノードに伝搬されるように、各ノードは、一組の未確認のトランザクションを維持する。各ノードは、新しいトランザクションを検証して各自それぞれのローカル・セットに格納し、新しいトランザクションを、その新しいトランザクションを有していない何らかのピア・ノードに転送する。ブロックチェーン・ネットワーク３００のピア・ツー・ピアの性質に起因して、全てノードが新しいトランザクションを同時に受信してはおらず、これは、新しいトランザクションにとって、ネットワーク３００内の全てのノードに到達するまでに幾らか時間がかかることを意味する。
【００６１】
図３は、特定のトランザクションＴｘ１を伝搬するためのＤＭＰの２つのステージ、即ちランダム差分リレー３０２及びＴｘ１の標準拡散３０４を示す。トランザクションＴｘ１のソース・ノード３１０は、時間ｔ１において、トランザクションＴｘ１を生成するか、又はピア・ノードからそれを受信する可能性がある。ＤＭＰに従って、ソース・ノード３１０は、受信した／待ち行列に入ったトランザクションのブロードキャストを開始する前に、隣接ノードから少なくとも１つ以上の到来するトランザクションを受信するために待機する。図３の例では、一旦トランザクションＴｘ２が時間ｔ２でソース・ノード３１０によって受信されると、トランザクションＴｘ１及びＴｘ２は、ソース・ノード３１０のエントリ・ノードのうちの任意に選択されたサブセットへ時間ｔ３で送信される。トランザクションＴｘ１は、エントリ・ノード３１０ｃ及び３１０ｄに転送される一方、トランザクションＴｘ２は、エントリ・ノード３１０ａ及び３１０ｂに転送される。図３の例は、単なる例示であり；特に、ソース・ノード３１０は、その受信した任意のトランザクションを伝搬する前に、２つより多い到来トランザクションを受信することを待機することが可能である。
【００６２】
エントリ・ノードは、受信したトランザクションを各自自身のピアに中継する。例えば、ノード３１０ｂ及び３１０ｄはそれぞれ、Ｔｘ２及びＴｘ１を１つ以上の各自の隣接ノードに転送する。ＤＭＰでは、トランザクションの各々の受け手は、受信したトランザクションを伝搬するモードを独立に選択する。ノード３２０は、標準拡散をその拡散モードとして選択するノードの例である。図３に示すように、ノード３２０は、同じトランザクションＴｘ１を、その全てのエントリ・ノード、即ち３２０ａ、３２０ｂ、３２０ｃ、３２０ｄ、及び３２０ｅに転送する。
【００６３】
図５を参照すると、これはＤＭＰのＲＤＲステージにおいてネットワークでデータ・パケットを伝搬するための例示的な方法５００をフローチャート形式で示している。方法５００は、例えばネットワーク１００のようなブロックチェーン・ネットワークのノードによって実現される。ノードは、この文脈では、マイニング・ノード、フル・ノード、検証ノード、又はブロックチェーン・ネットワーク内の他のタイプの個別的なブロックチェーン・ノードを指すように理解されてもよい。ノードは、ネットワーク接続、コンピューティング・リソース、及びブロックチェーン・プロトコルを実装する実行ソフトウェアを有するコンピューティング・デバイスである。
【００６４】
オペレーション５０２において、ノードに関連するクライアントは、少なくとも１つの第１タイプのデータ・パケットを生成する。ブロックチェーン・ネットワークの文脈では、第１タイプのデータ・パケットはブロックチェーン・トランザクションを含む可能性がある。即ち、クライアントは、ネットワークの他ノードに伝搬されるべきブロックチェーン・トランザクションを生成してもよい。
【００６５】
オペレーション５０４において、ノードは、第１期間Ｔの間に第１タイプのデータ・パケットのセットを収集する。即ち、ノードは、ある時間的な期間にわたって第１タイプのデータ・パケットを蓄積する。このセットは、少なくとも１つの生成されたデータ・パケットと、ネットワーク内の１つ以上のピア・ノードから受信された少なくとも１つの第１タイプのデータ・パケットとを含む。このように、ノードによって生成されたデータ・パケットは、隣接ノードから受信される同じタイプのデータ・パケットと混合される。ブロックチェーン・ネットワークでは、ノードは、時間的な期間Ｔの間に、中継されるべき到来するトランザクションについてネットワークを監視することによって、トランザクションのセットを蓄積する。時間的な期間Ｔの長さは、事前に定義されていてもよい。幾つかの例示的な実装において、時間の長さは、平均接続時間、単位時間当たりに受信されるトランザクションの平均数、又はネットワーク内のノードのセントラル性（即ち、ノードに到来するコネクションの数）などのパラメータに基づいて異なる可能性がある。期間Ｔの間に、ノードは、第１タイプのデータ・パケットを蓄積するように許可されるだけである可能性があり、従って、時間的な期間Ｔの間に、第１タイプのデータ・パケットの何れを送信することも妨げられる可能性がある。
【００６６】
オペレーション５０６において、ノードは、収集されたデータ・パケットの異なるセットが転送される先となるエントリ・ノードのサブセットを任意に選択する。より具体的には、収集されたデータ・パケットのセット内の各データ・パケットに対して、ノードは、エントリ・ノードのうちの２つ以上（即ち、ノードが進出コネクションを有する接続先の隣接ノード）を任意に選択し、選択されたエントリ・ノードにデータ・パケットを割り当てる。例えば、エントリ・ノードは、ランダムに選択されてもよい。一部の実装において、ノードは、ピアの新しいアドレスを得るためにネットワークに問い合わせを行う可能性がある。例えば、ビットコイン・ネットワークにおいて、ノードは、Ｂｉｔｃｏｉｎ  Ｃｏｒｅ、ＢｉｔｃｏｉｎＪ、又はその他のブロックチェーン・プロトコルに組み込まれ、且つビットコイン（又は他のブロックチェーン）コミュニティ・メンバーによって維持される１つ以上のデータベース・ソース名（ｄａｔａｂａｓｅ  ｓｏｕｒｃｅ  ｎａｍｅｓ，ＤＳＮ）を照会することが可能である。応答として、ノードは、入って来るコネクションを受け入れる可能性がある、利用可能なフル・ノードのＩＰアドレスを示す１つ以上のＤＳＮレコードを得るであろう。ピア・ディスカバリの非セントラル化されたバージョンは、ピアに、ＩＰアドレスとポート番号とを含む「ＡＤＤＲ」メッセージを、ネットワークに参加する新しいノードに送信させることによって、実現されてもよい。
【００６７】
一部の実装では、オペレーション５０６の一部として、ネットワーク内の１つ以上のノードは、データ・パケットが中継されるべき中継先のエントリ・ノードに対する各収集データ・パケットの割り当てを追跡するテーブル又は他のデータ構造を維持することが可能である。図４は、ブロックチェーン・ネットワークにおけるＤＭＰのＲＤＲステージにおけるソース・ノード４１０の例示的なトランザクション・リレーを示す。テーブル１は、収集されたトランザクションＴｘ１−Ｔｘ５の、ソース・ノード４１０のエントリ・ノードに対する割り当て例である。エントリ・ノードは、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、及びＨとして示されている。図４及びテーブル１に示されるように、ソース・ノード４１０は、各トランザクションを少なくとも２つのエントリ・ノードに中継し、複数のトランザクションは同じノードを介して中継されることが可能である。例えば、トランザクションＴｘ３、Ｔｘ４、及びＴｘ５は、全てエントリ・ノードＥを介して同時に中継される。より一般的には、ＲＤＲプロセスでは、複数のデータ・パケットが、転送ノードによって同じピア・ノードに同時に中継されることが可能である。全てのエントリ・ノードが、ＤＭＰの所与のインスタンスでソース・ノード４１０からトランザクションを受信するわけではない。テーブル１の例では、エントリ・ノードＣ及びＧは、ソース・ノード４１０から如何なるトランザクションも受信しない。
【００６８】
テーブル１
【表１】
2021513265.tif 000003
【００６９】
再び図５を参照すると、オペレーション５０８において、収集された各データ・パケットについて、ノードはデータ・パケットを（任意に又はランダムに）選択されたエントリ・ノードの各々に送信する。選択された各エントリ・ノードは、そのエントリ・ノードに対してランダムに選択されたデータ伝搬モードを使用して、ネットワーク内の１つ以上の第２ノード（例えば、エントリ・ノードであるピア（複数））にデータ・パケットを中継するように構成される。即ち、選択された各エントリ・ノードは、そのエントリ・ノードに対して独立に選択された伝搬モードを使用して、受信したデータ・パケットを、１つ以上の自身のピアに転送する。図４の例示的なトランザクション中継では、トランザクションＴｘ１−Ｔｘ５の各々は、トランザクションが割り当てられているエントリ・ノードに転送される。
【００７０】
ソース・ノード４１０からトランザクションを受信する各ノードは、次いで、受信したトランザクションを（存在するならば）１つ以上の自身のピア・ノードに転送する際に使用する伝搬／拡散モードをランダムに選択する。特に、トランザクションを受信するエントリ・ノードは、標準拡散プロセス又はＲＤＲプロセスに従ってトランザクションを中継することをそれらの間でランダム・ベースで選択する。２つのオプションの間の選択はランダムである。従って、ＤＭＰでは、２つの拡散プロセスが確率論的に変わる、即ち、ＲＤＲステージと標準拡散ステージとの間に明確な分離は存在しない。拡散プロセスのこの「ミキシング」の結果、攻撃者にとって、ランダムなデータ伝搬により又は標準拡散により中継するノードのセット間の分離を識別することに基づいて、ネットワークのトポロジを再構築することは、より困難になる。
【００７１】
一部の実装において、拡散モードのエントリ・ノードによるランダム選択は、中継されるデータ・パケットに加えてメッセージを、ソース・ノードから受信することを含んでもよい。その後、エントリ・ノードは、ランダム値（例えば、乱数）を生成し、それを受信メッセージに付け、その結果を例えばＳＨＡ−２５６を使用してハッシュすることが可能である。その後、エントリ・ノードはハッシュ値をチェックし、以後、ハッシュ値に関する所定のルールに基づいて拡散モードを得ることが可能である（例えば、ハッシュの最終文字が数字である場合、ＲＤＲを拡散モードとして選択する）。代替的又は追加的に、拡散モードの選択は、任意にランダム化されたプロセス（例えば、乱数発生器）を利用して行われることが可能であり、ここで、到来する及び／又は出て行くコネクションの数、単位時間当たりに受信されるデータ・パケットの平均数などのような要因に依存して、一方のモードを選択する確率は他方のモードを選択する確率より大きくてもよい。
【００７２】
特定のデータ・パケットを伝搬する際に、伝搬ノードに対する匿名性保護のレベルと全体的な伝搬速度とのバランスをとることが望ましいかもしれない。所定のレベルの匿名性を保証する手段が煩雑すぎる場合（例えば、過剰に多くのネットワーク・リソースを必要する場合、ネットワークのノードがデータ・パケットを中継する際に意図的に十分に活用されない場合など）、データをタイムリーに拡散する際のネットワークの有効性が損なわれる可能性がある。従って、一部の実装では、中継ノードによる伝搬モードのランダム選択は重み付けされてもよい。特に、２つ以上の伝搬モード（即ち、ＲＤＲ、標準拡散など）の各々に異なる確率が割り当てられてもよく、その結果、確率は、データ伝搬の速度及び匿名性のバランスのとれた重要性を反映する。例えば、一部の例では、特定のネットワークのノードに関し、より高い予め定められた確率がＲＤＲモードに関連付けられ、伝搬されるデータの匿名性を維持することに対してバランスのとれたより大きな強調を反映することが可能である。
【００７３】
図５の方法５００は、第１タイプの自身のデータ・パケットを生成するノードによって実現される。特に、ＤＭＰに参加し、ネットワークの残りの部分への伝搬のためのデータ・パケットを生成するノードは、方法５００を実行する。図６は、中継ノードによって実行されるプロセス例、あるいは異なるノードによって生成されたデータ・パケットを転送又は中継するノードによって実行されるプロセス例を示す。即ち、中継ノードは、特定のデータ・パケットの中継の間に、それ自身は転送するためのデータを生成せず、代わりに、データ・パケットを「中継」する機能を果たすノードである。オペレーション５５０において、中継ノードは自身のデータ伝搬モードを独立に選択する。中継ノードは、例えば、ＲＤＲモードと標準拡散モードとの間で選択することができる。標準拡散モードが選択されると（オペレーション５５２で決定される可能性がある）、オペレーション５５４において、中継ノードはデータ・パケットを自身の全てのエントリ・ノードに転送する。図６の例では、伝搬モードの選択は、２つの可能なオプションの間にあり；この例は、限定ではなく、他の例では３つ以上の可能な伝搬モードが存在してもよい。方法５００において、選択されたモードがＲＤＲである場合（オペレーション５５２で決定される可能性がある）、中継ノードは、図５のオペレーション５０４、５０６、及び５０８に対応するステップ５５６、５５８、及び５６０を実行する。
【００７４】
図７を次に参照すると、これはネットワークでデータ・パケットを伝搬するための例示的なプロセス６００をフローチャート形式で示している。プロセス６００は、ブロックチェーン・ネットワークの他のノードへの複数の入って来る及び出て行くコネクションを有するブロックチェーン・ノードで実現される可能性がある。
【００７５】
プロセス６００のオペレーション６０２、６０４、６０６、及び６１０はそれぞれ方法５００のオペレーション５０２、５０４、５０６、及び５０８に対応する。オペレーション６０８では、収集されたデータ・パケットを、割り当てられたエントリ・ノードにオペレーション６１０で送信する前に、ノードは、トリガ条件が充足されているかどうかを決定する。特に、データ・パケットの送信は、適切なトリガ条件が充足されていることを検出したことに応答して実行される。トリガ条件が充足されていない場合、ノードは、そのエントリ／ピア・ノードに如何なるデータ・パケットも中継することなく、第１タイプのデータ・パケットを収集し続ける。
【００７６】
トリガ条件は、十分な数の到来するデータ・パケットを収集すること、及び／又は十分な時間の間に到来するデータ・パケットを収集することを、ノードに指示するために使用されてもよい。例えば、十分であることは、所定の閾値に基づいて判定されてもよい。例えば、複数の到来するデータ・パケットを、それらをネットワーク内のピア・ノードに同時に伝搬する前に収集することにより、ノードから発する中継トラフィックを監視する攻撃者は、そのノードを、中継されるデータ・パケットの真のソースとして容易に識別することはできない可能性がある。
【００７７】
一部の実装において、トリガ条件は、オペレーション６０２においてノードにより少なくとも１つの第１タイプのデータ・パケットを生成した時点以降の所定の持続時間の満了であってもよい。即ち、ノードは、何らかのデータ・パケットがノードによって伝搬される前に、ノードが同じタイプのデータ・パケットを生成する時に始まる所定の時間的な期間にわたって、到来するデータ・パケットを監視して収集するように設計されてもよい。この条件は、ノードによって生成されたデータ・パケットが、同時ブロードキャストされることが可能な同じタイプのよりデータ・パケットをより多く収集した後に、伝搬されることを保証しようとするのに有用である可能性があり、それによって、生成されたデータ・パケットのソースとしてノードを的確に識別することを攻撃者にとって困難にする。
【００７８】
一部の実装において、トリガ条件は、ノードのピアから少なくとも１つの到来する第１タイプのデータ・パケットのうちの最初のものを受信した時点以来の所定の継続時間の満了であってもよい。即ち、ノードは、そのような到来するデータ・パケットのうちの最初のものが受信された時に始まる所定の時間的な期間にわたって、到来するデータ・パケットを監視して収集するように設計されてもよい。この条件は、ノード自体によって生成されたか、又は他のピアから受信されたデータ・パケットのうちの何れかである、より多くのデータ・パケットが、ネットワークの残りの部分への何らかのブロードキャストの前に、ノードによって収集されることを保証しようとするのに有用である可能性がある。
【００７９】
一部の実装において、トリガ条件は、第１の時間的な期間の間に収集されたデータ・パケットの数が閾値数に到達することであってもよい。特に、ノードは、第１の時間的な期間が満了すること、又は所定の閾値数のデータ・パケットがノードによって収集されること、のうちの何れか早い方に至るまで、到来するデータ・パケットを監視して収集するように設計されてもよい。
【００８０】
ランダム差分中継のための発見的方法
上述したように、ランダム差分中継は、ノードのネットワーク内でトランザクションを伝搬するための「標準拡散」プロトコルからの新発展を表す。ＲＤＲを実装する際、伝搬ノードは、異なるトランザクションを、エントリ・ノードのうちのランダムに選択されたサブセットに同時に中継する。伝搬ノードは、トランザクションが中継されるべき中継先の１つ以上のエントリ・ノードを、収集されたトランザクション各々にランダムに割り当てることによって、テーブル１に示されるデータ構造のようなデータ構造を生成することができる。より一般的には、データ・パケットを自身のピアに中継するネットワーク・ノードは、ノードによって収集される複数のデータ・パケット（即ち、受信された、又は、ローカルに生成されたもの）の各々に対して実行する中継のタイプを指定する自身の内部ルーティング・データ構造を維持することができる。
【００８１】
本願で提案される拡散ミキサ・プロトコルの文脈において、ＲＤＲを実装するブロックチェーン・ネットワークの各ノードは、自身のルーティング・データ構造、即ち「ＲＤＲテーブル」を独立に構築することができる。ＲＤＲテーブルは、ＲＤＲプロトコルを採用する各ノードのトランザクション割り当て方式を定める。即ち、個々のノードのＲＤＲテーブルは、どのトランザクションがどのピアにいつ中継すべきかを管理するために使用される。ＲＤＲテーブルは、所与の長さの時間ΔＴＲＤＲの中で受信又は生成される全てのトランザクションと、トランザクションのソース・ピアとを追跡することが可能である。ＲＤＲテーブルは：トランザクションの最初のインスタンスの到着時刻（「ＴｏＡタイムスタンプ」）；トランザクションを中継するために選択された時間（「ＴｏＲタイムスタンプ」）；及び／又はノードによって受信された同じトランザクションのインスタンス数のカウンタ；のような追加情報を含む可能性がある。以下にＲＤＲテーブルの例を示す。
【００８２】
テーブル２
【表２】
2021513265.tif 000004
【００８３】
ノードのローカルＲＤＲテーブルは、新たな情報（タイムアウト、受信又は生成したトランザクション）が利用可能になる場合に、動的に（即ち、リアルタイムで）更新されてもよい。本開示は、個々のＲＤＲテーブルの構築及び更新に寄与する様々な発見的方法、即ち「サブシステム」を提供する。これらのサブシステムは、ＲＤＲテーブルで指定されるようにトランザクション割り当てを更新するために適用される一組のルール又はガイドラインと考えることが可能である。これらのサブシステムに包含される方策は、個々のノードの中継動作によって生成されるネットワーク・トラフィックのバランスをとること、及びトランザクション・ソースの不明瞭化を強化することに有用である可能性がある。提案されるサブシステムのセット、即ち、送信元ミキシング、中継ミキシング、送信先ミキシング、到着時間（ｔｉｍｅ−ｏｆ−ａｒｒｉｖａｌ）ミキシング、及び送信元制御は、並列的に動作することが可能である一方、負荷バランス・モジュールは、収集したトランザクション中継情報をマージし（ｍｅｒｇｅ）、ネットワーク・リソースの最適化された割り当てを提供するために使用されることが可能である。
【００８４】
図８をここで参照すると、これはネットワーク内のノードで生成又は受信されたデータ・パケットを送信する例示的な方法７００をフローチャート形式で示している。方法７００は、少なくとも１つの提案されるサブシステム／発見的方法のルールに従うトランザクション割当方式に従って、ネットワーク内でデータを伝搬する技術を表す。方法７００は、例えば図１のネットワーク１００のようなブロックチェーン・ネットワークのノードによって実現される。より具体的には、方法７００は、ＤＭＰに参加するノードであって、ネットワークの残りの部分に伝搬するための第１タイプのデータ・パケット（例えば、トランザクション）を生成又は受信するように構成されるものによって実行される。
【００８５】
オペレーション７０２において、ノードに関連するクライアントは、少なくとも１つの第１タイプのデータ・パケットを生成する。データ・パケットは例えばブロックチェーン・トランザクションを含む可能性がある。
【００８６】
オペレーション７０４において、ノードは、第１の時間的な期間Ｔの間に第１タイプのデータ・パケットのセットを収集する。即ち、ノードは、時間的な期間にわたって、第１タイプのデータ・パケットを蓄積する。セットは、少なくとも１つの生成されたデータ・パケットと、ネットワーク内の１つ以上のピア・ノードから受信された少なくとも１つの第１タイプのデータ・パケットとを含む。このように、ノードによって生成されるデータ・パケットは、隣接ノードから受信される同じタイプのデータ・パケットと混合される。
【００８７】
オペレーション７０６において、収集されたデータ・パケットと、ノードに接続される複数の隣接ノードと、のマッピングが決定される。マッピングは、セットのうちの各データ・パケットの、隣接ノードに対して期待される中継時間を示す。この「マッピング」は、ネットワークのノードの個々のローカルＲＤＲテーブルを構築するために使用される。本開示に記載される１つ以上のサブシステム／発見的方法は、ＲＤＲテーブルの構築に（並列的に又は独立して）寄与する可能性がある。特に、１つ以上の異なるサブ・マッピングが、収集されたデータ・パケットの隣接ノードに対するマッピングを決定する際に適用されてもよい。サブ・マッピングは、少なくとも２つの異なるタイプのものであってもよい。第１タイプのサブ・マッピングは、中継に関して同じソース（即ち、発信ノード）を有する任意の２つのデータ・パケットを、隣接ノードの異なるサブセットに割り当てる。以下で詳細に説明される「送信元ミキシング」及び「中継ミキシング」サブシステムは、第１タイプのサブ・マッピングの例である。第２タイプのサブ・マッピングは、ノードで生成されるか、又は同じ時間間隔内にピア・ノードからノードによって受信される、任意の２つのデータ・パケットに、異なる中継予想時間を割り当てる。「到着時間ミキシング」は第２タイプのサブ・マッピングの例である。
【００８８】
オペレーション７０８では、収集されたセットのデータ・パケットと隣接ノードとのマッピングが一旦決定されると、データ・パケットは、決定されたマッピングに従って隣接ノードへ送信される。
【００８９】
個々のサブシステムは、ＲＤＲテーブルで定義されたトランザクション割り当てを更新するために独立して実行されてもよいことが理解されるであろう。即ち、各サブシステムは、他のサブシステムとは独立に、ＲＤＲテーブルに対して別々に採用されることが可能である。従って、個々のサブシステムは、中継ノードにトランザクションを割り当てる異なる方法を提供することが可能であり、その結果、トランザクションを伝搬するための異なる技術を提供することができる。
【００９０】
送信元ミキシング
送信元ミキシング・サブシステムの根底にある原則は、ノードでローカルに生成されたトランザクションは、ピアの重複しないサブセットに転送されるべきである、ということである。例示として、ノードｘが２つのトランザクションｔｘｉ及びｔｘｉ＋１を生成する場合、それらのトランザクションの中継のために選択されるピアのセット（それぞれ、Ｓ（ｔｘｉ）及びＳ（ｔｘｉ＋１）と記される）は、
Ｓ（ｔｘｉ）≠Ｓ（ｔｘｉ＋１）
を充足する。
【００９１】
即ち、続く２つトランザクションに対するピアのセットは、少なくとも１つのピアの分だけ異なる。この不等式は、ノードで生成されたトランザクションの最初の中継のパターンを探すための何らかの悪意の探索を難しくするのに役立つことが可能である。この概念は、次のように、送信元ミキシング度δＳＭに拡張されることが可能である。
【数１】
2021513265.tif 000005
【００９２】
図９を次に参照すると、これはネットワーク内のノードで生成されたデータ・パケットを送信するための例示的な方法８００をフローチャート形式で示す。方法８００は、送信元ミキシング・サブシステム／発見的方法のルールに準拠するトランザクション割当方式に従って、ネットワークでデータを伝搬する技術を表す。方法８００は、例えば、図１のネットワーク１００のようなブロックチェーン・ネットワークのノードによって実現される。より具体的には、方法８００は、ＤＭＰに参加するノードであって、ネットワークの残りの部分に伝搬するための第１タイプのデータ・パケット（例えば、トランザクション）を生成するノードによって実行される。
【００９３】
オペレーション８０２において、ノードに関連するクライアントは、少なくとも１つの第１タイプのデータ・パケットを生成する。データ・パケットは例えばブロックチェーン・トランザクションを含む可能性がある。
【００９４】
ノードは、少なくとも１つの生成されたデータ・パケットと隣接ノード（即ち、ピア）との第１マッピングを決定する。特に、複数のピアのサブセットが、ノードで生成されたデータ・パケットを中継するために選択される。各データ・パケットは、第１マッピングによって中継ノードの特定のサブセットに関連付けられる。各データ・パケットに関し、オペレーション８０４において、ノードによって以前に生成された所定数の第１タイプの第１データ・パケットが識別される。これらは、ノードによってピアに既に送信されているデータ・パケットか、あるいは以前に生成されたがノードのピアに未だ中継されていないデータ・パケットである可能性がある。
【００９５】
オペレーション８０６において、第１データ・パケットに関連する中継ノード・セットのリストが取得される。中継ノード・セットは、第１データ・パケットがそれぞれ中継される（又は中継のために割り当てられる）中継先の隣接ノード（ピア）を含む。即ち、中継ノード・セットは、第１データ・パケットのうちの個々のものが割り当てられるノードのピアのサブセットを示す。
【００９６】
オペレーション８０８において、オペレーション８０６で得られたリスト内の中継ノード・セットとは異なる隣接ノードのセットを識別することに基づいて、第１セットの中継ノードが選択される。例えば、第１セットの中継ノードは、取得された中継ノード・セットのリストに含まれていない２つ以上の隣接ノードのセットを任意に選択することによって選択されてもよい。一部の実装では、選択された第１セットは、２つ以上のピアによって取得されたリスト内の中継ノード・セットとは異なる、という要件が課される可能性がある。即ち、中継ノードの選択された第１セットと、取得されたリスト内の中継ノード・セットのうちの任意の１つと、の間の交わり集合に属する要素の数に、上限が設定されてもよい。
【００９７】
方法８００は、単一のデータ・パケットがノードで生成された後、又はノードが複数の生成されたデータ・パケットを収集した後に、ノードによって実行されてもよい。特に、ノードは、ある時間的な期間にわたって（ＤＭＰのＲＤＲステージと同様に）第１タイプのデータ・パケットを生成及び蓄積し、蓄積されたデータ・パケットの中継ノード・セットに対する第１マッピングを決定することが可能である。これらの場合に、データ・パケットは、中継ノードの任意に選択されたサブセットにそれぞれ割り当てられてもよく、２つのそのようなサブセットが互いに等しくないことを保証する。
【００９８】
中継ノードの第１セットに含まれるために選択される隣接ノードの数は、任意に決定されてもよい。少なくとも幾つかの実装において、第１セットのために選択されるピアの数は、伝搬するノードの帯域幅条件（例えば、固定された時間フレーム内に出入りするデータの累積量）に従って制限される。特に、ローカルに生成されたトランザクションの中継のために選択されるピアの数は、ネットワーク負荷の問題に対処するため、又は送信元の不明瞭化を強化するために調整されることが可能である。例えば、第１セットに含まれるピアの数は、次のようにして決定されてもよい：
【数２】
2021513265.tif 000006
ここで、ｍＳＭは、送信元ミキシング・サブシステムで中継のために選択されるピアの平均数を表す公称値であり、ｒｎｄ（ξＳＭ）は０とξＳＭ−１との間のランダムな整数を表す。
【００９９】
次いで、中継ノードの第１セットの選択は、各データ・パケットに関連付けられる第１マッピングにおいて設定されてもよい。言い換えれば、第１マッピングは、データ・パケットが中継ノードの第１セットに関連付けられること（即ち、割り当てられること）を示してもよい。オペレーション８１０において、データ・パケットは、決定された第１マッピングに従って送信される。
【０１００】
中継ミキシング
中継ミキシング・サブシステムは、ノードによって受信されたトランザクションは、ノードのピアの重複しないサブセットに中継されるべきである、という概念を前提とする。同じノードにより受信される２つの異なるトランザクションに対して選択される中継ピア間の交差集合に属する要素の数を表すためにパラメータλを利用すると、中継ミキシングの背後にあるアイディアは次のように捉えることができる。
【数３】
2021513265.tif 000007
ここで、δＲＭは中継ミキシング度である。不等式（１）は、トランザクションの中継ノードへの割り当て（不等式を満たすもの）を見出すトランザクション割り当て問題を規定する。従って、中継ミキシングの方策は、（１）におけるパラメータλを変化させることによって制御することができる。一旦λが設定されると、トランザクション割り当て問題に対する次善最適解に対する反復的な探索が実行される。中継ミキシング・サブシステムは、ノードが１つ以上のトランザクションを受信する送信元の各ピアに対して不等式（１）が充足されることを要求してもよい。例えば、ピアから受信した最新のδＲＭ個のトランザクション（ｔｘｊ，ｔｘｊ＋１，．．．、ｔｘｊ＋δＲＭ−１）は、それらのトランザクションに対して不等式（１）が充足されることを要求することによって、中継ミキシングを実現するために使用されることが可能である。従って、一部の実装では、個々のパラメータλｉが各ピアｐｉに対してそれぞれ定義されてもよい。このように、送信元を分かりにくくすることは、ノードがトランザクションを受信する際の送信元の各ピアｐ１，ｐ２，．．．，ｐｍのトランザクション中継のための独立したデータ構造を作成し、受信したトランザクションの中継ノードへの割り当てを識別することによって、実現されてもよい。
【０１０１】
代替的に、他の実装において、パラメータλは、固有のシステムパラメータ；特定の時間ウィンドウ及びＲＤＲテーブルに格納された情報を使用して更新される時変パラメータλｔ；又は各ピアに対する時変パラメータλｔｉであって、特定の時間ウィンドウ及びＲＤＲテーブルに格納された情報を使用して更新されるもの；であってもよい。
【０１０２】
一般的なピアのトランザクション割り当ての組み合わせ数はＣ＝（ｍｘ）δＲＭであり、ここで、ｍはノードのピアの数であり、δＲＭは中継ミキシングの程度であり、ｘは中継に選択されるピアの平均数である。次善最適解の反復探索は幾つかの可能な方法で進行する可能性がある：
・最大反復数を設定し、交わりのピアの最小数によりトランザクション割り当てを選択する。
・最大反復数を設定するが、交わりのピアの所定の閾値に達した場合は、早期にプロセスを中断する。
・最大反復数を設定し、要件が満たされない場合はλの値を増やし、プロセスをリスタートする。
・最大反復数を設定し、要件が満たされない場合はｘの値を修正し、プロセスをリスタートする。
・最大反復数を設定し、要件が満たされない場合はｍの値を減らし、プロセスをリスタートする。
反復の最大回数が固定時間ウィンドウΔＴＲＭで置き換えられるならば、別の一連のアプローチを考慮することが可能である。
【０１０３】
中継ノードのセットに含めるために選択される隣接ノードの数は、任意に決定されてもよい。少なくとも幾つかの実装において、セットために選択されるピアの数は、伝搬ノードの帯域幅条件（例えば、固定時間フレーム内に出入りするデータの累積量）に従って制限される。特に、ローカルに生成されるトランザクションの中継のために選択されるピアの数は、ネットワーク負荷の問題に対処するため、又はソースの不明瞭化を強化するために調整されることが可能である。例えば、第１セットに含まれるピアの数は、次のようにして決定されてもよい。
【数４】
2021513265.tif 000008
ここで、ｍＲＭは、中継ミキシング・サブシステムで中継のために選択されるピアの平均数を表す公称値であり、ｒｎｄ（ξＲＭ）は０とξＲＭ−１との間のランダムな整数を表す。一部の実装においてξＳＭ及びξＲＭは同じ値を有してもよい。
【０１０４】
図１０を次に参照すると、これはネットワーク内のノードで受信したデータ・パケットを中継するための例示的な方法９００をフローチャート形式で示している。方法９００は、中継ミキシング・サブシステム／発見的方法のルールに準拠するトランザクション割当方式に従って、ネットワークでデータを伝搬する技術を表す。方法９００は、例えば、図１のネットワーク１００のようなブロックチェーン・ネットワークのノードによって実現される。より具体的には、方法９００は、ＤＭＰに参加するノードであって、ネットワークの残りの部分に伝搬するための第１タイプのデータ・パケット（例えば、トランザクション）を受信するノードによって実行される。
【０１０５】
オペレーション９０２において、ノードに関連するクライアントは、少なくとも１つの第１タイプのデータ・パケットを受信する。データ・パケットは例えばブロックチェーン・トランザクションを含むことが可能である。
【０１０６】
ノードは、少なくとも１つの受信したデータ・パケットと隣接ノード（即ち、ピア）との第２マッピングを決定する。特に、複数のピアのサブセットが、ノードで生成されたデータ・パケットを中継するために選択される。各データ・パケットは、第２マッピングによって、中継ノードの特定のサブセットに関連付けられる。各データ・パケットに関し、オペレーション９０４において、ノードによって最近受信された所定数の第１タイプの第２データ・パケットが識別される。これらは、ノードによってピアに既に送信されたデータ・パケットか、又は以前に受信されたがノードのピアに未だ中継されていないデータ・パケットである可能性がある。
【０１０７】
オペレーション９０６において、第２データ・パケットの、隣接ノードの固定セットへの第１割り当てが決定される。特に、第１割り当ては、所定の条件を充足する隣接ノードへの第２データ・パケットの１つ以上の割り当てから選択される。このオペレーションは、上述の不等式（１）に対する次善最適解を求める反復探索に対応する。即ち、（１）を充足する中継ノードへのデータ・パケットの割り当てのうち、特有の割り当て（例えば、交わりのピアが最も少ない割り当て）が決定される。（１）により得られるように、第２データ・パケットのうちの任意の２つに対して、両方の第２データ・パケットが（中継のために）割り当てられる隣接ノードの数が所定の閾値以下である場合に、隣接ノードの固定セットに対する第２データ・パケットの割り当ては、所定の条件を充足する。
【０１０８】
次いで、オペレーション９０６で識別される隣接ノードへの第２データ・パケットの固有の割り当ては、第２マッピングで設定されることが可能である。換言すれば、第２マッピングは、第２データ・パケット（即ち、ノードがピアから受信したデータ・パケット）がそれぞれ割り当てられる中継ノードを示すことができる。オペレーション９０８において、少なくとも１つの受信したデータ・パケットは、決定された第２マッピングに従って中継される。
【０１０９】
方法９００は、単一のデータ・パケットがノードで受信された後、又はノードが複数の受信したデータ・パケットを収集した後に、ノードによって実行されてもよい。特に、ノードは、時間的な期間にわたって（ＤＭＰのＲＤＲステージと同様に）第１タイプのデータ・パケットを受信して蓄積し、蓄積したデータ・パケットの中継ノード・セットへのマッピングを決定することができる。これらの場合に、データ・パケットは、中継ノードの任意に選択されたサブセットにそれぞれ割り当てられる可能性があり、２つのそのようなサブセットが互いに等しくないことを保証する。
【０１１０】
送信先ミキシング
送信先ミキシング発見的方法は、ノードのアウトバウンド・コネクションが、異なるピアによって中継されたトランザクションを運び出すべきである、というアイディアを捉えている。この発見的方法は、中継ミキシング・サブシステムの特殊なケースとして考えられ、なぜなら、後者は、同じ送信元ピアからの中継のために、ピアの重複しないサブセットを作成することを含むからである。方法９００では、送信先ミキシングは、オペレーション９０６において、第１ノード（即ち、ノードがデータ・パケットを受信する際の送信元のノード）のうちの任意の２つに対して、２つの第１ノードから受信した全ての第２データ・パケットのセットが、第１割り当てにおいて少なくとも２つの異なる隣接ノードに割り当てられることを保証にすることによって、実行されることが可能である。例えば、図１１はノードｉに対する送信先ミキシングの例を示す。送信先ミキシング・サブシステムは、ノードａが、所与の時間ウィンドウΔＴＤＭにおいて、同じノードｃによって中継された２つのトランザクションを受信しないことを保証する。従って、ノードｉでノードｃから受信される２つのトランザクションのうち１つだけが、ノードａに中継される。
【０１１１】
一部の実装において、送信先ミキシングは、各々の時間ウィンドウΔＴＤＭについて、異なるピアのサブセットに関してイネーブルにされてもよい。例えば、サブセットは、パラメータ（ｍＤＭ，δＤＭ，ξＤＭ）による送信元ミキシングに対して説明されたものと同様の方法で割り当てられてもよい。この方策は、所与のトランザクションの送信元及び送信先の非相関化に寄与する可能性がある。
【０１１２】
到着時間ミキシング
到着時間ミキシング発見的方法は、データ・パケット中継についての送信元及び送信先の情報の非相関化を支援するために、データ・パケットの遅延中継を実装する。例えば、時間ウィンドウΔＴｉ（例えば、ＤＭＰのＲＤＲステージ）において収集される（又は生成される）データ・パケット（例えば、トランザクション）は、ΔＴｉの終わりに（図１２のＲＤＲｉ）中継のためにスケジューリングされることが可能である。到着時間ミキシング・サブシステムは、中継をＲＤＲｉが過ぎるまで遅らせる。一部の実装において、データ・パケットの中継は、複数のｑΔＴｉ、例えば、ＲＤＲｉ、ＲＤＲｉ＋１、ＲＤＲｉ＋２などによって遅延させられてもよい。従って、到着時間発見的方法に従って、ノードによって受信された（又は生成された）データ・パケットを中継することは、受信したデータ・パケットを隣接ノードに中継するための次のスケジューリングされた時間を決定すること、及び中継のための次のスケジューリングされた時間の後、所定の長さの時間に、データ・パケットを中継することを含む。ΔＴｉの中で収集された全てのトランザクションは、ΔＴｉ＋ｑΔＴで中継されてもよいし、あるいはΔＴｉの中で収集された各々のトランザクションｊは所与のΔＴｉ＋ｑｊΔＴで送信されてもよい。
【０１１３】
ランダム変数ｑは、一部の例では、負の指数確率密度関数を有する：
【数５】
2021513265.tif 000009
ここで、ｃ及びｇはそれぞれ乗算定数及び加算定数である。
【０１１４】
送信元制御
悪意のピアは、同じデータ・パケット（又はデータ・パケットのグループ）を所与のノードｉに複数回プッシュして、ｉのローカルな中継方策のパターンを発見しようとする可能性がある。例えば、悪意のピア・ノードは、ノードｉに対する２つのコネクションを作成し、ｉに対して出入りするトラフィックがどのように相関しているかを監視する可能性がある。送信元制御サブシステムは、各ピアから受信できるデータ・パケットの数について特定の閾値を設定することによって、実現される。ピアが所与のデータ・パケットの閾値を超える場合、そのコネクションは永久的又は一時的にクローズされる。ブロックチェーン・トランザクションなど、ノードが所与のデータ・パケットを受信する際のインスタンスの数は、ＲＤＲテーブルに格納されてもよい。
【０１１５】
負荷バランス
負荷バランスは、他のサブシステムによってピアに中継するために既に割り当てられているデータ・パケットのシャッフルを定期的に実行するために使用されてもよい。負荷バランス・モジュールの目的は、ピア間の中継分布を平均化し、一部のピア・コネクションにおけるトラフィック・オーバーロード、又は単一障害点を回避することである。負荷バランスに対する２つの異なるアプローチが実装されてもよい：
・各々のデータ・パケットｊは各自のサイズ（即ち、入力の数、出力の数、アンロッキング・スクリプト・サイズ、及びロッキング・スクリプト・サイズ）によらず同じウェイトｗｊを有する。
・各々のデータ・パケットｊは、そのバイト・サイズに比例する自身のウェイトｗｊを有する。
【０１１６】
例えば、方法８００では、隣接ノードの固定セットに対する第２データ・パケットの第２割り当てが決定されてもよく、第２割り当ては、ノードの出力インターフェースにおけるトラフィックのバランスを考慮した第１割り当ての再配置である。累積値ｃｉは、中継するようにスケジューリングされるデータ・パケットの数ｎｉにわたって、各ピアｉに対して計算されることが可能である。：
【数６】
2021513265.tif 000010
【０１１７】
続いて、中継するデータ・パケットをシャッフルし、各ピアの平均ｃ＊値を得るために、反復法が実行される：
【数７】
2021513265.tif 000011
【０１１８】
データ・パケットのこのシャッフルに対処する様々な異なる発見的方法が利用可能である可能性がある。例えば、データ・パケットのサブセットの中継を予期したり、出て行くトラフィックの負荷バランスを保つことを強化したりするために、異なる優先度が異なるサブシステムに割り当てられてもよい。更に、異なるサブシステムの実行は、データ・パケットの重複又は矛盾した割り当てを招く可能性があり、これは中継の起動前に解決されることを要する。
【０１１９】
図１３を次に参照すると、これは参加ノード１０００の簡略化された例をブロック図形式で示している。ノード１０００は、１つ以上のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラ、又は類似のコンピュータ処理デバイスを含む可能性があるプロセッサ１００２を含む。ノード１０００は更に、値、変数、及び場合によってはプロセッサ実行可能なプログラム命令を格納するための永続的及び非永続的なメモリを含む可能性があるメモリ１００４と、有線又は無線ネットワークでネットワーク接続性を提供するためのネットワーク・インターフェース１００６とを含む。
【０１２０】
ノード１０００は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーン・アプリケーション１００８を含み、その命令は、実行されると、本願で説明される１つ以上の機能又は動作をプロセッサ１００２に実行させる。
【０１２１】
本願で述べられるデバイス及びプロセス、並びにブロックチェーン・ノードを構成するために説明された方法／プロセスを実装する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又はその他のソフトウェア・コンポーネントは、標準的なコンピュータ・プログラミング技術及び言語を用いて実現されてもよいことが理解されるであろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータ・プログラミング慣習、データ構造、又はその他のそのような実装の詳細に限定されない。
【０１２２】
上述の実施形態は、本発明を限定するものではなく、本発明を例示するものであること、及び当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することが可能であろうということに留意すべきである。特許請求の範囲において、括弧内に記載された如何なる符号も、特許請求の範囲を限定するように解釈されないものとする。「含んでいる」及び「含む」等の言葉は、何れかの請求項において又は明細書全体として列挙されたもの以外の要素又はステップの存在を除外していない。本明細書において、「含む」は「含む又はから構成される」を意味し、「含んでいる」は「含んでいる又はから構成されている」を意味する。要素の単独の参照は、そのような要素の複数の参照を除外するものではなく、その逆もまた同様である。本発明は、幾つかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実現されることが可能である。幾つかの手段を列挙する装置の請求項において、これらの手段のうちの幾つかは、ハードウェアの１つの同じアイテムによって具体化されてもよい。所定の複数の事項が相互に異なる従属請求項で述べられているという単なるその事実は、これらの事項の組み合わせが有利に利用できないことを示すものではない。
【図１】
2021513265.tif 000012
【図２】
2021513265.tif 000013
【図３】
2021513265.tif 000014
【図４】
2021513265.tif 000015
【図５】
2021513265.tif 000016
【図６】
2021513265.tif 000017
【図７】
2021513265.tif 000018
【図８】
2021513265.tif 000019
【図９】
2021513265.tif 000020
【図１０】
2021513265.tif 000021
【図１１】
2021513265.tif 000022
【図１２】
2021513265.tif 000023
【図１３】
2021513265.tif 000024
【国際調査報告】
2021513265.tif 000025
2021513265.tif 000026