JP2023506115A - 分散ネットワークの計算結果に対する読み出しアクセス - Google Patents

分散ネットワークの計算結果に対する読み出しアクセス Download PDF

Info

Publication number
JP2023506115A
JP2023506115A JP2022522811A JP2022522811A JP2023506115A JP 2023506115 A JP2023506115 A JP 2023506115A JP 2022522811 A JP2022522811 A JP 2022522811A JP 2022522811 A JP2022522811 A JP 2022522811A JP 2023506115 A JP2023506115 A JP 2023506115A
Authority
JP
Japan
Prior art keywords
execution
nodes
distributed network
subset
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022522811A
Other languages
English (en)
Inventor
ドミニク ウィリアムズ,
ヤン カメニッシュ,
ヨハン グランストルム,
マック マッコーリー,
アンドレアス ロスベルク,
マチェイ ヴォス,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dfinity Stiftung
Original Assignee
Dfinity Stiftung
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dfinity Stiftung filed Critical Dfinity Stiftung
Publication of JP2023506115A publication Critical patent/JP2023506115A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の第1の態様の実施形態によれば、複数のノードを含む分散ネットワークが提供される。複数のノードの各々は、計算ユニットであって、それ自身のユニット状態を含む1つ以上の計算ユニットを実行するように構成される。ネットワークは、複数のノードの実行サブセットによって、決定論的な方法で実行メッセージのセットを個別に実行し、それにより実行サブセットの1つ以上の計算ユニットのユニット状態を変化させるように構成される。ネットワークは、実行サブセットのノードによって、実行サブセットの1つ以上の計算ユニットのユニット状態のリードスナップショットを定期的に作成し、そして実行サブセットの1つ以上のノードによって、リードスナップショットへのユーザアクセスを提供するように更に構成される。本発明の更なる態様は、コンピュータ実装された方法、ノード、コンピュータプログラム製品、及びソフトウェアアーキテクチャに関する。【選択図】図1

Description

