(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024023579
(43)【公開日】2024-02-21
(54)【発明の名称】ノードのネットワークにおいてデータパケットを伝搬させるシステム及び方法
(51)【国際特許分類】
H04L 47/10 20220101AFI20240214BHJP
【FI】
H04L47/10
【審査請求】有
【請求項の数】9
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023206632
(22)【出願日】2023-12-07
(62)【分割の表示】P 2020564216の分割
【原出願日】2019-05-09
(31)【優先権主張番号】1808493.9
(32)【優先日】2018-05-23
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】バルトルッチ,シルヴィア
(72)【発明者】
【氏名】マデオ,シモーネ
(57)【要約】 (修正有)
【課題】ノードのネットワークにおいてデータパケットを伝搬させる方法を提供する。
【解決手段】方法は、第1時間期間の間に、第1データパケットのセットを収集するステップを含む。前記セットは、ネットワーク内の1つ以上の第1ノードから受信した少なくとも1つの第1データパケットを含む。方法はまた、ネットワークノードのリンクの中で、ネットワークノードに接続された複数の近隣ノードへの利用可能帯域幅を決定するステップと、中継するために第1データパケットの各々を1つ以上の近隣ノードに割り当てるマッピングを決定するステップと、決定したマッピングに従い、複数の近隣ノードへ、前記セットのうちの第1データパケットを送信するステップと、を含む。
【選択図】
図15
【特許請求の範囲】
【請求項1】
ノードのネットワークの中でデータパケットを伝搬する、コンピュータにより実施される方法であって、
ネットワークノードにおいて、第1時間期間の間に、第1データパケットのセットを収集するステップであって、前記セットは、前記ネットワーク内の1つ以上の第1ノードから受信した少なくとも1つの第1データパケットと、前記ネットワークノードにより生成された少なくとも1つの第1データパケットと、を含む、ステップと、
前記ネットワークノードのリンクの中で、前記ネットワークノードに接続された複数の近隣ノードへの利用可能帯域幅を決定するステップと、
中継するために、前記第1データパケットの各々を1つ以上の近隣ノードに割り当てるマッピングを決定するステップであって、前記マッピングは、前記第1データパケットの各々の中継の期待時間を示し、前記マッピングを決定するステップは、前記第1データパケットのうちの各データパケットについて、以下:
前記データパケットが中継のために前記マッピングにより割り当てられる第1の数のピアノード、
1つ以上のピアノードに前記データパケットを中継するときの遅延の第1時間長、
前記ネットワークノードからピアノードへの前記データパケットのホップ数、
のうちの少なくとも1つを設定するための基礎として前記利用可能帯域幅を使用し、
前記ネットワークノードにより生成された前記少なくとも1つの第1データパケットの各々について、
前記ネットワークノードにより前に生成された所定数の第1データパケットを識別し、
前記前に生成された第1データパケットに関連付けられた中継ノードセットのリストを取得し、前記中継ノードセットは、前記前に生成された第1データパケットがそれぞれ中継される近隣ノードを含み、
前記取得したリストの中で、前記中継ノードセットと異なる近隣ノードのセットを識別することに基づき、中継ノードの第1セットを選択する、ステップと、
前記の決定したマッピングに従い、前記複数の近隣ノードへ、前記セットのうちの前記第1データパケットを送信するステップと、
を含む方法。
【請求項2】
中継ノードの前記第1セットを選択することは、前記取得したリストに含まれない2つ以上の近隣ノードのセットを任意に選択することを含む、請求項1に記載の方法。
【請求項3】
前記利用可能帯域幅を決定するステップは、前記複数の近隣ノードへの少なくとも1つの前記ネットワークノードのリンクの各々の中で、利用可能帯域幅の指示子を取得するステップを含む、請求項1又は2に記載の方法。
【請求項4】
前記マッピングを決定するステップは、
前記利用可能帯域幅に基づき、前記第1データパケットが中継のために前記マッピングにより割り当てられるピアノードの数の可能な値の範囲を決定するステップと、
前記第1の数のピアノードとして設定するために、前記決定した範囲の中の数を選択するステップと、
を含む、請求項1~3のいずれかに記載の方法。
【請求項5】
前記決定したマッピングに従い、前記複数の近隣ノードへ前記セットのうちの前記第1データパケットを送信するステップは、
前記セットのうちの1つ以上の第1データパケットの各々について、
前記第1データパケットを近隣ノードへ中継するためのスケジューリングされた時間を決定するステップと、
前記第1データパケットを中継する前記スケジューリングされた時間の後の前記第1時間長である時点で、前記第1データパケットを中継するステップと、
を含む、請求項1~4のいずれかに記載の方法。
【請求項6】
前記第1時間長は、前記利用可能帯域幅に反比例する、請求項5に記載の方法。
【請求項7】
前記複数の近隣ノードへの前記ネットワークノードのリンクの中の前記利用可能帯域幅の変化を検出するステップ、を更に含み、
前記マッピングを決定するステップは、前記第1データパケットの各々について、以下:
前記第1データパケットが中継のために前記マッピングにより割り当てられる第1の数のピアノード、
前記第1データパケットを1つ以上のピアノードへ中継するときの遅延の第1時間長、
前記ネットワークノードからの前記第1データパケットのホップ数、
のうちの少なくとも1つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含む、請求項1~6のいずれかに記載の方法。
【請求項8】
請求項1~7のいずれかに記載の方法を実行する、コンピュータにより実装されたシステム。
【請求項9】
コンピュータシステムを請求項1~7のいずれかに記載の方法を実行するようにする命令を格納した非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータネットワークに関し、より詳細には、ノードのネットワークの中でデータを伝搬させる方法及び装置、電子通信、及びネットワーク技術に関する。本発明は、ブロックチェーン技術に関連して使用することに特に適する。特に、本発明は、データのセキュアな伝送、及び第三者による起こり得る悪意あるイベント、つまり攻撃の低減に関する。
【背景技術】
【0002】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本発明はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本発明の範囲に包含されることに留意すべきである。用語「ユーザ」は、ここでは、人間またはプロセッサに基づくリソースを表してよい。用語「Bitcoin」は、(オリジナル)Bitcoinプロトコル/実装/プラットフォームから得られるプロトコル/実装/プラットフォームの全てのバージョン及び変形を含むことを意図している。
【0003】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0004】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【0005】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
【0006】
Bitcoinのようなブロックチェーン技術の認知されている利点の1つは、トランザクションの匿名性である。Bitcoinユーザの個人的詳細は、Bitcoinアドレスに公式に明示的に付帯されず、ブロックチェーンのBitcoin台帳は公開アドレス情報のみを含む。しかしながら、ブロックチェーンは、インターネット上で動作する分散型のピアツーピアネットワークとして構造化されるので、トランザクションの匿名性は、ユーザをネットワーク活動にリンクするIP(Internet Protocol)アドレス情報を使用する攻撃により危険に晒される。説明のために、ブロックチェーンに基づくネットワーク上で行われるIPトラフィック分析のような匿名化解除攻撃は、関心のある第三者に、ユーザによりネットワークへと提出されたトランザクションをモニタさせ、公に利用可能な情報を用いてトランザクションをそれらのソースに、例えばユーザの公開鍵を彼らのIPアドレスにリンクすることにより、リンクさせる。
【0007】
トラフィック分析は、ネットワークノードによる及びそれらの間のトランザクションの伝搬に依存するブロックチェーンに基づくネットワークでは、特に問題である。トランザクションを受信するネットワーク内の各ノードは、トランザクションを検証し、後にそれをピアノードへ送信する。Bitcoinプロトコルでは、ノードは、トランザクションのリストを含む「INV」メッセージをピアノードへ送信し、「INV」メッセージの中で広告されたトランザクションの何からのサブセットを選択する「GETDATA」応答メッセージを受信する。ノードは、次に、要求されたトランザクションをピアノードへ送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。攻撃者は、トランザクションがネットワーク内を伝搬するとき送信されるデータを傍受し分析して、最終的にはトランザクションの送信元(ソース)と宛先とをリンクするために使用可能な情報を得る。
【0008】
トラフィック分析を通じてネットワーク匿名性を危険に晒す可能性又は他の種類の匿名化解除攻撃の可能性を低減できる、ブロックチェーンに基づくネットワークにおけるトランザクションを伝搬する技術を提供することが望ましい。より一般的には、匿名化解除攻撃に対する脆弱性を低減するために、ピアツーピアネットワークのノード間でデータを中継する技術を提供することが望ましい。
【0009】
このようなソリューションがここで考案された。
【0010】
従って、本発明によると、添付の請求項において定められる方法及び装置が提供される。
【発明の概要】
【0011】
本発明は、ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実施される方法を提供し得る。方法は、
ネットワークノードにおいて、第1時間期間の間に、第1データパケットのセットを収集するステップであって、前記セットは、前記ネットワーク内の1つ以上の第1ノードから受信した少なくとも1つの第1データパケットを含む、ステップと、
前記ネットワークノードに接続された複数の近隣ノードへの前記ネットワークノードのリンクの中で、利用可能帯域幅を決定するステップと、
前記第1データパケットの各々を中継のために1つ以上の近隣ノードに割り当てるマッピングを決定するステップであって、前記マッピングは、前記第1データパケットの各々の中継の期待時間を示す、ステップと、を含んでよい。前記マッピングの決定は、前記第1データパケットの各々について、以下:
前記第1データパケットが中継のために前記マッピングにより割り当てられるピアノードの第1の数、
前記第1データパケットを1つ以上のピアノードへ中継するときの遅延の第1時間長、
前記ネットワークノードからの前記第1データパケットのホップ数、
のうちの少なくとも1つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含んでよい。前記方法は、前記セットのうちの前記第1データパケットを、前記決定したマッピングに従い、前記複数の近隣ノードへ送信するステップを更に含んでよい。
【0012】
幾つかの実装では、前記利用可能帯域幅を決定するステップは、前記複数の近隣ノードへの少なくとも1つの前記ネットワークノードのリンクの各々の中で、利用可能帯域幅の指示子を取得するステップを含んでよい。
【0013】
幾つかの実装では、前記マッピングを決定するステップは、
前記利用可能帯域幅に基づき、前記第1データパケットが中継のために前記マッピングにより割り当てられるピアノードの数の可能な値の範囲を決定するステップと、
前記第1の数のピアノードとして設定するために、前記決定した範囲の中の数を選択するステップと、を含んでよい。
【0014】
幾つかの実装では、前記方法は、第1データパケットの前記セットから選択された少なくとも1つの第1データパケットについて、以下:
前記少なくとも1つの第1データパケットが中継のために割り当てられるピアノードの第1セット、
前記第1セットの第2サブセットであって、前記第2サブセットは、前記ネットワークノードから前記少なくとも1つの第1データパケットを受信すると、前記少なくとも1つの第1データパケットを自身の近隣ノードへ中継するよう指定されたピアノードのみを含む、第2サブセット、
を識別するステップ、を更に含んでよい。
【0015】
幾つかの実装では、前記決定したマッピングに従い前記複数の近隣ノードへ、前記セットのうちの前記第1データパケットを送信するステップは、
前記少なくとも1つの第1データパケットについて、
前記第2サブセットに含まれるピアノードへ、前記少なくとも1つの第1データパケットを送信するステップと、
前記第2サブセットに含まれないピアノードへ、変更データパケットを送信するステップであって、前記変更データパケットは、前記少なくとも1つの第1データパケットのピアノードへの更なる中継が禁止されることを示すために変更された前記少なくとも1つの第1データパケットを含む、ステップと、を含んでよい。
【0016】
幾つかの実装では、前記方法は、前記少なくとも1つの第1データパケットのピアノードへの更なる中継が禁止されることを示すために、前記少なくとも1つの第1データパケットの中の追加ビットを設定するステップ、を更に含んでよい。
【0017】
幾つかの実装では、前記少なくとも1つの第1データパケットは、第1データパケットの前記セットから任意に選択されてよい。
【0018】
幾つかの実装では、前記少なくとも1つの第1データパケットは、前記少なくとも1つの第1データパケットが前記ネットワークノードにより1つ以上のピアノードへ前に送信されたという決定に基づき、選択されてよい。
【0019】
幾つかの実装では、前記決定したマッピングに従い、前記複数の近隣ノードへ前記セットのうちの前記第1データパケットを送信するステップは、
前記セットのうちの1つ以上の第1データパケットの各々について、
前記第1データパケットを近隣ノードへ中継するための次のスケジューリングされた時間を決定するステップと、
前記第1データパケットを中継する前記次のスケジューリングされた時間の後の前記第1時間長である時点で、前記第1データパケットを中継するステップと、を含んでよい。
【0020】
幾つかの実装では、前記第1時間長は、前記利用可能帯域幅に逆比例してよい。
【0021】
幾つかの実装では、前記ネットワークノードは、少なくとも1つの第1データパケットを生成するよう構成され、前記マッピングを決定するステップは、
前記少なくとも1つの生成された第1データパケットの各々について、
前記ネットワークノードにより前に生成された所定数の第1データパケットを識別するステップと、
前記前に生成された第1データパケットに関連する中継ノードセットのリストを取得するステップであって、前記中継ノードセットは、前記前に生成された第1データパケットがそれぞれ中継される近隣ノードを含む、ステップと、
前記取得したリストの中で、前記中継ノードセットと異なる近隣ノードのセットを識別することに基づき、中継ノードの第1セットを選択するステップと、を含んでよい。
【0022】
幾つかの実装では、中継ノードの前記第1セットを選択するステップは、前記取得したリストに含まれない2つ以上の近隣ノードのセットを任意に選択するステップを含んでよい。
【0023】
幾つかの実装では、前記方法は、前記複数の近隣ノードへの前記ネットワークノードのリンクの中の前記利用可能帯域幅の変化を検出するステップ、を更に含んでよく、
前記マッピングを決定するステップは、前記第1データパケットの各々について、以下:
前記第1データパケットが中継のために前記マッピングにより割り当てられるピアノードの第1の数、
前記第1データパケットを1つ以上のピアノードへ中継するときの遅延の第1時間長、
前記ネットワークノードからの前記第1データパケットのホップ数、
のうちの少なくとも1つを設定するための基礎として、利用可能帯域幅の更新された指示を使用するステップを含む。
【0024】
本発明は、前述の又は本願明細書の別の場所に記載の方法を実行するためのコンピュータにより実装されるシステムを提供し得る。
【0025】
本発明は、前述の又は本願明細書の別に記載の方法を実行するようコンピュータシステムを適応するための命令を格納した非一時的コンピュータ可読記憶媒体を提供してよい。
【0026】
本願は、ノードのネットワークの中でデータの伝搬中に帯域幅を管理する技術を提供する。ノードによるそのピアへのデータパケットの中継は、ノードの近隣ノードへの該ノードのリンクの中で帯域幅利用可能性を考慮するよう制御され得る。従って、ノードは、自身の利用可能帯域幅の変化にリアルタイムに適応し、自身のデータ中継割り当てを相応して更新することが可能であってよい。本願明細書に記載の技術及び発見法は、データ伝搬処理における冗長中継の削減をもたらし、ネットワークトラフィック及びノード間帯域幅の使用率の向上を実現する。
【0027】
本願は、ネットワーク内のノードレベルの匿名性を提供するソリューションも記載する。より具体的には、本願明細書に記載の方法及びシステムは、ネットワーク内のデータ伝搬方式においてノードの機能を分かりにくくすることを助ける。攻撃者がネットワーク内のノード間トラフィックを監視し又は特定ノードの近隣ノードへのアクセスを得ようとした場合でも、本発明の方法は、このような攻撃者が特定ノードがネットワーク内を伝搬しているデータパケットのソース又は中継ノードであるかを決定することを困難にする。ブロックチェーンネットワークの中のノードの機能/役割を分かりにくくするために、ネットワークに対する匿名性解除攻撃の効き目が低減され、ブロックチェーン上のデータ伝送のセキュリティが向上され得る。
【0028】
更に、本願の技術は、ノードが近隣ノードへの該ノードのリンクの帯域幅使用率を管理することを可能にすると同時に、該ノードにより中継されたデータパケットのソース及び宛先の匿名性を維持することを助ける。ノードのリソース(例えば、帯域幅)に対する制約を考慮することにより、データ伝搬のためのより現実的、実用的な方式が得られる。これrなお技術は、ネットワークのノードを制御するエンティティに、それらの選好及び必要に従い、必要に応じてデータ伝搬プロトコルのパラメータを設定する能力も提供する。
【0029】
本願明細書に記載の例示的な実装の多くでは、ブロックチェーントランザクションを特に参照する。しかしながら、本願明細書に記載の方法及び装置は、非ブロックチェーントランザクション伝搬と関連して実装され適用されてよいことが理解される。より一般的には、本開示に記載の方法及び装置は、ピアツーピアネットワークのノードの間で種々の異なる種類のデータを伝搬するときに使用するのに適してよい。
【図面の簡単な説明】
【0030】
本発明の一態様又は実施形態に関連して記載される任意の特徴は、1つ上の他の態様/実施形態に関して使用されてもよい。本発明の上述の及び他の態様は、ここに記載の実施形態から明らかであり及びそれらを参照して教示される。本発明の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【
図1】ブロックチェーンに関連する例示的なネットワークを示す。
【
図2】インプットバッファ及びアウトプットバッファを有する例示的なブロックチェーンノードを概略的に示す。
【
図3】例示的なノードのネットワークにおいてトランザクションを伝搬するプロトコル、DMP(Diffusion Mixer Protocol)の概略図である。
【
図4】DMPに従うノードのネットワークにおけるトランザクションの中継の一例を示す。
【
図5】DMPに従うブロックチェーンネットワーク内でデータパケットを伝搬するための例示的な処理をフローチャート形式で示す。
【
図6】DMPに従うブロックチェーンネットワーク内でデータパケットを伝搬するための別の例示的な処理をフローチャート形式で示す。
【
図7】DMPに従うブロックチェーンネットワーク内でデータパケットを伝搬するための別の例示的な処理をフローチャート形式で示す。
【
図8】ブロックチェーンネットワークの中のノードで生成され又は受信されたデータパケットを送信する例示的な処理をフローチャート形式で示す。
【
図9】ブロックチェーンネットワーク内のノードで生成されたデータパケットを送信するための例示的な処理をフローチャート形式で示す。
【
図10】ブロックチェーンネットワーク内のノードで受信されたデータパケットを中継するための例示的な処理をフローチャート形式で示す。
【
図11】ノードのネットワーク内でデータパケットを伝搬するときの宛先ミキシングの例を示す。
【
図12】ノードのネットワーク内のデータパケットの遅延中継の例を示す。
【
図13】ノードの帯域幅制約に基づきデータ中継割り当てを決定する例示的な処理をフローチャート形式で示す。
【
図14】ノードの帯域幅制約に基づきデータ中継割り当てを決定する別の例示的な処理をフローチャート形式で示す。
【
図15】ノードの帯域幅制約の変化に基づきデータ中継割り当てを更新する例示的な処理をフローチャート形式で示す。
【
図16】例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【0031】
先ず
図1を参照すると、
図1は、本願明細書でブロックチェーンネットワーク100と呼ばれ得るブロックチェーンに関連した例示的なネットワークをブロック図形式で示す。ブロックチェーンネットワーク100は、招待無しに又は他のメンバからの承諾無しに誰でも参加できるピアツーピア開放型メンバーネットワークである。ブロックチェーンネットワーク100の動作するブロックチェーンプロトコルのインスタンスを実行している分散型電子装置は、ブロックチェーンネットワーク100に参加してよい。このような分散型電子装置は、ノード102と呼ばれてよい。ブロックチェーンプロトコルは、例えばBitcoinプロトコル又は他の暗号通貨であってよい。
【0032】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータのようなコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む種々の種類であってよい。
【0033】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含んでよい適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク100は、少なくとも部分的にインターネットを介して実装され、ノード102のうちの幾つかは、地理的に離れた場所に配置されてよい。
【0034】
ノード102は、ブロックチェーン上の全部のトランザクションのグローバル台帳を維持する。トランザクションはブロックにグループ化され、各ブロックはチェーンの中の前のブロックのハッシュを含む。グローバル台帳は分散台帳であり、各ノード102は、グローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード102によるトランザクションは、他のノード102により検証され、グローバル台帳の有効性が維持される。Bitcoinプロトコルを使用するようなブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【0035】
各トランザクションは、標準的に1つ以上のインプット及び1つ以上のアウトプットを有する。スクリプトは、インプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転されるべきアドレスであってよい。この価値は、次に、未使用トランザクションアウトプット(unspent transaction output (UTXO))として該アウトプットアドレスに関連付けられる。後のトランザクションは、従って、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【0036】
ノード102は、堅牢且つセキュアな分散型公開台帳を維持するために、ネットワークルーティングからウォレットサービスまで多数の異なる機能を遂行できる。「フルノード」は、ブロックチェーンの完全且つ最新のコピーを含み、従って、公開台帳にある任意のトランザクション(使用済み又は未使用)を検証できる。「軽量ノード」(又はSPV)は、ブロックチェーンのサブセットを維持し、「簡易支払い検証(simplified payment verification)」技術を用いてトランザクションを検証できる。軽量ノードは、各ブロック内のトランザクションではなく、ブロックのヘッダをダウンロードするだけである。これらのノードは、従って、それらのトランザクションを検証するためにピアに依存する。「マイニングノード」は、フル又は軽量ノードであり、トランザクションを検証すること、及びブロックチェーン上で新しいブロックを生成することを担う。「ウォレットノード」は、標準的に軽量ノードであり、ユーザのウォレットサービスを処理する。ノード102は、TCP/IP(Transmission Control Protocol)のようなコネクション型プロトコルを用いて互いに通信する。
【0037】
ノードがトランザクションをピアへ送信したいとき、「INVENTORY」メッセージがピアへ送信され、送信側ノードに知られている1つ以上のインベントリ(inventory)オブジェクトを送信する。ピアが「GETDATA」メッセージ、つまり完全トランザクション要求に依存する場合、トランザクションは「TRANSACTION」メッセージを用いて送信される。トランザクションを受信したノードは、該トランザクションが有効なトランザクションであるならば、それを同じ方法で自身のピアへ転送する。
【0038】
図2を参照すると、インプットバッファ202及びアウトプットバッファ204を有する例示的なノード200が図示される。例示的なノード200は、intA、intB、intC、intD、等として参照される、複数のピアノードとのネットワークインタフェースを有する。インプットバッファ202は、種々のピアノードからの入力トランザクションを示す。アウトプットバッファ204は、それぞれのインタフェースを介してピアノードへ送信するための、トランザクションに対応する出力されるネットワークパケットを示す。ネットワークパケットは、ノード200のオペレーティングシステムにより提供されるプリミティブに従い、アプリケーションレベルで順次送信及び受信される。トランザクションxが単一のEthernet/IPパケットに適合すると仮定すると、m個のピアへの該トランザクションxの送信は、m個の異なる出力ネットワークパケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方が、他の情報と一緒に、シリアル化トランザクション、及び送信側/受信側ピアへのTCP/IPコネクションを表す論理インタフェースIDを含む。
【0039】
Bitcoinトランザクションが生成されると、ソースノードは、ネットワークを介してトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成すると、それはアウトプットバッファ204に入れられる。トランザクションは、ピアへ直ちに転送されてよく又はそうでなくてよい。Bitcoinネットワークの現在の実装では、トランザクションは、「拡散伝搬(diffusion propagation)」として知られるメカニズムにより伝搬される。それにより、各トランザクションソースは、独立した指数的遅延を伴い、トランザクションを自身に近隣へ送信する。伝搬における遅延はランダムであり、悪意ある攻撃者による時間推定に不確かさを導入するのに役立つ。ピアが特定のトランザクションを受信すると、ピアは、同じトランザクションの将来の中継を受け入れなくてよい。例えば、トランザクションハッシュがピアのメモリプールに格納されてよく、ピアが同一トランザクションを拒否できるようにする。ネットワークを通じるトランザクションの「拡散」は対称的である。これは、転送側ノードが、トランザクションブロードキャストに影響を与えるために近隣ノードのIPアドレスに関する情報を使用しないことを意味する。例えば、「標準的」拡散処理(Bitcoinプロトコルで利用される)では、ブロードキャスト側ノードの全部のピアは、同じトランザクションを受信し、各中継インスタンスで、ピア当たり一度に1つのトランザクションだけが中継される。この「拡散」の対称性は、匿名化解除攻撃を行う際に、ネットワークのピアツーピアグラフ構造の知識を有する悪意ある第三者により悪用されることがある。
【0040】
本開示は、トラフィック分析攻撃に対する保護を向上するために、ブロックチェーンネットワーク上でのトランザクション中継のための代替的技術を提供する。より詳細には、提案の中継プロトコルは、トランザクションのソースノードとそれらのIPアドレスとの間の接続を偽装し、隠し、又は難読化するために使用されてよい。
【0041】
トランザクション中継プロトコル、DMP(Diffusion Mixer Protocol)が提案される。MDPは、2つの独立した拡散段階を含む。第1段階(「ランダム差中継(random differential relay)」又はRDR)は、中継されるトランザクションのミキシング、及びトランザクションソースの難読化を可能にする。ランダム差中継段階の間、各ノードは、トランザクションをネットワークへブロードキャストする前に、所定時間量だけ待機して、自身のピアから複数のトランザクションを受信し及び収集する。ノードは次に、自身の「エントリノード」への出力接続を生成し、これらのエントリノードの任意に(例えばランダムに)選択したサブセットへ、ほぼ同じタイムスタンプを有する異なるトランザクションを送信する。ノードのエントリノードは、ノードからの直接出力接続が確立できる近隣ノードである。エントリノードの選択の際のランダム性、及び中継されるトランザクションの多様性は、攻撃者がネットワークトポロジを再構成することを一層困難にし得る。
【0042】
第2段階(「標準的拡散」(standard diffusion))は、ネットワーク内でトランザクションの時間的及び信頼できる伝搬を保証する。標準的拡散段階では、各ノードは、同じトランザクションを自身の全部のエントリノードへ中継し、各中継インスタンスでは、エントリノード当たり、一度に1個のトランザクションだけが中継される。
【0043】
留意すべきことに、ブロックチェーンネットワークのようなノードのネットワークでは、ノードのうちの1つ以上は、DMPを実装可能であってよい。具体的に、ネットワークのノードのうちの1つ以上は、DMPに参加することにより、自身の受信したデータパケットを自身のエントリノードへ中継可能であってよい。参加ノードは、例えば、特定のデータパケットを伝搬するために、RDR処理と標準的拡散処理との間で選択してよい。ネットワークのノードは、DMPに参加することを選び、分散型方法で、又は中央局により構成される参加ノードのグループへの包含を通じて、プロトコルに参加してよい。参加ノードは、自身の出力ネットワークパケットをDMPに従い中継する。特に、参加ノードがデータパケットを受信した場合、ノードは、DMPにより指定されたルールを用いて、ノードのために選択された伝搬モードに従い、受信したデータパケットを転送してよい。
【0044】
トランザクション中継のための提案されるDMPは、
図3~7を参照して説明される。
図3は、DMPの概略図を提供する。ノードの例示的なブロックチェーンネットワーク300が示される。各ノードは、ネットワーク端末(つまり、ブロックチェーンノード)を表し、エッジはノード間のリンクを表す。説明の目的で、リンク毎に、一度に単一のビットを送信又は受信することが可能であると想定する。
【0045】
この例示的なネットワーク300では、各ノードは、未確定トランザクションのセットを維持し、従って、ノードが新しいトランザクションを受信すると、それはネットワークを通じて全部の他のノードへ伝搬される。各ノードは、新しいトランザクションを検証し、それら個々のローカルセットの中に格納し、該新しいトランザクションを未だ有しない任意のピアノードへ該新しいトランザクションを転送する。ブロックチェーンネットワーク300のピアツーピア特性により、全部のノードは、新しいトランザクションを同時に受信しない。これは、新しいトランザクションがネットワーク300内の全部のノードに到達するまでに何らかの時間を要することを意味する。
【0046】
図3は、特定のトランザクションTx1を伝搬するためのDMPの2つの段階、つまりTx1のランダム差中継302及び標準的拡散304を示す。トランザクションTx1のソースノード310は、時間t
1で、トランザクションTx1を生成し、又はそれをピアノードから受信してよい。DMPに従い、ソースノード310は、受信した/待ち行列に入れられたトランザクションのブロードキャストを開始する前に、自身の近隣ノードから少なくとも1つ以上の入力トランザクションを受信するために待機する。
図3の例では、トランザクションTx2がソースノード310により時間t
2で受信されると、トランザクションTx1及びTx2は、時間t
3で、ソースノード310のエントリノードの任意に選択されたサブセットへ送信される。トランザクションTx1は、エントリノード310c及び310dへ転送され、一方で、トランザクションTx2はエントリノード310a及び310bへ転送される。
図3の例は、単に説明のためであり、特に、ソースノード310は、自身の受信したトランザクションのうちのいずれかを伝搬する前に、2つより多くの入力トランザクションを受信するために待機してよい。
【0047】
エントリノードは、受信したトランザクションをそれら自身のピアへ中継する。例えば、ノード310b及び310dは、トランザクションTx2及びTx1をそれぞれ、自身の近隣ノードのうちの1つ以上へ転送する。DMPでは、トランザクションの各受信者は、受信したトランザクションの伝搬モードを独立して選択する。ノード320は、自身の拡散モードとして標準的拡散を選択するノードの一例である。
図3に示すように、ノード320は、同じトランザクションTx1を、自身の全部のエントリノード、つまり320a、320b、320c、320d、320eへ転送する。
【0048】
図5を参照すると、DMPのRDR段階で、ネットワーク内でデータパケットを伝搬する例示的な方法500がフローチャート形式で示される。方法500は、例えばネットワーク100のようなブロックチェーンネットワークのノードにより実装される。ノードは、この状況では、マイニングノード、フルノード、検証ノード、又はブロックチェーンネットワーク内の他の種類の個別ブロックチェーンノードを表すと理解されてよい。ノードは、ネットワーク接続、計算リソース、及びブロックチェーンプロトコルを実装する実行ソフトウェアを有するコンピューティング装置である。
【0049】
動作502で、ノードに関連付けられたクライアントは、第1種類の少なくとも1つのデータパケットを生成する。ブロックチェーンネットワークのコンテキストでは、第1種類のデータパケットは、ブロックチェーントランザクションを含んでよい。つまり、クライアントは、ネットワークの他のノードへ伝搬されるべきブロックチェーントランザクションを生成してよい。
【0050】
動作504で、ノードは、第1時間期間Tの間、第1種類のデータパケットのセットを収集する。つまり、ノードは、時間期間に渡り、第1種類のデータパケットを蓄積する。セットは、少なくとも1つの生成されたデータパケット、及びネットワーク内の1つ以上のピアノードから受信された第1種類の少なくとも1つのデータパケット、を含む。このように、ノードにより生成されたデータパケットは、近隣ノードから受信された同じ種類のデータパケットと混合(ミキシング、mix)される。ブロックチェーンネットワークでは、時間期間Tの間、ノードは、中継されるべき入力トランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。時間期間長Tは予め定められてよい。幾つかの例示的な実装では、時間長は、平均接続時間、単位時間当たり受信されるトランザクションの平均数、又はネットワーク内のノードの中心性(つまり、ノードへの入力接続の数)のようなパラメータに基づき変化してよい。時間期間Tの間、ノードは、第1種類のデータパケットを蓄積することを許可されるだけでよく、従って、時間期間Tの間、第1種類の任意のデータパケットを送信することを抑制されてよい。
【0051】
動作506で、ノードは、収集されたデータパケットの異なるセットが転送される、自身のエントリノードのサブセットを任意に選択する。より具体的には、収集されたデータパケットのセットの中の各データパケットについて、ノードは、自身のエントリノード(つまり、ノードが出力接続を有する近隣ノード)のうちの2つ以上を任意に選択し、データパケットを選択したエントリノードに割り当てる。例えば、エントリノードは、ランダムに選択されてよい。ノードは、幾つかの実装では、ネットワークに問い合わせて、自身のピアの新鮮なアドレスを取得してよい。Bitcoinネットワークでは、ノードは、Bitcoin Core、BitcoinJ、又は他のブロックチェーンプロトコルに埋め込まれ、Bitcoin(又は他のブロックチェーン)コミュニティメンバにより維持される1つ以上のデータベースソース名(database source names (DSN))を問い合わせてよい。応答として、ノードは、入力接続を受け入れる利用可能なフルノードのIPアドレスを示す1つ以上のDSNレコードを取得する。ピア発見の分散化バージョンは、ピアにそれらのIPアドレス及びネットワークに参加する新しいノードへのポート番号を含む「ADDR」メッセージを送信させることにより、実装されてよい。
【0052】
幾つかの実装では、動作506の部分として、ネットワーク内の1つ以上のノードは、データパケットが中継されるべきエントリノードへの各々の収集されたデータパケットの自身の割り当てを追跡するテーブル又は他のデータ構造を維持してよい。
図4は、ブロックチェーンネットワーク内のDMPのRDR段階におけるソースノード410のトランザクション中継の一例を示す。表1は、ソースノード410のエントリノードへの、収集されたトランザクションTx1~Tx5の例示的な割り当てである。エントリノードは、ノードA、B、C、D、E、F、G、Hとして示される。
図4及び表1に示すように、ソースノード410は、各トランザクションを少なくとも2つのエントリノードに中継し、複数のトランザクションが同じノードを経由して中継できる。例えば、トランザクションTx3、Tx4、及びTx5は、全部同時にエントリノードEを経由して中継される。より一般的には、RDR段階では、複数のデータパケットは、転送ノードにより同じピアノードに同時に中継され得る。必ずしも全部のエントリノードが、DMPの所与のインスタンスでソースノード410からトランザクションを受信するのではない。表1の例では、エントリノードC及びGは、ソースノード410からトランザクションを受信しない。
表1
【表1】
【0053】
図5を再び参照すると、収集したデータパケットの各々について、動作508で、ノードは、データパケットを(任意に又はランダムに)選択したエントリノードの各々に送信する。各選択されたエントリノードは、データパケットをネットワーク内の1つ以上の第2ノード(例えば、エントリノードのピア)へ、該エントリノードについてランダムに選択されたデータ伝搬モードを用いて、中継するよう構成される。つまり、各選択されたエントリノードは、受信したデータパケットを、自身のピアのうちの1つ以上に、該エントリノードのために独立に選択された伝搬モードを用いて転送する。
図4の例示的なトランザクションでは、トランザクションTx1~Tx5の各々は、トランザクションの割り当てられたエントリノードへ転送される。
【0054】
ソースノード410からトランザクションを受信する各ノードは、次に、受信したトランザクションを(もしあれば)自身のピアノードのうちの1つ以上に転送するときに使用すべき伝搬/拡散モードをランダムに選択する。特に、トランザクションを受信するエントリノードは、ランダムに、標準的拡散処理又はRDR処理に従いトランザクションを中継することを選択する。2つの選択肢の間の選択はランダムである。従って、DMPでは、2つの拡散処理は、確率的に交互に生じる。つまり、RDR段階と標準的拡散段階との間の明確な区別はない。この拡散処理の混合(ミキシング(mixing))の結果として、攻撃者がランダムなデータ伝搬により又は標準的な拡散によりノードのセットが中継することの間の分離を識別することに基づきネットワークのトポロジを再構成することが一層困難になる。
【0055】
幾つかの実装では、拡散モードのエントリノードによるランダムな選択は、ソースノードから中継されたデータパケットに加えてメッセージを受信することを含んでよい。エントリノードは、次に、ランダム値(例えば、乱数)を生成し、それを受信したメッセージに付加して、例えばSHA-256を用いて結果をハッシングしてよい。エントリノードは、次に、ハッシュ値をチェックし、その結果、該ハッシュ値に関連する所定のルールに基づき拡散モードを取得できる(例えば、ハッシュの最終文字が数字である場合、RDRを拡散モードとして選択する)。代替又は追加で、拡散モードの選択は、任意のランダム化処理(例えば、乱数生成器)を用いて行うことができる。ここで、入力及び/又は出力接続の数、単位時間当たり受信されるデータパケットの平均数、等のような因子に依存して、モードのうちの一方を選択する確率は、モードのうちの他方を選択する確率より大きくてよい。
【0056】
特定のデータパケットを伝搬するとき、伝搬側ノードの匿名性保護のレベルと伝搬の全体速度との間で平衡を取ることが望ましい。特定レベルの匿名性を保証する手段が非常に煩雑な場合(例えば、非常に多くのネットワークリソースを要求する、ネットワークのノードがデータパケットを中継するときに意図的に未活用になる、等)、データを適時に拡散するときのネットワークの効率が損なわれることがある。従って、幾つかの実装では、中継ノードによる伝搬モードのランダムな選択は、重み付けされてよい。特に、異なる確率が、2つ以上の伝搬モード(つまり、RDR、標準的拡散、等)の各々に割り当てられてよい。その結果、確率は、匿名性のデータ伝搬速度との比例的な重要性を反映する。例えば、幾つかのインスタンスでは、より高く定められた確率は、特定のネットワークのノードのRDRモードに関連付けられてよく、伝搬されるデータの匿名性の保護により大きな重要性が置かれる。
【0057】
図5の方法500は、ノードにより実装され、該ノードは、自身の第1種類のデータパケットを生成する。特に、DMPに参加し、ネットワークの残りの部分への伝搬のためにデータパケットを生成するノードが、方法500を実行する。
図6は、中継ノード、又は異なるノードにより生成されたデータパケットを転送又は中継するノード、により実行される例示的な処理を示す。つまり、中継ノードは、特定のデータパケットの中継の間に転送すべきデータを自身で生成せず、代わりにデータパケットの「中継」機能を提供するノードである。動作550で、中継ノードは、独立して、自身のデータ伝搬モードを選択する。中継ノードは、例えば、RDRモードと標準的拡散モードとの間で選択してよい。標準的拡散モードが選択された場合(これは、動作552で決定されてよい)、中継ノードは、動作554で自身のエントリノードの全部にデータパケットを転送する。
図6の例では、伝搬モードの選択は、2つの可能な選択肢の間で行われ、本例は限定されず、他の例では、3つ以上の可能な伝搬モードが存在してよい。方法500で、選択されたモードがRDRである場合(これは、動作552で決定されてよい)、中継ノードは、
図5の動作504、506、及び508に対応するステップ556、558、及び560を実行する。
【0058】
図7を参照すると、ネットワーク内でデータパケットを伝搬する例示的な処理600がフローチャート形式で示される。処理600は、ブロックチェーンネットワークの他のノードへの複数の入力及び出力接続を有するブロックチェーンノードに実装されてよい。
【0059】
処理600の動作602、604、606、及び610は、それぞれ方法500の動作502、504、506、及び508に対応する。動作608で、ノードは、動作610で収集したデータパケットを自身の割り当てられたエントリノードへ送信する前に、トリガ条件が満たされているか否かを決定する。特に、データパケットの送信は、適切なトリガ条件が満たされていることを検出することに応答して実行される。トリガ条件が満たされていないとき、ノードは、自身のエントリ/ピアノードへ該データパケットのいずれかを中継することなく、第1種類のデータパケットを収集し続ける。
【0060】
トリガ条件は、十分な数の入力データパケットを収集するよう及び/又は十分な時間量の間、入力データパケットを収集するよう、ノードに指示するために使用されてよい。例えば、所定の閾値に基づき、充足が決定されてよい。例えば、複数の入力データパケットをネットワーク内のピアノードへ同時に伝搬する前に、該複数の入力データパケットを収集することにより、ノードから発生する中継トラフィックを監視する攻撃者は、中継されるデータパケットの正しいソースとしてノードを容易に識別できない。
【0061】
幾つかの実装では、トリガ条件は、動作602においてノードにより第1種類の少なくとも1つのデータパケットが生成された時間からの、所定の期間の終了であってよい。つまり、ノードは、ノードが同じ種類のデータパケットを生成した時から該データパケットのうちのいずれかがノードにより伝搬されるまでの所定の時間期間の間、入力データパケット(例えば、トランザクション)を監視し及び収集するよう設計されてよい。この条件は、ノードにより生成されたデータパケットが、同時にブロードキャスト可能な同じ種類のより多くのデータパケットを収集した後に、伝搬されることを保証することを試みるときに有用であってよい。それにより、攻撃者が、ノードを生成されたデータパケットのソースとして正しく識別することを困難にする。
【0062】
幾つかの実装では、トリガ条件は、ノードのピアから第1種類の少なくとも1つの入力データパケットのうちの第1のデータパケットの受信時間からの、所定の期間の終了であってよい。つまり、ノードは、このような入力データパケットのうちの第1のデータパケットが受信されたときから開始する所定時間期間の間、入力データパケットを監視し収集するよう設計されてよい。この条件は、より多くのデータパケット、つまりノード自身により生成された又は他のピアから受信したデータパケットが、ネットワークの残りの部分へブロードキャストする前に、収集されることを保証しようとするとき、役立つ。
【0063】
幾つかの実装では、トリガ条件は、収集したデータパケットの数が第1時間期間の間に閾数に達することであってよい。特に、ノードは、第1時間期間の終了、又は所定の閾数のデータパケットがノードにより収集されること、のうちの早い方まで、入力データパケットを監視し収集するよう設計されてよい。
【0064】
<ランダム差中継(Random Differential Relay (RDR))の発見法>
上述のように、ランダム差中継は、ノードのネットワークにおけるトランザクションの伝搬のための「標準的拡散」プロトコルからの新発展を表す。RDRを実装するとき、伝搬側ノードは、エントリノードのランダムに選択されたサブセットに、異なるトランザクションを同時に中継する。伝搬ノードは、トランザクションが中継されるべき1つ以上のエントリノードに各収集したトランザクションをランダムに割り当てることにより、表1に示したデータ構造のようなデータ構造を生成してよい。より一般的には、自身のペイアにデータパケットを中継するネットワークノードは、ノードにより収集された(つまり、受信された又はローカルに生成された)複数のデータパケットのうちの各々について実行すべき中継の種類を指定する自身の内部ルーティングデータ構造を維持してよい。
【0065】
本願明細書で提案される拡散混合プロトコル(Diffusion Mixer Protocol)のコンテキストでは、RDRを実装するブロックチェーンネットワーク内の各ノードは、自身のルーティングデータ構造、又は「RDRテーブル」を独立に構築してよい。RDRテーブルは、RDRプロトコルを採用するノード毎にトランザクション割り当て方式を定義する。つまり、個々のノードのRDRテーブルは、どのトランザクションがどのピアにいつ中継されるべきかを管理するために使用される。RDRテーブルは、所与の時間量ΔT
RDRの間に受信され又は生成される全部のトランザクション、及びトランザクションのソースピアを追跡してよい。RDRテーブルは、トランザクションの第1インスタンスの到着時間(「ToAタイムスタンプ」)、トランザクションを中継するために選択された時間(「ToRタイムスタンプ」)、及び/又はノードにより受信された同じトランザクションのインスタンスの数のカウンタ、のような追加情報を含んでよい。例示的なRDRテーブルが以下に提供される。
表2
【表2】
【0066】
ノードのローカルRDRテーブルは、新しい情報(タイムアウト、受信又は生成されたトランザクション)が利用可能になると、動的に(つまり、リアルタイムに)更新されてよい。本開示は、個々のRDRテーブルの構築及び更新に貢献する種々の発見法(heuristics)、又は「サブシステム」を提供する。これらのサブシステムは、RDRテーブルの中で指定されたトランザクション割り当てを更新するために適用され得るルール又はガイドラインのセットとして考えることができる。これらのサブシステムに含まれる方針は、トランザクションソースの難読化を向上し、個々のノードのチュ系動作により生成されるネットワークトラフィックを平衡させるのに役立ち得る。提案されるサブシステムのセット、つまりソースミキシング、中継ミキシング、宛先ミキシング、到着時間ミキシング、及びソース制御は、収集されたトランザクション中継情報をマージするために、及びネットワークリソースの最適割り当てを提供する使用できる。
【0067】
図8を参照すると、ネットワーク内のノードにおいて生成又は受信されたデータパケットを送信する例示的な方法700がフローチャート形式で示される。方法700は、提案されるサブシステム/発見法のうちの少なくとも1つのルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法700は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法700は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1種類のデータパケット(例えば、トランザクション)を生成し又は受信するよう構成されるノードにより実行される。
【0068】
動作702で、ノードに関連付けられたクライアントは、第1種類の少なくとも1つのデータパケットを生成する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【0069】
動作704で、ノードは、第1時間期間Tの間、第1種類のデータパケットのセットを収集する。つまり、ノードは、時間期間に渡り、第1種類のデータパケットを蓄積する。セットは、少なくとも1つの生成されたデータパケット、及びネットワーク内の1つ以上のピアノードから受信された第1種類の少なくとも1つのデータパケット、を含む。このように、ノードにより生成されたデータパケットは、近隣ノードから受信された同じ種類のデータパケットと混合(ミキシング、mix)される。
【0070】
動作706で、収集されたセットのデータパケットの、該ノードに接続された複数の近隣ノードへのマッピングが決定される。マッピングは、セットのうちの各データパケットの、近隣ノードへの中継の期待時間を示す。この「マッピング」は、ネットワークのノードの個々のローカルRDRテーブルを構成するために使用される。本開示に記載されたサブシステム/発見法のうちの1つ以上は、RDRテーブルの構成に(部分的に又は独立して)貢献してよい。特に、1つ以上の異なるサブマッピングは、収集したデータパケットの近隣ノードへのマッピングを決定するときに適用されてよい。サブマッピングは、少なくとも2つの異なる種類であってよい。第1種類のサブマッピングは、同じソース(つまり、生成側ノード)を有する任意の2つのデータパケットを、中継のために、近隣ノードのうちの異なるサブセットに割り当てる。以下に更に詳述する「ソースミキシング」及び「中継ミキシング」サブシステムは、この第1種類のサブマッピングの例である。第2種類のサブマッピングは、ノードにおいて生成された又はノードにより同じ時間間隔でピアノードから受信された任意の2つのデータパケットに中継の異なる期待時間を割り当てる。「到着時間ミキシング」サブシステムは、この第2種類のサブマッピングの一例である。
【0071】
動作708で、収集されたセットのうちのデータパケットの近隣ノードへのマッピングが決定されると、該データパケットは、決定したマッピングに従い近隣ノードへ送信される。
【0072】
RDRテーブル内に定義されたトランザクション割り当てを更新するために、個々のサブシステムが独立して実装されることが理解される。つまり、各サブシステムは、他のサブシステムと独立に、RDRテーブルを別個に採用してよい。従って、個々のサブシステムは、トランザクションを中継ノードに割り当てる異なる方法、従ってトランザクションを伝搬する異なる技術を提供してよい。
【0073】
<ソースミキシング>
ソースミキシングサブシステムの基礎にある原理は、ノードにおいてローカルに生成されたトランザクションがピアの重複しないサブセットに送信されるべきであるということである。説明のために、ノードxが2つのトランザクションtxi及びtxi+1を生成した場合、これらのトランザクションの中継のために選択されたピアのセットは、それぞれS(txi)及びS(txi+1)と示され、S(txi)≠S(txi+1)を満たす。
【0074】
つまり、2つの続いて起こるトランザクションのピアのセットは、少なくとも1つのピアだけ異なる。この不平等性は、ノードにおいて生成されたトランザクションの初期中継のパターンについての任意の悪意ある検索を複雑にすることを助けることができる。この概念は、以下のようにδSM次(degree)のソースミキシングに拡張できる:
S(txi+a)≠S(txi+b)、∀(a,b)∈[0,δSM-1]、a≠b
【0075】
図9を参照すると、ネットワーク内のノードにおいて生成されたデータパケットを送信する例示的な方法800がフローチャート形式で示される。方法800は、ソースミキシングサブシステム/発見法のルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法800は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法800は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1種類のデータパケット(例えば、トランザクション)を生成するよう構成されるノードにより実行される。
【0076】
動作802で、ノードに関連付けられたクライアントは、第1種類の少なくとも1つのデータパケットを生成する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【0077】
ノードは、少なくとも1つの生成されたデータパケットの、自身の近隣ノード(つまりピア)への第1マッピングを決定する。特に、ピアの複数のサブセットは、ノードにおいて生成されたデータパケットを中継するために選択される。各データパケットは、第1マッピングにより、中継ノードの特定のサブセットに関連付けられる。データパケット毎に、動作804で、ノードにより前に生成された第1種類の所定数の第1データパケットが識別される。これらは、既にノードによりピアへ送信されたデータパケット、又は前に生成されたがノードのピアへ未だ中継されていないデータパケットであってよい。
【0078】
動作806で、第1データパケットに関連付けられた中継ノードセットのリストが取得される。中継ノードセットは、第1データパケットがそれぞれ中継される(又は中継のために割り当てられる)近隣ノード(ピア)を含む。つまり、中継ノードセットは、第1データパケットのうちの個々のデータパケットが割り当てられるノードのピアのサブセットを示す。
【0079】
動作808で、中継ノードの第1セットは、動作806で取得されたリストの中の中継ノードと異なる近隣ノードのセットを識別することに基づき選択される。例えば、中継ノードの第1セットは、中継ノードセットの取得したリストに含まれない2つ以上の近隣ノードのセットを任意に選択することにより、選択されてよい。幾つかの実装では、選択された第1セットが2つ以上のピアにより取得されたリストの中の中継ノードセットと異なるという要件が課されてよい。つまり、上限は、中継ノードの選択された第1セットと取得したリスト内の中継ノードセットのうちのいずれか1つとの間の交差集合に属する要素の数に設定されてよい。
【0080】
方法800は、単一のデータパケットがノードにおいて生成された後に、又はノードが複数の生成されたデータパケットを収集した後に、ノードにより実行されてよい。特に、ノードは、(DMPのRDR段階と同様に)時間期間に渡り第1種類のデータパケットを生成し蓄積し、蓄積したデータパケットの中継ノードセットへの第1マッピングを決定してよい。これらの場合に、データパケットは、それぞれ、中継ノードの任意に選択されたサブセットに割り当てられてよく、このようなサブセットのいかなる2つも互いに等しくないことを保証する。
【0081】
中継ノードの第1セットに含まれるために選択された近隣ノードの数は、任意に決定されてよい。少なくとも幾つかの実装では、第1セットのために選択されたピアの数は、伝搬側ノードの帯域幅要件(例えば、固定時間枠の中の入力及び出力データの累積量)に従い制限される。特に、ローカルに生成したトランザクションの中継のために選択されたピアの数は、ネットワーク負荷問題を解決するため、又はソース難読化を向上するために、調整されてよい。例えば、第1セットに含まれるピアの数は、以下により定義され得る:
m(txi)=mSM±rnd(ξSM)
ここで、mSMはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、rnd(ξSM)は、0とξSM-1との間のランダムな整数を表す。
【0082】
中継ノードの第1セットの選択は、次に、それぞれのデータパケットに関連して第1マッピングの中に設定できる。言い換えると、第1マッピングは、データパケットが中継ノードの第1セットに関連付けられる(つまり割り当てられる)ことを示してよい。動作810で、データパケットは、決定された第1マッピングに従い送信される。
【0083】
<中継ミキシング>
中継ミキシングサブシステムは、ノードにより受信されたトランザクションが、ノードのピアの重複しないサブセットへ中継されるべきであるという概念を前提とする。同じノードにより受信された2つの異なるトランザクションのために選択された中継ピアの間の交差集合に属する要素の数を表すためにパラメータλを用いて、中継ミキシングの背後にある思想は以下により捉えることができる。
【数1】
ここで、δ
RMは、中継ミキシングの次数(degree)である。不等式(1)は、不等式を満たす中継ノードへのトランザクションの割り当てを発見するトランザクション割り当て問題を定義する。中継ミキシングストラテジは、従って、(1)の中のパラメータλを変化することにより制御できる。λが設定されると、トランザクション割り当て問題に対する準最適解の反復的検索が実行される。中継ミキシングサブシステムは、ノードが1つ以上のトランザクションを受信する各ピアp
iについて不等式(1)が満たされることを要求し得る。例えば、ピアp
iから受信した最後のδ
RM個のトランザクション:
【数2】
は、これらのトランザクションについて不等式(1)が満たされることを要求することにより、中継ミキシングを実施するために使用されてよい。従って、幾つかの実装では、個々のパラメータλ
iは、各ピアp
iについてそれぞれ定義されてよい。このように、ソース難読化は、ノードがトランザクションを受信するピアp
1、p
2、...、p
m毎にトランザクション中継のために独立したデータ構造を生成することにより実装されてよく、中継ノードへの受信したトランザクションの割り当てを識別する。
【0084】
代替として、他の実装では、パラメータλは、ユニークなシステムパラメータ、特定の時間ウインドウ及びRDRテーブルに格納された情報を用いて更新される時間と共に変化するパラメータλt、又は特定の時間ウインドウ及びRDRテーブルに格納された情報を用いて更新されるピア毎の時間と共に変化するパラメータλt
i、であってよい。
【0085】
一般的ピアのトランザクション割り当ての組み合わせの数は、以下の通りである:
【数3】
ここで、mはノードのピアの数であり、δ
RMは中継ミキシングの次数(degree)であり、xは中継のために選択されたピアの平均数である。準最適解の反復的検索は、以下の幾つかの可能な方法で進められてよい。
【0086】
・反復の最大数を設定し、最小数の横断ピアによるトランザクション割り当てを選択する;
・反復の最大数を設定するが、横断ピアの所与の閾値に達した場合に、処理を早く中断する;
・反復の最大数を設定し、要件が満たされない場合にλの値を増大し、処理を再開する;
・反復の最大数を設定し、要件が満たされない場合にxの値を変更し、処理を再開する;
・反復の最大数を設定し、要件が満たされない場合にmの値を減少し、処理を再開する。
【0087】
反復の最大数が固定時間ウインドウΔTRMにより代用される場合、アプローチの別のセットが考えられる。
【0088】
中継ノードのセットに含まれるために選択された近隣ノードの数は、任意に決定されてよい。少なくとも幾つかの実装では、セットのために選択されたピアの数は、伝搬側ノードの帯域幅要件(例えば、固定時間枠の中の入力及び出力データの累積量)に従い制限される。特に、ローカルに生成したトランザクションの中継のために選択されたピアの数は、ネットワーク負荷問題を解決するため、又はソース難読化を向上するために、調整されてよい。例えば、第1セットに含まれるピアの数は以下により定義され得る:
m(txi)=mRM±rnd(ξRM)
ここで、mRMはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、rnd(ξRM)は、0とξRM-1との間のランダムな整数を表す。幾つかの実施形態では、ξSM及びξRMは同じ値を有してよい。
【0089】
図10を参照すると、ネットワーク内のノードにおいて受信されたデータパケットを中継する例示的な方法900がフローチャート形式で示される。方法900は、中継ミキシングサブシステム/発見法のルールに従うトランザクション割り当て方式に従い、ネットワーク内でデータを伝搬する技術を提示する。方法900は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。より具体的には、方法900は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1種類のデータパケット(例えば、トランザクション)を受信するよう構成されるノードにより実行される。
【0090】
動作902で、ノードに関連付けられたクライアントは、第1種類の少なくとも1つのデータパケットを受信する。データパケットは、例えば、ブロックチェーントランザクションを含んでよい。
【0091】
ノードは、少なくとも1つの受信されたデータパケットの、自身の近隣ノード(つまりピア)への第2マッピングを決定する。特に、ピアの複数のサブセットは、ノードにおいて生成されたデータパケットを中継するために選択される。各データパケットは、第2マッピングにより、中継ノードの特定のサブセットに関連付けられる。データパケット毎に、動作904で、ノードにより最近受信された第1種類の所定数の第2データパケットが識別される。これらは、既にノードによりピアへ送信されたデータパケット、又は前に受信されたがノードのピアへ未だ中継されていないデータパケットであってよい。
【0092】
動作906で、近隣ノードの固定セットへの第2データパケットの第1割り当てが決定される。特に、第1割り当ては、所定条件を満たす近隣ノードへの第2データパケットの1つ以上の割り当てから選択される。この動作は、上述の不等式(1)に対する準最適解の反復的検索に対応する。つまり、(1)を満たす中継ノードへのデータパケットの割り当てのうち、ユニークな割り当て(例えば、最少横断ピアを有する割り当て)が決定される。(1)によりキャプチャされるように、近隣ノードの固定セットへの第2データパケットの割り当ては、第2データパケットのうちの任意の2つについて、該第2データパケットの両方が(中継のために)割り当てられる近隣ノードの数が所定の閾値以下である場合に、所定条件を満たす。
【0093】
動作906で識別された近隣ノードへの第2データパケットのユニークな割り当ては、次に第2マッピングに設定できる。言い換えると、第2マッピングは、第2データパケット(つまり、ノードが自身のピアから受信したデータパケット)がそれぞれ割り当てられる中継ノードを示してよい。動作908で、少なくとも1つの受信したデータパケットは、決定された第2マッピングに従い中継される。
【0094】
方法900は、単一のデータパケットがノードにおいて受信された後に、又はノードが複数の受信されたデータパケットを収集した後に、ノードにより実行されてよい。特に、ノードは、(DMPのRDR段階と同様に)時間期間に渡り第1種類のデータパケットを受信し蓄積し、蓄積したデータパケットの中継ノードセットへのマッピングを決定してよい。これらの場合に、データパケットは、それぞれ、中継ノードの任意に選択されたサブセットに割り当てられてよく、このようなサブセットのいかなる2つも互いに等しくないことを保証する。
【0095】
<宛先ミキシング>
宛先ミキシング発見法は、ノードの出方向の接続が異なるピアにより中継されるトランザクションを実行するべきであるという思想をキャプチャする。この発見法は、中継ミキシングサブシステムの特別な場合と考えられる。何故なら、後者が、同じソースピアからの中継のためにピアの重複しないサブセットの生成を含むからである。方法900では、宛先ミキシングは、動作906で、第1ノード(つまり、ノードがデータパケットを受信するノード)のうちの任意の2つについて、該2つの第1ノードから受信した全部の第2データパケットのセットが、第1割り当てにおいて少なくとも2つの異なる近隣ノードに割り当てられることを保証することにより、実装されてよい。例えば、
図11は、ノードiの宛先ミキシングの例を示す。宛先ミキシングサブシステムは、ノードaが、所与の時間ウインドウΔT
DMで、同じノードcにより中継された2つのトランザクションを受信しないことを保証する。従って、ノードiでノードcから受信された2つのトランザクションのうちの一方のみが、ノードaに中継される。
【0096】
幾つかの実装では、宛先ミキシングは、時間ウインドウΔTDM毎に、ピアの異なるサブセットに対して有効にされてよい。例えば、サブセットは、パラメータ(mDM、δDM、ξDM)と共にソースミキシングについて記載されたのと同様の方法で割り当てられてよい。このストラテジは、所与のトランザクションについて、ソース及び宛先の非相関に貢献し得る。
【0097】
<到着時間ミキシング>
到着時間ミキシング発見法は、データパケット中継に関するソース及び宛先情報の非相関を助けるために、データパケットの遅延された中継を実装する。(例えば、DMPのRDR段階で)例えば、時間ウインドウΔT
DMの中で収集された(又は生成された)データパケット(例えば、トランザクション)は、中継のために、ΔT
iの終わりにスケジューリングされてよい(
図12のRDR
i)。到着時間ミキシングサブシステムは、RDR
iだけ中継を遅延させる。幾つかの実装では、データパケットの中継は、倍数qΔT
i、例えばRDR
j、RDR
j+1、RDR
j+2、等だけ遅延されてよい。従って、到着時間ミキシング発見法によると、ノードにより受信した(又は生成した)データパケットの中継は、近隣ノードへの受信したデータパケットの中継のための次のスケジューリング時間の決定、及び中継のための次のスケジューリングされた時間の後の所定時間量のデータパケットの中継を含む。ΔT
i内で収集された全部のトランザクションは、ΔT
i+qΔTで中継される。又は、ΔT
i内で収集された各トランザクションjは、所与のΔT
i+q
jΔTで中継される。
【0098】
ランダム変数qは、幾つかの例では、以下の負の指数確率密度関数を有してよい:
pdfq(x)=c×e-(x+g)
【0099】
ここで、c及びgは、それぞれ、乗算及び加算係数である。
【0100】
<ソース制御>
悪意あるピアは、同じデータパケット(又は一群のデータパケット)を複数回、所与のノードiへプッシュすることを試みて、iのローカル中継ストラテジの中のパターンを発見しようとすることがある。例えば、悪意あるピアノードは、iへの2つの接続を生成し、iの入力及び出力トラフィックがどのように関連するかを監視してよい。ソース制御サブシステムは、各ピアから受信可能なデータパケットの数について特定の閾値を設定することにより実装される。ピアが所与のデータパケットの閾値を超えた場合、その接続は、永久に又は一時的に閉じられる。ノードが、ブロックチェーントランザクションのような所与のデータパケットを受信するインスタンスの数は、RDRテーブルに格納されてよい。
【0101】
<負荷平衡>
負荷平衡は、他のサブシステムによりピアへの中継のために既に割り当てられたデータパケットのシャッフルを周期的に実行するために使用されてよい。負荷平衡モジュールの目的は、幾つかのピア接続におけるトラフィック過負荷又は単一の障害点を回避するために、ピアの間の中継分布を平均化することである。負荷平衡のために以下の2つの異なるアプローチが実装されてよい。
【0102】
・各データパケットjは、それらのサイズ(つまり、インプットの数、アウトプットの数、アンロック及びロックスクリプトのサイズ)に関わらず同じ重みwjを有する;
・各データパケットjは、それ自体のサイズ[単位:バイト]に比例する、それ自体の重みwjを有する。
【0103】
例えば、方法800で、近隣ノードの固定セットへの第2データパケットの第2割り当てが決定されてよく、第2割り当ては、ノードのアウトプットインタフェースにおけるトラフィックの平衡を考慮した第1割り当ての再構成である。累積値c
iは、以下のように、中継するためにスケジューリングされたデータパケットの数n
iに対して、ピアi毎に計算される:
【数4】
【0104】
続いて、中継すべきデータパケットをシャッフルしてピア毎の平均値c
*を得るために、反復的方法が実行される。
【数5】
【0105】
このデータパケットのシャッフルを解決する種々の異なる発見法が利用可能であってよい。例えば、データパケットのサブセットの中継を予想するために、又は出て行くトラフィックの負荷平衡を向上するために、異なる優先度が異なるサブシステムに割り当てられてよい。更に、異なるサブシステムの実行は、データパケットの複製又は一致しない割り当てを導入し得る。これは、中継の活性化の前に解決される必要がある。
【0106】
<ノード帯域幅およびDMP>
拡散ミキシングプロトコル(Diffusion Mixer Protocol)は、近隣ノードへの、ネットワークノードの種々のリンク/チャネルの中の、ネットワークノードの利用可能帯域幅を考慮するよう構成されてよい。送信の品質及びタイミングを含むネットワークのノード間でのデータパケットの伝送の種々の態様は、利用可能なノード間の帯域幅容量に依存し得る。
【0107】
ノードのネットワーク内のデータパケットの伝搬のコンテキストでは、ネットワークノードにより中継されるデータパケットのソース及び宛先の匿名性を向上する能力と、ネットワークノードの利用可能な帯域幅リソースの効率的利用との間のバランスを取ることが望ましい。特に、ネットワークノードのピアへのデータ中継を割り当てるアルゴリズム(例えば、Diffusion Mixer Protocol)は、有利なことに、ネットワークノードのリソース制約により軽減される。例えば、幾つかの例では、種々の制約が、ネットワークノードのリソース制限に基づき、データ中継割り当てアルゴリズムの(例えば、上限及び/又は下限を設定する)1つ以上のパラメータに課されてよい。
【0108】
説明として、ノードがデータパケットを自身のピアのうちの1つ以上へ送信するとき、ノードは、データパケットがノードのピアへの中継のために賢明な方法で割り当てられるように、近隣ノードへの自身のリンクの中で、利用可能な帯域幅を考える必要がある。中継されるデータのソースの匿名性を向上する技術は、結果として高い帯域幅使用率をもたらし得る。例えば、ネットワークノードがデータパケットを中継するために多数のエントリノードを選択した場合、ネットワークノードの出力リンク容量は、望ましくないレベルにまで低下し得る。別の例として、(RDRで)到着時間ミキシングを実施するために1つ以上のデータパケットの中継を遅延することは、許容可能なレベルを超えてノード間チャネルを占有させてしまう。ネットワークノードのリソース制約に依存してパラメータの制御を可能にするアルゴリズムは、データ中継の性能向上、及びネットワークトラフィック管理の両方を実現できる。
【0109】
図13を参照すると、ネットワーク内でデータパケットを伝搬する例示的な処理1000が示される。より具体的には、処理1000は、ネットワークノードの帯域幅制約に基づき、データ中継割り当てを決定する技術を表す。方法1000は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。特に、方法1000は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1種類のデータパケット(例えば、トランザクション)を受信するノードにより実行される。
【0110】
動作1002で、ノードは、第1時間期間Tの間、第1データパケットのセットを収集する。つまり、ノードは、固定時間期間に渡り、第1データパケットを蓄積する。セットは、ネットワーク内の1つ以上のピアノードから受信された少なくとも1つの第1データパケットを含む。ブロックチェーンネットワークでは、時間期間Tの間、ノードは、中継されるべき入力トランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。時間期間長Tは予め定められてよい。
【0111】
動作1004で、ノード(又はノードと異なるエンティティ)は、自身の複数の近隣ノードへの自身のリンクの中で、利用可能な帯域幅を決定する。ノードは、近隣ノードへの自身のリンク/チャネルの各々の中で、帯域幅及びスループットを決定してよい。特に、ノードの少なくとも1つのリンクのうちの各々の中の利用可能帯域幅の数値又は指示子が得られてよい。幾つかの実装では、ノードの出方向リンクのうちの全部の中の全体の利用可能帯域幅を表す値/指示子が取得されてよい。例えば、データパケットを伝搬する処理1000に参加するために利用可能なノードのリンクのうちの比率を表す値/指示子が導出されてよい。
【0112】
更に、データ中継に対するノードの帯域幅の望ましい割り当て(つまり、Diffusion Mixer Protocol)を表すパラメータが決定されてよい。例えば、パラメータは、割り当て可能な帯域幅の最大量を表してよい。パラメータの値は、例えば、ノード、ノードの集合、及び/又はノードを含むネットワークを制御するエンティティにより手動で設定されてよい。代替として、以下に更に詳述するように、パラメータの値は、ノードの利用可能な帯域幅の検出された変化に基づき、自動的に更新されてよい。
【0113】
動作1006で、第1データパケットの各々を中継のために1つ以上の近隣ノードに割り当てるマッピングが決定される。つまり、ノードのピアへのデータパケットの中継割り当てが導出される。マッピングは、動作1002でノードにより収集された第1データパケットのうちの1つ以上の中継の期待時間を示す。
【0114】
第1データパケットの中継割り当ては、(動作1004で取得された)利用可能帯域幅情報を設定の基礎として用いて、第1データパケットの各々について、決定される。データ中継の種々のパラメータのうちの少なくとも1つは、第1データパケットが中継のためにマッピングにより割り当てられるピアノードの第1の数、第1データパケットを1つ以上のピアノードへ中継するときの遅延の第1時間長、及び第1データパケットのネットワークノードからのホップ数、を含む。つまり、データ中継処理のこれらのパラメータのうちの1つ以上は、ノードの近隣ノードへのリンクの中の、該ノードの利用可能帯域幅に基づき設定され又は調整されてよい。
【0115】
幾つかの実装では、ノードの利用可能帯域幅に関する情報は、上述のサブシステム(例えば、ソースミキシング、中継ミキシング、等)のうちの1つ以上のサブシステム、又はピアノードへのデータパケットの中継割り当てを制御するために利用される他の発見法のパラメータを設定するために使用されてよい。
【0116】
前述のように、RDRでデータパケット中継のために選択されたピアの数は、以下のように制限されてよい:
m
min≦m
max≦m
ここで、mは、ネットワークノードの合計ピア数を表す。利用可能帯域幅の指示を表すパラメータψ∈[0,1]、及び固定ウインドウ(例えば、ΔT
RM、ΔT
SM)の中で中継された及び/又は生成されたデータパケットの平均数μが与えられると、ピア数の境界についての構成セットは、以下のように導出される:
・ψ=1ならば、m
max=m及びm
min=max(0,2μ-m
max)
・ψ=0ならば、m
max=1及びm
min=0
つまり、μは[m
min,m
max]の中点に対応する。最小及び最大の境界は、ψの関数として表すことができる:
【数6】
ここで、式は最も近い整数値について評価される。言い換えると、ネットワークノードの利用可能帯域幅(ψにより表される)に基づき、第1データパケットが中継のためにマッピングにより割り当てられるピアの数の可能な値の範囲が決定されてよい。決定された範囲内の数値が、マッピングが第1データパケットを中継するピアノードの第1の数として設定するために、(例えば、任意に、ランダムに)選択できる。
【0117】
2μ-mmax≦0ならば、mminは0に設定される。通常、ψ及びmの値が大きいほど、範囲[mmin,mmax]が大きくなる。つまり、利用可能帯域幅及びピアノードが多いほど、第1データパケットの中継を受信するよう設定されるべきピアノードの数において、柔軟性が大きくなる。
【0118】
幾つかの実装では、平均μは、時間の関数として変化するようモデル化されてよい。(ソースミキシング及び中継ミキシングの)μの値は、例えば、三角関数を用いてモデル化されてよい:
【数7】
ここで、μ
*はμ(t)の期待値を表し、kは正弦波の周期を制御する。
【0119】
第1データパケットの中継を受信するために選択されたピアの数の可能な値の範囲(m(tx
i))は、更に精緻化され得る。例えば、ソースミキシングサブシステムのシナリオでは:
m(tx
i)=m
SM±rnd(ξ
SM)
ここで、m
SMはソースミキシングサブシステムにおいて中継のために選択されたピアの平均数を表す正規化値であり、rnd(ξ
SM)は、0とξ
SM-1との間のランダムな整数を表す。ξ
SMの例示的な確率分布関数は、範囲[-ξ
SM,ξ
SM]内の95%のエネルギを有する離散ガウス分布である。より一般的な「スキュー(skew)正規分布」は、確率密度関数PDF
ξにより以下のように特徴付けることができる:
【数8】
【0120】
平均値の右側の値は、ネットワーク内のデータパケットの初期伝搬を助けるために優先されてよいので、ソースミキシングの場合に、スキューは、分布の両側の間の非対称を表すために役立ち得る。関数は、以下の平均μ
ξ及び分散σ
2
ξを有する:
【数9】
【0121】
上式において、ω、ρ、及びαは、それぞれ曲線の規模、位置、及び形状を表す。従って、μ
ξ及びσ
2
ξは、(1)範囲[m
min,m
max]、及び(2)中継のために選択されたピアの平均数を表す公称値、つまりμ
SM(t)に従い構成されてよい。幾つかの実装では、以下の構成は、平均及び分散を定義するときに適切に使用されてよい:
【数10】
【0122】
第3の式は、未知の変数ω、ρ、αについて解くために選択できる。例えば、αとψとの間の相関は、以下のように表されてよい:
α=8ψ-4、又は、α=8.6tanh(ψ-0.5)
【0123】
ネットワークノードの利用可能帯域幅に基づき制御され得る別のパラメータは、データパケットの中継のときの遅延の時間である。遅延される中継(つまり、中継割り当て/マッピングにより示される中継の期待時間の後の所定時間長でデータパケットを送信すること)は、データパケットに関するソース及び宛先情報を非相関するのに役立ち得る。例えば、時間ウインドウΔTの中で収集された又は生成されたデータパケットは、ΔTの倍数qΔTに等しい遅延を有し中継されてよい。ここで、qはランダム変数である。非相関の程度と中継における遅延の程度との間でバランスを取るために、ランダム変数qは、負の指数確率密度関数を有してよい。
【0124】
通常、中継における遅延の長さは、ノードの利用可能帯域幅に逆比例してよい。特に、ψの値が低いほど、中継の遅延が長い。この関係は、次式を用いて表され得る:
【数11】
ここで、nは前の時間ウインドウで受信されたデータパケットの数の推定を表し、ΔT
*は公称時間ウインドウ、つまり遅延される中継の下限を表す。ΔT
*の値は、平均接続時間、又はノードのネットワークの中でのノードの中心度(つまり、ノードへの入り方向接続の数)に基づき変化してよい。
【0125】
動作1008で、収集されたセットの第1データパケットは、動作1006で決定されたマッピングに従い、ネットワークノードの近隣ノードへ送信される。幾つかの実装では、収集された第1データパケットのサブセットのみが、マッピングにより指定された中継割り当てに従い送信される。
【0126】
図14を参照すると、ネットワーク内でデータパケットを伝搬する別の例示的な処理1100が示される。方法1100は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。特に、方法1100は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1データパケット(例えば、トランザクション)を受信するノードにより実行される。
【0127】
処理1100は、第1データパケットが一旦ネットワークノードにより伝搬されると、第1データパケットが伝わるホップ数を設定する技術を導入する。動作1102で、第1データパケットのセットが収集され、動作1104で、近隣ノードへのノードのリンクの中で、ノードの利用可能帯域幅が決定される。次に動作1106で、ノードにより収集された第1データパケットのマッピングが決定され、該マッピングは、第1データパケットの各々を中継のために1つ以上の近隣ノードに割り当てる。
【0128】
動作1108で、第1データパケットのセットから選択された少なくとも1つの第1データパケットについて、該少なくとも1つの第1データパケットが中継のために割り当てられるピアノードの第1セットが識別される。この識別は、動作1104で決定されたマッピングを参照して行われる。
【0129】
動作1110で、第1セットのうちの第2サブセットが識別される。第2サブセットのピアノードは、ネットワークノードから少なくとも1つの第1データパケットを受信すると、少なくとも1つの第1データパケットを自身の近隣ノードへ中継するよう指定される。つまり、ピアノードの第2サブセットは、少なくとも1つの第1データパケットを自身のピアへ転送することにより、少なくとも1つの第1データパケットのネットワークを通じる伝搬に貢献する。少なくとも1つの第1データパケットが第2サブセットのピアノードへ中継されると、少なくとも1つの第1データパケットの伝搬は、ネットワークの更なるノードへと続く。他方で、少なくとも1つの第1データパケットが、第2サブセットに含まれない第1セットのピアノードに中継されると、これらのピアノードは、少なくとも1つの第1データパケットをそれらの近隣ノードのいずれにも転送しない。
【0130】
動作1112で、少なくとも1つの第1データパケットについて、ノードは、少なくとも1つの第1データパケットを、第2サブセットに含まれるピアノードへ送信する。動作1114で、少なくとも1つの第1データパケットについて、ノードは、少なくとも1つの第1データパケットの変更バージョンを、第2サブセットに含まれない第1セットのピアノードへ送信する。変更データパケットは、少なくとも1つの第1データパケットのピアノードへの更なる中継が禁止されることを示すよう変更された少なくとも1つの第1データパケットを含む。このように、ピアノードのグループ(つまり、第2サブセットのピア)は、少なくとも1つの第1データパケットの伝搬を続けるよう構成され、一方で、ピアノードの異なるグループ(つまり、第2サブセットに含まれないピア)は、ネットワークノードから少なくとも1つの第1データパケットを受信するだけであり、それをそれらのピアに中継しない。更に伝搬されるデータパケットを、ネットワークノードからの単一ホップだけ伝わるデータパケットから区別することにより、ネットワークノードの中でデータ伝搬方式におけるデータパケットの冗長な中継の数を低減することが可能になる。
【0131】
例えば、2つのノードがピアの同じセットを有する場合、該2つのノードに中継されるデータパケットについて、該2つのノードの両方によりそれらのピアへ更に伝搬されることは、それらのピアへ送信されるデータパケットの複製を生じるので、冗長である。既にネットワークの他の識別可能なノードを宛先とする可能性のあるデータパケットにより伝達されたホップ数を制限することにより、ネットワーク帯域幅の不要な消費が抑えられ又は低減され得る。
【0132】
第2サブセットに含まれない第1セットのピアへ転送されるデータパケットは、更に伝搬されるべき(つまり、第2サブセットのピアへ転送される)データパケットからそれらを区別するためにマークされてよい。例えば、第2サブセットに含まれないピアへ転送される少なくとも1つの第1データパケットの中に、該データパケットの他のノードへの更なる中継が禁止されることを示すために、追加ビットが設定されてよい。
【0133】
少なくとも1つの第1データパケットは、幾つかの実装では、第1データパケットの収集されたセットから任意に選択されてよい。代替として、少なくとも1つの第1データパケットは、ネットワークノードにより1つ以上のピアノードへ前に送信されたという決定に基づき、選択されてよい。別の例として、少なくとも1つの第1データパケットは、n1hop毎に中継されるデータパケットをランダムに設定することにより選択されてよい。n1hopの値は、m及びψの両方に依存する。特に、一般的に、m及びψの値が高いほど、n1hopが高くなる。例えば、相関は、以下のように2次関数によりモデル化できる:
n1hop=(m-1)ψ2+1
【0134】
図15を参照すると、ネットワーク内でデータパケットを伝搬する別の例示的な処理1200が示される。方法1200は、例えば
図1のネットワーク100のようなブロックチェーンネットワークのノードにより実装される。特に、方法1200は、DMPに参加し、ネットワークの残りの部分へ伝搬するために第1データパケット(例えば、トランザクション)を受信するノードにより実行される。
【0135】
ノードは、動作1202で、第1データパケットのセットを収集し、動作1204で、近隣ノードへのノードのリンクの中で、利用可能帯域幅を決定する。次に動作1206で、データパケットのピアへのマッピング/中継割り当てが決定される。
【0136】
動作1208で、ネットワークノードの利用可能帯域幅の変化が検出される。利用可能帯域幅は、ネットワークノードの他の通信活動に依存して増加又は減少し得る。変化は、ネットワークノードによりリアルタイムに検出されてよく、動作1210で、ピアノードへの中継のためにデータパケットの更新されたマッピングが、利用可能帯域幅の更新された指示に基づき、リアルタイムに決定される。特に、マッピングの1つ以上のパラメータは、利用可能帯域幅に関する更新された情報に基づき設定されてよい。係数は、第1データパケットが中継のためにマッピングにより割り当てられるピアノードの第1の数、第1データパケットを1つ以上のピアノードへ中継するときの遅延の第1時間長、及び第1データパケットのネットワークノードからのホップ数、を含む。
【0137】
動作1212で、第1データパケットは、更新されたマッピング/中継割り当てに基づき、ネットワークノードの近隣ノードへ送信される。
【0138】
ネットワークノードの利用可能帯域幅に関する情報は、どの拡散モードがDMPの間に利用すべきかの決定に影響を与えてよい。より具体的には、ネットワークノードは、RDRモード又は標準的拡散モードに切り替えるかを、ノードの近隣への該ノードのリンクの中で現在利用可能な帯域幅に基づき、決定してよい。拡散モードの間の切り替えは、RDRにより生成される処理オーバヘッドが非常に高い場合、利用可能帯域幅はネットワーク最適化を要求せず、ローカルシステムは2つの拡散モードの間で周期的に交互になるよう設定される。
【0139】
図16を参照すると、参加ノード1600の簡易な例がブロック図形式で示される。ノード1600は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでよいプロセッサ1602を含む。ノード1600は、値、変数、及び幾つかの例ではプロセッサ実行可能プログラム命令を格納するための永久及び非永久メモリと、有線又は無線ネットワークを介するネットワーク接続を提供するネットワークインタフェース1606と、を含んでよいメモリ1604を更に含む。
【0140】
ノード1600は、実行されるとプロセッサ1602に本願明細書に記載の機能又は動作のうちの1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション1608を含む。
【0141】
本願明細書に記載の装置及び処理、及びブロックチェーンノードを構成するための記載された方法/処理を実装する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を用いて実現されてよい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング習慣、データ構造、又は他のそのような実装の詳細に限定されない。
【0142】
上述の実施形態は、本発明を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本発明の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本発明は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【符号の説明】
【0143】
100 ブロックチェーンネットワーク
102 ノード
【外国語明細書】