IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダッパー ラボ インコーポレイテッドの特許一覧

特許7251035機密知識の特殊な証明を提供するシステムおよび方法
<>
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図1
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図2
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図3
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図4
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図5
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図6
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図7
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図8
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図9
  • 特許-機密知識の特殊な証明を提供するシステムおよび方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-27
(45)【発行日】2023-04-04
(54)【発明の名称】機密知識の特殊な証明を提供するシステムおよび方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20230328BHJP
【FI】
H04L9/32 200C
H04L9/32 200E
【請求項の数】 23
(21)【出願番号】P 2022544416
(86)(22)【出願日】2021-07-30
(65)【公表番号】
(43)【公表日】2023-02-07
(86)【国際出願番号】 IB2021000518
(87)【国際公開番号】W WO2022023816
(87)【国際公開日】2022-02-03
【審査請求日】2022-07-20
(31)【優先権主張番号】63/058,918
(32)【優先日】2020-07-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522290536
【氏名又は名称】ダッパー ラボ インコーポレイテッド
【氏名又は名称原語表記】DAPPER LABS INC.
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ヨウセフ、タレク ベン
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2016-180840(JP,A)
【文献】特開2017-118447(JP,A)
【文献】BONEH, D. et al.,Short Signatures from the Weil Pairing,Journal of Cryptology,Springer,2004年07月30日,vol.17,pp.297-319,<DOI:10.1007/s00145-004-0314-9>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
共有されているデータを明らかにせずに、前記共有されているデータから生成される証明を検証するためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
第1のノードから、前記第1のノードに関連付けられた第1の秘密鍵と、前記第1のノードと第2のノードとの間で共有されているデータとから生成された第1の証明を、コンピュータが受信する工程と、
前記第2のノードから、前記共有されているデータと、前記第2のノードに関連付けられた第2の秘密鍵とから生成された第2の証明を、前記コンピュータが受信する工程と、
前記共有されているデータを明らかにせずに、前記第1の証明および前記第2の証明が両方とも、前記第1の秘密鍵に数学的に関連する第1の公開鍵、および前記第2の秘密鍵に数学的に関連する第2の公開鍵を用いて、前記共有されているデータから生成されたことを、前記コンピュータが検証する工程と、
前記第1の証明および前記第2の証明が両方とも、前記共有されているデータから生成されたという前記検証に基づいて、前記コンピュータがアクションを行う工程と
を含
前記第1の証明および前記第2の証明は各々、それぞれの前記秘密鍵を用いて生成された、前記共有されているデータの署名を含み、
前記署名は、ボネ・リン・シャチャム(BLS)署名スキームに基づき、
前記第1の証明および前記第2の証明の前記検証は、2つの前記署名、前記第1の公開鍵、および前記第2の公開鍵に基づいたペアリング同等性チェックを含む、コンピュータ実装方法。
【請求項2】
前記第1の証明および前記第2の証明は、それぞれ前記第1のノードおよび前記第2のノードによって公に明らかにされる、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記アクションは、前記第1の証明および前記第2の証明が両方とも、前記共有されているデータから生成されたという前記検証を公に明らかにする工程を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記第1の証明は、前記第1のノードに対してのみ帰属可能であり、前記第2の証明は、前記第2のノードに対してのみ帰属可能である、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記第1の証明および前記第2の証明は、非インタラクティブなプロトコルにおいて生成され、検証される、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを含み、前記計算は、前記実行トレースを含む、請求項に記載のコンピュータ実装方法。
【請求項8】
前記第2のノードは、前記ブロックの前記少なくとも1つのトランザクションを実行するために採用される前記実行ノードを含み、前記検証ノードは、前記計算が検証されたという証明として、前記第1の証明をパブリッシュする、請求項に記載のコンピュータ実装方法。
【請求項9】
前記アクションは、クライアントに対して状態応答を提供する工程を含み、前記状態応答は、前記ブロックについての出力に基づいて決定される、請求項に記載のコンピュータ実装方法。
【請求項10】
前記計算は、並行で独立した手法で計算検証を可能にするために、チャンクへと分けられ、前記アクションは、前記チャンクの各々が、前記実行ノードおよび前記検証ノードによって、同じ中間結果から整合して生成されることを調停する工程を含む、請求項に記載のコンピュータ実装方法。
【請求項11】
コンピュータによって実行された場合、前記コンピュータに、請求項1から10のいずれか一項に記載のコンピュータ実装方法を実行させる、コンピュータプログラム。
【請求項12】
共有されているデータを明らかにせずに、前記共有されているデータから生成された証明を検証するためのシステムであって、前記システムは、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに対して結合され、命令が記憶されたコンピュータ可読記憶デバイスであって、前記命令は、前記1つまたは複数のプロセッサによって実行された場合、前記1つまたは複数のプロセッサに、
第1のノードから、前記第1のノードに関連付けられた第1の秘密鍵と、前記第1のノードと第2のノードとの間で共有されているデータとから生成された第1の証明を受信する工程と、
前記第2のノードから、前記共有されているデータと、前記第2のノードに関連付けられた第2の秘密鍵とから生成された第2の証明を受信する工程と、
前記共有されているデータを明らかにせずに、前記第1の証明および前記第2の証明が両方とも、前記第1の秘密鍵に数学的に関連する第1の公開鍵、および前記第2の秘密鍵に数学的に関連する第2の公開鍵を用いて、前記共有されているデータから生成されたことを検証する工程と、
前記第1の証明および前記第2の証明が両方とも、前記共有されているデータから生成されたという前記検証に基づいて、アクションを行う工程と
を含む動作を行わせる、
コンピュータ可読記憶デバイスとを含
前記第1の証明および前記第2の証明は各々、それぞれの前記秘密鍵を用いて生成された、前記共有されているデータの署名を含み、
前記署名は、ボネ・リン・シャチャム(BLS)署名スキームに基づき、
前記第1の証明および前記第2の証明の前記検証は、2つの前記署名、前記第1の公開鍵、および前記第2の公開鍵に基づいたペアリング同等性チェックを含む、システム。
【請求項13】
前記アクションは、前記第1の証明および前記第2の証明が両方とも、前記共有されているデータから生成されたという前記検証を公に明らかにする工程を含む、請求項12に記載のシステム。
【請求項14】
前記共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを含み、前記第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを含み、前記計算は、前記実行トレースを含み、前記第2のノードは、前記ブロックの前記少なくとも1つのトランザクションを実行するために採用される前記実行ノードを含む、請求項12に記載のシステム。
【請求項15】
前記計算は、並行で独立した手法で、より軽量化された計算検証を可能にするために、チャンクへと分けられ、前記アクションは、前記チャンクの各々が、前記実行ノードおよび前記検証ノードによって、同じ中間結果から整合して生成されることを調停する工程を含む、請求項14に記載のシステム。
【請求項16】
1つまたは複数のプロセッサに対して結合され、命令が記憶された、1つまたは複数の非一時的なコンピュータ可読記憶媒体であって、前記命令は、前記1つまたは複数のプロセッサによって実行された場合、前記1つまたは複数のプロセッサに、
複数のノードの各々から、前記ノード間で共有されているデータと、各ノードに関連付けられたそれぞれの秘密鍵とから生成されたそれぞれの証明を受信する工程と、
前記共有されているデータを明らかにせずに、前記証明の各々が、前記秘密鍵のうちの個別の1つに各々が数学的に関連する複数の公開鍵を用いて、前記共有されているデータから生成されたことを検証する工程と、
前記証明が、前記共有されているデータから生成されたという前記検証に基づいて、アクションを行う工程とを含む動作を実行させ、
前記証明は各々、それぞれの前記秘密鍵を用いて生成された、前記共有されているデータの署名を含み、
前記署名は、ボネ・リン・シャチャム(BLS)署名スキームに基づき、
前記証明の前記検証は、前記署名、および前記公開鍵に基づいたペアリング同等性チェックを含む、1つまたは複数の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記証明の各々は、それぞれのノードによって公に明らかにされる、請求項16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記アクションは、前記証のそれぞれが両方とも、前記共有されているデータから生成されたという前記検証を公に明らかにする工程を含む、請求項16に記載のコンピュータ可読記憶媒体。
【請求項19】
前記証明の各々は、それぞれ生成した前記ノードに対してのみ帰属可能である、請求項16に記載のコンピュータ可読記憶媒体。
【請求項20】
前記証明は、非インタラクティブなプロトコルにおいて生成され、検証される、請求項16に記載のコンピュータ可読記憶媒体。
【請求項21】
前記共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを含む、請求項16に記載のコンピュータ可読記憶媒体。
【請求項22】
前記証明の検証の数は、前記ノードの数において線形であり、二次関数的ではない、請求項16に記載のコンピュータ可読記憶媒体。
【請求項23】
前記証明を検証する工程は、ノードの数よりも1つ少ない検証を必要とする、請求項16に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
開示されている技術は、一般に、強化されたデータ検証および暗号署名を提供するためのシステムおよび方法に関する。
【背景技術】
【0002】
古典的な暗号署名スキームにおいて、秘密鍵は、署名者によって取り扱われる唯一の秘密データである。対応する公開鍵は、公に知られているデータである。例えば、署名エンティティは、その署名エンティティの秘密鍵を記憶し、対応する公開鍵を任意の他の当事者と共有し得る。
【0003】
署名されているメッセージは、公開データであり、ちょうど署名者の秘密鍵に対応する公開鍵のように、署名を検証しているいかなる者によっても必要とされる。
検証者エンティティは、メッセージ、公開鍵およびデジタル署名が互いに対応することを検証し得る。検証プロセスは、3つのデータの整合性(すなわち、メッセージ、公開鍵、およびデジタル署名が互いに対応すること)を受け入れる(例えば、「成功」を出力する等)か、または拒否する(例えば、「失敗」を出力する等)。検証プロセスが「成功」を出力した場合、第三者は、秘密の秘密鍵の保持者によってメッセージが署名されている確率が高いと確信する。署名エンティティの秘密鍵を知らずに、そのエンティティによる有効なデジタル署名を生成することは、計算上実行不可能であるという仮定がある。検証者は、署名エンティティの識別が、秘密鍵を保有するエンティティによって達成されるという仮定に依存し得る。いくつかの例において、検証者は、商品またはサービスを、それらのデジタル的に決定された識別の仮定の下で、署名エンティティに対して提供することができる。いくつかの例において、検証者は、署名が使用されたアプリケーションに依存して、検証された情報に応答して、他のアクティビティを行うこと(例えば、署名済みの書類に関する契約/合意/アクションを承認する等)ができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
共有されているデータを明らかにせずに、共有されているデータから生成された証明を検証するためのシステムおよび方法を提供する。
【課題を解決するための手段】
【0005】
本明細書において説明されるシステムは、機密知識の特殊な証明(SPoCK:Specialized Proof of Confidential Knowledge)スキームを採用する。このスキームは、秘密鍵が依然として秘密であるが、メッセージも秘密であるシナリオを提示する。このスキームは、これらの2つの秘密データを使用して証明を生成するために、説明されるシステム内の証明者によって採用されることが可能である。いくつかの実施形態において、このスキームは、2者以上の当事者が同じ秘密(例えば、秘密メッセージ)を知っていることを示すための公的証明を、2者以上の当事者が提供することを可能にする。いくつかの実施形態において、証明を生成し、2つ以上の証明を検証するプロセスは、非インタラクティブである。いくつかの実施形態において、あらゆる証明は、その証明が証明者の秘密鍵を使用して生成されるので、証明者に対して特殊化される。いくつかの実施形態において、証明は、秘密メッセージを秘密に保ったまま、証明者によって公に明らかにされることが可能である。
【0006】
証明は、特殊化されていても、または特殊化されていなくてもよい。証明は、その証明が1人の証明者ユーザに対してのみ帰属させられることが可能である場合に、「特殊化されている」。「特殊化された」証明は、証明者ユーザのみによって所有されるデータ(例えば、秘密鍵)を使用することによって生成され得る。「特殊化されていない」証明は、任意の証明者ユーザによって生成されたと主張され、特定の証明者ユーザに対して帰属させられることが可能ではない証明である。
【0007】
例示的な例において、2人の証明者ユーザAおよびBの両方が、秘密を知っており、そのことを検証者ユーザに対して、または公に対してさえ、証明することを欲する。証明者ユーザは、秘密を公に明らかにすることができず(さもなければ、それはもはや秘密ではない)、秘密の特殊化されていない証明を共有することができない。例えば、秘密をハッシュ化し、ハッシュを共有することは、秘密を公に保護するが、任意の当事者が、ハッシュをコピーし、その任意の当事者も秘密を知っていると主張することができる。本開示のいくつかの実施形態において、証明は、その証明を生成したデバイスが、その証明者ユーザに対してのみ帰属可能であるように、生成され得る。本スキームは、2人の証明者ユーザと共に作動し得るが、本スキームは、任意の数の証明者ユーザ全てが同じ秘密を知っていることを示すために、任意の数の証明者ユーザに対して一般化されることが可能である。
【0008】
一例として、いくつかの実施形態において、証明者ユーザは、秘密メッセージおよびデバイスの秘密鍵を使用して、証明(例えば、機密知識の特殊な証明)を生成してもよい。生成された証明は、1人の証明者ユーザの対応する公開鍵のみを使用して、検証者によって単独で検証されることが可能ではない。これは、メッセージが秘密であり、検証者によって知られていないからである。しかしながら、第2の秘密鍵を保持する第2の当事者(第2の証明者ユーザ)も、同じ秘密メッセージおよびこの第2の秘密鍵を使用して証明(例えば、機密知識の特殊な証明)を生成する場合、検証者は、証明者ユーザの2つの公開鍵を使用して、両方の証明が同じ秘密メッセージから生成されたかどうかを決定することができる。そのような実施形態において、検証者は、秘密メッセージの内容に対してはアクセスしないことになるが、検証プロセスが「成功」を出力した場合、検証者は、両方の証明者ユーザが同じ秘密メッセージを使用したかどうかを決定することができる。
【0009】
したがって、1つの態様において、本明細書において説明されているものは、共有されているデータを明らかにせずに、共有されているデータから生成された証明を検証するためのコンピュータ実装方法である。本方法は、1つまたは複数のプロセッサによって実行される。本方法は、第1のノードから、第1のノードに関連付けられた第1の秘密鍵と、第1のノードと第2のノードとの間で共有されているデータとから生成された第1の証明を受信する工程と、第2のノードから、共有されているデータと、第2のノードに関連付けられた第2の秘密鍵とから生成された第2の証明を受信する工程と、共有されているデータを明らかにせずに、第1の証明および第2の証明が両方とも、第1の秘密鍵に数学的に関連する第1の公開鍵、および第2の秘密鍵に数学的に関連する第2の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、第1の証明および第2の証明は、それぞれ第1のノードおよび第2のノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を公に明らかにする工程を備える。いくつかの実施形態において、第1の証明は、第1のノードに対してのみ帰属可能である。いくつかの実施形態において、第2の証明は、第2のノードに対してのみ帰属可能である。いくつかの実施形態において、第1の証明または第2の証明は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、第1の証明および第2の証明は各々、それぞれの秘密鍵を用いて生成された共有されているデータの署名を備える。いくつかの実施形態において、署名は、BLS署名スキームに基づく。いくつかの実施形態において、第1の証明および第2の証明の検証は、2つの署名、第1の公開鍵、および第2の公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。いくつかの実施形態において、第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを備える。いくつかの実施形態において、計算は、実行トレースを備える。いくつかの実施形態において、第2のノードは、ブロックの少なくとも1つのトランザクションを実行するために採用される実行ノードを備える。いくつかの実施形態において、検証ノードは、計算が検証されたという証明として、第1の証明をパブリッシュする。いくつかの実施形態において、アクションは、クライアントに対して状態応答を提供する工程を備え、状態応答は、ブロックについての出力に基づいて決定される。いくつかの実施形態において、計算は、並行で独立した手法で、より軽量化された計算検証を可能にするために、チャンクへと分けられる。いくつかの実施形態において、アクションは、チャンクの各々が、実行ノードおよび検証ノードによって、同じ中間結果から整合して生成されることを調停する工程を備える。
【0010】
別の態様において、本明細書において説明されるものは、共有されているデータを明らかにせずに、共有されているデータから生成された証明を検証するためのシステムである。これらのシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに対して結合され、命令が記憶されたコンピュータ可読記憶デバイスであって、命令は、1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサに、動作を行わせる、コンピュータ可読記憶デバイスとを備える。これらの動作は、第1のノードから、第1のノードに関連付けられた第1の秘密鍵と、第1のノードと第2のノードとの間で共有されているデータとから生成された第1の証明を受信する工程と、第2のノードから、共有されているデータと、第2のノードに関連付けられた第2の秘密鍵とから生成された第2の証明を受信する工程と、共有されているデータを明らかにせずに、第1の証明および第2の証明が両方とも、第1の秘密鍵に数学的に関連する第1の公開鍵、および第2の秘密鍵に数学的に関連する第2の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、第1の証明および第2の証明は、それぞれ第1のノードおよび第2のノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を明らかにする工程を備える。いくつかの実施形態において、第1の証明は、第1のノードに対してのみ帰属可能である。いくつかの実施形態において、第2の証明は、第2のノードに対してのみ帰属可能である。いくつかの実施形態において、第1の証明または第2の証明は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、第1の証明および第2の証明は各々、それぞれの秘密鍵を用いて生成された共有されているデータの署名を備える。いくつかの実施形態において、署名は、BLS署名スキームに基づく。いくつかの実施形態において、第1の証明および第2の証明の検証は、2つの署名、第1の公開鍵、および第2の公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。いくつかの実施形態において、第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを備える。いくつかの実施形態において、計算は、実行トレースを備える。いくつかの実施形態において、第2のノードは、ブロックの少なくとも1つのトランザクションを実行するために採用される実行ノードを備える。いくつかの実施形態において、検証ノードは、計算が検証されたという証明として、第1の証明をパブリッシュする。いくつかの実施形態において、アクションは、クライアントに対して状態応答を提供する工程を備え、状態応答は、ブロックについての出力に基づいて決定される。いくつかの実施形態において、計算は、並行で独立した手法で、より軽量化された計算検証を可能にするために、チャンクへと分けられる。いくつかの実施形態において、アクションは、チャンクの各々が、実行ノードおよび検証ノードによって、同じ中間結果から整合して生成されることを調停する工程を備える。
【0011】
別の態様において、本明細書において説明されるものは、1つまたは複数のプロセッサに対して結合され、命令が記憶された非一時的なコンピュータ可読記憶媒体であって、命令は、1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサに、動作を行わせる、非一時的なコンピュータ可読記憶媒体である。これらの動作は、第1のノードから、第1のノードに関連付けられた第1の秘密鍵と、第1のノードと第2のノードとの間で共有されているデータとから生成された第1の証明を受信する工程と、第2のノードから、共有されているデータと、第2のノードに関連付けられた第2の秘密鍵とから生成された第2の証明を受信する工程と、共有されているデータを明らかにせずに、第1の証明および第2の証明が両方とも、第1の秘密鍵に数学的に関連する第1の公開鍵、および第2の秘密鍵に数学的に関連する第2の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、第1の証明および第2の証明は、それぞれ第1のノードおよび第2のノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を公に明らかにする工程を備える。いくつかの実施形態において、第1の証明は、第1のノードに対してのみ帰属可能である。いくつかの実施形態において、第2の証明は、第2のノードに対してのみ帰属可能である。いくつかの実施形態において、第1の証明または第2の証明は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、第1の証明および第2の証明は各々、それぞれの秘密鍵を用いて生成された共有されているデータの署名を備える。いくつかの実施形態において、署名は、BLS署名スキームに基づく。いくつかの実施形態において、第1の証明および第2の証明の検証は、2つの署名、第1の公開鍵、および第2の公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、第1の証明および第2の証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。いくつかの実施形態において、第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを備える。いくつかの実施形態において、計算は、実行トレースを備える。いくつかの実施形態において、第2のノードは、ブロックの少なくとも1つのトランザクションを実行するために採用される実行ノードを備える。いくつかの実施形態において、検証ノードは、計算が検証されたという証明として、第1の証明をパブリッシュする。いくつかの実施形態において、アクションは、クライアントに対して状態応答を提供する工程を備え、状態応答は、ブロックについての出力に基づいて決定される。いくつかの実施形態において、計算は、並行で独立した手法で、より軽量化された計算検証を可能にするために、チャンクへと分けられる。いくつかの実施形態において、アクションは、チャンクの各々が、実行ノードおよび検証ノードによって、同じ中間結果から整合して生成されることを調停する工程を備える。
【0012】
別の態様において、本明細書において説明されるものは、共有されているデータを明らかにせずに、共有されているデータから生成された証明を検証するためのシステムである。これらのシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに対して結合され、命令が記憶されたコンピュータ可読記憶デバイスであって、命令は、1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサに、動作を行わせる、コンピュータ可読記憶デバイスとを備える。これらの動作は、複数のノードの各々から、ノード間で共有されているデータと、各ノードに関連付けられたそれぞれの秘密鍵とから生成されたそれぞれの証明を受信する工程と、共有されているデータを明らかにせずに、証明の各々が、秘密鍵のうちの個別の1つに各々が数学的に関連する複数の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、証明が、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、証明の各々は、それらのそれぞれのノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を公に明らかにする工程を備える。いくつかの実施形態において、証明の各々は、それぞれの生成ノードに対してのみ帰属可能である。いくつかの実施形態において、証明の各々は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、証明は各々、それぞれの秘密鍵を用いて生成された、共有されているデータの署名を備える。いくつかの実施形態において、証明の検証は、署名および公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。
【0013】
別の態様において、本明細書において説明されるものは、共有されているデータを明らかにせずに、共有されているデータから生成された証明を検証するためのコンピュータ実装方法である。本方法は、1つまたは複数のプロセッサによって実行される。本方法は、複数のノードの各々から、ノード間で共有されているデータと、各ノードに関連付けられたそれぞれの秘密鍵とから生成されたそれぞれの証明を受信する工程と、共有されているデータを明らかにせずに、証明の各々が、秘密鍵のうちの個別の1つに各々が数学的に関連する複数の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、証明が、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、証明の各々は、それらのそれぞれのノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を公に明らかにする工程を備える。いくつかの実施形態において、証明の各々は、それぞれの生成ノードに対してのみ帰属可能である。いくつかの実施形態において、証明の各々は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、証明は各々、それぞれの秘密鍵を用いて生成された、共有されているデータの署名を備える。いくつかの実施形態において、証明の検証は、署名および公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。
【0014】
別の態様において、本明細書において説明されるものは、1つまたは複数のプロセッサに対して結合され、命令が記憶された非一時的なコンピュータ可読記憶媒体であって、命令は、1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサに、動作を行わせる、非一時的なコンピュータ可読記憶媒体である。これらの動作は、複数のノードの各々から、ノード間で共有されているデータと、各ノードに関連付けられたそれぞれの秘密鍵とから生成されたそれぞれの証明を受信する工程と、共有されているデータを明らかにせずに、証明の各々が、秘密鍵のうちの個別の1つに各々が数学的に関連する複数の公開鍵を用いて、共有されているデータから生成されたことを検証する工程と、証明が、共有されているデータから生成されたという検証に基づいて、アクションを行う工程とを備える。いくつかの実施形態において、証明の各々は、それらのそれぞれのノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明および第2の証明が両方とも、共有されているデータから生成されたという検証を公に明らかにする工程を備える。いくつかの実施形態において、証明の各々は、それぞれの生成ノードに対してのみ帰属可能である。いくつかの実施形態において、証明の各々は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、証明は各々、それぞれの秘密鍵を用いて生成された、共有されているデータの署名を備える。いくつかの実施形態において、証明の検証は、署名および公開鍵に基づいたペアリング同等性チェックを備える。いくつかの実施形態において、証明を検証する工程は、ペアリング同等性チェックを備える。いくつかの実施形態において、証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、共有されているデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを備える。いくつかの実施形態において、証明の検証の数は、ノードの数において線形であり、二次関数的ではない。いくつかの実施形態において、証明を検証する工程は、ノードの数よりも1つ少ない検証を必要とする。
【0015】
本開示による方法は、本明細書において説明される態様および特徴の任意の組み合わせを含むことができることが認識される。すなわち、本開示による方法は、本明細書において特に説明される態様および特徴の組み合わせに限定されず、提供される態様および特徴の任意の組み合わせを含んでもよい。
【0016】
本開示の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明において記載されている。本開示の他の特徴および利点は、説明および図面から、ならびに特許請求の範囲から、明らかになるであろう。本概要は、本明細書において説明されるいかなる発明の範囲も限定するようには意図されておらず、発明の範囲は、本明細書に添付された特許請求の範囲によってのみ定義される。
【0017】
1つまたは複数の様々な実施形態による、本明細書において開示されている技術は、以下の図を参照して詳細に説明される。図面は、例示の目的のためにのみ提供されており、開示されている技術の典型的な実施形態または例示的な実施形態を描くに過ぎない。これらの図面は、開示されている技術についての読者の理解を容易にするために提供されており、開示されている技術の広さ、範囲、または適用可能性を限定するものとして考慮されるべきではない。例示の明瞭さおよび簡単さのために、これらの図面は必ずしも縮尺通りに作られているとは限らないことが留意されるべきである。
【図面の簡単な説明】
【0018】
図1】本開示の様々な実施形態において例示されるような、分散型台帳および/またはブロックチェーン・システムを例示する図。
図2】本開示の実装を実行するために採用されることが可能である非限定的な例示的な環境を描く図。
図3】説明されるシステムのための非限定的な例示的なアーキテクチャを描く図。
図4】スキームの様々な特性を説明する非限定的な例示的なフロー図を描く図。
図5】スキームの様々な特性を説明する非限定的な例示的なフロー図を描く図。
図6】スキームの様々な特性を説明する非限定的な例示的なフロー図を描く図。
図7】スキームの様々な特性を説明する非限定的な例示的なフロー図を描く図。
図8】本明細書において説明されるシステムの実施形態によって実装されることが可能である非限定的な例示的なプロセスを描く図。
図9】本明細書において説明されるシステムの実施形態によって実装されることが可能である非限定的な例示的なプロセスを描く図。
図10】本開示の方法またはシステムを実装するようにプログラムされること、または他の方法で構成されることが可能である非限定的な例示的なコンピュータ・システムを描く図。
【発明を実施するための形態】
【0019】
図は、網羅的であるように、または本発明をまさに開示されている形態に限定するようには意図されていない。本発明は、修正および改変と共に実施されることが可能であること、ならびに開示されている技術は、特許請求の範囲およびその均等物によってのみ限定されることが、理解されるべきである。
【0020】
特に定義されない限り、本明細書において使用される全ての専門用語は、本主題が属する技術分野における当業者によって一般に理解されるのと同じ意味を有する。本明細書および添付の特許請求の範囲において使用される場合、単数形の「a」、「an」、および「the」は、文脈がそうでないことを明確に指示しない限り、複数形の参照を含む。本明細書における「または」へのいかなる言及も、特に明記されない限り、「および/または」を包含するように意図される。
【0021】
本明細書において使用される場合、「リアルタイム」という用語は、システムの処理限界、データおよび画像を正確に取得するために必要とされる時間、ならびにデータおよび画像の変化率を考慮して、意図的な遅延なしに、データを送信することまたは処理することを指す。いくつかの例において、「リアルタイム」は、本開示の実施形態の構成要素から取得された情報の提示を説明するために使用される。
【0022】
本明細書において、「スマート契約」という用語は、デジタル化された環境内の計算イベントおよびアクションを自動的に実行すること、制御すること、または文書化することができるコンピュータ実装命令のセットを指す。いくつかの例において、計算は、計算デバイスのブロックチェーンまたは分散型台帳上で行われ得る。スマート契約の実装は、ブロックチェーン・ネットワーク上で暗号的に署名されたトランザクションを使用して展開され得る。いくつかの例において、スマート契約は、合意の規則およびペナルティーに関連するコンピュータ実装命令のセットを実装する。スマート契約は、これを、情報を入力として扱い、スマート契約において明記された規則を通じて、その入力に対して値を割り当て、それらの規則によって必要とされるコンピュータ実装アクションを自己実行することによって、達成し得る。例えば、スマート契約は、資産が送信先エンティティへ送られるべきかどうか、または資産が送信元エンティティへ返されるべきかどうかを決定し得る。
【0023】
例示的な例として、スマート契約は、アイテムが受信された場合に支払いを行うようにプログラムされてもよい。このフォーマットにおいて、スマート契約は、コンピュータ・コードとして生成され、システム上(例えば、ブロックチェーンまたは分散型台帳内等)に記憶および複製され、ブロックチェーンを運用するコンピュータのネットワークによって監督され得る。スマート契約は、データを記憶することができる。記憶されたデータは、現実世界の契約のためのロジックを実装するために必要とされる情報、事実、関連付け、残高および任意の他の情報を記録するために使用されることが可能である。いくつかの実施形態において、スマート契約は、バーチャル・マシン内で展開され、記憶され、および実行される。
【0024】
本明細書において使用される場合、「構成可能性」という用語は、構成要素の相互関係を扱うシステム設計原理を含む。例えば、高度に構成可能なシステムは、特定のユーザ要件を満たすために、様々な組み合わせにおいて選択され、組み立てられることが可能である構成要素を提供する。ブロックチェーンおよびスマート契約のコンテキストにおいて、構成可能性は、複数の独立したスマート契約に関与する動作を共にチェーン化するための能力を含む。構成可能性の最近の例は、dY/dXであり、dY/dXは、イーサリアム・ブロックチェーン上に構築される金融派生商品のための分散型プロトコルである。dY/dXは、担保付き融資を可能にすることによって分散型マージン取引を可能にする。典型的なdY/dXトランザクションは、少なくとも3つの別個のスマート契約、すなわち、コアdY/dX契約自体と、0xのような分散型取引と、DAIなどの、少なくとも1つのイーサリアムERC(Request for Comment )20トークンとを組み合わせる。
【0025】
本明細書において使用される場合、「シャーディング」という用語は、一般に、ネットワークを非同期的に相互作用する一連のサブユニットに分割する多種多様なスケーリング提案を指す。本概念は、データベースをよりスケーラブルにするために、データベースにおいて広く使用されてきた。より最近では、シャーディングは、ブロックチェーンにおけるトランザクション速度を改善するために、ブロックチェーンに対して採用されてきた。データベース・コンテキストにおいて、例えば、シャーディングは、データベース内のデータを水平にパーティション化するための方法を含み得る。より一般に、データベースは、「シャード」と呼ばれる小さな部分に分けられており、これらの小さな部分は、共にアグリゲートされた場合に、元のデータベースを形成する。分散型ブロックチェーン・ネットワークにおいて、ネットワークは、中央管理者なしで、ピア・ツー・ピア・フォーマットにおいて接続された一連のノードから成る。ブロックチェーン・システムのいくつかの例において、各ノードは、ネットワークの全ての状態を記憶し、トランザクションの全てを処理する。これは、特に、ビットコインおよびイーサリアム(登録商標)などのプルーフ・オブ・ワーク(PoW)・システムにおいて、分散化を通じて高度なセキュリティを提供するが、適法なスケーリング問題につながることがある。例えば、イーサリアム・ネットワーク内のフルノードは、口座残高、ストレージ、および契約コードを含む、ブロックチェーンの全状態を記憶する。残念なことに、参加者の数が線形的に増加するにつれて、参加者間の相互通信オーバーヘッドは、指数関数的な速度で増加する。この限界は、コンセンサスに到達するために必要とされる、ノード間で必要とされる通信に起因する。ネットワーク内のノードは、特別な権限を有しておらず、ネットワーク内のあらゆるノードが、あらゆるトランザクションを記憶し、処理する。結果として、イーサリアムのサイズのネットワークにおいて、高価なガス代およびより長いトランザクション確認時間などの問題は、ネットワークに負担がかかっている場合に、顕著な問題になる。ネットワークは、その部分の総和ではなく、個々のノードと同じくらいの速さであるに過ぎない。そのため、シャーディングは、これらの問題点を緩和するために役立つ。本概念は、ノードのサブセットをシャードへとグループ化することに関与し、シャードは、次に、そのシャードに固有のトランザクションを処理する。このタイプのアーキテクチャの採用は、システムが多くのトランザクションを並行して処理することを可能にする。
【0026】
本明細書において使用される場合、「コンセンサス・アルゴリズム」または「コンセンサス・プロトコル」という用語は、ノードなどの電子デバイス間でデータの通信および送信がどのように作動するのかを説明する規則のセットを含む。何が真であり、何がブロックチェーン上に記録されなければならないかについて、十分なデバイスが合意している場合、コンセンサスが達成される。したがって、コンセンサス・プロトコルは、世界中に点在されているデバイスが事実上合意に達することを可能にする管理規則であり、ブロックチェーン・ネットワークが破損されることなく機能することを可能にする。
【0027】
本明細書において使用される場合、「ビザンチン・フォールト・トレランス(BFT)・コンセンサス・アルゴリズム」という用語は、分散型システムのコンテキストにおいて、分散型コンピュータ・ネットワーク、例えば、説明されるシステム内のノードのピア・ツー・ピア・ネットワークなどが、望み通りに機能するための、および、そのシステムの悪意ある構成要素(ノード)が障害を起こしたり、または不正確な情報を他のピアへ伝播したりするにもかかわらず、十分なコンセンサスに正確に到達するための能力を含む。その目的は、これらの悪意あるノードが、ネットワークの正確な機能に対して、およびシステム内の誠実なノードによって到達される正しいコンセンサスに対して有する影響を軽減することによって、壊滅的なシステム障害を防ぐことである。
【0028】
本明細書において使用される場合、「スラッシュ(slash)」という用語は、例えばネットワーク参加者を、ネットワークについて明記された規則に従わないことについて罰することである。罰は、エスクローに預託された、または出資された資金に対して適用される罰金の形態であり得る。
【0029】
本明細書において使用される場合、当事者(例えば、ノード)間の「インタラクティブなプロトコル」という用語は、当事者が(例えば、質問および回答を通じた)一種の対話においてメッセージを交換する制約を含む。いくつかの実施形態において、メッセージのこの交換は、メッセージを送るために、および受信するために、何らかの形態の同期を必要とする。
【0030】
本明細書において使用される場合、当事者(例えば、ノード)間の「非インタラクティブなプロトコル」という用語は、当事者の各々が、他者を待たずに、アクションを行うことを可能にする。説明されるシステムのいくつかの実施形態において、ノードは、証明を単独で生成し、その他のノードのいずれからの入力も必要としない。同様に、説明されるシステムのいくつかの実施形態において、検証は、ユーザの最初の証明のみで十分であるので、ユーザとのさらなる議論を必要としない。
【0031】
図1は、本開示の様々な実施形態において例示されるような、分散型台帳および/またはブロックチェーン・システムを例示する。分散型台帳は、1つまたは複数のコンピューティング・デバイス102、104、106、108と、ネットワーク110とを備えてもよく、これらは、ピア・ツー・ピア・ネットワークを形成するために使用され得る。いくつかの実施形態において、ネットワーク110は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、または、これらの組み合わせを含み、デバイス(例えば、コンピューティング・デバイス102、104、106、108)を接続する。いくつかの実施形態において、ネットワーク110は、イントラネット、エクストラネット、または、インターネットと通信するイントラネットもしくはエクストラネットを含む。いくつかの実施形態において、ネットワーク110は、通信ネットワークまたはデータネットワークを含む。いくつかの実施形態において、ネットワーク110は、有線通信リンクまたは無線通信リンク上でアクセスされることが可能である。
【0032】
分散型台帳(例えば、ブロックチェーン)は、操作に対するチェックを保つための中央管理者の必要を除去した、異なるロケーションおよび人々にわたって分散された形態で維持される任意のトランザクションまたは契約の台帳として説明されることが可能である。台帳上の全ての情報は、暗号技術を使用してセキュアにかつ正確に記憶され、鍵および暗号署名を使用してアクセスされることが可能である。いったん情報が記憶されると、情報は、ネットワークの規則が管理する不変データベースになる。分散型台帳は、攻撃を成功させるためには、全ての分散されたコピーが同時に攻撃される必要があるので、例えば集中型台帳よりも攻撃することが本質的により困難である。さらに、これらの記録は、単独の当事者による悪意のある変更に対して耐性がある。
【0033】
効率は、ブロックチェーン空間において観察される2つの実質的な問題に対処する多面的な柱である。第1のものは、プルーフ・オブ・ワーク(PoW)であり、PoWは、その過度な電力の使用および非能率的なリソース割り当てについて、一貫して非難されている。PoWは、システムをセキュアにするためのオプションとして拒否されている。第2の問題は、たとえ全てのノードがPoW問題を解決しなくても、全てのノードが全ての状態を保持することを依然として必要とする、プルーフ・オブ・ステーク(PoS)ベースのシステムにおいてさえ、ブロックチェーンが動作するために必要とする著しい量の複製労力である。従来のブロックチェーンにおいて、例えば、各ノードは、ブロック製造に関連付けられたあらゆるタスクを行い得る。この複製は、規模についてのネックであるだけではなく、リソースのそれぞれの強みに対して適用されればより良く役割を果たすであろうリソースの不十分な割り当てである。
【0034】
さらに、自律的で相互運用可能なソフトウェアのエコシステムの長期的な価値は、分散型革命の最も説得力のある成果として実際には位置し得るので、ブロックチェーン技術は、無許可の自律的なソフトウェア・システムを作成し得る。オープンで、消費者規模のブロックチェーン・システムに対する既存の提案の圧倒的多数は、何らかの種類のシャーディングに依存する。シャーディングに対する様々なアプローチは、ネットワークが取り扱うことができるトランザクションの数を適法に増加させ得るが、それらのアプローチは、それらのトランザクションの能力を限定し得る。特に、各トランザクションは、それ自体のシャード内の情報を読み出し、修正することができるに過ぎない。いくつかのシャード化されたブロックチェーン実装において、他のシャードとの通信は、高価で複雑なロッキング動作なしに、非同期的に発生しなければならず、古い情報に基づいて行動するリスクがある。さらに、シャード化されたブロックチェーンに対する既存の提案は、単独のアトミック・トランザクションが複数のシャードと相互作用するための能力を提供しない。例えば、別個のトランザクションは、各シャード上で発行されることがあり、アトミシティ保証が必要とされる場合(例えば、価値の何らかの相互交換がある場合)、ブロックチェーンの上に構築された何らかの種類の複雑なロッキングおよびコミットメントシステムがあり得る。
【0035】
例示的な分散型台帳は、一般に知られているブロックチェーンである。ブロックチェーンは、例示の目的のために、本開示内で参照される。しかしながら、任意の適当な分散型台帳が本開示の実装において使用されることが可能であることが予期される。ブロックチェーンは、暗号技術を使用してリンクされ、セキュアにされる記録またはブロックの連続的に増加し続けるリストである。ブロックチェーン内の各ブロックは、1つまたは複数のコンテキストにおいて実行されたトランザクション、例えば、有価証券トランザクション、デジタル通貨トランザクション等など、から提供されるトランザクションデータを含んでもよい。いくつかの例において、トランザクションは、現在または将来のいずれかにおいて、通貨、暗号通貨または何らかの他の資産の代わりに、資産、製品またはサービスの交換があるであろうという、バイヤーおよびセラー、サプライヤーおよび消費者、またはプロバイダおよび消費者の間の合意を含む。いくつかの例において、単独のブロックは、複数のトランザクション(例えば、異なる人々による異なる小切手の複数の預け入れ)から提供されるトランザクションデータを含み得る。完了されたブロックにトランザクションの新しいセットが追加されるにつれて、ブロックチェーンは成長し、したがって、トランザクションの台帳を形成し得る。各ブロックは、恒久的な手法でトランザクションデータと共に過去のブロックに対するハッシュ・ポインタおよびタイムスタンプを含み得る。
【0036】
いくつかの実施形態において、ブロックチェーンのブロック内のトランザクションは、ハッシュ化され、マークル・ツリーへと符号化される(例えば、トランザクションは、マークル・ツリーのリーフ・ノードである)。マークル・ツリー(またはハッシュ・ベースのツリー)は、ハッシュ・リストの一般化であり得るハッシュ・ベースのデータ構造である。マークル・ツリーは、各リーフ・ノードが、ハッシュ値または「ハッシュ」を生成するためにトランザクションに対して適用された暗号ハッシュ関数(CHF)の結果であり、各非リーフ・ノードに、その子ノードのラベルの暗号ハッシュがラベル付けされる、ツリー構造を含む。例示的なCHFは、セキュア・ハッシュ・アルゴリズム256(SHA-256)、SHA-3、およびメッセージ・ダイジェスト5(MD5)を特に含む。一般に、CHFは、入力として情報を受信し、出力としてハッシュ値を提供する。ハッシュ値は、所定の長さとすることができる。例えば、SHA-256は、256ビット(32バイト、64文字)のハッシュ値を出力する。いくつかの例において、ハッシュ値は、入力が何であったかを決定するために、ハッシュ値が「非ハッシュ化される」ことが可能ではないという点で、一方向ハッシュ値である。また、マークル・ツリーは、k次元ツリーとして実装されてもよく、k次元ツリーは、各ノードがk個以下の子を有するルート付きツリー・データ構造である。例えば、マークル・ツリーは、各ノードが、0個、1個、または2個の子を有し得るバイナリ・ツリーとして実装されてもよい。そのようなバイナリ・ツリーのマークル・ルート(またはルート・ハッシュ)は、1つのハッシュのみが残るまで、ノードの各ペアを繰り返しハッシュ化することによって生成されることが可能である。いくつかの例において、トランザクションの数が奇数である場合、最後のハッシュは、偶数個のリーフ・ノードを作成するために、一度複製され得る。トランザクションのいずれかにおける単一の詳細またはトランザクションの順序が変化する場合、マークル・ルートも変化する。そのため、マークル・ルートは、関連するトランザクションにおける全てのデータを要約し、データの完全性を維持するためにブロック内に記憶されることが可能である。したがって、マークル・ツリーの採用は、特定のトランザクションがセット内に含まれるか否かについての迅速かつ単純なテストを可能にする。
【0037】
一般に、ブロックは、ブロックチェーン・プロトコルを実行する相互接続されたコンピューティング・デバイスのピア・ツー・ピア・ネットワーク内の1つまたは複数のコンピューティング・デバイスによって線形の経時的な順序でブロックチェーンに対して追加される。つまり、ピア・ツー・ピア・ネットワークは、複数の相互接続されたノードとして説明されることが可能であり、各ノードは、トランザクション(例えば、小切手の預け入れ)の有効性を確認し、リレーするためにクライアントを使用するコンピューティング・デバイスである。各ノードは、ブロックチェーンのコピーを維持し、ブロックチェーンのコピーは、ピア・ツー・ピア・ネットワークへの参加時にノードに対して自動的にダウンロードされる。ブロックチェーン・プロトコルは、ブロックチェーンを更新するセキュアで信頼できる方法を提供し、そのコピーは、中央管理者を使用せずに、ピア・ツー・ピア・ネットワークにわたって分配される。
【0038】
ブロックチェーン・ネットワーク上の全てのエンティティが、要求されたトランザクションの有効性を確認するために、全ての過去のトランザクション(例えば、預け入れ、引き出し等)を知る必要があり得るので、エンティティは、どのトランザクションがどの順序で実際に発生したのかについて合意し得る。例えば、2つのエンティティが、異なるトランザクション履歴を観察した場合、それらのエンティティは、トランザクションの有効性に関して同じ結論に達することができないことがある。ブロックチェーンは、既に発生したトランザクション、およびどの順序で発生したかに関して、エンティティが合意に達することを可能にする。つまり、および以下でさらに詳細に説明されるように、トランザクションの台帳は、トランザクションをトランザクションの台帳に追加する(例えば、ブロックをブロックチェーンに追加する)ために必要とされる作業の量に基づくように合意される。このコンテキストにおいて、作業は、ピア・ツー・ピア・ネットワーク内の任意の単独のノード(例えば、コンピューティング・デバイス)にとって迅速に完了することは困難だが、ノード(例えば、コンピューティング・デバイス)にとって検証することは比較的簡単なタスクである。
【0039】
典型的なピア・ツー・ピア・ネットワークは、ブロックチェーン・プロトコルに基づいてブロックをブロックチェーンに追加する、いわゆるマイナー(例えば、コンピューティング・デバイス)を含み得る。一般に、複数のマイナーは、ブロックに追加されるべきトランザクションの有効性を確認し、それらのブロックをブロックチェーンに対して追加させるために競合する(例えば、上記で紹介されたように、作業を行う)。トランザクションの有効性確認は、それぞれのトランザクションに関連付けられたデジタル署名を検証することを含み得る。ブロックがブロックチェーンに対して追加されるためには、マイナーは、トランザクションのそれらの提供されるブロックがピア・ツー・ピア・ネットワークによって受け入れられる前に、PoWを明示しなければならない。ブロックチェーン・プロトコルは、CHFに基づくPoWスキームを含む。いくつかの実施形態において、ブロックチェーン・プロトコルは、CHFへの入力として、複数の情報を必要とすることがある。例えば、CHFへの入力は、ブロックチェーン内の過去の(最も最近の)ブロックへの参照、作成されるべきブロックに含まれるべきトランザクションの詳細、およびノンス値を含むことができる。
【0040】
複数のノードは、トランザクションのセットをハッシュ化し、ブロックチェーンに対して追加されるべき次のブロックを提供するために競合し得る。ブロックチェーン・プロトコルは、ブロックチェーンに対して追加されるべきブロックを認定するために閾値ハッシュを提供し得る。例えば、閾値ハッシュは、ハッシュ値が最初に有しなければならないゼロ(0)の予め定義された数を含むことができる(例えば、ハッシュ値の少なくとも最初の4文字は各々0でなければならない)。ゼロの数が多いほど、認定ハッシュ値に到達するのに、より多くの時間を消費する。
【0041】
いくつかのブロックチェーン・ベースのプラットフォームにおいて、例えば、ブロックを製造する各ノードは、候補ブロックを作成するために複数の工程を経験し得る。例えば、複数のトランザクションが、保留中のトランザクションの公に共有されるプールから選択される。いくつかの実施形態において、選択されたトランザクションは、例えば、線形リスト内の順序で割り当てられる。典型的には、含まれることが可能なトランザクションの最大数を限定するための何らかの機構がある。しかしながら、多くの実施形態において、強制される最小値はない。トランザクションによって特定された計算が行われる。いくつかの実施形態において、各計算は、グローバル共有状態にアクセスすることができ、その共有状態に対する一定の変更を行うことができる。さらに、いくつかの実施形態において、あるトランザクションの入力は、別のトランザクションの出力に依存し得る。そのような実施形態においては、これらの計算が、順番に厳密に行われることが重要である。トランザクションは、それらのトランザクションの処理から結果として得られる最終的なカノニカル状態のスナップショットと組み合わされ得る。結果は、ネットワークの残りの部分へブロードキャストされる。いくつかの実施形態において、「スナップショット」は、カノニカル状態のハッシュであり、例えば、マークル・ツリーのルート・ノードの形態とすることができる。
【0042】
いくつかの実施形態において、候補ブロックを受信するネットワーク内の各ノードは、トランザクション・リストによって示唆された計算が正確に計算されたことを確認する。これらのノードは、候補ブロックによって特定された順序で計算の各々を繰り返し得る。次いで、ノードは、それらが計算した最終的なカノニカル状態のスナップショットを、元のノードからの候補ブロックにおけるスナップショットと比較する。スナップショットが一致した場合、ブロックは、有効な候補と考慮され得る。
【0043】
ビットコインなどの、未使用のトランザクション出力(UTXO:unspent transaction output)ブロックチェーンにおいては、トークンの転送に成功したトランザクションのみが、ブロックに含まれることが可能である。他方で、イーサリアムのように、状態モデル・ブロックチェーンにおいては、失敗したトランザクションを含めることが有効で(および、一般的でさえ)あり得る。いくつかの実施形態において、これらのトランザクションは、ブロックに含まれるが、(トランザクション手数料の支払いは別として)カノニカル状態を修正しない。したがって、「正確に処理される」トランザクションは、そのトランザクションを始めるユーザによって意図されたことを実際には行わないことがあり得る。
【0044】
いったん1つまたは複数の有効な候補ブロックが製造されると、ネットワークは、単独の有効な候補について集合的に合意するための何らかのコンセンサス機構を使用し得る。これは、典型的には、現行のブロックチェーンにおける「プルーフ・オブ・ワーク」であるが、「プルーフ・オブ・ステーク」を使用する、将来のネットワーク、または既存のネットワークの発展について、多くの提案がある。本明細書において説明される、分散型計算システムの実施形態は、コンセンサス機構のいずれのファミリーでも同じように十分に作動し、または、インスタント・ファイナリティと結合される場合には、プルーフ・オブ・ステーク・コンセンサスでも同じように十分に作動する。
【0045】
いくつかの実施形態において、説明されるスキームを採用することができる例示的なシステムは、高スループットを有し、シャーディングなしのアーキテクチャ・アプローチを提供し、これは、構成可能性をもたらす。いくつかの実施形態において、そのような構成可能性は、より単純なトラストレス・システムの新規な組み合わせを通じて作成されるべき、複雑で新しいトラストレス・システムを提供する。例示的な分散型計算システムは、例えば、分散型アプリケーションをサポートするために、採用されることが可能である。いくつかの実施形態において、例示的な分散型計算システムは、ピア・ツー・ピア・ネットワークを3つの別個のノード・タイプに分割し、各々が、3つのタスク、すなわち、ネットワークに外部からアクセスすること、ネットワークを攻撃から保護すること、およびネットワークの状態を計算することのうちの1つの責任を負う。そのような懸念事項の分離は、ノード専門化を可能にし、ノード専門化は、展開されたシステムのセキュリティおよび分散の可能性を強化しつつ、ネットワークのスループットを劇的に改善する。また、構成可能性は、ソフトウェア再使用の強力な表明になり得るが、アトミシティのない構成可能性は、整合性のない結果(例えば、「望まれない状態」)につながることがある。例示的な分散型計算システムは、各トランザクションに、相互作用することが認証されるカノニカル状態の任意の部分にアトミックにアクセスし、修正するための能力を可能にするスケーリング機構を採用し得る。
【0046】
上述したように、いくつかの実施形態において、例示的な分散型計算システムは、ネットワーク内のノードを3つの別個の役割、すなわち、アクセス、セキュリティ、および実行へと分割する。この懸念事項の分離は、分散型システムの完全性を特徴付け、支持するアクセス、セキュリティ、信頼性、および検証可能性保証を維持する環境において、同期性を犠牲にせずに、高スループットを可能にすることができる。いくつかの実施形態において、異なるノード・タイプ間のコア関係は、抑制および均衡のうちの1つであり、これは、トランザクションの包含、順序、および出力に関する強いコンセンサスを確実にし、履歴のカノニカル状態を決定する。このアプローチの課題のうちの1つは、ノードの3つの別個のグループを調整し、それらの間の効率的な相互作用を確実にすることである。
【0047】
いくつかの実施形態において、例示的な分散型計算システムは、マス・マーケット・オーディエンス(例えば、数十億人のアクティブ・ユーザ)に対して利用可能にされ得る、繁栄していて魅力あるエコシステムをサポートするために、トランザクション容量および計算スループットを提供する。いくつかの実施形態において、例示的な分散型計算システムは、1秒あたり100万以上ものトランザクション(TPS:transactions per second)を取り扱う。
【0048】
例示的な分散型計算システムは、実用的なユーティリティを犠牲にしないことがある。特に、いくつかの実施形態において、本システムは、スマート契約間の完全同期通信を持続させる。完全同期性は、エラーまたは搾取の傾向のある複雑なロッキング・スキームなしで、契約間通信が、正確性(アトミシティ、整合性、分離、耐久性)についてのACID保証を保持することを確実にする。つまり、同期性は、1つのスマート契約が、別のスマート契約が正確に実行されると確信し、独立したスマート契約が、安全性を犠牲にせずに、複雑なシステム内へ構成されることを可能にするために必要とされ得る。
【0049】
長期的で持続的な分散は、例示的な分散型計算システムによって提供される1つの態様であり得る。多くのブロックチェーン対応のシステムが、システムのコア・バリューではなく、任意選択のもの、または表面的なものとして分散を扱う。これは短期的には何らかの迅速な成果をもたらし得るが、それらのシステムは、時間と共に劣化しやすい。さらに、他の明示的なインセンティブなしでは、任意の集中化率を有する有益なシステムは、さらに集中化する傾向がある。例示的な分散型計算システムによって提供される分散の品質は、アクセス、セキュリティ、信頼性、および検証可能性を含む。
【0050】
いくつかの実施形態において、例示的な分散型計算システムは、(ユーザが自身の使用に対して支払いをすることができるという条件で)固定されたコストでネットワークのシステム・リソースを使用するための能力を通じてアクセスを提供する。そのようなアクセスは、いかなるクラスのユーザがネットワークを使用することも拒否することができる、または何らかのトラフィックを他のものより優先することができる、アクター、またはアクターの妥当なグループがないことをもたらす。
【0051】
いくつかの実施形態において、例示的な分散型計算システムは、ネットワーク内の各誠実な参加者が他の誠実な参加者と同じ履歴のビューを有すること、および、この履歴的な記録が事後に修正されることが可能ではないことを確実にすることによって、セキュリティを維持する。
【0052】
信頼性は、システムの規則が一様に適用され、厳密に強制され、予測可能で透明性のある手法でのみ変更されることが可能という確信性を含む。いくつかの実施形態において、例示的な分散型計算システムは、これらの規則をある点で変更することができるアクター、またはアクターの妥当な集団がいないことを、システムのユーザが(例えば、ハード・フォークを通じて)それらの変更をオプトアウトすることを可能にせずに確実にすることによって、信頼性を提供する。
【0053】
いくつかの実施形態において、例示的な分散型計算システムは、一部または全部のアクション(例えば、プロトコル規則に従った高度なオン・チェーン動作等)の透明性を可能にするという点において検証可能である。そのため、誰でも、例えば、自身の制御下のコンピュータ・リソースを使用して、プロトコル(およびプロトコル内で定義された規則)が正確に従われたことを確認することができる。これは、全てのオン・チェーン・アクティビティを見るための能力を黙示的に含む。例えば、ユーザは、ユーザが提出したトランザクションがチェーン上で正確に実行されたことを検証することができる。
【0054】
アクセス、セキュリティ、信頼性、および検証可能性の、例示的な分散型計算システムの保証は、分散型環境からのより広範な利益のセットを取り込む。例えば、アクセスを保証することは、誰でもネットワークに参加し、ネットワークが拘束される規則を簡単に理解することができることを確実にするのに役立ち得る。さらに、セキュアなネットワークは、それらの規則を必ず実施し得る。この組み合わせは、ユーザがシステムについて推論することができ、入力の知られているセットを用いて、結果を確実に予測し、最終的に検証する環境を製造し得る。これらの要件は一体となって、完全な分散を達成するために必要とされるロバストな基準、ならびに透明性、自律性、相互運用性、および不変性の関連付けられた利益を提供する。
【0055】
図2は、本開示の実装を実行するために採用されることが可能である例示的な環境を描く。例示的なシステムは、コンピューティング・デバイス102、104、106、108と、ネットワーク110とを含み、これらは、ピア・ツー・ピア・ネットワークを形成するために使用され得る。いくつかの実施形態において、ネットワーク110は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、または、これらの組み合わせを含み、デバイス(例えば、コンピューティング・デバイス102、104、106、108)を接続する。いくつかの実施形態において、ネットワーク110は、イントラネット、エクストラネット、または、インターネットと通信するイントラネットもしくはエクストラネットを含む。いくつかの実施形態において、ネットワーク110は、通信ネットワークまたはデータネットワークを含む。いくつかの実施形態において、ネットワーク110は、有線通信リンクまたは無線通信リンク上でアクセスされることが可能である。例えば、モバイル・コンピューティング・デバイス(例えば、スマートフォン・デバイス102およびタブレット・デバイス106)は、セルラー・ネットワークを使用してネットワーク110に対してアクセスすることができる。
【0056】
いくつかの例において、ユーザ122~128は、分散型計算システムと相互作用するためにエージェント・ソフトウェアを採用するユーザ・エージェントとして作動していてもよい。例えば、ユーザは、それらのそれぞれのデバイス102~108を採用して、トランザクションを提供し、または説明されるシステム内のノードとして機能してもよい。
【0057】
いくつかの実施形態において、コンピューティング・デバイス102、104、106、および108は、図5に描かれたコンピューティング・デバイス510と持続可能に類似している。単純のために、4つのコンピューティング・デバイスが、図1図2に描かれている。しかしながら、本開示のその実装は、前述されたコンピューティング・デバイスなどの、適当なコンピューティング・デバイスのいずれかにより実現されることができることが予期される。さらに、本開示の実装は、必要に応じて、ピア・ツー・ピア・ネットワーク内のノードとして機能する任意の数のデバイスを採用することができる。
【0058】
コンピューティング・デバイス102、104、106は各々、任意の適当なタイプのコンピューティング・デバイス、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、タブレット・コンピュータ、携帯情報端末(PDA)、セルラー電話、ネットワーク・アプライアンス、カメラ、スマートフォン、エンハンスト汎用パケット無線サービス(EGPRS:enhanced general packet radio service)携帯電話、メディア・プレーヤ、ナビゲーション・デバイス、電子メール・デバイス、ゲーム機、または、これらのデバイスもしくは他のデータ・コンピューティング・デバイスのうちの任意の2つ以上の適当な組み合わせなどを含んでもよい。描かれている例において、コンピューティング・デバイス102はスマートフォンであり、コンピューティング・デバイス104はタブレット・コンピューティング・デバイスであり、コンピューティング・デバイス106は、デスクトップ・コンピューティング・デバイスである。
【0059】
サーバ・コンピューティング・デバイス108は、コンピューティング・デバイス102~106について上述したような、任意の適当なタイプのコンピューティング・デバイス、および、サーバ・クラス・ハードウェアを有するコンピューティング・デバイスを含み得る。いくつかの実施形態において、サーバ・コンピューティング・デバイス108は、シームレスなリソースの単独のプールとして動作するために、クラスタ化されたコンピュータおよび構成要素を使用するコンピュータ・システムを含んでもよい。例えば、そのような実装は、データ・センタ、およびクラウド・コンピューティングにおいて使用され得る。いくつかの実施形態において、バック・エンド・システム130は、バーチャル・マシンを使用して展開される。
【0060】
いくつかの実施形態において、コンピューティング・デバイス102~108は、例示的な分散型計算システム内のノードとして展開され、ピア・ツー・ピア・ネットワークを形成する。例えば、コンピューティング・デバイス102~108は、図3に例示されるように、形成されたピア・ツー・ピア・ネットワーク内のアクセス・ノード、セキュリティ・ノード、または実行ノードとして、説明される分散型計算において採用され得る。いくつかの実施形態において、形成されたピア・ツー・ピア・ネットワークは、各ネットワークノード(例えば、コンピューティング・デバイス102~108)が、ネットワーク上の他の全てのノードに直接的にまたは間接的に接続される、分散型ネットワークである。そのため、情報(例えば、トランザクション)は、中央サーバの必要なしに、ノード間で直接共有されることが可能である。いくつかの実施形態において、ノードは、ピア・ツー・ピア・プロトコルを採用して通信する。
【0061】
いくつかの実施形態において、システムは、コンピューティング・デバイス102~108の各々上に記憶され得る分散型ブロックチェーンに対応し得る。いくつかの実施形態において、コンピューティング・デバイスのセットは、ブロックチェーンを記憶した。ブロックチェーンは、トランザクションを備えるブロックを含む。いくつかの実施形態において、そのようなトランザクションは、例示的な分散型計算システムによって受信され、検証され、実行される。いくつかの実施形態において、ブロックチェーンに記憶されたトランザクションは、スマート契約を含む。いくつかの実施形態において、スマート契約は、図3に例示されるように、カスタム機能性を用いて拡張され、形成されたピア・ツー・ピア・ネットワーク内の実行ノードによってトランザクションの一部として呼び出され得る。例えば、コンピューティング・デバイス102~108は、ブロックチェーン上のブロック内で処理され、記憶されるべきトランザクションを受信するために、それぞれのユーザ222~226によって使用され得る。いくつかの実施形態において、コンピューティング・デバイス102~108は、スマート契約コードを実行するための実行ランタイムとしてバーチャル・マシンを採用する。例えば、そのような機構は、ある状態から別の状態への遷移を可能にし、すなわち、(トランザクションの数が記憶される)一定のブロックが与えられ、状態sが与えられると、計算を行うことは、マシンを新しい状態S’にする。いくつかの実施形態において、状態遷移機構は、トランザクション関連の口座にアクセスすること、動作を計算すること、およびバーチャル・マシンの状態を更新すること/書き込むことから成る。バーチャル・マシン上で実行されるもの全て(例えば、スマート契約コード)が、その状態を改変し得る。いくつかの実施形態において、ブロックの全てのトランザクションを実行した後、現在の状態が記憶され得る。
【0062】
図3は、例示的な分散型計算システムのための一般的なアーキテクチャの例を描いており、これは、例えば、図1図2の例示的な環境を通じて、展開されることが可能である。一般的なアーキテクチャは、クライアント302、アクセス・ノード310、セキュリティ・ノード320、および実行ノード330を含み、これらは、図1図2のデバイス102~108などのデバイスを通じて展開され得る。いくつかの実施形態において、アクセス・ノード310は、クライアント302についてのネットワーク利用可能性を維持し、世界状態に関連するクエリに回答する。いくつかの実施形態において、セキュリティ・ノード320は、BFTコンセンサス・アルゴリズムに参加することによってネットワークの安全性を確実にし、これは、ブロックに対して強い保証を提供する。いくつかの実施形態において、実行ノードは、セキュリティ・ノード320から受信されるとすぐにブロックを処理する(ファイナライズされたブロック325)。いくつかの実施形態において、実行ノードは、セキュリティ・ノード320によってファイナライズされた、トランザクション305などのトランザクションの結果を決定し、結果として生じた世界状態を記憶するための計算能力を提供することができる。これらの役割のより詳細な解説は、以下に提供される。
【0063】
いくつかの実施形態において、例示的な分散型計算システムは、図1図2のブロックチェーンなどの分散型ブロックチェーンを採用する。いくつかの実施形態において、分散型ブロックチェーンのジョブは、多種多様な構成要素機能へと分割されることが可能である。それらの機能のうちのいくつかは、完全に決定論的であり、客観的に正確な出力を有し得、それらのタスクのうちのいくつかは、主観的であり、ネットワーク・レベルのコンセンサスを必要とし得る。分散型ブロックチェーン・システムは、本来主観的であるもの、すなわち、どのトランザクションが、どの順序で、共有される状態に含まれるか(「トランザクション・ログ」)に関してネットワーク・コンセンサスに確実に到達するために、自律的で、リーダなしの、分散型システムを作成することができる。いくつかの実施形態において、そのような主観的なタスクは、トランザクション・ログを指示するための全能の中央管理者、またはカノニカル・トランザクション・ログの共有されるビューを分散型ネットワークが決定することを可能にする多くのコンセンサス・システムのうちの1つ、のいずれかを必要とし得る。ブロックチェーンの2つの他のタスク、すなわち、トランザクション・ログを記憶すること、および、コンセンサス順序でのログの内容の正確な適用から結果として得られる世界状態を決定することは、主観的でなくてもよく、完全に決定論的であってもよい。ブロックチェーンが消費者規模に到達することを防止する主なボトルネックは、この第2のカテゴリに収まる。
【0064】
いくつかの実施形態において、例示的な分散型計算システムは、決定論的プロセスにおける全てのビザンチン障害が4つの重要な属性、すなわち、検出可能性、帰属可能性、処罰可能性、および訂正可能性を有するように設計される。いくつかの実施形態において、決定論的プロセスは、客観的に正確な出力を有し得る。これは、ネットワーク内の単独の誠実なノードでさえ、決定論的な障害を検出し、不正確に実行されたプロセスの一部を再作成するように他の全ての誠実なノードに対して依頼することによって、他の全ての誠実なノードにエラーを証明することができることを意味する。さらに、いくつかの実施形態において、例示的な分散型計算システムにおける決定論的プロセスは、検証可能なランダム関数(VRF:verifiable random function)を使用して、ノードに対して割り当てられ得る。そのため、検出されたいかなるエラーも、そのプロセスの責任を負ったそれらのノードに対して明確に帰属させられることが可能である。いくつかの実施形態において、例示的な分散型計算システムに参加する全てのノードは、決定論的プロセスにおいてさえ、ステークを行わなければならず、ステークは、決定論的プロセスがビザンチン挙動を取ったと判断された場合にスラッシュされ得る。決定論的プロセスにおける全てのエラーが、自明に検出可能であり、かつ、帰属可能であるので、それらのエラーは、スラッシング(slashing)により確実に罰せられることが可能である。いくつかの実施形態において、説明されるシステムは、エラーが検出されるとすぐに迅速にエラーを取消す手段を有しなければならない。これは、悪意のあるアクターが、スラッシング・ペナルティーよりも悪意のあるアクターの利益になるエラーを誘発することを阻止する役割を果たす。
【0065】
説明されるシステムの設計は、多くの参加者がプロセスの非決定論的な部分をサポートするために必要とされ、一方で、はるかに少ない参加者が決定論的プロセスのために必要とされ、なぜならば、それらの参加者の特性が、確定的な検出、および、したがって、プロトコルを遵守しない人々の罰を指示するからであるという洞察によって通知された。したがって、説明されるシステムは、(図3に描かれるような)決定論的プロセスを分離し得、それらを、幅広いオーディエンスによって吟味される、より少ない、より強力な参加者に対して割り当て得る。より少ないノードは、ネットワークの決定論的な要素を、特に計算を実行するために、はるかにより効率的にする。例えば、ある概念実証は、このアプローチが、セキュリティ保障のいかなる劣化もなしに、100,000を超えるTPSを達成することができることを示す。5つの大陸上の11個の異なるデータ・センタ内で実行される30を超えるノードのヘテロジニアス・ネットワークとしてのテストベッド・セットアップにおける性能のための概念実証。これは、問題がそれらの決定論的な部分と非決定論的な部分とに分離され、それに応じて割り当てられる場合に可能な改善のうちのほんの1つの例である。
【0066】
いくつかの実施形態において、アクセス・ノード310は、例示的な分散型計算システムの外部の世界との情報交換を仲介し得、これは、状態と履歴との両方に関する体系的でタイムリーな通信を確実にするのに役立ち得る。いくつかの実施形態において、アクセス・ノード310は、トランザクション・プールを管理すること、および十分に形成されたトランザクション、例えば、クライアント302からのトランザクション305を収集して、セキュリティ・ノード320に対して提供することを課され得る。いくつかの実施形態において、十分に形成されたトランザクションは、トランザクションの保証人からのクレデンシャルを含み得る。いくつかの実施形態において、アクセス・ノード310が、十分に形成されたトランザクションを見る場合、アクセス・ノード310は、そのトランザクションのテキストをハッシュ化し、2つのこと、すなわち、第1に、トランザクションが十分に形成されていること、および、第2に、トランザクションは、実行ノード330がトランザクション・テキストの処理を終了するまで、トランザクション・テキストを記憶することにコミットするであろうこと、を示すためにトランザクションに署名し得る。いくつかの実施形態において、臨界数のアクセス・ノード310が、トランザクションをレビューし、トランザクションが十分に形成されていると結論を下した場合、それらは、トランザクションをレビューのためにセキュリティ・ノード320へ送信し得る。臨界数のアクセス・ノード310は実施形態によって変わり得る。例えば、臨界数のアクセス・ノード310は、様々なプロトコル・パラメータに依存し得る。いくつかの例において、少数の悪意のあるアクセス・ノードが、あるトランザクションを優先させること、または他のトランザクションを検閲することによって、ブロックチェーンの完全性を脅かすことができない手法で、臨界数のアクセス・ノード310が選ばれ得る。
【0067】
いくつかの実施形態において、セキュリティ・ノード320と実行ノード330との両方が、ブロックを構築し、処理した後、アクセス・ノード310は、それらの出力(例えば、計算の結果)について実行ノード330にクエリを行い得る。いくつかの実施形態において、アクセス・ノード310は、実行ノード330から受信された、その出力のキャッシュを記憶する。いくつかの実施形態において、アクセス・ノード310は、実行ノード330に、さらなるダイレクト・クエリを負担させる必要なしに、計算のキャッシュされた結果(例えば、状態応答345)をクライアント302に対して提供する。いくつかの実施形態において、検証可能なランダム関数(VRF)は、実行ノード330からのどの出力が、正確に計算されたことをチェックするためにアクセス・ノード310がクエリを行い得るかを決定する。最終的に、アクセス・ノード310は、実行ノード330を「誠実」に保ち得る。これは、説明されるシステムによって提供される分散のアクセス、セキュリティ、および検証可能性基準間の勢力均衡を維持するために実行され得る。システムの提供されるプロトコルおよび基盤となる構造は、高度なビザンチン障害耐性(BFT)である。なぜならば、いくつかの実施形態において、アクセス・ノード310のプール内に相当な数のビザンチン・エラーがあったとしても、セキュリティ・ノード320は、それらが署名したトランザクションがネットワークの臨界量によってレビューされたことを承認することを依然として必要とされるからである。BFTプロトコルは、少数の悪意のあるアクセス・ノードまたはセキュリティ・ノード(例えば、「少数の」は、何らかの臨界数未満を意味する)からネットワークを保護することができ、その結果、それらは、ネットワークの完全性およびライブネスを脅かすことができない。ノードによる、いかなる意図的な誤りまたは非意図的な誤りも、検出可能であり、修正可能であり、帰属可能であり、ネットワークの残りの部分によって罰することが可能であり得る。
【0068】
いくつかの実施形態において、アクセス・ノード310は、それらのクエリおよびトランザクションがそれぞれ回答され、取り込まれ得るので、公衆と通信するために高レベルの帯域幅およびを低いレイテンシを必要とする。いくつかの実施形態において、アクセス・ノード310(例えば、図2のユーザ222~228)には、それらが保証するあらゆるトランザクションに対して、および、それらが検証に成功した各トランザクション対して、定額料金(または他の報酬)が支払われ得る。いくつかの実施形態において、アクセス・ノード310は、十分に形成されていないコレクションをアクセス・ノード310が提供した場合、または、アクセス・ノード310が保持することになると伝えたトランザクション・テキストを記憶することにアクセス・ノード310が失敗した場合、スラッシュされる。
【0069】
スラッシングは、ノード誤動作を妨げ、全体的なネットワーク・セキュリティおよび利用可能性を維持するために、ブロックチェーン・プロトコル(例えば、プルーフ・オブ・ステーク)に組み込まれた機構であり得る。同様に、インセンティブは、プロトコル・セキュリティ、利用可能性、およびネットワーク参加にインセンティブを与えるように設計され得る。スラッシングは、罰の一形態であり、ノードの除去、金銭的ペナルティーおよび/または他の罰を含んでもよい。
【0070】
いくつかの実施形態において、セキュリティ・ノード320は、ブロックチェーンの完全性を確実にするために、ブロック・ファイナリティを達成するべく、説明されるシステムによって採用されるコンセンサス・アルゴリズムに参加する。このコンテキストにおいて、ファイナリティは、臨界的多数によって署名されており、十分に形成されていることと、アクセス・ノード310によって記憶されていることとの両方が確認されるトランザクションのファイナライズされたブロック325を含む。いくつかの実施形態において、セキュリティ・ノード320は、トランザクションの決定論的な出力を知るために必要な順序を設定する候補ブロック315に対して迅速に投票することができるので、主としてセキュリティおよび規模に対して貢献する。いくつかの実施形態において、セキュリティ・ノード320は、アクセス・ノード310によってセキュリティ・ノード320へ提出される署名されたトランザクション・ハッシュが、説明されるシステムによって必要とされるような臨界量のアクセス・ノードによって署名されていることの有効性を確認する。いくつかの実施形態において、臨界量のアクセス・ノードは、設定可能な閾値によって決定される。
【0071】
セキュリティ・ノード320によって行われるコンセンサス・アルゴリズム(例えば、プルーフ・オブ・ステーク・アルゴリズム等)は、サブプロトコルであってもよい。コンセンサス・アルゴリズムは、セキュリティ・ノード320が、チェーンに追加するべき次のブロックに関して合意する(例えば、「コンセンサス」に到達する)のに役立ち得る。
【0072】
いくつかの実施形態において、いったんセキュリティ・ノード320が、提示されたトランザクションが臨界数のアクセス・ノード310によって署名されたという合意に到達することに成功すると、そのトランザクションは、ファイナライズされたブロック325とみなされる。説明されるシステム内のプロセスのセキュリティは、基盤となるコンセンサス・アルゴリズムのセキュリティに依存しており、その検討事項のうちのいくつかは、多数の参加者をサポートするための速度および能力である。いくつかの実施形態において、例示的な分散型計算システムによって採用されるコンセンサス・アルゴリズムは、Casper CBC、Tendermint由来のSBFT、Hot Stuff、Fantomette、または、多くの参加者をサポートするのに十分に適した他のものの変形例を含む。いくつかの実施形態において、ファイナライズされたブロックは、含まれるトランザクションの順序を決定し得る。いくつかの実施形態において、トランザクションの順序付けは、コレクションの順序、およびコレクション内のトランザクションの順序付けに基づく。いくつかの実施形態において、これらの要素の順序付けは、提案するノードによって実行される偽似ランダム・アルゴリズムに対応し得る。
【0073】
いくつかの実施形態において、セキュリティ・ノード320は、臨界数のアクセス・ノード310がトランザクションをレビューし、署名したことをチェックするグループであるので、アクセス・ノード310に対するチェックポイントを提供する。いくつかの実施形態において、セキュリティ・ノード320は、仲間のセキュリティ・ノード320によってのみ、とりわけ責任を負わされる。PoWベースのシステムおよびPoSベースのシステムの共通の懸念事項は、母集団の小さなサブセットが、重要なリソース、例えば、ブロックを製造し、投票するために必要とされるマイニングまたはステークなど、を制御することができるということであり、これはシステムのセキュリティの劣化である。いくつかの実施形態において、参加するための要件を低くすることによって、例示的な分散型計算システムは、例えば、不良なアクターによってビザンチン・カルテルまたは他の共謀アクティビティを調整することを、より困難にまたはより高価にし得る。
【0074】
いくつかの実施形態において、セキュリティ・ノード320は、最小限の帯域幅および計算要件を有して、質素なコンピューティング・デバイス、例えば、スマートフォンまたは低出力ARM(登録商標)システムなどでさえ、投票プロセスに参加し、ネットワークの安全性を確実にすることを可能にしてもよい。多くのネットワークは、分散型ネットワークに加わるために実質的なものを通じて、オープンな参加を主張し得る。そのような閾値を維持することは、ネットワークのセキュリティを弱体化させる。セキュリティ・ノード320について上述したように、参加要件を低くすることは、調整問題を持続させ、これは、高度なBFTを提供することの中心となり得る。なぜならば、不良なアクターのサブセットがネットワークを破壊することを非常に困難にし得るからである。いくつかの実施形態において、セキュリティ・ノード320は、それらがブロックに含めるトランザクションに対して支払いを受け得る。いくつかの実施形態において、コンセンサス・プロセスに参加することは、これらのノードがステークを行うことを必要とし、これは、これらのノードが無効なブロックに署名する場合にスラッシュされ得る。いくつかの実施形態において、無効なブロックは、アクセス・ノード310からの臨界数の署名を有しない。
【0075】
いくつかの実施形態において、実行ノード330は、実行ノード330に対して提供されるファイナライズされたブロック325の出力を計算する。いくつかの実施形態において、実行ノード330は、セキュリティ・ノード320によってファイナライズされ、提供された可能性がある候補ブロック315(例えば、ファイナライズされたブロック325)を実行する。いくつかの実施形態において、実行ノード330は、セキュリティ・ノード320によって実行ノード330に対して提供されたハッシュと一致するトランザクション・テキストについてアクセス・ノード310にクエリを行う。このデータを用いて、実行ノード330は、出力を計算することが可能となり得、これは、いくつかの実施形態において、誠実さを確実にするために、アクセス・ノード310のランダムに割り当てられたサブセットによって、後でランダムにクエリを行われる。いくつかの実施形態において、実行ノード330は、規模および効率におけるシステムの改善の少なくとも一部に対して責任を負い得る。なぜならば、非常に少数のこれらの強力なコンピュータ・リソースのみが、履歴状態を計算し、記憶するように必要とされるからである。
【0076】
いくつかの実施形態において、いったん実行ノード330のうちの1つが、ファイナライズされたブロック325の出力、またはファイナライズされたブロック325内のトランザクションのサブセットを計算すると、ハッシュ化されたコミットメントを提示する。ハッシュ化されたコミットメントは、状態コミットメントに対応し得、これは、新しいブロックを実行した後のブロックチェーンの全状態のハッシュであり得る。いくつかの例において、このハッシュ化されたコミットメントは、ブロックチェーンの状態がマークル・ツリーに記憶される場合、マークル・ツリー・ハッシュに対応し得る。いくつかの実施形態において、この出力は、その共同実行者(例えば、例えばVRFによって決定されるような他の実行ノード330)もそれらの出力を提出すると、明らかにされ得る。これはノードが互いの作動のなりすましをしていないことを確実にするために重要である。いくつかの実施形態において、いったん実行ノード330が、それら自体の回答を提出すると、出力が明らかにされる。いくつかの実施形態において、いったん明らかにされると、出力は、アクセス・ノード310によって実行されるランダム・クエリおよびチェックを受ける。いくつかの実施形態において、実行ノード330は、比較的低いBFTを有し得る。しかしながら、これは、システムの全体的なセキュリティを損なわない。なぜならば、それらが行うプロセスは決定論的であるからである。例えば、いかなる不良なアクターも、アクセス・ノード310によって簡単に検出され、罰せられ得る。
【0077】
いくつかの実施形態において、ノード(例えば、実行ノード330)のこの比較的小さいグループは、プロセッサ速度および帯域幅について最も実質的で技術的な要件を有する。なぜならば、それらは、ネットワークの出力を決定するために必要な計算を実行することまたは行うことを課され得るからである。いくつかの実施形態において、この程度の特殊化を可能にすることは、他の従来の分散型ネットワークと比較した場合、計算コストを少なくとも1000倍、おそらくはより一層、低減することができる。
【0078】
いくつかの実施形態において、実行ノード330は、ブロックチェーンの全世界状態を計算し、記憶する責任を負うが、実行ノード330は、その状態についての全ての外部クエリに回答することを必要とされなくてもよい。いくつかの実施形態において、実行ノード330は、アクセス・ノード310に対して、それらの出力を確認するために、検証期間中に少なくとも一回、回答し得る。いくつかの実施形態において、このクエリは、アクセス・ノード310に対して、上述したような、クライアント302からの将来のクエリについての回答(例えば、状態応答345)を提供し、これは、実行ノード330に将来負担をかける、それらの過剰なクエリを実行ノード330から省く。しかしながら、いくつかの実施形態において、実行ノード330は、それらの出力についての回答を促されたときにアクセス・ノード310に対して提供しない場合、罰され(例えば、スラッシュされ)得る。いくつかの実施形態において、実行ノード330は、それらの出力が検証されると、検証期間の終了時に、それらの作業に対して支払いを受け得る。いくつかの実施形態において、実行ノード330によって課されるコストは、計算によって変わり、計算が必要とした命令の数に基づく可能性がある。
【0079】
いくつかの実施形態において、これらの異なるノード・タイプ(例えば、アクセス・ノード310、セキュリティ・ノード320、および実行ノード330)間の共通スレッドは、ネットワークによって保持される状態に対する、それらの関係および権限であり得る。例えば、いくつかの実施形態において、世界状態全体は、計算を行うために、ありとあらゆる実行ノード330によって保持され得る。いくつかの実施形態において、いったん実行ノード330が計算を実行し、出力を決定すると、それらは世界状態を更新し得、その後、世界状態は、アクセス・ノード310によって有効性を確認される。いくつかの実施形態において、実行ノード330は、問題の出力状態についてマークル証明を提供しなければならない。この複雑さは、出力の完全性の有効性検証を可能にし得る。
【0080】
いくつかの実施形態において、アクセス・ノード310は、全体的なカノニカル状態335の一部を各アクセス・ノード310が保持した状態で、最も最近更新されたまたはアクセスされたデータをシャード化された様式でキャッシュし得る(例えば、キャッシュされた状態340)。このキャッシュされた状態340は、実行ノード330がビジー状態であり、回答することができない場合には、ユーザ・クエリに回答する(例えば、回答状態345をクライアント302に対して提供する)ためにデータが簡単にアクセス可能であることを確実にするのに役立ち得る。回答をより迅速に提供するためのこの能力は、公衆に対してネットワークのアクセスおよび検証可能性を確実にするのに役立つ。いくつかの実施形態において、アクセス・ノード310は、トランザクションが処理され、結果が実行ノード330によって検証されるまで、トランザクションデータを保持する責任も負う。いくつかの実施形態において、いったん処理されると、トランザクション自体がカノニカル状態345の一部になり、アクセス・ノード310は、キャッシュされた状態340(例えば、トランザクション・テキスト)を記憶することをもはや必要とされない。
【0081】
いくつかの実施形態において、(例えば、クライアントデバイス302のうちの1つによって)トランザクションが生成される場合、トランザクションは、実行されるべき明示的なコードおよび/または明示的なデータ(例えばスマート契約)、ならびにトランザクションに対して支払いを行う口座からのクレデンシャルを含み、これは、トランザクションまたはデータ保持者を生成するユーザ・アカウントとは異なり得る。いくつかの実施形態において、このトランザクションは、ネットワークへ提出され、ネットワークにおいて、トランザクションは、例えばクレデンシャルをチェックするために、アクセス・ノード310によって処理される。いくつかの実施形態において、アクセス・ノード310は、実行ノード330がトランザクションを処理し、それらの出力が検証されるまで、そのトランザクションを保持することにコミットするためにトランザクションに署名する。いくつかの実施形態において、いったん臨界量のアクセス・ノード310がトランザクションに署名すると、トランザクションは、2つの事柄、すなわち、1)臨界量のアクセス・ノード310がトランザクションを見て、トランザクションを記憶することに合意し、トランザクションが十分に形成されていることを確認したこと、および、2)セキュリティ・ノード320は、それらが過去にパブリッシュしたものが無効であったという証明がそれらに提供されない限り、その高さにおける別のブロックを確認しないであろうことを検証するためにセキュリティ・ノード320へ送信され得る。
【0082】
いくつかの実施形態において、セキュリティ・ノード320は、ファイナライズされたブロック325に関して合意するためにBFTコンセンサス・アルゴリズムに従う。いくつかの実施形態において、いったん候補ブロック305がセキュリティ・ノード320によってファイナライズされると、ファイナライズされたブロック325は、計算のために実行ノード330へ送信され得る。いくつかの実施形態において、VRFは、各ファイナライズされたブロック325を計算する責任を負う実行ノード330のサブセットを決定するために採用される。いくつかの実施形態において、いったん実行ノード330が出力を計算すると、実行ノード330は、結果のハッシュ化されたコミットメントを生産する。いくつかの実施形態において、選択されたノード(例えば、決定されたサブセット内の実行ノード)が全て、それらのコミットメントを提出した場合、それらは、非暗号化された結果出力を明らかにし得る。いくつかの実施形態において、この出力が、参加する実行ノード330の全てから同じであることを示される場合、アクセス・ノード310の各々は、検証されるべき少数のトランザクションを選択するためにVRFを使用する。いくつかの実施形態において、いったん回答がアクセス・ノード310に対して提供されると、アクセス・ノード310は、その回答を、クライアント302からの将来のクエリに回答するためにキャッシュする。例えば、ユーザが、システムから状態を取り出すことを望む場合、それらはアクセス・ノード310に対して(例えば、クライアント302を通じて)クエリを提起し得る。例えば、クエリは、「このブロック高さにおける、このレジスタのコンテンツは何か?」などの形態であってもよい。いくつかの実施形態において、アクセス・ノード310は、それらが保持するキャッシュされた状態を通じてクエリを実現するか、または、それらは、実行ノード330に対して出力についてクエリを行うことができる。
【0083】
いくつかの実施形態において、トランザクション、およびその中に含まれているそれぞれのブロックは、検証期間が終わった後にのみ、カノナイズされた(canonized)と考慮され得る。いくつかの実施形態において、検証期間中、例えば、結果は、不正確な出力の証明を提出するために、アクセス・ノード310と公衆との両方に対してオープンである。いくつかの実施形態において、検証期間は、最大で数時間の長さであり得る。
【0084】
いくつかの実施形態において、例示的な分散型計算システムのアーキテクチャを上述したように分割することによって、複数の利益、特に、同期性、効率性、および規模が達成され得る。例えば、分散型環境において開発することは、開発者にとって多くの不確実性を伴い、とりわけ重要なことは、書き込むことができる前に変化するデータから読み出すことである。このことを念頭に置くと、強い直列化可能性の保証、すなわち、重複するトランザクションのない、シーケンシャルなスケジュールと等価な結果は、分散型開発環境、例えば、例示的な分散型計算システムによって提供される環境などが提供することができる最も重要なことのうちの1つである。トランザクションの順序にコミットすることによって、トランザクションは、絶対的な順序で実行されたように見えることができ、その結果、スループットを改善するためにいくつかは並列に実行されたとしても、開発者はシステムについて推論することができる。特に、トランザクションがシャード間で移動する場合、いくつかのシステムは、直列化可能性を持続させるためにロッキング機構に頼る。しかしながら、いくつかの実施形態において、実行ノード330が出力を決定する前の順序に関する例示的な分散型計算システム・プロトコルの合意は、いったんトランザクションが順序づけられると、その結果について確実性があることを確実にする。
【0085】
いくつかの実施形態において、リソースを効率的に採用するために、例示的な分散型計算システムは、プルーフ・オブ・ステーク(PoS)・ベースのシステムを備えてもよく、できる限り多くの冗長なタスクを除去するように設計される。例えば、古典的なブロックチェーン実装においては、あらゆるノードが、あらゆるトランザクションをレビューし、全ての状態を記憶することを必要とされ得る。決定論的なタスクと非決定論的なタスクとを分割し、それらを、それらのそれぞれの実行に特殊化することができるリソースに対して割り当てることによって、例示的な分散型計算システムのスループットが大幅に改善され得る。
【0086】
いくつかの実施形態において、アーキテクチャ・レベルで、例示的な分散型計算システムのセキュリティは、1)3つの異なるノード・タイプ間の電力およびアカウンタビリティーの分割、2)コンセンサス・アルゴリズムによってサポートされる高い参加率、および3)、ネットワークのインターフェースとしてのアクセス・ノード310を指定することによって提供される。これらの設計要素は、分散型システムが直面することが多い一般的な攻撃の各々に対処するために、異なった姿を現し得る。例示的な分散型計算システムのアクセスおよび検証可能性の要件は、より広いネットワークと公衆との両方がプロセスを検証し、検証期間中にプロセスに異議を唱えることができることを保証する。計算の出力は決定論的であるが、いくつかの実施形態において、いったんその順序がファイナライズされたブロック325において設定されると、立証可能なエラーがネットワークへ提出される場合には、検証期間は再計算されるべき状態に留まり、したがって検出可能性についての機会を確実にする。例えば、いくつかの実施形態において、アクセス・ノード310は、あらゆるトランザクションに署名して、トランザクションに対する支払いを行うための署名保証人が存在することを確信させ、帰属を保証する。いくつかの実施形態において、全てのノードは、それらがネットワークのその部分から除去された場合にそれらが失うことになる値に関してステークされ、これは、違反があった場合の罰(例えば、スラッシュ化)を確信させる。
【0087】
ブロックチェーン・コンテキストにおいて、検閲耐性は、あるグループが別のグループによるネットワークへのアクセスを拒否する困難さに対応し得る。そのため、いくつかの実施形態において、アクセス・ノード310の役割は、アクセスを保証し、誰でもトランザクションを監査し、提出することができることを確実にすることである。検閲に対抗するために導入されるアーキテクチャ・レベルの方策に加えて、いくつかの実施形態において、セキュリティ・ノード320は、トランザクション・ハッシュのみを見てもよい。したがって、そのような実施形態において、セキュリティ・ノード320がトランザクションを検閲するためには、セキュリティ・ノード320は、その署名者、データ、およびアクションのハッシュを知る必要があることになる。いくつかの実施形態において、セキュリティ・ノードは、一般に、莫大な数の共同参加者によって、説明されるシステムを弱体化することを防止される。したがって、いかなる問題に関する共謀も、調整することが非常に困難になる。
【0088】
いくつかの実施形態において、セキュリティ・ノード320は、二重支出攻撃から保護し得る。例えば、いくつかの実施形態において、このグループへの幅広い参加は、小さいグループが、同じ高さにおける代替的ブロックを引き受け(honor)ようと共謀するリスクを著しく減少させる。例えば、ノードのこのプールに対してトランザクションのグループが提示される場合、それらは、十分な数のアクセス・ノード310がグループに署名することと、そのグループが、その瞬間と将来との両方で、その高さにおいてそれらが引き受けることになる唯一のブロックを形成することとの両方に関してコンセンサスに至る。いくつかの実施形態において、検証期間中に、競合する高さにおけるブロックを拒否するための不正の証明の提出に成功しない限り、提示される他のブロックは、ネットワークによって拒否されることになる。
【0089】
フロント・ランニング攻撃において、敵対的ノードは、そのトランザクションを別のトランザクションの前に挿入することが有利であると決める。そのような動きは、競合する入札の前により高い入札をすることと同じくらい単純であり、または、その出力を偽って操作するためにトランザクションを戦略的に挿入することと同じくらい功名であり得る。これに対抗するために、いくつかの実施形態において、実行ノード330は、トランザクションの順序を計算するためにVRFを行う。これは、トランザクションが既に決定論的に順序づけられた後まで、トランザクションの順序が、知り得るものでもなければ、誰かによって指示されることが可能なものでもないことを確実にする。
【0090】
いくつかの実施形態において、アクセス・ノード310およびセキュリティ・ノード320は各々、ブロックに含まれるトランザクションにおける発言権を有する。そのような実施形態において、いずれかのグループが、トランザクションの順序を前もって設定することができる場合、そのことは、それらがその順序を利用し、自身のトランザクションを優先させる機会を提示する。いくつかの実施形態において、実行ノードが、VRFを実行して、トランザクションのカノニカル順序(カノニカル状態335)を明らかにすることを必要とすることによって、ノードはシーケンスを操作することはできない。いくつかの実施形態において、VRFを決定するために使用されるパラメータは、決定論的であり、セキュリティ・ノード320からの出力に依存することになる。
【0091】
偽の口座およびアクティビティの潜在的な混乱に対する耐性は、ネットワークのスループットを維持するための1つの態様である。なぜならば、そのような悪意のあるトランザクションは、ノードに対して多大な負担を引き起こすことがあるからである。いくつかの実施形態において、ネットワークのインターフェースとして、アクセス・ノード310は、トランザクションに署名する口座の各々の残高を認識する。いくつかの実施形態において、トランザクションに対して支払いを行うユーザは、スパムから守るために、トランザクションを提出するための最低限の残高も保持しなければならない。
【0092】
いくつかの実施形態において、アクセス・ノード310によって行われる最初のプロセスは、ブロックに含めるためにセキュリティ・ノード320へ提出されるべきトランザクションのリスト、および、トランザクションが発生すべき順序を決定することである。このプロセスは、「純粋なコンセンサス問題」であり、この問題に対する多くの取り得る回答があり、その各々が等しく「正しい」。しかしながら、異なる選択は、異なるカノニカル状態につながることになるので、ネットワークは、単一の回答に関して合意し得る。
【0093】
いったんトランザクションの順序付けられたリストが合意されると、それらのトランザクションを処理した結果、どのようなカノニカル状態が得られるかに関する、単一の客観的に正確な回答があり得る。例えば、そのトランザクション・リストをエラーなしで処理した任意のノードは、その同じトランザクション・リストを正確に処理した任意の他のノードとまさに同じカノニカル状態に終わり得る。いくつかの例において、ブロックチェーン計算は、それらが他のノードによって検証されることを可能にするために、完全に決定論的であってもよい。したがって、2つの性能プロファイルに関する、2つの問題があり得る。まず、順序付けプロセスは、多種多様なBFTコンセンサス・アルゴリズムによって解決されることが可能である純粋なコンセンサス問題であり得る。いくつかの実施形態において、そのようなプロセスは、コンセンサス・ノード間での多くの通信(例えば、ある閾値よりも多い通信メッセージ)を必要とし得るが、計算的に複雑ではないことがあり得る。このプロセスに関与するノードが多ければ多いほど、チェーンを破壊することがより困難になるので、ネットワーク・セキュリティは、このプロセスから直接もたらされる。第2に、いくつかの実施形態において、計算プロセスは、ネットワークがビジー状態にある場合、計算的に強力なノードを必要とし得るが、多数のノードを必要としない。なぜならば、それらのいずれも、客観的に計算ノードの「作業をチェックする」ことができ、エラーが発生した場合には、エラーを証明することができるからである。いくつかの実施形態において、ノードが、無効な出力を提示する場合、ノードはそのステークの一部または全部を失い、不正確に処理された計算は、誠実なノードにより再実行されることが可能である。上記プロセスの結果は、いくつかの実施形態において、集中化に起因するセキュリティの劣化のない、最大限のスループットを達成することができる単一のシャード化されていないネットワークである。
【0094】
スキーマの例示的な統合
いくつかの実施形態において、上記の例示的な分散型計算システムは、パイプライン型アーキテクチャ、およびネットワーク内のノードの役割の分離に基づいて、ある閾値よりも大きいスループットを達成するブロックチェーンを備える。上述したように、ブロック内のトランザクションの実行は、実行ノード330によって行われる。いくつかの実施形態において、説明される証明スキーム(例えば、機密知識の特殊な証明)の統合は、(例えば、ユーザとして作用する)計算の正確性を保証するために、検証ノード(図示せず)と称される、別のタイプのノードによって再実行される実行を含むことができる。これらのノード、すなわち、実行ノード330と検証ノードとの両方の各々による実行プロセスは、実行トレースをもたらし、実行トレースは、ブロックのトランザクションを実行した証明として考慮されることが可能である。
【0095】
実行トレースは、ブロック・トランザクションの実行をトレースする一連の工程を備えることができる。工程の識別は、ブロックチェーン状態への書き込み、およびブロックチェーン状態からの書き込みを含むことができる。
【0096】
いくつかの実施形態において、検証ノードが、計算を検証する正しいジョブをしており、高価なチェックをスキップすることによって、実行ノード330の結果の有効性を確認していないことを確実にするために、証明スキームの統合は、各検証ノードに、実行トレースを知っていることの証明をパブリッシュするように強制する。実行トレース自体をパブリッシュすることは、いかなる検証ノードもそれらがトランザクションを計算したと主張することをもたらす。したがって、実行トレースは、シナリオ内の秘密であり、保護されたままでなければならない。実行ノード330および検証ノードは、実行トレース(例えば、証明)を知っているという特殊な証明をパブリッシュする。
【0097】
いくつかの実施形態において、コンセンサス・ノードとして作用するアクセス・ノード310は、全ての証明を収集し、それらが全て同じ実行トレースから生成されたことを検証する。プロトコルは、実行トレースを正確に計算する誠実な検証ノードの閾値があることを確かめるので、検証が有効である場合、実行トレースは有効であるはずである。検証におけるいかなる不整合も検出可能であり、不誠実な当事者に対して帰属可能である。
【0098】
いくつかの実施形態において、検証ノードは、トランザクションを並行な手法で再計算し、一方で、コンセンサス・ノード310は、上記に説明された証明を使用して、結果の安全性を保証する。いくつかの実施形態において、上記に説明された例示的な分散型計算システムは、簡潔で効率的なスキームを実装するためのプロセスまたはプロトコルを採用する。このプロセスは、スキームの正式な一般的な説明およびそのセキュリティ定義に従って本明細書において説明される。いくつかの実施形態において、プロセスは、ボネ・リン・シャチャム(BLS:Boneh-Lynn-Shacham)署名スキームに基づいた構造を含む。以下の説明は、このスキームについての適当な計算仮定の下でのセキュリティの証明を提供する。
【0099】
いくつかの実施形態において、実行ノード330は、ファイナライズされたブロック内の全てのトランザクションの重い計算を行う。説明されるプロセスは、ブロック・トランザクションを再計算することに対して検証ノードを割り当てることによって、障害のある結果を検出し、帰属させるための機構を導入する。いくつかの実施形態において、この計算は、並行で独立した手法における、より軽い計算検証を可能にするために、チャンクへと分けられる。いくつかの実施形態において、コンセンサス・ノード310は、ブロック結果にコミットし、計算が大部分の検証ノードによって検証されたことを確かめる。いくつかの実施形態において、説明されるBLSベースのプロセス実現は、中間結果がチャンク全体を実行することによるよりも安価に導出されることが可能ではないと仮定して、チャンク計算の中間結果を、そのチャンクのトランザクションを実行した証明として採用することに関与する。
【0100】
いくつかの例において、チャンクは、チャンク化アルゴリズムを使用して分けられる。チャンク化アルゴリズムは、チャンクが同等の計算時間を有するように、ブロックをチャンクに分け得る。いくつかの例において、検証ノードは、チャンクのおかげで、より軽い、並行で独立した手法でブロックを計算する。
【0101】
いくつかの実施形態において、実行ノード330は、各ブロック・チャンクの計算中間結果に対するコミットメントとして証明を提供し、検証ノードは、それらが検証する各チャンクのそれら自体の中間結果に対するコミットメントとして別の証明を提供する。いくつかの実施形態において、コンセンサス・ノード310の役割は、各チャンクの証明が同じ中間結果から一貫して生成されていることを確認することによって仲裁することである。単独の誠実な検証ノードは、チャンク計算における障害のある結果をプロトコルが検出することを可能にする。このプロセスは、ブロック計算が高い確率で正確であることを保証する。採用されるプロセスは、「怠惰な」検証ノードが、それらがチャンクを再計算したと主張することを防止するが、中間結果を計算した任意の当事者との共謀を防止または検出しない。しかしながら、誠実な結果から証明を生成する単独の非共謀ノードは、コンセンサス・ノード310が他の障害のある証明を見出すのを支援するのに十分である。
【0102】
いくつかの実施形態において、BLSベースのプロセスは、当事者が、2つ以上の署名が同じ秘密メッセージに、その秘密自体についてさらに学習することなく、署名済みであることをチェックすること(例えば、ペアリング同等性チェック)を可能にするスキームを含む。いくつかの実施形態において、BLSベースのプロセス構造は、例示的な分散型計算システム内で採用されるスキームによって必要とされる特性を越えた、いくつかの洗練された特性も特に提供する。
【0103】
検証者のジレンマとの関係
いくつかの例において、システムは、検証者のジレンマを軽減することに役立つことができる。検証者のジレンマは、いくつかの参加ノードが他のノードの作業を検証することになっている、分散型システムにおいて生じ得る。さらに、検証者に対する補償がその速度と共に(統計的に)増加し、かつ、検証者がチェックしている結果が1に十分に近い確率で正確であるシステムの場合、大抵のブロックチェーンは、ノードができる限り高速で実行し、かつ正確な結果を伝えるための組み込まれたインセンティブを有する。検証者が、それらの作業に対して補償される場合であっても、全ての結果を盲目的に承認することは、そのような環境において依然として最も有益な戦略となり得る。なぜならば、この戦略は、時間を節約するだけでなく、ハードウェアについての費用および検証作業のためのエネルギーも節約するからである。また、そのような戦略を採用するノードは、長期的には、悪意のあるアクターに対するネットワークのレジリエンスを弱体化させる。
【0104】
いくつかの実施形態において、説明されるシステムは、検証者のジレンマを、そのアーキテクチャを通じて軽減する。具体的には、いくつかの実施形態において、検証ノードは、それらに対して割り当てられたチャンクの実行トレースを検証ノードが知っていることを証明しなければならず、検証ノードは、誤った結果を承認するとスラッシュされ、誤った結果をチェックする少数の誠実な検証ノードは、誤った結果を生成した実行ノード、および、それを承認した全ての検証ノードをスラッシュするのに十分である。
【0105】
問題の理論的/数学的な抽象化
およびGを、2つの巡回群とし、gおよびgを、それぞれGおよびGのジェネレータとする。計算co-Diffie-Hellman(co-CDH:Computational co-Diffie-Hellman)問題は、
【0106】
【数1】
を与えられると、g xyを計算することである。co-CDH仮定は、co-CDH問題を無視できない確率で解く確率的多項式時間アルゴリズムは存在しないというものである。
【0107】
関連する問題は、分割可能な計算co-Diffie Hellman問題(co-DCDH:Divisible Computational co-Diffie Hellman problem)であり、
【0108】
【数2】
を与えられると、
【0109】
【数3】
を計算する。co-DCDH仮定は、co-CDH問題に同様に定義される。2つの仮定は等価であることが示される。
【0110】
補題1
(G、G)におけるco-DCDH仮定およびco-CDH仮定は等価である。
証明。co-DCDH問題を解く敵対的Aは、co-CDH問題も解き、その逆も然りであることが示される。
【0111】
・co-CDH => co-DCDH:
Aは、co-DCDH課題
【0112】
【数4】
を与えられ、co-CDHソルバー・アルゴリズムへのアクセスを有する。
【0113】
co-cDHは、G×Gにおける任意のランダムな(r,r)について
【0114】
【数5】
である。
【0115】
Aは、
【0116】
【数6】
を計算し、これは、
【0117】
【数7】
を出力し、co-DCDH課題を解く。
【0118】
・co-CDH <= co-DCDH
Aは、co-CDH課題
【0119】
【数8】
を与えられ、co-DCDHソルバー・アルゴリズムへのアクセスを有する。
【0120】
co-DCDHは、G×Gにおける任意のランダムな(r,r)について
【0121】
【数9】
である。
【0122】
Aは、
【0123】
【数10】
を計算し、これは、
【0124】
【数11】
を出力し、co-CDH課題を解く。
【0125】
2つの問題は等価であり、したがって、2つの仮定も等価である。
BLS署名
BLS署名のスキームの簡単なレビューとして、G、GおよびGを素数位数pの3つの巡回群とし、ただし、(G、G)は、双線形群ペアである。eを効率的に計算可能な非縮退ペアリングe:G×G→Gとし、Hをハッシュ関数H:{0,1}→G(ランダム・オラクルとしてモデル化)とする。乗法表記法が3つの群のために使用される。署名スキームは、以下のように定義される。
【0126】
・BLS KeyGen()→(sk,pk)、ただし、
【0127】
【数12】
および
【0128】
【数13】
・BLS-Sign(sk,m)→σ、ただし、σ←H(m)sk∈G
・BLS-Verify(pk,m,a)→v∈{OK,FAIL}、ただし、vは、e(H(m),pk)の場合にはOKであり、その他の場合にはFAILである。
【0129】
ダン・ボネー(Dan Boneh)、ベン・リン(Ben Lynn)、およびホヴァブ・シャッハム(Hovav Shacham)、ヴェイル・ペアリングからの短い署名(Short signatures from the Weil pairing)、In ASIACRYPT、2001年12月(以下、ボネーら)は、署名スキームが、ランダム・オラクルにおいて、および(G、G)におけるco-CDH仮定の下で、選ばれたメッセージ攻撃の下で既存の偽造に対してセキュアであることを証明した。
【0130】
登録鍵および秘密鍵モデルの知識
トーマス・リステンパー(Thomas Ristenpart)およびスコット・ヤイレック(Scott Yilek)、所有の証明の威力:rogue-key攻撃に対するマルチパーティ署名のセキュア化(The power of proofs-of-possession:Securing multiparty signatures against rogue-key attacks)、In EUROCRYPT、2007年5月(以下、リステンパーら)は、登録鍵モデルを定義しており、これは、プロトコルR=(Reg-Prove、Reg-Verify)である。
【0131】
・Reg-Prove(sk,pk)→πは、登録証明を生成する。
・Reg-Verify(pk,π)→{OK,FAIL}は、pkについて証明が有効である場合にはOKを出力し、その他の場合にはFAILを出力する。
【0132】
鍵登録が必要とされない場合、(Reg-Prove,Reg-Verify)は、以下のような空関数と置換されることが可能である。すなわち、いかなる入力に対しても、Reg-Proveは、空の文字列を出力し、Reg-Verifyは、OKを出力する。
【0133】
以下のBLS署名セクションに基づく証明においては、当事者が、当事者の公開鍵に対応する秘密の知識を証明する鍵登録プロトコルのクラスが考慮され、これは、秘密鍵の知識(KOSK:knowledge of secret key)モデルと呼ばれる。このモデルにおいては、全ての当事者が、関数RKOSK=(KOSK-Prove,KOSK-Verify)へのアクセスを有し、これは、それぞれ証明を生成し、検証する。
【0134】
このモデルをインスタンス化するために、当事者は、当事者の秘密の知識のゼロ知識証明(ZKPK:zero-knowledge proof of knowledge)を使用することを必要とされる。ZKPKに基づく鍵登録プロトコルは、基盤となるZKPKから継承する、2つの付加的なアルゴリズム、すなわち、KOSK-SimulateとKOSK-Extractとを提供する。
【0135】
・KOSK-Simulate(pk)→πは、証明検証のために使用されるランダム性へのアクセスを与えられると、実際の証明と計算上判別不能な証明を出力するシミュレータである。
【0136】
・KOSK-Extract(pk,π)→skは、説得力のある証明からskを出力するために、πを生成した当事者と相互作用する(特に、巻き戻す)抽出器である。
シミュレーションおよび抽出は、ZKPKについての標準的な概念であるため、それらは、より正式には定義されない。
【0137】
証明スキーム
例示的な分散型計算システムにおいて、誠実な実行ノードおよび検証ノードは、それらのステーキング秘密鍵と、本明細書において機密知識と称される秘密とを使用して、証明を生成する。コンセンサス・ノードは、実行ノードおよび検証ノードによって生成された証明を、対応する公開鍵を使用して検証する。検証プロセスは、全ての証明が同じ機密知識に基づいて生成されたことを確実にすべきである。このユース・ケースに基づいて、スキームの一般的な定義が与えられる。
【0138】
スキーム定義
定義1
機密知識の特殊な証明は、4つのアルゴリズムを含み得る。
【0139】
・SP-Setup(1λ)→pp。パブリック・パラメータppを生成し、これは、残りのアルゴリズムへの黙示的入力である。
【0140】
【数14】
秘密鍵と公開鍵とのペアを出力する。
【0141】
・SP-Prove(sk,m)→a。秘密鍵skの下でメッセージmについての証明を生成する。
・SP-Verify(pk,σ,pk,σ)→v∈{OK,FAIL}。pkに対応する秘密skについて、および同様に、pkに対応する秘密skについて、
∃m:SP-Prove(sk,m)=σ∧SP-Prove(sk,m)=σ
の場合にはOKを返し、せいぜい無視できる確率のときを除き、その他の場合にはFAILを返す。
【0142】
証明が、同じ機密知識から誠実に生成される場合、SP-Verifyは、高い確率でOKを出力することを必要とされ、これは、スキームの正確性を定義する。
定義2
正確性。スキームは、
【0143】
【数15】
の場合には正確であり、ただし、negl(λ)は、セキュリティ・パラメータλにおいて無視できる関数である。
【0144】
本スキームは、上記の登録鍵モデル・セクションにおいても定義されている。この場合において、正確性の条件は、登録鍵に対してのみ成立する。
SP-Verify定義は、σ およびσ と整合するメッセージmの存在のみを必要とする。この定義は、2つの当事者に対しては十分であるが、それを3つ以上の当事者に対して拡大することは、より繊細である。理由を理解するために、skおよびskの所有者が秘密mを共有し、一方で、skおよびskの所有者が秘密のmを共有する場合を考慮する。SP-Verifyの定義によって、SP-Verify(pk,σ,pk,σ)およびSP-Verify(pk,σ,pk,σ)は両方とも、m≠mの場合であっても、OKを出力し得る。結果として、これらの2つのチェックは、skおよびskの所有者が任意の秘密を共有することを保証するのには十分ではない。
【0145】
しかしながら、例示的な分散型計算システムにおいて、検証プロセスは、sk、sk、およびskの保持者全てが同じ秘密知識mを共有すること(および、3より大きいグループについても同様)を確実にするために採用されることが可能であることを思い出されたい。この特性を反映するために、スキームについての強い推移性が定義される。
【0146】
定義3
強い推移性。全ての整数n≧3について、全ての有効な鍵ペア(sk,pk),....,(sk,pk)について、および全ての証明σ,...,σについて、以下の特性が満たされる場合、スキームは強い推移性を満たす。
【0147】
【数16】
全てのiについて、SP-Prove(sk,m)=σとなるメッセージmが存在する場合、全ての証明σは互いに検証し合い、すなわち、全ての1≦iについて、j≦n,j,SP-Verify(pk,σ,pk,σ)=successである。
【0148】
強い推移性の定義は、複数の証明が同じ基準証明σを検証する場合、これらの証明が互いに検証するべきであるだけでなく(推移性)、これらの証明(基準証明を含む)全てが生成され得るメッセージmが存在すると述べている。
【0149】
例示的な分散型計算システムにおいて、実行ノードは、基準証明を生成し、一方で、複数の証明は、異なる検証ノードによって生成される。強い推移性を満たすスキームの場合、全てのノードが同じ秘密知識を共有することを確実にするためには、全ての証明を単一の実行ノードの証明に対して検証すれば十分である。
【0150】
スキーム・セキュリティ
コンセンサス・ノードは、SP-Verifyアルゴリズムを実行するために、2つの証明および対応する鍵以外に、機密知識についてのいかなる情報も必要としない。直観的に、機密知識は、ブロックを実行した当事者を除いて、ネットワーク内の全ての当事者に対して秘密のままであるべきである。これは、証明が機密知識を回復することを可能にするべきでないことを意味する。
【0151】
より具体的には、スキームは、秘密知識を回復するか、またはその知識へのアクセスなしに証明を偽造する、悪意のあるアクターに対して耐性があるべきである。例示的な分散型計算システムにおいて、そのような攻撃は、秘密を知っていると主張しながら、コストのかかるブロック実行をスキップしようとする「怠惰な」検証ノードによって仕かけられ得る。攻撃者は、例えば、障害のある結果に対して、より多くの「投票」を蓄積するために、別のノードに代わって証明を偽造しようと試みることもある。
【0152】
直観的に、証明を生成することは、2つの秘密、すなわち、鍵skとメッセージmとを知っていることを必要とする。この直観は、2つのセキュリティ・ゲームを介して以下に定式化され、各々が挑戦者Cと敵対者Aとの間のものである。第1のゲーム、すなわち、知識偽造は、怠惰なノードが、機密知識mを知らずに、それ自体の鍵の下で証明を偽造する能力をモデル化する。第2のゲーム、すなわち、鍵偽造は、悪意のあるノードが、対応する秘密鍵を知らずに、別のノードの公開鍵の下で何らかの選ばれたmについての証明を作成する能力をモデル化する。これらのゲームは、鍵登録スキーム(Reg-Prove,Reg-Verify)を仮定して定義されており、これは、登録が必要とされない場合、空のスキームになり得る。
【0153】
定義4
知識偽造ゲーム。
・セットアップ。Cはランダムなメッセージ
【0154】
【数17】
をサンプリングする。
【0155】
・クエリ。AはCに対して任意の数のクエリを行う。そのような各クエリについて、Cは新しい鍵
【0156】
【数18】
をサンプリングし、登録証明π←Reg-Prove(sk,pk)および証明σ←SP-Prove(sk,m)を計算し、(pk,π,σ)をAへ送る。
【0157】
・出力。敵対者は、(pk、π、σ)を出力し、
【0158】
【数19】
の場合、ゲームに勝利する。
【0159】
定義5
鍵偽造のゲーム。
・セットアップ。Cは、
【0160】
【数20】
をサンプリングし、π←Reg-Prove(sk,pk)を計算し、(pk,π)をAへ送る。Cは、2つのリスト、すなわち、最初は空であるL、およびタプル(sk,pk)を最初に含有するLも初期化する。
【0161】
・クエリ。Aは、任意の数の2つのタイプのクエリを任意の順序で行い得る。
-Q1:Aは、(m,pk)をCへ送る。Cは、pk=pkgであるLにおいて、最初のタプル(sk、pk)を取り出す。そのようなタプルがない場合、Cは⊥を返す。そうでない場合、Cは、σ←SP-Prove(sk,m)を計算し、σをAへ送る。最終的に、pk=pkである場合、CはmmiをリストLに対して追加する。
【0162】
-Q2:Aは、空のクエリをCへ送り、Cは、
【0163】
【数21】
をサンプリングし、リストLに対して(sk,pk)、π←Reg-Prove(sk,pk)を計算し、(pk,π)をAへ送る。
【0164】
・出力。Aは、(m,σ,pk)を出力し、
【0165】
【数22】
の場合、勝利する。
【0166】
敵対者が機密知識または秘密鍵のいずれも有していない場合を取り込むために、第3のゲームを定義してもよい。この場合は、攻撃者が秘密またはターゲットの鍵のいずれも知らない場合に、ターゲット・ノードが何らかの秘密に対するアクセスを有すると主張するために、例示的な分散型計算システム内で証明を偽造することに対応する。この偽造は、2つの他のゲームよりも明らかに困難である。そのような偽物に成功するアルゴリズムを有する敵対者は、他の2つのゲームのいずれかに簡単に勝利し得る。したがって、このゲームは考慮されない。
【0167】
定義6
偽造不可能性。せいぜい無視できる確率のときを除き、確率的多項式時間敵対者Aが知識偽造に勝利しない場合、スキームは、知識偽造に対してセキュアである。せいぜい無視できる確率のときを除き、確率的多項式時間敵対者Aが鍵偽造に勝利しない場合、スキームは、鍵偽造に対してセキュアである。スキームが知識偽造と鍵偽造との両方に対してセキュアである場合、スキームは偽造不可能である。
【0168】
スキームのもう一つの特性、すなわち頑強性が定義される。直観的に、証明σおよび2つの公開鍵pkおよびpkについて、(σ、pk、pk)を検証する証明aを与えられると、(σ、pk、pk)も検証する別個の証明σ’を生産することは実行不可能である。上記の例示的な分散型計算システムなどの、様々なシステムを介したスキームの実装は、この特性を有することを必要としないが、実際には、頑強性は、繊細な攻撃を除去することができる。
【0169】
定義7
頑強性。全ての確率的多項式時間敵対者Aについて、
【0170】
【数23】
の場合、スキームは頑強性である。
【0171】
頑強性に関連する、わずかにより強い概念は、独自性である。
定義8-独自性
全ての証明σについて、ならびに全ての公開鍵pkおよびpkについて、SP-Verify(pk,σ,pk,σ)=OKとなる一意の証明abが存在する場合、スキームは独自性を満たす。
【0172】
必然的帰結1
独自性を満たすスキームは、頑強性でもある。
BLS署名に基づくスキーム
このセクションにおいて、スキームがBLS署名を用いて実装され、定義される。これは、BLS-SPoCKスキーム、すなわち、本明細書において論じられている機密知識の特殊な証明スキームを用いてBLS署名を組み込むことと称され得る。
【0173】
定義9
BLS-SPoCKは、4つのアルゴリズム、すなわち、BS P-Setup、BSP-KeyGen、BSP-ProveおよびBSP-Verifyを備える。
【0174】
・BSP-Setup(1λ)→ppBLS:以下を含むパブリック・パラメータを出力する。
- 生成器gおよびgをそれぞれ用いるp次の双線形群ペア(G,G)。
【0175】
- p次のターゲット・グループG
- 非縮退ペアリングe:G×G→G
- ハッシュ関数H:{0,1}→ランダム・オラクルとしてモデル化されたG
・BSP-KeyGen()→(sk、pk):(sk,pk)←BSP-KeyGen()∈(Z×G)を出力する。
【0176】
・BSP-Prove(sk,m)→σ:σ←BSP-Sign(sk,m)∈Gを出力する。
言いかえれば、σは、秘密鍵skの下でのメッセージmのBLS署名である。
【0177】
・BSP-Verify(pk,σ,pk,σ)→v∈{OK,FAIL}:e(σ,pk)=e(σ,pk)の場合、OKを出力する。
それ以外の場合、FAILを出力する。
【0178】
そのため、検証は、本明細書において論じられているペアリング特徴を使用することを含む、ペアリング同等性チェックを使用して行われ得る。
補題2
BLS-SPoCKスキームは、正確なスキームである。
【0179】
証明。任意のメッセージm、および鍵ペア(sk,pk)、(sk,pk)について、eの定義によって、以下が提供される。
【0180】
【数24】
これは、e(BSP-Prove(sk,m),pk)=e(BSP-Prove(sk,m),pk)であり、定義2を満たすことを意味する。
【0181】
補題3
BLS-SPoCKスキームは、強い推移性を満たす。
証明。整数nを3より大きいものとし、n個の有効な鍵ペアのセットを(sk,pk),...,(sk,pk)、およびn個の証明のセットをσ、...σとし、それにより、
∀i∈{2,...,n}:BSP-Verify(pk,σ,pk,σ)=OK
ペアリングeの双線形性によって、およびGは素数位の巡回群であるので、全ての1≦i≦nについて、
【0182】
【数25】
が導出され、したがって、
【0183】
【数26】
である。その場合、
【0184】
【数27】
は、H(m)=hを満たす何らかのメッセージmが存在するGにおける要素である。メッセージmは、全ての1≦i≦nについて、
【0185】
【数28】
を明らかに満たし、これは強い推移性を確立する。
【0186】
必然的帰結2
BLS-SPoCKスキームは、独自性(定義8)を満たす。
証明。pk,pk∈Gおよびσ∈Gとする。σ、pk、およびpkを検証するGの要素は、
【0187】
【数29】
と書かれ得ることに留意されたい。したがって、σは、pkおよびpkを検証するGの一意の要素である。
【0188】
必然的帰結3
BLS-SPoCKスキームは、頑強性ではない。
セキュリティ証明
このセクションにおいて、BLS-SPoCKスキームは、定義6におけるような偽造に対してセキュアであることを示される。BLS-SPoCKは、個々の対数についてシュノア(Schnorr)の知識のゼロ知識証明を使用して、KOSKモデルにおいてインスタンス化されることが、仮定される。
【0189】
定理1
BLS-SPoCKスキームは、KOSKモデルにおける(G,G)におけるco-CDH仮定の下での知識偽造に対してセキュアである。
【0190】
証明。知識偽造を見破る敵対者Aknowは、co-DCDH(および、したがって、co-CDH;補題1)を見破るためのブラック・ボックスとして使用されることが可能であることが示される。そうするために、知識偽造ゲームの場合には挑戦者として、およびco-DCDHゲームの場合は敵対者として作用するアルゴリズムCknowが構築される。
【0191】
初めに、Cknowは、co-DCDH課題
【0192】
【数30】
を要求する。Aのクエリの各々について、Cknowは、
【0193】
【数31】
をサンプリングし、
【0194】
【数32】
【0195】
【数33】
、およびπ←KOSK-Simulate(pk)を設定し、(pk,π,σ)をAへ送る。最後に、Aknowは、(pk,π,σ)により応答し、Cknowは、KOSK-Verify(pk,π)=FAILの場合、または
【0196】
【数34】
の場合、アボートする。
【0197】
knowが知識偽造を見破るという仮定Cknowによって、無視できない確率で起こる、Cがアボートしないということを仮定する。その場合、Cknowは、まず、sk←KOSK-Extract(π)を計算し、次いで、co-DCDHゲームについて
【0198】
【数35】
を回答することによって、co-DCDHゲームに勝利する。
【0199】
これが作用する理由を理解するために、何らかのiについてBSP-VerifyがOKを返したので、e(σ,pk)=e(σ,pk)が提供され、これは、
【0200】
【数36】
を意味し、したがって、
【0201】
【数37】
、すなわち、正確なco-DCDHの回答である。さらに、全てのpk、π、およびσは、実際の知識偽造ゲームにおけるように分散され、sk=y・rは、pkに対応する一様にランダムな秘密鍵であり、
【0202】
【数38】
およびπは、KOSK-Simulateの定義によって、KOSK照明から判別不能である。
【0203】
したがって、Cknowは、ちょうどAknowが勝利したときに、co-DCDHゲームに勝利し、KOSK-Simulateは、説得力のあるπを出力し、KOSK-Extractは、skを出力する。KOSK-SimulateおよびKOSK-Extractは、定義によって圧倒的な確率で成功するので、Cknowは、無視できない確率でco-DCDHゲームに勝利する。補題1によって、これは、co-CDHが困難であるという仮定と矛盾するので、Aknowは、無視できない確率で知識偽造に勝利することができない。
【0204】
定理2
いくつかの例において、BLS-SPoCKスキームは、(G,G)におけるco-CDH仮定の下で、ランダム・オラクル・モデルにおける鍵偽造に対してセキュアである。
【0205】
証明。鍵偽造ゲームに勝利するためには、Aは、メッセージmについてBLS-SPoCK証明σを偽造しなければならず、それにより、何らかの誠実に生成された鍵ペア(pk,sk)について、σは、pk、pk、およびBSP-Prove(sk,m)を検証する。BLS-SPoCK証明の独自性によって、
【0206】
【数39】
でなければならず、これは鍵ペア(sk,pk)に対するBLS署名メッセージmである。言いかえれば、鍵偽造に勝利することは、mについてBLS署名を偽造することを必要とする。ボネーらは、ランダム・オラクル・モデルにおいて、および(G,G)についてのco-CDH仮定の下で、選ばれたメッセージについての存在的偽造に対するBLS署名のセキュリティ(すなわち、EUF-CMAセキュリティ)を証明しており、これは定理を証明する。
【0207】
必然的帰結4
いくつかの例において、BLS-SPoCKスキームは、KOSKにおいて偽造不可能であり、(G,G)におけるco-CDH仮定の下でランダム・オラクル・モデルであり得る。
【0208】
図4図7は、システムおよび/または証明スキームの様々な上述した特性を説明する例示的なフロー図を描く。フローチャートは、ユーザ、すなわち、アリス、ボブおよびイブと、検証者、すなわち、オスカーとを描く。ユーザは、ユーザのそれぞれの秘密鍵(sk_a、sk_b、sk_e)を用いて(ユーザが共有されているメッセージ(m)に対するアクセスを有する場合には、共有されているメッセージ(m)も用いて)証明(p_a、p_b、p_e)を生成する。検証者は、提供される証明を検証するためにVerify関数を採用する。いくつかの実施形態において、ユーザおよび検証者は各々、図1図2に描かれたコンピューティング・デバイス102、104、106、108、および図10に描かれたコンピューティング・デバイス1010などのコンピューティング・デバイスを採用して、上記に詳細に説明されたような、それぞれのProof関数またはVerify関数を実行する。例えば、ユーザおよび検証者は、上述した例示的な分散型計算システムなどのシステムにおいて、ノードとして動作していてもよい。
【0209】
いくつかの例において、Verify関数は、(例えば、図5に例示される)推移性に対応し得る。推移性定義は、同じ基準証明σに対する複数の証明の検証が行われた場合、これら複数の証明の互いに対する検証が行われたとするべきであるだけでなく(推移性)、これらの証明(基準証明を含む)全ての生成元となったメッセージmが存在することを述べている。Verify関数ならびに認証および検証におけるその使用に関する付加的な情報は、図4図7に(例えば、「Verify()」等として)例示される。
【0210】
図4は、スキームの正確性特性を示すフローチャートを描く。描かれるように、証明者ユーザ、すなわち、アリスおよびボブは、システムにおける、彼らのそれぞれの秘密鍵(sk_a、sk_b)、秘密データ(m)、および他の公開鍵に対するアクセスを有する(知っている)。Proof関数を使用して、証明者ユーザは各々、彼らのそれぞれの秘密鍵(sk_a、sk_b)および秘密データ(m)を用いて、秘密データ(m)の知識の特殊な証明(p_a、p_b)を生成する。検証者、すなわちオスカーは、システムにおける、これらの生成された特殊な証明(p_a、p_b)および他の公開鍵に対するアクセスを有する。オスカーは、秘密データ(m)に対するアクセスを特に有しない。証明者ユーザの各々について、提供される特殊な証明(p_a、p_b)およびそれぞれの公開鍵(pk_a、pk_b)を用いてVerify関数を採用して、オスカーは、秘密データ(m)のコンテンツについての知識を獲得せずに、証明者ユーザが同じ秘密データ(m)を共有しているかどうかを決定することができる。提供される特殊な証明(p_a、p_b)が、Verify関数を介して検証されない場合(例えば、証明が、同じ秘密データを使用して生成されなかったため、または公開鍵(pk_a、pk_b)が、特殊な証明を生成するために採用されたユーザのそれぞれの秘密鍵(p_a、p_b)と一致しないため)、提供される特殊な証明(p_a、p_b)は、オスカーに何も確信させない。
【0211】
図5は、スキームの強い推移性特性を示すフローチャートを描く。描かれるように、証明者ユーザ、すなわちアリスおよびBob_i(Bob_1~Bob_n)は、システムにおける、彼らのそれぞれの秘密鍵(sk_a、sk_b1~sk_bn)、秘密データ(m)、および他の公開鍵に対するアクセスを有する(知っている)。Proof関数を使用して、証明者ユーザは各々、彼らのそれぞれの秘密鍵(sk_a、sk_b1~sk_bn)および秘密データ(m)を用いて、秘密データ(m)の特殊な証明(p_a、p_b1~p_bn)を生成する。検証者、すなわちオスカーは、システムにおける、これらの生成された特殊な証明(p_a、p_b1~p_bn)および他の公開鍵に対するアクセスを有する。オスカーは、秘密データ(m)に対するアクセスを特に有しない。証明者ユーザの各々について、提供される特殊な証明(p_a、p_b1~p_bn)およびそれぞれの公開鍵(pk_a、pk_b1~pk_bn)を用いてVerify関数を採用して、オスカーは、秘密データ(m)のコンテンツについての知識を獲得せずに、証明者ユーザBob_1~Bob_nの各々が、証明者ユーザであるアリスと同じ秘密データ(m)を共有しているかどうかを決定することができる。提供される特殊な証明(p_a、p_bi)が、Verify関数を介して検証されない場合、提供される特殊な証明(p_a、p_bi)は、アリスおよび特定のBob_iに関して、オスカーに何も確信させなかったことになる。
【0212】
図6は、スキームの知識偽造不可能性特性を示すフローチャートを描く。描かれるように、証明者ユーザ、すなわちアリスおよびイブは、システムにおける、彼らのそれぞれの秘密鍵(sk_a、sk_e)および他の公開鍵に対するアクセスを有する(知っている)。しかしながら、アリスのみが、秘密データ(m)に対するアクセスを有しており、イブは、秘密データ(m)に対するアクセスを有しない。Proof関数を使用して、アリスは、自身の秘密鍵(sk_a)および秘密データ(m)を用いて、特殊な証明、すなわち(p_a)を生成する。イブは、秘密データ(m)に対するアクセスを有しないので、イブは、自身の秘密鍵(p_e)を用いて、悪意のあるProof関数を介して、証明、すなわち(p_e)を生成する(例えば、イブは、イブが秘密データ(m)に対してアクセスを有するとオスカーを騙して信じさせようと試みている)。検証者、すなわちオスカーは、システムにおける、これらの生成された特殊な証明(p_a、p_e)および他の公開鍵に対するアクセスを有する。オスカーは、秘密データ(m)に対するアクセスを特に有しない。証明者ユーザの各々について、提供される特殊な証明(p_a、p_e)およびそれぞれの公開鍵(pk_a、pk_e)を用いて、Verify関数を採用して、オスカーは、秘密データ(m)のコンテンツについての知識を獲得せずに、証明者ユーザが、同じ秘密データ(m)を共有しているかどうかを決定することができる。描かれたユース・ケースにおいて、提供される特殊な証明(p_a、p_e)は、アリスおよびイブが同じ秘密データ(m)に対するアクセスを有するとオスカーに確信させない。
【0213】
図7は、スキームの鍵偽造不可能性特性を示すフローチャートを描く。描かれるように、証明者ユーザ、すなわちアリスおよびイブは、システムにおける秘密データ(m)および他の公開鍵に対するアクセスを有する(知っている)。しかしながら、アリスは、秘密鍵(sk_a)に対するアクセスを有し、一方で、イブは、ボブの秘密鍵(pk_b)に対するアクセスを有しない。Proof関数を使用して、アリスは、自身の秘密鍵(sk_a)および秘密データ(m)を用いて、特殊な証明、すなわち(p_a)を生成する。イブは、ボブの秘密鍵に対するアクセスを有しないので、イブは、秘密データ(m)を用いて悪意のあるProof関数を介して、証明、すなわちp_b’を生成する(例えば、イブは、ボブが秘密データ(m)に対するアクセスを有するとオスカーを騙して信じさせようと試みている)。検証者、すなわちオスカーは、システムにおける、これらの生成された特殊な証明(p_a、p_b’)および他の公開鍵に対するアクセスを有する。オスカーは、秘密データ(m)に対するアクセスを特に有しない。提供される特殊な証明(p_a、p_b’)、ならびにアリスに関連付けられた公開鍵(pk_a)およびボブに関連付けられた公開鍵(pk_b)を用いて、Verify関数を採用して、オスカーは、秘密データ(m)のコンテンツについての知識を獲得せずに、アリスとボブとの両方が秘密データ(m)に対するアクセスを有するかどうかを決定することができる。描かれたユース・ケースにおいて、提供される特殊な証明(p_a、p_b’)は、アリスおよびボブが同じ秘密データ(m)に対するアクセスを有するとオスカーに確信させない。
【0214】
図8は、例示的な分散型計算システムにおいて(例えば、図3において説明されたような)様々なノードによって実装されることが可能である例示的なプロセス800のフローチャートを描く。本プロセスは、システムが、共有されているデータを明らかにせずに、共有されているデータをどのように使用して証明を検証するかを示し得る。本プロセスは、必要に応じて、任意の他の適切なシステム、環境、ソフトウェア、およびハードウェア、または、システム、環境、ソフトウェア、およびハードウェアの組み合わせによって行われ得る。いくつかの実施形態において、本プロセスの様々な動作は、並行して、組み合わせて、ループで、または任意の順序で、実行されることが可能である。
【0215】
802において、第1の証明が、第1のノードから受信され、第1の証明は、第1のノードに関連付けられた第1の秘密鍵と、第1のノードと第2のノードとの間で共有されているデータとから生成される。802から、プロセス800は804へ進む。
【0216】
804において、第2の証明が、第2のノードから受信され、第2の証明は、共有されているデータと、第2のノードに関連付けられた第2の秘密鍵とから生成される。804から、プロセス800は806へ進む。
【0217】
806において、第1の証明および第2の証明が両方とも、共有されているデータから生成されたことが、共有されているデータを明らかにせずに検証される。証明は、第1の秘密鍵に数学的に関連する第1の公開鍵と、第2の秘密鍵に数学的に関連する第2の公開鍵とを使用して検証される。いくつかの実施形態において、第1の証明は、第1のノードに対してのみ帰属可能である。いくつかの実施形態において、第2の証明は、第2のノードに対してのみ帰属可能である。いくつかの実施形態において、第1の証明または第2の証明は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、第1の証明および第2の証明は各々、それぞれの秘密鍵を用いて生成された、共有されるデータの署名を含む。いくつかの実施形態において、署名は、BLS署名スキームに基づく。いくつかの実施形態において、第1の証明および第2の証明の検証は、2つの署名、第1の公開鍵、および第2の公開鍵に基づいたペアリング同等性チェックを含む。いくつかの実施形態において、第1の証明および第2の証明を検証することは、ペアリング同等性チェックを含む。いくつかの実施形態において、第1の証明および第2の証明は、非インタラクティブなプロトコルにおいて生成され、検証される。806から、プロセス800は808へ進む。
【0218】
808において、第1の証明および第2の証明が両方とも、共有されるデータから生成されているという検証に基づいて、アクションが行われる。いくつかの実施形態において、第1の証明および第2の証明は、それぞれ第1のノードおよび第2のノードによって公に明らかにされる。いくつかの実施形態において、アクションは、第1の証明の検証および第2の証明が両方とも、共有されているデータから生成されたことを公に明らかにすることを含む。いくつかの実施形態において、共有されるデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを含む。いくつかの実施形態において、第1のノードは、実行ノードの計算の正確性を保証するために採用される検証ノードを備える。いくつかの実施形態において、計算は、実行トレースを含む。いくつかの実施形態において、第2のノードは、ブロックの少なくとも1つのトランザクションを実行するために採用される実行ノードを備える。いくつかの実施形態において、検証ノードは、計算が検証されたという証明として、第1の証明をパブリッシュする。いくつかの実施形態において、アクションは、クライアントに対して状態応答を提供することを含み、状態応答は、ブロックについての出力に基づいて決定される。いくつかの実施形態において、計算は、チャンクへと分けられて、並行で独立した手法で、より軽い計算検証が可能になる。いくつかの実施形態において、アクションは、チャンクの各々が、実行ノードおよび検証ノードによって、同じ中間結果から整合して生成されることを調停することを含む。808から、プロセス800は終了する。
【0219】
図9は、例示的な分散型計算システムにおいて(例えば、図3において説明されたような)様々なノードによって実装されることが可能である例示的なプロセス900のフローチャートを描く。本プロセスは、システムが、共有されているデータを明らかにせずに、共有されているデータをどのように使用して証明を検証するかを示し得る。本プロセスは、必要に応じて、任意の他の適切なシステム、環境、ソフトウェア、およびハードウェア、または、システム、環境、ソフトウェア、およびハードウェアの組み合わせによって行われ得る。いくつかの実施形態において、本プロセスの様々な動作は、並行して、組み合わせて、ループで、または任意の順序で、実行されることが可能である。
【0220】
902において、証明が、複数のノードの各々から受信され、各証明は、ノード間で共有されているデータと、各ノードに関連付けられたそれぞれの秘密鍵とから生成される。いくつかの実施形態において、証明の各々は、それらのそれぞれのノードによって公に明らかにされる。いくつかの実施形態において、証明の各々はそれぞれの生成するノードにのみ帰着可能である。いくつかの実施形態において、証明の各々は、それぞれの公開鍵のみを用いて検証されることが可能ではない。いくつかの実施形態において、共有されるデータは、ブロックチェーン内のブロックの少なくとも1つのトランザクションの実行を証明する実行トレースを含む。902から、プロセス900は904へ進む。
【0221】
904において、証明の各々は、共有されているデータを明らかにせずに、共有されているデータから生成されたものとして検証される。証明は、各々が秘密鍵のそれぞれの1つに数学的に関連する、複数の公開鍵を使用して検証される。いくつかの実施形態において、証明は各々、それぞれの秘密鍵を用いて生成された、共有されているデータの署名を含む。いくつかの実施形態において、証明の検証は、署名および公開鍵に基づいたペアリング同等性チェックを含む。いくつかの実施形態において、署名は、BLS署名スキームに基づく。いくつかの実施形態において、証明を検証することは、ペアリング同等性チェックを含む。いくつかの実施形態において、証明は、非インタラクティブなプロトコルにおいて生成され、検証される。いくつかの実施形態において、証明の検証の数は、ノードの数において線形であり、二次関数的ではない。いくつかの実施形態において、証明を検証することは、ノードの数より1つ少ない検証を必要とする。904から、プロセス900は906へ進む。
【0222】
906において、証明の検証が、共有されるデータから生成されていることに基づいて、アクションが行われる。いくつかの実施形態において、アクションは、第1の証明の検証および第2の証明が両方とも、共有されるデータから生成されたことを公に明らかにすることを含む。906から、プロセス900は終了する。
【0223】
いくつかの実施形態において、本明細書において説明されるプラットフォーム、システム、媒体、および方法は、コンピューティング・デバイス、プロセッサ、またはこれらの使用を含む。さらなる実施形態において、コンピューティング・デバイスは、デバイスの機能を実行する、1つまたは複数のハードウェア中央処理ユニット(CPU)または汎用グラフィック処理ユニット(GPU)を含む。またさらなる実施形態において、コンピューティング・デバイスは、実行可能な命令を行うように構成されたオペレーティング・システムをさらに備える。いくつかの実施形態において、コンピューティング・デバイスは、コンピュータ・ネットワークに対して任意選択で接続される。さらなる実施形態において、コンピューティング・デバイスは、ワールド・ワイド・ウェブに対してアクセスするように、インターネットに対して任意選択で接続される。またさらなる実施形態において、コンピューティング・デバイスは、クラウド・コンピューティング・インフラストラクチャに対して任意選択で接続される。他の実施形態において、コンピューティング・デバイスは、イントラネットに対して任意選択で接続される。他の実施形態において、コンピューティング・デバイスは、データ記憶デバイスに対して任意選択で接続される。
【0224】
本明細書における説明に従って、適当なコンピューティング・デバイスは、非限定的な例として、クラウド・コンピューティング・リソース、サーバ・コンピュータ、サーバ・クラスタ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノート型コンピュータ、サブノート型コンピュータ、ネットブック・コンピュータ、ネットパッド・コンピュータ、ハンドヘルド・コンピュータ、モバイル・スマートフォン、およびタブレット・コンピュータを含む。当業者は、本明細書において説明されるシステムにおける使用のために多くのスマートフォンが適していることを認識するであろう。当業者は、本明細書において説明されるシステムにおける使用のために、任意選択のコンピュータ・ネットワーク接続性を有する、選択したテレビ受像機、ビデオ・プレーヤ、およびデジタル音楽プレーヤが適していることも認識するであろう。適当なタブレット・コンピュータは、当業者に知られている、ブックレット、スレート、および可変の構成を有するタブレット・コンピュータを含む。
【0225】
いくつかの実施形態において、コンピューティング・デバイスは、実行可能な命令を行うように構成されたオペレーティング・システムを含む。オペレーティング・システムは、例えば、プログラムおよびデータを含むソフトウェアであり、これは、デバイスのハードウェアを管理し、アプリケーションの実行のためのサービスを提供する。当業者は、適当なサーバ・オペレーティング・システムが、非限定的な例として、FreeBSD、OpenBSD、NetBSD(登録商標)、Linux(登録商標)、Apple(登録商標)Mac OS X Server(登録商標)、Oracle(登録商標)、Solaris(登録商標)、Windows Server(登録商標)、およびNovell(登録商標)NetWare(登録商標)を含むことを認識するであろう。当業者は、適当なパーソナル・コンピュータ・オペレーティング・システムが、非限定的な例として、Microsoft(登録商標)Windows(登録商標)、Apple(登録商標)Mac OS X(登録商標)、UNIX(登録商標)、およびGNU/Linux(登録商標)などのUNIXのようなオペレーティング・システムを含むことを認識するであろう。いくつかの実施形態において、オペレーティング・システムは、クラウド・コンピューティングによって提供される。当業者は、適当なモバイル・スマートフォン・オペレーティング・システムが、非限定的な例として、Nokia(登録商標)Symbian(登録商標)OS、Apple(登録商標)iOS(登録商標)、Research In Motion(登録商標)BlackBerry OS(登録商標)、Google(登録商標)Android(登録商標)、Microsoft(登録商標)Windows Phone(登録商標)OS、Microsoft(登録商標)Windows Mobile(登録商標)OS、Linux(登録商標)、およびPalm(登録商標)WebOS(登録商標)を含むことも認識するであろう。
【0226】
いくつかの実施形態において、コンピューティング・デバイスは、ストレージおよび/またはメモリ・デバイスを含む。ストレージおよび/またはメモリ・デバイスは、一時的にまたは恒久的に、データまたはプログラムを記憶するために使用される、1つまたは複数の物理的装置である。いくつかの実施形態において、デバイスは、揮発性メモリであり、記憶された情報を維持するために電力を必要とする。いくつかの実施形態において、デバイスは、不揮発性メモリであり、コンピューティング・デバイスが電力供給されない場合、記憶された情報を保持する。さらなる実施形態において、不揮発性メモリは、フラッシュ・メモリを含む。いくつかの実施形態において、不揮発性メモリは、ダイナミック・ランダム・アクセス・メモリ(DRAM)を含む。いくつかの実施形態において、不揮発性メモリは、強誘電体ランダム・アクセス・メモリ(FRAM(登録商標))を含む。いくつかの実施形態において、不揮発性メモリは、相変化型ランダム・アクセス・メモリ(PRAM)を含む。他の実施形態において、デバイスは、非限定的な例として、CD-ROM、DVD、フラッシュ・メモリ・デバイス、磁気ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ、およびクラウド・コンピューティング・ベースのストレージを含むストレージ・デバイスである。さらなる実施形態において、ストレージおよび/またはメモリ・デバイスは、本明細書において開示されているデバイスなどのデバイスの組み合わせである。
【0227】
いくつかの実施形態において、コンピューティング・デバイスは、ユーザへ視覚情報を送るためのディスプレイを含む。いくつかの実施形態において、ディスプレイは、ブラウン管(CRT)である。いくつかの実施形態において、ディスプレイは、液晶ディスプレイ(LCD)である。さらなる実施形態において、ディスプレイは、薄膜トランジスタ液晶ディスプレイ(TFT-LCD)である。いくつかの実施形態において、ディスプレイは、有機発光ダイオード(OLED)ディスプレイである。様々なさらなる実施形態において、OLEDディスプレイは、パッシブ・マトリクスOLED(PMOLED)ディスプレイ、またはアクティブ・マトリクスOLED(AMOLED)ディスプレイである。いくつかの実施形態において、ディスプレイは、プラズマ・ディスプレイである。他の実施形態において、ディスプレイは、ビデオ・プロジェクターである。また他の実施形態において、ディスプレイは、コンピュータと通信する頭部装着型ディスプレイ、例えば、仮想現実(VR)ヘッドセットなどである。さらなる実施形態において、適当なVRヘッドセットは、非限定的な例として、HTC Vive、Oculus Rift、Samsung Gear VR、Microsoft HoloLens、Razer Open-Source Virtual Reality (OSVR)、FOVE VR、Zeiss VR One、Avegant Glyph、Freefly VR headset等を含む。またさらなる実施形態において、ディスプレイは、本明細書において開示されているデバイスなどのデバイスの組み合わせである。
【0228】
いくつかの実施形態において、コンピューティング・デバイスは、ユーザからの情報を受信するための入力デバイスを含む。いくつかの実施形態において、入力デバイスは、キーボードである。いくつかの実施形態において、入力デバイスは、非限定的な例として、マウス、トラックボール、トラック・パッド、ジョイスティック、ゲーム・コントローラ、またはスタイラスを含むポインティング・デバイスである。いくつかの実施形態において、入力デバイスは、タッチ画面またはマルチタッチ・スクリーンである。他の実施形態において、入力デバイスは、音声または他のサウンド入力を取り込むためのマイクロフォンである。他の実施形態において、入力デバイスは、動きまたは視覚入力を取り込むためのビデオ・カメラまたは他のセンサである。さらなる実施形態において、入力デバイスは、Kinect、Leap Motion等である。またさらなる実施形態において、入力デバイスは、本明細書において開示されているデバイスなどのデバイスの組み合わせである。
【0229】
本開示のプラットフォーム、システム、媒体、および方法を実装するために使用されることが可能であるコンピュータ制御システムが、本明細書において提供される。図10は、本開示のプラットフォーム、システム、媒体、および方法を実装するようにプログラムされることまたは別の方法で構成されることが可能である例示的なコンピューティング・デバイス1010を描く。例えば、コンピューティング・デバイス1010は、図1図2に描かれたコンピューティング・デバイス102、104、106、108に関する説明などのようにプログラムされ、または別の方法で構成されることが可能である。
【0230】
描かれた実施形態において、コンピューティング・デバイス1010は、CPU(本明細書においては「プロセッサ」および「コンピュータ・プロセッサ」ともいう)1012を含み、これは、任意選択で、シングル・コア、マルチ・コア・プロセッサ、または並列処理のための複数のプロセッサである。コンピューティング・デバイス1010は、メモリまたはメモリ・ロケーション1017(例えば、ランダム・アクセス・メモリ、読み出し専用メモリ、フラッシュ・メモリ)、電子ストレージ・ユニット1014(例えば、ハードディスク)、1つまたは複数の他のシステムと通信するための通信インターフェース1015(例えば、ネットワーク・アダプタ)、および周辺デバイス1016、例えば、キャッシュ、他のメモリ、データ・ストレージまたは電子ディスプレイ・アダプターなども含む。
【0231】
いくつかの実施形態において、メモリ1017、ストレージ・ユニット1014、通信インターフェース1015、および周辺デバイス1016は、マザーボードなどの通信バス(実線)を通じてCPU1012と通信する。ストレージ・ユニット1014は、データを記憶するためのデータ・ストレージ・ユニット(またはデータ・リポジトリ)を含む。コンピューティング・デバイス1010は、通信インターフェース1015の支援により、図1図2に描かれたネットワーク110などのコンピュータ・ネットワークに対して任意選択で動作可能に結合される。いくつかの実施形態において、コンピューティング・デバイス1010は、説明されるプラットフォーム内で展開されるバックエンド・サーバとして構成される。
【0232】
いくつかの実施形態において、CPU1012は、機械可読命令のシーケンスを実行することができ、これは、プログラムまたはソフトウェアにおいて具現化されることが可能である。命令は、メモリ1017などのメモリ・ロケーションにおいて記憶され得る。命令は、CPU1012に対して向けられることが可能であり、これは、続いて、本開示の方法を実装するようにCPU1012をプログラムすること、または別の方法で構成することができる。CPU1012によって行われる動作の例は、フェッチ、デコード、実行、およびライト・バックを含むことができる。いくつかの実施形態において、CPU1012は、集積回路などの回路の一部である。コンピューティング・デバイス1010の1つまたは複数の他の構成要素は、任意選択で、回路内に含まれることが可能である。いくつかの実施形態において、回路は、特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)である。
【0233】
いくつかの実施形態において、ストレージ・ユニット1014は、ファイル、例えば、ドライバ、ライブラリおよび保存されたプログラムなどを記憶することができる。いくつかの実施形態において、ストレージ・ユニット1014は、データ、例えば、検出ロジック、企業が遭遇した様々な脅威の分析、脅威を軽減するために行われたトリアージに関するメタデータ、偽陽性、および性能メトリック等などを記憶する。いくつかの実施形態において、コンピューティング・デバイス1010は、イントラネットまたはインターネットを通じて通信するリモート・サーバに位置するなど、外部にある、1つまたは複数の付加的なデータ・ストレージ・ユニットを含む。
【0234】
いくつかの実施形態において、コンピューティング・デバイス1010は、ネットワークを通じて、1つまたは複数のリモート・コンピュータ・システムと通信する。例えば、コンピューティング・デバイス1010は、リモート・コンピュータ・システムと通信することができる。リモート・コンピュータ・システムの例は、図1図2に描かれるような、パーソナル・コンピュータ(例えば、ポータブルPC)、スレートもしくはタブレットPC(例えば、Apple(登録商標)iPad(登録商標)、Samsung(登録商標)Galaxy Tab等)、スマートフォン(例えば、Apple(登録商標)iPhone(登録商標)、Android対応デバイス、Blackberry(登録商標)等)、または携帯情報端末を含む。いくつかの実施形態において、ユーザは、図1図2に描かれたようなネットワークを介して、コンピューティング・デバイス1010に対してアクセスすることができる。
【0235】
いくつかの実施形態において、本明細書において説明されるようなプラットフォーム、システム、媒体、および方法は、コンピューティング・デバイス1010の電子ストレージ・ロケーション上、例えば、メモリ1017または電子ストレージ・ユニット1014上などに記憶された機械(例えば、コンピュータ・プロセッサ)実行可能なコードとして実装される。いくつかの実施形態において、CPU1012は、コードを実行するように適合されている。いくつかの実施形態において、機械実行可能なコードまたは機械可読コードは、ソフトウェアの形態で提供される。いくつかの実施形態において、使用期間中に、コードは、CPU1012によって実行される。いくつかの実施形態において、コードは、ストレージ・ユニット1014から取り出され、CPU1012による即時アクセスのためにメモリ1017上に記憶される。いくつかの状況において、電子ストレージ・ユニット1014は除外され、機械実行可能な命令は、メモリ1017上に記憶される。いくつかの実施形態において、コードは、プリコンパイルされる。いくつかの実施形態において、コードは、ランタイム期間中にコンパイルされる。コードは、コードがプリコンパイルされた状態またはコンパイルされたままの状態で実行することを可能にするために選択され得るプログラミング言語において供給されることが可能である。
【0236】
いくつかの実施形態において、コンピューティング・デバイス1010は、電子ディスプレイ1035を含むこと、または電子ディスプレイ1035と通信することができる。いくつかの実施形態において、電子ディスプレイ1035は、ユーザ・インターフェース(UI)1040を提供する。
【0237】
いくつかの実施形態において、本明細書において開示されているプラットフォーム、システム、媒体、および方法は、任意選択でネットワーク接続されたコンピューティング・デバイスのオペレーティング・システムによって実行可能な命令を含むプログラムが符号化された、1つまたは複数の非一時的なコンピュータ可読記憶媒体を含む。さらなる実施形態において、コンピュータ可読記憶媒体は、コンピューティング・デバイスの有形の構成要素である。またさらなる実施形態において、コンピュータ可読記憶媒体は、コンピューティング・デバイスから任意選択で除去可能である。いくつかの実施形態において、コンピュータ可読記憶媒体は、非限定的な例として、CD-ROM、DVD、フラッシュ・メモリ・デバイス、ソリッド・ステート・メモリ、磁気ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ、クラウド・コンピューティング・システムおよびサービスを含む分散コンピューティング・システム等を含む。いくつかの場合において、プログラムおよび命令は、恒久的に、実質的に恒久的に、半恒久的に、または非一時的に、媒体に符号化される。
【0238】
いくつかの実施形態において、本明細書において開示されているプラットフォーム、システム、媒体、および方法は、少なくとも1つのコンピュータ・プログラム、またはその使用を含む。コンピュータ・プログラムは、1つまたは複数の特定されたタスクを行うために書き込まれる、コンピューティング・デバイスのCPUにおいて実行可能な命令のシーケンスを含む。コンピュータ可読命令は、特定のタスクを行う、または特定の抽象データ・タイプを実装するプログラム・モジュール、例えば、関数、オブジェクト、アプリケーション・プログラミング・インターフェース(API)、データ構造等などとして実装され得る。本明細書において提供される本開示に照らして、当業者は、コンピュータ・プログラムが様々な言語の様々なバージョンにおいて書かれ得ることを認識するであろう。
【0239】
コンピュータ可読命令の機能性は、様々な環境において、所望に応じて組み合わされ、または分散され得る。いくつかの実施形態において、コンピュータ・プログラムは、命令の1つのシーケンスを含む。いくつかの実施形態において、コンピュータ・プログラムは、命令の複数のシーケンスを含む。いくつかの実施形態において、コンピュータ・プログラムは、1つのロケーションから提供される。他の実施形態において、コンピュータ・プログラムは、複数のロケーションから提供される。様々な実施形態において、コンピュータ・プログラムは、1つまたは複数のソフトウェア・モジュールを含む。様々な実施形態において、コンピュータ・プログラムは、部分的にまたは全体的に、1つもしくは複数のウェブ・アプリケーション、1つもしくは複数のモバイル・アプリケーション、1つもしくは複数のスタンドアロン・アプリケーション、1つもしくは複数のウェブ・ブラウザ・プラグイン、拡張機能、アドイン、もしくはアドオン、または、これらの組み合わせを含む。
【0240】
いくつかの実施形態において、コンピュータ・プログラムは、ウェブ・アプリケーションを含む。本明細書において提供される本開示に照らして、当業者は、ウェブ・アプリケーションが、様々な実施形態において、1つまたは複数のソフトウェア・フレームワークおよび1つまたは複数のデータベース・システムを利用することを認識するであろう。いくつかの実施形態において、ウェブ・アプリケーションは、ソフトウェア・フレームワーク、例えば、Microsoft(登録商標)の.NETまたはRuby on Rails(RoR)上などで作成される。いくつかの実施形態において、ウェブ・アプリケーションは、非限定的な例として、リレーショナル・データベース・システム、非リレーショナル・データベース・システム、オブジェクト指向データベース・システム、連想データベース・システム、およびXMLデータベース・システムを含む、1つまたは複数のデータベース・システムを利用する。さらなる実施形態において、適切なリレーショナル・データベース・システムは、非限定的な例として、Microsoft(登録商標)SQL Server、mySQL(商標)、およびOracle(登録商標)を含む。当業者は、ウェブ・アプリケーションが、様々な実施形態において、1つまたは複数の言語の1つまたは複数のバージョンにおいて書かれることも認識するであろう。ウェブ・アプリケーションは、1つまたは複数のマークアップ言語、プレゼンテーション定義言語、クライアント側スクリプト言語、サーバ側コーディング言語、データベース・クエリ言語、または、これらの組み合わせにおいて書かれ得る。いくつかの実施形態において、ウェブ・アプリケーションは、マークアップ言語、例えば、ハイパーテキスト・マークアップ言語(HTML)、拡張可能なハイパーテキスト・マークアップ言語(XHTML)、または拡張可能なマークアップ言語(XML)などにおいて、ある程度まで書かれる。いくつかの実施形態において、ウェブ・アプリケーションは、カスケーディング・スタイル・シート(CSS)などのプレゼンテーション定義言語において、ある程度まで書かれる。いくつかの実施形態において、ウェブ・アプリケーションは、クライアント側スクリプト言語、例えば、非同期JavaScript(登録商標)およびXML(AJAX:Asynchronous JavaScript and XML)、Flash(登録商標)ActionScript、JavaScript、またはSilverlight(登録商標)などにおいて、ある程度まで書かれ得る。いくつかの実施形態において、ウェブ・アプリケーションは、サーバ側コーディング言語、例えば、アクティブ・サーバ・ページ(ASP)、ColdFusion(登録商標)、Perl、Java(登録商標)、JavaServer Pages(JSP)、Hypertext Preprocessor(PHP)、Python(商標)、Ruby、Tcl、Smalltalk、WebDNA(登録商標)、またはGroovyなどにおいて、ある程度まで書かれる。いくつかの実施形態において、ウェブ・アプリケーションは、構造化クエリ言語(SQL)などのデータベース・クエリ言語において、ある程度まで書かれる。いくつかの実施形態において、ウェブ・アプリケーションは、IBM(登録商標)Lotus Domino(登録商標)などの企業サーバ製品を一体化する。いくつかの実施形態において、ウェブ・アプリケーションは、メディア・プレーヤ要素を含む。様々なさらなる実施形態において、メディア・プレーヤ要素は、非限定的な例として、Adobe(登録商標)Flash(登録商標)、HTML5、Apple(登録商標)QuickTime(登録商標)、Microsoft(登録商標)Silverlight(登録商標)、Java(商標)、およびUnity(登録商標)を含む、多くの適切なマルチメディア技術のうちの1つまたは複数を利用する。
【0241】
いくつかの実施形態において、コンピュータ・プログラムは、モバイル・コンピューティング・デバイスに対して提供されるモバイル・アプリケーションを含む。いくつかの実施形態において、モバイル・アプリケーションは、モバイル・アプリケーションが製造されるときにモバイル・コンピューティング・デバイスに対して提供される。他の実施形態において、モバイル・アプリケーションは、本明細書において説明されるコンピュータ・ネットワークを介して、モバイル・コンピューティング・デバイスに対して提供される。
【0242】
本明細書において提供される本開示を考慮して、モバイル・アプリケーションは、本技術分野において知られているハードウェア、言語、および開発環境を使用して、当業者に知られている技法によって作成される。当業者は、モバイル・アプリケーションがいくつかの言語において書かれることを認識するであろう。適切なプログラミング言語は、非限定的な例として、C、C++、C#、オブジェクティブC、Java(商標)、JavaScript、Pascal、Object Pascal、Python(商標)、Ruby、VB.NET、WML、およびCSSありもしくはCSSなしのXHTML/HTML、または、これらの組み合わせを含む。
【0243】
適切なモバイル・アプリケーション開発環境は、いくつかのソースから利用可能である。市販の開発環境は、非限定的な例として、AirplaySDK、alcheMo、Appcelerator(登録商標)、Celsius、Bedrock、Flash Lite、.NET Compact Framework、Rhomobile、およびWorkLight Mobile Platformを含む。他の開発環境は、非限定的な例として、Lazarus、MobiFlex、MoSync、およびPhonegapを含めて、コストなしで利用可能である。また、モバイルデバイス製造業者は、非限定的な例として、iPhoneおよびiPad(iOS)SDK、Android(商標)SDK、BlackBerry(登録商標)SDK、BREW SDK、Palm(登録商標)OS SDK、Symbian SDK、webOS SDK、およびWindows(登録商標)Mobile SDKを含む、ソフトウェア開発者キットを流通させている。
【0244】
当業者は、非限定的な例として、Apple(登録商標)App Store、Google(登録商標)Play、Chrome WebStore、BlackBerry(登録商標)App World、PalmデバイスのためのApp Store、webOSのためのApp Catalog、Windows(登録商標)Marketplace for Mobile、Nokia(登録商標)デバイスのためのOvi Store、Samsung(登録商標)Apps、および任天堂(登録商標)DSiショップを含む、いくつかの商業フォーラムが、モバイル・アプリケーションの流通のために利用可能であることを認識するだろう。
【0245】
いくつかの実施形態において、本明細書において開示されているプラットフォーム、システム、媒体、および方法は、ソフトウェア、サーバ、および/もしくはデータベース・モジュール、または、これらの使用を含む。本明細書において提供される本開示を考慮して、ソフトウェア・モジュールは、本技術分野において知られている機械、ソフトウェア、および言語を使用して、当業者に知られている技法によって作成される。本明細書において開示されているソフトウェア・モジュールは、多くの手法において実装される。様々な実施形態において、ソフトウェア・モジュールは、ファイル、コードのセクション、プログラミング・オブジェクト、プログラミング構造、または、これらの組み合わせを含む。さらなる様々な実施形態において、ソフトウェア・モジュールは、複数のファイル、コードの複数のセクション、複数のプログラミング・オブジェクト、複数のプログラミング構造、または、これらの組み合わせを含む。様々な実施形態において、1つまたは複数のソフトウェア・モジュールは、非限定的な例として、ウェブ・アプリケーション、モバイル・アプリケーション、およびスタンドアロン・アプリケーションを備える。いくつかの実施形態において、ソフトウェア・モジュールは、1つのコンピュータ・プログラムまたはアプリケーション内にある。他の実施形態において、ソフトウェア・モジュールは、1つを超えるコンピュータ・プログラムまたはアプリケーション内にある。いくつかの実施形態において、ソフトウェア・モジュールは、1つの機械上にホストされる。他の実施形態において、ソフトウェア・モジュールは、1つを超える機械上にホストされる。さらなる実施形態において、ソフトウェア・モジュールは、クラウド・コンピューティング・プラットフォーム上にホストされる。いくつかの実施形態において、ソフトウェア・モジュールは、1つのロケーションにおける、1つまたは複数の機械上にホストされる。他の実施形態において、ソフトウェア・モジュールは、1つを超えるロケーションにおける、1つまたは複数の機械上にホストされる。
【0246】
いくつかの実施形態において、本明細書において開示されているプラットフォーム、システム、媒体、および方法は、1つもしくは複数のデータベース、またはその使用を含む。本明細書において提供される本開示を考慮して、当業者は、多くのデータベースがデータ記録の記憶および取り出しに適していることを認識するであろう。様々な実施形態において、適切なデータベースは、非限定的な例として、リレーショナル・データベース、非リレーショナル・データベース、オブジェクト指向データベース、オブジェクト・データベース、エンティティ関係モデル・データベース、連想データベース、およびXMLデータベースを含む。さらに非限定的な例は、SQL、PostgreSQL、MySQL、MongoDB、Oracle、DB2、およびSybaseを含む。いくつかの実施形態において、データベースはウェブ・ベースである。またさらなる実施形態において、データベースは、クラウド・コンピューティング・ベースである。他の実施形態において、データベースは、1つまたは複数のローカルのコンピュータ・ストレージ・デバイスに基づく。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10