本発明は、複数のノードを含む分散ネットワークに関する。複数のノードの各々は、1つ以上の計算ユニットを実行するように構成される。
さらなる態様は、分散ネットワークのユーザに、分散ネットワークによって、特に分散ネットワークのノードによって計算された計算結果へのアクセスを提供するための対応する方法に関する。さらなる態様は、分散ネットワークのノード、対応するコンピュータプログラム製品、および非一時的な媒体上に符号化されたソフトウェアアーキテクチャに関する。
分散ネットワークでは、複数のノードが分散した形で配置される。分散ネットワークコンピューティングでは、ソフトウェアおよびデータは複数のノードの全体にわたって分散される。ノードはコンピューティングリソースを確立し、分散ネットワークは分散コンピューティング技術を使用することができる。
分散ネットワークの例として、ブロックチェーンネットワークがある。ブロックチェーンネットワークは、コンセンサスに基づく、ブロックを基本とした電子台帳である。各ブロックはトランザクション(取引記録/取引データ)およびその他の情報を含む。さらに、各ブロックには直前のブロックのハッシュが含まれるため、全てのブロックは共に連鎖し、ブロックチェーンに書き込まれた全てのトランザクションの永続的で不変の記録を作成することができる。トランザクションには、例えばスマートコントラクトなどと呼ばれる小さなプログラムが含まれ得る。
ブロックチェーンにトランザクションを書き込むためには、ネットワークによる「検証」を受ける必要がある。つまり、ブロックチェーンに書き込むブロックについて、ネットワークノードが同意を得る必要がある。このような同意は、様々なコンセンサスプロトコルによって達成され得る。
コンセンサスプロトコルの一種に、プルーフ・オブ・ワークコンセンサスプロトコルがある。プルーフ・オブ・ワークコンセンサスプロトコルは、一般にコンセンサスプロトコルに参加する関係者に何らかの作業を要求し、それは通常コンピュータによる処理時間に相当する。ビットコインのようなプルーフ・オブ・ワークをベースとした暗号通貨システムでは、トランザクションの検証および新しいブロックの生成のために、計算量の多いパズル解き作業に参加する必要がある。
コンセンサスプロトコルの別の種類に、プルーフ・オブ・ステークコンセンサスプロトコルがある。このようなプルーフ・オブ・ステークプロトコルは、時間やエネルギーを消費する計算を必要としないという利点がある。プルーフ・オブ・ステークに基づくブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダムな選択とネットワーク内のそれぞれのノードのステーク(賭け金)との組み合わせによって選ばれる。
暗号通貨以外にも、分散ネットワークは様々な他の用途のために使用され得る。特に、非集中かつ分散型のコンピューティング機能やサービスを提供するために使用され得る。
従って、より高機能な分散ネットワークが求められている。
したがって、本発明の一態様の1つの目的は、機能性を高めた分散ネットワーク、特に、ネットワークのユーザに、分散ネットワークの計算結果にアクセスするための強化されたアクセス機能性またはアクセス機能を提供するネットワークを提供することである。
本発明の第1の態様の一実施形態によれば、複数のノード、特に、複数のコンピューティングノードを含む分散ネットワークが提供される。複数のノードの各々は、1つ以上の計算ユニットを実行するように構成され、そして、計算ユニットの各々は、それ自身のユニット状態を含む。ネットワークは、複数のノードの実行サブセットによって、決定論的(一意的)な方法で実行メッセージのセットを個別に実行し、それによって実行サブセットの1つ以上の計算ユニットのユニット状態を変化させるように更に構成される。ネットワークは、実行サブセットのノードによって、実行サブセットの1つ以上の計算ユニットのユニット状態のリード(読み出し)スナップショットを定期的に作成し、そして、実行サブセットの1つ以上のノードによって、リードスナップショットへのユーザアクセスを提供するように更に構成される。
このような分散ネットワークは、効率的な方法で、分散ネットワークの計算結果へのユーザアクセスを、特にネットワークの1つ以上の計算ユニットによって計算された計算結果へのユーザアクセスを容易にする。より詳しくは、計算結果はリードスナップショットによって提供される。リードスナップショットは、分散ネットワークのユーザが、読み出すことができ、そのためアクセスすることができるスナップショットとして定義することができる。リードスナップショットは、定期的に実行されて、一貫性のある一時点の計算ユニットの状態を記録する。
計算ユニットは、ネットワークのノード上で動作し、かつ、それ自身のユニット状態を持つソフトウェアの一部として定義することができる。より詳しくは、計算ユニットは、直交永続性を備えた決定論的なプログラムとして定義することができる。さらに、ネットワークの各ノードは、1つ以上の計算ユニットを実行するため、1つ以上の計算ユニットのユニット状態を維持する。
実施形態によれば、実行サブセットの計算ユニットのユニット状態は、実行サブセット全体にわたって複製される。これは、特に、実行サブセットの各ノード上の、計算ユニットのユニット状態の空間においてアクティブレプリケーションを実行することによって促進され得る。実施形態によれば、ユニット状態は、特に、入力キュー、出力キュー、システム状態、及びアプリケーション状態またはユーザ状態を含んでもよい。
一実施形態によれば、ネットワークは、実行メッセージのセットの現在のセットから、言い換えると、現在利用可能なセットからの実行メッセージの選択に関するコンセンサスを得るように構成されたコンセンサスプロトコルを、複数のノードのコンセンサスサブセットによって、定期的に実行するように構成される。
それゆえ、実行メッセージの現在のセットの処理および実行は、実施形態によれば2段階のアプローチで実行される。
より詳しくは、最初のステップで、ノードのコンセンサスサブセットは、現在利用可能な実行メッセージの選択に関するコンセンサスを得るためにコンセンサスプロトコルを実行する。コンセンサスサブセットのノードの数は、特に、一方では効率性の面から、そして、他方ではセキュリティの面から、それぞれのネットワークの必要性に応じて選択することができる。そして、2番目のステップで、ノードの実行サブセットは、選択された実行メッセージの実行を決定論的な方法で行う。実行サブセットのノードの数は、また、それぞれのネットワークの必要性に応じて選択することができる。
いくつかの実施形態によれば、コンセンサスサブセットと実行サブセットとは全く重ならなくてもよい。他の実施形態によれば、コンセンサスサブセットと実行サブセットは、部分的に重なってもよい。さらに他の実施形態によれば、コンセンサスサブセットは、実行サブセットのサブセットであってもよく、すなわち、コンセンサスサブセットのノードは、また、実行サブセットのノードでもある。実施形態によれば、実行サブセットのノードは、ネットワークのサブネットを形成することができる。実行サブセットは、また、第1のサブセットとして示されることもあり、そしてコンセンサスサブセットは、また、第2のサブセットとして示されることもある。
一実施形態によれば、ネットワークは、実行サブセットの1つ以上のノードの計算ユニットによりリードスナップショットに対して計算を実行し、その計算の結果をユーザに提供するように構成される。
このような実施形態により、高い機能性を備えたアクセスをユーザに提供することが可能となる。より詳しくは、ユーザはリードスナップショットについて計算を実行するよう要求することができる。これにより、ユーザに提供する前に、結果をソートするなどの操作を実行することができる。
計算ユニットのユニット状態とは逆に、実施形態によれば、リードスナップショットに対する計算が複製されることはない。むしろ、それらは、例えば、ユーザによる対応するリードクエリを受信したときに、実行サブセットの各ノードによって別個に独立して実行され得る。
一実施形態によれば、ネットワークは、実行サブセットの1つ以上のノードによって、特に実行サブセットの1つ以上のノードの計算ユニットによって、ユーザからのリードクエリを受信し、そして、リードクエリに関連した対応する計算ユニットのユニット状態をロードする(読み出す)ように構成される。ユニット状態は、特に、リードスナップショットを格納するそれぞれのノードのメモリからロードされてもよく、そして、それゆえ最新のリードスナップショットのユニット状態に対応することができる。そして、ネットワークは、さらに、リードクエリをそれぞれの計算ユニットで実行するように構成される。これは、特に、リードスナップショットに格納されている計算ユニットのそれぞれのユニット状態についての計算を含むことができる。リードクエリは実行サブセットの各ノードで個別に独立して実行され、対応する計算は実行サブセットのノード間では複製されない。
最終的に、リードクエリの結果は、ユーザに返されてもよい。
このような実施形態では、また、リードクエリを定義し、処理するための機能性を強化することができる。リードクエリを使用して計算ユニットを実行すると、ソート、検索、フィルタリングなどの機能を提供することができる。
リードクエリは、一般に、計算ユニットのユニット状態を永続的に変更しないクエリとして定義することができる。リードクエリは、メモリ、グローバル変数およびテーブルなどの計算ユニットのユーザ状態を一時的に変更することがあるが、リードクエリが完全に処理されると、そのような変更はすべて破棄される。
一実施形態によれば、ネットワークは、リードスナップショットの1つ又は複数の部分を認証するように更に構成される。これにより、リードスナップショットの1つ又は複数の認証された部分を生成する。
このような認証は、スナップショットに対するユーザの信頼と信用を高めることができる。より詳しくは、ユーザは、リードスナップショットの認証された部分を検証することができる。
一実施形態によれば、ネットワークは、実行サブセットのノードの大多数によってリードスナップショットの1つ又は複数の認証された部分を認証するように更に構成される。このような実施形態によれば、リードスナップショットの認証された部分について、ノードの過半数が合意する必要がある。
一実施形態によれば、ネットワークは、ノードの実行サブセットの大多数により、リードスナップショットの1つ又は複数の部分に対する署名を生成することによって、および署名をユーザが利用できるようにすることによって、リードスナップショットの1つ又は複数の部分を認証するように更に構成される。
このような署名により、ユーザはスナップショットの認証された部分を検証することができる。
実施形態によれば、ノードの実行サブセットは、1つ又は複数の認証された部分を認証するために閾値署名アルゴリズムを実行するように構成される。したがって、署名は閾値署名として実施することができる。
別の実施形態によれば、ノードの実行サブセットは、マルチ署名アルゴリズムを実行するように構成することができる。
このようなマルチ署名は、実行サブセットのノードがスナップショットに共同で署名することを可能にする電子署名である。このような共同署名は、通常、実行サブセットの全てのノードの個々の署名を集めたものよりも、よりコンパクトなものとなる。
さらに他の実施形態によれば、ノードの実行サブセットは、実行サブセットのノードによって個々の署名を実行するように構成することができる。
実施形態によれば、リードスナップショットの1つ又は複数の認証された部分は、ユニット状態の変数である。
一実施形態によれば、ネットワークは、実行サブセットのノードによって、ユニット状態のリードスナップショットをキャッシュメモリに記録するように更に構成される。
このようなアプローチは、スピードと効率性の面で有利である。
一実施形態によれば、ネットワークは、実行サブセットのノードによって、実行サブセットの1つ以上の計算ユニットのユニット状態の回復スナップショットを定期的に作成し、そして、実行サブセットのノードの大多数によって、回復スナップショットを認証するように更に構成される。
このような回復スナップショットは、また、フルスナップショット(full snapshot)として示されることもある。回復スナップショットは、ノードの復元に必要な実行サブセットのノードの全ての状態を含むスナップショットとして定義することができる。これには、特に、メッセージングコンポーネントの全データおよび全ての入力ブロックを含むことができる。
一実施形態によれば、ネットワークは、回復スナップショットをハッシュ化するように構成される。このようなハッシュ化は、回復スナップショットを認証し、その検証を可能にする効率的な方法である。
一実施形態によれば、ネットワークは、少なくとも後続の回復スナップショットが作成されるまで、回復スナップショットを永続的に記憶するように構成される。
これにより、ネットワークノードとそれに対応する状態を常に回復することができる。
一実施形態によれば、ネットワークは、第1のレートでリードスナップショットを実行し、第2のレートで回復スナップショットを実行するように構成されており、第1のレートは、第2のレートよりも高い。
このような実施形態は、いくつかの利点を提供する。一方では、これによりネットワークの計算結果にタイムリーにアクセスする、つまり、第1のレートに相当する更新レートでアクセスすることが可能である。他方では、これにより実行サブセットのノードの完全な回復が常に可能であることが更に保証される。
一実施形態によれば、実行メッセージは、実行される全てのメッセージを包含し、特に、ネットワークの計算ユニット間で交換されるユニット間メッセージと、ネットワークのユーザから受信するミューテーション(データの作成、更新、削除)クエリとを包含する。ミューテーションクエリは、また、イングレスメッセージとして示されることもあり、例えば、ある計算タスクを実行するためにネットワークの計算ユニットに宛てられる実行要求であってもよい。
一実施形態によれば、コンセンサスサブセットの各ノードは、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネントを含む。
実施形態によれば、実行サブセットの各ノードは、実行メッセージの選択を実行するように構成された実行コンポーネントおよび、コンセンサスコンポーネントから実行メッセージの選択を受信し、そして、実行メッセージの選択を実行コンポーネントに提供するように構成されたメッセージングコンポーネントを含む。さらに、各ノードは、リードスナップショットを管理および記憶するように構成された状態管理コンポーネント、ネットワークのユーザからのリードクエリを処理するように構成された状態リーダー(読み出し)コンポーネント、及び/又はネットワークのユーザからのミューテーションクエリを処理するように構成されたイングレスメッセージハンドラコンポーネントを含むことができる。
このようなコンポーネントにより、分散ネットワークの様々な機能の効率的な実装を容易にすることができる。
一実施形態によれば、ネットワークは、複数の処理ループを、増加する高さインデックスNとともに順次実行するように構成されており、Nは、増加する整数である。複数の処理ループは、第1のループステップでコンセンサスプロトコルを実行し、第2のループステップで実行メッセージの選択を個々に実行し、そして、第3のループステップでリードスナップショットを作成するように構成される。さらに、ネットワークは、高さインデックスNを伴う処理ループの間、以前の高さインデックス、特に以前の高さインデックスN-1の終わりに作成されたリードスナップショットへのユーザアクセスを提供するように構成される。言い換えると、現在の処理ループの間に、ユーザは前回の処理ループの結果のスナップショットにアクセスすることができる。まだ言い換えると、リードスナップショットは、次の処理ループが同時に実行される際、1つの処理ループまたはループサイクルの間それぞれの計算ユニットの読み出し状態を凍結する。
さらなる実施形態によれば、コンセンサスプロトコルは、実行メッセージの現在のセットから実行メッセージを受信して処理し、予め定義されたコンセンサスメカニズムに従って実行メッセージから入力ブロックのキュー(queue)を生成し、そして、入力ブロックのキューをメッセージングプロトコルに提供するように構成される。メッセージングコンポーネントによって実行されるメッセージングプロトコルは、入力ブロックを処理し、そして、スケジューラによって、実行のために入力ブロックの実行メッセージをスケジュールするように構成される。メッセージングプロトコルは、コンセンサスプロトコルから受信した入力ブロックによって都合よく開始され得る。これにより、入力ブロックの効率的かつ同期的な処理が容易に行えるようになる。さらに、状態管理コンポーネントは、入力ブロックの処理境界でリードスナップショットを作成するように有利に構成され得る。
一実施形態によれば、コンセンサスプロトコルは、入力ブロックに1つ以上の実行パラメータを追加するように更に構成される。実行パラメータは、例えば、ランダムシード、指定された実行時間、および/または高さインデックス(height index)であり得る。
このような実行パラメータは、入力ブロックおよびその対応するメッセージの処理の効率性および/またはセキュリティを、さらに容易にし、かつ向上させることができる。
ランダムシードは、例えば、実行時の擬似的なランダム性を実現するために必要に応じて使用することができる。高さインデックスは、入力ブロックの順序どおりの処理(in-order processing)を容易にするための、例えば、入力ブロックの昇順のインデックスであってもよい。
さらなる実施形態によれば、ネットワークは、予め定義された選挙スキーム(方式)に従って複数のノードから委員会のメンバーを選出し、委員会の選出されたメンバーでコンセンサスプロトコルを実行するように構成されてもよい。このような実施形態によれば、選出されたメンバーは、コンセンサスサブセットを形成する。
実施形態によれば、ネットワークは、コンセンサスプロトコルとして、プルーフ・オブ・ステークコンセンサスプロトコルを実行するように構成される。
プルーフ・オブ・ステークコンセンサスプロトコルは、実行メッセージ(サブネット間メッセージおよびミューテーションクエリ)の選択および処理順序、特に更なる処理のために作成される次の入力ブロックに関してコンセンサスを得ることを目的としている。
さらなる実施形態によれば、分散ネットワークは、複数のサブネットを含む。複数のノードの各々は、複数のサブネットのうちの1つに割り当てられる。複数のノードの各々は、メインネットプロトコルクライアント及びサブネットプロトコルクライアントを実行するように構成される。サブネットプロトコルクライアントは、コンセンサスプロトコルを定期的に実行し、実行メッセージの選択を個々に実行し、リードスナップショットを定期的に作成し、そして、リードスナップショットへのユーザアクセスを提供するように構成される。メインネットプロトコルクライアントは、複数のサブネットに構成データを配布するように構成される。
実施形態によれば、サブネットの各々は、計算ユニットのセット、特に計算ユニットの状態を、サブネットを渡って(越えて)複製するように構成される。その結果、それぞれのサブネットの計算ユニットは、間違いがないように動作する限り、常に同じ状態となる。異なるサブネット、特に異なるサブネットの計算ユニットは、メッセージングプロトコルおよびコンセンサスプロトコルを介してサブネット間メッセージを交換することにより、互いに通信することができる。
いくつかの実施形態によれば、それぞれのサブネットの全てのノードは、コンセンサスプロトコルに参加することができ、そして、それゆえコンセンサスサブセットを形成することができる。他の実施形態によれば、コンセンサスプロトコルは、予め定義された選挙スキームに従ってサブネットの複数のノードから委員会のメンバーを選出し、そして、委員会の選出されたメンバーでコンセンサスプロトコルを実行する、ように構成される。
このようなネットワークは、委員会がサブネットのノードの全てのセットよりも大幅に小さくなる場合があることから、高いトランザクションレートおよび短いファイナライズ(合意到達)時間を達成することができる。このような一実施形態は、特に数百、数千のノードを含む、より大きな規模のサブネットのために有用である。その場合、コンセンサスサブセットを形成する委員会は、一例として20~60ノードのみで構成されることもある。したがって、委員会は、サブネット内の全てのノードが参加する場合よりも、より効率的に行動することができる。このような委員会は、入力ブロックを公証する権限があるため、また、公証委員会と呼ばれる場合がある。
いくつかの実施形態によれば、閾値リレー方式を使用することができる。より詳しくは、本発明の実施形態によるネットワークは、閾値リレー、つまり、分散ランダムビーコン(乱数)を使用することができる。分散ランダムビーコンは、それぞれのサブネットのランダムに選択されたノードの後続公証委員会(subsequent notarization committees)によって維持されるものである。ランダムビーコンの出力は、例えば、ブロック提案者のランク付けや新世代委員会の構成のために、システム内のエントロピー(情報量)として用いられる。
このような閾値リレー方式は、例えば「Timo Hanke, Mahnush Movahedi and Dominic Williams」らによる文書「DFINITY Technology Overview Series, Consensus System, Rev.1, https://dfinity.org/static/dfinity-consensus-0325c35128c72b42df7dd30c22c41208.pdf」に記載されている。
一実施形態によれば、ネットワークは、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネントを更に含む。ネットワーキングプロトコルは、ノード間通信を実行するように構成されたユニキャストコンポーネント、サブネット内通信を実行するように構成されたブロードキャストコンポーネント、および/またはサブネット間通信を実行するように構成されたクロスネットコンポーネントを含んでもよい。
本発明の方法の態様の一実施形態によれば、分散ネットワークのユーザに、分散ネットワークによって計算された計算結果へのアクセスを提供するためのコンピュータ実装された方法が提供される。分散ネットワークは、複数のノードを含む。方法は、複数のノードの各々において1つ以上の計算ユニットを実行するステップと、実行メッセージの現在のセットからの実行メッセージの選択と処理順序とに関するコンセンサスを得るように構成されたコンセンサスプロトコルを、複数のノードのコンセンサスサブセットによって、定期的に実行するステップと、を含む。方法は、複数のノードの実行サブセットによって、実行メッセージの選択を、その処理順序により決定論的な方法で個別に実行する更なるステップを含む。これにより、実行サブセットの1つ以上の計算ユニットのユニット状態が変化する。方法は、実行サブセットのノードによって、実行サブセットの1つ以上の計算ユニットのユニット状態のリードスナップショットを定期的に作成するステップと、実行サブセットの1つ以上のノードによって、リードスナップショットへのユーザアクセスを提供するステップと、を更に含む。
本発明の別の態様の一実施形態によれば、分散ネットワークのノードが提供される。
本発明の別の態様の一実施形態によれば、分散ネットワークを動作させるためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、その中に具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令は、複数のノードの1つまたは複数に、本発明の方法の態様のステップを実行させるために、分散ネットワークの複数のノードの1つまたは複数によって実行可能である。
本発明の別の態様の一実施形態によれば、非一時的なコンピュータ可読媒体上に符号化されたソフトウェアアーキテクチャが提供される。ソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノードを動作させるように構成される。符号化されたソフトウェアアーキテクチャは、複数のノードの1つまたは複数に、本発明の方法の態様のステップを含む方法を実行させるための、複数のノードの1つまたは複数によって実行可能なプログラム命令を含む。
本発明の一態様の特徴および利点は、本発明の他の態様に、適宜、適用することができる。
他の有利な実施形態は、以下の説明と同様に、従属請求項に記載される。
本発明は、明細書の以下の詳細な説明から、よりよく理解され、上記以外の目的も明らかとなるであろう。
説明では、添付の図面を参照する。
本発明の一実施形態に係る分散ネットワークの例示的な図である。 ネットワークの例示的なノード上で動作する計算ユニットをより詳細に示す図である。 複数のサブネットを含む本発明の一実施形態に係る分散ネットワークの例示的な図である。 図3の分散ネットワーク上で動作する計算ユニットをより詳細に示す図である。 図3のネットワークのサブネットで受信されるサブネット間メッセージの模式図である。 サブネットプロトコルクライアントのプロトコルコンポーネントを示す概略ブロック図である。 メッセージングプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフローを例示的に視覚化した図である。 状態管理コンポーネントのより詳細な実施形態を示す図である。 実行サイクルとそれに対応する読み出しサイクルとのタイミング図である。 メッセージングコンポーネントおよび実行コンポーネントによって実行される入力ブロックのブロックごとの処理を簡略化して模式的に示す図である。 分散ネットワークのユーザに計算結果へのアクセスを提供するためのコンピュータ実装された方法の処理ステップを示す図である。 本発明の実施形態に係る方法の更なる処理ステップのフローチャートである。 本発明の一実施形態に係るネットワークの各ノード上で実行される主要なプロセスを示す図である。 サブネット間およびサブネット内のメッセージの交換に関与する主要なレイヤを示すレイヤモデルの図である。 本発明の一実施形態に係る計算ユニットをより詳細に示す図である。 本発明の例示的な実施形態に係るコンセンサスコンポーネントによる入力ブロックの作成を示す図である。 ネットワーキングコンポーネントをより詳細に示す図である。 本発明の一実施形態に係るノードの例示的な実施形態を示す図である。 メッセージを実行するための計算ユニットの各部の連携を示す図である。
最初に、本発明の実施形態のいくつかの一般的な態様および用語について紹介する。
実施形態によれば、分散ネットワークは、分散された形に配置された複数のノードを含む。このような分散ネットワークコンピューティングでは、ソフトウェアおよびデータは複数のノードの全体にわたって分散される。ノードはコンピューティングリソースを確立し、分散ネットワークは特に分散コンピューティング技術を使用することができる。
実施形態によれば、分散ネットワークは、ブロックチェーンネットワークとして実施され得る。「ブロックチェーン」という用語は、電子的、コンピュータを使った、分散型台帳、の全ての形式を含むものである。いくつかの実施形態によれば、ブロックチェーンネットワークは、プルーフ・オブ・ワークブロックチェーンネットワークとして実施され得る。他の実施形態によれば、ブロックチェーンネットワークは、プルーフ・オブ・ステークブロックチェーンネットワークとして実施され得る。
図1は、本発明の一実施形態に係る分散ネットワーク100の例示的なブロック図である。
分散ネットワーク100は、複数のノード10(ネットワークノード10またはコンピューティングノード10と示されることもある)を含む。複数のノード10の各々は、1つ以上の計算ユニットを実行するように構成される。実施形態によれば、計算ユニットは、ソフトウェアの一部、特に、それ自身のユニット状態を含む又はこれを有するソフトウェアの一部として理解されるべきである。
ネットワーク100の複数のノード10は、異なるサブセット及び/又はサブネットに割り当てられてもよい。このような割り当ては、時間の経過とともに変更され得る。
本実施形態によれば、ネットワーク100は、ノード10のコンセンサスサブセットSS1およびノード10の実行サブセットSS2を含む。
ノード100上で動作する計算ユニットは、ネットワーク100のユーザが計算タスクを実行するために使用することができる。ネットワーク100の計算ユニットは、実行メッセージの現在のセットから特定の実行メッセージを実行することができる。実行メッセージは、特にネットワークの計算ユニット間で交換されるユニット間メッセージ及び/又はイングレスメッセージ、すなわち外部ソース(外部の発信元)から、特にネットワークのユーザから受信するメッセージを含んでもよい。ネットワーク100は、最初に、実行メッセージのそれぞれの現在のセットからの実行メッセージの選択および処理順序に関するコンセンサスを得るためにコンセンサスプロトコルが実行されるように構成される。コンセンサスプロトコルは、有利には、ネットワーク100の全ノードによっては実行されず、ネットワーク100のノード10のサブセットのみによって実行される。このサブセットは、以下では、コンセンサスサブセットSS1として示される。コンセンサスサブセットSS1は、コンセンサスサブセットとしてまた示されることもある。コンセンサスサブセットSS1のノードは、そこで、実行メッセージの現在のセットからの実行メッセージの選択および処理順序に関するコンセンサスを得るためにコンセンサスプロトコルを実行するように構成される。
また、実行メッセージの実行は、有利には、ネットワーク100の全ノードによっては実行されず、ネットワーク100のノード10のサブセットによってのみ実行される。このサブセットは、以下では、実行サブセットSS2として示され、そして、実行サブセットSS2としてまた示されることもある。
実行サブセットSS2の計算ユニットは、その後、先のコンセンサスステップで合意された処理順序で、実行メッセージの選択を個々に実行する。実行サブセットSS2の計算ユニットの各々は、決定論的な方法で実行を行い、それによって、実行サブセットSS2の対応する計算ユニットのユニット状態を変化させる。
実施形態によれば、ユニット状態は、計算ユニットによって使用される全てのデータまたは情報、特に計算ユニットが変数に格納するデータとして、だけでなく、計算ユニットが遠隔呼び出しから取得するデータとしても、また、理解されるべきである。ユニット状態は、それぞれのノードのそれぞれのメモリ位置における特定の記憶位置を表すことができる。これらのメモリ位置の内容は、計算ユニットの実行の任意の時点で、実施形態によればユニット状態と呼ばれる。計算ユニットは、特にステートフル計算ユニットとして実施されてもよく、すなわち、計算ユニットは、先行のイベント、又はユーザとのやり取りを記憶するように実施形態に従って設計される。
実施形態によれば、ネットワークの各ノードは、他のノードのクロックとほぼ同期したローカルクロックを保持しているのが当然と考えられる。
図2は、ネットワーク100のノード10上で動作する計算ユニット15をより詳細に示す図である。より詳しくは、図2は、5つの計算ユニット15、より具体的には、計算ユニットCUSS21、CUSS22、CUSS23、CUSS24、及びCUSS25のセットが実行される図1のサブセットSS2のノード10を示している。計算ユニットCUSS21、CUSS22、CUSS23、CUSS24、及びCUSS25のセットは、サブセットSS2の各ノード10上で実行される。さらに、計算ユニットCUSS21、CUSS22、CUSS23、CUSS24、及びCUSS25のセットは、計算ユニットCUSS21、CUSS22、CUSS23、CUSS24、及びCUSS25の各々が間違いがないように動作するならば、同じユニット状態を有するようにサブセットSS2全体にわたって複製される。これは、特に、サブセットSS2の各ノード10上の、計算ユニットCUSS21、CUSS22、CUSS23、CUSS24、及びCUSS25のユニット状態の空間においてアクティブレプリケーションを実行することによって、実施されてもよい。
図3は、本発明の一実施形態に係る分散ネットワーク300の例示的なブロック図である。
分散ネットワーク300は、複数のノード10を含む。
本実施形態によれば、複数のノード10は、複数のサブネット11に亘って分散される。図1の例では、SNA、SNB、SNC、及びSNDと示される4つのサブネット11が設けられる。ネットワーク100は、それぞれのサブネット11内のサブネット内通信のための通信リンク12と、サブネット11の異なるサブネットの間のサブネット間通信のための通信リンク13とを含む。したがって、通信リンク12は、また、サブネット内またはピアツーピア(P2P)通信リンクと示されることもあり、そして、通信リンク13は、また、サブネット間またはサブネットツーサブネット(SN2SN)通信リンクと示されることもある。
複数のサブネット11の各々は、それぞれのサブネット11の各ノード10上で計算ユニットのセットを実行するように構成される。
本発明の実施形態によれば、サブネット11は、サブネット11のそれぞれを渡って(越えて)計算ユニットのセットを複製するように構成される。より詳しくは、サブネット11は、サブネット11のそれぞれを渡って計算ユニットのユニット状態を複製するように構成される。
ネットワーク100は、特に、プルーフ・オブ・ステークブロックチェーンネットワークであってもよい。
プルーフ・オブ・ステーク(PoS)は、ブロックチェーンネットワークにおいて、どのノードがブロックチェーンの次のブロックの作成を認められるかについて分散型コンセンサスを得る方法を説明する。PoS方式では、加重ランダム選択を使用することができ、それにより、個々のノードの重みは、特にそれぞれのノードの資産(「ステーク」)に応じて決定され得る。
実施形態によれば、サブネットによって生成および署名された成果物を完全に信頼できるように、各サブネット内のノードの最大1/3(a third)は間違って動作すると仮定される。
図4は、ネットワーク300のノード10上で動作する計算ユニット15をより詳細に示す図である。より詳しくは、図2には、左側401に、5つの計算ユニット15、より具体的には計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のセットが実行される図1のサブセットSNAのノード10が示されている。計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のセットは、サブネットSNAの各ノード10上で動作する。さらに、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のセットは、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5の各々が同じユニット状態を有するようにサブネットSNA全体にわたって複製される。これは、特に、サブネットSNAの各ノード10上の、計算ユニットCUA1、CUA2、CUA3、CUA4、及びCUA5のユニット状態の空間においてアクティブレプリケーションを実行することによって、実施されてもよい。
さらに、図4には、右側402に、4つの計算ユニット15、より具体的には計算ユニットCUB1、CUB2、CUB3、及びCUB4のセットが実行される図1のサブネットSNBのノード10が示されている。計算ユニットCUB1、CUB2、CUB3、及びCUB4のセットは、サブネットSNBの各ノード10上で動作する。さらに、計算ユニットCUB1、CUB2、CUB3、及びCUB4のセットは、例えば、上述したようにユニット状態の空間においてアクティブレプリケーションを実行することにより、計算ユニットCUB1、CUB2、CUB3、及びCUB4の各々が同じユニット状態を有するようにサブネットSNB全体にわたって複製される。
図3に戻って、ネットワーク300は、サブネットSNA、SNB、SNC、及びSNDの間でメッセージングプロトコルおよびコンセンサスプロトコルを介してサブネット間メッセージ16を交換するように構成される。コンセンサスプロトコルは、それぞれの受信サブネットにおいて、サブネット間メッセージ16の処理順序に関するコンセンサスを得るように構成される。例えばサブネットSNBを参照すると、サブネットSNA、SNC、及びSNDからサブネット間メッセージ16を受信する。コンセンサスプロトコルは、これらのサブネット間メッセージ16を受信して処理し、受信したサブネット間メッセージ16の処理順序に関してコンセンサスを得るために、予め定義されたコンセンサスアルゴリズムまたはコンセンサスメカニズムを実行する。
実施形態によれば、ネットワーク300は、コンセンサスプロトコルを各サブネット上で別個に実行するように構成されてもよい。つまり、SNA、SNB、SNC、及びSNDのサブネットの各々は、別個に、かつ他のサブネットから独立して、それ自身のコンセンサスプロトコルを実行する。したがって、サブネットSNA、SNB、SNC、及びSNDの各々は、どの受信メッセージを処理するか、そして、どの順番で処理するかを、それ自身で、かつ他のサブネットから独立して決定することができる。よって、サブネットSNA、SNB、SNC、及びSNDの各々は、受信したサブネット間メッセージ16の処理順序に関してサブネット単位でコンセンサスを得る。このようなコンセンサスは、また、ローカルコンセンサスまたはサブネットコンセンサスとみなされることもある。
この概念を、図5を参照してより詳しく説明する。
図5は、図3のサブネット11のSNBで受信されるサブネット間メッセージ16の模式図である。
サブネットSNBは、サブネットSNAからサブネット間メッセージSNA-SNBを、サブネットSNCからサブネット間メッセージSNC-SNBを、および、サブネットSNDからサブネット間メッセージSND-SNBを受信する。これらのサブネット間メッセージのプールは、サブネットSNB上でローカルにコンセンサスプロトコルを実行するコンセンサスコンポーネント(CSNB)30によって処理される。したがって、コンセンサスコンポーネント30は、サブネットコンセンサスコンポーネントと示されることがある。
コンセンサスコンポーネント30は、予め定義されたコンセンサスアルゴリズムまたはメカニズムに従ってサブネット間メッセージから入力ブロックIBのキューを生成し、入力ブロックIBのキューを、メッセージングプロトコルを実行し、入力ブロックIBをさらに処理するように構成されるメッセージングコンポーネント(MSNB)31に提供する。
実施形態によれば、それぞれのサブネット11のノード10の各々は、コンセンサスプロトコルに参加することができる。このような実施形態によれば、サブネット11の各々は、例えば10~100ノード、特に20~50ノードを含むことができる。そのような数は、セキュリティと効率性との間の有利な妥協点を提供し得る。
他の実施形態によれば、コンセンサスプロトコルは、予め定義された選挙スキームに従ってそれぞれのサブネット11の複数のノード10から委員会のメンバーを選出するように、そして、委員会の選出されたメンバーとのみコンセンサスプロトコルを実行するように、構成されてもよい。このようなアプローチは、ノードの数のより多いサブネット、例えば1000以上のノードを持つサブネットのために特に有効である。
図6は、サブネットプロトコルクライアント、例えば図13に示したサブネットプロトコルクライアント42のプロトコルコンポーネント600を示す概略ブロック図である。
図6中の実線の矢印は、ユニット間メッセージおよびイングレスメッセージを含む実行メッセージに関連するものである。イングレスメッセージは、特にユーザからのミューテーションクエリであってもよい。破線の矢印は、システム情報に関連するものである。
プロトコルコンポーネント600は、メッセージングプロトコルを実行するように構成されたメッセージングコンポーネント61と、実行メッセージを実行するための、特にユニット間メッセージ及び/又はミューテーションクエリを実行するための実行プロトコルを実行するように構成された実行コンポーネント62と、を含む。プロトコルコンポーネント600は、さらに、コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネント63と、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント64と、状態管理プロトコルを実行するように構成された状態管理コンポーネント65と、クロスサブネット転送プロトコルを実行するように構成されたXネットコンポーネント66と、ネットワークの外部ユーザから受信したイングレスメッセージを処理するように構成されたイングレスメッセージハンドラコンポーネント67と、を含む。プロトコルコンポーネント600は、さらに、暗号コンポーネント68を含む。暗号コンポーネント68は、例えば、図13を参照して後に説明するようなセキュリティアプリケーション43として実施され得るセキュリティコンポーネント611と協働する。プロトコルコンポーネント600は、リードクエリ、言い換えれば読み出し要求をユーザから受信するように構成された状態リーダーコンポーネント69を更に含む。
状態リーダーコンポーネント69は、状態管理コンポーネント65と協働するように構成される。
状態リーダーコンポーネント69によって受信されて処理されるリードクエリは、特に、非ミューテーションクエリとして実施され、すなわち、それらは、計算ユニットのユニット状態を永続的に変更しない。一方、イングレスメッセージハンドラコンポーネント67から受信され、コンセンサスコンポーネント63を通過するイングレスメッセージは、特に、ミューテーションクエリとして実施されてもよく、すなわち、それらは、ミューテーションクエリを実行しているそれぞれの計算ユニットのユニット状態を変更する。リードクエリは、コンセンサスコンポーネント63を通過する必要がないため、それらは、それぞれのサブネットの任意のノード上で非同期に実行することができ、それゆえ、より高速に実行することができる。
さらに、サブネットプロトコルクライアント42は、図13を参照して説明したようなメインネットプロトコルクライアント41の一部であり得るリーダーコンポーネント610と協働し得る。リーダーコンポーネント610は、メインネットによって格納および配布される情報を、それぞれのサブネットプロトコルクライアント42に提供することができる。これには、サブネットへのノードの割り当て、ノードの公開鍵、サブネットへの計算ユニットの割り当てなどが含まれる。
メッセージングコンポーネント61および実行コンポーネント62は、これらのコンポーネントにおける全ての計算、データおよび状態が、それぞれのサブネットの全てのノード、より詳しくはそれぞれのサブネットの全ての信頼できるノード全体にわたって同一に複製されるように構成される。これは、これらのコンポーネントのウェーブパターンバックグラウンド(wave-pattern background)によって示される。
このような同一の複製は、実施形態に従って達成され、一方では、メッセージングコンポーネント61への入力のストリームが、それぞれのサブネットによって合意されること、そして、そのように、全てのノード、より詳しくは全ての信頼できるノードについて同一であること、を保証するコンセンサスコンポーネント63の働きによって達成される。他方では、これは、メッセージングコンポーネント61および実行コンポーネント62が、決定論的かつ複製された計算を実行するように構成されることによって達成される。
Xネット転送コンポーネント66は、他のサブネットにメッセージストリームを送信し、他のサブネットからメッセージストリームを受信する。
ほとんどのコンポーネントは、暗号化アルゴリズムを実行するために暗号コンポーネント68にアクセスし、構成情報を読み取るためにメインネットリーダー610にアクセスすることになる。
実行コンポーネント62は、メッセージングコンポーネント61から計算ユニットのユニット状態および計算ユニットのための着信メッセージを受信し、発信メッセージおよび計算ユニットの更新されたユニット状態を返信する。また、実行中に、処理したメッセージ(クエリ)のガス(gas)または燃料(fuel)の消費量を計測することもある。
メッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロックによって開始される。すなわち、各入力ブロックに対して、メッセージングコンポーネント61は、以下のようなステップを実行する。それぞれの入力ブロックを解析し、計算ユニットへのメッセージを取得する。さらに、異なる計算ユニットのそれぞれの入力キューにメッセージをルーティングし、そして、スケジューラによって、各計算ユニットに割り当てられた容量に応じて実行されるようにメッセージをスケジューリングする。そして、実行コンポーネント62を使用して、対応する計算ユニットによってメッセージを処理し、その結果、送信すべきメッセージがそれぞれの計算ユニットの出力キューに追加される。ただし、同一サブネット上の計算ユニット宛のメッセージの場合は、対応する計算ユニットの入力キューに直接入れることができる。メッセージングコンポーネント61は、最終的に、計算ユニットの出力キューのメッセージを、受信計算ユニットが配置されているサブネットのためのメッセージストリームにルーティングし、そして、これらのメッセージストリームを状態管理コンポーネント65に転送して認証されるように、すなわち、それぞれのサブネットによって署名されるようにする。
状態管理コンポーネント65は、認証コンポーネント65aを含む。認証コンポーネント65aは、それぞれのサブネットの出力ストリームを認証するように構成される。これは、例えば、それぞれのサブネットの計算ユニットのグループ署名によって実行されてもよい。
認証コンポーネント65aは、以下により詳しく説明するように、ユニット状態の特定の変数、特にユニット状態のスナップショットの特定の変数を認証するように更に構成されてもよい。
図7は、メッセージングプロトコル、コンセンサスプロトコル、および関連するコンポーネントのワークフロー、例えば図6のメッセージングコンポーネント61およびコンセンサスコンポーネント63のワークフロー700を例示的に視覚化した図である。より詳しくは、図7は、サブネットSNBと、サブネットSNAおよびSNCとの間で交換されるサブネット間メッセージのワークフローを視覚化したものである。さらに、サブネットSNBは、複数のユーザUとイングレスメッセージを交換する。
図7の右下側から順に、複数の入力ストリーム701、702、及び703がコンセンサスコンポーネント63によって受信される。コンセンサスコンポーネント63は、サブネットSNBのサブネットクライアントによって実行されるサブネットコンセンサスコンポーネントである。入力ストリーム701は、サブネットSNAからサブネットSNBへのサブネット間メッセージ711を含む。入力ストリーム702は、サブネットSNCからサブネットSNBへのサブネット間メッセージ712を含む。入力ストリーム703は、複数のユーザUからサブネットSNBへのイングレスメッセージ713を含む。
サブネット間メッセージ711、及び712は、シグナリングメッセージと同様に、異なるサブネットの計算ユニット間で交換されるユニット間メッセージを含む。シグナリングメッセージは、ユニット間メッセージの受信についての肯定応答または否定応答のために使用される。メッセージングコンポーネント61は、受信サブネットから対応する送信サブネットに、すなわちこの例ではサブネットSNBからサブネットSNAおよびSNCに、シグナリングメッセージを送信するように構成される。メッセージングコンポーネント61は、本実施例によれば、それぞれのユニット間メッセージに対する確認メッセージを受信するまで、送信されたユニット間メッセージを保存するように構成される。これにより、受け渡しを保証することができる。
コンセンサスコンポーネント63は、サブネットSNA、SNCのサブネット間メッセージ711、712及びユーザUのイングレスメッセージ713を受信して処理するように、そして、対応するコンセンサスプロトコルによって実行される予め定義されたコンセンサスメカニズムに従ってサブネット間メッセージ711、712、及びイングレスメッセージ713から入力ブロック720のキューを生成するように、構成される。コンセンサスによって生成された各入力ブロック720は、イングレスメッセージ713のセット、サブネット間メッセージ711、712のセット、および実行パラメータ714,EPを含む。実行パラメータ714,EPは、特に、ランダムシード、指定された実行時間および/または高さインデックスを含んでもよい。また、コンセンサスコンポーネント63は、サブネットの現在の負荷に基づいて入力ブロック毎にメッセージ数を変化させてもよい。
コンセンサスコンポーネント63は、入力ブロック720のキューを、次に、メッセージングコンポーネント61に提供する。メッセージングコンポーネント61は、メッセージングプロトコルを実行し、入力ブロック720を処理するように構成される。
メッセージングプロトコルおよびメッセージングコンポーネント61は、コンセンサスコンポーネント63から受信した入力ブロック720によって開始される。
受信した入力ブロックを処理する前に、メッセージングコンポーネント61は、1つ又は複数の入力チェックを含む1つ又は複数の前処理ステップを実行することができる。入力チェックは、入力チェックコンポーネント740によって実行されてもよい。
入力チェックは、実施形態に応じて異なる粒度で実行されてもよい。まず、入力ブロック全体に対して入力チェックが実行されてもよい。このようなチェック(検査)は、また、入力ブロックチェックと示されることもある。これらは、次の入力ブロックの高さのチェックを含んでもよい。もし、次の入力ブロックの高さが、期待される次の順番のものよりも低い場合、その入力ブロックは破棄される。入力ブロックが期待される次の順番のものでない場合、メッセージングコンポーネント61は、ノードキャッチアッププロトコルを起動することができる。入力ブロックが次の順番のものである場合、その入力ブロックは、メッセージングコンポーネント61によって更に処理される。
入力ブロック中の異なる種類のメッセージ(シグナリングメッセージ、イングレスメッセージ、ユニット間メッセージ)は、一緒にグループ化されてもよい。
入力チェックは、メッセージングコンポーネントが現在過負荷であって処理を実行するのに十分な処理能力を持っていないかどうかをチェックするための過負荷チェックを更に含んでもよい。例えば誘導プール内の関連するキューが満杯の場合、対応するメッセージは拒否され得る。さらに、入力チェックは、順序配信チェックを含んでもよい。順序配信の要件を満たすために、メッセージに例えばシーケンス番号などの注釈を付けることができる。シーケンス番号を持つメッセージを受信した場合、メッセージングコンポーネント61は、それが期待される番号を持つかどうかをチェックすることができ、そして、持っていない場合、それを拒否することができる。さらに、入力チェックコンポーネント740は、対象宛先の有効性チェック、すなわち、メッセージが、対応するサブネット上でアクティブである計算ユニットを対象としているかどうかのチェックを行うことができる。
入力チェックを正常に通過した場合、それぞれの入力ブロック720のメッセージは、メッセージングコンポーネント61によって更に処理されてもよく、そして、対応するメッセージは、誘導プールコンポーネント731の誘導プールの対応するキューに加えられてもよい。メッセージングコンポーネント61の誘導プールコンポーネント731は、入力チェックコンポーネント740を正常に通過し、かつ、それに応じて更なる処理のためにメッセージングコンポーネント61によって受け入れられた入力ブロックおよび入力メッセージを受信する。
一般に、メッセージングコンポーネント61は、イングレスメッセージ、シグナリングメッセージおよびサブネット間メッセージを適宜誘導プールコンポーネント731に入れることによって、入力ブロック720を前処理する。サブネットストリーム中のシグナリングメッセージは、パージ(消去)可能な出力キューのメッセージの確認として扱われる。
本実施例では、誘導プールコンポーネント731は、サブネット-ユニット間キューSNA-B1、SNC-B1、SNA-B2、及びSNC-B2、並びにユーザ-ユニット間キューU-B1、及びU-B2を含む。
これらの前処理ステップに続いて、メッセージングコンポーネント61は、1実行サイクルの間に可能な限り多くの誘導プールを実行するために実行コンポーネント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へのメッセージを示す。
出力キューコンポーネント733は、例えば図6に示した認証コンポーネント65aによって認証され、他のコンポーネントによって伝播されるサブネットごとの出力ストリームのセットを形成することによって、結果のメッセージの出力キューを後処理する。本実施例では、サブネットごとの出力ストリームSNB-SNA、SNB-SNC、及びSNB-Uが提供される。
メッセージングコンポーネント61は、それぞれのサブネットの計算ユニットの状態/ユニット状態、本実施例ではサブネットSNBの計算ユニットB1及びB2の状態を記憶するように構成される状態記憶コンポーネント732を更に含む。対応するユニット状態は、各計算ユニットのワーキングメモリである。
メッセージングコンポーネント61では、システム状態の特定の部分を決定論的に変化させることが重要となる。各ラウンドにおいて、実行コンポーネント61は、それぞれの計算ユニットの状態を読み出して更新することにより誘導プールから特定のメッセージを実行し、そして、実行された計算ユニットの送信したい送信メッセージを返す。これらのメッセージは、当初、ネットワークの計算ユニット間のユニット間メッセージを含む出力キューコンポーネント733に入る。同じサブネットの計算ユニット間のサブネット内メッセージは、それぞれのサブネット内部でルーティングされて分配される一方、サブネット間メッセージは、サブネット-宛先によってソートされた出力ストリームにルーティングされる。
さらに、どのメッセージが処理されたかをシステムの残りの部分に知らせるために、実施形態に従って2つの状態が維持され得る。第1の状態は、サブネット間メッセージのために、そして、第2の状態は、イングレスメッセージのために維持され得る。
図8は、状態管理コンポーネント800、例えば、図6の状態管理コンポーネント65のより詳細な実施形態を示す図である。
状態管理コンポーネント800は、ストレージコンポーネント810、認証コンポーネント820、および同期コンポーネント830を含む。ストレージコンポーネント810は、リーダーデータ811、すなわち、リードクエリのために利用可能であり、状態リーダーコンポーネント69がアクセスすることができるデータを記憶するように構成される。
リーダーデータ811は、特に、状態リーダーコンポーネント69を介してユーザが送信したリードクエリのためのデータを含むリードスナップショットを含む。リードスナップショットは、それぞれのノードの計算ユニットの最新のユニット状態と、認証コンポーネント820によって認証されたユニット状態の1つ又は複数の認証された変数とを含む。認証コンポーネント820は、図6の認証コンポーネント65aに対応するものであってもよい。
より詳しくは、認証コンポーネント820は、1つ又は複数の部分、言い換えればユニット状態のサブセット、特に変数を認証するように構成される。認証は、特にメッセージングコンポーネント61によって、名目上ブロック処理境界で起動され得る。ユニット状態の1つ又は複数の部分のみ、特に、ユニット状態全体ではなく、1つ又は複数の認証された変数のみを認証することで、ノードの効率性および速度が向上する。これらの認証された部分または認証された変数については、単一のノードのみからそれらを読み出せば十分であるが、ユーザは、スナップショットの認証されていない部分の正当性に対する信頼性を高めるために、実行サブセットの更なるノードに追加のリードクエリを提供することができる。さらに、ユーザは、自分が興味のある計算ユニットの状態を保持している真正なノードと通信したかどうかを確認することができる。
実施形態によれば、認証コンポーネント820は、1つ又は複数の認証された部分を認証するために閾値署名アルゴリズムを実行するように構成される。別の実施形態によれば、認証コンポーネント820は、マルチ署名アルゴリズムを実行するように構成することができる。さらに他の実施形態によれば、認証コンポーネント820は、実行サブセットのノードによって個々の署名を実行するように構成することができる。
ストレージコンポーネント810は、さらなるデータ、特に回復スナップショット812を記憶するように更に構成される。このような回復スナップショット812は、また、フルスナップショットとして示されることもある。実施形態によれば、回復スナップショットは、サブネットまたは実行サブセットのノードを復元するために必要なそれぞれのサブネットまたは実行サブセットのノードの全ての状態を含む。回復スナップショットは、特に、全てのユニット状態を含む、メッセージングコンポーネント61の全てのデータを含む。回復スナップショットは、コンセンサスコンポーネント63によって提供された全ての入力ブロックを更に含む。入力ブロックを含む回復スナップショットが与えられると、メッセージングコンポーネント61は、全ての入力ブロックをその高さまで再生することにより、サブネットの任意のブロックの高さに対してその状態を回復することができる。他のノードがこれを行うことを可能にするために、回復スナップショットは、実施形態に従って、実行サブセットまたはサブネットによって認証される。実施形態によれば、入力ブロックは、コンセンサスコンポーネント63によって既に認証されているため、回復スナップショットの入力ブロックの追加の認証は省略され得る。実施形態によれば、回復スナップショットは、ハッシュ化されてもよい。一実施形態によれば、ストレージコンポーネント810は、少なくとも後続の回復スナップショットが作成されるまで、回復スナップショットを永続的に記憶する。
図9は、図6のメッセージングコンポーネント61および実行コンポーネント62によって実行される実行サイクルと、ならびに状態管理コンポーネント65および状態リーダーコンポーネント69によって実行される対応する読み出しサイクルとのタイミング図である。x軸は時間tを示す。
図7を参照して説明したように、メッセージングコンポーネントは、コンセンサスコンポーネントによって生成される入力ブロックIBによって開始される。入力ブロックは、コンセンサスコンポーネントによって、実行の高さ、或いは高さインデックスとして示される連続した順番で番号付けされ、そして、その順序でメッセージングコンポーネントによって処理される。時点tN-2、tN-1、及びtNは、それぞれ実行の高さN-2、N-1、及びNを持つそれぞれのブロックの処理の開始を示す。
メッセージングコンポーネント61において新しい入力ブロックが処理される前に毎回、メッセージングコンポーネント61は、状態管理800のストレージサブコンポーネント810に計算ユニットの最新のユニット状態のスナップショットSSを送信する。このスナップショットSSは、その後、現在の入力ブロックの処理および実行中に、例えばストレージサブコンポーネント810のキャッシュメモリに記憶され、そして、状態リーダーコンポーネント69を介してスナップショットの情報へのユーザアクセスを提供するために使用することが可能である。したがって、このような実施形態によれば、現在処理されている入力ブロックと、最新のスナップショットSSの現在利用可能なスナップショット情報との間に、常に高さインデックス1つぶんの遅延が存在することになる。一例として、高さインデックスNを持つ入力ブロックの処理および実行の間、利用可能なスナップショットSSN-1は、高さインデックスN-1を持つ入力ブロックの処理の終了時においてスナップショット情報へのアクセスを提供する。従って、読み出す高さは、現在の実行の高さから1ブロックまたは高さインデックス1つぶん遅れることになる。
入力ブロックの処理および実行の間、スナップショットは凍結されていると考えることができる。すなわち、記憶されたスナップショット情報は、入力ブロックの実行中に変更されない。
このようなアプローチは、計算ユニットの最新の計算結果に対するユーザのアクセスを提供するためのエレガントで効率的な方法を提供する。より詳しくは、ユーザは、状態リーダーコンポーネント69を介して、低遅延(low latency)でリードクエリを実行することができる。さらに、このようなアプローチにより、少なくとも部分的に認証されたそれぞれの計算ユニットの計算結果に対するユーザアクセスを提供することが可能である。
実施形態によれば、状態リーダーコンポーネント800は、最新のスナップショットのスナップショットデータに対する何らかの処理を、また、実行または起動することもできる。より詳しくは、リードクエリは、また、計算ユニットによるリードスナップショットのデータに対する又はデータを用いた計算の実行、を含むこともある。
リードクエリは一般に、実施形態によるシステム状態に影響を与えることはできないが、それにもかかわらず、実施形態による計算ユニットのユーザ状態、例えば、計算ユニットのメモリおよびテーブルを一時的に変更することができる。しかし、このような変更は、リードクエリが完全に処理された時点ですべて破棄される。このようなスナップショットデータの処理は、ユーザに(その)結果を返す前に、例えば結果のソートやフィルタリングなどの操作を実施するために使用することができる。
図10は、メッセージングコンポーネント61および実行コンポーネント62によって実行される入力ブロックのブロックごとの処理を簡略化して模式的に示す図である。上で説明したように、いくつかの実行メッセージを一緒にグループ化して1つのブロックとするが、実行メッセージは、ブロック内では論理的な順序を保つ。実行メッセージの例としては、以下のように、また、ミューテーションとして示されることもある。
- ユーザUは、引数Xとともに計算ユニットB上でのメソッドMの実行を要求する。
- 開発者Vは、初期状態Sを持つ計算ユニットDのインストールを要求する。
- 開発者Vは、状態遷移関数S → S’とともに計算ユニットDの計算ユニットD’へのアップグレードを要求する。
- 開発者Vは、計算ユニットDの削除を要求する。
実行メッセージは順序どおりに処理されるが、リードクエリは順序どおりに処理する必要がなく、複数のリードクエリを並列に処理することができる。
この例によれば、基盤となる分散ネットワークのノード、特にそれぞれのサブネットのノードの実行サブセットは、3つのノードNode1、Node2、及びNode3を含むと想定されている。3つのノードの各々は、3つの計算ユニットCUA、CUB、及びCUCのレプリカ(複製)を動作させる。ブロックNの実行を開始する前に、ブロックN-1の実行の最新のユニット状態のスナップショットがリードスナップショットとして記憶される。現在のブロックNの処理および実行の間、状態管理コンポーネント800のストレージコンポーネント810によって記憶された利用可能なスナップショットは、高さ、或いは高さインデックスN-1以下を持つスナップショットを含む。したがって、状態リーダーは、高さインデックスK < Nのスナップショットを読み出すことができる。いくつかの実施形態によれば、複数の高さ、或いは高さインデックスのスナップショットが記憶され得るが、他の実施形態によれば、最新の高さインデックスN-1のスナップショットのみ、すなわち、現在処理中の入力ブロックの高さインデックスの直前の高さインデックスのスナップショットのみが格納される。
図11は、分散ネットワークのユーザに計算結果へのアクセスを提供するためのコンピュータ実装された方法の処理ステップを示す図である。計算結果は、分散ネットワークによって、より詳しくは分散ネットワーク上で動作する1つ以上の計算ユニットによって計算されたものである。
ステップ1110において、複数のノードの各ノードは、決定論的かつ複製された方法で1つ以上の計算ユニットを実行する。1つ以上の計算ユニットの各々は、それ自身のユニット状態を含む。
ステップ1110は、繰り返し実行される一般的なステップとしてみなすことができる。
ステップ1120から1160は、実行メッセージの処理と実行を示すものであり、連続してループで繰り返されてもよい。
ステップ1120において、ネットワークまたはネットワークのノードは、実行すべき実行メッセージのセットを受信する。
ステップ1130において、複数のノードのコンセンサスサブセットは、コンセンサスプロトコルを実行する。コンセンサスプロトコルは、実行メッセージの現在のセットからの実行メッセージの選択および処理順序に関するコンセンサスを得るように構成される。実行メッセージの現在のセットには、上で説明したようなイングレスメッセージだけでなく、ユニット間メッセージも包含され得る。コンセンサスプロトコルにより、複数のノードのコンセンサスサブセットは、実行メッセージの選択および処理順序に関して合意する。
ステップ1140において、ノードの実行サブセットは、合意された処理順序で、選択された実行メッセージを決定論的な方法で個々に実行する。これにより、実行に関与する1つ以上の計算ユニットのユニット状態が変化する。
ステップ1150において、実行サブセットのノードは、実行サブセットの1つ以上の計算ユニットの最新のユニット状態のリードスナップショットを作成する。最新のリードスナップショットは、実行メッセージの計算結果を含む。リードスナップショットの作成は、ノードの実行サブセットによるリードスナップショットの1つ又は複数の部分の認証を追加的に包含してもよい。認証は、特に、実行サブセットのノードによる閾値署名アルゴリズムの実行によって実行されてもよい。
ステップ1160において、実行サブセットの1つ以上のノードは、実行サブセットの1つ以上の計算ユニットのユニット状態のリードスナップショットへのユーザアクセスおよび、それに伴う、対応する計算ユニットの最新の計算結果へのユーザアクセスを1人以上のユーザに提供する。
図12は、本発明のさらなる実施形態に係る方法の処理ステップのフローチャートである。
方法は、複数の処理ループ1210を、増加する高さインデックスNとともに順次実行する。Nは増加する整数、すなわち、例えば0、1、2、3・・・Nである。処理ループ1210は、第1ループステップ1211、第2ループステップ1212、及び第3ループステップ1213を包含する。
第1ループステップ1211において、ネットワークのノードのコンセンサスサブセットは、実行メッセージの現在のセットの選択および処理順序に関するコンセンサスを得るために、コンセンサスプロトコルを実行する。
第2ループステップ1212において、実行サブセットの、例えばサブネットのノードの計算ユニットは、実行メッセージの選択を決定論的な方法で個々に実行する。
第3ループステップ1213において、実行サブセットのノードは、リードスナップショットを作成し、そして、例えば、それぞれのノードのキャッシュメモリにそれを記憶する。さらに、実行サブセットのノードは、リードスナップショットの1つ又は複数の部分を認証してもよい。
その後、方法は、後続の処理ループ1210を継続し、その間に後続の高さインデックスを持つ別の入力ブロックが処理される。この後続の処理ループの間、最新のリードスナップショットは、読み出しステップ1220のために利用することが可能である。より詳しくは、高さインデックスNを伴う処理ループの間、実行サブセットの1つ以上のノードは、前回の高さインデックスN-1を伴うループの終わりに作成されたリードスナップショットへのユーザアクセスを提供してもよい。読み出しステップ1220は、1つ又は複数の認証された部分、例えば認証された変数のユーザによる検証を含んでもよい。
リードスナップショットは、毎回の処理ループ1210の最後に、特に後続の入力ブロックの処理のあいだのブロック境界で、そしてそのため第1のレートで、規則的に実行される。第1のレートは、特に入力ブロックによって決定されて起動されてもよいことに留意すべきである。実施形態によれば、第1のレートは、時間間隔が一定である必要はなく、時間間隔が時間的に変化してもよい。
各処理ループの後、ステップ1230において、それぞれのノードは、カウンタを起動し、そして、カウンタが終了しているかどうかをチェックする。カウンタは、様々な方法で実施することができる。これは、特に、予め定められた回数の処理ループ1210の後、例えば100回の処理ループ1210の後に終了するようにプログラムされてもよい。
カウンタが終了した場合、例えば100回目の処理ループ毎に、対応するノードは、ステップ1240において、フルスナップショットとしてもまた示され得る回復スナップショットを実行する。このような回復スナップショットは、例えばノード障害またはシステム障害の場合に、ノードを回復するために必要な全てのデータを含む。次に、ステップ1250において、カウンタはリセットされる。
システムまたはノードの障害の場合には、回復ステップ1260において、ノードを回復するために回復スナップショットを使用することができる。
回復スナップショットは、第2のレートで実行される。説明したように、回復スナップショットは、x回目、例えば100回目の処理ループ毎にのみ実行される。したがって、第1のレートは、第2のレートよりも高い。
図13は、本発明の一実施形態に係るネットワーク100、300の各ノード10上で実行される主要なプロセスを示す図である。本発明の実施形態によるネットワークのネットワーククライアントは、ノード10がネットワークに参加するために必要なプロトコルコンポーネントのセットである。実施形態によれば、各ノード10は、メインネットおよび多くとも1つのサブネットのメンバーであり、これは、各ノードが、メインネットのためのクライアントおよび場合によってはサブネットのためのクライアントを実行することを意味する。
ノードマネージャ40は、メインネットプロトコルクライアント41、サブネットプロトコルクライアント42、およびセキュリティアプリケーション43を、起動、再起動、およびアップデートするように構成される。
実施形態によれば、複数のサブネット11の各々は、別個のサブネットプロトコルクライアント42を、その対応するノード10上で実行するように構成される。メインネットプロトコルクライアント41は、特に、構成データを複数のサブネット11との間で配布するように構成される。メインネットプロトコルクライアント41は、特に、システム計算ユニットのみを実行し、ユーザが提供する計算ユニットは全て実行しないように構成されてもよい。メインネットプロトコルクライアント41は、メインネットのローカルクライアントであり、そして、サブネットプロトコルクライアント42は、サブネットのローカルクライアントである。
セキュリティアプリケーション43は、ノード10の秘密鍵を記憶し、それを用いて全ての動作を実行する。
セキュリティアプリケーション43は、ノードが保持した秘密鍵を保護するように構成される。より詳しくは、秘密鍵は、別個の実行環境(別個のプロセスまたは別個の仮想マシン(VM))で保持され、処理される。セキュリティアプリケーション43は、インターフェースを介して秘密鍵を抽出できないように、限定および制御されたインターフェースで動作するように構成される。実施形態によれば、セキュリティアプリケーションは、ハードウェアセキュリティモジュール(HSM)のように、又はHSMと同様に動作するように構成される。したがって、セキュリティアプリケーション43は、ソフトウェアHSMとして示されることがある。
図14は、サブネット間およびサブネット内のメッセージの交換に関与する主要なレイヤ(層)を示すレイヤモデル1400の図である。レイヤモデル1400は、サブネット間通信のための上位層として機能するように構成されたメッセージング層51を含む。より詳しくは、メッセージング層51は、異なるサブネットの計算ユニット間でサブネット間メッセージをルーティングするように構成される。さらに、メッセージング層51は、ネットワークのユーザからのイングレスメッセージをネットワークの計算ユニットにルーティングするように構成される。
レイヤモデル1400は、イングレスメッセージと同様に異なるサブネットからサブネット間メッセージを受信するように構成され、そして、特に処理順序に関して合意することにより、次にそれぞれのサブネットによってさらに処理される入力ブロックのシーケンスにそれらを組み入れるように構成される複数のコンセンサス層52を更に含む。さらに、レイヤモデル1400は、単一のサブネットのノード間の通信を構成および駆動するように構成されたピアツーピア(P2P)層53を含む。
実施形態によれば、ネットワークは、複数のさらなる層、特に、ネットワークの計算ユニット上で実行メッセージを実行するように構成される実行層を含んでもよい。
以下では、メインネットプロトコルクライアント41とサブネットプロトコルクライアント42との間のやり取りについて、より詳しく説明する(図13を参照)。メインネットプロトコルクライアント41は、サブネットのための構成情報を含んだ多数のレジストリを管理する。これらのレジストリはメインネット上の計算ユニットによって実装され、そして、全てのノードがメインネットに参加していることから、これらのレジストリへのアクセスは、単なる状態の読み取り操作によって実現することができる。
すなわち、メインネットリーダー610(図6を参照)は、実際にはメインネットプロトコルクライアント41のサブコンポーネントであってもよく、そのため、このコンポーネントとのやり取りは、メインネットクライアントおよびサブネットクライアントが動作する2つの分離された環境間の相互作用を生じさせる。
図15は、本発明の一実施形態に係る計算ユニット1500をより詳細に示す図である。
計算ユニット1500は、入力キュー1501、出力キュー1502、ユーザ又はアプリケーション状態1503、及びシステム状態1504を含む。
計算ユニットの全ての入力キュー1501は、集合的に誘導プールを構成するが、入力キューは、計算ユニットの状態の一部である。出力キュー1502は、場合によっては他のサブネットワーク上の他の計算ユニットに配信される必要があるメッセージを含む。
ユーザ状態1503は、計算ユニットの機能を実装した主要なWeb Assembly(WASM)モジュールとそれに依存するモジュールとに、各モジュールのインスタンス(実体)を加えて構成される。WASMモジュールのインスタンスは、メモリ、グローバル変数、およびテーブルで構成される。
システム状態1504は、計算ユニットのコードによって自由に変更することはできない。これには、メタデータ、計算ユニットに代わってシステムが保持するその他の状態、特にWASMモジュールのコンパイルされた形式、および未解決(未処理)のメッセージのためのコンテキストとコールバックが含まれる。
図16は、本発明の実施形態に係る分散ネットワークにおけるブロックの作成を示す図である。ブロックは、特に、図7に示した入力ブロック720であってもよい。入力ブロック720は、コンセンサスプロトコル、特にローカルサブネットコンセンサスプロトコルを実行するコンセンサスコンポーネント63によって作成される。
この例示的な実施形態では、3つの入力ブロック1601、1602、及び1603が示されている。ブロック1601は、複数のトランザクション、すなわちトランザクションtx1.1、tx1.2および、場合によってはドットで示される更なるトランザクションを含む。ブロック1602はまた、複数のトランザクション、すなわちトランザクションtx2.1、tx2.2および、場合によってはドットで示される更なるトランザクションを含む。ブロック1603はまた、複数のトランザクション、すなわちトランザクションtx3.1、tx3.2および、場合によってはドットで示される更なるトランザクションを含む。入力ブロック1601、1602、及び1603は、一緒に繋がれる。より詳しくは、ブロックの各々は、前のブロックのブロックハッシュを含む。これにより、現在のブロックが前のブロックと暗号的に結び付けられる。
実施形態によれば、トランザクションは、サブネット間メッセージ、イングレスメッセージ、およびシグナリングメッセージであってもよい。
実施形態によれば、入力ブロック1601、1602、及び1603は、プルーフ・オブ・ステークコンセンサスプロトコルによって作成されてもよい。
しかし、コンセンサスコンポーネントによって生成された入力ブロックは、実施形態に従って一緒に繋がれる必要がないことに留意されたい。むしろ、受信したメッセージの処理順序についてサブネットのノード間で何らかの合意を得るための任意のコンセンサスプロトコルを、実施形態に従って使用することができる。
図17は、ネットワーキングプロトコルを実行するように構成されたネットワーキングコンポーネント1700をより詳細に示す図である。ネットワーキングコンポーネント1700は、例えば、図6に示されたネットワーキングコンポーネント64のより詳しい実施形態であってもよい。ネットワーキングコンポーネント1700は、ノード間通信を行うように構成されたユニキャストコンポーネント1710、サブネット内通信を行うように構成されたブロードキャストコンポーネント1720、及びサブネット間通信を行うように構成されたクロスネットコンポーネント1730を含む。
ここで図18を参照すると、例えば図1のネットワーク100の、本発明の実施形態に係るネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、コンピューティング機能を実行し得るコンピューティングノードを確立し、それゆえ、一般にコンピューティングシステムまたはコンピュータとして実施され得る。ネットワークノード10は、例えば、サーバコンピュータであってもよい。ネットワークノード10は、分散ネットワークのユーザに、分散ネットワークによって計算された計算結果へのアクセスを提供するためのコンピュータ実装された方法を実行するように構成されてもよい。ネットワークノード10は、数々の他の汎用の又は専用のコンピューティングシステム環境または構成で動作することが可能である。
ネットワークノード10は、プログラムモジュールなどのコンピュータシステム実行可能な命令がコンピュータシステムによって実行されるという一般的な文脈で説明され得る。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象的なデータ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれてもよい。ネットワークノード10は、汎用コンピューティングデバイスの形態で示される。ネットワークノード10のコンポーネントは、1つ以上のプロセッサまたは処理装置1815と、システムメモリ1820と、およびシステムメモリ1820を含む様々なシステムコンポーネントをプロセッサ1815に結合するバス1816と、を含んでもよいが、これらに限定されるものではない。
バス1816は、メモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、幾つかのタイプのバス構造のうちの何れか1つまたは複数を示す。例として、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、および周辺機器相互接続(PCI)バスが含まれる。
ネットワークノード10は、典型的に、様々なコンピュータシステム可読媒体を含む。そのような媒体は、ネットワークノード10によってアクセス可能な任意の利用可能な媒体であってよく、揮発性および不揮発性の媒体の両方、着脱可能および着脱不可能な媒体の両方を含む。
システムメモリ1820は、ランダムアクセスメモリ(RAM)1821及び/又はキャッシュメモリ1822などの揮発性メモリの形式のコンピュータシステム可読媒体を含むことができる。ネットワークノード1810は、他の着脱可能/着脱不可能な、揮発性/不揮発性のコンピュータシステム記憶媒体を更に含んでもよい。例としてのみであるが、ストレージシステム1823は、着脱不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)からの読み出しおよびそれへの書き込みのために提供され得る。また、図示しないが、着脱可能な不揮発性の磁気ディスク(例えば、「フロッピーディスク」)からの読み出しおよびそれへの書き込みのための磁気ディスクドライブ、および、CD-ROM、DVD-ROM、又は他の光学媒体などの着脱可能な不揮発性の光ディスクからの読み出し又はそれへの書き込みのための光ディスクドライブを設けることが可能である。そのような場合、各々は、1つ以上のデータメディアインターフェースによってバス1816に接続することができる。以下に更に示され、説明されるように、メモリ1820は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含んでもよい。
プログラムモジュール1831のセット(少なくとも1つ)を有するプログラム/ユーティリティ1830は、例として、限定ではなく、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ1820に記憶されてもよい。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータの各々またはそれらの幾つかの組み合わせは、ネットワーキング環境の実装を含んでもよい。プログラムモジュール1831は、一般に、本明細書に記載される本発明の実施形態の機能および/または方法を実行する。プログラムモジュール1831は、分散ネットワークのユーザに、分散ネットワークによって計算された計算結果へのアクセスを提供するためのコンピュータ実装された方法の1つまたは複数のステップを、例えば上述した方法の1つまたは複数のステップを、特に実行することができる。
ネットワークノード10は、ディスプレイ1818と同様に、キーボードまたはポインティングデバイスなどの1つ以上の外部デバイス1817と、また通信することができる。このような通信は、入力/出力(I/O)インターフェース1819を介して行うことができる。さらに、ネットワークノード10は、ネットワークアダプタ1841を介して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、及び/又は公衆ネットワーク(例えば、インターネット)などの1つ又は複数のネットワーク40と通信することが可能である。実施形態によれば、ネットワーク1840は、特に、複数のネットワークノード10を含む分散ネットワーク、例えば図1のようなネットワーク100であってもよい。図に示すように、ネットワークアダプタ1841は、バス1816を介してネットワークノード10の他のコンポーネントと通信する。図示しないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
図19は、実行コンポーネント62(図6を参照)が、メッセージMを実行するために、計算ユニットの各部をどのように連携させるかを示す図である。
1つの入力キューから1つのメッセージMを実行するために、実行コンポーネント62は、Mの様々なフィールドを使用して、ユニット状態の異なる部分と、メッセージングコンポーネント61のスケジューラ1901からのデータとを統合し、そして、コンパイルされたコードの正しい部分を実行する。
実行コンポーネント62は、以下のように入力1902を受け取る。ランダム性、時間、および高さはスケジューラから提供される。メッセージのペイロードは、メッセージMによって直接伝えられる。つまり、システムで解釈されることはない。アドレッシング(addressing)およびペイメント(payment)も、またMの情報の一部である。最後に、どのメソッドを実行するかについても、またMに指定される。
コンパイルされたコード1903は、システムAPI1904を通じてシステムと対話する。システムAPI1904は、入力にアクセスする機能、メッセージを送信する機能(出力キュー、コンテキスト、コールバックとの対話)、現在のメッセージに応答する機能(コンテキストとの対話)、およびメッセージからそのバランス(balance)にペイメントを転送する機能を提供する。
実施形態によれば、実行コンポーネント62は、ガス(gas)コンポーネントとしてもまた示され得る燃料(fuel)コンポーネント1905を含むこともできる。そのコンパイルされたコードおよびシステムAPIは、制限値に達すると実行を終了する燃料コンポーネントによって計装(instrumented)される。また、消費した燃料の量は、また、実行の呼び出しを行ったスケジューラ1901に返される。
コンパイルされたコードは、特定のモジュールのインスタンスと対になって実行される。そのモジュールのインスタンスは、ロードおよびストアが正しい永続的なメモリの場所に対して行われ、グローバル変数が呼び出しの間に永続化され、そして、テーブルが使用されたときに正しい関数が実行されることを確実にする。
本発明の態様は、システム、特に複数のサブネットを含む分散ネットワーク、方法、および/またはコンピュータプログラム製品として実施することができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読の記憶媒体(または媒体)を含んでもよい。
コンピュータ可読記憶媒体は、命令実行装置によって使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせであってもよいが、これらに限定されるものではない。本明細書で使用するコンピュータ可読記憶媒体は、それ自体が、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号などのように、一過性の信号であると解釈されるものではない。
本明細書に記載されたコンピュータ可読プログラム命令は、ネットワーク、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークを介して、コンピュータ可読記憶媒体または外部コンピュータもしくは外部記憶デバイスからそれぞれの計算/処理装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各計算/処理装置内のネットワークアダプタカードまたはネットワークインターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、そして、そのコンピュータ可読プログラム命令をそれぞれの計算/処理装置内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語、を含む1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれであってもよい。
本発明の態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。
本発明の実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに、マシンを作成するように提供されてもよい。具体的には、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為を実行するための手段を作成するように提供されてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能なデータ処理装置、および/または他の装置に特定の方法で機能するように指示することができるコンピュータ可読記憶媒体にまた記憶されてもよい。そうした場合、記憶は、その中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為の態様を実行する命令を含む製造品を含むように行われる。
コンピュータ可読プログラム命令は、コンピュータ実装されたプロセスを作成するためにコンピュータ、他のプログラム可能な装置、または他の装置上で実行される一連の動作ステップ、を実施するように、つまり、コンピュータ、他のプログラム可能な装置、または他の装置上で実行される命令が、フローチャートおよび/またはブロック図のブロックに規定された機能/行為を実行するように、コンピュータ、他のプログラム可能なデータ処理装置、または他の装置上にまた読み込まれてもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるネットワーク、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示すものである。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能(複数も可)を実施するための1つまたは複数の実行可能な命令からなる、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替的な実施態様では、ブロックに記された機能は、図に記された順序とは異なる順序で実行される場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行される場合もあれば、機能によっては逆の順序で実行される場合もあり得る。
本発明の好ましい実施形態が示され、説明されているが、本発明はこれに限定されるものではなく、以下の請求項の範囲内で他に様々に具体化し、実施することができることを明確に理解されたい。

