(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023158097
(43)【公開日】2023-10-26
(54)【発明の名称】分散型システムの処理ステップを制御するための、コンピュータにより実施されるシステム及び方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20231019BHJP
G06F 9/50 20060101ALI20231019BHJP
【FI】
H04L9/32 200Z
G06F9/50 150Z
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023144107
(22)【出願日】2023-09-06
(62)【分割の表示】P 2021500561の分割
【原出願日】2019-07-15
(31)【優先権主張番号】1811773.9
(32)【優先日】2018-07-19
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジョーゼフ,ダニエル
(57)【要約】
【課題】 分散型システムにおける処理ステップの制御及び調整の方法を提供する。
【解決手段】 当該方法は、ブロックチェーンネットワーク(例えば、Bitcoinブロックチェーン)に参加している循環順序付きノードセットのうちのイニシエータノードにより実施できる。当該方法は、該セットのうちのノードの秘密鍵及びその暗号シェアを生成するステップと、それらを分配するステップと、を含む。ロック値はシェアに基づき決定され、トランザクションは、対応するアンロック値の供給に応答してリソースの制御を渡すよう構成される。ノードの間のトランザクション回路が準備され、該トランザクション回路はそれぞれ、2つの隣接ノードのうちの第1ノードに分配されたシェア及び該ノードの直前にある別のノードから受信された値に基づき決定されたロック値に対応するアンロック値の供給に応答して、リソースの制御を渡すよう構成される。イニシエータノードは、循環順序付きイニシエータノードセットに属してよい。
【選択図】
図1
【特許請求の範囲】
【請求項1】
システムにおいてコンピュータにより実施される方法であって、
前記システムは、
第1ノードセットを含むブロックチェーンネットワークに参加している複数のノードセットであって、前記ノードセットの各々は、循環順序付きであり、イニシエータノードを含み、前記第1ノードセットは、第1イニシエータノードと前記第1イニシエータノードの直後にある第2ノードとを含む、複数のノードセットと、
第2イニシエータノードセットを含む複数のイニシエータノードセットであって、前記イニシエータノードセットの各々は、循環順序付きであり、マスタイニシエータノードを含み、
前記第2イニシエータノードセットの中の各イニシエータノードは、前記複数のノードセットのうちの各々1つのイニシエータノードであり、
前記第2イニシエータノードセットは、第1マスタイニシエータノード、第1イニシエータノード、前記第1イニシエータノードの直前にある第2イニシエータノード、及び前記第1イニシエータノードの直後にある第3イニシエータノードを含む、
複数のイニシエータノードセットと、
マスタイニシエータノードセットであって、前記マスタイニシエータノードセットは循環順序付きであり、
前記マスタイニシエータノードセットの中の各マスタイニシエータノードは、前記複数のイニシエータノードセットのうちの各々1つのマスタイニシエータノードであり、
前記マスタイニシエータノードセットは、マスタマスタイニシエータノード、第1マスタイニシエータノード、前記第1マスタイニシエータノードの直前にある第2マスタイニシエータノード、及び前記第1マスタイニシエータノードの直後にある第3マスタイニシエータノードを含む、
マスタイニシエータノードセットと、
を含み、
前記方法は、
前記第1イニシエータノードにより、第1秘密鍵を生成するステップと、
前記第1イニシエータノードにより、前記第1マスタイニシエータノードに、前記第1秘密鍵に対応する第1公開鍵を送信するステップと、
前記第1イニシエータノードにより、前記第1ノードセットの各ノードについて、前記第1秘密鍵の暗号シェアを生成し、前記暗号シェアの各々1つを前記第1ノードセットの他のノードへ分配するステップと、
前記第1マスタイニシエータノードにより、第2秘密鍵を生成するステップと、
前記第1イニシエータノードにより、前記暗号シェアの各々に対応する公開鍵に基づき、第1ロック値を決定するステップと、
前記第1イニシエータノードにより、前記第2イニシエータノードから、前記第1イニシエータノードから前記第1マスタイニシエータノードまでの前記第2セットの中の各ノードに関連付けられた公開鍵に基づく第1値を受信するステップと、
前記第1マスタイニシエータノードにより、前記マスタマスタイニシエータノードに、前記第2秘密鍵に対応する第2公開鍵を送信するステップと、
前記第1マスタイニシエータノードにより、前記第2マスタイニシエータノードから、前記第1マスタイニシエータノードから前記マスタマスタイニシエータノードまでの前記第3セットの中の各ノードに関連付けられた公開鍵に基づく第2値を受信するステップと、
前記第1イニシエータノードにより、前記第1ロック値に対応する第1アンロック値の供給を含む実行条件の充足に応答して、前記第1イニシエータノードに関連付けられたソースアドレスから前記第2ノードの受信アドレスにリソースの制御を渡すよう構成されるトランザクションを準備するステップと、
前記第1イニシエータノードにより、前記第1ノードセットの中の隣接するノードの各ペアの間にトランザクション回路を形成するための更なるトランザクションの準備を開始するステップであって、前記更なるトランザクションの各々は、各々のロック値に対応する各々のアンロック値の供給を含む実行条件の充足に応答して、各ペアのうちの第1ノードに関連付けられたアドレスから該ペアのうちの第2ノードに関連付けられたアドレスに各々のリソースの制御を送信するよう構成され、各ペアの前記第2ノードは、前記第1ノードセットの中で該ペアのうちの前記第1ノードの直後にあり、前記各々のロック値は、所与のペアのうちの前記第1ノードに分配された前記暗号シェアと、前記第1ノードセットの中の該ノードの直前にあるノードから受信した値とに基づき決定される、ステップと、
を含む方法。
【請求項2】
前記第1イニシエータノードにより、前記第1値及び前記第1秘密鍵に対応する前記第1公開鍵に基づき、第2ロック値を決定するステップと、
前記第1イニシエータノードにより、前記第2ロック値に対応する第2アンロック値の供給を含む実行条件の充足に応答して、前記第1イニシエータノードに関連付けられたソースアドレスから、前記第3イニシエータノードの受信側アドレスへ、リソースの制御を渡すよう構成されるトランザクションを準備するステップと、
を更に含む請求項1に記載の方法。
【請求項3】
前記第1マスタイニシエータノードにより、前記第2値及び前記第2秘密鍵に対応する前記第2公開鍵に基づき、第3ロック値を決定するステップと、
前記第1マスタイニシエータノードにより、前記第3ロック値に対応する第3アンロック値の供給を含む実行条件の充足に応答して、前記第1マスタイニシエータノードに関連付けられたソースアドレスから、前記第3マスタイニシエータノードの受信側アドレスへ、リソースの制御を渡すよう構成されるトランザクションを準備するステップと、
を更に含む請求項2に記載の方法。
【請求項4】
前記第1イニシエータノードにより、前記マスタイニシエータノードを通じて前記第3イニシエータノードから、前記第2イニシエータノードセットの中の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づき、第3値を取得するステップ、
を更に含む請求項1又は2に記載の方法。
【請求項5】
前記第3値は、ブロックチェーンから、前記第1イニシエータノードにより取得される、請求項4に記載の方法。
【請求項6】
前記第3値は、前記第3イニシエータノードから、前記第1イニシエータノードにより取得される、請求項4に記載の方法。
【請求項7】
前記第1イニシエータノードにより、前記トランザクション回路の実行が開始されるべきではないと決定するステップと、
前記トランザクション回路の実行が開始されるべきではないと決定することに応答して、
前記第1イニシエータノードにより、前記第3値及び前記第1秘密鍵に基づき、第3アンロック値を決定するステップと、
前記第1イニシエータノードにより、前記第3アンロック値を用いて、前記第2イニシエータノードにより準備された、前記第2イニシエータノードに関連付けられたソースアドレスから前記第1イニシエータノードの受信アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップであって、前記リソースの制御は、前記第3アンロック値の供給を含む実行条件の充足に応答して渡される、ステップと、
を更に含む請求項4~6のいずれか一項に記載の方法。
【請求項8】
前記第1ロック値は、前記第3値に更に基づく、請求項4~7のいずれか一項に記載の方法。
【請求項9】
前記第1イニシエータノードにより、前記トランザクション回路の実行が開始されるべきであると決定するステップと、
前記トランザクション回路の実行が開始されるべきであると決定することに応答して、
前記第1イニシエータノードにより、前記第2値及び前記第1秘密鍵の前記暗号シェアの各々1つに基づき、第4アンロック値を決定するステップと、
前記第1イニシエータノードにより、前記第4アンロック値を用いて、前記第1循環順序付きノードセットの中の前記イニシエータノードの直前にあるノードにより準備された、前記直前にあるノードに関連付けられたソースアドレスから前記イニシエータノードの受信アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップであって、前記リソースの制御は、前記第4アンロック値の供給を含む実行条件の充足に応答して渡される、ステップと、
を更に含む請求項4~8のいずれか一項に記載の方法。
【請求項10】
前記第1セットの中の隣接するノードの各ペアの間のトランザクション回路を形成するための更なるトランザクションの準備を開始する前記ステップは、前記第1イニシエータノードにより、前記第1ノードセットの中の前記第1イニシエータノードの直後にあるノードへ、前記第1ロック値を送信するステップを含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記リソースの各々は、前記リソースの他のものと同じ量である、請求項1~10のいずれか一項に記載の方法。
【請求項12】
各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開-秘密鍵ペアを形成する、請求項1~11のいずれか一項に記載の方法。
【請求項13】
前記秘密鍵の前記暗号シェアは、公に検証可能な暗号シークレット共有アルゴリズムを用いて生成される、請求項1~12のいずれか一項に記載の方法。
【請求項14】
請求項1~13のいずれか一項に記載の方法を実行する、コンピュータにより実装されたシステム。
【請求項15】
コンピュータシステムを請求項1~13のいずれか一項に記載の方法を実行するようにする命令を格納した非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、分散型コンピューティングシステムに関し、より具体的には、ブロックチェーンネットワークを用いる順序付き処理ステップの指示及び制御を含む、分散型システムのノードに関連付けられた処理ステップの制御及び調整に関する。
【背景技術】
【0002】
分散型コンピューティングシステムでは、分散型システムの中のノードとして動作する様々なコンピューティング装置が、ネットワークを介して通信してよい。メッセージは、これらのノードの間で交換されてよい。このようなメッセージの交換は、例えば、コンピューティングタスクを実行するためにノードが協力することを可能にする。このようなタスクは、様々なノードに渡り分散された処理を含んでよい。このような分散された処理は、様々なノードに関連付けられたステップの制御及び調整を必要とすることがある。例えば、特定の処理順序が強いられることがある。
【0003】
分散型システムの一例は、航空機情報システムの状況で生じ得る。例えば、航空機情報システムは、種々のサブシステムを含んでよく、各サブシステムはサブコンポーネントで構成される。これらのサブシステムの各々は、例えば、飛行前検査を実行するときのような、特定の処理を実行することを担ってよい。これらのステップを実行するために、サブシステムの各々は、サブコンポーネントに、特定の処理ステップを実行することを要求し得る。
【0004】
このような分散型システムでは、処理の中のステップの順序及び/又は特定の処理を形成するステップの順序を強制可能であることが必須であり又は望ましいことがある。例えば、サブシステムは、それらそれぞれの処理を順番に実行する必要があってよい。更に、サブコンポーネントに関連付けられたノードは、それらそれぞれの処理ステップを順番に実行する必要があってよい。
【0005】
更に、処理ステップ又は特定の処理の改ざん防止又は改ざん防止監査証跡記録アウトプットを提供することが望ましいことがある。このような監査証跡は、様々なシナリオにおいて用途がある。例えば、航空機のコンテキストでは、これは例えば、例えば事故後に事故を法的に調査可能にし得る。特定の例では、このようなシステムは、例えば、根本原因決定のために、障害を航空機の特定のサブシステムに帰属させることを可能にし得る。
【0006】
本願明細書では、私たちは、全ての形式の電子的な、コンピュータに基づく、分散型台帳を包含するために用語「ブロックチェーン」を使用する。これらは、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、並びにこれらの変形を含む。他のブロックチェーン実装が提案され開発されているが、ブロックチェーン技術の最も広く知られているアプリケーションは、Bitcoin台帳である。Bitcoinは、ここでは、便宜上及び説明の目的で参照されることがあるが、本開示はBitcoinブロックチェーンと共に使用することに限定されず、代替のブロックチェーン実装及びプロトコルが本開示の範囲に包含されることに留意すべきである。
【0007】
ブロックチェーンは、コンピュータに基づく非集中型の分散型システムとして実装されるピアツーピアの電子台帳であり、ブロックにより構成され、ブロックはまたトランザクションにより構成される。各トランザクションは、ブロックチェーンシステムの中の参加者間でデジタルアセットの制御の移転を符号化するデータ構造であり、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、これらのブロックは一緒に繋げられて、起源以来ブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能な記録を生成する。トランザクションは、スクリプトとして知られている小さなプログラムを含む。スクリプトは、それらのインプット及びアウトプットを埋め込まれ、トランザクションのアウトプットがどのように及び誰によりアクセス可能であるかを指定する。Bitcoinプラットフォームでは、これらのスクリプトはスタックに基づくスクリプト言語を用いて記述される。
【0008】
トランザクションがブロックチェーンに書き込まれるためには、検証されなければならない。ネットワークノード(マイナー)は、無効なトランザクションがネットワークから拒否され、各トランザクションが有効であることを保証するために作業を実行する。ノードにインストールされたソフトウェアクライアントは、未使用トランザクション(unspent transaction, UTXO)のロック及びアンロックスクリプトを実行することにより、UTXOに対してこの検証作業を実行する。ロック及びアンロックスクリプトの実行が真(TRUE)と評価する場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、(i)トランザクションを受信した第1ノードにより検証され、トランザクションが有効な場合には、ノードが該トランザクションをネットワーク内の他のノードに中継する、(ii)マイナーにより構築された新しいブロックに追加される、(iii)マイニングされる、つまり過去のトランザクションのパブリック台帳に追加される、ことが必要である。
【0009】
ブロックチェーン技術は、暗号通貨の実装の使用のために最も広く知られているが、デジタル事業家が、Bitcoinの基づく暗号セキュリティシステム及び新しいシステムを実装するためにブロックチェーンに格納できるデータの両方の使用を開発し始めている。ブロックチェーンが、暗号通貨の分野に限定されない自動化タスク及びプロセスのために使用できれば、非常に有利になる。このようなソリューションは、ブロックチェーンの利益(例えば、永久性、イベントの記録の耐タンパ性、分散型処理、等)を利用しながら、それらの用途をより多様化し得る。
【0010】
ブロックチェーンネットワークに参加している循環順序付きノードセットの中のノードにより実施され得る分散型システムにおける処理ステップの制御及び調整のための方法、システム、及びコンピュータ可読記憶媒体は、共同所有の英国特許出願番号第1806448.5号、名称「Computer-Implemented Methods and Systems」、2018年4月20日出願、に開示されている。該出願の主題は、多因子依存性決定(Multifactor Dependent Decisions (MDD))プロトコルと呼ばれるプロトコルの説明を含む。該出願の主題は、分散型システムのノードの間のステップの順序づけを提供するために利用され得る。例えば、それは、システム内の処理ステップの順序づけを提供するために使用されてよい。
【0011】
ブロックチェーンネットワークに参加している循環順序付きノードセットにより形成される分散型システム内の機能を提供するための他の方法、システム、及びコンピュータ可読記憶媒体は、共同所有の英国特許出願番号第1706071.6号、第1802063.6号、それぞれ名称「Computer-Implemented Methods and Systems」、それぞれ2017年4月18日及び2018年2月8日出願に開示されている。前者は、エンティティに関連付けられたアドレス間のリンクを不明瞭にすると共に、該エンティティがそのリソースを着服する可能性を除去しながら、資金をあるアドレスから別のアドレスへと移動させ得るグループランダム交換(Group Random Exchange (GRE))という名称のプロトコルに関連する開示を含む。概略では、GREは、ノードのグループの各メンバがコンピューティングリソースのx個の単位を他のメンバに移転することに合意するというグループの概念の上に構築される。その結果、全員が、コンピューティングリソースのx個の単位を受け取る。該出願は、GREプロトコルの変形である、各支払いチャネルに対して異なるシークレットを使用しながら同一の機能を提供するようGREプロトコルを変更したグループランダム交換変更シークレット(Group Random Exchange Change Secret (GRECS))に関連する開示も含む。特に、GRECSプロトコルに参加している各ノードは、それぞれのシークレット値をイニシエータノードへ送信し、イニシエータノードは次にこれらの値を用いて移転を開始する。後者は、GREプロトコルに対する改良、より具体的にはGRECSプロトコルに関する開示を含む。この改良されたプロトコルグループランダム交換遅れた開示(Group Random Exchange Late Reveal (GRELR))は、共通シークレットを使用する必要を回避することにより、GRECSを改良する。
【0012】
しかしながら、特に、上述のように、システムのコンポーネントの間、例えばサブシステムの間で処理順序を制御できるだけでなく、特定のサブシステムを構成するサブコンポーネントの間でも処理順序を制御できることが望ましいことがある。更に、特定のサブシステムによる処理が任意的にスキップされ又は省略可能であることが望ましいことがある。
【0013】
このような改良されたソリューションがここで考案される。
【発明の概要】
【0014】
したがって、本開示によると、添付の請求項において定められる方法が提供される。
【0015】
本開示により、コンピュータにより実施される方法が提供され得る。当該方法は、ブロックチェーンネットワークに参加している第1循環順序付きノードセットのうちの第1イニシエータノードにより、秘密鍵を生成するステップを含んでよい。当該方法は、第1イニシエータノードにより、第1セットのうちのノードの各々の秘密鍵の暗号シェアを生成するステップと、暗号シェアのうちのそれぞれを第1セットの他のノードに分配するステップと、を含んでよい。当該方法は、第1イニシエータノードにより、暗号シェアのそれぞれに対応する公開鍵に基づき、第1ロック値を決定するステップを含んでよい。当該方法は、第1イニシエータノードにより、第1ロック値に対応する第1アンロック値の供給を含む実行条件の充足に応答して、リソースの制御を第1イニシエータノードに関連付けられたソースアドレスから第1セットの中の第1イニシエータノードの直後にあるノードの受信側アドレスへ渡すよう構成されるトランザクションを準備するステップを含んでよい。当該方法は、第1イニシエータノードにより、第1セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するために、更なるトランザクションの準備を開始するステップを含んでよい。更なるトランザクションの各々は、それぞれのロック値に対応するそれぞれのアンロック値の供給を含む実行条件の充足に応答して、それぞれのリソースの制御を各ペアの第1ノードに関連付けられたアドレスから該ペアの第2ノードに関連付けられたアドレスへ渡すよう構成される。各ペアの第2ノードは、第1セットの中で、該ペアの第1ノードの直後にあってよい。それぞれのロック値は、所与のペアの第1ノードに分配された暗号シェア、及び第1セットの中の害ノードの直前にあるノードから受信した値に基づき決定されてよい。
【0016】
幾つかの実装では、当該方法は、第1イニシエータノードにより、循環順序付きイニシエータノードセットのマスタイニシエータノードへ、秘密鍵に対応する公開鍵を送信するステップを含んでよい。イニシエータノードセットの各々のイニシエータノードは、服すの循環順序付きノードセットのうちのそれぞれ1つのイニシエータノードであってよい。複数の循環順序付きノードセットは、第1セットを含んでよい。当該方法は、第1イニシエータノードにより、第2イニシエータノードから、第1イニシエータノードからマスタイニシエータノードまで、該セットの中の各ノードに関連付けられた公開鍵に基づき第1値を受信するステップを含んでよい。第2イニシエータノードは、イニシエータノードセットの中で第1イニシエータノードの直前にあってよい。
【0017】
幾つかの実装では、当該方法は、第1イニシエータノードにより、第1値および秘密鍵に対応する公開鍵に基づき第2ロック値を決定するステップを含んでよい。当該方法は、第1イニシエータノードにより、第2ロック値に対応する第2アンロック値の供給を含む実行条件の充足に応答して、リソースの制御を第1イニシエータノードに関連付けられたソースアドレスから第3イニシエータノードの受信側アドレスへ渡すよう構成されるトランザクションを準備するステップを含んでよい。第3イニシエータノードは、イニシエータノードセットの中で第1イニシエータノードの直後にあってよい。
【0018】
幾つかの実装では、当該方法は、第1イニシエータノードにより、第3イニシエータノードからマスタイニシエータノードまで、イニシエータノードセットの中の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づき、第2値を取得するステップを含んでよい。
【0019】
幾つかの実装では、第2値は、第1イニシエータノードによりブロックチェーンから取得されてよい。
【0020】
幾つかの実装では、第2値は、第1イニシエータノードにより第3イニシエータノードから取得されてよい。
【0021】
幾つかの実装では、当該方法は、第1イニシエータノードにより、トランザクション回路の実行が開始されるべきでないと決定するステップを含んでよい。当該方法は、トランザクション回路の実行が開始されるべきではないと決定することに応答して、第1イニシエータノードにより、第2値及び秘密鍵に基づき、第3アンロック値を決定するステップと、第1イニシエータノードにより、第3アンロック値を用いて、第2イニシエータノードにより準備された、第2イニシエータノードに関連付けられたソースアドレスから第1イニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップと、を含んでよい。リソースの制御は、第3アンロック値の供給を含む実行条件の充足に応答して渡されてよい。
【0022】
幾つかの実装では、第1ロック値は、第2値に更に基づいてよい。
【0023】
幾つかの実装では、当該方法は、第1イニシエータノードにより、トランザクション回路の実行が開始されるべきであると決定するステップと、トランザクション回路の実行が開始されるべきであると決定することに応答して、第1イニシエータノードにより、第2値及び秘密鍵の暗号シェアのそれぞれ1つに基づき、第4アンロック値を決定するステップと、第1イニシエータノードにより、第4アンロック値を用いて、第1循環順序付きノードセットの中のイニシエータノードの直前にあるノードにより準備された、直前のノードに関連付けられたソースアドレスからイニシエータノードの受信側アドレスへリソースの制御を渡すよう構成されたトランザクションを実行するステップと、を含んでよい。リソースの制御は、第4アンロック値の供給を含む実行条件の充足に応答して渡されてよい。
【0024】
幾つかの実装では、第1セットの中の隣接ノードの各ペアの間のトランザクション回路を形成するための更なるトランザクションの準備を開始するステップは、第1イニシエータノードにより、第1セットの中の第1イニシエータノードの直後にあるノードへ、第1ロック値を送信するステップを含んでよい。
【0025】
幾つかの実装では、リソースの各々は、他のリソースと同じ量であってよい。
【0026】
幾つかの実装では、各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開-秘密鍵ペアを形成してよい。
【0027】
幾つかの実装では、秘密鍵の暗号シェアは、公に検証可能な暗号シークレット共有アルゴリズムを用いて生成されてよい。
【0028】
本開示は、プロセッサとメモリとを含むシステムも提供する。メモリは、プロセッサによる実行の結果として、システムに本願明細書に記載のコンピュータにより実施される方法のいずれかの実施形態を実行させる実行可能命令を含む。
【0029】
本開示は、実行可能命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムのプロセッサにより実行された結果として、少なくとも、前記コンピュータシステムに、本願明細書に記載のコンピュータにより実施される方法を実行させる、非一時的コンピュータ可読記憶媒体も提供する。
【0030】
本開示のこれらの及び他の態様は、本願明細書に記載の実施形態から明らかであり及びそれらを参照して教示される。本開示の実施形態は、単なる例を用いて及び添付の図面を参照して以下に説明される。
【図面の簡単な説明】
【0031】
【
図1】支払いチャネルで使用されるトランザクションを示す図である。
【0032】
【
図2】
図1に従う支払いチャネルがどのように生成されるかを示すフローチャートである。
【0033】
【
図3】本願の例示的な動作環境を示す簡略概略図である。
【0034】
【
図4】本願の別の例示的な動作環境を示す簡略概略図である。
【0035】
【0036】
【
図6】ノードにより構成される循環順序付きセットを示す図である。
【0037】
【
図7】複数の循環順序付きセットに概念的に対応し得る2次元構造を示す簡略概略図である。
【0038】
【
図8】
図7に示したものと類似する2次元構造のより詳細な表現を提供する図である。
【0039】
【
図9】
図8の循環順序付きセットのうちの標準的な1つを示す図である。
【0040】
【
図10】
図8のイニシエータノードにより構成される循環順序付きセットを示す図である。
【0041】
【
図11】イニシエータノードの間の回路を形成する支払いチャネルの構成のための動作を示すフローチャートである。
【0042】
【
図12】所与の循環順序付きノードセットのノードの間の回路を形成する支払いチャネルの構成のための動作を示すフローチャートである。
【0043】
【
図13】ノード間の支払いチャネルに関連付けられ得るアンロック値を示すための
図8の注釈されたバージョンを提供する。
【0044】
【
図14】
図11及び12のフローチャートの中の動作がどのように結合され得るかを示すフローチャートである。
【0045】
【
図15】支払いチャネルのコミットメントチャネルバージョンの表現を提供する。
【0046】
【
図16】支払いチャネルのコミットメントトランザクションとして機能し得る例示的なBitcoinトランザクションを示す。
【0047】
【
図17】支払いチャネルの返金トランザクションとして機能し得る例示的なBitcoinトランザクションを示す。
【0048】
【
図18】支払いチャネルの支払いトランザクションとして機能し得る例示的なBitcoinトランザクションを示す。
【0049】
【
図19】
図19のコミットメントトランザクションの態様が
図18の支払いトランザクションの態様とどのように結合され得るかを示す。
【0050】
【
図20】順序付き処理を制御し及び実行するときに、種々の順序付きセットのノードにより実行される動作を示すフローチャートである。
【発明を実施するための形態】
【0051】
図中の同様の参照符号は同様の要素及び特徴を示すために使用される。
【0052】
本開示を実現するプロトコルは、本願明細書では、それぞれが順序付き方法で決定を行うために、協力するノードのグループについて説明される。該プロトコルは、処理タスクの中で前のステップのアウトプットから導出された累積シークレット値を利用することによってのみ復元できるコンピューティングリソースの単位をコミットするようノードに要求するという概念の上に構築される。
【0053】
幾つかの概念は、背景として以下に記載される。
【0054】
本願明細書に記載されるプロトコルは、既存のBitcoinに関連する技術、支払いチャネル(Payment Channels)(例えば、「Introduction to Micropayment Channels」、http://super3.org/introduction-to-micropayment-channels/を参照)の上に構築される。これは、参加者のペアの間のオフブロックBitcoinトランザクションのために設計された技術であり、特に返金トランザクションの使用を組み入れる。
【0055】
<支払いチャネル>
上述のように、支払いチャネルは以下の説明で言及され、支払いチャネルの概要は読者の便宜のために以下に示される。
【0056】
支払いチャネルは、全部のトランザクションをブロックチェーンにコミットすることなく、パーティが複数の暗号通貨トランザクションを生成するために設計された技術である。標準的な支払いチャネルの実装では、ほぼ無限の量の支払いを行うことができるが、ブロックチェーンに2つのトランザクションを追加する必要があるだけである。
【0057】
ブロックチェーンに追加されるトランザクション数が削減され、及び関連するコストが削減されることに加えて、支払いチャネルは、速度の利点も提供し、重要なことに、物事が計画通りに進まなかった場合に、又はいずれかの参加者が特定の払いセットを超えて進めないと決定した場合に、パーティが単位を返金される能力も有する。支払いチャネルの実装の説明は以下に概略を示す。
【0058】
AliceがBobへブロックチェーンリソースを移転する必要のあるシナリオを検討する。これは、AliceからBobへ、状況の要求に応じて、時間期間に渡り、複数の支払いを要求してよい。Aliceは、可能な交換セットの中で、最大で例えば(全部で)15BTCを、Bobへ送金することを期待している。これを進めるために、支払いチャネルがAliceとBobとの間に確立され、以下のように動作する。
【0059】
先ず、Aliceは、Aliceに由来する15BTCをコミットする、Alice及びBobの両者により制御される2-of-2マルチシグネチャP2SH(pay-to-script hash)トランザクションTCを生成する。このとき、トランザクションは、Bitcoinネットワークに提出されない(このようなマルチシグネチャアドレスは、2人の個人(Alice及びBob)が、このアドレスからの金銭を使う任意のトランザクションに暗号的に署名することを要求する)。
【0060】
次に、Aliceは、マルチシグネチャにより制御される資金の全部の単位をAliceに返金する別個の返金トランザクションTr,0を生成する。このトランザクションは、100ブロックのnLockTime値を含む(nLockTimeは、指定された時間が経過した後にのみ、Bitcoinトランザクションが実行可能になることを可能にするBitcoinトランザクションパラメータである)。Bobはトランザクションに署名する。この返金トランザクションは、nLockTimeが終了した後に、Alice及びBobの間の交換が食い違った場合に、Aliceが返金されることを可能にする。
【0061】
次に、Aliceは元のトランザクションTCに署名する。
【0062】
このとき、Alice及びBobは、(ブロックチェーン外の)移転がAliceからBobへと行われることを反映するために、新しい返金トランザクションを生成することに進んでよい。これらの返金トランザクションは、その時点でAliceがBobへと移転することを要求されるリソースの総量を反映し得る。一例として、AliceがBobに5BTCを送金する場合、5BTCをBobへ送信し10BTCをAliceへと戻すアウトプットを有する新しい返金トランザクションTr,iが生成される。AliceがBobに別の5BTCを送金する必要がある場合、10BTCをBobへ及び5BTCをAliceへ送信するアウトプットを有する新しい返金トランザクションTr,i+1が生成される。新しい返金トランザクション毎に、彼らは、両方のパーティがトランザクションに署名するがネットワークにトランザクションを提出する必要がないことを詳細に合意していると仮定する。
【0063】
生成された各々の連続する返金トランザクションは、前の返金トランザクションより少ないnLockTimeを有することに留意する。つまり、nLockTime(Tr,i+1)<nLockTime(Tr,i)である。
【0064】
参加者が任意のTr,iに署名することを拒否した場合、不当な扱いを受けた参加者は単にTr,i-1を提出してよい。最悪のシナリオでは、(nLockTimeが終了した後に、)AliceはTr,0に署名し、それをネットワークに提出して彼女の単位の全部を取り戻す。
【0065】
最終的に構成される返金トランザクションは、AliceからBobへ移転される単位の総和を表す。このトランザクションは、ネットワークに提出される。
【0066】
図1は、支払いチャネルの中で使用されるトランザクションT
C100A、及びT
r,n100Dを示す。Mは、AliceからBobへ送金され得る最大金額を表す。x
iは、AliceがBobに支払う必要のある単位の現在の総量である。S
stopは、初期返金トランザクションにおけるnLockTimeである。nは、AliceとBobの間で行われる進行中の(オフブロック)移転の中で生成された返金トランザクションの数である(これは、初期返金トランザクションを含まない)。sは、他のパーティが前の返金トランザクションを提出し実質的にAliceとBobとの間の交換を終了するリスクをパーティが負う前に、返金トランザクションに合意するために両方の参加者(Alice及びBob)に割り当てられた時間である。
【0067】
t+n*s<Sstop、ここで、tは現在時間であり、(Sstop-n*s)≧sであることに留意する。
【0068】
図1のトランザクションT
C100A、T
r,0100B、T
r,1100C、及びT
r,n100Dは、ブロックチェーン上に現れ得るトランザクションである。
【0069】
AliceとBobのあいだの支払いチャネルを構成する動作は、
図2のフローチャート200に示される。動作210以降は、コンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する1つ以上のコンピューティング装置の1つ以上のプロセッサにより実行される。
【0070】
動作210で、Aliceに関連付けられたコンピューティング装置のプロセッサは、上述の方法で2-of-2マルチシグネチャP2SH(pay-to-script hash)トランザクションTCを生成する。
【0071】
動作210から、制御フローは動作212へ進む。動作212で、Aliceに関連付けられたコンピューティング装置のプロセッサは、上述の方法で、マルチシグネチャにより制御される資金の全部の単位をAliceに関連付けられたアカウントに返金する別個の返金トランザクションTr,0を生成する。
【0072】
動作212から、制御フローは動作214へ進む。動作214で、Aliceに関連付けられたコンピューティング装置のプロセッサは、上述の返金トランザクションに署名する。
【0073】
動作214から、制御フローは動作216へ進む。動作214で、Bobに関連付けられたコンピューティング装置のプロセッサも、上述の返金トランザクションに署名してよい。トランザクションがこのように署名された場合、制御フローは動作218へ進む。代替として、トランザクションが署名されない場合、支払いチャネルの生成は中止される。
【0074】
動作218で、Aliceに関連付けられたコンピューティング装置のプロセッサは、TCに署名し、それをブロックチェーンに提出する。制御フローは、次に、動作220へ進む。
【0075】
動作220で、上述の返金トランザクションは、第1返金トランザクションとして認識され、AliceからBobへの更なる送金が後に交渉できるようにする。
【0076】
動作220から、制御フローは動作222へ進む。動作222で、更なる送金を交渉するために十分な時間が残っていることが決定される。十分な時間が残っていない場合、制御フローは、動作224へと進み、最後の返金トランザクションがブロックチェーンに提出される。代替として、十分な時間が残っている場合、制御フローは動作226へ進む。
【0077】
動作226で、AliceとBobの間で更なる送金が交渉される。動作226から、制御フローは動作228へと進み、交渉が成功したかどうかが決定される。交渉が成功しなかった場合、制御は上述の動作224へと進む。代替として、交渉が成功すると、結果として制御フローは動作230へ進む。
【0078】
動作230で、成功した交渉に起因する新しい返金トランザクションが上述の方法で生成される。次に、制御フローは、動作240へと進み、新しい返金トランザクションが現在返金トランザクションとして認識される。
【0079】
動作240から、制御フローは動作242へと進み、Alice及びBobに関連付けられたコンピューティング装置のプロセッサは、現在返金トランザクションに署名してよい。署名した場合、制御フローは、上述の動作222へと進む。代替として、トランザクションが署名されなかった場合、動作244で、現在返金トランザクションの認識は、前の返金トランザクションへと復帰する。動作244から、制御フローは、上述の動作222に戻る。
【0080】
<シークレット共有>
【0081】
以下に更に説明するように、本願の主題では、閾値シークレット共有方式が利用される。
【0082】
幾つかの例では、閾値シークレット共有プロトコルは、(t;n)閾値により定められてよい。ここで、nは参加ノードの数であってよく、t+1はシークレットを再構成することを要求されるノードの最小数であってよい。シークレット共有方式は、閾値暗号システムの例であり、シークレットは、n個のノードの間で部分に分けられてよく、少なくともt+1個のノードがシークレットを再構成するために参加する必要がある。任意のt個の部分が分かると、シークレットが明らかにされてよい。
【0083】
<シャミアのシークレット共有>
【0084】
閾値シークレット共有ソリューションの一例は、文献「How to share a secret」、Shamir, A. (1979)、Communications of the ACM, 22(11), 612-613 (“Shamir method”)に記載されている。シャミア(Shamir)法は、多項式補間に基づいてよく、一般性を失うことなく、シークレットは有限フィールドの要素であると想定される。シャミア法は、ディーラ又はディーラ不要の方法を含んでよく、n個のノードU1、U2、...、Unのセット及びアクセス構造Aを含んでよい。参加者のグループは、シークレットを再構成可能であってよい。シャミア法により、任意のランダムシークレットは、t次多項式f(x)の中のf(0)として格納され、参加者iのみが自身のシェアf(xi)を計算できる。n人のうちのt+1人の参加者が協力する場合、彼らは、ラグランジュ多項式補間を用いて、(鍵kの)彼らのシェアk1、k2、...、knによりf(x)上の任意の点を再構成できる。ラグランジュ多項式補間を用いると、次数tを有する関数f(x)は、t+1個の点により再構成できる。
【0085】
【0086】
【0087】
ここで、
【0088】
【0089】
【0090】
ディーラノードが存在するとき、ディーラノードは、サイズp(pは素数(prime))の有限フィールドFの要素であると想定されるシークレットao=kを選択してよく、ランダムにt-1個の正の整数a1,..,at-1を選び取ってよい。これらは、多項式f(x)=a1+a1x+a2x2+...の係数を表す。ディーラノードは、次に、多項式に属するn個の点(xi,f(xi))を計算し、それらを参加者に分配してよい。
【0091】
シャミアのディーラ不要シェア分配段階では、
【0092】
1)各参加者Uiは、全員に知られているxiを割り当てられる。各xiはユニークでなければならない。
【0093】
2)各プレイヤUiは、次数tを有するランダム多項式fi(x)を生成する。
【0094】
3)各プレイヤUiは、全ての他のプレイヤに、多項式上の彼らそれぞれの点fi(xi) mod nを秘密裏に(参加者の公開鍵により暗号化される)送信する。
【0095】
4)各プレイヤUiは、全ての彼らの受信したf1(xi)、f2(xi)、...、fp(xi)(all mod n、ここでnは楕円曲線上の点Gにより生成されるグループの順序である)を加算して、ki=f(xi) mod nを形成し、これは多項式f(x) mod n上のシェアである。
【0096】
シャミア法の上述の説明は、閾値シークレット共有ソリューションの一例であるが、他の方法又は敷地シークレット共有ソリューションが考えられてよい。
【0097】
幾つかの実装では、敷地署名計算は、k×Gの決定に基づき、ここでkはシークレット鍵であり、Gは楕円曲線上の点である。
【0098】
f(x)がt次の多項式である場合、シークレットkは、k=Σi∈πbi,πkiにより補間できる。ここで、πは、シェアka、kb、...、kt、kt+1のサイズt+1の部分集合であってよく、bは補間係数であってよい。πは、自身のシェアkiを開示することなく、k×Gを計算するために協力する、t+1個のノードのグループであってよい。kは、t次多項式の点x=0であってよい。
【0099】
-各ノードUiは、部分bi,πki×Gを計算してよい。
【0100】
-Πの中の全部のノードは、それらの部分を一緒に加算して(ラグランジュ補間によりシークレットkを再構成し)、次式を与える。
【0101】
【0102】
上述のQ=kGを計算する処理は、シークレット共有結合(Secret Share Joining)と呼ばれてよい。
【0103】
<公に検証可能なシークレット共有>
【0104】
本願の主題において参加するノードは、それらのシークレットシェアの正しさを検証することができることが望ましい。鍵シェア検証のために、公に検証可能なシークレット共有(Publicly Verifiable Secret Sharing (PVSS))プロトコル又はアルゴリズムが利用されてよい。鍵シェア検証は、ノードが、彼ら自身のシェア及び他のノードのシェアを検証することを可能にし得る。
【0105】
例示的なPVSSプロトコルは、「Publicly verifiable secret sharing」、International Conference on the Theory and Applications of Cryptographic Techniques (Springer Berlin Heidelberg), pages 190-199, Stadler, M.,published May 1996 [Stadler]に記載されている。
【0106】
例示的なPVSSプロトコルでは、各ノードUiは、解読関数Diを有してよい。これは、対応する公開暗号関数Eiにより暗号化された情報にアクセスできる。このように、ディーラノードは、公開暗号関数を使用して、鍵シェアを分配し、及びそれらを以下の形式で発行してよい。
【0107】
Ki=Ei(ki)、i=1,...,n
【0108】
暗号化シェアは、関心のあるノードにより公に検証可能である。ノードは、自身の鍵シェアを検証でき、他のノードが正しい鍵シェアを受信したこと、つまりディーラノードが正直か否かを検証できる。
【0109】
PVSSプロトコルの主な(上位)コンポーネントは以下を含む。
【0110】
(i)シークレット共有:ディーラノードは、アルゴリズムShare(k)=(k1,...,kn)を走らせ、シェアを計算し、それらを参加ノードの間に分配する。
【0111】
(ii)再構成:参加ノードは、アルゴリズムRecoverを走らせることにより、シークレットを再構成できる。従って、Recover({Di(Ki)|i∈A})=k。
【0112】
(iii)検証:アルゴリズムPubVerifyが、暗号化シェアを検証するために使用されてよい。ノードがアルゴリズムPubVerify({Ki|i∈A})=1→Recover({Di(Ki)|i∈A})=u、u=k、を作動する場合、ディーラノードは、正直であると決定されてよく、鍵シェアは一貫している。
【0113】
幾つかの実装では、PVSS方式は、復元段階における必要性に依存して、対話的又は非対話的であり得る。
【0114】
幾つかの暗号システムに基づくPVSSプロトコルの種々の実装が考えられてよい。説明のために、以下は、文献「A simple publicly verifiable secret sharing scheme and its application to electronic voting」、Annual International Cryptology Conference (Springer Berlin Heidelberg), pages 148-164, by Schoenmakers, B., published August 1999に記載のプロトコルを強調する。
【0115】
初期化段階では、公開手順を用いて、グループGq及び2つの独立に選択された生成元(generator)G及びgが選択されてよい。各ノードは、それ自体の秘密鍵xi∈Zq
*を与えられ、yi=Gxiを公開鍵として設定してよい。
【0116】
ディーラノードは、次に、Zqにおける係数で、最大でt-1の次数を有するランダム多項式f(x)=Σj=0
t-1ajxjを選択してよく、a0=kに設定する。コミットメントCj=gaj、j=0,...,t、及び暗号化シェアf(i)(参加者の公開鍵を用いる)Yi=yi
f(xi)、i=1,...,nが発行されてよい。
【0117】
Xi=Πt-1
j=0(Cj)ijを計算することにより、ディーラノードは、暗号化シェアが一貫していることを示すことができる。特に、ディーラノードは、Xi=gf(xi)、Yi=yi
f(xi)を示すことにより、f(i)の知識の証明を生成できる。
【0118】
鍵シェアの検証は、上述のStadlerのフィアット-シャミア(Fiat-Shamir)暗号技術を用いて実行できる。非対話型プロトコルの主要なステップは以下を含む。
【0119】
証明者(全てのノード)は、ランダム(random)wi∈Zqを選び出し、a1i=gwi、a2i=ywiを計算してよく、値をブロードキャストしてよい。
【0120】
-c=H(Xi,Yi,a1i,a2i)、H()は暗号ハッシュ関数である、を用いて、証明者(例えば、ノード)は、ri=wi-f(xi)cを計算しブロードキャストしてよい。
【0121】
-ri,cが与えられると、検証者ノードは、a1i=griXC
i、a2i=yri
iYC
iを計算してよく、
【0122】
Xi,Yi,a1i,a2i、1≦i≦n、のハッシュがcに一致することを証明してよい。
【0123】
必要なとき、参加者ノードは、他のノードのシェアf(xi)に関して何ら知る必要無しに、シークレットsを再構成できる。必要な情報は、Si=Gf(xi)、i=1,...,tを含んでよい。シークレットは、ラグランジュ補間により計算される。
【0124】
【0125】
【0126】
上述の例及び本願の主題の以下の説明は、鍵シェアを計算し及び分配するためにディーラノードを利用する。しかしながら、シークレット共有プロトコルのディーラ不要の実装は、フィアット-シャミアヒューリスティック(Fiat-Shamir heuristics)技術により記載されるように実装されてよい(例えば、「Fiat-Shamir heuristic」、https://en.wikipedia.org/wiki/Fiat%E2%80%93Shamir_heuristic, accessed June 13, 2018を参照する)。
【0127】
ここで、
図3を参照すると、本願の例示的な動作環境が示される。図示のように、複数のノード300が、コンピュータネットワーク310を介して通信する。ノード300の各々は、コンピューティング装置であり、ブロックチェーンに参加しており、ブロックチェーンの関連付けられた、例えば計算リソースの単位のような単位の量を反映する1つ以上の関連アドレスを有する。
【0128】
ノード300の様々なノードは、分散型処理の中の処理ステップを実行してよく、そのアウトプットは結合されて結果を形成する。
【0129】
本願の主題は、様々な環境において適用され得る。例えば、
図4は、システム、より具体的には航空機情報システム400のコンテキストにおける本願の特定の例示的な動作環境を示す。
【0130】
航空機情報システム400による分散型処理は制御コンピュータ装置410により制御され、複数のサブシステムに依存してよい。例えば、分散型処理は、燃料サブシステム420、ナビゲーションサブシステム430、除氷サブシステム440、及び着陸ギアサブシステム450のような、種々のノードを含んでよい。これらのサブシステムの各々は、また、サブコンポーネントを含んでよい。例えば、燃料サブシステム420は、油検査サブコンポーネント422、温度サブコンポーネント424、油圧サブコンポーネント426、及び燃料容積サブコンポーネント428を含んでよい。サブシステムは、飛行前検査の部分として、特定の順序で検査されてよく、また、所与のサブシステムのサブコンポーネントは特定の順序で検査されてよい。例えば、サブシステムは、燃料サブシステム420から開始して、着陸ギアサブシステム450まで、図中の矢印により示される順序で検査されてよい。別の例では、燃料サブシステム420のサブコンポーネントは、油検査サブコンポーネント422から開始して燃料容積サブコンポーネント428まで時計回りに検査されてよい。更に後述するように、本願の主題は、順序付き方法でこのような処理を制御するために利用されてよい。更に、例えば除氷サブシステム440が熱帯気候ではスキップされてよいというように、環境が正当だと理由づける場合には、サブシステムはスキップされてよい。追加又は代替として、サブシステムが故障した場合でも、他のサブシステムはそれらの処理を順番に完了するよう制御されてよい。
【0131】
図3に戻り、ノード300の各々はコンピューティング装置であることに留意する。
図5は、例示的なコンピューティング装置の高レベル動作図である。例示的なコンピューティング装置500は、例えばノード300の1つ以上を含む本願明細書に記載されるコンピュータシステムの1つ以上の例であってよい。例示的なコンピューティング装置500は、自身を特定の機能を実行するよう適応するソフトウェアを含む。
【0132】
例示的なコンピューティング装置500は、種々のモジュールを含む。例えば、図示のように、例示的なコンピューティング装置500は、プロセッサ510、メモリ520、及びネットワークインタフェース530を含んでよい。図示のように、例示的なコンピューティング装置500の前述のコンポーネントは、バス540を介して通信する。
【0133】
プロセッサ510は、ハードウェアプロセッサである。プロセッサ510は、例えば、1つ以上のARM、Intel x86、PowePCプロセッサ、等であってよい。
【0134】
メモリ520は、データを格納し読み出し可能にする。メモリ520は、例えば、ランダムアクセスメモリ、読み出し専用メモリ、永久記憶を含んでよい。永久記憶は、例えば、フラッシュメモリ、固体ドライブ、等であってよい。読み出し専用メモリ及び永久記憶は、非一時的コンピュータ可読記憶媒体である。コンピュータ可読媒体は、例示的なコンピューティング装置500の全体動作を制御するオペレーティングシステムにより管理され得るようなファイルシステムを用いて構成されてよい。
【0135】
ネットワークインタフェース530は、例示的なコンピューティング装置500を、他のコンピューティング装置及び/又は種々の通信ネットワーク、例えばコンピュータネットワーク310(
図3)と通信可能にする。
【0136】
命令を含むソフトウェアは、コンピュータ可読媒体から、プロセッサ510により実行される。例えば、ソフトウェアは、メモリ520の永久記憶から、ランダムアクセスメモリへとロードされてよい。追加又は代替として、命令は、メモリ520の読み出し専用メモリから直接、プロセッサ510により実行されてよい。
【0137】
更に後述するように、ソフトウェアは、例えば、ノード300の1つ以上及び/又は制御コンピューティング装置410のうちの1つ以上、及び/又はサブシステム420~450及び/又はそのサブコンポーネントを含む本願明細書で言及する種々のコンピュータシステムのうちの1つ以上のとして機能するよう、例示的なコンピューティング装置500のインスタンスを適応してよい。
【0138】
図6を参照すると、更に後述するように、本願明細書に記載するプロトコルで、全体の分散型コンプーティングタスクの処理ステップを実行することを担うノードは、タスクの中の処理ステップの順序に対応する方式で順序付けられた、循環順序付きセット600を形成してよい。循環順序付きセットは、ノード610の各々がノードのうちの2つの他のノードを該ノードの直前ノード及び直後のノードとして有する、リングと考えられてよい。例えば、有向リングは、
図6に示されるように、ノード610の循環順序付きセットにより形成されてよい。
【0139】
更に後述するように、本願の主題では、1つより多くのこのような循環順序付きノードセットが利用される。
【0140】
例えば、循環順序付きノードセットのうちのノードは、(MDDプロトコルにおけるものと類似する)所与のサブシステムにより実行される処理ステップに対応してよい。ここで、複数のこのような循環順序付きセットが利用され、各セットは特定のサブシステムに対応する。更に、サブシステム間の関係、特にサブシステムに跨がる処理の順序は、別の循環順序付きノードセット、各ノードが所与のサブシステムに対応する循環順序付きセットのうちの特定の1つから導出される特に別の循環順序付きノードセットを用いて表現されてもよい。
【0141】
背景として、同様の循環順序付きセット、特に「回路(circuit)」又は「グループ交換回路(group exchange circuits)」を形成する支払いチャネルのセットによりリンクされるセットは、上述の共同所有の英国特許出願番号第1706071.6号、第1802063.6号、及び第1806448.5号で議論されており、上述のMDD、GRECS、及びGRELRプロトコルにより特徴付けられる。
【0142】
別の例では、循環順序付きノードセットのうちのノードは、処理セットを制御するのに加えて又は代替として、他の目的のために、例えばGRECS又はGRELRプロトコルにおけるものと同様の目的で、利用されてよく、複数のこのようなセットは、各ノードがそれらのセットのうちの1つから導出される別の循環順序付きノードセットにリンクされる。
【0143】
任意のイベントで、循環順序付きノードセットのこのような2次元構造は、
図7に示すような全体リング710に加わったリング700のセットとして視覚化されてよい。
図7の簡易概略表現では、個々のノードは、リング700の各々を形成し、全体リング710は示されない。しかしながら、矢印は、リング700に対応する循環順序付きノードセットの各々の中の、及び全体リング710に対応する循環順序付きノードセットの中の、順序の可能な方向を示す。
【0144】
このような2次元構造のより詳細な概略表現は
図8に示される。
【0145】
図示のように、2次元構造は、循環順序付きセットω個のCa、Cb、...Ci...Cωを含む。これらは例えばリング700に対応してよい。
【0146】
循環順序付きセットの各々は、図示のように、nj個のノード:イニシエータノードIjと、n-1個の他のノードU1
j、U2j、...Ui
j、...Uj
nx-1を含んでよい。njは、種々の循環順序付きセットCjについて異なり又は同じである。各イニシエータノードIjは、自身のそれぞれの循環順序付きセットの管理者として機能する。
【0147】
別の循環順序付きセット、つまりイニシエータノード800の循環順序付きセットは、循環順序付きセットCa、Cb、...Ci...Cωの各々のイニシエータノードIa、Ib、...Ii...Iω、及びマスタイニシエータノードIMで構成される。更に後述するように、マスタイニシエータノードIMは、プロトコル全体の管理者として機能する。
【0148】
更に後述するように、本願の主題は、非対称暗号技術に依存する。種々の公開鍵暗号システムが利用されてよい。例えば、楕円曲線暗号法(elliptic curve cryptography (ECC))が利用されてよい。特定の例では、楕円曲線暗号法が利用されてよく、種々の秘密鍵及び対応する公開鍵が利用され、それにより、所与の秘密鍵k及びその対応する公開鍵Pは、楕円曲線暗号公開-秘密鍵ペアであってよい。その結果、P=kGであり、Gは次数qの楕円曲線上の基点(base point)であり、q×G=0、ここでqは大きな素数であり、0<k<qである。特定の例では、文献「Standards for Efficient Cryptography 2 (SEC2)」、Certicom Corp, January 27, 2010で定められる楕円曲線secp256k1が利用されてよい。言い換えると、各公開鍵及びその対応する秘密鍵は、楕円曲線暗号公開-秘密鍵ペアを形成してよい。
【0149】
循環順序付きノードセットの各々のノードをリンクする支払いチャネルの構造が以下に説明される。
【0150】
例えば、循環順序付きセットC
a、C
b、...C
i...C
ωの所与の1つを検討する。単に例として、以下の議論はC
jを参照するが、これは回路C
a、C
b、...C
i...C
ωのいずれにも等しく適用可能である。例示的な循環順序付きセットC
jは、
図9の概略
図900に示される。
【0151】
概略
図900を参照すると、ノードC
j、つまりU
1
j、U
2
j、...U
j
nx-1、及びI
jは、順序付きセット{I
j,U
1
j,U
2
j,...U
j
nx-1}を形成する。より具体的には、図示のように、ノードは、ノード間の矢印により示されるように、円又はリングを形成するよう順序付けられる。
【0152】
図示のように、鍵シェアkε
i、k1
j、k2
j、....kj
nj-2、kj
nj-1は、それぞれノードIj,U1
j,U2
j,...Uj
nx-1の各々に関連付けられる。特に、更に後述するように、イニシエータIjは、前述の鍵シェアを生成し、次に、それらを順序付きセットの他のノードに分配する。概略として、イニシエータIjは、秘密鍵viを生成してよく、次にシークレット共有プロトコルを用いて、n個の鍵シェアkε
i、k1
j、k2
j、....kj
nj-2、kj
nj-1を生成し、次に、シェアk1
j、k2
j、....kj
nj-2、kj
nj-1を(何らかの秘密及びセキュアなチャネルを介して)他のノード、つまりU1
j,U2
j,...Uj
nx-1へそれぞれ分配してよく、一方で鍵シェアの残りの1つ、つまりkε
iを自身のために保持する。幾つかの実装では、公に検証可能な暗号シークレット共有(publicly erifiable cryptographic secret sharing (PVSS))アルゴリズムが使用されてよい。
【0153】
特に、楕円曲線暗号法(ECC)が利用される場合、秘密鍵viは、0<vj<qとなるよう選択された乱数であってよい。同様に、シェアは、それらがECC秘密鍵としての使用にも適するように生成されてよく、0<ki
j<qを含む。
【0154】
更に後述するように、鍵シェアは、循環順序付きセットC
jのノードの間の支払いチャネルの回路を確立するときに使用される。特に、支払いチャネルは、ノードのうちの隣接ノード間に確立され、これらのチャネルは、鍵シェアに様々に基づく値を用いてロック及びアンロックされる。支払いチャネルは、矢印により結合されたノードのペアの間で生成されてよい。更に後述するように、これらの支払いチャネルは、
図9の矢印により示されるのと反対方向に、リソースの移転を提供することを意図してよい。
【0155】
図10は、
図8のイニシエータノード800の循環順序付きセットを示す図である。上述のように、イニシエータノード800の循環順序付きセットは、全体リング710(
図7)に対応する第2の次元を提供する。
【0156】
図示のように及び上述のように、イニシエータノード800の循環順序付きセットのうちのイニシエータノードは、イニシエータノード間の矢印により示されるように、円又はリングを形成するよう順序付けられる。
【0157】
上述のようjに、イニシエータノードI
a,I
b,...I
i...I
ωの各々は、関連する秘密鍵v
jを有する。更に、図示のように、マスタイニシエータI
Mは、関連する秘密鍵v
xを有する。更に後述するように、関連する秘密鍵は、イニシエータノード800の循環順序付きセットのノードの間の支払いチャネルの回路を確立するときに使用される。特に、支払いチャネルは、ノードのうちの隣接ノード間に確立され、これらのチャネルは、イニシエータノードに関連付けられた秘密鍵に様々に基づく値を用いてロック及びアンロックされる。支払いチャネルは、矢印により結合されたノードのペアの間で生成されてよい。更に後述するように、これらの支払いチャネルは、
図10の矢印により示されるのと反対方向に、リソースの移転を提供することを意図してよい。
【0158】
種々の支払いチャネルの生成が以下に説明される。
【0159】
事前知識として、支払いチャネルの使用は、コンピューティングリソースの単位がチャネルにコミットされることを要求することに留意する。例えば、支払いチャネルの所与の回路では、コンピューティングリソースは、各支払いチャネルにより、ノードからその支払いチャネルに直ちに移転されてよい。
【0160】
ノード間の値の移転は、本願明細書に記載のプロトコルの何らかの適用の要件でなくてよいので、この量は額面価額(nominal amount.)であり得る。しかしながら、明らかなように、各ノードは、それが支払いチャネルにコミットする値の喪失を条件として、結果を選択するときに参加することを要求される。従って、ノードは、支払いチャネルへの十分に多くのコンピューティングリソースの貢献を要求され、本願明細書に記載のプロトコルの軽率な参加及び/又は違反を思いとどまらせてもよい。支払いチャネルの各々にコミットされるコンピューティングリソースの量は、同じ量であってよく又は異なってよい。支払いチャネルの各々にコミットされたリソースは、リソースが代替可能な場合には同一であってよい。代替として、これらの値は変化してよい。例えば、幾つかの異なる回路のうちの所与の1つにおいて、同じ量のコンピューティングリソースが、支払いチャネルの各々にコミットされてよいが、これらの値は、該異なる回路の間で同一ではない。
【0161】
更に、説明の明確化のために、循環順序付きイニシエータノードセットのうちのイニシエータノードの間の回路を形成する支払いチャネルの生成、及び循環順序付きセットCa,Cb,...Ci...Cωの各々のノードの間の回路を形成する支払いチャネルの生成の議論のために、以下の表記が採用される。
【0162】
先ず、文字iは、循環順序付きイニシエータノードセットの要素(例えば、イニシエータノード、及び/又はそれらそれぞれの循環順序付きセットの各々)に関連するインデックスとして使用される。
【0163】
第2に、文字jは、循環順序付きセットCa,Cb,...Ci...Cωのうちの所与の1つCiの内部の要素(例えば、参加者)に関連するインデックスとして使用される。
【0164】
次に、下付き及び上付き文字を用いて記載される循環順序付きセットCiの要素について、上付きインデックスはiの値(セット識別子)を表し、下付きインデックスはセットの内部のjの値(循環順序付きセットの内部の順序のコンポーネント識別子)を表す。一例として、k4
2は、循環順序付きセットC2のうちのインデックス4の秘密鍵である。
【0165】
次に、niは、回路Ciの中の参加者の番号を示す。特に、niは、イニシエータIi=U0
iを含む。
【0166】
更に、所与の循環順序付きセットCiのインデックスjへの任意の参照は、モジュロniと考えられ、Uj
iがUi
j mod niとして扱われるべきであることを意味する。例えば、ni=4ならば、U4
iがUi
4mod4=U0
iである。
【0167】
更に、以上で使用されたkε
iの表記は、循環順序付きセットCiのイニシエータの鍵シェアを表し、k0
iとも表されてよい。これは、イニシエータIiに関連付けられた(viの)鍵シェアである。
【0168】
次に、(循環順序付きイニシエータノードセット以外に)ω個の循環順序付きセットがあり、マスタイニシエータIM(I0と呼ばれてもよい)の存在により、ω+1個のノードが循環順序付きイニシエータノードセットの中にあることに、留意する。
【0169】
更に、循環順序付きイニシエータノードセットのインデックスiへの任意の参照は、モジュロ(ω+1)と考えられ、例えばIi=Ii mod (ω+1)を意味する。従って、ω=4ならば、I4+1=I5mod5=I0=IMである。
【0170】
次に、循環順序付きイニシエータノードセットへの任意の参照は、例えば
図8及び10のように添え字(a,b,c,d,...)を使用し得ること、或いは代替として、数値の対応するインデックス(0,1,2,3,...)を等価的に使用し得ることに留意する。例えば、後者は、循環順序付きイニシエータノードセットに渡る繰り返しを表すときに使用され得る。
【0171】
最後に、以下の説明では、直前及び直後という用語が使用され、
図8、9、10に示される矢印の方向に対応することに留意する。例えば、
図8でI
aとラベル付けされたノードは、ノードI
bの直前のノードと考えられてよく、I
bとラベル付けされたノードは、ノードI
aの直後のノードと考えられてよい。
【0172】
本願明細書に記載されるプロトコルに参加するノードにより実行される例示的な動作は、
図11、12、14に示された一連のフローチャートを参照して以下に議論される。
【0173】
先ず、イニシエータノードの間の回路を形成する支払いチャネルの構成は、
図11を参照して議論される。
図11は、支払いチャネルの回路を生成するための準備において動作を実行する循環順序付きイニシエータノードセットのイニシエータノードにより実行される動作を示すフローチャート1100を示す。動作1110以降は、種々のイニシエータノードの各々の1つ以上のプロセッサにより実行される。このように、動作1110以降は、例えば、メモリ520の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置500の適切に構成されたインスタンスの例えばプロセッサ510(
図5)のような、種々のコンピューティング装置の1つ以上のプロセッサにより実行される。
【0174】
動作1110で、マスタイニシエータノードIMは、上述の秘密鍵vxを生成する。
【0175】
特に、この値は、プロトコルのセキュリティ、特に、マスタイニシエータノードIMにのみ知られているので、循環順序付きイニシエータノードセットのセキュリティの核である。値vxは、少なくとも循環順序付きセットの各々の間の回路を形成する支払いチャネルの全部が形成されるまで、秘密として維持される。
【0176】
更に、動作1110で、マスタイニシエータノードIMは、秘密鍵vxに対応する公開鍵Px
*を生成する。例えば、楕円鍵暗号法が利用される場合、マスタイニシエータノードIMは、Px
*=vxGを計算してよい。
【0177】
次に、動作1120で、他のイニシエータノード(Ia~Iω)の各々は、それらのそれぞれの秘密鍵viを生成する。更に、各々が、対応する公開鍵Pi*を生成し、その値をマスタイニシエータノードIMへ送信する。例えば、楕円鍵暗号法が利用される場合、イニシエータノードの各々は、自身のそれぞれのviについてPi
*=viGを計算してよい。
【0178】
次に、動作1130で、マスタイニシエータノードIMは、受信したPi
*値を自身の関連付けられたPx
*と結合して、値QA
*を生成する。例えば、ECCが利用される場合、それは、値を加算してよい:QA
*=Pa
*+Pb
*+...Pω-1
*+Pω
*+Px
*。
【0179】
後述するように、支払いチャネルは、Iaのために、IMとIaとの間で生成される。つまり、IM→Iaであり、TPayトランザクションが値QA
*により「ロック」され、これは、対応する秘密鍵SVAからQA
*(該鍵を用いる署名ではない)が、TPayをアンロックするために供給されなければならないことを意味する。特に、QA
*の定義により、TPayyトランザクションをアンロックするアンロック値SVAは、全部のイニシエータノードに関連付けられた秘密鍵に基づいてよい。例えば、ECCが利用される場合、QA
*に対応するシークレット値SVAは、以下のようにQA
*に関連付けられる。先ず、楕円曲線加算の準同形特性に従い、E(m+n)=E(m)+E(n)を呼び出す。ここでEは関数E(x)=xGである。従って、QA
*に対応する秘密鍵SVAは、秘密鍵のva+vb+...+vω-1+vω+vxである。
【0180】
支払いチャネルを確立するために、繰り返しが必要である。繰り返しは、i=0、従って、マスタイニシエータノード(IM=I0を思い出す)で開始する。
【0181】
次に、動作1140で、支払いチャネルの設定を完了するのに十分な時間が残されているか否かが決定される。支払いチャネルの設定を完了するのに十分な時間が残されているか否かを決定する方法は、以下に更に説明される。十分な時間が残されてい無いと決定された場合、設定は終了する(確立された任意の支払いチャネルの返金トランザクションが、タイムアウトにより生じる)。
【0182】
十分な時間が残されている場合、動作1140に続き、支払いチャネルの全部がイニシエータノードの間で生成されたか否かが決定される。生成された場合、設定は完了したとして終了する。代替として、循環順序付きイニシエータノードセットのうちのノードの間で回路を形成するために生成される必要のある支払いチャネルが依然として存在する場合、次の動作は動作1150である。
【0183】
動作1150で、ノードIiは、ロック値Qi+1
*を用いてリソースをロックする、IiとIi+1との間の支払いチャネルを生成する。例えば、i=0の場合、上述の支払いチャネルIM→Iaが生成され、QA
*よりロックされる。
【0184】
動作1150から、支払いチャネルの生成に成功した場合、概念的なイニシエータiは、インクリメントされ、次に動作1160である。代替として、失敗した場合、次の動作は動作1140であり、支払いチャネルの生成は十分な時間が残っている限り再試行される。
【0185】
動作1160で、ノードIiは、最後の支払いチャネルをロックするために使用されたロック値、及び自身の秘密鍵SViに対応する公開鍵Pi
*に基づき、次のロック値を決定する。例えば、ECCが利用される場合、ノードIiは、Qi+1
*=Qi
*-Pi
*を計算してよい(ここで、Qi
*はイニシエータiのインクリメントにより前のロック値を表す)。
【0186】
動作1160から、次の動作は動作1140であり、十分な時間が残っている(生成に成功できる)限り、別の支払いチャネルが(必要に応じて)生成される。
【0187】
特に、上述の処理では、マスタイニシエータノードIM以外の各イニシエータノードは、自身がリソースを提供する支払いチャネルが生成される前に、有利な支払いチャネルの生成により利益を得る。便利なことに、この方法では、イニシエータノードは別のイニシエータノードがリソースを横領するリスクがない、(マスタイニシエータノードを信頼する必要がない)。特に、IMは、全てのロック値の基づくvxの処理において単独のノードであるので、自身の利益のために、このような順序が提供されることを要求しない。
【0188】
先ず、所与の循環順序付きノードセットC
iのノードの間の回路を形成する支払いチャネルの構成は、
図12を参照して議論される。
図12は、セットの中の隣接ノードの各ペアの間の支払いチャネルの回路を生成するための準備において動作を実行する標準的な循環順序付きイニシエータノードセットC
iのノードにより実行される動作を示すフローチャート1200を示す。動作1210以降は、種々のイニシエータノードの各々の1つ以上のプロセッサにより実行される。このように、動作1210以降は、例えば、メモリ520の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置500の適切に構成されたインスタンスの例えばプロセッサ510(
図5)のような、種々のコンピューティング装置の1つ以上のプロセッサにより実行される。
【0189】
先ず、動作1210で、循環順序付きノードセットCiのイニシエータノードIiは、上述の方法で、秘密鍵viを生成し、その鍵シェアkε
i、k1
i、k2
i、...、kni-2
i、kni-1
iを分配する。
【0190】
次に、動作1220で、イニシエータノードIiは、ロック値Qi+1
*を取得する。Qi+1
*は、循環順序付きイニシエータノードセットの中の次のイニシエータノードから取得されてよい。例えば、値Qi+1
*は、次の循環順序付きノードセットCi+1のイニシエータノードIi+1から受信されてよい。
【0191】
次に、動作1230で、イニシエータノードIiは、鍵シェア及びQi+1
*に基づき、ロック値を決定する。特に、それは、秘密鍵として扱われるとき、各鍵シェアに対応する公開鍵を決定する。例えば、kε
iの場合に、ECCが利用される場合、IiはPε
i=kε
iGを計算してよい。特に、循環順序付きノードセットCiの他のノードの各々も、同様の方法で、自身の鍵シェアに対応する公開鍵を決定できる。
【0192】
イニシエータノードIiは、次に、鍵シェアに対応する公開鍵に基づき及びQi+1
*に基づき、ロック値Q1
iを決定する。例えば、ECCが利用される場合、それは、値を加算してよい:Q1
i=P1
i+P2
i+...+Pni-2
i+Pni-1
i+Pε
i+Qi+1
*。
【0193】
後述するように、支払いチャネルは、U1
iのために、IjとU1
iとの間で生成される。つまり、U0
i→U1
iであり、TPayトランザクションが値Q1
iにより「ロック」され、これは、対応する秘密鍵sv1からQ1
iに(該鍵を用いる署名ではない)が、TPayをアンロックするために供給されなければならないことを意味する。特に、Q1
iの定義により、TPayyトランザクションをアンロックするアンロック値sv1は、Ciのノードの各々に関連付けられた鍵シェアに基づいてよい(及びQi+1
*にも基づく)。例えば、ECCが利用される場合、Q1
iに対応するシークレット値sv1
iは、上述の準同形特性によりQ1
iに関連付けられる。このように、Q1
iに対応する秘密鍵sv1
iは、前述の鍵シェア及びSVi+1の和であり、つまりQi+1
*、つまりk1
i+k2
i+...+kni-2
i+kni-1
i+kε
i+SVi+1である。
【0194】
支払いチャネルを確立するために、繰り返しが必要である。繰り返しは、j=0、従って、イニシエータノード(Ii=Uj
iを思い出す)で開始する。
【0195】
次に、動作1240で、支払いチャネルの設定を完了するのに十分な時間が残されているか否かが決定される。支払いチャネルの設定を完了するのに十分な時間が残されているか否かを決定する方法は、以下に更に説明される。
【0196】
十分な時間が残されてい無いと決定された場合、設定は終了する(確立された任意の支払いチャネルの返金トランザクションが、タイムアウトにより生じる)。
【0197】
代替として、十分な時間が残されている場合、動作1240に続き、支払いチャネルの全部がCiのノードの間で生成されたか否かが決定される。生成された場合、該循環順序付きセットについて支払いチャネルの設定が完了したとして終了する。代替として、該循環順序付きセットのうちのノードの間で回路を形成するために生成される必要のある支払いチャネルが依然として存在する場合、次の動作は動作1250である。
【0198】
動作1250で、ノードUj
iは、ロック値Qj+1
iを用いてリソースをロックする、UiとUj+1
iとの間の支払いチャネルを生成する。例えば、j=0の場合、上述の支払いチャネルIj→U1
iが生成され、Q1
jよりロックされる。
【0199】
動作1250から、支払いチャネルの生成に成功した場合、概念的なイニシエータjは、インクリメントされ、次に動作1260である。代替として、失敗した場合、次の動作は動作1240であり、支払いチャネルの生成は十分な時間が残っている限り再試行される。
【0200】
動作1260で、ノードUj
iは、最後の支払いチャネルをロックするために使用されたロック値、及び自身の鍵シェアkj
iに対応する公開鍵Pj
iに基づき、次のロック値を決定する。例えば、ECCが利用される場合、ノードUj
iは、Qj+1
i=Qj
i-Pj
iを計算してよい(ここで、Qj
iはイニシエータjのインクリメントにより前のロック値を表す)。
【0201】
動作1260から、次の動作は動作1240であり、十分な時間が残っている(生成に成功できる)限り、別の支払いチャネルが(必要に応じて)生成される。
【0202】
図13は、上記に従い確立されたノード間の支払いチャネルに関連付けられ得るアンロック値を示すための
図8の注釈されたバージョンを提供する。
【0203】
最後に、フローチャート1100及びフローチャート1200に示された動作は、種々の動作を生成し利用される共通の値により必ずしも相互依存する必要がないことに留意する。
図14は、フローチャート1100及びフローチャート1200の中の動作がどのように結合され得るかを示すフローチャート1400を提供する。特に、破線で囲まれて示されたフローチャート1400の中の動作は、並列に進行してよい。更に、影付きで示された動作は、フローチャート1200の種々の動作に対応することに留意する。
【0204】
<コミットメントチャネル>
【0205】
更に後述するように、本願の主題は、1回より多くの支払いの繰り返しのための支払いチャネルの使用を必要としない。実際に、チャネルの主な焦点は支払い自体ではない。むしろ、支払いチャネルは、本願明細書に記載されるプロトコルに従い実施されるエスクロー(escrow)メカニズムとして機能する。従って、上述の既存の支払いチャネルと異なり得る支払いチャネルのバージョンを利用することが可能である。この異なるバージョンの支払いチャネルでは、返金支払いトランザクションの複数の繰り返しを提供するのではなく、リソースのエスクローと時間制限された返金トランザクションに重点が置かれ得るからである。支払いチャネルのこのような変形は、コミットメントチャネルと呼ばれてよい。
【0206】
コミットメントチャネルは、上述の支払いチャネルの例示的な実装と同様に、リソースの移転が一方向のみである点で、「一方向」チャネルである。ノードのペアでは、UAがUBを支払うコミットメントチャネルは、表記UA→UBにより表されてよい。
【0207】
図15は、U
A→U
Bコミットメントチャネルの表現1500を提供する。
【0208】
図示のように、コミットメントチャネルは、3つのトランザクションTC、TPay、及びTrを含む。表記σ(Ux)は、Uxの暗号署名を表す。
【0209】
TCトランザクションは、支払いチャネルのコミットメントコンポーネントを表す。ここで、トランザクションを通じて、Ubは、2-of-2マルチシグネチャ(Uj
i及びUj+1
i)、又はシークレット値svj+1
iとUj+1
iの暗号署名との知識のいずれかにより制御されるべき、指定された数の単位を送信/コミットする。
【0210】
Trトランザクションは、指定された時間が経過した後にブロックチェーンへの提出の資格を得た、指定された数の単位の(コミットメントトランザクションから)Ubへの返金を表す。従って、Trは、時間満了の返却条件が充足されると、リソースの制御を、特定のノードUbに返すよう構成される。このトランザクションの実行に成功するためには、UA及びUBの暗号署名が必要である。
【0211】
TPayトランザクションは、Ubのコミットされた資金からのUaへの(つまり、Ubに関連付けられたソースアドレスから、Uaに関連付けられた宛先アドレスへの)、指定された数の単位の移転である。このトランザクションの実行に成功するためには、シークレット値svj+1
iおよびUBの暗号署名が必要である。言い換えると、トランザクションは、アンロック値を含む必要な値の供給を含む実行条件の充足に応答してのみ実行する。
【0212】
コミットメントチャネルの実装は、Bitcoinブロックチェーンを用いて提供され得る。このような実装では、T
C、T
r、及びT
Payの各々は、Bitcoinトランザクションであってよい。対応するBitcoinトランザクション1600、1700、及び1800は、それぞれ
図16、17、18に示される。特に、トランザクション1600、1700、及び1800のうちの1つ以上は、非標準オペコードOP_ECPMULTを利用してよい。OP_ECPMULTは、符号化楕円曲線点及び数値を取り込み、楕円曲線乗算をスカラー(Scalar)により実行して、符号化楕円曲線点として結果を出力する。OP_ECPMULTオペコードの詳細は、共同所有の英国特許出願番号第1705749.8号、「Computer-Implemented System and Method」、2017年4月10日出願、において提供される。
【0213】
図19は、表1900を提供し、コミットメントトランザクション1600の<scriptPubKey>が、コミットされたリソース(Bitcoin)をアンロックするために、オペコードOP_ECPMULTを用いて支払いトランザクション1800の<scriptSig>とどのように結合されるかを示す。
【0214】
<十分な残り時間>
【0215】
支払いチャネルを生成するために十分な時間が残っているか否かを決定する方法は、支払いチャネルに関して以下に議論される。
【0216】
支払いチャネルがコミットメントチャネルであるシナリオを検討する。この十分な又は「必要なだけの時間」という考えの中核となるのは、参加者のペアが、彼らが以下を検討することを保証しなければならない、支払いチャネルUA→UBを生成することである。
【0217】
1)各コミットメントチャネルは、nTimeLocked返金トランザクションTrを有する。Trは、参加者UAがブロックチェーンに提出してよく、UAが特定の条件が満たされたことに満足しない場合に、コミットメントチャネルのエスクロー資金をUAに返す。
【0218】
2)各参加者はUA、チャネルUA→UBを構築し及び彼らの資金を回収するために、「公平な」又は「合意された」時間期間を与えられなければならない。
【0219】
3)UA→UB自体が生成された後に生成される必要のある他のコミットメントチャネルが存在してよい。これは、以下を含んでよい:
【0220】
a)同じ循環順序付きセットCiの回路の中のコミットメントチャネル。
【0221】
b)他の循環順序付きセットに関連付けられたの回路の中のコミットメントチャネル。ここで、Ck:k>iである。
【0222】
c)循環順序付きイニシエータノードセットに関連付けられたの回路の中のコミットメントチャネルUe→Uf。ここで、Ck:e>Aである。
【0223】
4)(SVx=vxを開示する処理の中で)マスタイニシエータIMが、第1TPayトランザクションをブロックチェーンに提出する期待され合意された時間T2Dが存在する。
【0224】
また留意すべき事に、開始時間T2Dの前に何らかが上手くいかなかった場合(全部の必要なチャネルが生成されないことを含む)、参加者Ubは、彼らが以下のための十分な時間を確実に有することを望む。
【0225】
a)コミットメントチャネルUb→Ucからの返金Trを提出する、又は
【0226】
b)UcがコミットメントチャネルUb→Ucからの支払いTPayを提出していると想定して、コミットメントチャネルUa→Ubからの支払いTPayを提出する。
【0227】
開始時間T2Dにより、これらのシナリオを検討する場合、「十分な時間」が残っているか否かの決定は、循環順序付きセットCi(又は循環順序付きイニシエータノードセット)の各ノードにとって、彼らのチャネルを生成し返金を受け取るために十分な時間が残されているか否かを考慮しなければならない。
【0228】
この目的のために、値si及びSi→i+1
*は、以下のように定義されてよい。
【0229】
siは、各Uj
iが、以下を行うために与えられる時間量を表す。
【0230】
1.コミットメントチャネルUj
i→Uj+1
iを構築する。
【0231】
2.ブロックチェーン内で見付かる必要なシークレット値を決定する
【0232】
3.Uj+1
iを支払うトランザクションTPayをブロックチェーンネットワークに提出する。
【0233】
siは、秒、又はブロック数のような単位で表されてよい。
【0234】
Si→i+1
*は、所与のイニシエータがコミットメントチャネルを生成するために与えられる時間量を表す。Si→i+1
*値は、以下のために十分なサイズである。
【0235】
1.循環順序付きセットCi+1に関連付けられた回路のコミットメントチャネルUj
i+1→Uj+1
i+1の全部が構築できる。
【0236】
2.循環順序付きセットCi+1に関連付けられた回路のコミットメントチャネルの全部の必要なシークレット値がブロックチェーン内で見付かる。
【0237】
3.回路Ci+1のTPayトランザクションの全部がブロックチェーンに提出され得る。
【0238】
4.循環順序付きイニシエータノードセットに関連付けられた回路のコミットメントチャネルIi→Ii+1が構築できる。
【0239】
5.コミットメントチャネルIi→Ii+1の必要なシークレット値がブロックチェーン内で見付かる。
【0240】
6.Ii→Ii+1のTPayトランザクションがBitcoinネットワークに提出され得る。
【0241】
特に、Si→i+1
*の値の選択は、上述の動作のうちの1つ以上が並列に生じ得ることを考慮に入れてよい。
【0242】
Si→i+1
*は、秒、又はブロック数のような単位で表されてよい。
【0243】
上述のように定義された値si及びSi→i+1
*により、十分な時間が残っているか否かを評価するための条件は、適切な場合、T2D-現在時間>f({si:i∈[a,ω]})、又はT2D-現在時間>f({Si→i+1
*:i∈[a,ω]})に対応してよい。
【0244】
以上は、支払いチャネルの回路が、種々の循環順序付きセットについてどのように確立され得るかを説明した。システムのコンポーネントの(例えば、ω個の循環順序付きノードセットC
a,C
b,...,C
i,...C
ωの各々に対応するサブシステム間の)、及びこれらのコンポーネントのサブコンポーネント内の(例えば、ω個の循環順序付きセットC
a,C
b,...,C
i,...C
ωのうちのノードの各々に対応するサブコンポーネント間の)順序付き処理を制御する際のこれらの回路の使用は、
図20を参照して以下に説明される。
【0245】
図20は、種々の循環順序付きノードセットの間の及び各セットを生成するノードの間の処理の順序を制御する動作を実行するときに、種々の循環順序付きセットのノードにより実行される動作を示すフローチャート2000を示す。動作2010以降は、種々のノードの各々の1つ以上のプロセッサにより実行される。このように、動作2010以降は、例えば、メモリ520の記憶のようなコンピュータ可読記憶媒体に格納され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置500の適切に構成されたインスタンスの例えばプロセッサ510(
図5)のような、種々のコンピューティング装置の1つ以上のプロセッサにより実行される。
【0246】
図20に示される動作は、循環順序付きノードセット(循環順序付きイニシエータノードセットを含む)の各々のノードの間の回路を形成するために、支払いチャネルが確立されていると推定する。
【0247】
図20を検討するとき、
図8又は
図13を参照して、これらの図に示された例では、循環順序付きイニシエータノードセット以外に4個の循環順序付きセットが存在すること、つまりω=d=4であること、及びこれらの4個の循環順序付きセットの各々が正確に4個のノードを含むこと、つまりn
i=4∀i∈[1,d]であること、に留意することは、読者にとって助けとなり得る。
図8及び13の種々の循環順序付きノードセットの表現に従い、これらのノードの間の支払いチャネルの実行、従って結果として生じるこれらのノードによる処理のトリガは、反時計回り方向に進むことに留意する。
【0248】
動作2010で、マスタイニシエータIMは、自身の利益のために(Iω→IM)、支払いチャネルのトランザクションTPayを提出する。特に、支払いチャネルが構築される方法のために、該チャネルのTPayは、ロック値Qx
*によりロックされ、対応するアンロック値SVxによりアンロックされ(ロック値は、アンロック値の公開鍵に対応する秘密鍵である)、Qx
*及びSVxの両者はvxに基づく。(vxは、この時点までIMだけに知られていることを思い出す)。特に、これは、TPayが提出されるとき、ブロックチェーン上でvxを開示する効果を有する。
【0249】
SVxの値は、Iωが自身の利益のためにTPayトランザクションをアンロックするために必要とされる。幾つかの実装では、IMはSVxをIωへ送信してよい。追加又は代替として、IωはSVxをブロックチェーンから読み出してよい。
【0250】
処理がサブシステムに渡り(従って、該サブシステムに対応する循環順序付きセットのイニシエータによりトリガされると、該循環順序付きセットのノードを通じて)進行し得るために、繰り返しが必要である。繰り返しはi=ωで、従って循環順序付きノードセットCωのイニシエータノードIωで開始する。
【0251】
次に、動作2020で、処理を未だ完了していない(循環順序付きイニシエータノードセット以外の)循環順序付きノードセットに関連付けられた回路の支払いチャネルの提出を完了するために十分な時間が残されているか否か、及び循環順序付きイニシエータノードセットに関連付けられた回路の残りの支払いチャネルの提出を完了するために十分な時間が残されているか否か、が決定される。
【0252】
十分な時間が残されていないと決定された場合、処理は動作2030へ進み、イニシエータノードIi-1は、自身の生成した支払いチャネルの返金トランザクション(つまり、Tr:Ii-1→Ii)をブロックチェーンに提出する。特に、これは、チェーン反応をトリガする効果を有し、それにより、循環順序付きイニシエータノードセットの中の他のイニシエータノードの全部が、彼らの利益のために返金トランザクションを同様に提出する。これは、未だ実行していない循環順序付きセットのノードに、返金トランザクションを彼らの利益のために提出させる効果も有する。
【0253】
代替として、動作2020で、十分な時間が残されていると決定された場合、処理は動作2040へ進む。
【0254】
動作2040で、イニシエータノードI
iは、自身の属する循環順序付き(非イニシエータ)ノードセットC
iに関連付けられた処理が進行すべきか否かを決定する。このような決定は、例えば、特定の目的及び分散型処理の適用が、全体で又は特定のサブシステムの中でノードにより行われている状況に基づいてよい。例えば、
図4に関して議論したように、特定の循環順序付きノードセットにより実行され得るような処理が不要である又は保証されない状況が存在し得る。
【0255】
循環順序付きノードセットCiに関連付けられた処理がスキップされるべきであると決定された場合、処理は動作2050に進む。代替として、循環順序付きノードセットCiに関連付けられた処理が進行すべきであると決定された場合、処理は動作20700に進む。
【0256】
なぜなら、更に後述するように、所与の循環順序付きノードセットCiの各ノードによる処理の結果として、トランザクションがブロックチェーンにコミットされるので、ブロックチェーンは、どんな処理が生じたかに関して監査証跡を提供する。更に、ブロックチェーンの特性により、このような監査証跡は、改ざん防止又は耐改ざん性であると考えられる。
【0257】
動作2050で、イニシエータノードIiは、ブロックチェーンからsvi+1を読み出す。追加又は代替として、イニシエータノードIiは、Ii+1から値を受信してよい。svi+1が取得されると、この値はviに基づき及びSVi+1の基づくコンポーネントに基づくので、値は、sviを決定するために使用できる。つまり、秘密鍵vjは、循環順序付きイニシエータノードセットのIiの直後のイニシエータノードからマスタイニシエータノードまでの、循環順序付きイニシエータノードセットの中の各ノードに対応する。例えば、ECCが利用される場合、vi及びsvi+1は加算されてよい。
【0258】
動作2050から、処理は動作2060へ進む。動作2060で、Iiは、支払いチャネルIi-1→Iiのための支払いトランザクションTPayを、ブロックチェーンに提出する。特に、これは、ブロックチェーン上でsviを開示する効果を有し、それにより、シーケンスの中の次のイニシエータノード(つまりIi-1)が自身の処理を進めることを可能にする。
【0259】
動作2060に続き、概念上のイニシエータiは、デクリメントされ、イニシエータノードが残っていると想定して(つまり、i>0)、処理は動作2020において継続する。代替として、全部のイニシエータノードが実行する機会を有する場合、処理は終了する。
【0260】
Iiは、循環順序付きセットCiのノードに関連付けられた処理をスキップしないと決定することもできたことを思い出す。このシナリオでは、上述のように、処理は動作2070へ進み、循環順序付きセットCiの処理が開始される。
【0261】
動作2070で、イニシエータノードは、値svε
iを識別する。(svε
i=kε
i+AVi+1を思い出す)。
【0262】
動作2070に続き、動作2080で、イニシエータノードIiは、自身の利益のためにTPayトランザクションをブロックチェーンに提出し、それにより値svε
iを開示する。特に、更に後述するように、これは、ノードUni-1
iが自身の利益のためにブロックチェーンにTPayトランザクションを提出するために必要なアンロック値を計算するために必要な値を開示する効果を有する。従って、動作2080は、ノードUni-1
iによる処理をトリガする効果を有する。
【0263】
処理が循環順序付きセットCiに渡り、つまり対応するサブシステムのサブコンポーネントに渡り進行し得るように、繰り返しが必要である。特に、処理は各々のこのようなノードに到達するので、該ノードに関連付けられた任意の処理を実行するようトリガされる。
【0264】
繰り返しはj=ni-1で、従って循環順序付きノードセットCiのノードUni-1
iで開始する。
【0265】
動作2080から、処理は動作2090へ進む。動作2090で、循環順序付きノードセットCiに関連付けられた回路の支払いチャネルの提出を完了するために十分な時間が残されているか否かが決定される。
【0266】
十分な時間が残されていないと決定された場合、処理は動作2100へ進み、ノードUj-1
iは、自身の生成した支払いチャネルの返金トランザクション(つまり、Tr:Uj-1
i→Uj
i)をブロックチェーンに提出し、それにより、順に、Ciの他のノードが対応する返金トランザクションTr:Uk
i→Uk+1
i)を提出するのを開始する。
【0267】
代替として、動作2090で、十分な時間が残されていると決定された場合、処理は動作2110へ進む。
【0268】
動作2110で、循環順序付きノードセットCiに関連付けられた回路の中の次のノードUj
iは、シーケンスの中の前のノードがブロックチェーンに提出した支払いトランザクション(つまり、TPay:Uj
i→Uj+1
i)からsvj+1
iを読み出し、該値に基づき及び自身の鍵シェアkj
iに基づきsvj
iを決定する。例えば、ECCが利用される場合、それはsvj
i=kj
i+svj+1
iを計算してよい。
【0269】
動作2110から、処理は動作2120へ進む。動作2120で、ノードUj
iは、自身の利益のために、支払いチャネルの支払いトランザクション(つまり、TPay:Uj-1
i→Uj
i)をブロックチェーンに提出する。特に、これは、ブロックチェーン上でsvj
iを公に開示する効果を有する。
【0270】
動作2120から、処理が循環順序付きノードセットCiの中の次のノードへと進むとき、概念的なイニシエータjはデクリメントされる。該セットの中に未だ処理を完了していないノードが残っている場合、処理は動作2090に進む。代替として、処理がCiの中の全部のノードについて完了した場合、制御フローは動作2050に戻る。
【0271】
動作2050で、上述のように、次のイニシエータノード(Ii)は、ブロックチェーンからSVi+1を読み出して、SViを計算できるようになり、次に、動作2060で、自身の利益のために、SViを用いてアンロックされる支払いチャネルの、つまりイニシエータノードIiの直前のノードにより準備され得るような支払いチャネルの、TPayトランザクションを提出する。しかしながら、特に、循環順序付きセットCiのノードの各々に関連付けられたシークレット値はviの鍵シェアであり、これらの値は全部、循環順序付きセットCiのノードの利益のために、支払いトランザクションの提出によりブロックチェーン上で開示されるので、Iiが支払いチャネルIi-1→IiのTPayトランザクションのブロックチェーンへの提出に失敗したとしても、循環順序付きセットCiのノードによる処理は、依然として、開示された鍵シェアを用いてviを再構成することにより、次のイニシエータノードIi-1により開始されてよい。
【0272】
上述の実施形態は、事実上、循環順序付きセットのうちのある循環順序付きセットに関連し、前者は循環順序付きセットCiを参照し、後者は循環順序付きイニシエータノードセットにより定義されるそれらの間の関係を参照する(該セットの各メンバは、マスタイニシエータノードを除き、循環順序付きセットCiのうちの1つのメンバでもある)。言い換えると、上述の実施形態は、事実上、循環順序付きセットに2次元に関連する。幾つかの実施形態では、上述の実施形態の主題は、更に多くの次元について可能になるよう更に一般化されてよい。例えば、循環順序付きイニシエータノードセットが定義されてよく、それらのノードの各々は、それぞれの更なる循環順序付きイニシエータノードセットのマスタイニシエータノードであり、従って、それらのイニシエータノードの各々は、それぞれの循環順序付きセットのイニシエータであり、それにより3次元を提供する。
【0273】
上述の実施形態は、本開示を限定するのではなく、説明すること、及び当業者は添付の特許請求の範囲により定められる本開示の範囲から逸脱することなく多くの代替的実施形態を考案できることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は、請求項を限定することを意図しない。用語「有する」及び「含む」(comprising、comprises)等は、任意の請求項又は明細書全体に列挙されたもの以外の要素またはステップの存在を排除しない。本願明細書では、「有する」は「有する又は構成される」を意味し、「含む」は「含む又は構成される」を意味する。要素の単数の参照は、該要素の複数の参照を排除しない。逆も同様である。本開示は、幾つかの別個の要素を含むハードウェアにより、及び適切にプログラムされたコンピュータにより、実装できる。幾つかの手段を列挙する装置クレームでは、これらの手段のうちの幾つかは、1つの同じハードウェアアイテムにより具現化されてよい。単に特定の手段が相互に異なる従属請求項に記載されるという事実は、これらの手段の組み合わせが有利に使用されないことを示さない。
【外国語明細書】