(57)【要約】本発明は、ブロックチェーンネットワーク上のノードが接続するピアノードの最小及び最大数を調整する方法に関する。調整は、ノードの帯域幅及び処理能力を考慮する。ノードの帯域幅容量は、ある期間にわたってノードによって処理可能な最大データの量に基づいて決定される。ピアノードへ及びそれからのノードのインターフェイスを通るデータがモニタされ、ノードのプロファイル係数は、入力データと出力データとの間の差から決定される。データをモニタする複数の期間にわたって、解析されたデータが、モニタされたデータと、ノードへ接続可能なピアの最大数とに従って、ノードへ接続可能なピアノードの最小数及最大数をセットするために使用される。方法は、帯域幅利用可能性及び処理性能のような性能限界因子に従って接続数を調整することをノードに可能にする。決定されたピアノード接続の数により、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定することができる。行列は、ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされ得る。本発明はまた、対応するコンピュータ可読記憶媒体、電子デバイス、ブロックチェーンネットワークのノード、又はそのようなノードを有するブロックチェーンネットワークに属する。
2020528595.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
ある期間（Ｔ）にわたってノードによって処理可能な最大データ（Ｄ）の量に基づいてノードの帯域幅（Ｂ）容量を決定することと、
前記ノードのインターフェイスを通るピアノードからの入力データ（ｄｉ）及び前記ピアノードへの出力データ（ｄｏ）を含むデータ（ｄ）をモニタし、前記入力データ（ｄｉ）から出力データ（ｄｏ）の間の差から前記ノードのプロファイル係数（ｋ）を決定することと、
複数の期間（Ｔ）にわたって前記データ（ｄ）をモニタすることと、
前記モニタされたデータ（ｄ）と、前記ノードへ接続可能なピアの最大数（Ｐ）とに従って、前記ノードへ接続可能なピアノードの最小数（ｍｍｉｎ）及びピアノードの最大数（ｍｍａｘ）をセットすることと
を有する前記方法。
【請求項２】
少なくとも１の期間（Ｔ）にわたって、前記モニタされたデータ（ｄ）は、比を決定するために使用され、前記ノードへ接続可能な前記ピアノードの最小数（ｍｍｉｎ）及びピアノードの最大数（ｍｍａｘ）をセットすることは、前記比を用いて決定される、
請求項１に記載の方法。
【請求項３】
前記プロファイル係数（ｋ）は、前記ノードの機能に従って値を割り当てられ、前記プロファイル係数は、
データを転送するよう構成されるノードについての１の値と、
データを収集又はアグリゲートするノードについての１よりも大きい値と、
データを生成又は供給するノードについての１に満たない値と
を有する、
請求項２に記載の方法。
【請求項４】
前記ノードは、ピアノードへ接続される複数のインターフェイスを有し、相関行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数から決定され、前記期間（Ｔ）は、前記相関行列への変更の間の時間の長さから決定される、
請求項１乃至３のうちいずれか一項に記載の方法。
【請求項５】
前記ノードは、ブロックチェーンネットワーク上のノードの活動に関する情報を受信し、前記相関行列への変更の間の前記時間の長さに従って前記期間（Ｔ）を決定する、
請求項４に記載の方法。
【請求項６】
前記複数の期間（Ｔ）にわたるデータ（ｄ）の平均を有する平均データ（ｄ＊）が、前記最大データ（Ｄ）に対する平均データ（ｄ＊）の比を決定することによって、前記ノードへ接続可能なピアノードの前記最小数（ｍｍｉｎ）及び最大数（ｍｍａｘ）を決定するために使用される、
請求項１乃至５のうちいずれか一項に記載の方法。
【請求項７】
複数の期間（Ｔ）にわたって前記データ（ｄ）の分散（σ２）を決定し、該分散にスケーリング係数を適用し、該スケーリングされた分散に従って前記ノードへ接続可能なピアノードの前記最小及び最大数を決定することを更に含む、
請求項６に記載の方法。
【請求項８】
【数１６】
2020528595.tif 000019
ｄ＊は、前記複数の期間（Ｔ）にわたるデータ（ｄ）の平均レベルであり、
Ｄは、期間（Ｔ）にわたって前記ノードによって処理可能な前記最大データ（Ｄ）であり、
Ｐは、前記ノードへ接続可能なピアの前記最大数（Ｐ）であり、
σ２は、前記データ（ｄ）の前記分散であり、
ｔは、スケーリング係数又は分散パラメータであり、
ｍｍａｘ≦Ｐである、
請求項７に記載の方法。
【請求項９】
前記スケーリング係数又は分散パラメータｔは、動作範囲
【数１７】
2020528595.tif 000020
を有し、
前記動作範囲にわたる前記分散パラメータｔの平均値は、前記ノードへ接続可能なピアノードの前記最小及び最大数を決定するときに使用される、
請求項８に記載の方法。
【請求項１０】
前記期間（Ｔ）は、前記ノードによって、
前記ノードへの局所パラメータ更新と、
前記ノードがデータを蓄積する開始期間と、
全てのピアノードへのデータの一時的なリレーと
のうちの少なくとも１つに適応するよう一時的に所定値へ調整される、
請求項１乃至９のうちいずれか一項に記載の方法。
【請求項１１】
前記期間（Ｔ）は、フロー制御パラメータ（Ｔｆｌｏｗ）であり、該パラメータは、前記ノードを通るトラフィックを変更するよう調整される、
請求項１乃至１０のうちいずれか一項に記載の方法。
【請求項１２】
前記ノードは、ピアノードへ接続される複数のインターフェイスを有し、該複数は、ピアノードへ接続されるインターフェイスの少なくとも最小数（ｍｍｉｎ）であり、且つ、ピアノードへ接続されるインターフェイスの最大数（ｍｍａｘ）以下であり、当該方法は、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスの中から少なくとも１つの他のインターフェイスを選択し、該少なくとも１つの他のインターフェイスから前記受信されたデータをリレーすることであり、他のインターフェイスは、前記受信インターフェイスの前記相関係数の組に従って選択される、ことと
を更に有する、
請求項１乃至１１のうちいずれか一項に記載の方法。
【請求項１３】
インジケータが前記相関行列から導出され、データは、前記受信インターフェイスと前記少なくとも１つの他のインターフェイスとの間の相関が前記インジケータを下回る場合にリレーされる、
請求項１２に記載の方法。
【請求項１４】
実行されるときに、請求項１乃至１３うちいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体。
【請求項１５】
インターフェイスデバイスと、該インターフェイスデバイスへ結合される１以上のプロセッサと、該１以上のプロセッサへ結合されるメモリとを有し、
前記メモリは、実行されるときに、請求項１乃至１３のうちいずれか一項に記載の方法を実行するように前記１以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、
電子デバイス。
【請求項１６】
ブロックチェーンネットワークのノードであって、
請求項１乃至１３のうちいずれか一項に記載の方法を実行するよう構成される前記ノード。
【請求項１７】
請求項１６に記載のノードを有するブロックチェーンネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、概して、ブロックチェーンネットワークのノードにおける実装に適した、コンピュータにより実施される方法及びシステムに関係がある。多数のトランザクション及び大きいトランザクションブロックを扱うための改良されたブロックチェーンノード構造、ネットワークアーキテクチャ、及びプロトコルが記載される。本発明は、ビットコインブロックチェーンとともに使用することに特に適しているが、これに限られない。
【背景技術】
【０００２】
本文書中、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳（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］）よりも数桁大きいトランザクション量の迅速な分散に対処するには不十分である。
【０００９】
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。
【００１０】
データフローの管理が必須であるだけでなく、ノード及びネットワークの技術的なキャパシティ又は能力が考慮される必要がある。
【００１１】
本明細書で記載される解決法により、ビットコインネットワークは、ノード及びネットワークの制限を考慮しながら、大量のトランザクションの伝播を処理可能となる。
【００１２】
ビットコインネットワークを介してデータパケット又はトランザクションを送信する既知の方法、例えば、３ステップメッセージングによる新しいトランザクションの分散、により、ネットワークにわたるデータパケットの伝播及び分散は遅くなる。準備段階では、ノードの内外へのキューが生じる。そのような問題は、ノードがその公称限界を超えて又はその周囲で動作するよう求められるときに深刻になる。
【発明の概要】
【００１３】
全体として、本発明は、現在のブロックチェーン容量よりも数桁大きい増大したトランザクション量の処理及び伝播のための新規のアプローチに存する。これは、ノード間の通信を減らすことによってネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることで達成可能である。ボトルネックによって引き起こされるノードの内外への長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。追加的に、又は代替的に、本発明は、ピアノードに対するノードのインターフェイスを通るデータ又はトラフィックを管理する新規のアプローチに属する。これは、転送されるデータ及び局所的な資源を考慮することができる。該局所的な資源は、帯域幅資源、データプロファイル、接続されるピアの数、及びノードの性能のうちの少なくとも１つを含むことができる。ノードの機能も考慮され得る。
【００１４】
この方法によれば、ノードは、（ｉ）ピアノードに接続されるインターフェイスの数に依存せず、且つ、（ｉｉ）ノードのインターフェイスに関連した変更に依存しないように、適応的に動作することができ、それにより、新しい接続、接続の切断、及び悪意のあるノードが考慮され、ネットワークのインテグリティが維持される。
【００１５】
この方法では、管理され得るノード上のインターフェイスの数に制限はなく、方法はネットワーク及びノードの環境に適応するので、ネットワークの性能及びサイズは制限されない。非効率的伝送は最小限にされ、悪意のあるノードは回避される。
【００１６】
この方法によれば、接続されるピアの最小及び最大数を決定することができる。重要なタスクを実行するための時間窓は、それに応じて調整され得る。
【００１７】
この方法によれば、ブロックチェーンネットワークの性能は向上し、ブロックチェーンネットワーク又はブロックチェーンネットワークと連携するオーバーレイネットワークは改善される。
【００１８】
よって、本発明によれば、添付の特許請求の範囲で定義される方法が定義される。
【００１９】
よって、ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
ある期間にわたってノードによって処理可能な最大データの量に基づいてノードの帯域幅容量を決定することと、
前記ノードのインターフェイスを通るピアノードからの入力データ及び前記ピアノードへの出力データを含むデータをモニタし、前記入力データから出力データ（ｄｏ）の間の差から前記ノードのプロファイル係数を決定することと、
複数の期間にわたって前記データをモニタすることと、
前記モニタされたデータと、前記ノードへ接続可能なピアの最大数とに従って、前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットすることと
を有する前記方法を提供することが望ましい。
【００２０】
方法は、帯域幅利用可能性及び処理性能のような性能制限因子に従って接続数を調整することをノードに可能にする。
【００２１】
少なくとも１の期間にわたって、前記モニタされたデータは、比を決定するために使用され得る。前記ノードへ接続可能な前記ピアノードの最小数及びピアノードの最大数をセットすることは、前記比を用いて決定され得る。比は、ノードを通るデータと、ノードによって処理可能なデータの最大量とから、計算され得る。比は、非線形であることができる。
【００２２】
前記プロファイル係数は、前記ノードの機能に従って値を割り当てられ得、前記プロファイル係数は、データを転送するよう構成されるノードについての１の値と、データを収集又はアグリゲートするノードについての１よりも大きい値と、データを生成又は供給するノードについての１に満たない値とを有する。
【００２３】
前記ノードは、ピアノードへ接続される複数のインターフェイスを有することができ、相関行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数から決定され得る。前記期間は、前記相関行列への変更の間の時間の長さから決定され得る。変更は、ノードの始動又は起動に関係があり、あるいは、ノードがネットワークに参加すること又はネットワークから去ることに関係があり得る。
【００２４】
前記ノードは、ブロックチェーンネットワーク上のノードの活動に関する情報を受信することができ、前記相関行列への変更の間の前記時間の長さに従って前記期間を決定する。
【００２５】
前記複数の期間にわたるデータの平均を有する平均データが、前記最大データに対する平均データの比を決定することによって、前記ノードへ接続可能なピアノードの前記最小数及び最大数を決定するために使用され得る。
【００２６】
方法は、複数の期間にわたって前記データの分散を決定し、該分散にスケーリング係数を適用し、該スケーリングされた分散に従って前記ノードへ接続可能なピアノードの前記最小及び最大数を決定することを更に含むことができる。
【００２７】
ピアノード接続の最小及び最大数（ｍ）は、
【数１】
2020528595.tif 000003
から決定され得る。ここで、ｄ＊は、前記複数の期間（Ｔ）にわたるデータ（ｄ）の平均レベルであり、Ｄは、期間（Ｔ）にわたって前記ノードによって処理可能な前記最大データ（Ｄ）であり、Ｐは、前記ノードへ接続可能なピアの前記最大数（Ｐ）であり、σ２は、前記データ（ｄ）の前記分散であり、ｔは、スケーリング係数又は分散パラメータであり、ｍｍａｘ≦Ｐである。
【００２８】
前記スケーリング係数又は分散パラメータｔは、
【数２】
2020528595.tif 000004
によって定義可能であり、ｔの平均値は、前記ノードへ接続可能なピアノードの前記最小及び最大数を決定するときに使用され得る。
【００２９】
前記期間は、前記ノードによって、前記ノードへの局所パラメータ更新と、前記ノードがデータを蓄積する開始期間と、全てのピアノードへのデータの一時的なリレーとのうちの少なくとも１つに適応するよう一時的に所定値へ調整され得る。
【００３０】
前記期間は、フロー制御パラメータであることができる。該パラメータは、前記ノードを通るトラフィックを変更するよう調整され得る。
【００３１】
決定されたピアノード接続の数により、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定することができる。相関行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされ得る。
【００３２】
前記ノードが、ピアノードへ接続される複数のインターフェイスを有し、該複数が、ピアノードへ接続されるインターフェイスの少なくとも最小数（ｍｍｉｎ）であり、且つ、ピアノードへ接続されるインターフェイスの最大数（ｍｍａｘ）以下である場合に、方法は、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも１つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも１つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有することができる。
【００３３】
前記相関行列からはインジケータが導出され得る。前記受信インターフェイスと前記少なくとも１つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる。
【００３４】
データは、トランザクション又はブロックのようなオブジェクトに対応することができる。リレーは、代替的に、相関がインジケータよりも高い場合に起こることができる。インジケータは閾値であることができる。インジケータは、データを受信するインターフェイスと複数のインターフェイスとの間の相関のレベル、例えば平均値など、を表すことができる。平均値は、受信インターフェイスと他のインターフェイスとの間の相関係数の平均であることができる。前記インジケータは、メトリックを決定するために使用され得、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する。メトリックは、どのインターフェイスからデータがリレーされるべきかを選択するために使用される命令と見なされ得る。命令は、閾値又はインジケータに従ってセットされ得るか、あるいは、それに依存し得る。
【００３５】
例として、命令は、インターフェイスがインジケータを下回る相関インデックスを有していることを要求する。命令は、相関インデックスがインジケータの上にあるか又は下にあるかに応じて、どのインターフェイスがデータをリレーするかを決定することができる。
【００３６】
インデックスがインジケータを下回るときのデータリレーの例は、通常の定常状態のネットワーク状態であることができる。‘定常状態’条件では、インターフェイス及び接続されるピアの数は変化せず、相関行列は変化しない。
【００３７】
インデックスがインジケータを上回るときのデータリレーの例は、ノードに対する新しいピアノードの接続の追加などの、状態の変化であることができる。異なる命令は、異なるインターフェイスに適用することができる。
【００３８】
分配されるデータは、マイナー、ピアノード及びフルノードからのデータを含め、ブロックチェーンネットワークから受け取られるデータを含むことができる。ノードの各インターフェイスで処理されるデータ間の相関は、ノードで受信されるデータパケット又はオブジェクトの重複を考慮することができる。インジケータは、ノードの各インターフェイスの相関インデックスの平均又は中央値であることができる。インジケータは、最低相関インターフェイスと最高相関インターフェイスとの間のポイントを定義することができる。データ又はオブジェクトは、相関インデックスがインジケータを下回るときにインターフェイスからリレーされ得る。相関の程度が低いインターフェイスは、相関の高いインターフェイスがデータを取得すると安全に想定できるため、優先順位を付けられ得る。
【００３９】
ノードはインターフェイスを介してデータを処理し、該処理は、トランザクション又はブロックのようなデータ又はオブジェクトを送信及び受信することを含む。
【００４０】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在することができる。インターフェイスは、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤであることができる。
【００４１】
前記ノードは、（ｉ）各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、（ｉｉ）インターフェイスの対を通じて処理された同一トランザクションとをモニタすることによって前記相関行列を構築することができ、それからいずれか２つのインターフェイス間の相関係数を決定する。前記相関行列は、ｍ（ｍ−１）個の要素を有することができ、次の：
【数３】
2020528595.tif 000005
とおりに、インターフェイスａの相関インデックスを決定するために使用され得る。ここで、ｍは、ピアノードへ接続されるインターフェイスの数である。
【００４２】
前記相関行列は、ｍ（ｍ−１）個の要素を有することができ、次の：
【数４】
2020528595.tif 000006
とおりに、インターフェイスａについての相関係数の組を決定するために使用され得る。
【００４３】
前記インジケータは、ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、前記組から平均又は中央値を導出することとによって、決定され得る。
【００４４】
インジケータは、どのインターフェイスがデータをリレーするかを決定するために命令の組によって使用され得る。
【００４５】
データをリレーするインターフェイスの数を決定するためのインジケータは、ノード始動又は起動からの時間であるリセット時間と、新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びインターフェイスが悪意のあるノードへ接続することのうちの少なくとも１つを含む変更イベント間の時間である変更時間とのうちの少なくとも１つに更に基づくことができる。リセット時間は、新しいノードのために使用され得る。変更時間は、既存のノードのために使用され得る。
【００４６】
ノード始動時に、前記ノードは、該ノードに隣接するか又は直接接続されるノードのようなピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーすることができ、前記期間が過ぎた後に、前記ノードは、前記インジケータよりも下にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーする。
【００４７】
変更イベントを検出すると、前記相関行列がリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【００４８】
本発明はまた、実行されるときに、請求される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体に属する。
【００４９】
本発明はまた、インターフェイスデバイスと、該インターフェイスデバイスへ結合される１以上のプロセッサと、該１以上のプロセッサへ結合されるメモリとを有し、前記メモリは、実行されるときに、請求される方法を実行するように前記１以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、電子デバイスに属する。
【００５０】
本発明はまた、ブロックチェーンネットワークのノードであって、請求される方法を実行するよう構成される前記ノードに属する。本発明はまた、請求されるノードを有するブロックチェーンネットワークに属する。
【００５１】
本発明のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【００５２】
【図１】ビットコインネットワーク上のノードを介してアプリケーションレベルで直列に送信及び受信されるネットワークパケットを表す。
【図２】ビットコインネットワークにわたるノード間の単一トランザクションがとるルールを表す。
【図３】ピアノードへ接続されるインターフェイスの相関係数を示す相関行列の例示である。
【図４】ブロックチェーンネットワークにおいて異なる機能を有しているノードを表す図である。
【発明を実施するための形態】
【００５３】
本明細書では、大きいギガバイトサイズのブロックを処理及び記憶することの問題に対する解決法が記載される。ブロックチェーンネットワークにわたるデータの効率的なトランザクションは、ノード間の接続性を決定し、それに応じてデータをリレーすることによって、改善可能である。更に、ノード及び利用可能な帯域幅の仕様は、ネットワークにわたるデータのフローに影響を及ぼし、ノードが有する接続の数及び接続性の決定のための期間は、フローを改善するために調整又はディメンショニングされ得る。
【００５４】
［処理］
＜ブロックチェーンネットワークのタイプ及び妥当性確認ノード＞
ブロックチェーンネットワークは、他のメンバーからの招待なしで又は承諾なしで、誰でも参加することができるピア・ツー・ピアの非会員制（open-membership）ネットワークとして記載され得る。ブロックチェーンネットワークが動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワークに参加し得る。そのような分散した電子デバイスはノードと呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【００５５】
ビットコインなどのいくつかのブロックチェーンネットワークは、ノード間通信のためにＴＣＰを使用する。ＴＣＰを用いて送信されるデータパケットは、順序付けのために使用される関連するシーケンス番号を有している。
【００５６】
これに加えて、ＴＣＰプロトコルは、接続を確立する場合及び接続を終了する場合の両方で、スリーウェイハンドシェイク（three-way  handshake）プロシージャを伴う。ＴＣＰを介して送信されるパケットは、オーバーヘッドと関連付けられており、それらは、関連するシーケンス番号を有し、スリーウェイハンドシェイクプロトコルが存在する。接続を確立することにおいて、１２８〜１３６バイトが送信され、一方、接続を閉じることは、１６０バイトがかかる。よって、パケット伝送におけるハンドシェイクは、最大２９６バイトがかかる。
【００５７】
更には、ノードが新しいトランザクションを受け取るとき、それは、他のノードに、トランザクションのハッシュを含むインベントリ（inventory）（ＩＮＶ）メッセージを通知する。ＩＮＶメッセージを受け取るノードは、そのトランザクションのハッシュが以前に確認されているかどうかをチェックする。そうでない場合には、ノードは、ＧＥＴＤＡＴＡメッセージを送ることによってトランザクションを要求する。ノードＡからノードＢへトランザクションを送るのに必要な時間は、Ｔ１＝妥当性確認＋ＴＣＰ（ＩＮＶ＋ＧＥＴＤＡＴＡ＋ＴＸ）である。ここで、ＴＣＰ（）は、時間に関してＴＣＰハンドシェイクプロシージャによって導入されるオーバーヘッドを示す。
【００５８】
＜ＴＣＰプロトコル及びスリーウェイハンドシェイク＞
現在のピア・ツー・ピアのビットコインプロトコルは、１０のデータメッセージと、１３の制御メッセージとを定義する。これに関連して、オブジェクト転送（object  transfer）に関係があるデータ又はデータパケットの転送は、個々のトランザクション又はブロックを指すことがある。
【００５９】
ビットコインＰ２Ｐプロトコルによって使用されるメッセージの完全なリストが知られており、完全なリストについては、http://bitcoin.org/en/developer-referenceから取得可能なBitcoin  Developer  Referenceを参照されたい。メッセージのサブグループは、オブジェクトの要求又は分配に関係がある。これらのメッセージは、ＢＬＯＣＫ、ＧＥＴＤＡＴＡ、ＩＮＶ、ＴＸ、ＭＥＭＰＯＯＬ及びＮＯＴＦＯＵＮＤである。メッセージサブグループは、オブジェクトの信頼性及び効率に関係がある。これらのメッセージはＦＥＥＦＩＬＴＥＲ、ＰＩＮＧ、ＰＯＮＧ、及びＲＥＪＥＣＴである。
【００６０】
一例として、ビットコインネットワーク上のノード‘ｉ’及び‘ｊ’は、次のステップを用いて通信する：
１．ノードｉは、トランザクションのリストを含むＩＮＶメッセージを送信する。  
２．ノードｊは、以前に知らされたトランザクションのサブセットを要求するＧＥＴＤＡＴＡメッセージにより応答する。  
３．ノードｉは、要求されたトランザクションを送信する。
【００６１】
ここで、方法は、少なくともデータの分散を改善するように、ブロックチェーンネットワークのプロトコルを最適化しようと努める。
【００６２】
図１は、データが、ネットワークパケットの形で、オペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで直列に送信及び受信される実際のシナリオを表す。トランザクションｘが単一のイーサネット（登録商標）／ＩＰパケットに収まるとすれば、ｍ個のピアへのその伝送は、ｍ個の異なる出力パケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方は、他の情報とともに、
・直列化されたトランザクション、
・送信側／受信側ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤ
を含む。
【００６３】
着信トランザクションが処理されるための予想時間は、入力キューＬｉの（パケット単位の）平均長さに依存し、一方、処理されたトランザクションが正しく送信されるための予想時間は、出力キューＬｏの平均長さに依存する。
【００６４】
従って、トランザクションの効率的なリレーは、Ｌｉ及びＬｏの両値の低減に依存する。しかし、ピアへのトランザクションの選択的なリレーのための確率的モデルは、Ｌｏに直接影響し、誘導によりＬｉにも影響する。
【００６５】
現在のビットコイン実施では、ＩＮＶ及びＧＥＴＤＡＴＡメッセージパケットは、トランザクションと同じようにＩ／Ｏバッファにキューイングされ、送信遅延及び受信遅延に深刻な影響を及ぼす。
【００６６】
［接続性］
＜効率的なトランザクション伝播−確率的リレー＞
ノードｉがインベントリ交換の使用なしで、新しいトランザクションを直接送信することを許可された場合には、トランザクションは、より速い速度でネットワーク内に広められる。ただし、何らかの規制がなければ、ネットワークは氾濫することになる。
【００６７】
従って、本発明は、膨大な量の不必要なトランザクションの伝送を回避するために、ノードからピアノードへのデータ又はオブジェクトの選択的なリレーのためのメカニズムを使用する。メカニズムは、確率的モデルであることができる。
【００６８】
伝送リレーのためのメカニズム又は確率的モデルは、３つのノードｉ、ｊ及びｋがビットコインネットワークの一部であって互いに接続されている図２を参照して、仮定に基づいている。ノードｉは、ノードｊ及びノードｋへ直接接続されている。ノードｊ及びノードｋは、ノードｉを介して又はビットコインネットワークを介して間接的に接続されている。
【００６９】
ノードｉは、トランザクションｒの形でデータを処理する２つのインターフェイスａ及びｂを有して示されている。トランザクションはノードｉで開始され、それがノード間でビットコインネットワークにわたって伝播されるにつれて様々な段階を経る。段階には：
・インターフェイスａからピアノードへの伝送のためにトランザクションを処理して、ノードｊで受け取られるようにする第１段階ｒ１、
・ノードｊがビットコインを介した伝送のためにトランザクションを処理して、ノードｋで受け取られるようにする第２段階ｒ２、及び
・ノードｋが、インターフェイスｂでトランザクションを受信するピアノードｉへの伝送のためにトランザクションを処理する第３段階ｒ３
が含まれる。
【００７０】
疑念を回避するために、ｒ１、ｒ２、及びｒ３は同じトランザクションであり、添え字はリレーを表す。
【００７１】
以下のように仮定される：
・ノードがインターフェイス（ｂ）から、他のインターフェイス（ａ）からの伝送のために処理された同じトランザクションを受け取る場合に、２つのインターフェイスはある程度の相関を共有する。  
・ノードｉで生成されたトランザクションが所与のｊの入力インターフェイスを通じてノードｊに届く場合に、ノードｉで生成された第２のトランザクションは、高い確率で同じインターフェイスを通じてｊに届く。
【００７２】
再び図２を参照すると、リレー相関の一例として、ノードｊ及びｋは、ノードｉのピアである。ｉが新しいトランザクションを生成し、それをノードｊへリレーし、後に同じトランザクションがノードｋからノードｉで受け取られる場合に、ｊ及びｋは、ネットワークを通る論理パスを共有する。従って、発信元ノードは、同じ情報をそのピアノードの両方へリレーする必要がない。明確化のために言うと、ノードｉは、ノードｋがトランザクションｒを受け取る確率が高いので、そのトランザクションｒをノードｋへ送信する必要がない。同様に、逆に、ノードｋは、トランザクションｒを受け取る確率が高いので、そのトランザクションｒをノードｉへ送信する必要がない。ロジックは両方の方向で有効である。
【００７３】
＜ノードのインターフェイス間の関係＞
図３は、ピアノードへ接続される５つのインターフェイスａ、ｂ、ｃ、ｄ及びｅを有しているノードｉについて決定され得る局所相関行列Ｃの一例である。行列は、着信トラフィックについての相関の程度を表す。この行列の形成及び適用については、以下で記載される。図３に示される値は、例示のためである。
【００７４】
各ノードは、一例として、インターフェイスａ及びｂから受け取られるトランザクション間の相関を表す係数ｃａｂを決定することによって、相関行列Ｃを構築する。そのような係数は、インターフェイスの全ての対の間で決定される。
【００７５】
各インターフェイスから受け取られるトランザクションＩＤのリストを使用して、ｔａ及びｔｂを、夫々インターフェイスａ及びｂから受け取られるトランザクションの数とし、ｔａｂを、ａ及びｂの両方から受け取られる二重のトランザクションの数であるとする。インターフェイスａ及びｂの相関係数は、式１：
【数５】
2020528595.tif 000007
によって定義される。
【００７６】
慣習として、係数ｃａｂについて、そのインデックスの辞書式順序ａ＜ｂが仮定される。すなわち、ａは‘０’を割り当てられ（ａ＝０）、ｂは‘１’を割り当てられ（ｂ＝１）、ｃは‘２’を割り当てられ（ｃ＝２）、以降、インターフェイスＩＤと数値との間で同様に続く。インターフェイスの組｛ａ，ｂ，ｄ，ｅ｝についての相関係数を考えると、インターフェイスａ及びｂは、ｃａｂ＞ｃｄｅの場合に、インターフェイスｄ及びｅよりも相関性がある。
【００７７】
主対角線上の要素は有意でないから、行列サイズは、図３に示されるように、ｍ（ｍ−１）個の要素まで減らされ得る。
【００７８】
＜ノードインターフェイスへの値の割り当て＞
インターフェイスａの全体的な相関インデックスは、次の：
【数６】
2020528595.tif 000008
とおりに、式２で定義される。
【００７９】
図３の相関行列を一例として使用すると、インターフェイスａの相関インデックスｃａは、各インターフェイス間の相関係数の和として表され得る。
ｃａ＝ｃａｂ＋ｃａｃ＋ｃａｄ＋ｃａｅ＝０．２＋０．８＋０．２＋０．２＝１．４
【００８０】
このメトリックは、個々のインターフェイスの相関を順位付けし、ノードピアによって提供されるリレーの品質を理解するために使用され得る。一例として、ａの相関インデックスが平均値よりも著しく高い場合に、ａから受け取られるトランザクションは大いに冗長である。
【００８１】
対照的に、ａの相関インデックスが平均値よりも著しく低い場合に、（ｉ）ａから受け取られるトランザクションはいくらか一意的であるか、あるいは、（ｉｉ）ａへ接続されるピアノードは悪意のある動作をしているかのどちらかである。悪意のある動作については、以下で更に詳細に論じられる。
【００８２】
各ノードは、受信されたトランザクションフローにのみ基づいてそれ自身の相関行列を構築することが留意されるべきである。悪意のある情報の伝播を回避するために、ノード又はピア間で相関情報は交換されない。
【００８３】
＜インジケータ＞
インターフェイスａからの着信トランザクションを考えると、ノードは、範囲［ｍｍｉｎ，ｍｍａｘ］内のピア数ｍ＊へのリレーを実行する。
【００８４】
現在の値ｍ＊は、インターフェイスａの相関インデックスを含むｍ−１個の相関係数｛ｃａ｝の現在の分布に依存する。
｛ｃａ｝＝［ｃ０ａ，ｃ１ａ，・・・，ｃａｍ−１］
すなわち、｛ｃａ｝は、相関係数のリスト又は組であり、この組は、インターフェイスａについての係数を有する。相関インデックスは、図３及び上記の例により、係数の和、すなわち、ｃａ＝ｃａｂ＋ｃａｃ＋ｃａｄ＋ｃａｅである。
【００８５】
インターフェイスａからのリレーのために選択されるインターフェイスの数ｍ＊（ａ）は、組｛ｃａ｝の各要素のメトリックθｉ（ａ）の計算に依存する：
【数７】
2020528595.tif 000009
【００８６】
メトリックθｉ（ａ）は、スイッチ又はセレクタとして機能し、インターフェイスがデータをリレーするか否かを示す。例えば、インターフェイスは、そのメトリックが‘１’である場合にデータをリレーし、そのメトリックが‘０’である場合にデータをリレーしない。
【００８７】
バーｃａを組｛ｃａ｝内の係数の平均として定義することによって、メトリックθｉ（ａ）は、対応する相関係数ｃａｉがバーｃａよりも低い場合に、ｍ＊（ａ）に寄与する：
【数８】
2020528595.tif 000010
【００８８】
θｉ（ａ）は、代替的に、平均値ではなく、｛ｃａ｝の中央値に基づいてもよい。メトリックθｉ（ａ）はまた、統計解析を用いて組｛ｃａ｝から導出される代替値に基づいても、あるいは、それから決定されてもよく、例えば、メトリックθｉ（ａ）は、対応する相関係数ｃａｉが組｛ｃａ｝の平均よりも少なくとも１標準偏差下回る場合に、ｍ＊（ａ）に寄与する。
【００８９】
一例として、図３のインターフェイスａからの着信トランザクションは、｛ｃａ｝に含まれる相関係数に従って、ｍ＊（ａ）個の最小相関インターフェイスへリレーされる。リレーのために選択される｛ｃａ｝のサブセットは、｛ｃ＊ａ｝と定義される。
【００９０】
図３の例に戻ると、｛ｃａ｝＝｛０．２，０．８，０．２，０．２｝の場合に、
【数９】
2020528595.tif 000011
【００９１】
従って、インターフェイスａからのリレーのために選択されるインターフェイスの数ｍ＊（ａ）は‘３’である。メトリックθｉ（ａ）を決定する平均値又はインジケータを下回るサブセット内の係数は、｛０．２，０．２，０．２｝であり、これらの係数は｛ｃ＊ａ｝に対応し、インターフェイスｂ、ｄ、ｅがリレーのために選択される。
【００９２】
上記の例でメトリックを決定するために使用された係数の‘切り捨て’点又はレベルは、係数の平均‘０．３５’であった。この閾値又はインジケータはメトリックθｉ（ａ）を決定し、それからｍ＊（ａ）が決定される。
【００９３】
全体として、従って、方法は、インジケータに従ってインターフェイスからデータをリレーすると言える。前記インジケータは、各インターフェイスについて、それがデータをリレーするかどうかを決定するメトリックを決定するために使用され得る。
【００９４】
インジケータは、上記の例ではメトリックを決定するために使用されたが、他の因子が各インターフェイスのメトリックに作用する可能性がある。各インターフェイスのメトリックは、相関行列への変更に従って計算され得る。
【００９５】
＜変更への対応＞
上記の通り、どのインターフェイスが情報をリレーするために使用されるべきかの決定は、行列が変更されない定常状態条件を仮定する。
【００９６】
プロトコルの更なる詳細は、これより、変更、例えば、ピアノードがネットワークに加わり、ノードとの新たな接続を形成する場合、又はピアノードがネットワークから去り、ノードのインターフェイスへもはや接続されていない場合、にどのようにしてプロトコルが対応することができるかの説明に関して、以下で与えられる。
【００９７】
変更に対応する場合に、データはメトリックに基づきリレーされ得る。これは、インジケータ、故に、相関インデックスを考慮に入れる。
【００９８】
＜起動＞
ノードｉが起動するとき、それは、ビットコインネットワークのようなブロックチェーン内の他のノードとのｍ個のピア接続を初期化する。例えば、全詳細については、Bitcoin  Developer  Referenceを参照されたい。初期段階で、ノードｉは、そのインターフェイスを通るデータ間の相関に対する如何なる情報も有しておらず、それを通る又は流れるデータを表すデータの限られた組を有する。従って、完全なトランザクションのリレーは、ある程度の時間実行されることになる。
【００９９】
この期間Ｔｂｏｏｔｕｐの間に、メトリックθｉ（ａ）は、各インターフェイスを‘１’にセットし、データを全てのインターフェイスからリレーすることによって、ｍ＊（ａ）に寄与する。従って、メトリックは、一定期間にインジケータに関わらずデータがリレーされることを可能にする。
【０１００】
期間Ｔｂｏｏｔｕｐの長さは、ｍの関数ｆ（ｍ）である。すなわち、接続の数が多いほど、正確な相関行列を構築するために必要とされる時間は長くなる。次の関数が、単なる一例として、提案される：
ｆ１（ｍ）：＝ｍ
ｆ２（ｍ）：＝ｍ２
【０１０１】
Ｔｂｏｏｔｕｐの後、ノードｉは、以下に示される既存のノードに従って選択的なリレーを実行する。
【０１０２】
＜既存のノード＞
一般的なノードｊの接続は、変更を考慮して時間とともに変化する。そのような変更は、（ｉ）他のノードがネットワークに加わること、（ｉｉ）他のノードがネットワークから去ること、及び／又は（ｉｉｉ）他のノードが悪意のある動作をすることのうちのいずれかによる。悪意のあるノードは選択的にブラックリストに登録され、対応する接続は閉じられる。
【０１０３】
従って、ネットワークグラフ全体における如何なる変更も検出され、２つ（以上）の連続した変更イベント間の平均時間を表す量Ｔｃｈａｎｇｅによってパラメータ化され得る。Ｔｃｈａｎｇｅごとに一度、ノードｊの局所相関行列が更新される必要がある。
【０１０４】
ノードの相関行列の更新は、次のうちの少なくとも１つを含むことができる：
・相関行列がリセットされる周期リセット
新しいノードごとに、完全なトランザクションリレーが、時間Ｔｂｏｏｔｕｐに実行される。次いで、ノードｊは、ピアノードへ接続される各インターフェイスについてのその新しいｍ＊個の値に対して選択的なリレーを実行する。
・相関行列が更新されるアップデート
所与のインターフェイスαについて、選択された組｛ｃ＊ａ｝の中のβ個の最高相関インターフェイス（０＜β＜ｍｍｉｎ）は、｛ｃ＊ａ｝にないβ個の最小相関インターフェイスと交換される。
【０１０５】
すなわち、データは、通常は、サブセット｛ｃ＊ａ｝内のｍ＊（ａ）個の最小相関インターフェイスへリレーされるが、行列が更新される場合に、サブセット｛ｃ＊ａ｝の部分でなく、相関インデックスが低いインターフェイスが、サブセット内で高い相関インデックスを有しているインターフェイスの代わりにサブセットに加えられる。これは、変更に際してネットワークにわたるデータのフローのインテグリティを確かにすることができる。
【０１０６】
再び図３の例に戻ると、通常、
ｃｄ＝ｃｄａ＋ｃｄｂ＋ｃｄｃ＋ｃｄｅ＝０．２＋０．４＋０．４＋０．６＝１．６
｛ｃｄ｝＝｛０．２，０．４，０．４，０．６｝
【０１０７】
バーｃｄを組｛ｃｄ｝内の計数の平均値としてとると、メトリックθｉ（ｄ）は、対応する相関係数ｃｄｉがバーｃｄよりも低い場合に、ｍ＊（ｄ）に寄与する：
【数１０】
2020528595.tif 000012
【０１０８】
その場合に、
【数１１】
2020528595.tif 000013
【０１０９】
通常、インターフェイスｄからのリレーのために選択されるインターフェイスの数ｍ＊（ｄ）は‘３’である。メトリックθｉ（ｄ）を決定する平均値又はインジケータを下回るサブセット内の係数は、｛０．２，０．４，０．４｝であり、これらの係数は｛ｃ＊ｄ｝に対応し、インターフェイスａ、ｂ及びｃがリレーのために選択される。疑念を回避するために、インターフェイスｅに対応する係数、すなわち｛０．６｝は、選択されたサブセット｛ｃ＊ｄ｝内にない。
【０１１０】
インターフェイスｄに関連して、更新が発生するとき、組｛ｃ＊ｄ｝内には２（β）個の最高相関インターフェイスが存在することが起こる。それらはインターフェイスｂ及びｃであり、どちらも０．４の値を有する。
【０１１１】
｛ｃ＊ｄ｝にないβ個の最小相関インターフェイスとしての資格を得るインターフェイスはただ１つしかなく、そのインターフェイスはｅである。従って、ただ１つの‘交換’が実行可能であり、どのインターフェイスを交換すべきかの選択は、どちらも同じ０．４の係数を有しているのでｂ又はｃのどちらか一方である。一例として、どのインターフェイスが交換のために選択されるかの選択は、辞書式優先度に従って行われ得る。次いで、このインターフェイスは、｛ｃ＊ａ｝にないβ個の最小相関インターフェイスと交換される。これは、最低係数が組の中の残りの係数｛ｃｄ｝＝｛０．４，０．４，０．６｝から選択されることを意味する。最低係数はインターフェイスｂ及びｃに対応し、従って、データは、インターフェイスａよりもむしろそれらのインターフェイスへ接続されたピアノードへリレーされる。
【０１１２】
ピアが切断する場合に、相関行列内のその係数は無効になる。Ｔｃｈａｎｇｅ期間の終わりに、上記の周期リセットが必要とされる。次いで、ノードｊは、夫々の接続インターフェイスについてのその新しいｍ＊個の値に対して選択的なリレーを実行する。
【０１１３】
新しいピアｂが加わる場合に、それが接続されるインターフェイスが、ノードａとの夫々の他のピアインターフェイスについての｛ｃ＊ａ｝の現在の値に関わらず、リレーのために選択される。一例として、ｂを有するインターフェイスが、ある程度の時間Ｔｊｏｉｎにγ個の着信トランザクションごとにリレーのためにランダムに選択され得る。
【０１１４】
Ｔｊｏｉｎは、Ｔｂｏｏｔｕｐ及び／又はＴｃｈａｎｇｅ期間に従ってセットされる。このリレーは、ノードｂがそれ自身の相関行列を構築することを助ける。Ｔｊｏｉｎの終わりに、ｂは、ノードａでのみ夫々の他のピアインターフェイスについての更新された値｛ｃ＊ａ｝に従ってリレーのために選択される。
【０１１５】
ノードｉは、そのピアｊが依然として動作しているかどうかを、着信トラフィックがそのインターフェイスから受信されなかったという理由で、チェックする必要があり得る。任意の短い時間Ｔｔｅｍｐの一時的なリレー要求がｊへ送信され得る。
【０１１６】
新しいトランザクションを発行するノード、すなわち発信元ノードは、ネットワークにおける配布を保証するために注意深く、リレーのための選択されたピアの組を選択する必要がある。例えば、任意のインターフェイスａのノードの数ｍ＊＊は、第１のリレーとして選択され得る。ここで、ｍ＊（ａ）＜ｍ＊＊＜ｍである。
【０１１７】
パラメータのリスト全体は、以下、表１で詳述される。
【表１】
2020528595.tif 000014
【０１１８】
＜悪意のあるノード＞
悪意のあるノードは、トランザクションの配布のための確率的モデルを効率的でないものとすることを目的としている。悪意のあるノードは、次の方法のいずれかで機能又は動作することができる。
・悪意のあるノードは、伝播されるはずのトランザクションを伝播しない。この悪意のあるノードへ接続される誠実な（honest）ノードは、他の誠実な（又は悪意のある）ノードからそれらのトランザクションを取得可能であり得る。しかし、マイナーの組が依然としてそれらを受信して、新たにマイニングされたブロックに含めることができるとすれば、ネットワークにおけるトランザクションの完全な配布は不要である。
・悪意のあるノードは、同じ合法トランザクションを複数回伝播する。受信側ノードは、ルックアップテーブルを用いて、以前に受け取られたトランザクションの経過を追うことができる。従って、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、無効なトランザクションを伝播する。受信側ノードがトランザクションの妥当性確認を実行する場合に、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、膨大な数のダミートランザクションを生成し伝播する。受信側ノードは、ピアからの膨大な有効な着信トランザクションに対して異なる応答をすることができる。それに応えて、（ｉ）受信側は、トランザクションリレーレートを低減するように送信側に求める。問題が解決しない場合に、送信側ピアは削除され、（ｉｉ）受信側は、リレーされたトランザクションに対する最低限のトランザクション料金を要求（及びチェック）することができる。これにより、悪意のあるノードにとって攻撃が高価になる。最低限のトランザクション料金が順守されない場合に、送信側ピアは削除され、且つ／あるいは、（ｉｉｉ）送信側ピアは単に削除される。
【０１１９】
上記の攻撃及び確率的モデルに基づいて、次の特性が推測され得る。
・トランザクションリレーレートは、個々のノードの処理性能及び帯域幅利用可能性の両方に依存する。この理由により、デフォルトの最大レートは強制されない。
・悪意のあるノードは、単に沈黙を保つことができない。それらは、自身の接続を維持するために、有効なトランザクションを転送しなければならない。
【０１２０】
＜メッセージ＞
ビットコインネットワーク上のノードインターフェイスからのデータ又はオブジェクトの確率的リレーを含む、本明細書における方法の実装をサポートするために、新しいメッセージタイプが導入され得る。更に、現在のピア・ツー・ピアのビットコインプロトコルに関して先に詳述された現在のメッセージタイプのいくつは、もはや使用されず、一方、以下で記載されていないメッセージタイプは、ビットコインＰ２Ｐプロトコルに対して変更されない。
【０１２１】
＜データメッセージ＞
他のノードに１以上のデータオブジェクトを要求するメッセージＧＥＴＤＡＴＡはもはや使用されないか、あるいは使用から外される。同様に、送信側ピアが知っているオブジェクトの１以上のインベントリを送信するメッセージＩＮＶはもはや使用されないか、あるいは使用から外される。ＧＥＴＤＡＴＡに対する応答としてのＮＯＴＦＯＵＮＤメッセージはもはや使用されないか、あるいは使用から外される。
【０１２２】
既に先に紹介されたＭＥＭＰＯＯＬメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのＩＤを要求する。このメッセージに対する応答は、トランザクションＩＤを含む１以上のＩＶメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のＩＮＶメッセージを送信する。ノードはこの機能を無効にしてよく、従って、その局所ＭＥＭＰＯＯＬの送信は必要とされない。
【０１２３】
＜制御メッセージ＞
ピアが依然として接続されていることを確認するためのＰＩＮＧメッセージ及びＰＯＮＧメッセージは取り除かれる。悪意のあるノードのような無言のノードは、上記の通りに管理される。メッセージＦＥＥＦＩＬＴＥＲは変更されないままである。しかし、料金閾値を順守しないピアは削除される。
【０１２４】
新しいメッセージＴＥＭＰ及びＦＬＯＷが導入される。
・ＴＥＭＰメッセージは、ピアが依然として動作しているかどうかを、そのインターフェイスから着信トラフィックが受信されないためにチェックするようノードが求められる場合に、使用される。（任意の短い時間Ｔｔｅｍｐの）一時リレー要求ＴＥＭＰは、前記インターフェイスへ接続されたピアへ送られる。受信側ピアがリレーを開始するが、所与の時間窓Ｔｅｍｐを順守しない場合に、それは行列から削除される。
・ＦＬＯＷメッセージは、ノードがピアに局所フロー制御に従ってトランザクションリレーレート（１秒あたりのトランザクションの数）を変更するよう要求する場合に、使用される。レートは、増大、低減、又は一時的にサスペンド（リレーレート＝０）されてよい。受信側ピアが新しいリレーレートを順守しない場合に、それは削除される。新しいＦＬＯＷ要求は、現在のリレーレートを変更するために必要とされる。受信側ピアがリレーと再開するために第２のＦＬＯＷ要求を受信しない場合に、それは送信側を削除する。
・ＭＩＮＦＥＥメッセージは、ノードが最低限のトランザクション料金によってフィルタをかけられたトランザクションを受け取るよう求められる場合に、使用される。最低限の値は、個々のトランザクション及び／又は、複数のトランザクションが単一のＩＰパケットに収まる場合には料金の合計に対して、セットされ得る。受信側ピアがトランザクション料金の制限を順守しない場合に、それは削除される。
【０１２５】
［ディメンショニング］
図４は、ノードｉ、ｊ、ｋ及びｌを有するブロックチェーンネットワークの要素を表す。ノードは、異なるトラフィックプロファイルを有することができ、一例として、次のように、参照され呼ばれ得る：
・「プロバイダ」，主にトランザクションを生成するノードであり、ノードｉが、専用の事業活動を持った１以上のマーチャントノードを表し得る。  
・「アグリゲータ」，主にトランザクションを収集するノードであり、ノードｌが、専用の事業活動を持った１以上のマーチャントノードを表し得る。  
・「ルータ」，主にトランザクションを転送する、ノードｊ及びノードｋのようなノードである。
【０１２６】
各ノードは、その接続の現在のステータス及び局所的に利用可能な帯域幅資源に応じて入出力トラフィックの量を自動的に制御することができる。入力及び出力資源又はインターフェイスの間の帯域幅の割り当ては、ノードのタイプ又は機能に従って調整され得る。ノードｉ及びｊは不平衡であるが、ノードｊ及びｋは、ノードから流れ出るのと同量のデータがルータノードへ流れ込むので、平衡である。
【０１２７】
ノード、例えば、ノードｊは、ピアノードへ接続された複数のインターフェイスを有する。ノードは、ある期間（Ｔ）にわたってノードによって処理可能なデータ（Ｄ）の最大量に基づいて、その帯域幅（Ｂ）容量を決定することができる。いくつかのノードは、それらのネットワークプロバイダによって帯域幅の上限が設定されている。
【０１２８】
Ｂｊは、ノードｊで利用可能なアプリケーションレベルの帯域幅である。帯域幅Ｂｊは、（ｉ）インターネットサービスプロバイダ（ＩＳＰ）によって供給されるネットワークアクセスの品質及び（ｉｉ）他のローカルアプリケーションによるネットワーク利用の両方に依存する全体のバジェットである。
【０１２９】
Ｂｊの値は、入力及び出力トラフィックについての異なる帯域幅要件Ｂｊｉ及びＢｊｏに依存する。従って、
Ｂｊ＝Ｂｊｉ＋Ｂｊｏ
である。ルータの場合に、
Ｂｊ／２＝Ｂｊｉ＝Ｂｊｏ