Claims (28)

  1. 複数のノードを含む分散ネットワークであって、
    前記複数のノードの各々は、1つ以上の計算ユニットを動作させるように構成され、
    前記計算ユニットの各々はそれ自身のユニット状態を含み、
    前記ネットワークは、
    前記複数のノードの実行サブセットによって、決定論的な方法で実行メッセージのセットを個別に実行し、それによって前記実行サブセットの1つ以上の前記計算ユニットの前記ユニット状態を変化させ、
    前記実行サブセットの前記ノードによって、前記実行サブセットの前記1つ以上の計算ユニットの前記ユニット状態のリードスナップショットを定期的に作成し、
    前記実行サブセットの1つ以上のノードによって、前記リードスナップショットへのユーザアクセスを提供する、
    ように構成される、ことを特徴とする分散ネットワーク。
  2. 請求項1に記載の分散ネットワークであって、
    前記ネットワークは、実行メッセージの前記セットの現在利用可能なセットからの実行メッセージの選択に関するコンセンサスを得るように構成されたコンセンサスプロトコルを、前記複数のノードのコンセンサスサブセットによって定期的に実行する、ように構成される、ことを特徴とする分散ネットワーク。
  3. 請求項1または請求項2に記載の分散ネットワークであって、
    前記ネットワークは、前記実行サブセットの1つ以上のノードの計算ユニットによって前記リードスナップショットに対する計算を実行し、前記計算ユニットによって前記計算の結果をユーザに提供するように構成される、ことを特徴とする分散ネットワーク。
  4. 請求項1~請求項3の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、
    前記実行サブセットの1つ以上のノードによってユーザからのリードクエリを受信し、
    前記1つ以上のノードによって前記リードクエリに関連した前記対応する計算ユニットの前記ユニット状態を読み出し、
    前記リードクエリを使用して前記計算ユニットを実行し、
    前記1つ以上のノードによって前記リードクエリの結果を返す、
    ように構成され、
    前記リードクエリは前記ユニット状態を永続的に変更しない、
    ことを特徴とする分散ネットワーク。
  5. 請求項1~請求項4の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、前記リードスナップショットの1つ又は複数の部分を認証し、それによって前記リードスナップショットの1つ又は複数の認証された部分を生成する、ように更に構成される、ことを特徴とする分散ネットワーク。
  6. 請求項5に記載の分散ネットワークであって、
    前記ネットワークは、前記実行サブセットの前記ノードの大多数によって、前記リードスナップショットの前記1つ又は複数の認証された部分を認証する、ように更に構成される、ことを特徴とする分散ネットワーク。
  7. 請求項5または請求項6に記載の分散ネットワークであって、
    前記ネットワークは、
    前記実行サブセットの前記大多数によって前記リードスナップショットの前記1つ又は複数の認証された部分に対する署名を生成することにより前記リードスナップショットの前記1つ又は複数の部分を認証し、
    前記署名をユーザが利用できるようにする、
    ように更に構成される、ことを特徴とする分散ネットワーク。
  8. 請求項7に記載の分散ネットワークであって、
    前記署名は、閾値署名、マルチ署名、または少なくとも前記実行サブセットの前記ノードの前記大多数の個々の署名を集めたものである、ことを特徴とする分散ネットワーク。
  9. 請求項5~請求項8の何れか一項に記載の分散ネットワークであって、
    前記リードスナップショットの前記1つ又は複数の認証された部分は、前記ユニット状態の変数である、ことを特徴とする分散ネットワーク。
  10. 請求項1~請求項9の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、前記実行サブセットの前記ノードによって、前記ユニット状態の前記リードスナップショットをキャッシュメモリに記録する、ように更に構成される、ことを特徴とする分散ネットワーク。
  11. 請求項1~請求項10の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、
    前記実行サブセットの前記ノードによって、前記実行サブセットの前記1つ以上の計算ユニットの前記ユニット状態の回復スナップショットを定期的に作成し、
    前記実行サブセットの前記ノードの大多数によって、前記回復スナップショットを認証する、
    ように構成される、ことを特徴とする分散ネットワーク。
  12. 請求項1~請求項11の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、少なくとも後続の回復スナップショットが作成されるまで前記回復スナップショットを永続的に記憶する、ように構成される、ことを特徴とする分散ネットワーク。
  13. 請求項10~請求項12の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、第1のレートで前記リードスナップショットを実行し、第2のレートで前記回復スナップショットを実行するように構成され、
    前記第1のレートは、前記第2のレートよりも高い、
    ことを特徴とする分散ネットワーク。
  14. 請求項1~請求項13の何れか一項に記載の分散ネットワークであって、
    前記実行メッセージは、前記ネットワークの計算ユニット間で交換されるユニット間メッセージおよび前記ネットワークのユーザから受信するミューテーションクエリを包含する、ことを特徴とする分散ネットワーク。
  15. 請求項1~請求項14の何れか一項に記載の分散ネットワークであって、
    前記コンセンサスサブセットの各ノードは、前記コンセンサスプロトコルを実行するように構成されたコンセンサスコンポーネントを含み、
    前記実行サブセットの各ノードは、
    実行メッセージの前記選択を実行するように構成された実行コンポーネントと、
    前記コンセンサスコンポーネントから実行メッセージの前記選択を受信し、そして、実行メッセージの前記選択を前記実行コンポーネントに提供するように構成されたメッセージングコンポーネントと、
    前記リードスナップショットを管理および記憶するように構成された状態管理コンポーネントと、
    前記ネットワークのユーザからのリードクエリを処理するように構成された状態リーダーコンポーネントと、
    前記ネットワークのユーザからのミューテーションクエリを処理するように構成されたイングレスメッセージハンドラコンポーネントと、
    を含む、
    ことを特徴とする分散ネットワーク。
  16. 請求項1~請求項15の何れか一項に記載の分散ネットワークであって、
    前記ネットワークは、複数の処理ループを、増加する高さインデックスNとともに順次実行するように構成され、Nは増加する整数であり、
    前記複数の処理ループは、
    第1のループステップで前記コンセンサスプロトコルを実行し、
    第2のループステップで実行メッセージの前記選択を個々に実行し、
    第3のループステップで前記リードスナップショットを作成し、
    前記高さインデックスNを伴う前記処理ループの間、以前の高さインデックス、特に前記以前の高さインデックスN-1の終わりに作成された前記リードスナップショットへのユーザアクセスを提供する、
    ように構成される、ことを特徴とする分散ネットワーク。
  17. 請求項1~請求項16の何れか一項に記載の分散ネットワークであって、
    前記コンセンサスプロトコルは、
    実行メッセージの前記現在のセットから前記実行メッセージを受信して処理し、
    予め定義されたコンセンサスメカニズムに従って前記実行メッセージから入力ブロックのキューを生成し、
    入力ブロックの前記キューをメッセージングプロトコルに提供する、
    ように構成され、
    前記メッセージングプロトコルは、前記入力ブロックを処理し、実行のために前記入力ブロックの前記実行メッセージをスケジュールする、
    ように構成される、
    ことを特徴とする分散ネットワーク。
  18. 請求項17に記載の分散ネットワークであって、
    前記メッセージングプロトコルは、前記コンセンサスプロトコルから受信した前記入力ブロックによって開始されるように構成され、
    前記状態管理コンポーネントは、前記入力ブロックの処理境界で前記リードスナップショットを作成するように構成される、
    ことを特徴とする分散ネットワーク。
  19. 請求項17または請求項18に記載の分散ネットワークであって、
    前記コンセンサスプロトコルは、前記入力ブロックに1つ以上の実行パラメータを追加するように更に構成され、前記実行パラメータは、ランダムシード、指定された実行時間、および高さインデックスを含む前記グループから選択される、
    ことを特徴とする分散ネットワーク。
  20. 請求項1~請求項19の何れか一項に記載の分散ネットワークであって、
    前記分散ネットワークは複数のサブネットを含み、
    前記複数のノードの各々は前記複数のサブネットのうちの1つに割り当てられ、
    前記複数のノードの各々はメインネットプロトコルクライアント及びサブネットプロトコルクライアントを実行するように構成され、
    前記サブネットプロトコルクライアントは、前記コンセンサスプロトコルを定期的に実行し、実行メッセージの前記選択を個々に実行し、前記リードスナップショットを定期的に作成し、前記リードスナップショットへのユーザアクセスを提供する、ように構成され、
    前記メインネットプロトコルクライアントは前記複数のサブネットに構成データを配布するように構成される、
    ことを特徴とする分散ネットワーク。
  21. 分散ネットワークのユーザに、前記分散ネットワークによって計算された計算結果へのアクセスを提供するためのコンピュータ実装された方法であって、
    前記分散ネットワークは、複数のノードを含み、
    前記方法は、
    前記複数のノードの各々において1つ以上の計算ユニットを実行するステップであって、前記1つ以上の計算ユニットの各々は、それ自身のユニット状態を含む、実行するステップと、
    前記複数のノードの実行サブセットによって決定論的な方法で実行メッセージのセットを個別に実行し、それによって前記実行サブセットの1つ以上の前記計算ユニットの前記ユニット状態を変化させるステップと、
    前記実行サブセットの前記ノードによって、前記実行サブセットの前記1つ以上の計算ユニットの前記ユニット状態のリードスナップショットを定期的に作成するステップと、
    前記実行サブセットの1つ以上のノードによって、前記リードスナップショットへのユーザアクセスを提供するステップと、
    を含む、
    ことを特徴とするコンピュータ実装された方法。
  22. 請求項21に記載のコンピュータ実装された方法であって、
    実行メッセージの前記セットの現在のセットからの実行メッセージの選択に関するコンセンサスを得るように構成されたコンセンサスプロトコルを、前記複数のノードのコンセンサスサブセットによって定期的に実行するステップを更に含む、
    ことを特徴とするコンピュータ実装された方法。
  23. 請求項22に記載のコンピュータ実装された方法であって、
    前記リードスナップショットへのユーザアクセスの提供は、前記リードスナップショットに対する計算を実行することと、前記計算の前記結果を返すことと、を含む、ことを特徴とするコンピュータ実装された方法。
  24. 請求項22または請求項23に記載のコンピュータ実装された方法であって、
    前記リードスナップショットへのユーザアクセスの提供は、リードクエリをユーザから受信することと、前記リードクエリに関連した前記対応する計算ユニットの前記ユニット状態を読み出すことと、前記リードクエリを使用して前記計算ユニットを実行することと、前記リードクエリの前記結果を返すことと、を含む、ことを特徴とするコンピュータ実装された方法。
  25. 請求項22~請求項24の何れか一項に記載のコンピュータ実装された方法であって、
    前記リードスナップショットの1つ又は複数の部分を認証し、それによって前記リードスナップショットの1つ又は複数の認証された部分を生成するステップを更に含む、
    ことを特徴とするコンピュータ実装された方法。
  26. 分散ネットワークのためのノードであって、
    前記ノードは、
    1つ以上の計算ユニットであって、前記計算ユニットの各々は、それ自身のユニット状態を含む、計算ユニットを動作させ、
    決定論的な方法で実行メッセージのセットを個別に実行し、それによって1つ以上の前記計算ユニットの前記ユニット状態を変化させ、
    前記1つ以上の計算ユニットの前記ユニット状態のリードスナップショットを定期的に作成し、
    前記リードスナップショットへのユーザアクセスを提供する、
    ように構成される、
    ことを特徴とする分散ネットワークのためのノード。
  27. 分散ネットワークを動作させるためのコンピュータプログラム製品であって、
    前記分散ネットワークは、複数のノードを含み、
    前記複数のノードの各々は、1つ以上の計算ユニットを動作させるように構成され、
    前記計算ユニットの各々はそれ自身のユニット状態を含み、
    前記コンピュータプログラム製品は、コンピュータ可読記憶媒体であって、その中に具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、
    前記プログラム命令は、前記複数のノードの1つまたは複数によって実行可能であり、それにより前記複数のノードの前記1つまたは複数に実行される方法は、
    前記複数のノードの実行サブセットによって決定論的な方法で実行メッセージのセットを個別に実行し、それによって前記実行サブセットの1つ以上の前記計算ユニットの前記ユニット状態を変化させるステップと、
    前記実行サブセットの前記ノードによって、前記実行サブセットの前記1つ以上の計算ユニットの前記ユニット状態のリードスナップショットを定期的に作成するステップと、
    前記実行サブセットの1つ以上のノードによって、前記リードスナップショットへのユーザアクセスを提供するステップと、
    を含む、
    ことを特徴とするコンピュータプログラム製品。
  28. 分散ネットワークのノードを動作させるためのコンピュータプログラム製品であって、
    前記コンピュータプログラム製品は、コンピュータ可読記憶媒体であって、その中に具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、
    前記プログラム命令は、前記ノードによって実行可能であり、それにより前記ノードに実行される方法は、
    1つ以上の計算ユニットであって、前記計算ユニットの各々は、それ自身のユニット状態を含む、計算ユニットを動作させるステップと、
    決定論的な方法で実行メッセージのセットを個別に実行し、それによって1つ以上の前記計算ユニットの前記ユニット状態を変化させるステップと、
    前記1つ以上の計算ユニットの前記ユニット状態のリードスナップショットを定期的に作成するステップと、
    前記リードスナップショットへのユーザアクセスを提供するステップと、
    を含む、
    ことを特徴とするコンピュータプログラム製品。
