(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-06
(54)【発明の名称】分散ネットワークにおけるリソースの使用に対する課金
(51)【国際特許分類】
G06Q 30/0601 20230101AFI20230227BHJP
【FI】
G06Q30/06 300
【審査請求】有
【予備審査請求】有
(21)【出願番号】P 2022522813
(86)(22)【出願日】2019-10-18
(85)【翻訳文提出日】2022-06-10
(86)【国際出願番号】 EP2019078414
(87)【国際公開番号】W WO2021073758
(87)【国際公開日】2021-04-22
(81)【指定国・地域】
(71)【出願人】
【識別番号】521435190
【氏名又は名称】デフィニティ スティフトゥング
【氏名又は名称原語表記】DFINITY STIFTUNG
【住所又は居所原語表記】Stockerstrasse 47, 8002 Zuerich Switzerland
(74)【代理人】
【識別番号】110002664
【氏名又は名称】弁理士法人相原国際知財事務所
(72)【発明者】
【氏名】ウィリアムズ, ドミニク
(72)【発明者】
【氏名】カメニッシュ, ヤン
(72)【発明者】
【氏名】マッコーリー, マック
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049BB26
(57)【要約】
本発明の態様は、分散ネットワークのリソースの使用に対する課金および支払いを行うためのコンピュータに実装する方法に関する。分散ネットワークは複数のノードを備え、複数のノードは1つ以上の計算ユニットを実行するように構成される。1つ以上の計算ユニットは、分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える。具体化された方法は、各ネットワークユーザーが、アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、ローカルユーザーガスアカウントを介して、分散ネットワークのリソースの使用の支払いの手続きを行うステップとを備える。さらなる態様では、分散ネットワーク、分散ネットワークのノード、および対応するコンピュータプログラム製品に関する。
【選択図】
図11
【特許請求の範囲】
【請求項1】
分散ネットワークのリソースの使用に対して課金するためにコンピュータに実装される方法であって、前記分散ネットワークは複数のノードを備え、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、
前記ネットワークのユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うステップと、を備える、方法。
【請求項2】
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、をさらに備える請求項1に記載の方法。
【請求項3】
前記一次アプリケーションサービスを行うステップは、前記一次アプリケーションユニットが、1つ以上の二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上の二次アプリケーションユニットが、1つ以上の二次アプリケーションサービスを行うステップをさらに備える、請求項2に記載の方法。
【請求項4】
前記1つ以上の二次アプリケーションサービスを行うステップは、前記1つ以上の二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上のさらなる二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションサービスを行うステップをさらに備える、請求項3に記載の方法。
【請求項5】
前記1つ以上の呼び出しは、連続して行われ、それにより任意の深さの呼び出しツリーが形成される、請求項4に記載の方法。
【請求項6】
前記一次アプリケーションユニットの前記ローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスが、前記リソースの前記使用の対する支払いの手続きを行うステップを、さらに備える、請求項3から5までのいずれか1項に記載の方法。
【請求項7】
前記ネットワークの前記ユーザーが、前記1つ以上の二次アプリケーションユニットにおいて、1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記二次アプリケーションユニットの前記1つ以上のローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスによる前記リソースの前記使用に対する支払いの手続きを行うステップと、をさらに備える、請求項3から6までのいずれか1項に記載の方法。
【請求項8】
前記ネットワークの1人以上のユーザーが、特に、前記ネットワークの各ユーザーが、前記ユーザーのユーザー通貨アカウントを管理するように構成されるウォレット計算ユニットを実行するステップと、
前記ウォレット計算ユニットからそれぞれのアプリケーションユニットに支払いメッセージを送るステップであって、前記それぞれのアプリケーションユニットにおいて、前記ユーザー通貨アカウントから前記ローカルユーザーガスアカウントに通貨額を転送するステップと、をさらに備える、請求項1から7までのいずれか1項に記載の方法。
【請求項9】
各アプリケーションユニットが、アプリケーションユニットガスアカウントを実行するステップをさらに備える、請求項1から8までのいずれか1項に記載の方法。
【請求項10】
前記1つ以上のアプリケーションユニットの第1アプリケーションユニットと前記1つ以上のアプリケーションユニットの第2アプリケーションユニットとの間で支払いメッセージを送るステップであって、前記第1アプリケーションユニットの前記アプリケーションユニットガスアカウントまたはユーザーガスアカウントから、前記第2アプリケーションユニットの前記アプリケーションユニットガスアカウントにガス料金を転送するステップをさらに備える、請求項9に記載の方法。
【請求項11】
イングレスメッセージの受理、クエリの読み込み、前記受理したイングレスメッセージの実行、および/または受理したユニット間メッセージの実行に対して、選択的に課金するステップをさらに備える、請求項1から10までのいずれか1項に記載の方法。
【請求項12】
前記ローカルユーザーガスアカウントの各々は、
前記イングレスメッセージの受理に対して課金するように構成されたイングレスサブアカウントと、
前記クエリの読み込みに対して課金するように構成された読み取りクエリサブアカウントと、
前記受理したイングレスメッセージの実行、および/または前記受理したユニット間メッセージの実行に対して課金するように構成された実行サブアカウントと、を備える、請求項11に記載の方法。
【請求項13】
異なる会計期間、および/または、前記イングレスメッセージおよび前記読み取りクエリに対する課金時間を適用するステップであって、
特に、実行のためにそれらを受理するまたは拒否する前記イングレスメッセージに対して課金すること、次にバンドルする方法における前記読み取りクエリに対して課金すること、および/または、あらかじめ、特に前記二次アプリケーションユニットへの前記1つ以上の呼び出しの発行後に、前記イングレスメッセージの実行に対して課金すること、を含むステップをさらに備える、請求項11または12に記載の方法。
【請求項14】
前記分散ネットワークが、前記分散ネットワークのストレージリソースの使用に対して課金するステップと、
それぞれのアプリケーションユニットガスアカウントから、前記分散ネットワークの前記ストレージリソースの使用料金を引き落とすステップと、をさらに備える、請求項1から13までのいずれか1項に記載の方法。
【請求項15】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して固定価格で課金するステップをさらに備える、請求項1から14までのいずれか1項に記載の方法。
【請求項16】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して前払いの手続きを行うステップと、
1つ以上の前記アプリケーションユニットが、前記前払いの未使用部分を払い戻すステップと、をさらに備える、請求項1から15までのいずれか1項に記載の方法。
【請求項17】
前記一次アプリケーションユニットおよび/または前記二次アプリケーションユニットのそれぞれのアプリケーションユニットガスアカウントから、前記前払いを上乗せして、対応する前記一次アプリケーションサービスおよび/または前記二次アプリケーションサービスの実行を確実にするステップをさらに備える、請求項16に記載の方法。
【請求項18】
前記計算ユニットの各々はそれ自身のユニット状態を備え、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットは前記複数のノードのうちの1つ以上を備える方法であって、前記方法は、前記アプリケーションユニットの各々を前記複数のサブネットのうちの1つに割り当てるステップと、前記それぞれのサブネットに亘って前記アプリケーションユニットを複製するステップと、をさらに備える、請求項1から17までのいずれか1項に記載の方法。
【請求項19】
それぞれのサブネットの各ノードに、別々の読み取りクエリサブアカウントが提供される、請求項18に記載の方法。
【請求項20】
複数のノードを備える分散ネットワークは、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、前記分散ネットワークは、
前記計算ユニットのリソースを提供して、
前記ネットワークの各ユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行して、
前記ローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うように構成される、分散ネットワーク。
【請求項21】
前記計算ユニットの各々はそれ自身のユニット状態を備え、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットは前記複数のノードのうちの1つ以上を備える分散ネットワークであって、
前記アプリケーションユニットの各々を前記複数のサブネットのうちの1つに割り当てて、前記それぞれのサブネットに亘って前記アプリケーションユニットを複製するように構成される、請求項20に記載の分散ネットワーク。
【請求項22】
請求項19または20に記載の分散ネットワークのノードであって、
前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行し、
前記アプリケーションユニットの1つ以上において、1つ以上のローカルユーザーガスアカウントを実行し、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行う、ノード。
【請求項23】
複数のノードを備える分散ネットワークを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記複数のノードのうちの1つ以上により実行可能であり、前記複数のノードのうちの前記1つ以上に実行させる方法は、
前記複数のノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ネットワークのユーザーが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、を備える、コンピュータプログラム製品。
【請求項24】
分散ネットワークのノードを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記ノードにより実行可能であり、前記ノードに実行させる方法は、
前記ノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ノードが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ネットワークのリソースの使用に対して課金するためにコンピュータに実装する方法に関する。
【0002】
さらなる態様では、分散ネットワーク、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的媒体で符号化されたソフトウェアアーキテクシチャに関する。
【背景技術】
【0003】
分散ネットワークでは、複数のノードが分散して配置される。分散ネットワークの計算では、ソフトウェアとデータが複数のノードに亘って分散する。ノードは計算リソースを定めて、分散ネットワークは分散計算技術を使用し得る。
【0004】
分散ネットワークの一例は、ブロックチェーンネットワークである。ブロックチェーンネットワークは、コンセンサスベースのブロックベースの電子帳簿である。各ブロックは、トランザクションおよびその他の情報で構成される。さらに、各ブロックには前のブロックのハッシュが含まれており、ブロックがチェーン化されて、ブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能な記録が作成される。トランザクションは、スマートコントラクトとして知られる既知の小さなプログラムを呼び出すことがある。
【0005】
トランザクションをブロックチェーンに書き込むためには、トランザクションが「検証」され、ネットワークにより合意されている必要がある。言い換えると、ネットワークノードはブロックチェーンに書き込まれるブロックについての合意形成は必要がある。このような合意は、さまざまなコンセンサスプロトコルにより実現し得る。
【0006】
ブロックチェーンネットワークの1つのタイプでは、合意はプルーフオブワークアルゴリズムを使用して実現される。プルーフオブワークコンセンサスプロトコルは、コンセンサスプロトコルに参加する当事者からの作業を必要とすることが一般的であり、これは通常、コンピュータによる処理時間に相当する。ビットコインなどのプルーフオブワークベースの暗号通貨システムでは、計算量の多いパズルを解くことでトランザクションを検証し、新しいブロックを作成します。
【0007】
もう1つのタイプのコンセンサスプロトコルは、プルーフオブステークアルゴリズムに基づく。このようなプルーフオブステークプロトコルには、計算に大量の時間とエネルギーを必要としないという利点がある。プルーフオブステークベースのブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダムな選択とネットワーク内のそれぞれのノードの掛け金の組み合わせにより選択される。
【0008】
ブロックチェーンネットワークで使用されるコンセンサスプロトコルは、「ビザンチンフォールトトレラント」(BET)合意プロトコルを適用することで、ブロックに含まれるトランザクションの確実な決裁に速く到達するように設計可能である。「同期」BFTプロトコルは、安全性のためにネットワーク同期の仮定に依存する。一方、「非同期」BETプロトコルは異なっている。非同期BFTプロトコルでは、通常、1/3(3分の1)未満の参加ノードの破損は許容可能である。
【0009】
暗号通貨とは別に、分散ネットワークは他のさまざまなアプリケーションに使用し得る。特に、分権型および分散型の計算機能とサービスを提供するために使用し得る。この目的のために、ノードのクラッシュや敵対的な攻撃が存在する場合であっても、アプリケーションを確実に実行して複数のノードに亘って状態を保存するように、分散ネットワークは、ステートマシンレプリケーションプロトコルを使用し得る。
【0010】
分散型計算サービスを提供するこのような分散ネットワークの課題の1つは、分散ネットワークが提供するネットワークリソースを使用するためのアプリケーションだけではなく、ユーザーに課金するための効率的で柔軟かつ安全な課金メカニズムを提供するところにある。
【発明の概要】
【課題を解決するための手段】
【0011】
したがって、本発明の一態様の1つの目的は、分散ネットワークのネットワークリソースの使用に対して課金する方法であって、特に、効率、柔軟性、および/またはセキュリティに観点から、分散ネットワークの計算リソースに対して有利なリソースに対する支払いまたはリソースに対する課金の方法を提供するところにある。
【0012】
本発明の第1の態様の実施形態によれば、分散ネットワークのリソースの使用に対して課金または支払いを行うためにコンピュータに実装する方法が提供される。分散ネットワークは複数のノードを備え、複数のノードのそれぞれは1つ以上の計算ユニットを実行するように構成される。1つ以上の計算ユニットは、分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える。具体化された方法は、ネットワークのユーザーが、特にネットワークの各ユーザーが、アプリケーションユニットのうちの1つ以上において、1つ以上のローカルユーザーガスアカウントを実行するステップと、1つ以上のローカルユーザーガスアカウントを介してまたはそれにより、分散ネットワークのリソースの使用に対する課金の手続きを行うステップを備える。そのような具体化された方法によれば、ローカルユーザーガスアカウントは、1つ以上のアプリケーションユニットで提供される。そのようなローカルユーザーガスアカウントは、ユーザーによるリソースの使用に対して効率的かつ柔軟な課金および支払いを容易にし得る。特に、ローカルユーザーガスアカウントの提供は、支払いの手続きを行うために必要なメッセージの数を効果的に削減し得るので、分散ネットワークの通信量および関連する帯域幅を効果的に削減し得る。
【0013】
ローカルユーザーガスアカウントは、それぞれのアプリケーションユニットで実行されるアカウントであり、対応するユーザーが所有する。ローカルユーザーガスアカウントは、分散ネットワークのリソースの使用に対してローカルでの支払いに使用される。ローカルユーザーガスアカウントは、ローカルユーザーアカウンティングユニットまたは単にローカルユーザーアカウントとして示され得る。
【0014】
リソースは、一般に、分散ネットワークの物理リソースまたは仮想リソースであり得、ネットワークリソースとして示され得る。これらのリソースには、分散ネットワークのプロセッサの処理能力、メモリおよびストレージリソース、ネットワーク接続、および、例えば、異なるアプリケーションユニット間の通信用などのそれらに関連する帯域幅、のような計算リソースが含まれ得る。
【0015】
リソースは、特にネットワークのノードにより提供され得る。ネットワークのノードは、計算システムまたは計算ユニット、例えばサーバーとして具体化し得る。
【0016】
リソースの使用に対する課金、つまり支払いは、特にガスまたはガスユニットで手続きをされ得る。ガスは、分散ネットワークがそのリソースの使用に対して課金するために使用し、ネットワークの自国通貨とは別の補完的なアカウンティングユニットとして定義され得る。ガスは燃料と呼ばれ得る。補完的なアカウンティングユニットを提供することは、リソースの使用コストが、通貨の市場変動から安定および独立を維持可能であるという利点を提供する。車から類推すると、車を運転するために燃料またはガスが必要であるように、本発明のいくつかの実施形態によるガスは、分散ネットワークのリソースを運転するために必要である。
【0017】
「課金」および「支払い」という用語は、広義で理解されるものとする。これらは、ローカルユーザーのガスアカウントから差し引かれて別のアカウントに転送する支払いを含み得る。使用済みガスを別のアカウントに転送せずに、使用後に「燃焼」するだけのアプリケーションスキームも含み得る。換言すれば、ガスを「燃焼」または消費することでリソースの使用に対して「支払い」を行い得るが、その使用後にはネットワークから削除される。この点において、「課金」および「支払い」は置き換え可能な用語として使用し得る。
【0018】
計算ユニットは、ネットワークのノードで実行されていて、それ自身のユニット状態を持つソフトウェアの一部として定義され得る。いくつかの実施形態によれば、計算ユニットは、直交永続性を有する決定論的プログラムとして定義され得る。
【0019】
アプリケーションユニットは、ネットワークのユーザーにアプリケーションサービスを提供するように構成された計算ユニットである。そのようなアプリケーションサービスは、例えば、ウェブサイトのホスティング、旅行の予約、メッセージングサービスの提供などを含み得る。
【0020】
いくつかの実施形態によれば、ネットワークの各ノードは、1つ以上の計算ユニットを実行する。それゆえ、1つ以上の計算ユニットのユニット状態を維持する。
【0021】
一実施形態によれば、この方法は、ネットワークのユーザーが、1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信し、一次アプリケーションユニットおよび一次アプリケーションサービスが実行するさらなるステップを備える。さらなるステップは、一次アプリケーションユニットにおけるユーザーのローカルユーザーガスアカウントを介して、またはそれにより、一次アプリケーションサービスによるリソースの使用に対する料金または支払いの手続きを行うことを含む。
【0022】
そのような実施形態によれば、一次アプリケーションユニットは、ユーザーのイングレスメッセージ用のエントリポイントを設定する。イングレスメッセージは、分散ネットワークのユーザーが、ネットワークのアプリケーションユニットの1つ、より具体的にはそれぞれの一次アプリケーションユニットに送信するメッセージとして理解されるものとする。そのような実施形態によれば、ユーザーは、少なくともそれぞれの一次アプリケーションユニットでローカルユーザーガスアカウントを有する必要がある。これにより、一次アプリケーションユニットにおけるローカルユーザーガスアカウントを介して、または、それにより、リソースの使用に対する料金または支払いをローカルで処理可能となる。
【0023】
一実施形態によれば、一次アプリケーションサービスを実行するステップは、一次アプリケーションユニットが、1つ以上の二次アプリケーションユニットへ1つ以上の呼び出しを発行するステップを備える。
【0024】
このような二次アプリケーションユニットは、ユーザーからのイングレスメッセージを直接受信するのではなく、イングレスメッセージを受信したそれぞれの一次アプリケーションユニットからの呼び出しを受信するアプリケーションユニットとして理解されるものとする。換言すれば、一次アプリケーションサービスを実行するために、一次アプリケーションユニットは二次アプリケーションユニットを包含し、二次アプリケーションユニットへの呼び出しが二次アプリケーションユニットのサポートを要求する。
【0025】
アプリケーションユニットの役割は時間の経過とともに変化することがあり、特に、それぞれの入力メッセージと対応するアプリケーションサービスに依存し得ることに注意すべきである。より具体的には、一例では、同じアプリケーションユニットは、一次アプリケーションサービスを要求するイングレスメッセージを受信すると、一次アプリケーションユニットとして機能し得る。また、別の例では、同じアプリケーションユニットが、一次アプリケーションユニットとして機能する別のアプリケーションユニットから呼び出しを受信すると、二次アプリケーションユニットとして機能し得る。
【0026】
そのような実施形態によれば、この方法は、1つ以上の二次アプリケーションユニットが、1つ以上の二次アプリケーションサービスを実行するステップをさらに備え得る。
【0027】
一実施形態によれば、この方法は、一次アプリケーションユニットのローカルユーザーガスアカウントを介して、またはそれが、二次アプリケーションサービスによるリソースの使用に対する支払いの手続きを行うステップをさらに含み得る。
【0028】
それゆえ、二次アプリケーションユニットは、二次アプリケーションサービスを実行することで一次アプリケーションユニットを支持する。一方、一次アプリケーションユニットは、二次アプリケーションユニットが二次アプリケーションサービスの実行のために必要とするリソースの使用に対する支払いを手配する。
【0029】
これにより、効率的な支払いスキームが提供される。より具体的には、それは、ユーザーが二次アプリケーションユニットにおいて別個のガスアカウントを必要とすることを回避し、例えば、ユーザー通貨アカウントと二次リアプリケーションユニットとの間でのいかなるメッセージのやり取りも回避する。
【0030】
一実施形態によれば、1つ以上の二次アプリケーションサービスを実行することは、1つ以上の二次アプリケーションユニットが、さらなる二次アプリケーションユニットへの1つ以上の呼び出しを発行することを含む。さらに、この方法は、1つ以上のさらなる二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションサービスを実行することを含み得る。
【0031】
一実施形態によれば、1つ以上の呼び出しを連続して実行することが可能であり、それにより、任意の深さの呼び出しツリーを形成する。別の実施形態によれば、この方法は、ネットワークのユーザーが、二次アプリケーションユニットでローカルユーザーのガスアカウントを実行し、二次アプリケーションユニットのローカルユーザーガスアカウントを介して、または、それが、二次アプリケーションユニットによるリソースの使用に対する支払いの手続きを行う。
【0032】
そのような実施形態によれば、ユーザーは、一次アプリケーションユニットおよび二次アプリケーションユニットにおいて、ローカルユーザーガスアカウントを有する必要がある。そのような方法では、二次アプリケーションユニットは、二次アプリケーションサービスを実行するために必要なリソースの使用に対して、二次アプリケーションユニットにおいてそれぞれのユーザーが保有するローカルユーザーガスアカウントから直接課金し得る。このようなスキームは、特に二次アプリケーションサービスの計算量の事前の査定が困難なアプリケーションに対する課金について、より柔軟性を高める。
【0033】
一実施形態によれば、この方法は、ネットワークの各ユーザーが、ウォレット計算ユニットを実行するさらなるステップを備える。ウォレット計算ユニットは、ユーザーのユーザー通貨アカウントを管理するように構成されている。さらに、具体化された方法は、ウォレット計算ユニットからそれぞれのアプリケーションユニットに支払いメッセージを送信して、通貨金額をユーザー通貨アカウントからそれぞれのアプリケーションユニットのローカルユーザーガスアカウントに転送するステップを含み得る。
【0034】
このような方法は、柔軟で効率的なリソース課金を容易にする。ウォレット計算ユニットにより提供されるユーザー通貨アカウントは、例えば、従来の銀行アカウントからユーザーが請求し得る。この点で、さまざまな外部銀行アプリケーションまたは外部銀行アカウントへの(外部)インターフェイスを提供し得る。他方、ユーザー通貨アカウントは、通貨金額をユーザー通貨アカウントからそれぞれのユーザーが保有する1つ以上のローカルユーザーガスアカウントに内部で転送するために使用され得る。この内部通貨転送は、ウォレット計算ユニットからそれぞれのローカルユーザーガスアカウントをホストするアプリケーションユニットに支払いメッセージを送信することにより実行され得る。
【0035】
ウォレット計算ユニットは、ガスユニットまたは別の通貨、例えば、暗号通貨または米ドルやユーロなどの古典的な国の通貨として固定されたいる安定したコイン、で実行され得る。暗号通貨または古典的な国の通貨とガスユニットとの間の為替レートは、分散ネットワークにより、例えば、分散ネットワークのガバナンスシステムにより、管理され得る。一例として、分散ネットワークは、1つ以上の為替レートを備えたグローバルテーブルを提供し得る。いくつかの実施形態によれば、分散ネットワークは、為替レートを調整して、ガスに概ね安定したコストを提供し得る。
【0036】
さらなる実施形態によれば、この方法は、各アプリケーションユニットが、アプリケーションユニットのガスアカウントを実行するステップを備える。
【0037】
このようなアプリケーションユニットのガスアカウントが、ネットワークのリソースの使用に対する課金は、より効率的で柔軟になる。アプリケーションユニットのガスアカウントは、特にローカルユーザーのガスアカウントの代わりに、またはそれに加えて、アプリケーションサービスの支払いに使用し得る。さらに、アプリケーションユニット自体が使用する、例えば、それ自体のストレージの使用するリソースに対して課金することが可能である。さらに、アプリケーションユニットのガスユニットは、異なるアプリケーションユニット間、特に、呼び出しに関与する一次アプリケーションユニットと二次アプリケーションユニットとの間でガスを転送することに使用し得る。
【0038】
一実施形態によれば、この方法は、イングレスメッセージの受理、クエリの読み込み、受理したイングレスメッセージの実行、および/または受理したユニット間メッセージの実行、に対して別々に課金するステップをさらに備える。ここで、ユニット間メッセージはネットワークの計算ユニット間で送信される。
【0039】
このように別々に課金することにより、さまざまなリソースの用途に対してさまざまな技術的課金スキームを組み込むことを可能となる。さらに、システムのセキュリティを強化し、攻撃者の攻撃を防止または少なくとも阻止するために使用可能である。加えて、課金スキームを、より柔軟で迅速なものにする。
【0040】
ローカルユーザーガスアカウントの各々は、イングレスメッセージの受理に対して課金するように構成されたイングレスサブアカウントと、クエリの読み込みに対して課金するように構成された読み取りクエリサブアカウントと、メッセージの実行、特に、受理したイングレスメッセージの実行および/または前記受理したユニット間メッセージの実行、に対して課金するように構成された実行サブアカウントと、を備える。
【0041】
このことは、システムのセキュリティのさらなる向上、および障害のあるアプリケーションユニットや悪意のあるアプリケーションユニットにより引き起こされる潜在的な損傷を制限することに使用し得る。特に、分散ネットワークは、分散ネットワークがそれぞれの要求によるリソースの使用を開始する前に、別個のサブアカウントのそれぞれが持つ必要がある最小残高を特定するように構成され得る。一例として、新しいイングレスメッセージは、イングレスサブアカウントのそれぞれの残高が、指定された最小イングレス残高を超えている場合にのみ、受理することが考慮される。
【0042】
さらなる実施形態によれば、この方法は、イングレスメッセージ、読み取りクエリ、ならびにユニット間メッセージに対して、異なる会計期間および/または課金時間を適用するステップを備える。このような異なる会計期間は、課金スキームの異なる技術的実装をさらに促進し、分散ネットワークへの攻撃を防止または妨害するために使用され得る。
【0043】
一実施形態によれば、この方法は、イングレッスメッセージを実行するためにそれらを受け入れるかまたは拒否するときに、イングレッスメッセージに対して課金することを含み得る。
【0044】
さらなる実施形態によれば、この方法は、特に二次アプリケーションユニットへの1つ以上の呼び出しの発行後に、事前にイングレスメッセージの実行に対して課金することを含む。
【0045】
そのような実施形態は、イングレスメッセージでそれを満たすことにより攻撃を効率的に防止または妨害し得る。より具体的には、異なる時点で早期に請求することにより、特に、サブアカウントのそれぞれの残高が必要な最小残高を下回るとすぐに、敵対者が要求する処理を早期に停止することを保証し得る。
【0046】
さらなる実施形態によれば、この方法は、続いてバンドルされた方法で読み取りクエリに対して、例えば、定義済みの数の読み取りクエリが実行された後でのみ、課金するステップを備える。
【0047】
これにより、読み取りクエリの処理が、より効率的になる。そのような実施形態は、アプリケーションユニットがサブネットを形成する複数のノード上で実行され、サブネットの複数のノードに亘って複製される分散ネットワークにおいて特に有用である。このようなネットワークでは、読み取りクエリをサブネットの複数のノードに亘って複製する必要はなく、読み取りクエリはサブネットの単一ノードで独立して処理可能である。
【0048】
さらなる実施形態によれば、この方法は、それぞれのサブネットの各ノードに対して別個の読み取りクエリサブアカウントを提供するステップを備える。これにより、単一ノードに読み取りクエリを殺到させることによる攻撃を防止または妨害し得る。より具体的には、ノードは、個別の読み取りクエリサブアカウントに十分な残高があるときだけ読み取り要求を実行し得る、読み取り要求は、バンドルされた方法で事後においてのみ課金される。
【0049】
別の実施形態によれば、この方法は、分散ネットワークのストレージリソースの使用に対して、分散ネットワークにより課金するステップと、分散ネットワークのストレージリソースの使用に対して、それぞれのアプリケーションユニットのガスアカウントから支払うステップと、をさらに備える。
【0050】
いくつかの実施形態によれば、それぞれのアプリケーションユニットは、例えば、定義済みの期間に使用されたストレージの最大量に対して課金され得る。
【0051】
さらなる実施形態によれば、アプリケーションユニットが、特に、一次アプリケーションユニットおよび二次アプリケーションユニットのそれぞれが、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれによるリソースの使用に対して、固定価格で課金するステップをさらに備える。
【0052】
そのような固定価格は、一方で、通信帯域幅の使用が少ない効率的な支払いの手続きを促進する。その一方で、それは迅速な課金を促進する。さらに、一次アプリケーションユニットのローカルユーザーアカウントを介して、洗練された単純な方法での二次アプリケーションユニットの支払いの処理を可能とする。
【0053】
さらなる実施形態によれば、この方法は、アプリケーションユニットが、特に、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれが、一次アプリケーションサービスおよび/または二次アプリケーションサービスそれぞれによるリソースの使用に対して、前払いで請求するステップを備える。さらに、この方法は、アプリケーションユニットが、特に、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれが、前払いの未使用部分を払い戻すさらなるステップを含み得る。
【0054】
このことは、さらなる柔軟性を提供する。
【0055】
さらなる実施形態によれば、この方法は、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれのアプリケーションユニットガスアカウントから、対応する一次アプリケーションサービスおよび/または二次アプリケーションサービスの実行を確実にするために前払いで補充するステップを備える。
【0056】
このことは、さらなる柔軟性を提供する。
【0057】
さらなる実施形態によれば、分散ネットワークは複数のサブネットを含み、ここで、複数のサブネットのそれぞれは、複数のノードのうちの1つ以上を含む。この方法は、アプリケーションユニットの各々を、複数のサブネットのうちの1つに割り当てて、それぞれのサブネットに亘ってアプリケーションユニットを複製するステップをさらに備える。
【0058】
本発明のいくつかの実施形態による方法は、複製されたアプリケーションユニットを有するサブネットを備える、そのような分散ネットワークに特に有用である。
【0059】
特に、その複製は、実行サブセットの各々のノード上において、計算ユニットのユニット状態の空間で、アクティブな複製を実行することで、より容易になり得る。いくつかの実施形態によれば、ユニット状態は、特に、入力キュー、出力キュー、システム状態、およびアプリケーションまたはユーザー状態を含み得る。
【0060】
一実施形態によれば、分散ネットワークは、計算ユニットの一式、特に計算ユニットの状態、をサブネット全体に複製するように構成される。その結果、それぞれのサブネットの計算ユニットは、それらが誠実に振る舞う限り、常に同じ状態になる。異なるサブネット、特に、異なるサブネットの計算ユニットは、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネット間メッセージを交換することにより、相互に通信し得る。
【0061】
本発明の別の態様の実施形態によれば、分散ネットワークが提供される。
【0062】
分散ネットワークは、複数のノードを備え、複数のノードのそれぞれは、1つ以上の計算ユニットを実行するように構成される。その1つ以上の計算ユニットは、1つ以上のアプリケーションユニットを包含する。そのアプリケーションユニットは、分散ネットワークのユーザーにアプリケーションサービスを提供するように構成される。分散ネットワークは、計算ユニットにリソースを提供し、ネットワークの各ユーザーが、1つ以上のアプリケーションユニットで、1つ以上のローカルユーザーガスアカウントを実行するように構成される。分散ネットワークはさらに、ローカルユーザーガスアカウントを介して、またはローカルユーザーガスアカウントが、分散ネットワークのリソースの使用に対する支払いの手続きを行うように構成される。
【0063】
本発明の別の態様の一実施形態によれば、分散ネットワークのノードが提供される。
【0064】
本発明の別の態様の実施形態によれば、分散ネットワークを動作させるコンピュータプログラム製品が提供される。そのコンピュータプログラム製品は、それ自体にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、そのプログラム命令は分散ネットワークの複数のノードのうちの1つ以上が実行可能であり、複数のノードのうちの1つ以上で、本発明の方法のステップを実行する。
【0065】
本発明の別の態様の実施形態によれば、非一時的コンピュータ可読記憶媒体で符号化されたソフトウェアアーキテクシャが提供される。そのソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノード動作させるように構成される。
符号化されたソフトウェアアーキテクチャは、複数のノードのうちの1つ以上が実行可能なプログラム命令を備え、複数のノードのうちの1つ以上に、本発明の方法のステップを備える方法を実行させる。
【0066】
本発明の一態様の特徴および利点は、必本発明の他の態様に適宜適用し得る。
【0067】
他の有利な実施形態は、従属請求項ならびに以下の説明に記載されている。
【図面の簡単な説明】
【0068】
本発明は、よりよく理解され、上記以外の目的は、以下の詳細な説明から明らかになるであろう。このような説明は、添付の図面を参照してなされる。
【
図1】
図1は、本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図2】
図2は、ネットワークの典型的なノードで実行される計算ユニットを、より詳細に示す図である。
【
図3】
図3は、複数のサブネットを備える本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図4】
図4は、
図3の分散ネットワークで実行される計算ユニットを、より詳細に示す図である。
【
図5】
図5は、
図3のネットワークのサブネットにおいて受信されるサブネット間メッセージの概略図である
【
図6】
図6は、サブネットプロトコルクライアントのプロトコルコンポーネントの概略ブロック図である。
【
図7】
図7は、メッセージプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフローを例示的に視覚化する図である。
【
図8】
図8は、本発明の一実施形態によるアプリケーションユニットを、より詳細に示す図である。
【
図9】
図9は、本発明の一実施形態による例示的なローカルユーザーガスアカウントをより詳細に示す図である。
【
図10】
図10は、本発明の一実施形態による課金/支払いスキームを示す図である。
【
図11】
図11は、本発明の一実施形態による別の課金/支払いスキームを示す図である。
【
図12】
図12は、分散ネットワークのユーザーが、ローカルユーザーのガスアカウントに再課金する方法を示す図である。
【
図13】
図13は、本発明の一実施形態による読み取りクエリの課金スキームを示す図である。
【
図14】
図14は、一次アプリケーションユニットが、クロージャを使用して二次アプリケーションユニットへの呼び出しを管理する方法を示す図である。
【
図15】
図15は、本発明の一実施形態によりコンピュータに実装する方法のそれぞれのステップのフローチャートを示す。
【
図16】
図16は、本発明の一実施形態によるネットワークの各々のノードで実行される主な処理を示す図である。
【
図17】
図17は、サブネット間およびサブネット内のメッセージの交換に関与する主要な層を示す層モデルを示す図である。
【
図18】
図18は、本発明の例示的な実施形態による、コンセンサスコンポーネントによる入力ブロックの生成を示す図である。
【
図19】
図19は、ネットワーキングコンポーネントを、より詳細に示す図である。
【
図20】
図20は、本発明によるノードの例示的な実施形態を示す図である。
【発明を実施するための形態】
【0069】
<発明を実行するモード>
最初に、本発明のいくつかの一般的な態様および実施形態の用語を紹介する。
【0070】
一実施形態によれば、分散ネットワークは、分散形式で配置された複数のノードを備える。このような分散ネットワークの計算では、ソフトウェアとデータが複数のノードに分散される。ノードは計算リソースを定めて、分散ネットワークは特定の分散計算技術を使用し得る。
【0071】
一実施形態によれば、分散ネットワークは、ブロックチェーンネットワークとして具体化され得る。「ブロックチェーン」という用語には、電子台帳、コンピューターベース台帳、分散型台帳のすべての形式が含まれる。
【0072】
図1に、本発明の一実施形態による分散ネットワーク100の例示的なブロック図を示す。
【0073】
分散型ネットワーク100は、複数のノード10を備え、これは、ネットワークノード10またはコンピューティングノード10としても示され得る。複数のノード10のそれぞれは、1つ以上の計算ユニットを実行するように構成される。一実施形態によれば、計算ユニットは、ソフトウェアの一部として、特に、それ自体のユニット状態を備えているか、または有している、ソフトウェアの一部として理解されるべきである。ネットワーク100の複数のノード10は、異なるサブセットおよび/またはサブネットに割り当てられ得る。このような割り当ては、時間の経過とともに変更される可能性がある。
【0074】
この実施形態によれば、ネットワーク100は、ノード10のコンセンサスサブセットSS1と、ノード10の実行サブセットSS2とを備える。
【0075】
ノード100において実行される計算ユニットは、ネットワーク100のユーザーにより、計算タスクまたはサービス、特に、アプリケーションサービスを実行または要求するために使用され得る。ネットワーク100の計算ユニットは、実行メッセージの現在のセットからの、特に、実行メッセージを実行し得る。実行メッセージは、特に、ネットワークの計算ユニット間で交換されるユニット間メッセージ、および/または入力メッセージ、すなわち、外部ソースから、特に、ネットワークのユーザーから、受信されるメッセージを備え得る。ネットワーク100は、最初にコンセンサスプロトコルが実行されて、それぞれの現在の実行メッセージのセットからの実行メッセージの選択および処理順序について合意を形成するように構成される。ネットワーク100の中のノード10の数に応じて、コンセンサスプロトコルは、有利には、ネットワークのすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され、これは、以下、コンセンサスサブセットSS1として示される。コンセンサスサブセットSS1は、コンセンサスサブセットとして示され得る。このように、コンセンサスサブセットSS1のノードは、コンセンサスプロトコルを実行して、現在の実行メッセージのセットからの実行メッセージの選択と処理順序について合意を形成するように構成される。
【0076】
実行メッセージの実行はまた、有利には、ネットワーク100のすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され得る。このサブセットは、以下では実行サブセットSS2として示され、実行サブセットSS2として示され得る。次に、実行サブセットSS2の計算ユニットは、前のコンセンサスステップで合意された処理順序で実行メッセージの選択を個別に実行する。実行サブセットSS2の各計算ユニットは、決定論的な方法で実行を実行し、それにより実行サブセットSS2の対応する計算ユニットのユニット状態を変更する。
【0077】
一実施形態によれば、ユニット状態は、計算ユニットにより使用されるすべてのデータまたは情報、特に、計算ユニットが変数に格納するデータだけでなく、計算ユニットがリモート呼び出しから取得するデータ、として理解されなければならない。ユニット状態は、特に、それぞれのノードのそれぞれの記憶場所における特定の記憶場所を表し得る。これらの記憶場所の内容は、計算ユニットの実行の任意の時点で、実施形態によればユニット状態と呼ばれる。計算ユニットは、特に、ステートフル計算ユニットとして具体化し得る。すなわち、計算ユニットは、先行する事象またはユーザーの相互作用を記憶するように実施形態にしたがって設計される。
【0078】
いくつかの実施形態によれば、ネットワークの各々のノードは、他のノードのクロックと大まかに同期されたローカルクロックに従うと想定される。
【0079】
図2に、ネットワーク100のノード10上で実行される計算ユニット15を、より詳細に示す。より具体的には、5つの計算ユニット15が実行されている
図1のサブセットSS2のノード10を示している。より具体的には、それら5つの計算ユニット15は、計算ユニットCU21、CU22、CU23、CU24およびCU25一式である。計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2の各ノード10で実行される。さらに、計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2全体に亘って複製され、計算ユニットCU21、CU22、CU23、CU24およびCU25のそれぞれが誠実に振る舞うとき、最終的に同じユニット状態になる。これは、特に、サブセットSS2のノード10のそれぞれで、計算ユニットCU21、CU22、CU23、CU24、およびCU25のユニット状態の空間でアクティブな複製を実行することにより実装し得る。
【0080】
計算ユニットCUは、さまざまな機能を提供することがあり、さまざまなタイプのものであり得る。計算ユニットの1つのタイプは、分散ネットワークのユーザーにアプリケーションサービスを提供するように構成されたアプリケーション計算ユニットである。アプリケーション計算ユニットは、簡略化するために、以下ではアプリケーションユニットまたはAUと表記する。別のタイプの計算ユニットは、ネットワークのユーザーのユーザー通貨アカウントを管理するように構成され得るウォレット計算ユニットである。そして、さらに別のタイプの計算ユニットは、システム計算ユニットである。そのようなシステム計算ユニットは分散ネットワークに、システムまたは管理機能を提供し得る。
【0081】
図3に、本発明の一実施形態による分散ネットワーク300の例示的なブロック図を示す。
【0082】
分散ネットワーク300は、複数のノード10を備える。
【0083】
この実施形態によれば、複数のノード10は、複数のサブネット11に分散されている。
図1の例では、SNA、SNB、SNC、およびSNDで示される4つのサブネット11が提供される。ネットワーク100は、それぞれのサブネット11の内部のサブネット内通信用の通信リンク12と、サブネット11の異なるサブネット間のサブネット間通信用の通信リンク13とを備える。したがって、通信リンク12は、サブネット内またはピアツーピア(P2P)通信リンクとしても示され得、通信リンク13は、サブネット間またはサブネット対サブネット(SN2SN)通信リンクとしても示され得る。複数のサブネット11のそれぞれは、それぞれのサブネット11の各々のノード10において計算ユニット一式を実行するように構成される。
【0084】
本発明のいくつかの実施形態によれば、サブネット11は、それぞれのサブネット11に亘って計算ユニット一式を複製するように構成される。より具体的には、サブネット11は、それぞれのサブネット11にわたって計算ユニットのユニット状態を複製するように構成される。
【0085】
ネットワーク100は、特に、プルーフオブステークブロックチェーンネットワークであり得る。
【0086】
プルーフオブステーク(PoS)は、ブロックチェーンネットワークが、どのノードがブロックチェーンの次のブロックを作成できるかについて分散的に合意を形成する方法を説明する。PoS法は、重み付けされたランダム選択を使用し得る。それにより、個々のノードの重みは、特に、それぞれのノードの資産(「ステーク」)に応じて決定され得る。
【0087】
非同期BETコンセンサスプロトコルのいくつかの実施形態によれば、各サブネットの破損しているノードが1/3(3分の1)未満であると想定されることで、サブネットにより生成および署名されたアーティファクトを完全に信頼可能となる。
【0088】
図4に、ネットワーク300のノード10において実行される計算ユニット15をより詳細に示す。より具体的には、
図4の左側401に、5つの計算ユニット15が実行されている
図1のサブセットSNAのノード10を示す。より具体的には、5つの計算ユニット15は、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5である。1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、サブネットSNAの各ノード10で実行される。さらに、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、各々の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5が同じユニット状態を持つように、サブネットSNA全体に亘って複製される。これは、特に、サブネットSNAのノード10のそれぞれで、計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5のユニット状態の空間でアクティブな複製を実行することにより実装され得る。
【0089】
さらに、
図4の右側402に、4つの計算ユニット15が実行されている
図1のサブネットSNBのノード10を示す。より具体的には、4つの計算ユニット15は、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4である。1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、サブネットSNBの各ノード10で実行される。さらに、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、各々の計算ユニットCUB1、CUB2、CUB3、およびCUB4が同じユニット状態を持つように、サブネットSNB全体に亘って複製される。上記のように、ユニット状態の空間でアクティブな複製を実行する。
【0090】
図3に戻って参照すると、ネットワーク300は、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネットSNA、SNB、SNC、およびSNDの間でサブネット間メッセージ16を交換するように構成される。コンセンサスプロトコルは、それぞれの受信サブネットでのサブネット間メッセージ16の処理順序について合意を形成するように構成される。例えば、サブネットSNBに対して、サブネットSNA、SNB、SNC、およびSNDからサブネット間メッセージ16を受信することを参照している。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、定義済みのコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行して、受信したサブネット間メッセージ16の処理順序について合意を形成する。
【0091】
いくつかの実施形態によれば、ネットワーク300は、各々のサブネットにおいて別々にコンセンサスプロトコルを実行するように構成され得る。つまり、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、他のサブネットとは別に、独立して独自のコンセンサスプロトコルを実行する。したがって、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、定義済みの範囲で、処理するメッセージを受信した他のサブネットとは独立して、その順序を決定可能である。ゆえに、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、受信したサブネット間メッセージ16の処理順序に基づいて、サブネットごとに合意を形成する。このようなコンセンサスは、ローカルコンセンサスまたはサブネットコンセンサスと見なし得る。
【0092】
この概念は、
図5を参照すると、より詳細に示されている。
【0093】
図5に、
図3のサブネット11のSNBで受信されるサブネット間メッセージ16の概略図を示す。
【0094】
サブネットSNBは、サブネットSNAからサブネット間メッセージSNA-SNB、サブネットSNCからサブネット間メッセージSNC-SNB、およびサブネットSNDからサブネット間メッセージSND-SNBを受信する。これらのサブネット間メッセージのプールは、サブネットSNBにおいてコンセンサスプロトコルをローカルで実行するコンセンサスコンポーネント30であるCSNBにより処理される。ゆえに、コンセンサスコンポーネント30は、サブネットコンセンサスコンポーネントとして示され得る。
【0095】
コンセンサスコンポーネント30は、定義済みのコンセンサスアルゴリズムまたはメカニズムに従ってサブネット間メッセージから入力ブロックIBのキューを生成し、メッセージングプロトコルを実行するように構成されたMSNBに入力ブロックIBのキューを提供し、入力ブロックIBの処理をさらに行う。
【0096】
いくつかの実施形態によれば、各々のサブネット11のノード10のそれぞれは、コンセンサスプロトコルに参加し得る。そのような実施形態によれば、サブネット11の各々は、例えば、10から100のノード、特に、20から50のノードを備える。このような数値は、セキュリティと効率の間の有利な妥協点を提供し得る。
【0097】
他のいくつかの実施形態によれば、コンセンサスプロトコルは、定義済みの選出スキームに従って、それぞれのサブネット11の複数のノード10から委員会のメンバーを選出する。そして、選出された委員会のメンバーとのみコンセンサスプロトコルを実行するように構成され得る。このようなアプローチは、ノードの数が多いサブネット、例えば、1000以上のノードを有するサブネット、で特に有用である。
【0098】
図6に、例えば、
図1に示されるサブネットプロトコルクライアント42であるサブネットプロトコルクライアントのプロトコルコンポーネント600の概略ブロック図を示す。
【0099】
図6の実線の矢印は、ユニット間メッセージとイングレスメッセージで構成される実行メッセージに関連する。入力メッセージは、特にユーザーからの変更クエリであり得る。破線の矢印はシステム情報に関連する。
【0100】
プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージングコンポーネント61と、実行メッセージを実行する、特に、ユニット間メッセージを実行するおよび/またはクエリを変更する、実行プロトコルを実行するように構成された実行コンポーネント62と、を備える。プロトコルコンポーネント600はさらに、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63と、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64と、状態管理プロトコルを実行するように構成された状態管理コンポーネント65と、クロスサブネット転送プロトコルを実行するように構成されたX-Netコンポーネント66と、ネットワークの外部ユーザーから受信したイングレスメッセージを処理するように構成されたイングレスメッセージハンドラコンポーネント67と、を備える。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、
図16を参照して後で説明されるように、セキュリティアプリケーション43として具体化され得るセキュリティコンポーネント611と協調する。プロトコルコンポーネント600は、読み取りクエリ、または言い換えれば、ユーザーからの読み取り要求、を受信するように構成された状態リーダーコンポーネント69をさらに備える。
【0101】
状態リーダーコンポーネント69は、状態マネージャーコンポーネント65と協調するように構成される。状態リーダーコンポーネント69により受信および処理される読み取りクエリは、特に、計算ユニットのユニット状態を永続的に変更しない非変更クエリとして具体化される。他方、イングレスメッセージハンドラコンポーネント67から受信され、コンセンサスコンポーネント63を通過するイングレスメッセージは、特に、変更クエリを実行しているそれぞれの計算ユニットのユニット状態を変更する変更クエリとして具体化され得る。読み取りクエリはコンセンサスコンポーネント63を通過する必要がないため、それぞれのサブネットの任意のノードで非同期に実行でき、それゆえ、はるかに高速である。
【0102】
さらに、サブネットプロトコルクライアント42は、
図6を参照して説明されるように、メインネットプロトコルクライアント41の一部であり得るリーダーコンポーネント610と協調し得る。メインネットリーダーコンポーネント610は、メインネットにより格納されて、それぞれのサブネットプロトコルクライアント42に配信される、情報を提供し得る。これは、サブネットへのノードの割り当て、ノードの公開鍵、サブネットへの計算ユニットの割り当てなどを含む。
【0103】
メッセージングコンポーネント61および実行コンポーネント62は、これらのコンポーネント内のすべての計算、データ、および状態が、それぞれのサブネットのすべてのノード、より具体的には、それぞれのサブネットのすべての誠実なノードに亘って同一に複製されるように構成される。これは、これらのコンポーネントの波形の背景により示される。
【0104】
そのような同一の複製は、一方では、メッセージコンポーネント61への入力のストリームがそれぞれのサブネットにより合意され、したがって、すべてのノード、より具体的にはすべての誠実なノードにより同一であることが保証されるコンセンサスコンポーネント63のおかげで、いくつか実施形態に従って達成される。他方、これは、メッセージングコンポーネント61および実行コンポーネント62が、決定論的で複製された計算を実行するように構成されることにより達成される。
【0105】
X-Net転送コンポーネント66は、メッセージストリームを他のサブネットに送信し、他のサブネットからメッセージストリームを受信する。
【0106】
大部分のコンポーネントは、暗号化コンポーネント68にアクセスして暗号化アルゴリズムを実行し、メインネットリーダー610にアクセスして構成情報を読み取る。
【0107】
実行コンポーネント62は、メッセージコンポーネント61から、計算ユニットのユニット状態および計算ユニットの着信メッセージを受信し、計算ユニットの発信メッセージおよび更新されたユニット状態を返す。この計算を実行する間に、処理されたメッセージ(クエリ)のガスまたは燃料消費量を測定し得る。
【0108】
メッセージコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックと同期する。すなわち、各々の入力ブロックについて、メッセージコンポーネント61は、以下のステップを実行する。それぞれの入力ブロックを解析して、その計算ユニットのメッセージを取得する。さらに、メッセージを、異なる計算ユニットのそれぞれの入力キューにルーティングし、スケジューラーにより、各々の計算ユニットに割り当てられた容量に従って実行されるメッセージを計画するステップ。次に、実行コンポーネント62を使用して、対応する計算ユニットによりメッセージを処理し、その結果、送信されるメッセージを、それぞれの計算ユニットの出力キューに追加する。ただし、メッセージが同じサブネットにおける計算ユニット宛てであると、対応する計算ユニットの入力キューに直接入れられ得る。メッセージングコンポーネント61は、最終的に、計算ユニットの出力キューのメッセージを、受信計算ユニットが配置されているサブネットのメッセージストリームにルーティングし、これらのメッセージストリームを状態マネージャーコンポーネント65に転送して認証される、すなわち、それぞれのサブネットにより署名される。
【0109】
状態マネージャーコンポーネント65は、認証コンポーネント65aを備える。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、それぞれのサブネットの計算ユニットのグループ署名により実行され得る。
【0110】
認証コンポーネント65aは、ユニット状態の特定の変数、特に、以下でより詳細に説明するように、ユニット状態のスナップショットの特定の変数を認証するようにさらに構成され得る。
【0111】
図7に、メッセージプロトコルおよびコンセンサスプロトコル、ならびに関連するコンポーネント、例えば、
図6のメッセージコンポーネント61とコンセンサスコンポーネント63、のワークフロー700を例示的に視覚化して示す。より具体的には、
図7は、サブネットSNBとサブネットSNAおよびSNCの間で交換されるサブネット間メッセージのワークフローを視覚化する。さらに、サブネットSNBは、複数のユーザーUと入力メッセージを交換する。
【0112】
図7の右下から始まって、複数の入力ストリーム701、702および703は、コンセンサスコンポーネント63により受理される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントにより実行されるサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザーUからのサブネットSNBへの入力メッセージ713を含む。
【0113】
サブネット間メッセージ711および712は、異なるサブネットの計算ユニット間で交換されるユニット間メッセージ、ならびに信号メッセージを含む。信号メッセージは、ユニット間メッセージの受信を確認するかどうかを確認するために使用される。メッセージコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわち、この例ではサブネットSNBからサブネットSNAおよびSNCに信号メッセージを送信するように構成される。メッセージコンポーネント61は、この例によれば、送信されたユニット間メッセージを、それぞれのユニット間メッセージに対して確認応答メッセージが受信されるまで格納するように構成されている。これにより、伝達が保証されます。
【0114】
コンセンサスコンポーネント63は、サブネットSNA、SNCのサブネット間メッセージ711、712、およびユーザーUとの入力メッセージ713を受信して処理して、対応するコンセンサスプロトコルにより実行される定義済みのコンセンサスメカニズムに従って、サブネット間メッセージ711、712および入力メッセージ713から入力ブロック720のキューを生成するように、構成される。コンセンサスにより生成された入力ブロック720の各々は、一組の入力メッセージ713、一組のサブネット間メッセージ711、712、および実行パラメータ714であるEPを含む。実行パラメータ714であるEPは、特に、ランダムシード、指定された実行時間、および/または高さ指標を含み得る。コンセンサスコンポーネント63はまた、サブネットの現在の負荷に基づいて、すべての入力ブロックの中のメッセージの数を変化させ得る。
【0115】
コンセンサスコンポーネント63は、次に、入力ブロック720のキューをメッセージコンポーネント61へ提供する。メッセージコンポーネント61は、メッセージプロトコルを実行して、入力ブロック720の処理を行うように構成されている。
【0116】
メッセージプロトコルおよびメッセージコンポーネント61は、コンセンサスコンポーネント63から受信された入力ブロック720と同期する。
【0117】
受信された入力ブロックの処理を行う前に、メッセージコンポーネント61は、1つ以上の入力チェックを含む1つ以上の前処理ステップを実行し得る。それら入力チェックは、入力チェックコンポーネント740により実行され得る。
【0118】
いくつかの実施形態によれば、入力チェックは異なる粒度で実行し得る。最初に、入力チェックは入力ブロック全体に対して実行され得る。このようなチェックは、入力ブロックチェックとして示され得る。これらは、次の入力ブロックの高さのチェックを備え得る。次の入力ブロックの高さが、次の順番で予想される高さよりも低いとき、それは破棄されます。入力ブロックが次の順番で予定されないとき、メッセージコンポーネント61はノードキャッチアッププロトコルを起動し得る。入力ブロックが次の順番に存在するとき、それはメッセージコンポーネント61によりさらに処理される。
【0119】
入力ブロック内のさまざまなタイプのメッセージ(信号メッセージ、イングレスメッセージ、ユニット間メッセージ)はグループ化され得る。
【0120】
入力チェックは、メッセージングコンポーネントが現在過負荷であり、処理を実行するために十分な容量がないかどうかをチェックするための過負荷チェックをさらに含み得る。
例えば、誘導プール内の関連するキューが満量になると、対応するメッセージが拒否され得る。さらなる入力チェックは、順番通りの配送チェックを含み得る。順番どおりの配信要件を満たすために、メッセージへの注釈、例えば、シーケンス番号の付加が可能である。シーケンス番号を有するメッセージが受信された場合、メッセージコンポーネント61は、それが期待される番号を有するかどうかをチェックし得、異なるときは、それを拒否し得る。さらに、入力チェックコンポーネント740は、対象とする宛先の妥当性チェック、すなわち、メッセージが、対応するサブネットにおいてアクティブである計算ユニットを対象にするかどうかの妥当性チェックを実行し得る。
【0121】
入力チェックが合格のときは、それぞれの入力ブロック720のメッセージは、メッセージコンポーネント61によりさらに処理され得る。そして、対応するメッセージは、誘導プールコンポーネント731の誘導プールの中の対応するキューに追加され得る。
【0122】
一般に、メッセージングコンポーネント61は、入力ブロック720を、イングレスメッセージ、信号メッセージ、およびサブネット間メッセージを誘導プールコンポーネント731に、適宜配置することであらかじめ処理する。着信サブネットストリームの中の信号メッセージは、出力キューのメッセージの受領確認として扱われ、その後排除可能である。
【0123】
この例では、誘導プールコンポーネント731は、ユニット間キューA1-B1、C1-B1、A2-B2、およびC1-B2、ならびにユーザー対ユニット間キューU-B1およびU-B2を備える。
【0124】
これらの前処理ステップに続いて、メッセージコンポーネント61は、実行コンポーネント62(
図6を参照)を呼び出して、単一の実行サイクルの間に実行可能な限り多くの誘導プールを実行し、指定された実行時間およびランダムシードを追加入力として提供する。その実行サイクルに続いて、結果として生じるメッセージの出力キューは、出力キューコンポーネント733に供給される。最初は、出力キューコンポーネント733が、ユニット間の出力キューおよびユニット対ユーザーの出力キューを備える。この例では、ユニット間出力キューとしてB1-A1、B1-C2、B2-A2、およびB2-C3、ならびにユニット対ユーザーの出力キューとしてB1-U1およびB2-U4を備える。一例として、メッセージB1-A1は、サブネットSNBの計算ユニットB1からサブネットSNAの計算ユニットA1へのメッセージを示す。別の例として、メッセージB1-U1は、サブネットSNBの計算ユニットB1からユーザーU1へのメッセージを示す。
【0125】
出力キューコンポーネント733は、例えば、
図6に示されるような認証コンポーネント65aにより認証されて、他のコンポーネントにより広められた、サブネットごとの出力ストリーム一式を形成することにより、メッセージの結果として生じる出力キューを後処理する。この例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、およびSNB-Uが提供される。メッセージコンポーネント61は、それぞれのサブネットの計算ユニットの状態/ユニット状態、この例では、サブネットSNBの計算ユニットB1およびB2の状態を格納するように構成された状態記憶コンポーネント732をさらに備える。対応するユニット状態は、計算ユニット各々のワーキングメモリである。
【0126】
メッセージコンポーネント61は、システム状態の特定の部分を決定論的に変化させることを中心に展開する。各ラウンドにおいて、実行コンポーネント61は、それぞれの計算ユニットの状態を読み取って更新することで、誘導プールからの特定のメッセージを実行する。そして、実行される計算ユニットが送信したい発信メッセージを返す。これらのメッセージは、出力キューコンポーネント733に入り、最初は、ネットワークの計算ユニット間のユニット対ユーザーメッセージおよびユニット間メッセージを含む。同じサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネットの内部で内部的にルーティングおよび配信され得るが、サブネット間メッセージは、サブネットの宛先でソートされた出力ストリームにルーティングされる。
【0127】
さらに、いくつかの実施形態によれば、2つの状態が維持されて、どのメッセージが処理されたかについてシステムの残りの部分に通知し得る。最初の部分はサブネット間メッセージ用に維持され、2番目の部分は入力メッセージ用に維持され得る。
【0128】
図8に、本発明の一実施形態による例示的なアプリケーション(計算)ユニット800を示す。
【0129】
アプリケーションユニット800は、入力キュー801、出力キュー802、ユーザーまたはアプリケーション状態803、およびシステム状態804を備える。(所与のサブネット上の)アプリケーションユニットのすべての入力キュー801は、集合して誘導プールを構成するが、入力キューは、アプリケーション計算ユニットの状態の一部である。出力キュー802は、おそらく他のサブネットワークにおいて、他のアプリケーション計算ユニットに配信される必要があるメッセージを含む。
【0130】
アプリケーション状態803は、モジュールの各々の実例とともに、アプリケーション計算ユニットおよびそれに付随するモジュールの機能を実装するメインウェブアセンブリ(Wasm)モジュールを備える。Wasmモジュールの実例では、メモリ、グローバル変数、およびテーブルで構成される。
【0131】
システム状態804は、アプリケーション計算ユニットのコードによる自由な変更はできない。これには、メタデータ、アプリケーション計算ユニットに代わるシステムにより維持されるその他の状態、特にコンパイルされた形式のWasmモジュール、および未処理のメッセージのコンテキストとコールバックとが含まれます。
【0132】
さらに、システム状態804は、それぞれのアプリケーション計算ユニット800のためのアプリケーションユニットガスアカウント、ならびに、この例ではUGA1、UGA2、・・・、UGANで示される1つ以上のローカルユーザーガスアカウントを備える。ユーザーガスアカウントは、アプリケーション計算ユニットユニット800におけるそれぞれのユーザーU1、U2、…、UNの現在のガス残高を含む。
【0133】
図9に、本発明の一実施形態による例示的なローカルユーザーガスアカウントUGAXを、より詳細に図示する。
【0134】
ローカルユーザーガスアカウントUGAXは、入力サブアカウント901、読み取りクエリサブアカウント902、および実行サブアカウント903を備える。イングレスサブアカウント901は、さらなる処理のために受理されたまたは拒否されたイングレスメッセージ、特に、
図7に示されたように誘導プール731に配置されたイングレスメッセージ、に対してJJを支払うように構成される。さらに、イングレスメッセージがコンセンサスを完全に通過するが入力チェック740に合格しないとき、それはすでにネットワークリソースを使用していることになる。したがって、いくつかの実施形態によれば、ユーザーは拒否された入力メッセージに対してもまた、支払いを行う必要がある。
【0135】
読み取りクエリサブアカウント902は、読み取りクエリに対して支払うように構成される。このような読み取りクエリは、ネットワークのユーザーにより、それぞれのサブネットの1つ以上のノードに送信され得る。いくつかの実施形態によれば、ノードは、それぞれのサブネットのアプリケーションユニットのユニット状態のスナップショットを定期的に読み取り得、ユーザーは、読み取りクエリにより読み取りスナップショットにアクセスし得る。それぞれのサブネットの各ノードには、読み取りクエリに対して課金する別々の読み取りクエリサブアカウントRQSAN1、RQSAN2、RQSANNがある。
【0136】
実行サブアカウント903は、メッセージの実行、特に、オングレスメッセージの実行に対して支払うように構成され得る。さらに、それは、いくつかの実施形態による、ユニット間メッセージの実行に対して支払うように構成され得る。
【0137】
いくつかの実施形態によれば、それぞれのサブアカウントのそれぞれは、十分な残高を有する必要がある。そうしないと、対応する要求/実行は処理されない。一例として、イングレスサブアカウント901に十分な残高がないとき、対応する入力メッセージは受理されない。
【0138】
図10に、本発明の一実施形態による課金/支払いスキームを図示する。
図10の例では、分散ネットワーク1000の単一の例示的なアプリケーションユニットAU1のみが、例示的なトランザクションおよび関連する課金/支払いに関与していると想定されている。アプリケーションユニットAU1は、アプリケーションユニットAU1により所有され、アプリケーションユニットAU1によりネットワークリソースの使用に対して支払うこと、および支払いを受け取ること、に使用されるアプリケーションユニットガスアカウントAGAを備える。
【0139】
アプリケーションユニットAU1は、分散ネットワークのユーザーUのためのローカルユーザーガスアカウントUGAをさらに含む。ネットワークは、ローカルユーザーガスアカウントUGAを介して、または、それにより、ユーザーUの要求により生じるネットワークリソースのリソース支払いの手続きを行うように構成される。いくつかの実施形態によれば、ローカルユーザーガスアカウントは、計数または計数ユニットとして具体化され得る。
図10の図示された例では、ユーザーUがユーザーインターフェイスUIを介して分散ネットワークに接続されると想定されている。
【0140】
ステップ1001において、ユーザーUは、イングレスメッセージIMをアプリケーションユニットAU1に送信する。イングレスメッセージIMは、プライマリアプリケーションサービスを要求するメッセージとして具体化される。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能し、入力メッセージのための分散ネットワーク1000のエントリポイントを設定する。一次アプリケーションユニットAU1は、ユーザーにより要求された一次アプリケーションサービスを実行する。一次アプリケーションサービスは、一般的にあらゆる種類のサービス、例えば、ウェブサイトへのアクセスの提供、旅行の予約、はがきの申し込みなど、あり得る。
図10の例では、一次アプリケーションユニットAU1は、分散ネットワーク1000の他の(図示されていない)アプリケーションユニットを関与させる必要なしに、イングレスメッセージIMを独立して処理可能であると想定されている。
【0141】
ステップ1002において、アプリケーションユニットAU1は、一次アプリケーションサービスにより生じた、または使用された、ネットワークリソースの使用に対する料金または支払いの手続きを行う。より具体的には、それぞれのガス量GAは、ローカルユーザーガスアカウントUGAから差し引かれる。いくつかの実施形態によれば、ガス量GAは、単に「燃焼」され得る、すなわち、別のアカウントに転送されることなくシステムから除去または排除され得るか、または分散ネットワークのシステムアカウントに転送され得る。他のいくつかの実施形態によれば、ガス量は、アプリケーションユニットガスアカウントAGAに転送され得る。
【0142】
さらに、ステップ1003において、アプリケーションユニットAU1は、応答メッセージRMを、ユーザーUへのユーザーインターフェイスUIを介して、イングレスメッセージIMに返す。応答メッセージRMは、例えば、 要求されたWebページであり、イングレスメッセージに応答してユーザーに提供される結果と見なされ得る。
【0143】
図11に、分散ネットワーク1100を参照した課金/支払いスキームを示す。
図11は、例示的なトランザクションに関与する分散ネットワーク1100の8つの例示的なアプリケーションユニットと、トランザクションに関与するネットワークリソースの使用に対する、関連する課金/支払いを示す。より具体的には、
図11は、アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8を示す。アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8のそれぞれは、アプリケーションユニットガスアカウントAGAを構成する。アプリケーションユニットのガスアカウントAGAは、対応するアプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8が所有し、分散ネットワーク1100のリソースの使用に対して支払いを行うため、および支払いを受け取るために、それぞれのアプリケーションユニットにより使用される、ガスアカウントである。
【0144】
いくつかの実施形態によれば、分散ネットワーク1100はまた、それが提供するストレージリソースの使用に対して課金する。したがって、それぞれのアプリケーションユニットのガスアカウントAGAは、それぞれのアプリケーションユニットによるネットワークのストレージリソースの使用に対する支払いに使用され得る。これらのストレージコストは、例えば、定期的に、例えば、最高水準の請求スキームにより、課金され得る。このようなスキームでは、それぞれのアプリケーションユニットは、事前定義された期間に使用したストレージスペースの最大量に対して課金される。アプリケーションユニットガスアカウントAGAに加えて、アプリケーションユニットAUXは、分散ネットワークのユーザー用のローカルユーザーガスアカウントUGAを備え得る。これらのローカルユーザーガスアカウントUGAは、分散ネットワーク1100の対応するユーザーのネットワークリソースの使用に対する支払いの手続きを行うように構成される。
【0145】
いくつかの実施形態によれば、ユーザーは、一次アプリケーションサービスを要求するイングレスメッセージを送信しようとする一次アプリケーションユニットの各々にユーザーガスアカウントUGAを有する必要がある。
【0146】
図11の図示の例では、
図11は、ユーザーUがユーザーインターフェイスUIを介して分散ネットワークに接続されると想定されている。
【0147】
いくつかの実施形態によれば、ユーザーUは、例えば、ブラウザプラグインにより、以下に二次アプリケーションユニットとして示される追加のアプリケーションユニットAUについて事前に通知される。それは、それぞれの一次プリケーションサービスを要求するためのユーザーガスアカウントを持つ必要がある。これは、それぞれの一次アプリケーションサービスにより頃なり得る。いくつかの実施形態によれば、二次アプリケーションユニットにおいて、さらなるユーザーガスアカウントは必要とされない場合があるが、いくつかの一次アプリケーションサービスでは、それぞれの一次アプリケーションサービスに関与する二次アプリケーションユニットの各々において、別個のユーザーガスアカウントが必要とされ得る。このようなブラウザプラグインは、それぞれのユーザーガスアカウントが十分に課金されているかどうかを定期的にチェックし得る。そうしないと、ユーザーのイングレスメッセージが拒否されることがある。
【0148】
いくつかの実施形態によれば、それぞれの要求の呼び出しツリー/実行ツリーが、ユーザーがローカルユーザーガスアアカウントを持つ必要があるアプリケーションユニットに当たったとき、アプリケーションユニットは、ゼロから始める必要がないように、かつユーザーに通知されるように、ガスの状況に注意を払う方法で記述され得る。しかし、ローカルユーザーのガスアカウントには、もはや十分な残高がないことがある。いくつかの実施形態によれば、ユーザーインターフェイスUIはまた、ユーザーのウォレット計算ユニットからのそれぞれのユーザーガスアカウントの補充を手配する可能性を提供し得る。
【0149】
この例では、ユーザーUは、アプリケーションユニットAU1およびアプリケーションユニットAU5において、ローカルユーザーガスアカウントUGAを持つ必要があり実質的に持っている。
【0150】
課金方式の例示的な処理フローは、以下のように動作し得る。
【0151】
ステップ1101で、ユーザーUは、イングレスメッセージIMをアプリケーションユニットAU1に送信する。イングレスメッセージIMは、一次アプリケーションサービスを要求するメッセージとして具体化される。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能し、イングレスメッセージIMの分散ネットワークのエントリポイントを設定する。一次アプリケーションユニットAU1は、ユーザーによる一次アプリケーションサービス要求を実行する。一次アプリケーションサービスは、一般的に、ウェブサイトへのアクセスの提供、旅行の予約、はがきの申し込みなど、あらゆる種類のサービスであり得る。
【0152】
この例にでは、要求された一次アプリケーションサービスは、一次アプリケーションユニットAU1だけで実行不可能であり、複数の追加のアプリケーションユニットの関与が必要である。より具体的には、アプリケーションユニットAU2、AU3、AU4、AU5、AU6、AU7、およびAU8の関与が必要である。これら追加のアプリケーションユニットを、以下では、二次アプリケーションユニットと称する。
【0153】
二次アプリケーションユニットAU2、AU3、AU4、AU5、AU6、AU7、およびAU8の関与は、ステップ1102およびステップ1103において、一次アプリケーションユニットAU1が1つ以上の二次アプリケーションユニット、例えば、アプリケーションユニットAU2およびAU3、を呼び出すことで起動または実行される。呼び出しは、呼び出しメッセージCMの送信を含み得る。ユニット間メッセージの実施形態と見なし得る呼び出しメッセージCMは、支払いメッセージPMを含み得る。
【0154】
他のいくつかの実施形態によれば、支払いメッセージPMはまた、別個に送信され得る。二次アプリケーションユニットへの呼び出しメッセージは、二次アプリケーションユニットが二次アプリケーションサービスを実行する要求を備える。
【0155】
この例では、二次アプリケーションユニットAU3は、さらなる二次アプリケーションユニットへのさらなる呼び出しを発行する。より具体的には、二次アプリケーションユニットAU3は、ステップ1104において、二次アプリケーションユニットAU4への呼び出しを発行し、ステップ1105において、二次アプリケーションユニットAU5への呼び出しを発行する。
【0156】
そして、二次アプリケーションユニットAU5は、ステップ1106、ステップ1107、およびステップ1108において、それぞれの呼び出しメッセージCMを二次アプリケーションユニットAU6、AU7、およびAU8に呼び出す。これらの呼び出しメッセージは、多重呼び出しを構築する。
【0157】
入力メッセージIMにより起動される呼び出し全体または呼び出しメッセージCMは、呼び出しツリーとして示され得る。より具体的には、ステップ1101において発行された最初のイングレスメッセージを含む、ステップ1102からステップ1108までにおいて発行された呼び出しまたは呼び出しメッセージは、呼び出しツリーと見なし得る。
【0158】
上述のとおり、二次アプリケーションユニットAU5は、ローカルユーザーガスアカウントUGAも含みます。二次アプリケーションユニットAU5のこのローカルユーザーガスアカウントUGAは、二次アプリケーションユニットAU5が二次アプリケーションサービスを実行するために必要なネットワークリソースの使用に対する料金または支払いの手続きを行うことに使用できる。これらの支払いには、対応する多重呼び出しにより要求される二次アプリケーションユニットAU6、AU7、および/またはAU8の二次サービスの支払いを含み得る。この例の呼び出しツリーは、呼び出しに関係するさまざまなアプリケーションユニットのさまざまな支払いスキームを示している。
【0159】
より具体的には、その二次アプリケーションサービスのパフォーマンスに対して、アプリケーションユニットAU2は、例えば、10ガスユニットを請求し、アプリケーションユニットAU3は、例えば、20ガスユニットの固定価格を請求する。
【0160】
ステップ1102において、アプリケーションユニットAU1からアプリケーションユニットAU2への10ガスユニットの固定支払いを含む支払いメッセージPMを送信することにより、および、ステップ1103において、アプリケーションユニットAU1からアプリケーションユニットAU3への20ガスユニットの固定支払いを含む支払いメッセージPMを送信することにより、ガスがアプリケーションユニット間で転送される。より具体的には、これらの支払いメッセージPMは、通貨額、特にガスユニットの量を、アプリケーションユニットAU1のアプリケーションユニットガスアカウントAGAから、アプリケーションユニットAU2およびAU3のそれぞれのアプリケーションユニットガスアカウントAGAに転送する。
【0161】
アプリケーションユニットAU4は、二次アプリケーションサービスを実行するためのネットワークリソースの使用に対して前払いで課金します。前払いは、メッセージに載せる必要のある最小限のガスと見なし得る。前払いで指定された金額は、対応する一次アプリケーションサービスまたは二次アプリケーションサービスの実行完了に対して概ね十分であるように、例えば、ほぼ99%の確率で選択し得る。この確率をさらに高めるために、一次アプリケーションユニットまたは二次アプリケーションユニットは、独自のアプリケーションユニットガスアカウントAGAを使用して、それぞれの前払いを補充し、対応する一次アプリケーションサービスおよび/または二次アプリケーションサービスを、さらに高い、例えば、ほぼ99.999%の確率で確実に実行し得る。この例において、アプリケーションユニットAU3は、アプリケーションユニットAU4により指定された5ガスユニットの前払いを、独自のアプリケーションユニットガスアカウントから別の5ガスユニットを補充することで、合計10ガスユニットを、二次アプリケーションサービスの実行に必要とされるネットワークリソースを支払うためにアプリケーションユニットAU4に対して、利用可能であると想定される。
【0162】
ステップ1104において、アプリケーションユニットAU3から5ガスユニットの前払いおよび5ガスユニットの補充支払いを含む支払いメッセージPMを送信することで、例えば、10ガスユニットのガスのそれぞれの量が、アプリケーションユニットAU3からアプリケーションユニットAU4に転送される。さらに、この例によれば、ステップ1103において送信される支払いメッセージPMには、アプリケーションユニットAU1のアプリケーションユニットガスアカウントからアプリケーションユニットAU3のアプリケーションユニットガスアカウントに転送される5ガスユニットの前払いも含まれる。
【0163】
ステップ1102、ステップ1103、ステップ1106、ステップ1107、およびステップ1108で送信される支払いメッセージPMとは対照的に、ステップ1104で支払いメッセージPMによりアプリケーションユニットAU4に転送される10ガスの量は、いくつかの実施形態によれば、受信アプリケーションユニットのアプリケーションユーザガスアカウントに貸方記入されないことがある。ただし、この金額は、ネットワークリソースの実際の使用に対して直接支払うために使用し得、「焼却」、つまりシステムから削除あるいは排除され得る。例えば、実際の場合、二次アプリケーションユニットAU4は、二次アプリケーションサービスに4つのガスユニットしか必要ないので、6つのガスユニットが払い戻され得る。
【0164】
返済は、アプリケーションユニットAU4から、6つのガスユニットの返済を含む返済メッセージRIMをアプリケーションユニットAU3に送信することで実行され得る。返済メッセージRIMは、ステップ1123において応答メッセージRMと一緒に送信し得る。また、個別のメッセージとして具体化し得る。次に、アプリケーションユニットAU3は、5つのガスユニット、より具体的には、それ自体のAGAから補充した5つのガスユニットの量を保持し、それを、それ自体のAGAに戻し得る。さらに、アプリケーションユニットAU3は、前払いの残りの未使用部分(この例では1ガスユニット)を、例えば、ステップ1124において、返済メッセージRIMを(例えば、応答メッセージの一部として、または別個に)アプリケーションユニットAU1に送信することでアプリケーションユニットAU1に払い戻し得る。次に、アプリケーションユニットAU1は、この1つのガスユニットを、ユーザーUのローカルユーザーガスアカウントUGAに払い戻し得る。
【0165】
ステップ1105において二次アプリケーションユニットAU5に発行される呼び出しメッセージCMとして具体化された呼び出しは、変動支払いを伴う。より具体的には、アプリケーションユニットAU5は、二次サービスの固定価格を指定しないが、アプリケーションユニットAU5でユーザーが実行するユーザーガスアカウントUGAから直接請求する変動価格を指定する。
【0166】
この例によれば、ステップ1106で発行されるコールメッセージCMはまた、変動料金または支払いを伴う。したがって、アプリケーションユニットAU6はまた、ローカルユーザーガスアカウントUGAを含み、そのユーザーガスアカウントUGAから変動価格を、例えば、ステップ1136において、直接請求する。
【0167】
一方、二次アプリケーションユニットAU7および二次アプリケーションユニットAU8は固定価格を請求する。より具体的には、アプリケーションユニットAU7は5ガスユニットの固定価格を請求し、アプリケーションユニットAU8は7ガスユニットの固定価格を請求する。例えば、ステップ1107およびステップ1108において、アプリケーションユニットAU5からアプリケーションユニットAU7およびAU8への対応する支払いメッセージPMを送信することで、それぞれの量のガスは、アプリケーションユニットAU5からアプリケーションユニットAU7およびアプリケーションユニットAU8に転送される。他のいくつかの実施形態によれば、支払いメッセージPMは、別個のステップで送信され得る。アプリケーションユニットAU6、アプリケーションユニットAU7、およびアプリケーションユニットAU8に発行された多重呼び出しに応答して、アプリケーションユニットAU5は、一般に、ステップ1121において示されるように、アプリケーションユニットAU6、アプリケーションユニットAU7、およびアプリケーションユニットAU8から応答メッセージRMを受信する。
【0168】
それぞれの二次アプリケーションサービスを実行した後、二次アプリケーションユニットAU5は、ステップ1122において、応答メッセージRMをアプリケーションユニットAU3に送信する。さらに、二次アプリケーションユニットAU4は、ステップ1123において、応答メッセージRMをアプリケーションユニットAU3に送信する。これには、例えば、上述したような6ガスユニットの払い戻しメッセージRIMが含まれ得る。
次に、二次アプリケーションユニットAU3は、ステップ1224において、応答メッセージRMを一次アプリケーションユニットAU1に送信する。これには、例えば、1ガスユニットの払い戻しメッセージRIMを含み得る。二次アプリケーションユニットAU2は、ステップ1125において、応答メッセージRMを一次アプリケーションユニットAU1に送信する。そして、一次アプリケーションユニットAU1は、ステップ1226において、ユーザーインターフェイスUIを介してユーザーUに応答メッセージRMを提供する。
【0169】
いくつかの実施形態によれば、分散ネットワークは、イングレスメッセージ、特に、実行のためのイングレスメッセージの受理およびメッセージの実行に対して別々に課金するように構成される。この点において、イングレスメッセージとイングレスメッセージの実行に対して異なる会計期間を実装し得る。一例として、分散ネットワークを
図7に記載されたように具体化するとき、一旦、入力チェック740に順調に合格して誘導プール731に入力された後、入力メッセージは課金され得る。さらに、イングレスメッセージの実行は、一次アプリケーションユニットがいくつかの初期処理を実行した後、いくつかの実施形態に従って課金され得る。実施形態によれば、入力メッセージの実行は、一次アプリケーションユニットが、それぞれの入力メッセージを実行するために必要とされる二次アプリケーションユニットに1つまたは複数の呼び出しを発行した後に課金され得る。
【0170】
上術の例を参照すると、ステップ1131において、一次アプリケーションユニットAU1は、より具体的には、それが誘導プールに入った後で、イングレスメッセージIMの受理に対して課金することができる。これは、例えば、IMの大きさに応じた料金、およびそれぞれのガスユニットは、特に、ユーザーガスアカウントのイングレスサブアカウント901(
図9を参照)から差し引かれる。さらに、それは、ステップ1132において、イングレスメッセージIMにより生じたネットワークリソースの使用に対する料金または支払いの手続きを行い得る。それぞれの支払いは、一次アプリケーションユニットAU1のユーザーガスアカウントUGAから差し引かれる。これらの支払いは、アプリケーションユニットAU2では、例えば10ガスユニット、アプリケーションユニットAU3では、20ガスユニットの固定価格、アプリケーションユニットAU4では5ガスユニットの前払い、同様に、アプリケーションユニットAU1による一次アプリケーションサービスの実行にたいしては、例えば20ガスユニットの固定価格、を包含し得る。ゆえに、この例では、呼び出しの発行後、一次アプリケーションユニットAU1は、ステップ1132において、イングレスメッセージIMの実行のために、一次アプリケーションユニットAU1のローカルユーザーガスアカウントから55ガスユニットを差し引き得る。それぞれのガスユニットのこの控除は、特に、ユーザーガスアカウントの実行サブアカウント903(
図9を参照)から取られる。
【0171】
ステップ1132は、例えば、ステップ1102-1103の直前または直後に実行され得る。
【0172】
したがって、ステップ1132において、ユーザーは、自分の実行サブアカウントから、一次アプリケーションユニットAU1により実行されている個々の命令、ならびに独自のユーザアカウントを提供しない他のアプリケーションユニットに対して行われた呼び出しに対して支払う。請求される費用には、前払いだけではなく、固定支払いに対する呼び出しで送信されるガスが含まれ得る。いくつかの実施形態によれば、費用はまた、最終的な応答/結果を処理するクロージャの実行に対する前払いを含み得る。いくつかの実施形態によれば、クロージャの実行からの変更(ガスユニットの未使用量)は、ユーザーガスアカウントの実行サブアカウントに戻入することができる。いくつか実施形態によれば、開発者は、呼び出しの応答/結果を処理するためにクロージャを提供しないことを選択することができ、その場合、開発者はそれに対して請求されない。クロージャは、その実行コストが最小クロージャコストを超過したときに、この追加コストが実行サブアカウントから差し引かれるように特別に構成し得る。
【0173】
上述の例をさらに参照すると、ステップ1133において、二次アプリケーションユニットAU5は、AU7およびAU8によるネットワークリソースの使用、ならびに、アプリケーションユニットAU5のユーザーガスアカウントUGAから合計コストを差し引くことによるそれ自身の使用、に対する料金および支払いの手続きを行い得る。他のいくつかの実施形態によれば、費用は、アプリケーションユニットガスアカウントAGAから差し引かれ得る。ステップ1133は、ステップ1106、1107、および1108で呼び出しメッセージCMを送信する直前または直後に実行し得る。
【0174】
同様に、さらなるステップ1134、ステップ1135、ステップ1137、およびステップ1138において、二次アプリケーションユニットAU2、AU3、AU7、およびAU8は、ネットワークリソースのそれぞれの使用に対する料金または支払いの手続きを行い得る。
【0175】
いくつか実施形態によれば、ステップ1131からステップ1138で課金されるそれぞれのガスは、燃焼され得る。
【0176】
いくつかの実施形態によれば、それぞれのアプリケーションのそれぞれの支払い方法は、アプリケーションユニットのインターフェイス記述言語(IDL)で指定することができる。よって、アプリケーションユニットのそれぞれのプログラマー/開発者により指定可能である。特に、それぞれのアプリケーションユニットのインターフェイスの説明は、ユーザーがアプリケーションユニットでローカルユーザーガスアカウントを持っていると予想されるかどうか、および予想される収支がどうあるべきかを指定し得る。後者の場合、アプリケーションユニットが、例えば、二次アプリケーションユニットとして機能するとき、他のアプリケーションユニット、特に、一次アプリケーションユニットがその二次アプリケーションユニットに送信される呼び出しメッセージにガスをかける必要はありません。いくつかの実施形態によれば、ユーザーおよび/またはそれぞれの一次アプリケーションユニットは、呼び出しツリーを計算可能である。また、IDLでは、アプリケーションユニットのアプリケーションユニットガスアカウントを使い果たさない限り、関数/呼び出しを実行するために固定価格で支払うことを指定でき、実行が保証され得る。
【0177】
いくつかの実施形態によれば、固定価格は、それが成功したかどうかに関係なく、実際の実行コストが常に請求される。
【0178】
さらに、インターフェイスの説明は、それぞれの機能/呼び出しの実行に対して前払いが必要であり、この「最小」量のガス(前払いとして指定)を対応する呼び出しメッセージに含める必要があることを指定し得る。いくつかの実施形態によれば、この最小量のガスは、これまでに消費されたガスの最大量を記録することにより動的に計算可能であり、次に、事前定義された係数、例えば1.5を乗じる。
【0179】
図12に、分散ネットワークのユーザーがローカルユーザーのガスアカウントをアップロードする方法を示す。この図は、上述のように、アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8を備える分散型ネットワーク1100を参照して提供される。
【0180】
図12に示すように、ユーザーU1は、ウォレット計算ユニットWCU1を実行する。ウォレット計算ユニットWCU1は、ユーザーU1のユーザー通貨アカウントを管理するように構成されている。
【0181】
WCU1により提供されるユーザー通貨アカウントからローカルユーザーガスアカウントUGAを補充するために、ユーザーU1は、ステップ1201において、補充要求RRをそのウォレット計算ユニットWCU1に送信する。次に、ウォレット計算ユニットWCU1は、ステップ1202において、支払いメッセージPMをアプリケーションユニットAU1に送信し、ステップ1203において、支払いメッセージPMをアプリケーションユニットAU5に送信し、ステップ1204において、支払いメッセージPMをアプリケーションユニットAU6に送信する。これにより、アプリケーションユニットAU1、AU5およびAU6で、ユーザー通貨アカウントからローカルユーザーガスアカウントUGAに通貨金額を転送することが可能となる。
【0182】
ウォレット計算ユニットWCU1により提供されるユーザー通貨アカウントは、例えば、 従来の銀行アカウントからユーザーが再請求/補充する。この点で、外部の銀行アプリケーションまたは外部の銀行アカウントへのインターフェイスを提供され得る。ウォレット計算ユニットWCU1は、ガスユニットまたは別の通貨、例えば、暗号通貨、ステーブルコイン、または米ドルやユーロなどの古典的な国の通貨で実行し得る。
【0183】
暗号通貨または古典的な国の通貨とガス通貨との間の為替レートは、アプリケーションのそれぞれのニーズに応じて、分散ネットワーク1100により管理され得る。
【0184】
アプリケーションユニットのガスアカウントAGAは、例えば、それぞれのアプリケーションユニットの所有者により補充され得ることに注意すべきである。この目的のために、それぞれのアプリケーションユニットの所有者は、ユーザー通貨アカウントを所有し得る。また、それは、所有者の通貨アカウントとして示され得る。
【0185】
図13に、本発明の一実施形態による読み取りクエリの課金スキームを示す。サブネット11は、5つのノードN1、N2、N3、N4、およびN5を含み得る。ノードN1、N2、N3、N4、およびN5のそれぞれは、独自のユニット状態を有する一連のアプリケーションユニットを実行し得る。一連のアプリケーションユニットのユニット状態は、サブネット11全体に亘って複製される。
【0186】
ノードN1、N2、N3、N4、およびN5は、サブネット11のアプリケーションユニットのユニット状態の読み取りスナップショットを定期的に作成する。読み取りスナップショットにアクセスするために、ユーザーは1つ以上のノードN1、N2、N3、N4、およびN5に読み取りクエリを送信し得る。読み取りクエリは一度に課金されるのではなく、その後、バンドルされた方法で課金される。
【0187】
さらに、いくつかの実施形態によれば、ノードN1、N2、N3、N4、およびN5のそれぞれは、それらが受信して処理した読み取りクエリに対して課金するための別個の読み取りクエリサブアカウントRQSA(
図9も参照)を有し得る。
【0188】
この例では、ユーザーが4つの読み取りクエリRQ1、RQ2、RQ3、およびRQ4をノードN1に送信すると想定される。さらに、ユーザーは読み取りクエリの各々に電子的に署名する。より具体的には、読み取りクエリRQ1、RQ2、RQ3、およびRQ4は、それぞれ署名sig1、sig2、sig3、およびsig4で署名されている。
【0189】
その後、ユーザーは4つの読み取りクエリに対してバンドルされた方法で課金される。このノードN1では、サブネット11の他のノードN2、N3、N4、またはN5へのシステムイングレスメッセージとして、読み取りクエリRQ1、RQ2、RQ3、およびRQ4のバンドルに対して課金されるガスユニットの合計量を、集計された署名とともに送信し得る。
【0190】
次に、ガスユニットの総量が、それぞれのユーザーの読み取られたサブアカウント902から取りまとめて差し引かれる(
図9を参照)。
【0191】
図9に示すように、ノードN1、N2、N3、N4およびN5のそれぞれは、別個の読み取りクエリサブアカウントRQSAN1、RQSAN2、RQSAN3、RQSAN4およびRQSAN5を有し得る。いくつかの実施形態によれば、ノードN1は、その別個の読み取りクエリサブアカウントRQSAN1が十分な収支を有する場合に限り、読み取りクエリRQ1、RG2、RQ3、およびRQ4を実行し得る。これにより、例えば、ノードN1を読み取りクエリで満たすことで、単一のノード、この例ではノードN1への攻撃を防止または妨害し得る。
【0192】
図14に、イングレスメッセージを受信する一次アプリケーションユニットAU1が、クロージャを使用して、二次アプリケーションユニットへの呼び出しを管理する方法を示す。ステップ1401において、ユーザーUは、イングレスメッセージをアプリケーションユニットAU1に送信する。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能する。1以上のステップ1402において、アプリケーションユニットAU1は、1つ以上の二次アプリケーションユニットにさらなる呼び出しを送信する。
【0193】
ステップ1403において、アプリケーションユニットAU1は、呼び出しコンテキストを含むその現在の状態をクロージャとして格納する。
【0194】
1つ以上のステップ1404において、二次アプリケーションユニットは、1つ以上の応答/結果を応答メッセージとしてアプリケーションユニットAU1に送り返す。次に、アプリケーションユニットAU1は、クロージャに格納された状態を使用して応答メッセージを処理し、ステップ1405において、応答メッセージをユーザーUに送り返す。
【0195】
図15に、本発明の一実施形態による、分散ネットワークのネットワークリソースの使用に対して課金するためにコンピュータに実装する方法の方法ステップのフローチャートを示す。
【0196】
ステップ1510において、分散ネットワークは、複数のノードのそれぞれにおいて1つ以上のアプリケーション(計算)ユニットが実行される。
【0197】
ステップ1520において、ネットワークのユーザーは、一次アプリケーションユニットにおいてローカルユーザーガスアカウントを実行する。
【0198】
ステップ1530において、ネットワークのユーザーは、入力メッセージを一次アプリケーションユニットに送信する。
【0199】
ステップ1540において、一次アプリケーションユニットは、呼び出しを二次アプリケーションユニットへ発行する。
【0200】
ステップ1550において、一次アプリケーションユニットのローカルユーザーガスアカウントは、一次アプリケーションユニットおよび二次アプリケーションユニットによるネットワークリソースの使用に対する支払いの手続きを行う。
【0201】
ステップ1560において、二次アプリケーションユニットは、二次アプリケーションサービスを実行し、二次アプリケーションサービスの結果を一次アプリケーションユニットに送り返す。ステップ1570において、一次アプリケーションユニットは、二次アプリケーションサービスの結果の使用を含む一次アプリケーションサービスを実行し、応答メッセージをユーザーに送り返す。
【0202】
したがって、そのような方法によれば、ネットワークリソースの使用に対する支払いは、一次アプリケーションユニットのローカルユーザーガスアカウントからローカルに行われ得る。さらに、呼び出しツリーの全部が実行される前に、支払いの手続きを行い得る。
【0203】
図16に、本発明の一実施形態による、ネットワーク100、ネットワーク300、ネットワーク1100、およびネットワーク1300の各々のノード10において実行される主なプロセスを示す。本発明のいくつかの実施形態によるネットワークのネットワーククライアントは、ノード10がネットワークに参加するために必要なプロトコルコンポーネント一式である。いくつかの実施形態によれば、各々のノード10は、メインネットのメンバーであり、典型的には1つのサブネットであり、これは、各々のノードがメインネットのクライアント、あるいはサブネットのクライアントを実行することを意味する。
【0204】
ノードマネージャ40は、メインネットプロトコルクライアント41、サブネットプロトコルクライアント42、およびセキュリティアプリケーション43を開始、再起動、および更新するように構成される。
【0205】
いくつかの実施形態によれば、複数のサブネット11のそれぞれは、対応するノード10において別個のサブネットプロトコルクライアント42を実行するように構成される。メインネットプロトコルクライアント41は、特に、構成データを複数のサブネット11との間で分散するように構成されている。メインネットプロトコルクライアント41は、特に、システム計算ユニットのみを実行するように構成され得、ユーザー提供の計算ユニットは実行されない。メインネットプロトコルクライアント41は、メインネットのローカルクライアントであり、サブネットプロトコルクライアント42は、サブネットのローカルクライアントである。
【0206】
セキュリティアプリケーション43は、ノード10の秘密鍵を格納し、それらを用いてすべての操作を実行する。セキュリティアプリケーション43は、ノードにより保持される秘密鍵を保護するように構成される。より具体的には、秘密鍵は、別個の実行環境(別個のプロセスまたは別個の仮想マシン(VM)のいずれか一方)で保持および処理される。セキュリティアプリケーション43は、これらのインターフェイスを介して秘密鍵を抽出することができないように、制限され制御されたインターフェイスで動作するように構成される。いくつかの実施形態によれば、セキュリティアプリケーションは、ハードウェアセキュリティモジュール(HSM)のように、またはHSMと同様に動作するように構成される。よって、セキュリティアプリケーション43は、ソフトウェアHSMとして示され得る。
【0207】
図17に、サブネット間メッセージおよびサブネット内メッセージの交換に関与する主要な層を示す層モデル1700を示す。層モデル1700は、サブネット間通信のための上位の層として機能するように構成されるメッセージング層51を備える。より具体的には、メッセージング層51は、異なるサブネットの計算ユニット間でサブネット間メッセージをルーティングするように構成される。さらに、メッセージング層51は、ネットワークのユーザーからのイングレスメッセージをネットワークの計算ユニットにルーティングするように構成される。
【0208】
層モデル1700は、異なるサブネットからのサブネット間メッセージならびにイングレスメッセージを受信し、特に、処理順序に同意することにより、それらを、その後それぞれのサブネットによりさらに処理される一連の入力ブロックに編成するように構成される複数のコンセンサス層52をさらに含む。さらに、層モデル1700は、単一のサブネットのノード間の通信を編成および駆動するように構成されたピアツーピア(P2P)層53を備える。
【0209】
いくつかの実施形態によれば、ネットワークは、複数のさらなる層、特に、ネットワークの計算ユニットにおいて実行メッセージを実行するように構成される実行層を含み得る。メインネットプロトコルクライアント41とサブネットプロトコルクライアント42との間の相互作用のより詳細な説明を以下に述べる(
図16を参照)。メインネットプロトコルクライアント41は、サブネットの構成情報を含むいくつかのレジストリを管理する。これらのレジストリはメインネットの計算ユニットにより実装されており、すべてのノードがメインネットに参加しているので、これらのレジストリへのアクセスは状態読み取り操作により簡単に実装できる。
【0210】
すなわち、メインネットリーダー610(
図6を参照)は、実際にメインネットプロトコルクライアント41のサブコンポーネントであり得る。したがって、このコンポーネントとの相互作用は、メインネットおよびサブネットクライアントが実行される2つの隔離された環境間の相互作用をもたらす。
【0211】
図18に、本発明のいくつかの実施形態による分散ネットワークにおけるブロックの作成を図示する。ブロックは、特に、
図7に示される入力ブロック720であり得る。これらは、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63により作成される。
【0212】
この例示的な実施形態では、3つの入力ブロック1801、1802、および1803が示されている。ブロック1801は、複数のトランザクション、すなわち、トランザクションtx1.1、トランザクションtx1.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1802はまた、複数のトランザクション、すなわち、トランザクションtx2.1、トランザクションtx2.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1803はまた、複数のトランザクション、すなわち、トランザクションtx3.1、トランザクションtx3.2、そしておそらくドットで示されるさらなるトランザクションを含む。入力ブロック1801、1802および1803は連鎖されている。より具体的には、各ブロックは、前のブロックのブロックハッシュを含む。これは、現在のブロックを前のブロックに暗号で結び付けます。いくつかの実施形態によれば、トランザクションは、サブネット間メッセージ、イングレスメッセージ、および信号メッセージであり得る。
【0213】
いくつかの実施形態によれば、入力ブロック1801、1802、および1803は、プルーフオブステークコンセンサスプロトコルにより作成され得る。
【0214】
しかしながら、コンセンサス構成要素により生成された入力ブロックは、いくつかの実施形態によれば、連鎖される必要がないことに留意されたい。むしろ、受信したメッセージの処理順序でサブネットのノード間である種の合意に達する任意のコンセンサスプロトコルを、実施形態に従って使用し得る。
【0215】
図19に、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1900をより詳細に示す。ネットワーキングコンポーネント1900は、例えば、
図6に示されるネットワーキングコンポーネント64のより詳細な実施形態であり得る。ネットワーキングコンポーネント1900は、ノード間通信を実行するように構成されたユニキャストコンポーネント1910、サブネット内通信を実行するように構成されたブロードキャストコンポーネント1920、およびサブネット間通信を実行するように構成されたクロスネットコンポーネント1930を備える。
【0216】
ここで
図20を参照すると、本発明の実施形態による、例えば、
図1のネットワーク100に示されるネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、計算機能を実行することができ、したがって一般に計算システムまたはコンピュータとして具体化され得る計算ノードを確立する。ネットワークノード10は、例えば、サーバーコンピューターであり得る。ネットワークノード10は、分散ネットワークのネットワークリソースの使用に対して課金するためにコンピュータに実装する方法を実行するように構成され得る。ネットワークノード10は、他の多くの汎用または特殊目的の計算システム環境または構成で動作可能であり得る。ネットワークノード10は、コンピュータシステムにより実行されるプログラムモジュールなどのコンピュータシステム実行可能命令の一般的なコンテキストで記述し得る。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。ネットワークノード10は、汎用計算装置の形態で示されている。ネットワークノード10の構成要素は、1つ以上のプロセッサまたは処理ユニット2015、システムメモリ2020、およびシステムメモリ2020を含む様々なシステム構成要素をプロセッサ2015に結合するバス2016を含み得る。ただし。これらに限定されるものではない。
【0217】
バス2016は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックスポート(AGP)、さまざまなバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスなど、いくつかのタイプのバス構造の1つまたは複数を表す。例えば、これらに限定されるものではないが、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。
【0218】
ネットワークノード10は、通常、様々なコンピュータシステム可読媒体を含む。そのようなメディアは、ネットワークノード10によりアクセス可能である任意の利用可能な媒体であり得る、そしてそれは、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可媒体の両方を含む。
【0219】
システムメモリ2020は、ランダムアクセスメモリ(RAM)2021および/またはキャッシュメモリ2022などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。ネットワークノード2010は、他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含み得る。一例として、記憶システム2023は、読み取りおよび書き込み用の取り外し不可で不揮発性の磁気媒体(図示せず、通常は「ハードドライブ」と呼ばれる)を提供可能である。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)に、読み取りおよび書き込みを行う磁気ディスクドライブ、ならびにCD-ROM、DVD-ROM、およびその他の光学媒体のような取り外し可能な不揮発性光ディスクに、読み取りまたは書き込みを行う光ディスクドライブを提供し得る。このような場合、それぞれが1つ以上のデータ媒体インターフェイスによりバス2016に接続可能である。以下でさらに描写および説明されるように、メモリ2020は、本発明のいくつかの実施形態の機能を実行するように構成されたプログラムモジュール一式(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含み得る。
【0220】
プログラムモジュール2031一式(少なくとも1つ)を有するプログラム/ユーティリティ2030は、一例として、これに限定されるものではないが、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータが、メモリ2020に格納され得る。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせ、のそれぞれは、ネットワークキング環境へ実装し得る。プログラムモジュール2031は、一般に、本明細書に記載されるような本発明のいくつかの実施形態の機能および/または方法論を実施する。プログラムモジュール2031は、分散ネットワークのユーザーに分散ネットワークにより計算された計算結果へのアクセス提供する、コンピュータに実装する方法の特定の1つ以上のステップ、例えば、上述の方法の1つ以上のステップを実行し得る。
【0221】
ネットワークノード10はまた、ディスプレイ2018と同様に、キーボードまたはポインティング装置などの1つ以上の外部装置2017と通信し得る。このような通信は、入出力(I/O)インターフェイス2019を介して実施可能である。さらに、ネットワークノード10は、ネットワークアダプタ2041を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、および/またはパブリックネットワーク(例えば、インターネット)のようなネットワークのうち1つ以上のネットワーク40と通信可能である。いくつかの実施形態によれば、ネットワーク2040は、特に、複数のネットワークノード10、例えば、
図1に示されるようなネットワーク100を備える分散型ネットワークであり得る。図示したように、ネットワークアダプタ2041は、バス2016を介してネットワークノード10の他のコンポーネントと通信する。示されていないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
【0222】
ネットワークノード10は、対応する分散ネットワークにネットワークリソースを提供する。ネットワークリソースには、特に、処理ユニット2015およびストレージシステム2023を含むメモリ2020が含まれる。
【0223】
本発明の態様は、システム、特に、複数のサブネット、方法、および/またはコンピュータプログラム製品を備える分散ネットワークとして具体化され得る。コンピュータプログラム製品は、プロセッサに本発明のいくつかの態様を実行させる、コンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0224】
コンピュータ可読記憶媒体は、命令実行装置により使用される命令を保持および記憶可能な有形の装置であり得る。コンピュータ可読記憶媒体は、例えば、これらに限定させるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはそれらの任意の適切な組み合わせであり得る。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバーケーブルを通過する光パルス)、または配線を介して送信される電気信号のような一時的な信号そのものであると解釈されるべきではない。
【0225】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算装置/処理装置に、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶装置にダウンロード可能である。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピューター、および/またはエッジサーバーで構成され得る。各々の計算装置/処理装置のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を転送して、それぞれの計算装置/処理装置のコンピュータ可読記憶媒体に格納する。
【0226】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。プログラミング言語は、スモールトーク、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語であり得る。
【0227】
本発明のいくつかの態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して本明細書に記載されている。
【0228】
本発明のいくつかの実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為を実施する手段を作成して、機械を製造する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得る。この命令が格納されているコンピュータ可読記憶媒体は、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為の態様を実施する命令を含む製造品を備える。
【0229】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置にロードされて、コンピュータ、他のプログラム可能な装置または他の装置において、コンピュータ、他のプログラム可能な装置、または他の装置で実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/動作を実装するように、一連の操作ステップを実行させて、コンピュータ実装プロセスを生成し得る。
【0230】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるネットワーク、システム、方法、およびコンピュータプログラム製品の実装が可能なアーキテクチャ、機能、および動作を図示したものである。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、所定の論理機能を実装する1つ以上の実行可能命令を備える。いくつかの代替の実装では、ブロックに示されている機能は、図に示されている順序と異なってよい。例えば、連続して表示される2つのブロックは、実際には実質的に同時に実行され得る。また、関連する機能に応じて、ブロックが逆の順序で実行されてもよい。
【0231】
本発明の現状で好ましい実施形態が示され、説明されている。しかし、本発明はそれに限定されず、他の方法で以下の特許請求の範囲内で様々に具体化および実施され得ることが明確に理解されるべきである。
【手続補正書】
【提出日】2021-12-16
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ネットワークのリソースの使用に対して課金するためにコンピュータに実装する方法に関する。
【0002】
さらなる態様では、分散ネットワーク、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的媒体で符号化されたソフトウェアアーキテクシチャに関する。
【背景技術】
【0003】
分散ネットワークでは、複数のノードが分散して配置される。分散ネットワークの計算では、ソフトウェアとデータが複数のノードに亘って分散する。ノードは計算リソースを定めて、分散ネットワークは分散計算技術を使用し得る。
【0004】
分散ネットワークの一例は、ブロックチェーンネットワークである。ブロックチェーンネットワークは、コンセンサスベースのブロックベースの電子帳簿である。各ブロックは、トランザクションおよびその他の情報で構成される。さらに、各ブロックには前のブロックのハッシュが含まれており、ブロックがチェーン化されて、ブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能な記録が作成される。トランザクションは、スマートコントラクトとして知られる既知の小さなプログラムを呼び出すことがある。
【0005】
トランザクションをブロックチェーンに書き込むためには、トランザクションが「検証」され、ネットワークにより合意されている必要がある。言い換えると、ネットワークノードはブロックチェーンに書き込まれるブロックについての合意形成は必要がある。このような合意は、さまざまなコンセンサスプロトコルにより実現し得る。
【0006】
ブロックチェーンネットワークの1つのタイプでは、合意はプルーフオブワークアルゴリズムを使用して実現される。プルーフオブワークコンセンサスプロトコルは、コンセンサスプロトコルに参加する当事者からの作業を必要とすることが一般的であり、これは通常、コンピュータによる処理時間に相当する。ビットコインなどのプルーフオブワークベースの暗号通貨システムでは、計算量の多いパズルを解くことでトランザクションを検証し、新しいブロックを作成します。
【0007】
もう1つのタイプのコンセンサスプロトコルは、プルーフオブステークアルゴリズムに基づく。このようなプルーフオブステークプロトコルには、計算に大量の時間とエネルギーを必要としないという利点がある。プルーフオブステークベースのブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダムな選択とネットワーク内のそれぞれのノードの掛け金の組み合わせにより選択される。
【0008】
ブロックチェーンネットワークで使用されるコンセンサスプロトコルは、「ビザンチンフォールトトレラント」(BET)合意プロトコルを適用することで、ブロックに含まれるトランザクションの確実な決裁に速く到達するように設計可能である。「同期」BFTプロトコルは、安全性のためにネットワーク同期の仮定に依存する。一方、「非同期」BETプロトコルは異なっている。非同期BFTプロトコルでは、通常、1/3(3分の1)未満の参加ノードの破損は許容可能である。
【0009】
暗号通貨とは別に、分散ネットワークは他のさまざまなアプリケーションに使用し得る。特に、分権型および分散型の計算機能とサービスを提供するために使用し得る。この目的のために、ノードのクラッシュや敵対的な攻撃が存在する場合であっても、アプリケーションを確実に実行して複数のノードに亘って状態を保存するように、分散ネットワークは、ステートマシンレプリケーションプロトコルを使用し得る。
【0010】
米国特許出願公開第2018/0006872号明細書は、分散計算ネットワークにおけるデータプレーンAPIを開示する。いくつかの実施形態は、分散計算システムは、ユーザーにリソースを提供する複数の計算ノードと、コントロールプレーンを介して計算ノードをユーザーインターフェイスに結合するコントローラの2つ以上の層の階層と、を備える。ここで、少なくとも1つの計算ノードは、少なくとも計算ノードにおいて実行されているアプリケーションから、コントロールプレーンからのコマンドを必要とせずにローカルリソースを構成する少なくとも1つの計算ノードを発生させるローカルアプリケーションプログラムインターフェース(API)呼び出しを受信する。
【0011】
米国特許出願公開第2004/0117224号明細書は、商用e-サービスインフラストラクチャにおいて計測と会計を行う装置を開示する。これは、それぞれが自律的に所有および運用され得、より単純な基礎となるサービスを使用して高レベルのサービスが構築される複合サービスを処理する要件に対応する。複合サービスの基礎となる各サービスの計測記録は相互に関連付けられており、特定の請求期間における各顧客とプロバイダーのペアについて、要求ごとまたは集計ベースで、基礎となるサービスに関連する使用量と料金を考慮した会計が可能となる。
【0012】
米国特許出願公開第2004/02111665号明細書は、分散ネットワークシステムの請求フィードを生成し、分散ネットワークシステムのリソースを再販する方法を開示する。一実施形態では、この方法は、分散ネットワークシステムのコンポーネント間で送受信される複数のメッセージを観察することを含み、分散ネットワークシステムの複数のメッセージに基づいて呼び出し流れ図を生成し、呼び出し流れ図に基づいて分散ネットワークの課金フィードを出力し、1つ以上の請求可能なイベントを含む請求フィードを提供する。
【0013】
米国特許出願公開第2004/02111665号明細書は、ネットワークを介してメッセージを転送する方法を開示する。そのメッセージ転送方式は、OSIレイヤー7のレベルで、制約されている少なくとも1つのサブネットワークを備える分散ネットワークのルーターに実装される。その方法は、メッセージ一式の全部に対して一意のフォーマットを処理するステップと、特定のメッセージについて、メッセージをその受信者または受信者に転送するために到達する次のルーターを識別するステップと、特定のメッセージについて、伝送サービスの品質を識別するステップと、前のステップで特定されたサービス品質要件の関数としてメッセージに優先順位を割り当てるステップと、制約されたサブネットワークを通過するようにメッセージのコンテンツを適応させるステップと、を備える。
【0014】
分散型計算サービスを提供するこのような分散ネットワークの課題の1つは、分散ネットワークが提供するネットワークリソースを使用するためのアプリケーションだけではなく、ユーザーに課金するための効率的で柔軟かつ安全な課金メカニズムを提供するところにある。
【発明の概要】
【課題を解決するための手段】
【0015】
したがって、本発明の一態様の1つの目的は、分散ネットワークのネットワークリソースの使用に対して課金する方法であって、特に、効率、柔軟性、および/またはセキュリティに観点から、分散ネットワークの計算リソースに対して有利なリソースに対する支払いまたはリソースに対する課金の方法を提供するところにある。
【0016】
本発明の第1の態様の実施形態によれば、分散ネットワークのリソースの使用に対して課金または支払いを行うためにコンピュータに実装する方法が提供される。分散ネットワークは複数のノードを備え、複数のノードのそれぞれは1つ以上の計算ユニットを実行するように構成される。1つ以上の計算ユニットは、分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える。具体化された方法は、ネットワークのユーザーが、特にネットワークの各ユーザーが、アプリケーションユニットのうちの1つ以上において、1つ以上のローカルユーザーガスアカウントを実行するステップと、1つ以上のローカルユーザーガスアカウントを介してまたはそれにより、分散ネットワークのリソースの使用に対する課金の手続きを行うステップを備える。そのような具体化された方法によれば、ローカルユーザーガスアカウントは、1つ以上のアプリケーションユニットで提供される。そのようなローカルユーザーガスアカウントは、ユーザーによるリソースの使用に対して効率的かつ柔軟な課金および支払いを容易にし得る。特に、ローカルユーザーガスアカウントの提供は、支払いの手続きを行うために必要なメッセージの数を効果的に削減し得るので、分散ネットワークの通信量および関連する帯域幅を効果的に削減し得る。ローカルユーザーガスアカウントは、分散ネットワークのリソースの使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである。
【0017】
ローカルユーザーガスアカウントは、それぞれのアプリケーションユニットで実行されるアカウントであり、対応するユーザーが所有する。ローカルユーザーガスアカウントは、分散ネットワークのリソースの使用に対してローカルでの支払いに使用される。ローカルユーザーガスアカウントは、ローカルユーザーアカウンティングユニットまたは単にローカルユーザーアカウントとして示され得る。
【0018】
リソースは、一般に、分散ネットワークの物理リソースまたは仮想リソースであり得、ネットワークリソースとして示され得る。これらのリソースには、分散ネットワークのプロセッサの処理能力、メモリおよびストレージリソース、ネットワーク接続、および、例えば、異なるアプリケーションユニット間の通信用などのそれらに関連する帯域幅、のような計算リソースが含まれ得る。
【0019】
リソースは、特にネットワークのノードにより提供され得る。ネットワークのノードは、計算システムまたは計算ユニット、例えばサーバーとして具体化し得る。
【0020】
リソースの使用に対する課金、つまり支払いは、特にガスまたはガスユニットで手続きをされ得る。ガスは、分散ネットワークがそのリソースの使用に対して課金するために使用し、ネットワークの自国通貨とは別の補完的なアカウンティングユニットとして定義され得る。ガスは燃料と呼ばれ得る。補完的なアカウンティングユニットを提供することは、リソースの使用コストが、通貨の市場変動から安定および独立を維持可能であるという利点を提供する。車から類推すると、車を運転するために燃料またはガスが必要であるように、本発明のいくつかの実施形態によるガスは、分散ネットワークのリソースを運転するために必要である。
【0021】
「課金」および「支払い」という用語は、広義で理解されるものとする。これらは、ローカルユーザーのガスアカウントから差し引かれて別のアカウントに転送する支払いを含み得る。使用済みガスを別のアカウントに転送せずに、使用後に「燃焼」するだけのアプリケーションスキームも含み得る。換言すれば、ガスを「燃焼」または消費することでリソースの使用に対して「支払い」を行い得るが、その使用後にはネットワークから削除される。この点において、「課金」および「支払い」は置き換え可能な用語として使用し得る。
【0022】
計算ユニットは、ネットワークのノードで実行されていて、それ自身のユニット状態を持つソフトウェアの一部として定義され得る。いくつかの実施形態によれば、計算ユニットは、直交永続性を有する決定論的プログラムとして定義され得る。
【0023】
アプリケーションユニットは、ネットワークのユーザーにアプリケーションサービスを提供するように構成された計算ユニットである。そのようなアプリケーションサービスは、例えば、ウェブサイトのホスティング、旅行の予約、メッセージングサービスの提供などを含み得る。
【0024】
いくつかの実施形態によれば、ネットワークの各ノードは、1つ以上の計算ユニットを実行する。それゆえ、1つ以上の計算ユニットのユニット状態を維持する。
【0025】
一実施形態によれば、この方法は、ネットワークのユーザーが、1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信し、一次アプリケーションユニットおよび一次アプリケーションサービスが実行するさらなるステップを備える。さらなるステップは、一次アプリケーションユニットにおけるユーザーのローカルユーザーガスアカウントを介して、またはそれにより、一次アプリケーションサービスによるリソースの使用に対する料金または支払いの手続きを行うことを含む。
【0026】
そのような実施形態によれば、一次アプリケーションユニットは、ユーザーのイングレスメッセージ用のエントリポイントを設定する。イングレスメッセージは、分散ネットワークのユーザーが、ネットワークのアプリケーションユニットの1つ、より具体的にはそれぞれの一次アプリケーションユニットに送信するメッセージとして理解されるものとする。そのような実施形態によれば、ユーザーは、少なくともそれぞれの一次アプリケーションユニットでローカルユーザーガスアカウントを有する必要がある。これにより、一次アプリケーションユニットにおけるローカルユーザーガスアカウントを介して、または、それにより、リソースの使用に対する料金または支払いをローカルで処理可能となる。
【0027】
一実施形態によれば、一次アプリケーションサービスを実行するステップは、一次アプリケーションユニットが、1つ以上の二次アプリケーションユニットへ1つ以上の呼び出しを発行するステップを備える。
【0028】
このような二次アプリケーションユニットは、ユーザーからのイングレスメッセージを直接受信するのではなく、イングレスメッセージを受信したそれぞれの一次アプリケーションユニットからの呼び出しを受信するアプリケーションユニットとして理解されるものとする。換言すれば、一次アプリケーションサービスを実行するために、一次アプリケーションユニットは二次アプリケーションユニットを包含し、二次アプリケーションユニットへの呼び出しが二次アプリケーションユニットのサポートを要求する。
【0029】
アプリケーションユニットの役割は時間の経過とともに変化することがあり、特に、それぞれの入力メッセージと対応するアプリケーションサービスに依存し得ることに注意すべきである。より具体的には、一例では、同じアプリケーションユニットは、一次アプリケーションサービスを要求するイングレスメッセージを受信すると、一次アプリケーションユニットとして機能し得る。また、別の例では、同じアプリケーションユニットが、一次アプリケーションユニットとして機能する別のアプリケーションユニットから呼び出しを受信すると、二次アプリケーションユニットとして機能し得る。
【0030】
そのような実施形態によれば、この方法は、1つ以上の二次アプリケーションユニットが、1つ以上の二次アプリケーションサービスを実行するステップをさらに備え得る。
【0031】
一実施形態によれば、この方法は、一次アプリケーションユニットのローカルユーザーガスアカウントを介して、またはそれが、二次アプリケーションサービスによるリソースの使用に対する支払いの手続きを行うステップをさらに含み得る。
【0032】
それゆえ、二次アプリケーションユニットは、二次アプリケーションサービスを実行することで一次アプリケーションユニットを支持する。一方、一次アプリケーションユニットは、二次アプリケーションユニットが二次アプリケーションサービスの実行のために必要とするリソースの使用に対する支払いを手配する。
【0033】
これにより、効率的な支払いスキームが提供される。より具体的には、それは、ユーザーが二次アプリケーションユニットにおいて別個のガスアカウントを必要とすることを回避し、例えば、ユーザー通貨アカウントと二次リアプリケーションユニットとの間でのいかなるメッセージのやり取りも回避する。
【0034】
一実施形態によれば、1つ以上の二次アプリケーションサービスを実行することは、1つ以上の二次アプリケーションユニットが、さらなる二次アプリケーションユニットへの1つ以上の呼び出しを発行することを含む。さらに、この方法は、1つ以上のさらなる二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションサービスを実行することを含み得る。
【0035】
一実施形態によれば、1つ以上の呼び出しを連続して実行することが可能であり、それにより、任意の深さの呼び出しツリーを形成する。別の実施形態によれば、この方法は、ネットワークのユーザーが、二次アプリケーションユニットでローカルユーザーのガスアカウントを実行し、二次アプリケーションユニットのローカルユーザーガスアカウントを介して、または、それが、二次アプリケーションユニットによるリソースの使用に対する支払いの手続きを行う。
【0036】
そのような実施形態によれば、ユーザーは、一次アプリケーションユニットおよび二次アプリケーションユニットにおいて、ローカルユーザーガスアカウントを有する必要がある。そのような方法では、二次アプリケーションユニットは、二次アプリケーションサービスを実行するために必要なリソースの使用に対して、二次アプリケーションユニットにおいてそれぞれのユーザーが保有するローカルユーザーガスアカウントから直接課金し得る。このようなスキームは、特に二次アプリケーションサービスの計算量の事前の査定が困難なアプリケーションに対する課金について、より柔軟性を高める。
【0037】
一実施形態によれば、この方法は、ネットワークの各ユーザーが、ウォレット計算ユニットを実行するさらなるステップを備える。ウォレット計算ユニットは、ユーザーのユーザー通貨アカウントを管理するように構成されている。さらに、具体化された方法は、ウォレット計算ユニットからそれぞれのアプリケーションユニットに支払いメッセージを送信して、通貨金額をユーザー通貨アカウントからそれぞれのアプリケーションユニットのローカルユーザーガスアカウントに転送するステップを含み得る。
【0038】
このような方法は、柔軟で効率的なリソース課金を容易にする。ウォレット計算ユニットにより提供されるユーザー通貨アカウントは、例えば、従来の銀行アカウントからユーザーが請求し得る。この点で、さまざまな外部銀行アプリケーションまたは外部銀行アカウントへの(外部)インターフェイスを提供し得る。他方、ユーザー通貨アカウントは、通貨金額をユーザー通貨アカウントからそれぞれのユーザーが保有する1つ以上のローカルユーザーガスアカウントに内部で転送するために使用され得る。この内部通貨転送は、ウォレット計算ユニットからそれぞれのローカルユーザーガスアカウントをホストするアプリケーションユニットに支払いメッセージを送信することにより実行され得る。
【0039】
ウォレット計算ユニットは、ガスユニットまたは別の通貨、例えば、暗号通貨または米ドルやユーロなどの古典的な国の通貨として固定されたいる安定したコイン、で実行され得る。暗号通貨または古典的な国の通貨とガスユニットとの間の為替レートは、分散ネットワークにより、例えば、分散ネットワークのガバナンスシステムにより、管理され得る。一例として、分散ネットワークは、1つ以上の為替レートを備えたグローバルテーブルを提供し得る。いくつかの実施形態によれば、分散ネットワークは、為替レートを調整して、ガスに概ね安定したコストを提供し得る。
【0040】
さらなる実施形態によれば、この方法は、各アプリケーションユニットが、アプリケーションユニットのガスアカウントを実行するステップを備える。
【0041】
このようなアプリケーションユニットのガスアカウントが、ネットワークのリソースの使用に対する課金は、より効率的で柔軟になる。アプリケーションユニットのガスアカウントは、特にローカルユーザーのガスアカウントの代わりに、またはそれに加えて、アプリケーションサービスの支払いに使用し得る。さらに、アプリケーションユニット自体が使用する、例えば、それ自体のストレージの使用するリソースに対して課金することが可能である。さらに、アプリケーションユニットのガスユニットは、異なるアプリケーションユニット間、特に、呼び出しに関与する一次アプリケーションユニットと二次アプリケーションユニットとの間でガスを転送することに使用し得る。
【0042】
一実施形態によれば、この方法は、イングレスメッセージの受理、クエリの読み込み、受理したイングレスメッセージの実行、および/または受理したユニット間メッセージの実行、に対して別々に課金するステップをさらに備える。ここで、ユニット間メッセージはネットワークの計算ユニット間で送信される。
【0043】
このように別々に課金することにより、さまざまなリソースの用途に対してさまざまな技術的課金スキームを組み込むことを可能となる。さらに、システムのセキュリティを強化し、攻撃者の攻撃を防止または少なくとも阻止するために使用可能である。加えて、課金スキームを、より柔軟で迅速なものにする。
【0044】
ローカルユーザーガスアカウントの各々は、イングレスメッセージの受理に対して課金するように構成されたイングレスサブアカウントと、クエリの読み込みに対して課金するように構成された読み取りクエリサブアカウントと、メッセージの実行、特に、受理したイングレスメッセージの実行および/または前記受理したユニット間メッセージの実行、に対して課金するように構成された実行サブアカウントと、を備える。
【0045】
このことは、システムのセキュリティのさらなる向上、および障害のあるアプリケーションユニットや悪意のあるアプリケーションユニットにより引き起こされる潜在的な損傷を制限することに使用し得る。特に、分散ネットワークは、分散ネットワークがそれぞれの要求によるリソースの使用を開始する前に、別個のサブアカウントのそれぞれが持つ必要がある最小残高を特定するように構成され得る。一例として、新しいイングレスメッセージは、イングレスサブアカウントのそれぞれの残高が、指定された最小イングレス残高を超えている場合にのみ、受理することが考慮される。
【0046】
さらなる実施形態によれば、この方法は、イングレスメッセージ、読み取りクエリ、ならびにユニット間メッセージに対して、異なる会計期間および/または課金時間を適用するステップを備える。このような異なる会計期間は、課金スキームの異なる技術的実装をさらに促進し、分散ネットワークへの攻撃を防止または妨害するために使用され得る。
【0047】
一実施形態によれば、この方法は、イングレッスメッセージを実行するためにそれらを受け入れるかまたは拒否するときに、イングレッスメッセージに対して課金することを含み得る。
【0048】
さらなる実施形態によれば、この方法は、特に二次アプリケーションユニットへの1つ以上の呼び出しの発行後に、事前にイングレスメッセージの実行に対して課金することを含む。
【0049】
そのような実施形態は、イングレスメッセージでそれを満たすことにより攻撃を効率的に防止または妨害し得る。より具体的には、異なる時点で早期に請求することにより、特に、サブアカウントのそれぞれの残高が必要な最小残高を下回るとすぐに、敵対者が要求する処理を早期に停止することを保証し得る。
【0050】
さらなる実施形態によれば、この方法は、続いてバンドルされた方法で読み取りクエリに対して、例えば、定義済みの数の読み取りクエリが実行された後でのみ、課金するステップを備える。
【0051】
これにより、読み取りクエリの処理が、より効率的になる。そのような実施形態は、アプリケーションユニットがサブネットを形成する複数のノード上で実行され、サブネットの複数のノードに亘って複製される分散ネットワークにおいて特に有用である。このようなネットワークでは、読み取りクエリをサブネットの複数のノードに亘って複製する必要はなく、読み取りクエリはサブネットの単一ノードで独立して処理可能である。
【0052】
さらなる実施形態によれば、この方法は、それぞれのサブネットの各ノードに対して別個の読み取りクエリサブアカウントを提供するステップを備える。これにより、単一ノードに読み取りクエリを殺到させることによる攻撃を防止または妨害し得る。より具体的には、ノードは、個別の読み取りクエリサブアカウントに十分な残高があるときだけ読み取り要求を実行し得る、読み取り要求は、バンドルされた方法で事後においてのみ課金される。
【0053】
別の実施形態によれば、この方法は、分散ネットワークのストレージリソースの使用に対して、分散ネットワークにより課金するステップと、分散ネットワークのストレージリソースの使用に対して、それぞれのアプリケーションユニットのガスアカウントから支払うステップと、をさらに備える。
【0054】
いくつかの実施形態によれば、それぞれのアプリケーションユニットは、例えば、定義済みの期間に使用されたストレージの最大量に対して課金され得る。
【0055】
さらなる実施形態によれば、アプリケーションユニットが、特に、一次アプリケーションユニットおよび二次アプリケーションユニットのそれぞれが、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれによるリソースの使用に対して、固定価格で課金するステップをさらに備える。
【0056】
そのような固定価格は、一方で、通信帯域幅の使用が少ない効率的な支払いの手続きを促進する。その一方で、それは迅速な課金を促進する。さらに、一次アプリケーションユニットのローカルユーザーアカウントを介して、洗練された単純な方法での二次アプリケーションユニットの支払いの処理を可能とする。
【0057】
さらなる実施形態によれば、この方法は、アプリケーションユニットが、特に、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれが、一次アプリケーションサービスおよび/または二次アプリケーションサービスそれぞれによるリソースの使用に対して、前払いで請求するステップを備える。さらに、この方法は、アプリケーションユニットが、特に、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれが、前払いの未使用部分を払い戻すさらなるステップを含み得る。
【0058】
このことは、さらなる柔軟性を提供する。
【0059】
さらなる実施形態によれば、この方法は、一次アプリケーションユニットおよび/または二次アプリケーションユニットそれぞれのアプリケーションユニットガスアカウントから、対応する一次アプリケーションサービスおよび/または二次アプリケーションサービスの実行を確実にするために前払いで補充するステップを備える。
【0060】
このことは、さらなる柔軟性を提供する。
【0061】
さらなる実施形態によれば、分散ネットワークは複数のサブネットを含み、ここで、複数のサブネットのそれぞれは、複数のノードのうちの1つ以上を含む。この方法は、アプリケーションユニットの各々を、複数のサブネットのうちの1つに割り当てて、それぞれのサブネットに亘ってアプリケーションユニットを複製するステップをさらに備える。
【0062】
本発明のいくつかの実施形態による方法は、複製されたアプリケーションユニットを有するサブネットを備える、そのような分散ネットワークに特に有用である。
【0063】
特に、その複製は、実行サブセットの各々のノード上において、計算ユニットのユニット状態の空間で、アクティブな複製を実行することで、より容易になり得る。いくつかの実施形態によれば、ユニット状態は、特に、入力キュー、出力キュー、システム状態、およびアプリケーションまたはユーザー状態を含み得る。
【0064】
一実施形態によれば、分散ネットワークは、計算ユニットの一式、特に計算ユニットの状態、をサブネット全体に複製するように構成される。その結果、それぞれのサブネットの計算ユニットは、それらが誠実に振る舞う限り、常に同じ状態になる。異なるサブネット、特に、異なるサブネットの計算ユニットは、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネット間メッセージを交換することにより、相互に通信し得る。
【0065】
本発明の別の態様の実施形態によれば、分散ネットワークが提供される。
【0066】
分散ネットワークは、複数のノードを備え、複数のノードのそれぞれは、1つ以上の計算ユニットを実行するように構成される。その1つ以上の計算ユニットは、1つ以上のアプリケーションユニットを包含する。そのアプリケーションユニットは、分散ネットワークのユーザーにアプリケーションサービスを提供するように構成される。分散ネットワークは、計算ユニットにリソースを提供し、ネットワークの各ユーザーが、1つ以上のアプリケーションユニットで、1つ以上のローカルユーザーガスアカウントを実行するように構成される。分散ネットワークはさらに、ローカルユーザーガスアカウントを介して、またはローカルユーザーガスアカウントが、分散ネットワークのリソースの使用に対する支払いの手続きを行うように構成される。
【0067】
本発明の別の態様の一実施形態によれば、分散ネットワークのノードが提供される。
【0068】
本発明の別の態様の実施形態によれば、分散ネットワークを動作させるコンピュータプログラム製品が提供される。そのコンピュータプログラム製品は、それ自体にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、そのプログラム命令は分散ネットワークの複数のノードのうちの1つ以上が実行可能であり、複数のノードのうちの1つ以上で、本発明の方法のステップを実行する。
【0069】
本発明の別の態様の実施形態によれば、非一時的コンピュータ可読記憶媒体で符号化されたソフトウェアアーキテクシャが提供される。そのソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノード動作させるように構成される。
符号化されたソフトウェアアーキテクチャは、複数のノードのうちの1つ以上が実行可能なプログラム命令を備え、複数のノードのうちの1つ以上に、本発明の方法のステップを備える方法を実行させる。
【0070】
本発明の一態様の特徴および利点は、必本発明の他の態様に適宜適用し得る。
【0071】
他の有利な実施形態は、従属請求項ならびに以下の説明に記載されている。
【図面の簡単な説明】
【0072】
本発明は、よりよく理解され、上記以外の目的は、以下の詳細な説明から明らかになるであろう。このような説明は、添付の図面を参照してなされる。
【
図1】
図1は、本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図2】
図2は、ネットワークの典型的なノードで実行される計算ユニットを、より詳細に示す図である。
【
図3】
図3は、複数のサブネットを備える本発明の一実施形態による分散ネットワークの例示的な図式である。
【
図4】
図4は、
図3の分散ネットワークで実行される計算ユニットを、より詳細に示す図である。
【
図5】
図5は、
図3のネットワークのサブネットにおいて受信されるサブネット間メッセージの概略図である
【
図6】
図6は、サブネットプロトコルクライアントのプロトコルコンポーネントの概略ブロック図である。
【
図7】
図7は、メッセージプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフローを例示的に視覚化する図である。
【
図8】
図8は、本発明の一実施形態によるアプリケーションユニットを、より詳細に示す図である。
【
図9】
図9は、本発明の一実施形態による例示的なローカルユーザーガスアカウントをより詳細に示す図である。
【
図10】
図10は、本発明の一実施形態による課金/支払いスキームを示す図である。
【
図11】
図11は、本発明の一実施形態による別の課金/支払いスキームを示す図である。
【
図12】
図12は、分散ネットワークのユーザーが、ローカルユーザーのガスアカウントに再課金する方法を示す図である。
【
図13】
図13は、本発明の一実施形態による読み取りクエリの課金スキームを示す図である。
【
図14】
図14は、一次アプリケーションユニットが、クロージャを使用して二次アプリケーションユニットへの呼び出しを管理する方法を示す図である。
【
図15】
図15は、本発明の一実施形態によりコンピュータに実装する方法のそれぞれのステップのフローチャートを示す。
【
図16】
図16は、本発明の一実施形態によるネットワークの各々のノードで実行される主な処理を示す図である。
【
図17】
図17は、サブネット間およびサブネット内のメッセージの交換に関与する主要な層を示す層モデルを示す図である。
【
図18】
図18は、本発明の例示的な実施形態による、コンセンサスコンポーネントによる入力ブロックの生成を示す図である。
【
図19】
図19は、ネットワーキングコンポーネントを、より詳細に示す図である。
【
図20】
図20は、本発明によるノードの例示的な実施形態を示す図である。
【発明を実施するための形態】
【0073】
<発明を実行するモード>
最初に、本発明のいくつかの一般的な態様および実施形態の用語を紹介する。
【0074】
一実施形態によれば、分散ネットワークは、分散形式で配置された複数のノードを備える。このような分散ネットワークの計算では、ソフトウェアとデータが複数のノードに分散される。ノードは計算リソースを定めて、分散ネットワークは特定の分散計算技術を使用し得る。
【0075】
一実施形態によれば、分散ネットワークは、ブロックチェーンネットワークとして具体化され得る。「ブロックチェーン」という用語には、電子台帳、コンピューターベース台帳、分散型台帳のすべての形式が含まれる。
【0076】
図1に、本発明の一実施形態による分散ネットワーク100の例示的なブロック図を示す。
【0077】
分散型ネットワーク100は、複数のノード10を備え、これは、ネットワークノード10またはコンピューティングノード10としても示され得る。複数のノード10のそれぞれは、1つ以上の計算ユニットを実行するように構成される。一実施形態によれば、計算ユニットは、ソフトウェアの一部として、特に、それ自体のユニット状態を備えているか、または有している、ソフトウェアの一部として理解されるべきである。ネットワーク100の複数のノード10は、異なるサブセットおよび/またはサブネットに割り当てられ得る。このような割り当ては、時間の経過とともに変更される可能性がある。
【0078】
この実施形態によれば、ネットワーク100は、ノード10のコンセンサスサブセットSS1と、ノード10の実行サブセットSS2とを備える。
【0079】
ノード100において実行される計算ユニットは、ネットワーク100のユーザーにより、計算タスクまたはサービス、特に、アプリケーションサービスを実行または要求するために使用され得る。ネットワーク100の計算ユニットは、実行メッセージの現在のセットからの、特に、実行メッセージを実行し得る。実行メッセージは、特に、ネットワークの計算ユニット間で交換されるユニット間メッセージ、および/または入力メッセージ、すなわち、外部ソースから、特に、ネットワークのユーザーから、受信されるメッセージを備え得る。ネットワーク100は、最初にコンセンサスプロトコルが実行されて、それぞれの現在の実行メッセージのセットからの実行メッセージの選択および処理順序について合意を形成するように構成される。ネットワーク100の中のノード10の数に応じて、コンセンサスプロトコルは、有利には、ネットワークのすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され、これは、以下、コンセンサスサブセットSS1として示される。コンセンサスサブセットSS1は、コンセンサスサブセットとして示され得る。このように、コンセンサスサブセットSS1のノードは、コンセンサスプロトコルを実行して、現在の実行メッセージのセットからの実行メッセージの選択と処理順序について合意を形成するように構成される。
【0080】
実行メッセージの実行はまた、有利には、ネットワーク100のすべてのノードにより実行されるのではなく、ネットワーク100のノード10のサブセットによってのみ実行され得る。このサブセットは、以下では実行サブセットSS2として示され、実行サブセットSS2として示され得る。次に、実行サブセットSS2の計算ユニットは、前のコンセンサスステップで合意された処理順序で実行メッセージの選択を個別に実行する。実行サブセットSS2の各計算ユニットは、決定論的な方法で実行を実行し、それにより実行サブセットSS2の対応する計算ユニットのユニット状態を変更する。
【0081】
一実施形態によれば、ユニット状態は、計算ユニットにより使用されるすべてのデータまたは情報、特に、計算ユニットが変数に格納するデータだけでなく、計算ユニットがリモート呼び出しから取得するデータ、として理解されなければならない。ユニット状態は、特に、それぞれのノードのそれぞれの記憶場所における特定の記憶場所を表し得る。これらの記憶場所の内容は、計算ユニットの実行の任意の時点で、実施形態によればユニット状態と呼ばれる。計算ユニットは、特に、ステートフル計算ユニットとして具体化し得る。すなわち、計算ユニットは、先行する事象またはユーザーの相互作用を記憶するように実施形態にしたがって設計される。
【0082】
いくつかの実施形態によれば、ネットワークの各々のノードは、他のノードのクロックと大まかに同期されたローカルクロックに従うと想定される。
【0083】
図2に、ネットワーク100のノード10上で実行される計算ユニット15を、より詳細に示す。より具体的には、5つの計算ユニット15が実行されている
図1のサブセットSS2のノード10を示している。より具体的には、それら5つの計算ユニット15は、計算ユニットCU21、CU22、CU23、CU24およびCU25一式である。計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2の各ノード10で実行される。さらに、計算ユニットCU21、CU22、CU23、CU24およびCU25一式は、サブセットSS2全体に亘って複製され、計算ユニットCU21、CU22、CU23、CU24およびCU25のそれぞれが誠実に振る舞うとき、最終的に同じユニット状態になる。これは、特に、サブセットSS2のノード10のそれぞれで、計算ユニットCU21、CU22、CU23、CU24、およびCU25のユニット状態の空間でアクティブな複製を実行することにより実装し得る。
【0084】
計算ユニットCUは、さまざまな機能を提供することがあり、さまざまなタイプのものであり得る。計算ユニットの1つのタイプは、分散ネットワークのユーザーにアプリケーションサービスを提供するように構成されたアプリケーション計算ユニットである。アプリケーション計算ユニットは、簡略化するために、以下ではアプリケーションユニットまたはAUと表記する。別のタイプの計算ユニットは、ネットワークのユーザーのユーザー通貨アカウントを管理するように構成され得るウォレット計算ユニットである。そして、さらに別のタイプの計算ユニットは、システム計算ユニットである。そのようなシステム計算ユニットは分散ネットワークに、システムまたは管理機能を提供し得る。
【0085】
図3に、本発明の一実施形態による分散ネットワーク300の例示的なブロック図を示す。
【0086】
分散ネットワーク300は、複数のノード10を備える。
【0087】
この実施形態によれば、複数のノード10は、複数のサブネット11に分散されている。
図1の例では、SNA、SNB、SNC、およびSNDで示される4つのサブネット11が提供される。ネットワーク100は、それぞれのサブネット11の内部のサブネット内通信用の通信リンク12と、サブネット11の異なるサブネット間のサブネット間通信用の通信リンク13とを備える。したがって、通信リンク12は、サブネット内またはピアツーピア(P2P)通信リンクとしても示され得、通信リンク13は、サブネット間またはサブネット対サブネット(SN2SN)通信リンクとしても示され得る。複数のサブネット11のそれぞれは、それぞれのサブネット11の各々のノード10において計算ユニット一式を実行するように構成される。
【0088】
本発明のいくつかの実施形態によれば、サブネット11は、それぞれのサブネット11に亘って計算ユニット一式を複製するように構成される。より具体的には、サブネット11は、それぞれのサブネット11にわたって計算ユニットのユニット状態を複製するように構成される。
【0089】
ネットワーク100は、特に、プルーフオブステークブロックチェーンネットワークであり得る。
【0090】
プルーフオブステーク(PoS)は、ブロックチェーンネットワークが、どのノードがブロックチェーンの次のブロックを作成できるかについて分散的に合意を形成する方法を説明する。PoS法は、重み付けされたランダム選択を使用し得る。それにより、個々のノードの重みは、特に、それぞれのノードの資産(「ステーク」)に応じて決定され得る。
【0091】
非同期BETコンセンサスプロトコルのいくつかの実施形態によれば、各サブネットの破損しているノードが1/3(3分の1)未満であると想定されることで、サブネットにより生成および署名されたアーティファクトを完全に信頼可能となる。
【0092】
図4に、ネットワーク300のノード10において実行される計算ユニット15をより詳細に示す。より具体的には、
図4の左側401に、5つの計算ユニット15が実行されている
図1のサブセットSNAのノード10を示す。より具体的には、5つの計算ユニット15は、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5である。1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、サブネットSNAの各ノード10で実行される。さらに、1組の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5は、各々の計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5が同じユニット状態を持つように、サブネットSNA全体に亘って複製される。これは、特に、サブネットSNAのノード10のそれぞれで、計算ユニットCUA1、CUA2、CUA3、CUA4、およびCUA5のユニット状態の空間でアクティブな複製を実行することにより実装され得る。
【0093】
さらに、
図4の右側402に、4つの計算ユニット15が実行されている
図1のサブネットSNBのノード10を示す。より具体的には、4つの計算ユニット15は、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4である。1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、サブネットSNBの各ノード10で実行される。さらに、1組の計算ユニットCUB1、CUB2、CUB3、およびCUB4は、各々の計算ユニットCUB1、CUB2、CUB3、およびCUB4が同じユニット状態を持つように、サブネットSNB全体に亘って複製される。上記のように、ユニット状態の空間でアクティブな複製を実行する。
【0094】
図3に戻って参照すると、ネットワーク300は、メッセージングプロトコルおよびコンセンサスプロトコルを介して、サブネットSNA、SNB、SNC、およびSNDの間でサブネット間メッセージ16を交換するように構成される。コンセンサスプロトコルは、それぞれの受信サブネットでのサブネット間メッセージ16の処理順序について合意を形成するように構成される。例えば、サブネットSNBに対して、サブネットSNA、SNB、SNC、およびSNDからサブネット間メッセージ16を受信することを参照している。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、定義済みのコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行して、受信したサブネット間メッセージ16の処理順序について合意を形成する。
【0095】
いくつかの実施形態によれば、ネットワーク300は、各々のサブネットにおいて別々にコンセンサスプロトコルを実行するように構成され得る。つまり、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、他のサブネットとは別に、独立して独自のコンセンサスプロトコルを実行する。したがって、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、定義済みの範囲で、処理するメッセージを受信した他のサブネットとは独立して、その順序を決定可能である。ゆえに、サブネットSNA、SNB、SNC、およびSNDのそれぞれは、受信したサブネット間メッセージ16の処理順序に基づいて、サブネットごとに合意を形成する。このようなコンセンサスは、ローカルコンセンサスまたはサブネットコンセンサスと見なし得る。
【0096】
この概念は、
図5を参照すると、より詳細に示されている。
【0097】
図5に、
図3のサブネット11のSNBで受信されるサブネット間メッセージ16の概略図を示す。
【0098】
サブネットSNBは、サブネットSNAからサブネット間メッセージSNA-SNB、サブネットSNCからサブネット間メッセージSNC-SNB、およびサブネットSNDからサブネット間メッセージSND-SNBを受信する。これらのサブネット間メッセージのプールは、サブネットSNBにおいてコンセンサスプロトコルをローカルで実行するコンセンサスコンポーネント30であるCSNBにより処理される。ゆえに、コンセンサスコンポーネント30は、サブネットコンセンサスコンポーネントとして示され得る。
【0099】
コンセンサスコンポーネント30は、定義済みのコンセンサスアルゴリズムまたはメカニズムに従ってサブネット間メッセージから入力ブロックIBのキューを生成し、メッセージングプロトコルを実行するように構成されたMSNBに入力ブロックIBのキューを提供し、入力ブロックIBの処理をさらに行う。
【0100】
いくつかの実施形態によれば、各々のサブネット11のノード10のそれぞれは、コンセンサスプロトコルに参加し得る。そのような実施形態によれば、サブネット11の各々は、例えば、10から100のノード、特に、20から50のノードを備える。このような数値は、セキュリティと効率の間の有利な妥協点を提供し得る。
【0101】
他のいくつかの実施形態によれば、コンセンサスプロトコルは、定義済みの選出スキームに従って、それぞれのサブネット11の複数のノード10から委員会のメンバーを選出する。そして、選出された委員会のメンバーとのみコンセンサスプロトコルを実行するように構成され得る。このようなアプローチは、ノードの数が多いサブネット、例えば、1000以上のノードを有するサブネット、で特に有用である。
【0102】
図6に、例えば、
図1に示されるサブネットプロトコルクライアント42であるサブネットプロトコルクライアントのプロトコルコンポーネント600の概略ブロック図を示す。
【0103】
図6の実線の矢印は、ユニット間メッセージとイングレスメッセージで構成される実行メッセージに関連する。入力メッセージは、特にユーザーからの変更クエリであり得る。破線の矢印はシステム情報に関連する。
【0104】
プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージングコンポーネント61と、実行メッセージを実行する、特に、ユニット間メッセージを実行するおよび/またはクエリを変更する、実行プロトコルを実行するように構成された実行コンポーネント62と、を備える。プロトコルコンポーネント600はさらに、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63と、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64と、状態管理プロトコルを実行するように構成された状態管理コンポーネント65と、クロスサブネット転送プロトコルを実行するように構成されたX-Netコンポーネント66と、ネットワークの外部ユーザーから受信したイングレスメッセージを処理するように構成されたイングレスメッセージハンドラコンポーネント67と、を備える。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、
図16を参照して後で説明されるように、セキュリティアプリケーション43として具体化され得るセキュリティコンポーネント611と協調する。プロトコルコンポーネント600は、読み取りクエリ、または言い換えれば、ユーザーからの読み取り要求、を受信するように構成された状態リーダーコンポーネント69をさらに備える。
【0105】
状態リーダーコンポーネント69は、状態マネージャーコンポーネント65と協調するように構成される。状態リーダーコンポーネント69により受信および処理される読み取りクエリは、特に、計算ユニットのユニット状態を永続的に変更しない非変更クエリとして具体化される。他方、イングレスメッセージハンドラコンポーネント67から受信され、コンセンサスコンポーネント63を通過するイングレスメッセージは、特に、変更クエリを実行しているそれぞれの計算ユニットのユニット状態を変更する変更クエリとして具体化され得る。読み取りクエリはコンセンサスコンポーネント63を通過する必要がないため、それぞれのサブネットの任意のノードで非同期に実行でき、それゆえ、はるかに高速である。
【0106】
さらに、サブネットプロトコルクライアント42は、
図6を参照して説明されるように、メインネットプロトコルクライアント41の一部であり得るリーダーコンポーネント610と協調し得る。メインネットリーダーコンポーネント610は、メインネットにより格納されて、それぞれのサブネットプロトコルクライアント42に配信される、情報を提供し得る。これは、サブネットへのノードの割り当て、ノードの公開鍵、サブネットへの計算ユニットの割り当てなどを含む。
【0107】
メッセージングコンポーネント61および実行コンポーネント62は、これらのコンポーネント内のすべての計算、データ、および状態が、それぞれのサブネットのすべてのノード、より具体的には、それぞれのサブネットのすべての誠実なノードに亘って同一に複製されるように構成される。これは、これらのコンポーネントの波形の背景により示される。
【0108】
そのような同一の複製は、一方では、メッセージコンポーネント61への入力のストリームがそれぞれのサブネットにより合意され、したがって、すべてのノード、より具体的にはすべての誠実なノードにより同一であることが保証されるコンセンサスコンポーネント63のおかげで、いくつか実施形態に従って達成される。他方、これは、メッセージングコンポーネント61および実行コンポーネント62が、決定論的で複製された計算を実行するように構成されることにより達成される。
【0109】
X-Net転送コンポーネント66は、メッセージストリームを他のサブネットに送信し、他のサブネットからメッセージストリームを受信する。
【0110】
大部分のコンポーネントは、暗号化コンポーネント68にアクセスして暗号化アルゴリズムを実行し、メインネットリーダー610にアクセスして構成情報を読み取る。
【0111】
実行コンポーネント62は、メッセージコンポーネント61から、計算ユニットのユニット状態および計算ユニットの着信メッセージを受信し、計算ユニットの発信メッセージおよび更新されたユニット状態を返す。この計算を実行する間に、処理されたメッセージ(クエリ)のガスまたは燃料消費量を測定し得る。
【0112】
メッセージコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックと同期する。すなわち、各々の入力ブロックについて、メッセージコンポーネント61は、以下のステップを実行する。それぞれの入力ブロックを解析して、その計算ユニットのメッセージを取得する。さらに、メッセージを、異なる計算ユニットのそれぞれの入力キューにルーティングし、スケジューラーにより、各々の計算ユニットに割り当てられた容量に従って実行されるメッセージを計画するステップ。次に、実行コンポーネント62を使用して、対応する計算ユニットによりメッセージを処理し、その結果、送信されるメッセージを、それぞれの計算ユニットの出力キューに追加する。ただし、メッセージが同じサブネットにおける計算ユニット宛てであると、対応する計算ユニットの入力キューに直接入れられ得る。メッセージングコンポーネント61は、最終的に、計算ユニットの出力キューのメッセージを、受信計算ユニットが配置されているサブネットのメッセージストリームにルーティングし、これらのメッセージストリームを状態マネージャーコンポーネント65に転送して認証される、すなわち、それぞれのサブネットにより署名される。
【0113】
状態マネージャーコンポーネント65は、認証コンポーネント65aを備える。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、それぞれのサブネットの計算ユニットのグループ署名により実行され得る。
【0114】
認証コンポーネント65aは、ユニット状態の特定の変数、特に、以下でより詳細に説明するように、ユニット状態のスナップショットの特定の変数を認証するようにさらに構成され得る。
【0115】
図7に、メッセージプロトコルおよびコンセンサスプロトコル、ならびに関連するコンポーネント、例えば、
図6のメッセージコンポーネント61とコンセンサスコンポーネント63、のワークフロー700を例示的に視覚化して示す。より具体的には、
図7は、サブネットSNBとサブネットSNAおよびSNCの間で交換されるサブネット間メッセージのワークフローを視覚化する。さらに、サブネットSNBは、複数のユーザーUと入力メッセージを交換する。
【0116】
図7の右下から始まって、複数の入力ストリーム701、702および703は、コンセンサスコンポーネント63により受理される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントにより実行されるサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザーUからのサブネットSNBへの入力メッセージ713を含む。
【0117】
サブネット間メッセージ711および712は、異なるサブネットの計算ユニット間で交換されるユニット間メッセージ、ならびに信号メッセージを含む。信号メッセージは、ユニット間メッセージの受信を確認するかどうかを確認するために使用される。メッセージコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわち、この例ではサブネットSNBからサブネットSNAおよびSNCに信号メッセージを送信するように構成される。メッセージコンポーネント61は、この例によれば、送信されたユニット間メッセージを、それぞれのユニット間メッセージに対して確認応答メッセージが受信されるまで格納するように構成されている。これにより、伝達が保証されます。
【0118】
コンセンサスコンポーネント63は、サブネットSNA、SNCのサブネット間メッセージ711、712、およびユーザーUとの入力メッセージ713を受信して処理して、対応するコンセンサスプロトコルにより実行される定義済みのコンセンサスメカニズムに従って、サブネット間メッセージ711、712および入力メッセージ713から入力ブロック720のキューを生成するように、構成される。コンセンサスにより生成された入力ブロック720の各々は、一組の入力メッセージ713、一組のサブネット間メッセージ711、712、および実行パラメータ714であるEPを含む。実行パラメータ714であるEPは、特に、ランダムシード、指定された実行時間、および/または高さ指標を含み得る。コンセンサスコンポーネント63はまた、サブネットの現在の負荷に基づいて、すべての入力ブロックの中のメッセージの数を変化させ得る。
【0119】
コンセンサスコンポーネント63は、次に、入力ブロック720のキューをメッセージコンポーネント61へ提供する。メッセージコンポーネント61は、メッセージプロトコルを実行して、入力ブロック720の処理を行うように構成されている。
【0120】
メッセージプロトコルおよびメッセージコンポーネント61は、コンセンサスコンポーネント63から受信された入力ブロック720と同期する。
【0121】
受信された入力ブロックの処理を行う前に、メッセージコンポーネント61は、1つ以上の入力チェックを含む1つ以上の前処理ステップを実行し得る。それら入力チェックは、入力チェックコンポーネント740により実行され得る。
【0122】
いくつかの実施形態によれば、入力チェックは異なる粒度で実行し得る。最初に、入力チェックは入力ブロック全体に対して実行され得る。このようなチェックは、入力ブロックチェックとして示され得る。これらは、次の入力ブロックの高さのチェックを備え得る。次の入力ブロックの高さが、次の順番で予想される高さよりも低いとき、それは破棄されます。入力ブロックが次の順番で予定されないとき、メッセージコンポーネント61はノードキャッチアッププロトコルを起動し得る。入力ブロックが次の順番に存在するとき、それはメッセージコンポーネント61によりさらに処理される。
【0123】
入力ブロック内のさまざまなタイプのメッセージ(信号メッセージ、イングレスメッセージ、ユニット間メッセージ)はグループ化され得る。
【0124】
入力チェックは、メッセージングコンポーネントが現在過負荷であり、処理を実行するために十分な容量がないかどうかをチェックするための過負荷チェックをさらに含み得る。
例えば、誘導プール内の関連するキューが満量になると、対応するメッセージが拒否され得る。さらなる入力チェックは、順番通りの配送チェックを含み得る。順番どおりの配信要件を満たすために、メッセージへの注釈、例えば、シーケンス番号の付加が可能である。シーケンス番号を有するメッセージが受信された場合、メッセージコンポーネント61は、それが期待される番号を有するかどうかをチェックし得、異なるときは、それを拒否し得る。さらに、入力チェックコンポーネント740は、対象とする宛先の妥当性チェック、すなわち、メッセージが、対応するサブネットにおいてアクティブである計算ユニットを対象にするかどうかの妥当性チェックを実行し得る。
【0125】
入力チェックが合格のときは、それぞれの入力ブロック720のメッセージは、メッセージコンポーネント61によりさらに処理され得る。そして、対応するメッセージは、誘導プールコンポーネント731の誘導プールの中の対応するキューに追加され得る。
【0126】
一般に、メッセージングコンポーネント61は、入力ブロック720を、イングレスメッセージ、信号メッセージ、およびサブネット間メッセージを誘導プールコンポーネント731に、適宜配置することであらかじめ処理する。着信サブネットストリームの中の信号メッセージは、出力キューのメッセージの受領確認として扱われ、その後排除可能である。
【0127】
この例では、誘導プールコンポーネント731は、ユニット間キューA1-B1、C1-B1、A2-B2、およびC1-B2、ならびにユーザー対ユニット間キューU-B1およびU-B2を備える。
【0128】
これらの前処理ステップに続いて、メッセージコンポーネント61は、実行コンポーネント62(
図6を参照)を呼び出して、単一の実行サイクルの間に実行可能な限り多くの誘導プールを実行し、指定された実行時間およびランダムシードを追加入力として提供する。その実行サイクルに続いて、結果として生じるメッセージの出力キューは、出力キューコンポーネント733に供給される。最初は、出力キューコンポーネント733が、ユニット間の出力キューおよびユニット対ユーザーの出力キューを備える。この例では、ユニット間出力キューとしてB1-A1、B1-C2、B2-A2、およびB2-C3、ならびにユニット対ユーザーの出力キューとしてB1-U1およびB2-U4を備える。一例として、メッセージB1-A1は、サブネットSNBの計算ユニットB1からサブネットSNAの計算ユニットA1へのメッセージを示す。別の例として、メッセージB1-U1は、サブネットSNBの計算ユニットB1からユーザーU1へのメッセージを示す。
【0129】
出力キューコンポーネント733は、例えば、
図6に示されるような認証コンポーネント65aにより認証されて、他のコンポーネントにより広められた、サブネットごとの出力ストリーム一式を形成することにより、メッセージの結果として生じる出力キューを後処理する。この例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、およびSNB-Uが提供される。メッセージコンポーネント61は、それぞれのサブネットの計算ユニットの状態/ユニット状態、この例では、サブネットSNBの計算ユニットB1およびB2の状態を格納するように構成された状態記憶コンポーネント732をさらに備える。対応するユニット状態は、計算ユニット各々のワーキングメモリである。
【0130】
メッセージコンポーネント61は、システム状態の特定の部分を決定論的に変化させることを中心に展開する。各ラウンドにおいて、実行コンポーネント61は、それぞれの計算ユニットの状態を読み取って更新することで、誘導プールからの特定のメッセージを実行する。そして、実行される計算ユニットが送信したい発信メッセージを返す。これらのメッセージは、出力キューコンポーネント733に入り、最初は、ネットワークの計算ユニット間のユニット対ユーザーメッセージおよびユニット間メッセージを含む。同じサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネットの内部で内部的にルーティングおよび配信され得るが、サブネット間メッセージは、サブネットの宛先でソートされた出力ストリームにルーティングされる。
【0131】
さらに、いくつかの実施形態によれば、2つの状態が維持されて、どのメッセージが処理されたかについてシステムの残りの部分に通知し得る。最初の部分はサブネット間メッセージ用に維持され、2番目の部分は入力メッセージ用に維持され得る。
【0132】
図8に、本発明の一実施形態による例示的なアプリケーション(計算)ユニット800を示す。
【0133】
アプリケーションユニット800は、入力キュー801、出力キュー802、ユーザーまたはアプリケーション状態803、およびシステム状態804を備える。(所与のサブネット上の)アプリケーションユニットのすべての入力キュー801は、集合して誘導プールを構成するが、入力キューは、アプリケーション計算ユニットの状態の一部である。出力キュー802は、おそらく他のサブネットワークにおいて、他のアプリケーション計算ユニットに配信される必要があるメッセージを含む。
【0134】
アプリケーション状態803は、モジュールの各々の実例とともに、アプリケーション計算ユニットおよびそれに付随するモジュールの機能を実装するメインウェブアセンブリ(Wasm)モジュールを備える。Wasmモジュールの実例では、メモリ、グローバル変数、およびテーブルで構成される。
【0135】
システム状態804は、アプリケーション計算ユニットのコードによる自由な変更はできない。これには、メタデータ、アプリケーション計算ユニットに代わるシステムにより維持されるその他の状態、特にコンパイルされた形式のWasmモジュール、および未処理のメッセージのコンテキストとコールバックとが含まれます。
【0136】
さらに、システム状態804は、それぞれのアプリケーション計算ユニット800のためのアプリケーションユニットガスアカウント、ならびに、この例ではUGA1、UGA2、・・・、UGANで示される1つ以上のローカルユーザーガスアカウントを備える。ユーザーガスアカウントは、アプリケーション計算ユニットユニット800におけるそれぞれのユーザーU1、U2、…、UNの現在のガス残高を含む。
【0137】
図9に、本発明の一実施形態による例示的なローカルユーザーガスアカウントUGAXを、より詳細に図示する。
【0138】
ローカルユーザーガスアカウントUGAXは、入力サブアカウント901、読み取りクエリサブアカウント902、および実行サブアカウント903を備える。イングレスサブアカウント901は、さらなる処理のために受理されたまたは拒否されたイングレスメッセージ、特に、
図7に示されたように誘導プール731に配置されたイングレスメッセージ、に対してJJを支払うように構成される。さらに、イングレスメッセージがコンセンサスを完全に通過するが入力チェック740に合格しないとき、それはすでにネットワークリソースを使用していることになる。したがって、いくつかの実施形態によれば、ユーザーは拒否された入力メッセージに対してもまた、支払いを行う必要がある。
【0139】
読み取りクエリサブアカウント902は、読み取りクエリに対して支払うように構成される。このような読み取りクエリは、ネットワークのユーザーにより、それぞれのサブネットの1つ以上のノードに送信され得る。いくつかの実施形態によれば、ノードは、それぞれのサブネットのアプリケーションユニットのユニット状態のスナップショットを定期的に読み取り得、ユーザーは、読み取りクエリにより読み取りスナップショットにアクセスし得る。それぞれのサブネットの各ノードには、読み取りクエリに対して課金する別々の読み取りクエリサブアカウントRQSAN1、RQSAN2、RQSANNがある。
【0140】
実行サブアカウント903は、メッセージの実行、特に、オングレスメッセージの実行に対して支払うように構成され得る。さらに、それは、いくつかの実施形態による、ユニット間メッセージの実行に対して支払うように構成され得る。
【0141】
いくつかの実施形態によれば、それぞれのサブアカウントのそれぞれは、十分な残高を有する必要がある。そうしないと、対応する要求/実行は処理されない。一例として、イングレスサブアカウント901に十分な残高がないとき、対応する入力メッセージは受理されない。
【0142】
図10に、本発明の一実施形態による課金/支払いスキームを図示する。
図10の例では、分散ネットワーク1000の単一の例示的なアプリケーションユニットAU1のみが、例示的なトランザクションおよび関連する課金/支払いに関与していると想定されている。アプリケーションユニットAU1は、アプリケーションユニットAU1により所有され、アプリケーションユニットAU1によりネットワークリソースの使用に対して支払うこと、および支払いを受け取ること、に使用されるアプリケーションユニットガスアカウントAGAを備える。
【0143】
アプリケーションユニットAU1は、分散ネットワークのユーザーUのためのローカルユーザーガスアカウントUGAをさらに含む。ネットワークは、ローカルユーザーガスアカウントUGAを介して、または、それにより、ユーザーUの要求により生じるネットワークリソースのリソース支払いの手続きを行うように構成される。いくつかの実施形態によれば、ローカルユーザーガスアカウントは、計数または計数ユニットとして具体化され得る。
図10の図示された例では、ユーザーUがユーザーインターフェイスUIを介して分散ネットワークに接続されると想定されている。
【0144】
ステップ1001において、ユーザーUは、イングレスメッセージIMをアプリケーションユニットAU1に送信する。イングレスメッセージIMは、プライマリアプリケーションサービスを要求するメッセージとして具体化される。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能し、入力メッセージのための分散ネットワーク1000のエントリポイントを設定する。一次アプリケーションユニットAU1は、ユーザーにより要求された一次アプリケーションサービスを実行する。一次アプリケーションサービスは、一般的にあらゆる種類のサービス、例えば、ウェブサイトへのアクセスの提供、旅行の予約、はがきの申し込みなど、あり得る。
図10の例では、一次アプリケーションユニットAU1は、分散ネットワーク1000の他の(図示されていない)アプリケーションユニットを関与させる必要なしに、イングレスメッセージIMを独立して処理可能であると想定されている。
【0145】
ステップ1002において、アプリケーションユニットAU1は、一次アプリケーションサービスにより生じた、または使用された、ネットワークリソースの使用に対する料金または支払いの手続きを行う。より具体的には、それぞれのガス量GAは、ローカルユーザーガスアカウントUGAから差し引かれる。いくつかの実施形態によれば、ガス量GAは、単に「燃焼」され得る、すなわち、別のアカウントに転送されることなくシステムから除去または排除され得るか、または分散ネットワークのシステムアカウントに転送され得る。他のいくつかの実施形態によれば、ガス量は、アプリケーションユニットガスアカウントAGAに転送され得る。
【0146】
さらに、ステップ1003において、アプリケーションユニットAU1は、応答メッセージRMを、ユーザーUへのユーザーインターフェイスUIを介して、イングレスメッセージIMに返す。応答メッセージRMは、例えば、 要求されたWebページであり、イングレスメッセージに応答してユーザーに提供される結果と見なされ得る。
【0147】
図11に、分散ネットワーク1100を参照した課金/支払いスキームを示す。
図11は、例示的なトランザクションに関与する分散ネットワーク1100の8つの例示的なアプリケーションユニットと、トランザクションに関与するネットワークリソースの使用に対する、関連する課金/支払いを示す。より具体的には、
図11は、アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8を示す。アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8のそれぞれは、アプリケーションユニットガスアカウントAGAを構成する。アプリケーションユニットのガスアカウントAGAは、対応するアプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8が所有し、分散ネットワーク1100のリソースの使用に対して支払いを行うため、および支払いを受け取るために、それぞれのアプリケーションユニットにより使用される、ガスアカウントである。
【0148】
いくつかの実施形態によれば、分散ネットワーク1100はまた、それが提供するストレージリソースの使用に対して課金する。したがって、それぞれのアプリケーションユニットのガスアカウントAGAは、それぞれのアプリケーションユニットによるネットワークのストレージリソースの使用に対する支払いに使用され得る。これらのストレージコストは、例えば、定期的に、例えば、最高水準の請求スキームにより、課金され得る。このようなスキームでは、それぞれのアプリケーションユニットは、事前定義された期間に使用したストレージスペースの最大量に対して課金される。アプリケーションユニットガスアカウントAGAに加えて、アプリケーションユニットAUXは、分散ネットワークのユーザー用のローカルユーザーガスアカウントUGAを備え得る。これらのローカルユーザーガスアカウントUGAは、分散ネットワーク1100の対応するユーザーのネットワークリソースの使用に対する支払いの手続きを行うように構成される。
【0149】
いくつかの実施形態によれば、ユーザーは、一次アプリケーションサービスを要求するイングレスメッセージを送信しようとする一次アプリケーションユニットの各々にユーザーガスアカウントUGAを有する必要がある。
【0150】
図11の図示の例では、
図11は、ユーザーUがユーザーインターフェイスUIを介して分散ネットワークに接続されると想定されている。
【0151】
いくつかの実施形態によれば、ユーザーUは、例えば、ブラウザプラグインにより、以下に二次アプリケーションユニットとして示される追加のアプリケーションユニットAUについて事前に通知される。それは、それぞれの一次プリケーションサービスを要求するためのユーザーガスアカウントを持つ必要がある。これは、それぞれの一次アプリケーションサービスにより頃なり得る。いくつかの実施形態によれば、二次アプリケーションユニットにおいて、さらなるユーザーガスアカウントは必要とされない場合があるが、いくつかの一次アプリケーションサービスでは、それぞれの一次アプリケーションサービスに関与する二次アプリケーションユニットの各々において、別個のユーザーガスアカウントが必要とされ得る。このようなブラウザプラグインは、それぞれのユーザーガスアカウントが十分に課金されているかどうかを定期的にチェックし得る。そうしないと、ユーザーのイングレスメッセージが拒否されることがある。
【0152】
いくつかの実施形態によれば、それぞれの要求の呼び出しツリー/実行ツリーが、ユーザーがローカルユーザーガスアアカウントを持つ必要があるアプリケーションユニットに当たったとき、アプリケーションユニットは、ゼロから始める必要がないように、かつユーザーに通知されるように、ガスの状況に注意を払う方法で記述され得る。しかし、ローカルユーザーのガスアカウントには、もはや十分な残高がないことがある。いくつかの実施形態によれば、ユーザーインターフェイスUIはまた、ユーザーのウォレット計算ユニットからのそれぞれのユーザーガスアカウントの補充を手配する可能性を提供し得る。
【0153】
この例では、ユーザーUは、アプリケーションユニットAU1およびアプリケーションユニットAU5において、ローカルユーザーガスアカウントUGAを持つ必要があり実質的に持っている。
【0154】
課金方式の例示的な処理フローは、以下のように動作し得る。
【0155】
ステップ1101で、ユーザーUは、イングレスメッセージIMをアプリケーションユニットAU1に送信する。イングレスメッセージIMは、一次アプリケーションサービスを要求するメッセージとして具体化される。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能し、イングレスメッセージIMの分散ネットワークのエントリポイントを設定する。一次アプリケーションユニットAU1は、ユーザーによる一次アプリケーションサービス要求を実行する。一次アプリケーションサービスは、一般的に、ウェブサイトへのアクセスの提供、旅行の予約、はがきの申し込みなど、あらゆる種類のサービスであり得る。
【0156】
この例にでは、要求された一次アプリケーションサービスは、一次アプリケーションユニットAU1だけで実行不可能であり、複数の追加のアプリケーションユニットの関与が必要である。より具体的には、アプリケーションユニットAU2、AU3、AU4、AU5、AU6、AU7、およびAU8の関与が必要である。これら追加のアプリケーションユニットを、以下では、二次アプリケーションユニットと称する。
【0157】
二次アプリケーションユニットAU2、AU3、AU4、AU5、AU6、AU7、およびAU8の関与は、ステップ1102およびステップ1103において、一次アプリケーションユニットAU1が1つ以上の二次アプリケーションユニット、例えば、アプリケーションユニットAU2およびAU3、を呼び出すことで起動または実行される。呼び出しは、呼び出しメッセージCMの送信を含み得る。ユニット間メッセージの実施形態と見なし得る呼び出しメッセージCMは、支払いメッセージPMを含み得る。
【0158】
他のいくつかの実施形態によれば、支払いメッセージPMはまた、別個に送信され得る。二次アプリケーションユニットへの呼び出しメッセージは、二次アプリケーションユニットが二次アプリケーションサービスを実行する要求を備える。
【0159】
この例では、二次アプリケーションユニットAU3は、さらなる二次アプリケーションユニットへのさらなる呼び出しを発行する。より具体的には、二次アプリケーションユニットAU3は、ステップ1104において、二次アプリケーションユニットAU4への呼び出しを発行し、ステップ1105において、二次アプリケーションユニットAU5への呼び出しを発行する。
【0160】
そして、二次アプリケーションユニットAU5は、ステップ1106、ステップ1107、およびステップ1108において、それぞれの呼び出しメッセージCMを二次アプリケーションユニットAU6、AU7、およびAU8に呼び出す。これらの呼び出しメッセージは、多重呼び出しを構築する。
【0161】
入力メッセージIMにより起動される呼び出し全体または呼び出しメッセージCMは、呼び出しツリーとして示され得る。より具体的には、ステップ1101において発行された最初のイングレスメッセージを含む、ステップ1102からステップ1108までにおいて発行された呼び出しまたは呼び出しメッセージは、呼び出しツリーと見なし得る。
【0162】
上述のとおり、二次アプリケーションユニットAU5は、ローカルユーザーガスアカウントUGAも含みます。二次アプリケーションユニットAU5のこのローカルユーザーガスアカウントUGAは、二次アプリケーションユニットAU5が二次アプリケーションサービスを実行するために必要なネットワークリソースの使用に対する料金または支払いの手続きを行うことに使用できる。これらの支払いには、対応する多重呼び出しにより要求される二次アプリケーションユニットAU6、AU7、および/またはAU8の二次サービスの支払いを含み得る。この例の呼び出しツリーは、呼び出しに関係するさまざまなアプリケーションユニットのさまざまな支払いスキームを示している。
【0163】
より具体的には、その二次アプリケーションサービスのパフォーマンスに対して、アプリケーションユニットAU2は、例えば、10ガスユニットを請求し、アプリケーションユニットAU3は、例えば、20ガスユニットの固定価格を請求する。
【0164】
ステップ1102において、アプリケーションユニットAU1からアプリケーションユニットAU2への10ガスユニットの固定支払いを含む支払いメッセージPMを送信することにより、および、ステップ1103において、アプリケーションユニットAU1からアプリケーションユニットAU3への20ガスユニットの固定支払いを含む支払いメッセージPMを送信することにより、ガスがアプリケーションユニット間で転送される。より具体的には、これらの支払いメッセージPMは、通貨額、特にガスユニットの量を、アプリケーションユニットAU1のアプリケーションユニットガスアカウントAGAから、アプリケーションユニットAU2およびAU3のそれぞれのアプリケーションユニットガスアカウントAGAに転送する。
【0165】
アプリケーションユニットAU4は、二次アプリケーションサービスを実行するためのネットワークリソースの使用に対して前払いで課金します。前払いは、メッセージに載せる必要のある最小限のガスと見なし得る。前払いで指定された金額は、対応する一次アプリケーションサービスまたは二次アプリケーションサービスの実行完了に対して概ね十分であるように、例えば、ほぼ99%の確率で選択し得る。この確率をさらに高めるために、一次アプリケーションユニットまたは二次アプリケーションユニットは、独自のアプリケーションユニットガスアカウントAGAを使用して、それぞれの前払いを補充し、対応する一次アプリケーションサービスおよび/または二次アプリケーションサービスを、さらに高い、例えば、ほぼ99.999%の確率で確実に実行し得る。この例において、アプリケーションユニットAU3は、アプリケーションユニットAU4により指定された5ガスユニットの前払いを、独自のアプリケーションユニットガスアカウントから別の5ガスユニットを補充することで、合計10ガスユニットを、二次アプリケーションサービスの実行に必要とされるネットワークリソースを支払うためにアプリケーションユニットAU4に対して、利用可能であると想定される。
【0166】
ステップ1104において、アプリケーションユニットAU3から5ガスユニットの前払いおよび5ガスユニットの補充支払いを含む支払いメッセージPMを送信することで、例えば、10ガスユニットのガスのそれぞれの量が、アプリケーションユニットAU3からアプリケーションユニットAU4に転送される。さらに、この例によれば、ステップ1103において送信される支払いメッセージPMには、アプリケーションユニットAU1のアプリケーションユニットガスアカウントからアプリケーションユニットAU3のアプリケーションユニットガスアカウントに転送される5ガスユニットの前払いも含まれる。
【0167】
ステップ1102、ステップ1103、ステップ1106、ステップ1107、およびステップ1108で送信される支払いメッセージPMとは対照的に、ステップ1104で支払いメッセージPMによりアプリケーションユニットAU4に転送される10ガスの量は、いくつかの実施形態によれば、受信アプリケーションユニットのアプリケーションユーザガスアカウントに貸方記入されないことがある。ただし、この金額は、ネットワークリソースの実際の使用に対して直接支払うために使用し得、「焼却」、つまりシステムから削除あるいは排除され得る。例えば、実際の場合、二次アプリケーションユニットAU4は、二次アプリケーションサービスに4つのガスユニットしか必要ないので、6つのガスユニットが払い戻され得る。
【0168】
返済は、アプリケーションユニットAU4から、6つのガスユニットの返済を含む返済メッセージRIMをアプリケーションユニットAU3に送信することで実行され得る。返済メッセージRIMは、ステップ1123において応答メッセージRMと一緒に送信し得る。また、個別のメッセージとして具体化し得る。次に、アプリケーションユニットAU3は、5つのガスユニット、より具体的には、それ自体のAGAから補充した5つのガスユニットの量を保持し、それを、それ自体のAGAに戻し得る。さらに、アプリケーションユニットAU3は、前払いの残りの未使用部分(この例では1ガスユニット)を、例えば、ステップ1124において、返済メッセージRIMを(例えば、応答メッセージの一部として、または別個に)アプリケーションユニットAU1に送信することでアプリケーションユニットAU1に払い戻し得る。次に、アプリケーションユニットAU1は、この1つのガスユニットを、ユーザーUのローカルユーザーガスアカウントUGAに払い戻し得る。
【0169】
ステップ1105において二次アプリケーションユニットAU5に発行される呼び出しメッセージCMとして具体化された呼び出しは、変動支払いを伴う。より具体的には、アプリケーションユニットAU5は、二次サービスの固定価格を指定しないが、アプリケーションユニットAU5でユーザーが実行するユーザーガスアカウントUGAから直接請求する変動価格を指定する。
【0170】
この例によれば、ステップ1106で発行されるコールメッセージCMはまた、変動料金または支払いを伴う。したがって、アプリケーションユニットAU6はまた、ローカルユーザーガスアカウントUGAを含み、そのユーザーガスアカウントUGAから変動価格を、例えば、ステップ1136において、直接請求する。
【0171】
一方、二次アプリケーションユニットAU7および二次アプリケーションユニットAU8は固定価格を請求する。より具体的には、アプリケーションユニットAU7は5ガスユニットの固定価格を請求し、アプリケーションユニットAU8は7ガスユニットの固定価格を請求する。例えば、ステップ1107およびステップ1108において、アプリケーションユニットAU5からアプリケーションユニットAU7およびAU8への対応する支払いメッセージPMを送信することで、それぞれの量のガスは、アプリケーションユニットAU5からアプリケーションユニットAU7およびアプリケーションユニットAU8に転送される。他のいくつかの実施形態によれば、支払いメッセージPMは、別個のステップで送信され得る。アプリケーションユニットAU6、アプリケーションユニットAU7、およびアプリケーションユニットAU8に発行された多重呼び出しに応答して、アプリケーションユニットAU5は、一般に、ステップ1121において示されるように、アプリケーションユニットAU6、アプリケーションユニットAU7、およびアプリケーションユニットAU8から応答メッセージRMを受信する。
【0172】
それぞれの二次アプリケーションサービスを実行した後、二次アプリケーションユニットAU5は、ステップ1122において、応答メッセージRMをアプリケーションユニットAU3に送信する。さらに、二次アプリケーションユニットAU4は、ステップ1123において、応答メッセージRMをアプリケーションユニットAU3に送信する。これには、例えば、上述したような6ガスユニットの払い戻しメッセージRIMが含まれ得る。
次に、二次アプリケーションユニットAU3は、ステップ1224において、応答メッセージRMを一次アプリケーションユニットAU1に送信する。これには、例えば、1ガスユニットの払い戻しメッセージRIMを含み得る。二次アプリケーションユニットAU2は、ステップ1125において、応答メッセージRMを一次アプリケーションユニットAU1に送信する。そして、一次アプリケーションユニットAU1は、ステップ1226において、ユーザーインターフェイスUIを介してユーザーUに応答メッセージRMを提供する。
【0173】
いくつかの実施形態によれば、分散ネットワークは、イングレスメッセージ、特に、実行のためのイングレスメッセージの受理およびメッセージの実行に対して別々に課金するように構成される。この点において、イングレスメッセージとイングレスメッセージの実行に対して異なる会計期間を実装し得る。一例として、分散ネットワークを
図7に記載されたように具体化するとき、一旦、入力チェック740に順調に合格して誘導プール731に入力された後、入力メッセージは課金され得る。さらに、イングレスメッセージの実行は、一次アプリケーションユニットがいくつかの初期処理を実行した後、いくつかの実施形態に従って課金され得る。実施形態によれば、入力メッセージの実行は、一次アプリケーションユニットが、それぞれの入力メッセージを実行するために必要とされる二次アプリケーションユニットに1つまたは複数の呼び出しを発行した後に課金され得る。
【0174】
上術の例を参照すると、ステップ1131において、一次アプリケーションユニットAU1は、より具体的には、それが誘導プールに入った後で、イングレスメッセージIMの受理に対して課金することができる。これは、例えば、IMの大きさに応じた料金、およびそれぞれのガスユニットは、特に、ユーザーガスアカウントのイングレスサブアカウント901(
図9を参照)から差し引かれる。さらに、それは、ステップ1132において、イングレスメッセージIMにより生じたネットワークリソースの使用に対する料金または支払いの手続きを行い得る。それぞれの支払いは、一次アプリケーションユニットAU1のユーザーガスアカウントUGAから差し引かれる。これらの支払いは、アプリケーションユニットAU2では、例えば10ガスユニット、アプリケーションユニットAU3では、20ガスユニットの固定価格、アプリケーションユニットAU4では5ガスユニットの前払い、同様に、アプリケーションユニットAU1による一次アプリケーションサービスの実行にたいしては、例えば20ガスユニットの固定価格、を包含し得る。ゆえに、この例では、呼び出しの発行後、一次アプリケーションユニットAU1は、ステップ1132において、イングレスメッセージIMの実行のために、一次アプリケーションユニットAU1のローカルユーザーガスアカウントから55ガスユニットを差し引き得る。それぞれのガスユニットのこの控除は、特に、ユーザーガスアカウントの実行サブアカウント903(
図9を参照)から取られる。
【0175】
ステップ1132は、例えば、ステップ1102-1103の直前または直後に実行され得る。
【0176】
したがって、ステップ1132において、ユーザーは、自分の実行サブアカウントから、一次アプリケーションユニットAU1により実行されている個々の命令、ならびに独自のユーザアカウントを提供しない他のアプリケーションユニットに対して行われた呼び出しに対して支払う。請求される費用には、前払いだけではなく、固定支払いに対する呼び出しで送信されるガスが含まれ得る。いくつかの実施形態によれば、費用はまた、最終的な応答/結果を処理するクロージャの実行に対する前払いを含み得る。いくつかの実施形態によれば、クロージャの実行からの変更(ガスユニットの未使用量)は、ユーザーガスアカウントの実行サブアカウントに戻入することができる。いくつか実施形態によれば、開発者は、呼び出しの応答/結果を処理するためにクロージャを提供しないことを選択することができ、その場合、開発者はそれに対して請求されない。クロージャは、その実行コストが最小クロージャコストを超過したときに、この追加コストが実行サブアカウントから差し引かれるように特別に構成し得る。
【0177】
上述の例をさらに参照すると、ステップ1133において、二次アプリケーションユニットAU5は、AU7およびAU8によるネットワークリソースの使用、ならびに、アプリケーションユニットAU5のユーザーガスアカウントUGAから合計コストを差し引くことによるそれ自身の使用、に対する料金および支払いの手続きを行い得る。他のいくつかの実施形態によれば、費用は、アプリケーションユニットガスアカウントAGAから差し引かれ得る。ステップ1133は、ステップ1106、1107、および1108で呼び出しメッセージCMを送信する直前または直後に実行し得る。
【0178】
同様に、さらなるステップ1134、ステップ1135、ステップ1137、およびステップ1138において、二次アプリケーションユニットAU2、AU3、AU7、およびAU8は、ネットワークリソースのそれぞれの使用に対する料金または支払いの手続きを行い得る。
【0179】
いくつか実施形態によれば、ステップ1131からステップ1138で課金されるそれぞれのガスは、燃焼され得る。
【0180】
いくつかの実施形態によれば、それぞれのアプリケーションのそれぞれの支払い方法は、アプリケーションユニットのインターフェイス記述言語(IDL)で指定することができる。よって、アプリケーションユニットのそれぞれのプログラマー/開発者により指定可能である。特に、それぞれのアプリケーションユニットのインターフェイスの説明は、ユーザーがアプリケーションユニットでローカルユーザーガスアカウントを持っていると予想されるかどうか、および予想される収支がどうあるべきかを指定し得る。後者の場合、アプリケーションユニットが、例えば、二次アプリケーションユニットとして機能するとき、他のアプリケーションユニット、特に、一次アプリケーションユニットがその二次アプリケーションユニットに送信される呼び出しメッセージにガスをかける必要はありません。いくつかの実施形態によれば、ユーザーおよび/またはそれぞれの一次アプリケーションユニットは、呼び出しツリーを計算可能である。また、IDLでは、アプリケーションユニットのアプリケーションユニットガスアカウントを使い果たさない限り、関数/呼び出しを実行するために固定価格で支払うことを指定でき、実行が保証され得る。
【0181】
いくつかの実施形態によれば、固定価格は、それが成功したかどうかに関係なく、実際の実行コストが常に請求される。
【0182】
さらに、インターフェイスの説明は、それぞれの機能/呼び出しの実行に対して前払いが必要であり、この「最小」量のガス(前払いとして指定)を対応する呼び出しメッセージに含める必要があることを指定し得る。いくつかの実施形態によれば、この最小量のガスは、これまでに消費されたガスの最大量を記録することにより動的に計算可能であり、次に、事前定義された係数、例えば1.5を乗じる。
【0183】
図12に、分散ネットワークのユーザーがローカルユーザーのガスアカウントをアップロードする方法を示す。この図は、上述のように、アプリケーションユニットAU1、AU2、AU3、AU4、AU5、AU6、AU7、およびAU8を備える分散型ネットワーク1100を参照して提供される。
【0184】
図12に示すように、ユーザーU1は、ウォレット計算ユニットWCU1を実行する。ウォレット計算ユニットWCU1は、ユーザーU1のユーザー通貨アカウントを管理するように構成されている。
【0185】
WCU1により提供されるユーザー通貨アカウントからローカルユーザーガスアカウントUGAを補充するために、ユーザーU1は、ステップ1201において、補充要求RRをそのウォレット計算ユニットWCU1に送信する。次に、ウォレット計算ユニットWCU1は、ステップ1202において、支払いメッセージPMをアプリケーションユニットAU1に送信し、ステップ1203において、支払いメッセージPMをアプリケーションユニットAU5に送信し、ステップ1204において、支払いメッセージPMをアプリケーションユニットAU6に送信する。これにより、アプリケーションユニットAU1、AU5およびAU6で、ユーザー通貨アカウントからローカルユーザーガスアカウントUGAに通貨金額を転送することが可能となる。
【0186】
ウォレット計算ユニットWCU1により提供されるユーザー通貨アカウントは、例えば、 従来の銀行アカウントからユーザーが再請求/補充する。この点で、外部の銀行アプリケーションまたは外部の銀行アカウントへのインターフェイスを提供され得る。ウォレット計算ユニットWCU1は、ガスユニットまたは別の通貨、例えば、暗号通貨、ステーブルコイン、または米ドルやユーロなどの古典的な国の通貨で実行し得る。
【0187】
暗号通貨または古典的な国の通貨とガス通貨との間の為替レートは、アプリケーションのそれぞれのニーズに応じて、分散ネットワーク1100により管理され得る。
【0188】
アプリケーションユニットのガスアカウントAGAは、例えば、それぞれのアプリケーションユニットの所有者により補充され得ることに注意すべきである。この目的のために、それぞれのアプリケーションユニットの所有者は、ユーザー通貨アカウントを所有し得る。また、それは、所有者の通貨アカウントとして示され得る。
【0189】
図13に、本発明の一実施形態による読み取りクエリの課金スキームを示す。サブネット11は、5つのノードN1、N2、N3、N4、およびN5を含み得る。ノードN1、N2、N3、N4、およびN5のそれぞれは、独自のユニット状態を有する一連のアプリケーションユニットを実行し得る。一連のアプリケーションユニットのユニット状態は、サブネット11全体に亘って複製される。
【0190】
ノードN1、N2、N3、N4、およびN5は、サブネット11のアプリケーションユニットのユニット状態の読み取りスナップショットを定期的に作成する。読み取りスナップショットにアクセスするために、ユーザーは1つ以上のノードN1、N2、N3、N4、およびN5に読み取りクエリを送信し得る。読み取りクエリは一度に課金されるのではなく、その後、バンドルされた方法で課金される。
【0191】
さらに、いくつかの実施形態によれば、ノードN1、N2、N3、N4、およびN5のそれぞれは、それらが受信して処理した読み取りクエリに対して課金するための別個の読み取りクエリサブアカウントRQSA(
図9も参照)を有し得る。
【0192】
この例では、ユーザーが4つの読み取りクエリRQ1、RQ2、RQ3、およびRQ4をノードN1に送信すると想定される。さらに、ユーザーは読み取りクエリの各々に電子的に署名する。より具体的には、読み取りクエリRQ1、RQ2、RQ3、およびRQ4は、それぞれ署名sig1、sig2、sig3、およびsig4で署名されている。
【0193】
その後、ユーザーは4つの読み取りクエリに対してバンドルされた方法で課金される。このノードN1では、サブネット11の他のノードN2、N3、N4、またはN5へのシステムイングレスメッセージとして、読み取りクエリRQ1、RQ2、RQ3、およびRQ4のバンドルに対して課金されるガスユニットの合計量を、集計された署名とともに送信し得る。
【0194】
次に、ガスユニットの総量が、それぞれのユーザーの読み取られたサブアカウント902から取りまとめて差し引かれる(
図9を参照)。
【0195】
図9に示すように、ノードN1、N2、N3、N4およびN5のそれぞれは、別個の読み取りクエリサブアカウントRQSAN1、RQSAN2、RQSAN3、RQSAN4およびRQSAN5を有し得る。いくつかの実施形態によれば、ノードN1は、その別個の読み取りクエリサブアカウントRQSAN1が十分な収支を有する場合に限り、読み取りクエリRQ1、RG2、RQ3、およびRQ4を実行し得る。これにより、例えば、ノードN1を読み取りクエリで満たすことで、単一のノード、この例ではノードN1への攻撃を防止または妨害し得る。
【0196】
図14に、イングレスメッセージを受信する一次アプリケーションユニットAU1が、クロージャを使用して、二次アプリケーションユニットへの呼び出しを管理する方法を示す。ステップ1401において、ユーザーUは、イングレスメッセージをアプリケーションユニットAU1に送信する。アプリケーションユニットAU1は、一次アプリケーションユニットとして機能する。1以上のステップ1402において、アプリケーションユニットAU1は、1つ以上の二次アプリケーションユニットにさらなる呼び出しを送信する。
【0197】
ステップ1403において、アプリケーションユニットAU1は、呼び出しコンテキストを含むその現在の状態をクロージャとして格納する。
【0198】
1つ以上のステップ1404において、二次アプリケーションユニットは、1つ以上の応答/結果を応答メッセージとしてアプリケーションユニットAU1に送り返す。次に、アプリケーションユニットAU1は、クロージャに格納された状態を使用して応答メッセージを処理し、ステップ1405において、応答メッセージをユーザーUに送り返す。
【0199】
図15に、本発明の一実施形態による、分散ネットワークのネットワークリソースの使用に対して課金するためにコンピュータに実装する方法の方法ステップのフローチャートを示す。
【0200】
ステップ1510において、分散ネットワークは、複数のノードのそれぞれにおいて1つ以上のアプリケーション(計算)ユニットが実行される。
【0201】
ステップ1520において、ネットワークのユーザーは、一次アプリケーションユニットにおいてローカルユーザーガスアカウントを実行する。
【0202】
ステップ1530において、ネットワークのユーザーは、入力メッセージを一次アプリケーションユニットに送信する。
【0203】
ステップ1540において、一次アプリケーションユニットは、呼び出しを二次アプリケーションユニットへ発行する。
【0204】
ステップ1550において、一次アプリケーションユニットのローカルユーザーガスアカウントは、一次アプリケーションユニットおよび二次アプリケーションユニットによるネットワークリソースの使用に対する支払いの手続きを行う。
【0205】
ステップ1560において、二次アプリケーションユニットは、二次アプリケーションサービスを実行し、二次アプリケーションサービスの結果を一次アプリケーションユニットに送り返す。ステップ1570において、一次アプリケーションユニットは、二次アプリケーションサービスの結果の使用を含む一次アプリケーションサービスを実行し、応答メッセージをユーザーに送り返す。
【0206】
したがって、そのような方法によれば、ネットワークリソースの使用に対する支払いは、一次アプリケーションユニットのローカルユーザーガスアカウントからローカルに行われ得る。さらに、呼び出しツリーの全部が実行される前に、支払いの手続きを行い得る。
【0207】
図16に、本発明の一実施形態による、ネットワーク100、ネットワーク300、ネットワーク1100、およびネットワーク1300の各々のノード10において実行される主なプロセスを示す。本発明のいくつかの実施形態によるネットワークのネットワーククライアントは、ノード10がネットワークに参加するために必要なプロトコルコンポーネント一式である。いくつかの実施形態によれば、各々のノード10は、メインネットのメンバーであり、典型的には1つのサブネットであり、これは、各々のノードがメインネットのクライアント、あるいはサブネットのクライアントを実行することを意味する。
【0208】
ノードマネージャ40は、メインネットプロトコルクライアント41、サブネットプロトコルクライアント42、およびセキュリティアプリケーション43を開始、再起動、および更新するように構成される。
【0209】
いくつかの実施形態によれば、複数のサブネット11のそれぞれは、対応するノード10において別個のサブネットプロトコルクライアント42を実行するように構成される。メインネットプロトコルクライアント41は、特に、構成データを複数のサブネット11との間で分散するように構成されている。メインネットプロトコルクライアント41は、特に、システム計算ユニットのみを実行するように構成され得、ユーザー提供の計算ユニットは実行されない。メインネットプロトコルクライアント41は、メインネットのローカルクライアントであり、サブネットプロトコルクライアント42は、サブネットのローカルクライアントである。
【0210】
セキュリティアプリケーション43は、ノード10の秘密鍵を格納し、それらを用いてすべての操作を実行する。セキュリティアプリケーション43は、ノードにより保持される秘密鍵を保護するように構成される。より具体的には、秘密鍵は、別個の実行環境(別個のプロセスまたは別個の仮想マシン(VM)のいずれか一方)で保持および処理される。セキュリティアプリケーション43は、これらのインターフェイスを介して秘密鍵を抽出することができないように、制限され制御されたインターフェイスで動作するように構成される。いくつかの実施形態によれば、セキュリティアプリケーションは、ハードウェアセキュリティモジュール(HSM)のように、またはHSMと同様に動作するように構成される。よって、セキュリティアプリケーション43は、ソフトウェアHSMとして示され得る。
【0211】
図17に、サブネット間メッセージおよびサブネット内メッセージの交換に関与する主要な層を示す層モデル1700を示す。層モデル1700は、サブネット間通信のための上位の層として機能するように構成されるメッセージング層51を備える。より具体的には、メッセージング層51は、異なるサブネットの計算ユニット間でサブネット間メッセージをルーティングするように構成される。さらに、メッセージング層51は、ネットワークのユーザーからのイングレスメッセージをネットワークの計算ユニットにルーティングするように構成される。
【0212】
層モデル1700は、異なるサブネットからのサブネット間メッセージならびにイングレスメッセージを受信し、特に、処理順序に同意することにより、それらを、その後それぞれのサブネットによりさらに処理される一連の入力ブロックに編成するように構成される複数のコンセンサス層52をさらに含む。さらに、層モデル1700は、単一のサブネットのノード間の通信を編成および駆動するように構成されたピアツーピア(P2P)層53を備える。
【0213】
いくつかの実施形態によれば、ネットワークは、複数のさらなる層、特に、ネットワークの計算ユニットにおいて実行メッセージを実行するように構成される実行層を含み得る。メインネットプロトコルクライアント41とサブネットプロトコルクライアント42との間の相互作用のより詳細な説明を以下に述べる(
図16を参照)。メインネットプロトコルクライアント41は、サブネットの構成情報を含むいくつかのレジストリを管理する。これらのレジストリはメインネットの計算ユニットにより実装されており、すべてのノードがメインネットに参加しているので、これらのレジストリへのアクセスは状態読み取り操作により簡単に実装できる。
【0214】
すなわち、メインネットリーダー610(
図6を参照)は、実際にメインネットプロトコルクライアント41のサブコンポーネントであり得る。したがって、このコンポーネントとの相互作用は、メインネットおよびサブネットクライアントが実行される2つの隔離された環境間の相互作用をもたらす。
【0215】
図18に、本発明のいくつかの実施形態による分散ネットワークにおけるブロックの作成を図示する。ブロックは、特に、
図7に示される入力ブロック720であり得る。これらは、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63により作成される。
【0216】
この例示的な実施形態では、3つの入力ブロック1801、1802、および1803が示されている。ブロック1801は、複数のトランザクション、すなわち、トランザクションtx1.1、トランザクションtx1.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1802はまた、複数のトランザクション、すなわち、トランザクションtx2.1、トランザクションtx2.2、そしておそらくドットで示されるさらなるトランザクションを含む。ブロック1803はまた、複数のトランザクション、すなわち、トランザクションtx3.1、トランザクションtx3.2、そしておそらくドットで示されるさらなるトランザクションを含む。入力ブロック1801、1802および1803は連鎖されている。より具体的には、各ブロックは、前のブロックのブロックハッシュを含む。これは、現在のブロックを前のブロックに暗号で結び付けます。いくつかの実施形態によれば、トランザクションは、サブネット間メッセージ、イングレスメッセージ、および信号メッセージであり得る。
【0217】
いくつかの実施形態によれば、入力ブロック1801、1802、および1803は、プルーフオブステークコンセンサスプロトコルにより作成され得る。
【0218】
しかしながら、コンセンサス構成要素により生成された入力ブロックは、いくつかの実施形態によれば、連鎖される必要がないことに留意されたい。むしろ、受信したメッセージの処理順序でサブネットのノード間である種の合意に達する任意のコンセンサスプロトコルを、実施形態に従って使用し得る。
【0219】
図19に、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1900をより詳細に示す。ネットワーキングコンポーネント1900は、例えば、
図6に示されるネットワーキングコンポーネント64のより詳細な実施形態であり得る。ネットワーキングコンポーネント1900は、ノード間通信を実行するように構成されたユニキャストコンポーネント1910、サブネット内通信を実行するように構成されたブロードキャストコンポーネント1920、およびサブネット間通信を実行するように構成されたクロスネットコンポーネント1930を備える。
【0220】
ここで
図20を参照すると、本発明の実施形態による、例えば、
図1のネットワーク100に示されるネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、計算機能を実行することができ、したがって一般に計算システムまたはコンピュータとして具体化され得る計算ノードを確立する。ネットワークノード10は、例えば、サーバーコンピューターであり得る。ネットワークノード10は、分散ネットワークのネットワークリソースの使用に対して課金するためにコンピュータに実装する方法を実行するように構成され得る。ネットワークノード10は、他の多くの汎用または特殊目的の計算システム環境または構成で動作可能であり得る。ネットワークノード10は、コンピュータシステムにより実行されるプログラムモジュールなどのコンピュータシステム実行可能命令の一般的なコンテキストで記述し得る。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。ネットワークノード10は、汎用計算装置の形態で示されている。ネットワークノード10の構成要素は、1つ以上のプロセッサまたは処理ユニット2015、システムメモリ2020、およびシステムメモリ2020を含む様々なシステム構成要素をプロセッサ2015に結合するバス2016を含み得る。ただし。これらに限定されるものではない。
【0221】
バス2016は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックスポート(AGP)、さまざまなバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスなど、いくつかのタイプのバス構造の1つまたは複数を表す。例えば、これらに限定されるものではないが、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。
【0222】
ネットワークノード10は、通常、様々なコンピュータシステム可読媒体を含む。そのようなメディアは、ネットワークノード10によりアクセス可能である任意の利用可能な媒体であり得る、そしてそれは、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可媒体の両方を含む。
【0223】
システムメモリ2020は、ランダムアクセスメモリ(RAM)2021および/またはキャッシュメモリ2022などの揮発性メモリの形態のコンピュータシステム可読媒体を含むことができる。ネットワークノード2010は、他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含み得る。一例として、記憶システム2023は、読み取りおよび書き込み用の取り外し不可で不揮発性の磁気媒体(図示せず、通常は「ハードドライブ」と呼ばれる)を提供可能である。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)に、読み取りおよび書き込みを行う磁気ディスクドライブ、ならびにCD-ROM、DVD-ROM、およびその他の光学媒体のような取り外し可能な不揮発性光ディスクに、読み取りまたは書き込みを行う光ディスクドライブを提供し得る。このような場合、それぞれが1つ以上のデータ媒体インターフェイスによりバス2016に接続可能である。以下でさらに描写および説明されるように、メモリ2020は、本発明のいくつかの実施形態の機能を実行するように構成されたプログラムモジュール一式(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含み得る。
【0224】
プログラムモジュール2031一式(少なくとも1つ)を有するプログラム/ユーティリティ2030は、一例として、これに限定されるものではないが、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータが、メモリ2020に格納され得る。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせ、のそれぞれは、ネットワークキング環境へ実装し得る。プログラムモジュール2031は、一般に、本明細書に記載されるような本発明のいくつかの実施形態の機能および/または方法論を実施する。プログラムモジュール2031は、分散ネットワークのユーザーに分散ネットワークにより計算された計算結果へのアクセス提供する、コンピュータに実装する方法の特定の1つ以上のステップ、例えば、上述の方法の1つ以上のステップを実行し得る。
【0225】
ネットワークノード10はまた、ディスプレイ2018と同様に、キーボードまたはポインティング装置などの1つ以上の外部装置2017と通信し得る。このような通信は、入出力(I/O)インターフェイス2019を介して実施可能である。さらに、ネットワークノード10は、ネットワークアダプタ2041を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、および/またはパブリックネットワーク(例えば、インターネット)のようなネットワークのうち1つ以上のネットワーク40と通信可能である。いくつかの実施形態によれば、ネットワーク2040は、特に、複数のネットワークノード10、例えば、
図1に示されるようなネットワーク100を備える分散型ネットワークであり得る。図示したように、ネットワークアダプタ2041は、バス2016を介してネットワークノード10の他のコンポーネントと通信する。示されていないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
【0226】
ネットワークノード10は、対応する分散ネットワークにネットワークリソースを提供する。ネットワークリソースには、特に、処理ユニット2015およびストレージシステム2023を含むメモリ2020が含まれる。
【0227】
本発明の態様は、システム、特に、複数のサブネット、方法、および/またはコンピュータプログラム製品を備える分散ネットワークとして具体化され得る。コンピュータプログラム製品は、プロセッサに本発明のいくつかの態様を実行させる、コンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0228】
コンピュータ可読記憶媒体は、命令実行装置により使用される命令を保持および記憶可能な有形の装置であり得る。コンピュータ可読記憶媒体は、例えば、これらに限定させるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはそれらの任意の適切な組み合わせであり得る。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバーケーブルを通過する光パルス)、または配線を介して送信される電気信号のような一時的な信号そのものであると解釈されるべきではない。
【0229】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算装置/処理装置に、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶装置にダウンロード可能である。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピューター、および/またはエッジサーバーで構成され得る。各々の計算装置/処理装置のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を転送して、それぞれの計算装置/処理装置のコンピュータ可読記憶媒体に格納する。
【0230】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。プログラミング言語は、スモールトーク、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語であり得る。
【0231】
本発明のいくつかの態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して本明細書に記載されている。
【0232】
本発明のいくつかの実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為を実施する手段を作成して、機械を製造する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に記憶され得る。この命令が格納されているコンピュータ可読記憶媒体は、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/行為の態様を実施する命令を含む製造品を備える。
【0233】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置にロードされて、コンピュータ、他のプログラム可能な装置または他の装置において、コンピュータ、他のプログラム可能な装置、または他の装置で実行される命令が、フローチャートおよび/または1つ以上のブロックからなるブロック図で指定された機能/動作を実装するように、一連の操作ステップを実行させて、コンピュータ実装プロセスを生成し得る。
【0234】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるネットワーク、システム、方法、およびコンピュータプログラム製品の実装が可能なアーキテクチャ、機能、および動作を図示したものである。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、所定の論理機能を実装する1つ以上の実行可能命令を備える。いくつかの代替の実装では、ブロックに示されている機能は、図に示されている順序と異なってよい。例えば、連続して表示される2つのブロックは、実際には実質的に同時に実行され得る。また、関連する機能に応じて、ブロックが逆の順序で実行されてもよい。
【0235】
本発明の現状で好ましい実施形態が示され、説明されている。しかし、本発明はそれに限定されず、他の方法で以下の特許請求の範囲内で様々に具体化および実施され得ることが明確に理解されるべきである。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
分散ネットワークのリソースの使用に対して課金するためにコンピュータに実装される方法であって、前記分散ネットワークは複数のノードを備え、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、
前記ネットワークのユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え
、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、方法。
【請求項2】
前記一次アプリケーションサービスを行うステップは、前記一次アプリケーションユニットが、1つ以上の二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上の二次アプリケーションユニットが、1つ以上の二次アプリケーションサービスを行うステップをさらに備える、請求項
1に記載の方法。
【請求項3】
前記1つ以上の二次アプリケーションサービスを行うステップは、前記1つ以上の二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上のさらなる二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションサービスを行うステップをさらに備える、請求項
2に記載の方法。
【請求項4】
前記1つ以上の呼び出しは、連続して行われ、それにより任意の深さの呼び出しツリーが形成される、請求項
3に記載の方法。
【請求項5】
前記一次アプリケーションユニットの前記ローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスが、前記リソースの前記使用の対する支払いの手続きを行うステップを、さらに備える、請求項
2から
4までのいずれか1項に記載の方法。
【請求項6】
前記ネットワークの前記ユーザーが、前記1つ以上の二次アプリケーションユニットにおいて、1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記二次アプリケーションユニットの前記1つ以上のローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスによる前記リソースの前記使用に対する支払いの手続きを行うステップと、をさらに備える、請求項
2から
5までのいずれか1項に記載の方法。
【請求項7】
前記ネットワークの1人以上のユーザーが、特に、前記ネットワークの各ユーザーが、前記ユーザーのユーザー通貨アカウントを管理するように構成されるウォレット計算ユニットを実行するステップと、
前記ウォレット計算ユニットからそれぞれのアプリケーションユニットに支払いメッセージを送るステップであって、前記それぞれのアプリケーションユニットにおいて、前記ユーザー通貨アカウントから前記ローカルユーザーガスアカウントに通貨額を転送するステップと、をさらに備える、請求項1から
6までのいずれか1項に記載の方法。
【請求項8】
各アプリケーションユニットが、アプリケーションユニットガスアカウントを実行するステップをさらに備える、請求項1から
7までのいずれか1項に記載の方法。
【請求項9】
前記1つ以上のアプリケーションユニットの第1アプリケーションユニットと前記1つ以上のアプリケーションユニットの第2アプリケーションユニットとの間で支払いメッセージを送るステップであって、前記第1アプリケーションユニットの前記アプリケーションユニットガスアカウントまたはユーザーガスアカウントから、前記第2アプリケーションユニットの前記アプリケーションユニットガスアカウントにガス料金を転送するステップをさらに備える、請求項
8に記載の方法。
【請求項10】
イングレスメッセージの受理、クエリの読み込み、前記受理したイングレスメッセージの実行、および/または受理したユニット間メッセージの実行に対して、選択的に課金するステップをさらに備える、請求項1から
9までのいずれか1項に記載の方法。
【請求項11】
前記ローカルユーザーガスアカウントの各々は、
前記イングレスメッセージの受理に対して課金するように構成されたイングレスサブアカウントと、
前記クエリの読み込みに対して課金するように構成された読み取りクエリサブアカウントと、
前記受理したイングレスメッセージの実行、および/または前記受理したユニット間メッセージの実行に対して課金するように構成された実行サブアカウントと、を備える、請求項
10に記載の方法。
【請求項12】
異なる会計期間、および/または、前記イングレスメッセージおよび前記読み取りクエリに対する課金時間を適用するステップであって、
特に、実行のためにそれらを受理するまたは拒否する前記イングレスメッセージに対して課金すること、次にバンドルする方法における前記読み取りクエリに対して課金すること、および/または、あらかじめ、特に前記二次アプリケーションユニットへの前記1つ以上の呼び出しの発行後に、前記イングレスメッセージの実行に対して課金すること、を含むステップをさらに備える、請求項
10または
11に記載の方法。
【請求項13】
前記分散ネットワークが、前記分散ネットワークのストレージリソースの使用に対して課金するステップと、
それぞれのアプリケーションユニットガスアカウントから、前記分散ネットワークの前記ストレージリソースの使用料金を引き落とすステップと、をさらに備える、請求項1から
12までのいずれか1項に記載の方法。
【請求項14】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して固定価格で課金するステップをさらに備える、請求項1から
13までのいずれか1項に記載の方法。
【請求項15】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して前払いの手続きを行うステップと、
1つ以上の前記アプリケーションユニットが、前記前払いの未使用部分を払い戻すステップと、をさらに備える、請求項1から
14までのいずれか1項に記載の方法。
【請求項16】
前記一次アプリケーションユニットおよび/または前記二次アプリケーションユニットのそれぞれのアプリケーションユニットガスアカウントから、前記前払いを上乗せして、対応する前記一次アプリケーションサービスおよび/または前記二次アプリケーションサービスの実行を確実にするステップをさらに備える、請求項
15に記載の方法。
【請求項17】
前記計算ユニットの各々はそれ自身のユニット状態を備え、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットは前記複数のノードのうちの1つ以上を備える方法であって、前記方法は、前記アプリケーションユニットの各々を前記複数のサブネットのうちの1つに割り当てるステップと、前記それぞれのサブネットに亘って前記アプリケーションユニットを複製するステップと、をさらに備える、請求項1から
16までのいずれか1項に記載の方法。
【請求項18】
それぞれのサブネットの各ノードに、別々の読み取りクエリサブアカウントが提供される、請求項
17に記載の方法。
【請求項19】
複数のノードを備える分散ネットワークは、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、前記分散ネットワークは、
前記計算ユニットのリソースを提供して、
前記ネットワークの各ユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行して、
前記ローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うように構成され
、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信して、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行って、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行って、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、分散ネットワーク。
【請求項20】
前記計算ユニットの各々はそれ自身のユニット状態を備え、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットは前記複数のノードのうちの1つ以上を備える分散ネットワークであって、
前記アプリケーションユニットの各々を前記複数のサブネットのうちの1つに割り当てて、前記それぞれのサブネットに亘って前記アプリケーションユニットを複製するように構成される、請求項
19に記載の分散ネットワーク。
【請求項21】
請求項
19または
20に記載の分散ネットワークのノードであって、
前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行し、
前記アプリケーションユニットの1つ以上において、1つ以上のローカルユーザーガスアカウントを実行し、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行
い、
前記ネットワークのユーザーから、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信して、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行って、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行って、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、ノード。
【請求項22】
複数のノードを備える分散ネットワークを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記複数のノードのうちの1つ以上により実行可能であり、前記複数のノードのうちの前記1つ以上に実行させる方法は、
前記複数のノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ネットワークのユーザーが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え
、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、コンピュータプログラム製品。
【請求項23】
分散ネットワークのノードを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記ノードにより実行可能であり、前記ノードに実行させる方法は、
前記ノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ノードが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え
、
を備え
、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、コンピュータプログラム製品。
【手続補正書】
【提出日】2022-10-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
分散ネットワークのリソースの使用に対して課金するためにコンピュータに実装される方法であって、前記分散ネットワークは複数のノードを備え、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、
前記ネットワークのユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、方法。
【請求項2】
前記一次アプリケーションサービスを行うステップは、前記一次アプリケーションユニットが、1つ以上の二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上の二次アプリケーションユニットが、1つ以上の二次アプリケーションサービスを行うステップをさらに備える、請求項1に記載の方法。
【請求項3】
前記1つ以上の二次アプリケーションサービスを行うステップは、前記1つ以上の二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションユニットへの1つ以上の呼び出しを発行するステップを含み、前記方法は、前記1つ以上のさらなる二次アプリケーションユニットが、1つ以上のさらなる二次アプリケーションサービスを行うステップをさらに備える、請求項2に記載の方法。
【請求項4】
前記1つ以上の呼び出しは、連続して行われ、それにより任意の深さの呼び出しツリーが形成される、請求項3に記載の方法。
【請求項5】
前記一次アプリケーションユニットの前記ローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスが、前記リソースの前記使用の対する支払いの手続きを行うステップを、さらに備える、請求項2から4までのいずれか1項に記載の方法。
【請求項6】
前記ネットワークの前記ユーザーが、前記1つ以上の二次アプリケーションユニットにおいて、1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記二次アプリケーションユニットの前記1つ以上のローカルユーザーガスアカウントを介して、前記1つ以上の二次アプリケーションサービスによる前記リソースの前記使用に対する支払いの手続きを行うステップと、をさらに備える、請求項2から
4までのいずれか1項に記載の方法。
【請求項7】
前記ネットワークの1人以上のユーザーが、特に、前記ネットワークの各ユーザーが、前記ユーザーのユーザー通貨アカウントを管理するように構成されるウォレット計算ユニットを実行するステップと、
前記ウォレット計算ユニットからそれぞれのアプリケーションユニットに支払いメッセージを送るステップであって、前記それぞれのアプリケーションユニットにおいて、前記ユーザー通貨アカウントから前記ローカルユーザーガスアカウントに通貨額を転送するステップと、をさらに備える、請求項
1または2に記載の方法。
【請求項8】
各アプリケーションユニットが、アプリケーションユニットガスアカウントを実行するステップをさらに備える、請求項
1または2に記載の方法。
【請求項9】
前記1つ以上のアプリケーションユニットの第1アプリケーションユニットと前記1つ以上のアプリケーションユニットの第2アプリケーションユニットとの間で支払いメッセージを送るステップであって、前記第1アプリケーションユニットの前記アプリケーションユニットガスアカウントまたはユーザーガスアカウントから、前記第2アプリケーションユニットの前記アプリケーションユニットガスアカウントにガス料金を転送するステップをさらに備える、請求項8に記載の方法。
【請求項10】
イングレスメッセージの受理、クエリの読み込み、前記受理したイングレスメッセージの実行、および/または受理したユニット間メッセージの実行に対して、選択的に課金するステップをさらに備える、請求項
1または2に記載の方法。
【請求項11】
前記ローカルユーザーガスアカウントの各々は、
前記イングレスメッセージの受理に対して課金するように構成されたイングレスサブアカウントと、
前記クエリの読み込みに対して課金するように構成された読み取りクエリサブアカウントと、
前記受理したイングレスメッセージの実行、および/または前記受理したユニット間メッセージの実行に対して課金するように構成された実行サブアカウントと、を備える、請求項10に記載の方法。
【請求項12】
異なる会計期間、および/または、前記イングレスメッセージおよび前記読み取りクエリに対する課金時間を適用するステップ
を備える、請求項1
0に記載の方法。
【請求項13】
前記分散ネットワークが、前記分散ネットワークのストレージリソースの使用に対して課金するステップと、
それぞれのアプリケーションユニットガスアカウントから、前記分散ネットワークの前記ストレージリソースの使用料金を引き落とすステップと、をさらに備える、請求項1から
1または2に記載の方法。
【請求項14】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して固定価格で課金するステップをさらに備える、請求項
1または2に記載の方法。
【請求項15】
1つ以上の前記アプリケーションユニットが、対応する前記アプリケーションサービスによる前記リソースの前記使用に対して前払いの手続きを行うステップと、
1つ以上の前記アプリケーションユニットが、前記前払いの未使用部分を払い戻すステップと、をさらに備える、請求項
1または2に記載の方法。
【請求項16】
前記一次アプリケーションユニットおよび/または前記二次アプリケーションユニットのそれぞれのアプリケーションユニットガスアカウントから、前記前払いを上乗せして、対応する前記一次アプリケーションサービスおよび/または前記二次アプリケーションサービスの実行を確実にするステップをさらに備える、請求項15に記載の方法。
【請求項17】
前記計算ユニットの各々はそれ自身のユニット状態を備え、前記分散ネットワークは複数のサブネットを備え、前記複数のサブネットは前記複数のノードのうちの1つ以上を備える方法であって、前記方法は、前記アプリケーションユニットの各々を前記複数のサブネットのうちの1つに割り当てるステップと、前記それぞれのサブネットに亘って前記アプリケーションユニットを複製するステップと、をさらに備える、請求項
1または2に記載の方法。
【請求項18】
それぞれのサブネットの各ノードに、別々の読み取りクエリサブアカウントが提供される、請求項17に記載の方法。
【請求項19】
複数のノードを備える分散ネットワークは、前記複数のノードの各々が1つ以上の計算ユニットを実行するように構成され、前記1つ以上の計算ユニットは前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備え、前記分散ネットワークは、
前記計算ユニットのリソースを提供して、
前記ネットワークの各ユーザーが、前記アプリケーションユニットの1つ以上において1つ以上のローカルユーザーガスアカウントを実行して、
前記ローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行うように構成され、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを送信して、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行って、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行って、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記
使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティング
ユニットである、分散ネットワーク。
【請求項20】
請求項1
9に記載の分散ネットワークのノードであって、
前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行し、
前記アプリケーションユニットの1つ以上において、1つ以上のローカルユーザーガスアカウントを実行し、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対する課金の手続きを行い、
前記ネットワークのユーザーから、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信して、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行って、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行って、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、ノード。
【請求項21】
複数のノードを備える分散ネットワークを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記複数のノードのうちの1つ以上により実行可能であり、前記複数のノードのうちの前記1つ以上に実行させる方法は、
前記複数のノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ネットワークのユーザーが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、コンピュータプログラム製品。
【請求項22】
分散ネットワークのノードを動作させるコンピュータプログラム製品であって、前記コンピュータプログラム製品は、その中にプログラム命令が組み込まれたコンピュータ可読記憶媒体を備え、前記プログラム命令は前記ノードにより実行可能であり、前記ノードに実行させる方法は、
前記ノードが、前記分散ネットワークのユーザーにアプリケーションサービスを提供する1つ以上のアプリケーションユニットを備える1つ以上の計算ユニットを実行するステップと、
前記ノードが、前記アプリケーションユニットのうちの1つ以上において1つ以上のローカルユーザーガスアカウントを実行するステップと、
前記1つ以上のローカルユーザーガスアカウントを介して、前記分散ネットワークの前記リソースの前記使用に対して課金するステップと、
前記ネットワークのユーザーが、前記1つ以上のアプリケーションユニットの一次アプリケーションユニットに一次アプリケーションサービスを要求するイングレスメッセージを受信するステップと、
前記一次アプリケーションユニットが、前記一次アプリケーションサービスを行うステップと、
前記一次アプリケーションユニットにおける前記ユーザーの前記ローカルユーザーガスアカウントを介して、前記一次アプリケーションサービスが、前記リソースの前記使用に対する課金の手続きを行うステップと、を備え、
前記ローカルユーザーガスアカウントは、前記分散ネットワークの前記リソースの前記使用に対してローカルで支払うように構成されたローカルユーザーガスアカウンティングユニットである、コンピュータプログラム製品。
【国際調査報告】