であると考えられる。アグリゲータの場合に、
Ｂｊｉ＝ｋｊＢｊｏ

であると考えられる。ｋｊは、ノードのプロファイル係数であり、一例として、ノードのタイプ、すなわち、名目上セットから、あるいは、ノードを出入りする実際のデータ間の差から、決定される。前記プロファイル係数ｋｊは、ノードへの着信データとノードから送信されるデータとの比から望ましくは決定される。データには、リレーされたデータ及び／又は局所的に生成されたデータが含まれ得る。
【０１３０】
データ（ｄｊ）は、ノードｊのインターフェイスを通るピアノードからの入力データ（ｄｊｉ）及び前記ピアノードへの出力データ（ｄｊｏ）からモニタ及び構築可能であり、ノードｊのプロファイル係数（ｋｊ）は、入力データ（ｄｊｉ）と出力データ（ｄｊｏ）との間の差から決定され得る。
【０１３１】
データ（ｄｊ）は、複数の期間（Ｔ）にわたってモニタされ得る。モニタされたデータの値は、新しい期間Ｔが始まるときにリセットされ得る。ノードｊ内で生成されるデータは、出力データ（ｄｊｏ）に寄与する。
【０１３２】
期間（Ｔ）は、
Ｄｊ＝Ｄｊｉ＋Ｄｊｏ
であるように、ノードｊによって処理可能なデータの最大量（Ｄ）を決定するために使用され得る。ここで、Ｄｊｉ及びＤｊｏは、その期間内でサポートされる着信データ及び発信データの最大量である。
【０１３３】
期間Ｔは、フロー制御時間窓Ｔｆｌｏｗであることができる。ノードｊでの変数を考えると、その場合に：
Ｂｊ＝（ｋｊ＋１）Ｄｊｏ／Ｔ
Ｂｊｏ＝Ｄｊｏ／Ｔ
が成立する。従って、Ｄｊｉ及びＤｊｏの値は、ｋｊ、Ｔｆｌｏｗ及びＢｊに依存するシステムパラメータである：
Ｄｊｏ＝ＢｊＴ／（ｋｊ＋１）
Ｄｊｉ＝ｋｊＤｊｏ＝ｋｊＢｊＴ／（ｋｊ＋１）
【０１３４】
＜現在の係数＞
ブロックチェーンネットワークの性能を最適化するために、一例として、ビットコインが使用される。ビットコインコアの仕様は、デフォルトで、異なるピアへの最大１２５の接続を許し、そのうちの８つは外向きである。
【０１３５】
ノードへ接続可能なピアＰの数ｍは制限され、よって、現在のシステムでは、ｍｍｉｎは１であり、ｍｍａｘは１２５である。現在の規制によらなければ、ノードへ接続可能なピアＰの数ｍは、ｍｍｉｎ≧１且つｍｍａｘ≦Ｐとなる。
【０１３６】
ノードｊへ接続可能なピアノードの最小数（ｍｍｉｎ）及びピアノードの最大数（ｍｍａｘ）は、前記モニタされたデータ（ｄ）と、ノードｊへ接続可能なピアの最大数（Ｐ）に従って、セットされ得る。
【０１３７】
２つ以上の期間（Ｔ）にわたって、モニタされたデータ（ｄ）が、比を決定し、その比を用いて、ノードｊへ接続可能なピアノードの最小数（ｍｍｉｎ）及びピアノードの最大数（ｍｍａｘ）をセットするために、使用され得る。比は、実際のデータとデータ上限との間にあることができる。データ（ｄ）と最大データ（Ｄ）との間の非線形関係のような他の関係が使用され得る。
【０１３８】
データ（ｄ）とデータ上限（Ｄ）との間の関係に加えて、ノードｊのタイプ又は機能が、ノードｊが接続することができるピアノードの数の決定において考慮され得る。機能は、ノードの機能に従って値を割り当てられるプロファイル係数（ｋ）を用いて考慮に入れられる。プロファイル係数は変数であることができる。
【０１３９】
一例として、プロファイル係数の値は、データを転送するよう構成されるノードの場合には１であり、データを収集又はアグリゲートするノードの場合には１よりも大きく、データを生成又は供給するノードの場合には１に満たない。
【０１４０】
ばらつき、又は外れデータを抑制するために、複数の期間（Ｔ）にわたるデータ（ｄ）の平均を有する平均データ（ｄ＊）が、最大データ（Ｄ）に対する平均データ（ｄ＊）の比を決定することによって、ノードｊへ接続可能なピアノードの最小及び最大数を決定するために使用され得る。
【０１４１】
また更に、ノードへ接続可能なピアノードの最小数（ｍｍｉｎ）及びピアノードの最大数（ｍｍａｘ）の決定には、バッファが考慮に入れられ得る。そのようなバッファは、複数の期間（Ｔ）にわたるデータ（ｄ）の標準偏差（σ）又は分散（σ２）を使用し、スケーリング係数を分散に適用し、スケーリングされた分散に従って、ノードへ接続可能なピアノードの最小及び最大数を決定することを含むことができる。
【０１４２】
モニタされたデータ（ｄｊ）は、ノードｊのインターフェイスを通るピアノードからの入力データ（ｄｊｉ）及び前記ピアノードへの出力データ（ｄｊｏ）の和である。ノードｊへ接続可能なピアノードの最小及び最小数ｍは、
【数１２】
2020528595.tif 000015
によってセットされるということになる。ここで、
ｍｍｉｎ及びｍｍａｘは、ピアノード接続の整数であり、
ｄ＊は、複数の期間（Ｔ）にわたるデータ（ｄ）の平均レベルであり、
Ｄｊｉ及びＤｊｏは、期間（Ｔ）内にサポートされる着信及び発信データの最大データであり、
Ｐは、前記ノードへ接続可能なピアの最大数（Ｐ）であり、
σ２は、所与の数の期間（Ｔ）のデータ（ｄ）の分散であり、
ｔは、スケーリング係数又は分散パラメータであり、
ｍｍａｘ≦Ｐである。
【０１４３】
線形範囲［１，Ｐ］と［ｍｍｉｎ，ｍｍａｘ］値との間には直接的な比例関係が存在し得る。
【０１４４】
ｄｊを平均すること及びｔを更新することのために考えられる期間（Ｔ）の数又はＴｆｌｏｗ時間窓は、一定であることができる。分散パラメータｔは、乗法的因子であることができる。
【０１４５】
上記の式においてｍｍｉｎ≧１且つｍｍａｘ≦Ｐを課すことによって、式は、分散パラメータｔの値の範囲を決定するために再編され得る。これは、次の：
【数１３】
2020528595.tif 000016
とおりに表され得る。
【０１４６】
ノードのブートストラップ又は最初のセットアップの間、ｍｍｉｎ＝１且つｍｍａｘ＝Ｐである。
【０１４７】
変数Ｐ、ｄ＊及びＤｊの動作範囲は制限され、従って、σｊ２に依存するｔの動作範囲は制限される。一例として、Ｐ＝１２５及びｄｊ＊／Ｄｊ＝０．５を考えると、その場合：
【数１４】
2020528595.tif 000017
となる。
【０１４８】
分散パラメータは、
【数１５】
2020528595.tif 000018
によって表現可能な、範囲の平均値の近似を用いて、決定され得る。
【０１４９】
ｍｍｉｎ及びｍｍａｘ（ピアノード接続の整数）が決定されると、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定することができる。行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされる。
【０１５０】
＜時間窓（Ｔ）＞
期間（Ｔ）は、相関行列への変更間の時間の長さから決定される。
【０１５１】
ノードは、追加的に、又は代替的に、ブロックチェーンネットワーク上のノードの活動に関する情報を受け取り、相関行列への変更間の時間の長さ及び／又はネットワーク上の活動レベルの変化に従って期間（Ｔ）をセットすることができる。
【０１５２】
２つの連続した局所相関行列更新の間にある時間窓が、Ｔを決定するために使用され得る。
【０１５３】
時間Ｔは、アクティブなノードの平均数が７５６１（２０１７年６月時点）であり、２４時間ごとに０．８５％の平均インクリメントで決定され得るか、あるいは少なくとも影響を及ぼされる。これらの条件で、平均２．５個の新しいノードが１時間ごとにネットワークに加わると考えると、Ｔの初期値は６０分に固定され得る。ノードの通常のリレー動作中に、Ｔは、着信データ（ｄｊｉ）の現在の累積量に反比例すると見なされ得る。
【０１５４】
新しいピアノードが接続されるとき、データは、専用の期間Ｔｊｏｉｎの間にその新しいノードへリレーされ得る。ネットワークの状態に従って、これは、発信データｄｊｏの現在の累積量に反比例すると見なされ得る。
【０１５５】
Ｔｂｏｏｔｕｐは、新しいノードが安定した相関行列を構築するために必要な時間であり、この値は、関数ｆ（ｍ）に比例する。すなわち、接続数が多くなるほど、正確な相関行列を構築するための必要な時間の量は長くなる。
【０１５６】
本発明のために、期間ＴはＴｆｌｏｗと同じである。これは、着信及び発信データの累積量の２つの連続した更新の間にある時間窓である。この値は、Ｔｃｈａｎｇｅに比例することができ、最も簡単な場合に、Ｔｆｌｏｗ＝Ｔｃｈａｎｇｅ＝Ｔである。
【０１５７】
すなわち、期間（Ｔ）は、フロー制御パラメータ（Ｔｆｌｏｗ）であることができ、そのパラメータは、ノードを通るトラフィックを変更するように調整される。期間（Ｔ）は、ノードによって所定の値に一時的に調整され得る。これは、帯域幅に影響を及ぼすノードへの局所的な変更、そして、その後に、それを流れるデータフローに基づくことができる。そのような状況で、前の期間の長さの２倍の期間、すなわち２Ｔ、のような、増大された期間が、限られた期間のために使用され得る。同様に、期間Ｔは、ノードがデータを蓄積する開始期間にセットされ得る。局所的な変更又は開始期間のいずれか一方により、ある期間の全ピアノードへのデータの一時的なリレーが得られる。
【０１５８】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」（comprising及びcomprises）などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」（comprises）は、「〜を含むか、又はそれらから成る」（includes  or  consists  of）を意味し、「有する」（comprising）は、「〜を含むか、又はそれらから成る」（including  or  consisting  of）を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【０１５９】
＜要約＞
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。本明細書で記載される解決法により、処理されるデータ及び帯域幅上限に従うピア接続の数の調整又はディメンショニングが可能となる。確率的リレーは、大量のトランザクションの処理及び伝播を改善するが、それは、各ノードで利用可能な帯域幅又はパフォーマンス能力を考慮しない。
【０１６０】
本発明は、接続されるピアの数をディメンショニングする方法を提供し、ノードが行う動作のタイミングを調整することができる。そのようなタイミングには、相関行列のリセット又は再決定、ブートアップ時間、などがある。
【０１６１】
従って、ボトルネックを回避することによってネットワーク上のフローを最適化するように性能に従って接続性を調整することに加えて、本発明は、ノード間の通信を最適化することによってデータパケットの分散を補完する。
【０１６２】
ノードでボトルネックによって引き起こされる長いキューは、接続性を制御し、任意に、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって、抑制される。
【０１６３】
ピア接続の全体の数が管理され、情報冗長性の安全レベルを保ちながらパケット伝送の低減により補完され得る。
【図１】
2020528595.tif 000021
【図２】
2020528595.tif 000022
【図３】
2020528595.tif 000023
【図４】
2020528595.tif 000024
【国際調査報告】
2020528595.tif 000025
2020528595.tif 000026