JP2022522811A 2019-10-18 2019-10-18 分散ネットワークの計算結果に対する読み出しアクセス Pending JP2023506115A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2019/078409 WO2021073756A1 (en) 2019-10-18 2019-10-18 Read access for computational results of a distributed network

Publications (1)

Publication Number Publication Date
JP2023506115A true JP2023506115A (ja) 2023-02-15

Family

ID=68296491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022522811A Pending JP2023506115A (ja) 2019-10-18 2019-10-18 分散ネットワークの計算結果に対する読み出しアクセス

Country Status (5)

Country Link
US (1) US20220377133A1 (ja)
EP (1) EP4038862A1 (ja)
JP (1) JP2023506115A (ja)
KR (1) KR20220082898A (ja)
WO (1) WO2021073756A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113886495B (zh) * 2021-09-30 2024-05-24 支付宝(杭州)信息技术有限公司 验证区块链数据的方法、装置、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107851252B (zh) * 2015-05-26 2022-07-19 缇零知识产权有限责任公司 使用加密技术在交易中对意向进行模糊
US10523421B2 (en) * 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
CN107528882B (zh) * 2017-07-14 2020-12-25 创新先进技术有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备

Also Published As

Publication number Publication date
EP4038862A1 (en) 2022-08-10
US20220377133A1 (en) 2022-11-24
WO2021073756A1 (en) 2021-04-22
KR20220082898A (ko) 2022-06-17

