(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-14
(45)【発行日】2023-11-22
(54)【発明の名称】ランダム差動リレー及びネットワークコーディングのシステム及び方法
(51)【国際特許分類】
H04L 49/9057 20220101AFI20231115BHJP
H04L 45/00 20220101ALI20231115BHJP
【FI】
H04L49/9057
H04L45/00
(21)【出願番号】P 2020548755
(86)(22)【出願日】2019-03-06
(86)【国際出願番号】 IB2019051782
(87)【国際公開番号】W WO2019180526
(87)【国際公開日】2019-09-26
【審査請求日】2022-02-07
(32)【優先日】2018-03-21
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】バルトルッチ,シルヴィア
(72)【発明者】
【氏名】マデオ,シモーネ
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2010-198136(JP,A)
【文献】米国特許出願公開第2016/0269102(US,A1)
【文献】米国特許出願公開第2016/0330634(US,A1)
【文献】特開2016-072827(JP,A)
【文献】米国特許出願公開第2013/0051324(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
H04L 49/9057
(57)【特許請求の範囲】
【請求項1】
ネットワークノードであって、
第1の期間の間、第1のデータパケットのセットを収集し、前記セットは、ネットワークにおける1つ以上の第1のノードから受信された少なくとも1つのデータパケットを含み、
複数のエンコードされたデータパケットを取得し、前記複数のエンコードされたデータパケットの各1つは、ネットワークコーディングを使用して前記セットの2つ以上の第1のデータパケットを結合することにより生成され、
前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットの、前記ノードに接続された1つ以上の近隣ノードへのマッピングを決定し、
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信する
ように構成さ
れ、
前記マッピングを決定することは、前記セットの前記第1のデータパケットの、前記1つ以上の近隣ノードへの第1のサブマッピングと、前記複数のエンコードされたデータパケットの、前記1つ以上の近隣ノードへの第2のサブマッピングを決定することを含み、前記第1及び第2のサブマッピングは、前記セットの前記第1のデータパケット及び前記複数のエンコードされたデータパケットの各々の、前記1つ以上の近隣ノードへの予期されたリレー時間を示し、
前記第1のサブマッピングを決定することは、
前記セットの各第1のデータパケットについて、
前記ノードに接続された2つ以上の近隣ノードを任意に選択することと、
前記選択された2つ以上の近隣ノードを前記第1のサブマッピングにおいて前記第1のデータパケットに関連づけることと、
を含む、ノード。
【請求項2】
前記第1の期間は、予め定義された長さを有する、請求項1に記載のノード。
【請求項3】
前記複数のエンコードされたデータパケットを取得することは、
前記1つ以上の近隣ノードの各々について、
前記第1のサブマッピングにおいて前記近隣ノードに関連づけられた2つ以上の第1のデータパケットを識別することと、
前記識別された2つ以上の第1のデータパケットを結合してエンコードされたデータパケットを生成することと、
を含む、請求項
1に記載のノード。
【請求項4】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信することは、
前記セットの前記第1のデータパケットのうち1つ以上の各々について、
前記第1のデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、
前記次にスケジュールされたリレー時間の所定時間後、前記第1のデータパケットをリレーすることと、
を含む、請求項1乃至
3のうちいずれか1項に記載のノード。
【請求項5】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信することは、
前記エンコードされたデータパケットのうち1つ以上の各々について、
前記エンコードされたデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、
前記次にスケジュールされたリレー時間の所定時間後、前記エンコードされたデータパケットをリレーすることと、
を含む、請求項1乃至
4のうちいずれか1項に記載のノード。
【請求項6】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信することは、
前記近隣ノードのうち少なくとも1つの各々について、
前記近隣ノードが前記第1のサブマッピングにおいて2つ以上の関連づけられた第1のデータパケットを有すると決定することと、
前記2つ以上の関連づけられた第1のデータパケットのサブセットを前記近隣ノードに送信することと、
を含む、請求項
1乃至5のうちいずれか1項に記載のノード。
【請求項7】
ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実現される方法であって、前記ネットワーク内の各ノードは、他のノードに対する1つ以上の接続を有し、当該方法は、前記ノードのうち1つにおいて実現され、
第1の期間の間、第1のデータパケットのセットを収集するステップであり、前記セットは、前記ネットワークにおける1つ以上の第1のノードから受信された少なくとも1つのデータパケットを含む、ステップと、
複数のエンコードされたデータパケットを取得するステップであり、前記複数のエンコードされたデータパケットの各1つは、ネットワークコーディングを使用して前記セットの2つ以上の第1のデータパケットを結合することにより生成される、ステップと、
前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットの、前記ノードに接続された1つ以上の近隣ノードへのマッピングを決定するステップと、
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信するステップと、
を含
み、
前記マッピングを決定するステップは、前記セットの前記第1のデータパケットの、前記1つ以上の近隣ノードへの第1のサブマッピングと、前記複数のエンコードされたデータパケットの、前記1つ以上の近隣ノードへの第2のサブマッピングを決定するステップを含み、前記第1及び第2のサブマッピングは、前記セットの前記第1のデータパケット及び前記複数のエンコードされたデータパケットの各々の、前記1つ以上の近隣ノードへの予期されたリレー時間を示し、
前記第1のサブマッピングを決定するステップは、
前記セットの各第1のデータパケットについて、
前記ノードに接続された2つ以上の近隣ノードを任意に選択するステップと、
前記選択された2つ以上の近隣ノードを前記第1のサブマッピングにおいて前記第1のデータパケットに関連づけるステップと、
を含む、方法。
【請求項8】
前記第1の期間は、予め定義された長さを有する、請求項
7に記載の方法。
【請求項9】
前記複数のエンコードされたデータパケットを取得するステップは、
前記1つ以上の近隣ノードの各々について、
前記第1のサブマッピングにおいて前記近隣ノードに関連づけられた2つ以上の第1のデータパケットを識別するステップと、
前記識別された2つ以上の第1のデータパケットを結合してエンコードされたデータパケットを生成するステップと、
を含む、請求項
7に記載の方法。
【請求項10】
前記決定されたマッピングに従って、前記複数のエンコードされたデータパケット及び前記セットの前記第1のデータパケットを前記1つ以上の近隣ノードに送信するステップは、
前記近隣ノードのうち少なくとも1つの各々について、
前記近隣ノードが前記第1のサブマッピングにおいて2つ以上の関連づけられた第1のデータパケットを有すると決定するステップと、
前記2つ以上の関連づけられた第1のデータパケットのサブセットを前記近隣ノードに送信するステップと、
を含む、請求項
7乃至9のうちいずれか1項に記載の方法。
【請求項11】
ノードのネットワークにおいてデータパケットを伝搬する処理に参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体であって、前記プロセッサ実行可能命令は、参加ノードの1つにおけるプロセッサにより実行されたときに、前記プロセッサに請求項
7乃至
10のうちいずれか1項に記載の方法を実行させる、非一時的プロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピュータネットワークに関し、より詳細には、ノード、電子通信、及びネットワーキング技術のネットワークにおいてデータを伝搬するための方法及び装置に関する。それは、ブロックチェーン技術に関連した使用に特に適する。特に、それは、データのセキュアな伝送と、第三者による潜在的に悪意のあるイベントすなわち攻撃の削減に関する。
【背景技術】
【0002】
本文献では、用語「ブロックチェーン」を用いて、電子的なコンピュータベースの分散台帳の全ての形態を含める。これらには、ブロックチェーン及びトランザクションチェーン技術、許可あり(permissioned)及び許可なし(un-permissioned)台帳、共有台帳、及びこれらの変形が含まれるが、これらに限定されない。ブロックチェーン技術の最も広く知られている適用はビットコイン(登録商標)台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、簡便さ及び例示の目的でビットコインが参照されることがあるが、本発明はビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。用語「ビットコイン(Bitcoin)」は、本明細書において、ビットコインプロトコルに由来し又は基づく全てのバリエーション又はバージョンを指すために使用される。
【0003】
ブロックチェーンは、合意に基づく電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実現され、同様に、ブロックはトランザクションから構成される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【0004】
新しいトランザクションを受信したネットワークノードは、すぐにそのトランザクションをネットワーク内の他のノードへプッシュするよう試みる。新しいトランザクションを他のノードに伝送する前に、それは「検証され(validated)」、このことは、それが基準のセットに対してチェックされて、トランザクションが適用可能なブロックチェーンプロトコルに従って適切なトランザクションの基本要件を満たすことを保証することを意味する。
【0005】
トランザクションがブロックチェーンに書き込まれるために、それは、トランザクションを収集してこれらをブロックにするように設計されたノード(「マイナー」又は「マイニングノード」)によりブロックに組み込まれる。次いで、マイナーは、ノードに関する「プルーフオブワーク(proof of work)」を完成させるよう試みる。ブロックチェーンネットワーク全体にわたるマイナーが、トランザクションのブロックを組み立て、そのブロックに関連するプルーフオブワークを完成させるのが最初であるよう競争する。成功したマイナーは、その確認されたブロックをブロックチェーンに追加し、該ブロックは、ネットワークを通じて伝搬され、それにより、ブロックチェーンのコピーを維持する他のノードは、そのレコードを更新することができる。ブロックを受信したノードもまた、そのブロック及びその中の全てのトランザクションを「検証し」、それがプロトコルの形式要件に準拠することを保証する。
【0006】
ビットコインなどのブロックチェーン技術の認識された利点の1つは、トランザクションの匿名性である。ビットコインユーザの個人の詳細は、ビットコインアドレスに形式的及び明示的に添付されておらず、ブロックチェーンのビットコイン台帳は、パブリックアドレス情報のみ含む。しかしながら、ブロックチェーンが、インターネット上で動作する分散型のピアツーピアネットワークとして構造化されているため、トランザクションの匿名性は、インターネットプロトコル(IP)アドレス情報を使用してユーザをネットワーク活動とリンクする攻撃により、損なわれる可能性がある。例示として、ブロックチェーンベースのネットワーク上で行われるIPトラフィック解析などの非匿名化攻撃(de-anonymization attacks)は、関心のある第三者がネットワーク上でユーザによりサブミットされたトランザクションを監視し、パブリックに利用可能な情報を使用してトランザクションを彼らのソースにリンクすることを、例えばユーザの公開鍵を彼らのIPアドレスとリンクすることによって可能にするおそれがある。
【0007】
トラフィック解析は、ネットワークノードによる、及びネットワークノード間のトランザクションの伝搬に依存するブロックチェーンベースのネットワークにとって特に問題である。トランザクションを受信するネットワーク内の各ノードは、トランザクションを検証し、その後、それをピアノードに送信する。ビットコインプロトコルにおいて、ノードは、トランザクションのリストを含む「INV」メッセージをピアノードに送信し、「INV」メッセージでアドバタイズされた(advertised)トランザクションの何らかのサブセットを選択する「GETDATA」応答メッセージを受信する。次いで、ノードは、要求されたトランザクションをピアノードに送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。攻撃者は、トランザクションがネットワーク内で伝搬されるときに伝送されるデータを傍受し、解析し、最終的に、トランザクションのソースと宛先をリンクするために使用できる情報を得る可能性がある。
【0008】
トラフィック解析又は他のタイプの非匿名化攻撃を通してネットワークの匿名性を損なう可能性を低減できる、ブロックチェーンベースのネットワークでトランザクションを伝搬する手法を提供することが望ましい。より一般的には、非匿名化攻撃に対する脆弱性を低減するための、ピアツーピアネットワークのノード間でデータをリレーする手法を提供することが望ましい。
【発明の概要】
【0009】
このような解決法が次に考案されている。
【0010】
ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法及び装置が提供される。
【0011】
本発明は、ノードのネットワークにおいてデータパケットを伝搬するノードを提供し得る。ネットワーク内の各ノードは、他のノードに対する1つ以上の接続を有し得る。ノードは、プロセッサと、ネットワーク接続性を提供するネットワークインターフェースと、メモリを含み得る。メモリは、プロセッサ実行可能命令を含んでもよく、該命令は、プロセッサにより実行されたときに、プロセッサに以下で説明される動作のうち1つ以上を実行させる。ノードは、第1の期間の間、第1のデータパケットのセットを収集し、該セットは、ネットワークにおける1つ以上の第1のノードから受信された少なくとも1つのデータパケットを含むように構成され得る。上記命令は、プロセッサに、複数のエンコードされたデータパケットを取得し、複数のエンコードされたデータパケットの各1つは、ネットワークコーディングを使用して上記セットの2つ以上の第1のデータパケットを結合することにより生成されることをさせ得る。上記命令は、プロセッサに、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットの、上記ノードに接続された1つ以上の近隣ノードへのマッピングを決定することをさせ得、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットを1つ以上の近隣ノードに送信し得る。
【0012】
いくつかの実装において、第1の期間は、予め定義された長さを有する。
【0013】
いくつかの実装において、マッピングを決定することは、上記セットの第1のデータパケットの、1つ以上の近隣ノードへの第1のサブマッピングと、複数のエンコードされたデータパケットの、1つ以上の近隣ノードへの第2のサブマッピングを決定することを含み、第1及び第2のサブマッピングは、上記セットの第1のデータパケット及び複数のエンコードされたデータパケットの各々の、1つ以上の近隣ノードへの予期されたリレー時間を示す。
【0014】
いくつかの実装において、第1のサブマッピングを決定することは、上記セットの各第1のデータパケットについて、上記ノードに接続された2つ以上の近隣ノードを任意に選択することと、選択された2つ以上の近隣ノードを第1のサブマッピングにおいて第1のデータパケットに関連づけることと、を含む。
【0015】
いくつかの実装において、複数のエンコードされたデータパケットを取得することは、1つ以上の近隣ノードの各々について、第1のサブマッピングにおいて近隣ノードに関連づけられた2つ以上の第1のデータパケットを識別することと、識別された2つ以上の第1のデータパケットを結合してエンコードされたデータパケットを生成することと、を含む。
【0016】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットを1つ以上の近隣ノードに送信することは、上記セットの第1のデータパケットのうち1つ以上の各々について、第1のデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、次にスケジュールされたリレー時間の所定時間後、第1のデータパケットをリレーすることと、を含む。
【0017】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットを1つ以上の近隣ノードに送信することは、エンコードされたデータパケットのうち1つ以上の各々について、エンコードされたデータパケットの、近隣ノードへの、次にスケジュールされたリレー時間を決定することと、次にスケジュールされたリレー時間の所定時間後、エンコードされたデータパケットをリレーすることと、を含む。
【0018】
いくつかの実装において、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットを1つ以上の近隣ノードに送信することは、近隣ノードのうち少なくとも1つの各々について、近隣ノードが第1のサブマッピングにおいて2つ以上の関連づけられた第1のデータパケットを有すると決定することと、2つ以上の関連づけられた第1のデータパケットのサブセットを近隣ノードに送信することと、を含む。
【0019】
本出願は、ノードのネットワークにおいてデータパケットを伝搬する、コンピュータにより実現される方法を説明し得る。ネットワーク内の各ノードは、他のノードに対する1つ以上の接続を有し得る。当該方法は、ノードのうち1つで実現されてもよく、第1の期間の間、第1のデータパケットのセットを収集するステップであり、上記セットは、ネットワークにおける1つ以上の第1のノードから受信された少なくとも1つのデータパケットを含む、ステップを含み得る。当該方法は、複数のエンコードされたデータパケットを取得するステップであり、複数のエンコードされたデータパケットの各1つは、ネットワークコーディングを使用して上記セットの2つ以上の第1のデータパケットを結合することにより生成される、ステップを含み得る。当該方法は、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットの、上記ノードに接続された1つ以上の近隣ノードへのマッピングを決定するステップと、決定されたマッピングに従って、複数のエンコードされたデータパケット及び上記セットの第1のデータパケットを1つ以上の近隣ノードに送信するステップと、を含み得る。
【0020】
本出願は、ノードのネットワークにおいてデータパケットを伝搬する処理に参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体をさらに説明し得、プロセッサ実行可能命令は、複数の参加ノードのうち1つにおけるプロセッサにより実行されたときに、プロセッサに本明細書に記載される方法のうち1つ以上の動作を実行させる。
【0021】
本出願は、ネットワークにおけるノードレベルの匿名化を提供するソリューションを説明し得る。より詳細には、本明細書に記載される方法及びシステムは、ネットワーク内のデータ伝搬スキームにおけるノードの機能の不明瞭化を容易にし得る。攻撃者がネットワークにおけるノード間トラフィックを監視し、あるいは特定ノードの近隣ノードへのアクセスを獲得するしても、本方法は、そのような攻撃者が、特定のノードがネットワーク内で伝搬されているデータパケットのソースか又はリレーノードかを判定することをチャレンジングにし得る。ブロックチェーンネットワークにおけるノードの機能/役割を不明瞭化することにより、ネットワーク上の非匿名化攻撃の効果が低減され得、ブロックチェーン上のデータ伝送のセキュリティが改善され得る。
【0022】
本明細書に記載の例示的な実装の多くので、ブロックチェーントランザクションを具体的に参照する。しかしながら、本明細書に記載の方法及び装置は、非ブロックチェーンデータ伝搬に関連して実現及び適用されてもよいことが理解されるであろう。より一般的には、本開示に記載の方法及び装置は、ピアツーピアネットワークのノード間で様々な異なるタイプのデータを伝搬する際の使用に適し得る。
【図面の簡単な説明】
【0023】
本発明の1つの態様又は実施形態に関連して記載される任意の特徴は、1つ以上の他の態様/実施形態に関してさらに使用されてもよい。本発明のこれら及び他の態様は、本明細書に記載した実施形態から明らかであり、それを参照して解明されるであろう。次に、本発明の一実施形態が、単に例示として、添付の図面を参照して説明される。
【
図1】ブロックチェーンに関連づけられた一例示的なネットワークを示す。
【
図2】インプットバッファ及びアウトプットバッファを有する一例示的なブロックチェーンノードを図式的に示す。
【
図3】ノードの一例示的ネットワーク内でデータパケットを伝搬するためのプロトコル、拡散ミキサプロトコル(DMP)の概略図である。
【
図4】ノードの簡略化された例示的なネットワークを示す。
【
図5】DMPに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する一例示的なプロセスをフローチャート形式で示す。
【
図6a】DMPに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【
図6b】DMPに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【
図6c】DMPに従ってブロックチェーンネットワークにおいてデータパケットを伝搬する別の例示的なプロセスをフローチャート形式で示す。
【
図7】一例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【0024】
本出願において、用語「及び/又は」は、列挙された要素のうち任意の1つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしもさらなる要素を排除することなく、列挙された要素の全ての可能な組み合わせ及び副組み合わせを、カバーすることが意図される。
【0025】
本出願において、フレーズ「・・・又は・・・のうち少なくとも1つ」は、列挙された要素のうち任意の1つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしも任意のさらなる要素を排除することなく、必ずしも要素の全てを要することなく、列挙された要素のうち任意の1つ以上をカバーすることが意図される。
【0026】
最初に、
図1を参照する。
図1は、ブロックチェーンに関連づけられた一例示的なネットワークをブロック図形式で示し、これは、本明細書においてブロックチェーンネットワーク100と呼ばれ得る。ブロックチェーンネットワーク100は、ピアツーピアのオープンメンバーシップネットワークであり、これは、招待なく、又は他のメンバーからの同意なく、誰でも加わることができる。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散電子装置は、ブロックチェーンネットワーク100に参加することができる。このような分散電子装置は、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル、又は他の暗号通貨でもよい。
【0027】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどのウェアラブルコンピュータ、又は他の電子装置を含む様々なタイプのものでもよい。
【0028】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーンネットワーク100は、少なくとも部分的にインターネットを通じて実現され、ノード102のいくつかは、地理的に分散された場所に位置してもよい。
【0029】
ノード102は、ブロックにグループ化された、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持し、該ブロックの各々は、チェーン内の前のブロックのハッシュを含む。グローバル台帳は、分散された台帳であり、各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することができる。グローバル台帳に影響するノード102によるトランザクションは、他のノード102により立証され(verified)、それにより、グローバル台帳の正当性が維持される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークの実現及び動作の詳細は、当業者に十分理解されるであろう。
【0030】
各トランザクションは、1つ以上のインプット及び1つ以上のアウトプットを典型的に有する。インプット及びアウトプットに埋め込まれたスクリプトは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転される先のアドレスでもよい。この価値は、次いで、未使用トランザクションアウトプット(unspent transaction output、UTXO)として、そのアウトプットアドレスに関連づけられる。次いで、後続のトランザクションが、インプットとしてそのアドレスを参照して、その価値を消費し、あるいは分散させることができる。
【0031】
ノード102は、ネットワークルーティングからウォレットサービスまで多くの異なる機能を果たして、堅牢かつセキュアな非中央集権的なパブリック台帳を維持することができる。「フルノード(Full nodes)」は、ブロックチェーンの完全かつ最新のコピーを含み、したがって、パブリック台帳上のトランザクション(使用済み又は未使用)を立証することができる。「軽量ノード(Lightweight nodes)」(又はSPV)は、ブロックチェーンのサブセットを維持し、「簡易支払立証(simplified payment verification)」手法を使用してトランザクションを立証することができる。軽量ノードは、ブロックのヘッダのみをダウンロードし、各ブロック内のトランザクションをダウンロードするわけではない。したがって、これらのノードは、ピアに依存してそれらのトランザクションを立証する。フル又は軽量ノードであり得る「マイニングノード」は、トランザクションを検証し、ブロックチェーン上で新しいブロックを作成する責任を負う。通常、軽量ノードである「ウォレットノード」は、ユーザのウォレットサービスを取り扱う。ノード102は、TCP/IP(トランスミッションコントロールプロトコル)などのコネクション指向プロトコルを使用して互いに通信する。
【0032】
ノードがピアにトランザクションを送りたいとき、「INVENTORY」メッセージがピアに送られ、送信ノードが知っている1つ以上のインベントリオブジェクトを送信する。ピアが「GETDATA」メッセージ、すなわちフルトランザクション要求でリプライした場合、トランザクションは「TRANSACTION」メッセージを使用して送られる。トランザクションを受信したノードは、それが有効なトランザクションであることを前提として、それを同じ方法でピアに転送する。
【0033】
次に、
図2を参照する。
図2は、インプットバッファ202及びアウトプットバッファ204を有する一例示的なノード200を図式的に示す。例示的なノード200は、intA、intB、intC、intD等として参照される複数のピアノードとのネットワークインターフェースを有する。インプットバッファ202は、様々なピアノードからの入ってくるトランザクションを示し、アウトプットバッファ204は、それぞれのインターフェースを通じてのピアノードへの送信のための、トランザクションに対応するアウトプットネットワークパケットを示す。ネットワークパケットは、ノード200のオペレーティングシステムにより提供されるプリミティブに従って、アプリケーションレベルでシリアルに送受信される。トランザクションxが単一のイーサネット/IPパケットに適合すると仮定すると、m個のピアへのその伝送は、m個の異なるアウトプットネットワークパケットのバッファリングを必要とする。インプット及びアウトプット双方のネットワークパケットが、他の情報と共に、シリアライズされたトランザクションと、送信/受信ピアへのTCP/IP接続を表す論理インターフェースIDを含む。
【0034】
ビットコイントランザクションが生成されると、ソースノードは、ネットワークを通じてトランザクションメッセージをブロードキャストする。一般に、クライアントがトランザクションを生成したとき、それは、アウトプットバッファ204に置かれる。トランザクションは、ピアに直ちに転送されても、あるいはそうでなくてもよい。ビットコインネットワークの現在の実装において、トランザクションは、「拡散伝搬(diffusion propagation)」として知られるメカニズムにより伝搬され、それにより、各トランザクションソースは、独立した指数関数的な遅延でその近隣にトランザクションを送信する。伝搬における遅延はランダムであり、悪意のある攻撃者のタイミング推定に不確実性をもたらすのに有用である。ピアが特定のトランザクションを受信すると、ピアは、同じトランザクションの将来のリレーを受け入れない可能性がある。例えば、トランザクションハッシュがピアのメモリプールに記憶されてもよく、ピアが同一のトランザクションを拒否することを可能にする。ネットワークを介したトランザクションの「拡散」は対称的であり、このことは、転送ノードが、トランザクションブロードキャストに影響を及ぼすのに近隣ノードのIPアドレスに関する情報を使用しないことを意味する。例えば、(ビットコインプロトコルで利用される)「標準」拡散プロセスにおいて、ブロードキャストノードのピアは全て同じトランザクションを受信し、各リレーインスタンスでは、一度に1つのトランザクションのみがピアごとにリレーされる。この「拡散」の対称性は、非匿名化攻撃を行う際にネットワークのピアツーピアのグラフ構造の知識を有する悪意のある第三者により利用される可能性がある。
【0035】
本開示は、トラフィック解析攻撃に対する保護を改善するために、ブロックチェーンネットワーク上のデータリレーのための代替的な手法を提供する。より詳細には、提案されるリレープロトコルは、データパケットのソースノードとそれらのIPアドレスとの間の接続を偽装、隠蔽、又は不明瞭化(obfuscate)するために使用され得る。
【0036】
本出願は、データパケットの高速伝搬を容易にする方法及び装置についても記載する。いくつかの実装において、ノードは、ピアノードに送信するために2つ以上のデータパケットを単一のメッセージに結合するためのネットワークコーディングの使用を選択的に可能にする。ネットワークコーディングの選択的な使用は、ノードが潜在的なボトルネックであると判定することに基づいてもよい。ノードのネットワークの文脈におけるボトルネックは、例えばデータパケットの伝送を遅くすることにより、ネットワークの性能を制限するノード間のリンクである。ボトルネック(ノード間のリンク)のソースはノードである。一般に、ノードがボトルネックである可能性があるかどうかの判定は、ノードへのインリンク(in-links)(ファンイン(fan-in))の数がノードからのアウトリンク(out-links)(ファンアウト(fan-out))の数を超えているかどうかに基づいてもよい。
【0037】
ネットワークコーディングの導入は、ブロックチェーンネットワークなどのノードのネットワークにおけるデータ伝送の効率を高める可能性がある。
【0038】
データリレープロトコル、拡散ミキサプロトコル(Diffusion Mixer Protocol、DMP)が提案される。DMPは、2つの独立した拡散段階を含む。第1の段階(「ランダム差動リレー(random differential relay)」、又はRDR)は、リレーデータパケットの混合(mixing)とデータパケットソースの不明瞭化を可能にする。ランダム差動リレー段階の間、各ノードは、データパケットをネットワークにブロードキャストする前、予め定義された時間待機して、そのピアから複数のデータパケットを受信し、収集する。次いで、ノードは、その「エントリノード」に出ていく接続を作成し、これらのエントリノードのうち任意に(例えば、ランダムに)選択されたサブセットに、ほぼ同じタイムスタンプを有する異なるデータパケットを送信する。ノードのエントリノードは、ノードから直接出ていく接続を確立できる近隣ノードである。エントリノードの選択におけるランダム性とリレーデータにおける多様性は、攻撃者にとってネットワークトポロジの再構成をより困難にする可能性がある。
【0039】
第2の段階(「標準拡散」)は、ネットワーク内のデータパケットの適時かつ信頼性のある伝搬を保証する。標準拡散段階において、各ノードは、全てのそのエントリノードに同じデータパケットをリレーし、各リレーインスタンスでは、一度に1つのデータパケットのみがエントリノード毎にリレーされる。
【0040】
ブロックチェーンネットワークなどのノードのネットワークでは、ノードの1つ以上がDMPを実現でき得ることに留意されたい。具体的に、ネットワークのノードの1つ以上は、DMPに参加することにより、その受信データパケットをそのエントリノードにリレーすることができ得る。参加ノードは、例えば、特定のデータパケットを伝搬するために、RDRプロセスと標準拡散プロセスとの間で選択してもよい。ネットワークのノードは、DMPに参加することを選んでもよく、非中央集権的方式を介してか、又は中央当局により組み立てられた参加ノードのグループに含めることによってかのいずれかで、プロトコルに加わる。参加ノードは、DMPに従ってそのアウトプットデータパケットをリレーする。特に、参加ノードがデータパケットを受信した場合、ノードは、DMPにより規定されたルールを使用して、そのノードに対して選択される伝搬モードに従って、受信データパケットを転送し得る。
【0041】
データパケットリレーのための提案されるDMPは、
図3~
図7を参照して説明される。
図3では、DMPの概略的な視角化を提供する。ノードの例示的なブロックチェーンネットワーク300が示されている。各ノードはネットワーク端末(すなわち、ブロックチェーンノード)を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一ビットを送信又は受信することが可能であると仮定される。
【0042】
この例示的なネットワーク300において、ノードが新しいデータパケットを受信したとき、それはネットワークを通して全ての他のノードに伝搬される。各ノードは、新しいデータパケットをそれらのそれぞれのローカルセットに記憶し、新しいデータパケットをまだ新しいデータパケットを有さない任意のピアノードに転送する。ブロックチェーンネットワーク300のピアツーピアの性質に起因して、全てのノードが新しいデータパケットを同時に受信するわけではなく、このことは、新しいデータパケットがネットワーク300内の全てのノードに到達するのにいくらかの時間がかかることを意味する。
【0043】
図3は、特定のデータパケットTx1を伝搬するためのDMPの2つの段階、すなわち、ランダム差動リレー302とTx1の標準拡散304を示す。データパケットTx1のソースノード310は、時間t
1に、データパケットTx1を生成するか、又はそれをピアノードから受信するかのいずれかを行い得る。DMPに従って、ソースノード310は、受信/キューイングされたデータパケットのブロードキャストを開始する前に、その近隣ノードから少なくとも1つ以上の入ってくるデータパケットを受信するのを待機する。
図3の例では、時間t
2に、データパケットTx2がソースノード310により受信されると、時間t
3に、データパケットTx1及びTx2が、ソースノード310のエントリノードの任意に選択されたサブセットに送られる。データパケットTx1は、エントリノード310c及び310dに転送され、データパケットTx2は、エントリノード310a及び310bに転送される。
図3の例は単なる例示であり、特に、ソースノード310は、その受信データパケットのいずれかを伝搬する前に、2つより多くの入ってくるデータパケットを受信するのを待機してもよい。
【0044】
エントリノードは、受信したデータパケットをそれら自身のピアにリレーする。例えば、ノード310b及び310dは、データパケットTx2及びTx1をそれぞれ、それらの近隣ノードの1つ以上に転送する。DMPにおいて、データパケットの各受領者は、受信したデータパケットを伝搬するモードを独立して選択する。ノード320は、その拡散モードとして標準拡散を選択するノードの一例である。
図3に示すように、ノード320は、同じデータパケットTx1を全てのそのエントリノード、すなわち320a、320b、320c、320d、及び320eに転送する。
【0045】
本出願の一態様によれば、ブロックチェーンノードは、特定の期間にわたり第1のデータパケットを収集/バッファリングし、次いで、ネットワークコーディングを使用して、収集された第1のデータパケットのうち2つ以上を結合してエンコードされたデータパケットを生成する。すなわち、ブロックチェーンノードは、複数の第1のデータパケットをエンコードして、エンコードされたデータパケットをそれが分解可能なように生成する。エンコードされたデータパケットは、第1のデータパケットのうち最大のものに小さいオーバヘッドを加えたサイズを有する。
【0046】
次に、
図4を参照する。
図4は、ネットワーク400内のノードの簡略化された例示的なネットワークを示す。各ノードはネットワーク端末(例えば、ブロックチェーンノード)を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一ビットを送信又は受信することが可能であると仮定される。
【0047】
ノードのうち2つは、ソースS1及びS2としてラベル付けされ、これらは、2つの新しいデータパケットtx1及びtx2をそれぞれ受信する。この例示的なネットワーク400において、ノードが新しいデータパケットを受信したとき、それはネットワークを通して全ての他のノードに伝搬される。各ノードは、新たに受信したデータパケットを記憶し、データパケットをまだデータパケットを有さない任意のピアノードに転送する。ネットワーク400のピアツーピアの性質に起因して、全てのノードが特定の新しいデータパケットを同時に受信するわけではなく、このことは、新しいデータパケットがネットワーク400内の全てのノードに到達するのにいくらかの時間がかかることを意味する。
【0048】
ブロックチェーンネットワーク400のノードのうち2つは、受信者R1及びR2としてラベル付けされる。ノードI1及びI2は中間ノードであり、I1とI2との間のリンクは、時間Tにおけるネットワーク400のボトルネックを表す。ノードI1が、2つの新しいデータパケットTx1及びTx2をほぼ同時に受信したとき、ノードI1は、2つのデータパケットのうちいずれを最初に送信するかを決定しなければならない。
【0049】
ネットワークコーディングを使用し、ノードI1は、新しいデータパケットTx1及びTx2を、Tx1とTx2とのうちより大きいものと同じサイズであるエンコードされたデータパケット(例えば、合成メッセージ)Mへ結合することができる。例えば、エンコードされたデータパケットMは、Tx1及びTx2の線形結合でもよい。ノードI1は、MをノードI2に送信し、次いで、ノードI2は、Mを受信者R1及びR2に転送する。受信者R1及びR2は、個々のデータパケットTx1及びTx2を復元することができる。例えば、受信者R1は、Tx1及びMを受信する。Mは、Tx1及びTx2の結合(例えば、Tx1とTx2のバイナリXOR)に基づくため、R1は、Tx2を導出するために式(Tx1,Tx1+Tx2)を解くだけでよい。同様に、R2はTx2を受信し、Tx1を導出するために式(Tx2,Tx1+Tx2)を解く必要がある。
【0050】
ボトルネックは、ネットワークの構成と、データパケットが任意の所与の時間にどこに生成されるかに依存して、ある時間にわたり現れ、あるいは消える可能性がある。ボトルネックは、ネットワークの性能を大きく制限し、具体的にブロックチェーンネットワークの場合にはデータパケット(例えば、トランザクション又はブロック)の伝送を遅くする、ノード間のリンク(エッジ)である。しかしながら、ボトルネック(ノード間のリンク)のソースはノードである。
【0051】
ネットワークコーディングは、当時の支配的なパケット交換ネットワーキングに対する一代替として開発された。ネットワークコーディングは、ネットワークをリンクキャパシティを有する有向グラフ(N,L)としてモデル化し、ノードn∈Nがブロードキャストキャパシティhを達成するレートで受信者R⊆Nのセットに情報を通信できることを実証し、hは、ネットワークの内部ノードにおけるエンコーディングを条件として、sと任意のr∈Rとの間の最小カットの値である。
【0052】
カットCは、グラフG=(V,E)の頂点Vの、2つの分離したサブセットS及びTへの分割として定義される。カットC=(S,T)のカットセットは、一方の端点をSに、及び他方の端点をTに有するエッジのセット{(u,v)∈E|u∈S,v∈T}である。
【0053】
ネットワークコーディングのための一例示的な方法論が、P.A.Chou、Y.Wu、及びK.Jainの「Practical Network Coding」により、Proceedings of the annual Allerton conference on communication control and computing、v.41、pp.40-49、The University (2003)(以降「Chou」)に記載されており、これはここで参照により援用される。この方法論は、ネットワークトポロジ又はエンコーディング若しくはデコーディング機能のいかなる中央集権的な知識についてもその必要を取り除いた。Chouは、ネットワークNが、単位キャパシティエッジ(e)、送信者s∈V、及び特定数の受信者T⊆Eを有する非巡回グラフG=(V,E)として表現できると述べている。ノードの各エッジe∈Eのアウトプットv=in(e)は、シンボルy(e)を有し、シンボルy(e)は、vに入るエッジe’上のシンボルy(e’)の線形結合である。詳細には、アウトプットは、
【数1】
により与えられる。ここで、y(e’
i)=x
i、i=1,...,hであり、ベクトルm
eは、エッジeについてのノードvにおけるエンコーディング機能を表すローカルエンコーディングベクトルであり、hは、ブロードキャストキャパシティを、送信者と受信者との間の任意のカットにおけるエッジの最小数として示す。
【0054】
Chouは、任意のエッジe∈E上のアウトプットy(e)は、ソースシンボルの線形結合
【数2】
であり、係数のh次元ベクトルg(e)=[g
1(e),...,g
h(e)]は、
【数3】
により再帰的に取得できると述べており、ここで、エッジe’
i上のg(e’
i)は、i番目の単位ベクトルに対して開始される(initiated)。ベクトルg(e)は、eに沿ったグローバルエンコーディングベクトルと呼ばれてもよい。そのh個の入ってくるエッジに沿ってシンボル
【数4】
を受信する任意のノードtは、グローバルエンコーディングベクトルの行列G
tがランクhを有する場合、ソースシンボルx
1,...,x
hを復元することができる。
【0055】
出ていくエッジeのグローバルエンコーディングベクトルは、入ってくるエッジe’のグローバルエンコーディングベクトルのローカルエンコーディングに基づくものとして特徴付けられてもよい。
【0056】
ネットワークコーディングは、ネットワークを通してデータパケットを伝搬するために使用され得ることが理解されるであろう。ネットワークコーディングの使用は、ネットワークから、データパケットを記憶する2つ以上のノードの損失から回復することができるというさらなる利点を提供し得る。特に、中間ノードは、データパケットに関する結合されたデータを含む1つ以上のメッセージを受信しているため、欠落したデータパケットは、ネットワークコーディングメッセージから復元され得る。
【0057】
次に、
図5を参照する。
図5は、DMPのRDR段階においてネットワーク内でデータパケットを伝搬する一例示的な方法500をフローチャート形式で示す。方法500は、例えば、ネットワーク100などのブロックチェーンネットワークのノードにより実現される。ノードは、この文脈では、マイニングノード、フルノード、バリデータノード(validator node)、又はブロックチェーンネットワーク内の他タイプの別個のブロックチェーンノードを指すと理解されてもよい。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーンプロトコルを実現する実行ソフトウェアを有するコンピューティングデバイスである。
【0058】
動作502において、ノードに関連づけられたクライアントが、第1の期間Tの間、第1のデータパケットのセットを収集する。すなわち、ノードは、ある期間にわたり、入ってくる第1のデータパケットを蓄積する。ブロックチェーンネットワークの文脈において、第1のデータパケットは、ブロックチェーントランザクションを含んでもよい。このセットは、ネットワーク内の1つ以上のピアノードから受信した少なくとも1つのデータパケット、すなわち、入ってくるデータパケットを含む。ブロックチェーンネットワークでは、期間Tの間、ノードは、リレーされるべき入ってくるトランザクションについてネットワークを監視することにより、トランザクションのセットを蓄積する。期間Tの長さは、予め定義されてもよい。いくつかの例示的な実装において、時間の長さは、平均接続時間(connection times)、単位時間当たりに受信される平均データパケット数、又はネットワークにおけるノードの中心性(すなわち、ノードへの入ってくる接続の数)などのパラメータに基づいて変化してもよい。期間Tの間、ノードは、第1のデータパケットを蓄積することのみを許可されてもよく、したがって、期間Tの間、いかなる第1のデータパケットも送信を防止されてもよい。
【0059】
動作504において、複数のエンコードされたデータパケットが取得される。エンコードされたデータパケットの各々は、ネットワーキングコーディングとローカルエンコーディングベクトルを使用してセットの2つ以上の第1のデータパケットを結合することにより生成される。例えば、複数のエンコードされたデータパケットは、XORネットワーキングコーディングスキームを使用することにより生成されてもよく、すなわち、エンコーディングは、第1のデータパケットのXORコーディングを含む。
【0060】
上述したように、ランダム差動リレーは、ノードのネットワークにおいてデータパケットを伝搬するための「標準拡散」プロトコルからの逸脱を表す。RDRの実装において、伝搬ノードは、異なるデータパケットとデータパケットの結合とを同時にエントリノードのランダムに選択されたサブセットにリレーする。伝搬ノードは、データパケットがリレーされるべき1つ以上のエントリノードを各々の収集されたデータパケットにランダムに割り当てることにより、データ構造を作成してもよい。より一般的には、データパケットをそのピアにリレーするネットワークノードは、ノードにより収集された(すなわち、受信され又はローカルに生成された)複数のデータパケットの各々について実行すべきリレーのタイプを指定するそれ自身の内部ルーティングデータ構造を維持してもよい。
【0061】
本明細書で提案される拡散ミキサプロトコルの文脈において、RDRを実装するブロックチェーンネットワーク内の各ノードは、それ自身のルーティングデータ構造又は「RDRテーブル」を独立して構築してもよい。RDRテーブルは、RDRプロトコルを採用する各ノードに対してデータパケット割り振りスキームを定義する。すなわち、個々のノードのRDRテーブルは、どんなデータパケットがそのピアのいずれに及びいつリレーされるべきかを管理するために使用される。RDRテーブルは、所与の時間ΔT
RDRに受信又は生成された全てのデータパケットと、データパケットのソースピアを追跡し得る。RDRテーブルは、さらなる情報を含んでもよく、例えば、データパケットの第1のインスタンスの到着時間(「ToAタイムスタンプ」)、データパケットをリレーするために選択された時間(「ToRタイムスタンプ」)、及び/又はノードにより受信された同じデータパケットのインスタンス数のカウンタなどである。以下に一例示的なRDRテーブルを提供する。
【表1】
【0062】
ノードのローカルRDRテーブルは、新しい情報(タイムアウト、受信又は生成されたトランザクション)が利用可能になったとき、動的に(すなわち、リアルタイムで)更新されてもよい。
【0063】
動作506において、ノードが、(動作504で生成された)複数のエンコードされたデータパケット及び動作502で収集された第1のデータパケットの、ノードに接続された1つ以上の近隣ノードへのマッピングを決定する。マッピングは、各々のエンコードされたデータパケット及び収集されたセットの第1のデータパケットの、近隣ノードへの予期されたリレー時間を示し得る。この「マッピング」は、ネットワークのノードに対して個々のRDRテーブルを構築するために使用される。詳細には、マッピングは、(ノードで受信又は生成される)データパケットの、その近隣ノードへの送信のための割り当てを示す。
【0064】
動作508において、エンコードされたデータパケット及び収集されたセットの第1のデータパケットの、近隣ノードへのマッピングが決定されると、上記データパケットは、決定されたマッピングに従って近隣ノードに送信される。エンコードされたデータパケット及び収集された第1のデータパケットは、動作506で決定されたマッピングにおいてそれらがそれぞれ関連づけられたノードにリレーされる。
【0065】
次に、
図6aを参照する。
図6aは、DMPのRDR段階においてネットワーク内でデータパケットを伝搬する一例示的な方法600をフローチャート形式で示す。方法600は、例えば、ネットワーク100などのブロックチェーンネットワークのノードにより実現される。ノードは、この文脈では、マイニングノード、フルノード、バリデータノード、又はブロックチェーンネットワーク内の他タイプの別個のブロックチェーンノードを指すと理解されてもよい。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーンプロトコルを実現する実行ソフトウェアを有するコンピューティングデバイスである。
【0066】
動作602において、ノードに関連づけられたクライアントは、第1の期間Tの間、第1のデータパケットのセットを収集する。ノードは、ある期間にわたり、入ってくる第1のデータパケットを蓄積し、該期間は、予め定義された長さを有し得る。
【0067】
期間Tが満了した後、動作604において、収集された第1のデータパケットの、近隣ノードへの第1のマッピングが決定される。
図6bは、動作604における第1のマッピングを決定する一例示的な手法を示す。動作702に示すように、いくつかの実装において、ノードは、収集された第1のデータパケットの異なるセットが転送されるそのエントリノードのサブセットを任意に選択してもよい。すなわち、各々の収集された第1のデータパケットについて、ノードは、そのエントリノード(すなわち、ノードが出ていく接続を有する近隣ノード)のうち2つ以上を任意に選択し、選択されたエントリノードに第1のデータパケットを割り当ててもよい。例えば、エントリノードは、ランダムに選択され得る。ノードは、いくつかの実装では、ネットワークに問い合わせてそのピアの新しいアドレスを取得してもよい。ビットコインネットワークにおいて、ノードは、ビットコインコア(Bitcoin Core)、BitcoinJ、又は他のブロックチェーンプロトコルに埋め込まれ、かつビットコイン(又は、他のブロックチェーン)コミュニティメンバにより維持される1つ以上のデータベースソース名(DSN)に問い合わせてもよい。応答として、ノードは、入ってくる接続を受け入れる可能性がある利用可能なフルノードのIPアドレスを示す1つ以上のDSNレコードを取得する。ピア発見の非中央集権的なバージョンは、ピアに、それらのIPアドレスとポート番号を含む「ADDR」メッセージをネットワークに加わる新しいノードに送信させることにより実現されてもよい。
【0068】
いくつかの実装において、動作604の一部として、ネットワーク内のノードの1つ以上が、各々の収集された第1のデータパケットの、第1のデータパケットがリレーされるべきエントリノードへのその割り当てを追跡するテーブル又は他のデータ構造を維持してもよい。RDRプロセスでは、複数のデータパケットを、転送ノードにより同じピアノードに同時にリレーすることができる。
【0069】
動作606において、複数のエンコードされたデータパケットが取得される。エンコードされたデータパケットの各々は、ネットワーキングコーディングとローカルエンコーディングベクトルを使用して、収集された第1のデータパケットのうち2つ以上を結合することにより生成される。例えば、XORネットワーキングコーディングスキームを使用して、エンコードされたデータパケットを生成してもよい。
【0070】
いくつかの実装において、エンコードされたデータパケットは、動作604で決定される第1のマッピングにおいて同じ近隣ノードに割り当てられ/関連づけられたデータパケットを結合することにより取得される。
図6cは、エンコードされたデータパケットを取得する一例示的な手法を示す。動作802において、1つ以上の近隣ノードの各々について、ノードは、第1のマッピングにおいて近隣ノードに関連づけられた2つ以上の第1のデータパケットを識別し、識別された第1のデータパケットを結合してエンコードされたデータパケットを生成する。表1を参照すると、表1は、第1のデータパケット(すなわち、Tx1~Tx3)の、近隣ノード(すなわち、ノードA~E)への一例示的な第1のマッピングを示し、データパケットTx2及びTx3は双方とも近隣ノードAに割り当てられ、データパケットTx1及びTx2は双方とも近隣ノードCに割り当てられ、データパケットTx1及びTx2は双方とも近隣ノードEに割り当てられている。この例示的なデータリレーでは、エンコードされたデータパケットTx1+Tx2及びTx2+Tx3は、動作606においてノードで生成され得る。
【0071】
動作608において、生成されたエンコードされたデータパケットの、近隣ノードへの第2のマッピングが決定される。第2のマッピングは、エンコードされたデータパケットの各々を送信のために1つ以上の近隣ノードに割り当てる。少なくともいくつかの実装において、第2のマッピングは、エンコードされたデータパケットを、第1のマッピングにおいて該エンコードされたデータパケットの構成要素の第1のデータパケットのうち少なくとも1つに関連づけられたノードに割り当てる。例えば、第2のマッピングにより、エンコードされたデータパケットTx1+Tx2は近隣ノードC及び/又はEに割り当てられてもよく、エンコードされたデータパケットTx2+Tx3は近隣ノードA又はCに割り当てられてもよい。
【0072】
動作610において、動作606で取得されたエンコードされたデータパケットと動作602で収集された第1のデータパケットが、第1及び第2のマッピングに従って近隣ノードに送信される。いくつかの実装において、ノードは、特定の近隣ノードが第1のマッピングにおいて2つ以上の関連づけられた第1のデータパケットを有することを判定してもよい。そのような場合、2つ以上の関連づけられた第1のデータパケットのサブセットのみが、その近隣ノードに送信されてもよい。例えば、表1に示された例において、データパケットTx2のみが近隣ノードAに送信されてもよい。エンコードされたデータパケットTx2+Tx3もまたノードAに送信されるため、2つのデータパケットのうち1つのみが最終的にノードAにリレーされるとしても、Tx2とTx3の双方をノードAで(例えば、XOR演算により)導出することができる。ネットワークリレー中の伝送を傍受する攻撃者は、ネットワークコーディングスキームの詳細、又はさらにはネットワークコーディングの使用の詳細を知ることなしでは、結合されている第1のデータパケットのサブセットのみが送信される場合、エンコードされたデータパケットの構成要素の第1のデータパケットを導出することができ得ない。
【0073】
エンコードされたデータパケット及び収集された第1のデータパケットの、近隣ノードへのマッピングは、方法600で示唆された順序と異なる順序に従って決定されてもよいことに留意されたい。いくつかの実装において、第1のデータパケットのセットを収集した後、複数のエンコードされたデータパケットが、ネットワークコーディングを使用して収集された第1のデータパケットから生成されてもよく、エンコードされたデータパケットの、近隣ノードへの第1のマッピングが最初決定されてもよい。例えば、第1のマッピングは、各々のエンコードされたデータパケットを、近隣ノードのうち任意に選択されたサブセットに割り当ててもよい。次いで、収集された第1のデータパケットの、近隣ノードへの第2のマッピングを決定することができる。詳細には、第2のマッピングは、第1のデータパケットを、第1のマッピングにおいて第1のデータパケットを1つ以上の他のデータパケットと結合するエンコードされたデータパケットに関連づけられたノードに割り当ててもよい。
【0074】
いくつかの実装において、第1のデータパケット及びエンコードされたデータパケットのリレーは、近隣ノードへのデータパケットの実際の送信に対して遅延が導入されるようにスケジュールすることができる。例えば、収集された第1のデータパケットのうち1つ以上の各々について、近隣ノードへの第1のデータパケットの、次のスケジュールのリレー時間が決定されてもよく、第1のデータパケットの実際のリレーは、所定時間だけ遅延されてもよい。すなわち、第1のデータパケットは、次にスケジュールされたリレー時間の所定時間後にリレーされてもよい。同様に、エンコードされたデータパケットのうち1つ以上の各々について、近隣ノードへのエンコードされたデータパケットの、次にスケジュールされたリレー時間が決定されてもよく、データパケットの実際のリレーは、次にスケジュールされたリレー時間の所定時間後に達成されてもよい。
【0075】
次に、
図7を参照する。
図7は、参加ノード900の簡略化された例をブロック図形式で示す。ノード900は、プロセッサ902を含み、プロセッサ902は、1つ以上のマイクロプロセッサ、特定用途向け集積チップ(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでもよい。ノード900は、値、変数、及びいくつかの例ではプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ904と、有線又は無線ネットワークを通じてのネットワーク接続性を提供するネットワークインターフェース906とをさらに含む。
【0076】
ノード900は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション908を含み、該命令は実行されたときに、プロセッサ902に本明細書に記載の機能又は動作の1つ以上を実行させる。
【0077】
本明細書に記載された装置及び処理、並びにブロックチェーンノードを構成するための記載された方法/処理を実現する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング手法及び言語を用いて実現され得ることが理解されよう。本出願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造、又は他のこのような実装詳細に限定されない。
【0078】
上述の実施形態は、本発明を限定するものでなく例示するものであり、当業者は、別記の特許請求の範囲により定義される本発明の範囲から逸脱することなく多くの代替的な実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に付したいかなる参照符号も、特許請求の範囲を限定するものと解釈してはならない。単語「含んでいる」及び「含む」などは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含み、あるいは~から成る」を意味し、「含んでいる」は、「含んでおり、あるいは~から成っている」ことを意味する。要素の単数形の参照は、このような要素の複数形の参照を除外するものでなく、その逆もまた同様である。本発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を挙げる装置の請求項において、これらの手段のいくつかは、1つの、及び同じアイテムのハードウェアにより具現化されてもよい。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組み合わせが利益をもたらすように使用できないことを示すわけではない。