(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024111082
(43)【公開日】2024-08-16
(54)【発明の名称】ネットワーク・コーディングを有効にするためのネットワーク・パラメータの最適化
(51)【国際特許分類】
H04L 67/12 20220101AFI20240808BHJP
H04L 9/32 20060101ALI20240808BHJP
H04L 67/00 20220101ALI20240808BHJP
【FI】
H04L67/12
H04L9/32 200Z
H04L67/00
【審査請求】有
【請求項の数】14
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024097125
(22)【出願日】2024-06-17
(62)【分割の表示】P 2023077030の分割
【原出願日】2018-07-06
(31)【優先権主張番号】1711125.3
(32)【優先日】2017-07-11
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】マデオ,シモーヌ
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(57)【要約】
【課題】ノードのネットワークにおいてトランザクションを伝播するための方法及び装置を提供する。
【解決手段】各ノードは他のノードへの1つ又は複数の接続を有している。この方法は、ある期間に亘って複数の着信トランザクションを受信するステップと;ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成するステップと;複合メッセージをネットワーク内の1つ又は複数のノードに送信するステップと;平衡定数パラメータと、期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと;を含む。
【選択図】
図10
【特許請求の範囲】
【請求項1】
ノードのネットワークにおいてトランザクションを伝播するノードであって、各ノードは他のノードへの1つ又は複数の接続を有しており、当該ノードは、
プロセッサと、
メモリと、
ネットワーク・インターフェイスと、
プロセッサ実行可能命令を含むアプリケーションと、を含んでおり、
前記命令が前記プロセッサによって実行されると、該プロセッサに、
ある期間に亘って複数の着信トランザクションを受信すること、
停止条件が満たされたと判定すること、
前記停止条件が満たされたことに基づいて、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成すること、
該複合メッセージを前記ネットワーク内の 1つ又は複数のノードに送信すること、及び
前記期間に亘って受信した前記複数の着信トランザクション内のトランザクション数と平衡定数パラメータとに基づいて調整期間を決定すること、を実行させる、
ノード。
【請求項2】
前記停止条件には、複数の新規トランザクションのいずれかの最初のトランザクションの受信からの期間の満了が含まれる、請求項1に記載のノード。
【請求項3】
前記停止条件には、前記ノードのうちの1つのノードがボトルネックであるという判定が含まれる、請求項1に記載のノード。
【請求項4】
前記停止条件には、新規トランザクションの最大数を超える複数の新規トランザクションが含まれる、請求項1に記載のノード。
【請求項5】
前記命令が実行されると、前記プロセッサに、
前記調整期間を使用して前記受信、結合、及び送信操作を反復的に繰り返して、各反復の後に次の反復で使用するための更なる調整期間を決定するようにさらに指示する、請求項1に記載のノード。
【請求項6】
前記命令が実行されると、前記プロセッサに、
前記平衡定数パラメータを前記トランザクション数で割った値に基づいて前記調整期間を決定することによって前記調整期間を決定するようにさらに指示する、請求項1乃至5のいずれか一項に記載のノード。
【請求項7】
前記命令が実行されると、前記プロセッサに、
複数の調整期間に基づいて平均期間を決定し、該平均期間を前記メモリに記憶させるようにさらに指示する、請求項1乃至6のいずれか一項に記載のノード。
【請求項8】
前記命令が実行されると、前記プロセッサに、
当該ノードのうちの1つのノードへの1つ又は複数のリンクに関する1つ又は複数のスループット推定値に基づいて、平衡定数パラメータを初期化すること、
推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化すること、
前記期間内に受信した前記トランザクション数が、ネットワーク・コーディングを使用するための最小数を超えていることを判定することであって、前記結合及び送信はその判定を条件とする、こと、の少なくとも1つを実行するようにさらに指示する、請求項1乃至7のいずれか一項に記載のノード。
【請求項9】
ノードのネットワークにおいてトランザクションを伝播するコンピュータで実施する方法であって、各ノードが他のノードへの1つ又は複数の接続を有しており、当該方法は、前記ノードのうちの1つのノードで実施され、
ある期間に亘って複数の着信トランザクションを受信すること、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成すること、
該複合メッセージを前記ネットワーク内の1つ又は複数のノードに送信すること、及び
前記期間に亘って受信した前記複数の着信トランザクション内のトランザクション数と平衡定数パラメータとに基づいて調整期間を決定すること、を含む、
方法。
【請求項10】
前記調整期間を使用して前記受信、結合、及び送信操作を反復的に繰り返して、各反復の後に次の反復で使用するための更なる調整期間を決定することをさらに含む、請求項9に記載の方法。
【請求項11】
前記方法は、
前記調整期間を決定することには、前記平衡定数パラメータを前記トランザクション数で割った値に基づいて前記調整期間を決定することが含まれること、
前記調整期間を決定することには、前記調整期間が下回ることができない最小期間と、前記調整期間が上回ることができない最大期間の影響を受けることが含まれること、又は
複数の調整期間に基づいて平均期間を決定し、該平均期間を前記ノードのうちの前記1つのノードのメモリに記憶させること、の少なくとも1つをさらに含む、請求項9に記載の方法。
【請求項12】
前記ノードのうちの前記1つのノードへの1つ又は複数のリンクに関する1つ又は複数のスループット推定値に基づいて、前記平衡定数パラメータを初期化すること、又は
推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化すること、の少なくとも1つをさらに含む、請求項9に記載の方法。
【請求項13】
前記期間内に受信した前記トランザクション数が、ネットワーク・コーディングを使用するための最小数を超えることを判定することをさらに含み、前記結合及び送信はその判定を条件とする、請求項9に記載の方法。
【請求項14】
複数の参加ノードの間のトランザクションに参加するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ可読媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの1つのノードのプロセッサによって実行されると、該プロセッサに実施例10乃至13のいずれか一項に記載の方法を実行させる、非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ネットワークにおけるトランザクションの伝播に関し、より具体的には、トランザクションの処理速度を向上させる方法及び装置に関する。
【0002】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、コンセンサス(合意)ベースのブロックチェーン及びトランザクションチェーン技術、許可された台帳及び許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的で、ビットコインについて参照し得るが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルも、本発明の範囲内に含まれることに留意されたい。
【背景技術】
【0003】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクションで構成される。各トランザクション(Tx)は、ブロックチェーンシステムの参加者同士の間でのデジタル資産の制御(control:管理)の転送(transfer:移転)をエンコードするデータ構造であり、各トランザクションには、少なくとも1つの入力と少なくとも1つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成するために一緒にチェーンで繋がれている。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトは、スタックベースのスクリプト言語を使用して記述される。
【0004】
新しいトランザクションを受信したネットワークノードは、そのトランザクションをネットワーク内の他のノードに素早く押し出すように試みる。新しいトランザクションを他のノードに送信する前に、そのトランザクションは「検証」される。つまり、検証とは、そのトランザクションが一組の基準に対してチェックされ、トランザクションが、該当するブロックチェーン・プロトコルに従って、適切なトランザクションの基本要件を満たしていることを確認することを意味する。
【0005】
トランザクションをブロックチェーンに書き込むために、トランザクションを収集して収集したトランザクションをブロックに形成するように設計されたノード(「マイナー(miners:採掘者)」又は「マイニングノード」)によってそのトランザクションはブロックに組み込まれる。次に、マイナーはノードに関して「プルーフ・オブ・ワーク(proof of work:作業証明)」を完了しようとする。ブロックチェーン・ネットワーク全体の複数のマイナーは、競争して、最初にトランザクションのブロックを組み立て、そのブロックに関連する作業証明を完了する。成功したマイナーは、その確認したブロックをブロックチェーンに追加し、このブロックはネットワークを介して伝播され、それによってブロックチェーンのコピーを保持する他のノードがレコードを更新できる。ブロックを受信するそれらノードは、そのブロックとその中の全てのトランザクションを「検証」して、それがプロトコルの正式な要件に準拠していることを確認する。
【0006】
ビットコインのようなブロックチェーンベースのネットワークを使用して、広く暗号化によって安全が確保された交換の使用を有効化又は促進することは有益である。このような交換は、例えば、クレジットカード取引等の支払い処理に関連し得る。しかしながら、1秒あたり約3のトランザクション・スループットは、現在1秒あたり約50,000のトランザクション量で動作しているこのような電子決済を処理するには不十分である。ブロックチェーン・ネットワークの速度に関連する1つのボトルネックは、トランザクションの伝播である。トランザクションを受信する各ノードは、トランザクションを検証してからその検証したトランザクションをピアノードに送信する。実際に、ビットコイン・プロトコルでは、ノードは、トランザクションのリストを含むINVメッセージをピアノードに送信し、INVメッセージで通知されたトランザクションのいくつかのサブセットを選択するGETDATA応答メッセージを受信する。次に、ノードは、要求されたトランザクションをピアノードに送信する。このプロセスは、ノードが接続されている各ピアノードに対して実行される。
【0007】
従って、ブロックチェーンの能力を現在制限している速度及びスケーラビリティの制約に対する解決策を見つけて、トランザクションの伝播速度を向上させることにより、大量のトランザクションを処理することが望ましいだろう。ブロックチェーン又は他のアプリケーションに関係なく、ノードのネットワークにおけるトランザクションの伝播により一般的に適用可能な解決策を見つけることが望ましいだろう。
【発明の概要】
【0008】
そのような解決策が現在案出されている。
【0009】
こうして、本発明によれば、添付の特許請求の範囲に規定される方法及び装置が提供される。
【0010】
本願は、トランザクション(Tx)の高速伝播を可能にする方法及び装置を説明及び開示する。いくつかの例では、ノードは、ネットワーク・コーディングの使用を選択的に有効にして、トランザクションをピアノードに送信するための単一のメッセージに結合する。ネットワーク・コーディングの選択的な使用は、ノードが潜在的なボトルネックであるとの判定に基づく場合がある。解決策は、いくつかの実施態様ではブロックチェーン・ネットワークのコンテキストで適用できる。
【0011】
追加又は代替の態様では、本願は、各ノードが他のノードへの1つ又は複数の接続を有するノードのネットワークにおいてトランザクションを伝播するためのコンピュータで実施する方法を説明している。ノードのうちの1つのノードで実施されるこの方法は、ノードのうちの1つのノードがトランザクションの伝播のボトルネックであると判定するステップと;ノードのネットワーク内の1つ又は複数の第1のノードから複数の新しいトランザクションを第1の期間に亘って受信するステップと;ネットワーク・コーディング及びローカル・エンコーディング・ベクトルを使用して複数の新しいトランザクションを結合して、メッセージを生成するステップと;複数の新しいトランザクションを1つ又は複数の第2のノードに送信する代わりに、メッセージ及びグローバル・エンコーディング・ベクトルをノードのネットワーク内の1つ又は複数の第2のノードに送信するステップと;を含む。
【0012】
追加又は代替の態様では、本願は、プロセッサ、メモリ、ネットワーク・インターフェイス、及びプロセッサによって実行されると本明細書に記載の方法の1つ又は複数を実行する命令を含むアプリケーションを含むノードについて説明する。
【0013】
いくつかの実施態様では、方法又はノードは、ノードへのインリンク(in-link)の数とノードからのアウトリンク(out-link)の数とを評価することにより、ノードがボトルネックであると判定し、インリンクの数がアウトリンクの数を超える場合に、ノードがボトルネックであると判定する。評価は、複数の新しいトランザクションのうちの第1のトランザクションの受信時に行ってもよい。別の実施態様では、評価は、インリンクのカウント及びアウトリンクのカウントを経時的に追跡することにより行われ得、インリンクの数は平均であり、アウトリンクの数も平均である。いくつかの例示的な実施態様では、ノードは、複数の新しいトランザクションのうちの第1のトランザクションの受信に応じて、そのノードがボトルネックであるという判定を開始する。
【0014】
いくつかの実施態様では、停止条件が満たされたと判定されたことに応答して、結合及び送信するステップが実行される。一例では、停止条件は、複数の新しいトランザクションのうちの第1のトランザクションの受信又は複数のノードのうちの1つのノードがボトルネックであるという判定のいずれかからの期間の終了となる。別の例では、停止条件は、複数の新しいトランザクションが新しいトランザクションの最大数に達したことである。
【0015】
いくつかの実施態様では、メッセージの長さは、複数の新しいトランザクションの中で最長のトランザクションより長くはない。
【0016】
追加の又は代替の態様では、本願は、ノードのネットワークにおいてトランザクションを伝播するノードについて説明しており、各ノードは他のノードへの1つ又は複数の接続を有する。ノードは、プロセッサと;メモリと;ネットワーク・インターフェイスと;プロセッサ実行可能命令を含むアプリケーションと;を含む。命令は、プロセッサによって実行されると、プロセッサに、ある期間に亘って複数の着信トランザクションを受信すること;ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成すること;複合メッセージをネットワーク内の1つ又は複数のノードに送信すること;平衡定数パラメータと、その期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定すること;を実行させる。
【0017】
更なる追加又は代替の態様では、本願は、ノードのネットワークにおいてトランザクションを伝播するコンピュータで実施する方法を説明しており、各ノードが他のノードへの1つ又は複数の接続を有する。ノードのうちの1つのノードで実施される方法は、ある期間に亘って複数の着信トランザクションを受信するステップと;ネットワーク・コーディングを使用して複数の着信トランザクションを結合して、複合メッセージを生成するステップと;複合メッセージをネットワーク内の1つ又は複数のノードに送信するステップと;平衡定数パラメータと、その期間に亘って受信した複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと;を含む。
【0018】
いくつかの実施態様では、調整期間を使用して受信、結合、送信動作を繰り返し反復するステップと、後続の反復で使用するために、各反復後に更なる調整期間を決定するステップと、を含む。
【0019】
いくつかの実施態様では、調整期間を決定するステップは、平衡定数パラメータをトランザクション数で除算した値に基づいて調整期間を決定するステップを含む。場合によっては、調整期間を決定するステップは、調整期間を下回ってはならない最小期間と、調整期間を上回ってはならない最大期間とに依存する。
【0020】
いくつかの実施態様は、複数の調整期間に基づいて平均期間を決定するステップと、ノードのうちの1つのノードのメモリに平均期間を記憶させるステップとを含む。場合によっては、ノードのネットワーク内の1つ又は複数の隣接ノードに平均期間が送信される。
【0021】
いくつかの実施態様は、ノードのうちの1つのノードへの1つ又は複数のリンクに関する1つ又は複数のスループット推定値に基づいて、平衡定数パラメータを初期化するステップを含む。さらに他の実施態様は、推定初期期間及び推定初期トランザクション数に基づいて、平衡定数パラメータを初期化するステップを含み得る。
【0022】
いくつかの実施態様は、期間内に受信したトランザクション数がネットワーク・コーディングを使用するための最小数を超えていると決定するステップを含み、結合及び送信するステップはその決定を条件とする。
【0023】
追加又は代替の態様では、本願は、ノードのネットワーク内でトランザクションを伝播するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ可読媒体について説明しており、プロセッサ実行可能命令は、ノードのうちの1つのノードのプロセッサによって実行されたときに、プロセッサに、本明細書で説明する方法の1つ又は複数を実行させる。
【0024】
本明細書で説明する実施例の多くでは、ブロックチェーン・トランザクションを具体的に参照している。しかしながら、本明細書で説明する方法及び装置は、非ブロックチェーン・トランザクション伝播に関連して実施及び適用し得ることが理解されよう。
【図面の簡単な説明】
【0025】
本発明のこれら及び他の態様は、本明細書に記載の実施形態を参照して説明され、この実施形態から明らかになろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
【
図1】ブロックチェーンに関連する例示的なネットワークを示す図である。
【
図2】入力バッファ及び出力バッファを有する例示的なノードを図式的に示す図である。
【
図3】ネットワーク内のノードの簡略化した例示的なネットワークを示す図である。
【
図4】別の時点での
図3のネットワークを示す図である。
【
図5】例示的なネットワークの一部を図式的に示す図である。
【
図6】複数のインリンク及び1つのアウトリンクを有するノードを示す図である。
【
図7】ノードのネットワークにおいてトランザクションを伝播する例示的なプロセスをフローチャート形式で示す図である。
【
図8】ノードのネットワークにおいてトランザクションを伝播する別の例示的なプロセスをフローチャート形式で示す図である。
【
図9】トランザクションを伝播するためのノードのネットワークの例を示す図である。
【
図10】調整可能な期間を含むネットワーク・コーディングを使用してトランザクションを伝播する例示的な方法をフローチャート形式で示す図である。
【
図11】調整可能な期間を含むネットワーク・コーディングを使用してトランザクションを選択的に伝播する例示的な方法をフローチャート形式で示す図である。
【
図12】例示的なブロックチェーン・ノードをブロック図形式で示す図である。
【発明を実施するための形態】
【0026】
本願において、「及び/又は」という用語は、列挙された要素の全ての可能な組合せ及びサブコンビネーションを網羅することを意図しており、列挙された要素のいずれか1つのみ、サブコンビネーション、又は全ての要素を含み、必ずしも追加の要素を除外するものではない。
【0027】
本願において、「・・・又は・・・の少なくとも1つ」という句は、列挙された要素のいずれか1つ又は複数を網羅することを意図しており、列挙された要素のいずれか1つのみ、サブコンビネーション、又は全ての要素を含み、必ずしも追加要素を除外せず、必ずしも全ての要素を必要とするものではない。
【0028】
最初に、本明細書でブロックチェーン・ネットワーク100と呼ばれ得るブロックチェーンに関連する例示的なネットワークをブロック図形式で示す
図1を参照する。ブロックチェーン・ネットワーク100は、招待や他のメンバーの同意なしに、誰でも加入できるピアツーピア・オープンメンバーシップ・ネットワークである。ブロックチェーン・ネットワーク100が動作するブロックチェーン・プロトコルのインスタンスを実行する分散電子装置は、ブロックチェーン・ネットワーク100に参加することができる。そのような分散電子装置は、ノード102と呼ばれ得る。ブロックチェーン・プロトコルは、例えばビットコイン・プロトコル、又は他の暗号通貨であり得る。
【0029】
ブロックチェーン・プロトコルを実行し、且つブロックチェーン・ネットワーク100のノード102を形成する電子装置は、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブル・コンピュータ、又は他の電子装置等のコンピュータを含む様々なタイプのものであってよい。
【0030】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合に、ブロックチェーン・ネットワーク100は、少なくとも部分的にインターネットを介して実施され、いくつかのノード102は、地理的に分散した位置に配置され得る。
【0031】
ノード102は、ブロックにグループ化された全てのトランザクションのグローバル台帳をブロックチェーン上に維持し、各ブロックは以前のブロックのハッシュをチェーン内に含む。グローバル台帳は分散型台帳であり、各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを保存し得る。グローバル台帳に影響を与えるノード102によるトランザクションは、他のノード102によって検証され、それによってグローバル台帳の有効性が維持される。ビットコイン・プロトコルを使用するもの等のブロックチェーン・ネットワークの実装及び動作の詳細は、当業者には理解されよう。
【0032】
典型的には、各トランザクションには1つ又は複数の入力(inputs)と1つ又は複数の出力(outputs)がある。入力及び出力に埋め込まれたスクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。トランザクションの出力は、トランザクションの結果として値が転送されるアドレスであり得る。その値は、未使用のトランザクション出力(UTXO)としてその出力アドレスに関連付けられる。後続のトランザクションは、その値を使用又は分散するために、そのアドレスを入力として参照し得る。
【0033】
ノード102は、それらの機能に応じて、異なるタイプ又はカテゴリのものであり得る。ノード102には、ノード102に関連するウォレット、マイニング、完全なブロックチェーン・メンテナンス、ネットワーク・ルーティングの4つの基本機能があることが示唆される。これらの機能にはバリエーションがあり得る。ノード102は、複数の機能を有し得る。例えば、「フルノード」は4つの機能全てを提供する。例えば、デジタルウォレットで実施され得る軽量ノードは、ウォレットとネットワーク・ルーティング機能のみを備え得る。デジタルウォレットは、ブロックチェーン全体を保存するのではなく、ブロックヘッダーを追跡し続けることができ、ブロックヘッダーは、ブロックのクエリ時にインデックスとして機能する。ノード102は、TCP/IP(伝送制御プロトコル)等の接続指向プロトコルを使用して互いに通信する。
【0034】
殆どのブロックチェーン・ネットワークでは、管理プロトコルに関係なく、未確認のトランザクションのプール(典型的に「メモリプール(mempool)」と呼ばれる)を維持する全てのノードが新しいブロックに含まれるのを待っているトランザクションの今までの正確なデータベースを有するように、新しいトランザクションがネットワークを介して素早く伝播するのを確実にするのが有利である。マイニングノードは、この未確認のトランザクションのプールを利用して、潜在的な新しいブロックを構築する。場合によっては、マイニングノードは、マイニングのために未確認のトランザクションを新しいブロックにアセンブルできるように、完全なメモリプールをローカルに維持する。いくつかの実施形態では、ノードの別個のネットワーク(検証ノード等と呼ばれ得る)によってメモリプールを管理及び維持することができ、それらのノードは、一組の未確認トランザクションをメモリプールからマイニングノードに送信して、マイニングノードがブロックをマイニングしようとするのを可能にする。いくつかの実施態様では、複数のノードの間で分散ハッシュテーブルにメモリプールを保存することができる。構造に関係なく、新しいトランザクションはネットワークを介して伝播され、必要なノードにできるだけ早く到達することが望ましい。また、孤立ブロックの発生を減らすために、成功裏にマイニングされた新しいブロックをできるだけ早くネットワークを介して伝播することが望ましい。
【0035】
例として、ビットコイン・ネットワークの現在の実施態様では、新しいトランザクションを受信する各ノードはトランザクションを検証し、ノードが未だ新しいトランザクションを受信していない場合に、その検証したトランザクションを、接続している全てのノードに送信する。ビットコインの場合に、ノードはTCP/IP(伝送制御プロトコル)を使用する。新しいトランザクションを受信するノードは、利用可能な新しいトランザクションに関するデータとともにINVメッセージを各ピアノードに送信し、新しいトランザクションの受信に関心のある各ノードからGETDATAメッセージを受信する。次に、ノードは、トランザクションを(個別の)TCPメッセージで、そのトランザクションを要求した各ノードに送信する。
【0036】
ここで
図2を参照すると、
図2は、入力バッファ202及び出力バッファ204を有する例示的なノード200を概略的に示している。例示的なノード200は、intA、intB、intC、intD等と呼ばれる複数のピアノードとのネットワーク・インターフェイスを有する。入力バッファ202は、様々なピアノードからの着信トランザクションを示し、出力バッファ204は、特定の受信トランザクションのそれぞれのインターフェイスを介したピアノードへの送信を示す。ネットワーク・パケットが、ノード202のオペレーティング・システムによって提供されるプリミティブに従って、アプリケーションレベルで順次に送受信される。トランザクションxが単一のイーサネット(登録商標)/IPパケットに収まると仮定すると、m個のピアへの送信にはm個の異なる出力パケットのバッファリングが必要である。入力及び出力ネットワーク・パケットには、他の情報とともに、順次化された(serialized)トランザクションと、送信/受信ピアへのTCP/IP接続を表す論理インターフェイスIDとが含まれる。
【0037】
着信トランザクションを処理するための予想時間は、入力キュー(queues)Liの平均長(パケット単位)に依存する一方、処理したトランザクションを正しく送信するための予想時間は、出力キューL0の平均長に依存する。従って、トランザクションの効率的な中継は、Li値とL0値との両方の削減に依存している。ただし、トランザクションをピアに選択的に中継するための確率モデルは、L0に直接影響し、誘導によってLiにも影響する。
【0038】
現在のビットコインの実施態様では、INV及びGETDATAメッセージパケットはトランザクションと同じ方法でI/Oバッファにキューイングされ、送受信の遅延に深刻な影響を及ぼす。
【0039】
大量の高速トランザクションにブロックチェーンを使用するための提案がある。例えば、支払いの処理にブロックチェーンを使用することを検討する。支払い処理には、例えば、クレジットカード取引が含まれ得る。このようなトランザクションの量は、ブロックチェーン・ネットワークの現在の実施態様を圧倒するものである。従って、ノード同士の間でトランザクションを送信する等、ブロックチェーン・ネットワークの通信処理能力を向上させる方法及び装置を提供することは有益となろう。
【0040】
本願の一態様によれば、ブロックチェーン・ノードは、特定の期間に亘って新しいトランザクションをバッファリングし、次にネットワーク・コーディングを使用してトランザクションを単一のメッセージに結合し、その後、この結合したメッセージを1つ又は複数の他のブロックチェーン・ノードに送信する。つまり、ブロックチェーン・ノードは、新しいトランザクションをエンコード化して、新しいトランザクションを解くことができる方法で混合するメッセージを生成するが、結合メッセージを生成する。結合メッセージは、トランザクションの最大サイズに小さなオーバーヘッドを加えたものである。
【0041】
ブロックチェーン・ノードがネットワーク・コーディングを使用している場合に、ノードは、ノードにノードが受信したい新しいトランザクションのどのサブセットを選り取らせるのではなく、全ての新しいトランザクションをエンコード化されたメッセージの形式で送信するため、ノードは、TCP/IP INV及びGETDATAメッセージに依存することもなくなる。
【0042】
次に、ブロックチェーン・ネットワーク300内のノードの簡略化した例示的なネットワークを示す
図3を参照する。各ノードがネットワーク端末(すなわち、ブロックチェーン・ノード)を表す一方、エッジはノード同士の間のリンクを表す。この説明目的で、各リンクで一度に1ビットずつ送受信できると想定している。
【0043】
2つのノードが、ソースS1及びS2としてラベル付けされており、2つの新しいトランザクションTx1及びTx2を受信する。この例のブロックチェーン・ネットワーク300では、各ノードは未確認のトランザクションのメモリプールを維持するため、ノードが新しいトランザクションを受信すると、そのトランザクションは、ネットワークを介して他の全てのノードに伝播される。各ノードは、それぞれのローカルメモリプールで新しいトランザクションを検証及び保存し、新しいトランザクションを未だ有していないピアノードに転送する。ブロックチェーン・ネットワーク300のピアツーピアの性質により、全てのノードが新しいトランザクションを同時に受信するわけではなく、これは、新しいトランザクションがネットワーク300内の全てのノードに到達するまでに時間がかかることを意味する。例えば、ビットコイン・ネットワークの現在の実施態様では、新しい有効なトランザクションがビットコイン・ネットワークのノードの90%に到達するのに平均3.5秒かかる。理論的には、トランザクションの送信が即座に行われた場合、例えば、ネットワークの全てのノードに到達するためにt=0の場合に、ネットワークは、二重使用攻撃の可能性から保護される。従って、ブロックチェーン・ネットワークのスループットを向上させることは、システム全体のスケーラビリティ及び信頼性を実現するための重要な要素である。
【0044】
ブロックチェーン・ネットワーク300の2つのノードが、受信機R1及びR2としてラベル付けされる。ノードI1及びI2は、メモリプールのコピーを保存する場合も保存しない場合もある中間ノードを表すが、時刻tでのネットワーク300のボトルネックをより明確に表す。ノードI1が2つの新しいトランザクションTx1及びTx2を略同時に受信したときに、どちらのトランザクション最初に送信するかを決定する必要がある。つまり、I1からI2への発信エッジは、少なくとも時刻tでボトルネックになる。
【0045】
ネットワーク・コーディングを使用して、ノードI1は、新しいトランザクションTx1及びTx2を結合して、Tx1及びTx2の大きい方と同じサイズの複合メッセージMにすることができる。そのノードI1は、メッセージMをノードI2に送信し、ノードI2はメッセージMを受信機R1及びR2に転送する。受信機R1及びR2は、個々のトランザクションTx1及びTx2を回復させることができる。例えば、受信機R1は、Tx1及びMを受信する。MがTx1及びTx2の組み合わせに基づいているため、R1は方程式(Tx1、Tx1+Tx2)を解くだけでTx2を導き出すことができる。これに対して、R2は、Tx2を受信し、方程式(Tx2、Tx1+Tx2)を解いてTx1を導き出す必要がある。
【0046】
ボトルネックは、ネットワークの構成と、所与の時間にトランザクションが生成される場所に応じて、時間の経過とともに表示又は非表示になり得る。ボトルネックは、ネットワークのパフォーマンスを大幅に制限するノード同士の間のリンク(エッジ)であり、特にブロックチェーン・ネットワークの場合に、トランザクション(又はブロック)の伝送速度が低下する。ただし、ボトルネックの原因(ノード同士の間のリンク)はノードにある。
【0047】
ここで、
図4を参照すると、この
図4は、時刻T’の同じブロックチェーン・ネットワーク300を示している。この例では、トランザクションTx1はノードR1で受信され、トランザクションTx3はノードI2で受信される。この場合に、ノードI1で再びボトルネックとなるが、ただし今回は、ノードI1とノードS1との間のリンクに関して、Tx2とTx3との両方がノードI1に同時に到着するためである。ネットワーク・コーディングを使用して、ノードI1は、Tx2及びTx3をメッセージM’に結合できる。
【0048】
1つのオプションは、全ての状況で全てのノードにネットワーク・コーディングを適用させることである。ただし、その時点で有利であると予想され得る特定のノードでネットワーク・コーディングを選択的に適用することにより、パフォーマンスをさらに向上させることが可能である。例として、ノードはこのノードが所与の時点でボトルネックを表すかどうかを判定できる場合に、そのノードはネットワーク・コーディングをメッセージの送信に選択的又は適応的に適用できるが、そのノードがボトルネックではない場合に、そのノードは、通常のトランザクション送信を使用できる。
【0049】
従って、ノードは、所定の時点でボトルネックになる可能性があるかどうかを評価又は判定するように構成できる。ある意味では、これはインリンク(in-links)とアウトリンク(out-links)との間のバランスに基づいて決定され得る。つまり、所定の時点で、ノードは、1つ又は複数のリンクでトランザクションを受信し、それらのトランザクションを1つ又は複数のリンクで送信しようとする場合がある。ノード同士の間の接続(つまり、エッジ)は、ネットワーク内のトラフィックの流れに応じて、所与の時点でインリンク又はアウトリンクとして機能し得る。インリンクの数は「ファンイン(fan-in)」と呼ばれ、アウトリンクの数は「ファンアウト(fan-out)」と呼ばれる場合がある。
【0050】
一実施態様では、ブロックチェーン・ネットワーク内の少なくともいくつかのノードは、第1の隣接ノード(first-neighbour nodes)へのファンイン及びファンアウト・リンクの相対数を追跡するテーブル又は他のデータ構造を維持する。
図5は、第1のノードI1及び第2のノードI2が、それぞれ、テーブル又は他のデータ構造をローカルに保存する例示的なネットワークの一部を図式的に示しており、テーブル又は他のデータ構造は、所与の時点でそのノードのファンイン量とファンアウト量を特定する。相対的なファンイン及びファンアウトの数に基づいて、ノードは、このノードがボトルネックである可能性があるかどうかを判定できる。一般に、この判定は、インリンク(ファンイン)の数がアウトリンク(ファンアウト)の数を超えているかどうかに基づいている場合があり、その場合に、ノードがその時点でボトルネックになっている可能性がある。
【0051】
一実施例では、ノードがボトルネックであるかどうかの評価は、期間ΔΤに亘って行われる。テーブルの数量は、期間ΔΤに亘る平均ファンイン及びファンアウトであり得る。
【0052】
判定は、いくつかの実施態様ではネットワークトポロジの認識に一部基づいている場合もある。例えば、周辺ノードであるノードがボトルネックになることは殆どないが、中間ノードであるノードは、少なくとも場合によってはボトルネックになる可能性が高くなる。
【0053】
さらに他の実施態様では、ノードがボトルネックであるかどうかの判定は、出力キューのステータス、又は出力キューのバックログの経時的な評価に基づき得る。
【0054】
ボトルネックの判定又は識別は、いくつかの実施態様では、上記の要因の組合せ又はサブコンビネーションを含む場合がある。
【0055】
ネットワーク・コーディングは、当時の主要なパケット交換ネットワークの代替として、20年弱前に開発された。ネットワーク・コーディングは、ネットワークをリンク容量を有する有向グラフ(direct graph)(N,L)としてモデル化し、ノードn∈Nが、ブロードキャスト容量hを達成するレートで情報を受信機のセットR⊆Nに伝達できることを示し、ここでhは、ネットワークの内部ノードでエンコード化されるという条件で、sとr∈Rとの間の最小カットの値である。
【0056】
カットCが、グラフG=(V,E)の頂点Vを2つの互いに素なサブセットS及びTに分割することとして規定される。カットC=(S,T)のカットセットは、Sに一方のエンドポイント、Tに他方のエンドポイントを有するエッジのセット{(u,v)∈E|u∈S,v∈T}である。
【0057】
ネットワーク・コーディングの方法論の例は、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は、ネットワークNが、単位容量エッジ(e)、送信者s∈V、及び特定の数の受信者T⊆Eを有する非循環グラフG=(V,E)として表現できると述べている。ノードv=in(e)の各エッジe∈Eの出力は、vに入るエッジe’上のシンボルy(e’)の線形結合であるシンボルy(e)を有する。
図6は、ノードv及び出力y(e)を示している。特に、出力は、次式で与えられる。
【数1】
ここで、y(e
i’)=x
i、i=1,・・・,h、及びベクトルm
eは、エッジeのノードvでの符号化関数を表すローカル・エンコーディング・ベクトルであり、hは、エッジの最小数として送信者と受信者との間のカットでのブロードキャスト容量を示す。
【0058】
Chouは、任意のエッジe∈E上の出力y(e)が、ソースシンボルの線形結合
【数2】
であること、係数g(e)=[g
1(e),・・・,g
h(e)]のh次元ベクトルが、
【数3】
によって再帰的に取得でき、ここで、エッジe
i’上のg(e
i’)は、i番目の単位ベクトルに対して開始される、と述べている。ベクトルg(e)は、eに沿ったグローバル・エンコーディング・ベクトルと呼ばれ得る。そのh受信エッジに沿って以下のシンボルを受信する任意のノードは、
【数4】
グローバル・エンコーディング・ベクトルの行列G
tがランクhである場合に、ソースシンボルx
1,・・・,x
hを復元できる。上記の例では、ブロックチェーン・トランザクション・ネットワーク・コーディングに適用される場合に、トランザクションはアレイ[x
1,・・・,x
h]に記憶される。詳細については、Chouを参照されたい。
【0059】
発信エッジeのグローバル・エンコーディング・ベクトルは、着信エッジe’のグローバル・エンコーディング・ベクトルのローカル・エンコード化に基づくものとして特徴付けてもよい。
【0060】
ネットワーク・コーディングを使用して、ネットワークを介してトランザクションを伝播できることが理解されよう。また、ネットワーク・コーディングは、各トランザクションが少なくとも2つのノードによって保存される未確認トランザクションの分散ハッシュテーブルを実装するように設計されたオーバーレイネットワーク内で使用され、分散ハッシュテーブル内の冗長性を確保することもできる。この場合に、ネットワーク・コーディングを使用して、保存のために2つ以上のノードにトランザクションを送信できる。もっとも、ネットワーク・コーディングを使用すると、トランザクションを保存している2つ以上のノードが損失しても回復できるという追加の利点が得られる場合がある。中間ノードが、トランザクションに関連する結合データを含む1つ又は複数のメッセージを受信しているため、欠落しているトランザクションをネットワーク・コーディングメッセージから回復できる。
【0061】
ここで
図7を参照すると、
図7は、ブロックチェーン・ネットワークにおいてトランザクションを伝播するための例示的なプロセス700をフローチャート形式で示している。プロセス700は、ブロックチェーン・ネットワークのノードによって実施される。この文脈では、ノードは、マイニングノード、フルノード、検証ノード、又はブロックチェーン・ネットワーク内の他のタイプの離散ブロックチェーン・ノードを指すと理解され得る。ノードは、ネットワーク接続、コンピューティングリソース、及びブロックチェーン・プロトコルを実装する実行ソフトウェアを含むコンピューティング装置である。
【0062】
動作702において、ノードは、そのノードが時刻Tにおけるネットワークの潜在的なボトルネックであると判定する。この判定は、上述したように、時刻Tにおけるファンイン及びファンアウトの比較に基づいてもよい。例えば、ファンインが時刻Tでファンアウトを超えると、ノードはこのノードがボトルネックであると判定し得る。ノードがボトルネックであるかどうかを判定する際に、代替的又は追加的に他の要因を考慮することができる。例には、ある期間に亘る平均ファンイン及びファンアウト、ネットワークトポロジのノードの位置、ノードの出力キューの現在又は過去のステータス、又は受信したトランザクションを伝播するためのノード容量に関連する他の要因が含まれる。
【0063】
動作704において、そのノードがボトルネックであると判定されると、ノードは期間ΔΤに亘ってトランザクションを蓄積する。期間は、所定の時間の長さとすることができる。一部の実装例では、期間は、ネットワークトラフィックの測定値、地理的情報、又はその両方に基づいて変化し得る。期間は固定時間ではなく、むしろ最小数のトランザクションを受信するまでトランザクションの蓄積が発生する可能性があり、蓄積されたトランザクションが長く保持されない場合があるので、さらに最大時間になる可能性がある。
【0064】
動作706において、ノードが蓄積した複数のトランザクションは、ネットワーク・コーディングを使用して単一のメッセージに結合される。メッセージは、いくつかの実施態様ではトランザクションの最長の長さと同じ長さになる場合がある。いくつかの実施態様では、メッセージの長さ(ビット単位)がトランザクションの最長の長さを超えない場合がある。メッセージは、ローカル・エンコーディング・ベクトル及びネットワーク・コーディング・アルゴリズムを使用して生成される。
【0065】
次に、動作708において、ノードは、メッセージ及びグローバル・エンコーディング・ベクトルを1つ又は複数のノードに送信する。実際のトランザクションを送信する代わりにメッセージが送信される。すなわち、ノードは、複数の蓄積されたトランザクションを送信せず、代わりに、メッセージ及びグローバル・エンコーディング・ベクトルを全てのアウトリンク上のピアノードに送信する。
【0066】
ここで
図8を参照すると、
図8は、ブロックチェーン・ネットワークにおいてトランザクションを伝播するための例示的な方法800をフローチャート形式で示している。上述したように、方法800は、複数のインリンク及びアウトリンクを有するブロックチェーン・ノードで実施され得る。
【0067】
ブロックチェーン・ノードは、動作802においてトランザクションを受信する。受信したトランザクションは、インリンクを介して受信される。ブロックチェーンは、プロトコル要件に対してトランザクションを検証して、トランザクションが正当であることを確認する。動作804において、ノードは、このノードがトランザクションに関してボトルネックであるかどうかを判定し得る。この判定は、その時点でのインリンク(ファンイン)とアウトリンク(ファンアウト)との間のバランスの評価に基づく場合がある。上述したように、判定は他の要因に基づいてもよい。
【0068】
ノードがボトルネックではないと判定した場合に、動作806において、ノードは、通常どおり、トランザクションをアウトリンクでブロックチェーン・ネットワーク内の1つ又は複数のピアノードに転送する。しかしながら、ノードがボトルネックである可能性が高いと判定した場合に、動作807において、ノードはトランザクションをメモリ(例えば、バッファ又は他のメモリ要素)に保存する。
【0069】
動作808によって示されるように、ノードはトランザクションを受信し続け、停止条件が満たされたと判定されるまでそれらトランザクションを保存する。この例では、停止条件は持続時間ΔΤが経過したことである。持続時間は、例えば、ノードがボトルネックであるという判定から、又は動作802での第1のトランザクションの受信から開始することができる。持続時間の代わりに他の条件、例えば、メモリ内のトランザクションの最大数の蓄積、又はそのような要因の組合せを使用できる。
【0070】
停止条件が満たされると、例えばこの場合、ΔΤが経過した場合に、動作812で示されるように、ノードは、ネットワーク・コーディング及びローカル・エンコーディング・ベクトルを使用して、保存されたトランザクションからメッセージMを構築する。動作814において、ノードは、このメッセージ及びグローバル・エンコーディング・ベクトルを全ての外部リンクを介して他のノードに送信する。
【0071】
ネットワーク・コーディングの調整可能な期間
いくつかの実施態様では、期間ΔΤは固定されない場合がある。すなわち、ノードは、ネットワークの特性又はノードに出入りするトランザクション・トラフィックに基づいて、時々ΔΤを調整することができる。いくつかの実施形態では、期間ΔΤは、各期間ΔTが終了した後に調整され、その結果、期間は現在のトラフィックレベルに常に適応している。いくつかの実施形態では、期間ΔΤに対する調整は、最小期間及び最大期間内に制約される。いくつかの実施態様では、期間ΔΤは、2、5、10、又は他の期間毎の後に等、定期的にのみ調整されるか、又は決定された調整が閾値値量又はパーセンテージ以上に期間を変更する場合にのみ調整される。
【0072】
トラフィック条件に適応するために、ノードは「スループット」の概念で動作することができる。ノードは、ネットワーク内の他の複数のノードへのインリンク及びアウトリンクを有している場合がある。次に、ノード900の例示的なネットワークを図式的に示す
図9を参照する。ノードN3は、ノードN1、N2、N4、N5、及びN6への入出力リンクを有する。これらのノードは、(論理的な)第1の隣接ノードとして特徴付けられ得る。一般に、ノードは第1の隣接ノードを認識している。つまり、これらのノードは、トランザクションを(ネットワークの別のノードを経由することなく)直接的に受信する、又はトランザクションを直接的に送信する。「第1の隣接ノード(first neighbour)」は、必ずしも地理的に近い場所にある必要はなく、多くのネットワーク要素及びリンクを通過することで到達できる場合がある(別のノードを経由する場合を除く)ことに留意されたい。
【0073】
ノードN3は、以下の表1の例のように、ノードN3のローカルに保存されているテーブルの第1の隣接ノードを追跡する。
【表1】
【0074】
上記の例では、ノードN3は、表内のノードから各インリンクを介して受信したメッセージのサイズs
iと、各アウトリンクを介して表内のノードに送信したメッセージのサイズs
0とを追跡する。リンクのスループットは、入力と出力との間で均等に割り当てられると仮定され得る。つまり、チャネルの帯域幅は均等に分割されるが、その仮定は常に当てはまるとは限らない。ただし、その仮定に基づいて、解析期間に亘るリンク又はチャネルのスループットTrは、次式で与えられる。
【数5】
つまり、スループットTrは、リンク上で送受信されるデータの総量以上でなければならない。
【0075】
インリンクとアウトリンクのスループットが等しいという仮定は、実際の実施態様では尊重されない可能性があることが理解されよう。従って、バランス・パラメータγ∈[0,1]は、次のような入力/出力スループット比として規定できる。
【数6】
【0076】
上記の式で、パラメータΔΤは、送受信されるメッセージのサイズが測定される期間を示す。上記の式は、チャネル又はリンクの実際の最大スループットTrを示すものではなく、むしろ、リンク又はチャネルのスループットTrは、少なくとも実際の使用データ(実際に送信/受信したメッセージのサイズ)によって示されるのと同じ大きさにしなければならないことに留意されたい。従って、場合によっては、リンクのスループットTrは、リンクを介して送受信されるメッセージのサイズの測定値等の履歴使用データに基づいて推定される場合がある。
【0077】
リンクのスループットTrは、他のいくつかの経験的データを使用して推定できる。例えば、TCP/IPに基づいて動作するネットワークの場合に(つまり、ビットコインは一例である)、TCP受信ウィンドウ(RWIN)及びラウンドトリップタイム(RTT)を使用してリンクのスループットを決定できる場合がある。RWINは、ノードが確認応答を送信者に送信せずに受信できるデータの量を示し、ネットワークで使用される適切な通信プロトコルによって規定され得る。RTTは、無視できるサイズのメッセージがリンクの一端にあるノードからリンクの他端にあるノードに行き、また戻るために必要な時間の測定値であり、これは、時にはpingメッセージ等と呼ばれ得る。
【0078】
スループットTrを決定するために、隣接ノードからのスループット情報の取得、プリセット又は所定のスループット推定値、又はスループット推定値の他のソースの使用を含む他のメカニズムも利用可能である。
【0079】
本願のいくつかの実施態様において、ノードは、その様々なリンクのスループット推定値に関するローカルに保存された情報を維持してもよい。リンクは、第1の隣接ノードへのリンクである場合がある。例えば、上記の表1について、リンク毎のスループットの推定値に関する列を追加するように修正できる。
【表2】
ノードは、利用可能なリンクのスループットの中央値又は平均値をさらに決定し得る。
【0080】
上記で議論したように、ネットワーク・コーディングでは、個々のメッセージを伝播する代わりに、期間ΔΤに亘って受信したトランザクションのセットを結合して、複合メッセージMを生成し、この複合メッセージMをノードからアウトリンクを介して送信する。本願のいくつかの実施態様では、期間ΔΤは、スループット及び受信したトランザクション数に少なくとも部分的に基づいてもよい。
【0081】
スループットは、上述したように、ノードの利用可能なリンクのスループットの中央値又は平均値に基づいて設定できる。
【0082】
あるいはまた、場合によっては、ノードは、ネットワークに関するいくつかの仮定に基づいて、スループットをグローバル推定スループット値に初期化することができる。例えば、期間ΔTはまずプリセット値に初期化され、トランザクション数は推定プリセット値に設定され、そこから推定スループットが決定され得る。ビットコイン・ネットワークの特定の例では、プリセット期間ΔΤは3.5秒とすることができる。これは、この時間が、トランザクションがビットコイン・ネットワーク内のノードの90%に到達するのに必要な概算時間だからである。期間ΔTは、他の実施態様では別の値に初期化してもよい。期間ΔΤ内に受信できるトランザクション数は、プリセット値であると最初に仮定してもよい。ビットコイン・ネットワークの特定の例では、トランザクション数Nは、(ビットコインの現在の実施態様では)平均ブロックが約2000のトランザクションを含み、2000を3.5で除算した約500に基づいて500に初期化され得る。他の実施態様では他の初期化値が使用され得る。
【0083】
期間ΔΤ及びトランザクション数の初期値を選択すると、これらのパラメータ同士の間の関係は、期間ΔΤとトランザクション数の積として確立され得る。
K=ΔT0・N0
ここで、Kは、期間ΔΤ及びトランザクション数Nに対して反比例する定数として設定される。上記の式では、ΔT0は期間ΔΤの初期化値であり、N0は受信したトランザクション数の初期化値である。他の実施形態では、上述したように、定数Kは、他の仮定又は測定に基づいて初期化してもよい。定数Kは、NとΔΤとの間の反比例関係に関連する限り、スループットTrに関連し、Nトランザクションのそれぞれが特定のサイズを有する場合に、Nトランザクションは、ΔΤの期間に亘って受信した特定の量のデータ、例えばsiを累積的に表す。場合によっては、定数Kは、推定又は目標スループットTrに部分的に基づいて決定してもよい。
【0084】
スループットTrの概念と定数Kとの間の関係は、次の式で表される。
Tri=Ni-1(全体のサイズ/K)
【0085】
初期定数Kを決定すると、ノードは、ΔΤの過程でインリンクで実際に受信したトランザクション数を監視し、ΔΤを調整するかどうかを決定する。少なくとも1つの実施態様では、ΔΤの調整は、少なくとも1つの以前のΔΤで受信したトランザクション数及び定数Kに基づく。例えば、ΔΤiを決定するための1つのメカニズムは、以下の式によって与えられる。
ΔTi=K/Ni-1
ここで、iはインデックスである。この簡単な例では、時間iのΔΤは、直前のΔΤで受信したトランザクション数に基づいており、Kは定数である。ある意味では、Kは、期間とトランザクション数との積に基づいている限り、平衡定数とラベル付けされ得、また平衡定数を満たすには期間内に受信されるトランザクションが少な過ぎるという範囲で、平衡定数を維持しようとするために期間を長くすることができる。
【0086】
別の例示的な実施態様では、受信したトランザクション数は、以前の期間ΔTi-1だけに基づかなくてもよく、代わりに2つ以上の以前の期間の平均に基づいてもよい。場合によっては、平均を加重平均として決定して、より最近の期間により大きな重みを与えてもよい。
【0087】
他の例示的な実施態様では、スループットは、いくつかの要因のいずれか1つに基づいて経時的に調整してもよい。一例では、定数Kは、1つ又は複数の隣接ノードからスループットの中央値又は平均値に基づいて初期化してもよい。
【0088】
ここで
図10を参照すると、
図10は、ネットワーク・コーディングを使用してノードのネットワークにおいてトランザクションを伝播するための1つの例示的な方法1000をフローチャート形式で示している。方法1000は、ノードのネットワーク内のノードのうちの1つのノードで実施される。この例では、ノードは、トランザクションの伝播にネットワーク・コーディングを使用するように構成される。
【0089】
動作1002において、特定のパラメータが初期化され得る。例えば、初期期間ΔT0を所定の値に設定してもよい。上述したように、場合によっては、初期期間T0は、隣接ノードによって使用されている現在の期間ΔTから導出された値に設定してもよい。場合によっては、初期期間は、所定のスループット値及び予想されるトランザクション数に基づいて計算してもよい。上記の組合せを含む他のメカニズムを使用して、初期期間ΔT0を決定してもよい。
【0090】
オプションで、そのパラメータが初期期間ΔT0又は定数K、すなわち平衡定数を決定する際に使用される場合に、トランザクション数N0も初期化することができる。場合によっては、例えば以下のような式を使用して、トランザクション数N0を用いて定数Kを決定できる。
K=ΔT0・N0
【0091】
場合によっては、トランザクション数N0は、所定の定数Kを使用して、例えば以下のような式を使用して、初期期間ΔT0を決定するための基準として使用できる。
ΔT0=K/N0
【0092】
定数Kは、初期期間ΔT0及びトランザクション数N0を使用して決定できるが、他の場合には、プリセット又は所定の平衡定数値に設定できる。使用されるネットワーク又はプロトコルの変更がノードへのリンクの可能な特性に影響を及ぼし、トランザクション量及び/又はスループットに影響を与える場合に、ネットワークが変化すると、ノードは定数Kの所定の値を更新し得る。場合によっては、定数Kは経験的に決定され得る。例えば、定数Kは、スループットに関する過去のデータを使用して決定され得る。別の例では、上述したように、定数Kは、ラウンドトリップタイム試験に基づいて決定され得る。さらに別の例では、定数Kは、1つ又は複数の隣接ノードでのスループットに関するデータに基づいて決定され得る。例として、現在のノードは、隣接ノードに関連するスループット値を平均し、その平均値を使用して平衡定数を推定し、定数Kに達することができる。
【0093】
動作1004において、少なくとも初期期間ΔT0及び定数Kを初期化した後に、ノードは、そのインリンクでトランザクションを受信する。トランザクションは、ノードのメモリにバッファリングされる。動作1006によって示されるように、ノードは、期間ΔTiが終了するまで、そのインリンク上でトランザクションを受信して保持し続ける。iは単なるインデックスであり、iは、最初0に設定されることが理解されよう。
【0094】
期間が終了すると、動作1008において、ネットワーク・コーディングを使用してトランザクションが送信される。これには、ネットワーク・コーディング操作を使用してトランザクションを結合してメッセージMを生成し、このメッセージをノードのアウトリンクを介して送信することが含まれる。
【0095】
動作1010において、インデックスiがインクリメントされ、ノードは、動作1012において、期間ΔTiを更新する。この例では、更新された期間ΔTiは、定数Kを、以前の期間ΔTi-1の間に受信したトランザクションの実際の数又はカウントで割った値に基づいている。期間ΔTiの調整は、それを超えることができない最大値又はそれを下回ることができない最小値等の、特定の制約を受ける場合がある。いくつかの実施態様では、調整は、複数の以前の期間及びこれらの期間内に受信したトランザクション数に基づいてもよい。いくつかの実施態様では、例えば、反復毎に特定のパーセンテージ以下の変化等、異なる又は追加の制約が期間ΔTiへの調整に課せられる場合がある。
【0096】
この例では、ノードは、ネットワーク・コーディングを使用して、各反復でトランザクションを送信する。別の例示的な実施態様では、ノードは、期間内のトランザクションの量によってネットワーク・コーディングの使用が正当化されるときに、ネットワーク・コーディングを選択的に使用することができる。次に
図11を参照すると、
図11は、ノードのネットワークにおいてトランザクションを伝播するための例示的な方法1100をフローチャート形式で示している。
【0097】
動作1102、1104、及び1106は、上述した
図10の動作1002、1004、及び1006に対応する。動作1108において、ノードは、ネットワーク・コーディングを使用するのが正当化されるのに十分な数のトランザクションをΔT
i中に受信したかどうかを評価する。いくつかの例では、この評価には、受信したトランザクション数N
iを、ネットワーク・コーディングの使用のために規定されている最小数のトランザクションN
minと比較することが含まれる。最小値を満たしている場合に、動作1112において、トランザクションは、ネットワーク・コーディングを使用して送信される。最小値を満たしていない場合に、動作1110において、トランザクションは、通常の非ネットワーク・コーディング送信を使用して送信される。
【0098】
動作1114及び1116は、上述した
図10の動作1010及び1012に対応する。
【0099】
例示的な方法1000及び1100の様々な動作又はステップは、プロセスの動作原理を変更することなく、改変され、場合によっては省略され得ることが理解されよう。プロセスの動作原理を変更することなく、図示されていない追加の動作を追加することもできる。そのような変形は全て、本明細書に含まれることが意図されている。
【0100】
各ノードは、その現在の期間ΔΤ(又は、場合によっては、移動平均期間又は加重平均期間等)の記録を維持し、その現在の期間ΔΤを隣接するノードに定期的に通知してもよい。このようにして、各ノードは、その隣接ノードによって使用されている期間ΔΤを追跡し得る。従って、新しいノードがネットワークに加入すると、ネットワークに関する仮定を使用してノードのパラメータを初期化する代わりに、ノードは、その隣接ノードのパラメータに基づいてそのパラメータを初期化できる。例えば、新しいノードは、その第1の隣接ノードによって使用される期間ΔΤ(又は平均期間ΔΤ)を取得し、その隣接ノードの期間の平均又は他の組合せに基づいてその初期期間ΔTを設定し得る。これにより、新しいノードのネットワークの特性への適応が加速され、適応の速度が向上する。
【0101】
次に、
図12を参照すると、
図12は、参加ノード1200の簡略化された例をブロック図形式で示す。ノード1200は、1つ又は複数のマイクロプロセッサ、特定用途向け集積チップ(ASIC)、マイクロコントローラー、又は同様のコンピュータ処理装置を含み得るプロセッサ1202を含む。ノード1200は、値、変数、場合によってはプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ1204と、有線又は無線ネットワークを介したネットワーク接続を提供するネットワーク・インターフェイス1206とをさらに含む。
【0102】
ノード1200は、プロセッサ実行可能命令を含むプロセッサ実行可能なブロックチェーン・アプリケーション1208を含み、命令が実行されると、プロセッサ1202に本明細書に記載の機能又は動作の1つ又は複数を実行させる。
【0103】
本明細書で説明する装置及びプロセス、並びにノードを構成するために説明した方法/プロセスを実施するモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を使用して実現できることが理解されよう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規約、データ構造、又は他のそのような実装の詳細に限定されるものではない。
【0104】
上述した実施形態は本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む(comprising, comprises)」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む(comprises, comprising)」は「含む、有する(includes, including)」又は「~構成される(consists of, consisting of)」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化される。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【0105】
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
ノードのネットワークにおいてトランザクションを伝播するノードであって、各ノードは他のノードへの1つ又は複数の接続を有しており、当該ノードは、
プロセッサと、
メモリと、
ネットワーク・インターフェイスと、
プロセッサ実行可能命令を含むアプリケーションと、を含んでおり、
前記命令が前記プロセッサによって実行されると、該プロセッサに、
ある期間に亘って複数の着信トランザクションを受信すること、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成すること、
該複合メッセージを前記ネットワーク内の1つ又は複数のノードに送信すること、及び
平衡定数パラメータと、前記期間に亘って受信した前記複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定すること、を実行させる、
ノード。
[実施例2]
前記命令は、実行されると、前記プロセッサに、前記調整期間を使用して前記受信、結合、及び送信する動作を繰り返し反復すること、及び後続の反復で使用するために、各反復後に、更なる調整期間を決定すること、をさらに行わせる、実施例1に記載のノード。
[実施例3]
前記命令は、実行されると、前記プロセッサに、前記平衡定数パラメータを前記トランザクション数で除算した値に基づいて前記調整期間を決定することにより、前記調整期間を決定することを行わせる、実施例1又は2に記載のノード。
[実施例4]
前記調整期間を決定することは、前記調整期間を下回ることができない最小期間と、前記調整期間を上回ることができない最大期間とに依存する、実施例3に記載のノード。
[実施例5]
前記命令は、実行されると、前記プロセッサに、複数の調整期間に基づいて平均期間を決定すること、及び該平均期間をメモリに記憶することをさらに行わせる、実施例1乃至4のいずれか一項に記載のノード。
[実施例6]
前記命令は、実行されると、前記プロセッサに、前記ノードのネットワーク内の1つ又は複数の隣接ノードに前記平均期間を送信することをさらに行わせる、実施例5に記載のノード。
[実施例7]
前記命令は、実行されると、前記プロセッサに、前記ノードのうちの1つのノードへの1つ又は複数のリンクに関する1つ又は複数のスループット推定値に基づいて、前記平衡定数パラメータを初期化することをさらに行わせる、実施例1乃至6のいずれか一項に記載のノード。
[実施例8]
前記命令は、実行されると、前記プロセッサに、推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化することをさらに行わせる、実施例1乃至6のいずれか一項に記載のノード。
[実施例9]
前記命令は、実行されると、前記プロセッサに、前記期間内に受信した前記トランザクション数がネットワーク・コーディングを使用するための最小数を超えると決定することをさらに行わせ、前記結合及び送信する動作は、その決定を条件とする、実施例1乃至8のいずれか一項に記載のノード。
[実施例10]
ノードのネットワークにおいてトランザクションを伝播するコンピュータで実施する方法であって、各ノードは他のノードへの1つ又は複数の接続を有しており、当該方法は、前記ノードのうちの1つのノードで実施され、
ある期間に亘って複数の着信トランザクションを受信するステップと、
ネットワーク・コーディングを使用して前記複数の着信トランザクションを結合して、複合メッセージを生成するステップと、
該複合メッセージを前記ネットワーク内の1つ又は複数のノードに送信するステップと、
平衡定数パラメータと、前記期間に亘って受信した前記複数の着信トランザクションのトランザクション数とに基づいて、調整期間を決定するステップと、を含む、
方法。
[実施例11]
前記調整期間を使用して前記受信、結合、及び送信する動作を繰り返し反復するステップと、後続の反復で使用するために、各反復後に、更なる調整期間を決定するステップと、をさらに含む、実施例10に記載の方法。
[実施例12]
前記調整期間を決定するステップは、前記平衡定数パラメータを前記トランザクション数で除算した値に基づいて前記調整期間を決定するステップを含む、実施例10に記載の方法。
[実施例13]
前記調整期間を決定するステップは、前記調整期間を下回ることができない最小期間と、前記調整期間を上回ることができない最大期間とに依存する、実施例12に記載の方法。
[実施例14]
複数の調整期間に基づいて平均期間を決定するステップと、前記ノードのうちの1つのノードのメモリに前記平均期間を記憶させるステップと、をさらに含む、実施例10に記載の方法。
[実施例15]
前記ノードのネットワーク内の1つ又は複数の隣接ノードに前記平均期間を送信するステップをさらに含む、実施例14に記載の方法。
[実施例16]
前記ノードのうちの1つのノードへの1つ又は複数のリンクに関する1つ又は複数のスループット推定値に基づいて、前記平衡定数パラメータを初期化するステップをさらに含む、実施例10に記載の方法。
[実施例17]
推定初期期間及び推定初期トランザクション数に基づいて、前記平衡定数パラメータを初期化するステップをさらに含む、実施例10に記載の方法。
[実施例18]
前記期間内に受信した前記トランザクション数がネットワーク・コーディングを使用するための最小数を超えていると決定するステップをさらに含み、前記結合及び送信するステップは、その決定を条件とする、実施例10に記載の方法。
[実施例19]
複数の参加ノードの間のトランザクションに参加するためのプロセッサ実行可能命令を記憶する非一時的なプロセッサ可読媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの1つのノードのプロセッサによって実行されると、該プロセッサに実施例10乃至18のいずれか一項に記載の方法を実行させる、非一時的なプロセッサ可読媒体。
【外国語明細書】