(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-09
(45)【発行日】2022-11-17
(54)【発明の名称】ブロックチェーンネットワークにおける効率的な伝播のための確率的リレー
(51)【国際特許分類】
G06Q 20/02 20120101AFI20221110BHJP
G06Q 20/16 20120101ALI20221110BHJP
【FI】
G06Q20/02
G06Q20/16
(21)【出願番号】P 2019568714
(86)(22)【出願日】2018-06-25
(86)【国際出願番号】 IB2018054667
(87)【国際公開番号】W WO2019003081
(87)【国際公開日】2019-01-03
【審査請求日】2021-05-26
(32)【優先日】2017-06-30
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2017-08-21
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
【審査官】竹下 翔平
(56)【参考文献】
【文献】米国特許出願公開第2005/0080858(US,A1)
【文献】米国特許出願公開第2005/0097386(US,A1)
【文献】米国特許出願公開第2017/0091756(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも1つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも1つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有する前記方法。
【請求項2】
前記相関行列からインジケータが導出され、
前記受信インターフェイスと前記少なくとも1つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる、
請求項1に記載の方法。
【請求項3】
前記インジケータは、メトリックを決定するために使用され、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する、
請求項2に記載の方法。
【請求項4】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在する、
請求項1に記載の方法。
【請求項5】
前記ノードは、
(i)各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、
(ii)インターフェイスの対を通じて処理された同一トランザクションと
をモニタすることによって前記相関行列を構築し、それからいずれか2つのインターフェイス間の相関係数を決定する、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
m(m-1)個の要素を有する前記相関行列は、次の:
【数10】
とおりに、インターフェイスaの相関インデックスを決定するために使用され、
mは、ピアノードへ接続されるインターフェイスの数である、
請求項1乃至5のうちいずれか一項に記載の方法。
【請求項7】
m(m-1)個の要素を有する前記相関行列は、次の:
【数11】
とおりに、インターフェイスaについての相関係数の組を決定するために使用される、
請求項1乃至6のうちいずれか一項に記載の方法。
【請求項8】
前記インジケータは、
ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、
前記組から平均又は中央値を導出することと
によって決定される、
請求項
2に記載の方法。
【請求項9】
インターフェイスからのリレーのために選択されるインターフェイスの数は、インターフェイスについての相関係数の組から導出されるメトリックに依存し、
【数12】
から決定され、
aは、当該インターフェイスであり、mは、ピアノードへ接続されるインターフェイスの数であり、m*(a)は、ノードのリレーインターフェイスのために選択されるノードの数であり、θは、前記組{c
a}内のインターフェイスのセットされた相関係数の平均値(バーc
a)のようなインジケータと比較されるメトリックであり、ここで、
【数13】
である、
請求項1乃至8のうちいずれか一項に記載の方法。
【請求項10】
データをリレーすることは、
(i)ノード始動又は起動からの時間であるリセット時間と、
(ii)新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びノードへ接続するインターフェイスが悪意的であると分類又は判断されることのうちの少なくとも1つを含む変更イベント間の時間である変更時間と
のうちの少なくとも1つに更に基づく、
請求項
2に記載の方法。
【請求項11】
ノード始動時に、前記ノードはピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーし、前記期間が過ぎた後に、前記ノードは、前記受信インターフェイスと前記他のインターフェイスとの間の相関が前記インジケータよりも低い場合には全てのデータをリレーする、
請求項10に記載の方法。
【請求項12】
変更イベントを検出すると、前記相関行列がリセット及び再決定される、
請求項10又は11に記載の方法。
【請求項13】
変更イベントを検出すると、前記ノードは、前記受信インターフェイスと前記他のインターフェイスとの間の相関が前記インジケータを上回る場合に前記ノードからインターフェイスを介して全てのオブジェクトをリレーする、
請求項10又は11に記載の方法。
【請求項14】
インターフェイスからのピアノードの切断を検出すると、前記相関行列はリセット及び再決定される、
請求項10又は11に記載の方法。
【請求項15】
新しいピアノードとインターフェイスとの間の接続を検出すると、該インターフェイスは、
(i)前記リセット時間の期間及び/又は
(ii)前記変更時間
の間に全てのインターフェイスを介してデータをリレーする、
請求項10又は11に記載の方法。
【請求項16】
実行されるときに、請求項1乃至15のうちいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体。
【請求項17】
インターフェイスデバイスと、該インターフェイスデバイスへ結合される1以上のプロセッサと、該1以上のプロセッサへ結合されるメモリとを有し、
前記メモリは、実行されるときに、請求項1乃至15のうちいずれか一項に記載の方法を実行するように前記1以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、
電子デバイス。
【請求項18】
ブロックチェーンネットワークのノードであって、
請求項1乃至15のうちいずれか一項に記載の方法を実行するよう構成される前記ノード。
【請求項19】
請求項18に記載のノードを有するブロックチェーンネットワーク。
【発明の詳細な説明】
【技術分野】
【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】
ビットコインネットワークを介してデータパケット又はトランザクションを送信する既知の方法、例えば、3ステップメッセージングによる新しいトランザクションの分散、により、ネットワークにわたるデータパケットの伝播及び分散は遅くなる。準備段階では、ノードの内外へのキューが生じる。
【発明の概要】
【0011】
全体として、本発明は、現在のブロックチェーン容量よりも数桁大きい増大したトランザクション量の処理及び伝播のための新規のアプローチに存する。これは、ノード間の通信を減らすことによってネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることで達成可能である。ボトルネックによって引き起こされるノードの内外への長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。
【0012】
この方法によれば、ノードは、(i)ピアノードに接続されるインターフェイスの数に依存せず、且つ、(ii)ノードのインターフェイスに関連した変更に依存しないように、適応的に動作することができ、それにより、新しい接続、接続の切断、及び悪意のあるノードが考慮され、ネットワークのインテグリティが維持される。
【0013】
この方法では、管理され得るノード上のインターフェイスの数に制限はなく、方法はネットワーク及びノードの環境に適応するので、ネットワークの性能及びサイズは制限されない。非効率的な伝送は最小限にされ、悪意のあるノードは回避される。
【0014】
この方法によれば、ブロックチェーンネットワークの性能は向上し、ブロックチェーンネットワーク又はブロックチェーンネットワークと連携するオーバーレイネットワークは改善される。
【0015】
よって、本発明によれば、添付の特許請求の範囲で定義される方法が定義される。
【0016】
よって、ブロックチェーンネットワークのノードのための、コンピュータにより実施される方法であって、前記ノードは、ピアノードへ接続される複数のインターフェイスを有する、前記方法において、
前記ノードの各インターフェイスで処理されるデータ間の相関を表す相関係数を有する相関行列を決定することと、
前記ノードの受信インターフェイスでデータを受信することと、
前記ノードの複数の他のインターフェイスから少なくとも1つの他のインターフェイスを選択し、前記受信されたデータを前記少なくとも1つの他のインターフェイスからリレーすることであり、他のインターフェイスは、前記受信インターフェイスの相関係数の組に従って選択される、ことと
を有する前記方法を提供することが望ましい。
【0017】
データは、トランザクション又はブロックのようなオブジェクトに対応することができる。
【0018】
前記相関行列からインジケータが導出され、前記受信インターフェイスと前記少なくとも1つの他のインターフェイスとの間の相関が前記インジケータよりも低い場合に、データはリレーされる。代替的に、リレーは、相関がインジケータよりも高い場合に起こることができる。
【0019】
インジケータは閾値であることができる。インジケータは、データを受信するインターフェイスと複数のインターフェイスとの間の相関のレベル、例えば平均値など、を表すことができる。平均値は、受信インターフェイスと他のインターフェイスとの間の相関係数の平均であることができる。
【0020】
前記インジケータは、メトリックを決定するために使用され、該メトリックは、前記複数の他のインターフェイスの中のどれを選択してデータをリレーするかを選択する基準を設定する。
【0021】
メトリックは、どのインターフェイスからデータがリレーされるべきかを選択するために使用される命令と見なされ得る。命令は、閾値又はインジケータに従ってセットされ得るか、あるいは、それに依存し得る。
【0022】
メトリックは、ノードと1以上の他のノードとの間の(個々の)インターフェイスの相関を順位付けするために使用されてよい。これは、ネットワーク内のノードピアによって提供されるリレーの品質をより良く理解し、それに対応することができるという利点を提供し得る。これについては、以下でより詳細に記載される。これにより、ネットワーク動作をよりきめ細かく理解し、適切に対応できるようになるだけでなく、悪意のある動作の検出及び対応に関して利点が得られる。従って、本発明は、より効率的且つより安全なネットワークを提供することができる。
【0023】
ネットワーク内の各ノードは、受け取られたトランザクションフローにのみ基づいて、相関行列と関連付けられてよい。悪意のある情報の伝播を回避するために、ネットワーク内のノード又はピア間で相関情報は交換されなくてよい。
【0024】
例として、命令は、インターフェイスがインジケータを下回る相関インデックスを有していることを要求し得る。命令は、相関インデックスがインジケータの上にあるか又は下にあるかに応じて、どのインターフェイスがデータをリレーするかを決定することができる。
【0025】
インデックスがインジケータを下回るときのデータリレーの例は、通常の定常状態のネットワーク状態であることができる。‘定常状態’条件では、インターフェイス及び接続されるピアの数は変化せず、相関行列は変化しない。
【0026】
インデックスがインジケータを上回るときのデータリレーの例は、ノードに対する新しいピアノードの接続の追加などの、状態の変化であることができる。異なる命令は、異なるインターフェイスに適用することができる。
【0027】
分配されるデータは、マイナー、ピアノード及びフルノードからのデータを含め、ブロックチェーンネットワークから受け取られるデータを含むことができる。ノードの各インターフェイスで処理されるデータ間の相関は、ノードで受信されるデータパケット又はオブジェクトの重複を考慮することができる。インジケータは、ノードの各インターフェイスの相関インデックスの平均又は中央値であることができる。インジケータは、最低相関インターフェイスと最高相関インターフェイスとの間のポイントを定義することができる。データ又はオブジェクトは、相関インデックスがインジケータを下回るときにインターフェイスからリレーされ得る。相関の程度が低いインターフェイスは、相関の高いインターフェイスがデータを取得すると安全に想定できるため、優先順位を付けられ得る。
【0028】
ノードはインターフェイスを介してデータを処理し、該処理は、トランザクション又はブロックのようなデータ又はオブジェクトを送信及び受信することを含む。
【0029】
前記データは、直列化されたトランザクションを表すネットワークパケットと、隣接又はピアノードへの接続を表す識別とに存在することができる。インターフェイスは、送信/受信ピアへのTCP/IP接続を表す論理インターフェイスIDであることができる。
【0030】
前記ノードは、(i)各インターフェイスを通じて処理されたデータの各パケットのデータ識別子と、(ii)インターフェイスの対を通じて処理された同一トランザクションとをモニタすることによって前記相関行列を構築し、それからいずれか2つのインターフェイス間の相関係数を決定することができる。
【0031】
相関行列は、m(m-1)個の要素を有することができ、次の:
【数1】
とおりに、インターフェイスaの相関インデックスを決定するために使用され得る。ここで、mは、ピアノードへ接続されるインターフェイスの数である。
【0032】
相関行列は、m(m-1)個の要素を有することができ、次の:
【数2】
とおりに、インターフェイスaについての相関係数の組を決定するために使用され得る。
【0033】
前記インジケータは、ピアノードへ接続される各インターフェイスについて、前記相関行列から導出される相関係数の組を決定し、該組は、各インターフェイス間の相関係数を有する、ことと、前記組から平均又は中央値を導出することとによって、決定され得る。
【0034】
インジケータは、どのインターフェイスがデータをリレーするかを決定するために命令の組によって使用される。
【0035】
データをリレーするインターフェイスの数を決定するためのインジケータは、ノード始動又は起動からの時間であるリセット時間と、新しいピアノードがインターフェイスへ接続されること、インターフェイスへの接続の終了、及びインターフェイスが悪意のあるノードへ接続することのうちの少なくとも1つを含む変更イベント間の時間である変更時間とのうちの少なくとも1つに更に基づくことができる。リセット時間は、新しいノードのために使用され得る。変更時間は、既存のノードのために使用され得る。
【0036】
ノード始動時に、前記ノードは、該ノードに隣接するか又は直接接続されるノードのようなピアノードと接続し、前記相関行列が構築される前記リセット時間の期間中に全てのインターフェイスを介してデータをリレーすることができ、前記期間が過ぎた後に、前記ノードは、前記インジケータよりも下にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーする。
【0037】
変更イベントを検出すると、前記相関行列がリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【0038】
変更イベントを検出すると、前記ノードは、前記インジケータよりも上にある相関インデックスを有するインターフェイスを介して前記ノードから全てのオブジェクトをリレーすることができる。
【0039】
インターフェイスからのピアノードの切断を検出すると、前記相関行列はリセット及び再決定され得る。これは、周期的なリセットが必要とされるときに起こり得る。
【0040】
新しいピアノードへの接続を検出すると、該ピアノードはインターフェイスへ接続され、該インターフェイスは、前記リセット時間の期間及び/又は前記変更時間の間に全ての他のインターフェイスを介してデータをリレーすることができる。
【0041】
前記ノードは、原データと、該原データを処理及び送信するために選択されるインターフェイスの数とを生成することができる。これは、リレーのために選択されるインターフェイスの現在又は名目上の数とインターフェイスの総数との間の数にインジケータを高めることによって、増大され得る。
【0042】
実行されるときに、請求される方法のいずれかを実行するようにプロセッサを構成するコンピュータ実行可能命令を有するコンピュータ可読記憶媒体を提供することも望ましい。
【0043】
インターフェイスデバイスと、該インターフェイスデバイスへ結合される1以上のプロセッサと、該1以上のプロセッサへ結合されるメモリとを有し、前記メモリは、実行されるときに、請求される方法のいずれかを実行するように前記1以上のプロセッサを構成するコンピュータ実行可能命令を記憶している、電子デバイスを提供することも望ましい。
【0044】
ブロックチェーンネットワークのノードであって、請求される方法のいずれかを実行するよう構成される前記ノードを提供することも望ましい。
【0045】
請求されるノードを有するブロックチェーンネットワークを提供することも望ましい。
【0046】
本発明は、ビットコイン(BTC)ブロックチェーンとともに使用することに適しているが、これに限られない。
【0047】
ブロックチェーンネットワークのスーパーノードであって、請求される複数のノードと、ブロックチェーンを記憶する共有記憶エンティティとを有し、前記共有記憶エンティティは、共通記憶ノード、分散ストレージ、又はそれらの組み合わせのいずれかであり、前記複数のノードによってアセンブルされるブロックは、前記共有記憶エンティティへ送られて記憶され、これによって、該共有記憶エンティティは、前記ブロックチェーンを保持する、前記スーパーノードを提供することも望ましい。共有記憶エンティティは、少なくとも100ギガバイトの記憶容量を有する。
【0048】
請求される複数のスーパーノードを有するブロックチェーンネットワークであって、前記複数のスーパーノードは前記ブロックチェーンネットワーク上で接続され、各スーパーノードの共有記憶エンティティは、ブロックチェーンのコピーを記憶するよう構成され、前記ブロックチェーンネットワークは、少なくとも10のスーパーノードを有する、前記ブロックチェーンネットワークを提供することも望ましい。
【0049】
かような改善された解決法が、現在考案されている。
【0050】
本発明のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態は、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【0051】
【
図2】ユーザがトランザクションを送信してからブロックチェーンに至るまでの手順を示す動作線図に関して、ビットコインネットワークの改良されたアーキテクチャを示す。
【
図3】MEMPOOL内で承認を待つトランザクションの凝集体サイズの例を示すグラフを示す。
【
図4】内部中央集権的な記憶設備へリンクされた複数のノードを示す。
【
図5】各ノードが分散MEMPOOL及び分散記憶設備の両方の部分である構成を表す。
【
図6】ビットコインネットワーク上のノードを介してアプリケーションレベルで直列に送信及び受信されるネットワークパケットを表す。
【
図7】ビットコインネットワークにわたるノード間の単一トランザクションがとるルールを表す。
【
図8】ピアノードへ接続されるインターフェイスの相関係数を示す相関行列の例示である。
【発明を実施するための形態】
【0052】
本明細書では、大きいギガバイトサイズのブロックを処理及び記憶することの問題に対する解決法が記載される。
【0053】
<ブロックチェーンネットワークのタイプ及び妥当性確認ノード>
ブロックチェーンネットワークは、他のメンバーからの招待なしで又は承諾なしで、誰でも参加することができるピア・ツー・ピアの非会員制(open-membership)ネットワークとして記載され得る。ブロックチェーンネットワークが動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワークに参加し得る。そのような分散した電子デバイスはノードと呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【0054】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワークのノードを形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、コンピュータファーム、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【0055】
ブロックチェーンネットワークのノードは、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワークは、少なくとも部分的にインターネット上で実装され、ノードのいくつかは、地理的に散開した位置に配置されてよい。
【0056】
現在、ノードは、ブロックチェーン上の全てのトランザクションの大域的な台帳を保持する。それは、ブロックにグループ分けされ、ブロックの夫々は、チェーン内の前のブロックのハッシュを含む。大域的な台帳は分散台帳であり、各ノードは、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノードによるトランザクションは、大域的な台帳の有効性が保たれるように、他のノードによって検証される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解される。
【0057】
各トランザクションは、通常は、1つ以上の入力及び1つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスであってよい。その値は、次いで、未使用トランザクション出力(UTXO)としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値を使用又は分散するために、入力として参照してよい。
【0058】
ノードは、それらの機能性に応じて、タイプ又はカテゴリが様々であることができる。ノードに関連した4つの基本機能、すなわち、ウォレット(wallet)、マイニング(mining)、完全ブロックチェーンメンテナンス(full blockchain maintenance)、及びネットワークルーティング(network routing)が存在することが示唆されてきた。それらの機能のバリエーションが存在し得る。ノードは、それらの機能のうちの1よりも多くを有し得る。例えば、“フルノード”(full node)は4つ全ての機能を提供する。例えば、デジタルウォレットで実装され得るようなライトウェイトノード(lightweight node)は、ウォレット機能及びネットワークルーティング機能のみを特色とし得る。完全ブロックチェーンを保持することよりむしろ、デジタルウォレットは、ブロックをクエリするときにインデックスとなるブロックヘッダの経過を追ってよい。ノードは、TCP/IP(Transmission Control Protocol)のような接続指向のプロトコルを用いて互いと通信する。
【0059】
ノードの更なるタイプ又はカテゴリ、すなわち、マーチャント(merchant)ノード(ここでは、時々、「Mノード」と呼ばれる。)が提供されることがある。Mノードは、トランザクションの高速伝播に焦点を当てるよう設計される。Mノードは、完全なブロックチェーンを保持してもしなくてもよく、マイニング機能を実行しない。その意味で、Mノードは、ライトウェイトノード又はウォレットに類似している。しかしながら、Mノードは、トランザクションの高速伝播を可能にするための追加の機能を含む。Mノードの運用上の焦点は、未承認トランザクションの迅速な妥当性検証及び他のMノードへの伝播である。他のMノードから、未承認トランザクションは、ブロックチェーンネットワーク内の他のノードへ迅速にプッシュされる。この機能を促進するために、Mノードは、より多くの着信接続、特に発信接続を許可される。それらは、さもなければ、管理プロトコル下のノードに対して許可され得る。
【0060】
Mノードは、集合的に、マーチャントネットワーク(又は「M-net」)と呼ばれることがある。語「マーチャント」は、「特殊化した」(specialized)を意味すると解釈されることがある。Mノードは、ブロックチェーンネットワーク内に組み込まれ得る。各Mノードは、Mノードの機能を実行することができることを確かにする特定のハードウェア及び性能機能を満足するブロックチェーンネットワーク上の特殊ノードである。すなわち、M-netは、ブロックチェーンネットワーク内でそれを通じて分散されたサブネットワークと見なされ得る。Mノードは、1以上の専用の機能又はサービスを実行するよう配置及び構成されてよい。
【0061】
M-netが確実に実行され、特定のセキュリティレベルでサービスを提供することができるために、Mノードは、M-net全体の適切な外観を維持する必要があり、よって、効率的なルーティングプロトコルが適所にある必要がある。Mノードが開始トランザクションを受け取るたびに、Mノードはそれを他のノードに加えていくつかの他のMノードへブロードキャストする必要がある。M-netとの関連で、これは、複数巡回セールスマン問題(multiple salesman problem)(MTSP)に対する解決法を見つけることを意味する。この問題に対処する解決法は手に余るほどあり、それらのうちのいずれか1つの解決法がM-netで用いられてよい。Mノードは夫々、何らかの最新の形でルーティング最適化を実行する。
【0062】
いくつかの実施で、M-netは、非中央集権的なIPマルチキャストタイプのネットワークとして実装される。すなわち、ブロックチェーンネットワークへの着信トランザクションの高速な拡散を可能にするために、マルチキャストが使用されてよく、トランザクションがM-net全体に迅速にブロードキャストされることを確かにして、全てのMノードがその場合にトランザクションをブロックチェーン内の他のノードへ転送することを可能にする。
【0063】
マルチキャストネットワークアーキテクチャは、情報を受信することに関心があるノードの夫々に対するデータ複製なしで、送り先ノードのグループへのデータの同時の配信を可能にする。ノードがマルチキャスト伝送を受信したい場合に、そのノードはマルチキャストグループに参加し(登録フェーズ)、その後に、マルチキャストグループに対して送信された全てのデータを受信することができるようになる。IPマルチキャストは、受信者がいくつ存在するのかの事前知識を必要としないことで、より大きい受信者母集団に対応することができ、ネットワークインフラストラクチャは、発信元がパケットを一度しか送信することを求められないことで、効率的に使用される。マルチキャストネットワークの性質上、接続指向のプロトコル(TCPなど)の使用は、より多数の他のノードとの同時の通信のため、実用的ではない。従って、コネクションレスプロトコルが使用される。
【0064】
ビットコインなどのいくつかのブロックチェーンネットワークは、ノード間通信のためにTCPを使用する。TCPを用いて送信されるデータパケットは、順序付けのために使用される関連するシーケンス番号を有している。
【0065】
これに加えて、TCPプロトコルは、接続を確立する場合及び接続を終了する場合の両方で、スリーウェイハンドシェイク(three-way handshake)プロシージャを伴う。TCPを介して送信されるパケットは、オーバーヘッドと関連付けられており、それらは、関連するシーケンス番号を有し、スリーウェイハンドシェイクプロトコルが存在する。接続を確立することにおいて、128~136バイトが送信され、一方、接続を閉じることは、160バイトがかかる。よって、パケット伝送におけるハンドシェイクは、最大296バイトがかかる。
【0066】
更には、ノードが新しいトランザクションを受け取るとき、それは、他のノードに、トランザクションのハッシュを含むインベントリ(inventory)(INV)メッセージを通知する。INVメッセージを受け取るノードは、そのトランザクションのハッシュが以前に確認されているかどうかをチェックする。そうでない場合には、ノードは、GETDATAメッセージを送ることによってトランザクションを要求する。ノードAからノードBへトランザクションを送るのに必要な時間は、T1=妥当性確認+TCP(INV+GETDATA+TX)である。ここで、TCP()は、時間に関してTCPハンドシェイクプロシージャによって導入されるオーバーヘッドを示す。
【0067】
<TCPプロトコル及びスリーウェイハンドシェイク>
現在のピア・ツー・ピアのビットコインプロトコルは、10のデータメッセージと、13の制御メッセージとを定義する。これに関連して、オブジェクト転送(object transfer)に関係があるデータ又はデータパケットの転送は、個々のトランザクション又はブロックを指すことがある。
【0068】
ビットコインP2Pプロトコルによって使用されるメッセージの完全なリストが知られており、完全なリストについては、http://bitcoin.org/en/developer-referenceから取得可能なBitcoin Developer Referenceを参照されたい。
【0069】
メッセージのサブグループは、オブジェクトの要求又は分配に関係がある。これらのメッセージは、BLOCK、GETDATA、INV、TX、MEMPOOL及びNOTFOUNDである。
【0070】
BLOCKメッセージは、単一の直列化されたブロックを送信し、2つの異なる理由のために送信され得る。ノードは、インベントリタイプのMSG_BLOCKによりブロックを要求するGETDATAメッセージに(ノードがリレーのために利用可能なそのブロックを有しているという条件で)応答して、それを常に送信するか、あるいは、代替的に、ノード又はマイナーは、それらの新たにマイニングされたブロックをそれらのピアへブロードキャストする非送信請求ブロックメッセージを送信し得るかのいずれかである。
【0071】
GETDATAメッセージは、1以上のデータオブジェクトを他のノードに要求する。通常、オブジェクトは、INVメッセージを用いて予め受信されたインベントリによって要求される。GETDATAメッセージに対する応答は、TXメッセージ、BLOCKメッセージ、又はNOTFOUNDメッセージであることができる。
【0072】
GETDATAメッセージは、メモリプール又はリレーセットにもはやない過去のトランザクションのような任意のデータを要求するためには使用され得ない。GETDATAメッセージは、オブジェクトを、以前にそれらを公示したノードにオブジェクトを要求するために使用されるべきである。
【0073】
INVメッセージ(インベントリメッセージ)は、送信側ピアが知っているオブジェクトの1以上のインベントリを送信する。それは、新しいトランザクション又はブロックを知らせるために請求なしで、あるいは、GETBLOCKSメッセージ又はMEMPOOLメッセージに応答して、送信され得る。受信側ピアは、未だ確認されたことがないオブジェクトを要求するために、INVメッセージからのインベントリを予め記憶されているインベントリと比較することができる。
【0074】
TXメッセージは、単一のトランザクションを送信する。それは、要求されるトランザクションの識別(ID)とともにインベントリを用いてトランザクションを要求するGETDATAメッセージに応答して送信される。
【0075】
MEMPOOLメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのIDを要求する。
【0076】
このメッセージに対する応答は、トランザクションIDを含む1以上のIVメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のINVメッセージを送信する。フルノードは、MEMPOOLメッセージを使用して、ネットワーク上で利用可能な未承認トランザクションのほとんど又は全てを迅速に集めることができる。ノードは、MEMPOOLを送信する前にフィルタをセットして、そのフィルタに合うトランザクションのみを受け取ることができる。
【0077】
NOTFOUNDメッセージは、受信側ノードでリレーのために利用可能でないオブジェクトを要求するGETDATAメッセージに対する応答である。例えば、ノードは、より古いブロックから使用済みトランザクションを取り除くことがあり、従って、そのようなブロックの伝送は不可能である。
【0078】
メッセージサブグループは、オブジェクトの信頼性及び効率に関係がある。これらのメッセージはFEEFILTER、PING、PONG、及びREJECTである。
【0079】
FEEFILTERメッセージは、トランザクションを、手数料率が指定された値を下回る場合に、INVメッセージにおいてリレーしないようにするための受信側ピアへの要求である。MEMPOOL制限は、手数料率が低く、マイニングされたブロックに含まれる可能性が低い攻撃及びスパムトランザクションに対する保護を提供する。受信側ピアは、メッセージを無視し、INVメッセージ内のトランザクションにフィルタリングしないことを選択し得る。
【0080】
PINGメッセージは、受信側ピアが依然として接続されていることを確認するのに役立つ。PINGメッセージを送信するときにTCP/IPエラーが発生する場合に(例えば、接続タイムアウト)、送信側ノードは、受信側ノードが切断されたと想定することができる。PINGメッセージへの応答は、PONGメッセージである。メッセージはナンス(nonce)を含む。
【0081】
PONGメッセージは、PINGメッセージに応答して、PONG側ノードが依然として動作していることをPING側ノードへ知らせる。デフォルトにより、ビットコインコアは、20分内にPINGメッセージに対する応答がない如何なるクライアントからも切断する。ノードがレイテンシを追跡することを可能にするように、PONGメッセージは、対応するPINGメッセージで受け取られた同じナンスを返送する。
【0082】
REJECTメッセージは、受信側ノードに、それの以前のメッセージのうちの1つが拒絶されたことを知らせる。メッセージを拒絶する理由の例として、
・メッセージが復号されなかったこと、
・ブロックが有効でないこと、すなわち、無効なプルーフ・オブ・ワーク又は無効なシグニチャが提供されたこと、
・トランザクションが有効でないこと、すなわち、入力よりも大きい出力値又は無効なシグニチャが提供されたこと、
・ブロックがもはやサポートされていないバージョンを使用していること、
・接続ノードが、拒絶側ノードがサポートしていないプロトコルバージョンを使用していること、
・トランザクションが、以前に拒絶されたトランザクションと同じ入力を使用していること(二重支払い)、
・トランザクションが、リレー又はマイニングされるのに十分な料金又は優先度を有していなかったこと
がある。
【0083】
一例として、ビットコインネットワーク上のノード‘i’及び‘j’は、次のステップを用いて通信する:
1.ノードiは、トランザクションのリストを含むINVメッセージを送信する。
2.ノードjは、以前に知らされたトランザクションのサブセットを要求するGETDATAメッセージにより応答する。
3.ノードiは、要求されたトランザクションを送信する。
【0084】
ここで、方法は、少なくともデータの分散を改善するように、ブロックチェーンネットワークのプロトコルを最適化しようと努める。
【0085】
図6は、データが、ネットワークパケットの形で、オペレーティングシステムによって提供されるプリミティブに従ってアプリケーションレベルで直列に送信及び受信される実際のシナリオを表す。
【0086】
トランザクションxが単一のイーサネット(登録商標)/IPパケットに収まるとすれば、m個のピアへのその伝送は、m個の異なる出力パケットのバッファリングを必要とする。入力及び出力ネットワークパケットの両方は、他の情報とともに、
・直列化されたトランザクション、
・送信側/受信側ピアへのTCP/IP接続を表す論理インターフェイスID
を含む。
【0087】
着信トランザクションが処理されるための予想時間は、入力キューLiの(パケット単位の)平均長さに依存し、一方、処理されたトランザクションが正しく送信されるための予想時間は、出力キューLoの平均長さに依存する。
【0088】
従って、トランザクションの効率的なリレーは、Li及びLoの両値の低減に依存する。しかし、ピアへのトランザクションの選択的なリレーのための確率的モデルは、Loに直接影響し、誘導によりLiにも影響する。
【0089】
現在のビットコイン実施では、INV及びGETDATAメッセージパケットは、トランザクションと同じようにI/Oバッファにキューイングされ、送信遅延及び受信遅延に深刻な影響を及ぼす。
【0090】
<効率的なトランザクション伝播-確率的リレー>
ノードiがインベントリ交換の使用なしで、新しいトランザクションを直接送信することを許可された場合には、トランザクションは、より速い速度でネットワーク内に広められる。ただし、何らかの規制がなければ、ネットワークは氾濫することになる。
【0091】
従って、本発明は、膨大な量の不必要なトランザクションの伝送を回避するために、ノードからピアノードへのデータ又はオブジェクトの選択的なリレーのためのメカニズムを使用する。よって、本発明は、改善されたネットワーク効率を提供し、ネットワークによって必要とされるリソースの量を低減する。メカニズムは、確率的モデルであることができる。
【0092】
伝送リレーのためのメカニズム又は確率的モデルは、3つのノードi、j及びkがビットコインネットワークの一部であって互いに接続されている
図7を参照して、仮定に基づいている。ノードiは、ノードj及びノードkへ直接接続されている。ノードj及びノードkは、ノードiを介して又はビットコインネットワークを介して間接的に接続されている。
【0093】
ノードiは、トランザクションrの形でデータを処理する2つのインターフェイスa及びbを有して示されている。トランザクションはノードiで開始され、それがノード間でビットコインネットワークにわたって伝播されるにつれて様々な段階を経る。段階には:
・インターフェイスaからピアノードへの伝送のためにトランザクションを処理して、ノードjで受け取られるようにする第1段階r1、
・ノードjがビットコインを介した伝送のためにトランザクションを処理して、ノードkで受け取られるようにする第2段階r2、及び
・ノードkが、インターフェイスbでトランザクションを受信するピアノードiへの伝送のためにトランザクションを処理する第3段階r3
が含まれる。
【0094】
疑念を回避するために、r1、r2、及びr3は同じトランザクションであり、添え字はリレーを表す。
【0095】
以下のように仮定される:
・ノードがインターフェイス(b)から、他のインターフェイス(a)からの伝送のために処理された同じトランザクションを受け取る場合に、2つのインターフェイスはある程度の相関を共有する。
・ノードiで生成されたトランザクションが所与のjの入力インターフェイスを通じてノードjに届く場合に、ノードiで生成された第2のトランザクションは、高い確率で同じインターフェイスを通じてjに届く。
【0096】
再び
図7を参照すると、リレー相関の一例として、ノードj及びkは、ノードiのピアである。iが新しいトランザクションを生成し、それをノードjへリレーし、後に同じトランザクションがノードkからノードiで受け取られる場合に、j及びkは、ネットワークを通る論理パスを共有する。従って、発信元ノードは、同じ情報をそのピアノードの両方へリレーする必要がない。明確化のために言うと、ノードiは、ノードkがトランザクションrを受け取る確率が高いので、そのトランザクションrをノードkへ送信する必要がない。同様に、逆に、ノードkは、トランザクションrを受け取る確率が高いので、そのトランザクションrをノードiへ送信する必要がない。ロジックは両方の方向で有効である。
【0097】
<ノードのインターフェイス間の関係>
図8は、ピアノードへ接続される5つのインターフェイスa、b、c、d及びeを有しているノードiについて決定され得る局所相関行列Cの一例である。行列は、着信トラフィックについての相関の程度を表す。この行列の形成及び適用については、以下で記載される。
図8に示される値は、例示のためである。
【0098】
各ノードは、一例として、インターフェイスa及びbから受け取られるトランザクション間の相関を表す係数cabを決定することによって、相関行列Cを構築する。そのような係数は、インターフェイスの全ての対の間で決定される。
【0099】
各インターフェイスから受け取られるトランザクションIDのリストを使用して、t
a及びt
bを、夫々インターフェイスa及びbから受け取られるトランザクションの数とし、t
abを、a及びbの両方から受け取られる二重のトランザクションの数であるとする。インターフェイスa及びbの相関係数は、式1:
【数3】
によって定義される。
【0100】
慣習として、係数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よりも相関性がある。
【0101】
主対角線上の要素は有意でないから、行列サイズは、
図8に示されるように、m(m-1)個の要素まで減らされ得る。
【0102】
<ノードインターフェイスへの値の割り当て>
インターフェイスaの全体的な相関インデックスは、次の:
【数4】
とおりに、式2で定義される。
【0103】
図8の相関行列を一例として使用すると、インターフェイスaの相関インデックスc
aは、各インターフェイス間の相関係数の和として表され得る。
c
a=c
ab+c
ac+c
ad+c
ae=0.2+0.8+0.2+0.2=1.4
【0104】
このメトリックは、個々のインターフェイスの相関を順位付けし、ノードピアによって提供されるリレーの品質を理解するために使用され得る。一例として、aの相関インデックスが平均値よりも著しく高い場合に、aから受け取られるトランザクションは大いに冗長である。
【0105】
対照的に、aの相関インデックスが平均値よりも著しく低い場合に、(i)aから受け取られるトランザクションはいくらか一意的であるか、あるいは、(ii)aへ接続されるピアノードは悪意のある動作をしているかのどちらかである。悪意のある動作については、以下で更に詳細に論じられる。
【0106】
各ノードは、受信されたトランザクションフローにのみ基づいてそれ自身の相関行列を構築することが留意されるべきである。悪意のある情報の伝播を回避するために、ノード又はピア間で相関情報は交換されない。
【0107】
<インジケータ>
インターフェイスaからの着信トランザクションを考えると、ノードは、範囲[mmin,mmax]内のピア数m*へのリレーを実行する。
【0108】
現在の値m*は、インターフェイスaの相関インデックスを含むm-1個の相関係数{c
a}の現在の分布に依存する。
{c
a}=[c
0a,c
1a,・・・,c
am-1]
すなわち、{c
a}は、相関係数のリスト又は組であり、この組は、インターフェイスaについての係数を有する。相関インデックスは、
図8及び上記の例により、係数の和、すなわち、c
a=c
ab+c
ac+c
ad+c
aeである。
【0109】
インターフェイスaからのリレーのために選択されるインターフェイスの数m*(a)は、組{c
a}の各要素のメトリックθ
i
(a)の計算に依存する:
【数5】
【0110】
メトリックθi
(a)は、スイッチ又はセレクタとして機能し、インターフェイスがデータをリレーするか否かを示す。例えば、インターフェイスは、そのメトリックが‘1’である場合にデータをリレーし、そのメトリックが‘0’である場合にデータをリレーしない。
【0111】
バーc
aを組{c
a}内の係数の平均として定義することによって、メトリックθ
i
(a)は、対応する相関係数c
aiがバーc
aよりも低い場合に、m*(a)に寄与する:
【数6】
【0112】
θi
(a)は、代替的に、平均値ではなく、{ca}の中央値に基づいてもよい。メトリックθi
(a)はまた、統計解析を用いて組{ca}から導出される代替値に基づいても、あるいは、それから決定されてもよく、例えば、メトリックθi
(a)は、対応する相関係数caiが組{ca}の平均よりも少なくとも1標準偏差下回る場合に、m*(a)に寄与する。
【0113】
一例として、
図8のインターフェイスaからの着信トランザクションは、{c
a}に含まれる相関係数に従って、m*(a)個の最小相関インターフェイスへリレーされる。リレーのために選択される{c
a}のサブセットは、{c*
a}と定義される。
【0114】
図8の例に戻ると、{ca}={0.2,0.8,0.2,0.2}の場合に、
【数7】
【0115】
従って、インターフェイスaからのリレーのために選択されるインターフェイスの数m*(a)は‘3’である。メトリックθi
(a)を決定する平均値又はインジケータを下回るサブセット内の係数は、{0.2,0.2,0.2}であり、これらの係数は{c*a}に対応し、インターフェイスb、d、eがリレーのために選択される。
【0116】
上記の例でメトリックを決定するために使用された係数の‘切り捨て’点又はレベルは、係数の平均‘0.35’であった。この閾値又はインジケータはメトリックθi
(a)を決定し、それからm*(a)が決定される。
【0117】
全体として、従って、方法は、インジケータに従ってインターフェイスからデータをリレーすると言える。前記インジケータは、各インターフェイスについて、それがデータをリレーするかどうかを決定するメトリックを決定するために使用され得る。
【0118】
インジケータは、上記の例ではメトリックを決定するために使用されたが、他の因子が各インターフェイスのメトリックに作用する可能性がある。各インターフェイスのメトリックは、相関行列への変更に従って計算され得る。
【0119】
<変更への対応>
上記の通り、どのインターフェイスが情報をリレーするために使用されるべきかの決定は、行列が変更されない定常状態条件を仮定する。
【0120】
プロトコルの更なる詳細は、これより、変更、例えば、ピアノードがネットワークに加わり、ノードとの新たな接続を形成する場合、又はピアノードがネットワークから去り、ノードのインターフェイスへもはや接続されていない場合、にどのようにしてプロトコルが対応することができるかの説明に関して、以下で与えられる。
【0121】
変更に対応する場合に、データはメトリックに基づきリレーされ得る。これは、インジケータ、故に、相関インデックスを考慮に入れる。
【0122】
<起動>
ノードiが起動するとき、それは、ビットコインネットワークのようなブロックチェーン内の他のノードとのm個のピア接続を初期化する。例えば、全詳細については、Bitcoin Developer Referenceを参照されたい。初期段階で、ノードiは、そのインターフェイスを通るデータ間の相関に対する如何なる情報も有しておらず、それを通る又は流れるデータを表すデータの限られた組を有する。従って、完全なトランザクションのリレーは、ある程度の時間実行されることになる。
【0123】
この期間Tbootupの間に、メトリックθi
(a)は、各インターフェイスを‘1’にセットし、データを全てのインターフェイスからリレーすることによって、m*(a)に寄与する。従って、メトリックは、一定期間にインジケータに関わらずデータがリレーされることを可能にする。
【0124】
期間Tbootupの長さは、mの関数f(m)である。すなわち、接続の数が多いほど、正確な相関行列を構築するために必要とされる時間は長くなる。次の関数が、単なる一例として、提案される:
f1(m):=m
f2(m):=m2
【0125】
Tbootupの後、ノードiは、以下に示される既存のノードに従って選択的なリレーを実行する。
【0126】
<既存のノード>
一般的なノードjの接続は、変更を考慮して時間とともに変化する。そのような変更は、(i)他のノードがネットワークに加わること、(ii)他のノードがネットワークから去ること、及び/又は(iii)他のノードが悪意のある動作をすることのうちのいずれかによる。悪意のあるノードは選択的にブラックリストに登録され、対応する接続は閉じられる。
【0127】
従って、ネットワークグラフ全体における如何なる変更も検出され、2つ(以上)の連続した変更イベント間の平均時間を表す量Tchangeによってパラメータ化され得る。Tchangeごとに一度、ノードjの局所相関行列が更新される必要がある。
【0128】
ノードの相関行列の更新は、次のうちの少なくとも1つを含むことができる:
・相関行列がリセットされる周期リセット
新しいノードごとに、完全なトランザクションリレーが、時間Tbootupに実行される。次いで、ノードjは、ピアノードへ接続される各インターフェイスについてのその新しいm*個の値に対して選択的なリレーを実行する。
・相関行列が更新されるアップデート
所与のインターフェイスαについて、選択された組{c*a}の中のβ個の最高相関インターフェイス(0<β<mmin)は、{c*a}にないβ個の最小相関インターフェイスと交換される。
【0129】
すなわち、データは、通常は、サブセット{c*a}内のm*(a)個の最小相関インターフェイスへリレーされるが、行列が更新される場合に、サブセット{c*a}の部分でなく、相関インデックスが低いインターフェイスが、サブセット内で高い相関インデックスを有しているインターフェイスの代わりにサブセットに加えられる。これは、変更に際してネットワークにわたるデータのフローのインテグリティを確かにすることができる。
【0130】
再び
図8の例に戻ると、通常、
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}
【0131】
バーc
dを組{c
d}内の計数の平均値としてとると、メトリックθ
i
(d)は、対応する相関係数c
diがバーc
dよりも低い場合に、m*(d)に寄与する:
【数8】
【0132】
【0133】
通常、インターフェイスdからのリレーのために選択されるインターフェイスの数m*(d)は‘3’である。メトリックθi
(d)を決定する平均値又はインジケータを下回るサブセット内の係数は、{0.2,0.4,0.4}であり、これらの係数は{c*d}に対応し、インターフェイスa、b及びcがリレーのために選択される。疑念を回避するために、インターフェイスeに対応する係数、すなわち{0.6}は、選択されたサブセット{c*d}内にない。
【0134】
インターフェイスdに関連して、更新が発生するとき、組{c*d}内には2(β)個の最高相関インターフェイスが存在することが起こる。それらはインターフェイスb及びcであり、どちらも0.4の値を有する。
【0135】
{c*d}にないβ個の最小相関インターフェイスとしての資格を得るインターフェイスはただ1つしかなく、そのインターフェイスはeである。従って、ただ1つの‘交換’が実行可能であり、どのインターフェイスを交換すべきかの選択は、どちらも同じ0.4の係数を有しているのでb又はcのどちらか一方である。一例として、どのインターフェイスが交換のために選択されるかの選択は、辞書式優先度に従って行われ得る。
【0136】
次いで、このインターフェイスは、{c*a}にないβ個の最小相関インターフェイスと交換される。これは、最低係数が組の中の残りの係数{cd}={0.4,0.4,0.6}から選択されることを意味する。最低係数はインターフェイスb及びcに対応し、従って、データは、インターフェイスaよりもむしろそれらのインターフェイスへ接続されたピアノードへリレーされる。
【0137】
ピアが切断する場合に、相関行列内のその係数は無効になる。Tchange期間の終わりに、上記の周期リセットが必要とされる。次いで、ノードjは、夫々の接続インターフェイスについてのその新しいm*個の値に対して選択的なリレーを実行する。
【0138】
新しいピアbが加わる場合に、それが接続されるインターフェイスが、ノードaとの夫々の他のピアインターフェイスについての{c*a}の現在の値に関わらず、リレーのために選択される。一例として、bを有するインターフェイスが、ある程度の時間Tjoinにγ個の着信トランザクションごとにリレーのためにランダムに選択され得る。
【0139】
Tjoinは、Tbootup及び/又はTchange期間に従ってセットされる。このリレーは、ノードbがそれ自身の相関行列を構築することを助ける。Tjoinの終わりに、bは、ノードaでのみ夫々の他のピアインターフェイスについての更新された値{c*a}に従ってリレーのために選択される。
【0140】
ノードiは、そのピアjが依然として動作しているかどうかを、着信トラフィックがそのインターフェイスから受信されなかったという理由で、チェックする必要があり得る。任意の短い時間Ttempの一時的なリレー要求がjへ送信され得る。
【0141】
新しいトランザクションを発行するノード、すなわち発信元ノードは、ネットワークにおける配布を保証するために注意深く、リレーのための選択されたピアの組を選択する必要がある。例えば、任意のインターフェイスaのノードの数m**は、第1のリレーとして選択され得る。ここで、m*(a)<m**<mである。
【0142】
パラメータのリスト全体は、以下、表1で詳述される。
【表1】
【0143】
<悪意のあるノード>
悪意のあるノードは、トランザクションの配布のための確率的モデルを効率的でないものとすることを目的としている。悪意のあるノードは、次の方法のいずれかで機能又は動作することができる。
・悪意のあるノードは、伝播されるはずのトランザクションを伝播しない。この悪意のあるノードへ接続される誠実な(honest)ノードは、他の誠実な(又は悪意のある)ノードからそれらのトランザクションを取得可能であり得る。しかし、マイナーの組が依然としてそれらを受信して、新たにマイニングされたブロックに含めることができるとすれば、ネットワークにおけるトランザクションの完全な配布は不要である。
・悪意のあるノードは、同じ合法トランザクションを複数回伝播する。受信側ノードは、ルックアップテーブルを用いて、以前に受け取られたトランザクションの経過を追うことができる。従って、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、無効なトランザクションを伝播する。受信側ノードがトランザクションの妥当性確認を実行する場合に、不正行為は容易に検出可能であり、悪意のあるピアは削除される。
・悪意のあるノードは、膨大な数のダミートランザクションを生成し伝播する。受信側ノードは、ピアからの膨大な有効な着信トランザクションに対して異なる応答をすることができる。それに応えて、(i)受信側は、トランザクションリレーレートを低減するように送信側に求める。問題が解決しない場合に、送信側ピアは削除され、(ii)受信側は、リレーされたトランザクションに対する最低限のトランザクション料金を要求(及びチェック)することができる。これにより、悪意のあるノードにとって攻撃が高価になる。最低限のトランザクション料金が順守されない場合に、送信側ピアは削除され、且つ/あるいは、(iii)送信側ピアは単に削除される。
【0144】
上記の攻撃及び確率的モデルに基づいて、次の特性が推測され得る。
・トランザクションリレーレートは、個々のノードの処理性能及び帯域幅利用可能性の両方に依存する。この理由により、デフォルトの最大レートは強制されない。
・悪意のあるノードは、単に沈黙を保つことができない。それらは、自身の接続を維持するために、有効なトランザクションを転送しなければならない。
【0145】
<メッセージ>
ビットコインネットワーク上のノードインターフェイスからのデータ又はオブジェクトの確率的リレーを含む、本明細書における方法の実装をサポートするために、新しいメッセージタイプが導入され得る。更に、現在のピア・ツー・ピアのビットコインプロトコルに関して先に詳述された現在のメッセージタイプのいくつは、もはや使用されず、一方、以下で記載されていないメッセージタイプは、ビットコインP2Pプロトコルに対して変更されない。
【0146】
<データメッセージ>
他のノードに1以上のデータオブジェクトを要求するメッセージGETDATAはもはや使用されないか、あるいは使用から外される。同様に、送信側ピアが知っているオブジェクトの1以上のインベントリを送信するメッセージINVはもはや使用されないか、あるいは使用から外される。GETDATAに対する応答としてのNOTFOUNDメッセージはもはや使用されないか、あるいは使用から外される。
【0147】
既に先に紹介されたMEMPOOLメッセージは、受信側ノードが有効と確認したが、ブロックにおいて公にされていないトランザクション、すなわち、受信側ノードのメモリプールに存在するトランザクションのIDを要求する。このメッセージに対する応答は、トランザクションIDを含む1以上のIVメッセージである。ノードは、その完全なメモリプールを参照するために必要とされる数のINVメッセージを送信する。ノードはこの機能を無効にしてよく、従って、その局所MEMPOOLの送信は必要とされない。
【0148】
<制御メッセージ>
ピアが依然として接続されていることを確認するためのPINGメッセージ及びPONGメッセージは取り除かれる。悪意のあるノードのような無言のノードは、上記の通りに管理される。メッセージFEEFILTERは変更されないままである。しかし、料金閾値を順守しないピアは削除される。
【0149】
新しいメッセージTEMP及びFLOWが導入される。
・TEMPメッセージは、ピアが依然として動作しているかどうかを、そのインターフェイスから着信トラフィックが受信されないためにチェックするようノードが求められる場合に、使用される。(任意の短い時間Ttempの)一時リレー要求TEMPは、前記インターフェイスへ接続されたピアへ送られる。受信側ピアがリレーを開始するが、所与の時間窓Tempを順守しない場合に、それは行列から削除される。
・FLOWメッセージは、ノードがピアに局所フロー制御に従ってトランザクションリレーレート(1秒あたりのトランザクションの数)を変更するよう要求する場合に、使用される。レートは、増大、低減、又は一時的にサスペンド(リレーレート=0)されてよい。受信側ピアが新しいリレーレートを順守しない場合に、それは削除される。新しいFLOW要求は、現在のリレーレートを変更するために必要とされる。受信側ピアがリレーと再開するために第2のFLOW要求を受信しない場合に、それは送信側を削除する。
・MINFEEメッセージは、ノードが最低限のトランザクション料金によってフィルタをかけられたトランザクションを受け取るよう求められる場合に、使用される。最低限の値は、個々のトランザクション及び/又は、複数のトランザクションが単一のIPパケットに収まる場合には料金の合計に対して、セットされ得る。受信側ピアがトランザクション料金の制限を順守しない場合に、それは削除される。
【0150】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「~を含むか、又はそれらから成る」(includes or consists of)を意味し、「有する」(comprising)は、「~を含むか、又はそれらから成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【0151】
<要約>
今日のビットコインネットワークは、計算作業の観点から、マイニングを中心としている。トランザクションの量が大幅に増えると、これは必ずしも実現可能になるとは限らない。本明細書で記載される解決法により、ビットコインネットワークは大量のトランザクションの伝播を処理可能となる。
【0152】
本発明は、ビットコインネットワークのようなブロックチェーンネットワークにわたってデータパケット又はトランザクションを送信する既知の方法、例えば、3ステップメッセージングを使用した新しいトランザクションの分散に加えて、あるいは、望ましくはその代わるものとして、データパケットの分散の方法を提供することができる。
【0153】
本発明は、ノード間の通信を減らすことによって、ネットワークにわたるデータパケットのより高速な伝播及び分散をサポートすることができる。
【0154】
更に、ノードでボトルネックによって引き起こされる長いキューは、インターフェイス間の相関に従ってデータパケットを選択的にリレーすることによって抑制される。
【0155】
パケット伝送の全体の数は低減され、一方で、情報冗長性の安全レベルは保たれる。
【0156】
最後に、本発明は、新しい接続、接続の中断、及び悪意のあるノードが考慮され、それによりネットワークのインテグリティが維持されるように、ノードのインターフェイスに関連した変更に対応する適応手段を提供することができる。これは、方法はネットワーク及びノードの環境に適応するので、管理され得るノード上のインターフェイスの数に制限はなく、ネットワークの性能及びサイズは制限されないことを意味する。非効率的な伝送は最小限にされ、悪意のあるノードは回避される。