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