(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-06
(54)【発明の名称】分散ネットワークにおける検証鍵生成
(51)【国際特許分類】
H04L 9/08 20060101AFI20231129BHJP
【FI】
H04L9/08 D
H04L9/08 F
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023523329
(86)(22)【出願日】2020-12-21
(85)【翻訳文提出日】2023-02-22
(86)【国際出願番号】 EP2020087410
(87)【国際公開番号】W WO2022002428
(87)【国際公開日】2022-01-06
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521435190
【氏名又は名称】デフィニティ スティフトゥング
【氏名又は名称原語表記】DFINITY STIFTUNG
【住所又は居所原語表記】Genferstrasse 11, 8002 Zuerich Switzerland
(74)【代理人】
【識別番号】110002664
【氏名又は名称】弁理士法人相原国際知財事務所
(72)【発明者】
【氏名】カメニッシュ, ヤン
(72)【発明者】
【氏名】ドライヴェールズ, マヌ
(72)【発明者】
【氏名】グランストルム, ヨハン
(72)【発明者】
【氏名】カシツィン, ロマン
(72)【発明者】
【氏名】ネヴェン, グレゴリー
(72)【発明者】
【氏名】ピニョレ, イヴォンヌ アン
(72)【発明者】
【氏名】ウィリアムズ, ドミニク
(57)【要約】
本発明のいくつかの実施形態は、分散ネットワークにおいて公開鍵署名方式の検証鍵を生成するコンピュータ実装方法に関する。本方法は、第1サブネットワークのノードのサブセットが、第1分散鍵生成プロトコルを実行して、第1分散鍵生成プロトコルは、第1サブネットワーク用の検証鍵と、第1サブネットワークのノードに対応する複数の共有秘密鍵とを共同で生成する。本方法は、第2サブネットワークについて、第1サブネットワークの複数のノードのサブセットが、第2分散鍵生成プロトコルを実行するステップを備え、第2分散鍵生成プロトコルは、第2サブネットワークの検証鍵と、第2サブネットワークのノードに対応する複数の共有秘密鍵とを共同で生成する。さらなるステップは、第1サブネットワークのノードのサブセットが、第2サブネットワークの検証鍵に、第1サブネットワークのノードの共有秘密鍵の許容可能なサブセットに署名するステップを含み、それにより、第2サブネットワークの検証鍵上に共同署名を生成する。さらなる態様は、分散ネットワーク、分散ネットワークの複数のノード、および対応するコンピュータプログラム製品に関する。
【選択図】
図8a、
図8b、
図8c
【特許請求の範囲】
【請求項1】
分散ネットワークにおいて公開鍵署名方式の検証鍵を生成するコンピュータ実装方法であって、前記分散ネットワークは複数のノードを有し、前記複数のノードは2つ以上のサブネットワークに分割され、前記複数のノードの各々は1つ以上の計算ユニットを実行するように構成され、前記計算ユニットは前記複数のノードの前記複数のサブネットワークにわたる決定論的かつ複製される方法で計算を実行し、それにより一連の実行状態をトラバースするように構成されており、前記方法は、
第1サブネットワークのノードのサブセットが、前記第1サブネットワーク用の検証鍵と、前記第1サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第1分散鍵生成プロトコルを実行するステップと、
前記第1サブネットワークの複数のノードのサブセットが、第2サブネットワークについて、前記第2サブネットワーク用の検証鍵と、前記第2サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第2分散鍵生成プロトコルを実行するステップと、
前記第1サブネットワークのノードのサブセットが、前記第1サブネットワークのノードの前記複数の共有秘密鍵の許容可能なサブセットとともに前記第2サブネットワークの前記検証鍵に署名するステップであって、それにより前記第2サブネットワークの前記検証鍵上に共同署名を生成するステップと、を備えるコンピュータ実装方法。
【請求項2】
前記第2サブネットワークが、前記第2サブネットワークの前記検証鍵に対応する前記複数の共有秘密鍵の許容可能なサブセットとともに前記第2サブネットワークの状態情報パッケージに署名するステップであって、それにより前記第2サブネットワークの前記状態情報パッケージ上に共同署名を生成するステップをさらに備え、前記状態情報パッケージは、前記第2サブネットワークの実行状態または実行状態のハッシュを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1サブネットワークが、前記第1サブネットワークの前記検証鍵に対応する複数の共有秘密鍵の許容可能なサブセットとともに前記第1サブネットワークの状態情報パッケージに署名するステップであって、それにより前記第1サブネットワークの前記状態情報パッケージ上に共同署名を生成するステップをさらに備え、前記状態情報パッケージは、前記第1サブネットワークの実行状態または実行状態のハッシュを含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記分散ネットワークは複数の第2サブネットワークを有し、前記第1サブネットワークの前記状態情報パッケージはリストを含み、前記リストは、
前記複数の第2サブネットワークのノード検証鍵と、
前記複数の第2サブネットワークの複数のノードと、を有する請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第2サブネットワークについて前記第2分散鍵生成プロトコルを実行するステップは、
前記第1サブネットワークのノードが、前記第2検証鍵と前記第1サブネットワークのノードに対応する複数の第1共有秘密鍵セットとを生成するステップであって、前記第1サブネットワークの各ノードが前記第1共有秘密鍵セットのうちの1つの共有秘密鍵を保持するステップと、
秘密再配布プロトコルが、前記第1共有秘密鍵セットの共有秘密鍵を前記第2サブネットワークの前記複数のノードに再配布するステップであって、それにより前記第2サブネットワークの第2検証鍵に対応する第2共有秘密鍵セットを生成するステップと、を備える請求項1に記載のコンピュータ実装方法。
【請求項6】
前記第2サブネットワークの検証鍵を、前記第1サブネットワークの共同署名とともに公開するステップであって、それにより前記第2サブネットワークの検証鍵の証明書を提供するステップをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項7】
ノードが、特に前記分散ネットワークの前記第2サブネットワークへの接続または再接続を希望するキャッチアップノードが、前記状態情報パッケージを検証するステップをさらに備え、前記状態情報パッケージを検証するステップは、
前記第1サブネットワークの検証鍵で前記証明書を検証することにより、前記状態情報パッケージの共同署名に対応する前記第2サブネットワークの検証鍵を検証するステップと、
前記状態情報パッケージの共同署名に対応する前記第2サブネットワークの検証済み検証鍵を用いて、前記状態情報パッケージの前記共同署名を検証するステップと、を含む請求項6に記載のコンピュータ実装方法。
【請求項8】
前記分散ネットワークが、複数のブロックのブロックチェーンを生成するステップをさらに備え、前記状態情報パッケージが、前記ブロックチェーンの後続の複数のブロック、特に後続の複数のブロックの有効性を検証するブロック検証情報を含む、前記請求項1から8までのいずれか1項に記載のコンピュータ実装方法。
【請求項9】
前記ブロック検証情報は、前記ブロックチェーンの複数のブロックの有効性の検証に必要な検証鍵セットを含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記第2サブネットワークの状態情報パッケージは、前記第2サブネットワークの検証鍵および前記証明書を含む、請求項7に記載のコンピュータ実装方法。
【請求項11】
前記状態情報パッケージは、前記第2サブネットワークの検証鍵の生成に使用された分散鍵生成プロトコルの鍵生成情報をさらに含む、請求項1から10までのいずれか1項に記載のコンピュータ実装方法。
【請求項12】
前記状態情報パッケージは、前記分散ネットワークへの接続または再接続を希望するキャッチアップノードの実行状態が、直近の実行状態との同期を可能にする情報一式を含む、請求項1から11までのいずれか1項に記載のコンピュータ実装方法。
【請求項13】
前記状態情報パッケージを前記ブロックチェーンのブロックの所定の時間間隔で追加するステップをさらに備える、請求項8から12までのいずれか1項に記載のコンピュータ実装方法。
【請求項14】
前記状態情報パッケージは、前記実行状態をマークルツリー(Merkle-tree)構造として、特に前記マークルツリー構造のハッシュルートとして提供する、請求項2から13までのいずれか1項に記載のコンピュータ実装方法。
【請求項15】
前記第2サブネットワークの最新ノードから前記第2サブネットワークへの接続または再接続を希望するキャッチアップノードが、前記マークルツリー構造の複数のリーフハッシュを請求するステップと、
前記キャッチアップノードが、それ自身の状態の前記複数のリーフハッシュを前記最新ノードの前記複数のハッシュと比較するステップと、
前記最新ノードからの前記キャッチアップノードが、異なる複数のリーフハッシュを有する複数のリーフに対応する状態情報だけを請求する、請求項14に記載のコンピュータ実装方法。
【請求項16】
前記分散鍵生成プロトコルは、しきい値分散鍵生成プロトコルである、請求項1から15までのいずれか1項に記載のコンピュータ実装方法。
【請求項17】
前記秘密再配布プロトコルは、しき値鍵再配布プロトコルである、請求項5に記載のコンピュータ実装方法。
【請求項18】
前記共同署名は多重署名である、請求項1から17までのいずれか1項に記載のコンピュータ実装方法。
【請求項19】
前記分散鍵生成プルトコルは、
前記キャッチアップノードが、未知のノードからの1つ以上の接続を受諾するステップと、
前記未知のノードとの通信交換を前記状態情報パッケージおよび前記証明書に関する通信に制限するステップと、
前記状態情報パッケージおよび前記証明書が一度受信されると、前記未知のノードとの通信を停止するステップと、を備える請求項1から18までのいずれか1項に記載のコンピュータ実装方法。
【請求項20】
複数のノードを有する分散ネットワークであって、前記複数のノードは2つ以上のサブネットワークに分割され、前記複数のノードの各々は1つ以上の計算ユニットを実行するように構成され、前記計算ユニットは前記複数のノードの前記複数のサブネットワークにわたる決定論的かつ複製される方法で計算を実行し、それにより一連の実行状態をトラバースするように構成されており、前記分散ネットワークは、
第1サブネットワークのノードのサブセットが、前記第1サブネットワーク用の検証鍵と、前記第1サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第1分散鍵生成プロトコルを実行するように構成され、
前記第1サブネットワークの複数のノードのサブセットが、第2サブネットワークについて、前記第2サブネットワーク用の検証鍵と、前記第2サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第2分散鍵生成プロトコルを実行するように構成され、
前記第1サブネットワークのノードのサブセットが、前記第1サブネットワークのノードの前記複数の共有秘密鍵の許容可能なサブセットとともに前記第2サブネットワークの前記検証鍵に署名するステップであって、それにより前記第2サブネットワークの前記検証鍵上に共同署名を生成するように構成されている、分散ネットワーク。
【請求項21】
請求項20に記載された分散ネットワークの複数のノードであって、前記ノードは、
前記第1サブネットワーク用の検証鍵と、前記第1サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第1分散鍵生成プロトコルに参加し、
前記第2サブネットワーク用の検証鍵と、前記第2サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第2分散鍵生成プロトコルに参加し、
前記第1サブネットワークのノードの共有秘密鍵の許容可能なサブセットを含む前記第2サブネットワークの検証鍵の共同署名に参加するように構成されている、ノード。
【請求項22】
分散ネットワークを動作させるコンピュータプログラム製品であって、前記分散ネットワークが複数のノードを備え、前記コンピュータプログラム製品が、それとともに具体化されたプログラム命令を有するコンピュータ可読記憶媒体を備え、前記プログラム命令が、前記複数のノードのうちの1つ以上に所定の方法を実行させるため前記複数のノードのうちの1つ以上によって実行可能であり、前記方法は、
前記複数のノードの前記複数のサブネットワークにわたら決定論的かつ複製される方法で計算を実行し、それにより一連の実行状態をトラバースするステップと、
第1サブネットワークのノードのサブセットが、前記第1サブネットワーク用の検証鍵と、前記第1サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第1分散鍵生成プロトコルを実行するステップと、
前記第1サブネットワークの複数のノードのサブセットが、第2サブネットワークについて、前記第2サブネットワーク用の検証鍵と、前記第2サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成された、第2分散鍵生成プロトコルを実行するステップと、
前記第1サブネットワークのノードのサブセットが、前記第1サブネットワークのノードの前記複数の共有秘密鍵の許容可能なサブセットとともに前記第2サブネットワークの前記検証鍵に署名するステップであって、それにより前記第2サブネットワークの前記検証鍵上に共同署名を生成するステップと、
を備えるコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散ネットワークにおける公開鍵署名方式の検証鍵を生成するコンピュータ実装方法に関する。
【0002】
さらなる態様は、分散ネットワーク、分散ネットワークの複数のノード、対応するコンピュータプログラム製品、および非一時的媒体上に符号化されたソフトウェアアーキテクチャに関する。
【背景技術】
【0003】
分散ネットワークでは、複数のノードが分散して配置される。分散ネットワークの計算では、ソフトウェアとデータが複数のノードに分散される。ノードはコンピューティングリソースを構築し、分散ネットワークは分散コンピューティング技術を使用し得る。
【0004】
分散ネットワークの一例として、ブロックチェーンネットワークがある。ブロックチェーンネットワークは、複数のブロックからなり、合意に基づく電子台帳である。各ブロックは、複数のトランザクションおよびその他の情報からなる。さらに、各ブロックは前のブロックのハッシュを含むことで連鎖しているので、ブロックチェーンに書き込まれたすべてのトランザクションが永続的に変更不可能な記録として作成される。トランザクションは、例えば、スマートコントラクトとして知られる小規模なプログラムを呼び出し得る。トランザクションがブロックチェーンに書き込まれるためには、ネットワークによる「検証」および合意が必須である。言い換えれば、ネットワークノードは、ブロックチェーンに書き込まれるブロックにおいてコンセンサスに到達する必要がある。このようなコンセンサスは、さまざまなコンセンサスプロトコルで達成され得る。
【0005】
ブロックチェーンネットワークの1つの形態において、コンセンサスプロトコルは、プルーフオブワークアルゴリズムで達成される。一般に、プルーフオブワークコンセンサスプロトコルでは、コンセンサスプロトコルに参加する当時者に何らかの作業が必要とされ、通常、コンピュータによる処理時間に相当する。ビットコインなどのプルーフオブワークに基づく暗号通貨システムでは、計算集約型のパズルを解くことで、トランザクションを検証して新たなブロックを作成する。
【0006】
他の形態のコンセンサスプロトコルは、プルーフオブステークアルゴリズムに基づく。このようなプルーフオブステークプロトコルは、時間を要し、エネルギー集約型である計算が不要であるとの利点を有する。プルーフオブステークに基づくブロックチェーンネットワークでは、例えば、次のブロックの作成者は、ランダム選択の組み合わせ、ならびにネットワークのそれぞれのノードのステークを通して選出される。ブロックチェーンネットワークで使用されるコンセンサスプロトコルは、「Byzantine fault tolerant」(BTF)合意プロトコルを適用することで、ブロックに含まれるトランザクションのファイナリティに高速で到達するように設計可能である。「同期」BFTプロトコルは、安全のためネットワーク共時態仮定に依存するが、「非同期」BFTプロトコルはそれに依存しない。非同期BFTプロトコルは、典型的には、参加ノードの破損について1/3(3分の1)未満であれば許容可能である。
【0007】
暗号通貨とは別に、分散ネットワークは、さまざまな他のアプリケーションに使用され得る。特に、それらは分散型および分散計算能力およびサービスの提供に使用され得る。この目的のために、それらの分散ネットワークは、複数のクラッシュノードおよびさまざまな敵対的攻撃があったとしても複数のアプリケーションを確実に実行し、複数のノードにわたる状態を格納する状態機械レプリケーションプロトコルを使用し得る。
【0008】
分散計算サービスを提供するそのような分散ネットワークの1つの課題は、公開鍵署名方式の検証鍵を生成して配布するメカニズムを提供するところにある。そのような検証鍵は、例えば、公開鍵署名方式の署名の検証に使用され得る公開鍵である。
【0009】
そのような分散ネットワークのもう1つの課題は、(もはや)最新でないノードの分散ネットワークへの接続または再接続を可能にするメカニズムを提供するところある。そのようなノードは、例えば、クラッシュして分散ネットワークへの参加を再開したいノード、または新たに参加したいノードであり得る。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】Paul Feldman. A practical scheme for non-interactive verifiable secret sharing. In 28th Annual Symposium on Foundations of Computer Science, pages 427-437, Los Angeles, California, October 12-14, 1987. IEEE Computer Society Press.
【非特許文献2】Torben P. Pedersen. A threshold cryptosystem without a trusted party (extended abstract) (rump session). In Donald W. Davies, editor, Advances in Cryptology - EUROCRYPT’91, volume 547 of Lecture Notes in Computer Science, pages 522-526, Brighton, UK, April 8-11, 1991. Springer, Heidelberg, Germany.
【非特許文献3】Rosario Gennaro, Stanislaw Jarecki, Hugo Krawczyk, and Tal Rabin. Secure distributed key generation for discrete-log based cryptosystems. In Jacques Stern, editor, Advances in Cryptology - EUROCRYPT’99, volume 1592 of Lecture Notes in Computer Science, pages 295-310, Prague, Czech Republic, May 2-6, 1999. Springer, Heidelberg, Germany.
【非特許文献4】Herzberg, Amir; Jarecki, Stanislaw; Hugo, Krawczyk; Yung, Moti (1995). Proactive Secret Sharing Or: How to Cope With Perpetual Leakage. CRYPTO '95: Proceedings of the 15th Annual International Cryptology Conference on Advances in Cryptology. London, UK: Springer-Verlag. pp. 339-352. ISBN 978-3-540-60221-7.
【非特許文献5】Ran Canetti, Nikolaos Makriyannis, Udi Peled: UC Non-Interactive, Proactive, Threshold ECDSA. IACR Cryptol. ePrint Arch. 2020: 492 (2020).
【非特許文献6】David A. Schultz, Barbara Liskov, Moses D. Liskov: MPSS: Mobile Proactive Secret Sharing. ACM Trans. Inf. Syst. Secur. 13(4): 34:1-34:32 (2010).
【発明の概要】
【課題を解決するための手段】
【0011】
本発明の一態様の1つの目的は、分散ネットワークにおいて検証鍵を生成および配布する新規で有利な方法を提供するところある。
【0012】
本発明の実施形態のさらなる態様のさらなる目的は、最新ではない分散ネットワークのノードの分散ネットワークへの接続または再接続、特に効率的かつ安全な方法での接続または再接続を可能にする方法を提供するところにある。
【0013】
本発明の第1の態様の実施形態では、分散ネットワークにおいて公開鍵署名方式の検証鍵を生成するコンピュータ実装方法が提供される。分散ネットワークは複数のノードを備え、複数のノードは2つ以上のサブネットワークに再分割され、複数のノードの各々は1つ以上の計算ユニットを実行するように構成される。計算ユニットは、決定論的かつ複製される方法で複数のノードのサブネットワークにわたる計算を実行し、それにより一連の実行状態をトラバースするように構成される。本方法は、第1サブネットワークのノードのサブセットが第1分散鍵生成プロトコルを実行するステップを備え、第1分散鍵生成プロトコルは、第1サブネットワーク用の検証鍵と、第1サブネットワークのノードのサブセットに対応する複数の共有秘密鍵と、を共同で生成するように構成される。本方法は、第2サブネットワークについて、第1サブネットワークの複数のノードのサブセットが、第2分散鍵生成プロトコルを実行するステップをさらに備え、第2分散鍵生成プロトコルは、第2サブネットワーク用の検証鍵と、第2サブネットワークのノードのサブセットに対応する複数の共有秘密鍵とを共同で生成するように構成される。さらなるステップでは、第1サブネットワークのノードのサブセットが、第2サブネットワーク用の検証鍵に、第1サブネットワークのノードの共有秘密鍵の許容可能なサブセットについて署名するステップを備え、それにより、第2サブネットワーク用の検証鍵上に共同署名を生成する。
【0014】
そのような具体化された方法では、複数のノードは、サブネットワークと称されるサブセットに細分される。単一のサブネットワーク内のすべてのノードは、同じ一連の実行状態をトラバースする。第1サブネットワークとして示される1つの特定のサブネットワークは、第2サブネットワークとして示される少なくとも1つの他のサブネットワークと同様に、それ自体のサブネットワーク用の検証鍵を生成するように構成される。一実施形態では、第1サブネットワークは、複数の第2サブネットワーク、またはより一般的には分散ネットワークのすべてのサブネットワーク用の検証鍵を生成するように構成される。サブネットワーク用の検証鍵は、経時的に一定のままであるので、静的検証鍵としても示され得る。
【0015】
いくつかの実施形態では、第1サブネットワークは、サブネットワークへのノード割り当ておよび鍵レジストリを含んでおり、グローバルに必要なプロトコル構成の制御や変更を行う管理委員会として機能し得る。いくつかの実施形態では、第1サブネットワーク、より具体的には第1サブネットワークのノードのサブセットは、第1分散鍵生成プロトコルを実行する。それにより、第1サブネットワークは、第1検証鍵として示されるそれ自体の検証鍵と、サブネットに、特に第1サブネットワークのすべてのノードに対応する共有秘密鍵と、を生成する。第2サブネットワークが新たなサブネットワークとして作成されるとき、第1サブネットワークは、より具体的には第1サブネットワークのノードのサブセットは、この新たなサブネットワークについて第2分散鍵生成プロトコルを実行し、それにより、新たな第2サブネットワーク用の第2検証鍵、ならびにサブセット用の、特に第2サブネットワークのすべてのノードに対応する複数の共有秘密鍵を生成する。本方法は、第1サブネットワークのノードのサブセットが、それらの共有秘密鍵を使用して(新たな)第2サブネットワークの公開検証鍵に署名し、それにより、第1サブネットワークが発行した第2ネットワークの検証鍵の証明書として機能する共同署名を生成するステップをさらに備える。このことは、第2サブネットワーク(複数可)の検証鍵の有効性が認められ得ることを保証する。より具体的には、第2サブネットワークの各々の新たな検証鍵は、第1サブネットワークに属する検証鍵にリンクされる。共同署名は、共有秘密鍵の許容可能なサブセットを用いて実行される。許容可能なサブセットは、一般に、アクセス構造として定義され得、分散ネットワークのそれぞれのセキュリティ要件に依存し得る。いくつかの実施形態では、共同署名は、しきい値署名であり得、許容サブセットは、共有秘密鍵の最小個数として定義され得る。このような分散ネットワークは、分散ネットワークのサブネットワークの検証鍵を容易に効率的かつ安全に分散させる。分散ネットワーク内のすべてのノードは、1つ以上の第2サブネットワークのそれぞれの検証鍵を用いて、その第2サブネットワークの情報への署名の有無を検証し得る。管理サブネットワークとして機能する第1サブネットワークも、これに該当する。さらに、そのようなサブネットワーク編成では、第1サブネットワークが新たなサブネットワークの作成を制御しており、新たなサブネットワークの不正な作成を回避し得る。さらなる利点として、第1サブネットワークの公開検証鍵が、単一のルートオブトラストとして機能することで、第2サブネットワークのすべての検証鍵の検証を可能にする。
【0016】
一実施形態では、その方法は、第2サブネットワークが、第2サブネットワークの検証鍵に対応する共有秘密鍵の許容可能なサブセットを有している第2サブネットワークの状態情報パッケージに署名するステップをさらに備え、それにより、第2サブネットワークの状態情報パッケージ上に共同署名を生成する。その状態情報パッケージは、第2サブネットワークの実行状態または実行状態のハッシュを含む。
【0017】
そのような具体化された方法は、効率的かつ安全な方法でのネットワークへの再接続を可能にする状態情報パッケージを、もはや最新でないノードに提供する。状態情報パッケージは、直近の実行状態または直近の実行状態のハッシュを含む。状態情報パッケージ上の共同署名は、それぞれの第2検証鍵を用いて検証可能である。
【0018】
複数のノードの各々は、1つ以上の計算ユニットを実行する。より具体的には、同一のサブネットワーク内のノードの各々は、1つ以上の計算ユニットを含み得る同一の一連の計算ユニットを実行する。計算ユニットは、ネットワーク上で実行され、それ自体のユニットまたは実行状態を有するソフトウェアの一部として定義され得る。ノードの計算ユニットは、決定論的かつ複製される方法でサブネットワークにわたる計算を実行し、それにより一連の実行状態をトラバースする。言い換えれば、サブネットワーク内のノードの計算ユニットは、決定論的に同じ計算を実行して同じ実行状態をトラバースするが、サブネットワーク内の異なるノードは、実行状態のチェーンのなかで異なる位置にあり得る。いくつかの実施形態では、計算ユニットは、決定論的プログラムとして定義され得る。サブネットワークの共有秘密鍵は、サブネットワークのノードのサブセットが共同で保持する。サブセットは、特に、小さいサブネットワークではサブネットワークのすべてのノードを備え得、また、大きいサブネットワークではノードの一部のみを備え得る。サブセットは経時的に変化し得、サブセットのノードの数は経時的に動的に適応され得る。サブネットワークの検証鍵は格納され、管理委員会として機能し得る第1サブネットワークのレジストリを通してシステム内のすべてのノードに提供され得る。検証鍵の各々について、対応する複数の共有秘密鍵が存在する。これらの共有秘密鍵の各々は、サブセットに対応するノードだけに知られており、それぞれの共有鍵は、サブセットのそれぞれのノードが秘密を保持する。共有秘密鍵という用語は、いくつかの実施形態による秘密鍵を包含するものとする。検証鍵は公開鍵として示され得、秘密鍵は共有署名鍵または署名鍵として示され得る。本発明の実施形態による公開鍵署名方式は、例えば、RSAなどの公開鍵署名方式および暗号化方式の鍵、またはシュノアまたはDSAなどの公開鍵署名方式の鍵を備え得る。状態情報パッケージは、ネットワークの直近の実行状態または直近の実行状態のハッシュを備える。これは、キャッチアップノードが再び最新になったときに、その「古い」状態を、状態情報パッケージが提供する最新の状態と同期させることを可能にする。したがって、そのような状態情報パッケージでは、キャッチアップノードは、その古い状態を、ある種の早送りモードでネットワークの現状に同期させ得る。状態情報パッケージが実行状態のハッシュのみを含む実施形態では、ハッシュの肯定的な検証では、それぞれのノードが最初にハッシュを検証したうえで、完了実行状態のみをダウンロードし得るとの利点を有する。これにより、完全な状態の不必要なダウンロードを回避し得る。ハッシュの肯定的な検証では、(完了)実行状態自体を別々にフェッチすることができる。図示および説明を容易にするために、以下では、実行状態という用語は、必要に応じて実行状態のハッシュを含むか、または示し得る。一実施形態では、本方法は、第1サブネットワークが、第1サブネットワークの検証鍵に対応する秘密鍵シェアの許容可能なサブセットを有している第1サブネットワークの状態情報パッケージに署名するステップをさらに備え、それにより、第1サブネットワークの状態情報パッケージ上に共同署名を生成する。状態情報パッケージは、第1サブネットワークの実行状態または実行状態のハッシュを含む。
【0019】
そのような具体化された方法では、第1サブネットワークの複数のノードに、効率的かつ安全な方法で第1サブネットワークへの再接続を可能にする状態情報パッケージを、もはや最新ではない第1サブネットワークの複数のノードに提供する。さらにそれは、第2サブネットワークの複数のノードが、第1サブネットワークの状態情報パッケージを検証することを可能にし得る。状態情報パッケージ上の共同署名は、それぞれの第1検証鍵を用いて検証可能である。
【0020】
一実施形態では、分散ネットワークは、複数の第2サブネットワークを備える。さらなる実施形態では、第1サブネットワークの状態情報パッケージは、第2サブネットワークのリストと、複数の第2サブネットワークに対応するノード検証鍵と、第2サブネットワークの複数のノードとを備える。このことは、その状態を多かれ少なかれ完全に失ったノードが属するサブネットワークを探し出すことを可能にする。特に、これにより、自身が属する第2サブネットワークが不明であるノードが、これを探し出すことを可能にする。より具体的には、ノードは、まず、最初に第1検証鍵を用いて第1サブネットワークの状態情報パッケージを検証可能である。そして、第1サブネットワークが検証した状態情報パッケージから、そのノードが属する第2サブネットワークを確認可能であり、このサブネットワークから別の状態情報パッケージを請求して、それぞれの第2サブネットワークに再接続する。
【0021】
一実施形態では、第2サブネットワーク用の第2分散鍵生成プロトコルを実行するステップは、第1サブネットワークのノードが、第2検証鍵と、第1サブネットワークのノード用の第2検証鍵に対応する第1共有秘密鍵セットと、を生成するステップを備え、第1サブネットワークの各ノードは、第1共有秘密鍵セットのうちの1つの共有秘密鍵を保持する。さらに、本方法は、秘密再配布プロトコルが、第1共有秘密鍵セットの共有秘密鍵を第2サブネットワークの複数のノードに再配布して、それにより、第2サブネットワークの第2検証鍵に対応する第2共有秘密鍵セットを作成するさらなるステップを備える。
【0022】
したがって、第2分散鍵生成プロトコルは、2段階で実行され得る。言い換えると、2つの段階を包含し得る。最初に、第1サブネットワークのノードのノードまたはサブセットは、第2サブネットワークの検証鍵および対応する複数の共有秘密鍵を生成する。この第1共有秘密鍵セットは、第1サブネットワークのノードのサブセットが保持する。次いで、第1サブネットワークの複数のノードは、これらの共有鍵を第2サブネットワークの複数のノードに再配布する。そのような共有の再配布は、共有の再共有と称され得る。共有の再共有は、特に、第1共有セットの共有を第2サブネットワークの複数のノードと共有することで実行され得る。
【0023】
より具体的には、一実施形態では、再配布は、第1サブネットワークのノードのサブセットが、第2検証鍵に対応する第1共有秘密鍵セットの共有秘密鍵の共有を生成するステップを備え得る。次いで、再配布は、共有秘密鍵の共有を第2サブネットワークの複数のノードに通信するステップ、言い換えると再共有するステップを備え得る。最後に、第2サブネットワークの複数のノードが、共有秘密鍵の共有からの個々の共有秘密鍵を計算するステップが実行され得る。言い換えれば、第2サブネットワークの複数のノードは、第1共有セットの共有のうちの受信された共有から、第2共有秘密鍵セットを再構築する。本発明のいくつかの実施形態では、第1サブネットワークの複数のノードは、第2分散鍵生成プロトコルにおけるディーラーとして機能し、第2サブネットワークの複数のノードは、共有秘密鍵の受信者として機能する。
【0024】
一実施形態では、本方法は、管理委員会として機能する第1サブネットワークの共同署名とともに新たな第2サブネットワーク用に新たに生成した第2検証鍵を公開するステップをさらに含む。これは、第2サブネットワークの検証鍵用の証明書を提供する。そのような証明書は、新たな第2検証鍵の検証を可能にする。新たな検証鍵の公開は、さまざまな方法で実行され得る。それぞれの方法は、特に、それぞれの分散ネットワークの通信および通信チャネルに依存し得る。この点において、公開という用語は、一般に、分散ネットワークへの接続または再接続を希望する複数のノード用に、新たな第2検証鍵を利用可能にする任意の種類の機構を指し示すものとする。
【0025】
一実施形態では、方法は、ノードが、特に、第2サブネットワークのうちの1つへの接続または再接続を希望するキャッチアップノードが、第2サブネットワークの状態情報パッケージを検証するステップをさらに備える。状態情報パッケージの検証は、2つのサブステップを含む。第1サブステップは、第1サブネットワークの検証鍵で証明書を検証することで、状態情報パッケージの共同署名に対応する第2サブネットワークの検証鍵を検証するステップを含む。これにより、対応するノードは、信頼できる第2サブネットワークの検証鍵を取得する。さらなるサブステップにおいて、ノードは、状態情報パッケージ上の共同署名を、状態情報パッケージの共同署名に対応する第2サブネットワークの検証された検証鍵で検証し得る。その結果、ノードは、信頼できる直近の実行状態を含む状態情報パッケージを取得する。一実施形態では、本方法は、分散ネットワークが、ブロックのブロックチェーンを生成するステップを含む。各ブロックは、実行状態のチェーンの実行状態に対応する。
【0026】
したがって、本発明の実施形態の方法は、複数のブロックのブロックチェーンを利用する分散ネットワークに有利に適用され得る。複数のブロックは、特に、ノードの計算ユニットによって処理される複数の入力ブロックであり得る。複数の入力ブロックは、特に、複数のノードの計算ユニットによって実行される実行メッセージを含み得る。ノードの実行状態は、対応するブロックの実行メッセージの実行結果に対応する。一実施形態では、状態情報パッケージは、ブロックチェーンの複数の後続ブロックの、特に複数の後続ブロックの有効性を検証するブロック検証情報を含む。状態情報パッケージは、ある時点における複数の実行状態のチェーンのうちの実行状態の一種のスナップショットを構築し、i番目のブロックごとに、例えば、500番目のブロックごとにのみ提供され得る。例えば、キャッチアップノードが、ネットワークが既に実行状態600にある期間にネットワークへの再接続を希望すると、キャッチアップノードは、実行状態500の状態情報パッケージしか得られない。したがって、実行状態600を完全にキャッチアップするために、それぞれのノードは、ブロック検証情報の助けを借りて、後続のブロック501から600まで自体を実行して検証する必要がある。ブロック検証情報は、特に、ブロックチェーンの複数のブロックの、特に状態情報パッケージの実行状態に続く複数のブロックの有効性を検証するために必要とされる検証鍵セットを含み得る。
【0027】
一実施形態では、状態情報パッケージは、第2サブネットワークの検証鍵の生成に使用された分散鍵生成プロトコルの鍵生成情報を備える。
【0028】
そのような鍵生成情報は、特に、キャッチアップノードが分散鍵生成プロトコルへの参加再開のために必要とされる情報一式を備え得る。分散鍵生成への参加再開のために必要とされる各情報は、それぞれの分散鍵生成プロトコルに依存する。一実施形態では、鍵生成情報は、分散鍵生成プロトコルの完了書類を含み得る。別の実施形態では、分散鍵生成プロトコルの要約を含み得る。この要約は、キャッチアップノードの共有秘密鍵の抽出を可能とすることで、分散鍵生成プロトコルおよび共同署名の生成に再参加可能とする。鍵生成情報のそのような支給は、複数のノードの効率的な再開をさらに容易にする。より具体的には、それは、再開ノードが、その実行状態の更新が可能となるだけでなく、署名実行に再参加可能とすることも容易にする。
【0029】
一実施形態では、状態情報パッケージは、完了証明書を備える。
【0030】
これにより、キャッチアップノードは、効率的な方法でキャッチアップパッケージの共同署名を検証可能になる。
【0031】
一般論では、状態情報パッケージは、分散ネットワークへの接続または再接続を希望するキャッチアップノードの実行状態を、現期間の実行状態と同期させることを可能にする情報セット一式を、本発明のいくつかの実施形態において備える。それぞれのセットの特定の情報は、それぞれのネットワークの技術的実装に依存し得る。
【0032】
一実施形態では、本方法は、状態情報パッケージを、所定の期間のブロックのうちの1つ、特に、所定の期間の最初のブロックに追加するさらなるステップを備える。
【0033】
これは、キャッチアップノード向けの状態情報パッケージへの容易なアクセスと同様に、この方法の効率的な実装を容易にする。
【0034】
一実施形態では、状態情報パッケージは、マークルツリー(Merkle-tree)構造として、特にマークルツリー構造のハッシュルートとして、実行状態を提供する。これは、メモリ効率の良い格納を可能にする。一実施形態では、本方法は、最新のノードから分散ネットワークへの接続または再接続を希望するキャッチアップノードが、マークルツリー構造のリーフハッシュを請求するステップと、キャッチアップノードが、それ自体の状態のリーフハッシュを最新ノードのリーフハッシュと比較するステップと、キャッチアップノードが、最新ノードから、異なるリーフハッシュを有するリーフに対応する状態情報のみを請求するステップとをさらに備える。
【0035】
このことは、迅速かつ効率的な状態の同期をさらに容易にする。
【0036】
一実施形態では、分散鍵生成プロトコルは、しきい値分散鍵生成プロトコルである。他の実施形態では、分散鍵生成プロトコルは、多重署名プロトコルまたは集約署名プロトコルである。異なる分散鍵生成プロトコルは、有効な鍵の生成に2つ以上のノードが必要であるという点で共通する。
【0037】
そのような実施形態は、ノードのキャッチアップをさらに容易にする。通常、ノードは、既知のノードからの通信のみを受諾する。そのような既知のノードは、特に信頼できるノードを包含する。これらは、特に、例えば同じサブネットワークの複数のノード、および分散ネットワークの通信方式または通信プロトコルにしたがって通信を行うそれぞれのノードに割り当てられるノードであり得る。キャッチアップノードが通信し得るノードセットの拡大は、キャッチアップノードのより迅速なキャッチアップを補助し得る。
【0038】
本発明の他の態様の一実施形態では、分散ネットワークが提供される。
【0039】
本発明の他の態様の一実施形態では、分散ネットワークの複数のノードが提供される。本発明の他の態様の一実施形態では、分散ネットワークを動作させるコンピュータプログラム製品が提供される。コンピュータプログラム製品は複数のプログラム命令が取り込まれたコンピュータ可読記憶媒体を備えており、複数のプログラム命令は、複数のノードのうちの1つ以上で本発明の方法の態様を実行可能である。
【0040】
本発明の他の態様の一実施形態では非一時的コンピュータ可読媒体上に符号化されたソフトウェアアーキテクチャが提供される。ソフトウェアアーキテクチャは、分散ネットワークの1つ以上のノードを動作させるように構成される。符号化されたソフトウェアアーキテクチャは、複数のノードのうちの1つ以上が実行可能なプログラム命令を備えており、複数のノードのうちの1つ以上で本発明の方法の態様のステップを備える方法を実行する。
【0041】
本発明の一態様の特徴および利点は、必要に応じて本発明の他の態様に適用し得る。
【0042】
他の有用な実施形態は、従属請求項および以下の説明に列記されている。
【0043】
以下の詳細な説明から、本発明はよりよく理解され、上記以外の目的が明らかになるであろう。そのような説明は、添付の図面を参照して行われる。
【図面の簡単な説明】
【0044】
【
図1】
図1は、本発明の一実施形態による分散型ネットワークの例示図である。
【
図2】
図2は、ネットワークの例示的なノード上で実行される計算ユニットの詳細図である。
【
図3】
図3は、本発明のいくつかの実施形態による分散ネットワークにおける複数のブロック生成を示す図である。
【
図4】
図4は、実行サブセットのノードにより処理される複数の入力ブロックのブロックごとの処理を示す図である。
【
図6】
図6は、本発明の一実施形態による管理サブネットの署名で証明されたサブネットの検証鍵を示す図である。
【
図7a】
図7aは、本発明のいくつかの実施形態による状態情報パッケージの生成のタイミング図である。
【
図7b】
図7bは、状態情報パッケージのブロック図である。
【
図8a】
図8aは、本発明のいくつかの実施形態による、公開鍵署名スキームの検証鍵を生成するコンピュータ実装方法の方法ステップの高レベルフローチャートである。
【
図8b】
図8bは、
図8aの方法のいくつかのステップのより詳細なフローチャートである。
【
図8c】
図8cは、
図8aおよび
図8bに示された方法ステップにより生成された対応する鍵材料を示す図である。
【
図9】
図9は、キャッチアップノードのその実行状態の更新手順を示す方法ステップのフローチャートである。
【
図10】
図10は、本発明のいくつかの実施形態の方法の態様のフローチャートである。
【
図11】
図11は、実行状態の実行状態情報の一例を示す図である。
【
図12】
図12は、最新ノードと古いキャッチアップノードとの間の同期を示す図である。
【
図13a】
図13aは、しきい値分散鍵生成プロトコルにより生成される鍵の実施形態を示す図である。
【
図13b】
図13bは、多重署名プロトコルにより生成される鍵の一実施形態を示す図である。
【
図14】
図14は、本発明の一実施形態による計算ユニットのより詳細な図である。
【
図15】
図15は、本発明の一実施形態によるノードの例示的な一実施形態を示す図である。
【発明を実施するための形態】
【0045】
最初に、本発明の実施形態のいくつかの態様全般および用語を紹介する。
【0046】
いくつかの実施形態では、分散ネットワークは、分散方式で配置された複数のノードを備える。このような分散ネットワークの計算では、ソフトウェアとデータが複数のノードにわたって分散される。複数のノードは計算リソースを構築し、分散ネットワークは、特に分散計算技術を使用し得る。
【0047】
いくつかの実施形態では、分散ネットワークは、ブロックチェーンネットワークとして具体化され得る。「ブロックチェーン」という用語には、電子的なコンピューターベースの分散型台帳のすべての形態を含み得る。いくつかの実施形態では、ブロックチェーンネットワークは、プルーフオブワークブロックチェーンネットワークとして具体化され得る。他の実施形態では、ブロックチェーンネットワークは、プルーフオブステークブロックチェーンネットワークとして具体化され得る。
【0048】
検証鍵とは、広く公開されることを意図した公開鍵署名方式のビット列である。検証鍵は公開鍵とも称されて、例えば、公開鍵署名方式のデジタル署名の検証用として使用され得る。
【0049】
本発明のいくつかの実施形態の公開鍵署名方式は、例えば、RSAなどの公開鍵署名方式および暗号化方式の鍵、またはシュノア署名やDSAなどの公開鍵署名方式の鍵を備え得る。
【0050】
秘密鍵(sk)は、公開鍵、特に検証鍵に関連するビット列で、暗号化動作、特にメッセージのデジタル署名を可能にする。
【0051】
分散鍵生成(DKG)は、一連のディーラー(秘密情報の保持者)が公開鍵、特に検証鍵を生成し、一連の受信者に対応する秘密鍵の共有秘密鍵の提供を可能とするプロトコルである。
【0052】
秘密再配布プロトコルは、秘密再共有プロトコルとも称され得、秘密鍵の共有秘密鍵を更新するプロトコルである。いくつかの実施形態では、プロトコルは、新規のまたは更新された共有秘密鍵を、その共有秘密鍵の以前の保持者に提供し得る。他の実施形態では、プロトコルは、新規のまたは更新された共有秘密鍵を、新規の、特に、異なる一連の受信者に提供し得る。
【0053】
検証可能な秘密分散(VSS)とは、単一のディーラーがランダムな秘密s、一連の受信者に対する秘密共有のしきい値s1、・・・、sn、および各受信者がその共有siの正当性の検証に使用可能な証拠を生成可能にするプロトコルである。
【0054】
いくつかの実施形態では、フェルドマンプロトコル(the Feldman protocol [Fel87])、ジョイントフェルドマンプロトコル(joint Feldman protocol [Ped91])、およびGJKRプロトコル(the GJKR protocol [GJKR99])を分散鍵生成プロトコルとして使用し得る。これらのプロトコルは、例えば、非特許文献1(the Feldman protocol [Fel87])、非特許文献2(joint Feldman protocol [Ped91])、および非特許文献3(the GJKR protocol [GJKR99])に公開されており、それらの対応する開示は、参照して本明細書に組み込まれる。
【0055】
本発明のいくつかの実施形態では、秘密再配布プロトコルとして、非特許文献4、非特許文献5、および非特許文献5に記載のプロトコルも使用し得る。
【0056】
図1に、本発明の一実施形態による分散ネットワーク100の例示的なブロック図を示す。分散ネットワーク100は、複数のノード10を備え、これらのノードは、ネットワークノード10と称され得る。複数のノード10は、複数のサブネットワーク11に分散されている。以下では、複数のサブネットワーク11をサブネット11とも表記する。
図1の例では、SN0、SNA、SNB、およびSNCで表示される4つのサブネット11が設定されている。サブネット11は、第1サブネットを構築し、それは管理サブネットと称され得る。サブネットSNA、SNB、およびSNCは、一般に、第2サブネットと称され得る。複数のサブネット11の各々は、それぞれのサブネット11の各ノード10上で一連の計算ユニットを実行するように構成される。いくつかの実施形態では、計算ユニットは、ソフトウェアの一部として、特に、それ自体のユニット状態を含むか、またはそれを含むソフトウェアの一部として理解されるべきである。ユニット状態は、実行状態とも称され得る。ネットワーク100は、それぞれのサブネット11内のサブネット内通信を行う通信リンク12を備え、それらは特に、同じサブネットに割り当てられた計算ユニット間でサブネット内のユニット間メッセージの通信を行う。さらに、ネットワーク100は、サブネット11のうちの異なるサブネット間のサブネット間通信を行う通信リンク13を備え、それらは特に、異なるサブネットに割り当てられた計算ユニット間でサブネット間のユニット間メッセージの通信を行う。したがって、通信リンク12は、サブネット内またはピアトゥピア(P2P)通信リンクとしても示され得、通信リンク13は、サブネット間またはサブネットトゥサブネット(SN2SN)通信リンクとしても示され得る。
【0057】
いくつかの実施形態では、分散型ネットワークは、特に、メッセージングプロトコルを通してサブネットSNA、SNB、およびSNC間でサブネット間メッセージ16を交換するように構成され得る。
【0058】
いくつかの実施形態では、ユニット状態または実行状態は、計算ユニットが使用するすべてのデータまたは情報、特に計算ユニットが変数に格納するデータだけでなく、計算ユニットがリモート呼び出しから取得するデータも含むと理解され得る。ユニット状態または実行状態は、特に各ノードの各メモリ位置における格納場所を表し得る。いくつかの実施形態では、これらの格納場所の内容は、計算ユニットが実行されている任意の時点でのユニット状態と称される。計算ユニットは、特に、ステートフル計算ユニットとして具体化し得る。つまり、いくつかの実施形態では、計算ユニットが以前の事象またはユーザの対話を記憶するように設計される。
【0059】
本発明のいくつかの実施形態では、複数のサブネット11は、それぞれのサブネット11にわたる一連の計算ユニットを複製するように構成される。より具体的には、複数のサブネット11は、それぞれのサブネット11にわたる計算ユニットのユニット状態または実行状態を複製するように構成される。
【0060】
各々のサブネット11は、公開鍵署名方式の個々の検証鍵、すなわち別々の検証鍵を保持する。この事例では、サブネットSN0は検証鍵pk0を保持し、サブネットSNAは検証鍵pkAを保持し、サブネットSNBは検証鍵pkBを保持し、サブネットSNCは検証鍵pkCを保持する。検証鍵は、以下では一般にpkXと称され得る。ここで、Xは対応するサブネットを示す。いくつかの実施形態では、検証鍵pkXは一定であるか、言い換えれば、それぞれのサブネット11の有効期限全体にわたって固定される。したがって、検証鍵pkXは、静的検証鍵または定数検証鍵としても表し得る。
【0061】
いくつかの本実施形態では、静的検証鍵pk
Xは、第1サブネットワークSN0が実行する分散鍵生成プロトコルにより生成される。より具体的には、第1サブネットワークSN0は、それ自体の検証鍵pk
0、ならびにサブネットワークSNA、SNB、およびSNCの検証鍵pk
A、pk
B、およびpk
Cを生成する。したがって、第1サブネットワークSN0は、管理サブネットワークを形成している。次に、
図8a、
図8b、および
図8cを参照して、第1サブネットワークSN0による複数の検証鍵の生成についてより詳細に説明する。方法ステップは、例えば、
図1に示される分散ネットワーク100が実行し得、
図1のサブネット構造を参照して示される。
図8aに、本発明のいくつかの実施形態で、公開鍵署名方式の検証鍵を生成するコンピュータ実装方法の方法ステップの高レベルフローチャートを示す。
図8bは、
図8aの方法のいくつかのステップのより詳細なフローチャートを示し、
図8cは、それぞれの方法ステップが生成する対応鍵材料を示す。
【0062】
以下の例示的かつ簡略化された説明では、サブネットワークSN0は、第1サブネットワークとして、言い換えれば、管理サブネットワークとして動作し、3つのノードN1、N2、およびN3を備える。サブネットワークSNAは、例示的な第2サブネットワークとして動作し、
図8cに示されるように、3つのノードN4、N5、およびN6を備えると仮定する。
【0063】
ステップ810において、第1サブネットワークSN0の複数のノード10のサブセット、例えば、すべてのノードN1、N2、およびN3を備えるサブセットが、第1分散鍵生成プロトコルを実行する。より詳細には、サブセットの複数のノードは、第1検証鍵として、第1サブネットワークSN0用の検証鍵pk
0と、第1サブネットワークの複数のノードN1、N2、およびN3に対応する複数の共有秘密鍵share
0,N1、share
0,N2、およびshare
0,N3、を共同で生成する。第1DKGプロトコルの実行結果は、欄820に示される。ステップ830において、第1サブネットワークSN0のノード10は、第2サブネットワークSNAについて、第2分散鍵生成プロトコルを実行する。これにより、欄840に示すように、ノードN4、N5、およびN6は、検証鍵pk
Aに対応する複数の共有秘密鍵share
A,N4、share
A,N5、およびshare
A,N6を保持する。
図8bを参照すると、ステップ830がより詳細に図示されている。ステップ831において、第1サブネットワークのサブセットの複数のノード、すなわち複数のノードN1、N2、およびN3は、第2検証鍵として、第2サブネットワークSNA用の検証鍵pk
Aと、ノードN1、N2、およびN3に対応する複数の共有秘密鍵share
A,N1、share
A,N2、およびshare
A,N3を共同で生成する。言い換えれば、最初に、第1サブネットワークSN0の複数のノードN1、N2、およびN3は、検証鍵pk
Aに対応する複数の共有秘密鍵share
A,N1、share
A,N2、およびshare
A,N3を保持する。このステップの結果は、欄832に示される。次いで、ステップ833において、第1サブネットワークSN0の複数のノードN1、N2、およびN3は秘密再配布プロトコルを実行し、第2サブネットワークSNAの複数のノードN4、N5、およびN6へそれらの共有秘密鍵share
A,N1、share
A,N2、およびshare
A,N3を再配布、言い換えれば再共有する。これは、第2サブネットワークSNAの第2検証鍵pk
Aに対応する第2共有秘密鍵セットshare
A,N4、share
A,N5、およびshare
A,N6を生成する。このステップの結果は、欄834に示される。これにより、第2ノードセットの複数のノードN4、N5、およびN6の各々のノードは、第2共有秘密鍵セットshare
A,N4、share
A,N5、およびshare
A,N6のうちの1つの共有秘密鍵を保持する。秘密再配布プロトコルは、特に、以下のように実装され得る。第1サブネットワークSN0の複数のノードN1、N2、およびN3は、それらの複数の共有share
A,N1、share
A,N2、およびshare
A,N3から複数の共有を生成し、それら複数の共有のこれら共有を複数のノードN4、N5、およびN6に配布する。次いで、複数のノードN4、N5、およびN6は、受け取った複数の共有share
A,N1、share
A,N2、およびshare
A,N3から、それら自身の個々の共有秘密鍵share
A,N4、share
A,N5、およびshare
A,N6を計算する。
【0064】
再び
図8aを参照すると、さらなるステップ850は、第1サブネットワークのノードのサブセットである、例えば複数のノードN1、N2、およびN3が、第2サブネットワークSNAおよび共有秘密鍵SNAの許容可能なサブセットの検証鍵pk
Aと、第1サブネットワークSN0の複数のノードN1、N2、およびN3に対応する複数の共有秘密鍵share
0,N1、share
0,N2、およびshare
0,N3に署名することを含む。これにより、第2サブネットワークの検証鍵pk
A上には共同署名σ
pk0が生成されている。
【0065】
図2に、ネットワーク100のノード10上で動作する計算ユニット15をより詳細に示す。ネットワーク100は、ネットワーク100上で動作している計算ユニットの各々を、複数のサブネットのうちの1つ、この例では、サブネット割り当てにしたがってサブネットSN0、SNA、SNB、またはSNCのうちの1つに割り当てるように構成される。分散ネットワーク100のサブネット割り当ては、サブネットSN0、SNA、SNB、およびSNCの各々について、一連の計算ユニット全体の割り当てサブセットを作成する。
【0066】
より詳細には、
図2の左側201には、
図1のサブネットSN0の1つのノード10を示す。分散ネットワーク100のサブネット割り当ては、5つの計算ユニット15のサブセットがサブネットSN0に割り当てられている。より詳細には計算ユニットCU
01、CU
02、CU
03、CU
04、およびCU
05のサブセットがサブネットに割り当てられている。計算ユニットCU
01、CU
02、CU
03、CU
04、およびCU
05が割り当てられたサブセットは、サブネットSN0の各々のノード10上で動作する。さらに、それらの計算ユニットが割り当てられたサブセットは、計算ユニットCU
01、CU
02、CU
03、CU
04、およびCU
05の各々が同じユニット状態または実行状態をトラバースするように、サブネットSN0全体にわたって複製される。
【0067】
さらに、
図2の右側202に、4つの計算ユニット15、より詳細には、計算ユニットセットCU
A1、CU
A2、CU
A3、およびCU
A4が実行される
図1のサブネットSNAの1つのノード10を示す。計算ユニットセットCU
A1、CU
A2、CU
A3、およびCU
A4は、サブネットSNBのそれぞれのノード10上で実行される。さらに、計算ユニットセットは、計算ユニットCU
A1、CU
A2、CU
A3、およびCU
A4の各々は同じユニット状態または実行状態を有するように、サブネットSNA全体にわたって複製される。
【0068】
図3は、本発明のいくつかの実施形態での、分散ネットワークにおける複数のブロックの作成を示す。複数のブロックは、特に、実行サブセットの計算ユニットが処理する複数の入力ブロックであり得る。実行サブセットが処理すべき複数のブロックは、サブネットのそれぞれのノードのコンセンサスサブセットにより合意されている。
【0069】
この例示的な実施形態では、3つの入力ブロック301、302、および303が示されている。ブロック301は、複数のトランザクション、すなわち、トランザクションtx1.1、tx1.2、および可能であればドットで示されるさらなるトランザクションを備える。ブロック302はまた、複数のトランザクション、すなわち、トランザクションtx2.1、tx2.2、および可能であればドットで示されるさらなるトランザクションを備える。ブロック302はまた、複数のトランザクション、すなわち、トランザクションtx3.1、tx3.2、および可能であればドットで示されるさらなるトランザクションを備える。複数の入力ブロック301、302、および303は、まとめられてチェーン状に接続される。より詳細には、ブロックの各々は、前のブロックのブロックハッシュを備える。これにより、現ブロックと前ブロックとが暗号的に繋がれる。
【0070】
いくつかの実施形態では、トランザクションは、特に、実行サブセットの複数のノードが実行する実行メッセージであり得る。いくつかの実施形態では、複数の入力ブロック301、302、および303は、プルーフオブステークコンセンサスプロトコルにより生成され得る。しかしながら、コンセンサスコンポーネントが生成する複数の入力ブロックは、いくつかの実施形態では、互いにチェーン状にされる必要はないことに留意されたい。むしろ、受信メッセージの選択および/または処理順序に関してノード間で何らかの種類のコンセンサスに達する任意のコンセンサスプロトコルが、いくつかの実施形態では使用され得る。
【0071】
図4に、実行サブセットの複数のノードN1~N6が処理する複数の入力ブロックについて、その概略を示す。ここでブロックごとの処理を簡略化されている。いくつかの実行メッセージは、まとめてグループ化され、ブロックを形成し得るが、それらの実行メッセージは、ブロック内部でそれらの論理的順序を維持する。ミューテーションとしても示され得る実行メッセージの例を以下に示す。
-使用者Uは、引数Xを持つ計算ユニットBに対して方法Mの実行を要請する。
-開発者Vは、初期状態Sで計算ユニットDのインストールを要請する。
-開発者Vは、ステートトランジション機能S→S´を用いて計算ユニットDを計算ユニットD´へのアップグレードを要請する。
-開発者Vは計算ユニットDの削除を要請する。
【0072】
実行サブセットの複数のノードN1、N2、N3、N4、N5、およびN6の各々は、一般に、ブロックN、N-1、N-2などの実行メッセージを備える複数の入力ブロックの同じチェーンを実行するように構成される。ブロックN、N-1、N-2の数は、ブロックチェーンの高さとして表し得る。この例では、基礎をなす分散ネットワークの複数のノード、特にそれぞれのサブネットの複数のノードの実行サブセットは、3つの計算ユニットCU1、CU2、およびCU3を備えると仮定する。6つのノードN1~N6の各々は、3つの計算ユニットCU1、CU2、およびCU3のレプリカを実行する。上述のように、6つのノードN1~N6の各々は、複数の実行ブロックの処理を決定論的に実行するが、複数の入力ブロックの処理は、同時に実行される必要はなく、千鳥配置でもよい。言い換えれば、複数のノードは、ブロックチェーンの異なる高さにあり得る。ノードが高さNの入力ブロックを処理または実行すると、ノードは、対応する実行状態Nを有する。言い換えれば、ノードの実行状態Nは、入力ブロックNの実行結果に対応する。
図4の例では、ノードN1は、入力ブロック87を正常に実行済で実行状態87にあり、次の入力ブロックとして入力ブロック88を処理するように適合される。さらに、ノードN2は、入力ブロック88を正常に実行済で実行状態88にあり、次の入力ブロックとして入力ブロック89を処理するように適合される。これに対応して、ノードN3はすでに実行状態93にあり、ノードN4は実行状態91にあり、ノードN5は実行状態92にある。ノードN1~N5の実行状態は、依然として互いに近接しており、少し遅れているノードは、実行状態をトラバースするために残りの入力ブロックの処理が必須である。しかしながら、ノードN6が追跡を失ったノードであると仮定すると、例えば、クラッシュしたノードとして雷印で指し示され得る。実行状態の追跡を失ったノードN6は、最新の実行状態に近いノードN1~N5にキャッチアップする方法または手段を必要とする。これ以降、ノードN6はまた、キャッチアップノード6として示され得る。
【0073】
図5に、
図4に対応する複数のノードN1~N6の状態図を示す。それら複数のノードN1~N6は、実線矢印で示される通信リンク510を通して互いに通信し得る。しかしながら、キャッチアップノードN6は、もはや最新ではないので、残りのノードN1~N5への接続を失っており点線矢印520により示される。
【0074】
本発明のいくつかの実施形態では、キャッチアップノードN6に一連の情報が提供される。言い換えれば、ノードN6にそれ自身の実行状態をネットワークの現実行状態にキャッチアップすることを容易にする、または可能にする情報パッケージを提供する。そのような情報パッケージまたは一連の情報は、これ以降、状態情報パッケージまたはキャッチアップパッケージとも称される。このような状態情報パッケージを含み得る情報の詳細について、以下でさらに説明する。
【0075】
図6を参照すると、キャッチアップノード、例えばキャッチアップノードN6がそのような状態情報パッケージを検証することを可能にする、本発明のいくつかの実施形態による方法が説明されている。
【0076】
より具体的には、
図6には、第1サブネットまたは管理サブネットSN0の署名σ
pk0で認証されており、通常、第2検証鍵610として参照される第2サブネットSNA、SNB、およびSNCの複数の第2検証鍵pk
A、pk
B、およびpk
Cがそれぞれ示されている。よって、すべての第2検証鍵610は、第1サブネットまたは管理サブネットSN0の検証鍵pk
0へ差し戻される。このように、第1サブネットまたは管理サブネットSN0の検証鍵pk
0は、分散ネットワークのルートオブトラストを構築する。
【0077】
公開検証鍵pkA、pkB、およびpkCの各々は、管理サブネットの事前に定義された共有秘密鍵の最小個数により、すなわち、検証鍵pk0に対応する共有秘密鍵により署名される。公開検証鍵pkiに対応する事前に定義された最小個数の共有秘密鍵が共同で生成する署名は、関与する複数のノードの共同署名620を形成し、それは、以降σpkiで表される。
【0078】
このようにして形成された鍵は、分散ネットワークについてルートオブトラストを構築する検証鍵pk0で検証可能である。鍵610は、署名620とともに、鍵証明書630を形成する。
【0079】
ネットワークの複数のノードの検証、特にキャッチアップノードの検証を可能にするために、ネットワークは、管理委員会または管理サブネットによる共同署名とともに、複数の第2サブネットワークの新たに生成された複数の検証鍵を公開し得る。
【0080】
検証鍵証明書630の公開は、さまざまな方法で行うことが可能であって、これは、それぞれの分散ネットワークの通信メカニズムに依存する。しかし、一般論では、公開は、ネットワークの複数のノード、特にキャッチアップノードに利用可能にするものとして理解されるべきである。
【0081】
複数の鍵証明書630および対応する複数の検証鍵は、状態情報パッケージの署名を検証するために、本発明のいくつかの実施形態にしたがって使用され得る。
【0082】
図7aに、ブロック番号22~32を有するブロック711を備えるブロックチェーン710のタイミング図を示す。図示した例では、4つのブロックが、ブロックチェーン710の4つのブロック711の事前に定義された期間720を創設する。ブロックチェーン710に対応して、分散ネットワークの複数のノードは、一連の実行状態22~31の連鎖740をトラバースする。実行状態22~31は、参照番号741で表示され、さらに菱形741で図示されている。分散ネットワークの実行サブセットの複数のノードは、対応するブロックNの実行メッセージを実行した後、実行状態Nにキャプチャまたは移動する。一例として、実行サブセットの複数のノードは、ブロック24の実行メッセージを実行した後、実行状態24をキャプチャまたは移動する。このため、
図7aの状態を表す菱形741は、対応するブロック711に対して少しずらしてして示されている。
図7aの例では、ブロック25~28を備える7番目の期間の状態情報パッケージは、このサブネットの検証に対応する共有秘密鍵で署名され得る。いくつかの実施形態では、状態情報パッケージは、キャッチアップパッケージまたはリカバリパッケージとしても示され得る。状態情報パッケージは、特に、実行状態または実行状態のハッシュを備える。状態情報パッケージが実行状態のハッシュのみを備える実施形態は、ハッシュの肯定的な検証では、それぞれのノードが最初にハッシュをチェックし、完了実行状態のみをダウンロードし得るとの利点を有する。このような実施形態では、状態情報パッケージは、pk
0から、それの検証に必要なすべての鍵および証明書とともにハッシュを備える。これにより、完全な状態の不必要なダウンロードを回避し得る。ハッシュの肯定的な検証では、(完了)実行状態自体を別々にフェッチし得る。実行状態は、特に直近の実行状態、特に現期間の実行状態であり得る。例えば、
図7aを参照すると、それぞれのサブネットのそれぞれの確認鍵pk
Xに対応する共有秘密鍵は、ブロック24の実行後の実行状態に対応する実行状態24の状態情報を備える状態情報パッケージSIP、750に署名し得る。いくつかの実施形態では、状態情報パッケージSIP、750は、ブロックチェーンのブロックに追加され得る。いくつかの実施形態では、複数の期間720の各々の最初のブロックは、状態情報パッケージSIP、750を備える。
【0083】
図7bに、状態情報パッケージSIP、750のより詳細なブロック図を示す。状態情報パッケージ750は、最初に実行状態741を構成する。加えて、状態情報パッケージ750は、
図6に示されるような証明書630に対応し得る証明書730を備える。
【0084】
さらに、状態情報パッケージ750は、ブロック検証情報752を含む。そのようなブロック検証情報752は、特にブロックチェーンの後続の複数のブロック、特に後続の複数のブロックの有効性の検証に必要な情報を備え得る。この点において、後続の複数のブロックは、状態情報パッケージの実行状態に続いて実行されるべきブロックである。ブロック検証情報は、特に、ブロックチェーンの複数のブロックの有効性の検証に必要な検証鍵セットを備え得る。
【0085】
完全な状態情報パッケージ750は、それぞれのサブネットの検証鍵pkXに対応する予め定義された最小個数の共有秘密鍵により共同署名σpkXで署名される。証明書730は、pkXの検証に必要な検証鍵を備える。検証鍵証明書を用いてpkXを検証した後、それぞれのノードは、検証された検証鍵pkXを用いて、状態情報パッケージ750上の署名σpkXを検証できる。証明書730は、いくつかの実施形態では、状態情報パッケージ750に含まれる必要はないが、他の通信チャネルを通してそれぞれのキャッチアップノードに通信され得ることに留意されたい。
【0086】
図9に、キャッチアップノードがその実行状態の更新を可能とする方法の、複数のステップのフローチャート900を示す。ステップ910において、キャッチアップノードは、状態情報パッケージ、例えば、
図7bに示された状態情報パッケージ750を受信する。キャッチアップノードは、例えば、状態情報パッケージを含むブロックから状態情報パッケージを抽出し得る。次いで、キャッチアップノードは、2段階のアプローチで、受信された状態情報パッケージを検証する。
【0087】
最初に、ステップ920において、キャッチアップノードは、状態情報パッケージから証明書を抽出する。さらに、ステップ930において、その証明書を使用して、状態情報パッケージの共同署名に対応する検証鍵を検証する。ステップ920およびステップ930では、状態情報パッケージの検証の第1部分または第1ステップを形成する。次に、ステップ940において、キャッチアップノードは、ステップ920およびステップ930においてあらかじめ検証した検証鍵を用いて、状態情報パッケージ上の共同署名を検証する。
【0088】
検証が成功すると、ステップ950において、キャッチアップノードでは、状態情報パッケージのさらなる要素を用いて、特に状態情報パッケージが提供する実行状態741を用いて、その実行状態の同期が可能となる。
【0089】
図10に、本発明のいくつかの実施形態の方法の態様のフローチャートを示す。より具体的には、分散ネットワークおよび関連プロトコルの複数のブロックに状態情報パッケージを定期的に追加する方法を示す。
【0090】
この方法は、ループ1010において、コンセンサスプロトコルを定期的に実行することで、複数のノードの実行サブセットが、特にサブネットワークが実行すべき一連の実行メッセージ上でコンセンサスに到達する。ネットワークの複数のノードのコンセンサスサブセットが、特にサブネットのコンセンサスサブセットが、コンセンサスプロトコルを実行し得る。ループ1010は、コンセンサスサブセットの複数のノードが新たな入力ブロック上でコンセンサスに達するステップ1011を含む。これらの入力ブロックは、増加する高さ指数Nでナンバリングされ得る。Nは、増加する整数、すなわち、例えば、0、1、2、3・・・Nである。高さ指数は、ブロック高さとしても示され得る。
【0091】
次いで、合意された複数の入力ブロックの実行メッセージは、ステップ1021において、実行サブセットの複数のノードの計算ユニットが決定論的に個別に実行する。実行の結果として、ステップ1022において、実行サブセットの複数のノードがそれらの実行状態を更新し、それにより、一連の実行状態をトラバースする。上述したように、実行サブセットの異なる複数のノードは、ある時点におけるチェーンの異なる位置で動作し得る。ステップ1021およびステップ1022は、ループ1020において繰り返される。
【0092】
さらに、本方法は、状態情報パッケージSIPを生成し署名するループ1040を備える。状態情報パッケージSIPは、全てのブロックに対して生成されるのではなく、i番目のブロックごとにおいてのみ、例えば500番目のブロックごとに生成される。これは、例えば、カウンタを用いて実施し得る。よって、各ブロックの生成後、ステップ1041において、カウンタが起動され、カウンタが満了したかどうかが照合される。カウンタは、さまざまな方法で具体化し得る。具体的には、ループ1010を所定回数処理した後、例えばループ1010を500回処理した後に終了するようにプログラムし得る。カウンタが満了すると、複数のノードは、ステップ1042において、上述の情報、特に直近の実行状態を備え得る状態情報パッケージSIPをコンパイルする。次いで、ステップ1043において、現期間または現ループ、の状態情報パッケージは、それぞれのサブネットワークの検証鍵に対応する事前に定義された最小個数の共有秘密鍵で署名される。次に、ステップ1044において、状態情報パッケージSIPがブロックチェーンのブロックに追加され、カウンタがリセットされる。
【0093】
図11に、実行状態「state@5000」の実行状態1100を例示する。
【0094】
実行状態は、ツリー構造データとして提供される。そのような実行状態は、数ギガバイトの合計サイズを有し得る。ディスク上の効率的な記憶のために、例えば、64Kバイトのメモリページを備え得る。
【0095】
実行状態state@5000は、複数の計算ユニットの実行状態およびメタデータを備える。複数の計算ユニットの実行状態情報は、実行メッセージを計算した計算結果を含む。実行状態情報は、メモリページとして格納され得る。システムメタデータは、計算ユニットおよび未処理メッセージのコンテキストおよびコールバックに代わってシステムが維持する他の状態を含み得る。いくつかの実施形態では、ツリー構造データのリーフは、対応するデータ、例えばそれぞれのメモリページのハッシュのみを含み得る。
【0096】
一実施形態では、実行状態は、マークルツリー構造として提供され得る。いくつかの実施形態では、状態情報パッケージは、ツリー構造、特にマークルツリー構造のハッシュルートのみを実行状態情報として格納し得る。このことは、メモリ効率に優れた格納を容易にする。ツリー構造は、最新のノードと、期限切れで分散ネットワークへの参加を再開したいキャッチアップノードと、の間の効率的な同期を容易にする。
【0097】
図12に、実行状態state@5000を有する最新ノード1210と、期限切れの状態state@4000を有する期限切れのキャッチアップノード1220と、の間のそのような同期を示す。
【0098】
一実施形態では、キャッチアップノード1220は、最新ノード1210からツリー構造の複数のリーフハッシュのみを請求し、それ自体の状態の複数のリーフハッシュを最新ノードのリーフハッシュと比較し得る。さらなるステップでは、キャッチアップノード1220は、次いで、最新ノード1210から、異なる複数のリーフハッシュを有する複数のリーフに対応する状態情報のみを請求し得る。このことは、完全な状態情報パッケージのダウンロードを回避するが、キャッチアップノードの状態とは異なる状態情報パッケージの一部のみをダウンロードする。
【0099】
図13aおよび
図13bに、本発明のいくつかの実施形態での複数の検証鍵、および管理委員会サブネットから取得された、それらに対応する共有秘密鍵のいくつかの実施形態を図示する。
【0100】
図13aに、しきい値分散鍵生成プロトコルが生成する鍵1310の実施形態を示す。
この例では、N個のノードが分散鍵生成プロトコルに参加すると仮定する。分散鍵生成プロトコルのラウンドの各々について、N個のノードの各々は、i=1、・・・、Nである共有秘密鍵sk
iを有する。N個のノードは、共同で共通公開鍵pkを生成する。ここで、事前に定義されたしきい値、例えば、ノードの少なくとも3分の2または3分の1が、新たな公開鍵または新たな検証鍵に同意し、しきい値署名σ
pkを生成するために、新たな公開鍵または検証鍵に共同で署名する必要がある。
【0101】
図13bに、多重署名プロトコルが生成する鍵1320の一実施形態を示す。
【0102】
この例では、N個のノードが分散鍵生成プロトコルに参加すると再び仮定する。分散鍵生成プロトコルのラウンドの各々について、N個のノードの各々は、i=1、・・・、Nである共有秘密鍵skiを有する。この実施形態では、共有秘密鍵は独立した秘密鍵skiとして具体化され得る。N個のノードは、ベクトルとして具体化される共通公開鍵または共通検証鍵ベクトルpkについて共同で合意する。ここでもまた、事前に定義されたしきい値、例えば、複数のノードの少なくとも3分の2またはノードの3分の1は、新たな公開鍵または検証鍵ベクトルpkについての秘密鍵(共有鍵)を有する署名を提供する必要がある。この実施形態では、N個のノードは、それぞれの秘密鍵ski、sk2、・・・、skNを用いて、ベクトル検証鍵ベクトルpkの対応する要素について個々の署名σ1pk1、σ2pk2、・・・、σNpkNを実行する。より詳細には、個々の署名σipkiの各々は、対応する個々の公開鍵pkiを有する。よって、そのような実施形態では、検証鍵は、個々の公開鍵のpkiのベクトルpk=(pki、pk2、・・・、pkN)として具体化され、共同署名もベクトルσpk=(σ1pk1、σ2pk2、・・・、σNpkN)として具体化される。他の実施形態では、集約された署名方式も使用し得る。
【0103】
図14に、本発明の一実施形態による計算ユニット1400のより詳細な図を示す。計算ユニット1400は、ユーザまたはアプリケーション状態1401と、システム状態1402とを備える。
【0104】
ユーザ状態1401は、複数のモジュールの各々の実例とともに、計算ユニットおよびそれに付随する複数のモジュールの機能を実装するメインウェブアセンブリ(WASM)モジュールからなる。WASMモジュールの事例は、複数のメモリ、複数のグローバル変数、および複数のテーブルからなる。システム状態1402は、計算ユニットのコードによる自由な変更ができない。これには、メタデータ、計算ユニットに代わってシステムが維持する他の状態、特にWASMモジュールのコンパイルされた形態、および未処理のメッセージについてのコンテキストおよびコールバックが含まれる。
【0105】
ここで
図15を参照すると、本発明の実施形態による、例えば、
図1のネットワーク100に示されるネットワークノード10のより詳細なブロック図が示されている。ネットワークノード10は、計算機能を実行し得、よって一般に計算システムまたはコンピュータとして具体化され得る計算ノードを構築する。ネットワークノード10は、例えば、サーバーコンピューターであり得る。ネットワークノード10は、分散ネットワークにより計算された計算結果へのアクセスを分散ネットワークのユーザに提供するコンピュータ実装方法を実行するように構成され得るネットワークノード10は、他の多くの汎用または特殊目的の計算システム環境または構成で動作し得る。ネットワークノード10は、コンピュータシステムが実行するプログラムモジュールなどのコンピュータシステム実行可能命令の一般的なコンテキストで記述し得る。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。ネットワークノード10は、汎用計算装置の形態で示されている。ネットワークノード10の構成要素は、1つ以上のプロセッサまたは処理装置1515、システムメモリ1520、およびシステムメモリ1520を含むさまざまなシステム構成要素をプロセッサ1515に結合するバス1516を含み得る。ただし。これらに限定されるものではない。バス1516は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイテッドグラフィックスポート(AGP)、さまざまなバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスなど、いくつかのタイプのバス構造の1つ以上を表す。例えば、これらに限定されるものではないが、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。ネットワークノード10は、通常、さまざまなコンピュータシステム可読媒体を含む。そのような媒体は、ネットワークノード10によりアクセス可能である任意の利用可能な媒体であり得る。そしてそれは、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可媒体の両方を含む。システムメモリ1520は、ランダムアクセスメモリ(RAM)1521および/またはキャッシュメモリ1522などの揮発性メモリの形態のコンピュータシステム可読媒体を含み得る。ネットワークノード1510は、他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含み得る。一例として、記憶システム1523は、読み取りおよび書き込み用の取り外し不可で不揮発性の磁気媒体(図示せず、通常は「ハードドライブ」と呼ばれる)を提供可能である。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(登録商標)ディスク」)に読み取りおよび書き込みを行う磁気ディスクドライブ、ならびにCD-ROM、DVD-ROM、およびその他の光学媒体のような取り外し可能な不揮発性光ディスクに、読み取りまたは書き込みを行う光ディスクドライブを提供し得る。このようなとき、それぞれが1つ以上のデータ媒体インターフェイスによりバス21516に接続可能である。以下でさらに描写および説明されるように、メモリ1520は、本発明のいくつかの実施形態の機能を実行するように構成されたプログラムモジュール一式(例えば、少なくとも1つ)を有する少なくとも1つのコンピュータプログラム製品を含み得る。プログラムモジュール1531一式(少なくとも1つ)を有するプログラム/ユーティリティ1530は、一例として、これに限定されるものではないが、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータが、メモリ1520に格納され得る。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせのそれぞれは、ネットワーク環境へ実装し得る。プログラムモジュール1531は、一般に、本明細書に記載されるような本発明のいくつかの実施形態の機能および/または方法論を実施する。プログラムモジュール1531は、分散ネットワークのユーザに分散ネットワークにより計算された計算結果へのアクセス提供するための、コンピュータに実装する方法の特定の1つ以上のステップ、例えば、上述の方法の1つ以上のステップを実行し得る。ネットワークノード10はまた、ディスプレイ1518と同様に、キーボードまたはポインティング装置などの1つ以上の外部装置1517と通信し得る。このような通信は、入出力(I/O)インターフェイス1519を介して実施可能である。さらに、ネットワークノード10は、ネットワークアダプタ1541を通して、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、および/またはパブリックネットワーク(例えば、インターネット)のようなネットワークのうち1つ以上のネットワーク40と通信可能である。いくつかの実施形態では、ネットワーク1540は、特に、複数のネットワークノード10、例えば、
図1に示されるようなネットワーク100を備える分散型ネットワークであり得る。図示したように、ネットワークアダプタ1541は、バス1516を通してネットワークノード10の他のコンポーネントと通信する。特に示されていないが、他のハードウェアおよび/またはソフトウェアコンポーネントをネットワークノード10と組み合わせて使用できることを理解されたい。
【0106】
本発明の態様は、システム、特に、複数のサブネットを備える分散ネットワーク、方法、および/またはコンピュータプログラム製品として具体化され得る。コンピュータプログラム製品は、プロセッサが本発明の態様を実行するためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0107】
コンピュータ可読記憶媒体は、命令実行装置が使用する命令を保持および格納可能な有形装置であり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組合せであり得るが、これらに限定されるものではない。コンピュータ可読記憶媒体は、本明細書で使用されるように、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または配線を通して送信される電気信号などのそれ自体が一時的な信号であるもの、と解釈されるべきではない。
【0108】
本明細書で説明するコンピュータ可読プログラム命令は、それぞれの計算または処理装置に、コンピュータ可読記憶媒体、またはネットワーク、たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはワイヤレスネットワークを介して、外部コンピュータまたは外部記憶装置にダウンロード可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを含み得る。各計算または処理装置内のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれの計算/処理装置内のコンピュータ可読記憶媒体に記憶するために、コンピュータ可読プログラム命令を転送する。
【0109】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組合せで記述されたソースコードまたはオブジェクトコードのいずれかであり得る。
【0110】
本発明の態様は、本発明の実施形態による方法、ネットワーク、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して本明細書で説明される。
【0111】
本発明の実施形態によるコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて、機械を生成し得る。これにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサで実行される命令が、フローチャートおよび/またはブロック図のブロックまたはブロックに指定された機能/動作を実装するための手段が生成される。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに特定の方法で機能するように指示可能であるコンピュータ可読記憶媒体に格納され得る。その格納された命令を有するコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図または複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を備える。
【0112】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードすることで、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上で実行される一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行されるコンピュータ実装プロセスを生成し得る。これにより、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上で実行される命令は、フローチャートおよび/またはブロック図または複数のブロックにおいて指定される機能/動作を実装する。
【0113】
図示したフローチャートおよびブロック図に、本発明のさまざまな実施形態による、ネットワーク、システム、方法、およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装する1つ以上の実行可能命令を備える、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実装形態では、ブロックに記載された機能は、図に記載された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得る。また、これらのブロックは、関与する機能に応じて逆の順序でも実行され得る。
【0114】
本明細書には、本発明の現状で好ましい実施形態が示され記載されているが、本発明は、それらに限定されるものではなく、特許請求の範囲内で、他の方法でさまざまに具体化され実施され得ることが明確に理解されるべきである。
【国際調査報告】