(57)【要約】  ノードのネットワークにおいてトランザクションを伝播するための方法及び装置を提供する。各ノードは他のノードへの１つ又は複数の接続を有している。この方法は、ある期間に亘って複数の着信トランザクションを受信するステップと；ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成するステップと；複合メッセージをネットワーク内の１つ又は複数のノードに送信するステップと；平衡定数パラメータと、期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと；を含む。
2020526959.tif 000002
【特許請求の範囲】
【請求項１】
ノードのネットワークにおいてトランザクションを伝播するノードであって、各ノードは他のノードへの１つ又は複数の接続を有しており、当該ノードは、
プロセッサと、
メモリと、
ネットワーク・インターフェイスと、
プロセッサ実行可能命令を含むアプリケーションと、を含んでおり、
前記命令が前記プロセッサによって実行されると、該プロセッサに、
ある期間に亘って複数の着信トランザクションを受信すること、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成すること、
該複合メッセージを前記ネットワーク内の１つ又は複数のノードに送信すること、及び
平衡定数パラメータと、前記期間に亘って受信した前記複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定すること、を実行させる、
ノード。
【請求項２】
前記命令は、実行されると、前記プロセッサに、前記調整期間を使用して前記受信、結合、及び送信する動作を繰り返し反復すること、及び後続の反復で使用するために、各反復後に、更なる調整期間を決定すること、をさらに行わせる、請求項１に記載のノード。
【請求項３】
前記命令は、実行されると、前記プロセッサに、前記平衡定数パラメータを前記トランザクション数で除算した値に基づいて前記調整期間を決定することにより、前記調整期間を決定することを行わせる、請求項１又は２に記載のノード。
【請求項４】
前記調整期間を決定することは、前記調整期間を下回ることができない最小期間と、前記調整期間を上回ることができない最大期間とに依存する、請求項３に記載のノード。
【請求項５】
前記命令は、実行されると、前記プロセッサに、複数の調整期間に基づいて平均期間を決定すること、及び該平均期間をメモリに記憶することをさらに行わせる、請求項１乃至４のいずれか一項に記載のノード。
【請求項６】
前記命令は、実行されると、前記プロセッサに、前記ノードのネットワーク内の１つ又は複数の隣接ノードに前記平均期間を送信することをさらに行わせる、請求項５に記載のノード。
【請求項７】
前記命令は、実行されると、前記プロセッサに、前記ノードのうちの１つのノードへの１つ又は複数のリンクに関する１つ又は複数のスループット推定値に基づいて、前記平衡定数パラメータを初期化することをさらに行わせる、請求項１乃至６のいずれか一項に記載のノード。
【請求項８】
前記命令は、実行されると、前記プロセッサに、推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化することをさらに行わせる、請求項１乃至６のいずれか一項に記載のノード。
【請求項９】
前記命令は、実行されると、前記プロセッサに、前記期間内に受信した前記トランザクション数がネットワーク・コーディングを使用するための最小数を超えると決定することをさらに行わせ、前記結合及び送信する動作は、その決定を条件とする、請求項１乃至８のいずれか一項に記載のノード。
【請求項１０】
ノードのネットワークにおいてトランザクションを伝播するコンピュータで実施する方法であって、各ノードは他のノードへの１つ又は複数の接続を有しており、当該方法は、前記ノードのうちの１つのノードで実施され、
ある期間に亘って複数の着信トランザクションを受信するステップと、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成するステップと、
該複合メッセージを前記ネットワーク内の１つ又は複数のノードに送信するステップと、
平衡定数パラメータと、前記期間に亘って受信した前記複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと、を含む、
方法。
【請求項１１】
前記調整期間を使用して前記受信、結合、及び送信する動作を繰り返し反復するステップと、後続の反復で使用するために、各反復後に、更なる調整期間を決定するステップと、をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記調整期間を決定するステップは、前記平衡定数パラメータを前記トランザクション数で除算した値に基づいて前記調整期間を決定するステップを含む、請求項１０に記載の方法。
【請求項１３】
前記調整期間を決定するステップは、前記調整期間を下回ることができない最小期間と、前記調整期間を上回ることができない最大期間とに依存する、請求項１２に記載の方法。
【請求項１４】
複数の調整期間に基づいて平均期間を決定するステップと、前記ノードのうちの１つのノードのメモリに前記平均期間を記憶させるステップと、をさらに含む、請求項１０に記載の方法。
【請求項１５】
前記ノードのネットワーク内の１つ又は複数の隣接ノードに前記平均期間を送信するステップをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記ノードのうちの１つのノードへの１つ又は複数のリンクに関する１つ又は複数のスループット推定値に基づいて、前記平衡定数パラメータを初期化するステップをさらに含む、請求項１０に記載の方法。
【請求項１７】
推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化するステップをさらに含む、請求項１０に記載の方法。
【請求項１８】
前記期間内に受信した前記トランザクション数がネットワーク・コーディングを使用するための最小数を超えていると決定するステップをさらに含み、前記結合及び送信するステップは、その決定を条件とする、請求項１０に記載の方法。
【請求項１９】
複数の参加ノードの間のトランザクションに参加するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ可読媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの１つのノードのプロセッサによって実行されると、該プロセッサに請求項１０乃至１８のいずれか一項に記載の方法を実行させる、非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ネットワークにおけるトランザクションの伝播に関し、より具体的には、トランザクションの処理速度を向上させる方法及び装置に関する。
【０００２】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、コンセンサス（合意）ベースのブロックチェーン及びトランザクションチェーン技術、許可された台帳及び許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的で、ビットコインについて参照し得るが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルも、本発明の範囲内に含まれることに留意されたい。
【背景技術】
【０００３】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクションで構成される。各トランザクション（Ｔｘ）は、ブロックチェーンシステムの参加者同士の間でのデジタル資産の制御（control：管理）の転送（transfer：移転）をエンコードするデータ構造であり、各トランザクションには、少なくとも１つの入力と少なくとも１つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成するために一緒にチェーンで繋がれている。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトは、スタックベースのスクリプト言語を使用して記述される。
【０００４】
新しいトランザクションを受信したネットワークノードは、そのトランザクションをネットワーク内の他のノードに素早く押し出すように試みる。新しいトランザクションを他のノードに送信する前に、そのトランザクションは「検証」される。つまり、検証とは、そのトランザクションが一組の基準に対してチェックされ、トランザクションが、該当するブロックチェーン・プロトコルに従って、適切なトランザクションの基本要件を満たしていることを確認することを意味する。
【０００５】
トランザクションをブロックチェーンに書き込むために、トランザクションを収集して収集したトランザクションをブロックに形成するように設計されたノード（「マイナー（miners：採掘者）」又は「マイニングノード」）によってそのトランザクションはブロックに組み込まれる。次に、マイナーはノードに関して「プルーフ・オブ・ワーク（proof  of  work：作業証明）」を完了しようとする。ブロックチェーン・ネットワーク全体の複数のマイナーは、競争して、最初にトランザクションのブロックを組み立て、そのブロックに関連する作業証明を完了する。成功したマイナーは、その確認したブロックをブロックチェーンに追加し、このブロックはネットワークを介して伝播され、それによってブロックチェーンのコピーを保持する他のノードがレコードを更新できる。ブロックを受信するそれらノードは、そのブロックとその中の全てのトランザクションを「検証」して、それがプロトコルの正式な要件に準拠していることを確認する。
【０００６】
ビットコインのようなブロックチェーンベースのネットワークを使用して、広く暗号化によって安全が確保された交換の使用を有効化又は促進することは有益である。このような交換は、例えば、クレジットカード取引等の支払い処理に関連し得る。しかしながら、１秒あたり約３のトランザクション・スループットは、現在１秒あたり約５０,０００のトランザクション量で動作しているこのような電子決済を処理するには不十分である。ブロックチェーン・ネットワークの速度に関連する１つのボトルネックは、トランザクションの伝播である。トランザクションを受信する各ノードは、トランザクションを検証してからその検証したトランザクションをピアノードに送信する。実際に、ビットコイン・プロトコルでは、ノードは、トランザクションのリストを含むＩＮＶメッセージをピアノードに送信し、ＩＮＶメッセージで通知されたトランザクションのいくつかのサブセットを選択するＧＥＴＤＡＴＡ応答メッセージを受信する。次に、ノードは、要求されたトランザクションをピアノードに送信する。このプロセスは、ノードが接続されている各ピアノードに対して実行される。
【０００７】
従って、ブロックチェーンの能力を現在制限している速度及びスケーラビリティの制約に対する解決策を見つけて、トランザクションの伝播速度を向上させることにより、大量のトランザクションを処理することが望ましいだろう。ブロックチェーン又は他のアプリケーションに関係なく、ノードのネットワークにおけるトランザクションの伝播により一般的に適用可能な解決策を見つけることが望ましいだろう。
【発明の概要】
【０００８】
そのような解決策が現在案出されている。
【０００９】
こうして、本発明によれば、添付の特許請求の範囲に規定される方法及び装置が提供される。
【００１０】
本願は、トランザクション（Ｔｘ）の高速伝播を可能にする方法及び装置を説明及び開示する。いくつかの例では、ノードは、ネットワーク・コーディングの使用を選択的に有効にして、トランザクションをピアノードに送信するための単一のメッセージに結合する。ネットワーク・コーディングの選択的な使用は、ノードが潜在的なボトルネックであるとの判定に基づく場合がある。解決策は、いくつかの実施態様ではブロックチェーン・ネットワークのコンテキストで適用できる。
【００１１】
追加又は代替の態様では、本願は、各ノードが他のノードへの１つ又は複数の接続を有するノードのネットワークにおいてトランザクションを伝播するためのコンピュータで実施する方法を説明している。ノードのうちの１つのノードで実施されるこの方法は、ノードのうちの１つのノードがトランザクションの伝播のボトルネックであると判定するステップと；ノードのネットワーク内の１つ又は複数の第１のノードから複数の新しいトランザクションを第１の期間に亘って受信するステップと；ネットワーク・コーディング及びローカル・エンコーディング・ベクトルを使用して複数の新しいトランザクションを結合して、メッセージを生成するステップと；複数の新しいトランザクションを１つ又は複数の第２のノードに送信する代わりに、メッセージ及びグローバル・エンコーディング・ベクトルをノードのネットワーク内の１つ又は複数の第２のノードに送信するステップと；を含む。
【００１２】
追加又は代替の態様では、本願は、プロセッサ、メモリ、ネットワーク・インターフェイス、及びプロセッサによって実行されると本明細書に記載の方法の１つ又は複数を実行する命令を含むアプリケーションを含むノードについて説明する。
【００１３】
いくつかの実施態様では、方法又はノードは、ノードへのインリンク（in-link）の数とノードからのアウトリンク（out-link）の数とを評価することにより、ノードがボトルネックであると判定し、インリンクの数がアウトリンクの数を超える場合に、ノードがボトルネックであると判定する。評価は、複数の新しいトランザクションのうちの第１のトランザクションの受信時に行ってもよい。別の実施態様では、評価は、インリンクのカウント及びアウトリンクのカウントを経時的に追跡することにより行われ得、インリンクの数は平均であり、アウトリンクの数も平均である。いくつかの例示的な実施態様では、ノードは、複数の新しいトランザクションのうちの第１のトランザクションの受信に応じて、そのノードがボトルネックであるという判定を開始する。
【００１４】
いくつかの実施態様では、停止条件が満たされたと判定されたことに応答して、結合及び送信するステップが実行される。一例では、停止条件は、複数の新しいトランザクションのうちの第１のトランザクションの受信又は複数のノードのうちの１つのノードがボトルネックであるという判定のいずれかからの期間の終了となる。別の例では、停止条件は、複数の新しいトランザクションが新しいトランザクションの最大数に達したことである。
【００１５】
いくつかの実施態様では、メッセージの長さは、複数の新しいトランザクションの中で最長のトランザクションより長くはない。
【００１６】
追加の又は代替の態様では、本願は、ノードのネットワークにおいてトランザクションを伝播するノードについて説明しており、各ノードは他のノードへの１つ又は複数の接続を有する。ノードは、プロセッサと；メモリと；ネットワーク・インターフェイスと；プロセッサ実行可能命令を含むアプリケーションと；を含む。命令は、プロセッサによって実行されると、プロセッサに、ある期間に亘って複数の着信トランザクションを受信すること；ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成すること；複合メッセージをネットワーク内の１つ又は複数のノードに送信すること；平衡定数パラメータと、その期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定すること；を実行させる。
【００１７】
更なる追加又は代替の態様では、本願は、ノードのネットワークにおいてトランザクションを伝播するコンピュータで実施する方法を説明しており、各ノードが他のノードへの１つ又は複数の接続を有する。ノードのうちの１つのノードで実施される方法は、ある期間に亘って複数の着信トランザクションを受信するステップと；ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成するステップと；複合メッセージをネットワーク内の１つ又は複数のノードに送信するステップと；平衡定数パラメータと、その期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと；を含む。
【００１８】
いくつかの実施態様では、調整期間を使用して受信、結合、送信動作を繰り返し反復するステップと、後続の反復で使用するために、各反復後に更なる調整期間を決定するステップと、を含む。
【００１９】
いくつかの実施態様では、調整期間を決定するステップは、平衡定数パラメータをトランザクション数で除算した値に基づいて調整期間を決定するステップを含む。場合によっては、調整期間を決定するステップは、調整期間を下回ってはならない最小期間と、調整期間を上回ってはならない最大期間とに依存する。
【００２０】
いくつかの実施態様は、複数の調整期間に基づいて平均期間を決定するステップと、ノードのうちの１つのノードのメモリに平均期間を記憶させるステップとを含む。場合によっては、ノードのネットワーク内の１つ又は複数の隣接ノードに平均期間が送信される。
【００２１】
いくつかの実施態様は、ノードのうちの１つのノードへの１つ又は複数のリンクに関する１つ又は複数のスループット推定値に基づいて、平衡定数パラメータを初期化するステップを含む。さらに他の実施態様は、推定初期期間及び推定初期トランザクション数に基づいて、平衡定数パラメータを初期化するステップを含み得る。
【００２２】
いくつかの実施態様は、期間内に受信したトランザクション数がネットワーク・コーディングを使用するための最小数を超えていると決定するステップを含み、結合及び送信するステップはその決定を条件とする。
【００２３】
追加又は代替の態様では、本願は、ノードのネットワーク内でトランザクションを伝播するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ可読媒体について説明しており、プロセッサ実行可能命令は、ノードのうちの１つのノードのプロセッサによって実行されたときに、プロセッサに、本明細書で説明する方法の１つ又は複数を実行させる。
【００２４】
本明細書で説明する実施例の多くでは、ブロックチェーン・トランザクションを具体的に参照している。しかしながら、本明細書で説明する方法及び装置は、非ブロックチェーン・トランザクション伝播に関連して実施及び適用し得ることが理解されよう。
【図面の簡単な説明】
【００２５】
本発明のこれら及び他の態様は、本明細書に記載の実施形態を参照して説明され、この実施形態から明らかになろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
【図１】ブロックチェーンに関連する例示的なネットワークを示す図である。
【図２】入力バッファ及び出力バッファを有する例示的なノードを図式的に示す図である。
【図３】ネットワーク内のノードの簡略化した例示的なネットワークを示す図である。
【図４】別の時点での図３のネットワークを示す図である。
【図５】例示的なネットワークの一部を図式的に示す図である。
【図６】複数のインリンク及び１つのアウトリンクを有するノードを示す図である。
【図７】ノードのネットワークにおいてトランザクションを伝播する例示的なプロセスをフローチャート形式で示す図である。
【図８】ノードのネットワークにおいてトランザクションを伝播する別の例示的なプロセスをフローチャート形式で示す図である。
【図９】トランザクションを伝播するためのノードのネットワークの例を示す図である。
【図１０】調整可能な期間を含むネットワーク・コーディングを使用してトランザクションを伝播する例示的な方法をフローチャート形式で示す図である。
【図１１】調整可能な期間を含むネットワーク・コーディングを使用してトランザクションを選択的に伝播する例示的な方法をフローチャート形式で示す図である。
【図１２】例示的なブロックチェーン・ノードをブロック図形式で示す図である。
【発明を実施するための形態】
【００２６】
本願において、「及び／又は」という用語は、列挙された要素の全ての可能な組合せ及びサブコンビネーションを網羅することを意図しており、列挙された要素のいずれか１つのみ、サブコンビネーション、又は全ての要素を含み、必ずしも追加の要素を除外するものではない。
【００２７】
本願において、「・・・又は・・・の少なくとも１つ」という句は、列挙された要素のいずれか１つ又は複数を網羅することを意図しており、列挙された要素のいずれか１つのみ、サブコンビネーション、又は全ての要素を含み、必ずしも追加要素を除外せず、必ずしも全ての要素を必要とするものではない。
【００２８】
最初に、本明細書でブロックチェーン・ネットワーク１００と呼ばれ得るブロックチェーンに関連する例示的なネットワークをブロック図形式で示す図１を参照する。ブロックチェーン・ネットワーク１００は、招待や他のメンバーの同意なしに、誰でも加入できるピアツーピア・オープンメンバーシップ・ネットワークである。ブロックチェーン・ネットワーク１００が動作するブロックチェーン・プロトコルのインスタンスを実行する分散電子装置は、ブロックチェーン・ネットワーク１００に参加することができる。そのような分散電子装置は、ノード１０２と呼ばれ得る。ブロックチェーン・プロトコルは、例えばビットコイン・プロトコル、又は他の暗号通貨であり得る。
【００２９】
ブロックチェーン・プロトコルを実行し、且つブロックチェーン・ネットワーク１００のノード１０２を形成する電子装置は、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブル・コンピュータ、又は他の電子装置等のコンピュータを含む様々なタイプのものであってよい。
【００３０】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合に、ブロックチェーン・ネットワーク１００は、少なくとも部分的にインターネットを介して実施され、いくつかのノード１０２は、地理的に分散した位置に配置され得る。
【００３１】
ノード１０２は、ブロックにグループ化された全てのトランザクションのグローバル台帳をブロックチェーン上に維持し、各ブロックは以前のブロックのハッシュをチェーン内に含む。グローバル台帳は分散型台帳であり、各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを保存し得る。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２によって検証され、それによってグローバル台帳の有効性が維持される。ビットコイン・プロトコルを使用するもの等のブロックチェーン・ネットワークの実装及び動作の詳細は、当業者には理解されよう。
【００３２】
典型的には、各トランザクションには１つ又は複数の入力（inputs）と１つ又は複数の出力（outputs）がある。入力及び出力に埋め込まれたスクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。トランザクションの出力は、トランザクションの結果として値が転送されるアドレスであり得る。その値は、未使用のトランザクション出力（ＵＴＸＯ）としてその出力アドレスに関連付けられる。後続のトランザクションは、その値を使用又は分散するために、そのアドレスを入力として参照し得る。
【００３３】
ノード１０２は、それらの機能に応じて、異なるタイプ又はカテゴリのものであり得る。ノード１０２には、ノード１０２に関連するウォレット、マイニング、完全なブロックチェーン・メンテナンス、ネットワーク・ルーティングの４つの基本機能があることが示唆される。これらの機能にはバリエーションがあり得る。ノード１０２は、複数の機能を有し得る。例えば、「フルノード」は４つの機能全てを提供する。例えば、デジタルウォレットで実施され得る軽量ノードは、ウォレットとネットワーク・ルーティング機能のみを備え得る。デジタルウォレットは、ブロックチェーン全体を保存するのではなく、ブロックヘッダーを追跡し続けることができ、ブロックヘッダーは、ブロックのクエリ時にインデックスとして機能する。ノード１０２は、ＴＣＰ／ＩＰ（伝送制御プロトコル）等の接続指向プロトコルを使用して互いに通信する。
【００３４】
殆どのブロックチェーン・ネットワークでは、管理プロトコルに関係なく、未確認のトランザクションのプール（典型的に「メモリプール（mempool）」と呼ばれる）を維持する全てのノードが新しいブロックに含まれるのを待っているトランザクションの今までの正確なデータベースを有するように、新しいトランザクションがネットワークを介して素早く伝播するのを確実にするのが有利である。マイニングノードは、この未確認のトランザクションのプールを利用して、潜在的な新しいブロックを構築する。場合によっては、マイニングノードは、マイニングのために未確認のトランザクションを新しいブロックにアセンブルできるように、完全なメモリプールをローカルに維持する。いくつかの実施形態では、ノードの別個のネットワーク（検証ノード等と呼ばれ得る）によってメモリプールを管理及び維持することができ、それらのノードは、一組の未確認トランザクションをメモリプールからマイニングノードに送信して、マイニングノードがブロックをマイニングしようとするのを可能にする。いくつかの実施態様では、複数のノードの間で分散ハッシュテーブルにメモリプールを保存することができる。構造に関係なく、新しいトランザクションはネットワークを介して伝播され、必要なノードにできるだけ早く到達することが望ましい。また、孤立ブロックの発生を減らすために、成功裏にマイニングされた新しいブロックをできるだけ早くネットワークを介して伝播することが望ましい。
【００３５】
例として、ビットコイン・ネットワークの現在の実施態様では、新しいトランザクションを受信する各ノードはトランザクションを検証し、ノードが未だ新しいトランザクションを受信していない場合に、その検証したトランザクションを、接続している全てのノードに送信する。ビットコインの場合に、ノードはＴＣＰ／ＩＰ（伝送制御プロトコル）を使用する。新しいトランザクションを受信するノードは、利用可能な新しいトランザクションに関するデータとともにＩＮＶメッセージを各ピアノードに送信し、新しいトランザクションの受信に関心のある各ノードからＧＥＴＤＡＴＡメッセージを受信する。次に、ノードは、トランザクションを（個別の）ＴＣＰメッセージで、そのトランザクションを要求した各ノードに送信する。
【００３６】
ここで図２を参照すると、図２は、入力バッファ２０２及び出力バッファ２０４を有する例示的なノード２００を概略的に示している。例示的なノード２００は、ｉｎｔＡ、ｉｎｔＢ、ｉｎｔＣ、ｉｎｔＤ等と呼ばれる複数のピアノードとのネットワーク・インターフェイスを有する。入力バッファ２０２は、様々なピアノードからの着信トランザクションを示し、出力バッファ２０４は、特定の受信トランザクションのそれぞれのインターフェイスを介したピアノードへの送信を示す。ネットワーク・パケットが、ノード２０２のオペレーティング・システムによって提供されるプリミティブに従って、アプリケーションレベルで順次に送受信される。トランザクションｘが単一のイーサネット（登録商標）／ＩＰパケットに収まると仮定すると、ｍ個のピアへの送信にはｍ個の異なる出力パケットのバッファリングが必要である。入力及び出力ネットワーク・パケットには、他の情報とともに、順次化された（serialized）トランザクションと、送信／受信ピアへのＴＣＰ／ＩＰ接続を表す論理インターフェイスＩＤとが含まれる。
【００３７】
着信トランザクションを処理するための予想時間は、入力キュー（queues）Ｌｉの平均長（パケット単位）に依存する一方、処理したトランザクションを正しく送信するための予想時間は、出力キューＬ０の平均長に依存する。従って、トランザクションの効率的な中継は、Ｌｉ値とＬ０値との両方の削減に依存している。ただし、トランザクションをピアに選択的に中継するための確率モデルは、Ｌ０に直接影響し、誘導によってＬｉにも影響する。
【００３８】
現在のビットコインの実施態様では、ＩＮＶ及びＧＥＴＤＡＴＡメッセージパケットはトランザクションと同じ方法でＩ／Ｏバッファにキューイングされ、送受信の遅延に深刻な影響を及ぼす。
【００３９】
大量の高速トランザクションにブロックチェーンを使用するための提案がある。例えば、支払いの処理にブロックチェーンを使用することを検討する。支払い処理には、例えば、クレジットカード取引が含まれ得る。このようなトランザクションの量は、ブロックチェーン・ネットワークの現在の実施態様を圧倒するものである。従って、ノード同士の間でトランザクションを送信する等、ブロックチェーン・ネットワークの通信処理能力を向上させる方法及び装置を提供することは有益となろう。
【００４０】
本願の一態様によれば、ブロックチェーン・ノードは、特定の期間に亘って新しいトランザクションをバッファリングし、次にネットワーク・コーディングを使用してトランザクションを単一のメッセージに結合し、その後、この結合したメッセージを１つ又は複数の他のブロックチェーン・ノードに送信する。つまり、ブロックチェーン・ノードは、新しいトランザクションをエンコード化して、新しいトランザクションを解くことができる方法で混合するメッセージを生成するが、結合メッセージを生成する。結合メッセージは、トランザクションの最大サイズに小さなオーバーヘッドを加えたものである。
【００４１】
ブロックチェーン・ノードがネットワーク・コーディングを使用している場合に、ノードは、ノードにノードが受信したい新しいトランザクションのどのサブセットを選り取らせるのではなく、全ての新しいトランザクションをエンコード化されたメッセージの形式で送信するため、ノードは、ＴＣＰ／ＩＰ  ＩＮＶ及びＧＥＴＤＡＴＡメッセージに依存することもなくなる。
【００４２】
次に、ブロックチェーン・ネットワーク３００内のノードの簡略化した例示的なネットワークを示す図３を参照する。各ノードがネットワーク端末（すなわち、ブロックチェーン・ノード）を表す一方、エッジはノード同士の間のリンクを表す。この説明目的で、各リンクで一度に１ビットずつ送受信できると想定している。
【００４３】
２つのノードが、ソースＳ１及びＳ２としてラベル付けされており、２つの新しいトランザクションＴｘ１及びＴｘ２を受信する。この例のブロックチェーン・ネットワーク３００では、各ノードは未確認のトランザクションのメモリプールを維持するため、ノードが新しいトランザクションを受信すると、そのトランザクションは、ネットワークを介して他の全てのノードに伝播される。各ノードは、それぞれのローカルメモリプールで新しいトランザクションを検証及び保存し、新しいトランザクションを未だ有していないピアノードに転送する。ブロックチェーン・ネットワーク３００のピアツーピアの性質により、全てのノードが新しいトランザクションを同時に受信するわけではなく、これは、新しいトランザクションがネットワーク３００内の全てのノードに到達するまでに時間がかかることを意味する。例えば、ビットコイン・ネットワークの現在の実施態様では、新しい有効なトランザクションがビットコイン・ネットワークのノードの９０％に到達するのに平均３．５秒かかる。理論的には、トランザクションの送信が即座に行われた場合、例えば、ネットワークの全てのノードに到達するためにｔ＝０の場合に、ネットワークは、二重使用攻撃の可能性から保護される。従って、ブロックチェーン・ネットワークのスループットを向上させることは、システム全体のスケーラビリティ及び信頼性を実現するための重要な要素である。
【００４４】
ブロックチェーン・ネットワーク３００の２つのノードが、受信機Ｒ１及びＲ２としてラベル付けされる。ノードＩ１及びＩ２は、メモリプールのコピーを保存する場合も保存しない場合もある中間ノードを表すが、時刻ｔでのネットワーク３００のボトルネックをより明確に表す。ノードＩ１が２つの新しいトランザクションＴｘ１及びＴｘ２を略同時に受信したときに、どちらのトランザクション最初に送信するかを決定する必要がある。つまり、Ｉ１からＩ２への発信エッジは、少なくとも時刻ｔでボトルネックになる。
【００４５】
ネットワーク・コーディングを使用して、ノードＩ１は、新しいトランザクションＴｘ１及びＴｘ２を結合して、Ｔｘ１及びＴｘ２の大きい方と同じサイズの複合メッセージＭにすることができる。そのノードＩ１は、メッセージＭをノードＩ２に送信し、ノードＩ２はメッセージＭを受信機Ｒ１及びＲ２に転送する。受信機Ｒ１及びＲ２は、個々のトランザクションＴｘ１及びＴｘ２を回復させることができる。例えば、受信機Ｒ１は、Ｔｘ１及びＭを受信する。ＭがＴｘ１及びＴｘ２の組み合わせに基づいているため、Ｒ１は方程式（Ｔｘ１、Ｔｘ１＋Ｔｘ２）を解くだけでＴｘ２を導き出すことができる。これに対して、Ｒ２は、Ｔｘ２を受信し、方程式（Ｔｘ２、Ｔｘ１＋Ｔｘ２）を解いてＴｘ１を導き出す必要がある。
【００４６】
ボトルネックは、ネットワークの構成と、所与の時間にトランザクションが生成される場所に応じて、時間の経過とともに表示又は非表示になり得る。ボトルネックは、ネットワークのパフォーマンスを大幅に制限するノード同士の間のリンク（エッジ）であり、特にブロックチェーン・ネットワークの場合に、トランザクション（又はブロック）の伝送速度が低下する。ただし、ボトルネックの原因（ノード同士の間のリンク）はノードにある。
【００４７】
ここで、図４を参照すると、この図４は、時刻Ｔ’の同じブロックチェーン・ネットワーク３００を示している。この例では、トランザクションＴｘ１はノードＲ１で受信され、トランザクションＴｘ３はノードＩ２で受信される。この場合に、ノードＩ１で再びボトルネックとなるが、ただし今回は、ノードＩ１とノードＳ１との間のリンクに関して、Ｔｘ２とＴｘ３との両方がノードＩ１に同時に到着するためである。ネットワーク・コーディングを使用して、ノードＩ１は、Ｔｘ２及びＴｘ３をメッセージＭ’に結合できる。
【００４８】
１つのオプションは、全ての状況で全てのノードにネットワーク・コーディングを適用させることである。ただし、その時点で有利であると予想され得る特定のノードでネットワーク・コーディングを選択的に適用することにより、パフォーマンスをさらに向上させることが可能である。例として、ノードはこのノードが所与の時点でボトルネックを表すかどうかを判定できる場合に、そのノードはネットワーク・コーディングをメッセージの送信に選択的又は適応的に適用できるが、そのノードがボトルネックではない場合に、そのノードは、通常のトランザクション送信を使用できる。
【００４９】
従って、ノードは、所定の時点でボトルネックになる可能性があるかどうかを評価又は判定するように構成できる。ある意味では、これはインリンク（in-links）とアウトリンク（out-links）との間のバランスに基づいて決定され得る。つまり、所定の時点で、ノードは、１つ又は複数のリンクでトランザクションを受信し、それらのトランザクションを１つ又は複数のリンクで送信しようとする場合がある。ノード同士の間の接続（つまり、エッジ）は、ネットワーク内のトラフィックの流れに応じて、所与の時点でインリンク又はアウトリンクとして機能し得る。インリンクの数は「ファンイン（fan-in）」と呼ばれ、アウトリンクの数は「ファンアウト（fan-out）」と呼ばれる場合がある。
【００５０】
一実施態様では、ブロックチェーン・ネットワーク内の少なくともいくつかのノードは、第１の隣接ノード（first-neighbour  nodes）へのファンイン及びファンアウト・リンクの相対数を追跡するテーブル又は他のデータ構造を維持する。図５は、第１のノードＩ１及び第２のノードＩ２が、それぞれ、テーブル又は他のデータ構造をローカルに保存する例示的なネットワークの一部を図式的に示しており、テーブル又は他のデータ構造は、所与の時点でそのノードのファンイン量とファンアウト量を特定する。相対的なファンイン及びファンアウトの数に基づいて、ノードは、このノードがボトルネックである可能性があるかどうかを判定できる。一般に、この判定は、インリンク（ファンイン）の数がアウトリンク（ファンアウト）の数を超えているかどうかに基づいている場合があり、その場合に、ノードがその時点でボトルネックになっている可能性がある。
【００５１】
一実施例では、ノードがボトルネックであるかどうかの評価は、期間ΔΤに亘って行われる。テーブルの数量は、期間ΔΤに亘る平均ファンイン及びファンアウトであり得る。
【００５２】
判定は、いくつかの実施態様ではネットワークトポロジの認識に一部基づいている場合もある。例えば、周辺ノードであるノードがボトルネックになることは殆どないが、中間ノードであるノードは、少なくとも場合によってはボトルネックになる可能性が高くなる。
【００５３】
さらに他の実施態様では、ノードがボトルネックであるかどうかの判定は、出力キューのステータス、又は出力キューのバックログの経時的な評価に基づき得る。
【００５４】
ボトルネックの判定又は識別は、いくつかの実施態様では、上記の要因の組合せ又はサブコンビネーションを含む場合がある。
【００５５】
ネットワーク・コーディングは、当時の主要なパケット交換ネットワークの代替として、２０年弱前に開発された。ネットワーク・コーディングは、ネットワークをリンク容量を有する有向グラフ（direct  graph）（Ｎ，Ｌ）としてモデル化し、ノードｎ∈Ｎが、ブロードキャスト容量ｈを達成するレートで情報を受信機のセットＲ⊆Ｎに伝達できることを示し、ここでｈは、ネットワークの内部ノードでエンコード化されるという条件で、ｓとｒ∈Ｒとの間の最小カットの値である。
【００５６】
カットＣが、グラフＧ＝（Ｖ，Ｅ）の頂点Ｖを２つの互いに素なサブセットＳ及びＴに分割することとして規定される。カットＣ＝（Ｓ，Ｔ）のカットセットは、Ｓに一方のエンドポイント、Ｔに他方のエンドポイントを有するエッジのセット｛（ｕ，ｖ）∈Ｅ｜ｕ∈Ｓ，ｖ∈Ｔ｝である。
【００５７】
ネットワーク・コーディングの方法論の例は、P.A.  Chou,  Y.  Wu、及びK.  Jain、“Practical  Network  Coding”,  in  Proceedings  of  the  annual  Allerton  conference  on  communication  control  and  computing,  v.41,  pp.  40-49,  The  University（2003)（以下「Chou」）で説明されており、この文献は、参照により本明細書に組み込まれる。この方法論により、ネットワークトポロジ又はエンコード化又はデコード化機能に関する集中的な知識は不要になった。Chouは、ネットワークＮが、単位容量エッジ（ｅ）、送信者ｓ∈Ｖ、及び特定の数の受信者Ｔ⊆Ｅを有する非循環グラフＧ＝（Ｖ，Ｅ）として表現できると述べている。ノードｖ＝ｉｎ（ｅ）の各エッジｅ∈Ｅの出力は、ｖに入るエッジｅ’上のシンボルｙ（ｅ’）の線形結合であるシンボルｙ（ｅ）を有する。図６は、ノードｖ及び出力ｙ（ｅ）を示している。特に、出力は、次式で与えられる。
【数１】
2020526959.tif 000003
ここで、ｙ（ｅｉ’）＝ｘｉ、ｉ＝１，・・・，ｈ、及びベクトルｍｅは、エッジｅのノードｖでの符号化関数を表すローカル・エンコーディング・ベクトルであり、ｈは、エッジの最小数として送信者と受信者との間のカットでのブロードキャスト容量を示す。
【００５８】
Chouは、任意のエッジｅ∈Ｅ上の出力ｙ（ｅ）が、ソースシンボルの線形結合
【数２】
2020526959.tif 000004
であること、係数ｇ（ｅ）＝［ｇ１（ｅ），・・・，ｇｈ（ｅ）］のｈ次元ベクトルが、
【数３】
2020526959.tif 000005
によって再帰的に取得でき、ここで、エッジｅｉ’上のｇ（ｅｉ’）は、i番目の単位ベクトルに対して開始される、と述べている。ベクトルｇ（ｅ）は、ｅに沿ったグローバル・エンコーディング・ベクトルと呼ばれ得る。そのｈ受信エッジに沿って以下のシンボルを受信する任意のノードは、
【数４】
2020526959.tif 000006
グローバル・エンコーディング・ベクトルの行列Ｇｔがランクｈである場合に、ソースシンボルｘ１，・・・，ｘｈを復元できる。上記の例では、ブロックチェーン・トランザクション・ネットワーク・コーディングに適用される場合に、トランザクションはアレイ［ｘ１，・・・，ｘｈ］に記憶される。詳細については、Chouを参照されたい。
【００５９】
発信エッジｅのグローバル・エンコーディング・ベクトルは、着信エッジｅ’のグローバル・エンコーディング・ベクトルのローカル・エンコード化に基づくものとして特徴付けてもよい。
【００６０】
ネットワーク・コーディングを使用して、ネットワークを介してトランザクションを伝播できることが理解されよう。また、ネットワーク・コーディングは、各トランザクションが少なくとも２つのノードによって保存される未確認トランザクションの分散ハッシュテーブルを実装するように設計されたオーバーレイネットワーク内で使用され、分散ハッシュテーブル内の冗長性を確保することもできる。この場合に、ネットワーク・コーディングを使用して、保存のために２つ以上のノードにトランザクションを送信できる。もっとも、ネットワーク・コーディングを使用すると、トランザクションを保存している２つ以上のノードが損失しても回復できるという追加の利点が得られる場合がある。中間ノードが、トランザクションに関連する結合データを含む１つ又は複数のメッセージを受信しているため、欠落しているトランザクションをネットワーク・コーディングメッセージから回復できる。
【００６１】
ここで図７を参照すると、図７は、ブロックチェーン・ネットワークにおいてトランザクションを伝播するための例示的なプロセス７００をフローチャート形式で示している。プロセス７００は、ブロックチェーン・ネットワークのノードによって実施される。この文脈では、ノードは、マイニングノード、フルノード、検証ノード、又はブロックチェーン・ネットワーク内の他のタイプの離散ブロックチェーン・ノードを指すと理解され得る。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーン・プロトコルを実装する実行ソフトウェアを含むコンピューティング装置である。
【００６２】
動作７０２において、ノードは、そのノードが時刻Ｔにおけるネットワークの潜在的なボトルネックであると判定する。この判定は、上述したように、時刻Ｔにおけるファンイン及びファンアウトの比較に基づいてもよい。例えば、ファンインが時刻Ｔでファンアウトを超えると、ノードはこのノードがボトルネックであると判定し得る。ノードがボトルネックであるかどうかを判定する際に、代替的又は追加的に他の要因を考慮することができる。例には、ある期間に亘る平均ファンイン及びファンアウト、ネットワークトポロジのノードの位置、ノードの出力キューの現在又は過去のステータス、又は受信したトランザクションを伝播するためのノード容量に関連する他の要因が含まれる。
【００６３】
動作７０４において、そのノードがボトルネックであると判定されると、ノードは期間ΔΤに亘ってトランザクションを蓄積する。期間は、所定の時間の長さとすることができる。一部の実装例では、期間は、ネットワークトラフィックの測定値、地理的情報、又はその両方に基づいて変化し得る。期間は固定時間ではなく、むしろ最小数のトランザクションを受信するまでトランザクションの蓄積が発生する可能性があり、蓄積されたトランザクションが長く保持されない場合があるので、さらに最大時間になる可能性がある。
【００６４】
動作７０６において、ノードが蓄積した複数のトランザクションは、ネットワーク・コーディングを使用して単一のメッセージに結合される。メッセージは、いくつかの実施態様ではトランザクションの最長の長さと同じ長さになる場合がある。いくつかの実施態様では、メッセージの長さ（ビット単位）がトランザクションの最長の長さを超えない場合がある。メッセージは、ローカル・エンコーディング・ベクトル及びネットワーク・コーディング・アルゴリズムを使用して生成される。
【００６５】
次に、動作７０８において、ノードは、メッセージ及びグローバル・エンコーディング・ベクトルを１つ又は複数のノードに送信する。実際のトランザクションを送信する代わりにメッセージが送信される。すなわち、ノードは、複数の蓄積されたトランザクションを送信せず、代わりに、メッセージ及びグローバル・エンコーディング・ベクトルを全てのアウトリンク上のピアノードに送信する。
【００６６】
ここで図８を参照すると、図８は、ブロックチェーン・ネットワークにおいてトランザクションを伝播するための例示的な方法８００をフローチャート形式で示している。上述したように、方法８００は、複数のインリンク及びアウトリンクを有するブロックチェーン・ノードで実施され得る。
【００６７】
ブロックチェーン・ノードは、動作８０２においてトランザクションを受信する。受信したトランザクションは、インリンクを介して受信される。ブロックチェーンは、プロトコル要件に対してトランザクションを検証して、トランザクションが正当であることを確認する。動作８０４において、ノードは、このノードがトランザクションに関してボトルネックであるかどうかを判定し得る。この判定は、その時点でのインリンク（ファンイン）とアウトリンク（ファンアウト）との間のバランスの評価に基づく場合がある。上述したように、判定は他の要因に基づいてもよい。
【００６８】
ノードがボトルネックではないと判定した場合に、動作８０６において、ノードは、通常どおり、トランザクションをアウトリンクでブロックチェーン・ネットワーク内の１つ又は複数のピアノードに転送する。しかしながら、ノードがボトルネックである可能性が高いと判定した場合に、動作８０７において、ノードはトランザクションをメモリ（例えば、バッファ又は他のメモリ要素）に保存する。
【００６９】
動作８０８によって示されるように、ノードはトランザクションを受信し続け、停止条件が満たされたと判定されるまでそれらトランザクションを保存する。この例では、停止条件は持続時間ΔΤが経過したことである。持続時間は、例えば、ノードがボトルネックであるという判定から、又は動作８０２での第１のトランザクションの受信から開始することができる。持続時間の代わりに他の条件、例えば、メモリ内のトランザクションの最大数の蓄積、又はそのような要因の組合せを使用できる。
【００７０】
停止条件が満たされると、例えばこの場合、ΔΤが経過した場合に、動作８１２で示されるように、ノードは、ネットワーク・コーディング及びローカル・エンコーディング・ベクトルを使用して、保存されたトランザクションからメッセージＭを構築する。動作８１４において、ノードは、このメッセージ及びグローバル・エンコーディング・ベクトルを全ての外部リンクを介して他のノードに送信する。
【００７１】
ネットワーク・コーディングの調整可能な期間
いくつかの実施態様では、期間ΔΤは固定されない場合がある。すなわち、ノードは、ネットワークの特性又はノードに出入りするトランザクション・トラフィックに基づいて、時々ΔΤを調整することができる。いくつかの実施形態では、期間ΔΤは、各期間ΔＴが終了した後に調整され、その結果、期間は現在のトラフィックレベルに常に適応している。いくつかの実施形態では、期間ΔΤに対する調整は、最小期間及び最大期間内に制約される。いくつかの実施態様では、期間ΔΤは、２、５、１０、又は他の期間毎の後に等、定期的にのみ調整されるか、又は決定された調整が閾値値量又はパーセンテージ以上に期間を変更する場合にのみ調整される。
【００７２】
トラフィック条件に適応するために、ノードは「スループット」の概念で動作することができる。ノードは、ネットワーク内の他の複数のノードへのインリンク及びアウトリンクを有している場合がある。次に、ノード９００の例示的なネットワークを図式的に示す図９を参照する。ノードＮ３は、ノードＮ１、Ｎ２、Ｎ４、Ｎ５、及びＮ６への入出力リンクを有する。これらのノードは、（論理的な）第１の隣接ノードとして特徴付けられ得る。一般に、ノードは第１の隣接ノードを認識している。つまり、これらのノードは、トランザクションを（ネットワークの別のノードを経由することなく）直接的に受信する、又はトランザクションを直接的に送信する。「第１の隣接ノード（first  neighbour）」は、必ずしも地理的に近い場所にある必要はなく、多くのネットワーク要素及びリンクを通過することで到達できる場合がある（別のノードを経由する場合を除く）ことに留意されたい。
【００７３】
ノードＮ３は、以下の表１の例のように、ノードＮ３のローカルに保存されているテーブルの第１の隣接ノードを追跡する。
【表１】
2020526959.tif 000007
【００７４】
上記の例では、ノードＮ３は、表内のノードから各インリンクを介して受信したメッセージのサイズｓｉと、各アウトリンクを介して表内のノードに送信したメッセージのサイズｓ０とを追跡する。リンクのスループットは、入力と出力との間で均等に割り当てられると仮定され得る。つまり、チャネルの帯域幅は均等に分割されるが、その仮定は常に当てはまるとは限らない。ただし、その仮定に基づいて、解析期間に亘るリンク又はチャネルのスループットＴｒは、次式で与えられる。
【数５】
2020526959.tif 000008
つまり、スループットＴｒは、リンク上で送受信されるデータの総量以上でなければならない。
【００７５】
インリンクとアウトリンクのスループットが等しいという仮定は、実際の実施態様では尊重されない可能性があることが理解されよう。従って、バランス・パラメータγ∈［０，１］は、次のような入力／出力スループット比として規定できる。
【数６】
2020526959.tif 000009
【００７６】
上記の式で、パラメータΔΤは、送受信されるメッセージのサイズが測定される期間を示す。上記の式は、チャネル又はリンクの実際の最大スループットＴｒを示すものではなく、むしろ、リンク又はチャネルのスループットＴｒは、少なくとも実際の使用データ（実際に送信／受信したメッセージのサイズ）によって示されるのと同じ大きさにしなければならないことに留意されたい。従って、場合によっては、リンクのスループットＴｒは、リンクを介して送受信されるメッセージのサイズの測定値等の履歴使用データに基づいて推定される場合がある。
【００７７】
リンクのスループットＴｒは、他のいくつかの経験的データを使用して推定できる。例えば、ＴＣＰ／ＩＰに基づいて動作するネットワークの場合に（つまり、ビットコインは一例である）、ＴＣＰ受信ウィンドウ（ＲＷＩＮ）及びラウンドトリップタイム（ＲＴＴ）を使用してリンクのスループットを決定できる場合がある。ＲＷＩＮは、ノードが確認応答を送信者に送信せずに受信できるデータの量を示し、ネットワークで使用される適切な通信プロトコルによって規定され得る。ＲＴＴは、無視できるサイズのメッセージがリンクの一端にあるノードからリンクの他端にあるノードに行き、また戻るために必要な時間の測定値であり、これは、時にはｐｉｎｇメッセージ等と呼ばれ得る。
【００７８】
スループットＴｒを決定するために、隣接ノードからのスループット情報の取得、プリセット又は所定のスループット推定値、又はスループット推定値の他のソースの使用を含む他のメカニズムも利用可能である。
【００７９】
本願のいくつかの実施態様において、ノードは、その様々なリンクのスループット推定値に関するローカルに保存された情報を維持してもよい。リンクは、第１の隣接ノードへのリンクである場合がある。例えば、上記の表１について、リンク毎のスループットの推定値に関する列を追加するように修正できる。
【表２】
2020526959.tif 000010
ノードは、利用可能なリンクのスループットの中央値又は平均値をさらに決定し得る。
【００８０】
上記で議論したように、ネットワーク・コーディングでは、個々のメッセージを伝播する代わりに、期間ΔΤに亘って受信したトランザクションのセットを結合して、複合メッセージＭを生成し、この複合メッセージＭをノードからアウトリンクを介して送信する。本願のいくつかの実施態様では、期間ΔΤは、スループット及び受信したトランザクション数に少なくとも部分的に基づいてもよい。
【００８１】
スループットは、上述したように、ノードの利用可能なリンクのスループットの中央値又は平均値に基づいて設定できる。
【００８２】
あるいはまた、場合によっては、ノードは、ネットワークに関するいくつかの仮定に基づいて、スループットをグローバル推定スループット値に初期化することができる。例えば、期間ΔＴはまずプリセット値に初期化され、トランザクション数は推定プリセット値に設定され、そこから推定スループットが決定され得る。ビットコイン・ネットワークの特定の例では、プリセット期間ΔΤは３．５秒とすることができる。これは、この時間が、トランザクションがビットコイン・ネットワーク内のノードの９０％に到達するのに必要な概算時間だからである。期間ΔＴは、他の実施態様では別の値に初期化してもよい。期間ΔΤ内に受信できるトランザクション数は、プリセット値であると最初に仮定してもよい。ビットコイン・ネットワークの特定の例では、トランザクション数Ｎは、（ビットコインの現在の実施態様では）平均ブロックが約２０００のトランザクションを含み、２０００を３．５で除算した約５００に基づいて５００に初期化され得る。他の実施態様では他の初期化値が使用され得る。
【００８３】
期間ΔΤ及びトランザクション数の初期値を選択すると、これらのパラメータ同士の間の関係は、期間ΔΤとトランザクション数の積として確立され得る。
Ｋ＝ΔＴ０・Ｎ０
ここで、Ｋは、期間ΔΤ及びトランザクション数Ｎに対して反比例する定数として設定される。上記の式では、ΔＴ０は期間ΔΤの初期化値であり、Ｎ０は受信したトランザクション数の初期化値である。他の実施形態では、上述したように、定数Ｋは、他の仮定又は測定に基づいて初期化してもよい。定数Ｋは、ＮとΔΤとの間の反比例関係に関連する限り、スループットＴｒに関連し、Ｎトランザクションのそれぞれが特定のサイズを有する場合に、Ｎトランザクションは、ΔΤの期間に亘って受信した特定の量のデータ、例えばｓｉを累積的に表す。場合によっては、定数Ｋは、推定又は目標スループットＴｒに部分的に基づいて決定してもよい。
【００８４】
スループットＴｒの概念と定数Ｋとの間の関係は、次の式で表される。
Ｔｒｉ＝Ｎｉ−１（全体のサイズ/Ｋ）
【００８５】
初期定数Ｋを決定すると、ノードは、ΔΤの過程でインリンクで実際に受信したトランザクション数を監視し、ΔΤを調整するかどうかを決定する。少なくとも１つの実施態様では、ΔΤの調整は、少なくとも１つの以前のΔΤで受信したトランザクション数及び定数Ｋに基づく。例えば、ΔΤｉを決定するための１つのメカニズムは、以下の式によって与えられる。
ΔＴｉ＝Ｋ／Ｎｉ−１
ここで、ｉはインデックスである。この簡単な例では、時間ｉのΔΤは、直前のΔΤで受信したトランザクション数に基づいており、Ｋは定数である。ある意味では、Ｋは、期間とトランザクション数との積に基づいている限り、平衡定数とラベル付けされ得、また平衡定数を満たすには期間内に受信されるトランザクションが少な過ぎるという範囲で、平衡定数を維持しようとするために期間を長くすることができる。
【００８６】
別の例示的な実施態様では、受信したトランザクション数は、以前の期間ΔＴｉ−１だけに基づかなくてもよく、代わりに２つ以上の以前の期間の平均に基づいてもよい。場合によっては、平均を加重平均として決定して、より最近の期間により大きな重みを与えてもよい。
【００８７】
他の例示的な実施態様では、スループットは、いくつかの要因のいずれか１つに基づいて経時的に調整してもよい。一例では、定数Ｋは、１つ又は複数の隣接ノードからスループットの中央値又は平均値に基づいて初期化してもよい。
【００８８】
ここで図１０を参照すると、図１０は、ネットワーク・コーディングを使用してノードのネットワークにおいてトランザクションを伝播するための１つの例示的な方法１０００をフローチャート形式で示している。方法１０００は、ノードのネットワーク内のノードのうちの１つのノードで実施される。この例では、ノードは、トランザクションの伝播にネットワーク・コーディングを使用するように構成される。
【００８９】
動作１００２において、特定のパラメータが初期化され得る。例えば、初期期間ΔＴ０を所定の値に設定してもよい。上述したように、場合によっては、初期期間Ｔ０は、隣接ノードによって使用されている現在の期間ΔＴから導出された値に設定してもよい。場合によっては、初期期間は、所定のスループット値及び予想されるトランザクション数に基づいて計算してもよい。上記の組合せを含む他のメカニズムを使用して、初期期間ΔＴ０を決定してもよい。
【００９０】
オプションで、そのパラメータが初期期間ΔＴ０又は定数Ｋ、すなわち平衡定数を決定する際に使用される場合に、トランザクション数Ｎ０も初期化することができる。場合によっては、例えば以下のような式を使用して、トランザクション数Ｎ０を用いて定数Ｋを決定できる。
Ｋ＝ΔＴ０・Ｎ０
【００９１】
場合によっては、トランザクション数Ｎ０は、所定の定数Ｋを使用して、例えば以下のような式を使用して、初期期間ΔＴ０を決定するための基準として使用できる。
ΔＴ０＝Ｋ／Ｎ０
【００９２】
定数Ｋは、初期期間ΔＴ０及びトランザクション数Ｎ０を使用して決定できるが、他の場合には、プリセット又は所定の平衡定数値に設定できる。使用されるネットワーク又はプロトコルの変更がノードへのリンクの可能な特性に影響を及ぼし、トランザクション量及び／又はスループットに影響を与える場合に、ネットワークが変化すると、ノードは定数Ｋの所定の値を更新し得る。場合によっては、定数Ｋは経験的に決定され得る。例えば、定数Ｋは、スループットに関する過去のデータを使用して決定され得る。別の例では、上述したように、定数Ｋは、ラウンドトリップタイム試験に基づいて決定され得る。さらに別の例では、定数Ｋは、１つ又は複数の隣接ノードでのスループットに関するデータに基づいて決定され得る。例として、現在のノードは、隣接ノードに関連するスループット値を平均し、その平均値を使用して平衡定数を推定し、定数Ｋに達することができる。
【００９３】
動作１００４において、少なくとも初期期間ΔＴ０及び定数Ｋを初期化した後に、ノードは、そのインリンクでトランザクションを受信する。トランザクションは、ノードのメモリにバッファリングされる。動作１００６によって示されるように、ノードは、期間ΔＴｉが終了するまで、そのインリンク上でトランザクションを受信して保持し続ける。ｉは単なるインデックスであり、ｉは、最初０に設定されることが理解されよう。
【００９４】
期間が終了すると、動作１００８において、ネットワーク・コーディングを使用してトランザクションが送信される。これには、ネットワーク・コーディング操作を使用してトランザクションを結合してメッセージＭを生成し、このメッセージをノードのアウトリンクを介して送信することが含まれる。
【００９５】
動作１０１０において、インデックスｉがインクリメントされ、ノードは、動作１０１２において、期間ΔＴｉを更新する。この例では、更新された期間ΔＴｉは、定数Ｋを、以前の期間ΔＴｉ−１の間に受信したトランザクションの実際の数又はカウントで割った値に基づいている。期間ΔＴｉの調整は、それを超えることができない最大値又はそれを下回ることができない最小値等の、特定の制約を受ける場合がある。いくつかの実施態様では、調整は、複数の以前の期間及びこれらの期間内に受信したトランザクション数に基づいてもよい。いくつかの実施態様では、例えば、反復毎に特定のパーセンテージ以下の変化等、異なる又は追加の制約が期間ΔＴｉへの調整に課せられる場合がある。
【００９６】
この例では、ノードは、ネットワーク・コーディングを使用して、各反復でトランザクションを送信する。別の例示的な実施態様では、ノードは、期間内のトランザクションの量によってネットワーク・コーディングの使用が正当化されるときに、ネットワーク・コーディングを選択的に使用することができる。次に図１１を参照すると、図１１は、ノードのネットワークにおいてトランザクションを伝播するための例示的な方法１１００をフローチャート形式で示している。
【００９７】
動作１１０２、１１０４、及び１１０６は、上述した図１０の動作１００２、１００４、及び１００６に対応する。動作１１０８において、ノードは、ネットワーク・コーディングを使用するのが正当化されるのに十分な数のトランザクションをΔＴｉ中に受信したかどうかを評価する。いくつかの例では、この評価には、受信したトランザクション数Ｎｉを、ネットワーク・コーディングの使用のために規定されている最小数のトランザクションＮｍｉｎと比較することが含まれる。最小値を満たしている場合に、動作１１１２において、トランザクションは、ネットワーク・コーディングを使用して送信される。最小値を満たしていない場合に、動作１１１０において、トランザクションは、通常の非ネットワーク・コーディング送信を使用して送信される。
【００９８】
動作１１１４及び１１１６は、上述した図１０の動作１０１０及び１０１２に対応する。
【００９９】
例示的な方法１０００及び１１００の様々な動作又はステップは、プロセスの動作原理を変更することなく、改変され、場合によっては省略され得ることが理解されよう。プロセスの動作原理を変更することなく、図示されていない追加の動作を追加することもできる。そのような変形は全て、本明細書に含まれることが意図されている。
【０１００】
各ノードは、その現在の期間ΔΤ（又は、場合によっては、移動平均期間又は加重平均期間等）の記録を維持し、その現在の期間ΔΤを隣接するノードに定期的に通知してもよい。このようにして、各ノードは、その隣接ノードによって使用されている期間ΔΤを追跡し得る。従って、新しいノードがネットワークに加入すると、ネットワークに関する仮定を使用してノードのパラメータを初期化する代わりに、ノードは、その隣接ノードのパラメータに基づいてそのパラメータを初期化できる。例えば、新しいノードは、その第１の隣接ノードによって使用される期間ΔΤ（又は平均期間ΔΤ）を取得し、その隣接ノードの期間の平均又は他の組合せに基づいてその初期期間ΔＴを設定し得る。これにより、新しいノードのネットワークの特性への適応が加速され、適応の速度が向上する。
【０１０１】
次に、図１２を参照すると、図１２は、参加ノード１２００の簡略化された例をブロック図形式で示す。ノード１２００は、１つ又は複数のマイクロプロセッサ、特定用途向け集積チップ（ＡＳＩＣ）、マイクロコントローラー、又は同様のコンピュータ処理装置を含み得るプロセッサ１２０２を含む。ノード１２００は、値、変数、場合によってはプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ１２０４と、有線又は無線ネットワークを介したネットワーク接続を提供するネットワーク・インターフェイス１２０６とをさらに含む。
【０１０２】
ノード１２００は、プロセッサ実行可能命令を含むプロセッサ実行可能なブロックチェーン・アプリケーション１２０８を含み、命令が実行されると、プロセッサ１２０２に本明細書に記載の機能又は動作の１つ又は複数を実行させる。
【０１０３】
本明細書で説明する装置及びプロセス、並びにノードを構成するために説明した方法／プロセスを実施するモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を使用して実現できることが理解されよう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規約、データ構造、又は他のそのような実装の詳細に限定されるものではない。
【０１０４】
上述した実施形態は本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む（comprising,  comprises）」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む（comprises,  comprising）」は「含む、有する（includes,  including）」又は「〜構成される（consists  of,  consisting  of）」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化される。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【図１】
2020526959.tif 000011
【図２】
2020526959.tif 000012
【図３】
2020526959.tif 000013
【図４】
2020526959.tif 000014
【図５】
2020526959.tif 000015
【図６】
2020526959.tif 000016
【図７】
2020526959.tif 000017
【図８】
2020526959.tif 000018
【図９】
2020526959.tif 000019
【図１０】
2020526959.tif 000020
【図１１】
2020526959.tif 000021
【図１２】
2020526959.tif 000022
【国際調査報告】
2020526959.tif 000023
2020526959.tif 000024