(57)【要約】本発明は、ブロックチェーンネットワークのノードのための方法に関係があり、コンピュータにより実施される方法は、複数のインターフェイスを有するノードにおいて、トランザクション又はブロックのようなオブジェクトに対応するデータを、ブロックチェーンネットワーク内での分配のために受信又は生成することを有する。トランザクションは、ブロックチェーンで記録されるビットコイントランザクションであることができる。方法は、ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定する。相関行列から、各インターフェイスの相関インデックスが決定される。閾値又はインジケータが計算され、ビットコイントランザクションのようなデータ又はオブジェクトは、データを受信するインターフェイスの相関係数の組に従って、ノードからインターフェイスを介してリレーされる。インジケータ又は閾値は相関行列から計算可能であり、データは、受信インターフェイスと他のインターフェイスとの間の相関がインジケータよりも低い場合にリレーされる。本発明はまた、対応するコンピュータ可読記憶媒体、電子デバイス、ブロックチェーンネットワークのノード、ブロックチェーンネットワークのスーパーノード、又はブロックチェーンネットワークに属する。
2020525895.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも１つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも１つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有する前記方法。
【請求項２】
前記相関行列からインジケータが導出され、
前記受信インターフェイスと前記少なくとも１つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる、
請求項１に記載の方法。
【請求項３】
前記インジケータは、メトリックを決定するために使用され、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する、
請求項２に記載の方法。
【請求項４】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在する、
請求項１に記載の方法。
【請求項５】
前記ノードは、
（ｉ）各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、
（ｉｉ）インターフェイスの対を通じて処理された同一トランザクションと
をモニタすることによって前記相関行列を構築し、それからいずれか２つのインターフェイス間の相関係数を決定する、
請求項１乃至４のうちいずれか一項に記載の方法。
【請求項６】
ｍ（ｍ−１）個の要素を有する前記相関行列は、次の：
【数１０】
2020525895.tif 000013
とおりに、インターフェイスａの相関インデックスを決定するために使用され、
ｍは、ピアノードへ接続されるインターフェイスの数である、
請求項１乃至５のうちいずれか一項に記載の方法。
【請求項７】
ｍ（ｍ−１）個の要素を有する前記相関行列は、次の：
【数１１】
2020525895.tif 000014
とおりに、インターフェイスａについての相関係数の組を決定するために使用される、
請求項１乃至６のうちいずれか一項に記載の方法。
【請求項８】
前記インジケータは、
ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、
前記組から平均又は中央値を導出することと
によって決定される、
請求項１乃至７のうちいずれか一項に記載の方法。
【請求項９】
インターフェイスからのリレーのために選択されるインターフェイスの数は、インターフェイスについての相関係数の組から導出されるメトリックに依存し、
【数１２】
2020525895.tif 000015
から決定され、
ａは、当該インターフェイスであり、ｍは、ピアノードへ接続されるインターフェイスの数であり、ｍ＊（ａ）は、ノードのリレーインターフェイスのために選択されるノードの数であり、θは、前記組｛ｃａ｝内のインターフェイスのセットされた相関係数の平均値（バーｃａ）のようなインジケータと比較されるメトリックであり、ここで、
【数１３】
2020525895.tif 000016
である、
請求項１乃至８のうちいずれか一項に記載の方法。
【請求項１０】
データをリレーすることは、
（ｉ）ノード始動又は起動からの時間であるリセット時間と、
（ｉｉ）新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びノードへ接続するインターフェイスが悪意的であると分類又は判断されることのうちの少なくとも１つを含む変更イベント間の時間である変更時間と
のうちの少なくとも１つに更に基づく、
請求項１乃至９のうちいずれか一項に記載の方法。
【請求項１１】
ノード始動時に、前記ノードはピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーし、前記期間が過ぎた後に、前記ノードは、前記受信インターフェイスと前記他のインターフェイスとの間の相関が前記インジケータよりも低い場合には全てのデータをリレーする、
請求項１０に記載の方法。
【請求項１２】
変更イベントを検出すると、前記相関行列がリセット及び再決定される、
請求項１０又は１１に記載の方法。
【請求項１３】
変更イベントを検出すると、前記ノードは、前記受信インターフェイスと前記他のインターフェイスとの間の相関が前記インジケータを上回る場合に前記ノードからインターフェイスを介して全てのオブジェクトをリレーする、
請求項１０又は１１に記載の方法。
【請求項１４】
インターフェイスからのピアノードの切断を検出すると、前記相関行列はリセット及び再決定される、
請求項１０又は１１に記載の方法。
【請求項１５】
新しいピアノードとインターフェイスとの間の接続を検出すると、該インターフェイスは、
（ｉ）前記リセット時間の期間及び／又は
（ｉｉ）前記変更時間
の間に全てのインターフェイスを介してデータをリレーする、
請求項１０又は１１に記載の方法。
【請求項１６】
実行されるときに、請求項１乃至１５のうちいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体。
【請求項１７】
インターフェイスデバイスと、該インターフェイスデバイスへ結合される１以上のプロセッサと、該１以上のプロセッサへ結合されるメモリとを有し、
前記メモリは、実行されるときに、請求項１乃至１５のうちいずれか一項に記載の方法を実行するように前記１以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、
電子デバイス。
【請求項１８】
ブロックチェーンネットワークのノードであって、
請求項１乃至１５のうちいずれか一項に記載の方法を実行するよう構成される前記ノード。
【請求項１９】
請求項１８に記載のノードを有するブロックチェーンネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、概して、ブロックチェーンネットワークのノードにおける実装に適した、コンピュータにより実施される方法及びシステムに関係がある。多数のトランザクション及び大きいトランザクションブロックを扱うための改良されたブロックチェーンノード構造、ネットワークアーキテクチャ、及びプロトコルが記載される。本発明は、ビットコインブロックチェーンとともに使用することに特に適しているが、これに限られない。
【背景技術】
【０００２】
本文書中、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳（distributed  ledgers）を含むよう語「ブロックチェーン」を使用する。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可（permissioned）及び無許可（un-permissioned）台帳、共有台帳、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。語「ユーザ」は、人又はプロセッサに基づくリソースをここでは指し得る。
【０００３】
ブロックチェーンは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装されるピア・ツー・ピアの電子台帳である。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、それは“妥当性確認”（validated）されなければならない。ネットワークノード（マイナー（miners））は、各トランザクションが有効であることを確かめる作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション（unspent  transaction）（ＵＴＸＯ）に対して、そのｌｏｃｋｉｎｇ及びｕｎｌｏｃｋｉｎｇスクリプトを実行することによって、この妥当性確認作業を実行する。ｌｏｃｋｉｎｇ及びｕｎｌｏｃｋｉｎｇスクリプトの実行がＴＲＵＥになる場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれ得る。よって、トランザクションがブロックチェーンに書き込まれるために、それは、ｉ）トランザクションを受け取る第１ノードによって妥当性確認され、トランザクションが妥当性確認される場合に、ノードはそれをネットワーク内の他のノードにリレーし、ｉｉ）マイナーによって構築された新しいブロックに加えられ、ｉｉｉ）マイニング、すなわち、過去のトランザクションの公開台帳に付加、されなければならない。
【０００５】
ブロックチェーン技術が暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号化によるセキュリティシステムと、ブロックチェーン上で保持され得るデータとの両方の使用を探求し始めている。暗号資産の分野に制限されない自動化されたタスク及びプロセスのためにブロックチェーンが使用される場合に、それは大いに有利である。そのような解決法は、ブロックチェーンの利益（例えば、イベントの永久的な耐タンパー性の記録、分散処理など）を活用しながら、それらの用途を広げることができる。
【０００６】
Blockchain.infoによれば［ビットコイントランザクションレベルは、Blockchain  Luxembourg  S.A.R.L.（ブロックチェーンルクセンブルク有限会社）を介して入手可能であり、http://blockchain.infoから取得可能である。］、２０１７年４月で、ブロックごとのビットコイントランザクションの平均数は約２０００単位であった。近い将来、最大ブロックサイズに対する制約は緩和される可能性があり、ブロックごとのトランザクションの数は大幅に増大する可能性がある。
【０００７】
競争力のある暗号通貨は、大量の未承認トランザクションを可能な限り速く伝播する必要がある。比較として、Visaの電子的口座決済は、ピーク容量が１秒あたり５万６千件のトランザクションである［VISAトランザクションレベルは、２０１５年６月にVisa社によって発行された文書“Visa  Inc.  at  a  Glance”内でまとめられている。それは、http://usa.visa.com/dam/VCOM/download/corporate/media/visa-fact-sheet-Jun2015.pdf.から取得可能である。］。
【０００８】
インベントリによるビットコインネットワーク内の新しいトランザクションの交換のための現在の３ステップメッセージングプロトコルは、現在の標準（１秒あたり〜５件のトランザクション［Decker,  Christian  and  Wattenhofer,  Roger  (2013).  Information  propagation  in  the  bitcoin  network.  IEEE  Thirteenth  International  Conference  on  Peer-to-Peer  Computing  (P2P),  2013］）よりも数桁大きいトランザクション量の迅速な分散に対処するには不十分である。
【０００９】
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。本明細書で記載される解決法により、ビットコインネットワークは大量のトランザクションの伝播を処理可能となる。
【００１０】
ビットコインネットワークを介してデータパケット又はトランザクションを送信する既知の方法、例えば、３ステップメッセージングによる新しいトランザクションの分散、により、ネットワークにわたるデータパケットの伝播及び分散は遅くなる。準備段階では、ノードの内外へのキューが生じる。
【発明の概要】
【００１１】
全体として、本発明は、現在のブロックチェーン容量よりも数桁大きい増大したトランザクション量の処理及び伝播のための新規のアプローチに存する。これは、ノード間の通信を減らすことによってネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることで達成可能である。ボトルネックによって引き起こされるノードの内外への長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。
【００１２】
この方法によれば、ノードは、（ｉ）ピアノードに接続されるインターフェイスの数に依存せず、且つ、（ｉｉ）ノードのインターフェイスに関連した変更に依存しないように、適応的に動作することができ、それにより、新しい接続、接続の切断、及び悪意のあるノードが考慮され、ネットワークのインテグリティが維持される。
【００１３】
この方法では、管理され得るノード上のインターフェイスの数に制限はなく、方法はネットワーク及びノードの環境に適応するので、ネットワークの性能及びサイズは制限されない。非効率的な伝送は最小限にされ、悪意のあるノードは回避される。
【００１４】
この方法によれば、ブロックチェーンネットワークの性能は向上し、ブロックチェーンネットワーク又はブロックチェーンネットワークと連携するオーバーレイネットワークは改善される。
【００１５】
よって、本発明によれば、添付の特許請求の範囲で定義される方法が定義される。
【００１６】
よって、ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも１つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも１つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有する前記方法を提供することが望ましい。
【００１７】
データは、トランザクション又はブロックのようなオブジェクトに対応することができる。
【００１８】
前記相関行列からインジケータが導出され、前記受信インターフェイスと前記少なくとも１つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる。代替的に、リレーは、相関がインジケータよりも高い場合に起こることができる。
【００１９】
インジケータは閾値であることができる。インジケータは、データを受信するインターフェイスと複数のインターフェイスとの間の相関のレベル、例えば平均値など、を表すことができる。平均値は、受信インターフェイスと他のインターフェイスとの間の相関係数の平均であることができる。
【００２０】
前記インジケータは、メトリックを決定するために使用され、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する。
【００２１】
メトリックは、どのインターフェイスからデータがリレーされるべきかを選択するために使用される命令と見なされ得る。命令は、閾値又はインジケータに従ってセットされ得るか、あるいは、それに依存し得る。
【００２２】
メトリックは、ノードと１以上の他のノードとの間の（個々の）インターフェイスの相関を順位付けするために使用されてよい。これは、ネットワーク内のノードピアによって提供されるリレーの品質をより良く理解し、それに対応することができるという利点を提供し得る。これについては、以下でより詳細に記載される。これにより、ネットワーク動作をよりきめ細かく理解し、適切に対応できるようになるだけでなく、悪意のある動作の検出及び対応に関して利点が得られる。従って、本発明は、より効率的且つより安全なネットワークを提供することができる。
【００２３】
ネットワーク内の各ノードは、受け取られたトランザクションフローにのみ基づいて、相関行列と関連付けられてよい。悪意のある情報の伝播を回避するために、ネットワーク内のノード又はピア間で相関情報は交換されなくてよい。
【００２４】
例として、命令は、インターフェイスがインジケータを下回る相関インデックスを有していることを要求し得る。命令は、相関インデックスがインジケータの上にあるか又は下にあるかに応じて、どのインターフェイスがデータをリレーするかを決定することができる。
【００２５】
インデックスがインジケータを下回るときのデータリレーの例は、通常の定常状態のネットワーク状態であることができる。‘定常状態’条件では、インターフェイス及び接続されるピアの数は変化せず、相関行列は変化しない。
【００２６】
インデックスがインジケータを上回るときのデータリレーの例は、ノードに対する新しいピアノードの接続の追加などの、状態の変化であることができる。異なる命令は、異なるインターフェイスに適用することができる。
【００２７】
分配されるデータは、マイナー、ピアノード及びフルノードからのデータを含め、ブロックチェーンネットワークから受け取られるデータを含むことができる。ノードの各インターフェイスで処理されるデータ間の相関は、ノードで受信されるデータパケット又はオブジェクトの重複を考慮することができる。インジケータは、ノードの各インターフェイスの相関インデックスの平均又は中央値であることができる。インジケータは、最低相関インターフェイスと最高相関インターフェイスとの間のポイントを定義することができる。データ又はオブジェクトは、相関インデックスがインジケータを下回るときにインターフェイスからリレーされ得る。相関の程度が低いインターフェイスは、相関の高いインターフェイスがデータを取得すると安全に想定できるため、優先順位を付けられ得る。
【００２８】
ノードはインターフェイスを介してデータを処理し、該処理は、トランザクション又はブロックのようなデータ又はオブジェクトを送信及び受信することを含む。
【００２９】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在することができる。インターフェイスは、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤであることができる。
【００３０】
前記ノードは、（ｉ）各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、（ｉｉ）インターフェイスの対を通じて処理された同一トランザクションとをモニタすることによって前記相関行列を構築し、それからいずれか２つのインターフェイス間の相関係数を決定することができる。
【００３１】
相関行列は、ｍ（ｍ−１）個の要素を有することができ、次の：
【数１】
2020525895.tif 000003
とおりに、インターフェイスａの相関インデックスを決定するために使用され得る。ここで、ｍは、ピアノードへ接続されるインターフェイスの数である。
【００３２】
相関行列は、ｍ（ｍ−１）個の要素を有することができ、次の：
【数２】
2020525895.tif 000004
とおりに、インターフェイスａについての相関係数の組を決定するために使用され得る。
【００３３】
前記インジケータは、ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、前記組から平均又は中央値を導出することとによって、決定され得る。
【００３４】
インジケータは、どのインターフェイスがデータをリレーするかを決定するために命令の組によって使用される。
【００３５】
データをリレーするインターフェイスの数を決定するためのインジケータは、ノード始動又は起動からの時間であるリセット時間と、新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びインターフェイスが悪意のあるノードへ接続することのうちの少なくとも１つを含む変更イベント間の時間である変更時間とのうちの少なくとも１つに更に基づくことができる。リセット時間は、新しいノードのために使用され得る。変更時間は、既存のノードのために使用され得る。
【００３６】
ノード始動時に、前記ノードは、該ノードに隣接するか又は直接接続されるノードのようなピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーすることができ、前記期間が過ぎた後に、前記ノードは、前記インジケータよりも下にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーする。
【００３７】
変更イベントを検出すると、前記相関行列がリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【００３８】
変更イベントを検出すると、前記ノードは、前記インジケータよりも上にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーすることができる。
【００３９】
インターフェイスからのピアノードの切断を検出すると、前記相関行列はリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【００４０】
新しいピアノードへの接続を検出すると、該ピアノードはインターフェイスへ接続され、該インターフェイスは、前記リセット時間の期間及び／又は前記変更時間の間に全ての他のインターフェイスを介してデータをリレーすることができる。
【００４１】
前記ノードは、原データと、該原データを処理及び送信するために選択されるインターフェイスの数とを生成することができる。これは、リレーのために選択されるインターフェイスの現在又は名目上の数とインターフェイスの総数との間の数にインジケータを高めることによって、増大され得る。
【００４２】
実行されるときに、請求される方法のいずれかを実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体を提供することも望ましい。
【００４３】
インターフェイスデバイスと、該インターフェイスデバイスへ結合される１以上のプロセッサと、該１以上のプロセッサへ結合されるメモリとを有し、前記メモリは、実行されるときに、請求される方法のいずれかを実行するように前記１以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、電子デバイスを提供することも望ましい。
【００４４】
ブロックチェーンネットワークのノードであって、請求される方法のいずれかを実行するよう構成される前記ノードを提供することも望ましい。
【００４５】
請求されるノードを有するブロックチェーンネットワークを提供することも望ましい。
【００４６】
本発明は、ビットコイン（ＢＴＣ）ブロックチェーンとともに使用することに適しているが、これに限られない。
【００４７】
ブロックチェーンネットワークのスーパーノードであって、請求される複数のノードと、ブロックチェーンを記憶する共有記憶エンティティとを有し、前記共有記憶エンティティは、共通記憶ノード、分散ストレージ、又はそれらの組み合わせのいずれかであり、前記複数のノードによってアセンブルされるブロックは、前記共有記憶エンティティへ送られて記憶され、これによって、該共有記憶エンティティは、前記ブロックチェーンを保持する、前記スーパーノードを提供することも望ましい。共有記憶エンティティは、少なくとも１００ギガバイトの記憶容量を有する。
【００４８】
請求される複数のスーパーノードを有するブロックチェーンネットワークであって、前記複数のスーパーノードは前記ブロックチェーンネットワーク上で接続され、各スーパーノードの共有記憶エンティティは、ブロックチェーンのコピーを記憶するよう構成され、前記ブロックチェーンネットワークは、少なくとも１０のスーパーノードを有する、前記ブロックチェーンネットワークを提供することも望ましい。
【００４９】
かような改善された解決法が、現在考案されている。
【００５０】
本発明のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【００５１】
【図１】ブロックの全体構造を示す。
【図２】ユーザがトランザクションを送信してからブロックチェーンに至るまでの手順を示す動作線図に関して、ビットコインネットワークの改良されたアーキテクチャを示す。
【図３】ＭＥＭＰＯＯＬ内で承認を待つトランザクションの凝集体サイズの例を示すグラフを示す。
【図４】内部中央集権的な記憶設備へリンクされた複数のノードを示す。
【図５】各ノードが分散ＭＥＭＰＯＯＬ及び分散記憶設備の両方の部分である構成を表す。
【図６】ビットコインネットワーク上のノードを介してアプリケーションレベルで直列に送信及び受信されるネットワークパケットを表す。
【図７】ビットコインネットワークにわたるノード間の単一トランザクションがとるルールを表す。
【図８】ピアノードへ接続されるインターフェイスの相関係数を示す相関行列の例示である。
【発明を実施するための形態】
【００５２】
本明細書では、大きいギガバイトサイズのブロックを処理及び記憶することの問題に対する解決法が記載される。
【００５３】
＜ブロックチェーンネットワークのタイプ及び妥当性確認ノード＞
ブロックチェーンネットワークは、他のメンバーからの招待なしで又は承諾なしで、誰でも参加することができるピア・ツー・ピアの非会員制（open-membership）ネットワークとして記載され得る。ブロックチェーンネットワークが動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワークに参加し得る。そのような分散した電子デバイスはノードと呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【００５４】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワークのノードを形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、コンピュータファーム、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【００５５】
ブロックチェーンネットワークのノードは、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワークは、少なくとも部分的にインターネット上で実装され、ノードのいくつかは、地理的に散開した位置に配置されてよい。
【００５６】
現在、ノードは、ブロックチェーン上の全てのトランザクションの大域的な台帳を保持する。それは、ブロックにグループ分けされ、ブロックの夫々は、チェーン内の前のブロックのハッシュを含む。大域的な台帳は分散台帳であり、各ノードは、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノードによるトランザクションは、大域的な台帳の有効性が保たれるように、他のノードによって検証される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解される。
【００５７】
各トランザクションは、通常は、１つ以上の入力及び１つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであってよい。その値は、次いで、未使用トランザクション出力（ＵＴＸＯ）としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
【００５８】
ノードは、それらの機能性に応じて、タイプ又はカテゴリが様々であることができる。ノードに関連した４つの基本機能、すなわち、ウォレット（wallet）、マイニング（mining）、完全ブロックチェーンメンテナンス（full  blockchain  maintenance）、及びネットワークルーティング（network  routing）が存在することが示唆されてきた。それらの機能のバリエーションが存在し得る。ノードは、それらの機能のうちの１よりも多くを有し得る。例えば、“フルノード”（full  node）は４つ全ての機能を提供する。例えば、デジタルウォレットで実装され得るようなライトウェイトノード（lightweight  node）は、ウォレット機能及びネットワークルーティング機能のみを特色とし得る。完全ブロックチェーンを保持することよりむしろ、デジタルウォレットは、ブロックをクエリするときにインデックスとなるブロックヘッダの経過を追ってよい。ノードは、ＴＣＰ／ＩＰ（Transmission  Control  Protocol）のような接続指向のプロトコルを用いて互いと通信する。
【００５９】
ノードの更なるタイプ又はカテゴリ、すなわち、マーチャント（merchant）ノード（ここでは、時々、「Ｍノード」と呼ばれる。）が提供されることがある。Ｍノードは、トランザクションの高速伝播に焦点を当てるよう設計される。Ｍノードは、完全なブロックチェーンを保持してもしなくてもよく、マイニング機能を実行しない。その意味で、Ｍノードは、ライトウェイトノード又はウォレットに類似している。しかしながら、Ｍノードは、トランザクションの高速伝播を可能にするための追加の機能を含む。Ｍノードの運用上の焦点は、未承認トランザクションの迅速な妥当性検証及び他のＭノードへの伝播である。他のＭノードから、未承認トランザクションは、ブロックチェーンネットワーク内の他のノードへ迅速にプッシュされる。この機能を促進するために、Ｍノードは、より多くの着信接続、特に発信接続を許可される。それらは、さもなければ、管理プロトコル下のノードに対して許可され得る。
【００６０】
Ｍノードは、集合的に、マーチャントネットワーク（又は「Ｍ−ｎｅｔ」）と呼ばれることがある。語「マーチャント」は、「特殊化した」（specialized）を意味すると解釈されることがある。Ｍノードは、ブロックチェーンネットワーク内に組み込まれ得る。各Ｍノードは、Ｍノードの機能を実行することができることを確かにする特定のハードウェア及び性能機能を満足するブロックチェーンネットワーク上の特殊ノードである。すなわち、Ｍ−ｎｅｔは、ブロックチェーンネットワーク内でそれを通じて分散されたサブネットワークと見なされ得る。Ｍノードは、１以上の専用の機能又はサービスを実行するよう配置及び構成されてよい。
【００６１】
Ｍ−ｎｅｔが確実に実行され、特定のセキュリティレベルでサービスを提供することができるために、Ｍノードは、Ｍ−ｎｅｔ全体の適切な外観を維持する必要があり、よって、効率的なルーティングプロトコルが適所にある必要がある。Ｍノードが開始トランザクションを受け取るたびに、Ｍノードはそれを他のノードに加えていくつかの他のＭノードへブロードキャストする必要がある。Ｍ−ｎｅｔとの関連で、これは、複数巡回セールスマン問題（multiple  salesman  problem）（ＭＴＳＰ）に対する解決法を見つけることを意味する。この問題に対処する解決法は手に余るほどあり、それらのうちのいずれか１つの解決法がＭ−ｎｅｔで用いられてよい。Ｍノードは夫々、何らかの最新の形でルーティング最適化を実行する。
【００６２】
いくつかの実施で、Ｍ−ｎｅｔは、非中央集権的なＩＰマルチキャストタイプのネットワークとして実装される。すなわち、ブロックチェーンネットワークへの着信トランザクションの高速な拡散を可能にするために、マルチキャストが使用されてよく、トランザクションがＭ−ｎｅｔ全体に迅速にブロードキャストされることを確かにして、全てのＭノードがその場合にトランザクションをブロックチェーン内の他のノードへ転送することを可能にする。
【００６３】
マルチキャストネットワークアーキテクチャは、情報を受信することに関心があるノードの夫々に対するデータ複製なしで、送り先ノードのグループへのデータの同時の配信を可能にする。ノードがマルチキャスト伝送を受信したい場合に、そのノードはマルチキャストグループに参加し（登録フェーズ）、その後に、マルチキャストグループに対して送信された全てのデータを受信することができるようになる。ＩＰマルチキャストは、受信者がいくつ存在するのかの事前知識を必要としないことで、より大きい受信者母集団に対応することができ、ネットワークインフラストラクチャは、発信元がパケットを一度しか送信することを求められないことで、効率的に使用される。マルチキャストネットワークの性質上、接続指向のプロトコル（ＴＣＰなど）の使用は、より多数の他のノードとの同時の通信のため、実用的ではない。従って、コネクションレスプロトコルが使用される。
【００６４】
ビットコインなどのいくつかのブロックチェーンネットワークは、ノード間通信のためにＴＣＰを使用する。ＴＣＰを用いて送信されるデータパケットは、順序付けのために使用される関連するシーケンス番号を有している。
【００６５】
これに加えて、ＴＣＰプロトコルは、接続を確立する場合及び接続を終了する場合の両方で、スリーウェイハンドシェイク（three-way  handshake）プロシージャを伴う。ＴＣＰを介して送信されるパケットは、オーバーヘッドと関連付けられており、それらは、関連するシーケンス番号を有し、スリーウェイハンドシェイクプロトコルが存在する。接続を確立することにおいて、１２８〜１３６バイトが送信され、一方、接続を閉じることは、１６０バイトがかかる。よって、パケット伝送におけるハンドシェイクは、最大２９６バイトがかかる。
【００６６】
更には、ノードが新しいトランザクションを受け取るとき、それは、他のノードに、トランザクションのハッシュを含むインベントリ（inventory）（ＩＮＶ）メッセージを通知する。ＩＮＶメッセージを受け取るノードは、そのトランザクションのハッシュが以前に確認されているかどうかをチェックする。そうでない場合には、ノードは、ＧＥＴＤＡＴＡメッセージを送ることによってトランザクションを要求する。ノードＡからノードＢへトランザクションを送るのに必要な時間は、Ｔ１＝妥当性確認＋ＴＣＰ（ＩＮＶ＋ＧＥＴＤＡＴＡ＋ＴＸ）である。ここで、ＴＣＰ（）は、時間に関してＴＣＰハンドシェイクプロシージャによって導入されるオーバーヘッドを示す。
【００６７】
＜ＴＣＰプロトコル及びスリーウェイハンドシェイク＞
現在のピア・ツー・ピアのビットコインプロトコルは、１０のデータメッセージと、１３の制御メッセージとを定義する。これに関連して、オブジェクト転送（object  transfer）に関係があるデータ又はデータパケットの転送は、個々のトランザクション又はブロックを指すことがある。
【００６８】
ビットコインＰ２Ｐプロトコルによって使用されるメッセージの完全なリストが知られており、完全なリストについては、http://bitcoin.org/en/developer-referenceから取得可能なBitcoin  Developer  Referenceを参照されたい。
【００６９】
メッセージのサブグループは、オブジェクトの要求又は分配に関係がある。これらのメッセージは、ＢＬＯＣＫ、ＧＥＴＤＡＴＡ、ＩＮＶ、ＴＸ、ＭＥＭＰＯＯＬ及びＮＯＴＦＯＵＮＤである。
【００７０】
ＢＬＯＣＫメッセージは、単一の直列化されたブロックを送信し、２つの異なる理由のために送信され得る。ノードは、インベントリタイプのＭＳＧ＿ＢＬＯＣＫによりブロックを要求するＧＥＴＤＡＴＡメッセージに（ノードがリレーのために利用可能なそのブロックを有しているという条件で）応答して、それを常に送信するか、あるいは、代替的に、ノード又はマイナーは、それらの新たにマイニングされたブロックをそれらのピアへブロードキャストする非送信請求ブロックメッセージを送信し得るかのいずれかである。
【００７１】
ＧＥＴＤＡＴＡメッセージは、１以上のデータオブジェクトを他のノードに要求する。通常、オブジェクトは、ＩＮＶメッセージを用いて予め受信されたインベントリによって要求される。ＧＥＴＤＡＴＡメッセージに対する応答は、ＴＸメッセージ、ＢＬＯＣＫメッセージ、又はＮＯＴＦＯＵＮＤメッセージであることができる。
【００７２】
ＧＥＴＤＡＴＡメッセージは、メモリプール又はリレーセットにもはやない過去のトランザクションのような任意のデータを要求するためには使用され得ない。ＧＥＴＤＡＴＡメッセージは、オブジェクトを、以前にそれらを公示したノードにオブジェクトを要求するために使用されるべきである。
【００７３】
ＩＮＶメッセージ（インベントリメッセージ）は、送信側ピアが知っているオブジェクトの１以上のインベントリを送信する。それは、新しいトランザクション又はブロックを知らせるために請求なしで、あるいは、ＧＥＴＢＬＯＣＫＳメッセージ又はＭＥＭＰＯＯＬメッセージに応答して、送信され得る。受信側ピアは、未だ確認されたことがないオブジェクトを要求するために、ＩＮＶメッセージからのインベントリを予め記憶されているインベントリと比較することができる。
【００７４】
ＴＸメッセージは、単一のトランザクションを送信する。それは、要求されるトランザクションの識別（ＩＤ）とともにインベントリを用いてトランザクションを要求するＧＥＴＤＡＴＡメッセージに応答して送信される。
【００７５】
ＭＥＭＰＯＯＬメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのＩＤを要求する。
【００７６】
このメッセージに対する応答は、トランザクションＩＤを含む１以上のＩＶメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のＩＮＶメッセージを送信する。フルノードは、ＭＥＭＰＯＯＬメッセージを使用して、ネットワーク上で利用可能な未承認トランザクションのほとんど又は全てを迅速に集めることができる。ノードは、ＭＥＭＰＯＯＬを送信する前にフィルタをセットして、そのフィルタに合うトランザクションのみを受け取ることができる。
【００７７】
ＮＯＴＦＯＵＮＤメッセージは、受信側ノードでリレーのために利用可能でないオブジェクトを要求するＧＥＴＤＡＴＡメッセージに対する応答である。例えば、ノードは、より古いブロックから使用済みトランザクションを取り除くことがあり、従って、そのようなブロックの伝送は不可能である。
【００７８】
メッセージサブグループは、オブジェクトの信頼性及び効率に関係がある。これらのメッセージはＦＥＥＦＩＬＴＥＲ、ＰＩＮＧ、ＰＯＮＧ、及びＲＥＪＥＣＴである。
【００７９】
ＦＥＥＦＩＬＴＥＲメッセージは、トランザクションを、手数料率が指定された値を下回る場合に、ＩＮＶメッセージにおいてリレーしないようにするための受信側ピアへの要求である。ＭＥＭＰＯＯＬ制限は、手数料率が低く、マイニングされたブロックに含まれる可能性が低い攻撃及びスパムトランザクションに対する保護を提供する。受信側ピアは、メッセージを無視し、ＩＮＶメッセージ内のトランザクションにフィルタリングしないことを選択し得る。
【００８０】
ＰＩＮＧメッセージは、受信側ピアが依然として接続されていることを確認するのに役立つ。ＰＩＮＧメッセージを送信するときにＴＣＰ／ＩＰエラーが発生する場合に（例えば、接続タイムアウト）、送信側ノードは、受信側ノードが切断されたと想定することができる。ＰＩＮＧメッセージへの応答は、ＰＯＮＧメッセージである。メッセージはナンス（nonce）を含む。
【００８１】
ＰＯＮＧメッセージは、ＰＩＮＧメッセージに応答して、ＰＯＮＧ側ノードが依然として動作していることをＰＩＮＧ側ノードへ知らせる。デフォルトにより、ビットコインコアは、２０分内にＰＩＮＧメッセージに対する応答がない如何なるクライアントからも切断する。ノードがレイテンシを追跡することを可能にするように、ＰＯＮＧメッセージは、対応するＰＩＮＧメッセージで受け取られた同じナンスを返送する。
【００８２】
ＲＥＪＥＣＴメッセージは、受信側ノードに、それの以前のメッセージのうちの１つが拒絶されたことを知らせる。メッセージを拒絶する理由の例として、
・メッセージが復号されなかったこと、
・ブロックが有効でないこと、すなわち、無効なプルーフ・オブ・ワーク又は無効なシグニチャが提供されたこと、
・トランザクションが有効でないこと、すなわち、入力よりも大きい出力値又は無効なシグニチャが提供されたこと、
・ブロックがもはやサポートされていないバージョンを使用していること、
・接続ノードが、拒絶側ノードがサポートしていないプロトコルバージョンを使用していること、
・トランザクションが、以前に拒絶されたトランザクションと同じ入力を使用していること（二重支払い）、
・トランザクションが、リレー又はマイニングされるのに十分な料金又は優先度を有していなかったこと
がある。
【００８３】
一例として、ビットコインネットワーク上のノード‘ｉ’及び‘ｊ’は、次のステップを用いて通信する：
１．ノードｉは、トランザクションのリストを含むＩＮＶメッセージを送信する。  
２．ノードｊは、以前に知らされたトランザクションのサブセットを要求するＧＥＴＤＡＴＡメッセージにより応答する。  
３．ノードｉは、要求されたトランザクションを送信する。
【００８４】
ここで、方法は、少なくともデータの分散を改善するように、ブロックチェーンネットワークのプロトコルを最適化しようと努める。
【００８５】
図６は、データが、ネットワークパケットの形で、オペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで直列に送信及び受信される実際のシナリオを表す。
【００８６】
トランザクションｘが単一のイーサネット（登録商標）／ＩＰパケットに収まるとすれば、ｍ個のピアへのその伝送は、ｍ個の異なる出力パケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方は、他の情報とともに、
・直列化されたトランザクション、
・送信側／受信側ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤ
を含む。
【００８７】
着信トランザクションが処理されるための予想時間は、入力キューＬｉの（パケット単位の）平均長さに依存し、一方、処理されたトランザクションが正しく送信されるための予想時間は、出力キューＬｏの平均長さに依存する。
【００８８】
従って、トランザクションの効率的なリレーは、Ｌｉ及びＬｏの両値の低減に依存する。しかし、ピアへのトランザクションの選択的なリレーのための確率的モデルは、Ｌｏに直接影響し、誘導によりＬｉにも影響する。
【００８９】
現在のビットコイン実施では、ＩＮＶ及びＧＥＴＤＡＴＡメッセージパケットは、トランザクションと同じようにＩ／Ｏバッファにキューイングされ、送信遅延及び受信遅延に深刻な影響を及ぼす。
【００９０】
＜効率的なトランザクション伝播−確率的リレー＞
ノードｉがインベントリ交換の使用なしで、新しいトランザクションを直接送信することを許可された場合には、トランザクションは、より速い速度でネットワーク内に広められる。ただし、何らかの規制がなければ、ネットワークは氾濫することになる。
【００９１】
従って、本発明は、膨大な量の不必要なトランザクションの伝送を回避するために、ノードからピアノードへのデータ又はオブジェクトの選択的なリレーのためのメカニズムを使用する。よって、本発明は、改善されたネットワーク効率を提供し、ネットワークによって必要とされるリソースの量を低減する。メカニズムは、確率的モデルであることができる。
【００９２】
伝送リレーのためのメカニズム又は確率的モデルは、３つのノードｉ、ｊ及びｋがビットコインネットワークの一部であって互いに接続されている図７を参照して、仮定に基づいている。ノードｉは、ノードｊ及びノードｋへ直接接続されている。ノードｊ及びノードｋは、ノードｉを介して又はビットコインネットワークを介して間接的に接続されている。
【００９３】
ノードｉは、トランザクションｒの形でデータを処理する２つのインターフェイスａ及びｂを有して示されている。トランザクションはノードｉで開始され、それがノード間でビットコインネットワークにわたって伝播されるにつれて様々な段階を経る。段階には：
・インターフェイスａからピアノードへの伝送のためにトランザクションを処理して、ノードｊで受け取られるようにする第１段階ｒ１、
・ノードｊがビットコインを介した伝送のためにトランザクションを処理して、ノードｋで受け取られるようにする第２段階ｒ２、及び
・ノードｋが、インターフェイスｂでトランザクションを受信するピアノードｉへの伝送のためにトランザクションを処理する第３段階ｒ３
が含まれる。
【００９４】
疑念を回避するために、ｒ１、ｒ２、及びｒ３は同じトランザクションであり、添え字はリレーを表す。
【００９５】
以下のように仮定される：
・ノードがインターフェイス（ｂ）から、他のインターフェイス（ａ）からの伝送のために処理された同じトランザクションを受け取る場合に、２つのインターフェイスはある程度の相関を共有する。  
・ノードｉで生成されたトランザクションが所与のｊの入力インターフェイスを通じてノードｊに届く場合に、ノードｉで生成された第２のトランザクションは、高い確率で同じインターフェイスを通じてｊに届く。
【００９６】
再び図７を参照すると、リレー相関の一例として、ノードｊ及びｋは、ノードｉのピアである。ｉが新しいトランザクションを生成し、それをノードｊへリレーし、後に同じトランザクションがノードｋからノードｉで受け取られる場合に、ｊ及びｋは、ネットワークを通る論理パスを共有する。従って、発信元ノードは、同じ情報をそのピアノードの両方へリレーする必要がない。明確化のために言うと、ノードｉは、ノードｋがトランザクションｒを受け取る確率が高いので、そのトランザクションｒをノードｋへ送信する必要がない。同様に、逆に、ノードｋは、トランザクションｒを受け取る確率が高いので、そのトランザクションｒをノードｉへ送信する必要がない。ロジックは両方の方向で有効である。
【００９７】
＜ノードのインターフェイス間の関係＞
図８は、ピアノードへ接続される５つのインターフェイスａ、ｂ、ｃ、ｄ及びｅを有しているノードｉについて決定され得る局所相関行列Ｃの一例である。行列は、着信トラフィックについての相関の程度を表す。この行列の形成及び適用については、以下で記載される。図８に示される値は、例示のためである。
【００９８】
各ノードは、一例として、インターフェイスａ及びｂから受け取られるトランザクション間の相関を表す係数ｃａｂを決定することによって、相関行列Ｃを構築する。そのような係数は、インターフェイスの全ての対の間で決定される。
【００９９】
各インターフェイスから受け取られるトランザクションＩＤのリストを使用して、ｔａ及びｔｂを、夫々インターフェイスａ及びｂから受け取られるトランザクションの数とし、ｔａｂを、ａ及びｂの両方から受け取られる二重のトランザクションの数であるとする。インターフェイスａ及びｂの相関係数は、式１：
【数３】
2020525895.tif 000005
によって定義される。
【０１００】
慣習として、係数ｃａｂについて、そのインデックスの辞書式順序ａ＜ｂが仮定される。すなわち、ａは‘０’を割り当てられ（ａ＝０）、ｂは‘１’を割り当てられ（ｂ＝１）、ｃは‘２’を割り当てられ（ｃ＝２）、以降、インターフェイスＩＤと数値との間で同様に続く。インターフェイスの組｛ａ，ｂ，ｄ，ｅ｝についての相関係数を考えると、インターフェイスａ及びｂは、ｃａｂ＞ｃｄｅの場合に、インターフェイスｄ及びｅよりも相関性がある。
【０１０１】
主対角線上の要素は有意でないから、行列サイズは、図８に示されるように、ｍ（ｍ−１）個の要素まで減らされ得る。
【０１０２】
＜ノードインターフェイスへの値の割り当て＞
インターフェイスａの全体的な相関インデックスは、次の：
【数４】
2020525895.tif 000006
とおりに、式２で定義される。
【０１０３】
図８の相関行列を一例として使用すると、インターフェイスａの相関インデックスｃａは、各インターフェイス間の相関係数の和として表され得る。
ｃａ＝ｃａｂ＋ｃａｃ＋ｃａｄ＋ｃａｅ＝０．２＋０．８＋０．２＋０．２＝１．４
【０１０４】
このメトリックは、個々のインターフェイスの相関を順位付けし、ノードピアによって提供されるリレーの品質を理解するために使用され得る。一例として、ａの相関インデックスが平均値よりも著しく高い場合に、ａから受け取られるトランザクションは大いに冗長である。
【０１０５】
対照的に、ａの相関インデックスが平均値よりも著しく低い場合に、（ｉ）ａから受け取られるトランザクションはいくらか一意的であるか、あるいは、（ｉｉ）ａへ接続されるピアノードは悪意のある動作をしているかのどちらかである。悪意のある動作については、以下で更に詳細に論じられる。
【０１０６】
各ノードは、受信されたトランザクションフローにのみ基づいてそれ自身の相関行列を構築することが留意されるべきである。悪意のある情報の伝播を回避するために、ノード又はピア間で相関情報は交換されない。
【０１０７】
＜インジケータ＞
インターフェイスａからの着信トランザクションを考えると、ノードは、範囲［ｍｍｉｎ，ｍｍａｘ］内のピア数ｍ＊へのリレーを実行する。
【０１０８】
現在の値ｍ＊は、インターフェイスａの相関インデックスを含むｍ−１個の相関係数｛ｃａ｝の現在の分布に依存する。
｛ｃａ｝＝［ｃ０ａ，ｃ１ａ，・・・，ｃａｍ−１］
すなわち、｛ｃａ｝は、相関係数のリスト又は組であり、この組は、インターフェイスａについての係数を有する。相関インデックスは、図８及び上記の例により、係数の和、すなわち、ｃａ＝ｃａｂ＋ｃａｃ＋ｃａｄ＋ｃａｅである。
【０１０９】
インターフェイスａからのリレーのために選択されるインターフェイスの数ｍ＊（ａ）は、組｛ｃａ｝の各要素のメトリックθｉ（ａ）の計算に依存する：
【数５】
2020525895.tif 000007
【０１１０】
メトリックθｉ（ａ）は、スイッチ又はセレクタとして機能し、インターフェイスがデータをリレーするか否かを示す。例えば、インターフェイスは、そのメトリックが‘１’である場合にデータをリレーし、そのメトリックが‘０’である場合にデータをリレーしない。
【０１１１】
バーｃａを組｛ｃａ｝内の係数の平均として定義することによって、メトリックθｉ（ａ）は、対応する相関係数ｃａｉがバーｃａよりも低い場合に、ｍ＊（ａ）に寄与する：
【数６】
2020525895.tif 000008
【０１１２】
θｉ（ａ）は、代替的に、平均値ではなく、｛ｃａ｝の中央値に基づいてもよい。メトリックθｉ（ａ）はまた、統計解析を用いて組｛ｃａ｝から導出される代替値に基づいても、あるいは、それから決定されてもよく、例えば、メトリックθｉ（ａ）は、対応する相関係数ｃａｉが組｛ｃａ｝の平均よりも少なくとも１標準偏差下回る場合に、ｍ＊（ａ）に寄与する。
【０１１３】
一例として、図８のインターフェイスａからの着信トランザクションは、｛ｃａ｝に含まれる相関係数に従って、ｍ＊（ａ）個の最小相関インターフェイスへリレーされる。リレーのために選択される｛ｃａ｝のサブセットは、｛ｃ＊ａ｝と定義される。
【０１１４】
図８の例に戻ると、｛ｃａ｝＝｛０．２，０．８，０．２，０．２｝の場合に、
【数７】
2020525895.tif 000009
【０１１５】
従って、インターフェイスａからのリレーのために選択されるインターフェイスの数ｍ＊（ａ）は‘３’である。メトリックθｉ（ａ）を決定する平均値又はインジケータを下回るサブセット内の係数は、｛０．２，０．２，０．２｝であり、これらの係数は｛ｃ＊ａ｝に対応し、インターフェイスｂ、ｄ、ｅがリレーのために選択される。
【０１１６】
上記の例でメトリックを決定するために使用された係数の‘切り捨て’点又はレベルは、係数の平均‘０．３５’であった。この閾値又はインジケータはメトリックθｉ（ａ）を決定し、それからｍ＊（ａ）が決定される。
【０１１７】
全体として、従って、方法は、インジケータに従ってインターフェイスからデータをリレーすると言える。前記インジケータは、各インターフェイスについて、それがデータをリレーするかどうかを決定するメトリックを決定するために使用され得る。
【０１１８】
インジケータは、上記の例ではメトリックを決定するために使用されたが、他の因子が各インターフェイスのメトリックに作用する可能性がある。各インターフェイスのメトリックは、相関行列への変更に従って計算され得る。
【０１１９】
＜変更への対応＞
上記の通り、どのインターフェイスが情報をリレーするために使用されるべきかの決定は、行列が変更されない定常状態条件を仮定する。
【０１２０】
プロトコルの更なる詳細は、これより、変更、例えば、ピアノードがネットワークに加わり、ノードとの新たな接続を形成する場合、又はピアノードがネットワークから去り、ノードのインターフェイスへもはや接続されていない場合、にどのようにしてプロトコルが対応することができるかの説明に関して、以下で与えられる。
【０１２１】
変更に対応する場合に、データはメトリックに基づきリレーされ得る。これは、インジケータ、故に、相関インデックスを考慮に入れる。
【０１２２】
＜起動＞
ノードｉが起動するとき、それは、ビットコインネットワークのようなブロックチェーン内の他のノードとのｍ個のピア接続を初期化する。例えば、全詳細については、Bitcoin  Developer  Referenceを参照されたい。初期段階で、ノードｉは、そのインターフェイスを通るデータ間の相関に対する如何なる情報も有しておらず、それを通る又は流れるデータを表すデータの限られた組を有する。従って、完全なトランザクションのリレーは、ある程度の時間実行されることになる。
【０１２３】
この期間Ｔｂｏｏｔｕｐの間に、メトリックθｉ（ａ）は、各インターフェイスを‘１’にセットし、データを全てのインターフェイスからリレーすることによって、ｍ＊（ａ）に寄与する。従って、メトリックは、一定期間にインジケータに関わらずデータがリレーされることを可能にする。
【０１２４】
期間Ｔｂｏｏｔｕｐの長さは、ｍの関数ｆ（ｍ）である。すなわち、接続の数が多いほど、正確な相関行列を構築するために必要とされる時間は長くなる。次の関数が、単なる一例として、提案される：
ｆ１（ｍ）：＝ｍ
ｆ２（ｍ）：＝ｍ２
【０１２５】
Ｔｂｏｏｔｕｐの後、ノードｉは、以下に示される既存のノードに従って選択的なリレーを実行する。
【０１２６】
＜既存のノード＞
一般的なノードｊの接続は、変更を考慮して時間とともに変化する。そのような変更は、（ｉ）他のノードがネットワークに加わること、（ｉｉ）他のノードがネットワークから去ること、及び／又は（ｉｉｉ）他のノードが悪意のある動作をすることのうちのいずれかによる。悪意のあるノードは選択的にブラックリストに登録され、対応する接続は閉じられる。
【０１２７】
従って、ネットワークグラフ全体における如何なる変更も検出され、２つ（以上）の連続した変更イベント間の平均時間を表す量Ｔｃｈａｎｇｅによってパラメータ化され得る。Ｔｃｈａｎｇｅごとに一度、ノードｊの局所相関行列が更新される必要がある。
【０１２８】
ノードの相関行列の更新は、次のうちの少なくとも１つを含むことができる：
・相関行列がリセットされる周期リセット
新しいノードごとに、完全なトランザクションリレーが、時間Ｔｂｏｏｔｕｐに実行される。次いで、ノードｊは、ピアノードへ接続される各インターフェイスについてのその新しいｍ＊個の値に対して選択的なリレーを実行する。
・相関行列が更新されるアップデート
所与のインターフェイスαについて、選択された組｛ｃ＊ａ｝の中のβ個の最高相関インターフェイス（０＜β＜ｍｍｉｎ）は、｛ｃ＊ａ｝にないβ個の最小相関インターフェイスと交換される。
【０１２９】
すなわち、データは、通常は、サブセット｛ｃ＊ａ｝内のｍ＊（ａ）個の最小相関インターフェイスへリレーされるが、行列が更新される場合に、サブセット｛ｃ＊ａ｝の部分でなく、相関インデックスが低いインターフェイスが、サブセット内で高い相関インデックスを有しているインターフェイスの代わりにサブセットに加えられる。これは、変更に際してネットワークにわたるデータのフローのインテグリティを確かにすることができる。
【０１３０】
再び図８の例に戻ると、通常、
ｃｄ＝ｃｄａ＋ｃｄｂ＋ｃｄｃ＋ｃｄｅ＝０．２＋０．４＋０．４＋０．６＝１．６
｛ｃｄ｝＝｛０．２，０．４，０．４，０．６｝
【０１３１】
バーｃｄを組｛ｃｄ｝内の計数の平均値としてとると、メトリックθｉ（ｄ）は、対応する相関係数ｃｄｉがバーｃｄよりも低い場合に、ｍ＊（ｄ）に寄与する：
【数８】
2020525895.tif 000010
【０１３２】
その場合に、
【数９】
2020525895.tif 000011
【０１３３】
通常、インターフェイスｄからのリレーのために選択されるインターフェイスの数ｍ＊（ｄ）は‘３’である。メトリックθｉ（ｄ）を決定する平均値又はインジケータを下回るサブセット内の係数は、｛０．２，０．４，０．４｝であり、これらの係数は｛ｃ＊ｄ｝に対応し、インターフェイスａ、ｂ及びｃがリレーのために選択される。疑念を回避するために、インターフェイスｅに対応する係数、すなわち｛０．６｝は、選択されたサブセット｛ｃ＊ｄ｝内にない。
【０１３４】
インターフェイスｄに関連して、更新が発生するとき、組｛ｃ＊ｄ｝内には２（β）個の最高相関インターフェイスが存在することが起こる。それらはインターフェイスｂ及びｃであり、どちらも０．４の値を有する。
【０１３５】
｛ｃ＊ｄ｝にないβ個の最小相関インターフェイスとしての資格を得るインターフェイスはただ１つしかなく、そのインターフェイスはｅである。従って、ただ１つの‘交換’が実行可能であり、どのインターフェイスを交換すべきかの選択は、どちらも同じ０．４の係数を有しているのでｂ又はｃのどちらか一方である。一例として、どのインターフェイスが交換のために選択されるかの選択は、辞書式優先度に従って行われ得る。
【０１３６】
次いで、このインターフェイスは、｛ｃ＊ａ｝にないβ個の最小相関インターフェイスと交換される。これは、最低係数が組の中の残りの係数｛ｃｄ｝＝｛０．４，０．４，０．６｝から選択されることを意味する。最低係数はインターフェイスｂ及びｃに対応し、従って、データは、インターフェイスａよりもむしろそれらのインターフェイスへ接続されたピアノードへリレーされる。
【０１３７】
ピアが切断する場合に、相関行列内のその係数は無効になる。Ｔｃｈａｎｇｅ期間の終わりに、上記の周期リセットが必要とされる。次いで、ノードｊは、夫々の接続インターフェイスについてのその新しいｍ＊個の値に対して選択的なリレーを実行する。
【０１３８】
新しいピアｂが加わる場合に、それが接続されるインターフェイスが、ノードａとの夫々の他のピアインターフェイスについての｛ｃ＊ａ｝の現在の値に関わらず、リレーのために選択される。一例として、ｂを有するインターフェイスが、ある程度の時間Ｔｊｏｉｎにγ個の着信トランザクションごとにリレーのためにランダムに選択され得る。
【０１３９】
Ｔｊｏｉｎは、Ｔｂｏｏｔｕｐ及び／又はＴｃｈａｎｇｅ期間に従ってセットされる。このリレーは、ノードｂがそれ自身の相関行列を構築することを助ける。Ｔｊｏｉｎの終わりに、ｂは、ノードａでのみ夫々の他のピアインターフェイスについての更新された値｛ｃ＊ａ｝に従ってリレーのために選択される。
【０１４０】
ノードｉは、そのピアｊが依然として動作しているかどうかを、着信トラフィックがそのインターフェイスから受信されなかったという理由で、チェックする必要があり得る。任意の短い時間Ｔｔｅｍｐの一時的なリレー要求がｊへ送信され得る。
【０１４１】
新しいトランザクションを発行するノード、すなわち発信元ノードは、ネットワークにおける配布を保証するために注意深く、リレーのための選択されたピアの組を選択する必要がある。例えば、任意のインターフェイスａのノードの数ｍ＊＊は、第１のリレーとして選択され得る。ここで、ｍ＊（ａ）＜ｍ＊＊＜ｍである。
【０１４２】
パラメータのリスト全体は、以下、表１で詳述される。
【表１】
2020525895.tif 000012
【０１４３】
＜悪意のあるノード＞
悪意のあるノードは、トランザクションの配布のための確率的モデルを効率的でないものとすることを目的としている。悪意のあるノードは、次の方法のいずれかで機能又は動作することができる。
・悪意のあるノードは、伝播されるはずのトランザクションを伝播しない。この悪意のあるノードへ接続される誠実な（honest）ノードは、他の誠実な（又は悪意のある）ノードからそれらのトランザクションを取得可能であり得る。しかし、マイナーの組が依然としてそれらを受信して、新たにマイニングされたブロックに含めることができるとすれば、ネットワークにおけるトランザクションの完全な配布は不要である。
・悪意のあるノードは、同じ合法トランザクションを複数回伝播する。受信側ノードは、ルックアップテーブルを用いて、以前に受け取られたトランザクションの経過を追うことができる。従って、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、無効なトランザクションを伝播する。受信側ノードがトランザクションの妥当性確認を実行する場合に、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、膨大な数のダミートランザクションを生成し伝播する。受信側ノードは、ピアからの膨大な有効な着信トランザクションに対して異なる応答をすることができる。それに応えて、（ｉ）受信側は、トランザクションリレーレートを低減するように送信側に求める。問題が解決しない場合に、送信側ピアは削除され、（ｉｉ）受信側は、リレーされたトランザクションに対する最低限のトランザクション料金を要求（及びチェック）することができる。これにより、悪意のあるノードにとって攻撃が高価になる。最低限のトランザクション料金が順守されない場合に、送信側ピアは削除され、且つ／あるいは、（ｉｉｉ）送信側ピアは単に削除される。
【０１４４】
上記の攻撃及び確率的モデルに基づいて、次の特性が推測され得る。
・トランザクションリレーレートは、個々のノードの処理性能及び帯域幅利用可能性の両方に依存する。この理由により、デフォルトの最大レートは強制されない。
・悪意のあるノードは、単に沈黙を保つことができない。それらは、自身の接続を維持するために、有効なトランザクションを転送しなければならない。
【０１４５】
＜メッセージ＞
ビットコインネットワーク上のノードインターフェイスからのデータ又はオブジェクトの確率的リレーを含む、本明細書における方法の実装をサポートするために、新しいメッセージタイプが導入され得る。更に、現在のピア・ツー・ピアのビットコインプロトコルに関して先に詳述された現在のメッセージタイプのいくつは、もはや使用されず、一方、以下で記載されていないメッセージタイプは、ビットコインＰ２Ｐプロトコルに対して変更されない。
【０１４６】
＜データメッセージ＞
他のノードに１以上のデータオブジェクトを要求するメッセージＧＥＴＤＡＴＡはもはや使用されないか、あるいは使用から外される。同様に、送信側ピアが知っているオブジェクトの１以上のインベントリを送信するメッセージＩＮＶはもはや使用されないか、あるいは使用から外される。ＧＥＴＤＡＴＡに対する応答としてのＮＯＴＦＯＵＮＤメッセージはもはや使用されないか、あるいは使用から外される。
【０１４７】
既に先に紹介されたＭＥＭＰＯＯＬメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのＩＤを要求する。このメッセージに対する応答は、トランザクションＩＤを含む１以上のＩＶメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のＩＮＶメッセージを送信する。ノードはこの機能を無効にしてよく、従って、その局所ＭＥＭＰＯＯＬの送信は必要とされない。
【０１４８】
＜制御メッセージ＞
ピアが依然として接続されていることを確認するためのＰＩＮＧメッセージ及びＰＯＮＧメッセージは取り除かれる。悪意のあるノードのような無言のノードは、上記の通りに管理される。メッセージＦＥＥＦＩＬＴＥＲは変更されないままである。しかし、料金閾値を順守しないピアは削除される。
【０１４９】
新しいメッセージＴＥＭＰ及びＦＬＯＷが導入される。
・ＴＥＭＰメッセージは、ピアが依然として動作しているかどうかを、そのインターフェイスから着信トラフィックが受信されないためにチェックするようノードが求められる場合に、使用される。（任意の短い時間Ｔｔｅｍｐの）一時リレー要求ＴＥＭＰは、前記インターフェイスへ接続されたピアへ送られる。受信側ピアがリレーを開始するが、所与の時間窓Ｔｅｍｐを順守しない場合に、それは行列から削除される。
・ＦＬＯＷメッセージは、ノードがピアに局所フロー制御に従ってトランザクションリレーレート（１秒あたりのトランザクションの数）を変更するよう要求する場合に、使用される。レートは、増大、低減、又は一時的にサスペンド（リレーレート＝０）されてよい。受信側ピアが新しいリレーレートを順守しない場合に、それは削除される。新しいＦＬＯＷ要求は、現在のリレーレートを変更するために必要とされる。受信側ピアがリレーと再開するために第２のＦＬＯＷ要求を受信しない場合に、それは送信側を削除する。
・ＭＩＮＦＥＥメッセージは、ノードが最低限のトランザクション料金によってフィルタをかけられたトランザクションを受け取るよう求められる場合に、使用される。最低限の値は、個々のトランザクション及び／又は、複数のトランザクションが単一のＩＰパケットに収まる場合には料金の合計に対して、セットされ得る。受信側ピアがトランザクション料金の制限を順守しない場合に、それは削除される。
【０１５０】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」（comprising及びcomprises）などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」（comprises）は、「〜を含むか、又はそれらから成る」（includes  or  consists  of）を意味し、「有する」（comprising）は、「〜を含むか、又はそれらから成る」（including  or  consisting  of）を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【０１５１】
＜要約＞
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。本明細書で記載される解決法により、ビットコインネットワークは大量のトランザクションの伝播を処理可能となる。
【０１５２】
本発明は、ビットコインネットワークのようなブロックチェーンネットワークにわたってデータパケット又はトランザクションを送信する既知の方法、例えば、３ステップメッセージングを使用した新しいトランザクションの分散に加えて、あるいは、望ましくはその代わるものとして、データパケットの分散の方法を提供することができる。
【０１５３】
本発明は、ノード間の通信を減らすことによって、ネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることができる。
【０１５４】
更に、ノードでボトルネックによって引き起こされる長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。
【０１５５】
パケット伝送の全体の数は低減され、一方で、情報冗長性の安全レベルは保たれる。
【０１５６】
最後に、本発明は、新しい接続、接続の中断、及び悪意のあるノードが考慮され、それによりネットワークのインテグリティが維持されるように、ノードのインターフェイスに関連した変更に対応する適応手段を提供することができる。これは、方法はネットワーク及びノードの環境に適応するので、管理され得るノード上のインターフェイスの数に制限はなく、ネットワークの性能及びサイズは制限されないことを意味する。非効率的な伝送は最小限にされ、悪意のあるノードは回避される。
【図１】
2020525895.tif 000017
【図２】
2020525895.tif 000018
【図３】
2020525895.tif 000019
【図４】
2020525895.tif 000020
【図５】
2020525895.tif 000021
【図６】
2020525895.tif 000022
【図７】
2020525895.tif 000023
【図８】
2020525895.tif 000024
【国際調査報告】
2020525895.tif 000025
2020525895.tif 000026