(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023065543
(43)【公開日】2023-05-12
(54)【発明の名称】ブロックチェーンネットワークにおいてトランザクションを伝播するためにネットワークコーディングを選択的に使用する方法及びシステム
(51)【国際特許分類】
H04L 47/12 20220101AFI20230502BHJP
H04L 45/28 20220101ALI20230502BHJP
H04L 47/43 20220101ALI20230502BHJP
【FI】
H04L47/12
H04L45/28
H04L47/43
【審査請求】有
【請求項の数】19
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023029326
(22)【出願日】2023-02-28
(62)【分割の表示】P 2019565427の分割
【原出願日】2018-06-04
(31)【優先権主張番号】1709219.8
(32)【優先日】2017-06-09
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】マデオ,シモーネ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
(57)【要約】 (修正有)
【課題】ブロックチェーンネットワークにおいてトランザクション高速な伝播を可能にする方法及び装置を提供する。
【解決手段】ブロックチェーンネットワークにおいてトランザクションを伝播する処理は、ノードがトランザクションの伝播に対するボトルネックであるかどうかを決定し、ノードがボトルネックであるとの決定が行われた場合は、ネットワークインターフェースを介して、期間ΔTにわたりノードのネットワーク内の1つ以上の第1のノードから複数の新しいトランザクションを受信し、複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成し、メッセージ及びグローバルエンコーディングベクトルを1つ以上の第2のノードに送信する。ノードがボトルネックでないとの決定が行われた場合は、トランザクションの通常の伝送を使用する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
ノードのネットワークにおいてトランザクションを伝播するノードであって、各ノードは他のノードに対する1つ以上の接続を有し、前記ノードは、
プロセッサと、
メモリと、
ネットワークインターフェースと、
プロセッサ実行可能命令を含むアプリケーションと、を含み、
前記プロセッサ実行可能命令は、前記プロセッサにより実行されたときに前記プロセッサに、
前記ノードがトランザクションの伝播に対するボトルネックであるかどうかを決定し、
前記ノードがボトルネックであるとの前記決定が行われた場合、
前記ネットワークインターフェースを介して、及び第1の期間にわたり、前記ノードのネットワーク内の1つ以上の第1のノードから複数の新しいトランザクションを受信し、
前記複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成し、
前記複数の新しいトランザクションを前記ノードのネットワーク内の1つ以上の第2のノードに送信する代わりに、前記メッセージ及びグローバルエンコーディングベクトルを前記1つ以上の第2のノードに送信し、
前記ノードがボトルネックでないとの前記決定が行われた場合、
トランザクションの通常の伝送を使用する
ことをさせる、ノード。
【請求項2】
前記命令は、実行されたときに前記プロセッサに、前記ノードへのインリンクの数及び前記ノードからのアウトリンクの数を評価することと、前記インリンクの数が前記アウトリンクの数を超えているとき前記ノードのうちの前記1つがボトルネックであると決定することとにより、前記ノードのうちの前記1つがボトルネックであると決定することをさせる、請求項1に記載のノード。
【請求項3】
前記評価することは、前記複数の新しいトランザクションのうち最初のトランザクションの受信のときに評価することを含む、請求項2に記載のノード。
【請求項4】
前記評価することは、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡することを含み、前記インリンクの数は平均であり、前記アウトリンクの数は平均である、請求項2に記載のノード。
【請求項5】
前記命令は、実行されたときに前記プロセッサに、前記複数の新しいトランザクションのうち最初のトランザクションの受信に応答して、前記ノードのうちの前記1つがボトルネックであるとの前記決定を開始することをさせる、請求項1乃至4のうちいずれか1項に記載のノード。
【請求項6】
前記命令は、実行されたときに前記プロセッサに、停止条件が満たされたとの決定に応答して前記結合及び送信を実行することをさせる、請求項1乃至5のうちいずれか1項に記載のノード。
【請求項7】
前記停止条件は、前記複数の新しいトランザクションのうち最初のものの受信か又は前記ノードのうちの前記1つがボトルネックであるとの前記決定かのいずれかからの継続時間の満了を含む、請求項6に記載のノード。
【請求項8】
前記停止条件は、前記複数の新しいトランザクションが新しいトランザクションの最大数に達することを含む、請求項6に記載のノード。
【請求項9】
前記メッセージは、前記複数の新しいトランザクションの中の最長トランザクションより長くない長さを有する、請求項1乃至8のうちいずれか1項に記載のノード。
【請求項10】
ノードのネットワークにおいてトランザクションを伝播する、コンピュータにより実現される方法であって、各ノードは他のノードに対する1つ以上の接続を有し、前記方法は、前記ノードうちの1つで実現され、
前記ノードのうちの前記1つがトランザクションの伝播に対するボトルネックであると決定するステップと、
前記決定に基づいて、前記決定が、前記ノードのうちの前記1つがボトルネックであることである場合、
第1の期間にわたり、前記ノードのネットワーク内の1つ以上の第1のノードから複数の新しいトランザクションを受信するステップと、
前記複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成するステップと、
前記複数の新しいトランザクションを前記ノードのネットワーク内の1つ以上の第2のノードに送信する代わりに、前記メッセージ及びグローバルエンコーディングベクトルを前記1つ以上の第2のノードに送信するステップと、
前記決定が、前記ノードのうちの前記1つがボトルネックでないことである場合、トランザクションの通常の伝送を使用するステップと、
を含む方法。
【請求項11】
前記ノードのうちの前記1つがボトルネックであると決定するステップは、前記ノードへのインリンクの数及び前記ノードからのアウトリンクの数を評価するステップと、前記インリンクの数が前記アウトリンクの数を超えているとき前記ノードのうちの前記1つがボトルネックであると決定するステップとを含む、請求項10に記載の方法。
【請求項12】
前記評価するステップは、前記複数の新しいトランザクションのうち最初のトランザクションの受信のときに評価するステップを含む、請求項11に記載の方法。
【請求項13】
前記評価するステップは、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡するステップを含み、前記インリンクの数は平均であり、前記アウトリンクの数は平均である、請求項11に記載の方法。
【請求項14】
前記ノードのうちの前記1つがボトルネックであると決定するステップは、前記複数の新しいトランザクションのうち最初のトランザクションの受信に応答して開始される、請求項10乃至13のうちいずれか1項に記載の方法。
【請求項15】
前記結合するステップ及び送信するステップは、停止条件が満たされたとの決定に応答して生じる、請求項10乃至14のうちいずれか1項に記載の方法。
【請求項16】
前記停止条件は、前記複数の新しいトランザクションのうち最初のものの受信と前記ノードのうちの前記1つがボトルネックであるとの前記決定とのいずれかからの継続時間の満了を含む、請求項15に記載の方法。
【請求項17】
前記停止条件は、前記複数の新しいトランザクションが新しいトランザクションの最大数に達することを含む、請求項15に記載の方法。
【請求項18】
前記メッセージは、前記複数の新しいトランザクションの中の最長トランザクションより長くない長さを有する、請求項10乃至17のうちいずれか1項に記載の方法。
【請求項19】
複数の参加ノード間のトランザクションに参加するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの1つにおけるプロセッサにより実行されたときに前記プロセッサに、請求項10乃至18のうちいずれか1項に記載の方法を実行させる、非一時的プロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ネットワーク内でメッセージ及びデータを伝播することに関し、より詳細には、動作処理及び移転速度を改善するための方法及び装置に関する。
【背景技術】
【0002】
本文献では、用語「ブロックチェーン」を用いて、電子的なコンピュータベースの分散台帳の全ての形態を含める。これらには、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可あり(permissioned)及び許可なし(un-permissioned)台帳、共有台帳、及びこれらの変形が含まれるが、これらに限定されない。ブロックチェーン技術の最も広く知られている適用はビットコイン(登録商標)台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、簡便さ及び例示の目的でビットコインが参照されることがあるが、本発明はビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。
【0003】
ブロックチェーンは、合意に基づく電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実現され、同様に、ブロックはトランザクションから構成される。各トランザクション(Tx)は、ブロックチェーンシステム内の参加者間のデジタルアセットの制御の移転をエンコードするデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【0004】
新しいトランザクションを受信したネットワークノードは、すぐにそのトランザクションをネットワーク内の他のノードへプッシュするよう試みる。新しいトランザクションを他のノードに伝送する前に、それは「検証され」、このことは、それが基準のセットに対してチェックされて、トランザクションが適用可能なブロックチェーンプロトコルに従って適切なトランザクションの基本要件を満たすことを保証することを意味する。
【0005】
トランザクションがブロックチェーンに書き込まれるために、それは、トランザクションを収集してこれらをブロックにするように設計されたノード(「マイナー」又は「マイニングノード」)によりブロックに組み込まれる。次いで、マイナーは、ノードに関する「プルーフオブワーク(proof of work)」を完成させるよう試みる。ブロックチェーンネットワーク全体にわたるマイナーが、トランザクションのブロックを組み立て、そのブロックに関連するプルーフオブワークを完成させるのが最初であるよう競争する。成功したマイナーは、その確認されたブロックをブロックチェーンに追加し、該ブロックは、ネットワークを通じて伝播され、それにより、ブロックチェーンのコピーを維持する他のノードは、そのレコードを更新することができる。ブロックを受信したノードもまた、そのブロック及びその中の全てのトランザクションを「検証し」、それがプロトコルの形式要件に準拠することを保証する。
【0006】
ビットコインのようなブロックチェーンベースのネットワークを使用して、広範な暗号的に保護された交換の使用を可能にし、あるいは容易にすることは、有利である。このような交換は、例えば、クレジットカードトランザクションなどの支払い処理に関連し得る。しかしながら、約毎秒3件のトランザクションスループットは、現在約毎秒50,000件のトランザクション量で動作しているこのような電子支払いを処理するには不十分である。ブロックチェーンネットワークの速度に関連するボトルネックの1つは、トランザクションの伝播である。トランザクションを受信した各ノードは、トランザクションを検証し、次いでそれをピアノードに送信する。実際、ビットコインプロトコルでは、ノードは、トランザクションのリストを含むINVメッセージをピアノードに送信し、INVメッセージで広告されたトランザクションの何らかのサブセットを選択するGETDATA応答メッセージを受信する。次いで、ノードは、要求されたトランザクションをピアノードに送信する。この処理は、ノードが接続されている各ピアノードに関して実行される。
【0007】
したがって、トランザクション伝播の速度を改善することにより、大量トランザクションを処理するブロックチェーンの能力を現在制限している速度及びスケーラビリティの制約に対して解決策を見出すことが望ましい。ブロックチェーン又は他のアプリケーションに関連するかどうかにかかわらず、ノードのネットワークにおけるトランザクションの伝播により一般的に適用可能な解決策を見出すことが望ましい。
【発明の概要】
【0008】
このような解決法が次に考案されている。
【0009】
ゆえに、本発明によれば、別記の特許請求の範囲に定義される方法及び装置が提供される。
【0010】
本出願は、トランザクション(TX)の高速な伝播を可能にする方法及び装置を記載し、開示する。いくつかの例において、ノードは、ネットワークコーディング(network coding)の使用を選択的に可能にして、トランザクションをピアノードに送信するために単一のメッセージへ結合する。ネットワークコーディングの選択的な使用は、ノードが潜在的なボトルネックであるとの決定に基づいてもよい。この解決策は、いくつかの実装においてブロックチェーンネットワークの文脈で適用され得る。新しいトランザクションのセットを伝播する際に、それがボトルネックであると決定したノードは、新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトル(local encoding vector)を使用して結合して、メッセージを生成することができる。次いで、メッセージは、グローバルエンコーディングベクトル(global encoding vector)と共に別のノードに送信される。
【0011】
一態様において、本出願は、ブロックチェーンネットワーク条件が変化したときネットワークコーディングの選択的な使用を提供して、ノードがボトルネックであるかどうかと、結果としてネットワークコーディングが使用されるべきかどうかとを動的に決定する。ブロックチェーンネットワークの性質、及びネットワーク内の全てのノードへのトランザクションの迅速な伝播の重要性は、普遍的なネットワークコーディングを不要にし、計算的に高コストにする可能性があるが、一方、その時点においてボトルネックであると決定されたノードに対するネットワークコーディングの選択使用は、全てのノード通信に対するネットワークコーディングの全面的な使用に関連づけられた不要な複雑さ及びコストなく速度の利点を提供する可能性がある。本出願は、ブロックチェーンネットワークの文脈においてノードがボトルネックであるかどうかを動的に決定するための効率的かつ効果的なメカニズムを提供する。
【0012】
さらなる又は代替的な態様において、本出願は、ノードのネットワークにおいてトランザクションを伝播するためのコンピュータにより実現される方法を記載し、各ノードは、他のノードへの1つ以上の接続を有する。本方法は、ノードのうちの1つで実現され、ノードのうちの1つがトランザクションの伝播に対するボトルネックであると決定するステップと、第1の期間(time period)にわたり、ノードのネットワーク内の1つ以上の第1のノードから複数の新しいトランザクションを受信するステップと、複数の新しいトランザクションをネットワークコーディング及びローカルエンコーディングベクトルを使用して結合してメッセージを生成するステップと、複数の新しいトランザクションをノードのネットワーク内の1つ以上の第2のノードに送信する代わりに、メッセージ及びグローバルエンコーディングベクトルを1つ以上の第2のノードに送信するステップとを含む。
【0013】
さらなる又は代替的な態様において、本出願は、プロセッサと、メモリと、ネットワークインターフェースと、命令を含むアプリケーションとを含むノードを記載し、該命令は、プロセッサにより実行されたときに、本明細書に記載される方法のうち1つ以上を実行する。
【0014】
いくつかの実装において、方法又はノードは、ノードへのインリンクの数及びノードからのアウトリンクの数を評価することと、インリンクの数がアウトリンクの数を超えているときノードがボトルネックであると決定することとにより、ノードがボトルネックであると決定する。評価は、複数の新しいトランザクションのうち最初のトランザクション(first transaction)の受信のときに生じてもよい。別の実装において、評価は、ある時間にわたりインリンクのカウント及びアウトリンクのカウントを追跡することを通して生じてもよく、インリンクの数は平均であり、アウトリンクの数は平均である。いくつかの例示的な実装において、ノードは、複数の新しいトランザクションのうち最初のトランザクションの受信に応答して、それがボトルネックであるとの決定を開始する。
【0015】
いくつかの実装において、結合及び送信は、停止条件が満たされたとの決定に応答して実行される。停止条件は、一例において、複数の新しいトランザクションのうち最初のもの(first)の受信か又はノードのうちの上記1つがボトルネックであるとの決定かのいずれかからの継続時間(time duration)の満了である。別の例において、停止条件は、複数の新しいトランザクションが新しいトランザクションの最大数に達したことである。
【0016】
いくつかの実装において、メッセージは、複数の新しいトランザクションの中の最長トランザクションより長くない(no longer than)長さを有する。
【0017】
さらなる又は代替的な態様において、本出願は、ノードのネットワーク内でトランザクションを伝播するためのプロセッサ実行可能命令を記憶した非一時的プロセッサ読取可能媒体を記載し、プロセッサ実行可能命令は、ノードのうちの1つにおけるプロセッサにより実行されたときにプロセッサに、本明細書に記載される方法のうち1つ以上を実行させる。
【0018】
本明細書に記載される例示的な実装の多くで、ブロックチェーントランザクションを具体的に参照する。しかしながら、本明細書に記載される方法及び装置は、非ブロックチェーントランザクション伝播に関連して実現及び適用されてもよいことが理解されるであろう。
【図面の簡単な説明】
【0019】
本発明のこれら及び他の態様は、本明細書に記載した実施形態から明らかであり、それを参照して解明されるであろう。次に、本発明の一実施形態が、単に例示として、添付の図面を参照して説明される。
【
図1】ブロックチェーンに関連づけられた一例示的なネットワークを示す。
【
図2】インプットバッファ及びアウトプットバッファを有する一例示的なブロックチェーンノードを図式的に示す。
【
図3】ブロックチェーンネットワーク内のノードの簡略化された例示的なネットワークを示す。
【
図4】別の時間における
図3のブロックチェーンネットワークを示す。
【
図5】一例示的なブロックチェーンネットワークの一部を図式的に示す。
【
図6】複数のインリンク及び1つのアウトリンクを有するノードを示す。
【
図7】ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な処理をフローチャート形式で示す。
【
図8】ブロックチェーンネットワークにおいてトランザクションを伝播するための別の例示的な処理をフローチャート形式で示す。
【
図9】一例示的なブロックチェーンノードをブロック図形式で示す。
【発明を実施するための形態】
【0020】
本出願において、用語「及び/又は」は、列挙された要素のうち任意の1つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしもさらなる要素を排除することなく、列挙された要素の全ての可能な組み合わせ及び副組み合わせを、カバーすることが意図される。
【0021】
本出願において、フレーズ「・・・又は・・・のうち少なくとも1つ」は、列挙された要素のうち任意の1つ単独、任意の副組み合わせ、又は要素の全てを含み、必ずしも任意のさらなる要素を排除することなく、必ずしも要素の全てを要することなく、列挙された要素のうち任意の1つ以上をカバーすることが意図される。
【0022】
最初に、
図1を参照する。
図1は、ブロックチェーンに関連づけられた一例示的なネットワークをブロック図形式で示し、これは、本明細書においてブロックチェーンネットワーク100と呼ばれ得る。ブロックチェーンネットワーク100は、ピアツーピアのオープンメンバーシップネットワークであり、これは、招待なく、又は他のメンバーからの同意なく、誰でも参加できる。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散電子装置は、ブロックチェーンネットワーク100に参加することができる。このような分散電子装置は、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコイン(Bitcoin)プロトコル、又は他の暗号通貨であってもよい。
【0023】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンなどのモバイルデバイス、スマートウォッチなどのウェアラブルコンピュータ、又は他の電子装置などのコンピュータを含む様々なタイプのものであってもよい。
【0024】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。多くの場合、ブロックチェーンネットワーク100は、少なくとも部分的にインターネットを通じて実現され、ノード102のいくつかは、地理的に分散された場所に位置してもよい。
【0025】
ノード102は、ブロックにグループ化された、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持し、該ブロックの各々は、チェーン内の前のブロックのハッシュを含む。グローバル台帳は、分散された台帳であり、各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することができる。グローバル台帳に影響するノード102によるトランザクションは、他のノード102により立証され、それにより、グローバル台帳の正当性が維持される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークの実現及び動作の詳細は、当業者に十分理解されるであろう。
【0026】
各トランザクションは、1つ以上のインプット及び1つ以上のアウトプットを典型的に有する。インプット及びアウトプットに埋め込まれたスクリプトは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が移転される先のアドレスであってもよい。この価値は、未使用トランザクションアウトプット(unspent transaction output、UTXO)として、そのアウトプットアドレスに関連づけられる。次いで、後続のトランザクションが、インプットとしてそのアドレスを参照して、その価値を消費し、あるいは分散させることができる。
【0027】
ノード102は、その機能性に依存して、異なるタイプ又はカテゴリのものであってもよい。ノード102に関連づけられた4つの基本機能、すなわち、ウォレット、マイニング、フルブロックチェーンメンテナンス、及びネットワークルーティングがあることが示唆されている。これらの機能にはバリエーションがあり得る。ノード102は、機能のうち2つ以上を有してもよい。例えば、「フルノード」は、4つの機能全てを提供する。例えば、デジタルウォレットで実現され得るような軽量ノードは、ウォレット及びネットワークルーティング機能のみを特徴とする。デジタルウォレットは、フルのブロックチェーンを記憶するのでなく、ブロックヘッダの経過を追うことができる。ブロックヘッダは、ブロックをクエリするときインデックスとして機能する。ノード102は、TCP/IP(トランスミッションコントロールプロトコル)などのコネクション指向プロトコルを使用して互いに通信する。
【0028】
大抵のブロックチェーンネットワークでは、管理プロトコルにかかわらず、新しいトランザクションがネットワークを通して迅速に伝播され、それにより、未確認トランザクションのプール(典型的には「メムプール(mempool)」と呼ばれる)を維持する全てのノードが、新しいブロックに含まれることを待っているトランザクションの最新かつ正確なデータベースを有することを保証することが有利である。マイニングノードは、この未確認トランザクションのプールを利用して、潜在的な新しいブロックを構築する。場合により、マイニングノードは、フルのメムプールをローカルに維持し、それにより、これらは、未確認トランザクションをマイニングのための新しいブロックへ組み立てることができる。いくつかの実施形態において、メムプールは、(バリデータ(validator)ノードと呼ばれ得る)ノードの別個のネットワークにより管理され、維持されてもよく、これらのノードは、未確認トランザクションのセットをメムプールからマイニングノードに送信して、マイニングノードがブロックをマイニングするよう試みることを可能にできる。いくつかの実装において、メムプールは、複数のノード間で分散ハッシュテーブルに記憶されてもよい。構造にかかわらず、任意の新しいトランザクションが、ネットワークを通して伝播されて可能な限りすぐに必要なノードに到達することが望ましい。さらに、任意の新しい成功裏にマイニングされたブロックが、可能な限り速く伝播されてオーファンブロックの発生を削減することが望ましい。
【0029】
ビットコインネットワークの現在の実装では、一例として、新しいトランザクションを受信した各ノードは、トランザクションを検証し、次いで、該ノードが接続されているノードがこの新しいトランザクションをまだ受信していない場合、これらのノードの全てに該トランザクション送信する。ビットコインの場合、ノードは、TCP/IP(トランスミッションコントロールプロトコル)を使用する。新しいトランザクションを受信したノードは、利用可能な新しいトランザクションに関するデータを有するINVメッセージを各ピアノードに送信し、新しいトランザクションの受信に関心のある各ノードからGETDATAメッセージを戻りで受信する。次いで、ノードは、それを要求したノードの各々に、(別個の)TCPメッセージでトランザクションを送信する。
【0030】
次に、
図2を参照する。
図2は、インプットバッファ202及びアウトプットバッファ204を有する一例示的なノード200を図式的に示す。例示的なノード200は、intA、intB、intC、intD等として参照される複数のピアノードとのネットワークインターフェースを有する。インプットバッファ202は、様々なピアノードからの入ってくるトランザクションを示し、アウトプットバッファ204は、それぞれのインターフェースを通じてのピアノードへの特定の受信トランザクションの伝送を示す。ネットワークパケットは、ノード202のオペレーティングシステムにより提供されるプリミティブに従って、アプリケーションレベルでシリアルに送受信される。トランザクションxが単一のイーサネット(登録商標)/IPパケットに適合すると仮定すると、m個のピアへのその伝送は、m個の異なるアウトプットパケットのバッファリングを必要とする。インプット及びアウトプット双方のネットワークパケットが、他の情報と共に、シリアライズされたトランザクションと、送信/受信ピアへのTCP/IP接続を表す論理インターフェースIDとを含む。
【0031】
入ってくるトランザクションが処理されるための期待時間は、インプットキューの(パケット単位の)平均長Liに依存し、一方、処理されたトランザクションが正しく伝送されるための期待時間は、アウトプットキューの平均長Loに依存する。したがって、トランザクションの効率的な中継は、Li及びLo双方の値の削減に依存する。しかしながら、ピアへのトランザクションの選択的中継の確率モデルは、Loに、及び帰納(induction)によりLiにも直接影響する。
【0032】
現在のビットコイン実装において、INV及びGETDATAメッセージパケットは、トランザクションと同じ方法でI/Oバッファにキューイングされ、伝送及び受信の遅延に深刻な影響を与える。
【0033】
より大量の高速トランザクションにブロックチェーンを使用する提案がある。例えば、支払いを処理するためにブロックチェーンを使用することが検討されている。支払い処理は、例えば、クレジットカードトランザクションを含んでもよい。このようなトランザクションの量は、ブロックチェーンネットワークの現在の実装に対して圧倒的である。ゆえに、ノード間のトランザクションの送信などの通信を処理するためのブロックチェーンネットワークのキャパシティを改善する方法及び装置を提供することは有利であろう。
【0034】
本出願の一態様によれば、ブロックチェーンノードは、特定の期間にわたり新しいトランザクションをバッファリングし、次いで、ネットワークコーディングを使用してトランザクションを単一のメッセージに結合し、次いで、該単一のメッセージは、1つ以上の他のブロックチェーンノードに送信される。すなわち、ブロックチェーンノードは、新しいトランザクションをエンコードして、分解可能だが結合されたメッセージを生成する方法で新しいトランザクションを混合したメッセージを生成する。結合されたメッセージは、トランザクションのうち最大のものに小さいオーバーヘッドを加えたサイズを有する。
【0035】
ブロックチェーンノードがネットワークコーディングを使用する場合、ノードは、TCP/IP INV及びGETDATAメッセージに依存することをやめてもよく、なぜならば、ノードは、新しいトランザクションのどのサブセットをノードが受信したいかをノードに選別(pick-and-choose)させるのでなく、エンコードされたメッセージの形式で全ての新しいトランザクションを送信するからである。
【0036】
次に、
図3を参照する。
図3は、ブロックチェーンネットワーク300内のノードの簡略化された例示的なネットワークを示す。各ノードはネットワーク端末(すなわちブロックチェーンノード)を表し、一方、エッジはノード間のリンクを表す。本例示を目的として、各リンクについて、一度に単一のビットを送信又は受信することが可能であると仮定される。
【0037】
ノードのうち2つは、ソースS1及びS2としてラベル付けされ、これらは、2つの新しいトランザクションtx1及びtx2を受信する。この例示的なブロックチェーンネットワーク300において、各ノードは未確認トランザクションのメムプールを維持し、ゆえに、ノードが新しいトランザクションを受信したとき、それはネットワークを通して他の全てのノードに伝播される。各ノードは、新しいトランザクションを検証し、そのそれぞれのローカルメムプールに保存し、新しいトランザクションをまだ新しいトランザクションを有していないピアノードに転送する。ブロックチェーンネットワーク300のピアツーピアの性質に起因して、全てのノードが同時に新しいトランザクションを受信することはなく、このことは、新しいトランザクションがネットワーク300内の全てのノードに到達するためにいくらかの時間がかかることを意味する。例えば、ビットコインネットワークの現在の実装において、新しい有効なトランザクションは、ビットコインネットワークの90%のノードに到達するのに平均3.5秒かかる。理論的には、トランザクションの伝送が即時である、例えば、ネットワークの全てのノードに到達するのにt=0である場合、ネットワークは、二重消費(double spending)攻撃の可能性から保護される。ゆえに、ブロックチェーンネットワークのスループットを改善することは、システム全体のスケーラビリティ及び信頼性を可能にするための重要な要素である。
【0038】
ブロックチェーンネットワーク300のノードのうち2つは、受信者R1及びR2としてラベル付けされる。ノードI1及びI2は中間ノードを表し、これらは、メムプールのコピーを記憶してもよく、あるいはそうでなくてもよいが、より有意には、時間Tにおけるネットワーク300のボトルネックを表す。ノードI1が、2つの新しいトランザクションTx1及びTx2をほぼ同時に受信したとき、ノードI1は、どのトランザクションを最初に送信するかを決定しなければならない。すなわち、I1からI2への出ていくエッジは、少なくとも時間Tにおいてボトルネックである。
【0039】
ネットワークコーディングを使用し、ノードI1は、新しいトランザクションTx1及びTx2を、Tx1とTx2とのうちより大きいものと同じサイズである合成メッセージMへ結合することができる。ノードI1は、メッセージMをノードI2に送信し、ノードI2は、メッセージMを受信者R1及びR2に転送する。受信者R1及びR2は、個々のトランザクションTx1及びTx2を復元することができる。例えば、受信者R1は、Tx1及びMを受信する。Mは、Tx1及びTx2の結合に基づくため、R1は、Tx2を引き出すために式(Tx1,Tx1+Tx2)を解くだけでよい。反対に、R2はTx2を受信し、Tx1を引き出すために式(Tx2,Tx1+Tx2)を解く必要がある。
【0040】
ボトルネックは、ネットワークの構成と、トランザクションが任意の所与の時間にどこに生成されるかとに依存して、ある時間にわたり現れ、あるいは消える可能性がある。ボトルネックは、ノード間のリンク(エッジ)であり、これは、ネットワークの性能を大きく制限し、具体的にブロックチェーンネットワークの場合、トランザクション(又はブロック)の伝送を遅くする。しかしながら、ボトルネック(ノード間のリンク)のソースはノードである。
【0041】
次に、
図4を参照する。
図4は、時間T’における同じブロックチェーンネットワーク300を示す。この例では、トランザクションTx1がノードR1で受信され、トランザクションTx3がノードI2で受信される。この場合、ノードI1に再度ボトルネックがあるが、今回は、ノードI1とノードS1との間のリンクに関してであり、ノードI1におけるTx2及びTx3双方の同時の到着に起因する。ノードI1は、ネットワークコーディングを使用し、Tx2及びTx3をメッセージM’へ結合することができる。
【0042】
1つの選択肢は、あらゆるノードに、全ての状況においてネットワークコーディングを適用させることである。しかしながら、その時間にそれが有利であると期待され得る特定のノードでネットワークコーディングを選択的に適用することにより、性能をさらに改善することが可能であり得る。一例として、ノードが、それが任意の所与の時点でボトルネックを表すかどうかを決定することができる場合、そのノードは、メッセージの伝送にネットワークコーディングを選択的又は適応的に適用してもよく、一方、それがボトルネックでない場合、それはトランザクションの通常の伝送を使用してもよい。
【0043】
したがって、ノードは、それが所与の時点においてボトルネックの可能性があるかどうかを査定又は決定するように構成されてもよい。ある意味では、これは、インリンクとアウトリンクとの間のバランスに基づいて決定されてもよい。すなわち、所与の時点において、ノードは、1つ以上のリンク上でトランザクションを受信することがあり、これらのトランザクションを1つ以上のリンク上で外部へ送信することを意図し得る。ノード間の接続(すなわち、エッジ)は、ネットワーク内のトラフィックのフローに依存して、任意の所与の時点においてインリンク又はアウトリンクとして機能することができる。いくつかの場合、インリンクの数は「ファンイン(fan-in)」と呼ばれることがあり、アウトリンクの数は「ファンアウト(fan-out)」と呼ばれることがある。
【0044】
一実装において、ブロックチェーンネットワーク内のノードの少なくともいくつかは、最初の近隣ノード(first-neighbour nodes)へのファンイン及びファンアウトリンクの相対数を追跡するテーブル又は他のデータ構造を維持する。
図5は、一例示的なネットワークの一部を図式的に示しており、第1のノードI1及び第2のノードI2は各々、任意の所与の時間にそのノードのファンイン及びファンアウト数量を識別するテーブル又は他のデータ構造をローカルに記憶する。ノードは、相対的なファンイン及びファンアウトの数に基づいて、それがボトルネックの可能性があるか否かを決定することができる。一般に、決定は、インリンクの数(ファンイン)がアウトリンクの数(ファンアウト)を超えているかどうかに基づくことができ、その場合、ノードは、その時間にボトルネックであり得る。
【0045】
一例示的な実装において、ノードがボトルネックであるかどうかの評価は、期間ΔTにわたる。テーブル中の数量は、期間ΔTにわたる平均のファンイン及びファンアウトであってもよい。
【0046】
また、決定は、いくつかの実装において、ネットワークトポロジの認識に部分的に基づいてもよい。例えば、少なくともいくつかの場合に、末梢(peripheral)ノードであるノードはボトルネックである可能性は低く、一方、中間ノードであるノードはボトルネックである可能性がより高い。
【0047】
さらに他の実装において、ノードがボトルネックであるかどうかの決定は、アウトプットキューのステータス、又はある時間にわたるアウトプットキュー内のバックログの評価に基づいてもよい。
【0048】
ボトルネックの決定又は識別は、いくつかの実装において、上記要因の組み合わせ又は副組み合わせを含むことができる。
【0049】
ネットワークコーディングは、当時の支配的なパケット交換ネットワークに対する一代替として、20年弱前に開発された。ネットワークコーディングは、ネットワークをリンクキャパシティを有する有向グラフ(N,L)としてモデル化し、ノードn∈Nがブロードキャストキャパシティhを達成するレートで受信者R⊆Nのセットに情報を通信できることを実証し、hは、ネットワークの内部ノードにおけるエンコーディングを条件として、sと任意のr∈Rとの間の最小カットの値である。
【0050】
カットCは、グラフG=(V,E)の頂点Vの、2つの分離したサブセットS及びTへの分割として定義される。カットC=(S,T)のカットセットは、一方の端点をSに、及び他方の端点をTに有するエッジのセット{(u,v)∈E|u∈S,v∈T}である。
【0051】
ネットワークコーディングのための一例示的な方法論が、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)(以降「Chou」)に記載されており、これはここで参照により援用される。この方法論は、ネットワークトポロジ又はエンコーディング若しくはデコーディング機能のいかなる中央集権的な知識についてもその必要を取り除いた。Chouは、ネットワークNが、単位キャパシティエッジ(e)、送信者s∈V、及び特定数の受信者T⊆Eを有する非巡回グラフG=(V,E)として表現できると述べている。ノードの各エッジe∈Eのアウトプットv=in(e)は、シンボルy(e)を有し、シンボルy(e)は、vに入るエッジe’上のシンボルy(e’)の線形結合である。
図6は、ノードv及びアウトプットy(e)を示す。詳細には、アウトプットは、
【数1】
により与えられる。ここで、y(e’
i)=x
i、i=1,...,hであり、ベクトルm
eは、エッジeについてのノードvにおけるエンコーディング機能を表すローカルエンコーディングベクトルであり、hは、ブロードキャストキャパシティを、送信者と受信者との間の任意のカットにおけるエッジの最小数として示す。
【0052】
Chouは、任意のエッジe∈E上のアウトプットy(e)は、ソースシンボルの線形結合
【数2】
であり、係数のh次元ベクトルg(e)=[g
1(e),...,g
h(e)]は、
【数3】
により再帰的に取得できると述べており、ここで、エッジe’
i上のg(e’
i)は、i番目の単位ベクトルに対して開始される(initiated)。ベクトルg(e)は、eに沿ったグローバルエンコーディングベクトルと呼ばれてもよい。そのh個の入ってくるエッジに沿ってシンボル
【数4】
を受信する任意のノードtは、グローバルエンコーディングベクトルの行列G
tがランクhを有する場合、ソースシンボルx
1,...,x
hを復元することができる。この上記例では、ブロックチェーントランザクションにネットワークコーディングを適用されたとき、トランザクションは、アレイ[x
1,...,x
h]に記憶される。Chouではさらなる詳細が見出されている。
【0053】
出ていくエッジeのグローバルエンコーディングベクトルは、入ってくるエッジe’のグローバルエンコーディングベクトルのローカルエンコーディングに基づくものとして特徴付けられてもよい。
【0054】
ネットワークコーディングは、ネットワークを通してトランザクションを伝播させるために使用され得ることが理解されるであろう。それはさらに、未確認トランザクションの分散ハッシュテーブルを実現するように設計されたオーバレイネットワーク内で使用されてもよく、これにおいて、各トランザクションは少なくとも2つのノードにより記憶されて、分散ハッシュテーブル内の冗長性を保証する。この場合、ネットワークコーディングは、トランザクションを記憶のために2つ以上のノードに送信する際に使用されてもよい。しかしながら、ネットワークコーディングの使用は、トランザクションを記憶する2つ以上のノードの損失から回復することができるというさらなる利点を提供し得る。中間ノードが、トランザクションに関する結合されたデータを含む1つ以上のメッセージを受信しているため、欠落したトランザクションは、ネットワークコーディングメッセージから復元され得る。
【0055】
次に、
図7を参照する。
図7は、ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な処理700をフローチャート形式で示す。処理700は、ブロックチェーンネットワークのノードにより実現される。この文脈において、ノードは、マイニングノード、フルノード、バリデータノード、又はブロックチェーンネットワーク内の他タイプの個別のブロックチェーンノードを参照するものと理解されてもよい。ノードは、ネットワーク接続と、コンピューティングリソースと、ブロックチェーンプロトコルを実現する実行ソフトウェアとを有するコンピューティング装置である。
【0056】
動作702において、ノードは、それが時間Tにおいてネットワークにおける潜在的なボトルネックであると決定する。この決定は、上述したように、時間Tにおけるファンイン及びファンアウトの比較に基づいてもよい。例えば、ファンインが時間Tにおいてファンアウトを超えている場合、ノードはそれがボトルネックであると決定することができる。ノードがボトルネックであるかどうかを決定する際に、他の要因が代替的又は追加的に考慮されてもよい。例としては、ある期間にわたる平均のファンイン及びファンアウト、ネットワークトポロジ内のノード位置、ノードのアウトプットキューの現在若しくは過去のステータス、又は受信トランザクションを伝播するためのノードキャパシティに関する任意の他の要因が含まれる。
【0057】
動作704において、ノードは、それがボトルネックであると決定すると、期間ΔTにわたりトランザクションを蓄積する。期間は、所定の時間長であってもよい。いくつかの例示的な実装において、期間は、ネットワークトラフィック測定、地理的情報、又は双方に基づいて変化してもよい。期間が固定された時間ではなく、むしろ、最小数のトランザクションが受信されるまでトランザクションの蓄積が発生してもよく、これは、蓄積されたトランザクションが過度に長く保持されないように最大時間をさらに課されてもよい。
【0058】
動作706において、ノードが蓄積した複数のトランザクションは、ネットワークコーディングを使用して単一のメッセージに結合される。メッセージは、いくつか実装において、トランザクションのうち最長のものと同様に長い長さを有してもよい。メッセージは、いくつかの実装において、トランザクションのうち最長のものより長くない(ビット単位の)長さを有してもよい。メッセージは、ローカルエンコーディングベクトル及びネットワークコーディングアルゴリズムを使用して生成される。
【0059】
動作708において、ノードは、次いで、メッセージ及びグローバルエンコーディングベクトルを1つ以上のノードに送信する。メッセージは、実際のトランザクションを送信する代わりに送信される。すなわち、ノードは、複数の蓄積されたトランザクションを送信せず、その代わりに、メッセージ及びグローバルエンコーディングベクトルを全てのそのアウトリンク上のピアノードに送信する。
【0060】
次に、
図8を参照する。
図8は、ブロックチェーンネットワークにおいてトランザクションを伝播するための一例示的な方法800をフローチャート形式で示す。上述のように、方法800は、複数のインリンク及びアウトリンクを有するブロックチェーンノードで実現されてもよい。
【0061】
動作802において、ブロックチェーンノードは、トランザクションを受信する。受信トランザクションは、インリンクを介して受信される。ブロックチェーンは、プロトコル要件に対してトランザクションを検証して、トランザクションが適法であることを保証することができる。動作804において、ノードは、それがトランザクションに関するボトルネックであるかどうかを決定することができる。決定は、その時間におけるインリンク(ファンイン)及びアウトリンク(ファンアウト)の間のバランスの評価に基づいてもよい。決定は、上述のように、他の要因に基づいてもよい。
【0062】
ノードが、それがボトルネックでないと決定した場合、動作806において、それは、通常通り、そのアウトリンク上のブロックチェーンネットワーク内の1つ以上のピアノードにトランザクションを転送する。しかしながら、ノードが、それがボトルネックの可能性があると決定した場合、動作807において、ノードは、トランザクションをメモリに(例えば、バッファ又は他のメモリ要素に)記憶する。
【0063】
次いで、ノードは、動作808により示されるように、トランザクションを引き続き受信し、それが停止条件が満たされたと決定するまで該トランザクションを記憶する。この例において、停止条件は、継続時間ΔTが経過したことである。継続時間は、例えば、ノードがボトルネックであるという決定から、又は動作802における最初のトランザクションの受信から続いてもよい。継続時間の代わりに、他の条件が使用されてもよく、例えば、メモリにおける最大数のトランザクションの蓄積、又はこのような要素の任意の組み合わせである。
【0064】
ひとたび停止条件が満たされると、例えば、この場合ではΔTが経過すると、ノードは、次いで、動作812により示されるように、ネットワークコーディング及びローカルエンコーディングベクトルを使用して、記憶されたトランザクションからメッセージMを構築する。動作814において、ノードは、次いで、このメッセージ及びグローバルエンコーディングベクトルを、全てのそのアウトリンクを通じて他のノードに送信する。
【0065】
次に、
図9を参照する。
図9は、参加ノード900の簡略化された例をブロック図形式で示す。ノード900は、プロセッサ902を含み、プロセッサ902は、1つ以上のマイクロプロセッサ、特定用途向け集積チップ(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置を含んでもよい。ノード900は、値、変数、及びいくつかの例ではプロセッサ実行可能プログラム命令を記憶する永続的及び非永続的メモリを含み得るメモリ904と、有線又は無線ネットワークを通じてのネットワーク接続性を提供するネットワークインターフェース906とをさらに含む。
【0066】
ノード900は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション908を含み、該命令は実行されたときに、プロセッサ902に本明細書に記載の機能又は動作の1つ以上を実行させる。
【0067】
本明細書に記載された装置及び処理、並びにブロックチェーンノードを構成するための記載された方法/処理を実現する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング手法及び言語を用いて実現され得ることが理解されよう。本出願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造、又は他のこのような実装詳細に限定されない。
【0068】
上述の実施形態は、本発明を限定するものでなく例示するものであり、当業者は、別記の特許請求の範囲により定義される本発明の範囲から逸脱することなく多くの代替的な実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に付したいかなる参照符号も、特許請求の範囲を限定するものと解釈してはならない。単語「含む」及び「含んでいる」などは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含み、あるいは~から成る」を意味し、「含んでいる」は、「含んでおり、あるいは~から成っている」ことを意味する。要素の単数形の参照は、このような要素の複数形の参照を除外するものでなく、その逆もまた同様である。本発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を挙げる装置の請求項において、これらの手段のいくつかは、1つの、及び同じアイテムのハードウェアにより具体化されてもよい。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組み合わせが利益をもたらすように使用できないことを示すわけではない。
【外国語明細書】