(57)【要約】複数のノードのネットワークにおいてデータを伝える方法が開示される。方法は、複数のノードのうちの１つで実施され、第１タイプの少なくとも１つのデータパケットを生成することと、第１期間中に、少なくとも１つの生成されたデータパケット及びネットワーク内の１つ以上の第１ノードから受信された第１タイプの少なくとも１つのデータパケットを含む第１タイプのデータパケットの組を収集することと、組に含まれる各データパケットについて、複数のノードのうちの当該１つへ接続されている２つ以上の隣接ノードを任意に選択し、２つ以上の選択された隣接ノードの夫々へデータパケットを送信することとを含む。２つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いてネットワーク内の１つ以上の第２ノードへデータパケットをリレーするよう構成される。本発明は、例えばビットコインブロックチェーンのようなブロックチェーンネットワーク上での実施に特に適する。
2021504783.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードのネットワークにおいてデータを伝えるノードであって、前記ネットワーク内の各ノードが他のノードへの１以上の接続を有する、前記ノードにおいて、
プロセッサと、
ネットワークコネクティビティを提供するネットワークインターフェイスと、
プロセッサ実行可能命令を含むメモリと
を有し、
前記命令は、前記プロセッサによって実行される場合に、該プロセッサに、
第１タイプの少なくとも１つのデータパケットを生成することと、
第１期間中に前記第１タイプのデータパケットの組を収集することであり、該組は前記少なくとも１つの生成されたデータパケットと、前記ネットワーク内の１つ以上の第１ノードから受信された前記第１タイプの少なくとも１つのデータパケットとを含む、前記収集することと、
前記組に含まれる各データパケットについて、当該ノードへ接続されている２つ以上の隣接ノードを任意に選択し、該２つ以上の選択された隣接ノードの夫々へ前記データパケットを送信することと
を実行させ、
前記２つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いて前記ネットワーク内の１つ以上の第２ノードへ前記データパケットをリレーするよう構成される、
ノード。
【請求項２】
前記第１期間は、予め定義された長さを有する、
請求項１に記載のノード。
【請求項３】
前記命令は、実行される場合に、前記プロセッサに、トリガ条件が満足されているとの決定に応答して前記送信することを実行させる、
請求項１に記載のノード。
【請求項４】
前記トリガ条件は、当該ノードによる前記第１タイプの前記少なくとも１つのデータパケットの生成の時点からの所定の存続期間の経過を有する、
請求項３に記載のノード。
【請求項５】
前記トリガ条件は、前記１つ以上の第１ノードからの前記第１タイプの前記少なくとも１つのデータパケットの最初の受信の時点からの所定の存続期間の経過を有する、
請求項３に記載のノード。
【請求項６】
前記トリガ条件は、前記第１期間中に収集されたデータパケットの数が閾数に達することを有する、
請求項３に記載のノード。
【請求項７】
隣接ノードのデータ伝搬のモードは、第１モードと第２モードとの間で任意に選択され、
前記第１モードで、前記データパケットは、前記隣接ノードへ接続されるノードの任意に選択されたサブセットへリレーされ、
前記第２モードで、前記データパケットは、前記隣接ノードへ接続される全てのノードへリレーされる、
請求項１乃至６のうちいずれか一項に記載のノード。
【請求項８】
前記命令は、実行される場合に、前記プロセッサが前記第１期間中に前記第１タイプの如何なるデータパケットも送信しないようにする、
請求項１乃至７のうちいずれか一項に記載のノード。
【請求項９】
複数のノードのネットワークにおいてデータを伝える、コンピュータにより実施される方法であって、前記ネットワーク内の各ノードが他のノードへの１以上の接続を有する、前記方法において、前記複数のノードのうちの１つで実施され、
第１タイプの少なくとも１つのデータパケットを生成することと、
第１期間中に前記第１タイプのデータパケットの組を収集することであり、該組は前記少なくとも１つの生成されたデータパケットと、前記ネットワーク内の１つ以上の第１ノードから受信された前記第１タイプの少なくとも１つのデータパケットとを含む、前記収集することと、
前記組に含まれる各データパケットについて、前記複数のノードのうちの当該１つへ接続されている２つ以上の隣接ノードを任意に選択し、該２つ以上の選択された隣接ノードの夫々へ前記データパケットを送信することと
を有し、
前記２つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いて前記ネットワーク内の１つ以上の第２ノードへ前記データパケットをリレーするよう構成される、
方法。
【請求項１０】
前記送信することは、トリガ条件が満足されているとの決定に応答して実行される、
請求項９に記載の方法。
【請求項１１】
前記トリガ条件は、前記複数のノードのうちの当該１つによる前記第１タイプの前記少なくとも１つのデータパケットの生成の時点からの所定の存続期間の経過を有する、
請求項１０に記載の方法。
【請求項１２】
前記トリガ条件は、前記１つ以上の第１ノードからの前記第１タイプの前記少なくとも１つのデータパケットの最初の受信の時点からの所定の存続期間の経過を有する、
請求項１０に記載の方法。
【請求項１３】
前記トリガ条件は、前記第１期間中に収集されたデータパケットの数が閾数に達することを有する、
請求項１０に記載の方法。
【請求項１４】
前記第１期間中に前記第１タイプの如何なるデータパケットの送信を起こらないようにすることを更に有する、
請求項９に記載の方法。
【請求項１５】
複数のノードのネットワークにおいてデータパケットを伝えるプロセスに参加するためのプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体であって、
前記プロセッサ実行可能命令は、前記プロセスに参加しているノードのうちの１つにおいてプロセッサによって実行される場合に、該プロセッサに、請求項９乃至１４のうちいずれか一項に記載の方法を実行させる、
非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータネットワークに、より具体的には、複数のノードのネットワークにおいてデータを伝える方法及びデバイスに係る。本発明は、ブロックチェーンネットワークとともに使用することに適するが、制限されない。
【背景技術】
【０００２】
本明細書中で、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳（distributed  ledgers）を含むよう語「ブロックチェーン」を使用する。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可（permissioned）及び無許可（un-permissioned）台帳、共有台帳、並びにこれらの変形を含むが限られない。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。
【０００３】
ブロックチェーンは、合意に基づく電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【０００４】
新しいトランザクションを受け取るネットワークノードは、直ちに、そのトランザクションをネットワーク内の他のノードへ押し出そうと試みる。新しいトランザクションを他のノードへ送る前に、それは“妥当性確認”（validated）される。つまり、それは、トランザクションが適用可能なプロトコルに従って適切なトランザクションのための基本要件を満たすことを確かにするために、基準の組に対してチェックされる。
【０００５】
トランザクションがブロックチェーンに書き込まれるために、それはノード（“マイナー”（miner）又は“マイニングノード”（mining  node））によってブロックに組み込まれる。マイナーは、トランザクションを収集し、それらをブロックへと形成するよう設計される。マイナーは、次いで、ノードに対して“プルーフ・オブ・ワーク”（proof  of  work）を完了しようと試みる。複数のマイナーは、ブロックチェーンネットワークにわたって競争して、トランザクションのブロックをアセンブルしそのブロックについての関連するプルーフ・オブ・ワークを完了する最初のものであろうとする。成功したマイナーは、その承認されたブロックをブロックチェーンに加え、ブロックは、ネットワークを通じて伝搬される。それにより、ブロックチェーンのコピーを保持する他のノードは、自身の記録を更新することができる。ブロックを受け取るそれらのノードはまた、そのブロックを“妥当性確認”し、それを確かにするその中の全てのトランザクションは、プロトコルの方式要件に従う。
【０００６】
ビットコインなどのブロックチェーン技術の認識されている利点の１つは、トランザクションの匿名性である。ビットコインユーザの個人詳細は、公式に且つ明示的にビットコインアドレスに添付されず、ブロックチェーンのビットコイン台帳は、公開アドレス情報しか含まない。しかし、ブロックチェーンは、インターネットの上で動作する分散型ピア・ツー・ピアネットワークとして構成されるので、トランザクションの匿名性は、ユーザをネットワーク活動と結びつけるようにインターネットプロトコル（ＩＰ）アドレスを使用する攻撃によって危険にさらされる可能性がある。例として、ブロックチェーンに基づくネットワークに対して行われるＩＰトラフィック解析などの脱匿名化攻撃は、興味を持った第三者が、ネットワーク上でユーザによって提示されたトランザクションをモニタし、公に利用可能な情報を利用して、例えば、ユーザの公開鍵を彼らのＩＰアドレスと結びつけることによって、トランザクションをそれらの発信元と結びつけることを可能にし得る。
【０００７】
トラフィック解析は、ネットワークノードによるそれらの間のトランザクションの伝搬に依存するブロックチェーンに基づくネットワークにとって特に問題になる。トランザクションを受け取るネットワーク内の各ノードは、トランザクションを妥当性確認し、その後にそれをピアノードへ送る。ビットコインプロトコルでは、ノードは、トランザクションのリストを含む“ＩＮＶ”メッセージをピアノードへ送り、“ＩＮＶ”メッセージで示されたトランザクションのあるサブセットを選択する“ＧＥＴＤＡＴＡ”応答メッセージを受け取る。次いで、ノードは、要求されたトランザクションをピアノードへ送る。このプロセスは、ノードが接続されている各ピアノードに対して行われる。攻撃者は、トランザクションがネットワーク内で伝搬されるときに送信されるデータをインターセプト及び解析し、最終的に、トランザクションの発信元及び宛先をリンクするために使用され得る情報を得ることができる。
【０００８】
トラフィック解析又は他のタイプの脱匿名化攻撃を通じたネットワーク匿名性の危殆化の可能性を低減し得る、ブロックチェーンに基づくネットワーク内でのトランザクションの伝搬のための技術を提供することが望まれる。より一般的には、脱匿名化攻撃に対する脆弱性を減らすようにピア・ツー・ピアネットワークのノード間でデータをリレーする技術を提供することが望まれる。
【０００９】
そのような解決法が、現在考案されている。
【発明の概要】
【００１０】
従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
【００１１】
本願は、複数のノードのネットワークにおいてデータを伝えるノードについて記載する。ネットワーク内の各ノードは、他のノードへの１以上の接続を有してよい。ノードは、プロセッサと、ネットワークコネクティビティを提供するネットワークインターフェイスと、メモリとを含む。メモリは、プロセッサによって実行される場合に、プロセッサに、第１タイプの少なくとも１つのデータパケットを生成することと、第１期間中に、少なくとも１つの生成されたデータパケットと、ネットワーク内の１つ以上の第１ノードから受信された第１タイプの少なくとも１つのデータパケットとを望ましくは含む第１タイプのデータパケットの組を収集することと、その組に含まれる各データパケットについて、ノードへ接続されている２つ以上の隣接ノードを任意に選択し、２つ以上の選択された隣接ノードの夫々へデータパケットを送信することとを実行させるプロセッサ実行可能命令を含んでよく、２つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いてネットワーク内の１つ以上の第２ノードへデータパケットをリレーするよう構成されてよい。
【００１２】
いくつかの実施で、第１期間は、予め定義された長さを有する。
【００１３】
いくつかの実施で、命令は、実行される場合に、プロセッサに、トリガ条件が満足されているとの決定に応答して、送信することを実行させる。
【００１４】
いくつかの実施で、トリガ条件は、ノードによる第１タイプの少なくとも１つのデータパケットの生成の時点からの所定の存続期間の経過を有する。
【００１５】
いくつかの実施で、トリガ条件は、１つ以上の第１ノードからの第１タイプの前記少なくとも１つのデータパケットの最初の受信の時点からの所定の存続期間の経過を有する。
【００１６】
いくつかの実施で、隣接ノードのデータ伝搬のモードは、第１モードと第２モードとの間で任意に選択され、第１モードで、データパケットは、隣接ノードへ接続されるノードの任意に選択されたサブセットへリレーされ、第２モードで、データパケットは、隣接ノードへ接続される全てのノードへリレーされる。
【００１７】
いくつかの実施で、命令は、実行される場合に、プロセッサが第１期間中に第１タイプの如何なるデータパケットも送信しないようにする。
【００１８】
本願は、複数のノードのネットワークにおいてデータを伝える、コンピュータにより実施される方法を提供することとして記載されることがある。ネットワーク内の各ノードは、他のノードへの１以上の接続を有してよい。方法は、複数のノードのうちの１つで実施されてよく、第１タイプの少なくとも１つのデータパケットを生成することと、第１期間中に、少なくとも１つの生成されたデータパケットと、ネットワーク内の１つ以上の第１ノードから受信された第１タイプの少なくとも１つのデータパケットとを望ましくは含む第１タイプのデータパケットの組を収集することと、その組に含まれる各データパケットについて、複数のノードのうちの当該１つへ接続されている２つ以上の隣接ノードを任意に選択し、２つ以上の選択された隣接ノードの夫々へデータパケットを送信することとを含んでよく、２つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いてネットワーク内の１つ以上の第２ノードへデータパケットをリレーするよう構成される。
【００１９】
本願は、複数のノードのネットワークにおいてデータパケットを伝えるプロセスに参加するためのプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体について更に記載することがある。プロセッサ実行可能命令は、プロセスに参加しているノードのうちの１つにおいてプロセッサによって実行される場合に、プロセッサに、本明細書で記載される方法の１つ以上の動作を実行させる。
【００２０】
本明細書で記載される実施例の多くにおいて、ブロックチェーントランザクションが具体的に参照されるが、明らかなように、本明細書で記載される方法及びデバイスは、非ブロックチェーントランザクションの伝搬に関連して実装及び適用されてよい。より一般的には、本開示で記載される方法及びデバイスは、ピア・ツー・ピアネットワークのノードの間でデータを伝搬する際の使用に適し得る。
【００２１】
本発明の１つの態様又は実施形態に関して記載される如何なる特徴も、１つ以上の他の態様／実施形態に対して使用されてもよい。本発明のそれら及び他の態様は、本明細書で記載される実施形態から明らかとなり、その実施形態を参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【００２２】
【図１】ブロックチェーンに関連したネットワークの例を表す。
【図２】入力バッファ及び出力バッファを備えたブロックチェーンノードの例を図式的に示す。
【図３】複数のノードのネットワークの例においてトランザクションの伝搬を表す。
【図４】複数のノードのネットワークにおけるトランザクションのリレーの例を表す。
【図５】ブロックチェーンネットワークにおいてデータパケットを伝搬するプロセスの例をフローチャート形式で示す。
【図５Ａ】本発明の実例となる実施形態に従ってリレーノードによって実行されるプロセスの例を示す。
【図６】ブロックチェーンネットワークにおいてデータパケットを伝搬するプロセスの他の例をフローチャート形式で示す。
【図７】ブロックチェーンノードの例をブロック図形式で示す。
【発明を実施するための形態】
【００２３】
本願において、語「及び／又は」（and/or）は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
【００２４】
本願において、「〜又は〜の少なくとも１つ」（at  least  one  of  …  or  …）との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素のうちの任意の１つ以上をカバーするよう意図される。
【００２５】
最初に図１を参照する。図１は、ブロックチェーンに関連するネットワークの例をブロック図形式で表す。ネットワークは、ブロックチェーンネットワーク１００と呼ばれ得る。ブロックチェーンネットワーク１００は、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制（open  membership）ネットワークである。ブロックチェーンネットワーク１００が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク１００に参加し得る。そのような分散した電子デバイスは、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【００２６】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【００２７】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実装され、ノード１０２の一部は、地理的に散開した位置に配置されてよい。
【００２８】
ノード１０２は、夫々がチェーン内の前のブロックのハッシュを含むブロックにグループ化されたブロックチェーン上の全てのトランザクションの大域的な台帳（global  ledger）を保持する。大域的な台帳は分散台帳（distributed  ledger）であり、各ノード１０２は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード１０２によるトランザクションは、大域的な台帳の妥当性が保たれるように、他のノード１０２によって検証される。ビットコインプロトコルを使用するもののような、ブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解されるだろう。
【００２９】
各トランザクションは、通常は、１つ以上の入力及び１つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであることができる。その値は、次いで、未使用トランザクション出力（unspent  transaction  output；ＵＴＸＯ）としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
【００３０】
ノード１０２は、ロバスト且つ安全な非中央集権型公開台帳を保持するために、ネットワークルーティングからウォレットサービスまでの多種多様な機能を満足することができる。“フルノード”（full  nodes）は、ブロックチェーンの完全且つ最新のコピーを含み、従って、公開台帳上の如何なるトランザクション（使用又は未使用）を検証することができる。“ライトウェイトノード”（lightweight  nodes）（又はＳＰＶ）は、ブロックチェーンのサブセットを保持し、“簡易支払い検証”（specified  payment  verification）技術を用いてトランザクションを検証することができる。ライトウェイトノードは、ブロックのヘッダのみをダウンロードし、各ブロック内のトランザクションはダウンロードしない。従って、このようなノードは、それらのトランザクションを検証するピアに依存する。“マイニングノード”（mining  nodes）は、フル又はライトウェイトノードであることができ、ブロックチェーン上でトランザクションを検証し且つ新しいブロックを生成することに関与する。“ウォレットノード”（wallet  nodes）は、通常はライトウェイトノードであり、ユーザのウォレットサービスを扱う。ノード１０２は、ＴＣＰ／ＩＰ（Transmission  Control  Protocol）などの接続指向のプロトコルを用いて互いに通信する。
【００３１】
ノードがトランザクションをピアへ送りたいとき、送信ノードに知られている１つ以上のインベントリオブジェクトを送信する“ＩＮＶＥＮＴＯＲＹ”メッセージがピアへ送られる。ピアが“ＧＥＴＤＡＴＡ”メッセージ、すなわちフルトランザクション要求により応答する場合に、トランザクションは“ＴＲＡＮＳＡＣＴＩＯＮ”メッセージを用いて送られる。トランザクションを受け取るノードは、それを同様にして、それが有効なトランザクションであると仮定して、そのピアへ転送する。
【００３２】
これより図２を参照する。図２は、入力バッファ２０２及び出力バッファ２０４を備えたノード２００の例を図式的に示す。例となるノード２００は、ＩｎｔＡ、ＩｎｔＢ、ＩｎｔＣ、ＩｎｔＤ、などとして参照される、複数のピアノードとのネットワークインターフェイスを備える。入力バッファ２０２は、様々なピアノードからの入来するトランザクションを示し、出力バッファ２０４は、各々のインターフェイスを介してピアノードへ送られる、トランザクションに対応する出力ネットワークパケットを示す。ネットワークパケットは、ノード２００のオペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで逐次送信及び受信される。トランザクションｘが単一のＥｔｈｅｒｎｅｔ（登録商標）／ＩＰパケットに適合するとすれば、ｍ個のピアへのその送信は、ｍ個の異なった出力ネットワークパケットのバッファリングを必要とする。入力及び出力の両方のネットワークパケットは、他の情報とともに、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤ及び直列化されたトランザクションを含む。
【００３３】
ビットコイントランザクションが生成されると、発信元ノードは、ネットワーク上でトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成する場合に、それは出力バッファ２０４に置かれる。トランザクションはピアへ直ちに転送されてもされなくてもよい。ビットコインネットワークの現在の実施では、トランザクションは、「拡散伝搬」（diffusion  propagation）として知られているメカニズムによって伝搬され、これによって、各トランザクション発信元は、独立した指数関数的遅延を有してトランザクションをその隣接ノードへ送信する。伝搬における遅延はランダムであり、悪意のある攻撃者に対して時間推定の不確かさを導入するのに有用である。ピアが特定のトランザクションを受け取ると、ピアは、同じトランザクションの将来のリレーを受け入れない。例えば、トランザクションハッシュはピアのメモリプールに格納されてよく、ピアが同一トランザクションを拒否することを可能にする。ネットワークを通じたトランザクションの“拡散”は対称である。すなわち、転送ノードは、トランザクションブロードキャストに影響を及ぼすように隣接ノードのＩＰアドレスに関する情報を使用しない。例えば、“標準の”拡散プロセス（ビットコインプロトコルで使用される）において、ブロードキャストするノードのピアは全て、同じトランザクションを受け取り、各リレーインスタンスで、一度にただ１つのトランザクションがピアごとにリレーされる。この“拡散”の対称性は、脱匿名化攻撃を行う際にネットワークのピア・ツー・ピアグラフ構造の知識を有している悪意のある第三者によって悪用される可能性がある。
【００３４】
本開示は、トラフィック解析攻撃に対する匿名性保護を改善するように、ブロックチェーンネットワーク上でのトランザクションリレーのための代替技術を提供する。より具体的には、提案されるリレープロトコルは、トランザクションの発信元ノードとそれらのＩＰアドレスとの間の接続を偽装するために使用されてよい。
【００３５】
本開示の１つの態様に従って、ブロックチェーンに基づくネットワーク内のノードは、ある期間にわたって新しいトランザクションをバッファリングして、そのピアノードへ伝搬されるべきトランザクションを蓄積する。次いで、ノードは、それらのピアノードの中の任意に選択されたサブセットに対して、バッファリング／蓄積されたトランザクションの異なる組を送信する。トランザクションは、このようにしてネットワークにわたって伝搬され、各受信側ノードは、その受信されたトランザクションをそれ自身のピアへリレーするモードを独立して選択する。
【００３６】
提案されるリレープロトコルである拡散ミキサプロトコル（Diffusion  Mixer  Protocol；ＤＭＰ）は、２つの独立した拡散段階を含む。第１段階（“ランダム差動リレー”）は、中継されたトランザクションの混合と、トランザクション発信元の難読化とを可能にする。ランダム差動リレー段階の間、各ノードは、そのピアからより多くのトランザクションを収集するために、トランザクションをネットワークへブロードキャストする前に、予め定義された時間量だけ待機する。次いで、ノードは、その“エントリノード”への出接続を形成し、それらのエントリノードの中の任意に（例えば、ランダムに）選択されたサブセットに対して、おおよそ同じタイムスタンプで、異なったトランザクションを送信する。ノードのエントリノードは、直接的な出接続がノードから確立され得るような隣接ノードである。エントリノードの選択のランダム性、及びリレーされるトランザクションの多様性は、ネットワークトポロジの再構成を攻撃者にとってより困難なものとし得る。
【００３７】
第２段階（“標準拡散”）は、ネットワーク内のトランザクションのタイムリな信頼できる伝搬を確かにする。標準拡散段階において、各ノードは、同じトランザクションを全てのそのエントリノードへリレーし、各リレーインスタンスにおいて、一度にただ１つのトランザクションがエントリノードごとにリレーされる。
【００３８】
ブロックチェーンネットワークなどの複数のノードのネットワークでは、複数のノードのうちの１つ以上はＤＭＰを実装可能であってよいことが留意されるべきである。具体的に、ネットワークの複数のノードのうちの１つ以上は、ＤＭＰにおいて伝搬することによって、その受信されたデータパケットをそのエントリノードへリレーすることが可能であってよい。参加ノードは、例えば、特定のデータパケットを伝搬するために、ランダム差動リレープロセスと標準拡散プロセスとの間で選択を行ってよい。ネットワークの複数のノードは、非中央集権的な方法により、あるいは、中央当局によってアセンブリされた参加ノードのグループへの加盟を通じてプロトコルに加わるように、ＤＭＰに参加することを選んでよい。参加ノードは、ＤＭＰに従って、その出力ネットワークパケットをリレーする。特に、参加ノードがデータパケットを受信する場合に、ノードは、ＤＭＰによって規定された規則を用いて、そのノードのために選択される伝搬のモードに従って、受信されたデータパケットを転送し得る。
【００３９】
トランザクションリレーのためのＤＭＰの図式的な視覚化は、図３で与えられている。複数のノードのブロックチェーンネットワーク３００が例示されている。各ノードは、ネットワーク端末（すなわち、ブロックチェーンノード）を表し、一方、エッジは、ノード間のリンクを表す。この例示のために、リンクごとに、一度に１つのビットを送信又は受信することが可能であると想定される。
【００４０】
この例となるネットワーク３００において、各ノードは、未確認の（unconfirmed）トランザクションのメモリプール（mempool）を保持しているので、ノードが新しいトランザクションを受け取る場合に、それはネットワークを通じて全ての他のノードへ伝搬される。各ノードは、新しいトランザクションを妥当性確認してそれらの各々のローカルメモリプールに格納し、そして、新しいトランザクションを、新しいトランザクションを未だ有していない如何なるピアノードへも転送すべきである。ブロックチェーンネットワーク３００のピア・ツー・ピア性質により、全てのノードは同時に新しいトランザクションを受信する。すなわち、新しいトランザクションがネットワーク３００内のすべてのノードに届くにはいくらかの時間を要する。例えば、ビットコインネットワークの現在の実施では、新しい有効なトランザクションは、ビットコインネットワークの９０％のノードに届くために平均３．５秒を要する。
【００４１】
図３は、特定のトランザクションＴｘ１を伝搬するためのＤＭＰの２つの段階、すなわち、ランダム差動リレー伝搬３０２及びＴｘ１のための標準拡散３０４を表す。トランザクションＴｘ１の発信元ノード３１０は、時間ｔ１で、トランザクションＴｘ１を生成するか、あるいは、それをピアノードから受信してよい。ＤＭＰに従って、発信元ノード３１０は、受信された／待機中のトランザクションのブロードキャストを開始する前に、その隣接ノードから少なくとも１つの入来トランザクションを受信するのを待つ。図３の例では、トランザクションＴｘ２が発信元ノード３１０によって受け取られると、トランザクションＴｘ１及びＴｘ２は、発信元ノード３１０のエントリノードの中の任意に選択されたサブセットへ送られる。トランザクションＴｘ１はエントリノード３１０ｃ及び３１０ｄへ転送され、一方、トランザクションＴｘ２はエントリノード３１０ａ及び３１０ｂへ転送される。図３の例は単なる例示であり、特に、発信元ノード３１０は、その受信されたトランザクションのいずれかを伝搬する前に、２つ以上の入来トランザクションを受信するのを待つ。
【００４２】
エントリノードは、受信されたトランザクションをそれら自身のピアへリレーする。例えば、ノード３１０ｂ及び３１０ｄは、夫々トランザクションＴｘ２及びＴｘ１をそれらの隣接ノードのうちの１つ以上へ転送する。ＤＭＰでは、トランザクションの各受け手は、受信されたトランザクションの伝搬のモードを独立して選択する。ノード３２０は、その拡散モードとして標準拡散を選択するノードの一例である。図３に示されるように、ノード３２０は、同じトランザクションＴｘ１を全てのそのエントリノード、すなわち、３２０ａ、３２０ｂ、３２０ｃ、３２０ｄ及び３２０ｅへ転送する。
【００４３】
これより、図５を参照する。図５は、ネットワークにおいてデータパケットを伝搬するプロセス５００の例をフローチャート形式で示す。プロセス５００は、例えば、ネットワーク１００のようなブロックチェーンネットワークのノードによって実装される。ノードは、本文脈中、マイニングノード、フルノード、バリデータ（validator）ノード、又はブロックチェーンネットワーク内の他のタイプの個別ブロックチェーンノードを指すと理解され得る。ノードは、ブロックチェーンプロトコルを実装するネットワーク接続、計算資源、及び実行ソフトウェアを備えたコンピュータデバイスである。
【００４４】
動作５０２で、ノードに関連したクライアントは、第１タイプの少なくとも１つのデータパケットを生成する。ブロックチェーンネットワークに関連して、第１タイプのデータパケットはブロックチェーントランザクションを含んでよい。すなわち、クライアントは、ネットワークの他のノードへ伝搬されるべきブロックチェーントランザクションを生成してよい。
【００４５】
動作５０４で、ノードは、第１期間Ｔの間に第１タイプのデータパケットの組を収集する。すなわち、ノードは、ある期間にわたって第１タイプのデータパケットを蓄積する。組は、少なくとも１つの生成されたデータパケットと、ネットワーク内の１つ以上のピアノードから受信される第１タイプの少なくとも１つのデータパケットとを含む。このようにして、ノードによって生成されたデータパケットは、隣接ノードから受信される同じタイプのデータパケットと混合される。ブロックチェーンネットワークでは、期間Ｔの間、ノードは、リレーされるべき入来トランザクションについてネットワークをモニタすることによって、トランザクションの組を蓄積する。期間Ｔの長さΔｔは、予め定義されてよい。いくつかの実施例では、時間の長さは、平均接続時間、単位時間ごとに受信されるトランザクションの平均数、又はネットワーク内のノードの中心性（すなわち、ノードへの入来接続の数）といったパラメータに基づいて変化し得る。期間Ｔの間、ノードは、第１タイプのデータパケットを蓄積することしか認められ得ないので、期間Ｔの存続期間に第１タイプの如何なるデータパケットも送信することを阻止され得る。
【００４６】
動作５０６で、ノードは、収集されたデータパケットの異なる組が転送されることになるそのエントリノードのサブセットを任意に選択する。より具体的には、収集されたデータパケットの組に含まれる各データパケットについて、ノードは、そのエントリノード（すなわち、ノードが出接続を有している隣接ノード）のうちの２つ以上を任意に選択し、選択されたエントリノードへデータパケットを割り当てる。例えば、エントリノードはランダムに選択されてよい。ノードは、いくつかの実施で、そのピアの新しいアドレスを得るようにネットワークに問い合わせてよい。ビットコインネットワークでは、ノードは、ビットコイン・コア（Bitcoin  Core）、ビットコイン・ジェイ（BitcoinJ）、又は他のブロックチェーンプロトコルに組み込まれ、ビットコイン（又は他のブロックチェーン）コミュニティメンバーによって保持されている１つ以上のデータベースソース名（database  source  names；ＤＳＮ）をクエリしてもよい。応答として、ノードは、入来接続を受け入れ得る利用可能なフルノードのＩＰアドレスを示す１つ以上のＤＳＮレコードを得る。ピア検出の非中央集権的なバージョンは、ピアに、それらのＩＰアドレス及びポート番号を含む“ＡＤＤＲ”メッセージを、ネットワークに参加する新しいノードへ送らせることによって、実装され得る。
【００４７】
いくつかの実施で、動作５０６の部分として、ネットワーク内のノードの１つ以上は、データパケットが中継されるべきであるエントリノードへの夫々の収集されたデータパケットのその割り当てを追跡するテーブル又は他のデータ構造を保持し得る。図４は、ブロックチェーンネットワークにおけるＤＭＰのランダム差動伝搬段階にある発信元ノード４１０についてのトランザクションリレーの例を示す。表１は、発信元ノード４１０のエントリノードへの収集されたトランザクションＴｘ１〜Ｔｘ５の割り当ての例である。エントリノードは、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ及びＨとして示されている。図４及び表１に示されるように、発信元ノード４１０は、各トランザクションを少なくとも２つのエントリノードへリレーし、多数のトランザクションが同じノードを介してリレーされ得る。例えば、トランザクションＴｘ３、Ｔｘ４及びＴｘ５は全て同時にエントリノードＥを介してリレーされる。より一般的に、ランダム差動伝搬プロセスでは、多数のデータパケットが同時に転送ノードによって同じピアノードへリレーされ得る。ＤＭＰの所与のインスタンスにおいて、全てのエントリノードが発信元ノード４１０からトランザクションを受信するわけではない。表１の例では、エントリノードＣ及びＧは、発信元ノード４１０からいかなるトランザクションも受信しない。
【表１】
2021504783.tif 000003
【００４８】
再び図５を参照すると、夫々の収集されたデータパケットについて、動作５０８で、ノードは、（任意に又はランダムに）選択されたエントリノードの夫々へデータパケットを送信する。夫々の選択されたエントリノードは、そのエントリノードのためにランダムに選択されるデータ伝搬のモードを用いてネットワーク内の１つ以上の第２ノードへデータパケットをリレーするよう構成される。すなわち、夫々の選択されたエントリノードは、そのエントリノードのために独立して選択される伝搬モードを用いて、受信されたデータパケットをそれ自身のピアの１つ以上へ転送する。図４の例となるトランザクションリレーでは、トランザクションＴｘ１〜Ｔｘ５の夫々は、そのトランザクションが割り当てられているエントリノードへ転送される。いくつかの実施で、動作５０８の部分として、ノードは、ランダムに選択された伝搬モードを用いてデータパケットを転送するために、選択されたエントリノード（すなわち、受信側ノード）に対して、データパケットとともに、エクスプレス（express）コマンドを送信してもよい。
【００４９】
次いで、発信元ノード４１０からトランザクションを受信する各ノードは、受信されたトランザクションを（もしあれば）そのピアノードへ転送する際に使用するための伝搬／拡散のモードをランダムに選択する。特に、トランザクションを受信するエントリノードは、標準拡散プロセス又はランダム差動伝搬プロセスに従ってトランザクションをリレーすることをランダムに選択する。２つの選択肢の間の選択はランダムである。よって、ＤＭＰでは、２つの拡散プロセスは、確率的に交互に起こる。すなわち、ランダム差動伝搬段階と標準拡散段階との間に明確な分離はない。拡散プロセスのこの“混合”の結果として、攻撃者が、ノードの組がランダムデータ伝搬を介して又は標準拡散を介してリレーすることの間の分離を特定することに基づいて、ネットワークのトポロジを再構成することは、より困難になる。
【００５０】
いくつかの実施で、拡散モードのエントリノードによるランダムな選択は、発信元ノードから、リレーされるデータパケットに加えてメッセージを受信することを含んでよい。次いで、エントリノードは、ランダムな値（例えば、乱数）を生成し、それを受信されたメッセージに付け加え、結果を、例えば、ＳＨＡ−２５６を用いて、ハッシングしてよい。次いで、エントリノードは、ハッシュ値をチェックし、その後に、ハッシュ値に関する所定の規則に基づいて拡散モードを求めることができる（例えば、ハッシュの最後の文字がアラビア数字である場合には、ランダム差動伝搬を拡散のモードとして選択する）。代替的に、又は追加的に、拡散モードの選択は、何らかのランダム化されたプロセス（例えば、乱数発生器）を用いて行われ得る。このとき、モードの一方を選択する確率は、入来及び／又は出接続の数、単位時間ごとに受信されるデータパケットの平均数、などのような因子に応じて、モードの他方を選択する確率よりも高くなり得る。
【００５１】
特定のデータパケットを伝搬することにおいて、伝搬ノードの匿名性保護のレベルを伝搬の全体の速度と釣り合わせることが望ましいことがある。一定レベルの匿名性を確かにするための手段が扱いにくすぎる（例えば、必要なネットワーク資源が多すぎる、ネットワークノードがデータパケットをリレーする際に意図的に十分に活用されていない、など）場合に、データをタイムリに拡散することにおけるネットワークの効能は損なわれることがある。従って、いくつかの実施で、リレーノードによる伝搬のモードのランダムな選択は、重み付けされてよい。特に、確率がデータ伝搬の速度及び匿名性の比例した有意性を反映するように、２つ以上の伝搬モード（すなわち、ランダム差動伝搬、標準拡散、など）の夫々に対して異なる確率が割り当てられてよい。例えば、より高い、予め定義された確率は、伝搬されるデータの匿名性を保つことに対する比例してより大きい重要視を反映するように、特定のネットワークのデータのためのランダム差動伝搬モードと関連付けられてよい。
【００５２】
図５の方法５００は、第１タイプのそれ自身のデータパケットを生成するノードによって実装される。特に、ＤＭＰに参加し、残りのネットワークへの伝搬のためにデータパケットを生成するノードが、方法５００を実行する。図５Ａは、リレーノード、すなわち、別のノードによって生成されるデータパケットを転送するノード、によって実行されるプロセスの例を示す。すなわち、リレーノードは、特定のデータパケットのリレー中に転送すべきデータをそれ自身は生成せず、単にデータパケットを“リレーする”機能を提供するノードである。動作５５０で、リレーノードは、それ自身のデータ伝搬モードを独立して選択する。リレーノードは、例えば、ランダム差動伝搬モードと標準拡散モードとの間で選択を行ってよい。動作５５２で、標準拡散モードが選択される場合に、リレーノードは、動作５５４で、そのエントリノードの全てへデータパケットを転送する。図５Ａの例では、伝搬モードの選択は、２つのとり得る選択肢の間である。この例は、制限ではなく、他の例では、３つ以上のとり得る伝搬モードが存在してもよい。方法５００で、選択されたモードがランダム差動伝搬である場合に、リレーノードは、図５の動作５０４、５０６及び５０８に対応するステップ５５６、５５８及び５６０を実行する。
【００５３】
これより、図６を参照する。図６は、ネットワークにおいてデータパケットを伝搬するプロセス６００の例をフローチャート形式で示す。プロセス６００は、ブロックチェーンネットワークの他のノードへの複数の入来及び出接続を有しているブロックチェーンノードで実装されてよい。
【００５４】
プロセス６００の動作６０２、６０４、６０６、及び６１０は、夫々、プロセス５００の動作５０２、５０４、５０６、及び５０８に対応する。動作６０８で、ノードは、収集されたデータパケットを動作６１０でその割り当てられたエントリノードへ送信する前に、トリガ条件が満足されているかどうかを決定する。特に、データパケットの送信は、適切なトリガ条件が満足されているとの検出に応答して、実行される。トリガ条件が満足されていない場合には、ノードは、前記のデータパケットのいずれもそのエントリ／ピアノードへリレーせずに、第１タイプのデータパケットを収集し続ける。
【００５５】
トリガ条件は、十分な数の入来データを収集するように及び／又は十分な量の時間に入来データパケットを収集するようにノードに指示するために用いられてよい。複数の入来データパケットを、例えば、それらをネットワーク内のピアノードへ同時に伝搬する前に、収集することによって、ノードから発せられるリレートラフィックをモニタする攻撃者は、リレーされるデータパケットの正確な発信元としてノードを容易に識別することができなくなる。
【００５６】
いくつかの実施で、トリガ条件は、動作６０２でのノードによる第１タイプの少なくとも１つのデータパケットの生成の時点からの所定の存続期間の経過であってよい。すなわち、ノードは、入来するデータパケット（例えば、トランザクション）を、それらのデータパケットのいずれもノードによって伝搬される前に、ノードが同じタイプのデータパケットを生成するときに開始する所定の期間にモニタ及び収集するよう設計されてよい。この条件は、ノードによって生成されるデータパケットが、同時にブロードキャストされ得る同じタイプの更なるデータパケットを収集した後に伝搬されることを確かにしようと試みる際に有用であることができ、それによって、攻撃者が、ノードを、生成されたデータパケットの発信元として正確に識別することを困難にする。
【００５７】
いくつかの実施で、トリガ条件は、ノードのピアからの第１タイプの少なくとも１つの入来データパケットの最初の受信の時点からの所定の存続期間の経過であってよい。すなわち、ノードは、入来するデータパケットを、そのような入来するデータパケットの最初が受信されるときに開始する所定の期間にモニタ及び収集するよう設計されてよい。この条件は、ノード自体によって生成されるか又は他のピアから受信されるいずれのデータパケットにせよ、より多くのデータパケットが、残りのネットワークへの如何なるブロードキャストよりも前にノードによって収集されることを確かにしようと試みる際に有用であることができる。
【００５８】
いくつかの実施で、トリガ条件は、第１期間中の収集されたデータの数が閾数に達することであってよい。特に、ノードは、第１期間の経過、又は所定の閾数のデータパケットがノードによって収集されること、のいずれか早い方まで、入来するデータパケットをモニタ及び収集するよう設計されてよい。
【００５９】
これより図７を参照する。図７は、参加ノード７００の簡略化された例をブロック図形式で示す。ノード７００はプロセッサ７０２を含む。プロセッサ７０２は、１つ以上のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理デバイスを含んでよい。ノード７００は、値、変数、及びいくつかの場合に、プロセッサ実行可能プログラム命令を記憶するための、永久及び非永久メモリを含み得るメモリ７０６と、有線又は無線ネットワーク上でネットワークコネクティビティを提供するネットワークインターフェイス７０４とを更に含む。
【００６０】
ノード７００は、実行される場合に、プロセッサ７０２に、本明細書で記載される機能又は動作の１つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション７０８を含む。
【００６１】
本明細書で記載されるデバイス及びプロセス、並びにブロックチェーンノードを構成するために、記載される方法／プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準のコンピュータプログラミング技術及び言語により実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミングコンベンション、データ構造、又は他のそのような実施詳細に制限されない。
【００６２】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」（comprising及びcomprises）などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」（comprises）は、「〜を含むか、又はそれらから成る」（includes  or  consists  of）を意味し、「有する」（comprising）は、「〜を含むか、又はそれらから成る」（including  or  consisting  of）を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【図１】
2021504783.tif 000004
【図２】
2021504783.tif 000005
【図３】
2021504783.tif 000006
【図４】
2021504783.tif 000007
【図５】
2021504783.tif 000008
【図５Ａ】
2021504783.tif 000009
【図６】
2021504783.tif 000010
【図７】
2021504783.tif 000011
【国際調査報告】
2021504783.tif 000012
2021504783.tif 000013