(57)【要約】コンピュータ実施方法は、ノードのグループに関連付けられる暗号化公開鍵を記憶するステップであって、グループ内の各ノードは、秘密鍵共有に関連付けられ、該秘密鍵共有は、暗号化公開鍵に関連付けられる暗号化秘密鍵が秘密鍵共有の少なくとも閾値から決定されることを可能にするように、グループの閾値秘密鍵再構成スキームに関連付けられる、ステップと；グループの複数のノードによって提供される複数のインジケータを反復的に取得するステップであって、インジケータの各々は、暗号化秘密鍵共有又はダミー信号のうちの一方を表す、ステップと；ｉ）インジケータのサブセットを選択することと、ｉｉ）可能性のある共有秘密を計算することと、ｉｉｉ）各可能性のある共有秘密を暗号化公開鍵に対して評価して、可能性のある共有秘密が暗号化秘密鍵であるかどうかを判断することと、を反復することによって、暗号化秘密鍵を識別するステップとを含む。本発明は、ブロックチェーンにおける実装に適している。
2020526069.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実施方法において：
ノードのグループに関連付けられる暗号化公開鍵を記憶するステップであって、前記グループ内の各ノードは、秘密鍵共有に関連付けられ、該秘密鍵共有は、前記暗号化公開鍵に関連付けられる暗号化秘密鍵が前記秘密鍵共有の少なくとも閾値から決定されることを可能にするように、前記グループの閾値秘密鍵再構成スキームに関連付けられる、ステップと；
前記グループの複数のノードによって提供される複数のインジケータを反復的に取得するステップであって、前記インジケータの各々は、暗号化秘密鍵共有又はダミー信号のうちの一方を表す、ステップと；
前記インジケータのサブセットを選択することと、
可能性のある共有秘密を計算することと、
各可能性のある共有秘密を前記暗号化公開鍵に対して評価して、前記可能性のある共有秘密が暗号化秘密鍵であるかどうかを判断することと、
を反復することによって、前記暗号化秘密鍵を識別するステップと；
を含む、コンピュータ実施方法。
【請求項２】
前記可能性のある共有秘密が前記暗号化秘密鍵であると判断されたとき、前記暗号化公開鍵で以前に暗号化されたデータを復号するステップ、
を更に含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記可能性のある共有秘密が前記暗号化秘密鍵であると判断されたとき、
前記暗号化秘密鍵に基づいて署名を生成するステップと、
前記署名をトランザクションのアンロック・スクリプトに追加して、前記暗号化公開鍵で以前に妨害されたトークンをアンロックするステップと、
を更に含む、請求項１又は２に記載のコンピュータ実施方法。
【請求項４】
定義された機会ウィンドウで暗号化秘密鍵共有を表すインジケータを提供したグループのノードを識別するステップと、
１つ以上のデジタル資産を前記識別されたノードのうちの１つ以上に転送するために、トランザクションについての有効な署名を協調的に生成するステップと、
を更に含む、請求項１乃至３のいずれかに記載のコンピュータ実施方法。
【請求項５】
１つ以上のデジタル資産を前記識別されたノードのうちの１つ以上に転送するために、トランザクションについての有効な署名を協調的に生成するステップは、イベントに関連付けられるモニタリング要求を発行したリクエスタによって提供された１つ以上のトークンを配布するために、有効な署名を協調的に生成するステップを含む、
請求項４に記載のコンピュータ実施方法。
【請求項６】
前記暗号化秘密鍵共有のうちの１つを生成するステップと、
前記グループの複数のノードにインジケータを反復的に提供するステップと、
を更に備え、前記インジケータは、
所定のイベントが発生していないときにはダミー信号と、
前記所定のイベントを検出したことに応答して前記暗号化秘密鍵共有と、を含む、
請求項１乃至５のいずれかに記載のコンピュータ実施方法。
【請求項７】
前記ダミー信号は、前記秘密鍵共有と同じ長さである、
請求項６に記載のコンピュータ実施方法。
【請求項８】
前記ダミー信号をランダムに生成することを更に含む、
請求項７に記載のコンピュータ実施方法。
【請求項９】
グループ・ステーク秘密鍵共有を生成し、前記グループの他のノードと協力してグループ・ステーク公開鍵を生成するステップであって、前記グループ・ステーク秘密鍵共有は、複数のグループ・ステーク秘密鍵共有の少なくとも閾値を制御する前記グループのノードのサブセットが、前記グループの代わりに有効な署名を生成することを可能にする、ステップと、
前記グループ・ステーク公開鍵を使用してトークンを妨害するステップと、
を更に含む、請求項６乃至８のいずれか一項に記載のコンピュータ実施方法。
【請求項１０】
前記グループの前記複数のノードに提供される前記インジケータは、前記グループ・ステーク秘密鍵で生成される署名を含む、
請求項９に記載のコンピュータ実施方法。
【請求項１１】
モニタリング要求を検出するステップと、
前記モニタリング要求を検出したことに応答して、前記グループに加入する要求を送信し、前記グループ内の他のノードとのセキュアな通信チャネルを確立するステップと、
を更に含む、請求項９又は１０に記載のコンピュータ実施方法。
【請求項１２】
３３
前記グループ・ステーク秘密鍵共有は、閾値署名スキームの閾値を用いてディーラー・フリー秘密共有プロトコルを実行することによって生成され、前記閾値はモニタリング要求で定義される、
請求項９乃至１１のいずれか一項に記載のコンピュータ実施方法。
【請求項１３】
前記グループの前記ノードのうちの１つのノードが、前記複数のインジケータ内の関連する秘密鍵共有を提供することによって、プロトコルに違反したと判断するステップと、
前記グループの前記ノードのうちの１つのノードが前記プロトコルに違反したと判断したことに応答して、前記グループの他のノードと協力して、前記グループの前記ノードのうちの前記１つのノードのステークを没収するステップと、
を更に含む、請求項１乃至１２のいずれかに記載のコンピュータ実施方法。
【請求項１４】
実行されると、請求項１乃至１３のいずれか一項に記載の方法を実行するようにプロセッサを構成する、コンピュータ実行可能命令を備える、コンピュータ読み取り可能記憶媒体。
【請求項１５】
インタフェースデバイスと；
前記インタフェースデバイスに結合されるプロセッサと；
前記プロセッサに結合されるメモリであって、実行されると、請求項１乃至１３のいずれか一項に記載の方法を実行するようにプロセッサを構成する、コンピュータ実行可能命令をその上に記憶している、メモリと；
を備える、電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データセキュリティ及び暗号技術に関し、より具体的には、データ又はトークンをロックするために使用される公開鍵に関連付けられる秘密鍵の制御された開放のための方法及びシステムに関する。本発明は、限定されるものではないが、イベントの発生後にのみ、データが（アクセス及び／又は転送のために）アンロックされることを可能にするようデータをセキュアにすることに特に適している。
【背景技術】
【０００２】
本明細書において、「ブロックチェーン」という用語は、電子的なコンピュータベースの分散型台帳のすべての形式を包含するように使用される。これらは、ブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳及びそれらの変形を含むがこれらに限定されない。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され、開発されている。便宜上及び説明を目的として、本明細書ではビットコインに言及することがあるが、本発明はビットコインのブロックチェーンとともに使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータベースの非集中型の分散システムとして実装されるコンセンサス（合意）ベースの電子台帳であり、ブロックはトランザクション及び他の情報により構成される。ビットコインの場合、各トランザクションは、参加者間でデジタル資産の制御の転送をエンコードするデータ構造であり、少なくとも１つの入力と少なくとも１つの出力を含む。各ブロックは前のブロックのハッシュを含み、ブロックはともにチェーンになって、その発端からブロックチェーンに書き込まれているすべてのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、その入力及び出力に埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションの出力がどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトはスタックベースのスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。いくつかのネットワークノードはマイナー（minor）として機能し、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。例えばノードにインストールされたソフトウェアクライアントは、未使用トランザクション（ＵＴＸＯ）を参照するトランザクションに対して、この検証作業を実行する。検証は、そのロック及びアンロック・スクリプトを実行することによって行われてよい。ロック及びアンロック・スクリプトの実行が真（TRUE）と評価した場合、特定の他の条件が満たされると、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれてよい。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、ｉ）該トランザクションを受信したノードにより検証され、トランザクションが検証された場合は、そのノードが該トランザクションをネットワーク内の他のノードに中継し、ｉｉ）マイナーによって構築された新しいブロックに追加され、ｉｉｉ）マイニングされる、すなわち、過去のトランザクションの公開台帳に追加されなければならない。トランザクションを実質的に不可逆にする十分な数のブロックがブロックチェーンに追加されたときに、トランザクションは確認されるとみなされる。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、ビットコインに基づく暗号通貨セキュリティシステムとブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンを、暗号通貨建ての支払いだけに限定されない自動タスク及びプロセスのために使用することができれば、非常に有利であろう。このようなソリューションは、それらの用途においてより多様でありながら、ブロックチェーンの利点（例えば永久的、イベントの耐タンパレコード、分散プロセス等）を利用することができるであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、ブロックチェーン技術を通して付加的なプロセス及び機能を提供するための改良された技術が必要とされている。
【課題を解決するための手段】
【０００７】
本発明は、添付の特許請求の範囲において定義される。
【０００８】
したがって、本発明によれば、添付の特許請求の範囲で定義される方法が提供される。
【０００９】
以下により詳細に説明されるように、リクエスタノードは、複数の他のノードがグループを形成することを要求するモニタリング要求を発行してよい。モニタリング要求は、ノードがグループを形成してイベントをモニタリングするための要求であってよい。グループのノードは、互いに協力して、ディーラー・フリー秘密共有プロトコル（dealer-free  secret  sharing  protocol）を２回実行して、２つの共有秘密（shared  secrets）、すなわち暗号化秘密鍵と、グループ・ステーク秘密鍵（group-stake  private  key）を生成するように構成されてよい。それらのノードは、これらの秘密鍵に関連する秘密鍵共有を保持してよく、秘密鍵共有は、関連する秘密鍵共有の少なくとも閾値から完全な秘密鍵を再構成することができる閾値スキームに従って取得され得る。グループのノードは、互いに協力して、暗号化公開鍵を生成して、リクエスタノード等の他のノードに提供してもよい。次いで、グループのノードは、イベントをモニタリングし、イベントが検出されると、暗号化秘密鍵に関連付けられる秘密鍵共有を開放する。イベントは、予め決定されたイベントであっても、指定されたイベントであってもよい。
【００１０】
有利には、暗号化公開鍵を有するノードは、データ又はトークンに「イベントロック」を追加して、イベントが発生するまで、そのようなデータ又はトークンに対するアクセス又は制御を制限してもよい。したがって、本明細書で説明される技術を使用して、ネットワークリソース又は他のデジタル資産／リソースのようなデータ又はトークンをセキュアにし、イベントが発生したときにのみそのようなデータ又はトークンがアンロックされ得るようにすることができる。一例として、暗号化秘密鍵は、イベントが検出されたときに関連する秘密鍵共有の閾値が開放された後にのみ取得され得るので、暗号化公開鍵で暗号化されたデータは、イベントが発生した後にのみ復号され得る。そのようなセキュリティ技術は、例えばエステート・プランニングにおいて（遺言者が死亡した後にのみ遺言の内容を決定することができるようにする）、商業的セキュリティのために又は機密情報に対する禁制（embargoes）及び「デッドマン・スイッチ」を公表するためにのみ使用することができる。そのようなデータセキュリティ技術は、本明細書で記載されているもの以外に他の適用にも有用であり得ることが理解されるであろう。
【００１１】
したがって、本発明によれば、コンピュータ実施方法が提供され得る。コンピュータ実施方法において：ノードのグループに関連付けられる暗号化公開鍵を記憶するステップであって、グループ内の各ノードは、秘密鍵共有に関連付けられ、該秘密鍵共有は、暗号化公開鍵に関連付けられる暗号化秘密鍵が秘密鍵共有の少なくとも閾値から決定されることを可能にするように、グループの閾値秘密鍵再構成スキーム（threshold  private  key  reconstruction  scheme）に関連付けられる、ステップと；グループの複数のノードによって提供される複数のインジケータを反復的に取得するステップであって、インジケータの各々は、暗号化秘密鍵共有又はダミー信号のうちの一方を表す、ステップと；ｉ）インジケータのサブセットを選択することと、ｉｉ）可能性のある共有秘密を計算することと、ｉｉｉ）各可能性のある共有秘密を暗号化公開鍵に対して評価して、可能性のある共有秘密が暗号化秘密鍵であるかどうかを判断することと、を反復することによって、暗号化秘密鍵を識別するステップとを含む。
【００１２】
いくつかの実装では、コンピュータ実施方法は、可能性のある共有秘密が暗号化秘密鍵であると判断されたとき、暗号化公開鍵で以前に暗号化されたデータを復号するステップを含んでもよい。
【００１３】
いくつかの実装では、コンピュータ実施方法は、可能性のある共有秘密が暗号化秘密鍵であると判断されたとき、暗号化秘密鍵に基づいて署名を生成するステップと、署名をトランザクションのアンロック・スクリプトに追加して、暗号化公開鍵で以前に妨害（encumbered）されたトークンをアンロックするステップとを含んでもよい。
【００１４】
いくつかの実装では、コンピュータ実施方法は、定義された機会ウィンドウ（window  of  opportunity）内で暗号化秘密鍵共有を表すインジケータを提供したグループのノードを識別するステップと、１つ以上のデジタル資産を、識別されたノードのうちの１つ以上に転送するために、トランザクションについての有効な署名を協調的に生成するステップとを含んでよい。１つ以上のデジタル資産を、識別されたノードのうちの１つ以上に転送するために、トランザクションについての有効な署名を協調的に生成するステップは、イベントに関連付けられるモニタリング要求を発行したリクエスタによって提供された１つ以上のトークンを配布するために、有効な署名を協調的に生成するステップを含んでよい。
【００１５】
いくつかの実装形態では、コンピュータ実施方法は、暗号化秘密鍵共有のうちの１つを生成するステップと、グループの複数のノードにインジケータを反復的に提供するステップと、を更に備え、インジケータは、所定のイベントが発生していないときにはダミー信号と、所定のイベントを検出したことに応答して暗号化秘密鍵共有を含む。いくつかの実装形態では、ダミー信号は、秘密鍵共有と同じ長さであってよい。いくつかの実装形態では、コンピュータ実施方法は、ダミー信号をランダムに生成することを含んでよい。
【００１６】
いくつかの実装では、コンピュータ実施方法は、グループ・ステーク秘密鍵共有を生成し、グループの他のノードと協力してグループ・ステーク公開鍵を生成するステップであって、グループ・ステーク秘密鍵共有は、複数のグループ・ステーク秘密鍵共有の少なくとも閾値を制御するグループのノードのサブセットが、グループの代わりに有効な署名を生成することを可能にする、ステップと、グループ・ステーク公開鍵を使用してトークンを妨害するステップとを含んでよい。いくつかの実装では、グループの複数のノードに提供されるインジケータは、グループ・ステーク秘密鍵で生成される署名を含む。
【００１７】
いくつかの実装では、コンピュータ実施方法は、モニタリング要求を検出するステップと、モニタリング要求を検出したことに応答して、グループに加入する要求を送信し、グループ内の他のノードとのセキュアな通信チャネルを確立するステップとを含んでよい。
【００１８】
いくつかの実装では、グループ・ステーク秘密鍵共有は、閾値署名スキームの閾値を用いてディーラー・フリー秘密共有プロトコルを実行することによって生成される。閾値はモニタリング要求で定義されてよい。
【００１９】
いくつかの実装では、コンピュータ実施方法は、グループのノードのうちの１つのノードが、複数のインジケータ内の関連する秘密鍵共有を提供することによって、プロトコルに違反したと判断するステップと、グループのノードのうちの１つのノードがプロトコルに違反したと判断したことに応答して、グループの他のノードと協力して、グループのノードのうちの１つのノードのステークを没収するステップとを含んでよい。
【００２０】
本発明によれば、電子デバイスが提供されてもよい。電子デバイスは、インタフェースデバイスと、インタフェースデバイスに結合されるプロセッサと、プロセッサに結合されるメモリとを含むことができる。メモリは、実行されると、本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令をその上に記憶することができる。
【００２１】
本発明によれば、コンピュータ読取可能記憶媒体を提供することができる。コンピュータ読取可能記憶媒体は、実行されると、本明細書で説明される方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含んでもよい。
【００２２】
本発明のこれら及び他の態様は、本明細書で説明される実施形態から明らかであり、それに関連して解明されるであろう。次に、本発明の一実施形態を、単なる例示として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００２３】
【図１】例示的なブロックチェーン・ネットワークのブロック図である。
【図２】ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子デバイスのブロック図である。
【図３】イベントロック暗号化を要求し使用するための例示的な方法のフローチャートである。
【図４】イベントロック暗号化スキームにおけるグループ内のノードとして参加するための例示的な方法のフローチャートである。
【図５】暗号化秘密鍵を識別する例示的な方法のフローチャートである。
【図６】暗号化秘密鍵を識別する方法における真の信号の分布の例を示す図である。
【発明を実施するための形態】
【００２４】
ブロックチェーン・ネットワーク
まず、ブロックチェーンに関連付けられる例示のブロックチェーン・ネットワーク１００をブロック図の形で図示する図１を参照する。ブロックチェーン・ネットワークは、公開ブロックチェーン・ネットワークであってよい。公開ブロックチェーン・ネットワークは、招待なしに又は他のメンバーからの合意なしに、誰でも参加することができるピアツーピアのオープンメンバーシップネットワークである。ブロックチェーン・ネットワーク１００が動作するブロックチェーン・プロトコルのインスタンスを実行する分散型電子デバイスは、ブロックチェーン・ネットワーク１００に参加することができる。そのような分散型電子デバイスをノード１０２と称することができる。ブロックチェーン・プロトコルは、例えばビットコイン・プロトコルであってもよい。
【００２５】
ブロックチェーン・プロトコルを実行し、ブロックチェーン・ネットワーク１００のノード１０２を形成する電子デバイスは、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンのようなモバイルデバイス、スマートウォッチのようなウェアラブルコンピュータ又は他の電子デバイスといったコンピュータを含む、様々なタイプのものであってよい。
【００２６】
ブロックチェーン・ネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーン・ネットワークに関連付けられるプロトコルに従う。例えばブロックチェーンがビットコイン・ブロックチェーンである場合、ビットコイン・プロトコルが使用されてよい。
【００２７】
ノード１０２は、ブロックチェーン上のすべてのトランザクションのグローバル台帳を維持する。したがって、グローバル台帳は分散型台帳である。各ノード１０２は、グローバル台帳の完全なコピー又は部分的なコピーを記憶することができる。プルーフ・オブ・ワークによって保護されるブロックチェーンの場合、グローバル台帳に影響するノード１０２によるトランザクションは、グローバル台帳の有効性が維持されるように、他のノード１０２によって検証される。ブロックチェーンがプルーフ・オブ・ワークベースのブロックチェーンであるとき、ブロックはまた、ブロックとともに提示されるプルーフ・オブ・ワークをチェックすることによって検証される。
【００２８】
ノード１０２の少なくとも一部は、ブロックチェーン・ネットワーク１００のマイナー１０４として動作する。図１のブロックチェーン・ネットワーク１００は、ブロックチェーン上のトランザクションを容易にするために、マイナー１０４が高価な計算を実行するプルーフ・オブ・ワークブロックチェーンであってよい。例えばプルーフ・オブ・ワーク・ブロックチェーンは、マイナーが暗号問題を解決することを必要とすることがある。ビットコインでは、マイナー１０４は、ブロックヘッダが、ＳＨＡ−２５６を用いて、現在の難しさによって定義される値よりも小さい数字にハッシュするようなナンス（nonce）を見つける。プルーフ・オブ・ワーク・アルゴリズムに必要なハッシュパワーは、トランザクションが、その上にある特定の数のブロックがマイニングされた後、実際に不可逆であると考えられることを意味する。暗号問題を解決するマイナー１０４は、ブロックチェーンのための新たなブロックを作成し、その新たなブロックを他のノード１０２にブロードキャストする。他のノード１０２は、マイナー１０４が実際に暗号問題を解決し、したがって、ブロックがブロックチェーンに追加されるべきであることを受け入れる前に、十分なプルーフ・オブ・ワークを実証したことを検証する。ブロックは、ノード１０２のコンセンサスによってブロックチェーン（すなわち、分散型グローバル台帳）に追加される。
【００２９】
プルーフ・オブ・ワークに代わるものとして、ブロックチェーン・ネットワーク１００は、代わりに、プルーフ・オブ・ステーク・ブロックチェーン・ネットワークであってもよい。プルーフ・オブ・ステーク・ブロックチェーン・ネットワークは、コンセンサスを達成するための代替メカニズムを提供する。プルーフ・オブ・ステーク・ブロックチェーン・ネットワークでは、ブロックチェーンは、プルーフ・オブ・ワークではなくプルーフ・オブ・ステークによって保護される。プルーフ・オブ・ステークの下では、マイナーはデジタル資産の保証金を預け、ブロックをマイニングするノードとして選ばれる確率は、保証金として提供されたデジタル資産の量に比例する。プルーフ・オブ・ステーク・ブロックチェーンシステムは、プルーフ・オブ・ワーク・ブロックチェーン上でのマイニングに必要な計算費用とエネルギーを回避するために使用することができる。さらに、プルーフ・オブ・ステーク・ブロックチェーンは、プルーフ・オブ・ワーク・ブロックチェーンよりも、より高頻度かつより規則的なブロックの作成を可能にすることができる。
【００３０】
マイナー１０４によって作成されたブロックは、ノード１０２によってブロックチェーンにブロードキャストされていたトランザクションを含む。例えばブロックは、ノード１０２のうちの１つに関連付けられるアドレスから、ノード１０２のうちの別のノードに関連付けられるアドレスへのトランザクションを含んでもよい。このようにして、ブロックは、あるアドレスから別のアドレスへのトランザクションのレコードとして機能する。トランザクションをブロックに含めることを要求した当事者は、彼らの公開鍵に対応する秘密鍵を使用して要求に署名することによって、彼らが、転送を開始する（例えばビットコインの場合は、ビットコインを使う）権限を与えられていることを証明する。要求が有効に署名されている場合にのみ、転送をブロックに追加することができる。
【００３１】
ビットコインの場合、公開鍵とアドレスの間に１対１の対応がある。すなわち、各公開鍵は、単一のアドレスに関連付けられる。したがって、本明細書において、公開鍵との間でデジタル資産を転送すること（例えば公開鍵に支払うことと、その公開鍵に関連付けられるアドレスとの間でデジタル資産を転送することへの言及は共通の操作を指す。
【００３２】
ブロックチェーン・ネットワーク内のノード１０２のいくつかは、マイナーとして動作しないことがあり、代わりに、検証ノードとして参加することがある。トランザクションの検証には、署名のチェック、有効なＵＴＸＯへの参照の確認等が含まれ得る。
【００３３】
図１の例は、６つのノード１０２を含み、そのうちの２つはマイナー１０４として参加している。実際には、ノード１０２又はマイナー１０４の数は異なってよい。多くのブロックチェーン・ネットワークでは、ノード１０２及びマイナー１０４の数は、図１に図示される数よりもはるかに大きい可能性がある。
【００３４】
以下に説明されるように、種々のノード１０２が協力してノードのグループ１１０を形成することができる。図示される例では、３つのノード１０２がグループ１１０に参加しているように示されている。しかしながら、グループ１１０のメンバーの実際の数は、はるかに多い可能性がある。
【００３５】
グループ１１０は、グループ１１０に関連付けられるプールに対する十分なステーク（掛け金）の提示により、任意のノード１０２が参加可能することができる、オープンメンバーシップ・グループであってよい。例えばノードは、グループ１１０に関連付けられるアカウントへの（例えばグループ公開アドレス又はグループ・ステーク公開鍵への）ネットワークリソース又はデジタル資産のようなトークンの転送を介して、グループに参加することができる。グループに参加するノード１０２は、マイニングノードと非マイニングノードの両方を含むブロックチェーン・ネットワーク内の任意のノードであってよい。
【００３６】
グループ１１０は、イベントの発生に応答して、暗号化公開鍵に対応する暗号化秘密鍵を協力して開放するために使用されてもよい。イベントは、例えばネットワークベースのイベント（例えばブロックチェーン・ネットワーク、インターネット又は他のネットワークで観察可能なイベント）であってよい。イベントは、実世界のイベント（すなわち、ネットワークの外部で最初に発生したイベントが、例えばネットワーク上で検出可能であるように報告されている可能性がある）であってもよい。
【００３７】
Ａノードとして動作する電子デバイス
図２は、ピアツーピア・ブロックチェーン・ネットワーク１００（図１）のノード１０２（図１）として機能し得る例示的な電子デバイス２００のコンポーネントを示すブロック図である。例示的な電子デバイス２００は、処理デバイスと呼ばれることもある。電子デバイスは、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォンのようなモバイルデバイス、スマートウォッチのようなウェアラブルコンピュータ又は他のタイプの形態を含む様々な形態をとることができる。
【００３８】
電子デバイス２００は、プロセッサ２１０、メモリ２２０及びインタフェースデバイス２３０を含む。これらのコンポーネントは、互いに直接的又は間接的に結合されてよく、互いに通信することができる。例えばプロセッサ２１０、メモリ２２０及びインタフェースデバイス２３０は、バス２４０を介して互いに通信することができる。メモリ２２０は、本明細書で説明される機能を実行するための機械読取可能な命令及びデータを含むコンピュータソフトウェアプログラムを記憶する。例えばメモリは、プロセッサ２１０によって実行されると、電子デバイスに本明細書で説明される方法を実行させるプロセッサ実行可能命令を含んでもよい。プロセッサ実行可能命令は、プロセッサ２１０によって実行されると、電子デバイスにブロックチェーン・ネットワーク１００（図１）に関連付けられるプロトコルを実装させる命令を含んでもよい。例えば命令は、ビットコイン・プロトコルを実装するための命令を含んでもよい。プロセッサ２１０は、中央処理ユニット（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）又は別のタイプのプロセッサであってもよい。
【００３９】
メモリ２２０は、ブロックチェーン・ネットワーク１００（図１）のグローバル台帳又はその一部を記憶することができる。すなわち、メモリ２２０は、ブロックチェーンのすべてのブロック又はブロックの一部、例えば最新のブロック又はいくつかのブロック内の情報の一部を記憶することができる。
【００４０】
メモリ２２０は、図２では単一のブロックで示されているが、実際には、電子デバイス２００は、複数のメモリコンポーネントを含んでもよい。メモリコンポーネントは、例えばＲＡＭ、ＨＤＤ、ＳＳＤ、フラッシュドライブ等を含む種々のタイプのものであってもよい。異なるタイプのメモリは、異なる目的に適合し得る。さらに、メモリ２２０は、プロセッサ２１０とは別に示されているが、プロセッサ２１０が、埋め込みメモリを含んでもよい。
【００４１】
電子デバイス２００は、ブロックチェーン・ネットワーク１００（図１）内のノード１０２（図１）として機能する。いくつかのノードは、グループ１１０（図１）に加わるか、他の方法で参加することができる。グループ１１０は、トークン・ベアラのグループが、ブロックチェーン・ネットワーク１００（図１）によってサポートされるトークン又は他のデジタル資産をプールするときに形成される。グループは、例えばモニタリング要求を満たすために協力して機能することができる。より具体的には、グループは、モニタリング要求に関連付けられるイベントが発生したと判断されたときに、暗号化秘密鍵を効果的に開放するように構成されてよい。暗号化公開鍵は、イベントが発生する前に、データを暗号化するため又は１つ以上のトークンを妨害するために使用される可能性がある。したがって、イベントが発生する前はデータ又はトークンのアンロックを防止するが、イベントが発生した後はデータ又はトークンのアンロックを許可するように暗号化ロックがデータ又はトークンに配置されるよう、イベントロックを提供することができる。
【００４２】
いくつかのノードは、グループ１１０のメンバーとしてブロックチェーン・ネットワークに参加することができる。他のノードはグループメンバーとして参加しないことがある。そのようなノードは、代わりに、１つ以上のマイナー又は検証者として機能し得るか、あるいはブロックチェーン・ネットワークに関連付けられる他の機能を提供し得る。
【００４３】
以下により詳細に説明されるように、グループ１１０に加わっているノードは、モニタリングノードとして機能してよく、イベントの発生をモニタリングしてよい。イベントが発生したとノードが判断すると、該ノードは、暗号化公開鍵共有に関連する暗号化秘密鍵共有を開放する。グループ１１０内のノードの各々は、別個の暗号化秘密鍵共有に関連付けられ、そのような鍵共有の閾値数は、暗号化公開鍵に対応する暗号化秘密鍵を再構成するために使用されてよい。したがって、十分な数のノードがそのそれぞれの暗号化秘密鍵共有を開放したとき、暗号化秘密鍵を取得することができる。
【００４４】
各モニタリングノードの独立性を維持するために、モニタリングノードは、ある間隔で、インジケータを他のモニタリングノード（すなわち、グループの他のノード）に反復的に提供してよく、インジケータは、暗号化秘密鍵共有又はダミー信号のうちの一方を表してよい。より詳細には、ノードは、該ノードが、イベントが発生したと判断するまで、各信号間隔でダミー信号を含んでよい。イベントが発生したと判断されたとき、ノードは、暗号化秘密鍵共有を表すインジケータを他のノードに提供することができる。ダミー信号は、他のノードが、単一のインジケータから、単独ではそのインジケータがダミー信号を表すのか暗号化秘密鍵共有を表すのかを判断することができないように、暗号化秘密鍵共有とフォーマットが類似するよう（例えば秘密鍵共有と同じ長さであるよう）構成されてよい。しかしながら、モニタリングノードは、暗号化公開鍵に対応する暗号化秘密鍵をインジケータから決定することができるかどうかを継続的に特定しようと試みる。例えばモニタリングノードは、インジケータのサブセットを繰り返し選択することができ、そのインジケータのサブセットから可能性のある共有秘密を計算することができる。次に、モニタリングノードは、暗号化公開鍵に対して可能性のある共有秘密鍵を評価して、該可能性のある共有秘密鍵が実際には暗号化秘密鍵であるかどうかを判断することができる。すなわち、モニタリングノードによって提供されたインジケータに基づいて探索を実行して、暗号化秘密鍵を識別することができる。暗号化秘密鍵共有の閾値数が提供されているとき、暗号化秘密鍵共有の生成に使用される閾値スキームにより、暗号化秘密鍵を再構成することが可能である。
【００４５】
イベントロック暗号化の要求
次に、図３を参照すると、イベントロック暗号化を要求して使用するための方法３００が図示されている。方法３００は、リクエスタノード（「リクエスタ」）によって実行されてよく、リクエスタノードは、ブロックチェーン・ネットワークのノード１０２であってよい。このようなノード１０２は、メモリ２２０（図２）に記憶される、方法３００を実装するコンピュータ実行可能命令を含んでもよい。このような命令は、プロセッサ２１０（図２）によって実行されると、（図２を参照して説明したタイプの電子デバイス２００のような）ノード１０２に方法３００を実行させる。
【００４６】
動作３０２において、ノード１０２は、モニタリング要求を発行する。モニタリング要求は、ブロックチェーン・ネットワークの他のノード１０２にイベントロック暗号化を提供するよう求める要求である。すなわち、モニタリング要求は、イベントが発生した後にのみ、秘密鍵（暗号化秘密鍵と呼ばれることもある）を開放するように他のノード１０２に求める要求である。以下により詳細に説明されるように、その秘密鍵に対応する公開鍵（暗号化公開鍵と呼ばれることもある）は、イベントが発生する前にグループによって開放されて、そのイベントの前にその公開鍵がデータを暗号化又はトークンを妨害するために使用されることを可能にする。したがって、モニタリング要求は、デジタル資産又はネットワークリソースの保護を促進するための要求である。
【００４７】
モニタリング要求は、ブロックチェーンから離れて（すなわち、「オフチェーン」）発行されてもよい。例えばモニタリング要求は、インターネットを介してアクセス可能なウェブサーバ上で、あるいはプライベートネットワークのような他のネットワークを介してアクセス可能な他のネットワークサーバ上で発行されてもよい。例として、モニタリング要求は、インターネットを介してアクセス可能なオープンフォーラムに格納されてよい。
【００４８】
モニタリング要求は、該要求に関連付けられる１つ以上のパラメータを含んでもよい。一例として、モニタリング要求は、要求に関連付けられるイベントであって、モニタリング要求を満たすグループのノードがそれについてモニタリングすることになるイベントを詳述してよい。イベントは、例えばネットワークベースのイベント（例えばブロックチェーン・ネットワーク、インターネット又は他のネットワークで観察可能なイベント）であってもよい。イベントは、実世界のイベントであってもよい（すなわち、ネットワークの外部で最初に発生したイベントが、例えばネットワーク上で検出可能であるように報告されている可能性がある）。一例として、このイベントは、モニタリング要求で識別された人が死亡（pass  away）したときに発生すると言うことができる。イベントは、任意のタイプのイベントとすることができ、イベントの発生のモニタリング及び／又は検出を可能にするよう何らかの方法で指定され又は事前に決定される。このようなイベントは、例えばオンラインニュースソース、ソーシャルメディア又は死亡記事（obituaries）又は他のタイプのデータソースを自動的にモニタリングするように構成されたノードによって検出され得る。イベントは、ソースからの入力信号によって検出されてもよい。他のタイプのイベントも指定されてよい。
【００４９】
モニタリング要求はまた、イベント記述のハッシュを含むか又は関連付けられてよい。ハッシュは、例えばイベント記述のＳＨＡ−２５６ハッシュであってよい。更なる例として、モニタリング要求は、モニタリング要求を満たすグループに提供されるトークンの量を指定することができる。トークンは、該トークンによって表されるデジタル資産のようなネットワークリソースを制御することができる。トークンが、ブロックチェーン・ネットワークのようなネットワークのあるノードから別のノードに転送されるとき、ネットワークリソースの制御は、受信ノードに転送される。したがって、モニタリング要求は、モニタリング要求の完了のために要求者によって提供されるネットワークリソース（例えばデジタル資産）の量を指定することができる。
【００５０】
以下でより詳細に説明されるように、ノードは、１つ以上のトークンをグループに転送することによって、モニタリング要求の遂行に関与するグループのメンバーになることができる。トークンは、グループプロトコルへの不適合に対するペナルティとして、グループの他のノードの閾値によって没収される可能性のある「ステーク（掛け金）」として機能する。モニタリング要求は、グループに参加するために必要とされる「ステーク」の量を指定することができる。すなわち、モニタリング要求は、グループに加わって実質的に「モニタリングノード」になるために必要とされる、ステークを指定することができる。「モニタリングノード」は、モニタリング要求によって定義されたイベントをモニタリングすることによって、モニタリング要求を満たすことを引き受けるノードである。
【００５１】
モニタリング要求は、グループのサイズも定義してよい。すなわち、モニタリング要求は、グループに含まれるべきノードの数を指定してよい。また、モニタリング要求は、暗号化秘密鍵の開放及び／又はグループのノード間のシグナリングの間隔に関連付けられる閾値を定義してもよい。例えば間隔は、グループのノード間に形成されるイベントチェーン上のブロック生成に関連付けられる間隔であってもよい。また、モニタリング要求は、イベントが発生したことを示す信号を提示する機会ウィンドウの閾値を定義してもよい。以下でより詳細に説明されるように、機会ウィンドウの閾値は、あるインジケータで提示された暗号化秘密鍵共有が、適切又は正確に提出されたとみなされる時間ウィンドウを制御することができる。この機会の前後で共有される暗号化秘密鍵共有は、ノードによって無視される可能性がある。例えば機会ウィンドウの前後に暗号化秘密鍵共有を提示したノードは、要求の完了と引き換えにリクエスタによって提供されるネットワークリソースの共有に適格でない可能性がある。さらに、探索スペースのサイズを小さくするために、機会ウィンドウの前後に提示される暗号化秘密鍵共有は、暗号化秘密鍵の探索中に除外される可能性がある。
【００５２】
したがって、モニタリング要求は：１）イベント記述；２）イベント記述のハッシュ；３）参加に必要なステークの量；４）グループのサイズ；５）閾値スキームに関連付けられる閾値；６）シグナリング間隔；７）機会ウィンドウの閾値；又は８）要求の完了のために提供されるネットワークリソースの量、のうちのいずれか１つ又は組合せを含む、種々のデータを含み得る。
【００５３】
動作３０４において、リクエスタは、複数のノードによるグループ形成を調整することができる。より詳細には、リクエスタは、動作３０２においてモニタリング要求を発行したことに応答して、ブロックチェーン・ネットワーク内の複数のノードから参加要求を受け取ることができる。参加要求は、モニタリング要求を完了するよう引き受けるグループに追加される要求である。各参加要求は、参加要求に関連付けられるノードがグループに参加するために「ステーク」として提供することを意図しているトークンや他のデジタル資産等のネットワークリソースを参照することができる。例えば参加要求は、それらのステークを含むＵＴＸＯのトランザクション識別子を指定してよい。
【００５４】
有効な参加要求が十分な数のノードから受信されると（例えば参加要求の数がモニタリング要求で指定されたグループのサイズに等しい場合、参加要求の数は十分であると判断されてよく、参加要求は、十分なトークンを「ステーク」として参照する場合に有効であると判断されてよい）、参加要求を提示したノードは、互いの間にセキュアな通信チャネルを確立し、ディーラー・フリー秘密共有プロトコルを２回まとめて実行して、２つの共有秘密鍵、すなわち暗号化秘密鍵とグループ・ステーク秘密鍵を生成する。各ノードは、２つの秘密鍵共有、すなわち暗号化秘密鍵共有とグループ・ステーク秘密鍵共有を保持する。これらの秘密鍵共有は両方とも、グループ１１０に関連付けられる秘密鍵の共有を表すという点でグループ秘密鍵共有である。しかしながら、暗号化秘密鍵及びグループ・ステーク秘密鍵は、異なる目的のために使用されてもよい。後述するように、グループ・ステーク秘密鍵は、グループのトークン又は他のデジタル資産を妨害するグループ・ステーク公開鍵に関連付けられる。そのようなトークンは、グループに参加するためにグループの各メンバーが寄与する「ステーク」を含んでよい。暗号化秘密鍵は、暗号化公開鍵と関連付けられ、暗号化公開鍵は、データを暗号化するかイベントロックでトークンを妨害するために使用されてよい。より具体的には、グループのノードは、イベントが発生した後に暗号化秘密鍵を開放するように協力するので、暗号化公開鍵を使用して、イベント発生後まで、データを暗号化するかトークン又は他のデジタル資産を妨害して、そのようなデータ／トークンに対する制御を制限することができる。
【００５５】
暗号化秘密鍵共有、暗号化公開鍵、グループ・ステーク秘密鍵共有及びグループ・ステーク公開鍵を取得するため技術を、以下で図４に関連して説明する。
【００５６】
動作３０４の間、リクエスタは、暗号化公開鍵及びグループ・ステーク公開鍵をグループのうちの１つ以上のノードから（すなわち、ノードのうち、有効な参加要求を提示し、暗号化公開鍵及びグループ・ステーク公開鍵の生成に関与した１つ以上のノードから）受け取る。次に、リクエスタは、各参加要求で参照されたトークン又は他のデジタル資産（すなわち、「ステーク」）と、要求の完了のためにリクエスタによって提供されたトークン又は他のデジタル資産も入力として含むトランザクションを作成する。トランザクションは、これらのトークンをアンロックするためにグループ・ステーク公開鍵に有効な署名が必要とされるように、グループ・ステーク公開鍵でこれらのトークン又は他のデジタル資産を妨害する。リクエスタは、トランザクションに署名して、要求の完了のためにリクエスタによって提供されるトークン又は他のデジタル資産に対する過去の妨害（past  encumbrance）を除去してよく、各ノードがそれぞれのノードの「ステーク」に対して以前に配置された過去の妨害を除去するために署名を追加することができるように、トランザクションをグループのノードに提供してよい。
【００５７】
任意に、リクエスタは、トランザクション内のメタデータとして暗号化公開鍵を含んでよく、それにより、トランザクションがブロックチェーン・ネットワークのブロックチェーンに追加されるとき、暗号化公開鍵は、ブロックチェーン・ネットワークの他のノードに可視であり、そのようなノードにより、データ又はトークンにイベントロックを配置するために使用されてよい。また、リクエスタは任意に、イベント記述のハッシュ（又は別の識別子）をメタデータとしてトランザクションに追加して、該トランザクションをモニタリング要求に関連付けてもよい。
【００５８】
トランザクションは、グループの各ノードによって（すなわち、有効な参加要求を提示し、暗号化公開鍵及びグループ・ステーク公開鍵の生成に関与したノードのうちの１つ以上の各々によって）署名され、ノードにうちの１つによってブロックチェーン・ネットワークにブロードキャストされ、それによりブロックチェーンに追加され得る（ただし、十分なマイニング料（mining  fees）が含まれ、トランザクションが他の方法で検証することを条件とする）。
【００５９】
動作３０６において、リクエスタ（又は暗号化公開鍵を取得する他のノード）は、暗号化公開鍵を使用して、データを暗号化するか、トークン又は他のデジタル資産を妨害する。トークン又は他のデジタル資産は、例えばトークン又は他のデジタル資産を入力として含むトランザクションのロッキング・スクリプトに暗号化公開鍵を配置することによって妨害され得る。ロッキング・スクリプトは、署名が暗号化公開鍵に対して有効であるときにのみロックが除去され得るように、トークン又はその他のデジタル資産をロックする。例えば暗号化秘密鍵を使用して（例えば暗号化秘密鍵を用いた署名の生成により）ロックを除去することができる。
【００６０】
モニタリング要求に関連付けられるイベントは、動作３０６の後のある時点で発生してよく、リクエスタは、次いで動作３０８において、グループの１つ以上のノードから暗号化秘密鍵を取得することができる。暗号化秘密鍵は、例えばブロックチェーン・ネットワークを通して取得されてよい。例えばグループが、以下に説明されるような技術を用いて暗号化秘密鍵を再構成した後、暗号化秘密鍵は、ブロックチェーン・ネットワークにブロードキャストされ、ブロックチェーンに追加されるトランザクションに追加され得る。リクエスタ（又は暗号化秘密鍵を要求する他のノード）は、ブロックチェーンをモニタリングし、ブロックチェーンから暗号化秘密鍵を取得することができる。
【００６１】
次に、動作３１０において、リクエスタ（又は別の当事者）は暗号化秘密鍵を使用して、動作３０６において暗号化されたデータを復号し、あるいはトークン又は他のデジタル資産上に置かれた妨害を取り除くことができる。すなわち、動作３１０において、リクエスタは、暗号化秘密鍵を使用して、動作３０６において暗号化公開鍵でロックされたデータ又はトークンをアンロックすることができる。
【００６２】
グループのノードとして参加
次に、図４を参照すると、イベントロック暗号化スキームにおけるグループ内のノードとして参加するための方法４００が示されている。方法４００は、ブロックチェーン・ネットワークのノード１０２によって実行されてよい。方法４００によると、ノードは、グループ１１０内の他のノードと協働する。したがって、ノードは、グループノード又はメンバーと呼ばれ得る。このようなノード１０２は、メモリ２２０（図２）に記憶された、方法４００を実装するコンピュータ実行可能命令を含んでもよい。このような命令は、プロセッサ２１０（図２）によって実行されると、（図２を参照して説明したタイプの電子デバイス２００のような）ノード１０２に方法４００を実行させる。
【００６３】
動作４０２において、ノード１０２は、リクエスタによって発行された可能性のあるモニタリング要求を検出する。モニタリング要求は、図３の方法３００の動作３０２を参照して上述したタイプのものであってよく、ネットワーク上で検出され得る。
【００６４】
動作４０４において、モニタリング要求を検出したことに応答して、ノード１０２は、モニタリング要求を発行したリクエスタに参加要求を提供する。すなわち、ノード１０２は、モニタリング要求を満たすことをタスクとするグループに参加するための要求を送信する。参加要求は、図３の方法３００の動作３０４に関連して上述したようなものであってよい。例えば参加要求は、方法３００を実行するノードがグループに参加するために「ステーク」として提供しようとするトークンのような、ネットワークリソースを参照してよい。例えば参加要求は、それらのステークを含むＵＴＸＯのトランザクション識別子を指定することができる。
【００６５】
動作４０６において、ノード１０２は、参加要求をやはり提示した他のノードと協力して、秘密鍵共有及び対応する公開鍵を取得する。より詳細には、ノード１０２は、参加要求を提示した他のノードと協力する。グループメンバーであるこれらのノードは、（例えば標準的な公開鍵暗号システム又はＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵交換を使用して）互いにセキュアな通信チャネルを確立する。次いで、ノードは、閾値Ｃｔを用いてディーラー・フリー秘密共有プロトコルを２回まとめて実行して、２つの共有秘密、すなわち暗号化秘密鍵とグループ・ステーク秘密鍵を生成する。閾値Ｃｔは、秘密鍵を再構成し、かつ秘密鍵のそれぞれ１つに対応する公開鍵に対して有効な署名を生成するために必要とされる、鍵共有の数である。閾値Ｃｔは、リクエスタによってモニタリング要求で定義されてよい。
【００６６】
したがって、動作４０６において、秘密鍵を再構成するために、ｍ−ｏｆ−ｎ鍵の閾値（ここで、ｍは閾値、Ｃｔ）共有が必要とされるように、複数の参加者間で単一の秘密鍵の配布を可能にする暗号化方法（秘密鍵再構成スキームと呼ばれることがある）が採用されてよい。ｍより少ない数の鍵共有は秘密鍵を生成することはできず、秘密鍵に対応する公開鍵に対して有効な署名を生成することができない。
【００６７】
動作４０６で使用される１つの暗号化方法は、シャミア秘密分散法（ＳＳＳＳ：Shamir’s  Secret  Sharing  Scheme）である。シャミア秘密分散法は、ｔ次多項式をｔ＋１ポイントの任意のセットに適合させることができるという概念に基づく。ｔ次多項式ｆ（ｘ）は、定数項（ａ０＝ｆ（０））として共有秘密鍵を用いて形成され、残りの係数はランダムに選ばれる。曲線上のｎポイントが各ノードに与えられる。（参加者と呼ばれることもある）ノードのうちのｍ＝ｔ＋１又はそれ以上がそれらのポイントを結合する場合、次数ｔの多項式をこれらのポイントに適合させるのに十分な情報が存在し、ａ０は、秘密情報として明らかにされる。このスキームは、任意の閾値を用いて任意の多数の当事者間での単一の秘密鍵の共有を可能にする。
【００６８】
標準ＳＳＳＳは、信頼できるディーラーが多項式を作成し、秘密共有（これは単一の障害点（single  point  of  failure）であり、したがって信頼できないものではない）を配布させるという要求を除去するために拡張され得る。このディーラー・フリーＳＳＳＳでは、各参加者Ｐｉが自身のランダムｔ次多項式ｆｉ（ｘ）を生成し、次いでｆｉ（ｊ）を各々他の参加者Ｐｊにセキュアに送信する。次に、各Ｐｉは受け取ったポイントをすべて合計し（ｆ１（ｉ）＋ｆ２（ｉ）＋・・・＋ｆｎ（ｉ））、共有多項式ｆ（ｘ）におけるポイントＰｉであるそれらの秘密共有を取得するｓｉ＝ｆ（ｉ）。
【００６９】
秘密共有が作成された後、（参加者が知らない）共有秘密鍵に対応する公開鍵が、次のように計算される（楕円曲線生成器Ｇを使用）：
【００７０】
参加者Ｐｉ（ここで、ｉ＝１，．．．，ｔ＋１）は、ｂｉｓｉ×Ｇとして公開鍵共有を計算し、ここで、ｂｉはラグランジアン補間係数（Lagrangian  interpolation  coefficient）であり、以下のように決定され得る：
【数１】
2020526069.tif 000003
【００７１】
これらの公開鍵共有（これは、グループ・ステーク秘密鍵に関連付けられる公開鍵共有のためのグループ・ステーク公開鍵共有と呼ばれ得るか、暗号化公開鍵に関連付けられる公開鍵共有のための暗号化公開鍵共有と呼ばれ得る）は、次に、グループの他のノードにブロードキャストされ、共有公開鍵は、ｔ＋１共有の合計として計算される：
【数２】
2020526069.tif 000004
【００７２】
各ノードは、公開鍵共有から共有公開鍵を独立に決定することができる。
【００７３】
上述の暗号化方法は２回実行されてよい。すなわち、１度目は、暗号化秘密鍵共有及び関連する暗号化公開鍵を取得するために実行され、グループ・ステーク秘密鍵共有及び関連するグループ・ステーク公開鍵を取得するために再び実行されてよい。
【００７４】
したがって、動作４０６において、方法４００を実行しているノードは、他のノードと協力して、暗号化公開鍵及び関連する暗号化秘密鍵共有を取得及び格納し、また、グループ・ステーク公開鍵及び関連するグループ・ステーク秘密鍵共有を取得及び格納する。グループ・ステーク秘密鍵共有は、グループ・ステーク秘密鍵共有の少なくとも閾値を制御しているグループのノードのサブセットが、そのグループの代わりに有効な署名を生成することを可能にし、一方、暗号化秘密鍵共有は、暗号化秘密鍵共有の少なくとも閾値を制御しているグループのノードのサブセットが、そのようなノードがイベントを検出したときに暗号化秘密鍵を開放することを可能にする。
【００７５】
この方法４００を実行しているノードは、暗号化秘密鍵共有とグループ・ステーク秘密鍵共有を生成し、グループの各ノードは、それぞれのグループ・ステーク秘密鍵共有と暗号化秘密鍵共有との両方に関連付けられる。対応する公開鍵（すなわち、グループ・ステーク公開鍵と暗号化公開鍵）は、ディーラー・フリー秘密共有プロトコルを実行したノードのグループに関連付けられる。秘密鍵共有は、グループの秘密鍵再構成スキームに関連付けられ、秘密鍵を、秘密鍵共有の少なくとも閾値Ｃｔから決定することを可能にする。例えばグループ・ステーク秘密鍵共有は、モニタリング要求で定義され得る閾値（楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ：Elliptic  Curve  Digital  Signature  Algorithm）閾値署名スキーム等の閾値署名スキーム）を用いてディーラー・フリー秘密共有プロトコルを実行することによって生成されてよく、暗号化秘密鍵も同様に暗号化秘密鍵共有に基づいて生成されてよい。
【００７６】
動作４０６の間、ノードは、グループの他のノードの各々についてのグループ・ステーク公開鍵共有を記憶することができる。これらの公開鍵共有は、以下で説明されるように、イベントチェーン上のブロック署名とコミット署名の署名を検証するためにノードによって使用され得る。
【００７７】
動作４０８において、暗号化公開鍵及びグループ・ステーク公開鍵（両方とも、グループのノードによって独立に検証されている）がリクエスタに提供される。図３の方法３００の動作３０４に関連して上述したように、リクエスタは、次に、署名のためにトランザクションをグループのノードに提供する。トランザクションは、入力として、各参加要求で参照されるトークン又は他のデジタル資産（すなわち、「ステーク」）と、要求の完了のためにリクエスタによって提供されるトークン又は他のデジタル資産も含む。このトランザクションは、これらのトークン又はその他のデジタル資産を、グループ・ステーク公開鍵で妨害する。リクエスタは、トランザクションに署名して、要求の完了のためにリクエスタによって提供されるトークン又は他のデジタル資産に対する過去の妨害を除去してよく、また、各ノードがそれぞれのノードの「ステーク」に対して以前に置かれた過去の妨害を除去するために署名を追加することができるように、トランザクションをグループのノードに提供してよい。
【００７８】
動作４１０において、ノードは、トランザクションを受け取り、動作４０４で提示された参加要求で参照される「ステーク」における過去の妨害を除去する署名を追加することができる。このような署名を追加することによって、ノードは、グループ・ステーク公開鍵を用いてステークとして提供されるトークン又は他のデジタル資産を効果的に妨害する。
【００７９】
グループ内のすべてのノードがそれぞれの署名を追加して、それらの「ステーク」に対する過去の妨害を除去した後、トランザクションはブロックチェーン・ネットワークにブロードキャストされる。
【００８０】
次いで、動作４１２において、ノードは、グループの他のノードと協力して暗号化秘密鍵を識別し、グループのノードが暗号化秘密鍵を成功裏に識別したとき、それらのノードのうちの少なくとも１つのノードがトランザクションを準備し、それらのノードは協力してトランザクションの署名を生成し（動作４１４において）、これは、モニタリングプロトコルに従って動作したノードに「ステーク」を返し、要求の完了のためにリクエスタによって提供されたトークン又は他のデジタル資産を、要求の完了を支援した１つ以上のノードに配布する。署名は、それぞれのグループ・ステーク秘密鍵共有を使用して生成され、有効な署名を生成するためにグループ・ステーク秘密鍵共有の少なくとも閾値を使用しなければならない。
【００８１】
動作４１４において、暗号化秘密鍵がリクエスタに提供される。例えば暗号化秘密鍵をメタデータとしてトランザクションに含めることができる。
【００８２】
次に、暗号化秘密鍵を協調的に識別するための技術が、図５を参照して説明される。図５は、暗号化秘密鍵を識別する方法５００を示している。これらの技術は、図４の方法４００の動作４１２において、グループのあるノードによって、グループの他のノードと協力して実行される。例えば図４の方法４００を実行するノードが、図５の方法５００も実行してよい。
【００８３】
動作５０２において、イベントチェーンがインスタンス化され得る。イベントチェーンは、一時的なブロックチェーンの一種である。より具体的には、イベントチェーンは、グループ・ステーク公開鍵によって妨害されたステークを有するノードのグループによってマイニングされる、プルーフ・オブ・ステーク・ブロックチェーンである。プルーフ・オブ・ステーク・コンセンサスアルゴリズムが使用されてよく、例えばＭｉｃａｌｉ，Ｓｉｌｖｉｏの「Ａｌｇｏｒａｎｄ：  ｔｈｅ  ｅｆｆｉｃｉｅｎｃｙ  ａｎｄ  ｄｅｍｏｃｒａｔｉｃ  ｌｅｄｇｅｒ．」ａｒＸｉｖ  ｐｒｅｐｒｉｎｔ  ａｒＸｉｖ：１６０７．０１３４１（２０１６）に記載されているタイプのものであってもよい。イベントチェーンは、規則的なブロック生成時間、タイムスタンプされたブロック及び低いフォーキング確率（forking  probability）を有し得る。ブロックチェーン上のブロックをマイニングするためのブロック報酬は、イベントチェーンのマイナーに提供されてよく、要求の完了のためにリクエスタによって提供されたトークン又は他のデジタル資産の一部として受け取られてよい。
【００８４】
イベントチェーンは、グループのノードによって、（例えばモニタリング要求で）リクエスタによって指定された間隔でブロックが生成されるように構成されてもよい。この間隔は、リクエスタがイベント後の秘密鍵開放のために望むレイテンシよりも小さくなるように選択されてよい。しかしながら、より小さな間隔は、より大きな間隔よりも多くのリソースを消費する可能性がある。
【００８５】
イベントチェーンは、ジェネシスブロック（genesis  block）と呼ばれる最初のブロックでインスタンス化されてよい。ジェネシスブロックは空であり、インスタンス化時間ｔ０でタイムスタンプされる。
【００８６】
方法５００を実行するノードは、例えば１）イベントのモニタリング及びシグナリングと、２）暗号化秘密鍵の探索を含む、複数の機能を実行することができる。
【００８７】
動作５０４において、ノードは、モニタリング要求に関連付けられるイベントをモニタリングし、モニタリングに基づいて他のノードにシグナリングする。一例として、ノードは、イベントについて、Ｗｅｂサーバのようなネットワークサーバをモニタリングすることができる。例えばノードは、イベントについて、ニュースウェブサイト、ソーシャルメディアウェブサイト、ブログ又はマイクロブログプラットフォーム等をモニタリングしてよい。ノードは、グループの複数のノードにインジケータを反復的に提供する。すなわち、ノードは、グループの他のノードに繰り返しシグナリングし、このシグナリングはモニタリングの結果に基づいている。より具体的には、ノードは、グループの他のノードにインジケータを反復的に提供する。このインジケータは、コミットメントとも呼ばれることがある。所定のイベント（すなわち、モニタリング要求で指定されたイベント）が発生していないとき、インジケータは、暗号化秘密鍵共有と同じ長さのダミー信号を含む。ダミー信号は、ノードによってランダムに生成されてよく、ダミー信号は、各反復において異なってよい。しかしながら、所定のイベントの検出に応答して、ノードは、該ノードが保持する暗号化秘密鍵共有を含むインジケータを提供する（このタイプのインジケータは、「真の信号」と呼ばれることがある）。「真の信号」は、ノードによって一度だけ提供されるので、他のノードは、単に所与のノードからのインジケータの反復をモニタリングすることによって、イベントが決定されたと推論することができない。
【００８８】
また、インジケータは、ノードのグループ・ステーク公開鍵共有も含んでもよく、方法５００を実行するノードによって保持されるグループ・ステーク公開鍵共有に基づいて署名されてもよい。したがって、インジケータがグループの複数のノードに提供されるとき、それは、グループ・ステーク秘密鍵で生成された署名を含む。
【００８９】
ノードは、動作５０４において、イベントチェーン上のブロック内にインジケータを提供することによって、モニタリングに基づいて他のノードにシグナリングする。各ブロックはタイムスタンプされる。また、グループの他のノードは、（方法５００の動作５０４に類似する）それら自身のモニタリング及びシグナリング動作を独立に実行するようにも構成され、イベントの発生を検出すると、「真の信号」を提供することができる。したがって、動作５０６において、ノードは、グループの複数の他のノードによって提供される複数のインジケータを取得することができる。インジケータの各々は、暗号化秘密鍵共有又はダミー信号のうちの１つを表す。インジケータは、ノードによって反復的に取得されてもよく（例えばイベントチェーンの各ブロックから取得される）、インジケータは、一旦取得されると、暗号化秘密鍵を識別しようと試みるために、分析されてもよい。より詳細には、（動作５０８において）現在のブロック及び／又は１つ以上の最近のブロックからインジケータのサブセットを反復的に選択し、（動作５１０において）インジケータのサブセットから可能性のある共有秘密を計算し、そして（動作５１２において）各可能性のある共有秘密を暗号化公開鍵に対して評価して、その可能性のある共有秘密が暗号化秘密鍵であるかどうかを判断することによって、暗号化秘密鍵を識別することができる。図５には図示されていないが、暗号化の可能性のある共有秘密が暗号化秘密鍵でない場合、インジケータの異なるサブセットに対して探索が実行されてもよい（例えば探索空間内のすべての可能性のあるインジケータのサブセットが評価されてよく、新たなブロックがイベントチェーンに追加されると探索空間を更新してよい）。したがって、ノードは、イベントチェーン上のブロックに提供されているインジケータに基づいて、探索を効果的に実行することができる。インジケータで提供される真の信号（すなわち、暗号化秘密鍵共有）の数が、閾値秘密鍵再構成スキームの閾値Ｃｔよりも大きいとき、暗号化秘密鍵を得ることができる。
【００９０】
暗号化秘密鍵は、探索アルゴリズム及びＳＳＳＳを実行することによって再構成されてもよい（すなわち、暗号化秘密鍵共有の閾値から得られる）。動作５０８において、共有秘密は、定義された機会ウィンドウ内の以前のブロック数について、ノードのインジケータ（すなわち、各ノードによって提供されるダミー信号又は真の信号）の可能性のある閾値の組合せごとに（ＳＳＳＳを用いて）計算される。機会ウィンドウは、リクエスタによって提示されるモニタリング要求で定義されてよい。各潜在的な共有秘密鍵について、対応する公開鍵は、楕円曲線暗号法を使用して計算されてもよい。次に、計算された公開鍵を既知の暗号化公開鍵と比較してよい。計算された公開鍵が暗号化公開鍵と一致する場合は、探索は中止してよく、暗号化秘密鍵をリクエスタに報告することができる。しかしながら、暗号化秘密鍵が見つかるまで、ノードは、新たなブロックが作成されると、新たなブロックのインジケータに基づいて探索を続けることができる。
【００９１】
また、方法５００を実行しているノード（又は別のノード）は、可能性のある共有秘密が暗号化キーであると判断されたときに、任意で、暗号化公開キーで以前に暗号化されたデータを復号することもできる。また、方法５００を実行するノード（又は別のノード）は、任意に、暗号化秘密鍵に基づいて署名を生成し、その署名をトランザクションのアンロック・スクリプトに追加して、暗号化公開鍵で以前に妨害されていたトークンをアンロックすることもできる。したがって、暗号化秘密鍵が識別された後、それは多くの目的のために使用され得る。
【００９２】
図４の動作４１２の説明で上述したように、暗号化秘密鍵が識別されると、イベントチェーンは終了してよく、グループ・ステーク公開鍵によって以前に妨害されたトークンが再配布されてよい。グループの複数のノードのうちの少なくとも１つがトランザクションを準備し、その複数のノードが協働してトランザクションの署名を生成する（動作４１４において）。例えばトランザクションは、要求の完了のためにリクエスタによって提供されたトークン又は他のデジタル資産を、要求の完了を支援した１つ以上のノードに配布してよい。例えばノードは、（モニタリング要求で定義された機会ウィンドウの閾値に基づいて定義され得る）定義された機会ウィンドウで暗号化秘密鍵共有を表すインジケータを提供したグループのノードを識別することができる。次いで、グループ・ステーク秘密鍵共有の少なくとも閾値を制御する複数のノードは、識別されたノードの１つ以上に１つ以上のデジタル資産を転送するトランザクションのために、有効な署名を協調的に生成することができる。例えば要求の完了のためにリクエスタによって提供されるトークン又は他のデジタル資産は、機会ウィンドウ内で真の信号を提供したノードに均等に配布され得る。また、別の配布方法が用いられてもよい。例えば配布は、機会のウィンドウ内で最初にシグナリングしたノードに有利になるように重み付けされてもよい。これは、モニタリング要求でリクエスタによって定義された線形関数又は指数関数を用いて行われることができる。
【００９３】
次に、図６を参照すると、「真の信号」の例示的な分布６００が示されている。この分布は、閾値によって定義されたサイズを有する機会ウィンドウ６０２を示す。閾値は、リクエスタによってモニタリング要求で定義されてよい。機会ウィンドウ６０２内で真の信号を提供したノードは、リクエスタによって提供されたトークン又は他のデジタル資産の共有を受け取ることができるが、機会ウィンドウの外で真の信号を提供したノード又は真の信号を提供しなかったこれらのノード（又は複数の真の信号を提供したノード）は、そのようなトークンを共有しない。
【００９４】
ノードがモニタリング要求に従って適切に構成されることを確実にするために、グループのノードは、モニタリング要求の完了に使用されるべきプロトコルに違反したノードをモニタリングするように構成されてよい。例えばノードは、グループのノードのうちの１つが、複数のインジケータ内で関連する秘密鍵共有を提供することによって、プロトコルに違反したと判断することがある。前述したように、プロトコルは、各インジケータが１回のみ提供されることを要求することができる。したがって、ノードは、グループのノードのうちの１つがそのプロトコルに違反したと判断したことに応答して、グループの他のノードと協力して、プロトコルに違反したノードのディポジット（すなわち、「ステーク」）を没収するように構成されてよい。
【００９５】
上述の実施例は、ビットコインで利用可能なオペレーションコードを参照しているが、本明細書で説明される方法は、他のタイプのブロックチェーン・ネットワークで使用されてもよい。
【００９６】
さらに、本明細書で説明されるように、定義された期間への言及は、伝統的な時間の尺度（例えば秒、分、時間、日等）又は非伝統的な時間の尺度（例えばブロック等）に基づいて定義される期間を指すことができる。例えばブロックは、合理的に一貫した周波数を有するいくつかのブロックチェーン・ネットワーク上で生成され得るので、トリガイベントの後にブロックチェーンに追加されたブロックの数が、時間の尺度を提供してもよい。したがって、定義された期間が経過したかどうかをノードが評価する任意の動作は、ブロックチェーンに追加されているブロックの数を評価することを含んでもよい。
【００９７】
上述の方法は、一般に、ノードで実行されるものとして説明されているが、方法の特徴は、他のノードとの協調に依存して、他の場所で実行されることができる。
【００９８】
上述の実施形態は、本発明を限定するものではなく例示であり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計することができることに留意されたい。請求項においては、括弧内に付されるすべての参照符号は、請求項を限定するものと解釈されるべきではない。「備える（comprising、comprises）」等の語は、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「備える（comprises）」は、「含む（includes）又はからなる（consists  of）」を意味し、「備える（comprising）」は、「含む（including）又はからなる（consisting  of）」を意味する。要素の単数形参照は、そのような要素の複数形参照を除外するものではなく、その逆もまた同様である。本発明は、いくつかの別個の要素を含むハードウェアによって及び適切にプログラムされたコンピュータによって実装され得る。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のいくつかが、１つの同じのハードウェアのアイテムによって具体化されてもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用することができないことを示すものではない。
【図１】
2020526069.tif 000005
【図２】
2020526069.tif 000006
【図３】
2020526069.tif 000007
【図４】
2020526069.tif 000008
【図５】
2020526069.tif 000009
【図６】
2020526069.tif 000010
【国際調査報告】
2020526069.tif 000011
2020526069.tif 000012
2020526069.tif 000013