(57)【要約】  ノードのネットワークにおいてトランザクションを伝播する方法及び装置であり、各ノードは他のノードに対する１つ以上の接続を有する。方法は、ノードのうちの１つがトランザクションの伝播に対するボトルネックであると決定するステップと、第１の期間にわたり、ノードのネットワーク内の１つ以上の第１のノードから複数の新しいトランザクションを受信するステップと、複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成するステップと、複数の新しいトランザクションをノードのネットワーク内の１つ以上の第２のノードに送信する代わりに、メッセージ及びグローバルエンコーディングベクトルを１つ以上の第２のノードに送信するステップと、を含む。ネットワークは、ブロックチェーンネットワークでもよい。
2020522922.tif 000002
【特許請求の範囲】
【請求項１】
ノードのネットワークにおいてトランザクションを伝播するノードであって、各ノードは他のノードに対する１つ以上の接続を有し、前記ノードは、
プロセッサと、
メモリと、
ネットワークインターフェースと、
プロセッサ実行可能命令を含むアプリケーションと、を含み、
前記プロセッサ実行可能命令は、前記プロセッサにより実行されたときに前記プロセッサに、
前記ノードがトランザクションの伝播に対するボトルネックであると決定し、
前記ネットワークインターフェースを介して、及び第１の期間にわたり、前記ノードのネットワーク内の１つ以上の第１のノードから複数の新しいトランザクションを受信し、
前記複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成し、
前記複数の新しいトランザクションを前記ノードのネットワーク内の１つ以上の第２のノードに送信する代わりに、前記メッセージ及びグローバルエンコーディングベクトルを前記１つ以上の第２のノードに送信する
ことをさせる、ノード。
【請求項２】
前記命令は、実行されたときに前記プロセッサに、前記ノードへのインリンクの数及び前記ノードからのアウトリンクの数を評価することと、前記インリンクの数が前記アウトリンクの数を超えているとき前記ノードのうちの前記１つがボトルネックであると決定することとにより、前記ノードのうちの前記１つがボトルネックであると決定することをさせる、請求項１に記載のノード。
【請求項３】
前記評価することは、前記複数の新しいトランザクションのうち最初のトランザクションの受信のときに評価することを含む、請求項２に記載のノード。
【請求項４】
前記評価することは、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡することを含み、前記インリンクの数は平均であり、前記アウトリンクの数は平均である、請求項２に記載のノード。
【請求項５】
前記命令は、実行されたときに前記プロセッサに、前記複数の新しいトランザクションのうち最初のトランザクションの受信に応答して、前記ノードのうちの前記１つがボトルネックであるとの前記決定を開始することをさせる、請求項１乃至４のうちいずれか１項に記載のノード。
【請求項６】
前記命令は、実行されたときに前記プロセッサに、停止条件が満たされたとの決定に応答して前記結合及び送信を実行することをさせる、請求項１乃至５のうちいずれか１項に記載のノード。
【請求項７】
前記停止条件は、前記複数の新しいトランザクションのうち最初のものの受信か又は前記ノードのうちの前記１つがボトルネックであるとの前記決定かのいずれかからの継続時間の満了を含む、請求項６に記載のノード。
【請求項８】
前記停止条件は、前記複数の新しいトランザクションが新しいトランザクションの最大数に達することを含む、請求項６に記載のノード。
【請求項９】
前記メッセージは、前記複数の新しいトランザクションの中の最長トランザクションより長くない長さを有する、請求項１乃至８のうちいずれか１項に記載のノード。
【請求項１０】
ノードのネットワークにおいてトランザクションを伝播する、コンピュータにより実現される方法であって、各ノードは他のノードに対する１つ以上の接続を有し、前記方法は、前記ノードうちの１つで実現され、
前記ノードのうちの前記１つがトランザクションの伝播に対するボトルネックであると決定するステップと、
第１の期間にわたり、前記ノードのネットワーク内の１つ以上の第１のノードから複数の新しいトランザクションを受信するステップと、
前記複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成するステップと、
前記複数のトランザクションを前記ノードのネットワーク内の１つ以上の第２のノードに送信する代わりに、前記メッセージ及びグローバルエンコーディングベクトルを前記１つ以上の第２のノードに送信するステップと、
を含む方法。
【請求項１１】
前記ノードのうちの前記１つがボトルネックであると決定するステップは、前記ノードへのインリンクの数及び前記ノードからのアウトリンクの数を評価するステップと、前記インリンクの数が前記アウトリンクの数を超えているとき前記ノードのうちの前記１つがボトルネックであると決定するステップとを含む、請求項１０に記載の方法。
【請求項１２】
前記評価するステップは、前記複数の新しいトランザクションのうち最初のトランザクションの受信のときに評価するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記評価するステップは、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡するステップを含み、前記インリンクの数は平均であり、前記アウトリンクの数は平均である、請求項１１に記載の方法。
【請求項１４】
前記ノードのうちの前記１つがボトルネックであると決定するステップは、前記複数の新しいトランザクションのうち最初のトランザクションの受信に応答して開始される、請求項１０乃至１３のうちいずれか１項に記載の方法。
【請求項１５】
前記結合するステップ及び送信するステップは、停止条件が満たされたとの決定に応答して生じる、請求項１０乃至１４のうちいずれか１項に記載の方法。
【請求項１６】
前記停止条件は、前記複数の新しいトランザクションのうち最初のものの受信と前記ノードのうちの前記１つがボトルネックであるとの前記決定とのいずれかからの継続時間の満了を含む、請求項１５に記載の方法。
【請求項１７】
前記停止条件は、前記複数の新しいトランザクションが新しいトランザクションの最大数に達することを含む、請求項１５に記載の方法。
【請求項１８】
前記メッセージは、前記複数の新しいトランザクションの中の最長トランザクションより長くない長さを有する、請求項１０乃至１７のうちいずれか１項に記載の方法。
【請求項１９】
複数の参加ノード間のトランザクションに参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの１つにおけるプロセッサにより実行されたときに前記プロセッサに、請求項１０乃至１８のうちいずれか１項に記載の方法を実行させる、非一時的プロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ネットワーク内でメッセージ及びデータを伝播することに関し、より詳細には、動作処理及び移転速度を改善するための方法及び装置に関する。
【背景技術】
【０００２】
本文献では、用語「ブロックチェーン」を用いて、電子的なコンピュータベースの分散台帳の全ての形態を含める。これらには、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可あり（permissioned）及び許可なし（un-permissioned）台帳、共有台帳、及びこれらの変形が含まれるが、これらに限定されない。ブロックチェーン技術の最も広く知られている適用はビットコイン（登録商標）台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、簡便さ及び例示の目的でビットコインが参照されることがあるが、本発明はビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。
【０００３】
ブロックチェーンは、合意に基づく電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実現され、同様に、ブロックはトランザクションから構成される。各トランザクション（Ｔｘ）は、ブロックチェーンシステム内の参加者間のデジタルアセットの制御の移転をエンコードするデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【０００４】
新しいトランザクションを受信したネットワークノードは、すぐにそのトランザクションをネットワーク内の他のノードへプッシュするよう試みる。新しいトランザクションを他のノードに伝送する前に、それは「検証され」、このことは、それが基準のセットに対してチェックされて、トランザクションが適用可能なブロックチェーンプロトコルに従って適切なトランザクションの基本要件を満たすことを保証することを意味する。
【０００５】
トランザクションがブロックチェーンに書き込まれるために、それは、トランザクションを収集してこれらをブロックにするように設計されたノード（「マイナー」又は「マイニングノード」）によりブロックに組み込まれる。次いで、マイナーは、ノードに関する「プルーフオブワーク（proof  of  work）」を完成させるよう試みる。ブロックチェーンネットワーク全体にわたるマイナーが、トランザクションのブロックを組み立て、そのブロックに関連するプルーフオブワークを完成させるのが最初であるよう競争する。成功したマイナーは、その確認されたブロックをブロックチェーンに追加し、該ブロックは、ネットワークを通じて伝播され、それにより、ブロックチェーンのコピーを維持する他のノードは、そのレコードを更新することができる。ブロックを受信したノードもまた、そのブロック及びその中の全てのトランザクションを「検証し」、それがプロトコルの形式要件に準拠することを保証する。
【０００６】
ビットコインのようなブロックチェーンベースのネットワークを使用して、広範な暗号的に保護された交換の使用を可能にし、あるいは容易にすることは、有利である。このような交換は、例えば、クレジットカードトランザクションなどの支払い処理に関連し得る。しかしながら、約毎秒３件のトランザクションスループットは、現在約毎秒５０，０００件のトランザクション量で動作しているこのような電子支払いを処理するには不十分である。ブロックチェーンネットワークの速度に関連するボトルネックの１つは、トランザクションの伝播である。トランザクションを受信した各ノードは、トランザクションを検証し、次いでそれをピアノードに送信する。実際、ビットコインプロトコルでは、ノードは、トランザクションのリストを含むＩＮＶメッセージをピアノードに送信し、ＩＮＶメッセージで広告されたトランザクションの何らかのサブセットを選択するＧＥＴＤＡＴＡ応答メッセージを受信する。次いで、ノードは、要求されたトランザクションをピアノードに送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。
【０００７】
したがって、トランザクション伝播の速度を改善することにより、大量トランザクションを処理するブロックチェーンの能力を現在制限している速度及びスケーラビリティの制約に対して解決策を見出すことが望ましい。ブロックチェーン又は他のアプリケーションに関連するかどうかにかかわらず、ノードのネットワークにおけるトランザクションの伝播により一般的に適用可能な解決策を見出すことが望ましい。
【発明の概要】
【０００８】
このような解決法が次に考案されている。
【０００９】
ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法及び装置が提供される。
【００１０】
本出願は、トランザクション（ＴＸ）の高速な伝播を可能にする方法及び装置を記載し、開示する。いくつかの例において、ノードは、ネットワークコーディング（network  coding）の使用を選択的に可能にして、トランザクションをピアノードに送信するために単一のメッセージへ結合する。ネットワークコーディングの選択的な使用は、ノードが潜在的なボトルネックであるとの決定に基づいてもよい。この解決策は、いくつかの実装においてブロックチェーンネットワークの文脈で適用され得る。新しいトランザクションのセットを伝播する際に、それがボトルネックであると決定したノードは、新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトル（local  encoding  vector）を使用して結合して、メッセージを生成することができる。次いで、メッセージは、グローバルエンコーディングベクトル（global  encoding  vector）と共に別のノードに送信される。
【００１１】
一態様において、本出願は、ブロックチェーンネットワーク条件が変化したときネットワークコーディングの選択的な使用を提供して、ノードがボトルネックであるかどうかと、結果としてネットワークコーディングが使用されるべきかどうかとを動的に決定する。ブロックチェーンネットワークの性質、及びネットワーク内の全てのノードへのトランザクションの迅速な伝播の重要性は、普遍的なネットワークコーディングを不要にし、計算的に高コストにする可能性があるが、一方、その時点においてボトルネックであると決定されたノードに対するネットワークコーディングの選択使用は、全てのノード通信に対するネットワークコーディングの全面的な使用に関連づけられた不要な複雑さ及びコストなく速度の利点を提供する可能性がある。本出願は、ブロックチェーンネットワークの文脈においてノードがボトルネックであるかどうかを動的に決定するための効率的かつ効果的なメカニズムを提供する。
【００１２】
さらなる又は代替的な態様において、本出願は、ノードのネットワークにおいてトランザクションを伝播するためのコンピュータにより実現される方法を記載し、各ノードは、他のノードへの１つ以上の接続を有する。本方法は、ノードのうちの１つで実現され、ノードのうちの１つがトランザクションの伝播に対するボトルネックであると決定するステップと、第１の期間（time  period）にわたり、ノードのネットワーク内の１つ以上の第１のノードから複数の新しいトランザクションを受信するステップと、複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成するステップと、複数の新しいトランザクションをノードのネットワーク内の１つ以上の第２のノードに送信する代わりに、メッセージ及びグローバルエンコーディングベクトルを１つ以上の第２のノードに送信するステップとを含む。
【００１３】
さらなる又は代替的な態様において、本出願は、プロセッサと、メモリと、ネットワークインターフェースと、命令を含むアプリケーションとを含むノードを記載し、該命令は、プロセッサにより実行されたときに、本明細書に記載される方法のうち１つ以上を実行する。
【００１４】
いくつかの実装において、方法又はノードは、ノードへのインリンクの数及びノードからのアウトリンクの数を評価することと、インリンクの数がアウトリンクの数を超えているときノードがボトルネックであると決定することとにより、ノードがボトルネックであると決定する。評価は、複数の新しいトランザクションのうち最初のトランザクション（first  transaction）の受信のときに生じてもよい。別の実装において、評価は、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡することを通して生じてもよく、インリンクの数は平均であり、アウトリンクの数は平均である。いくつかの例示的な実装において、ノードは、複数の新しいトランザクションのうち最初のトランザクションの受信に応答して、それがボトルネックであるとの決定を開始する。
【００１５】
いくつかの実装において、結合及び送信は、停止条件が満たされたとの決定に応答して実行される。停止条件は、一例において、複数の新しいトランザクションのうち最初のもの（first）の受信か又はノードのうちの上記１つがボトルネックであるとの決定かのいずれかからの継続時間（time  duration）の満了である。別の例において、停止条件は、複数の新しいトランザクションが新しいトランザクションの最大数に達したことである。
【００１６】
いくつかの実装において、メッセージは、複数の新しいトランザクションの中の最長トランザクションより長くない（no  longer  than）長さを有する。
【００１７】
さらなる又は代替的な態様において、本出願は、ノードのネットワーク内でトランザクションを伝播するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体を記載し、プロセッサ実行可能命令は、ノードのうちの１つにおけるプロセッサにより実行されたときにプロセッサに、本明細書に記載される方法のうち１つ以上を実行させる。
【００１８】
本明細書に記載される例示的な実装の多くで、ブロックチェーントランザクションを具体的に参照する。しかしながら、本明細書に記載される方法及び装置は、非ブロックチェーントランザクション伝播に関連して実現及び適用されてもよいことが理解されるであろう。
【図面の簡単な説明】
【００１９】
本発明のこれら及び他の態様は、本明細書に記載した実施形態から明らかであり、それを参照して解明されるであろう。次に、本発明の一実施形態が、単に例示として、添付の図面を参照して説明される。
【図１】ブロックチェーンに関連づけられた一例示的なネットワークを示す。
【図２】インプットバッファ及びアウトプットバッファを有する一例示的なブロックチェーンノードを図式的に示す。
【図３】ブロックチェーンネットワーク内のノードの簡略化された例示的なネットワークを示す。
【図４】別の時間における図３のブロックチェーンネットワークを示す。
【図５】一例示的なブロックチェーンネットワークの一部を図式的に示す。
【図６】複数のインリンク及び１つのアウトリンクを有するノードを示す。
【図７】ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な処理をフローチャート形式で示す。
【図８】ブロックチェーンネットワークにおいてトランザクションを伝播するための別の例示的な処理をフローチャート形式で示す。
【図９】一例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【００２０】
本出願において、用語「及び／又は」は、列挙された要素のうち任意の１つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしもさらなる要素を排除することなく、列挙された要素の全ての可能な組み合わせ及び副組み合わせを、カバーすることが意図される。
【００２１】
本出願において、フレーズ「・・・又は・・・のうち少なくとも１つ」は、列挙された要素のうち任意の１つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしも任意のさらなる要素を排除することなく、必ずしも要素の全てを要することなく、列挙された要素のうち任意の１つ以上をカバーすることが意図される。
【００２２】
最初に、図１を参照する。図１は、ブロックチェーンに関連づけられた一例示的なネットワークをブロック図形式で示し、これは、本明細書においてブロックチェーンネットワーク１００と呼ばれ得る。ブロックチェーンネットワーク１００は、ピアツーピアのオープンメンバーシップネットワークであり、これは、招待なく、又は他のメンバーからの同意なく、誰でも参加できる。ブロックチェーンネットワーク１００が動作するブロックチェーンプロトコルのインスタンスを実行する分散電子装置は、ブロックチェーンネットワーク１００に参加することができる。このような分散電子装置は、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコイン（Bitcoin）プロトコル、又は他の暗号通貨であってもよい。
【００２３】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどのウェアラブルコンピュータ、又は他の電子装置などのコンピュータを含む様々なタイプのものであってもよい。
【００２４】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネットを通じて実現され、ノード１０２のいくつかは、地理的に分散された場所に位置してもよい。
【００２５】
ノード１０２は、ブロックにグループ化された、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持し、該ブロックの各々は、チェーン内の前のブロックのハッシュを含む。グローバル台帳は、分散された台帳であり、各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することができる。グローバル台帳に影響するノード１０２によるトランザクションは、他のノード１０２により立証され、それにより、グローバル台帳の正当性が維持される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークの実現及び動作の詳細は、当業者に十分理解されるであろう。
【００２６】
各トランザクションは、１つ以上のインプット及び１つ以上のアウトプットを典型的に有する。インプット及びアウトプットに埋め込まれたスクリプトは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転される先のアドレスであってもよい。この価値は、未使用トランザクションアウトプット（unspent  transaction  output、ＵＴＸＯ）として、そのアウトプットアドレスに関連づけられる。次いで、後続のトランザクションが、インプットとしてそのアドレスを参照して、その価値を消費し、あるいは分散させることができる。
【００２７】
ノード１０２は、その機能性に依存して、異なるタイプ又はカテゴリのものであってもよい。ノード１０２に関連づけられた４つの基本機能、すなわち、ウォレット、マイニング、フルブロックチェーンメンテナンス、及びネットワークルーティングがあることが示唆されている。これらの機能にはバリエーションがあり得る。ノード１０２は、機能のうち２つ以上を有してもよい。例えば、「フルノード」は、４つの機能全てを提供する。例えば、デジタルウォレットで実現され得るような軽量ノードは、ウォレット及びネットワークルーティング機能のみを特徴とする。デジタルウォレットは、フルのブロックチェーンを記憶するのでなく、ブロックヘッダの経過を追うことができる。ブロックヘッダは、ブロックをクエリするときインデックスとして機能する。ノード１０２は、ＴＣＰ／ＩＰ（トランスミッションコントロールプロトコル）などのコネクション指向プロトコルを使用して互いに通信する。
【００２８】
大抵のブロックチェーンネットワークでは、管理プロトコルにかかわらず、新しいトランザクションがネットワークを通して迅速に伝播され、それにより、未確認トランザクションのプール（典型的には「メムプール（mempool）」と呼ばれる）を維持する全てのノードが、新しいブロックに含まれることを待っているトランザクションの最新かつ正確なデータベースを有することを保証することが有利である。マイニングノードは、この未確認トランザクションのプールを利用して、潜在的な新しいブロックを構築する。場合により、マイニングノードは、フルのメムプールをローカルに維持し、それにより、これらは、未確認トランザクションをマイニングのための新しいブロックへ組み立てることができる。いくつかの実施形態において、メムプールは、（バリデータ（validator）ノードと呼ばれ得る）ノードの別個のネットワークにより管理され、維持されてもよく、これらのノードは、未確認トランザクションのセットをメムプールからマイニングノードに送信して、マイニングノードがブロックをマイニングするよう試みることを可能にできる。いくつかの実装において、メムプールは、複数のノード間で分散ハッシュテーブルに記憶されてもよい。構造にかかわらず、任意の新しいトランザクションが、ネットワークを通して伝播されて可能な限りすぐに必要なノードに到達することが望ましい。さらに、任意の新しい成功裏にマイニングされたブロックが、可能な限り速く伝播されてオーファンブロックの発生を削減することが望ましい。
【００２９】
ビットコインネットワークの現在の実装では、一例として、新しいトランザクションを受信した各ノードは、トランザクションを検証し、次いで、該ノードが接続されているノードがこの新しいトランザクションをまだ受信していない場合、これらのノードの全てに該トランザクション送信する。ビットコインの場合、ノードは、ＴＣＰ／ＩＰ（トランスミッションコントロールプロトコル）を使用する。新しいトランザクションを受信したノードは、利用可能な新しいトランザクションに関するデータを有するＩＮＶメッセージを各ピアノードに送信し、新しいトランザクションの受信に関心のある各ノードからＧＥＴＤＡＴＡメッセージを戻りで受信する。次いで、ノードは、それを要求したノードの各々に、（別個の）ＴＣＰメッセージでトランザクションを送信する。
【００３０】
次に、図２を参照する。図２は、インプットバッファ２０２及びアウトプットバッファ２０４を有する一例示的なノード２００を図式的に示す。例示的なノード２００は、ｉｎｔＡ、ｉｎｔＢ、ｉｎｔＣ、ｉｎｔＤ等として参照される複数のピアノードとのネットワークインターフェースを有する。インプットバッファ２０２は、様々なピアノードからの入ってくるトランザクションを示し、アウトプットバッファ２０４は、それぞれのインターフェースを通じてのピアノードへの特定の受信トランザクションの伝送を示す。ネットワークパケットは、ノード２０２のオペレーティングシステムにより提供されるプリミティブに従って、アプリケーションレベルでシリアルに送受信される。トランザクションｘが単一のイーサネット（登録商標）／ＩＰパケットに適合すると仮定すると、ｍ個のピアへのその伝送は、ｍ個の異なるアウトプットパケットのバッファリングを必要とする。インプット及びアウトプット双方のネットワークパケットが、他の情報と共に、シリアライズされたトランザクションと、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェースＩＤとを含む。
【００３１】
入ってくるトランザクションが処理されるための期待時間は、インプットキューの（パケット単位の）平均長Ｌｉに依存し、一方、処理されたトランザクションが正しく伝送されるための期待時間は、アウトプットキューの平均長Ｌｏに依存する。したがって、トランザクションの効率的な中継は、Ｌｉ及びＬｏ双方の値の削減に依存する。しかしながら、ピアへのトランザクションの選択的中継の確率モデルは、Ｌｏに、及び帰納（induction）によりＬｉにも直接影響する。
【００３２】
現在のビットコイン実装において、ＩＮＶ及びＧＥＴＤＡＴＡメッセージパケットは、トランザクションと同じ方法でＩ／Ｏバッファにキューイングされ、伝送及び受信の遅延に深刻な影響を与える。
【００３３】
より大量の高速トランザクションにブロックチェーンを使用する提案がある。例えば、支払いを処理するためにブロックチェーンを使用することが検討されている。支払い処理は、例えば、クレジットカードトランザクションを含んでもよい。このようなトランザクションの量は、ブロックチェーンネットワークの現在の実装に対して圧倒的である。ゆえに、ノード間のトランザクションの送信などの通信を処理するためのブロックチェーンネットワークのキャパシティを改善する方法及び装置を提供することは有利であろう。
【００３４】
本出願の一態様によれば、ブロックチェーンノードは、特定の期間にわたり新しいトランザクションをバッファリングし、次いで、ネットワークコーディングを使用してトランザクションを単一のメッセージに結合し、次いで、該単一のメッセージは、１つ以上の他のブロックチェーンノードに送信される。すなわち、ブロックチェーンノードは、新しいトランザクションをエンコードして、分解可能だが結合されたメッセージを生成する方法で新しいトランザクションを混合したメッセージを生成する。結合されたメッセージは、トランザクションのうち最大のものに小さいオーバーヘッドを加えたサイズを有する。
【００３５】
ブロックチェーンノードがネットワークコーディングを使用する場合、ノードは、ＴＣＰ／ＩＰ  ＩＮＶ及びＧＥＴＤＡＴＡメッセージに依存することをやめてもよく、なぜならば、ノードは、新しいトランザクションのどのサブセットをノードが受信したいかをノードに選別（pick-and-choose）させるのでなく、エンコードされたメッセージの形式で全ての新しいトランザクションを送信するからである。
【００３６】
次に、図３を参照する。図３は、ブロックチェーンネットワーク３００内のノードの簡略化された例示的なネットワークを示す。各ノードはネットワーク端末（すなわちブロックチェーンノード）を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一のビットを送信又は受信することが可能であると仮定される。
【００３７】
ノードのうち２つは、ソースＳ１及びＳ２としてラベル付けされ、これらは、２つの新しいトランザクションｔｘ１及びｔｘ２を受信する。この例示的なブロックチェーンネットワーク３００において、各ノードは未確認トランザクションのメムプールを維持し、ゆえに、ノードが新しいトランザクションを受信したとき、それはネットワークを通して他の全てのノードに伝播される。各ノードは、新しいトランザクションを検証し、そのそれぞれのローカルメムプールに保存し、新しいトランザクションをまだ新しいトランザクションを有していないピアノードに転送する。ブロックチェーンネットワーク３００のピアツーピアの性質に起因して、全てのノードが同時に新しいトランザクションを受信することはなく、このことは、新しいトランザクションがネットワーク３００内の全てのノードに到達するためにいくらかの時間がかかることを意味する。例えば、ビットコインネットワークの現在の実装において、新しい有効なトランザクションは、ビットコインネットワークの９０％のノードに到達するのに平均３．５秒かかる。理論的には、トランザクションの伝送が即時である、例えば、ネットワークの全てのノードに到達するのにｔ＝０である場合、ネットワークは、二重消費（double  spending）攻撃の可能性から保護される。ゆえに、ブロックチェーンネットワークのスループットを改善することは、システム全体のスケーラビリティ及び信頼性を可能にするための重要な要素である。
【００３８】
ブロックチェーンネットワーク３００のノードのうち２つは、受信者Ｒ１及びＲ２としてラベル付けされる。ノードＩ１及びＩ２は中間ノードを表し、これらは、メムプールのコピーを記憶してもよく、あるいはそうでなくてもよいが、より有意には、時間Ｔにおけるネットワーク３００のボトルネックを表す。ノードＩ１が、２つの新しいトランザクションＴｘ１及びＴｘ２をほぼ同時に受信したとき、ノードＩ１は、どのトランザクションを最初に送信するかを決定しなければならない。すなわち、Ｉ１からＩ２への出ていくエッジは、少なくとも時間Ｔにおいてボトルネックである。
【００３９】
ネットワークコーディングを使用し、ノードＩ１は、新しいトランザクションＴｘ１及びＴｘ２を、Ｔｘ１とＴｘ２とのうちより大きいものと同じサイズである合成メッセージＭへ結合することができる。ノードＩ１は、メッセージＭをノードＩ２に送信し、ノードＩ２は、メッセージＭを受信者Ｒ１及びＲ２に転送する。受信者Ｒ１及びＲ２は、個々のトランザクションＴｘ１及びＴｘ２を復元することができる。例えば、受信者Ｒ１は、Ｔｘ１及びＭを受信する。Ｍは、Ｔｘ１及びＴｘ２の結合に基づくため、Ｒ１は、Ｔｘ２を引き出すために式（Ｔｘ１，Ｔｘ１＋Ｔｘ２）を解くだけでよい。反対に、Ｒ２はＴｘ２を受信し、Ｔｘ１を引き出すために式（Ｔｘ２，Ｔｘ１＋Ｔｘ２）を解く必要がある。
【００４０】
ボトルネックは、ネットワークの構成と、トランザクションが任意の所与の時間にどこに生成されるかとに依存して、ある時間にわたり現れ、あるいは消える可能性がある。ボトルネックは、ノード間のリンク（エッジ）であり、これは、ネットワークの性能を大きく制限し、具体的にブロックチェーンネットワークの場合、トランザクション（又はブロック）の伝送を遅くする。しかしながら、ボトルネック（ノード間のリンク）のソースはノードである。
【００４１】
次に、図４を参照する。図４は、時間Ｔ’における同じブロックチェーンネットワーク３００を示す。この例では、トランザクションＴｘ１がノードＲ１で受信され、トランザクションＴｘ３がノードＩ２で受信される。この場合、ノードＩ１に再度ボトルネックがあるが、今回は、ノードＩ１とノードＳ１との間のリンクに関してであり、ノードＩ１におけるＴｘ２及びＴｘ３双方の同時の到着に起因する。ノードＩ１は、ネットワークコーディングを使用し、Ｔｘ２及びＴｘ３をメッセージＭ’へ結合することができる。
【００４２】
１つの選択肢は、あらゆるノードに、全ての状況においてネットワークコーディングを適用させることである。しかしながら、その時間にそれが有利であると期待され得る特定のノードでネットワークコーディングを選択的に適用することにより、性能をさらに改善することが可能であり得る。一例として、ノードが、それが任意の所与の時点でボトルネックを表すかどうかを決定することができる場合、そのノードは、メッセージの伝送にネットワークコーディングを選択的又は適応的に適用してもよく、一方、それがボトルネックでない場合、それはトランザクションの通常の伝送を使用してもよい。
【００４３】
したがって、ノードは、それが所与の時点においてボトルネックの可能性があるかどうかを査定又は決定するように構成されてもよい。ある意味では、これは、インリンクとアウトリンクとの間のバランスに基づいて決定されてもよい。すなわち、所与の時点において、ノードは、１つ以上のリンク上でトランザクションを受信することがあり、これらのトランザクションを１つ以上のリンク上で外部へ送信することを意図し得る。ノード間の接続（すなわち、エッジ）は、ネットワーク内のトラフィックのフローに依存して、任意の所与の時点においてインリンク又はアウトリンクとして機能することができる。いくつかの場合、インリンクの数は「ファンイン（fan-in）」と呼ばれることがあり、アウトリンクの数は「ファンアウト（fan-out）」と呼ばれることがある。
【００４４】
一実装において、ブロックチェーンネットワーク内のノードの少なくともいくつかは、最初の近隣ノード（first-neighbour  nodes）へのファンイン及びファンアウトリンクの相対数を追跡するテーブル又は他のデータ構造を維持する。図５は、一例示的なネットワークの一部を図式的に示しており、第１のノードＩ１及び第２のノードＩ２は各々、任意の所与の時間にそのノードのファンイン及びファンアウト数量を識別するテーブル又は他のデータ構造をローカルに記憶する。ノードは、相対的なファンイン及びファンアウトの数に基づいて、それがボトルネックの可能性があるか否かを決定することができる。一般に、決定は、インリンクの数（ファンイン）がアウトリンクの数（ファンアウト）を超えているかどうかに基づくことができ、その場合、ノードは、その時間にボトルネックであり得る。
【００４５】
一例示的な実装において、ノードがボトルネックであるかどうかの評価は、期間ΔＴにわたる。テーブル中の数量は、期間ΔＴにわたる平均のファンイン及びファンアウトであってもよい。
【００４６】
また、決定は、いくつかの実装において、ネットワークトポロジの認識に部分的に基づいてもよい。例えば、少なくともいくつかの場合に、末梢（peripheral）ノードであるノードはボトルネックである可能性は低く、一方、中間ノードであるノードはボトルネックである可能性がより高い。
【００４７】
さらに他の実装において、ノードがボトルネックであるかどうかの決定は、アウトプットキューのステータス、又はある時間にわたるアウトプットキュー内のバックログの評価に基づいてもよい。
【００４８】
ボトルネックの決定又は識別は、いくつかの実装において、上記要因の組み合わせ又は副組み合わせを含むことができる。
【００４９】
ネットワークコーディングは、当時の支配的なパケット交換ネットワークに対する一代替として、２０年弱前に開発された。ネットワークコーディングは、ネットワークをリンクキャパシティを有する有向グラフ（Ｎ，Ｌ）としてモデル化し、ノードｎ∈Ｎがブロードキャストキャパシティｈを達成するレートで受信者Ｒ⊆Ｎのセットに情報を通信できることを実証し、ｈは、ネットワークの内部ノードにおけるエンコーディングを条件として、ｓと任意のｒ∈Ｒとの間の最小カットの値である。
【００５０】
カットＣは、グラフＧ＝（Ｖ，Ｅ）の頂点Ｖの、２つの分離したサブセットＳ及びＴへの分割として定義される。カットＣ＝（Ｓ，Ｔ）のカットセットは、一方の端点をＳに、及び他方の端点をＴに有するエッジのセット｛（ｕ，ｖ）∈Ｅ｜ｕ∈Ｓ，ｖ∈Ｔ｝である。
【００５１】
ネットワークコーディングのための一例示的な方法論が、P.A.Chou、Y.Wu、及びK.Jainの「Practical  Network  Coding」により、Proceedings  of  the  annual  Allerton  conference  on  communication  control  and  computing、v.41、pp.40-49、The  University  (2003)（以降「Ｃｈｏｕ」）に記載されており、これはここで参照により援用される。この方法論は、ネットワークトポロジ又はエンコーディング若しくはデコーディング機能のいかなる中央集権的な知識についてもその必要を取り除いた。Ｃｈｏｕは、ネットワークＮが、単位キャパシティエッジ（ｅ）、送信者ｓ∈Ｖ、及び特定数の受信者Ｔ⊆Ｅを有する非巡回グラフＧ＝（Ｖ，Ｅ）として表現できると述べている。ノードの各エッジｅ∈Ｅのアウトプットｖ＝ｉｎ（ｅ）は、シンボルｙ（ｅ）を有し、シンボルｙ（ｅ）は、ｖに入るエッジｅ’上のシンボルｙ（ｅ’）の線形結合である。図６は、ノードｖ及びアウトプットｙ（ｅ）を示す。詳細には、アウトプットは、
【数１】
2020522922.tif 000003
により与えられる。ここで、ｙ（ｅ’ｉ）＝ｘｉ、ｉ＝１，．．．，ｈであり、ベクトルｍｅは、エッジｅについてのノードｖにおけるエンコーディング機能を表すローカルエンコーディングベクトルであり、ｈは、ブロードキャストキャパシティを、送信者と受信者との間の任意のカットにおけるエッジの最小数として示す。
【００５２】
Ｃｈｏｕは、任意のエッジｅ∈Ｅ上のアウトプットｙ（ｅ）は、ソースシンボルの線形結合
【数２】
2020522922.tif 000004
であり、係数のｈ次元ベクトルｇ（ｅ）＝［ｇ１（ｅ），．．．，ｇｈ（ｅ）］は、
【数３】
2020522922.tif 000005
により再帰的に取得できると述べており、ここで、エッジｅ’ｉ上のｇ（ｅ’ｉ）は、ｉ番目の単位ベクトルに対して開始される（initiated）。ベクトルｇ（ｅ）は、ｅに沿ったグローバルエンコーディングベクトルと呼ばれてもよい。そのｈ個の入ってくるエッジに沿ってシンボル
【数４】
2020522922.tif 000006
を受信する任意のノードｔは、グローバルエンコーディングベクトルの行列Ｇｔがランクｈを有する場合、ソースシンボルｘ１，．．．，ｘｈを復元することができる。この上記例では、ブロックチェーントランザクションにネットワークコーディングを適用されたとき、トランザクションは、アレイ［ｘ１，．．．，ｘｈ］に記憶される。Ｃｈｏｕではさらなる詳細が見出されている。
【００５３】
出ていくエッジｅのグローバルエンコーディングベクトルは、入ってくるエッジｅ’のグローバルエンコーディングベクトルのローカルエンコーディングに基づくものとして特徴付けられてもよい。
【００５４】
ネットワークコーディングは、ネットワークを通してトランザクションを伝播させるために使用され得ることが理解されるであろう。それはさらに、未確認トランザクションの分散ハッシュテーブルを実現するように設計されたオーバレイネットワーク内で使用されてもよく、これにおいて、各トランザクションは少なくとも２つのノードにより記憶されて、分散ハッシュテーブル内の冗長性を保証する。この場合、ネットワークコーディングは、トランザクションを記憶のために２つ以上のノードに送信する際に使用されてもよい。しかしながら、ネットワークコーディングの使用は、トランザクションを記憶する２つ以上のノードの損失から回復することができるというさらなる利点を提供し得る。中間ノードが、トランザクションに関する結合されたデータを含む１つ以上のメッセージを受信しているため、欠落したトランザクションは、ネットワークコーディングメッセージから復元され得る。
【００５５】
次に、図７を参照する。図７は、ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な処理７００をフローチャート形式で示す。処理７００は、ブロックチェーンネットワークのノードにより実現される。この文脈において、ノードは、マイニングノード、フルノード、バリデータノード、又はブロックチェーンネットワーク内の他タイプの個別のブロックチェーンノードを参照するものと理解されてもよい。ノードは、ネットワーク接続と、コンピューティングリソースと、ブロックチェーンプロトコルを実現する実行ソフトウェアとを有するコンピューティング装置である。
【００５６】
動作７０２において、ノードは、それが時間Ｔにおいてネットワークにおける潜在的なボトルネックであると決定する。この決定は、上述したように、時間Ｔにおけるファンイン及びファンアウトの比較に基づいてもよい。例えば、ファンインが時間Ｔにおいてファンアウトを超えている場合、ノードはそれがボトルネックであると決定することができる。ノードがボトルネックであるかどうかを決定する際に、他の要因が代替的又は追加的に考慮されてもよい。例としては、ある期間にわたる平均のファンイン及びファンアウト、ネットワークトポロジ内のノード位置、ノードのアウトプットキューの現在若しくは過去のステータス、又は受信トランザクションを伝播するためのノードキャパシティに関する任意の他の要因が含まれる。
【００５７】
動作７０４において、ノードは、それがボトルネックであると決定すると、期間ΔＴにわたりトランザクションを蓄積する。期間は、所定の時間長であってもよい。いくつかの例示的な実装において、期間は、ネットワークトラフィック測定、地理的情報、又は双方に基づいて変化してもよい。期間が固定された時間ではなく、むしろ、最小数のトランザクションが受信されるまでトランザクションの蓄積が発生してもよく、これは、蓄積されたトランザクションが過度に長く保持されないように最大時間をさらに課されてもよい。
【００５８】
動作７０６において、ノードが蓄積した複数のトランザクションは、ネットワークコーディングを使用して単一のメッセージに結合される。メッセージは、いくつか実装において、トランザクションのうち最長のものと同様に長い長さを有してもよい。メッセージは、いくつかの実装において、トランザクションのうち最長のものより長くない（ビット単位の）長さを有してもよい。メッセージは、ローカルエンコーディングベクトル及びネットワークコーディングアルゴリズムを使用して生成される。
【００５９】
動作７０８において、ノードは、次いで、メッセージ及びグローバルエンコーディングベクトルを１つ以上のノードに送信する。メッセージは、実際のトランザクションを送信する代わりに送信される。すなわち、ノードは、複数の蓄積されたトランザクションを送信せず、その代わりに、メッセージ及びグローバルエンコーディングベクトルを全てのそのアウトリンク上のピアノードに送信する。
【００６０】
次に、図８を参照する。図８は、ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な方法８００をフローチャート形式で示す。上述のように、方法８００は、複数のインリンク及びアウトリンクを有するブロックチェーンノードで実現されてもよい。
【００６１】
動作８０２において、ブロックチェーンノードは、トランザクションを受信する。受信トランザクションは、インリンクを介して受信される。ブロックチェーンは、プロトコル要件に対してトランザクションを検証して、トランザクションが適法であることを保証することができる。動作８０４において、ノードは、それがトランザクションに関するボトルネックであるかどうかを決定することができる。決定は、その時間におけるインリンク（ファンイン）及びアウトリンク（ファンアウト）の間のバランスの評価に基づいてもよい。決定は、上述のように、他の要因に基づいてもよい。
【００６２】
ノードが、それがボトルネックでないと決定した場合、動作８０６において、それは、通常通り、そのアウトリンク上のブロックチェーンネットワーク内の１つ以上のピアノードにトランザクションを転送する。しかしながら、ノードが、それがボトルネックの可能性があると決定した場合、動作８０７において、ノードは、トランザクションをメモリに（例えば、バッファ又は他のメモリ要素に）記憶する。
【００６３】
次いで、ノードは、動作８０８により示されるように、トランザクションを引き続き受信し、それが停止条件が満たされたと決定するまで該トランザクションを記憶する。この例において、停止条件は、継続時間ΔＴが経過したことである。継続時間は、例えば、ノードがボトルネックであるという決定から、又は動作８０２における最初のトランザクションの受信から続いてもよい。継続時間の代わりに、他の条件が使用されてもよく、例えば、メモリにおける最大数のトランザクションの蓄積、又はこのような要素の任意の組み合わせである。
【００６４】
ひとたび停止条件が満たされると、例えば、この場合ではΔＴが経過すると、ノードは、次いで、動作８１２により示されるように、ネットワークコーディング及びローカルエンコーディングベクトルを使用して、記憶されたトランザクションからメッセージＭを構築する。動作８１４において、ノードは、次いで、このメッセージ及びグローバルエンコーディングベクトルを、全てのそのアウトリンクを通じて他のノードに送信する。
【００６５】
次に、図９を参照する。図９は、参加ノード９００の簡略化された例をブロック図形式で示す。ノード９００は、プロセッサ９０２を含み、プロセッサ９０２は、１つ以上のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでもよい。ノード９００は、値、変数、及びいくつかの例ではプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ９０４と、有線又は無線ネットワークを通じてのネットワーク接続性を提供するネットワークインターフェース９０６とをさらに含む。
【００６６】
ノード９００は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション９０８を含み、該命令は実行されたときに、プロセッサ９０２に本明細書に記載の機能又は動作の１つ以上を実行させる。
【００６７】
本明細書に記載された装置及び処理、並びにブロックチェーンノードを構成するための記載された方法／処理を実現する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング手法及び言語を用いて実現され得ることが理解されよう。本出願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造、又は他のこのような実装詳細に限定されない。
【００６８】
上述の実施形態は、本発明を限定するものでなく例示するものであり、当業者は、別記の特許請求の範囲により定義される本発明の範囲から逸脱することなく多くの代替的な実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に付したいかなる参照符号も、特許請求の範囲を限定するものと解釈してはならない。単語「含む」及び「含んでいる」などは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含み、あるいは〜から成る」を意味し、「含んでいる」は、「含んでおり、あるいは〜から成っている」ことを意味する。要素の単数形の参照は、このような要素の複数形の参照を除外するものでなく、その逆もまた同様である。本発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を挙げる装置の請求項において、これらの手段のいくつかは、１つの、及び同じアイテムのハードウェアにより具体化されてもよい。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組み合わせが利益をもたらすように使用できないことを示すわけではない。
【図１】
2020522922.tif 000007
【図２】
2020522922.tif 000008
【図３】
2020522922.tif 000009
【図４】
2020522922.tif 000010
【図５】
2020522922.tif 000011
【図６】
2020522922.tif 000012
【図７】
2020522922.tif 000013
【図８】
2020522922.tif 000014
【図９】
2020522922.tif 000015
【国際調査報告】
2020522922.tif 000016
2020522922.tif 000017