Similar Documents

Publication Publication Date Title
CN108062672B (zh) 一种基于区块链智能合约的流程调度方法
CN110915166B (zh) 区块链
Collins et al. Online payments by merely broadcasting messages
EP3543853A1 (en) Providing microservice information
US20210143980A1 (en) BLOCKCHAIN PLATFORM AS A SERVICE (BPaaS)
US20200007317A1 (en) Method and system for hosting a new blockchain using an existing blockchain node
WO2020061597A2 (en) BLOCKCHAIN PLATFORM AS A SERVICE (BPaaS)
Cong et al. A blockchain consensus protocol with horizontal scalability
US20220383304A1 (en) Distributed network with consensus mechanism
Li et al. A survey of state-of-the-art sharding blockchains: Models, components, and attack surfaces
De la Rocha et al. Hierarchical consensus: A horizontal scaling framework for blockchains
CN113923217A (zh) 一种基于dag的异步拜占庭共识方法及系统
JP2023506115A (ja) 分散ネットワークの計算結果に対する読み出しアクセス
Gramoli Blockchain scalability and its foundations in distributed systems
US20230291656A1 (en) Operation of a distributed deterministic network
US20230266994A1 (en) Migration of computational units in distributed networks
EP4042660B1 (en) Messaging in distributed networks
KR20230038494A (ko) 분산 네트워크에서의 검증 키 생성
CN116171555A (zh) 具有多个子网的分布式网络
WO2019200461A1 (en) Method and system for performing an action requested by a blockchain
Peng et al. Petrichor: An Efficient Consensus Protocol Leveraging DAG and Sharding for Asynchronous BFT
Nguyen Understanding scalability issues in sharded blockchains
Tinnaluri et al. A Productive Model for Secured Data Sharing in Blockchain Technology based IoT
Ahmed On The Practicality of Blockchain-based Security and Privacy for Next Generation SDN
WO2022271669A1 (en) Systems and methods for transaction validation in layer 2

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221014

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240502