(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023154044
(43)【公開日】2023-10-18
(54)【発明の名称】ブロックチェーンネットワークにおける確率的リレーのためのフロー制御
(51)【国際特許分類】
G06Q 50/10 20120101AFI20231011BHJP
【FI】
G06Q50/10
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023131877
(22)【出願日】2023-08-14
(62)【分割の表示】P 2022103306の分割
【原出願日】2018-06-25
(31)【優先権主張番号】1710517.2
(32)【優先日】2017-06-30
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】1713363.8
(32)【優先日】2017-08-21
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(72)【発明者】
【氏名】コヴァチ,アレグザンドラ
(57)【要約】 (修正有)
【課題】ブロックチェーンネットワークにおける確率的リレーのためのフロー制御を提供する。
【解決手段】フロー制御において、ノードの帯域幅容量は、ある期間のノードによって処理可能な最大データの量に基づいて決定される。ノードのプロファイル係数は、ピアノードへ及びそれからのノードのインターフェイスを通るデータがモニタされ、入力データと出力データとの間の差から決定される。データをモニタする複数の期間にわたり解析されたデータが、ノードへ接続可能なピアの最大数に従って、ノードへ接続可能なピアノードの最小数及び最大数を決定する。決定されたピアノード接続可能な数により、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定する。相関行列は、ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされる。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
ピアノードから受信したトランザクションを解析することと、
ピアノードから受信した前記トランザクションに基づいて、ピアノードが悪意のあるノードであることを決定することと、
ピアノードが悪意のあるノードであることを決定すると、当該ピアノードへの接続を削除することと
を有する方法。
【請求項2】
前記した、ピアノードが悪意のあるノードであることを決定することは、合法トランザクションを複数回繰り返し送信する動作に基づく、
請求項1に記載の方法。
【請求項3】
前記した、ピアノードが悪意のあるノードであることを決定することは、当該ピアノードから無効なトランザクションを受信することに基づく、
請求項1に記載の方法。
【請求項4】
前記した、ピアノードが悪意のあるノードであることを決定することは、当該ピアノードからダミートランザクションを受信することに基づく、
請求項1に記載の方法。
【請求項5】
前記ピアノードが悪意のあるノードではないことを決定すると、
複数の期間にわたる入力データ及び出力データに少なくとも基づいて前記ノードのプロファイル係数を割り当て、
前記プロファイル係数に少なくとも部分的に基づいて、前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットする、
請求項1に記載の方法。
【請求項6】
前記ノードによって、前記複数のインターフェイスのうちの1つ以上のインターフェイスを通って前記複数の期間のうちの少なくとも1つの期間にわたって伝送されたデータと、前記ノードが処理可能な最大データ量とに少なくとも基づいた比率を決定することと、
前記比率を使用して、前記ノードへ接続可能な前記ピアノードの最小数及び前記ピアノードの最大数をセットすることと
を更に有する、請求項5に記載の方法。
【請求項7】
前記プロファイル係数は、前記ピアノードの機能に従って値を割り当てられ、前記プロファイル係数は、
データを転送するようノードに対する第1値と、
データを収集又はアグリゲートするノードに対する第2値と、
データを生成又は供給するノードに対する第3値と
のうちの少なくとも1つを含む、
請求項6に記載の方法。
【請求項8】
前記ノードは、複数のインターフェイスによってピアノードへ接続され、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数から相関行列が決定される、
請求項5に記載の方法。
【請求項9】
前記相関行列の変化の間の時間の長さに少なくとも部分的に基づいて前記複数の期間のうちのある期間を決定することを更に有する、
請求項8に記載の方法。
【請求項10】
前記ブロックチェーンネットワーク上のノードの活動に関する情報を受信することと、
前記相関行列の前記変化の間の前記時間の長さに従って前記期間を決定することと
を更に有する、
請求項9に記載の方法。
【請求項11】
前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットすることは、最大データに対する平均データの比率を決定することを更に有し、
前記平均データは、前記複数の期間のうちの少なくとも2つの期間にわたるデータの平均を有する、
請求項5に記載の方法。
【請求項12】
前記期間は、前記ノードによって、
前記ノードへの局所パラメータ更新と、
前記ノードがデータを蓄積する開始期間と、
全てのピアノードへのデータの一時的なリレーと
のうちの少なくとも1つに適応するよう、一時的に所定値へ調整される、
請求項9に記載の方法。
【請求項13】
前記期間は、フロー制御パラメータであり、該パラメータは、前記ノードを通るトラフィックを変更するよう調整される、
請求項9に記載の方法。
【請求項14】
前記ノードは、ピアノードへ接続された複数のインターフェイスを有し、該複数は、インターフェイスの少なくとも最小数であり、インターフェイスの最大数以下であり、
前記方法は、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも1つの他のインターフェイスを選択することであり、他のインターフェイスは、前記受信インターフェイスの前記相関係数の組に従って選択される、ことと、
前記受信されたデータを前記少なくとも1つの他のインターフェイスからリレーすることと
を更に有する、
請求項1に記載の方法。
【請求項15】
前記相関行列からインジケータが導出され、
前記受信インターフェイスと前記少なくとも1つの他のインターフェイスとの間の相関が前記インジケータよりも低いことの結果として、データがリレーされる、
請求項14に記載の方法。
【請求項16】
前記ブロックチェーンネットワークの前記ノードが、前記方法を実行する、
請求項1に記載の方法。
【請求項17】
コンピュータ実行可能命令を有し、前記コンピュータ実行可能命令は、実行される場合に、プロセッサに、
ある期間にわたるノードの容量を、前記ノードとピアノードとの間で1つ以上のインターフェイスを通ってやりとりされる入力データ及び出力データに少なくとも基づいて決定させ、
複数の期間にわたる前記入力データ及び出力データに少なくとも基づいて前記ノードのプロファイル係数を割り当てさせ
前記プロファイル係数に少なくとも部分的に基づいて、前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットさせる、
非一時的なコンピュータ可読記憶媒体。
【請求項18】
インターフェイスデバイスと、
前記インターフェイスデバイスへ結合されるプロセッサと、
前記プロセッサへ結合されるメモリと
を有し、
前記メモリには、コンピュータ実行可能命令が記憶されており、前記コンピュータ実行可能命令は、実行される場合に、前記プロセッサに、
ある期間にわたるノードの容量を、前記ノードとピアノードとの間で1つ以上のインターフェイスを通ってやりとりされる入力データ及び出力データに少なくとも基づいて決定させ、
複数の期間にわたる前記入力データ及び出力データに少なくとも基づいて前記ノードのプロファイル係数を割り当てさせ
前記プロファイル係数に少なくとも部分的に基づいて、前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットさせる、
システム。
【請求項19】
前記コンピュータ実行可能命令は更に、前記プロセッサに、
前記ノードで処理される前記入力データ及び出力データに少なくとも部分的に基づいて、前記ノードの前記1つ以上のインターフェイスの夫々の対応する相関を決定させる、
請求項18に記載のシステム。
【請求項20】
前記コンピュータ実行可能命令は更に、前記プロセッサに、
夫々のインターフェイスの前記相関が前記ノードの2つ以上のインターフェイスの平均相関以下であることに少なくとも部分的に基づいて、受信したデータをリレーさせる、
請求項19に記載のシステム。
【請求項21】
前記期間は、前記ノードの前記1つ以上のインターフェイスの夫々の1つ以上の相関の変化の間の時間の長さに対応する、
請求項20に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、概して、ブロックチェーンネットワークのノードにおける実装に適した、コンピュータにより実施される方法及びシステムに関係がある。多数のトランザクション及び大きいトランザクションブロックを扱うための改良されたブロックチェーンノード構造、ネットワークアーキテクチャ、及びプロトコルが記載される。本発明は、ビットコインブロックチェーンとともに使用することに特に適しているが、これに限られない。
【背景技術】
【0002】
本文書中、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳(distributed ledgers)を含むよう語「ブロックチェーン」を使用する。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。語「ユーザ」は、人又はプロセッサに基づくリソースをここでは指し得る。
【0003】
ブロックチェーンは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装されるピア・ツー・ピアの電子台帳である。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【0004】
トランザクションがブロックチェーンに書き込まれるために、それは“妥当性確認”(validated)されなければならない。ネットワークノード(マイナー(miners))は、各トランザクションが有効であることを確かめる作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction)(UTXO)に対して、そのlocking及びunlockingスクリプトを実行することによって、この妥当性確認作業を実行する。locking及びunlockingスクリプトの実行がTRUEになる場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれ得る。よって、トランザクションがブロックチェーンに書き込まれるために、それは、i)トランザクションを受け取る第1ノードによって妥当性確認され、トランザクションが妥当性確認される場合に、ノードはそれをネットワーク内の他のノードにリレーし、ii)マイナーによって構築された新しいブロックに加えられ、iii)マイニング、すなわち、過去のトランザクションの公開台帳に付加、されなければならない。
【0005】
ブロックチェーン技術が暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号化によるセキュリティシステムと、ブロックチェーン上で保持され得るデータとの両方の使用を探求し始めている。暗号資産の分野に制限されない自動化されたタスク及びプロセスのためにブロックチェーンが使用される場合に、それは大いに有利である。そのような解決法は、ブロックチェーンの利益(例えば、イベントの永久的な耐タンパー性の記録、分散処理など)を活用しながら、それらの用途を広げることができる。
【0006】
Blockchain.infoによれば[ビットコイントランザクションレベルは、Blockchain Luxembourg S.A.R.L.(ブロックチェーンルクセンブルク有限会社)を介して入手可能であり、http://blockchain.infoから取得可能である。]、2017年4月で、ブロックごとのビットコイントランザクションの平均数は約2000単位であった。近い将来、最大ブロックサイズに対する制約は緩和される可能性があり、ブロックごとのトランザクションの数は大幅に増大する可能性がある。
【0007】
競争力のある暗号通貨は、大量の未承認トランザクションを可能な限り速く伝播する必要がある。比較として、Visaの電子的口座決済は、ピーク容量が1秒あたり5万6千件のトランザクションである[VISAトランザクションレベルは、2015年6月にVisa社によって発行された文書“Visa Inc. at a Glance”内でまとめられている。それは、http://usa.visa.com/dam/VCOM/download/corporate/media/visa-fact-sheet-Jun2015.pdf.から取得可能である。]。
【0008】
インベントリによるビットコインネットワーク内の新しいトランザクションの交換のための現在の3ステップメッセージングプロトコルは、現在の標準(1秒あたり~5件のトランザクション[Decker, Christian and Wattenhofer, Roger (2013). Information propagation in the bitcoin network. IEEE Thirteenth International Conference on Peer-to-Peer Computing (P2P), 2013])よりも数桁大きいトランザクション量の迅速な分散に対処するには不十分である。
【0009】
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。
【0010】
データフローの管理が必須であるだけでなく、ノード及びネットワークの技術的なキャパシティ又は能力が考慮される必要がある。
【0011】
本明細書で記載される解決法により、ビットコインネットワークは、ノード及びネットワークの制限を考慮しながら、大量のトランザクションの伝播を処理可能となる。
【0012】
ビットコインネットワークを介してデータパケット又はトランザクションを送信する既知の方法、例えば、3ステップメッセージングによる新しいトランザクションの分散、により、ネットワークにわたるデータパケットの伝播及び分散は遅くなる。準備段階では、ノードの内外へのキューが生じる。そのような問題は、ノードがその公称限界を超えて又はその周囲で動作するよう求められるときに深刻になる。
【発明の概要】
【0013】
全体として、本発明は、現在のブロックチェーン容量よりも数桁大きい増大したトランザクション量の処理及び伝播のための新規のアプローチに存する。これは、ノード間の通信を減らすことによってネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることで達成可能である。ボトルネックによって引き起こされるノードの内外への長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。追加的に、又は代替的に、本発明は、ピアノードに対するノードのインターフェイスを通るデータ又はトラフィックを管理する新規のアプローチに属する。これは、転送されるデータ及び局所的な資源を考慮することができる。該局所的な資源は、帯域幅資源、データプロファイル、接続されるピアの数、及びノードの性能のうちの少なくとも1つを含むことができる。ノードの機能も考慮され得る。
【0014】
この方法によれば、ノードは、(i)ピアノードに接続されるインターフェイスの数に依存せず、且つ、(ii)ノードのインターフェイスに関連した変更に依存しないように、適応的に動作することができ、それにより、新しい接続、接続の切断、及び悪意のあるノードが考慮され、ネットワークのインテグリティが維持される。
【0015】
この方法では、管理され得るノード上のインターフェイスの数に制限はなく、方法はネットワーク及びノードの環境に適応するので、ネットワークの性能及びサイズは制限されない。非効率的伝送は最小限にされ、悪意のあるノードは回避される。
【0016】
この方法によれば、接続されるピアの最小及び最大数を決定することができる。重要なタスクを実行するための時間窓は、それに応じて調整され得る。
【0017】
この方法によれば、ブロックチェーンネットワークの性能は向上し、ブロックチェーンネットワーク又はブロックチェーンネットワークと連携するオーバーレイネットワークは改善される。
【0018】
よって、本発明によれば、添付の特許請求の範囲で定義される方法が定義される。
【0019】
よって、ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
ある期間にわたってノードによって処理可能な最大データの量に基づいてノードの帯域幅容量を決定することと、
前記ノードのインターフェイスを通るピアノードからの入力データ及び前記ピアノードへの出力データを含むデータをモニタし、前記入力データから出力データ(do)の間の差から前記ノードのプロファイル係数を決定することと、
複数の期間にわたって前記データをモニタすることと、
前記モニタされたデータと、前記ノードへ接続可能なピアの最大数とに従って、前記ノードへ接続可能なピアノードの最小数及びピアノードの最大数をセットすることと
を有する前記方法を提供することが望ましい。
【0020】
方法は、帯域幅利用可能性及び処理性能のような性能制限因子に従って接続数を調整することをノードに可能にする。
【0021】
少なくとも1の期間にわたって、前記モニタされたデータは、比を決定するために使用され得る。前記ノードへ接続可能な前記ピアノードの最小数及びピアノードの最大数をセットすることは、前記比を用いて決定され得る。比は、ノードを通るデータと、ノードによって処理可能なデータの最大量とから、計算され得る。比は、非線形であることができる。
【0022】
前記プロファイル係数は、前記ノードの機能に従って値を割り当てられ得、前記プロファイル係数は、データを転送するよう構成されるノードについての1の値と、データを収集又はアグリゲートするノードについての1よりも大きい値と、データを生成又は供給するノードについての1に満たない値とを有する。
【0023】
前記ノードは、ピアノードへ接続される複数のインターフェイスを有することができ、相関行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数から決定され得る。前記期間は、前記相関行列への変更の間の時間の長さから決定され得る。変更は、ノードの始動又は起動に関係があり、あるいは、ノードがネットワークに参加すること又はネットワークから去ることに関係があり得る。
【0024】
前記ノードは、ブロックチェーンネットワーク上のノードの活動に関する情報を受信することができ、前記相関行列への変更の間の前記時間の長さに従って前記期間を決定する。
【0025】
前記複数の期間にわたるデータの平均を有する平均データが、前記最大データに対する平均データの比を決定することによって、前記ノードへ接続可能なピアノードの前記最小数及び最大数を決定するために使用され得る。
【0026】
方法は、複数の期間にわたって前記データの分散を決定し、該分散にスケーリング係数を適用し、該スケーリングされた分散に従って前記ノードへ接続可能なピアノードの前記最小及び最大数を決定することを更に含むことができる。
【0027】
ピアノード接続の最小及び最大数(m)は、
【数1】
から決定され得る。ここで、d*は、前記複数の期間(T)にわたるデータ(d)の平均レベルであり、Dは、期間(T)にわたって前記ノードによって処理可能な前記最大データ(D)であり、Pは、前記ノードへ接続可能なピアの前記最大数(P)であり、σ
2は、前記データ(d)の前記分散であり、tは、スケーリング係数又は分散パラメータであり、m
max≦Pである。
【0028】
前記スケーリング係数又は分散パラメータtは、
【数2】
によって定義可能であり、tの平均値は、前記ノードへ接続可能なピアノードの前記最小及び最大数を決定するときに使用され得る。
【0029】
前記期間は、前記ノードによって、前記ノードへの局所パラメータ更新と、前記ノードがデータを蓄積する開始期間と、全てのピアノードへのデータの一時的なリレーとのうちの少なくとも1つに適応するよう一時的に所定値へ調整され得る。
【0030】
前記期間は、フロー制御パラメータであることができる。該パラメータは、前記ノードを通るトラフィックを変更するよう調整され得る。
【0031】
決定されたピアノード接続の数により、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定することができる。相関行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされ得る。
【0032】
前記ノードが、ピアノードへ接続される複数のインターフェイスを有し、該複数が、ピアノードへ接続されるインターフェイスの少なくとも最小数(mmin)であり、且つ、ピアノードへ接続されるインターフェイスの最大数(mmax)以下である場合に、方法は、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも1つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも1つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有することができる。
【0033】
前記相関行列からはインジケータが導出され得る。前記受信インターフェイスと前記少なくとも1つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる。
【0034】
データは、トランザクション又はブロックのようなオブジェクトに対応することができる。リレーは、代替的に、相関がインジケータよりも高い場合に起こることができる。インジケータは閾値であることができる。インジケータは、データを受信するインターフェイスと複数のインターフェイスとの間の相関のレベル、例えば平均値など、を表すことができる。平均値は、受信インターフェイスと他のインターフェイスとの間の相関係数の平均であることができる。前記インジケータは、メトリックを決定するために使用され得、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する。メトリックは、どのインターフェイスからデータがリレーされるべきかを選択するために使用される命令と見なされ得る。命令は、閾値又はインジケータに従ってセットされ得るか、あるいは、それに依存し得る。
【0035】
例として、命令は、インターフェイスがインジケータを下回る相関インデックスを有していることを要求する。命令は、相関インデックスがインジケータの上にあるか又は下にあるかに応じて、どのインターフェイスがデータをリレーするかを決定することができる。
【0036】
インデックスがインジケータを下回るときのデータリレーの例は、通常の定常状態のネットワーク状態であることができる。‘定常状態’条件では、インターフェイス及び接続されるピアの数は変化せず、相関行列は変化しない。
【0037】
インデックスがインジケータを上回るときのデータリレーの例は、ノードに対する新しいピアノードの接続の追加などの、状態の変化であることができる。異なる命令は、異なるインターフェイスに適用することができる。
【0038】
分配されるデータは、マイナー、ピアノード及びフルノードからのデータを含め、ブロックチェーンネットワークから受け取られるデータを含むことができる。ノードの各インターフェイスで処理されるデータ間の相関は、ノードで受信されるデータパケット又はオブジェクトの重複を考慮することができる。インジケータは、ノードの各インターフェイスの相関インデックスの平均又は中央値であることができる。インジケータは、最低相関インターフェイスと最高相関インターフェイスとの間のポイントを定義することができる。データ又はオブジェクトは、相関インデックスがインジケータを下回るときにインターフェイスからリレーされ得る。相関の程度が低いインターフェイスは、相関の高いインターフェイスがデータを取得すると安全に想定できるため、優先順位を付けられ得る。
【0039】
ノードはインターフェイスを介してデータを処理し、該処理は、トランザクション又はブロックのようなデータ又はオブジェクトを送信及び受信することを含む。
【0040】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在することができる。インターフェイスは、送信/受信ピアへのTCP/IP接続を表す論理インターフェイスIDであることができる。
【0041】
前記ノードは、(i)各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、(ii)インターフェイスの対を通じて処理された同一トランザクションとをモニタすることによって前記相関行列を構築することができ、それからいずれか2つのインターフェイス間の相関係数を決定する。前記相関行列は、m(m-1)個の要素を有することができ、次の:
【数3】
とおりに、インターフェイスaの相関インデックスを決定するために使用され得る。ここで、mは、ピアノードへ接続されるインターフェイスの数である。
【0042】
前記相関行列は、m(m-1)個の要素を有することができ、次の:
【数4】
とおりに、インターフェイスaについての相関係数の組を決定するために使用され得る。
【0043】
前記インジケータは、ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、前記組から平均又は中央値を導出することとによって、決定され得る。
【0044】
インジケータは、どのインターフェイスがデータをリレーするかを決定するために命令の組によって使用され得る。
【0045】
データをリレーするインターフェイスの数を決定するためのインジケータは、ノード始動又は起動からの時間であるリセット時間と、新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びインターフェイスが悪意のあるノードへ接続することのうちの少なくとも1つを含む変更イベント間の時間である変更時間とのうちの少なくとも1つに更に基づくことができる。リセット時間は、新しいノードのために使用され得る。変更時間は、既存のノードのために使用され得る。
【0046】
ノード始動時に、前記ノードは、該ノードに隣接するか又は直接接続されるノードのようなピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーすることができ、前記期間が過ぎた後に、前記ノードは、前記インジケータよりも下にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーする。
【0047】
変更イベントを検出すると、前記相関行列がリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【0048】
本発明はまた、実行されるときに、請求される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体に属する。
【0049】
本発明はまた、インターフェイスデバイスと、該インターフェイスデバイスへ結合される1以上のプロセッサと、該1以上のプロセッサへ結合されるメモリとを有し、前記メモリは、実行されるときに、請求される方法を実行するように前記1以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、電子デバイスに属する。
【0050】
本発明はまた、ブロックチェーンネットワークのノードであって、請求される方法を実行するよう構成される前記ノードに属する。本発明はまた、請求されるノードを有するブロックチェーンネットワークに属する。
【0051】
本発明のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【0052】
【
図1】ビットコインネットワーク上のノードを介してアプリケーションレベルで直列に送信及び受信されるネットワークパケットを表す。
【
図2】ビットコインネットワークにわたるノード間の単一トランザクションがとるルールを表す。
【
図3】ピアノードへ接続されるインターフェイスの相関係数を示す相関行列の例示である。
【
図4】ブロックチェーンネットワークにおいて異なる機能を有しているノードを表す図である。
【発明を実施するための形態】
【0053】
本明細書では、大きいギガバイトサイズのブロックを処理及び記憶することの問題に対する解決法が記載される。ブロックチェーンネットワークにわたるデータの効率的なトランザクションは、ノード間の接続性を決定し、それに応じてデータをリレーすることによって、改善可能である。更に、ノード及び利用可能な帯域幅の仕様は、ネットワークにわたるデータのフローに影響を及ぼし、ノードが有する接続の数及び接続性の決定のための期間は、フローを改善するために調整又はディメンショニングされ得る。
【0054】
[処理]
<ブロックチェーンネットワークのタイプ及び妥当性確認ノード>
ブロックチェーンネットワークは、他のメンバーからの招待なしで又は承諾なしで、誰でも参加することができるピア・ツー・ピアの非会員制(open-membership)ネットワークとして記載され得る。ブロックチェーンネットワークが動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワークに参加し得る。そのような分散した電子デバイスはノードと呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【0055】
ビットコインなどのいくつかのブロックチェーンネットワークは、ノード間通信のためにTCPを使用する。TCPを用いて送信されるデータパケットは、順序付けのために使用される関連するシーケンス番号を有している。
【0056】
これに加えて、TCPプロトコルは、接続を確立する場合及び接続を終了する場合の両方で、スリーウェイハンドシェイク(three-way handshake)プロシージャを伴う。TCPを介して送信されるパケットは、オーバーヘッドと関連付けられており、それらは、関連するシーケンス番号を有し、スリーウェイハンドシェイクプロトコルが存在する。接続を確立することにおいて、128~136バイトが送信され、一方、接続を閉じることは、160バイトがかかる。よって、パケット伝送におけるハンドシェイクは、最大296バイトがかかる。
【0057】
更には、ノードが新しいトランザクションを受け取るとき、それは、他のノードに、トランザクションのハッシュを含むインベントリ(inventory)(INV)メッセージを通知する。INVメッセージを受け取るノードは、そのトランザクションのハッシュが以前に確認されているかどうかをチェックする。そうでない場合には、ノードは、GETDATAメッセージを送ることによってトランザクションを要求する。ノードAからノードBへトランザクションを送るのに必要な時間は、T1=妥当性確認+TCP(INV+GETDATA+TX)である。ここで、TCP()は、時間に関してTCPハンドシェイクプロシージャによって導入されるオーバーヘッドを示す。
【0058】
<TCPプロトコル及びスリーウェイハンドシェイク>
現在のピア・ツー・ピアのビットコインプロトコルは、10のデータメッセージと、13の制御メッセージとを定義する。これに関連して、オブジェクト転送(object transfer)に関係があるデータ又はデータパケットの転送は、個々のトランザクション又はブロックを指すことがある。
【0059】
ビットコインP2Pプロトコルによって使用されるメッセージの完全なリストが知られており、完全なリストについては、http://bitcoin.org/en/developer-referenceから取得可能なBitcoin Developer Referenceを参照されたい。メッセージのサブグループは、オブジェクトの要求又は分配に関係がある。これらのメッセージは、BLOCK、GETDATA、INV、TX、MEMPOOL及びNOTFOUNDである。メッセージサブグループは、オブジェクトの信頼性及び効率に関係がある。これらのメッセージはFEEFILTER、PING、PONG、及びREJECTである。
【0060】
一例として、ビットコインネットワーク上のノード‘i’及び‘j’は、次のステップを用いて通信する:
1.ノードiは、トランザクションのリストを含むINVメッセージを送信する。
2.ノードjは、以前に知らされたトランザクションのサブセットを要求するGETDATAメッセージにより応答する。
3.ノードiは、要求されたトランザクションを送信する。
【0061】
ここで、方法は、少なくともデータの分散を改善するように、ブロックチェーンネットワークのプロトコルを最適化しようと努める。
【0062】
図1は、データが、ネットワークパケットの形で、オペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで直列に送信及び受信される実際のシナリオを表す。トランザクションxが単一のイーサネット(登録商標)/IPパケットに収まるとすれば、m個のピアへのその伝送は、m個の異なる出力パケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方は、他の情報とともに、
・直列化されたトランザクション、
・送信側/受信側ピアへのTCP/IP接続を表す論理インターフェイスID
を含む。
【0063】
着信トランザクションが処理されるための予想時間は、入力キューLiの(パケット単位の)平均長さに依存し、一方、処理されたトランザクションが正しく送信されるための予想時間は、出力キューLoの平均長さに依存する。
【0064】
従って、トランザクションの効率的なリレーは、Li及びLoの両値の低減に依存する。しかし、ピアへのトランザクションの選択的なリレーのための確率的モデルは、Loに直接影響し、誘導によりLiにも影響する。
【0065】
現在のビットコイン実施では、INV及びGETDATAメッセージパケットは、トランザクションと同じようにI/Oバッファにキューイングされ、送信遅延及び受信遅延に深刻な影響を及ぼす。
【0066】
[接続性]
<効率的なトランザクション伝播-確率的リレー>
ノードiがインベントリ交換の使用なしで、新しいトランザクションを直接送信することを許可された場合には、トランザクションは、より速い速度でネットワーク内に広められる。ただし、何らかの規制がなければ、ネットワークは氾濫することになる。
【0067】
従って、本発明は、膨大な量の不必要なトランザクションの伝送を回避するために、ノードからピアノードへのデータ又はオブジェクトの選択的なリレーのためのメカニズムを使用する。メカニズムは、確率的モデルであることができる。
【0068】
伝送リレーのためのメカニズム又は確率的モデルは、3つのノードi、j及びkがビットコインネットワークの一部であって互いに接続されている
図2を参照して、仮定に基づいている。ノードiは、ノードj及びノードkへ直接接続されている。ノードj及びノードkは、ノードiを介して又はビットコインネットワークを介して間接的に接続されている。
【0069】
ノードiは、トランザクションrの形でデータを処理する2つのインターフェイスa及びbを有して示されている。トランザクションはノードiで開始され、それがノード間でビットコインネットワークにわたって伝播されるにつれて様々な段階を経る。段階には:
・インターフェイスaからピアノードへの伝送のためにトランザクションを処理して、ノードjで受け取られるようにする第1段階r1、
・ノードjがビットコインを介した伝送のためにトランザクションを処理して、ノードkで受け取られるようにする第2段階r2、及び
・ノードkが、インターフェイスbでトランザクションを受信するピアノードiへの伝送のためにトランザクションを処理する第3段階r3
が含まれる。
【0070】
疑念を回避するために、r1、r2、及びr3は同じトランザクションであり、添え字はリレーを表す。
【0071】
以下のように仮定される:
・ノードがインターフェイス(b)から、他のインターフェイス(a)からの伝送のために処理された同じトランザクションを受け取る場合に、2つのインターフェイスはある程度の相関を共有する。
・ノードiで生成されたトランザクションが所与のjの入力インターフェイスを通じてノードjに届く場合に、ノードiで生成された第2のトランザクションは、高い確率で同じインターフェイスを通じてjに届く。
【0072】
再び
図2を参照すると、リレー相関の一例として、ノードj及びkは、ノードiのピアである。iが新しいトランザクションを生成し、それをノードjへリレーし、後に同じトランザクションがノードkからノードiで受け取られる場合に、j及びkは、ネットワークを通る論理パスを共有する。従って、発信元ノードは、同じ情報をそのピアノードの両方へリレーする必要がない。明確化のために言うと、ノードiは、ノードkがトランザクションrを受け取る確率が高いので、そのトランザクションrをノードkへ送信する必要がない。同様に、逆に、ノードkは、トランザクションrを受け取る確率が高いので、そのトランザクションrをノードiへ送信する必要がない。ロジックは両方の方向で有効である。
【0073】
<ノードのインターフェイス間の関係>
図3は、ピアノードへ接続される5つのインターフェイスa、b、c、d及びeを有しているノードiについて決定され得る局所相関行列Cの一例である。行列は、着信トラフィックについての相関の程度を表す。この行列の形成及び適用については、以下で記載される。
図3に示される値は、例示のためである。
【0074】
各ノードは、一例として、インターフェイスa及びbから受け取られるトランザクション間の相関を表す係数cabを決定することによって、相関行列Cを構築する。そのような係数は、インターフェイスの全ての対の間で決定される。
【0075】
各インターフェイスから受け取られるトランザクションIDのリストを使用して、t
a及びt
bを、夫々インターフェイスa及びbから受け取られるトランザクションの数とし、t
abを、a及びbの両方から受け取られる二重のトランザクションの数であるとする。インターフェイスa及びbの相関係数は、式1:
【数5】
によって定義される。
【0076】
慣習として、係数cabについて、そのインデックスの辞書式順序a<bが仮定される。すなわち、aは‘0’を割り当てられ(a=0)、bは‘1’を割り当てられ(b=1)、cは‘2’を割り当てられ(c=2)、以降、インターフェイスIDと数値との間で同様に続く。インターフェイスの組{a,b,d,e}についての相関係数を考えると、インターフェイスa及びbは、cab>cdeの場合に、インターフェイスd及びeよりも相関性がある。
【0077】
主対角線上の要素は有意でないから、行列サイズは、
図3に示されるように、m(m-1)個の要素まで減らされ得る。
【0078】
<ノードインターフェイスへの値の割り当て>
インターフェイスaの全体的な相関インデックスは、次の:
【数6】
とおりに、式2で定義される。
【0079】
図3の相関行列を一例として使用すると、インターフェイスaの相関インデックスc
aは、各インターフェイス間の相関係数の和として表され得る。
c
a=c
ab+c
ac+c
ad+c
ae=0.2+0.8+0.2+0.2=1.4
【0080】
このメトリックは、個々のインターフェイスの相関を順位付けし、ノードピアによって提供されるリレーの品質を理解するために使用され得る。一例として、aの相関インデックスが平均値よりも著しく高い場合に、aから受け取られるトランザクションは大いに冗長である。
【0081】
対照的に、aの相関インデックスが平均値よりも著しく低い場合に、(i)aから受け取られるトランザクションはいくらか一意的であるか、あるいは、(ii)aへ接続されるピアノードは悪意のある動作をしているかのどちらかである。悪意のある動作については、以下で更に詳細に論じられる。
【0082】
各ノードは、受信されたトランザクションフローにのみ基づいてそれ自身の相関行列を構築することが留意されるべきである。悪意のある情報の伝播を回避するために、ノード又はピア間で相関情報は交換されない。
【0083】
<インジケータ>
インターフェイスaからの着信トランザクションを考えると、ノードは、範囲[mmin,mmax]内のピア数m*へのリレーを実行する。
【0084】
現在の値m*は、インターフェイスaの相関インデックスを含むm-1個の相関係数{c
a}の現在の分布に依存する。
{c
a}=[c
0a,c
1a,・・・,c
am-1]
すなわち、{c
a}は、相関係数のリスト又は組であり、この組は、インターフェイスaについての係数を有する。相関インデックスは、
図3及び上記の例により、係数の和、すなわち、c
a=c
ab+c
ac+c
ad+c
aeである。
【0085】
インターフェイスaからのリレーのために選択されるインターフェイスの数m*(a)は、組{c
a}の各要素のメトリックθ
i
(a)の計算に依存する:
【数7】
【0086】
メトリックθi
(a)は、スイッチ又はセレクタとして機能し、インターフェイスがデータをリレーするか否かを示す。例えば、インターフェイスは、そのメトリックが‘1’である場合にデータをリレーし、そのメトリックが‘0’である場合にデータをリレーしない。
【0087】
バーc
aを組{c
a}内の係数の平均として定義することによって、メトリックθ
i
(a)は、対応する相関係数c
aiがバーc
aよりも低い場合に、m*(a)に寄与する:
【数8】
【0088】
θi
(a)は、代替的に、平均値ではなく、{ca}の中央値に基づいてもよい。メトリックθi
(a)はまた、統計解析を用いて組{ca}から導出される代替値に基づいても、あるいは、それから決定されてもよく、例えば、メトリックθi
(a)は、対応する相関係数caiが組{ca}の平均よりも少なくとも1標準偏差下回る場合に、m*(a)に寄与する。
【0089】
一例として、
図3のインターフェイスaからの着信トランザクションは、{c
a}に含まれる相関係数に従って、m*(a)個の最小相関インターフェイスへリレーされる。リレーのために選択される{c
a}のサブセットは、{c*
a}と定義される。
【0090】
図3の例に戻ると、{ca}={0.2,0.8,0.2,0.2}の場合に、
【数9】
【0091】
従って、インターフェイスaからのリレーのために選択されるインターフェイスの数m*(a)は‘3’である。メトリックθi
(a)を決定する平均値又はインジケータを下回るサブセット内の係数は、{0.2,0.2,0.2}であり、これらの係数は{c*a}に対応し、インターフェイスb、d、eがリレーのために選択される。
【0092】
上記の例でメトリックを決定するために使用された係数の‘切り捨て’点又はレベルは、係数の平均‘0.35’であった。この閾値又はインジケータはメトリックθi
(a)を決定し、それからm*(a)が決定される。
【0093】
全体として、従って、方法は、インジケータに従ってインターフェイスからデータをリレーすると言える。前記インジケータは、各インターフェイスについて、それがデータをリレーするかどうかを決定するメトリックを決定するために使用され得る。
【0094】
インジケータは、上記の例ではメトリックを決定するために使用されたが、他の因子が各インターフェイスのメトリックに作用する可能性がある。各インターフェイスのメトリックは、相関行列への変更に従って計算され得る。
【0095】
<変更への対応>
上記の通り、どのインターフェイスが情報をリレーするために使用されるべきかの決定は、行列が変更されない定常状態条件を仮定する。
【0096】
プロトコルの更なる詳細は、これより、変更、例えば、ピアノードがネットワークに加わり、ノードとの新たな接続を形成する場合、又はピアノードがネットワークから去り、ノードのインターフェイスへもはや接続されていない場合、にどのようにしてプロトコルが対応することができるかの説明に関して、以下で与えられる。
【0097】
変更に対応する場合に、データはメトリックに基づきリレーされ得る。これは、インジケータ、故に、相関インデックスを考慮に入れる。
【0098】
<起動>
ノードiが起動するとき、それは、ビットコインネットワークのようなブロックチェーン内の他のノードとのm個のピア接続を初期化する。例えば、全詳細については、Bitcoin Developer Referenceを参照されたい。初期段階で、ノードiは、そのインターフェイスを通るデータ間の相関に対する如何なる情報も有しておらず、それを通る又は流れるデータを表すデータの限られた組を有する。従って、完全なトランザクションのリレーは、ある程度の時間実行されることになる。
【0099】
この期間Tbootupの間に、メトリックθi
(a)は、各インターフェイスを‘1’にセットし、データを全てのインターフェイスからリレーすることによって、m*(a)に寄与する。従って、メトリックは、一定期間にインジケータに関わらずデータがリレーされることを可能にする。
【0100】
期間Tbootupの長さは、mの関数f(m)である。すなわち、接続の数が多いほど、正確な相関行列を構築するために必要とされる時間は長くなる。次の関数が、単なる一例として、提案される:
f1(m):=m
f2(m):=m2
【0101】
Tbootupの後、ノードiは、以下に示される既存のノードに従って選択的なリレーを実行する。
【0102】
<既存のノード>
一般的なノードjの接続は、変更を考慮して時間とともに変化する。そのような変更は、(i)他のノードがネットワークに加わること、(ii)他のノードがネットワークから去ること、及び/又は(iii)他のノードが悪意のある動作をすることのうちのいずれかによる。悪意のあるノードは選択的にブラックリストに登録され、対応する接続は閉じられる。
【0103】
従って、ネットワークグラフ全体における如何なる変更も検出され、2つ(以上)の連続した変更イベント間の平均時間を表す量Tchangeによってパラメータ化され得る。Tchangeごとに一度、ノードjの局所相関行列が更新される必要がある。
【0104】
ノードの相関行列の更新は、次のうちの少なくとも1つを含むことができる:
・相関行列がリセットされる周期リセット
新しいノードごとに、完全なトランザクションリレーが、時間Tbootupに実行される。次いで、ノードjは、ピアノードへ接続される各インターフェイスについてのその新しいm*個の値に対して選択的なリレーを実行する。
・相関行列が更新されるアップデート
所与のインターフェイスαについて、選択された組{c*a}の中のβ個の最高相関インターフェイス(0<β<mmin)は、{c*a}にないβ個の最小相関インターフェイスと交換される。
【0105】
すなわち、データは、通常は、サブセット{c*a}内のm*(a)個の最小相関インターフェイスへリレーされるが、行列が更新される場合に、サブセット{c*a}の部分でなく、相関インデックスが低いインターフェイスが、サブセット内で高い相関インデックスを有しているインターフェイスの代わりにサブセットに加えられる。これは、変更に際してネットワークにわたるデータのフローのインテグリティを確かにすることができる。
【0106】
再び
図3の例に戻ると、通常、
c
d=c
da+c
db+c
dc+c
de=0.2+0.4+0.4+0.6=1.6
{c
d}={0.2,0.4,0.4,0.6}
【0107】
バーc
dを組{c
d}内の計数の平均値としてとると、メトリックθ
i
(d)は、対応する相関係数c
diがバーc
dよりも低い場合に、m*(d)に寄与する:
【数10】
【0108】
【0109】
通常、インターフェイスdからのリレーのために選択されるインターフェイスの数m*(d)は‘3’である。メトリックθi
(d)を決定する平均値又はインジケータを下回るサブセット内の係数は、{0.2,0.4,0.4}であり、これらの係数は{c*d}に対応し、インターフェイスa、b及びcがリレーのために選択される。疑念を回避するために、インターフェイスeに対応する係数、すなわち{0.6}は、選択されたサブセット{c*d}内にない。
【0110】
インターフェイスdに関連して、更新が発生するとき、組{c*d}内には2(β)個の最高相関インターフェイスが存在することが起こる。それらはインターフェイスb及びcであり、どちらも0.4の値を有する。
【0111】
{c*d}にないβ個の最小相関インターフェイスとしての資格を得るインターフェイスはただ1つしかなく、そのインターフェイスはeである。従って、ただ1つの‘交換’が実行可能であり、どのインターフェイスを交換すべきかの選択は、どちらも同じ0.4の係数を有しているのでb又はcのどちらか一方である。一例として、どのインターフェイスが交換のために選択されるかの選択は、辞書式優先度に従って行われ得る。次いで、このインターフェイスは、{c*a}にないβ個の最小相関インターフェイスと交換される。これは、最低係数が組の中の残りの係数{cd}={0.4,0.4,0.6}から選択されることを意味する。最低係数はインターフェイスb及びcに対応し、従って、データは、インターフェイスaよりもむしろそれらのインターフェイスへ接続されたピアノードへリレーされる。
【0112】
ピアが切断する場合に、相関行列内のその係数は無効になる。Tchange期間の終わりに、上記の周期リセットが必要とされる。次いで、ノードjは、夫々の接続インターフェイスについてのその新しいm*個の値に対して選択的なリレーを実行する。
【0113】
新しいピアbが加わる場合に、それが接続されるインターフェイスが、ノードaとの夫々の他のピアインターフェイスについての{c*a}の現在の値に関わらず、リレーのために選択される。一例として、bを有するインターフェイスが、ある程度の時間Tjoinにγ個の着信トランザクションごとにリレーのためにランダムに選択され得る。
【0114】
Tjoinは、Tbootup及び/又はTchange期間に従ってセットされる。このリレーは、ノードbがそれ自身の相関行列を構築することを助ける。Tjoinの終わりに、bは、ノードaでのみ夫々の他のピアインターフェイスについての更新された値{c*a}に従ってリレーのために選択される。
【0115】
ノードiは、そのピアjが依然として動作しているかどうかを、着信トラフィックがそのインターフェイスから受信されなかったという理由で、チェックする必要があり得る。任意の短い時間Ttempの一時的なリレー要求がjへ送信され得る。
【0116】
新しいトランザクションを発行するノード、すなわち発信元ノードは、ネットワークにおける配布を保証するために注意深く、リレーのための選択されたピアの組を選択する必要がある。例えば、任意のインターフェイスaのノードの数m**は、第1のリレーとして選択され得る。ここで、m*(a)<m**<mである。
【0117】
パラメータのリスト全体は、以下、表1で詳述される。
【表1】
【0118】
<悪意のあるノード>
悪意のあるノードは、トランザクションの配布のための確率的モデルを効率的でないものとすることを目的としている。悪意のあるノードは、次の方法のいずれかで機能又は動作することができる。
・悪意のあるノードは、伝播されるはずのトランザクションを伝播しない。この悪意のあるノードへ接続される誠実な(honest)ノードは、他の誠実な(又は悪意のある)ノードからそれらのトランザクションを取得可能であり得る。しかし、マイナーの組が依然としてそれらを受信して、新たにマイニングされたブロックに含めることができるとすれば、ネットワークにおけるトランザクションの完全な配布は不要である。
・悪意のあるノードは、同じ合法トランザクションを複数回伝播する。受信側ノードは、ルックアップテーブルを用いて、以前に受け取られたトランザクションの経過を追うことができる。従って、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、無効なトランザクションを伝播する。受信側ノードがトランザクションの妥当性確認を実行する場合に、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、膨大な数のダミートランザクションを生成し伝播する。受信側ノードは、ピアからの膨大な有効な着信トランザクションに対して異なる応答をすることができる。それに応えて、(i)受信側は、トランザクションリレーレートを低減するように送信側に求める。問題が解決しない場合に、送信側ピアは削除され、(ii)受信側は、リレーされたトランザクションに対する最低限のトランザクション料金を要求(及びチェック)することができる。これにより、悪意のあるノードにとって攻撃が高価になる。最低限のトランザクション料金が順守されない場合に、送信側ピアは削除され、且つ/あるいは、(iii)送信側ピアは単に削除される。
【0119】
上記の攻撃及び確率的モデルに基づいて、次の特性が推測され得る。
・トランザクションリレーレートは、個々のノードの処理性能及び帯域幅利用可能性の両方に依存する。この理由により、デフォルトの最大レートは強制されない。
・悪意のあるノードは、単に沈黙を保つことができない。それらは、自身の接続を維持するために、有効なトランザクションを転送しなければならない。
【0120】
<メッセージ>
ビットコインネットワーク上のノードインターフェイスからのデータ又はオブジェクトの確率的リレーを含む、本明細書における方法の実装をサポートするために、新しいメッセージタイプが導入され得る。更に、現在のピア・ツー・ピアのビットコインプロトコルに関して先に詳述された現在のメッセージタイプのいくつは、もはや使用されず、一方、以下で記載されていないメッセージタイプは、ビットコインP2Pプロトコルに対して変更されない。
【0121】
<データメッセージ>
他のノードに1以上のデータオブジェクトを要求するメッセージGETDATAはもはや使用されないか、あるいは使用から外される。同様に、送信側ピアが知っているオブジェクトの1以上のインベントリを送信するメッセージINVはもはや使用されないか、あるいは使用から外される。GETDATAに対する応答としてのNOTFOUNDメッセージはもはや使用されないか、あるいは使用から外される。
【0122】
既に先に紹介されたMEMPOOLメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのIDを要求する。このメッセージに対する応答は、トランザクションIDを含む1以上のIVメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のINVメッセージを送信する。ノードはこの機能を無効にしてよく、従って、その局所MEMPOOLの送信は必要とされない。
【0123】
<制御メッセージ>
ピアが依然として接続されていることを確認するためのPINGメッセージ及びPONGメッセージは取り除かれる。悪意のあるノードのような無言のノードは、上記の通りに管理される。メッセージFEEFILTERは変更されないままである。しかし、料金閾値を順守しないピアは削除される。
【0124】
新しいメッセージTEMP及びFLOWが導入される。
・TEMPメッセージは、ピアが依然として動作しているかどうかを、そのインターフェイスから着信トラフィックが受信されないためにチェックするようノードが求められる場合に、使用される。(任意の短い時間Ttempの)一時リレー要求TEMPは、前記インターフェイスへ接続されたピアへ送られる。受信側ピアがリレーを開始するが、所与の時間窓Tempを順守しない場合に、それは行列から削除される。
・FLOWメッセージは、ノードがピアに局所フロー制御に従ってトランザクションリレーレート(1秒あたりのトランザクションの数)を変更するよう要求する場合に、使用される。レートは、増大、低減、又は一時的にサスペンド(リレーレート=0)されてよい。受信側ピアが新しいリレーレートを順守しない場合に、それは削除される。新しいFLOW要求は、現在のリレーレートを変更するために必要とされる。受信側ピアがリレーと再開するために第2のFLOW要求を受信しない場合に、それは送信側を削除する。
・MINFEEメッセージは、ノードが最低限のトランザクション料金によってフィルタをかけられたトランザクションを受け取るよう求められる場合に、使用される。最低限の値は、個々のトランザクション及び/又は、複数のトランザクションが単一のIPパケットに収まる場合には料金の合計に対して、セットされ得る。受信側ピアがトランザクション料金の制限を順守しない場合に、それは削除される。
【0125】
[ディメンショニング]
図4は、ノードi、j、k及びlを有するブロックチェーンネットワークの要素を表す。ノードは、異なるトラフィックプロファイルを有することができ、一例として、次のように、参照され呼ばれ得る:
・「プロバイダ」,主にトランザクションを生成するノードであり、ノードiが、専用の事業活動を持った1以上のマーチャントノードを表し得る。
・「アグリゲータ」,主にトランザクションを収集するノードであり、ノードlが、専用の事業活動を持った1以上のマーチャントノードを表し得る。
・「ルータ」,主にトランザクションを転送する、ノードj及びノードkのようなノードである。
【0126】
各ノードは、その接続の現在のステータス及び局所的に利用可能な帯域幅資源に応じて入出力トラフィックの量を自動的に制御することができる。入力及び出力資源又はインターフェイスの間の帯域幅の割り当ては、ノードのタイプ又は機能に従って調整され得る。ノードi及びjは不平衡であるが、ノードj及びkは、ノードから流れ出るのと同量のデータがルータノードへ流れ込むので、平衡である。
【0127】
ノード、例えば、ノードjは、ピアノードへ接続された複数のインターフェイスを有する。ノードは、ある期間(T)にわたってノードによって処理可能なデータ(D)の最大量に基づいて、その帯域幅(B)容量を決定することができる。いくつかのノードは、それらのネットワークプロバイダによって帯域幅の上限が設定されている。
【0128】
Bjは、ノードjで利用可能なアプリケーションレベルの帯域幅である。帯域幅Bjは、(i)インターネットサービスプロバイダ(ISP)によって供給されるネットワークアクセスの品質及び(ii)他のローカルアプリケーションによるネットワーク利用の両方に依存する全体のバジェットである。
【0129】
Bjの値は、入力及び出力トラフィックについての異なる帯域幅要件Bj
i及びBj
oに依存する。従って、
Bj=Bj
i+Bj
o
である。ルータの場合に、
Bj/2=Bj
i=Bj
o
であると考えられる。アグリゲータの場合に、
Bj
i=kjBj
o
であると考えられる。kjは、ノードのプロファイル係数であり、一例として、ノードのタイプ、すなわち、名目上セットから、あるいは、ノードを出入りする実際のデータ間の差から、決定される。前記プロファイル係数kjは、ノードへの着信データとノードから送信されるデータとの比から望ましくは決定される。データには、リレーされたデータ及び/又は局所的に生成されたデータが含まれ得る。
【0130】
データ(dj)は、ノードjのインターフェイスを通るピアノードからの入力データ(dj
i)及び前記ピアノードへの出力データ(dj
o)からモニタ及び構築可能であり、ノードjのプロファイル係数(kj)は、入力データ(dj
i)と出力データ(dj
o)との間の差から決定され得る。
【0131】
データ(dj)は、複数の期間(T)にわたってモニタされ得る。モニタされたデータの値は、新しい期間Tが始まるときにリセットされ得る。ノードj内で生成されるデータは、出力データ(dj
o)に寄与する。
【0132】
期間(T)は、
Dj=Dj
i+Dj
o
であるように、ノードjによって処理可能なデータの最大量(D)を決定するために使用され得る。ここで、Dj
i及びDj
oは、その期間内でサポートされる着信データ及び発信データの最大量である。
【0133】
期間Tは、フロー制御時間窓Tflowであることができる。ノードjでの変数を考えると、その場合に:
Bj=(kj+1)Dj
o/T
Bj
o=Dj
o/T
が成立する。従って、Dj
i及びDj
oの値は、kj、Tflow及びBjに依存するシステムパラメータである:
Dj
o=BjT/(kj+1)
Dj
i=kjDj
o=kjBjT/(kj+1)
【0134】
<現在の係数>
ブロックチェーンネットワークの性能を最適化するために、一例として、ビットコインが使用される。ビットコインコアの仕様は、デフォルトで、異なるピアへの最大125の接続を許し、そのうちの8つは外向きである。
【0135】
ノードへ接続可能なピアPの数mは制限され、よって、現在のシステムでは、mminは1であり、mmaxは125である。現在の規制によらなければ、ノードへ接続可能なピアPの数mは、mmin≧1且つmmax≦Pとなる。
【0136】
ノードjへ接続可能なピアノードの最小数(mmin)及びピアノードの最大数(mmax)は、前記モニタされたデータ(d)と、ノードjへ接続可能なピアの最大数(P)に従って、セットされ得る。
【0137】
2つ以上の期間(T)にわたって、モニタされたデータ(d)が、比を決定し、その比を用いて、ノードjへ接続可能なピアノードの最小数(mmin)及びピアノードの最大数(mmax)をセットするために、使用され得る。比は、実際のデータとデータ上限との間にあることができる。データ(d)と最大データ(D)との間の非線形関係のような他の関係が使用され得る。
【0138】
データ(d)とデータ上限(D)との間の関係に加えて、ノードjのタイプ又は機能が、ノードjが接続することができるピアノードの数の決定において考慮され得る。機能は、ノードの機能に従って値を割り当てられるプロファイル係数(k)を用いて考慮に入れられる。プロファイル係数は変数であることができる。
【0139】
一例として、プロファイル係数の値は、データを転送するよう構成されるノードの場合には1であり、データを収集又はアグリゲートするノードの場合には1よりも大きく、データを生成又は供給するノードの場合には1に満たない。
【0140】
ばらつき、又は外れデータを抑制するために、複数の期間(T)にわたるデータ(d)の平均を有する平均データ(d*)が、最大データ(D)に対する平均データ(d*)の比を決定することによって、ノードjへ接続可能なピアノードの最小及び最大数を決定するために使用され得る。
【0141】
また更に、ノードへ接続可能なピアノードの最小数(mmin)及びピアノードの最大数(mmax)の決定には、バッファが考慮に入れられ得る。そのようなバッファは、複数の期間(T)にわたるデータ(d)の標準偏差(σ)又は分散(σ2)を使用し、スケーリング係数を分散に適用し、スケーリングされた分散に従って、ノードへ接続可能なピアノードの最小及び最大数を決定することを含むことができる。
【0142】
モニタされたデータ(d
j)は、ノードjのインターフェイスを通るピアノードからの入力データ(d
j
i)及び前記ピアノードへの出力データ(d
j
o)の和である。ノードjへ接続可能なピアノードの最小及び最小数mは、
【数12】
によってセットされるということになる。ここで、
m
min及びm
maxは、ピアノード接続の整数であり、
d*は、複数の期間(T)にわたるデータ(d)の平均レベルであり、
D
j
i及びD
j
oは、期間(T)内にサポートされる着信及び発信データの最大データであり、
Pは、前記ノードへ接続可能なピアの最大数(P)であり、
σ
2は、所与の数の期間(T)のデータ(d)の分散であり、
tは、スケーリング係数又は分散パラメータであり、
m
max≦Pである。
【0143】
線形範囲[1,P]と[mmin,mmax]値との間には直接的な比例関係が存在し得る。
【0144】
djを平均すること及びtを更新することのために考えられる期間(T)の数又はTflow時間窓は、一定であることができる。分散パラメータtは、乗法的因子であることができる。
【0145】
上記の式においてm
min≧1且つm
max≦Pを課すことによって、式は、分散パラメータtの値の範囲を決定するために再編され得る。これは、次の:
【数13】
とおりに表され得る。
【0146】
ノードのブートストラップ又は最初のセットアップの間、mmin=1且つmmax=Pである。
【0147】
変数P、d*及びD
jの動作範囲は制限され、従って、σ
j
2に依存するtの動作範囲は制限される。一例として、P=125及びd
j*/D
j=0.5を考えると、その場合:
【数14】
となる。
【0148】
分散パラメータは、
【数15】
によって表現可能な、範囲の平均値の近似を用いて、決定され得る。
【0149】
mmin及びmmax(ピアノード接続の整数)が決定されると、ノードは更に、インターフェイスとそれが接続されるピアノードとの間の相関行列を決定することができる。行列は、前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数でコンパイルされる。
【0150】
<時間窓(T)>
期間(T)は、相関行列への変更間の時間の長さから決定される。
【0151】
ノードは、追加的に、又は代替的に、ブロックチェーンネットワーク上のノードの活動に関する情報を受け取り、相関行列への変更間の時間の長さ及び/又はネットワーク上の活動レベルの変化に従って期間(T)をセットすることができる。
【0152】
2つの連続した局所相関行列更新の間にある時間窓が、Tを決定するために使用され得る。
【0153】
時間Tは、アクティブなノードの平均数が7561(2017年6月時点)であり、24時間ごとに0.85%の平均インクリメントで決定され得るか、あるいは少なくとも影響を及ぼされる。これらの条件で、平均2.5個の新しいノードが1時間ごとにネットワークに加わると考えると、Tの初期値は60分に固定され得る。ノードの通常のリレー動作中に、Tは、着信データ(dj
i)の現在の累積量に反比例すると見なされ得る。
【0154】
新しいピアノードが接続されるとき、データは、専用の期間Tjoinの間にその新しいノードへリレーされ得る。ネットワークの状態に従って、これは、発信データdj
oの現在の累積量に反比例すると見なされ得る。
【0155】
Tbootupは、新しいノードが安定した相関行列を構築するために必要な時間であり、この値は、関数f(m)に比例する。すなわち、接続数が多くなるほど、正確な相関行列を構築するための必要な時間の量は長くなる。
【0156】
本発明のために、期間TはTflowと同じである。これは、着信及び発信データの累積量の2つの連続した更新の間にある時間窓である。この値は、Tchangeに比例することができ、最も簡単な場合に、Tflow=Tchange=Tである。
【0157】
すなわち、期間(T)は、フロー制御パラメータ(Tflow)であることができ、そのパラメータは、ノードを通るトラフィックを変更するように調整される。期間(T)は、ノードによって所定の値に一時的に調整され得る。これは、帯域幅に影響を及ぼすノードへの局所的な変更、そして、その後に、それを流れるデータフローに基づくことができる。そのような状況で、前の期間の長さの2倍の期間、すなわち2T、のような、増大された期間が、限られた期間のために使用され得る。同様に、期間Tは、ノードがデータを蓄積する開始期間にセットされ得る。局所的な変更又は開始期間のいずれか一方により、ある期間の全ピアノードへのデータの一時的なリレーが得られる。
【0158】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「~を含むか、又はそれらから成る」(includes or consists of)を意味し、「有する」(comprising)は、「~を含むか、又はそれらから成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【0159】
<要約>
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。本明細書で記載される解決法により、処理されるデータ及び帯域幅上限に従うピア接続の数の調整又はディメンショニングが可能となる。確率的リレーは、大量のトランザクションの処理及び伝播を改善するが、それは、各ノードで利用可能な帯域幅又はパフォーマンス能力を考慮しない。
【0160】
本発明は、接続されるピアの数をディメンショニングする方法を提供し、ノードが行う動作のタイミングを調整することができる。そのようなタイミングには、相関行列のリセット又は再決定、ブートアップ時間、などがある。
【0161】
従って、ボトルネックを回避することによってネットワーク上のフローを最適化するように性能に従って接続性を調整することに加えて、本発明は、ノード間の通信を最適化することによってデータパケットの分散を補完する。
【0162】
ノードでボトルネックによって引き起こされる長いキューは、接続性を制御し、任意に、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって、抑制される。
【0163】
ピア接続の全体の数が管理され、情報冗長性の安全レベルを保ちながらパケット伝送の低減により補完され得る。
【外国語明細書】