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

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

▶ エヌチェーン ホールディングス リミテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-21
(45)【発行日】2024-01-04
(54)【発明の名称】一般的な計算のためのブロックチェーン
(51)【国際特許分類】
   G06F 9/46 20060101AFI20231222BHJP
   G06Q 50/00 20240101ALI20231222BHJP
【FI】
G06F9/46 420Z
G06Q50/00
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2022183796
(22)【出願日】2022-11-17
(62)【分割の表示】P 2019566123の分割
【原出願日】2018-06-04
(65)【公開番号】P2023018005
(43)【公開日】2023-02-07
【審査請求日】2022-11-17
(31)【優先権主張番号】1709188.5
(32)【優先日】2017-06-09
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】トレヴェサン,トーマス
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2004-206273(JP,A)
【文献】特表2008-527521(JP,A)
【文献】米国特許出願公開第2015/0235282(US,A1)
【文献】米国特許出願公開第2016/0260095(US,A1)
【文献】TEUTSCH, J. and REITWIEBNER, C.,A scalable verification solution for blockchain,TrueBit whitepaper,[online],2017年03月07日,pp.1-44,https://allquantor.at/blockchainbib/pdf/teutsch2017scalable.pdf
【文献】JAIN, S. et al.,How to verify computation with a rational network,arXiv:1606.05917v1,[online],2016年06月19日,pp.1-15,https://arxi.org/abs/1606.05917
【文献】KUMARESAN, R. and BENTOV, I.,How to Use Bitcoin to Incentivize Correct Computations,CCS '14: Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security,2014年11月,pp.30-41
【文献】SHOKER, A.,Sustainable Blockchain through Proof of eXercise,2017 IEEE 16th International Symposium on Network Computing and Applications (NCA),2017年11月01日,pp.1-9
【文献】BALL, M. et al.,Proof of Useful Work,Cryptology ePrint Archive,Report 2017/203 ver.20170301:001609,[online],2017年03月01日,pp.1-27,https://eprint.iacr.org/2017/203/20170301:001609,[2022年10月31日検索]
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46
G06Q 50/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータで実施される方法であって、当該コンピュータで実施される方法は、
計算タスク分散システムを監視して、要求側コンピュータシステムによって行われた要求に応じて、提案側コンピュータシステムによって提供される提案側文字列に対する異議申立てを検出するステップであって、前記要求は、該要求に関連する計算タスクと第1のデジタル資産とを指定し、前記提案側文字列は、該提案側文字列に関連する提案者トランザクションへの入力で参照される第2のデジタル資産を指定し、前記提案側文字列は、前記計算タスクに対する解がないことを示す、ステップと、
前記異議申立てを検出した結果として、少なくとも、
第1のブロックチェーン・ネットワークに提供された解のセットから1つの解を少なくとも選択することにより、前記第1のブロックチェーン・ネットワークを使用して異議申立てを解決するステップであって、前記解のセットには前記提案側文字列が少なくとも含まれる、ステップと、
前記解に少なくとも部分的に基づいて、前記第1のデジタル資産及び前記第2のデジタル資産から前記計算タスク分散システムの1人又は複数人の関係者にデジタル資産を分配するステップと、を含む、
コンピュータで実施される方法。
【請求項2】
前記提案側文字列は、別の情報と組み合わされた前記計算タスクに対する解がないことを示す情報を含む、請求項1に記載のコンピュータで実施される方法。
【請求項3】
前記情報は、計算を試みた者だけがアクセス可能である、請求項2に記載のコンピュータで実施される方法。
【請求項4】
前記提案側文字列は、該提案側文字列に関連するタイムスタンプに少なくとも部分的に基づいて、前記解のセットから選択される、請求項1に記載のコンピュータで実施される方法。
【請求項5】
前記異議申立ては、前記計算タスクに対する異議申立側文字列のハッシュを指定し、前記解のセットには前記異議申立側文字列が含まれる、請求項1乃至4のいずれかに記載のコンピュータで実施される方法。
【請求項6】
前記計算タスク分散システムは、プルーフオブワーク・ブロックチェーン・ネットワークに関連するウェブサービスとして実装される、請求項1乃至5のいずれか一項に記載のコンピュータで実施される方法。
【請求項7】
前記計算タスク分散システムは、プルーフオブワーク・ブロックチェーン・ネットワーク上で実装される、請求項1乃至6のいずれか一項に記載のコンピュータで実施される方法。
【請求項8】
前記異議申立ては、前記計算タスクに対する解がないことを示す、請求項1乃至7のいずれか一項に記載のコンピュータで実施される方法。
【請求項9】
前記デジタル資産は、提案者によって前記第1のブロックチェーン・ネットワークに提供される預託金を含む、請求項1乃至8のいずれか一項に記載のコンピュータで実施される方法。
【請求項10】
前記デジタル資産は、前記第1のデジタル資産、前記第2のデジタル資産、及び前記異議申立てに関連するトランザクションへの入力において参照される第3のデジタル資産から分配される、請求項1乃至9のいずれか一項に記載のコンピュータで実施される方法。
【請求項11】
前記異議申立てを解決するステップは、前記解のセットの1つ又は複数の解の対応する検証動作のセットを実行するステップを含む、請求項1乃至10のいずれか一項に記載のコンピュータで実施される方法。
【請求項12】
前記異議申立てを解決するステップことは、少なくとも、
提案者から、前記解のセットに関して前記提案側文字列の第1セットの中間結果を受信するステップと、
異議申立者から、前記解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップと、
前記第1セットの中間結果を前記第2セットの中間結果と比較して、前記提案側文字列と前記異議申立側文字列とが分岐する位置を決定するステップと、
解を選択するステップであって、
前記第1のブロックチェーンを使用して、前記位置で前記第1セットの中間結果の1つ又は複数の計算を繰り返すこと、及び
前記第1のブロックチェーンを使用して、前記位置で前記第2セットの中間結果の1つ又は複数の計算を繰り返すことに少なくとも部分的に基づいて解を選択するステップと、を含む仲裁手順を実行するステップを含む、請求項1乃至11のいずれか一項に記載のコンピュータで実施される方法。
【請求項13】
前記異議申立てを解決するステップは、少なくとも、
提案者から、前記解のセットに関して前記提案側文字列の第1セットの中間結果を受信するステップと、
異議申立者から、前記解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップと、
前記第1セットの中間結果及び前記第2セットの中間結果を解析して、前記提案側文字列と前記異議申立側文字列とが分岐する位置を特定するステップと、
前記解析に少なくとも部分的に基づいて、誤った解を特定するステップと、によって前記解のセットの前記誤った解を特定するステップを少なくとも含む、請求項1乃至12のいずれか一項に記載のコンピュータで実施される方法。
【請求項14】
システムであって、当該システムは、
プロセッサと、
実行可能命令を含むメモリと、を含み、
前記命令がプロセッサによって実行される結果として、当該システムに、請求項1乃至13のいずれか一項に記載のコンピュータで実施される方法を実行させる、
システム。
【請求項15】
実行可能命令を格納した非一時的なコンピュータ可読記憶媒体であって、前記命令がコンピュータシステムのプロセッサによって実行された結果として、前記コンピュータシステムに、請求項1乃至13のいずれか一項に記載のコンピュータで実施される方法を少なくとも実行させる、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、分散システムに関し、より具体的には、分散システム上のトランザクションの信頼性を高めるための方法及びシステムに関する。本発明は、計算タスク分散システムにおける計算の信頼性を高める際の使用に特に適しているが、これに限定されるものではない。
【0002】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、コンセンサス(合意)ベースのブロックチェーン及びトランザクションチェーン技術、許可された台帳及び許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれる。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的で、本開示で説明する技術の有用な用途として「ビットコイン」について参照し得るが、ビットコインは、本開示で説明する技術を適用できる多くの用途のうちの1つに過ぎない。もっとも、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、非商用用途を含む代替のブロックチェーン実施態様及びプロトコルも、本発明の範囲内に含まれることに留意されたい。例えば、本開示で説明する技術は、暗号通貨の交換が発生するかどうかに関係なく、ブロックチェーンの実施態様を利用し、ブロックチェーンの検証及び/又は暗号通貨トランザクションの検証にビットコインと同様の制約を有する他の暗号通貨に利点を提供する。
【0003】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックは、トランザクションで構成され得、且つ一実施形態では追加の情報を含む。いくつかの例では、「ブロックチェーン・トランザクション」は、データ及び条件のセットを含むフィールド値の構造化されたコレクションをエンコードする入力メッセージを指し、条件のセットを満たすことは、フィールドのセットをブロックチェーンのデータ構造に書き込むための前提条件である。台帳を管理するための中央処理システムがないため、ブロックチェーンはピアツーピア電子台帳とも呼ばれ得、台帳のトランザクションは、分散システムのノード同士の間のコンセンサス・プロトコルを使用して検証され得る。ビットコインの場合に、各トランザクションは、ブロックチェーン・システムの参加者同士の間でデジタル資産の制御(control:管理)の転送(transfer:移転)を符号化するデータ構造であり、各トランザクションには、少なくとも1つの入力と少なくとも1つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトは、スタックベースのスクリプト言語を使用して記述され得る。スタックベースのスクリプト言語は、様々なスタックベース又はスタック指向の実行モデル及び動作をサポートするプログラミング言語を指し得るが、場合によっては厳密な後入れ先出し(LIFO)方式の動作だけに限定されないことに留意されたい。例えば、スタックベースのスクリプト言語は、スタック内のn番目のアイテムを最上部にコピー又は移動する操作(例えば、ビットコインのそれぞれOP_PICK及びOP_ROLL等)をサポートすることができる。スタックベースのスクリプト言語で記述されたスクリプトは、ベクトル、リスト、スタック等の適切なデータ構造を使用して実装できる論理スタックに押し込む(push onto)ことができる。
【0004】
本明細書で使用される場合に、「デジタル資産」は、ブロックチェーンによって管理されるリソースの単位であり得る。ビットコイン等のいくつかの実施形態では、リソースはトークン化されないため、例えば、ブロックチェーンで識別されるリソースの識別子はないが、むしろブロックチェーンに記録される有効なトランザクションを生成する能力により、リソースの制御が証明される。ただし、いくつかのブロックチェーンの実施態様ではトークン化されたリソースを使用する場合があるため、例えば、ブロックチェーンに記録された情報を使用してリソースを明確に識別できる。デジタル資産は、いくつかの実施形態では暗号通貨として使用され得るが、実施形態では、デジタル資産は、追加的又は代替的に他の状況で使用可能であると考えられる。本発明は、デジタル資産の制御に適用可能であるが、本質的に技術的であり、必ずしもデジタル資産の転送を伴うことなく、ブロックチェーンデータ構造を利用する他の状況で使用できることに留意されたい。本開示で使用される「デジタル資産」は、1つ又は複数のデジタル資産を指す場合がある。例えば、トランザクションには複数の入力が含まれ、それらの入力のそれぞれが異なるデジタル資産を表す場合がある。この例では、制御が転送されるデジタル資産は、複数のデジタル資産のコレクションであり、コレクション自体がデジタル資産であり得る。同様に、トランザクションは、これらの複数の入力を細分化及び/又は結合して、例えば入力数と出力数とが異なり得るように、1つ又は複数の出力を生成することができる。
【0005】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。有効性は、ブロック生成能力を有する大多数のノードで使用されている共通のルールセットに基づいて、ノードによって判定され得る。例えば、ビットコイン・プロトコルでは、いくつかのネットワークノードは、マイナー(miners:採掘者)として機能し、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。いくつかの例では、「マイナー」は、各トランザクションが有効であることを確認する作業を行う計算システムであり、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされたソフトウェア・クライアントは、関連するロック及びロック解除スクリプトを実行することにより、未決済のトランザクション出力(UTXO)を参照するトランザクションでこの検証作業を行う。ロック及びロック解除スクリプトの実行がTRUEと評価され、且つ他の特定の条件が満たされた場合に、トランザクションは有効であり、このトランザクションはブロックチェーンに書き込まれる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、i)トランザクションを受信するノードによって検証される(トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する);ii)マイナーによって構築された新しいブロックに追加され;iii)マイニングされる(つまり、過去のトランザクションの公的な台帳に追加される)必要がある。
【0006】
最近、デジタル起業家は、ビットコインがベースとする暗号セキュリティシステムと、ブロックチェーンに格納され得るデータとの両方を使用して新しいシステムを実施することを模索し始めている。暗号通貨の領域に限定されない自動化されたタスク及びプロセスにブロックチェーンを使用できれば、非常に有利になろう。このような解決策によって、ブロックチェーンの利点(例えば、イベントの永続的な改ざん防止記録、分散処理等)を活用しながら、それら用途をより広げることができるだろう。
【0007】
ブロックチェーンは、殆ど不変であり、且つ大抵の場合匿名である。ブロックチェーン技術の不変で略匿名の性質は、悪意のある行動からユーザを保護する際に多くの技術的課題を提示する。例えば、トランザクションを含むブロック上に構築された多数のブロックにより、トランザクションを実質的に元に戻せないため、大抵の場合払戻しは利用できず、トランザクションの整合性を維持するために新しい技術システムが必要である。このような課題は、ブロックチェーン技術の非中央型のトラストレス(trustless:中央主権型に頼らない)な性質により困難になる。つまり、トランザクションの整合性を保証する中心的な関係者は存在せず、トランザクションの整合性は、代わりに技術的な手段によって達成される。従って、ブロックチェーン技術がトランザクションの信頼性を高めることが望ましい。
【0008】
信頼性の課題は、計算タスク分散システムに存在する場合がある。計算タスク分散システムは、費用のかかる計算のオフチェーン(off-chain:チェーン外部での)実行を可能にするサービスである。このような計算タスク分散システムにより、ネットワーク内のノードが、アルゴリズムの実行を別のリモートノードに外部委託できる。アルゴリズムの結果は、アルゴリズムの演算を外部委託したノードに報告される。結果を受け取るノードは、結果が信頼できるかどうかを知らない可能性がある。答えが正しいかどうかを受信ノードが判断するには、一般に、受信ノードはアルゴリズム自体を実行する必要があり、これは外部委託の目的が損なわれる。従って、ブロックチェーン技術によって、計算タスク分散システムの結果の信頼性を高めることが望ましい。
【発明の概要】
【0009】
本開示は、1つ又は複数のブロックチェーンベースのコンピュータプログラムの技術的態様を説明する。ブロックチェーンベースのコンピュータプログラムは、ブロックチェーン・トランザクションに記録された機械可読で且つ実行可能なプログラムである。ブロックチェーンベースのコンピュータプログラムは、結果を生成するために入力を処理できるルールで構成され、それらの結果に応じてアクションが実行され得る。ロックスクリプトがロック解除トランザクションと以前のトランザクションとの両方にアクセスできる場合に、ブロックチェーンを利用して、非常に柔軟で且つ複雑なブロックチェーンベースのコンピュータプログラムを実現できる。現在の研究の1つの領域は、「スマート・コントラクト(smart contracts:契約の自動化)」の実施態様のためのブロックチェーンベースのコンピュータプログラムの使用である。自然言語で記述される従来の契約とは異なり、スマート・コントラクトは、機械可読の契約又は同意の条件の実行を自動化するように設計されたコンピュータプログラムである。
【0010】
ブロックチェーンに関連する別の関心分野は、「トークン」(つまり、「カラードコイン(coloured coin)」)を使用して、ブロックチェーンを介して実世界のエンティティを表現し且つそのエンティティに転送することである。潜在的に機密又は秘密のアイテムは、識別可能な意味や価値を有さないトークンで表すことができる。こうして、トークンは、実世界のアイテムをブロックチェーンから参照できるようにする識別子として機能する。
【0011】
こうして、これらの態様の1つ又は複数においてブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。
【0012】
こうして、本発明によれば、添付の特許請求の範囲で規定される方法が提供される。
従って、本発明によれば、添付の特許請求の範囲で規定されるコンピュータで実施される方法(及び、対応するシステム)方法を提供することができる。この方法は、ブロックチェーン・ネットワークを使用して計算タスク分散システムを実施する方法として説明され得る。コンピュータで実施される方法は、i)計算タスク分散システムを監視して、要求側(Requester)コンピュータシステムによって行われた要求に応じて、提案側(Proposer)コンピュータシステムによって提供される提案側文字列(Proposer string)に対する異議申立てを検出するステップであって、要求は、要求に関連する計算タスクと第1のデジタル資産とを指定し、提案側文字列は、計算タスクに対する解のハッシュによって示され、提案側文字列は、提案側文字列に関連する提案者(Proposer)トランザクションへの入力で参照される第2のデジタル資産を指定する、検出するステップと、ii)異議申立てを検出した結果として、少なくとも:a)第1のブロックチェーン・ネットワークに提供された、少なくとも提案側文字列を含む解のセットから1つの解を少なくとも選択することにより、第1のブロックチェーン・ネットワークを使用して異議申立てを解決するステップと、b)解に少なくとも部分的に基づいて、第1のデジタル資産及び第2のデジタル資産によるデジタル資産を計算タスク分散システムの1人又は複数人の関係者に分配する(distributing)ステップと、を含む。
【0013】
ゴースト(ghost)チェーンは一時的なブロックチェーンである。従来のブロックチェーンとは対照的に、ゴーストチェーンは、パフォーマンス、或いは1つ又は複数の基準、目標、又は指定された目的が満たされると終了、消滅、及び/又は期限切れになるように構成できる。つまり、ゴーストチェーンは、その目的が達成されると動作を停止する単一目的のブロックチェーンであり得る。ゴーストチェーンは、ジェネシス(genesis:起源)ブロックと呼ばれ得、ゴーストチェーンの展開用に作成されるか、或いはゴーストチェーンの目的、基準、又は目標のために作成される第1のブロックを含むことができる。
【0014】
コンピュータで実施される方法は、グループの他のノードと協力して、グループに転送可能なトランザクション(入力として報奨金及び提案者の預託金、出力として報奨金及び提案者の預託金及び異議申立者の預託金を含む)を構築するステップと、異議申立者の預託金を入力として追加するためのトランザクションを異議申立者に提供するステップも含み得る。一実施形態において、報奨金(例えば、提案者の預託金及び異議申立者の預託金)は、他の報奨金に対する作業の重要性を示す値とともに作業が実行可能であるという、別のコンピュータシステムへの信号として機能するトランザクションの値である。いくつかの実施形態では、報奨金はデジタル資産である。一実施形態では、報奨金は、ブロックチェーン上の第1のトランザクションに記録されると、(例えば、第2のトランザクションのロック解除スクリプトを実行した結果として、第1のトランザクションのロックスクリプトを成功裏にロック解除することにより、)ブロックチェーン・ネットワーク内の別のコンピュータシステムが第2のトランザクションをブロックチェーンに書き込むことを可能にする。報奨金及び提案者の預託金は、異議申立者トランザクションの構築前にグループの管理下に置かれ得る。例えば、提案者が要求に対する解をコミットした後の期間内に異議申立てが検出された場合に、報奨金及び提案者の預託金が、グループの独占的管理下に置かれ得る。
【0015】
提案側文字列は、提案側文字列に関連するタイムスタンプに少なくとも部分的に基づいて、解のセットから選択できる。
【0016】
異議申立てでは、計算タスクに対する異議申立側文字列のハッシュを指定でき、解のセットには、異議申立側文字列が含まれる。
【0017】
計算タスク分散システムは、プルーフオブワーク(proof of work:作業証明)・ブロックチェーン・ネットワークに関連するWebサービスとして実施できる。
【0018】
計算タスク分散システムは、プルーフオブワーク・ブロックチェーン・ネットワーク上で実施できる。
【0019】
第1のブロックチェーン・ネットワークは、プルーフオブステーク(proof-of-stake)ブロックチェーン・ネットワークであり得る。
【0020】
提案側文字列は、計算タスクに解がないことを示す場合がある。
【0021】
異議申立ては、計算タスクに解がないことを示す場合がある。
【0022】
デジタル資産には、提案者が第1のブロックチェーン・ネットワークに提供した預託金が含まれ得る。
【0023】
デジタル資産は、第1のデジタル資産、第2のデジタル資産、及び異議申立てに関連するトランザクションへの入力で参照される第3のデジタル資産から分配され得る。
【0024】
異議申立てを解決するステップは、解のセットのうちの1つ又は複数の解の対応する検証動作のセットを実行するステップを含み得る。
【0025】
異議申立てを解決するステップは、提案者から、解のセットに関して提案側文字列の第1セットの中間結果を受信することを少なくとも含む仲裁手順を実行するステップを含み得る。追加又は代替として、異議申立てを解決するステップは、異議申立者から、解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップを含み得る。追加又は代替として、異議申立てを解決するステップは、第1セットの中間結果を第2セットの中間結果と比較して、提案側文字列と異議申立側文字列とが分岐する位置を決定するステップを含み得る。追加又は代替として、異議申立てを解決するステップは、第1のブロックチェーンを使用して、その位置で第1セットの中間結果の1つ又は複数の計算を繰り返すこと、及び/又は第1のブロックチェーンを使用して、その位置で第2セットの中間結果の1つ又は複数の計算を繰り返すことに少なくとも部分的に基づいて、解を選択するステップを含み得る。
【0026】
異議申立てを解決するステップは、提案者から、解のセットに関して提案側文字列の第1セットの中間結果を少なくとも受信することにより、解のセットの誤った解を特定するステップを少なくとも含み得る。追加又は代替として、異議申立てを解決するステップは、異議申立者から、解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップを含み得る。追加又は代替として、異議申立てを解決するステップは、第1セットの中間結果及び第2セットの中間結果を解析して、提案側文字列と異議申立側文字列とが分岐する位置を特定するステップを含み得る。追加又は代替として、異議申立てを解決ステップは、解析に少なくとも部分的に基づいて、誤った解を特定するステップを含み得る。コンピュータで実施される方法のいくつかの実施態様では、異議申立てを解決するためにゴーストチェーンを展開するステップは、要求に関連するタスクをゴーストチェーンで実行して、1つ又は複数の提案側文字列及び/又は1つ又は複数の異議申立側文字列の正しい解を決定するステップを含み得る。
【0027】
コンピュータで実施される方法のいくつかの実施態様では、異議申立てを解決するためにゴーストチェーンを展開するステップは、タスクの一部をゴーストチェーンで実行して、提案者又は異議申立者のいずれかが、要求に関連するタスクの中間ステップで誤っていることを判定するステップを含み得る。
【0028】
コンピュータで実施される方法のいくつかの実施態様では、ゴーストチェーンを終了するステップは、異議申立ての解決に関連する情報をプルーフオブワーク・ブロックチェーン・ネットワークに転送するステップを含み得る。
【0029】
コンピュータで実施される方法のいくつかの実施態様では、ゴーストチェーンを終了するステップは、最終トランザクションの署名中に作成されたブロックに起因するマイニング分配の記録を含む末端ブロックを構築するステップを含み得る。
【0030】
本発明によれば、電子装置が提供され得る。電子装置は、インターフェイス装置、インターフェイス装置に結合されたプロセッサ、及びプロセッサに結合されたメモリを含む。メモリは、実行されると、本明細書で説明する方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を格納している。
【0031】
本発明によれば、コンピュータ可読記憶媒体が提供され得る。コンピュータ可読記憶媒体は、実行されると、本明細書で説明する方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む。
【図面の簡単な説明】
【0032】
本発明のこれら及び他の態様は、本明細書で説明する実施形態から明らかとなり、この実施形態を参照して説明される。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
図1】例示的なブロックチェーン・ネットワークのブロック図である。
図2】ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子装置のブロック図である。
図3】タスク要求が生成され、且つブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、解が提案され得る例示的な環境のブロック図である。
図4】ブロックチェーン・トランザクションがタスク要求に関連付けられ、且つブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解が生成され得る例示的な環境のブロック図である。
図5】ブロックチェーン・トランザクションが異議申立てに関連付けられ、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解が生成され得る例示的な環境のブロック図である。
図6】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解に対する異議申立てを解決し得る例示的な環境のブロック図である。
図7】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解に対する異議申立てを受け入れない例示的な環境のブロック図である。
図8】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスのフローチャートの第1の部分を示す図である。
図9】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスのフローチャートの第2の部分を示す図である。
図10】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスを開始するための例示的なプロセスのフローチャートである。
図11】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスに加入するための例示的なプロセスのフローチャートである。
図12】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、デジタル資産を没収するための例示的なプロセスのフローチャートである。
図13】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、秘密キーシェア分配を更新する例示的なプロセスのフローチャートである。
図14】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、秘密キーシェア分配を更新するための例示的なプロセスのフローチャートである。
図15】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、預託金を返却するための例示的なプロセスのフローチャートである。
図16】第1及び第2のブロックチェーン・ネットワークがブロックチェーン・ネットワークに関連する計算タスク分散システムで実施され得る例示的な環境のブロック図である。
図17】ブロックチェーン・ネットワークに関連する計算タスク分散システム又は双方向ペグを提供するための例示的なプロセスのフローチャートである。
図18】ブロックチェーン及びゴーストチェーンがブロックチェーン・ネットワークに関連する計算タスク分散システムで実施され得る例示的な環境のブロック図である。
図19】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクの完了を要求するための例示的なプロセスのフローチャートである。
図20】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解を提案するための例示的なプロセスのフローチャートである。
図21】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解に異議を申し立てるための例示的なプロセスのフローチャートである。
図22】ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解について異議申立者を仲裁するための例示的なプロセスのフローチャートである。
図23】様々な実施形態を実施することができる例示的な環境のブロック図である。
【発明を実施するための形態】
【0033】
最初に図1を参照すると、この図は、ブロックチェーンに関連する例示的なブロックチェーン・ネットワーク100をブロック図形式で示す。ブロックチェーン・ネットワークは、パブリック・ブロックチェーン・ネットワークとすることができ、このネットワークは、招待を受けずに又は他のメンバーの同意なしに、誰でも加入できるピアツーピアのオープンメンバーシップ・ネットワークである。ブロックチェーン・ネットワーク100が動作する下で、ブロックチェーン・プロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーン・ネットワーク100に参加することができる。そのような分散型電子装置は、ノード102と呼ばれ得る。ブロックチェーン・プロトコルは、例えば、ビットコイン・プロトコルであってもよい。
【0034】
ブロックチェーン・プロトコルを実行し、且つブロックチェーン・ネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ等のコンピュータ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は他の電子装置等を含む様々なタイプの装置であってもよい。
【0035】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合され得る。このような通信は、ブロックチェーンに関連するプロトコルに準拠している。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合に、ビットコイン・プロトコルを使用してもよい。
【0036】
ノード102は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。こうして、グローバル台帳は分散型台帳であり得る。各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを格納することができる。プルーフオブワーク(proof of work:作業証明)により保証されたブロックチェーンの場合に、グローバル台帳に影響を与えるノード102によるトランザクションは、グローバル台帳の有効性が維持されるように他のノード102によって検証され得る。ブロックチェーンがプルーフオブワークベースのブロックチェーンである場合に、ブロックとともに送信された作業証明をチェックすることでブロックも検証され得る。
【0037】
ノード102の少なくともいくつかは、ブロックチェーン・ネットワーク100のマイニングノード104として動作する。図1のブロックチェーン・ネットワーク100は、ブロックチェーン上でのトランザクションを促進するためにマイニングノード104が費用のかかる計算を行うプルーフオブワーク・ブロックチェーンであり得る。例えば、プルーフオブワーク・ブロックチェーンでは、マイナーが暗号問題を解く必要があり得る。ビットコインでは、マイニングノード104は、ブロックヘッダーをSHA-256でハッシュして、現在の難易度により規定される値よりも小さい数になるようにナンス(nonce)を見つける。プルーフオブワーク・アルゴリズムに必要なハッシュ能力は、トランザクションが、特定の数のブロックがその上部でマイニングされた後に、実質的に不可逆とみなされ得ることを意味する。暗号問題を解くマイニングノード104は、ブロックチェーンに新しいブロックを作成し、この新しいブロックを他のノード102にブロードキャストする。他のノード102は、マイニングノード104が実際に暗号問題を解き、従って、ブロックをブロックチェーンに追加すべきことを受け入れる前に、十分なプルーフオブワーク(作業証明)を実証したかを検証する。ブロックは、ノード102のコンセンサスによってブロックチェーン(つまり、グローバル分散型台帳)に追加され得る。
【0038】
マイニングノード104によって作成されたブロックは、ノード102によってブロックチェーンにブロードキャストされたトランザクションを含み得る。例えば、ブロックは、あるノード102に関連するアドレスから別のノード102に関連するアドレスへのトランザクションを含み得る。このように、ブロックは、あるアドレスから別のアドレスへのトランザクションの記録として機能する。トランザクションをブロックに含めるように要求する関係者(party)は、公開キー(public key)に対応する秘密キー(private key)を使用してその要求に署名することにより、転送を開始する(例えば、ビットコインの場合に、ビットコインを転送する)権限があることを証明する。その要求が有効に署名されている場合にのみ、その転送(トランザクション)がブロックに追加され得る。
【0039】
ビットコインの場合に、公開キーとアドレスとの間には1対1の対応関係がある。つまり、各公開キーは単一のアドレスに関連付けられる。こうして、本明細書での公開キーとの間でのデジタル資産の移転(例えば、公開キーへの転送)及びその公開キーに関連するアドレスとの間でのデジタル資産の移転への言及は、一般的な動作を指す。
【0040】
ノード102のいくつかは、マイニングノードとして動作しない場合があり、代わりに検証ノードとして参加し得る。トランザクションの検証には、署名の照合、有効なUTXOへの参照の確認等が含まれ得る。
【0041】
図1の例は、6つのノード102を含み、そのうちの2つがマイニングノード104として参加している。実際には、ノード102又はマイニングノード104の数は異なっていてもよい。多くのブロックチェーン・ネットワークでは、ノード102及びマイニングノード104の数は、図1に示されている数よりはるかに多くてもよい。
【0042】
以下で説明するように、様々なノード102が協力して、本明細書でコングレス(congress:会議)106と呼ばれるグループを形成することができる。図示の例では、3つのノード102がコングレス106に参加するものとして示されている。しかしながら、コングレス106の実際のメンバーは、はるかに多くてもよい。
【0043】
コングレス106は、コングレス106に関連するプールに十分な出資金を提出すると、ノード102が加入することができるオープンメンバーシップ・グループであり得る。例えば、ノードは、デジタル通貨(ビットコイン等)、トークン、又は他の出資金や対価等のデジタル資産を、コングレス106に関連するアカウントに転送することで、コングレスに加入することができる。コングレスに加入するノード102は、マイニングノードと非マイニングノードとの両方を含む、ブロックチェーン・ネットワーク内のノードであり得る。コングレスの少なくともいくつかのアプリケーションでは、コングレス・メンバーとして機能するノードは、完全なブロックチェーンをダウンロードする(ただし、必ずしも保持する必要はない)という意味でブロックチェーンを監視する。コングレス106への加入、退会、及び参加の手法については、以下でより詳細に議論する。
【0044】
以下でより詳細に説明するように、コングレスのメンバーは一時的なゴーストチェーン・ネットワーク108を形成することができる。ゴーストチェーンの第1のブロックチェーン・ネットワークは、本明細書でゴーストチェーンと呼ばれる分散型台帳を作成し且つ維持する。ゴーストチェーン・ネットワーク108は、本明細書で説明する方法の実行中に、信頼性を検証するために、又は要求に応じて生成された提案側文字列に対して異議申立て(challenge)が発生したときに仲裁するために、展開され得る。例えば、ゴーストチェーン・ネットワーク108は、ブロックチェーン・ネットワーク100のノード102によって提出された作業成果物であり得るプロセッサによって生成された作業成果物の完全性を検証するために展開され得る。例えば、ゴーストチェーン・ネットワーク108は、ブロックチェーン・ネットワーク100上で生成されたアルゴリズム関連の紛争を仲裁するために展開され得る。このような紛争は、あるノードのプロセッサによって生成された作業成果物の信頼性が別のノードによって異議申立てされた場合に起こり得る。
【0045】
ゴーストチェーン(ghost chain)は一時的なブロックチェーンであり得る。従来のブロックチェーンとは異なり、ゴーストチェーンは、本明細書で説明する目的を達成すると終了するように構成され得る。つまり、ゴーストチェーンは、その目的が達成されると存在しなくなる単一目的のブロックチェーンであり得る。ゴーストチェーンは、ジェネシス(genesis)ブロックと呼ばれる最初のブロックを含み、ゴーストチェーンがその目的のために(例えば、プロセッサによって生成された作業成果物の完全性を検証するために)展開された場合にのみ作成され得る。
【0046】
ブロックチェーン・ネットワークに関連するブロックチェーンは、プルーフオブワーク・ブロックチェーンであるが、ゴーストチェーンは、プルーフオブステーク(proof-of-stake)ブロックチェーンであり得る。プルーフオブステークベースのゴーストチェーン・ネットワーク108は、コンセンサスを得るための代替メカニズムを提供する。プルーフオブステーク・ゴーストチェーンでは、ブロックチェーンは、プルーフオブワークではなくプルーフオブステークによって保証され得る。プルーフオブステークでは、ゴーストチェーンのマイニングノード110はデジタル資産の預託金を預託し、ブロックをマイニングするノードとして選択される確率は、預託金として提供したデジタル資産の額に比例し得る。プルーフオブステーク・ブロックチェーンシステムを使用すると、プルーフオブワーク・ブロックチェーンでマイニングするために必要な計算費用及びエネルギーを回避することができる。さらに、プルーフオブステーク・ブロックチェーンによって、プルーフオブワーク・ブロックチェーンよりも高頻度でより定期的なブロック作成が可能になる。
【0047】
複数のノード102は、ゴーストチェーン・ネットワーク108のマイニングノード110として機能する。ゴーストチェーン・ネットワーク108のマイニングノード110の少なくともいくつかは、ブロックチェーン・ネットワーク100のマイニングノード104として機能しなくてもよい。ゴーストチェーン・ネットワーク108がプルーフオブステーク・ブロックチェーン・ネットワークであり得るので、マイニングノード110は、マイニングノードとして含めてもらうためにデジタル資産を預託する。より具体的には、ゴーストチェーンのマイニングノード110は、ゴーストチェーン・ネットワーク108上でマイニングするために留め置き検証(bonded validator)セットを形成する。これらのマイニングノード110は、ブロックチェーン・ネットワーク100に関連するコングレス106のメンバーでもあり得る。つまり、ノード102は、プルーフオブワーク・ブロックチェーン・ネットワーク100とゴーストチェーン・ネットワーク108との両方の一部であり得、ゴーストチェーン・ネットワーク108のマイニングノード110として、及びプルーフオブワーク・ブロックチェーン・ネットワーク100で確立されたコングレス106のメンバーとして機能する。これらのマイニングノード110は、コングレス106に加入し、以下で説明する方法に従ってコングレス106に参加する。それらマイニングノードのデジタル資産のコングレスプールへの預託は、プルーフオブワーク・ブロックチェーンで行われ得る。つまり、コングレス・メンバーは、プルーフオブワークの第1のブロックチェーン・ネットワーク100に自分の「出資金」を預託してコングレス・メンバーとなり、コングレス・メンバーが、留め置き検証セットを形成することにより、ゴーストチェーン上でマイニングノード110として機能することができる。コングレス106は、コングレス106に関連するプールへの十分な出資金を提出すると、ノードが加入することができるオープンメンバーシップ・グループであり得る。
【0048】
本明細書で説明するコンピュータで実施される方法は、十分にリッチなスクリプト言語(つまり、ブロックチェーンベースの計算市場(computational marketplace)で実施するために使用され得るスクリプト言語)を有するブロックチェーンで実施され得るブロックチェーンベースの計算市場ではなく、十分にリッチなスクリプト言語に欠けるビットコイン(又は、他のそのようなブロックチェーン)で実施され得る計算市場を説明することに留意されたい。より具体的には、ブロックチェーンベースの計算市場で実施するために使用され得るスクリプト言語は、本明細書で説明するように、提案側文字列について異議申し立てされている場合に、提案者と異議申立者との間の判定(adjudicating)機能を実行する(例えば、勝者を決定する)のに十分にリッチであり得る。異議申立てがない場合に、追加のプロトコルを呼び出さずに、且つ本明細書で説明するようなコングレス及びゴーストチェーン等の追加機能を使用せずに、ビットコイン(又は、他の同様のブロックチェーン)で計算市場を最初から最後まで実行することができる。例えば、イーサリアム(Ethereum)には、ブロックチェーンベースの計算市場で実施するために使用できる十分にリッチなスクリプト言語がある(例えば、提案者と異議申立者との間の判定機能を実行するのに十分にリッチなスクリプト言語がある)。例えば、このようなシステムについて説明しているTruebitの説明https://people.cs.uchicago.edu/~teutsch/papers/truebit.pdfを参照されたい。
【0049】
本明細書で説明するコンピュータで実施される方法は、追加の一時的なプルーフオブステーク・ブロックチェーン(例えば、ゴーストチェーン)と、提案側文字列に対する異議申立てを解決するためのコングレス・プロトコルとを使用して、ビットコイン(又は、他そのようないくつかのブロックチェーン)等のより限定的なプラットフォームで計算市場をどの様に実施するかを説明する。本明細書で説明するコンピュータで実施される方法では、分配レイヤー(ビットコイン等)は、制限されたスクリプト言語に関連するセキュリティを保持する。例えば、本明細書で説明するコンピュータで実施される方法を使用すると(つまり、ビットコイン等のネットワークと連携してゴーストチェーン及びコングレスを使用すると)、複雑なブロックチェーンベースのコンピュータプログラムを作成するのがより困難になる(いくつかの実施形態では不可能になる)可能性があり、それによってその動作を予測するのが困難になる又は不可能にさえなる。しかしながら、そのような十分にリッチなスクリプト言語(例えば、Ethereum)を使用して、ブロックチェーン・プロトコルでその動作を予測するのが困難になる又は不可能にさえなるような、複雑なブロックチェーンベースのコンピュータプログラムを作成することができる。ビットコイン等のプロトコルの上部に計算市場向けの追加機能を実装する(例えば、ゴーストチェーン及びコングレスを使用する)ことにより、基礎になるブロックチェーン(資金が存在する)のセキュリティは影響を受けない可能性があり、こうして複雑なブロックチェーンベースのコンピュータプログラムを作成するのがより困難になる可能性があり(そして、いくつかの実施形態では不可能になる可能性があり)、それによってその動作を予測することが困難である又は不可能でさえなる。
【0050】
図2は、図1に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワーク(例えば、図1に関連して示したブロックチェーン・ネットワーク100等のブロックチェーン・ネットワーク)内のノード(例えば、図1に関連して示したノード102のうちの1つ等のノード)として機能し得る例示的な電子装置200をブロック図形式で示す。例示的な電子装置200は、図1に関連して示したブロックチェーン・ネットワーク100等のブロックチェーン・ネットワークにおける、図1に関連して示したノード102のうちの1つ等のノードとして機能し得る。一実施形態では、ブロックチェーン・ネットワークは、ピアツーピア・ブロックチェーン・ネットワークである。
【0051】
図2は、ピアツーピア・ブロックチェーン・ネットワーク100においてノード102として機能し得る例示的な電子装置200のコンポーネントを示すブロック図である。例示的な電子装置200は、処理装置とも呼ばれ得る。電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は別のタイプの形式を含む様々な形態を取ることができる。
【0052】
電子装置200は、プロセッサ210、メモリ220、及びインターフェイス装置230を含む。これらのコンポーネントは、互いに直接的又は間接的に結合してもよく、互いに通信してもよい。例えば、プロセッサ210、メモリ220、及びインターフェイス装置230は、バス240を介して互いに通信することができる。メモリ220は、本明細書で説明する機能を実行するための機械可読命令及びデータを含むコンピュータソフトウェアプログラムを格納する。例えば、メモリは、プロセッサ210によって実行されると、電子装置に本明細書で説明する方法を実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ210によって実行されると、電子装置にブロックチェーン・ネットワーク100に関連するプロトコルを実装させる命令を含み得る。例えば、命令には、ビットコイン・プロトコルを実装するための命令が含まれ得る。
【0053】
メモリ220は、ブロックチェーン・ネットワーク100のグローバル台帳又はその一部を格納してもよい。つまり、メモリ220は、ブロックチェーンの全てのブロック、又は最新のブロック等のブロックの一部、又はいくつかのブロックにおける情報の一部を格納することができる。さらに、ゴーストチェーンが展開されている間に、メモリ220は、ゴーストチェーン又はその一部を格納してもよい。
【0054】
図2では、メモリ220が単一のブロックで示されているが、実際には、電子装置200は、複数のメモリ・コンポーネントを含んでもよい。メモリ・コンポーネントは、例えば、RAM、HDD、SSD、フラッシュドライブ等を含む様々なタイプのものであってもよい。異なるタイプのメモリが異なる目的に適している場合がある。さらに、メモリ220がプロセッサ210とは別に示されているが、プロセッサ210は埋込み型メモリを含んでもよい。
【0055】
図2に示されるように、プロセッサ210は、信頼できる実行環境(TEE)250等の安全な領域を含むことができる。TEE250は、隔離され状態での実行、信頼できるアプリケーションの統合、及び資産の機密性等の追加のセキュリティを電子装置200に提供する隔離された実行環境であり得る。TEE250は、TEE250内にロードされたコンピュータ命令及びデータが機密性及び完全性の観点から保護され得ることを保証する実行空間を提供する。TEE250は、キー等の重要なリソースの完全性及び機密性を保護するために使用され得る。TEE250は、少なくとも部分的にハードウェアレベルで実装されるため、TEE250内で実行される命令及びデータは、電子装置200の残りの部分からの及び電子装置の所有者等の外部関係者からのアクセス及び操作に対して保護され得る。TEE250内のデータ及び計算は、TEE250を含むノード102を操作する関係者からセキュリティ保護され得る。
【0056】
TEE250は、累積的にハッシュしながら、エンクレーブ(enclave:孤立領域)をインスタンス化し、メモリのページを一度に1つずつ追加するように動作し得る。本明細書で使用される場合に、エンクレーブは、外部アクセスから保護されるTEE250内のデータの隔離されたメモリ領域であり得る。特別な命令を使用してアプリケーションコード及びデータをエンクレーブ内に入れることができる。エンクレーブは、通常、ハードウェアセキュリティを使用して外部アクセスから保護される。本明細書で使用される場合に、及び文脈からそうでないことが明確にされない限り、エンクレーブは、TEE250と同じであってもよく、TEE250内でインスタンス化してもよい。
【0057】
エンクレーブをインスタンス化する同様の動作をリモートマシン(開発マシン又は別のマシンであり得る)でも実行することができるので、リモートマシンは、予想されるハッシュを決定して格納する。従って、エンクレーブのコンテンツをリモートマシンで検証して、エンクレーブが承認済みアルゴリズムを実行しているかを確認することができる。この検証は、ハッシュを比較することで行うことができる。エンクレーブが完全に構築されると、そのエンクレーブはロックダウン(locked down)され得る。TEE250でコードを実行し、このコードにシークレット(secrets)を送信することは可能であるが、コードを変更することはできない。最終的なハッシュは、認証キーによって署名され、データ所有者がシークレットをエンクレーブに送信する前に検証するためにデータ所有者がその認証キーを利用できるようにし得る。
【0058】
TEE250は、(図1に関して上述した)コングレス106によって使用されるコングレス公開キーに関連する秘密キーシェア(private key share)の機密性及び完全性を保護するために使用され得る。例えば、TEE250は、秘密キーシェアの生成及び格納に使用され得る。TEE250は、TEE250エンクレーブ内に保持されている秘密キーシェア、又はメンバー間通信又はエンクレーブ間通信から他の秘密キーシェアに関する情報を、メンバーが直接的に取得できないようにすることを目的としている。このプロトコルは、エンクレーブのしきい値の危殆化(compromise)に対しても堅牢であり得る。さらに、TEE250は、ノード102によって使用され得るリモート認証を可能にし、TEE250が、真正であり、且つコングレス106によって実施されるプロトコル用の承認済みのコンピュータ実行可能命令を実行していることを他のノード102に証明することができる。コードの特定の一部を実行し、エンクレーブの内部認証キーで署名された、エンクレーブの内部のコードのハッシュを送信することにより、TEE250によってリモート認証が提供され得る。
【0059】
TEE250は、電子装置200上で秘密キーシェアを以前に使用したコングレス106のメンバーがコングレスを退会することを選択したときに、秘密キーシェアの削除を保証するために使用され得る。電子装置200は、TEE250で提供されるリモート認証プロトコルを介して削除の証明を他のコングレス・メンバーに通知することができる。メンバーが自分のメンバー預託金(deposit)を引き出すことを許可される前に、削除の証明が必要とされ得る。つまり、預託金の返却は、メンバーのエンクレーブ内に保持されている秘密キーシェアの削除の証明を条件とし得る。
【0060】
TEE250は、TEEのエンクレーブの内部にあり得る安全な(secure)乱数発生器を装備することができ、この乱数発生器を使用して、秘密キー、ランダム異議申立て(random challenges)、又は他のランダムデータを生成することができる。TEE250は、外部メモリからデータを読み出すように構成することもでき、且つ外部メモリにデータを書き込むように構成することができる。このようなデータは、エンクレーブ内でのみ保持される秘密キーで暗号化され得る。
【0061】
TEE250は、Trusted Platform Module(TPM)やIntel Software Guard Extensions(SGX)等の様々なプラットフォームを使用して実装することができる。例えば、SGXはリモート認証をサポートし、これにより、エンクレーブが、特定のエンクレーブを実行しているプロセッサからクォート(quote)と呼ばれる所与のメンバーのハッシュを含む署名付きステートメントを取得することができる。Intel Attestation Service(IAS)等の第三者認証サービスは、これらの署名付きステートメントがSGX仕様に準拠した真正のCPUからのものであることを証明し得る。
【0062】
電子装置200は、ブロックチェーン・ネットワーク100(図1)内のノード102(図1)として機能し、コングレス106(図1)に加入し、そうでなければ参加することができる。コングレス106は、デジタル資産所有者のグループが、ブロックチェーン・ネットワーク100によってサポートされるデジタル通貨、トークン、又は他の出資金や対価等のデジタル資産をプールするときに形成され得る。
【0063】
コングレス106は、認可されたグループでも認可されていないグループでもよい。つまり、コングレス106には、ブロックチェーン・ネットワーク100(図1)内の任意のノード102(図1)が(すなわち、ブロックチェーン内の情報の少なくとも一部を監視及び格納する任意のノードが)加入することができる。コングレス106に加入するために、ノード102は、1つ又は複数のデジタル資産をコングレス106に関連するデジタル資産プールに(つまり、1つ又は複数のデジタル資産に関連付けられ、次にコングレスの他のメンバーに関連付けられた公開グループアドレスに)転送する。このデジタル資産プールは、コングレスプールと呼ばれ得る。例えば、ノード102は、そのようなデジタル資産をコングレスプールに関連するアドレス(つまり、公開グループアドレスとも呼ばれ得る「コングレスアドレス」)に転送する(すなわち、預託する)ことにより、コングレス106に加入することができる。デジタル資産は、コングレス公開キーと呼ばれる単一の公開キーを含むグループしきい値署名の管理下に置かれ得る。コングレス・メンバーは、分配的に生成された秘密キーシェアを保持している。保持シェア数は、プールに預託された金額に比例し得る。
【0064】
コングレス106によって管理されるデジタル資産は、コングレスアドレスに転送されるデジタル資産を含み、しきい値署名方式の管理下に置かれ得る。しきい値署名方式では、デジタル資産をコングレス106の管理から外すように転送するのを可能にする有効な署名を生成するためには、秘密キーシェアの合計保有量がしきい値を超えるメンバーのグループが必要であり得る。つまり、少なくともしきい値数の秘密キーシェアを使用して、コングレス106が管理するデジタル資産の支出(outgoing)転送のための有効な署名を生成する必要がある。
【0065】
コングレス公開キーは、秘密キーシェアと引き換えに、コングレス106のメンバーによってコングレスプールに預託されたデジタル資産と、コングレス106のメンバー又は非メンバーによってコングレスプールに関連するアドレスに預託された(つまり、コングレスの完全、部分、又は条件付き管理下に置かれた)(秘密キーシェアの取得以外の理由で預託された)デジタル資産とを制限する(encumber)。非メンバー又はメンバーは、様々な理由でコングレスに関連するアドレスにデジタル資産を預託することができる。
【0066】
同じコングレス公開キーが、メンバー預託金(つまり、秘密キーシェアと引き換えにコングレス・メンバーによって提供されるデジタル資産)と、他の目的でメンバー又は非メンバーによって提供されるデジタル資産との両方を制限する場合があるため、預託金のタイプを示すために、コングレスに関連するアドレスに対する少なくとも一部の預託金に特別なフラグを立てる場合がある。例えば、デジタル資産をコングレスアドレスに転送するトランザクションには、行われている預託金の性質を示すフラグ、識別子、又は他の属性が含まれ得る。例として、コングレスへの加入又はコングレス構成員の出資金を増やす目的で行われていないデジタル資産をコングレスアドレスに転送するトランザクションには、別の目的で預託が行われていることを示す特別な識別子が含まれ得る。そのような識別子は、秘密キー生成を管理するときに、コングレス106に関連するノード102によって使用され得る。より具体的には、グループに加入する目的でデジタル資産を預託するノード102には、コングレス106の秘密キーシェアが(例えば、デジタル資産の預託を行った結果として)割り当てられる一方、他の目的で(例えば、代替チェーン(altchain)に転送するために)デジタル資産を預託した他のノード102は、コングレスのコングレス秘密キーシェア(つまり、コングレス公開キーに対応する)を保持していない可能性がある。
【0067】
コングレス106は、メンバー預託金の全部又は一部を没収するという脅しによって協力的な行動が強制される自治グループとして機能し得る。多くの誠実なメンバーが協力的なプロトコルに参加することにより、非協力的な又は悪意のあるメンバーのそのようなデジタル資産を没収することができる。さらに、コングレス・メンバーがコングレス106から退会したい場合に、メンバーは自分のメンバー預託金を引き出す(つまり、コングレス106がメンバー預託金をそのメンバーの個人アドレスに戻す(返送する)ことを要求する)ことができる。ただし、資金の引出しは、有効なデジタル署名を生成するために必要なしきい値を超える数の秘密キーシェアが、引出しを承認するグループ(つまり、コングレス)のメンバーによって使用される場合にのみ、実行され得る。
【0068】
コングレス106によって実施されるしきい値署名方式は、様々なタイプのものであり得る。しきい値署名方式は、有効な署名の生成に少なくともしきい値数の秘密キーシェアが寄与している限り、n人の関係者の間で署名能力をシェアすることを可能にする。従って、しきい値未満の秘密キーシェアのサブセットを使用して、有効な署名を生成することはできない。より具体的には、各関係者は秘密署名キーのシェアを管理し、部分的な署名を組み合わせて有効な署名を生成するには、しきい値数のキーシェアを使用しなければならない。しきい値未満のキーシェアのサブセットを使用して、部分的な署名を組み合わせて有効な署名を生成することができない。
【0069】
しきい値署名方式は、楕円曲線デジタル署名アルゴリズム(ECDSA)方式であり得る。例えば、ECDSA方式は、Ibrahimらによって、“A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme”, 2003 EIII 46th Midwest Symposium on Circuits and Systems, 1: 276-280 (2003)に提案されたタイプのものであり得る。このしきい値署名方式は、楕円曲線暗号ベースのアルゴリズムであるデジタル署名方式の拡張であり、この方式では、秘密キーを再構築するためにn個のキーシェア保有者から構成される関係者からのt+1個のキーシェアが必要となり得る。この方式を使用して、秘密キーを再構築する必要がなく、且つある関係者が自分のキーシェアを他の関係者に明らかにする必要なく、有効な署名を構築することができる。
【0070】
t+1個のキーシェアがシークレットを再構築するのに十分となり得るため、この手法による許容される敵(adversary)の最大数はtである。Ibrahimらのモデルにおける敵は、シークレットシェアを保持している関係者を買収し、且つそのシークレットシェアにアクセスするエンティティであり得る。敵には様々な種類があり得る。例えば、ビザンチン(Byzantine)の敵は、プロトコルに参加するふりをしているが、実際には不正な情報を送信している敵である。Ibrahimによって提案されたECDSA方式は、最大t<=n/4の悪意のある敵に対して堅牢であり得る。この堅牢性はt<=n/3まで上がる可能性があるが、複雑性のコストが増す。
【0071】
IbrahimらのECDSA方式は、t<=n/3の敵を食い止める(halting)のに堅牢であり得る。敵の食止めによって、買収された関係者がプロトコルに参加するのを阻止するか、途中参加を食い止めることができる。
【0072】
このECDSA方式は、ノード102が悪意のある又は非協力的な関係者を特定するために使用できる様々なメカニズムを含む。例えば、検証可能な秘密分散(VSS:verifiable secret sharing)を使用して、Shamirの秘密分散(SSS)に必要な多項式をシェアすることができる。SSSは、シークレットが複数の部分に分割され、各参加者にそれ自体の固有の部分で提供される秘密分散(シークレットシェア)の形式であり得る。これらの部分は、シークレットを再構築するために使用され得る。一貫性のないシェアが異なるノード102に提供される場合、又は全てのノードにブロードキャストされ、ブラインドシェア(blinded share)とは異なるシェアがノードに秘密裏に送信される場合に、VSSは、ノード102によって悪意のあるノード102又はメンバーを特定するために使用され得る。一貫性のないシェアは、ノード102のいずれか1つによって特定され得る。シークレットのシェア(sharing)は、ノード102がそのシェアを一貫したものとして検証することを可能にする補助情報を含めることによって検証可能になり得る。
【0073】
個々のノードへの誤ったシェア(つまり、ブロードキャストされ、ブラインドシェアとは異なるシェア)の送信は、シェアの受信対象ノードによって識別することができる。ノードに秘密裏に送信される誤ったシェアの識別は、公開される検証可能な秘密分散(PVSS:Publically Verifiable Secret Sharing)の手法を使用して、公開検証可能にし得る。そのような手法は、PVSSが使用されておらず、且つ誤ったシェアの受信者がオフラインであるか、又は誤ったシェアが送信されたときにその受信者がネットワークの実質的な部分から切り離されている場合に発生し得る不正送信者を特定する際の遅延の可能性を回避することができる。
【0074】
異なるノードに一貫性のないシェアを提供する等の不正行為は、悪意のある行為を阻止するためにコングレス106によって対処され得る。例えば、あるノード102(図1)が他のノード102によって悪意のある関係者として特定されると、しきい値(例えば、t+1)を超える数のノード102(つまり、コングレス・メンバーに関連するノード)が協力して悪意のある関係者を罰することができる。例えば、ノード102は、悪意のある関係者によってコングレスに預託されたデジタル資産(デジタル通貨、トークン、又は他の出資金や対価等)に関係して行動をとることができる。例えば、コングレスは、デジタル通貨、トークン、出資金や対価を返却先アドレスに転送して焼却し(burn)、又はコングレスは、悪意のある関係者への返却承認を拒否することにより、そのようなデジタル資産を没収し得る。不正行為を行っているノードではないノード102は、不正行為を行っているノードを排除するように協力することにより(例えば、キーシェアを実質的に無効化することにより、例えば、コングレス・プロトコルへの参加からノードを排除することにより、又は秘密キーを再共有し且つ不正行為を行っているノードにシェアを割り当てないようにすることにより)、不正行為を阻止することもできる。
【0075】
上述したECDSA技術はTEEを使用して強化することができる。例えば、Ibrahimらに基づくしきい値ECDSA署名技術は、ここではビザンチンの敵と呼ばれる強力な敵を想定している。このタイプの敵は、署名プロセスに参加するのを拒否し、且つ関係者に割って入って食い止めるのを拒否するだけでなく、誠実に参加するふりをして不正な情報を送信する等、恣意的に振る舞い得る。ただし、TEEを使用し、シークレット秘密キーシェアが格納されるTEEのエンクレーブ内で署名に使用されるデータを生成することにより、エンクレーブがかなりの数で危険に曝される可能性が非常に低いため、追加のセキュリティを提供してもよい。例えば、各TEEにキーシェアが1つしか割り当てられていない場合に、nが十分に大きいと仮定すると、危険に曝される可能性のあるTEEの数は、ビザンチンの敵に対する堅牢性のしきい値に到達しないことが合理的に予想され得る。これにより、キーシェアの総数に対して、悪意のある敵の僅かな割合に耐性がある場合に、プロトコルを安全にすることができる。
【0076】
例えば、全てのノードにTEEがある場合に、エンクレーブ内に格納されたシークレットの取得は、TEEの製造元が買収されてない限り、ノードへの物理アクセスに多大な労力と費用をかけた場合にのみ達成され得る。このような製造元レベルの買収は管理可能であると予想される。例えば、製造元が複数の公開キーが真正のTEEに対応していると不誠実に主張した場合に、その製造元は、秘密キーシェアに直接的にアクセスして攻撃を開始する可能性がある。ただし、このような攻撃には、製造元が他のノードによる支援なしに有効な署名を作成できるようにするために、相当な数のキーシェアが必要となる。これは、出資総額の大部分を蓄積することを意味し、かなりの費用がかかる。さらに、攻撃を行うことにより、保有している出資金の大部分が破壊されるだろう。
【0077】
TEEを使用する場合に、「不正に関与する(corrupted:買収された)ノード」に対するプロトコルの堅牢性を熟慮することが有用であり得る。不正に関与するノードとは、TEEの外部のハードウェアが不正に関与するが、TEEの完全性が損なわれていないノードのことであり得る。不正に関与するノードは、エンクレーブが受信する情報及び受信しない情報を制御することができる。特に、不正に関与するノードは、プロトコルへの参加をためらう、つまり、控える可能性がある。プロトコルに提供される情報が、エンクレーブにおいて秘密裏に保持された秘密キーによって署名される必要がある場合(認証中に対応する公開キーが認証された場合)に、秘密キーはエンクレーブ自体と同じ位信頼でき得る。こうして、不正に関与するノードは、恣意的な(認証された)情報をプロトコルに送信できず、一時停止し又はエンクレーブを不正に動作するように欺いて、例えば古い情報をエンクレーブに提供する等して干渉のみを試みる可能性がある。従って、不正に関与するノードの場合に、攻撃を成功させるには、完全な署名を生成するために十分な数の部分的な署名を集める必要があることになる。TEEでは、Ibrahimらのプロトコルは、2tの不正に関与するノードに対して堅牢であり得る。n-2t>=2t+1の場合に署名を生成することができるため、サイズ2t+1<=(n+1)/2のキーシェアの有資格サブセットで十分となり得る。従って、TEEを使用する場合に、不正に関与するノードが存在する場合に有効な署名を生成するために、しきい値署名方式のしきい値をキーシェアの50%以上の数になるように設定することができる。
【0078】
他のしきい値署名方式も使用することができる。例えば、しきい値署名方式は、Goldfederらの、“Securing Bitcoin Wallets via a New DSA/EDCSA threshold signature scheme”, (2015)によって提案されたタイプのECDSAしきい値方式であってもよい。このプロトコルにより、t+1の関係者が有効な署名を生成することができる。その結果、敵が有効な署名を生成するために制御(管理)しなければならないキーシェアの数は、敵が秘密キーを再構築するために所有しなければならないキーシェアの数に等しくなる可能性がある。この手法は、有効な署名を生成するために全会一致が必要な場合に効率的な方式を提供することができる。最も一般的なケースでは、この方式は、任意のしきい値に対して、nの中からt+1プレーヤーの可能なサブセットに対してプロトコル全体を繰り返す必要があるため、コングレス・メンバーの数に応じて指数関数的にスケーリングするスペース要件を課す。こうして、nとtとの両方の値が大きい場合に、多数のキーシェアを格納する必要があり得る。このようなストレージ要件を緩和するために、標準のビットコインのマルチ署名をしきい値署名と組み合わせてもよい。特に、複数の署名を使用してデジタル資産をロックすると、各秘密キーがシェアに分割される。この手法は、スペース要件の観点から、より大きなコングレスをより効率的にする。スケーリング特性は、小規模な関係者サイズの中から複数のレベルで多数の参加者向けの方式を反復的に構成することによっても改善され得る。例えば、しきい値署名方式は、Cohenらの、Efficient Multiparty Protocols via Log-Depth Threshold Formulas (2013), Advances in Cryptology - CRYPTO 2013 pp 185-202の手法と組み合わせてもよい。
【0079】
非ECDSA署名方式を含む他のしきい値方式を使用してもよい。例えば、ノード110が、シュノア(Schnorr)方式に基づくしきい値方式を使用して、コングレス106を実施してもよい。
【0080】
ブロックチェーン・ネットワーク内のノードは、選択されたしきい値署名方式に基づいてコングレス・プロトコルを実装することができる。そのようなノードは、コングレス・プロトコルを実装する、図2に関して説明したメモリ220等のメモリに格納されたコンピュータ実行可能命令を含み得る。そのような命令は、図2に関して説明したプロセッサ210等のプロセッサによって実行されると、図2に関して説明したタイプの電子装置200等のノード102にコングレス・プロトコルの1つ又は複数の方法を実行させる。そのような方法は、本明細書で説明する例示的なプロセスのいずれか1つ又は組合せを含み得る。こうして、コングレス・プロトコルは、本明細書で説明するような例示的なプロセスの1つ又は複数を含み得る。例示的なプロセスは、ノードが他のコングレス・メンバーに関連する他のノードと協力して実行してもよい。
【0081】
図3は、図1に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスク要求を生成し、解を提案し得る例示的な環境300をブロック図形式で示す。図3に示される例示的な環境300では、タスク304を有する要求者(requester)302は、タスク304及びタスク304を完了するために提案される分配金(distribution)306を含む要求310を開始する(308)。タスク304は、解くためにある量の計算能力を必要とする、いくつかの問題を解くためのタスクであり得る。実施例では、タスク304は、特定の数が因数分解可能であるかどうかを決定するタスクであり、その場合に、その数の因数が何であるかを決定するタスクである。タスクの他の例は、問題の最適解を決定するタスク、特定の予め規定されたしきい値内の解を決定するタスク、又は他のそのようなタスクであり得る。タスク304は、単一の計算集約的なタスクであってもよく、又は個別に計算集約的ではないが、全体として解くために多大な計算力を必要とし得る多数のタスクの組合せであってもよい。
【0082】
提案される分配金306は、エンティティを引き付けてタスクに対する解を決定する(つまり、エンティティを引き付けて、解を決定するのに十分な計算能力を消費する)のに十分な量のデジタル資産であり得る。考えられるように、提案される分配金306が低過ぎる場合に、要求者に提供される解は殆どない(又はまったくない)、及び/又は解は低品質である可能性がある。反対に、提案される分配金306が不当に高い場合に、要求者に提供される解が多くなり過ぎる可能性があり、多数の解が回答に対する信頼性を高める一方で、過度に多数の解によって処理が困難になる場合がある。
【0083】
図3に示される例示的な環境300では、要求310は、複数のそのような要求316を含み得る計算タスク分散システム314に投稿(post)され得る。一実施形態では、計算タスク分散システムは、図1及び図2に関連して説明したようなブロックチェーン・ネットワーク(例えば、ビットコイン)に関連付けられ、且つ要求者が本明細書で説明するように解に関する要求を投稿するWebページとして実装される。そのような実施形態では、計算タスク分散システム314は、例えば、解に関する要求を投稿し、そのような要求に応じて提案側文字列の通知を投稿し、及び/又は提案側文字列に対する異議申立ての通知の投稿するために使用可能な1つ又は複数のウェブサービス及び/又は1つ又は複数のアプリケーション・プログラミング・インターフェイス(API)を含むことができる。そのような実施形態では、ブロックチェーン・ネットワークを使用して、関係者が、トラストレスな環境で解を要求し、解を提供し、解に異議申し立てできるようにする(つまり、中央集権的な関係者がいない環境で、トランザクションの完全性を保証し、トランザクションの完全性はブロックチェーン・ネットワークを使用して実現される)。
【0084】
一実施形態では、ブロックチェーン・ネットワークは、追加専用(append-only)の公開掲示板として機能する(つまり、通知を掲示板から削除することはできず、追加することしかできない)。これは、ブロックチェーンのブロックが確認されると、ブロックチェーン・ネットワークの全てのノードがブロックに含まれる情報を見ることができ、ブロック内の全ての情報の部分にタイムスタンプが付けられ、不変であるためである。ブロックチェーン・ネットワークを使用して、本明細書で説明するように解を要求し、解を提供し、解に異議を申し立てることにより、関係者は、要求、解、異議申立てが不変であることを保証できる。一実施形態では、計算タスク分散システム314は、計算タスク分散システム314に、解に関する要求を投稿し、そのような要求に応じて提案側文字列の通知を投稿し、及び/又は提案側文字列に対する異議申立ての通知を投稿する(例えば、要求310等の要求を広告する)ことにブロックチェーン・ネットワークを必要としないことに留意されたい。
【0085】
一実施形態では、計算タスク分散システム314は、図1及び図2に関連して説明したネットワーク等のブロックチェーン・ネットワーク(例えば、ビットコイン)上で実装される。そのような実施形態では、要求310は、以下で詳細に説明するように、トランザクションとして計算タスク分散システム314のブロックチェーン・ネットワークにマイニングされる。そのような実施形態では、要求者302は、ブロックチェーン・ネットワークのノードとして動作し得る。
【0086】
ブロックチェーン・ネットワークが関連付けられているブロックチェーン・ネットワークのノードとしても動作する、又は計算タスク分散システム314が実装されているノードとしても動作する提案者318は、計算タスク分散システム314を監視し(320)、提案者が、提案者318にとって、計算能力を消費して関連タスクを解くことに関心を起こさせるのに十分であるとみなされる分配金を含む要求を識別することができる。図3に示される例では、提案者は、提案者にとって、タスク304(本明細書では「提案側文字列」と呼ぶ)に対する解を生成することに関心を起こさせるのに十分な提案される分配金306を含むように要求310を特定した。明示的に述べられないか、文脈によって明確にされない限り、提案者からの提案される解は、提案側文字列(本明細書では単に「解」とも呼ばれ得る)であるため、例えば提案者から提案される解(例えば、提案側文字列)は、「提案された提案側解」又は「提案された提案側文字列」ではなく、単に「提案される解」又は「提案側文字列」と呼ばれ得ることに留意されたい。
【0087】
図3に示されないが、提案者318は、提案される分配金を請求することを期待して、解を提案する複数の提案者のうちの1人であり得る。例えば、1つのタスク(つまり、1つの要求)で、数十、数百、数千、又はそれ以上の提案側文字列が生成され得る。一実施形態では、解は、解に関連するタイムスタンプに少なくとも部分的に基づいて、複数の提案者から選択される。例えば、一実施形態では、(そのタイムスタンプが)最初に受信した解であるため(つまり、その解に関連するタイムスタンプが他の提案者の他の解のタイムスタンプよりも早いため)、その解が選択され得る。
【0088】
提案者318が提案側文字列322を生成できる(つまり、一実施形態では、ブロックチェーン・ネットワークの外部の計算を使用して)場合に、提案者318は、提案側文字列322のハッシュ332を使用して提案側文字列へのコミットを生成し、解に署名する秘密キー324を生成し、(提案側文字列322のハッシュ332を含む)提案側文字列330及び(秘密キー324に対応する)公開キー334へのコミットを生成し(328)、それによって提案側文字列330へのコミットは、要求者302に安全に送信され得る(336)。本明細書で使用される場合に、提案側文字列は、提案者によって生成され要求者に送信されるデータの一部であり得、提案者が断言する提案側文字列が、要求される計算タスクの出力である。同様に、本明細書で使用される場合に、異議申立側文字列は、異議申立者によって生成され、異議申立て期間内にコングレスに利用可能になる(以下で説明する)データの一部であり得、異議申立者が断言する異議申立側文字列が、要求される計算タスクの出力であり、提案側文字列とは異なる(つまり、別の解を提示する)。
【0089】
本明細書で使用される場合に、解は、実施形態に応じて、いくつかの異なる項目のうちの1つであり得る。一実施形態では、解は、異議申立て期間を生き延びた提案側文字列である。一実施形態では、解は、提案側文字列又は、対応する文字列が本明細書で説明するように解に対する異議申立てによってトリガーされたオンチェーン計算と一致する異議申立側文字列のいずれかである。また、本明細書で使用される場合に、提案される解は、提案側文字列(提案者によって提供される場合)又は異議申立側文字列(提案側文字列に応じて異議申立者によって提供される場合)のいずれかであり得る。また、本明細書で使用される場合に、解へのコミットは、(上述したように)解のハッシュであってもよい。解へのコミットは、要求者に提供された提案側文字列のハッシュである提案側文字列へのコミットとは対照的に、及びコングレスに提供された異議申立側文字列のハッシュである異議申立側文字列へのコミットとは対照的に、使用され得る。
【0090】
提案側文字列322のハッシュ332を使用する提案側文字列へのコミットは、本明細書では、例えば、提案側文字列330へのコミットにおけるハッシュ332等、単に「ハッシュ」と呼ばれ得ることに留意されたい。一実施形態では、提案側文字列330へのコミットは、(本明細書で説明するように)ブロックチェーン・ネットワーク上のトランザクションとして送信してもよい。本明細書で使用される場合に、提案側文字列へのコミットには、提案される解(例えば、提案側文字列322)が含まれる。
【0091】
解コミットメント330は提案側文字列322を含まず、提案側文字列322のハッシュ332のみを含むため、提案者が実際にタスクに対する解を有していることを要求者302に保証できることに留意されたい。一実施形態では、コミットを提案側文字列330に送信する目的は、(例えば、解として)後で購入される文字列が、異議申立て期間を過ぎた文字列と同じであり(以下で説明する)、従ってタスクに対する解であることを要求者に保証できるようにすることである。要求者は、ハッシュ値を比較することでこの文字列を検証できる。しかしながら、提案側文字列322(つまり、提案側文字列へのコミットのハッシュ原像(pre-image))は、ブロックチェーン・ネットワークに後でマイニングされ得るため、提案者318は、解が要求者302に提供されるときに、提案される分配金(すなわち、要求者によって提供された報奨金)を徴収することができる。ブロックチェーン・ネットワーク上のトランザクションを使用することで、両方とも本明細書で説明するように、要求者は、提案される分配金306を失うことなく解にアクセスできず、提案者は、提案側文字列322が検証されるまで、提案される分配金を請求することができない。それに応じて、一実施形態では、提案者は、提案側文字列322のハッシュ332を含む預託金326を提供し、この預託金326は、(以下で述べるように)異議申立ての場合に解を検証するのに十分であり、異議申立てがない場合に提案者に返却される。
【0092】
ブロックチェーン・ネットワークが、分配のための解の公正な交換を可能にしながら、中央の「エスクロー(escrow)」エージェントを必要とせずに、互いに信頼されていない関係者同士の間のトランザクションを促進するので、ブロックチェーン・ネットワーク上での計算タスク分散システム314の実装によって、要求者302の側の不誠実な行為(例えば、有効な解を受け入れないことにより、有効な解を認識しないことを決定する、又は解を受け取ったら解の分配金を提供するように決定する)と、提案者の側による不誠実な行為(例えば、検証していない(つまり、判定に合格していない)解を提案する又は分配金を受け取ったときに解を提供しない)とが、防止される。タスク304に対する有効な提案側文字列322が提案者318によって提示される場合(本明細書で説明するように、異議申立てを除く)に、提案される分配金306は、要求者302によって分配してもよい。
【0093】
図3に示されていないが、有効な解なしに分配金が分配される場合の1つの例がある。タスク304が有効な解のないタスクである場合に、「解なし」が唯一の有効な解であり得る。例えば、タスクが数値51の素因数分解を決定しなければならない場合に、解は3及び17(つまり、乗算すると51に等しい2つの素数)である。しかしながら、タスクが正確に2つの因数で数値52の素因数分解を決定しなければないない場合に、解はない(2、2、及び13は解になり得るが、タスクに応じた有効な解ではない)。これらは単純なタスクかもしれないが、これらは、分配金を取得しながら提案者が解がないことをどの様に示すことができるかという問題を示している。かなり難しいタスクの場合に、解がないと決定するにはかなりの計算能力が必要になる場合がある。
【0094】
考えられるように、提案者が「解なし」のハッシュを提供することで「解なし」を示す場合に、要求者は、ハッシュを容易に認識し、解を単に無視することができる(つまり、要求者が解を「知る」ためにトランザクションを完了する必要がないため、トランザクションを完了しなくてもよい)。要求者がこのハッシュを容易に認識できるため、要求者は提案者から結果を購入する理由が存在しない場合がある。
【0095】
このケースに対処するための1つの方法は、適切なフラグ(例えば、「解なし」の言葉)を他の情報の一部と連結することを提案者に要求することであり得る。今説明した状況を回避するために、情報は、計算を実行した(及び、解がないことを見つけた)人だけがアクセスできる何らかの情報にすることができる。一実施形態では、提案者は、解なしの状態を生じさせる計算のトランスクリプトの少なくとも一部を使用する。ハッシュ原像(例えば、解)がブロックチェーンにマイニングされ、提案者が報奨金を徴収するため、トランスクリプトの一部は、トランスクリプト全体が非常に大きい場合に使用され得る。こうして、提案者は、事前ハッシュ(pre-hash)解として合意された式に従って選択されたトランスクリプトのスパース(sparse)サンプルを使用できる。このサンプルは、解なしを見つけたことを示すフラグと連結され、ハッシュされ、要求者に送信され得る。テキストフラグなしでトランスクリプトのサンプルを送信することは、計算に対する解と間違われる可能性があるため、効果的ではないことに留意されたい。
【0096】
図4は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスク要求及び提案される解に関連するブロックチェーン・トランザクションを生成できる例示的な環境400をブロック図形式で示す。図4に示される例示的な環境400では、要求者402は、入力として提案される分配金(「B」)及びその出力として提案される分配金プラス提案者の預託金(「D」)を有する第1のトランザクション406を提供する(404)。出力は、異議申立て期間(つまり、本明細書で説明するように、他のノードが提案者の解に異議申立てできる期間)の後に提案者によって請求することができる。
【0097】
第1のトランザクション406は、提案者410に提供され(408)、提案者410が預託金(「D」)を入力に追加して最終的な第1のトランザクション414を生成する(412)ことができ、この最終的な第1のトランザクション414が、計算タスク分散システムのブロックチェーン418(つまり、計算タスク分散システムが関連付けられているブロックチェーン・ネットワークのブロックチェーン、又は計算タスク分散システムが実装されるブロックチェーン・ネットワークのブロックチェーン)に送信され得る(416)。要求者402が第1のトランザクション406を提供する(404)場合の、第1のトランザクション406が提案者410に提供される(408)場合の、及び提案者410が預託金を入力に追加して最終的な第1のトランザクション414を生成する(412)場合のトランザクションは全て、本明細書で説明するように、ブロックチェーン418のブロックチェーン・トランザクションを使用して(例えば、ビットコイン・ブロックチェーン上で)実行してもよい。
【0098】
図5は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解に対する異議申立てに関連するブロックチェーン・トランザクションを生成できる例示的な環境500をブロック図形式で示す。図5に示される例示的な環境500では、異議申立者502は、異議申立て期間の終了前に(本明細書で説明するように)提案者によって提供される解に異議を申し立てる。
【0099】
図5に示される例では、異議申立者502は、解に異議を申し立てる意図をブロードキャストする(508)(つまり、異議を申し立てる意図を示すブロックチェーン・トランザクションを生成することによりブロードキャストする)。異議を申し立てる意図は、一実施形態では、異議申立てに回答する努力を相殺するのに十分な預託金506を含む。一実施形態では、(本明細書で説明する)提案者の預託金と異議申立者の預託金506とは同額である。一実施形態では、異議申立者は代替解504のハッシュも含む。異議申立者によって生成された代替解504は、本明細書では「異議申立側文字列」と呼ばれ得る。ただし、提案側文字列の場合と同様に、明示的に述べられないか、文脈によって明確にされない限り、異議申立者から提案される解(単に「解」と呼ば得る)は異議申立側文字列であり、例えば、異議申立者から提案される解(例えば、異議申立側文字列)は、「提案された異議申立側解」又は「提案された異議申立側文字列」ではなく、単に「提案される解」又は「異議申立側文字列」と呼ばれ得る。一実施形態では、異議申立者502が預託金506を提供する場合に、異議申立者502は、代替解504のハッシュなしで、提案される解に異議を申し立てることができる。
【0100】
一実施形態では、異議申立てに応じて、入力として以前のトランザクション(要求トランザクション)の出力(「B+D」)と、出力として以前の分配金プラス提案者の預託金及び異議申立者の預託金(「B+D+D」)とを含むトランザクション514を、コングレス510によって生成する(512)ことができる。第1のトランザクションと同様に、第2のトランザクションが異議申立者502に提供され(516)、異議申立者が異議申立者の預託金506を入力に追加して、更新されたトランザクション520を生成する(518)ことができ、この更新されたトランザクション520がブロックチェーン524にマイニングされ得る(522)。上述したように、図5に示される各トランザクションは、ブロックチェーンを使用して実行できる。図5に示されていないが、異議申立者502は、複数の異議申立者のうちの1人であり得る(つまり、各提案側文字列は、数十、数百、数千、又はそれ以上の異議申立側文字列も生成し得る)。
【0101】
図6は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解への異議申立てが解決され得る例示的な環境600をブロック図形式で示す。図6に示される例示的な環境600では、コングレス602は、ブロックチェーン606のソースブロック608内の情報から始まるゴーストチェーン604(本明細書で説明する)をインスタンスする。ソースブロック608は、本明細書では、異議申立てが生じたブロック(例えば、ブロック図18に関連して説明する異議申立て1806のブロック)とも呼ばれ得る。本明細書で説明する方法を使用してゴーストチェーンによって異議申立てが解決された後に、コングレス602は、本明細書で説明するように、提案される分配金(「B」)プラス預託金(「D」)を1人又は複数人の関係者に分配するための1つ又は複数のトランザクション612を作成する(610)。次に、1つ又は複数のトランザクション612を、現在のブロック616でブロックチェーン606にマイニングすることができる(614)。
【0102】
提案される分配金(「B」)プラス追加の預託金(「D」)を1人又は複数人の関係者に送金するための1つ又は複数のトランザクション612をどの様に作成するかの第1の例では、提案される解がない場合に、異議申立てを判定するためにインスタンス化されたゴーストチェーンがないため、要求者は、元のトランザクション(「B」)のUTXOを再利用できる。一実施形態では、提案される解がない場合に、預託金はなく、報奨金(「B」)は、決して提案側文字列の入力に追加されない。
【0103】
提案される分配金(「B」)プラス追加の預託金(「D」)を1人又は複数人の関係者に送金するための1つ又は複数のトランザクション612をどの様に作成するかの第2の例では、提案される解があるが、異議申立者がない場合に、異議申立てを判定するためにインスタンス化されるゴーストチェーンもない場合がある。従って、提案者は、解が要求者によって受け入れられ、提案者も提案者の預託金(「D」)の回収をできる場合に、元のトランザクションのUTXO(「B」)を請求することができ、解を検証するためのコストを削減する。一実施形態では、異議申立てがない場合に、解を検証するために使用されるコストはゼロであり、解が要求者によって受け入れられ、提案者も提案者の預託金(「D」)全体を回収できる場合に、提案者は、元のトランザクションのUTXO(「B」)を請求することができる。逆に、解が要求者によって受け入れられず、提案者が提案者の預託金(「D」)を回収できる場合に、要求者は、元のトランザクションのUTXO(「B」)を請求することができる。一実施形態では、提案者は、上述したように、資金を請求するために使用される解のハッシュが解コミットメントの解のハッシュと同じであれば、異議申立て期間後に解を用いて資金を請求することができる。
【0104】
一実施形態では、提案者は、上述したように、解に異議を申し立てることにより(つまり、提案された提案側文字列に対する異議申立者として機能することにより)提案された解を拒否することができる。
【0105】
提案される分配金(「B」)プラス追加の預託金(「D」)を1人又は複数人の関係者に送金するための1つ又は複数のトランザクション612をどの様に作成するかの第3の例では、1人の異議申立者がいて、異議申立てを判定するためにゴーストチェーン604がインスタンス化されている場合であって、提案者が異議申立てに「勝った」場合に、提案者は、元のトランザクションのUTXO(「B」)を請求することができ、提案者は、解を検証するための費用を差し引いた提案者の預託金(「D」)も回収することができ、異議申立者は、解に異議を申し立てるための費用を差し引いた異議申立者の預託金(「D」)を回収することができる。逆に、異議申立者が異議申立てに「勝った」場合に、異議申立者は、元のトランザクションのUTXO(「B」)を請求することができ、提案者は、解を検証するための費用を差し引いた提案者の預託金(「D」)を回収することができ、異議申立者は、解に異議を申し立てるための費用を差し引いた異議申立者の預託金(「D」)を回収することができる。一実施形態では、異議申立ての敗者(例えば、提案者又は異議申立者)は、異議申立ての全費用を送金する。一実施形態では、異議申立ての両当事者(例えば、提案者及び異議申立者)は、異議申立ての費用を均等に折半する。一実施形態では、異議申立ての両当事者(例えば、提案者及び異議申立者)は、同様に検証の費用を均等に折半する。考えられるように、提案される分配金(「B」)プラス追加の預託金(「D」)を1人又は複数人の関係者に送金するための1つ又は複数のトランザクション612をどの様に作成するかの例は、単なる例示であり、かくして、提案される分配金(「B」)プラス追加の預託金(「D」)を1人又は複数人の関係者に送金するための1つ又は複数のトランザクション612をどの様に作成するかに関する他の例は、本開示の範囲内であるとみなされ得る。
【0106】
仲裁手順を使用して、ゴーストチェーンで実行すべき計算の長さを大幅に削減できる可能性があることに留意されたい。一実施形態では、計算全体を再実行する必要なしに仲裁を実施することができる。そのような実施形態では、仲裁プロトコルは、提案者及び異議申立者が、自分の最終回答に至った計算の中間結果を提供することを必要とする。計算の入力は同じ(要求者によって投稿されたもの)であり、且つ出力は異なる(提案者及び異議申立者が異なる回答に達した)ため、提案者及び異議申立者の計算が分岐する2つの中間値の間に少なくとも1つの移行があるはずである。このような「移行点」は、2つの値のリスト(つまり、2つの値のリストの間の違い)に対してバイナリサーチを使用して識別することができる。このサーチを行うために必要な操作の数は、2つのリストの長さの2を底とする対数(つまり、log)のオーダーである。例えば、2つのリストの計算に1024個の要素がある場合に、移行のサーチを行うために必要な操作の数は、ln1024、つまり10である。
【0107】
2つの計算が分岐する中間ステップが決定されると(つまり、移行点が見つかった場合に)、ゴーストチェーンを使用してその単一の移行を再計算し、2つの提案の間で仲裁することができる。計算をオンチェーン(on-chain)(例えば、メインチェーン)で再実行することによる仲裁とは異なり、本明細書で説明するようなバイナリサーチ手法は、一方の関係者を不正確なものとして排除できるが、他方の関係者の正当性を確認できない場合があることに留意されたい。従って、一実施形態では、バイナリサーチによって排除されなかった関係者の解は、別の異議申立て期間の対象になる可能性がある。
【0108】
図7は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、提案される解に対する異議申立てが受け取られなかった場合の例示的な環境700をブロック図形式で示す。図7に示される例示的な環境700では、提案者702は、ブロックチェーン714から生成されたトランザクション712で提案される分配金708(「B」)及び提案者の預託金710(「D」)を含む分配706を受け取る(704)。一実施形態では、分配706は、提案者702の解を検証するために使用された費用を差し引いた提案される分配金708(「B」)及び提案者の預託金710(「D」)を含む。一実施形態では、異議申立てがなかった場合に、提案者702の解を検証するために使用された費用はゼロであり、分配706は、提案される分配金708(「B」)及び全ての提案者の預託金710(「D」)を含む。
【0109】
図8は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800をフローチャート形式で示す。ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図8に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800を実行し得る。
【0110】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ802において、要求者は、本明細書で説明する解の関連する分配金を含むタスクの完了を要求する。
【0111】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ804において、提案者は、公開キー及び提案した解のハッシュを用いて要求者に連絡する。図8に示されていないが、ステップ804の前に、提案者は、本明細書で説明するようにタスクを受け取り、関連する分配金が十分であると判断し、解を生成し、解のハッシュを全て生成した。一実施形態では、提案者は、二次セキュア・チャネルを使用して、公開キー及び提案した解のハッシュを用いて要求者に連絡する。一実施形態では、提案者は、計算タスク分散システムを実装するブロックチェーンを使用して、公開キー及び提案した解のハッシュを用いて要求者に連絡する。一実施形態では、複数の提案者が解を有して存在する。
【0112】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ806において、要求者は、入力として関連する分配金及び出力として関連する分配金プラス預託金を含む第1のトランザクションを構築し、この第1のトランザクションは、異議申立て期間後に提案者によって、又は本明細書で説明するようにコングレスによっていつでもロック解除できる。
【0113】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ808において、要求者は、本明細書で説明するように、提案者が提案者の預託金をトランザクションの入力に追加できるように、第1のトランザクションを提案者に送信し、こうして、提案者がタスクに投資する機会を与える。提案者によって預託金をトランザクションに追加させることにより、提案者が、要求者を誤った解であふれさせる(flooding)ことを抑制できる。
【0114】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ810において、提案者は、入力としての自分の預託金を第1のトランザクションに追加し、且つ本明細書で説明するように、第1のトランザクションをブロックチェーンにブロードキャストする。
【0115】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ812において、異議申立てを受けたかどうかが判定され得る。一実施形態では、本明細書で説明するように、別のノード(例えば、異議申立者)から異議申立てを受ける場合がある。一実施形態では、異議申立ては、上述したように、トランザクションをブロックチェーンにマイニングすることにより異議申立者によって発生し、こうして、要求者及び提案者を含むブロックチェーン内のノードによって受信される。一実施形態では、提案される解毎に複数の異議申立てが受け取られる。一実施形態では、計算タスク分散システムは、タスクがリスト化され、提案される解の通知が掲示され、且つそれらの提案される解に対する異議申立てが掲示されるオフチェーンシステム(例えばウェブサービス)である。そのような実施形態では、計算タスク分散システムに関連するブロックチェーンは、解を提供し、解の分配金を提供し、且つ(例えば、ゴーストチェーンを介して)異議申立てを管理するために使用される。
【0116】
ステップ812において異議申立てを受け取ったと判定された場合に、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800は、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ902で継続する。
【0117】
ステップ812において異議申立てを受け取ったと判定されない場合に、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ814において、異議申立て期間が終了したかどうかが判定され得る。一実施形態では、異議申立て期間は要求者によって設定される。一実施形態では、異議申立て期間は、計算タスク分散システムによって設定される。一実施形態では、異議申立て期間は、いくつかのブロックをマイニングするのに必要な期間に少なくとも部分的に基づいて決定される。例えば、ブロックチェーン・ネットワークは、10分毎に1回の割合でマイニングされ得る(例えば、ビットコインネットワーク)。そのような例では、異議申立て期間は、288ブロックをマイニングするのに必要な時間(例えば、48時間、つまり約2日間に対して1時間に6ブロック)に基づく場合がある。
【0118】
ステップ814において、異議申立て期間が終了したと判定されない場合に、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800は、ステップ812において、異議申立てを受け取ったかどうかの判定を継続して行う。
【0119】
ステップ814において、異議申立て期間が終了したと判定された場合に、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第1の部分800のステップ816において、提案者は、本明細書で説明するように、報奨金に加えて、異議申立てされていない実際の解に対する提案者の預託金を請求する。
【0120】
図8に示される例示的なプロセスの第1の部分800で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0121】
図9は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900をフローチャート形式で示す。ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図9に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900を実行し得る。
【0122】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ902において、本明細書で説明するように、異議申立てが受け取られ得る。
【0123】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ904において、コングレスは、入力として関連する分配金プラス預託金、及び出力として関連する分配金プラス2倍の預託金を含む第2のトランザクションを構築し、この第2のトランザクションは、コングレスによっていつでもロック解除できる。ステップ904において、関連する分配金は、提案者からの預託金と異議申立者からの預託金との両方を含むため、2倍の預託金を含む。ただし、ステップ904において、異議申立者からの預託金は、未だトランザクションの入力に追加されていない。
【0124】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ906において、コングレスは、本明細書で説明するように、異議申立者の預託金をトランザクションの入力に追加できるように、第2のトランザクションを預託者(例えば、異議申立者)に送信する。
【0125】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ908において、預託者は、入力としての第2の預託金を第2のトランザクションに追加し、且つ本明細書で説明するように、第2のトランザクションをブロックチェーンにブロードキャストする。
【0126】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ910において、コングレスは、本明細書で説明する方法を使用して異議申立てを解決するためにゴーストチェーンを作成する。
【0127】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ912において、コングレスは、異議申立てを解決し、且つ異議申立ての解決に従って(つまり、1つ又は複数の提案側文字列及び/又は1つ又は複数の異議申立側文字列から)実際の解を与える。ステップ912において、コングレスは、本明細書で説明するように、ゴーストチェーンを使用して異議申立てを解決する。一実施形態では、コングレスは、オンチェーン計算方法を使用して異議申立てを解決する。一実施形態では、コングレスは、本明細書で説明するように、バイナリサーチ技術を使用して異議申立てを解決する。
【0128】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ914において、コングレスは、本明細書で説明するように、解決及び解決費用に従って、1つ又は複数のトランザクションを用いて第2のトランザクションの出力を分配する。
【0129】
ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスの第2の部分900のステップ916において、コングレスはゴーストチェーンを終了させる。一実施形態では、終了したゴーストチェーン(例えば、ゴーストチェーンの末端ブロック)は、本明細書で説明するように、続いて起こるゴーストチェーンの開始ブロックとして使用される。
【0130】
一実施形態では、提案側文字列及び異議申立側文字列を含む解のセットに1つ又は複数の解がある。一実施形態では、図8及び図9に関連して説明したブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスは、第1のブロックチェーン・ネットワークを使用して、第1のブロックチェーン・ネットワークに提供される解のセットから1つの解を少なくとも選択することにより異議申立てを解決することを含み、解のセットは提案側文字列を少なくとも含む。一実施形態では、解のセットから1つの解を選択することは、1つ又は複数の選択基準に少なくとも部分的に基づいて、正しい解を選択することを含む。一実施形態では、解のセットから1つの解を選択することは、1つ又は複数の選択基準に少なくとも部分的に基づいて、1つ又は複数の誤った解を除外することを含む。一実施形態では、バイナリサーチアルゴリズム等のアルゴリズムを使用して、解のセットから1つの解が選択されるまで、1つ又は複数の誤った解を除外する。
【0131】
複数の解が同じハッシュで受信される実施形態(例えば、各提案側文字列が同じハッシュ値を有する場合)において、図8及び図9に関連して説明したブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する提案される解及び異議申立てを解決するための例示的なプロセスは、提案側文字列に関連するタイムスタンプに少なくとも部分的に基づいて、解のセットから1つの解を選択することを含む(つまり、タイムスタンプを使用して、同じハッシュ値を有する複数の解から1つの解を選択することができ、例えば、最初に受け取った解を選択してもよい)。
【0132】
図9に示される例示的なプロセスの第2の部分900で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0133】
図10は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスを開始するための例示的なプロセス1000をフローチャート形式で示す。例示的なプロセス1000は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図10に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスを開始するための例示的なプロセス1000を実行することができる。一実施形態では、プロセス1000は、コングレスを設定するために最初に信頼された関係者によって実行される。
【0134】
プロセス1000は、ステップ1002において、コングレス公開キーを提供することを含む。コングレス公開キーは、他のノードがコングレスに加入したい場合に、他のノードがコングレス公開キーに預託することを可能にするために他のノードに提供され得る。つまり、他のノードは、コングレスに加入するために、コングレス公開キーに関連するアドレスにトークンを転送し得る。
【0135】
ステップ1004において、プロセス100を実行するノードは、1つ又は複数の条件が満たされるまで公開キーへの分配を許可してもよい。例えば、ノードは、決められた期間に亘って又は決められた数のブロックに、公開キーへの分配を許可してもよい。条件が満たされた後(例えば、この期間の終了後又はその数のブロックのマイニング後)に、ステップ1006において、プロセス1000を実行するノードは、コングレスの初期メンバーを特定する。
【0136】
コングレスの初期構成員を構成する関係者が特定された後に、ステップ1008において、秘密キーが、しきい値署名方式に従って秘密キーシェアに分割され得る。次に、ステップ1010において、秘密キーシェアは、プロセス1000を実行するノードから特定された関係者に分配され得る。秘密キーシェアは、本明細書で説明するタイプのものであるしきい値署名方式に関連付けられ得る。
【0137】
ステップ1010の間に、コングレス・メンバーとして特定されたノードは、協力して、新しい秘密キーシェア及び新しい公開キーを生成する。最初に信頼された関係者によってそのようなノードに送信された元のキーシェアは、コングレスプール内の全てのデジタル資産を新しい公開キーに送信するトランザクションに署名してブロードキャストするために使用でき、次に、その新しい公開キーは、コングレス公開キーとなる。つまり、ステップ1010の間に、新しいグループ公開アドレスが確立され、コングレスの管理下にあるデジタル資産をこの新しいアドレスに転送でき、この新しいグループ公開アドレスが、グループの新しいアドレスになり、且つコングレス公開キーに関連付けられる。この転送が確認された後に、コングレスはトラストレスな運営が可能になる。新しいグループ公開アドレスは、将来、コングレスに加入したい他のノードから、又は上述したような他の目的のために、デジタル資産の預託金を受け取るために形成してもよい。ここで、コングレスは、ゴングレスに登録されたとみなされるようになり、これらのノードは最初に信頼された関係者の支援なしに動作できるようになる。さらに、最初に信頼された関係者は、もはやコングレスの運営に関与しない。
【0138】
図10に示される例示的なプロセス1000で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0139】
図11は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスに加入するための例示的なプロセス1100をフローチャート形式で示す。例示的なプロセス1100は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図11に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、コングレスに加入するための例示的なプロセス1100を実行し得る。
【0140】
図11に示される例示的なプロセス1100は、図10に関連して説明した例示的なプロセス1000と連動して動作し得る。一実施形態では、例示的なプロセス1100は、(例示的なプロセス1000を実行するノードが動作する)同じブロックチェーン・ネットワーク100(図1)で動作するノード(例えば、ノード102等のノード)のうちの異なるノードによって実行される。ステップ1102において、例示的なプロセス1100は、コングレス公開キーを取得することを含む。コングレス公開キーは、図10の例示的なプロセス1000を実行するノード等の、コングレスを開始する関係者から直接取得してもよく、又は、例えば、ブロックチェーン・ネットワークの外部で動作する第三者システムを含む第三者から取得してもよい。例えば、コングレス公開キーは、公衆インターネットを介してアクセス可能な公開Webサーバから取得してもよい。
【0141】
ステップ1104において、例示的なプロセス1100を実行するノードは、デジタル資産のトランザクションをノードに関連するプライベートアカウントからコングレスアドレス(すなわち、コングレス公開キーに関連するアドレス)にブロードキャストすることにより、コングレス公開キーに預託を行う。より具体的には、ノードは、コングレス公開キーに関連する公開グループアドレスに1つ又は複数のデジタル資産を転送するトランザクションをブロードキャストすることができる。公開グループアドレスは、コングレスプールのアドレスである場合がある。コングレスプールには、コングレスの他のメンバーに関連する他のデジタル資産が含まれる。こうして、ステップ1104において、トランザクションがマイナー(例えば、図1に関連して説明したマイニングノード104)によってブロックに追加されると、トランザクションは、他のメンバーからのデジタル資産を含むデジタル資産をコングレスプールに転送する。公開グループアドレスは、コングレスに加入したい関係者からの転送と、コングレスに加入したくない関係者からの転送との両方を受信する場合がある。コングレスに加入したくない関係者は、デジタル資産をコングレスプールに転送し、そのようなデジタル資産は、コングレスが使用するしきい値署名方式を使用して、コングレスによる全体的、部分的、又は条件付き管理下に置かれ得る。
【0142】
ステップ1104において、トランザクションは、デジタル資産を転送する関係者がコングレスに加入することを望み、そのような目的のために預託が行われていることを示すフラグ、識別子又は他の属性を含み得る。
【0143】
デジタル資産をコングレスプールに預託した後に、ステップ1106において、例示的なプロセス1100を実行するノードは、秘密キーシェアを受け取る。次に、ステップ1108において、ノードは、プロトコルの単一インスタンスを実行することにより、秘密キーシェアを再生成する。秘密キーシェアの生成は、ノードのTEE内で実行され得る。
【0144】
ステップ1108において、ノードは、コングレスに代わってトランザクションの有効な署名を生成するために少なくともしきい値の秘密キーシェアを使用しなければならないしきい値署名方式で使用され得る秘密キーシェアを生成する。秘密キーシェアの他の所有者は、それぞれのデジタル資産を公開グループアドレスに転送することにより、許可ベース又は非許可ベースでコングレスに加入したコングレスの他のメンバーである。
【0145】
秘密キーシェアを再生成するために、ステップ1108において、既存のコングレス・メンバーは、協力してキーシェアを更新することができる。例えば、ノードは、次数tのランダム多項式を生成し、定数項はゼロ
【数1】
である。次に、ノードは、ポイント
【数2】
を計算し、これを秘密キーシェアとして設定できる。次に、ノードは、この多項式
【数3】
上の点を既存の各コングレス・メンバーi=1,…,nに分配できる。次に、既存の各コングレス・メンバー(i=1,…,n)は、受信した値を自分の既存の秘密キーシェアに追加して、新しい秘密キーシェアを取得する。次に、ノードは、他の全てのメンバーと同等の秘密キーシェアを有しており、対応する公開キーは変更されないままである。上述したように、しきい値署名方式は、楕円曲線デジタル署名アルゴリズム又はシュノア方式に基づくしきい値方式を含む様々なタイプのものであり得る。
【0146】
秘密キーシェアはTEE内で生成してもよく(少なくとも図2に関連して上述した)、且つノードに安全に格納してもよい。例えば、秘密キーシェアはTEEに格納してもよい。
【0147】
秘密キーシェアがそれぞれのノードによって生成された後に、以前のコングレス公開キーの管理下にある資金(例えば、元のコングレス公開キーに関連する公開グループアドレスに転送された資金)が、(しきい値署名方式の下で有効な署名を生成するのに十分な数のグループノードの協力によって)新しい秘密キーシェアに関連する新しいコングレス公開キーへ転送され得る。
【0148】
ステップ1108において、秘密キーシェアが生成された後に、その秘密キーシェアを例示的なプロセス1100のステップ1110において使用してもよい。秘密キーシェアを使用して、(あるメンバーによってブロードキャストされ得る)公開グループアドレスからのトランザクションの有効な署名を協力して生成することができる。つまり、秘密キーシェアをしきい値署名方式で使用して、署名生成に寄与することができる。しきい値署名方式では、コングレスのしきい値数の秘密キーシェアをそれぞれのメンバーが使用して、デジタル資産をコングレスとは別の場所に(away from)転送できるようにする有効な署名を生成する必要があり得る。例示的なプロセス1100を実行するノードは、署名生成に寄与するために、ストレージから秘密キーシェアを検索し、この秘密キーシェアを使用することができる。十分な数の他のコングレス・メンバーもそれぞれの秘密キーを使用して署名の生成に寄与する場合に、署名が生成され、有効な支出トランザクションがブロードキャストされ得る。ブロックチェーン・ネットワークのマイニングノードが、(ブロックチェーン・ネットワーク内のノードのコンセンサスによってブロックチェーンに追加される)トランザクションをマイニングされたブロックに追加し、ブロックが確認されると、支出トランザクションが完了し得る。この時点で、トランザクションにおいて表されるデジタル資産は、もはやコングレスの管理下にない可能性がある。つまり、そのようなデジタル資産は、コングレス公開キーによってもはや制限されなくなる可能性がある。
【0149】
ステップ1108における秘密キーシェアの使用は、ノードのTEE内で実行され得る。TEEは、システムの他の部分又はメンバー自体が、エンクレーブに格納された秘密キーシェア等のあらゆるデータにアクセスできないように秘密キーシェアを保護する。さらに、TEEは、メンバーが自分の預託金の払戻しを望み、預託金を受け取りたい場合に、メンバー預託金を返却する前に秘密キーの削除を証明する必要があるため、TEEが秘密キーのコピーを保持できないという点で、秘密キーを保護する。
【0150】
図11の例示的なプロセス1100は、初期セットアップ段階中又はその後に実行できる。つまり、例示的なプロセス1100は、初期キーシェアが分配される前(例えば、例示的なプロセス1000のステップ1010中)に又はその後(例えば、以下でより詳細に議論する再バランス中)に実行され得る。
【0151】
ステップ1110におけるトランザクションは、デジタル資産を、元々それらのデジタル資産をコングレスプールに預託した関係者に戻すように転送することができる。つまり、転送(移転)はデジタル資産を預託者に返却することができる。転送は、デジタル資産を他の場所に転送することもできる。例えば、デジタル資産は、第三者又は返却先アドレスに転送される場合がある。
【0152】
図11に示される例示的なプロセス1100で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0153】
図12は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、デジタル資産を没収するための例示的なプロセス1200をフローチャート形式で示す。例示的なプロセス1200は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図12に関連して説明するデジタル資産を没収するための例示的なプロセス1200を実行し得る。一実施形態では、図12に示される例示的なプロセス1200を実行するノードは、図11に関連して説明した例示的なプロセス1100を実行するノードと同じノードである。例示的なプロセス1200は、例示的なプロセス1200のステップ1108の後に実行され得、例示的なプロセス1200が実行されるときに、例示的なプロセス1200を実行するノードは、既に秘密キーシェアへのアクセスを有している。
【0154】
ステップ1202において、ノードは、悪意のある関係者による悪意のある活動を検出する。悪意のある関係者は、コングレスの別のメンバーである可能性がある。悪意のある活動は、コングレスのメンバーが予め規定されたプロトコル又は基準に違反しているとノードが判定したときに検出され得る。例えば、コングレス内のメンバーであるノードが偽の情報(つまり、虚偽の、一貫性のない、又は容認できない情報)をコングレスの他のメンバーに報告する場合に、そのメンバーは悪意のあるメンバーと見なされ得る。
【0155】
ステップ1204において、悪意のある活動の検出に応答して、ノードは、コングレス内の他のノードと協力して、悪意のある関係者であるメンバーを一時保留状態にする(suspend)ことができる。つまり、コングレスは、悪意のある関係者をコングレスへの更なる参加から排除することができる。
【0156】
全てのノードが予め規定されたプロトコル又は基準に準拠して動作することを保証するために、コングレスプール内へのメンバー預託金は没収の対象となり得る。没収とは、没収されたとみなされるメンバー預託金の返却を永久に阻止することを意味する。悪意のある活動のために返却されない、メンバー預託金を形成するデジタル資産は、コングレスプールに残され得るが、返却されない場合があり、別の返却先アドレスに直ちに又は将来的に転送され、又は没収され得る。没収の性質は、コングレスが代替チェーンの留め置き検証(bonded validator)セットとして機能するかどうかに依存し得る。例えば、ステップ1206において、悪意のある関係者による悪意のある活動を検出することに応じて、例示的なプロセス1200を実行するノードは、秘密キーシェアを使用して没収トランザクションに関する部分的な署名を提供することができる。すなわち、ノードは、コングレスの他のノードと協力して、悪意のある関係者によって公開グループアドレス(つまり、コングレスプール)に以前転送されたデジタル資産の少なくとも一部を没収する。つまり、グループメンバーが予め規定されたプロトコル又は基準に違反していることを確認したことに応じて、秘密キーシェアは、そのグループメンバーに関連付けられ且つコングレスプール内に保持されている1つ又は複数のデジタル資産のトランザクションの承認に寄与するために利用され得る。
【0157】
しきい値署名方式がコングレス公開キーとともに使用され得るため、単独で行動する個々のノードは、別のコングレス・メンバーのデジタル資産の預託金をコングレスプールとは別の場所(例えば、返却先アドレスに)転送することができない。むしろ、デジタル資産は、デジタル資産を別のアドレスに転送するための有効な署名を生成するために、それぞれのメンバーがしきい値数の秘密キーシェアを使用する場合に、又は少なくともしきい値数の秘密キーシェアとなるグループのメンバーが、(ステップ1204において)あるメンバーを一時保留状態にするコンセンサスに達した場合のみ、転送によって没収され、一時保留状態にされたメンバーからの引出し要求は自動的に無視される。デジタル資産が転送によって没収された場合に、デジタル資産が転送され得る他のアドレスは、返却先アドレスに関連付けられる場合がある。例えば、この他のアドレスは、秘密キーが存在しないアドレスであってもよく、このアドレスの公開キーに結び付けられたデジタル資産にどの関係者もアクセスできないようにすることができる。デジタル資産が返却先アドレスに転送されると、デジタル資産はもはやコングレスのメンバーによって又は実際にブロックチェーン・ネットワークのノードによって換金(償還)される可能性があるため、デジタル資産は焼却されたとみなされ得る。
【0158】
従って、ステップ1206において、ノードは、コングレスの他のメンバーと協力して秘密キーシェアを使用してトランザクションの返却先アドレスへの有効な署名を生成することにより、デジタル資産を没収することができる。
【0159】
さらに、いくつかの実施態様では、コングレスは、プルーフオブステーク代替チェーンを保護する留め置き検証セットとして機能し、この代替チェーンは、ブロードキャスト・チャネルとして使用され得る。例えば、代替チェーンのコングレス・メンバーにより、あるメンバーが悪意を持って行動したというコンセンサスに達する場合がある。このコンセンサスは、悪意のある活動の犯罪的証拠を含む代替チェーントランザクションの確認に対応する場合がある。コンセンサスに達すると、悪意のあるメンバーによって行われたメンバー預託金の引出し要求は拒否され、預託金は没収されたとみなされ得る。没収されたデジタル資産の全て又は一部は、将来のある時点で焼却され得る。つまり、しばらくすると、しきい値のメンバー(悪意のあるメンバーを含まない)が協力して、没収されたデジタル資産の返却先アドレスへの転送を許可する場合がある。代わりに、デジタル資産の一部又は全てが、メンバーの不正行為の証拠を提供したノードに分配金として送信される場合がある。
【0160】
コングレスは、デジタル資産の預託によってブロックチェーン・ネットワークの任意のノードが加入できるオープングループであり得るため、グループ構成員は定期的に変更される場合がある。このような変更が発生すると、秘密キーシェアの分配が更新される可能性がある。
【0161】
図12に示される例示的なプロセス1200で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0162】
図13は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、秘密キーシェア分配を更新するための例示的なプロセス1300をフローチャート形式で示す。例示的なプロセス1300は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図13に関連して説明する秘密キーシェア分配を更新するための例示的なプロセス1300を実行し得る。
【0163】
例示的なプロセス1300のステップ1302において、ノードは、要求である再分配要求を検出し、その履行はキーシェアの再分配を伴う。例えば、ノードは、新しい見込みメンバーがデジタル資産を公開グループアドレスに転送したこと、又は既存のメンバーがメンバー預託金の引出しを要求したことを検出できる。
【0164】
デジタル資産は、コングレスへの加入又はコングレスへの参加を増やすことを要求するノードによって、及びコングレスへの加入を要求しないが、代わりに別の目的で(以下で説明するように、デジタル資産を代替チェーンに転送する等)デジタル資産をコングレスに転送する他のノードによって、公開グループアドレス(つまり、コングレスプール)に転送され得る。ステップ1302において、ノードは、デジタル資産の公開グループアドレスへのトランザクションの少なくとも一部に含まれる1つ又は複数の属性を使用して、コングレス・メンバー(つまり、コングレスに加入するためにデジタル資産をコングレス公開キーに転送した関係者であり、別の目的の関係者ではない)を識別することができる。例えば、特定のトランザクションは、トランザクションの属性を使用して特別なトランザクションとしてフラグが付けられる場合がある。このような属性(又は、その属性の有無)は、転送を行う目的を示すことができる。例えば、転送者がコングレスへの加入を要求していない場合に、トランザクションにフラグを含めてもよい。
【0165】
ステップ1302における要求の検出に応じて、その履行はキーシェアの再分配を伴いステップ1304において、上述したように秘密キーシェアを生成した方法と同様の方法で、新しい秘密キーシェアがノードによって生成され得る。コングレスの他のメンバーノードも、それぞれの秘密キーシェアを生成する。これらの秘密キーシェアは、新しいコングレス公開キーのしきい値署名方式で使用できる。この時点でコングレスを退会するメンバーは、ステップ1304の間に新しい秘密キーシェアを生成できず、退会するメンバーには新しいコングレス公開キーで使用する秘密キーシェアが割り当てられないため、退会するメンバーは、コングレスに参加する能力を失い、もはやコングレス・メンバーとはみなされなくなる場合がある。
【0166】
さらに、再分配要求(これは、その履行がキーシェアの再分配を伴う要求であり得る)の検出に応じて、ステップ1306において、ノードは、他のコングレス・メンバーと協力して、公開グループアドレス内の全てのデジタル資産を新しい公開キーに関連する新しい公開アドレス(これが新しいコングレス公開キーになり得る)に転送する。
【0167】
こうして、図13の例示的なプロセス1300によれば、預託金の分配が変更されたとき、又はメンバーから預託金を引き出す要求を受け取ったときに、秘密キーシェアが再生成され、コングレスの管理下にある全てのデジタル資産が新しい公開キーに移動され得る。コングレスの構成員を更新できる頻度は、ブロックチェーン・ネットワークのブロック時間によって制限される場合がある。多くのアプリケーションでは、低頻度での再バランスのみが必要になり得る。
【0168】
図13に示される例示的なプロセス1300で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0169】
図14は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、秘密キーシェア分配を更新するための例示的なプロセス1400をフローチャート形式で示す。例示的なプロセス1400は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図14に関連して説明する秘密キーシェア分配を更新するための例示的なプロセス1400を実行し得る。
【0170】
図14の例示的なプロセス1400では、コングレス公開キーは、メンバー預託金の分配が変更される度に変更されない。(ステップ1402において、デジタル資産の公開グループアドレスへの預託によって発生する可能性がある)新しいキーシェアを割り当てる要求が検出されると、ノードは、コングレスの他のメンバーと協力して、(ステップ1404において)同じ公開キーに関する新しい秘密キーシェアをグループの新しいメンバーに発行する。協力するノードの数は、しきい値署名方式の下でデジタル署名を生成するために必要な少なくともしきい値数のノードであり得る。ステップ1404において、追加のキーシェアが割り当てられ得る一方、他のキーシェアは同じままである。これは、(しきい値署名方式の)しきい値の変更を伴う場合があるが、実際にはその変更は少ない。あるいはまた、ステップ1404において、他のキーシェアが更新されている間に、追加のキーシェアを割り当ててもよい。このような更新には、以前生成したあらゆるキーシェアの削除の証明を伴う必要があり得る。この場合に、同じしきい値を維持しながら新しいシェアを割り当てることができる(SSSのコンテキストでは、これには、次数が増加した新しい多項式での分散(sharing)が含まれる)。
【0171】
ステップ1402において、ノードは、デジタル資産の公開グループアドレスへのトランザクションの少なくとも一部に含まれる1つ又は複数の属性を使用して、コングレス・メンバー(つまり、コングレスに加入するためにデジタル資産をコングレス公開キーに転送した関係者であり、別の目的の関係者ではない)を識別することができる。例えば、特定のトランザクションは、トランザクションの属性を使用して特別なトランザクションとしてフラグが付けられる場合がある。このような属性(又は、その属性の有無)は、転送を行う目的を示すことができる。例えば、転送者がコングレスへの加入を要求していない場合に、トランザクションにフラグを含めてもよい。
【0172】
メンバーが例示的なプロセス1400を使用するコングレスを退会するときに、メンバーは、自分の秘密キーシェアを安全に削除できる。古いメンバーの秘密キーシェアが使用できないことを保証するために、コングレスのメンバーは、特別なTEEを有するノードを使用するように要求される場合がある。TEEは、ハードウェアレベルで実装されたアーキテクチャであり、TEE内で実行される命令及びデータが、上述したように、システムの他の部分からのアクセス及び操作から保護されることを保証する。TEEは、ハードウェアメカニズムを使用して、コングレスの他のノード等の外部関係者に対してシステムの完全性を検証するために使用できるリモート認証の異議申立てに対応できる。
【0173】
各メンバーノードは、集積回路レベルでハードウェアを損なうことなくホストシステムにアクセスできないままである、1つ又は複数のランダムシークレット値を生成するように構成された認定TEEを使用できる。このようにして生成されたシークレット値は、上述したように、秘密キーシェアの分配生成で使用される。このシークレット値は、コングレスのセットアップ段階でシェアされる(shared)公開キーを確立するためにも使用できる。セットアッププロトコルに関連する計算はTEEのエンクレーブ内で実行され得るため、メンバー又は以前のメンバーは、メンバー間通信又は他の方法により自分又は他の秘密キーシェアに関する情報を得ることができない。TEE内のエンクレーブは、TEEのエンクレーブが、真正であり、承認されたコンピュータ可読命令を実行していることを他のノードに証明するために使用され得るリモート認証プロトコルを実行できるようにする。
【0174】
グループの変更に関連する計算は、TEEのエンクレーブ内で実行され得る。例えば、SSSの目的で新しい多項式を計算する際に使用され得る新しい安全なランダムシークレットの生成は、TEEのエンクレーブ内で実行される。
【0175】
TEEのエンクレーブは、メンバー預託金を返却する前に、もはや使用されなくなった以前のキーシェア及び以前のシークレットを安全に削除するのを保証することも目的としている。より具体的には、メンバー預託金を返却するために、認証プロトコルでは、TEEのエンクレーブがキーシェアの削除を証明することを要求する場合がある。各ノードは、そのような証明を、必要な削除がリモート認証プロトコルを介して他のノードで発生したことの確認として解釈することができる。こうして、例示的なプロセス1400は、コングレスを退会したメンバーのTEE内に以前保持されていた秘密キーシェアが、そのメンバーに関連するノードから削除されたことを確認することも含み得る。この確認は、秘密キーシェアの削除の証明を受信することで行うことができる。従って、リモート認証プロトコルを使用して、コングレスを退会したメンバーのTEE内に以前保持されていた秘密キーシェアの削除に対する認証を取得できる。
【0176】
例示的なプロセス1300及び例示的なプロセス1400は、それぞれ、実施されると、様々な利点を提供することに留意されたい。例えば、例示的なプロセス1300は、安全な削除に依存せず、信頼できるハードウェアに依存する必要もない。しかしながら、例示的なプロセス1300は、状況によっては、このようなハードウェアによって、例えば、キーシェアの悪意のあるプーリングをより起こりにくくし得るため、そのようなハードウェアから恩恵を受け得る。別の例では、例示的なプロセス1400は、構成員が変わる度に新しいコングレス公開キーの下でデジタル資産を再ロックしなければならない必要性を回避する。さらに、状況によっては、例示的なプロセス1400は、例示的なプロセス1300よりも速く構成員を更新する場合がある。なぜなら、例示的なプロセス1400では、デジタル資産が新しい公開キーに移動されないため、全てのデジタル資産を新しい公開キーに移動するためにトランザクションをブロックチェーンに追加する必要がないからである。つまり、公開キーが変更されないため、デジタル資産の新しい公開キーへの転送を確認するためにいくつかのブロック(例えば、6個のブロック)が生成されるのを待たずに、例示的なプロセス1400を使用して構成員を更新することができる。
【0177】
図14に示される例示的なプロセス1400で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0178】
図15は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、預託金を返却するための例示的なプロセス1500をフローチャート形式で示す。例示的なプロセス1500は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図15に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、預託金を返却するための例示的なプロセス1500を実行し得る。上述したように、グループメンバーは時にはコングレスからの退会を要求する場合があり、グループメンバーがコングレスから登録解除するときに、コングレスプールに預託されたデジタル資産は返却される場合がある。
【0179】
例示的なプロセス1500のステップ1502において、ノードは、コングレス・メンバーである要求者から引出し要求を受け取ることができる。引出し要求は、登録解除要求とも呼ばれ得る。引出し要求は、要求者によって以前預託され、コングレスによって現在管理されているデジタル資産を引き出す要求であり得る。要求は、要求者によって全てのコングレス・メンバーにブロードキャストされ得る。
【0180】
要求の受信に応じて、ステップ1504において、ノードは、決定された基準に対して要求を評価する。そのような基準は、予め規定された基準であり得る。コングレスが、グループ構成員が変更される度にコングレス公開キーが変更されないコングレス・プロトコルに従って動作する場合に、ステップ1504において、ノードは、秘密キーシェアが要求者によって削除されたことを確認できる。このような確認は、TEEに関連するリモート認証プロトコルを使用して得ることができる。
【0181】
コングレス・プロトコルが、構成員が変更されたときにコングレス公開キーが変更されるプロトコルである場合に、秘密キーシェアがもはや有効ではないため、ノードは、秘密キーシェアの削除を確認できない場合がある。代わりに、新しいコングレスキーが使用され、コングレス管理下の他のデジタル資産が新しいコングレスキーに転送される場合がある。
【0182】
ステップ1504において、ゴーストチェーンが現在展開されているかどうかも評価に入れられ得る。ゴーストチェーンが展開されている場合に、ゴーストチェーンの動作が停止するまで、引出し要求が拒否される場合がある。つまり、ゴーストチェーンでマイニングしているコングレス・メンバーは、少なくともゴーストチェーンが終了するまで、トークンの「出資金(stake)」を引き出すことが阻止される。
【0183】
ノードが評価に基づいて引出し要求を承認する場合に、ステップ1506において、ノードはデジタル資産の引出しを促進する。つまり、ノードは、その秘密キーシェアを使用してデジタル署名を協力して生成し、このデジタル署名を使用して、要求者によって以前預託されたデジタル資産を要求者に戻す。例えば、デジタル資産は、デジタル資産を以前受け取ったアドレスに送り返される場合がある。ステップ1506は、しきい値署名方式に従って実行され得、少なくともしきい値数のコングレス・メンバーが引出しを承認した場合にのみ引出しが行われる。ステップ1506は、登録解除を希望するメンバーが一定期間活動を一時保留状態にされた後に実行され得る。この待機期間によって、メンバー預託金の返却のためのプロトコルを実行している間に、メンバーが不正行為に関与するのを防止する。
【0184】
コングレス・プロトコルは、多数の様々な目的に使用され得る。コングレスは、様々な機能を実行するための安全なメカニズムを提供する。コングレスは、トラストレスな運営を行い、デジタル資産の所有権を管理することができる。
【0185】
コングレス・プロトコルは、例えば、本明細書で説明するようにゴーストチェーンを実装するために使用してもよく、その場合に、コングレス・プロトコルは、ゴーストチェーンプロトコルと呼ばれ得る。
【0186】
図15に示される例示的なプロセス1500で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0187】
図16は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、第1及び第2のブロックチェーン・ネットワークを実装できる例示的な環境1600をブロック図形式で示す。第1のブロックチェーン・ネットワーク1614は、図1を参照して上述したタイプのものであり得る。第1のブロックチェーン・ネットワーク1614は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合され得る複数のノード1602、1606を含む。
【0188】
第1のブロックチェーン・ネットワーク1614のノード1602、1606は、第1のブロックチェーン(本明細書では「メインチェーン」と呼ばれ得る)上の全てのトランザクションのグローバル台帳を維持する。ノード1602、1606の少なくともいくつかは、本明細書で説明するように、第1のブロックチェーン・ネットワーク1614のマイニングノード1604として動作する。
【0189】
第2のブロックチェーン・ネットワーク1616は、プルーフオブステーク・ブロックチェーン・ネットワークであり得る。第2のブロックチェーン・ネットワーク1616は、互いに結合され得、且つ第2のブロックチェーン・ネットワーク1616のグローバル台帳を維持する複数のノード1612、1606を含む。第2のブロックチェーン・ネットワーク1616のグローバル台帳は、第1のブロックチェーン・ネットワーク1614のグローバルとは別個及び異なっていてもよい。第2のブロックチェーン・ネットワーク1616のグローバル台帳は、本明細書では「代替チェーン」と呼ばれ得る。
【0190】
プルーフオブステークベースの第2のブロックチェーン・ネットワーク1616は、コンセンサスを得るための代替メカニズムを提供する。プルーフオブステーク・ブロックチェーン・ネットワークでは、ブロックチェーンは、プルーフオブワークではなくプルーフオブステークによって保護され得る。プルーフオブステークの下で、マイニングノード1608は、デジタル資産のセキュリティ預託金を預託し、ブロックをマイニングするノードとして選択される確率は、セキュリティ預託金として提供されるデジタル資産の額に比例し得る。プルーフオブステーク・ブロックチェーン・システムを使用すると、プルーフオブワーク・ブロックチェーンのマイニングに必要な計算費用及びエネルギーを省くことができる。プルーフオブステーク・ブロックチェーンによって、プルーフオブワーク・ブロックチェーンよりも高い頻度でより定期的なブロック作成が可能になる。
【0191】
第2のブロックチェーン・ネットワーク1616は、適切な通信技術を一緒に使用し得る複数のノード1606、1612も含む。これらのノード1606、1612は、第2のブロックチェーン・ネットワーク1616のグローバル台帳を維持する。
【0192】
複数のノード1606は、第2のブロックチェーン・ネットワーク1616のマイニングノード1608として機能する。第2のブロックチェーン・ネットワーク1616がプローフオブステーク・ブロックチェーン・ネットワークであり得るため、マイニングノード1608は、マイニングノードとして含まれるためにデジタル資産を預託する。より具体的には、代替チェーンのマイニングノード1608は、第2のブロックチェーン・ネットワーク1616上でマイニングするために留め置き検証セットを形成する。これらのマイニングノード1608は、第1のブロックチェーン・ネットワーク1614に関連するコングレス1610のメンバーでもあり得る。つまり、第1のブロックチェーン・ネットワーク1614と第2のブロックチェーン・ネットワーク1616との両方の一部であり得るノード1606は、第2のブロックチェーン・ネットワーク1616のマイニングノード1608として、及び第1のブロックチェーン・ネットワーク1614上に確立されたコングレス1610のメンバーとして機能する。これらのマイニングノード1608は、上述した方法に従ってコングレス1610に加入し、コングレス1610に参加する。デジタル資産のコングレスプールへの預託は、メインチェーンで行われ得る。つまり、コングレス・メンバーは、自分の「出資金」をプローフオブワークの第1のブロックチェーン・ネットワーク1614に預託して、第1のブロックチェーン・ネットワーク1614のコングレス・メンバーになり、留め置き検証セットを形成することにより、第2のブロックチェーン・ネットワーク1616上のマイニングノード1608としても機能する。第1のブロックチェーン・ネットワーク1614上のメンバー預託金は、第2のブロックチェーン・ネットワーク1616のセキュリティ預託金として機能する。
【0193】
メンバーが保有する秘密キーシェアの量がそのメンバーのセキュリティ預託金の額に基づいている可能性があり、且つそのような預託金が悪意のある行動に関して没収の対象となるため、コングレスの活動に大きな影響を与えるメンバー(つまり、より多くの秘密キーシェアを保有するメンバー)は、影響力の少ないメンバーよりも多く失うことになることに留意されたい。コングレス1610は、十分な出資金をコングレス1610に関連するプールに提出すると、任意のノードが加入できるオープンメンバーシップ・グループであり得る。コングレス・メンバーが第2のブロックチェーン・ネットワーク1616上のマイニングノードであり得るため、コングレス・メンバーは、第2のブロックチェーン・ネットワーク1616上に新しいデジタル資産を形成して、デジタル資産を第1のブロックチェーン・ネットワーク1614から第2のブロックチェーン・ネットワーク1616に効果的に転送することができる。本明細書で図17に関連して少なくとも説明するように、コングレス1610を使用して、プルーフオブワーク・ブロックチェーンとプルーフオブステーク・ブロックチェーンとの間に双方向のペグ(peg)を提供できる。
【0194】
図16に示されるノード1602、1606、及び1612は、図2に関連して説明した電子装置200等の電子装置であってもよい。
【0195】
図17は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、双方向ペグを提供するための例示的なプロセス1700をフローチャート形式で示す。例示的なプロセス1700は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図17に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システム又は双方向ペグを提供するための例示的なプロセス1700を実行し得る。
【0196】
一実施形態では、例示的なプロセス1700は、図16に関連して説明したノード1606等のノードによって実行され、このノード1606は、第1のブロックチェーン・ネットワーク1614(つまり、プルーフオブワーク・ブロックチェーン・ネットワーク)と第2のブロックチェーン・ネットワーク1616(つまり、プルーフオブステーク・ブロックチェーン・ネットワーク)との両方で動作し、両方のネットワークとも図16に関して説明した。コンピュータ可読命令は、そのようなノードのメモリに格納してもよく、これら命令は、ノードのプロセッサによって実行されると、プロセッサに例示的なプロセス1700を実行させるように構成される。
【0197】
ステップ1702において、ノード(例えば、ノード1606)はコングレスに加入する。コングレスには、図4を参照して上述した方法で加入することができる。例えば、ノードは、1つ又は複数のデジタル資産をコングレス公開キーに関連する公開グループアドレスに転送できる。公開グループアドレスには、コングレスの他のメンバー(例えば、ノード1606等の他のノード)に関連する1つ又は複数の他のデジタル資産がある。ノードがコングレスに加入すると、ノードは、コングレスに代わって有効な署名を生成するために少なくともしきい値の秘密キーシェアを使用する必要があるしきい値署名方式で使用するための秘密キーシェアを生成する。上述したように、しきい値署名方式は、楕円曲線デジタル署名アルゴリズム又はシュノア方式に基づくしきい値方式を含む様々なタイプのものであり得る。
【0198】
秘密キーシェアの他の所有者は、それぞれのデジタル資産を公開グループアドレスに転送することにより、許可ベース又は非許可ベースでコングレスに加入したコングレスの他のメンバーであり得る。
【0199】
ステップ1704において、コングレスに加入したノードは、コングレスの他のメンバーと一緒にプルーフオブステーク・ブロックチェーン・ネットワーク上(例えば、第2のブロックチェーン・ネットワーク1616上)に留め置き検証セットを形成する。つまり、デジタル資産をセキュリティとして預託した(その預託金を本書では「担保(bonding)」と呼ばれ得る)後に、(第1のブロックチェーン・ネットワーク1614への預託金によって形成された)コングレスのメンバーは、ここで第2のブロックチェーン・ネットワーク(例えば、第2のブロックチェーン・ネットワーク1616)上のマイニングノードとして機能し、第2のブロックチェーン・ネットワークのための新しいブロックを定期的に生成する。
【0200】
コングレスが形成された後に、ステップ1706において、コングレス・メンバーであるノードは、プルーフオブワーク・ブロックチェーン・ネットワーク上でのデジタル資産のグループ公開アドレスへの特別なトランザクションの確認を検出することができる。トランザクションは、このトランザクションがコングレスに加入するために使用されたトランザクションから区別する予め規定された基準を満たす場合に、特別であると判定され得る。例えば、特定のフラグ、変数、又は属性が含まれている場合に、トランザクションは特別であると判定され得る。
【0201】
特別なトランザクションを検出した後に、ノードは、少なくともしきい値数のブロックがプルーフオブワーク・ブロックチェーン・ネットワークのブロックチェーンに追加されるまで待機し得る。この待機期間によって、ステップ1706においてトランザクションを無効にする可能性のある、プルーフオブワーク・ブロックチェーン・ネットワーク上のブロックチェーンの可能な再編成のリスクを低減することができる。こうして、図17に示されていないが、この方法は、特別なトランザクションの検出後に、少なくともしきい値数のブロックがプルーフオブワーク・ブロックチェーン・ネットワークのブロックチェーンに追加されたことを判定する動作を含み得る。
【0202】
しきい値数のブロックがプルーフオブワーク・ブロックチェーンに追加された後に、ノードは、(ステップ1708において)プルーフオブステーク・ブロックチェーン・ネットワーク上に対応するデジタル資産を生成する。これらのデジタル資産は、特別なトランザクションの検出に応じて生成してもよく、ステップ1706において検出された特別なトランザクションのデジタル資産の額に対応する額で生成してもよい。
【0203】
生成されたデジタル資産は、プルーフオブステーク・ブロックチェーン・ネットワーク上で、ステップ1706において特別なトランザクションを検出した公開キーの所有者に関連するアカウント内に置かれ得る。こうして、デジタル資産をプルーフオブワーク・ブロックチェーン・ネットワーク上のコングレスに転送する関係者は、プルーフオブステーク・ブロックチェーン・ネットワーク上のデジタル資産の制御(管理)を再開する。この関係者は、例えば、これらのデジタル資産を他のアカウントに転送する等、これらのデジタル資産を様々な方法で自由に使用できるようになる。
【0204】
生成は、選択されたコングレス・メンバーによって実行され得る。より具体的には、プルーフオブステーク・ブロックチェーン・ネットワークのマイニングノードとしても機能するコングレス・メンバー(例えば、図16に関連して説明したマイニングノード1608等のマイナー)が、プルーフオブステーク・ブロックチェーン・ネットワークによってブロックを生成するために選択され得る。あるノードが選択される確率は、そのノードが出資したデジタル資産の額に基づく場合がある。確率は、ノードがコングレス公開キーに預託したデジタル資産の額に比例する場合がある。
【0205】
ある時点で、デジタル資産の所有者は、それらデジタル資産をプルーフオブワーク・ブロックチェーン・ネットワーク(つまり、メインチェーン)に戻したい場合がある。そのために、所有者は、デジタル資産をプルーフオブワーク・ブロックチェーン・ネットワークに戻す要求を発することができる。このような要求は、プルーフオブステーク・ブロックチェーン・ネットワーク上での特別なトランザクションの形式で発せられ得る。このトランザクションは特別な返却先アドレスへのトランザクションであるという点で特別で有り得、この返却先アドレスは、送信者がこれらの資金をメインチェーンに戻したいときに資金を送信するアドレスである。つまり、アドレスが特別なアドレスであるという点で、トランザクションは特別であり得る。ステップ1710において、ノードは、プルーフオブステーク・ブロックチェーン・ネットワーク上のデジタル資産を、プルーフオブワーク・ブロックチェーン・ネットワークに戻す要求を検出することができる。例えば、ステップ1710において、資金を特別なアドレスに送信するトランザクションのマイニングがあり得る。
【0206】
再編成を防ぐために、ノードは、ステップ1710において要求が検出された後に、少なくともしきい値数のブロックがプルーフオブステーク・ブロックチェーン・ネットワークのブロックチェーンに追加されるまで待機する場合がある。こうして、図17に示されないが、例示的なプロセス1700は、要求の検出後に、少なくともしきい値数のブロックがプルーフオブステーク・ブロックチェーン・ネットワークのブロックチェーンに追加されたことを判定する動作を含み得る。
【0207】
そのような要求を検出し、且つしきい値数のブロックがプルーフオブステーク・ブロックチェーンに追加されたと判定すると、ステップ1712において、ノードは、コングレスのその秘密キーシェアを使用して、公開グループアドレスからトランザクションのための有効な署名を協力して生成する。例えば、トランザクションに必要な情報を代替チェーンの含めることにより代替チェーンを介して又は直接的に、トランザクションをコングレス・メンバー同士の間で循環させることができ、メンバーは、有効な署名が取得されるまで自分の部分的な署名を追加することができ、有効な署名が取得された時点で、トランザクションは、プルーフオブワーク・ブロックチェーン・ネットワークのマイニングノード(例えば、図16に関連して説明したマイニングノード1604)にブロードキャストされ得る。トランザクションは、デジタル資産を、(ステップ1710において検出された要求を発したノードに関連するアドレスであり得る)プルーフオブワーク・ブロックチェーン・ネットワーク上のアドレスに転送する。
【0208】
ステップ1710においてデジタル資産が転送される特別なアドレスは、返却先アドレスであり得る。こうして、ステップ1710におけるデジタル資産の転送は、2つのブロックチェーンに亘るデジタル資産の重複を防ぐために、プルーフオブステーク・ブロックチェーン上のデジタル資産を焼却する(つまり、破壊する)。
【0209】
セキュリティを強化するために、転送の操作の少なくとも一部を信頼できる実行環境のノードで実行され得る。例えば、少なくともしきい値数のブロックがプルーフオブステーク・ブロックチェーン・ネットワークのブロックチェーンに追加されたという決定は、ノード上の信頼できる実行環境内で実行され得る。ノードは、秘密キーシェアを使用する前に、信頼できる実行環境内であるテップ1710において検出した要求の有効性を確認することもできる。秘密キーシェアの生成及び使用も、信頼できる実行環境内で実行され得る。
【0210】
図17に示される例示的なプロセス1700で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0211】
本明細書で説明するプロトコルのセキュリティをさらに強化するために、プロトコルには「一方向賭け攻撃(one-way bet attack)」から保護するための1つ又は複数の保護手段を含めることができることに留意されたい。一方向賭け攻撃の例は、不正行為者(つまり、悪意のある関係者に関連するノード)が、コングレスの管理下にある(つまり、コングレス公開キーによって制限される)デジタル資産の全て又は一部を転送するトランザクションをメインチェーン上に構築したときに発生する。不正行為者は、部分的な署名を追加するためにトランザクションを他のメンバーに提供する場合がある。メンバーに関連するしきい値数の秘密キーシェアが関係する場合に、有効な署名を生成できる。プロトコルで使用されているしきい値署名方式が集約(aggregate)署名方式ではない場合(例えば、ECDSAが使用されている場合)に、部分的な署名を提供したメンバーを特定するのは困難になり得る。不正行為が成功した場合に分配の期限を迎える可能性のあるメンバーは、部分的な署名をトランザクションに追加し、不正行為の関係者としての危険性を露呈することなしにトランザクションを通過させることができる。起こり得る最悪の事態は、完全な署名を取得するために不十分が部分的な署名が収集されることであるので、部分的な署名を追加することは、一方向の賭けとして見ることができる。従って、プロトコルには、一方向の賭けに対してプロトコルを保護するための1つ又は複数の機能が含まれる場合がある。例えば、各ノードのTEEは、部分的に署名した全てのトランザクションを定期的に証明するように構成でき、及び/又は、預託金を回収する前にそのような証明をブロードキャストする必要があり得る。ノードが、(コングレス・メンバーのしきい値によって)不正なトランザクションであると後で判断されたトランザクションに部分的な署名を追加したことを証明する場合に、そのような悪意のある活動は、本明細書で説明するように他の誠実なメンバーノードによって検出され得る。そのような悪意のある活動が検出された場合に、誠実なメンバーノードは協力して、本明細書で説明するようにそのメンバーを一時保留状態にし、及び/又は本明細書で説明するようにそのメンバーのデジタル資産を没収することができる。この手法は、一方向の賭けからプロトコルを保護するのに役立つが、定期的な証明が使用されると、オーバーヘッドが発生する可能性がある。さらに、預託金の返却前に証明が必要な場合に、不正が長期間検出されない場合がある。
【0212】
プロトコルには、一方向の賭けから保護するために、他のセキュリティ対策が含まれ得る。例えば、Boneh、Gentry、Lynn、Shachamの「BGLS」スキーム等の集約署名方式(Aggregate and Verifiably Encrypted Signatures from Bilinear Maps. International Conference on the Theory and Applications of Cryptographic Techniques EUROCRYPT 2003: Advances in Cryptology- pp 416-432)を使用してもよい。集約署名を使用すると、異なる署名者が異なるメッセージに署名できるが、1つの署名だけが生成され、この署名は「シングルショット」で検証できる。
【0213】
BGLSを使用するために、各メンバーのTEEは、メインチェーンで使用されるしきい値署名方式のための単一の秘密キーシェアとBGLS秘密キーとを保持できる。BGLS秘密キーに対応する公開キーは、シェアID(「SID」)と呼ばれ得る。BGLS秘密キーは、TEE内の安全な乱数発生器を使用して生成された乱数であり得る。しきい値署名方式の秘密キーシェアは、他者間(multiparty)キー生成プロトコルを使用してTEE内で計算されたシェアであり得る。
【0214】
BGLSは、以下の方法で、一方向の賭けに対する安全な保護を提供できる。本明細書で説明するように、ノードが登録の目的でコングレス公開キーを分配する場合に、登録トランザクションには、エンクレーブが確認したメインチェーン上の最新ブロックの数(番号)及びハッシュと、第2のブロックチェーン(つまり、代替チェーン)上の最新のブロックの数(番号)及びハッシュが含まれ、これらは、メンバーとクォート(quote)(TEEの証明キーによって署名され、且つSIDに結合されたエンクレーブ内のメモリの最初のコンテンツのハッシュ)との間のブロードキャスト・チャネルとして使用できる。
【0215】
TEEが登録トランザクションに必要なデータを提供することを要求する前に、メンバーは、メインチェーン及び第2のブロックチェーン上の全てのブロックを、各ブロックチェーンのジェネシス・ブロックから開始するTEE内に順次に送信する必要がある。TEEは、メインチェーン上の作業証明をチェックし、現在の構成員の記録を保持するように構成でき、これは、登録及び登録解除トランザクションを解析することで取得できる。これにより、TEEが、(例えば、所有者等から)独立して、最新のSIDを確立することができる。つまり、TEEが、コングレスの現在の全てのメンバーに対応するSIDを確立することができる。
【0216】
登録するために、(見込みのある)メンバーは、コングレスの公開グループアドレスに転送可能な登録トランザクションを構築、署名して、メインチェーンであるブロックチェーン・ネットワーク(例えば、第1のブロックチェーン・ネットワーク1614)にブロードキャストすることができる。登録トランザクションは、少なくとも1つのキーシェアに十分なUTXOを参照する。登録トランザクションがメインチェーンで確認されると、コングレスのメンバーは協力して、本明細書で説明するように、新しいキーシェアを登録されたメンバーのTEEに発行できる。
【0217】
コングレスがコングレス公開キーによって制限されたデジタル資産のトランザクションを開始するのを望む場合に、コングレスのノードは、第2のブロックチェーン・ネットワーク(つまり、代替チェーン)上でトランザクション(つまり、本明細書で「トランザクションT(M)」として示される)を提案することができる。トランザクションT(M)は、この時点で、デジタル資産をメインチェーンM上に転送することを目的とした未署名のトランザクションであり、これは、代替チェーンAで提案される場合がある。つまり、第2のブロックチェーン・ネットワーク(つまり、代替チェーン)は、ブロードキャスト・チャネルとして使用され得る。あるメンバーが何らかの情報を他の全てのメンバーに伝えたい場合に、それら情報をトランザクションに入れて、このトランザクションを代替チェーンに送ることがある。
【0218】
トランザクションT(M)は、少なくともしきい値数のブロックが第2のブロックチェーン・ネットワークの上でマイニングされると、第2のブロックチェーン・ネットワーク(例えば、代替チェーン)で承認されたとみなされ得る。TEEは、第2のブロックチェーン・ネットワーク(つまり、代替チェーン)上でトランザクションが承認(つまり、提案及び確認)されたことを確認すると、事前コミット(precommit)をブロードキャストする。事前コミットは、トランザクションT(M)上のBLGS署名と、BLGS署名に対応するSIDとで構成され得る。事前コミットは、第2のブロックチェーン・ネットワークに送信され、他のコングレス・メンバーとシェアされる。つまり、事前コミットは、第2のブロックチェーン・ネットワーク上のトランザクションにカプセル化できる。
【0219】
ノードによって、より具体的には(メインチェーンと第2のブロックチェーン・ネットワークとの両方のブロックが入力される)TEEによって、しきい値の事前コミットが確認されると、ノードは、事前にコミットしたコミット(部分的な署名)をトランザクションT(M)上に出力することができる。しきい値は、例えば、現在の全てのSIDの単純な過半数に設定され得る。トランザクションに含まれるコミットは、T(M)を参照するT(M)の部分的な署名を含む第2のブロックチェーン・ネットワークに送信され得る。
【0220】
完全な署名を構築するために、少なくともしきい値数のコミットが第2のブロックチェーン・ネットワークで確認されると、署名されたトランザクションT(M)が、構築され、且つ第1のブロックチェーン・ネットワーク(例えば、メインチェーン)にブロードキャストされ得る。
【0221】
集約署名方式のプロパティが、メンバーが自分の身元を明かさずに事前コミットに寄与できないことを意味するため、事前コミットの使用は、追加のセキュリティを与えることができる。つまり、それらの身元はSIDの形式で公開され得、このSIDは、登録手続き中にメンバー預託金に関連付けられる。
【0222】
上述した対策に加えて、ノードに関連するTEEは、トランザクションが第2のブロックチェーン・ネットワーク上で承認された場合にのみコミット又は事前コミットされるようにさらに構成できる。例えば、全てのブロックは、TEE内で構築することができ、ブロックが(TEEのSIDに対応し、TEE内で構築された)それら事前コミット又はコミットを必要とする承認済みトランザクションへの事前コミット又はコミットを常に含むように構成される。その結果、メンバーは、承認済みトランザクションへのコミット又は事前コミットメントの送信を控えることができず、代替チェーンでマイニングを継続し得る。
【0223】
第2のブロックチェーン・ネットワーク上の未承認トランザクションに対する事前コミットを監視するノードは、このような悪意のある行動を、留め置き検証セットの他のメンバーに報告することができる。(SIDで識別される)悪意のあるメンバーは、上述したようにメンバー預託金の一時保留及び/又は没収により罰せられる場合がある。例えば、未承認トランザクションに対する事前コミットメントの監視に応じて、構成員は協力してSIDを即座に一時保留状態にし、それ以上事前コミットメントを受け取ることがなくなり、有罪メンバーのプロトコルへの参加を一時保留状態にすることができる。さらに、有罪の証拠を含むトランザクションが第2のブロックチェーン・ネットワークで確認されると、有罪メンバーの預託金は没収され、預託金は焼却される。誠実なメンバーは協力して、悪意のある行動を報告したノードを(例えば、没収したデジタル資産の少なくとも一部を、悪意のある行動を報告したノードに転送することにより)補償することができる。こうして、事前コミット段階で集約署名方式を適用すると、例えば、一方向の賭け攻撃を防ぐことで、プロトコルのセキュリティを強化することができる。
【0224】
TEEを欺いてメインチェーン内の作業証明の現在の難易度が現在のその難易度よりも低いと判定させようとするメンバーを防ぐために、TEEは、難易度の急激な低下が観察されたときに行動を取るように構成され得る。より具体的には、ブロックが到着した際にブロックがTEEに送信される場合に、ブロック同士の間の時間間隔から難易度を確立できる。難易度の低下は緩やかであると予想され得、急激な低下(低下は、予め規定された基準に基づいて「急激」と判定され得る)は、ブロックが到着した際にブロックを提供せずにTEEを欺こうとするメンバーによって引き起こされ、難易度が下がったように見せかけて、プルーフオブワークのメインチェーンのブロックを偽装し易くする場合がある。更なるセキュリティを与えるために、TEEは、第2のブロックチェーン・ネットワークにマイニングされる新しい難易度への事前コミットを(ブロックのハッシュ及びブロック番号とともに)出力することにより、メインチェーンの難易度の急激な低下に応答するように構成され得る。ブロックのハッシュを含めると、ブロックが新しい難易度に対応することを確認でき、ブロック番号を含めると、他のメンバーが、主張された難易度/ブロックハッシュをブロックチェーンのコピーの同じ高さのブロックと素早く比較できるようになる。
【0225】
その同じ難易度に対するしきい値の事前コミットメント(これは難易度が急激に低下する前に預託金があった他のメンバーに対応する)を含む第2のブロックチェーンのブロックが提供されている場合にのみ、それは、メインチェーンの難易度を再調整し、難易度の急激な低下が確認されたため、メインチェーンに登録される新しいメンバーを受け入れることができる。
【0226】
BGLS等の集約署名方式が使用される場合に、メンバー預託金の返却手続きには追加要件が含まれる場合がある。例えば、預託金の返却を要求するノードは、秘密キーシェアとBGLS秘密キーとの両方の削除を(そのTEEを介して)証明する必要があり得る。他のメンバーノードは、その脱退メンバーが秘密キーシェアとBGLS秘密キーとの両方を削除することを証明した場合に、メンバー預託金を脱退メンバーに返却するトランザクションに事前コミット又は部分的な署名のみを含めるように構成され得る。
【0227】
脱退メンバーのノードは、TEEを介して、事前にコミット又はコミットした全てのトランザクションを証明する必要もあり得る。他のメンバーノードは、脱退メンバーが未承認であると判定されたトランザクションに事前コミットしていない場合に、メンバー預託金を脱退メンバーに返却するトランザクションに事前コミット又は部分的な署名のみを含めるように構成され得る。
【0228】
上記の手順により、悪意のあるメンバーが、TEEからのブロックを保留することから利益を得ることは殆どない。(確認済みSIDに対応するもの以外の)TEEが有効とみなされ得る唯一の事前コミットは、もはや存在しないBLGS秘密キーに対応するものである(そして、これがかなりの確率で発生し得る唯一の方法は、メンバーが最新のブロックをTEEに提供しなかった場合であり、TEEは、実際に一部のメンバーがコングレスを退会し、自分のキーシェアを削除し、自分のメンバー預託金を回収したときに、一部のメンバーを最新として登録した)。さらに、上記の結果として、メンバーは、不正行為的な(つまり、未承認の)トランザクションの事前コミットメントを提供し、その後、コングレスによる預託金の返却を許可することをTEEに納得させない場合がある。こうして、メンバーは、TEEがブロックチェーン(つまり、メインチェーン及び代替チェーン)の最新のコピーを有していることを確認するように動機付けられ得る。
【0229】
こうして、次の機能の1つ又は複数を含むプロトコルに従って動作するようにノードを構成することにより、プロトコルを保護できる:(i)TEEは、部分的な署名を事前コミットされたトランザクションに出力する前に、しきい値の事前コミットメントが第2のブロックチェーン・ネットワーク(例えば、プルーフオブステークの代替チェーン)で確認されることを要求するように構成され得る;(ii)メンバー預託金は、そのメンバーのTEEが、秘密キーシェア及びBGLS秘密キーの削除と、全てのトランザクション(事前にコミットされており且つこれらのいずれも(第2のブロックチェーン・ネットワークでのコンセンサスにより)未承認であると判断されている)とを証明する場合にのみ返却され得る;(iii)TEE内で構築されたブロックには、それらを必要とする承認済みトランザクション(しきい値の(事前)コミットメントを未だ収集していない承認済み/事前コミット済みトランザクション)に対する(事前)コミットメントが常に含まれ得る;(iv)TEEは、新しい難易度に対する事前コミットを(ブロックのハッシュとともに)第2のブロックチェーン・ネットワークにマイニングするように出力することにより、メインチェーンの難易度の確認される急激な低下に応答するように構成され得る。同じ難易度に対するしきい値の事前コミットメント(これは難易度が急激に低下する前に預託金があった他のメンバーに対応する)を含む第2のブロックチェーンのブロックが提供されている場合にのみ、それは、メインチェーンの難易度を再調整し、難易度の急激な低下が確認されたため、メインチェーンに登録される新しいメンバーを受け入れることができる。
【0230】
本明細書で説明する第2のブロックチェーン・ネットワークをサポートするプロトコルは、メインチェーン(例えば、ビットコイン)の外部の他者間プロトコルを介してデジタル署名の構築を通じて対話するため、許可なしに、ビットコイン等の既存のパブリック・プルーフオブワーク・ブロックチェーン・プロトコルの上に階層化でき、これは、そのプロトコルが、メインチェーンのマイナーや開発者の同意を必要とせずに動作する可能性があることを意味する。従って、プロトコルは、既存のパブリック・プルーフオブワーク・ブロックチェーンの「上で」実装することができ、そのパブリック・プルーフオブワーク・ブロックチェーンのプロトコルの変更を条件としない場合がある。この意味で、更なるプロトコルに対応するためにブロックチェーン・プロトコル自体を変更する必要がないため、プロトコルを、許可なしで(つまり、許可を必要とせずに)ブロックチェーンに追加できる。
【0231】
本明細書で説明する例示的なプロセスは一般にノードで実行されるものとして説明したが、本明細書で説明する例示的なプロセスの機能は、他のノードとの協力(連携)に依存しており、本明細書で説明するような他のコンピュータ装置によって実行できることに留意されたい。さらに、上記の説明では、一般に、プルーフオブワーク・ブロックチェーン・ネットワークで実装されるコングレスについて説明しているが、コングレスは、代わりに、プルーフオブステーク・ブロックチェーン・ネットワークで実装することができる。
【0232】
既に述べた特定の利点及び機能に加えて、本明細書で説明する技術は追加の利点を提供し得る。例えば、双方向のペグにより、チューリング完全(Turing complete)ブロックチェーンベースのコンピュータプログラム機能を、既存のプルーフオブワーク・ブロックチェーン(ビットコイン等)及びプルーフオブステーク代替チェーンで構成されるバイナリ・ブロックチェーンシステムに追加できる。より具体的には、このような機能は、チューリング完全スクリプト言語を用いてプルーフオブステーク代替チェーンを与えることで実現され得る。さらに、本明細書で説明する技術の少なくともいくつかは、以前示唆したプルーフオブステーク・ブロックチェーンの実装の出資時に何も無い問題に悩まされないプルーフオブステーク・ブロックチェーンや、従来のプルーフオブステーク方式に関連するより速く、より定期的なブロック作成の利点を提供することができる。さらに、本明細書で説明する少なくともいくつかの技術は、プルーフオブステーク・メインチェーンのマイナーが、かなりの数のデジタル資産を保持する理由を与え、これはプルーフオブワーク・メインチェーンのセキュリティを高める。
【0233】
図18は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、ブロックチェーン及びゴーストチェーンが実装され得る例示的な環境1800をブロック図形式で示す。
【0234】
ブロックチェーン1802は、本明細書で説明するようなブロックベースのプルーフオブワークの分散型台帳であり得る。同様に本明細書で説明するようなゴーストチェーン1804は、例えば、ブロックチェーン・ネットワーク内のノード同士の間の紛争を仲裁するために使用され得る、ブロックベースのプルーフオブステークの分散型台帳であり得る。例えば、ブロックチェーンは、あるノードが別のノードによって提出された作業成果物に異議を申し立てる異議申立て1806を含み得る。異議申立て1806は、例えば、ノード(つまり、異議申立者)が、要求の履行の際に提案された結果が無効であることを示す場合に発生し得る。
【0235】
異議申立て1806がノードによって提起されると、ゴーストチェーン1804が展開され得る。異議申立てに応答して異議申立て1806が発生した後に、ゴーストチェーンをインスタンス化することができる。ゴーストチェーンは、ゴーストチェーンの以前のインスタンス化による最終ブロック(末端ブロックとも呼ばれる)であるジェネシス・ブロックでインスタンス化され得る。ゴーストチェーンが判断(judgement)1808に達するまで、ノードをマイニングすることによりいくつかのブロックをゴーストチェーンに追加して、デジタル紛争を解決することができる。
【0236】
判断1808に達したときに、トランザクション(以下で最終トランザクション又は決済トランザクションと呼ばれる)が、構築され、(以下でより詳細に説明するように)署名され得る。このトランザクションは、判断1808に従って資金をメインブロックチェーン1802に分配する、資金をゴーストチェーンのマイニングノードに分配する等の効果を有するトランザクションであり得る。トランザクションは、判断の結果をメインブロックチェーン1802に返信することもできる(例えば、トランザクションは判断ブロック1810にマイニングされ得る)。より具体的には、結果はトランザクションにカプセル化され得る。
【0237】
判断に達し、最終トランザクションが構築及び署名された後に、ゴーストチェーン1804は終了し、構築されたトランザクションは、判断ブロック1810においてメインブロックチェーン1802にマイニングされ得る。ゴーストチェーン1804は終了するため、ゴーストチェーンには末端ブロックがあるという点で、典型的なブロックチェーンとは異なり得る。ゴーストチェーン1804の最後のブロックであり得るこの末端ブロックは、判断(例えば、ゴーストチェーン1804の判断ブロック1808)が決定されると発生し、この判断に従って資金をメインブロックチェーン1802に分配し、資金をゴーストチェーンのマイニングノードに分配する等の結果のトランザクションは、有効に署名される。
【0238】
従って、ブロックチェーン・ネットワーク内のノードは、要求者-提案者-異議申立者プロトコル及び/又はゴーストチェーンの解決プロトコルを実装できる。そのようなノードは、図2に関連して説明したメモリ220等のメモリに格納され、そのようなプロトコルを実装するコンピュータ実行可能命令を含み得る。そのような命令は、図2に関連して説明したプロセッサ210等のプロセッサによって実行されると、ノード(図2に関連して説明したタイプの電子装置200等)に、要求者-提案者-異議申立者プロトコル及び/又はゴーストチェーンの解決プロトコルに関連する1つ又は複数の方法を実行させる。そのような方法は、本明細書で説明する例示的なプロセス1900、2000、2100、又は2200のいずれか1つ又は組合せを含み得る。
【0239】
ここで、図19図22を参照すると、これらの図は、要求者-提案者-異議申立者プロトコル及び/又はゴーストチェーンの解決プロトコルに含まれ得る方法を示している。要求者の方法(Requester method)(例えば、図19に示される例示的なプロセス1900の方法)は、計算タスク分散システム内のタスクの要求者によって実行され得る。つまり、タスクの完了を要求するノードは、図19に示される要求者の方法を実行し得る。一実施形態では、ノードはブロックチェーン・ネットワーク内のノードであり、ノードは要求者と呼ばれ得る。
【0240】
提案者の方法(Proposer method)(例えば、図20に示される例示的なプロセス2000の方法)は、タスクに対する解に関する提案者によって実行され得る。つまり、タスクを完了したと主張するノードは、図20に示される提案者の方法を実行し得る。ノードはブロックチェーン・ネットワーク内のノードであり、ノードは提案者と呼ばれ得る。
【0241】
異議申立者の方法(Challenger method)(例えば、図21に示される例示的なプロセス2100の方法)は、タスクに対する解に関する異議申立者によって実行され得る。つまり、提案者によって提示された解に異議を申し立てるノードは、図21に示される異議申立者の方法を実行し得る。ノードはブロックチェーン・ネットワークのノードであり、ノードは異議申立者と呼ばれ得る。
【0242】
仲裁者の方法(例えば、図22に示される例示的なプロセス2200の方法)は、ブロックチェーン・ネットワークの他のノードと協力して、ブロックチェーン・ネットワークのノードによって実行され得る。他のノードと協力して仲裁者の方法を実行するノードは、仲裁者と呼ばれ得る。
【0243】
図19図22の例示的なプロセス1900、2000、2100、及び2200で説明する方法は、協同して実行され、本明細書で説明するように、ゴーストチェーンが提案側文字列の有効性を判定する(及び/又は、提案側文字列が異議申立ての対象である場合の異議申立側文字列の有効性を判定する)ために使用される要求者-提案者-異議申立者プロトコルをまとめて提供する。
【0244】
図19は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクの完了を要求するための例示的なプロセス1900をフローチャート形式で示す。例示的なプロセス1900は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図19に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクの完了を要求するための例示的なプロセス1900を実行し得る。図19に示される例示的なプロセス1900で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0245】
図20は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解を提案するための例示的なプロセス2000をフローチャート形式で示す。例示的なプロセス2000は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図20に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解を提案するための例示的なプロセス2000を実行し得る。図20に示される例示的なプロセス2000で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0246】
図21は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解に異議を申し立てるための例示的なプロセス2100をフローチャート形式で示す。例示的なプロセス2100は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図21に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解に異議を申し立てるための例示的なプロセス2100を実行し得る。図21に示される例示的なプロセス2100で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0247】
図22は、図3に関連して説明したような及び一実施形態による、ブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解に対して異議申立者を仲裁するための例示的なプロセス2200をフローチャート形式で示す。例示的なプロセス2200は、図1に関連して説明したブロックチェーン・ネットワーク100等の、ブロックチェーン・ネットワークの図1に関連して説明したノード102のうちの1つ等のノードによって実行され得る。つまり、図1に関連して説明したノード102のうちの1つ等のノードは、図22に関連して説明するブロックチェーン・ネットワークに関連する計算タスク分散システムに関して、タスクに対する解に対して異議申立者を仲裁するための例示的なプロセス2200を実行し得る。図22に示される例示的なプロセス2200で実行される1つ又は複数の動作は、並列を含む様々な順序及び組合せで実行され得ることに留意されたい。
【0248】
例示的なプロセス1900のステップ1902において、ノード(本明細書では「要求者」と呼ばれ得る)が要求を行う。要求は、タスクを完了するための要求であり得る。例えば、タスクは作業成果物の要求であり得る。より具体的には、そのタスクは、プロセッサ作業成果物(すなわち、プロセッサが計算の出力等の規定された作業成果物を生成するための)の要求であり得る。タスクは、費用のかかる計算、金融契約等の外部ソースからの入力を必要とするタスク、又はアルゴリズムや文書等の特定のプロパティを有するデータを生成するタスクであり得る。要求は、タスクの成功裏の完了と引き換えに、ブロックチェーン・ネットワーク(例えば、図1に関連して説明したブロックチェーン・ネットワーク100)に関連するデジタル資産の形式で報奨金を提供する。要求は、ブロックチェーンの外部(つまり、「オフチェーン」)から発せられ得る。例えば、要求は、インターネット経由でアクセス可能なWebサーバで発せられ得る。要求に対する候補解が一定期間(ここでは「異議申立て期間」と呼ばれ得る)異議申立てされないとき、又は計算をゴーストチェーンで再実行することにより異議申立てが解決し得る場合に、候補解がオンチェーン計算の結果と一致することが判明したときに、要求は、成功裏に完了したと規定され得る。
【0249】
(ステップ1902において)要求は、計算タスク分散システムで発せられ得る。計算タスク分散システムは、様々な要求者によって要求されるタスクのコレクションを含み得る。例えば、複数のタスクが計算タスク分散システムで発行され得る。タスクは、同じ要求者又は別の要求者によって発行され得る。計算タスク分散システムにより、ノードが、計算又はアルゴリズムのパフォーマンスを他のノードにオフロードできる。
【0250】
例示的なプロセス2000のステップ2002において、本明細書で提案者と呼ばれるノードが要求を特定する。次に、ノードは、(ステップ2004において)タスクをオフチェーンで完了するよう進む。例えば、要求者によって要求されたアルゴリズム、データ、又は他の結果は、プロセッサによる作業成果物として取得される場合がある。
【0251】
次に、提案者は、例示的なプロセス2000のステップ2006において提案を提出することができる。提案は、例示的なプロセス1900のステップ1902において要求者によって発せられた要求に関連するタスクを完了したという主張であり得る。提案を提出するために、提案者は、ブロックチェーン・ネットワークの公開キーを要求者に送信することができる。提案者は、タスクに対する解にコミットすることもできる。このコミットは、解のハッシュ(つまり、計算の出力や別のタイプの解等の作業成果物のハッシュ)の形式にすることができる。
【0252】
要求者は、例示的なプロセス1900のステップ1904において提案を受け取る。例えば、要求者は、提案者の公開キー及び「コミット」(例えば、目的の作業成果物のハッシュ)を受け取ることができる。
【0253】
提案の受取りに応じて、例示的なプロセス1900のステップ1906において、要求者は、トランザクションT1を構築することができる。トランザクションT1には、入力として報奨金が含まれる。トランザクションには、出力として報奨金と提案者の預託金(つまり、T1の出力、T1_out=報奨金+提案者の預託金)とが含まれる。トランザクションT1に署名して、提案者が自分の入力に追加できるようにし得る。例えば、トランザクションT1は、SIGHASH_ALL|SIGHASH ANYONECANPAYに署名され得る。SIGHASH_ALLは、署名スクリプトを除くトランザクション全体に署名するデフォルトの署名ハッシュタイプであり得、署名された部分の変更を防止する。SIGHASH ANYONECANPAYは、現在の入力のみに署名する署名ハッシュタイプであり得る。
【0254】
トランザクションT1は、2つの方法でロック解除されるように構築することができる。(後述する)異議申立て期間の終了後に、そのトランザクションT1は、提案者の署名(つまり、提案者が要求者に提供した公開キーに対応する署名)とコミットに対応する解でロックを解除できる。例えば、命令コードOP_CHECKSEQUENCEVERIFYを使用して、異議申立て期間に亘ってトランザクションをロックできるが、この期間内に異議申立てがない場合に、提案者によってロックを解除できる。トランザクションT1は、上述したようにいつでもコングレスのグループ署名でロック解除されるように構築することもできる。つまり、コングレスのしきい値署名方式に従って、コングレスのメンバーであるノードが協力してそれぞれの秘密キーシェアを使用し、トランザクションT1をロック解除するときに、異議申立て期間の終了前又は後にトランザクションT1をロック解除することができる。
【0255】
トランザクションT1には、コミット等の疑わしい(未確認の)解に関する情報も含まれる場合がある。例えば、OP_PUSHDATA命令コードを使用して、目的の作業成果物のハッシュをトランザクションT1に追加することができる。より具体的には、目的の成果物のハッシュをトランザクションT1のロックスクリプトに追加することができる。このロックスクリプトは、ロックスクリプトに含まれる目的の作業成果物のハッシュにハッシュする解を与えるロック解除スクリプトによって(異議申立て期間の終了後に)ロック解除されるように構成できる。
【0256】
図19及び図20に示されていないが、提案者は、ステップ1906において構築されたトランザクションT1を受け取り、提案者の預託金を入力としてトランザクションT1に追加することができる。提案者は、トランザクションをブロックチェーン・ネットワークの他のノードにブロードキャストする。トランザクションT1は、ブロックチェーン上でマイニング(つまり、ブロックに追加)され、公開される。
【0257】
トランザクションT1がブロックチェーンにマイニングされると、異議申立て期間が開始され、その間に、任意のノードが提案者によって提出された提案に異議を申し立てることができる。異議申立て期間中に異議申立てがなされなかった場合に、提案者は、トランザクションT1から報奨金及び提案者の預託金を請求することができる。提案者は、異議申立て期間に残っている時間を追跡するためにタイマーを開始し、異議申立て期間が終了すると自動的にアクションを取ることができる。例えば、提案者は、作業成果物(本明細書では解と呼ばれ得る)を要求者に提供し、トランザクションのロックを解除できる。
【0258】
提案者は、要求者に解を直接提供することはできない。代わりに、提案者は、メインブロックチェーン・ネットワーク上のトランザクションに解を埋め込むことにより解を提供できる。例えば、提案者は、報奨金及び提案者の預託金を制限する(トランザクションT1内の)ロックスクリプトをロック解除するロック解除スクリプト(例えば、T1のロックスクリプトをTRUEと評価するロック解除スクリプト)で解を提供できる。上述したように、ロックスクリプトは、ロック解除スクリプト内の提案される解が、要求者が提案者によって以前に与えられた値(つまり、「コミット」)にハッシュすることを確認するように構成され得る。ロック解除スクリプトが、トランザクションT1のロックスクリプトによって以前制限されたデジタル資産(つまり、トランザクションT1のUTXO)を制限するロックスクリプトを成功裏にロック解除すると、ロック解除スクリプトを含むトランザクションは、デジタル資産(つまり、提案者の預託金及び報奨金)を新しいロックスクリプト(これは、例えば、提案者の公開キーを使用してデジタル資産を制限し、提案者がデジタル資産を完全に制御できるようにする)で制限することによってトランザクションをロック解除する。
【0259】
上述したように、トランザクションT1は、OP_CHECKSEQUENCEVERIFYコードを使用して、報奨金及び提案者の預託金をロックするように構築することができる。これにより、提案者が、異議申立て期間の終了後に、要求者からの更なる承認なしに、報奨金及び提案者の預託金を自動的に請求できる。
【0260】
提案者の解に対して異議申立てがない場合に、異議申立てプロトコル又はゴーストチェーンプロトコルの実行を必要とせずに、プルーフオブワーク・メインブロックチェーンで完全なトランザクションを実行できることに留意されたい。
【0261】
しかしながら、異議申立者は異議申立て期間中に異議申立てを行うことができる。例えば、例示的なプロセス2100のステップ2102において、異議申立者は異議申立てを行う。異議申立者は、例示的なプロセス2000のステップ2002及びステップ2004と同様の動作を行うことができる。つまり、異議申立者は、要求を特定し、ステップ2102において異議申立てを行う前にタスクをオフチェーンで完了させ得る。また、異議申立者は、異議申立者の解が提案者の解と異なると判定することにより、異議申立てを行う必要があると判断し得る。例えば、異議申立者は、自分の解のハッシュを実行し、そのハッシュを提案者の解のハッシュと比較することができ、ハッシュが異なる場合に、異議申立者は異議申立てを行うことができる。
【0262】
図21の例示的なプロセス2100のステップ2102において、異議申立者は、異議申立て期間内に異議申立てを行う。異議申立者は、異議を申し立てる意図をブロックチェーン・ネットワークにブロードキャストすることにより、異議申立てを行うことができる。異議申立てがなされると、ノードのグループが、解の有効性を判断するのに支援することができる。
【0263】
例えば、ノードのグループがコングレスを形成し、このコングレスは、異議申立てが提起されたときに仲裁を行うために使用され得る。上述したように、コングレスは、プルーフオブワーク・ブロックチェーン・ネットワーク上のデジタル資産の預託によって保証される。例示的なプロセス2200のステップ2202において、仲裁者の例示的なプロセス2200を実行する仲裁者は、上述したようにコングレスに加入することができる。従って、ステップ2202において、仲裁者は、コングレスに関連する公開グループアドレスにデジタル資産を、コングレスと呼ばれ得るグループに預託することにより加入して、グループメンバーになる。仲裁者は、プルーフオブワーク・ブロックチェーン・ネットワーク上でこの預託を行う。上述したように、グループは、ノードが秘密キーシェアを制御するためのしきい値署名方式に関連付けられてもよい。グループへの加入(登録とも呼ばれ得る)は、例えば、ゴーストチェーンの展開中に行われ得る。図22は、ステップ2202(コングレスへの加入)がステップ2206(ゴーストチェーンの展開)の前に行われるのを示しているが、ステップ2202は、ゴーストチェーンの以前の展開中(つまり、ステップ2206における展開中ではない)にコングレスに加入したノードによって実行され得る。しかしながら、ステップ2206、ステップ2208、及びステップ2210は、例えば、ステップ2206中にグループに加入するノードによって実行してもよい。
【0264】
ステップ2204において、仲裁者は、グループの他のノードと協力して、例示的なプロセス2100のステップ2102において異議申立者によってなされた異議申立てを検出する。より具体的には、仲裁者は、グループの他のノードと協力して、要求者が行った要求に応じて提案者の作業成果物に対する異議申立者による異議申立てを検出する。
【0265】
上述したトランザクションT1により、異議申立てがなされると、グループは、報奨金及び提案者の預託金の管理を引き継ぐ。つまり、トランザクションT1は、いつでもコングレスによってロック解除可能になるように構築され得る。従って、報奨金及び預託金はグループの管理下に置かれ、維持される。こうして、異議申立てが発生するかどうかに関係なく、グループは、報奨金及び提案者の預託金を管理する。一実施形態では、異議申立てが検出されると、グループは、異議申立てに関連するロック解除トランザクションに共同して署名して、本明細書で説明するように分配金及び/又は預託金を分配する。本明細書で説明するように、分配金及び/又は預託金は、いつでもグループによって償還可能であるが、関連するタイムアウト期間後に、提案者(又は、成功した場合は異議申立者)によってのみ償還可能である。
【0266】
グループが報奨金及び提案者の預託金を管理した後に、異議申立者の検出に応じて、仲裁者は、グループの他のノードと協力して、異議申立者によるデジタル資産の預託を促進することができる。例えば、異議申立ての検出に応じて、コングレスは、報奨金及び提案者の預託金に等しい入力(例えば、T2_in=報奨金+提案者の預託金)と、報奨金、提案者の預託金、及び異議申立者の預託金の合計に等しい出力(例えば、T2_out=報奨金+提案者の預託金+異議申立者の預託金)とを含むトランザクションT2を構築することができる。トランザクションT2は、いつでもグループに配布するように構成できる。つまり、トランザクションT2は、コングレス公開キーに配布するように構成できる。トランザクションT2は、SIGHASH_ALL|SIGHASH ANYONECANPAYに署名され得る。仲裁者は、他の仲裁者とともに、異議申立者の預託金を入力として追加するために、トランザクションT2を異議申立者に提供できる。例えば、仲裁者は、他のノードと一緒に、トランザクションT2を他のノードに公開できる。
【0267】
トランザクションT2が公開された後に、異議申立者は、異議申立者の預託金を入力としてトランザクションT2に追加する。つまり、異議申立者は、デジタル資産の預託金を(例示的なプロセス2100のステップ2104において)提供し、そのような預託金をグループの管理下に置く。より具体的には、異議申立者の預託金は、コングレス公開キーの管理下に置かれ得る。従って、報奨金、提案者の預託金、及び異議申立者の預託金は、全てグループの管理下に置かれ、コングレス公開キーによって制限される。上記のコングレスの説明で詳細に説明したように、しきい値署名方式により、しきい値の数のコングレス・メンバーが、それぞれの秘密キーシェアを使用して、報奨金、提案者の預託金、及び異議申立者の預託金を含むトランザクションの有効な署名を協力して生成できる。提案者の預託金と異議申立者の預託金とが、同じサイズである場合がある。
【0268】
異議申立者は、異議申立ての解にコミットすることもできる。例えば、異議申立者は、例えば命令コードOP_PUSHDATAを使用して、解のハッシュをトランザクションT2に追加できる。
【0269】
トランザクションT2は、メインブロックチェーン・ネットワークにブロードキャストされ、且つメインブロックチェーン・ネットワーク上でマイニングされ得るため、異議申立者の預託金は、コングレス公開キーによって制限される。報奨金、提案者の預託金、及び異議申立者の預託金は、グループの独占的管理下に置かれ得る。
【0270】
こうして、異議申立者は、代替解のエビデンス及び預託金を仲裁者に提供する。例示的なプロセス2200のステップ2206において、トランザクションT2がメインブロックチェーン・ネットワーク上にマイニングされた後に、仲裁者は、グループの他のノードと協力してゴーストチェーンを展開して異議申立てを解決する。上述したように、ゴーストチェーンは、ゴーストチェーンのマイニングノードがグループのメンバーであるプルーフオブステーク・ブロックチェーンであり得る。つまり、コングレスのメンバーは、ゴーストチェーンでのマイニングを許可され得る。プルーフオブワーク・ブロックチェーン・ネットワーク上のメンバー預託金は、コングレスのメンバーがゴーストチェーンでマイニングできるようにするための出資金として機能し、メンバーがマイニングに選択される確率は、預託金の相対額に比例する場合がある。
【0271】
(ステップ2206において)ゴーストチェーンが展開されている間に、グループの他のノードと協力して仲裁者が、ゴーストチェーンのジェネシス・ブロックを作成又は取得することができる。ジェネシス・ブロックは、最後のゴーストチェーン展開による最終ブロック(例えば、ゴーストチェーンが実行され、過去の異議申立てに応答して前回の実行が行われた最後のインスタンスによる末端ブロック)であり得る。このブロックには、ジェネシス分配に関する情報が含まれ得る。ジェネシス分配は、デジタル資産の転送であり得るが、これは未だ行われておらず、ゴーストチェーンの以前の展開に基づいている。
【0272】
さらに、ゴーストチェーンが展開されている間に、メンバーは、登録を許可されたり、グループからの登録解除を要求したりできる。登録段階の間に、新しいメンバーを登録して、本明細書で説明するようにメンバーに秘密キーシェアを割り当てることができる。新しいメンバーには、ジェネシス・ブロック(現在のしきい値のメンバーによって認証され得る)と登録プロセス中に生成された後続のブロックとが提供され得る。
【0273】
ゴーストチェーンの実行には、事前登録解除の段階も含まれ得る。この登録解除前の段階の間に、登録解除を要求したメンバーは、特定の個人データの削除の証明を送信できる。このような証明は、メンバー預託金の返却に必要になる場合がある。メンバー預託金の返却を妨げる可能性のある不正行為の証拠は、この段階で送信できる(例えば、新しく登録されたメンバーは、現在のメンバー(複数可)によって事前にコミットされているが、偽物であると疑われるジェネシス・ブロックを送信できる)。登録解除の手法については、上で詳しく説明している。
【0274】
ゴーストチェーンの展開には、グループの他のノードと協力する仲裁者による、仲裁操作を含めることができる。仲裁操作には、提案者及び異議申立者から証拠を受け取り、その証拠に基づいて異議申立てを解決することが含まれ得る。例えば、受け取った証拠には、最終的な解又は中間結果の一方又は両方が含まれ得る。中間結果は、要求されたタスクを実行するために必要なステップ又は一連のステップの結果であり得る。例えば、中間ステップは、タスクの部分的な作業成果物であり得る。最終的な解は、要求されたタスクを完了する最終的な作業成果物であり得る。証拠は、例示的なプロセス2000のステップ2008において提案者によって、及び例示的なプロセス2100のステップ2106において異議申立者によって提出してもよい。
【0275】
仲裁者及びコングレスの他のノードは、要求に関連するタスクを実行して正しい解を決定することにより、異議申立てを解決することができる。例えば、タスク(例えば、計算又はアルゴリズム)は、オンチェーンで(つまり、ゴーストチェーン自体で)実行され得る。
【0276】
グループは、そのような解をゴーストチェーンで決定された特有の解と比較することで、提案側文字列と異議申立側文字列とのどちらが正しいかを判断できる。このプロセス中に、グループメンバー(つまり、ゴーストチェーン・マイニングノード)が計算及び/又は解析を実行して、紛争に関する仲裁を行う。グループメンバーは、このプロセス中にコンセンサスに達し、ブロックに署名する。
【0277】
計算要件及び時間遅延を減らすために、グループは、ゴーストチェーンを使用して異議申立てを解決しながらバイナリサーチ手順を実行できる。より具体的には、提案者及び異議申立者はそれぞれ、計算又は解析に関する1つ又は複数の中間結果を提供してもよい。計算又は解析の入力は提案者と異議申立者との両方で同じである可能性があり(要求者が指定したように)、出力が異なる可能性があるため、異議申立者及び提案者が分岐する中間ステップ同士の間に移行がある可能性がある。このような移行が特定されると、グループは、ゴーストチェーンを使用して、移行に関連する単一の動作、ステップ、又は手順のみを実行すればよい。こうして、仲裁者は、他のノードと協力して、ゴーストチェーン上のタスクの一部のみを実行し、提案者又は異議申立者のいずれかが要求に関連するタスクの中間ステップでエラーを起こしたと判断することができる。このバイナリサーチ手法では、グループは正しい解を特定できず、むしろ誤った解を特定する可能性がある。グループが正しい解を決定しないため、誤っていると特定されていない解は、必ずしも正しいとは限らない。
【0278】
(グループの他のノードと協力して)仲裁者は、ゴーストチェーンが展開されている間に判断を下す。仲裁者及びコングレスの他のノードが異議申立てを解決するとき(つまり、そのようなノードが解決に関してコンセンサスを形成するとき)に、判断に達したと言うことができる。
【0279】
ブロックチェーンで仲裁の判断に達した後に、仲裁者は、グループの他のノードと協力して最終的なトランザクション(完全に署名されたときにメインブロックチェーン・ネットワークにマイニングされる)を構築する。決済トランザクションとも呼ばれ得る最終トランザクションには、様々なデジタル資産移転;例えば、報奨金+預託金(これは、判定の過程で成功又は正当であるとみなされたノードに転送され得る);マイニング分配金(既に実行されているゴーストチェーンマイニングの場合);ジェネシス転送(これは、ゴーストチェーンの以前の実行に基づいて発生するデジタル資産転送であり得、且つジェネシス・ブロックから決定される);及び/又は退会したメンバーのメンバー預託金の返却が含まれ得る。
【0280】
このトランザクションには、有用なメタデータも含まれる場合がある。例えば、決済トランザクションは、解をブロックチェーン・ネットワークに戻すことがある。従って、このプロセス中に、グループ(つまり、グループの他のノードと協力する仲裁者)は、判定の結果をブロックチェーン・ネットワークにコミットできる。グループは、ゴーストチェーン上のオンチェーンで決定された中間計算状態のマークル(Merkle)ルートハッシュをブロックチェーン・ネットワークにコミットすることもできる。
【0281】
グループ管理下のデジタル資産は、グループの他のノードと協力して仲裁者によって(ステップ2208によって)分配してもよい。そのようなデジタル資産の分配は、コングレスのために(つまり、グループのために)規定されたしきい値署名方式に従って実行され得る。上記のコングレスの議論で述べたように、しきい値署名方式は、コングレス公開キーの有効な署名を生成するために、少なくともしきい値数のメンバーが必要となるように構成され得る。従って、仲裁者は、グループの他のノードと一緒に(つまり、他の仲裁者と一緒に)、仲裁者の秘密キーシェアを使用して最終トランザクションに部分的な署名を追加することにより、デジタル資産の転送に同意することができる。しきい値署名方式の下で必要な少なくともしきい値数の秘密キーシェアを使用して最終トランザクションの有効な署名を作成するまで、他のノードも、それぞれの秘密キーシェアを使用して部分的な署名を追加する。
【0282】
最終トランザクションでデジタル資産を分配する特定の方法は、仲裁の結果に依存し得る。例えば、異議申立てが成功すると、仲裁者は、他のノードと協力して、少なくとも異議申立者の預託金を異議申立者に転送し、マイニングしたブロックの絶対数に比例して提案者の預託金をゴーストチェーンのマイニングノードに分配することができる。異議申立てが成功し、異議申立者の解が正しいと判断された場合に、報奨金も異議申立者に転送され得る。こうして、異議申立者は、例示的なプロセス2100のステップ2108においてデジタル資産を受け取ることができる。しかしながら、正しい解が特定されないようにバイナリサーチが使用される場合に、報奨金は要求を再び申し立てる要求者に返却され得、異議申立者が回答に基づいて提案を提出できるようにする。あるいはまた、提案者がバイナリサーチによって排除されると、要求者は、異議申立者のコミットを提案として取り扱い、例示的なプロセス1900のステップ1906において動作を再開することができる。つまり、要求者は、異議申立者の提案に基づいて新しいトランザクションT1を構築することができる。このトランザクションは、以前に異議申立者であると見なされていたノードが現在提案者であるとみなされる場合があることを除いて、ステップ1906を参照して上述した通りであり得る。こうして、新しいトランザクションT1は、上述したトランザクションT2で異議申立者によって提供される解のハッシュに対応する解を与えることにより、異議申立て期間の終了後に異議申立者によってロック解除されるように構築され得る。
【0283】
提案者の作業成果物が有効であると判断された場合に、仲裁者は、他のノードと協力して報奨金及び提案者の預託金を提案者に転送し、マイニングしたブロックの絶対数に比例して異議申立者の預託金をゴーストチェーンのマイニングノードに分配することができる。こうして、提案者は、例示的なプロセス2000のステップ2010においてデジタル資産を受け取ることができる。
【0284】
提案者の解と異議申立者の解との両方が間違っている場合に、マイニングしたブロックの絶対数に比例して、異議申立者の預託金の半分と提案者の預託金の半分とがマイニングノードに分配され得る。残りの預託金は、その預託金を受け取った関係者に返却される場合がある。
【0285】
要求者は、例示的なプロセス1900のステップ1908において解を受け取る。ステップ1908において要求者が解を受け取る方法は、異議申立てがなされたかどうかに依存し得る。例えば、異議申立てがなされなかった場合に、提案者は、例示的なプロセス1900のステップ1906を参照して上述したトランザクションT1を使用して、ブロックチェーンに解をコミットした。しかしながら、異議申立てがなされ、ゴーストチェーンによって要求に対する解が決定される場合に、ゴーストチェーン・ノードは、ゴーストチェーンの終了時に(例えば、例示的なプロセス2200のステップ2210において)解を要求者に送信してもよい。従って、ゴーストチェーンプロトコルにより、ゴーストチェーンに参加しているノードは、解を決定すると、解を要求者に自動的に送信することができる。
【0286】
さらに、ゴーストチェーンで判断に達し、トランザクションが構築され、有効に署名された後に、ゴーストチェーンは、(例示的なプロセス2200のステップ2210において)終了し得る。つまり、異議申立てが解決されると、ゴーストチェーンは終了する。ゴーストチェーンが終了すると、異議申立ての解決に関連する情報が、プルーフオブワーク・ブロックチェーン・ネットワークに戻され得る。
【0287】
ゴーストチェーンが終了すると、ゴーストチェーンに更なるブロックを追加することはできない。つまり、典型的なブロックチェーンとは異なり、ゴーストチェーンには末端ブロックがある。ゴーストチェーンは、分岐しないプルーフオブステーク・ブロックチェーンとして実施できる。分岐が存在しないということは、ゴーストチェーンが終了するときに明確な末端ブロック(つまり、グループの全てのノードによって合意された末端ブロック)が存在し得ることを意味する。この端末ブロックの後に、ゴーストチェーンは、目的を果たし、追加できなくなる。
【0288】
前述したように、仲裁者(つまり、コングレスのノード)が判断に達すると、ノードは、上述したようにしきい値署名方式による部分的な署名の追加によって有効な署名のトランザクションが生成されると、メインチェーン上で(ステップ2208において)ブロードキャストされ得るトランザクションを構築するために協力する。このトランザクション自体は他者間計算であるため、このトランザクションに寄与するノードは、このトランザクションに参加するために、デジタル資産の少なくとも一部の分配を受け取ることがある。ただし、トランザクションは署名される前に指定されるため、署名に参加するための報酬(トランザクションを介したゴーストチェーンへの部分的な署名の送信、及び実際のブロックのマイニングを含む)は、更なるゴーストチェーンが展開されるまで延期される場合がある。そのような延期は、ステップ2210で提供され得る。より具体的には、末端ブロックは、ゴーストチェーンの将来の展開中にジェネシス分配を処理可能にする情報を用いて構築され得る。このような情報は、最終トランザクションの署名中に作成されたブロック等の、最終トランザクションの構築後に作成されたブロックに起因し得るマイニング分配の記録であり得る。つまり、ジェネシス分配は、最終トランザクションの署名に寄与したノードに分配されるように設計できる。ゴーストチェーンの末端ブロックは、次のゴーストチェーンの実行の(つまり、ゴーストチェーンが次に展開されるとき)ジェネシス・ブロックになり得る。従って、将来のジェネシス分配のために、末端ブロックに記録が作成される。
【0289】
直ぐ上で示した実施態様によると、メンバーは、ゴーストチェーンの実行中に登録/登録解除を行うが、これは異議申立てによってトリガーされ得る。代替の実施態様では、定期的間隔又は他の条件下での登録/登録解除も可能である。これには、この目的専用のゴーストチェーンのスケジュール調整された実行が含まれる場合があり、これは、判定及び判断段階がないことを除いて、上述したゴーストチェーン展開と同様である。この場合に、マイニング分配金は、登録の見返りとして必要となり得る「登録分配金」から少なくとも部分的に分配され得る。
【0290】
また、上述した例示的なプロセス2200では、最初のゴーストチェーンの実行ではない可能性のあるゴーストチェーンの実行について説明していることに留意されたい。つまり、例示的なプロセス2200は、過去のある時点で展開されていたゴーストチェーンの展開を説明しており、ゴーストチェーンに対してジェネシス分配を含む末端ブロックが既に存在する。例示的なプロセス2200は、第1のゴーストチェーンを展開できるように修正することができる。例えば、ゴーストチェーンが初めて展開されるとき、別の方法でジェネシス・ブロックを確立できる。例えば、ジェネシス・ブロックは、最初に信頼された関係者によって提供され得る。
【0291】
プルーフオブステークベースのブロックチェーンを使用して異議申立てを仲裁することにより、ゴーストチェーンの解は、プルーフオブステークにより、より定期的なブロック生成が可能になり、且つ高い頻度でブロック生成を可能にするように構成できるため、プルーフオブワーク・ブロックチェーン・ネットワーク自体でそのような仲裁を行うよりも速い解決策を提供できる。さらに、メインブロックチェーン自体ではなくゴーストチェーン上でこのような仲裁操作を実行することにより、メインブロックチェーン・ネットワークからタスクが押し出され得るため、メインブロックチェーン・ネットワークの負荷が軽減される。
【0292】
さらに、ゴーストチェーンの一時的な性質(つまり、ゴーストチェーンが本質的に一時的なものであり、終了するという事実)は、典型的に、プルーフオブステーク・ブロックチェーン・ネットワークに影響を与える出資時に何も無い(nothing-at-stake)問題のリスクを回避又は軽減し得る。ゴーストチェーン・ネットワークの一時的な性質により、コングレスは、ゴーストチェーンが終了するまで、ゴーストチェーンのマイニングノードに対して、預託金を所定の場所に残しておくよう要求することができる。つまり、ゴーストチェーンの実行中に、コングレス・メンバーが自分の出資金を引出しできないようにコングレスを構成できる。
【0293】
上述した例ではビットコインで利用可能な命令コードについて言及しているが、本明細書で説明する方法は他のタイプのブロックチェーン・ネットワークでも使用できることに留意されたい。
【0294】
図23は、本発明の様々な実施形態を実施できる例示的なコンピュータ装置2300をブロック図形式で示す。図23は、本開示の少なくとも一実施形態を実施するために使用され得る例示的なコンピュータ装置2300の簡略ブロック図を示している。様々な実施形態では、例示的なコンピュータ装置2300を使用して、本明細書で例示し且つ上述したシステム又は方法のいずれかを実施することができる。例えば、例示的なコンピュータ装置2300は、データサーバ、ウェブサーバ、ポータブルコンピュータ装置、パーソナルコンピュータ、又は任意の電子コンピュータ装置として使用するために構成され得る。図23に示されるように、例示的なコンピュータ装置2300は、バス・サブシステム2304を介して複数の周辺サブシステムと通信し、動作可能に結合するように構成され得る1つ又は複数のプロセッサ2302を含み得る。これらの周辺サブシステムは、メモリ・サブシステム2308及びファイルストレージ・サブシステム2310を含むストレージ・サブシステム2306、1つ又は複数のユーザインターフェイス入力装置2312、1つ又は複数のユーザインターフェイス出力装置2314、及びネットワークインターフェイス・サブシステム2316を含み得る。このようなストレージ・サブシステム2306は、本開示で説明したトランザクション又は動作に関連する情報の一時的又は長期のストレージに使用できる。
【0295】
バス・サブシステム2304は、例示的なコンピュータ装置2300の様々なコンポーネント及びサブシステムが意図するように互いに通信可能にするためのメカニズムを提供することができる。バス・サブシステム2304が単一のバスとして概略的に示されているが、バス・サブシステムの代替実施形態では複数のバスを利用してもよい。ネットワークインターフェイス・サブシステム2316は、他のコンピュータ装置及びネットワークへのインターフェイスを提供し得る。ネットワークインターフェイス・サブシステム2316は、例示的なコンピュータ装置2300からデータを受信し、他のシステムにデータを送信するためのインターフェイスとして機能し得る。例えば、ネットワークインターフェイス・サブシステム2316は、ユーザが、本明細書で説明するように装置を無線ネットワークに又は他のネットワークに接続できるようにし得る。バス・サブシステム2304は、本開示で説明するトランザクション又は動作に関連するデータを、ネットワークインターフェイス・サブシステム2316を介して1つ又は複数のプロセッサ2302及び/又はシステム外部の他のエンティティに通信するために利用され得る。
【0296】
ユーザインターフェイス入力装置2312は、キーボード等の1つ又は複数のユーザ入力装置、統合マウス、トラックボール、タッチパッド、又はグラフィックタブレット等のポインティング装置、スキャナー、バーコードスキャナー、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイク等のオーディオ入力装置、及び他の種類の入力装置を含み得る。一般に、用語「入力装置」の使用は、情報をコンピュータ装置2300に入力するための全ての可能なタイプの装置及びメカニズムを含むものとする。1つ又は複数のユーザインターフェイス出力装置2314は、ディスプレイ・サブシステム、プリンタ、又は音声出力装置等の非視覚化ディスプレイを含み得る。ディスプレイ・サブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)等のフラットパネル装置、発光ダイオード(LED)ディスプレイ、又はプロジェクション又は他のディスプレイ装置であり得る。一般に、用語「出力装置」の使用は、コンピュータ装置2300から情報を出力するための全ての可能なタイプの装置及びメカニズムを含むものとする。1つ又は複数の出力装置2314を使用して、そのような(アプリケーションとユーザとの)対話が適切な場合に、例えば、本明細書で説明するプロセス及びそのバリエーションを実行するアプリケーションとのユーザ対話を促進するユーザインターフェイスを提示することができる。
【0297】
ストレージ・サブシステム2306は、本開示の少なくとも一実施形態の機能を提供し得る基本的なプログラミング及びデータ構造を記憶するためのコンピュータ可読記憶媒体を提供し得る。アプリケーション(プログラム、コードモジュール、命令)は、1つ又は複数のプロセッサにより実行されると、本開示の1つ又は複数の実施形態の機能を提供し、ストレージ・サブシステム2306に格納され得る。これらのアプリケーションモジュール又は命令は、1つ又は複数のプロセッサ2302によって実行され得る。ストレージ・サブシステム2306は、本開示に従って使用されるデータを格納するためのリポジトリをさらに提供し得る。ストレージ・サブシステム2306は、メモリ・サブシステム2308及びファイル/ディスク・ストレージ・サブシステム2310を含み得る。
【0298】
メモリ・サブシステム2308は、プログラム実行中に命令及びデータを格納するためのメインランダムアクセスメモリ(RAM)2318と、固定命令を格納できる読み取り専用メモリ(ROM)2320とを含む複数のメモリを含み得る。ファイルストレージ・サブシステム2310は、プログラム及びデータファイルのための非一時的な永続的(不揮発性)ストレージ(本明細書では非一時的コンピュータ可読記憶媒体とも呼ばれる)を提供し、且つハードディスクドライブ、関連するリムーバブルメディアと一緒のフロッピーディスクドライブ、コンパクトディスク読み取り専用メモリ(CD-ROM)ドライブ、光学ドライブ、リムーバブルメディア・カートリッジ、及び他の同様のストレージメディアを含み得る。
【0299】
例示的なコンピュータ装置2300は、少なくとも1つのローカルクロック(local clock)2324を含み得る。ローカルクロック2324は、特定の開始日から発生したティック(tick)数を表すカウンタであり、且つ例示的なコンピュータ装置2300内に一体的に配置され得る。ローカルクロック2324は、特定のクロックパルスで例示的なコンピュータ装置2300及びそこに含まれる全てのサブシステムのプロセッサでのデータ転送を同期するために使用でき、例示的なコンピュータ装置2300とデータセンター内の他のシステムとの間の同期動作を調整するために使用できる。一実施形態では、ローカルクロック2324は原子時計である。別の実施形態では、ローカルクロックはプログラム可能なインターバルタイマーである。
【0300】
例示的なコンピュータ装置2300は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は本明細書で説明する任意の他の装置を含む様々なタイプのものであり得る。さらに、例示的なコンピュータ装置2300は、1つ又は複数のポート2326(例えば、USB、ヘッドフォンジャック、照明コネクタ等)を介して例示的なコンピュータ装置2300に接続され得る別の装置を含み得る。例示的なコンピュータ装置2300に接続され得る装置は、光ファイバコネクタを受容するように構成された複数のポートを含み得る。従って、例示的なコンピュータ装置2300に接続され得る装置は、光信号を、(処理のために装置を例示的なコンピュータ装置2300に接続するポートを介して送信され得る)電気信号に変換するように構成され得る。コンピュータ及びネットワークの絶えず変化する性質のために、図23に示される例示的なコンピュータ装置2300の説明は、装置の実施形態を例示するための特定の例としてのみ意図している。図23に示されるシステムよりも多い又は少ないコンポーネントを有する他の多くの構成が可能である。
【0301】
従って、明細書及び図面は、制限的な意味ではなく、例示的な意味でみなすべきである。もっとも、特許請求の範囲に記載されている本発明のより広い精神及び範囲から逸脱することなく、様々な修正及び変更を行うことができることは明らかであろう。
【0302】
他の変形形態は、本開示の精神内にある。こうして、開示された技術は様々な修正及び代替の構成の影響を受けやすいが、その特定の例示的な実施形態について図面に示し、詳細に上述してきた。ただし、本発明を開示された特定の形態(複数可)に限定する意図はないが、反対に、添付の特許請求の範囲に規定されるように、本発明の精神及び範囲内にある全ての修正、代替構成、及び同等物を網羅すること意図していることを理解されたい。
【0303】
開示される実施形態を説明する文脈において(特に以下の特許請求の範囲の文脈において)用語「1つの(a, an)」及び「その(the)」及び同様の指示語の使用は、本明細書で特に明記しない限り、又は文脈によって明らかに矛盾しない限り、単数と複数との両方を網羅すると解釈される。用語「備える、有する、含む(comprising)」、「有する、含む(having)」、「含む、有する(including)」、及び「含む(containing)」は、特に断りのない限り、オープンエンドの用語(つまり、「目的語を含むが、この目的語に限定されない」という意味)と解釈される。用語「接続された(connected)」は、修飾されず、物理的な接続を指す場合に、何かが介在している場合でも、部分的又は全体的に含まれる、取り付けられる、又は接合されると解釈される。本明細書の値の範囲の列挙は、本明細書で特に明記しない限り、個々の値が本明細書に個別に記載されているかのように本明細書に組み込まれている場合を除き、範囲内にある各個別の値を個別に参照する簡略的な方法として機能することを単に意図している。用語「セット」(例えば、「アイテムのセット」)又は「サブセット」の使用は、特に注記がないか、文脈によって矛盾しない限り、1つ又は複数のメンバーを含む空でないコレクションとして解釈すべきである。さらに、特に注記がないか、文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも対応するセットの適切なサブセットを示すものではなく、サブセット及び対応するセットは等しくてもよい。
【0304】
「A、B、及びCの少なくとも1つ」又は「A、B、及びCの少なくとも1つ」の形式のフレーズ等の接続言語は、特に明記しない限り、又は文脈によって明らかに矛盾しない限り、アイテム、用語等がA、B、又はC、或いはAとBとCとのセットの空でないサブセットのいずれかであることを提示するために一般的に使用されるように文脈で理解される。例えば、メンバーが3つのセットの説明例では、「A、B、及びCの少なくとも1つ」及び「A、B、及びCの少なくとも1つ」という接続句は、「A」、「B」、「C」、「A、B」、「A、C」、「B、C」、「A、B、C」のいずれかを指す。こうして、そのような接続言語は、一般に、特定の実施形態が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCがそれぞれ存在することを必要とすることを暗示することを意図しない。
【0305】
本明細書で説明するプロセスの動作は、本明細書で特に指示がない限り、又は文脈によって明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で説明するプロセス(又は、その変形及び/又は組合せ)は、実行可能命令で構成される1つ又は複数のコンピュータシステムの制御下で実行でき、且つハードウェア又はそれらの組合せにより、1つ又は複数のプロセッサで集合的に実行されるコード(例えば、実行可能命令、1つ又は複数のコンピュータプログラム、或いは1つ又は複数のアプリケーション)として実施できる。コードは、例えば、1つ又は複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体に記憶させることができる。コンピュータ可読記憶媒体は、非一時的であってもよい。
【0306】
本明細書に提供されるありとあらゆる例、又は例示的な用語(例えば「等」)の使用は、単に本発明の実施形態をより良く明らかにすることを意図しており、特に主張されない限り本発明の範囲を限定するものではない。明細書中の用語は、特許請求の範囲に記載されていない要素が本発明の実施に不可欠であることを示すと解釈すべきではない。
【0307】
本明細書では、本発明を実施するために発明者に知られている最良の形態を含む本開示の実施形態を説明する。これらの実施形態の変形形態は、前述の説明を読めば、当業者に明らかになり得る。本発明者は、当業者がそのような変形を適宜使用することを予期し、本発明者は、本開示の実施形態が本明細書に具体的に説明されている以外の方法で実施されることを意図する。従って、本開示の範囲には、適用法で認められるように、本明細書に添付された特許請求の範囲に列挙された主題の全ての修正及び同等物が含まれる。さらに、その全ての可能な変形における上述した要素の任意の組合せが、本明細書で特に指示がない限り、又は文脈により明らかに矛盾しない限り、本開示の範囲に含まれる。
【0308】
上述した実施形態は、本発明を限定するのではなく例示するものであり、当業者は、本発明の範囲から逸脱することなく、添付の特許請求の範囲によって規定されるように多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む(comprising, comprises)」等の語は、特許請求の範囲又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む(comprises, comprising)」は、「含む、有する(includes, including)」又は「から構成される(consists of, consisting of)」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化され得る。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【0309】
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
コンピュータで実施される方法であって、当該コンピュータで実施される方法は、
計算タスク分散システムを監視して、要求側コンピュータシステムによって行われた要求に応じて、提案側コンピュータシステムによって提供される提案側文字列に対する異議申立てを検出するステップであって、前記要求は、前記要求に関連する計算タスクと第1のデジタル資産とを指定し、前記提案側文字列は、前記計算タスクに対する解のハッシュによって示され、前記提案側文字列は、前記提案側文字列に関連する提案者トランザクションへの入力で参照される第2のデジタル資産を指定する、検出するステップと、
前記異議申立てを検出した結果として、少なくとも、
第1のブロックチェーン・ネットワークに提供された、少なくとも前記提案側文字列を含む解のセットから1つの解を少なくとも選択することにより、第1のブロックチェーン・ネットワークを使用して前記異議申立てを解決するステップと、
前記解に少なくとも部分的に基づいて、前記第1のデジタル資産及び前記第2のデジタル資産によるデジタル資産を前記計算タスク分散システムの1人又は複数人の関係者に分配するステップと、を含む、
コンピュータで実施される方法。
[実施例2]
前記提案側文字列は、前記提案側文字列に関連するタイムスタンプに少なくとも部分的に基づいて、前記解のセットから選択される、実施例1に記載のコンピュータで実施される方法。
[実施例3]
前記異議申立ては、前記計算タスクに対する異議申立側文字列のハッシュを指定し、前記解のセットは、前記異議申立側文字列を含む、実施例1又は2に記載のコンピュータで実施される方法。
[実施例4]
前記計算タスク分散システムは、プルーフオブワーク・ブロックチェーン・ネットワークに関連するwebサービスとして実施される、実施例1乃至3のいずれか一項に記載のコンピュータで実施される方法。
[実施例5]
前記計算タスク分散システムは、プルーフオブワーク・ブロックチェーン・ネットワーク上で実施される、実施例1乃至3のいずれか一項に記載のコンピュータで実施される方法。
[実施例6]
前記第1のブロックチェーン・ネットワークは、プルーフオブステーク・ブロックチェーン・ネットワークである、実施例1乃至5のいずれか一項に記載のコンピュータで実施される方法。
[実施例7]
前記提案側文字列は、前記計算タスクに解がないことを示す、実施例1乃至6のいずれか一項に記載のコンピュータで実施される方法。
[実施例8]
前記異議申立ては、前記計算タスクに解がないことを示す、実施例1乃至7のいずれか一項に記載のコンピュータで実施される方法。
[実施例9]
前記デジタル資産には、提案者が前記第1のブロックチェーン・ネットワークに提供した預託金が含まれる、実施例1乃至8のいずれか一項に記載のコンピュータで実施される方法。
[実施例10]
前記デジタル資産は、前記第1のデジタル資産、前記第2のデジタル資産、及び前記異議申立てに関連するトランザクションへの入力で参照される第3のデジタル資産から分配される、実施例1乃至9のいずれか一項に記載のコンピュータで実施される方法。
[実施例11]
前記異議申立てを解決するステップは、前記解のセットのうちの1つ又は複数の解の対応する検証動作のセットを実行するステップを含む、実施例1乃至10のいずれか一項に記載のコンピュータで実施される方法。
[実施例12]
前記異議申立てを解決するステップは、少なくとも
提案者から、前記解のセットに関して前記提案側文字列の第1セットの中間結果を受信するステップと、
異議申立者から、前記解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップと、
前記第1セットの中間結果を前記第2セットの中間結果と比較して、前記提案側文字列と前記異議申立側文字列とが分岐する位置を決定するステップと、
解を選択するステップであって、
前記第1のブロックチェーンを使用して、前記位置で前記第1セットの中間結果の1つ又は複数の計算を繰り返すこと、及び
前記第1のブロックチェーンを使用して、前記位置で前記第2セットの中間結果の1つ又は複数の計算を繰り返すことに少なくとも分的に基づいて解を選択するステップと、を少なくとも含む仲裁手順を実行するステップを含む、実施例1乃至11のいずれか一項に記載のコンピュータで実施される方法。
[実施例13]
前記異議申立てを解決するステップは、少なくとも
提案者から、前記解のセットに関して前記提案側文字列の第1セットの中間結果を受信するステップと、
異議申立者から、前記解のセットに関して異議申立側文字列の第2セットの中間結果を受信するステップと、
前記第1セットの中間結果及び前記第2セットの中間結果を解析して、前記提案側文字列と前記異議申立側文字列とが分岐する位置を特定するステップと、
前記解析に少なくとも部分的に基づいて、誤った解を特定するステップと、によって前記解のセットの前記誤った解を特定するステップを少なくとも含む、実施例1乃至12のいずれか一項に記載のコンピュータで実施される方法。
[実施例14]
システムであって、当該システムは、
プロセッサと、
該プロセッサによる実行の結果として、当該システムに実施例1乃至13のいずれか一項に記載のコンピュータで実施される方法を実行させる実行可能命令を含むメモリと、を含む、
システム。
[実施例15]
コンピュータシステムのプロセッサによって実行される結果として、前記コンピュータシステムに実施例1乃至13のいずれか一項に記載のコンピュータで実施される方法を少なくとも実行させる実行可能命令を記憶した非一時的なコンピュータ可読記憶媒体。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23