(57)【要約】  分散型システムにおける処理ステップの制御及び調整の方法は、ブロックチェーンネットワーク（例えば、Ｂｉｔｃｏｉｎブロックチェーン）に参加している循環順序付きノードセットのうちのイニシエータノードにより実施できる。当該方法は、該セットのうちのノードの秘密鍵及びその暗号シェアを生成するステップと、それらを分配するステップと、を含む。ロック値はシェアに基づき決定され、トランザクションは、対応するアンロック値の供給に応答してリソースの制御を渡すよう構成される。ノードの間のトランザクション回路が準備され、該トランザクション回路はそれぞれ、２つの隣接ノードのうちの第１ノードに分配されたシェア及び該ノードの直前にある別のノードから受信された値に基づき決定されたロック値に対応するアンロック値の供給に応答して、リソースの制御を渡すよう構成される。イニシエータノードは、循環順序付きイニシエータノードセットに属してよい。
2021530172.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
ブロックチェーンネットワークに参加する第１循環順序付きノードセットのうちの第１イニシエータノードにより、秘密鍵を生成するステップと、
前記第１イニシエータノードにより、前記第１セットのノードの各々について、前記秘密鍵の暗号シェアを生成し、前記暗号シェアのそれぞれ１つを前記第１セットの他のノードに分配するステップと、
前記第１イニシエータノードにより、前記暗号シェアの各々に対応する公開鍵に基づき、第１ロック値を決定するステップと、
前記第１ロック値に対応する第１アンロック値の供給を含む実行条件の充足に応答して、前記第１イニシエータノードにより、前記第１イニシエータノードに関連するソースアドレスから、前記第１セットの中で前記第１イニシエータノードの直後のノードの受信側アドレスへ、リソースの制御を渡すよう構成されるトランザクションを準備するステップと、
前記第１イニシエータノードにより、前記第１セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するために、更なるトランザクションの準備を開始するステップであって、前記更なるトランザクションの各々は、それぞれのロック値に対応するそれぞれのアンロック値の供給を含む実行条件の充足に応答して、各ペアの第１ノードに関連付けられたアドレスから、該ペアの第２ノードに関連付けられたアドレスへ、それぞれのリソースの制御を渡すよう構成され、各ペアの前記第２ノードは、前記第１セットの中で該ペアの前記第１ノードの直後にあり、前記それぞれのロック値は、所与のペアの第１ノードにｂｎ敗された暗号シェア及び前記第１セットの中の該ノードの直前にあるノードから受信した値に基づき決定される、ステップと、
を含む方法。
【請求項２】
前記第１イニシエータノードにより、循環順序付きイニシエータノードセットのマスタイニシエータノードへ、前記秘密鍵に対応する公開鍵を送信するステップであって、前記イニシエータノードセットのイニシエータノードの各々は、複数の循環順序付きノードセットのうちのそれぞれ１つのイニシエータノードであり、前記複数の循環順序付きノードセットは前記第１セットを含む、ステップと、
前記第１イニシエータノードにより、第２イニシエータノードから、前記第１イニシエータノードから前記マスタイニシエータノードまで、セットの中の各ノードに関連付けられた公開鍵に基づく第１値を受信するステップであって、前記第２イニシエータノードは、前記イニシエータノードセットの中で前記第１イニシエータノードの直前にある、ステップと、
を更に含む請求項１に記載の方法。
【請求項３】
前記第１イニシエータノードにより、前記第１値及び前記秘密鍵に対応する前記公開鍵に基づき、第２ロック値を決定するステップと、
前記第１イニシエータノードにより、前記第２ロック値に対応する第２アンロック値の供給を含む実行条件の充足に応答して、前記第１イニシエータノードに関連付けられたソースアドレスから、第３イニシエータノードに関連付けられた受信側アドレスへ、リソースの制御を渡すよう構成されるトランザクションを準備するステップであって、前記第３イニシエータノードは、前記イニシエータノードセットの中で前記第１イニシエータノードの直後にある、ステップと、
を更に含む請求項２に記載の方法。
【請求項４】
前記第１イニシエータノードにより、前記第３イニシエータノードから前記マスタイニシエータノードまで、前記イニシエータノードセットの中の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づき、第２値を取得するステップ、
を更に含む請求項２又は３に記載の方法。
【請求項５】
前記第２値は、ブロックチェーンから、前記第１イニシエータノードにより取得される、請求項４に記載の方法。
【請求項６】
前記第２値は、前記第３イニシエータノードから、前記第１イニシエータノードにより取得される、請求項４に記載の方法。
【請求項７】
前記第１イニシエータノードにより、前記トランザクション回路の実行が開始されるべきではないと決定するステップと、
前記トランザクション回路の実行が開始されるべきではないと決定することに応答して、
前記第１イニシエータノードにより、前記第２値及び前記秘密鍵に基づき、第３アンロック値を決定するステップと、
前記第３イニシエータノードにより、前記第３アンロック値を用いて、前記第２イニシエータノードにより準備された、第２イニシエータノードに関連付けられたソースアドレスから前記第１イニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップであって、前記リソースの制御は、前記第３アンロック値の供給を含む実行条件の充足に応答して渡される、ステップと、
を更に含む請求項４〜６のいずれか一項に記載の方法。
【請求項８】
前記第１ロック値は、前記第２値に更に基づく、請求項４〜７のいずれか一項に記載の方法。
【請求項９】
前記第１イニシエータノードにより、前記トランザクション回路の実行が開始されるべきであると決定するステップと、
前記トランザクション回路の実行が開始されるべきであると決定することに応答して、
前記第１イニシエータノードにより、前記第２値および前記秘密鍵の前記暗号シェアのそれぞれ１つに基づき、第４アンロック値を決定するステップと、
前記第１イニシエータノードにより、前記第４アンロック値を用いて、前記第１循環順序付きノードセットの中の前記イニシエータノードの直前にあるノードにより準備された、前記直前のノードに関連付けられたソースアドレスから前記イニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップであって、前記リソースの制御は、前記第４アンロック値の供給を含む実行条件の充足に応答して渡される、ステップと、
を更に含む請求項４〜８のいずれか一項に記載の方法。
【請求項１０】
前記第１セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するための更なるトランザクションの準備を開始する前記ステップは、前記第１イニシエータノードにより、前記第１セットの中の前記第１イニシエータノードの直後にあるノードへ、前記第１ロック値を送信するステップを含む、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記リソースの各々は、前記リソースの他のものと同じ量である、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開−秘密鍵ペアを形成する、請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
前記秘密鍵の前記暗号シェアは、公に検証可能な暗号シークレット共有アルゴリズムを用いて生成される、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
請求項１〜１３のいずれか一項に記載の方法を実行する、コンピュータにより実装されたシステム。
【請求項１５】
コンピュータシステムを請求項１〜１３のいずれか一項に記載の方法を実行するようにする命令を格納した非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、分散型コンピューティングシステムに関し、より具体的には、ブロックチェーンネットワークを用いる順序付き処理ステップの指示及び制御を含む、分散型システムのノードに関連付けられた処理ステップの制御及び調整に関する。
【背景技術】
【０００２】
分散型コンピューティングシステムでは、分散型システムの中のノードとして動作する様々なコンピューティング装置が、ネットワークを介して通信してよい。メッセージは、これらのノードの間で交換されてよい。このようなメッセージの交換は、例えば、コンピューティングタスクを実行するためにノードが協力することを可能にする。このようなタスクは、様々なノードに渡り分散された処理を含んでよい。このような分散された処理は、様々なノードに関連付けられたステップの制御及び調整を必要とすることがある。例えば、特定の処理順序が強いられることがある。
【０００３】
分散型システムの一例は、航空機情報システムの状況で生じ得る。例えば、航空機情報システムは、種々のサブシステムを含んでよく、各サブシステムはサブコンポーネントで構成される。これらのサブシステムの各々は、例えば、飛行前検査を実行するときのような、特定の処理を実行することを担ってよい。これらのステップを実行するために、サブシステムの各々は、サブコンポーネントに、特定の処理ステップを実行することを要求し得る。
【０００４】
このような分散型システムでは、処理の中のステップの順序及び／又は特定の処理を形成するステップの順序を強制可能であることが必須であり又は望ましいことがある。例えば、サブシステムは、それらそれぞれの処理を順番に実行する必要があってよい。更に、サブコンポーネントに関連付けられたノードは、それらそれぞれの処理ステップを順番に実行する必要があってよい。
【０００５】
更に、処理ステップ又は特定の処理の改ざん防止又は改ざん防止監査証跡記録アウトプットを提供することが望ましいことがある。このような監査証跡は、様々なシナリオにおいて用途がある。例えば、航空機のコンテキストでは、これは例えば、例えば事故後に事故を法的に調査可能にし得る。特定の例では、このようなシステムは、例えば、根本原因決定のために、障害を航空機の特定のサブシステムに帰属させることを可能にし得る。
【０００６】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Ｂｉｔｃｏｉｎ台帳である。Ｂｉｔｃｏｉｎは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はＢｉｔｃｏｉｎブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。
【０００７】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Ｂｉｔｃｏｉｎプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【０００８】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード（マイナー）は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション（unspent  transaction,  UTXO）のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真（TRUE）と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、（ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、（ｉｉ）マイナーにより構築された新しいブロックに追加される、（ｉｉｉ）マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【０００９】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Ｂｉｔｃｏｉｎの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益（例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等）を利用しながら、それらの用途をより多様化し得る。
【００１０】
ブロックチェーンネットワークに参加している循環順序付きノードセットの中のノードにより実施され得る分散型システムにおける処理ステップの制御及び調整のための方法、システム、及びコンピュータ可読記憶媒体は、共同所有の英国特許出願番号第１８０６４４８.５号、名称「Computer−Implemented  Methods  and  Systems」、２０１８年４月２０日出願、に開示されている。該出願の主題は、多因子依存性決定（Multifactor  Dependent  Decisions  (MDD)）プロトコルと呼ばれるプロトコルの説明を含む。該出願の主題は、分散型システムのノードの間のステップの順序づけを提供するために利用され得る。例えば、それは、システム内の処理ステップの順序づけを提供するために使用されてよい。
【００１１】
ブロックチェーンネットワークに参加している循環順序付きノードセットにより形成される分散型システム内の機能を提供するための他の方法、システム、及びコンピュータ可読記憶媒体は、共同所有の英国特許出願番号第１７０６０７１.６号、第１８０２０６３.６号、それぞれ名称「Computer−Implemented  Methods  and  Systems」、それぞれ２０１７年４月１８日及び２０１８年２月８日出願に開示されている。前者は、エンティティに関連付けられたアドレス間のリンクを不明瞭にすると共に、該エンティティがそのリソースを着服する可能性を除去しながら、資金をあるアドレスから別のアドレスへと移動させ得るグループランダム交換（Group  Random  Exchange  (GRE)）という名称のプロトコルに関連する開示を含む。概略では、ＧＲＥは、ノードのグループの各メンバがコンピューティングリソースのｘ個の単位を他のメンバに移転することに合意するというグループの概念の上に構築される。その結果、全員が、コンピューティングリソースのｘ個の単位を受け取る。該出願は、ＧＲＥプロトコルの変形である、各支払いチャネルに対して異なるシークレットを使用しながら同一の機能を提供するようＧＲＥプロトコルを変更したグループランダム交換変更シークレット（Group  Random  Exchange  Change  Secret  (GRECS)）に関連する開示も含む。特に、ＧＲＥＣＳプロトコルに参加している各ノードは、それぞれのシークレット値をイニシエータノードへ送信し、イニシエータノードは次にこれらの値を用いて移転を開始する。後者は、ＧＲＥプロトコルに対する改良、より具体的にはＧＲＥＣＳプロトコルに関する開示を含む。この改良されたプロトコルグループランダム交換遅れた開示（Group  Random  Exchange  Late  Reveal  (GRELR)）は、共通シークレットを使用する必要を回避することにより、ＧＲＥＣＳを改良する。
【００１２】
しかしながら、特に、上述のように、システムのコンポーネントの間、例えばサブシステムの間で処理順序を制御できるだけでなく、特定のサブシステムを構成するサブコンポーネントの間でも処理順序を制御できることが望ましいことがある。更に、特定のサブシステムによる処理が任意的にスキップされ又は省略可能であることが望ましいことがある。
【００１３】
このような改良されたソリューションがここで考案される。
【発明の概要】
【００１４】
したがって、本開示によると、添付の請求項において定められる方法が提供される。
【００１５】
本開示により、コンピュータにより実施される方法が提供され得る。当該方法は、ブロックチェーンネットワークに参加している第１循環順序付きノードセットのうちの第１イニシエータノードにより、秘密鍵を生成するステップを含んでよい。当該方法は、第１イニシエータノードにより、第１セットのうちのノードの各々の秘密鍵の暗号シェアを生成するステップと、暗号シェアのうちのそれぞれを第１セットの他のノードに分配するステップと、を含んでよい。当該方法は、第１イニシエータノードにより、暗号シェアのそれぞれに対応する公開鍵に基づき、第１ロック値を決定するステップを含んでよい。当該方法は、第１イニシエータノードにより、第１ロック値に対応する第１アンロック値の供給を含む実行条件の充足に応答して、リソースの制御を第１イニシエータノードに関連付けられたソースアドレスから第１セットの中の第１イニシエータノードの直後にあるノードの受信側アドレスへ渡すよう構成されるトランザクションを準備するステップを含んでよい。当該方法は、第１イニシエータノードにより、第１セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するために、更なるトランザクションの準備を開始するステップを含んでよい。更なるトランザクションの各々は、それぞれのロック値に対応するそれぞれのアンロック値の供給を含む実行条件の充足に応答して、それぞれのリソースの制御を各ペアの第１ノードに関連付けられたアドレスから該ペアの第２ノードに関連付けられたアドレスへ渡すよう構成される。各ペアの第２ノードは、第１セットの中で、該ペアの第１ノードの直後にあってよい。それぞれのロック値は、所与のペアの第１ノードに分配された暗号シェア、及び第１セットの中の害ノードの直前にあるノードから受信した値に基づき決定されてよい。
【００１６】
幾つかの実装では、当該方法は、第１イニシエータノードにより、循環順序付きイニシエータノードセットのマスタイニシエータノードへ、秘密鍵に対応する公開鍵を送信するステップを含んでよい。イニシエータノードセットの各々のイニシエータノードは、服すの循環順序付きノードセットのうちのそれぞれ１つのイニシエータノードであってよい。複数の循環順序付きノードセットは、第１セットを含んでよい。当該方法は、第１イニシエータノードにより、第２イニシエータノードから、第１イニシエータノードからマスタイニシエータノードまで、該セットの中の各ノードに関連付けられた公開鍵に基づき第１値を受信するステップを含んでよい。第２イニシエータノードは、イニシエータノードセットの中で第１イニシエータノードの直前にあってよい。
【００１７】
幾つかの実装では、当該方法は、第１イニシエータノードにより、第１値および秘密鍵に対応する公開鍵に基づき第２ロック値を決定するステップを含んでよい。当該方法は、第１イニシエータノードにより、第２ロック値に対応する第２アンロック値の供給を含む実行条件の充足に応答して、リソースの制御を第１イニシエータノードに関連付けられたソースアドレスから第３イニシエータノードの受信側アドレスへ渡すよう構成されるトランザクションを準備するステップを含んでよい。第３イニシエータノードは、イニシエータノードセットの中で第１イニシエータノードの直後にあってよい。
【００１８】
幾つかの実装では、当該方法は、第１イニシエータノードにより、第３イニシエータノードからマスタイニシエータノードまで、イニシエータノードセットの中の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づき、第２値を取得するステップを含んでよい。
【００１９】
幾つかの実装では、第２値は、第１イニシエータノードによりブロックチェーンから取得されてよい。
【００２０】
幾つかの実装では、第２値は、第１イニシエータノードにより第３イニシエータノードから取得されてよい。
【００２１】
幾つかの実装では、当該方法は、第１イニシエータノードにより、トランザクション回路の実行が開始されるべきでないと決定するステップを含んでよい。当該方法は、トランザクション回路の実行が開始されるべきではないと決定することに応答して、第１イニシエータノードにより、第２値及び秘密鍵に基づき、第３アンロック値を決定するステップと、第１イニシエータノードにより、第３アンロック値を用いて、第２イニシエータノードにより準備された、第２イニシエータノードに関連付けられたソースアドレスから第１イニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップと、を含んでよい。リソースの制御は、第３アンロック値の供給を含む実行条件の充足に応答して渡されてよい。
【００２２】
幾つかの実装では、第１ロック値は、第２値に更に基づいてよい。
【００２３】
幾つかの実装では、当該方法は、第１イニシエータノードにより、トランザクション回路の実行が開始されるべきであると決定するステップと、トランザクション回路の実行が開始されるべきであると決定することに応答して、第１イニシエータノードにより、第２値及び秘密鍵の暗号シェアのそれぞれ１つに基づき、第４アンロック値を決定するステップと、第１イニシエータノードにより、第４アンロック値を用いて、第１循環順序付きノードセットの中のイニシエータノードの直前にあるノードにより準備された、直前のノードに関連付けられたソースアドレスからイニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップと、を含んでよい。リソースの制御は、第４アンロック値の供給を含む実行条件の充足に応答して渡されてよい。
【００２４】
幾つかの実装では、第１セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するための更なるトランザクションの準備を開始するステップは、第１イニシエータノードにより、第１セットの中の第１イニシエータノードの直後にあるノードへ、第１ロック値を送信するステップを含んでよい。
【００２５】
幾つかの実装では、リソースの各々は、他のリソースと同じ量であってよい。
【００２６】
幾つかの実装では、各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開−秘密鍵ペアを形成してよい。
【００２７】
幾つかの実装では、秘密鍵の暗号シェアは、公に検証可能な暗号シークレット共有アルゴリズムを用いて生成されてよい。
【００２８】
本開示は、プロセッサとメモリとを含むシステムも提供する。メモリは、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含む。
【００２９】
本開示は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【００３０】
本開示のこれらの及び他の態様は、本願明細書に記載の実施形態から明らかであり及びそれらを参照して教示される。本開示の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【００３１】
【図１】支払いチャネルで使用されるトランザクションを示す図である。
【００３２】
【図２】図１に従う支払いチャネルがどのように生成されるかを示すフローチャートである。
【００３３】
【図３】本願の例示的な動作環境を示す簡略概略図である。
【００３４】
【図４】本願の別の例示的な動作環境を示す簡略概略図である。
【００３５】
【図５】例示的なコンピューティング装置を示す。
【００３６】
【図６】ノードにより構成される循環順序付きセットを示す図である。
【００３７】
【図７】複数の循環順序付きセットに概念的に対応し得る２次元構造を示す簡略概略図である。
【００３８】
【図８】図７に示したものと類似する２次元構造のより詳細な表現を提供する図である。
【００３９】
【図９】図８の循環順序付きセットのうちの標準的な１つを示す図である。
【００４０】
【図１０】図８のイニシエータノードにより構成される循環順序付きセットを示す図である。
【００４１】
【図１１】イニシエータノードの間の回路を形成する支払いチャネルの構成のための動作を示すフローチャートである。
【００４２】
【図１２】所与の循環順序付きノードセットのノードの間の回路を形成する支払いチャネルの構成のための動作を示すフローチャートである。
【００４３】
【図１３】ノード間の支払いチャネルに関連付けられ得るアンロック値を示すための図８の注釈されたバージョンを提供する。
【００４４】
【図１４】図１１及び１２のフローチャートの中の動作がどのように結合され得るかを示すフローチャートである。
【００４５】
【図１５】支払いチャネルのコミットメントチャネルバージョンの表現を提供する。
【００４６】
【図１６】支払いチャネルのコミットメントトランザクションとして機能し得る例示的なＢｉｔｃｏｉｎトランザクションを示す。
【００４７】
【図１７】支払いチャネルの返金トランザクションとして機能し得る例示的なＢｉｔｃｏｉｎトランザクションを示す。
【００４８】
【図１８】支払いチャネルの支払いトランザクションとして機能し得る例示的なＢｉｔｃｏｉｎトランザクションを示す。
【００４９】
【図１９】図１９のコミットメントトランザクションの態様が図１８の支払いトランザクションの態様とどのように結合され得るかを示す。
【００５０】
【図２０】順序付き処理を制御し及び実行するときに、種々の順序付きセットのノードにより実行される動作を示すフローチャートである。
【発明を実施するための形態】
【００５１】
図中の同様の参照符号は同様の要素及び特徴を示すために使用される。
【００５２】
本開示を実現するプロトコルは、本願明細書では、それぞれが順序付き方法で決定を行うために、協力するノードのグループについて説明される。該プロトコルは、処理タスクの中で前のステップのアウトプットから導出された累積シークレット値を利用することによってのみ復元できるコンピューティングリソースの単位をコミットするようノードに要求するという概念の上に構築される。
【００５３】
幾つかの概念は、背景として以下に記載される。
【００５４】
本願明細書に記載されるプロトコルは、既存のＢｉｔｃｏｉｎに関連する技術、支払いチャネル（Payment  Channels）（例えば、「Introduction  to  Micropayment  Channels」、http://super３.org/introduction−to−micropayment−channels/を参照）の上に構築される。これは、参加者のペアの間のオフブロックＢｉｔｃｏｉｎトランザクションのために設計された技術であり、特に返金トランザクションの使用を組み入れる。
【００５５】
＜支払いチャネル＞
上述のように、支払いチャネルは以下の説明で言及され、支払いチャネルの概要は読者の便宜のために以下に示される。
【００５６】
支払いチャネルは、全部のトランザクションをブロックチェーンにコミットすることなく、パーティが複数の暗号通貨トランザクションを生成するために設計された技術である。標準的な支払いチャネルの実装では、ほぼ無限の量の支払いを行うことができるが、ブロックチェーンに２つのトランザクションを追加する必要があるだけである。
【００５７】
ブロックチェーンに追加されるトランザクション数が削減され、及び関連するコストが削減されることに加えて、支払いチャネルは、速度の利点も提供し、重要なことに、物事が計画通りに進まなかった場合に、又はいずれかの参加者が特定の払いセットを超えて進めないと決定した場合に、パーティが単位を返金される能力も有する。支払いチャネルの実装の説明は以下に概略を示す。
【００５８】
ＡｌｉｃｅがＢｏｂへブロックチェーンリソースを移転する必要のあるシナリオを検討する。これは、ＡｌｉｃｅからＢｏｂへ、状況の要求に応じて、時間期間に渡り、複数の支払いを要求してよい。Ａｌｉｃｅは、可能な交換セットの中で、最大で例えば（全部で）１５ＢＴＣを、Ｂｏｂへ送金することを期待している。これを進めるために、支払いチャネルがＡｌｉｃｅとＢｏｂとの間に確立され、以下のように動作する。
【００５９】
先ず、Ａｌｉｃｅは、Ａｌｉｃｅに由来する１５ＢＴＣをコミットする、Ａｌｉｃｅ及びＢｏｂの両者により制御される２−ｏｆ−２マルチシグネチャＰ２ＳＨ（pay−to−script  hash）トランザクションＴＣを生成する。このとき、トランザクションは、Ｂｉｔｃｏｉｎネットワークに提出されない（このようなマルチシグネチャアドレスは、２人の個人（Ａｌｉｃｅ及びＢｏｂ）が、このアドレスからの金銭を使う任意のトランザクションに暗号的に署名することを要求する）。
【００６０】
次に、Ａｌｉｃｅは、マルチシグネチャにより制御される資金の全部の単位をＡｌｉｃｅに返金する別個の返金トランザクションＴｒ，０を生成する。このトランザクションは、１００ブロックのｎＬｏｃｋＴｉｍｅ値を含む（ｎＬｏｃｋＴｉｍｅは、指定された時間が経過した後にのみ、Ｂｉｔｃｏｉｎトランザクションが実行可能になることを可能にするＢｉｔｃｏｉｎトランザクションパラメータである）。Ｂｏｂはトランザクションに署名する。この返金トランザクションは、ｎＬｏｃｋＴｉｍｅが終了した後に、Ａｌｉｃｅ及びＢｏｂの間の交換が食い違った場合に、Ａｌｉｃｅが返金されることを可能にする。
【００６１】
次に、Ａｌｉｃｅは元のトランザクションＴＣに署名する。
【００６２】
このとき、Ａｌｉｃｅ及びＢｏｂは、（ブロックチェーン外の）移転がＡｌｉｃｅからＢｏｂへと行われることを反映するために、新しい返金トランザクションを生成することに進んでよい。これらの返金トランザクションは、その時点でＡｌｉｃｅがＢｏｂへと移転することを要求されるリソースの総量を反映し得る。一例として、ＡｌｉｃｅがＢｏｂに５ＢＴＣを送金する場合、５ＢＴＣをＢｏｂへ送信し１０ＢＴＣをＡｌｉｃｅへと戻すアウトプットを有する新しい返金トランザクションＴｒ，ｉが生成される。ＡｌｉｃｅがＢｏｂに別の５ＢＴＣを送金する必要がある場合、１０ＢＴＣをＢｏｂへ及び５ＢＴＣをＡｌｉｃｅへ送信するアウトプットを有する新しい返金トランザクションＴｒ，ｉ＋１が生成される。新しい返金トランザクション毎に、彼らは、両方のパーティがトランザクションに署名するがネットワークにトランザクションを提出する必要がないことを詳細に合意していると仮定する。
【００６３】
生成された各々の連続する返金トランザクションは、前の返金トランザクションより少ないｎＬｏｃｋＴｉｍｅを有することに留意する。つまり、ｎＬｏｃｋＴｉｍｅ（Ｔｒ，ｉ＋１）＜ｎＬｏｃｋＴｉｍｅ（Ｔｒ，ｉ）である。
【００６４】
参加者が任意のＴｒ，ｉに署名することを拒否した場合、不当な扱いを受けた参加者は単にＴｒ，ｉ−１を提出してよい。最悪のシナリオでは、（ｎＬｏｃｋＴｉｍｅが終了した後に、）ＡｌｉｃｅはＴｒ，０に署名し、それをネットワークに提出して彼女の単位の全部を取り戻す。
【００６５】
最終的に構成される返金トランザクションは、ＡｌｉｃｅからＢｏｂへ移転される単位の総和を表す。このトランザクションは、ネットワークに提出される。
【００６６】
図１は、支払いチャネルの中で使用されるトランザクションＴＣ１００Ａ、及びＴｒ，ｎ１００Ｄを示す。Ｍは、ＡｌｉｃｅからＢｏｂへ送金され得る最大金額を表す。ｘｉは、ＡｌｉｃｅがＢｏｂに支払う必要のある単位の現在の総量である。Ｓｓｔｏｐは、初期返金トランザクションにおけるｎＬｏｃｋＴｉｍｅである。ｎは、ＡｌｉｃｅとＢｏｂの間で行われる進行中の（オフブロック）移転の中で生成された返金トランザクションの数である（これは、初期返金トランザクションを含まない）。ｓは、他のパーティが前の返金トランザクションを提出し実質的にＡｌｉｃｅとＢｏｂとの間の交換を終了するリスクをパーティが負う前に、返金トランザクションに合意するために両方の参加者（Ａｌｉｃｅ及びＢｏｂ）に割り当てられた時間である。
【００６７】
ｔ＋ｎ＊ｓ＜Ｓｓｔｏｐ、ここで、ｔは現在時間であり、（Ｓｓｔｏｐ−ｎ＊ｓ）≧ｓであることに留意する。
【００６８】
図１のトランザクションＴＣ１００Ａ、Ｔｒ，０１００Ｂ、Ｔｒ，１１００Ｃ、及びＴｒ，ｎ１００Ｄは、ブロックチェーン上に現れ得るトランザクションである。
【００６９】
ＡｌｉｃｅとＢｏｂのあいだの支払いチャネルを構成する動作は、図２のフローチャート２００に示される。動作２１０以降は、コンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する１つ以上のコンピューティング装置の１つ以上のプロセッサにより実行される。
【００７０】
動作２１０で、Ａｌｉｃｅに関連付けられたコンピューティング装置のプロセッサは、上述の方法で２−ｏｆ−２マルチシグネチャＰ２ＳＨ（pay−to−script  hash）トランザクションＴＣを生成する。
【００７１】
動作２１０から、制御フローは動作２１２へ進む。動作２１２で、Ａｌｉｃｅに関連付けられたコンピューティング装置のプロセッサは、上述の方法で、マルチシグネチャにより制御される資金の全部の単位をＡｌｉｃｅに関連付けられたアカウントに返金する別個の返金トランザクションＴｒ，０を生成する。
【００７２】
動作２１２から、制御フローは動作２１４へ進む。動作２１４で、Ａｌｉｃｅに関連付けられたコンピューティング装置のプロセッサは、上述の返金トランザクションに署名する。
【００７３】
動作２１４から、制御フローは動作２１６へ進む。動作２１４で、Ｂｏｂに関連付けられたコンピューティング装置のプロセッサも、上述の返金トランザクションに署名してよい。トランザクションがこのように署名された場合、制御フローは動作２１８へ進む。代替として、トランザクションが署名されない場合、支払いチャネルの生成は中止される。
【００７４】
動作２１８で、Ａｌｉｃｅに関連付けられたコンピューティング装置のプロセッサは、ＴＣに署名し、それをブロックチェーンに提出する。制御フローは、次に、動作２２０へ進む。
【００７５】
動作２２０で、上述の返金トランザクションは、第１返金トランザクションとして認識され、ＡｌｉｃｅからＢｏｂへの更なる送金が後に交渉できるようにする。
【００７６】
動作２２０から、制御フローは動作２２２へ進む。動作２２２で、更なる送金を交渉するために十分な時間が残っていることが決定される。十分な時間が残っていない場合、制御フローは、動作２２４へと進み、最後の返金トランザクションがブロックチェーンに提出される。代替として、十分な時間が残っている場合、制御フローは動作２２６へ進む。
【００７７】
動作２２６で、ＡｌｉｃｅとＢｏｂの間で更なる送金が交渉される。動作２２６から、制御フローは動作２２８へと進み、交渉が成功したかどうかが決定される。交渉が成功しなかった場合、制御は上述の動作２２４へと進む。代替として、交渉が成功すると、結果として制御フローは動作２３０へ進む。
【００７８】
動作２３０で、成功した交渉に起因する新しい返金トランザクションが上述の方法で生成される。次に、制御フローは、動作２４０へと進み、新しい返金トランザクションが現在返金トランザクションとして認識される。
【００７９】
動作２４０から、制御フローは動作２４２へと進み、Ａｌｉｃｅ及びＢｏｂに関連付けられたコンピューティング装置のプロセッサは、現在返金トランザクションに署名してよい。署名した場合、制御フローは、上述の動作２２２へと進む。代替として、トランザクションが署名されなかった場合、動作２４４で、現在返金トランザクションの認識は、前の返金トランザクションへと復帰する。動作２４４から、制御フローは、上述の動作２２２に戻る。
【００８０】
＜シークレット共有＞
【００８１】
以下に更に説明するように、本願の主題では、閾値シークレット共有方式が利用される。
【００８２】
幾つかの例では、閾値シークレット共有プロトコルは、（ｔ；ｎ）閾値により定められてよい。ここで、ｎは参加ノードの数であってよく、ｔ＋１はシークレットを再構成することを要求されるノードの最小数であってよい。シークレット共有方式は、閾値暗号システムの例であり、シークレットは、ｎ個のノードの間で部分に分けられてよく、少なくともｔ＋１個のノードがシークレットを再構成するために参加する必要がある。任意のｔ個の部分が分かると、シークレットが明らかにされてよい。
【００８３】
＜シャミアのシークレット共有＞
【００８４】
閾値シークレット共有ソリューションの一例は、文献「How  to  share  a  secret」、Shamir,  A.  (１９７９)、Communications  of  the  ACM,  ２２(１１),  ６１２−６１３  (“Shamir  method”)に記載されている。シャミア（Shamir）法は、多項式補間に基づいてよく、一般性を失うことなく、シークレットは有限フィールドの要素であると想定される。シャミア法は、ディーラ又はディーラ不要の方法を含んでよく、ｎ個のノードＵ１、Ｕ２、．．．、Ｕｎのセット及びアクセス構造Ａを含んでよい。参加者のグループは、シークレットを再構成可能であってよい。シャミア法により、任意のランダムシークレットは、ｔ次多項式ｆ（ｘ）の中のｆ（０）として格納され、参加者ｉのみが自身のシェアｆ（ｘｉ）を計算できる。ｎ人のうちのｔ＋１人の参加者が協力する場合、彼らは、ラグランジュ多項式補間を用いて、（鍵ｋの）彼らのシェアｋ１、ｋ２、．．．、ｋｎによりｆ（ｘ）上の任意の点を再構成できる。ラグランジュ多項式補間を用いると、次数ｔを有する関数ｆ（ｘ）は、ｔ＋１個の点により再構成できる。
【００８５】
【数１】
2021530172.tif 000003
【００８６】
【数２】
2021530172.tif 000004
【００８７】
ここで、
【００８８】
【数３】
2021530172.tif 000005
【００８９】
【数４】
2021530172.tif 000006
【００９０】
ディーラノードが存在するとき、ディーラノードは、サイズｐ（ｐは素数（prime））の有限フィールドＦの要素であると想定されるシークレットａｏ＝ｋを選択してよく、ランダムにｔ−１個の正の整数ａ１，．．，ａｔ−１を選び取ってよい。これらは、多項式ｆ（ｘ）＝ａ１＋ａ１ｘ＋ａ２ｘ２＋．．．の係数を表す。ディーラノードは、次に、多項式に属するｎ個の点（ｘｉ，ｆ（ｘｉ））を計算し、それらを参加者に分配してよい。
【００９１】
シャミアのディーラ不要シェア分配段階では、
【００９２】
１）各参加者Ｕｉは、全員に知られているｘｉを割り当てられる。各ｘｉはユニークでなければならない。
【００９３】
２）各プレイヤＵｉは、次数ｔを有するランダム多項式ｆｉ（ｘ）を生成する。
【００９４】
３）各プレイヤＵｉは、全ての他のプレイヤに、多項式上の彼らそれぞれの点ｆｉ（ｘｉ）  ｍｏｄ  ｎを秘密裏に（参加者の公開鍵により暗号化される）送信する。
【００９５】
４）各プレイヤＵｉは、全ての彼らの受信したｆ１（ｘｉ）、ｆ２（ｘｉ）、．．．、ｆｐ（ｘｉ）（ａｌｌ  ｍｏｄ  ｎ、ここでｎは楕円曲線上の点Ｇにより生成されるグループの順序である）を加算して、ｋｉ＝ｆ（ｘｉ）  ｍｏｄ  ｎを形成し、これは多項式ｆ（ｘ）  ｍｏｄ  ｎ上のシェアである。
【００９６】
シャミア法の上述の説明は、閾値シークレット共有ソリューションの一例であるが、他の方法又は敷地シークレット共有ソリューションが考えられてよい。
【００９７】
幾つかの実装では、敷地署名計算は、ｋ×Ｇの決定に基づき、ここでｋはシークレット鍵であり、Ｇは楕円曲線上の点である。
【００９８】
ｆ（ｘ）がｔ次の多項式である場合、シークレットｋは、ｋ＝Σｉ∈πｂｉ，πｋｉにより補間できる。ここで、πは、シェアｋａ、ｋｂ、．．．、ｋｔ、ｋｔ＋１のサイズｔ＋１の部分集合であってよく、ｂは補間係数であってよい。πは、自身のシェアｋｉを開示することなく、ｋ×Ｇを計算するために協力する、ｔ＋１個のノードのグループであってよい。ｋは、ｔ次多項式の点ｘ＝０であってよい。
【００９９】
−各ノードＵｉは、部分ｂｉ，πｋｉ×Ｇを計算してよい。
【０１００】
−Πの中の全部のノードは、それらの部分を一緒に加算して（ラグランジュ補間によりシークレットｋを再構成し）、次式を与える。
【０１０１】
【数５】
2021530172.tif 000007
【０１０２】
上述のＱ＝ｋＧを計算する処理は、シークレット共有結合（Secret  Share  Joining）と呼ばれてよい。
【０１０３】
＜公に検証可能なシークレット共有＞
【０１０４】
本願の主題において参加するノードは、それらのシークレットシェアの正しさを検証することができることが望ましい。鍵シェア検証のために、公に検証可能なシークレット共有（Publicly  Verifiable  Secret  Sharing  (PVSS)）プロトコル又はアルゴリズムが利用されてよい。鍵シェア検証は、ノードが、彼ら自身のシェア及び他のノードのシェアを検証することを可能にし得る。
【０１０５】
例示的なＰＶＳＳプロトコルは、「Publicly  verifiable  secret  sharing」、International  Conference  on  the  Theory  and  Applications  of  Cryptographic  Techniques  (Springer  Berlin  Heidelberg),  pages  １９０−１９９,  Stadler,  M.,published  May  １９９６  [Stadler]に記載されている。
【０１０６】
例示的なＰＶＳＳプロトコルでは、各ノードＵｉは、解読関数Ｄｉを有してよい。これは、対応する公開暗号関数Ｅｉにより暗号化された情報にアクセスできる。このように、ディーラノードは、公開暗号関数を使用して、鍵シェアを分配し、及びそれらを以下の形式で発行してよい。
【０１０７】
Ｋｉ＝Ｅｉ（ｋｉ）、ｉ＝１，．．．，ｎ
【０１０８】
暗号化シェアは、関心のあるノードにより公に検証可能である。ノードは、自身の鍵シェアを検証でき、他のノードが正しい鍵シェアを受信したこと、つまりディーラノードが正直か否かを検証できる。
【０１０９】
ＰＶＳＳプロトコルの主な（上位）コンポーネントは以下を含む。
【０１１０】
（ｉ）シークレット共有：ディーラノードは、アルゴリズムＳｈａｒｅ（ｋ）＝（ｋ１，．．．，ｋｎ）を走らせ、シェアを計算し、それらを参加ノードの間に分配する。
【０１１１】
（ｉｉ）再構成：参加ノードは、アルゴリズムＲｅｃｏｖｅｒを走らせることにより、シークレットを再構成できる。従って、Ｒｅｃｏｖｅｒ（｛Ｄｉ（Ｋｉ）｜ｉ∈Ａ｝）＝ｋ。
【０１１２】
（ｉｉｉ）検証：アルゴリズムＰｕｂＶｅｒｉｆｙが、暗号化シェアを検証するために使用されてよい。ノードがアルゴリズムＰｕｂＶｅｒｉｆｙ（｛Ｋｉ｜ｉ∈Ａ｝）＝１→Ｒｅｃｏｖｅｒ（｛Ｄｉ（Ｋｉ）｜ｉ∈Ａ｝）＝ｕ、ｕ＝ｋ、を作動する場合、ディーラノードは、正直であると決定されてよく、鍵シェアは一貫している。
【０１１３】
幾つかの実装では、ＰＶＳＳ方式は、復元段階における必要性に依存して、対話的又は非対話的であり得る。
【０１１４】
幾つかの暗号システムに基づくＰＶＳＳプロトコルの種々の実装が考えられてよい。説明のために、以下は、文献「A  simple  publicly  verifiable  secret  sharing  scheme  and  its  application  to  electronic  voting」、Annual  International  Cryptology  Conference  (Springer  Berlin  Heidelberg),  pages  １４８−１６４,  by  Schoenmakers,  B.,  published  August  １９９９に記載のプロトコルを強調する。
【０１１５】
初期化段階では、公開手順を用いて、グループＧｑ及び２つの独立に選択された生成元（generator）Ｇ及びｇが選択されてよい。各ノードは、それ自体の秘密鍵ｘｉ∈Ｚｑ＊を与えられ、ｙｉ＝Ｇｘｉを公開鍵として設定してよい。
【０１１６】
ディーラノードは、次に、Ｚｑにおける係数で、最大でｔ−１の次数を有するランダム多項式ｆ（ｘ）＝Σｊ＝０ｔ−１ａｊｘｊを選択してよく、ａ０＝ｋに設定する。コミットメントＣｊ＝ｇａｊ、ｊ＝０，．．．，ｔ、及び暗号化シェアｆ（ｉ）（参加者の公開鍵を用いる）Ｙｉ＝ｙｉｆ（ｘｉ）、ｉ＝１，．．．，ｎが発行されてよい。
【０１１７】
Ｘｉ＝Πｔ−１ｊ＝０（Ｃｊ）ｉｊを計算することにより、ディーラノードは、暗号化シェアが一貫していることを示すことができる。特に、ディーラノードは、Ｘｉ＝ｇｆ（ｘｉ）、Ｙｉ＝ｙｉｆ（ｘｉ）を示すことにより、ｆ（ｉ）の知識の証明を生成できる。
【０１１８】
鍵シェアの検証は、上述のＳｔａｄｌｅｒのフィアット−シャミア（Fiat−Shamir）暗号技術を用いて実行できる。非対話型プロトコルの主要なステップは以下を含む。
【０１１９】
証明者（全てのノード）は、ランダム（random）ｗｉ∈Ｚｑを選び出し、ａ１ｉ＝ｇｗｉ、ａ２ｉ＝ｙｗｉを計算してよく、値をブロードキャストしてよい。
【０１２０】
−ｃ＝Ｈ（Ｘｉ，Ｙｉ，ａ１ｉ，ａ２ｉ）、Ｈ（）は暗号ハッシュ関数である、を用いて、証明者（例えば、ノード）は、ｒｉ＝ｗｉ−ｆ（ｘｉ）ｃを計算しブロードキャストしてよい。
【０１２１】
−ｒｉ，ｃが与えられると、検証者ノードは、ａ１ｉ＝ｇｒｉＸＣｉ、ａ２ｉ＝ｙｒｉｉＹＣｉを計算してよく、
【０１２２】
Ｘｉ，Ｙｉ，ａ１ｉ，ａ２ｉ、１≦ｉ≦ｎ、のハッシュがｃに一致することを証明してよい。
【０１２３】
必要なとき、参加者ノードは、他のノードのシェアｆ（ｘｉ）に関して何ら知る必要無しに、シークレットｓを再構成できる。必要な情報は、Ｓｉ＝Ｇｆ（ｘｉ）、ｉ＝１，．．．，ｔを含んでよい。シークレットは、ラグランジュ補間により計算される。
【０１２４】
【数６】
2021530172.tif 000008
【０１２５】
【数７】
2021530172.tif 000009
【０１２６】
上述の例及び本願の主題の以下の説明は、鍵シェアを計算し及び分配するためにディーラノードを利用する。しかしながら、シークレット共有プロトコルのディーラ不要の実装は、フィアット−シャミアヒューリスティック（Fiat−Shamir  heuristics）技術により記載されるように実装されてよい（例えば、「Fiat−Shamir  heuristic」、https://en.wikipedia.org/wiki/Fiat%E２%８０%９３Shamir_heuristic,  accessed  June  １３,  ２０１８を参照する）。
【０１２７】
ここで、図３を参照すると、本願の例示的な動作環境が示される。図示のように、複数のノード３００が、コンピュータネットワーク３１０を介して通信する。ノード３００の各々は、コンピューティング装置であり、ブロックチェーンに参加しており、ブロックチェーンの関連付けられた、例えば計算リソースの単位のような単位の量を反映する１つ以上の関連アドレスを有する。
【０１２８】
ノード３００の様々なノードは、分散型処理の中の処理ステップを実行してよく、そのアウトプットは結合されて結果を形成する。
【０１２９】
本願の主題は、様々な環境において適用され得る。例えば、図４は、システム、より具体的には航空機情報システム４００のコンテキストにおける本願の特定の例示的な動作環境を示す。
【０１３０】
航空機情報システム４００による分散型処理は制御コンピュータ装置４１０により制御され、複数のサブシステムに依存してよい。例えば、分散型処理は、燃料サブシステム４２０、ナビゲーションサブシステム４３０、除氷サブシステム４４０、及び着陸ギアサブシステム４５０のような、種々のノードを含んでよい。これらのサブシステムの各々は、また、サブコンポーネントを含んでよい。例えば、燃料サブシステム４２０は、油検査サブコンポーネント４２２、温度サブコンポーネント４２４、油圧サブコンポーネント４２６、及び燃料容積サブコンポーネント４２８を含んでよい。サブシステムは、飛行前検査の部分として、特定の順序で検査されてよく、また、所与のサブシステムのサブコンポーネントは特定の順序で検査されてよい。例えば、サブシステムは、燃料サブシステム４２０から開始して、着陸ギアサブシステム４５０まで、図中の矢印により示される順序で検査されてよい。別の例では、燃料サブシステム４２０のサブコンポーネントは、油検査サブコンポーネント４２２から開始して燃料容積サブコンポーネント４２８まで時計回りに検査されてよい。更に後述するように、本願の主題は、順序付き方法でこのような処理を制御するために利用されてよい。更に、例えば除氷サブシステム４４０が熱帯気候ではスキップされてよいというように、環境が正当だと理由づける場合には、サブシステムはスキップされてよい。追加又は代替として、サブシステムが故障した場合でも、他のサブシステムはそれらの処理を順番に完了するよう制御されてよい。
【０１３１】
図３に戻り、ノード３００の各々はコンピューティング装置であることに留意する。図５は、例示的なコンピューティング装置の高レベル動作図である。例示的なコンピューティング装置５００は、例えばノード３００の１つ以上を含む本願明細書に記載されるコンピュータシステムの１つ以上の例であってよい。例示的なコンピューティング装置５００は、自身を特定の機能を実行するよう適応するソフトウェアを含む。
【０１３２】
例示的なコンピューティング装置５００は、種々のモジュールを含む。例えば、図示のように、例示的なコンピューティング装置５００は、プロセッサ５１０、メモリ５２０、及びネットワークインタフェース５３０を含んでよい。図示のように、例示的なコンピューティング装置５００の前述のコンポーネントは、バス５４０を介して通信する。
【０１３３】
プロセッサ５１０は、ハードウェアプロセッサである。プロセッサ５１０は、例えば、１つ以上のＡＲＭ、Ｉｎｔｅｌ  ｘ８６、ＰｏｗｅＰＣプロセッサ、等であってよい。
【０１３４】
メモリ５２０は、データを格納し読み出し可能にする。メモリ５２０は、例えば、ランダムアクセスメモリ、読み出し専用メモリ、永久記憶を含んでよい。永久記憶は、例えば、フラッシュメモリ、固体ドライブ、等であってよい。読み出し専用メモリ及び永久記憶は、非一時的コンピュータ可読記憶媒体である。コンピュータ可読媒体は、例示的なコンピューティング装置５００の全体動作を制御するオペレーティングシステムにより管理され得るようなファイルシステムを用いて構成されてよい。
【０１３５】
ネットワークインタフェース５３０は、例示的なコンピューティング装置５００を、他のコンピューティング装置及び／又は種々の通信ネットワーク、例えばコンピュータネットワーク３１０（図３）と通信可能にする。
【０１３６】
命令を含むソフトウェアは、コンピュータ可読媒体から、プロセッサ５１０により実行される。例えば、ソフトウェアは、メモリ５２０の永久記憶から、ランダムアクセスメモリへとロードされてよい。追加又は代替として、命令は、メモリ５２０の読み出し専用メモリから直接、プロセッサ５１０により実行されてよい。
【０１３７】
更に後述するように、ソフトウェアは、例えば、ノード３００の１つ以上及び／又は制御コンピューティング装置４１０のうちの１つ以上、及び／又はサブシステム４２０〜４５０及び／又はそのサブコンポーネントを含む本願明細書で言及する種々のコンピュータシステムのうちの１つ以上のとして機能するよう、例示的なコンピューティング装置５００のインスタンスを適応してよい。
【０１３８】
図６を参照すると、更に後述するように、本願明細書に記載するプロトコルで、全体の分散型コンプーティングタスクの処理ステップを実行することを担うノードは、タスクの中の処理ステップの順序に対応する方式で順序付けられた、循環順序付きセット６００を形成してよい。循環順序付きセットは、ノード６１０の各々がノードのうちの２つの他のノードを該ノードの直前ノード及び直後のノードとして有する、リングと考えられてよい。例えば、有向リングは、図６に示されるように、ノード６１０の循環順序付きセットにより形成されてよい。
【０１３９】
更に後述するように、本願の主題では、１つより多くのこのような循環順序付きノードセットが利用される。
【０１４０】
例えば、循環順序付きノードセットのうちのノードは、（ＭＤＤプロトコルにおけるものと類似する）所与のサブシステムにより実行される処理ステップに対応してよい。ここで、複数のこのような循環順序付きセットが利用され、各セットは特定のサブシステムに対応する。更に、サブシステム間の関係、特にサブシステムに跨がる処理の順序は、別の循環順序付きノードセット、各ノードが所与のサブシステムに対応する循環順序付きセットのうちの特定の１つから導出される特に別の循環順序付きノードセットを用いて表現されてもよい。
【０１４１】
背景として、同様の循環順序付きセット、特に「回路（circuit）」又は「グループ交換回路（group  exchange  circuits）」を形成する支払いチャネルのセットによりリンクされるセットは、上述の共同所有の英国特許出願番号第１７０６０７１.６号、第１８０２０６３.６号、及び第１８０６４４８.５号で議論されており、上述のＭＤＤ、ＧＲＥＣＳ、及びＧＲＥＬＲプロトコルにより特徴付けられる。
【０１４２】
別の例では、循環順序付きノードセットのうちのノードは、処理セットを制御するのに加えて又は代替として、他の目的のために、例えばＧＲＥＣＳ又はＧＲＥＬＲプロトコルにおけるものと同様の目的で、利用されてよく、複数のこのようなセットは、各ノードがそれらのセットのうちの１つから導出される別の循環順序付きノードセットにリンクされる。
【０１４３】
任意のイベントで、循環順序付きノードセットのこのような２次元構造は、図７に示すような全体リング７１０に加わったリング７００のセットとして視覚化されてよい。図７の簡易概略表現では、個々のノードは、リング７００の各々を形成し、全体リング７１０は示されない。しかしながら、矢印は、リング７００に対応する循環順序付きノードセットの各々の中の、及び全体リング７１０に対応する循環順序付きノードセットの中の、順序の可能な方向を示す。
【０１４４】
このような２次元構造のより詳細な概略表現は図８に示される。
【０１４５】
図示のように、２次元構造は、循環順序付きセットω個のＣａ、Ｃｂ、．．．Ｃｉ．．．Ｃωを含む。これらは例えばリング７００に対応してよい。
【０１４６】
循環順序付きセットの各々は、図示のように、ｎｊ個のノード：イニシエータノードＩｊと、ｎ−１個の他のノードＵ１ｊ、Ｕ２ｊ、．．．Ｕｉｊ、．．．Ｕｊｎｘ−１を含んでよい。ｎｊは、種々の循環順序付きセットＣｊについて異なり又は同じである。各イニシエータノードＩｊは、自身のそれぞれの循環順序付きセットの管理者として機能する。
【０１４７】
別の循環順序付きセット、つまりイニシエータノード８００の循環順序付きセットは、循環順序付きセットＣａ、Ｃｂ、．．．Ｃｉ．．．Ｃωの各々のイニシエータノードＩａ、Ｉｂ、．．．Ｉｉ．．．Ｉω、及びマスタイニシエータノードＩＭで構成される。更に後述するように、マスタイニシエータノードＩＭは、プロトコル全体の管理者として機能する。
【０１４８】
更に後述するように、本願の主題は、非対称暗号技術に依存する。種々の公開鍵暗号システムが利用されてよい。例えば、楕円曲線暗号法（elliptic  curve  cryptography  (ECC)）が利用されてよい。特定の例では、楕円曲線暗号法が利用されてよく、種々の秘密鍵及び対応する公開鍵が利用され、それにより、所与の秘密鍵ｋ及びその対応する公開鍵Ｐは、楕円曲線暗号公開−秘密鍵ペアであってよい。その結果、Ｐ＝ｋＧであり、Ｇは次数ｑの楕円曲線上の基点（base  point）であり、ｑ×Ｇ＝０、ここでｑは大きな素数であり、０＜ｋ＜ｑである。特定の例では、文献「Standards  for  Efficient  Cryptography  ２  (SEC２)」、Certicom  Corp,  January  ２７,  ２０１０で定められる楕円曲線ｓｅｃｐ２５６ｋ１が利用されてよい。言い換えると、各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開−秘密鍵ペアを形成してよい。
【０１４９】
循環順序付きノードセットの各々のノードをリンクする支払いチャネルの構造が以下に説明される。
【０１５０】
例えば、循環順序付きセットＣａ、Ｃｂ、．．．Ｃｉ．．．Ｃωの所与の１つを検討する。単に例として、以下の議論はＣｊを参照するが、これは回路Ｃａ、Ｃｂ、．．．Ｃｉ．．．Ｃωのいずれにも等しく適用可能である。例示的な循環順序付きセットＣｊは、図９の概略図９００に示される。
【０１５１】
概略図９００を参照すると、ノードＣｊ、つまりＵ１ｊ、Ｕ２ｊ、．．．Ｕｊｎｘ−１、及びＩｊは、順序付きセット｛Ｉｊ，Ｕ１ｊ，Ｕ２ｊ，．．．Ｕｊｎｘ−１｝を形成する。より具体的には、図示のように、ノードは、ノード間の矢印により示されるように、円又はリングを形成するよう順序付けられる。
【０１５２】
図示のように、鍵シェアｋεｉ、ｋ１ｊ、ｋ２ｊ、．．．．ｋｊｎｊ−２、ｋｊｎｊ−１は、それぞれノードＩｊ，Ｕ１ｊ，Ｕ２ｊ，．．．Ｕｊｎｘ−１の各々に関連付けられる。特に、更に後述するように、イニシエータＩｊは、前述の鍵シェアを生成し、次に、それらを順序付きセットの他のノードに分配する。概略として、イニシエータＩｊは、秘密鍵ｖｉを生成してよく、次にシークレット共有プロトコルを用いて、ｎ個の鍵シェアｋεｉ、ｋ１ｊ、ｋ２ｊ、．．．．ｋｊｎｊ−２、ｋｊｎｊ−１を生成し、次に、シェアｋ１ｊ、ｋ２ｊ、．．．．ｋｊｎｊ−２、ｋｊｎｊ−１を（何らかの秘密及びセキュアなチャネルを介して）他のノード、つまりＵ１ｊ，Ｕ２ｊ，．．．Ｕｊｎｘ−１へそれぞれ分配してよく、一方で鍵シェアの残りの１つ、つまりｋεｉを自身のために保持する。幾つかの実装では、公に検証可能な暗号シークレット共有（publicly  erifiable  cryptographic  secret  sharing  (PVSS)）アルゴリズムが使用されてよい。
【０１５３】
特に、楕円曲線暗号法（ＥＣＣ）が利用される場合、秘密鍵ｖｉは、０＜ｖｊ＜ｑとなるよう選択された乱数であってよい。同様に、シェアは、それらがＥＣＣ秘密鍵としての使用にも適するように生成されてよく、０＜ｋｉｊ＜ｑを含む。
【０１５４】
更に後述するように、鍵シェアは、循環順序付きセットＣｊのノードの間の支払いチャネルの回路を確立するときに使用される。特に、支払いチャネルは、ノードのうちの隣接ノード間に確立され、これらのチャネルは、鍵シェアに様々に基づく値を用いてロック及びアンロックされる。支払いチャネルは、矢印により結合されたノードのペアの間で生成されてよい。更に後述するように、これらの支払いチャネルは、図９の矢印により示されるのと反対方向に、リソースの移転を提供することを意図してよい。
【０１５５】
図１０は、図８のイニシエータノード８００の循環順序付きセットを示す図である。上述のように、イニシエータノード８００の循環順序付きセットは、全体リング７１０（図７）に対応する第２の次元を提供する。
【０１５６】
図示のように及び上述のように、イニシエータノード８００の循環順序付きセットのうちのイニシエータノードは、イニシエータノード間の矢印により示されるように、円又はリングを形成するよう順序付けられる。
【０１５７】
上述のようｊに、イニシエータノードＩａ，Ｉｂ，．．．Ｉｉ．．．Ｉωの各々は、関連する秘密鍵ｖｊを有する。更に、図示のように、マスタイニシエータＩＭは、関連する秘密鍵ｖｘを有する。更に後述するように、関連する秘密鍵は、イニシエータノード８００の循環順序付きセットのノードの間の支払いチャネルの回路を確立するときに使用される。特に、支払いチャネルは、ノードのうちの隣接ノード間に確立され、これらのチャネルは、イニシエータノードに関連付けられた秘密鍵に様々に基づく値を用いてロック及びアンロックされる。支払いチャネルは、矢印により結合されたノードのペアの間で生成されてよい。更に後述するように、これらの支払いチャネルは、図１０の矢印により示されるのと反対方向に、リソースの移転を提供することを意図してよい。
【０１５８】
種々の支払いチャネルの生成が以下に説明される。
【０１５９】
事前知識として、支払いチャネルの使用は、コンピューティングリソースの単位がチャネルにコミットされることを要求することに留意する。例えば、支払いチャネルの所与の回路では、コンピューティングリソースは、各支払いチャネルにより、ノードからその支払いチャネルに直ちに移転されてよい。
【０１６０】
ノード間の値の移転は、本願明細書に記載のプロトコルの何らかの適用の要件でなくてよいので、この量は額面価額（nominal  amount.）であり得る。しかしながら、明らかなように、各ノードは、それが支払いチャネルにコミットする値の喪失を条件として、結果を選択するときに参加することを要求される。従って、ノードは、支払いチャネルへの十分に多くのコンピューティングリソースの貢献を要求され、本願明細書に記載のプロトコルの軽率な参加及び／又は違反を思いとどまらせてもよい。支払いチャネルの各々にコミットされるコンピューティングリソースの量は、同じ量であってよく又は異なってよい。支払いチャネルの各々にコミットされたリソースは、リソースが代替可能な場合には同一であってよい。代替として、これらの値は変化してよい。例えば、幾つかの異なる回路のうちの所与の１つにおいて、同じ量のコンピューティングリソースが、支払いチャネルの各々にコミットされてよいが、これらの値は、該異なる回路の間で同一ではない。
【０１６１】
更に、説明の明確化のために、循環順序付きイニシエータノードセットのうちのイニシエータノードの間の回路を形成する支払いチャネルの生成、及び循環順序付きセットＣａ，Ｃｂ，．．．Ｃｉ．．．Ｃωの各々のノードの間の回路を形成する支払いチャネルの生成の議論のために、以下の表記が採用される。
【０１６２】
先ず、文字ｉは、循環順序付きイニシエータノードセットの要素（例えば、イニシエータノード、及び／又はそれらそれぞれの循環順序付きセットの各々）に関連するインデックスとして使用される。
【０１６３】
第２に、文字ｊは、循環順序付きセットＣａ，Ｃｂ，．．．Ｃｉ．．．Ｃωのうちの所与の１つＣｉの内部の要素（例えば、参加者）に関連するインデックスとして使用される。
【０１６４】
次に、下付き及び上付き文字を用いて記載される循環順序付きセットＣｉの要素について、上付きインデックスはｉの値（セット識別子）を表し、下付きインデックスはセットの内部のｊの値（循環順序付きセットの内部の順序のコンポーネント識別子）を表す。一例として、ｋ４２は、循環順序付きセットＣ２のうちのインデックス４の秘密鍵である。
【０１６５】
次に、ｎｉは、回路Ｃｉの中の参加者の番号を示す。特に、ｎｉは、イニシエータＩｉ＝Ｕ０ｉを含む。
【０１６６】
更に、所与の循環順序付きセットＣｉのインデックスｊへの任意の参照は、モジュロｎｉと考えられ、ＵｊｉがＵｉｊ ｍｏｄ  ｎｉとして扱われるべきであることを意味する。例えば、ｎｉ＝４ならば、Ｕ４ｉがＵｉ４ｍｏｄ４＝Ｕ０ｉである。
【０１６７】
更に、以上で使用されたｋεｉの表記は、循環順序付きセットＣｉのイニシエータの鍵シェアを表し、ｋ０ｉとも表されてよい。これは、イニシエータＩｉに関連付けられた（ｖｉの）鍵シェアである。
【０１６８】
次に、（循環順序付きイニシエータノードセット以外に）ω個の循環順序付きセットがあり、マスタイニシエータＩＭ（Ｉ０と呼ばれてもよい）の存在により、ω＋１個のノードが循環順序付きイニシエータノードセットの中にあることに、留意する。
【０１６９】
更に、循環順序付きイニシエータノードセットのインデックスｉへの任意の参照は、モジュロ（ω＋１）と考えられ、例えばＩｉ＝Ｉｉ ｍｏｄ  （ω＋１）を意味する。従って、ω＝４ならば、Ｉ４＋１＝Ｉ５ｍｏｄ５＝Ｉ０＝ＩＭである。
【０１７０】
次に、循環順序付きイニシエータノードセットへの任意の参照は、例えば図８及び１０のように添え字（ａ，ｂ，ｃ，ｄ，．．．）を使用し得ること、或いは代替として、数値の対応するインデックス（０，１，２，３，．．．）を等価的に使用し得ることに留意する。例えば、後者は、循環順序付きイニシエータノードセットに渡る繰り返しを表すときに使用され得る。
【０１７１】
最後に、以下の説明では、直前及び直後という用語が使用され、図８、９、１０に示される矢印の方向に対応することに留意する。例えば、図８でＩａとラベル付けされたノードは、ノードＩｂの直前のノードと考えられてよく、Ｉｂとラベル付けされたノードは、ノードＩａの直後のノードと考えられてよい。
【０１７２】
本願明細書に記載されるプロトコルに参加するノードにより実行される例示的な動作は、図１１、１２、１４に示された一連のフローチャートを参照して以下に議論される。
【０１７３】
先ず、イニシエータノードの間の回路を形成する支払いチャネルの構成は、図１１を参照して議論される。図１１は、支払いチャネルの回路を生成するための準備において動作を実行する循環順序付きイニシエータノードセットのイニシエータノードにより実行される動作を示すフローチャート１１００を示す。動作１１１０以降は、種々のイニシエータノードの各々の１つ以上のプロセッサにより実行される。このように、動作１１１０以降は、例えば、メモリ５２０の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置５００の適切に構成されたインスタンスの例えばプロセッサ５１０（図５）のような、種々のコンピューティング装置の１つ以上のプロセッサにより実行される。
【０１７４】
動作１１１０で、マスタイニシエータノードＩＭは、上述の秘密鍵ｖｘを生成する。
【０１７５】
特に、この値は、プロトコルのセキュリティ、特に、マスタイニシエータノードＩＭにのみ知られているので、循環順序付きイニシエータノードセットのセキュリティの核である。値ｖｘは、少なくとも循環順序付きセットの各々の間の回路を形成する支払いチャネルの全部が形成されるまで、秘密として維持される。
【０１７６】
更に、動作１１１０で、マスタイニシエータノードＩＭは、秘密鍵ｖｘに対応する公開鍵Ｐｘ＊を生成する。例えば、楕円鍵暗号法が利用される場合、マスタイニシエータノードＩＭは、Ｐｘ＊＝ｖｘＧを計算してよい。
【０１７７】
次に、動作１１２０で、他のイニシエータノード（Ｉａ〜Ｉω）の各々は、それらのそれぞれの秘密鍵ｖｉを生成する。更に、各々が、対応する公開鍵Ｐｉ＊を生成し、その値をマスタイニシエータノードＩＭへ送信する。例えば、楕円鍵暗号法が利用される場合、イニシエータノードの各々は、自身のそれぞれのｖｉについてＰｉ＊＝ｖｉＧを計算してよい。
【０１７８】
次に、動作１１３０で、マスタイニシエータノードＩＭは、受信したＰｉ＊値を自身の関連付けられたＰｘ＊と結合して、値ＱＡ＊を生成する。例えば、ＥＣＣが利用される場合、それは、値を加算してよい：ＱＡ＊＝Ｐａ＊＋Ｐｂ＊＋．．．Ｐω−１＊＋Ｐω＊＋Ｐｘ＊。
【０１７９】
後述するように、支払いチャネルは、Ｉａのために、ＩＭとＩａとの間で生成される。つまり、ＩＭ→Ｉａであり、ＴＰａｙトランザクションが値ＱＡ＊により「ロック」され、これは、対応する秘密鍵ＳＶＡからＱＡ＊（該鍵を用いる署名ではない）が、ＴＰａｙをアンロックするために供給されなければならないことを意味する。特に、ＱＡ＊の定義により、ＴＰａｙｙトランザクションをアンロックするアンロック値ＳＶＡは、全部のイニシエータノードに関連付けられた秘密鍵に基づいてよい。例えば、ＥＣＣが利用される場合、ＱＡ＊に対応するシークレット値ＳＶＡは、以下のようにＱＡ＊に関連付けられる。先ず、楕円曲線加算の準同形特性に従い、Ｅ（ｍ＋ｎ）＝Ｅ（ｍ）＋Ｅ（ｎ）を呼び出す。ここでＥは関数Ｅ（ｘ）＝ｘＧである。従って、ＱＡ＊に対応する秘密鍵ＳＶＡは、秘密鍵のｖａ＋ｖｂ＋．．．＋ｖω−１＋ｖω＋ｖｘである。
【０１８０】
支払いチャネルを確立するために、繰り返しが必要である。繰り返しは、ｉ＝０、従って、マスタイニシエータノード（ＩＭ＝Ｉ０を思い出す）で開始する。
【０１８１】
次に、動作１１４０で、支払いチャネルの設定を完了するのに十分な時間が残されているか否かが決定される。支払いチャネルの設定を完了するのに十分な時間が残されているか否かを決定する方法は、以下に更に説明される。十分な時間が残されてい無いと決定された場合、設定は終了する（確立された任意の支払いチャネルの返金トランザクションが、タイムアウトにより生じる）。
【０１８２】
十分な時間が残されている場合、動作１１４０に続き、支払いチャネルの全部がイニシエータノードの間で生成されたか否かが決定される。生成された場合、設定は完了したとして終了する。代替として、循環順序付きイニシエータノードセットのうちのノードの間で回路を形成するために生成される必要のある支払いチャネルが依然として存在する場合、次の動作は動作１１５０である。
【０１８３】
動作１１５０で、ノードＩｉは、ロック値Ｑｉ＋１＊を用いてリソースをロックする、ＩｉとＩｉ＋１との間の支払いチャネルを生成する。例えば、ｉ＝０の場合、上述の支払いチャネルＩＭ→Ｉａが生成され、ＱＡ＊よりロックされる。
【０１８４】
動作１１５０から、支払いチャネルの生成に成功した場合、概念的なイニシエータｉは、インクリメントされ、次に動作１１６０である。代替として、失敗した場合、次の動作は動作１１４０であり、支払いチャネルの生成は十分な時間が残っている限り再試行される。
【０１８５】
動作１１６０で、ノードＩｉは、最後の支払いチャネルをロックするために使用されたロック値、及び自身の秘密鍵ＳＶｉに対応する公開鍵Ｐｉ＊に基づき、次のロック値を決定する。例えば、ＥＣＣが利用される場合、ノードＩｉは、Ｑｉ＋１＊＝Ｑｉ＊−Ｐｉ＊を計算してよい（ここで、Ｑｉ＊はイニシエータｉのインクリメントにより前のロック値を表す）。
【０１８６】
動作１１６０から、次の動作は動作１１４０であり、十分な時間が残っている（生成に成功できる）限り、別の支払いチャネルが（必要に応じて）生成される。
【０１８７】
特に、上述の処理では、マスタイニシエータノードＩＭ以外の各イニシエータノードは、自身がリソースを提供する支払いチャネルが生成される前に、有利な支払いチャネルの生成により利益を得る。便利なことに、この方法では、イニシエータノードは別のイニシエータノードがリソースを横領するリスクがない、（マスタイニシエータノードを信頼する必要がない）。特に、ＩＭは、全てのロック値の基づくｖｘの処理において単独のノードであるので、自身の利益のために、このような順序が提供されることを要求しない。
【０１８８】
先ず、所与の循環順序付きノードセットＣｉのノードの間の回路を形成する支払いチャネルの構成は、図１２を参照して議論される。図１２は、セットの中の隣接ノードの各ペアの間の支払いチャネルの回路を生成するための準備において動作を実行する標準的な循環順序付きイニシエータノードセットＣｉのノードにより実行される動作を示すフローチャート１２００を示す。動作１２１０以降は、種々のイニシエータノードの各々の１つ以上のプロセッサにより実行される。このように、動作１２１０以降は、例えば、メモリ５２０の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置５００の適切に構成されたインスタンスの例えばプロセッサ５１０（図５）のような、種々のコンピューティング装置の１つ以上のプロセッサにより実行される。
【０１８９】
先ず、動作１２１０で、循環順序付きノードセットＣｉのイニシエータノードＩｉは、上述の方法で、秘密鍵ｖｉを生成し、その鍵シェアｋεｉ、ｋ１ｉ、ｋ２ｉ、．．．、ｋｎｉ−２ｉ、ｋｎｉ−１ｉを分配する。
【０１９０】
次に、動作１２２０で、イニシエータノードＩｉは、ロック値Ｑｉ＋１＊を取得する。Ｑｉ＋１＊は、循環順序付きイニシエータノードセットの中の次のイニシエータノードから取得されてよい。例えば、値Ｑｉ＋１＊は、次の循環順序付きノードセットＣｉ＋１のイニシエータノードＩｉ＋１から受信されてよい。
【０１９１】
次に、動作１２３０で、イニシエータノードＩｉは、鍵シェア及びＱｉ＋１＊に基づき、ロック値を決定する。特に、それは、秘密鍵として扱われるとき、各鍵シェアに対応する公開鍵を決定する。例えば、ｋεｉの場合に、ＥＣＣが利用される場合、ＩｉはＰεｉ＝ｋεｉＧを計算してよい。特に、循環順序付きノードセットＣｉの他のノードの各々も、同様の方法で、自身の鍵シェアに対応する公開鍵を決定できる。
【０１９２】
イニシエータノードＩｉは、次に、鍵シェアに対応する公開鍵に基づき及びＱｉ＋１＊に基づき、ロック値Ｑ１ｉを決定する。例えば、ＥＣＣが利用される場合、それは、値を加算してよい：Ｑ１ｉ＝Ｐ１ｉ＋Ｐ２ｉ＋．．．＋Ｐｎｉ−２ｉ＋Ｐｎｉ−１ｉ＋Ｐεｉ＋Ｑｉ＋１＊。
【０１９３】
後述するように、支払いチャネルは、Ｕ１ｉのために、ＩｊとＵ１ｉとの間で生成される。つまり、Ｕ０ｉ→Ｕ１ｉであり、ＴＰａｙトランザクションが値Ｑ１ｉにより「ロック」され、これは、対応する秘密鍵ｓｖ１からＱ１ｉに（該鍵を用いる署名ではない）が、ＴＰａｙをアンロックするために供給されなければならないことを意味する。特に、Ｑ１ｉの定義により、ＴＰａｙｙトランザクションをアンロックするアンロック値ｓｖ１は、Ｃｉのノードの各々に関連付けられた鍵シェアに基づいてよい（及びＱｉ＋１＊にも基づく）。例えば、ＥＣＣが利用される場合、Ｑ１ｉに対応するシークレット値ｓｖ１ｉは、上述の準同形特性によりＱ１ｉに関連付けられる。このように、Ｑ１ｉに対応する秘密鍵ｓｖ１ｉは、前述の鍵シェア及びＳＶｉ＋１の和であり、つまりＱｉ＋１＊、つまりｋ１ｉ＋ｋ２ｉ＋．．．＋ｋｎｉ−２ｉ＋ｋｎｉ−１ｉ＋ｋεｉ＋ＳＶｉ＋１である。
【０１９４】
支払いチャネルを確立するために、繰り返しが必要である。繰り返しは、ｊ＝０、従って、イニシエータノード（Ｉｉ＝Ｕｊｉを思い出す）で開始する。
【０１９５】
次に、動作１２４０で、支払いチャネルの設定を完了するのに十分な時間が残されているか否かが決定される。支払いチャネルの設定を完了するのに十分な時間が残されているか否かを決定する方法は、以下に更に説明される。
【０１９６】
十分な時間が残されてい無いと決定された場合、設定は終了する（確立された任意の支払いチャネルの返金トランザクションが、タイムアウトにより生じる）。
【０１９７】
代替として、十分な時間が残されている場合、動作１２４０に続き、支払いチャネルの全部がＣｉのノードの間で生成されたか否かが決定される。生成された場合、該循環順序付きセットについて支払いチャネルの設定が完了したとして終了する。代替として、該循環順序付きセットのうちのノードの間で回路を形成するために生成される必要のある支払いチャネルが依然として存在する場合、次の動作は動作１２５０である。
【０１９８】
動作１２５０で、ノードＵｊｉは、ロック値Ｑｊ＋１ｉを用いてリソースをロックする、ＵｉとＵｊ＋１ｉとの間の支払いチャネルを生成する。例えば、ｊ＝０の場合、上述の支払いチャネルＩｊ→Ｕ１ｉが生成され、Ｑ１ｊよりロックされる。
【０１９９】
動作１２５０から、支払いチャネルの生成に成功した場合、概念的なイニシエータｊは、インクリメントされ、次に動作１２６０である。代替として、失敗した場合、次の動作は動作１２４０であり、支払いチャネルの生成は十分な時間が残っている限り再試行される。
【０２００】
動作１２６０で、ノードＵｊｉは、最後の支払いチャネルをロックするために使用されたロック値、及び自身の鍵シェアｋｊｉに対応する公開鍵Ｐｊｉに基づき、次のロック値を決定する。例えば、ＥＣＣが利用される場合、ノードＵｊｉは、Ｑｊ＋１ｉ＝Ｑｊｉ−Ｐｊｉを計算してよい（ここで、Ｑｊｉはイニシエータｊのインクリメントにより前のロック値を表す）。
【０２０１】
動作１２６０から、次の動作は動作１２４０であり、十分な時間が残っている（生成に成功できる）限り、別の支払いチャネルが（必要に応じて）生成される。
【０２０２】
図１３は、上記に従い確立されたノード間の支払いチャネルに関連付けられ得るアンロック値を示すための図８の注釈されたバージョンを提供する。
【０２０３】
最後に、フローチャート１１００及びフローチャート１２００に示された動作は、種々の動作を生成し利用される共通の値により必ずしも相互依存する必要がないことに留意する。図１４は、フローチャート１１００及びフローチャート１２００の中の動作がどのように結合され得るかを示すフローチャート１４００を提供する。特に、破線で囲まれて示されたフローチャート１４００の中の動作は、並列に進行してよい。更に、影付きで示された動作は、フローチャート１２００の種々の動作に対応することに留意する。
【０２０４】
＜コミットメントチャネル＞
【０２０５】
更に後述するように、本願の主題は、１回より多くの支払いの繰り返しのための支払いチャネルの使用を必要としない。実際に、チャネルの主な焦点は支払い自体ではない。むしろ、支払いチャネルは、本願明細書に記載されるプロトコルに従い実施されるエスクロー（escrow）メカニズムとして機能する。従って、上述の既存の支払いチャネルと異なり得る支払いチャネルのバージョンを利用することが可能である。この異なるバージョンの支払いチャネルでは、返金支払いトランザクションの複数の繰り返しを提供するのではなく、リソースのエスクローと時間制限された返金トランザクションに重点が置かれ得るからである。支払いチャネルのこのような変形は、コミットメントチャネルと呼ばれてよい。
【０２０６】
コミットメントチャネルは、上述の支払いチャネルの例示的な実装と同様に、リソースの移転が一方向のみである点で、「一方向」チャネルである。ノードのペアでは、ＵＡがＵＢを支払うコミットメントチャネルは、表記ＵＡ→ＵＢにより表されてよい。
【０２０７】
図１５は、ＵＡ→ＵＢコミットメントチャネルの表現１５００を提供する。
【０２０８】
図示のように、コミットメントチャネルは、３つのトランザクションＴＣ、ＴＰａｙ、及びＴｒを含む。表記σ（Ｕｘ）は、Ｕｘの暗号署名を表す。
【０２０９】
ＴＣトランザクションは、支払いチャネルのコミットメントコンポーネントを表す。ここで、トランザクションを通じて、Ｕｂは、２−ｏｆ−２マルチシグネチャ（Ｕｊｉ及びＵｊ＋１ｉ）、又はシークレット値ｓｖｊ＋１ｉとＵｊ＋１ｉの暗号署名との知識のいずれかにより制御されるべき、指定された数の単位を送信／コミットする。
【０２１０】
Ｔｒトランザクションは、指定された時間が経過した後にブロックチェーンへの提出の資格を得た、指定された数の単位の（コミットメントトランザクションから）Ｕｂへの返金を表す。従って、Ｔｒは、時間満了の返却条件が充足されると、リソースの制御を、特定のノードＵｂに返すよう構成される。このトランザクションの実行に成功するためには、ＵＡ及びＵＢの暗号署名が必要である。
【０２１１】
ＴＰａｙトランザクションは、Ｕｂのコミットされた資金からのＵａへの（つまり、Ｕｂに関連付けられたソースアドレスから、Ｕａに関連付けられた宛先アドレスへの）、指定された数の単位の移転である。このトランザクションの実行に成功するためには、シークレット値ｓｖｊ＋１ｉおよびＵＢの暗号署名が必要である。言い換えると、トランザクションは、アンロック値を含む必要な値の供給を含む実行条件の充足に応答してのみ実行する。
【０２１２】
コミットメントチャネルの実装は、Ｂｉｔｃｏｉｎブロックチェーンを用いて提供され得る。このような実装では、ＴＣ、Ｔｒ、及びＴＰａｙの各々は、Ｂｉｔｃｏｉｎトランザクションであってよい。対応するＢｉｔｃｏｉｎトランザクション１６００、１７００、及び１８００は、それぞれ図１６、１７、１８に示される。特に、トランザクション１６００、１７００、及び１８００のうちの１つ以上は、非標準オペコードＯＰ＿ＥＣＰＭＵＬＴを利用してよい。ＯＰ＿ＥＣＰＭＵＬＴは、符号化楕円曲線点及び数値を取り込み、楕円曲線乗算をスカラー（Scalar）により実行して、符号化楕円曲線点として結果を出力する。ＯＰ＿ＥＣＰＭＵＬＴオペコードの詳細は、共同所有の英国特許出願番号第１７０５７４９.８号、「Computer−Implemented  System  and  Method」、２０１７年４月１０日出願、において提供される。
【０２１３】
図１９は、表１９００を提供し、コミットメントトランザクション１６００の＜ｓｃｒｉｐｔＰｕｂＫｅｙ＞が、コミットされたリソース（Ｂｉｔｃｏｉｎ）をアンロックするために、オペコードＯＰ＿ＥＣＰＭＵＬＴを用いて支払いトランザクション１８００の＜ｓｃｒｉｐｔＳｉｇ＞とどのように結合されるかを示す。
【０２１４】
＜十分な残り時間＞
【０２１５】
支払いチャネルを生成するために十分な時間が残っているか否かを決定する方法は、支払いチャネルに関して以下に議論される。
【０２１６】
支払いチャネルがコミットメントチャネルであるシナリオを検討する。この十分な又は「必要なだけの時間」という考えの中核となるのは、参加者のペアが、彼らが以下を検討することを保証しなければならない、支払いチャネルＵＡ→ＵＢを生成することである。
【０２１７】
１）各コミットメントチャネルは、ｎＴｉｍｅＬｏｃｋｅｄ返金トランザクションＴｒを有する。Ｔｒは、参加者ＵＡがブロックチェーンに提出してよく、ＵＡが特定の条件が満たされたことに満足しない場合に、コミットメントチャネルのエスクロー資金をＵＡに返す。
【０２１８】
２）各参加者はＵＡ、チャネルＵＡ→ＵＢを構築し及び彼らの資金を回収するために、「公平な」又は「合意された」時間期間を与えられなければならない。
【０２１９】
３）ＵＡ→ＵＢ自体が生成された後に生成される必要のある他のコミットメントチャネルが存在してよい。これは、以下を含んでよい：
【０２２０】
ａ）同じ循環順序付きセットＣｉの回路の中のコミットメントチャネル。
【０２２１】
ｂ）他の循環順序付きセットに関連付けられたの回路の中のコミットメントチャネル。ここで、Ｃｋ：ｋ＞ｉである。
【０２２２】
ｃ）循環順序付きイニシエータノードセットに関連付けられたの回路の中のコミットメントチャネルＵｅ→Ｕｆ。ここで、Ｃｋ：ｅ＞Ａである。
【０２２３】
４）（ＳＶｘ＝ｖｘを開示する処理の中で）マスタイニシエータＩＭが、第１ＴＰａｙトランザクションをブロックチェーンに提出する期待され合意された時間Ｔ２Ｄが存在する。
【０２２４】
また留意すべき事に、開始時間Ｔ２Ｄの前に何らかが上手くいかなかった場合（全部の必要なチャネルが生成されないことを含む）、参加者Ｕｂは、彼らが以下のための十分な時間を確実に有することを望む。
【０２２５】
ａ）コミットメントチャネルＵｂ→Ｕｃからの返金Ｔｒを提出する、又は
【０２２６】
ｂ）ＵｃがコミットメントチャネルＵｂ→Ｕｃからの支払いＴＰａｙを提出していると想定して、コミットメントチャネルＵａ→Ｕｂからの支払いＴＰａｙを提出する。
【０２２７】
開始時間Ｔ２Ｄにより、これらのシナリオを検討する場合、「十分な時間」が残っているか否かの決定は、循環順序付きセットＣｉ（又は循環順序付きイニシエータノードセット）の各ノードにとって、彼らのチャネルを生成し返金を受け取るために十分な時間が残されているか否かを考慮しなければならない。
【０２２８】
この目的のために、値ｓｉ及びＳｉ→ｉ＋１＊は、以下のように定義されてよい。
【０２２９】
ｓｉは、各Ｕｊｉが、以下を行うために与えられる時間量を表す。
【０２３０】
１．コミットメントチャネルＵｊｉ→Ｕｊ＋１ｉを構築する。
【０２３１】
２．ブロックチェーン内で見付かる必要なシークレット値を決定する
【０２３２】
３．Ｕｊ＋１ｉを支払うトランザクションＴＰａｙをブロックチェーンネットワークに提出する。
【０２３３】
ｓｉは、秒、又はブロック数のような単位で表されてよい。
【０２３４】
Ｓｉ→ｉ＋１＊は、所与のイニシエータがコミットメントチャネルを生成するために与えられる時間量を表す。Ｓｉ→ｉ＋１＊値は、以下のために十分なサイズである。
【０２３５】
１．循環順序付きセットＣｉ＋１に関連付けられた回路のコミットメントチャネルＵｊｉ＋１→Ｕｊ＋１ｉ＋１の全部が構築できる。
【０２３６】
２．循環順序付きセットＣｉ＋１に関連付けられた回路のコミットメントチャネルの全部の必要なシークレット値がブロックチェーン内で見付かる。
【０２３７】
３．回路Ｃｉ＋１のＴＰａｙトランザクションの全部がブロックチェーンに提出され得る。
【０２３８】
４．循環順序付きイニシエータノードセットに関連付けられた回路のコミットメントチャネルＩｉ→Ｉｉ＋１が構築できる。
【０２３９】
５．コミットメントチャネルＩｉ→Ｉｉ＋１の必要なシークレット値がブロックチェーン内で見付かる。
【０２４０】
６．Ｉｉ→Ｉｉ＋１のＴＰａｙトランザクションがＢｉｔｃｏｉｎネットワークに提出され得る。
【０２４１】
特に、Ｓｉ→ｉ＋１＊の値の選択は、上述の動作のうちの１つ以上が並列に生じ得ることを考慮に入れてよい。
【０２４２】
Ｓｉ→ｉ＋１＊は、秒、又はブロック数のような単位で表されてよい。
【０２４３】
上述のように定義された値ｓｉ及びＳｉ→ｉ＋１＊により、十分な時間が残っているか否かを評価するための条件は、適切な場合、Ｔ２Ｄ−現在時間＞ｆ（｛ｓｉ：ｉ∈［ａ，ω］｝）、又はＴ２Ｄ−現在時間＞ｆ（｛Ｓｉ→ｉ＋１＊：ｉ∈［ａ，ω］｝）に対応してよい。
【０２４４】
以上は、支払いチャネルの回路が、種々の循環順序付きセットについてどのように確立され得るかを説明した。システムのコンポーネントの（例えば、ω個の循環順序付きノードセットＣａ，Ｃｂ，．．．，Ｃｉ，．．．Ｃωの各々に対応するサブシステム間の）、及びこれらのコンポーネントのサブコンポーネント内の（例えば、ω個の循環順序付きセットＣａ，Ｃｂ，．．．，Ｃｉ，．．．Ｃωのうちのノードの各々に対応するサブコンポーネント間の）順序付き処理を制御する際のこれらの回路の使用は、図２０を参照して以下に説明される。
【０２４５】
図２０は、種々の循環順序付きノードセットの間の及び各セットを生成するノードの間の処理の順序を制御する動作を実行するときに、種々の循環順序付きセットのノードにより実行される動作を示すフローチャート２０００を示す。動作２０１０以降は、種々のノードの各々の１つ以上のプロセッサにより実行される。このように、動作２０１０以降は、例えば、メモリ５２０の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置５００の適切に構成されたインスタンスの例えばプロセッサ５１０（図５）のような、種々のコンピューティング装置の１つ以上のプロセッサにより実行される。
【０２４６】
図２０に示される動作は、循環順序付きノードセット（循環順序付きイニシエータノードセットを含む）の各々のノードの間の回路を形成するために、支払いチャネルが確立されていると推定する。
【０２４７】
図２０を検討するとき、図８又は図１３を参照して、これらの図に示された例では、循環順序付きイニシエータノードセット以外に４個の循環順序付きセットが存在すること、つまりω＝ｄ＝４であること、及びこれらの４個の循環順序付きセットの各々が正確に４個のノードを含むこと、つまりｎｉ＝４∀ｉ∈［１，ｄ］であること、に留意することは、読者にとって助けとなり得る。図８及び１３の種々の循環順序付きノードセットの表現に従い、これらのノードの間の支払いチャネルの実行、従って結果として生じるこれらのノードによる処理のトリガは、反時計回り方向に進むことに留意する。
【０２４８】
動作２０１０で、マスタイニシエータＩＭは、自身の利益のために（Ｉω→ＩＭ）、支払いチャネルのトランザクションＴＰａｙを提出する。特に、支払いチャネルが構築される方法のために、該チャネルのＴＰａｙは、ロック値Ｑｘ＊によりロックされ、対応するアンロック値ＳＶｘによりアンロックされ（ロック値は、アンロック値の公開鍵に対応する秘密鍵である）、Ｑｘ＊及びＳＶｘの両者はｖｘに基づく。（ｖｘは、この時点までＩＭだけに知られていることを思い出す）。特に、これは、ＴＰａｙが提出されるとき、ブロックチェーン上でｖｘを開示する効果を有する。
【０２４９】
ＳＶｘの値は、Ｉωが自身の利益のためにＴＰａｙトランザクションをアンロックするために必要とされる。幾つかの実装では、ＩＭはＳＶｘをＩωへ送信してよい。追加又は代替として、ＩωはＳＶｘをブロックチェーンから読み出してよい。
【０２５０】
処理がサブシステムに渡り（従って、該サブシステムに対応する循環順序付きセットのイニシエータによりトリガされると、該循環順序付きセットのノードを通じて）進行し得るために、繰り返しが必要である。繰り返しはｉ＝ωで、従って循環順序付きノードセットＣωのイニシエータノードＩωで開始する。
【０２５１】
次に、動作２０２０で、処理を未だ完了していない（循環順序付きイニシエータノードセット以外の）循環順序付きノードセットに関連付けられた回路の支払いチャネルの提出を完了するために十分な時間が残されているか否か、及び循環順序付きイニシエータノードセットに関連付けられた回路の残りの支払いチャネルの提出を完了するために十分な時間が残されているか否か、が決定される。
【０２５２】
十分な時間が残されていないと決定された場合、処理は動作２０３０へ進み、イニシエータノードＩｉ−１は、自身の生成した支払いチャネルの返金トランザクション（つまり、Ｔｒ：Ｉｉ−１→Ｉｉ）をブロックチェーンに提出する。特に、これは、チェーン反応をトリガする効果を有し、それにより、循環順序付きイニシエータノードセットの中の他のイニシエータノードの全部が、彼らの利益のために返金トランザクションを同様に提出する。これは、未だ実行していない循環順序付きセットのノードに、返金トランザクションを彼らの利益のために提出させる効果も有する。
【０２５３】
代替として、動作２０２０で、十分な時間が残されていると決定された場合、処理は動作２０４０へ進む。
【０２５４】
動作２０４０で、イニシエータノードＩｉは、自身の属する循環順序付き（非イニシエータ）ノードセットＣｉに関連付けられた処理が進行すべきか否かを決定する。このような決定は、例えば、特定の目的及び分散型処理の適用が、全体で又は特定のサブシステムの中でノードにより行われている状況に基づいてよい。例えば、図４に関して議論したように、特定の循環順序付きノードセットにより実行され得るような処理が不要である又は保証されない状況が存在し得る。
【０２５５】
循環順序付きノードセットＣｉに関連付けられた処理がスキップされるべきであると決定された場合、処理は動作２０５０に進む。代替として、循環順序付きノードセットＣｉに関連付けられた処理が進行すべきであると決定された場合、処理は動作２０７００に進む。
【０２５６】
なぜなら、更に後述するように、所与の循環順序付きノードセットＣｉの各ノードによる処理の結果として、トランザクションがブロックチェーンにコミットされるので、ブロックチェーンは、どんな処理が生じたかに関して監査証跡を提供する。更に、ブロックチェーンの特性により、このような監査証跡は、改ざん防止又は耐改ざん性であると考えられる。
【０２５７】
動作２０５０で、イニシエータノードＩｉは、ブロックチェーンからｓｖｉ＋１を読み出す。追加又は代替として、イニシエータノードＩｉは、Ｉｉ＋１から値を受信してよい。ｓｖｉ＋１が取得されると、この値はｖｉに基づき及びＳＶｉ＋１の基づくコンポーネントに基づくので、値は、ｓｖｉを決定するために使用できる。つまり、秘密鍵ｖｊは、循環順序付きイニシエータノードセットのＩｉの直後のイニシエータノードからマスタイニシエータノードまでの、循環順序付きイニシエータノードセットの中の各ノードに対応する。例えば、ＥＣＣが利用される場合、ｖｉ及びｓｖｉ＋１は加算されてよい。
【０２５８】
動作２０５０から、処理は動作２０６０へ進む。動作２０６０で、Ｉｉは、支払いチャネルＩｉ−１→Ｉｉのための支払いトランザクションＴＰａｙを、ブロックチェーンに提出する。特に、これは、ブロックチェーン上でｓｖｉを開示する効果を有し、それにより、シーケンスの中の次のイニシエータノード（つまりＩｉ−１）が自身の処理を進めることを可能にする。
【０２５９】
動作２０６０に続き、概念上のイニシエータｉは、デクリメントされ、イニシエータノードが残っていると想定して（つまり、ｉ＞０）、処理は動作２０２０において継続する。代替として、全部のイニシエータノードが実行する機会を有する場合、処理は終了する。
【０２６０】
Ｉｉは、循環順序付きセットＣｉのノードに関連付けられた処理をスキップしないと決定することもできたことを思い出す。このシナリオでは、上述のように、処理は動作２０７０へ進み、循環順序付きセットＣｉの処理が開始される。
【０２６１】
動作２０７０で、イニシエータノードは、値ｓｖεｉを識別する。（ｓｖεｉ＝ｋεｉ＋ＡＶｉ＋１を思い出す）。
【０２６２】
動作２０７０に続き、動作２０８０で、イニシエータノードＩｉは、自身の利益のためにＴＰａｙトランザクションをブロックチェーンに提出し、それにより値ｓｖεｉを開示する。特に、更に後述するように、これは、ノードＵｎｉ−１ｉが自身の利益のためにブロックチェーンにＴＰａｙトランザクションを提出するために必要なアンロック値を計算するために必要な値を開示する効果を有する。従って、動作２０８０は、ノードＵｎｉ−１ｉによる処理をトリガする効果を有する。
【０２６３】
処理が循環順序付きセットＣｉに渡り、つまり対応するサブシステムのサブコンポーネントに渡り進行し得るように、繰り返しが必要である。特に、処理は各々のこのようなノードに到達するので、該ノードに関連付けられた任意の処理を実行するようトリガされる。
【０２６４】
繰り返しはｊ＝ｎｉ−１で、従って循環順序付きノードセットＣｉのノードＵｎｉ−１ｉで開始する。
【０２６５】
動作２０８０から、処理は動作２０９０へ進む。動作２０９０で、循環順序付きノードセットＣｉに関連付けられた回路の支払いチャネルの提出を完了するために十分な時間が残されているか否かが決定される。
【０２６６】
十分な時間が残されていないと決定された場合、処理は動作２１００へ進み、ノードＵｊ−１ｉは、自身の生成した支払いチャネルの返金トランザクション（つまり、Ｔｒ：Ｕｊ−１ｉ→Ｕｊｉ）をブロックチェーンに提出し、それにより、順に、Ｃｉの他のノードが対応する返金トランザクションＴｒ：Ｕｋｉ→Ｕｋ＋１ｉ）を提出するのを開始する。
【０２６７】
代替として、動作２０９０で、十分な時間が残されていると決定された場合、処理は動作２１１０へ進む。
【０２６８】
動作２１１０で、循環順序付きノードセットＣｉに関連付けられた回路の中の次のノードＵｊｉは、シーケンスの中の前のノードがブロックチェーンに提出した支払いトランザクション（つまり、ＴＰａｙ：Ｕｊｉ→Ｕｊ＋１ｉ）からｓｖｊ＋１ｉを読み出し、該値に基づき及び自身の鍵シェアｋｊｉに基づきｓｖｊｉを決定する。例えば、ＥＣＣが利用される場合、それはｓｖｊｉ＝ｋｊｉ＋ｓｖｊ＋１ｉを計算してよい。
【０２６９】
動作２１１０から、処理は動作２１２０へ進む。動作２１２０で、ノードＵｊｉは、自身の利益のために、支払いチャネルの支払いトランザクション（つまり、ＴＰａｙ：Ｕｊ−１ｉ→Ｕｊｉ）をブロックチェーンに提出する。特に、これは、ブロックチェーン上でｓｖｊｉを公に開示する効果を有する。
【０２７０】
動作２１２０から、処理が循環順序付きノードセットＣｉの中の次のノードへと進むとき、概念的なイニシエータｊはデクリメントされる。該セットの中に未だ処理を完了していないノードが残っている場合、処理は動作２０９０に進む。代替として、処理がＣｉの中の全部のノードについて完了した場合、制御フローは動作２０５０に戻る。
【０２７１】
動作２０５０で、上述のように、次のイニシエータノード（Ｉｉ）は、ブロックチェーンからＳＶｉ＋１を読み出して、ＳＶｉを計算できるようになり、次に、動作２０６０で、自身の利益のために、ＳＶｉを用いてアンロックされる支払いチャネルの、つまりイニシエータノードＩｉの直前のノードにより準備され得るような支払いチャネルの、ＴＰａｙトランザクションを提出する。しかしながら、特に、循環順序付きセットＣｉのノードの各々に関連付けられたシークレット値はｖｉの鍵シェアであり、これらの値は全部、循環順序付きセットＣｉのノードの利益のために、支払いトランザクションの提出によりブロックチェーン上で開示されるので、Ｉｉが支払いチャネルＩｉ−１→ＩｉのＴＰａｙトランザクションのブロックチェーンへの提出に失敗したとしても、循環順序付きセットＣｉのノードによる処理は、依然として、開示された鍵シェアを用いてｖｉを再構成することにより、次のイニシエータノードＩｉ−１により開始されてよい。
【０２７２】
上述の実施形態は、事実上、循環順序付きセットのうちのある循環順序付きセットに関連し、前者は循環順序付きセットＣｉを参照し、後者は循環順序付きイニシエータノードセットにより定義されるそれらの間の関係を参照する（該セットの各メンバは、マスタイニシエータノードを除き、循環順序付きセットＣｉのうちの１つのメンバでもある）。言い換えると、上述の実施形態は、事実上、循環順序付きセットに２次元に関連する。幾つかの実施形態では、上述の実施形態の主題は、更に多くの次元について可能になるよう更に一般化されてよい。例えば、循環順序付きイニシエータノードセットが定義されてよく、それらのノードの各々は、それぞれの更なる循環順序付きイニシエータノードセットのマスタイニシエータノードであり、従って、それらのイニシエータノードの各々は、それぞれの循環順序付きセットのイニシエータであり、それにより３次元を提供する。
【０２７３】
上述の実施形態は、本開示を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」（comprising、comprises）等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、１つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【図１】
2021530172.tif 000010
【図２】
2021530172.tif 000011
【図３】
2021530172.tif 000012
【図４】
2021530172.tif 000013
【図５】
2021530172.tif 000014
【図６】
2021530172.tif 000015
【図７】
2021530172.tif 000016
【図８】
2021530172.tif 000017
【図９】
2021530172.tif 000018
【図１０】
2021530172.tif 000019
【図１１】
2021530172.tif 000020
【図１２】
2021530172.tif 000021
【図１３】
2021530172.tif 000022
【図１４】
2021530172.tif 000023
【図１５】
2021530172.tif 000024
【図１６】
2021530172.tif 000025
【図１７】
2021530172.tif 000026
【図１８】
2021530172.tif 000027
【図１９】
2021530172.tif 000028
【図２０】
2021530172.tif 000029
【国際調査報告】
2021530172.tif 000030
2021530172.tif 000031