従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
本願は、複数のノードのネットワークにおいてデータを伝えるノードについて記載する。ネットワーク内の各ノードは、他のノードへの1以上の接続を有してよい。ノードは、プロセッサと、ネットワークコネクティビティを提供するネットワークインターフェイスと、メモリとを含む。メモリは、プロセッサによって実行される場合に、プロセッサに、第1タイプの少なくとも1つのデータパケットを生成することと、第1期間中に、少なくとも1つの生成されたデータパケットと、ネットワーク内の1つ以上の第1ノードから受信された第1タイプの少なくとも1つのデータパケットとを望ましくは含む第1タイプのデータパケットの組を収集することと、その組に含まれる各データパケットについて、ノードへ接続されている2つ以上の隣接ノードを任意に選択し、2つ以上の選択された隣接ノードの夫々へデータパケットを送信することとを実行させるプロセッサ実行可能命令を含んでよく、2つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いてネットワーク内の1つ以上の第2ノードへデータパケットをリレーするよう構成されてよい。
いくつかの実施で、第1期間は、予め定義された長さを有する。
いくつかの実施で、命令は、実行される場合に、プロセッサに、トリガ条件が満足されているとの決定に応答して、送信することを実行させる。
いくつかの実施で、トリガ条件は、ノードによる第1タイプの少なくとも1つのデータパケットの生成の時点からの所定の存続期間の経過を有する。
いくつかの実施で、トリガ条件は、1つ以上の第1ノードからの第1タイプの前記少なくとも1つのデータパケットの最初の受信の時点からの所定の存続期間の経過を有する。
いくつかの実施で、隣接ノードのデータ伝搬のモードは、第1モードと第2モードとの間で任意に選択され、第1モードで、データパケットは、隣接ノードへ接続されるノードの任意に選択されたサブセットへリレーされ、第2モードで、データパケットは、隣接ノードへ接続される全てのノードへリレーされる。
いくつかの実施で、命令は、実行される場合に、プロセッサが第1期間中に第1タイプの如何なるデータパケットも送信しないようにする。
本願は、複数のノードのネットワークにおいてデータを伝える、コンピュータにより実施される方法を提供することとして記載されることがある。ネットワーク内の各ノードは、他のノードへの1以上の接続を有してよい。方法は、複数のノードのうちの1つで実施されてよく、第1タイプの少なくとも1つのデータパケットを生成することと、第1期間中に、少なくとも1つの生成されたデータパケットと、ネットワーク内の1つ以上の第1ノードから受信された第1タイプの少なくとも1つのデータパケットとを望ましくは含む第1タイプのデータパケットの組を収集することと、その組に含まれる各データパケットについて、複数のノードのうちの当該1つへ接続されている2つ以上の隣接ノードを任意に選択し、2つ以上の選択された隣接ノードの夫々へデータパケットを送信することとを含んでよく、2つ以上の選択された隣接ノードは、その隣接ノードに対してランダムに選択されるデータ伝搬のノードを用いてネットワーク内の1つ以上の第2ノードへデータパケットをリレーするよう構成される。
本願は、複数のノードのネットワークにおいてデータパケットを伝えるプロセスに参加するためのプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体について更に記載することがある。プロセッサ実行可能命令は、プロセスに参加しているノードのうちの1つにおいてプロセッサによって実行される場合に、プロセッサに、本明細書で記載される方法の1つ以上の動作を実行させる。
本明細書で記載される実施例の多くにおいて、ブロックチェーントランザクションが具体的に参照されるが、明らかなように、本明細書で記載される方法及びデバイスは、非ブロックチェーントランザクションの伝搬に関連して実装及び適用されてよい。より一般的には、本開示で記載される方法及びデバイスは、ピア・ツー・ピアネットワークのノードの間でデータを伝搬する際の使用に適し得る。
本発明の1つの態様又は実施形態に関して記載される如何なる特徴も、1つ以上の他の態様/実施形態に対して使用されてもよい。本発明のそれら及び他の態様は、本明細書で記載される実施形態から明らかとなり、その実施形態を参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
本願において、語「及び/又は」(and/or)は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
本願において、「〜又は〜の少なくとも1つ」(at least one of … or …)との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素のうちの任意の1つ以上をカバーするよう意図される。
最初に図1を参照する。図1は、ブロックチェーンに関連するネットワークの例をブロック図形式で表す。ネットワークは、ブロックチェーンネットワーク100と呼ばれ得る。ブロックチェーンネットワーク100は、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制(open membership)ネットワークである。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク100に参加し得る。そのような分散した電子デバイスは、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク100は、少なくとも部分的にインターネット上で実装され、ノード102の一部は、地理的に散開した位置に配置されてよい。
ノード102は、夫々がチェーン内の前のブロックのハッシュを含むブロックにグループ化されたブロックチェーン上の全てのトランザクションの大域的な台帳(global ledger)を保持する。大域的な台帳は分散台帳(distributed ledger)であり、各ノード102は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード102によるトランザクションは、大域的な台帳の妥当性が保たれるように、他のノード102によって検証される。ビットコインプロトコルを使用するもののような、ブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解されるだろう。
各トランザクションは、通常は、1つ以上の入力及び1つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであることができる。その値は、次いで、未使用トランザクション出力(unspent transaction output;UTXO)としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
ノード102は、ロバスト且つ安全な非中央集権型公開台帳を保持するために、ネットワークルーティングからウォレットサービスまでの多種多様な機能を満足することができる。“フルノード”(full nodes)は、ブロックチェーンの完全且つ最新のコピーを含み、従って、公開台帳上の如何なるトランザクション(使用又は未使用)を検証することができる。“ライトウェイトノード”(lightweight nodes)(又はSPV)は、ブロックチェーンのサブセットを保持し、“簡易支払い検証”(specified payment verification)技術を用いてトランザクションを検証することができる。ライトウェイトノードは、ブロックのヘッダのみをダウンロードし、各ブロック内のトランザクションはダウンロードしない。従って、このようなノードは、それらのトランザクションを検証するピアに依存する。“マイニングノード”(mining nodes)は、フル又はライトウェイトノードであることができ、ブロックチェーン上でトランザクションを検証し且つ新しいブロックを生成することに関与する。“ウォレットノード”(wallet nodes)は、通常はライトウェイトノードであり、ユーザのウォレットサービスを扱う。ノード102は、TCP/IP(Transmission Control Protocol)などの接続指向のプロトコルを用いて互いに通信する。
ノードがトランザクションをピアへ送りたいとき、送信ノードに知られている1つ以上のインベントリオブジェクトを送信する“INVENTORY”メッセージがピアへ送られる。ピアが“GETDATA”メッセージ、すなわちフルトランザクション要求により応答する場合に、トランザクションは“TRANSACTION”メッセージを用いて送られる。トランザクションを受け取るノードは、それを同様にして、それが有効なトランザクションであると仮定して、そのピアへ転送する。
これより図2を参照する。図2は、入力バッファ202及び出力バッファ204を備えたノード200の例を図式的に示す。例となるノード200は、IntA、IntB、IntC、IntD、などとして参照される、複数のピアノードとのネットワークインターフェイスを備える。入力バッファ202は、様々なピアノードからの入来するトランザクションを示し、出力バッファ204は、各々のインターフェイスを介してピアノードへ送られる、トランザクションに対応する出力ネットワークパケットを示す。ネットワークパケットは、ノード200のオペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで逐次送信及び受信される。トランザクションxが単一のEthernet(登録商標)/IPパケットに適合するとすれば、m個のピアへのその送信は、m個の異なった出力ネットワークパケットのバッファリングを必要とする。入力及び出力の両方のネットワークパケットは、他の情報とともに、送信/受信ピアへのTCP/IP接続を表す論理インターフェイスID及び直列化されたトランザクションを含む。
ビットコイントランザクションが生成されると、発信元ノードは、ネットワーク上でトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成する場合に、それは出力バッファ204に置かれる。トランザクションはピアへ直ちに転送されてもされなくてもよい。ビットコインネットワークの現在の実施では、トランザクションは、「拡散伝搬」(diffusion propagation)として知られているメカニズムによって伝搬され、これによって、各トランザクション発信元は、独立した指数関数的遅延を有してトランザクションをその隣接ノードへ送信する。伝搬における遅延はランダムであり、悪意のある攻撃者に対して時間推定の不確かさを導入するのに有用である。ピアが特定のトランザクションを受け取ると、ピアは、同じトランザクションの将来のリレーを受け入れない。例えば、トランザクションハッシュはピアのメモリプールに格納されてよく、ピアが同一トランザクションを拒否することを可能にする。ネットワークを通じたトランザクションの“拡散”は対称である。すなわち、転送ノードは、トランザクションブロードキャストに影響を及ぼすように隣接ノードのIPアドレスに関する情報を使用しない。例えば、“標準の”拡散プロセス(ビットコインプロトコルで使用される)において、ブロードキャストするノードのピアは全て、同じトランザクションを受け取り、各リレーインスタンスで、一度にただ1つのトランザクションがピアごとにリレーされる。この“拡散”の対称性は、脱匿名化攻撃を行う際にネットワークのピア・ツー・ピアグラフ構造の知識を有している悪意のある第三者によって悪用される可能性がある。
本開示は、トラフィック解析攻撃に対する匿名性保護を改善するように、ブロックチェーンネットワーク上でのトランザクションリレーのための代替技術を提供する。より具体的には、提案されるリレープロトコルは、トランザクションの発信元ノードとそれらのIPアドレスとの間の接続を偽装するために使用されてよい。
本開示の1つの態様に従って、ブロックチェーンに基づくネットワーク内のノードは、ある期間にわたって新しいトランザクションをバッファリングして、そのピアノードへ伝搬されるべきトランザクションを蓄積する。次いで、ノードは、それらのピアノードの中の任意に選択されたサブセットに対して、バッファリング/蓄積されたトランザクションの異なる組を送信する。トランザクションは、このようにしてネットワークにわたって伝搬され、各受信側ノードは、その受信されたトランザクションをそれ自身のピアへリレーするモードを独立して選択する。
提案されるリレープロトコルである拡散ミキサプロトコル(Diffusion Mixer Protocol;DMP)は、2つの独立した拡散段階を含む。第1段階(“ランダム差動リレー”)は、中継されたトランザクションの混合と、トランザクション発信元の難読化とを可能にする。ランダム差動リレー段階の間、各ノードは、そのピアからより多くのトランザクションを収集するために、トランザクションをネットワークへブロードキャストする前に、予め定義された時間量だけ待機する。次いで、ノードは、その“エントリノード”への出接続を形成し、それらのエントリノードの中の任意に(例えば、ランダムに)選択されたサブセットに対して、おおよそ同じタイムスタンプで、異なったトランザクションを送信する。ノードのエントリノードは、直接的な出接続がノードから確立され得るような隣接ノードである。エントリノードの選択のランダム性、及びリレーされるトランザクションの多様性は、ネットワークトポロジの再構成を攻撃者にとってより困難なものとし得る。
第2段階(“標準拡散”)は、ネットワーク内のトランザクションのタイムリな信頼できる伝搬を確かにする。標準拡散段階において、各ノードは、同じトランザクションを全てのそのエントリノードへリレーし、各リレーインスタンスにおいて、一度にただ1つのトランザクションがエントリノードごとにリレーされる。
ブロックチェーンネットワークなどの複数のノードのネットワークでは、複数のノードのうちの1つ以上はDMPを実装可能であってよいことが留意されるべきである。具体的に、ネットワークの複数のノードのうちの1つ以上は、DMPにおいて伝搬することによって、その受信されたデータパケットをそのエントリノードへリレーすることが可能であってよい。参加ノードは、例えば、特定のデータパケットを伝搬するために、ランダム差動リレープロセスと標準拡散プロセスとの間で選択を行ってよい。ネットワークの複数のノードは、非中央集権的な方法により、あるいは、中央当局によってアセンブリされた参加ノードのグループへの加盟を通じてプロトコルに加わるように、DMPに参加することを選んでよい。参加ノードは、DMPに従って、その出力ネットワークパケットをリレーする。特に、参加ノードがデータパケットを受信する場合に、ノードは、DMPによって規定された規則を用いて、そのノードのために選択される伝搬のモードに従って、受信されたデータパケットを転送し得る。
トランザクションリレーのためのDMPの図式的な視覚化は、図3で与えられている。複数のノードのブロックチェーンネットワーク300が例示されている。各ノードは、ネットワーク端末(すなわち、ブロックチェーンノード)を表し、一方、エッジは、ノード間のリンクを表す。この例示のために、リンクごとに、一度に1つのビットを送信又は受信することが可能であると想定される。
この例となるネットワーク300において、各ノードは、未確認の(unconfirmed)トランザクションのメモリプール(mempool)を保持しているので、ノードが新しいトランザクションを受け取る場合に、それはネットワークを通じて全ての他のノードへ伝搬される。各ノードは、新しいトランザクションを妥当性確認してそれらの各々のローカルメモリプールに格納し、そして、新しいトランザクションを、新しいトランザクションを未だ有していない如何なるピアノードへも転送すべきである。ブロックチェーンネットワーク300のピア・ツー・ピア性質により、全てのノードは同時に新しいトランザクションを受信する。すなわち、新しいトランザクションがネットワーク300内のすべてのノードに届くにはいくらかの時間を要する。例えば、ビットコインネットワークの現在の実施では、新しい有効なトランザクションは、ビットコインネットワークの90%のノードに届くために平均3.5秒を要する。
図3は、特定のトランザクションTx1を伝搬するためのDMPの2つの段階、すなわち、ランダム差動リレー伝搬302及びTx1のための標準拡散304を表す。トランザクションTx1の発信元ノード310は、時間t1で、トランザクションTx1を生成するか、あるいは、それをピアノードから受信してよい。DMPに従って、発信元ノード310は、受信された/待機中のトランザクションのブロードキャストを開始する前に、その隣接ノードから少なくとも1つの入来トランザクションを受信するのを待つ。図3の例では、トランザクションTx2が発信元ノード310によって受け取られると、トランザクションTx1及びTx2は、発信元ノード310のエントリノードの中の任意に選択されたサブセットへ送られる。トランザクションTx1はエントリノード310c及び310dへ転送され、一方、トランザクションTx2はエントリノード310a及び310bへ転送される。図3の例は単なる例示であり、特に、発信元ノード310は、その受信されたトランザクションのいずれかを伝搬する前に、2つ以上の入来トランザクションを受信するのを待つ。
エントリノードは、受信されたトランザクションをそれら自身のピアへリレーする。例えば、ノード310b及び310dは、夫々トランザクションTx2及びTx1をそれらの隣接ノードのうちの1つ以上へ転送する。DMPでは、トランザクションの各受け手は、受信されたトランザクションの伝搬のモードを独立して選択する。ノード320は、その拡散モードとして標準拡散を選択するノードの一例である。図3に示されるように、ノード320は、同じトランザクションTx1を全てのそのエントリノード、すなわち、320a、320b、320c、320d及び320eへ転送する。
これより、図5を参照する。図5は、ネットワークにおいてデータパケットを伝搬するプロセス500の例をフローチャート形式で示す。プロセス500は、例えば、ネットワーク100のようなブロックチェーンネットワークのノードによって実装される。ノードは、本文脈中、マイニングノード、フルノード、バリデータ(validator)ノード、又はブロックチェーンネットワーク内の他のタイプの個別ブロックチェーンノードを指すと理解され得る。ノードは、ブロックチェーンプロトコルを実装するネットワーク接続、計算資源、及び実行ソフトウェアを備えたコンピュータデバイスである。
動作502で、ノードに関連したクライアントは、第1タイプの少なくとも1つのデータパケットを生成する。ブロックチェーンネットワークに関連して、第1タイプのデータパケットはブロックチェーントランザクションを含んでよい。すなわち、クライアントは、ネットワークの他のノードへ伝搬されるべきブロックチェーントランザクションを生成してよい。
動作504で、ノードは、第1期間Tの間に第1タイプのデータパケットの組を収集する。すなわち、ノードは、ある期間にわたって第1タイプのデータパケットを蓄積する。組は、少なくとも1つの生成されたデータパケットと、ネットワーク内の1つ以上のピアノードから受信される第1タイプの少なくとも1つのデータパケットとを含む。このようにして、ノードによって生成されたデータパケットは、隣接ノードから受信される同じタイプのデータパケットと混合される。ブロックチェーンネットワークでは、期間Tの間、ノードは、リレーされるべき入来トランザクションについてネットワークをモニタすることによって、トランザクションの組を蓄積する。期間Tの長さΔtは、予め定義されてよい。いくつかの実施例では、時間の長さは、平均接続時間、単位時間ごとに受信されるトランザクションの平均数、又はネットワーク内のノードの中心性(すなわち、ノードへの入来接続の数)といったパラメータに基づいて変化し得る。期間Tの間、ノードは、第1タイプのデータパケットを蓄積することしか認められ得ないので、期間Tの存続期間に第1タイプの如何なるデータパケットも送信することを阻止され得る。
動作506で、ノードは、収集されたデータパケットの異なる組が転送されることになるそのエントリノードのサブセットを任意に選択する。より具体的には、収集されたデータパケットの組に含まれる各データパケットについて、ノードは、そのエントリノード(すなわち、ノードが出接続を有している隣接ノード)のうちの2つ以上を任意に選択し、選択されたエントリノードへデータパケットを割り当てる。例えば、エントリノードはランダムに選択されてよい。ノードは、いくつかの実施で、そのピアの新しいアドレスを得るようにネットワークに問い合わせてよい。ビットコインネットワークでは、ノードは、ビットコイン・コア(Bitcoin Core)、ビットコイン・ジェイ(BitcoinJ)、又は他のブロックチェーンプロトコルに組み込まれ、ビットコイン(又は他のブロックチェーン)コミュニティメンバーによって保持されている1つ以上のデータベースソース名(database source names;DSN)をクエリしてもよい。応答として、ノードは、入来接続を受け入れ得る利用可能なフルノードのIPアドレスを示す1つ以上のDSNレコードを得る。ピア検出の非中央集権的なバージョンは、ピアに、それらのIPアドレス及びポート番号を含む“ADDR”メッセージを、ネットワークに参加する新しいノードへ送らせることによって、実装され得る。
いくつかの実施で、動作506の部分として、ネットワーク内のノードの1つ以上は、データパケットが中継されるべきであるエントリノードへの夫々の収集されたデータパケットのその割り当てを追跡するテーブル又は他のデータ構造を保持し得る。図4は、ブロックチェーンネットワークにおけるDMPのランダム差動伝搬段階にある発信元ノード410についてのトランザクションリレーの例を示す。表1は、発信元ノード410のエントリノードへの収集されたトランザクションTx1〜Tx5の割り当ての例である。エントリノードは、ノードA、B、C、D、E、F、G及びHとして示されている。図4及び表1に示されるように、発信元ノード410は、各トランザクションを少なくとも2つのエントリノードへリレーし、多数のトランザクションが同じノードを介してリレーされ得る。例えば、トランザクションTx3、Tx4及びTx5は全て同時にエントリノードEを介してリレーされる。より一般的に、ランダム差動伝搬プロセスでは、多数のデータパケットが同時に転送ノードによって同じピアノードへリレーされ得る。DMPの所与のインスタンスにおいて、全てのエントリノードが発信元ノード410からトランザクションを受信するわけではない。表1の例では、エントリノードC及びGは、発信元ノード410からいかなるトランザクションも受信しない。
再び図5を参照すると、夫々の収集されたデータパケットについて、動作508で、ノードは、(任意に又はランダムに)選択されたエントリノードの夫々へデータパケットを送信する。夫々の選択されたエントリノードは、そのエントリノードのためにランダムに選択されるデータ伝搬のモードを用いてネットワーク内の1つ以上の第2ノードへデータパケットをリレーするよう構成される。すなわち、夫々の選択されたエントリノードは、そのエントリノードのために独立して選択される伝搬モードを用いて、受信されたデータパケットをそれ自身のピアの1つ以上へ転送する。図4の例となるトランザクションリレーでは、トランザクションTx1〜Tx5の夫々は、そのトランザクションが割り当てられているエントリノードへ転送される。いくつかの実施で、動作508の部分として、ノードは、ランダムに選択された伝搬モードを用いてデータパケットを転送するために、選択されたエントリノード(すなわち、受信側ノード)に対して、データパケットとともに、エクスプレス(express)コマンドを送信してもよい。
次いで、発信元ノード410からトランザクションを受信する各ノードは、受信されたトランザクションを(もしあれば)そのピアノードへ転送する際に使用するための伝搬/拡散のモードをランダムに選択する。特に、トランザクションを受信するエントリノードは、標準拡散プロセス又はランダム差動伝搬プロセスに従ってトランザクションをリレーすることをランダムに選択する。2つの選択肢の間の選択はランダムである。よって、DMPでは、2つの拡散プロセスは、確率的に交互に起こる。すなわち、ランダム差動伝搬段階と標準拡散段階との間に明確な分離はない。拡散プロセスのこの“混合”の結果として、攻撃者が、ノードの組がランダムデータ伝搬を介して又は標準拡散を介してリレーすることの間の分離を特定することに基づいて、ネットワークのトポロジを再構成することは、より困難になる。
いくつかの実施で、拡散モードのエントリノードによるランダムな選択は、発信元ノードから、リレーされるデータパケットに加えてメッセージを受信することを含んでよい。次いで、エントリノードは、ランダムな値(例えば、乱数)を生成し、それを受信されたメッセージに付け加え、結果を、例えば、SHA−256を用いて、ハッシングしてよい。次いで、エントリノードは、ハッシュ値をチェックし、その後に、ハッシュ値に関する所定の規則に基づいて拡散モードを求めることができる(例えば、ハッシュの最後の文字がアラビア数字である場合には、ランダム差動伝搬を拡散のモードとして選択する)。代替的に、又は追加的に、拡散モードの選択は、何らかのランダム化されたプロセス(例えば、乱数発生器)を用いて行われ得る。このとき、モードの一方を選択する確率は、入来及び/又は出接続の数、単位時間ごとに受信されるデータパケットの平均数、などのような因子に応じて、モードの他方を選択する確率よりも高くなり得る。
特定のデータパケットを伝搬することにおいて、伝搬ノードの匿名性保護のレベルを伝搬の全体の速度と釣り合わせることが望ましいことがある。一定レベルの匿名性を確かにするための手段が扱いにくすぎる(例えば、必要なネットワーク資源が多すぎる、ネットワークノードがデータパケットをリレーする際に意図的に十分に活用されていない、など)場合に、データをタイムリに拡散することにおけるネットワークの効能は損なわれることがある。従って、いくつかの実施で、リレーノードによる伝搬のモードのランダムな選択は、重み付けされてよい。特に、確率がデータ伝搬の速度及び匿名性の比例した有意性を反映するように、2つ以上の伝搬モード(すなわち、ランダム差動伝搬、標準拡散、など)の夫々に対して異なる確率が割り当てられてよい。例えば、より高い、予め定義された確率は、伝搬されるデータの匿名性を保つことに対する比例してより大きい重要視を反映するように、特定のネットワークのデータのためのランダム差動伝搬モードと関連付けられてよい。
図5の方法500は、第1タイプのそれ自身のデータパケットを生成するノードによって実装される。特に、DMPに参加し、残りのネットワークへの伝搬のためにデータパケットを生成するノードが、方法500を実行する。図5Aは、リレーノード、すなわち、別のノードによって生成されるデータパケットを転送するノード、によって実行されるプロセスの例を示す。すなわち、リレーノードは、特定のデータパケットのリレー中に転送すべきデータをそれ自身は生成せず、単にデータパケットを“リレーする”機能を提供するノードである。動作550で、リレーノードは、それ自身のデータ伝搬モードを独立して選択する。リレーノードは、例えば、ランダム差動伝搬モードと標準拡散モードとの間で選択を行ってよい。動作552で、標準拡散モードが選択される場合に、リレーノードは、動作554で、そのエントリノードの全てへデータパケットを転送する。図5Aの例では、伝搬モードの選択は、2つのとり得る選択肢の間である。この例は、制限ではなく、他の例では、3つ以上のとり得る伝搬モードが存在してもよい。方法500で、選択されたモードがランダム差動伝搬である場合に、リレーノードは、図5の動作504、506及び508に対応するステップ556、558及び560を実行する。
これより、図6を参照する。図6は、ネットワークにおいてデータパケットを伝搬するプロセス600の例をフローチャート形式で示す。プロセス600は、ブロックチェーンネットワークの他のノードへの複数の入来及び出接続を有しているブロックチェーンノードで実装されてよい。
プロセス600の動作602、604、606、及び610は、夫々、プロセス500の動作502、504、506、及び508に対応する。動作608で、ノードは、収集されたデータパケットを動作610でその割り当てられたエントリノードへ送信する前に、トリガ条件が満足されているかどうかを決定する。特に、データパケットの送信は、適切なトリガ条件が満足されているとの検出に応答して、実行される。トリガ条件が満足されていない場合には、ノードは、前記のデータパケットのいずれもそのエントリ/ピアノードへリレーせずに、第1タイプのデータパケットを収集し続ける。
トリガ条件は、十分な数の入来データを収集するように及び/又は十分な量の時間に入来データパケットを収集するようにノードに指示するために用いられてよい。複数の入来データパケットを、例えば、それらをネットワーク内のピアノードへ同時に伝搬する前に、収集することによって、ノードから発せられるリレートラフィックをモニタする攻撃者は、リレーされるデータパケットの正確な発信元としてノードを容易に識別することができなくなる。
いくつかの実施で、トリガ条件は、動作602でのノードによる第1タイプの少なくとも1つのデータパケットの生成の時点からの所定の存続期間の経過であってよい。すなわち、ノードは、入来するデータパケット(例えば、トランザクション)を、それらのデータパケットのいずれもノードによって伝搬される前に、ノードが同じタイプのデータパケットを生成するときに開始する所定の期間にモニタ及び収集するよう設計されてよい。この条件は、ノードによって生成されるデータパケットが、同時にブロードキャストされ得る同じタイプの更なるデータパケットを収集した後に伝搬されることを確かにしようと試みる際に有用であることができ、それによって、攻撃者が、ノードを、生成されたデータパケットの発信元として正確に識別することを困難にする。
いくつかの実施で、トリガ条件は、ノードのピアからの第1タイプの少なくとも1つの入来データパケットの最初の受信の時点からの所定の存続期間の経過であってよい。すなわち、ノードは、入来するデータパケットを、そのような入来するデータパケットの最初が受信されるときに開始する所定の期間にモニタ及び収集するよう設計されてよい。この条件は、ノード自体によって生成されるか又は他のピアから受信されるいずれのデータパケットにせよ、より多くのデータパケットが、残りのネットワークへの如何なるブロードキャストよりも前にノードによって収集されることを確かにしようと試みる際に有用であることができる。
いくつかの実施で、トリガ条件は、第1期間中の収集されたデータの数が閾数に達することであってよい。特に、ノードは、第1期間の経過、又は所定の閾数のデータパケットがノードによって収集されること、のいずれか早い方まで、入来するデータパケットをモニタ及び収集するよう設計されてよい。
これより図7を参照する。図7は、参加ノード700の簡略化された例をブロック図形式で示す。ノード700はプロセッサ702を含む。プロセッサ702は、1つ以上のマイクロプロセッサ、特定用途向け集積チップ(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理デバイスを含んでよい。ノード700は、値、変数、及びいくつかの場合に、プロセッサ実行可能プログラム命令を記憶するための、永久及び非永久メモリを含み得るメモリ706と、有線又は無線ネットワーク上でネットワークコネクティビティを提供するネットワークインターフェイス704とを更に含む。
ノード700は、実行される場合に、プロセッサ702に、本明細書で記載される機能又は動作の1つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション708を含む。
本明細書で記載されるデバイス及びプロセス、並びにブロックチェーンノードを構成するために、記載される方法/プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準のコンピュータプログラミング技術及び言語により実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミングコンベンション、データ構造、又は他のそのような実施詳細に制限されない。
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「〜を含むか、又はそれらから成る」(includes or consists of)を意味し、「有する」(comprising)は、「〜を含むか、又はそれらから成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。