(57)【要約】コンピュータ実装方法が、ブロックチェーン・ネットワークに参加する循環的に順序付けられたノードの集合における特定のノードに関連付けられた公開鍵を開始ノードに送信するステップと；前記特定のノードによって、前記循環的に順序付けられた集合における前記特定のノードの直前のノードから、前記特定のノードから前記開始ノードに至るまでの各ノードに関連付けられた公開鍵に基づく第1の値を受信するステップと；前記第1の値および前記特定のノードに関連付けられた公開鍵に基づくロック値を決定するステップと；前記ロック値を使用して、資源の制御を、前記特定のノードに関連付けられた源アドレスから前記特定のノードの直後のノードの受領アドレスに送信するように構成されたトランザクションを準備するステップと含む。前記資源の制御は、前記ロック値に対応するロック解除値の供給を含む実行条件の満足に応じて送信される。
2021513253.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実装される方法であって：
ブロックチェーン・ネットワークに参加する循環的に順序付けられたノードの集合における特定のノードに関連付けられた公開鍵を、前記循環的に順序付けられた集合の開始ノードに送信するステップと；
前記特定のノードによって、前記循環的に順序付けられた集合における前記特定のノードの直前のノードから、前記特定のノードから前記開始ノードに至るまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵に基づく第1の値を受信するステップと；
前記特定のノードによって、前記第1の値および前記特定のノードに関連付けられた公開鍵に基づくロック値を決定するステップと；
前記ロック値を使用して、前記特定のノードによって、資源の制御を、前記特定のノードに関連付けられた源アドレスから前記循環的に順序付けられた集合における前記特定のノードの直後のノードの受領アドレスに送信するように構成されたトランザクションを準備するステップであって、前記資源の制御は、前記ロック値に対応するロック解除値の供給を含む実行条件の満足に応じて送信される、ステップとを含む、
方法。
【請求項２】
前記ロック解除値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵に対応する秘密鍵に基づく、請求項１に記載の方法。
【請求項３】
前記第1の値は、前記特定のノードから前記開始ノードまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵の和である、請求項１または２に記載の方法。
【請求項４】
前記ロック値を決定することは、前記第1の値から前記特定のノードに関連付けられた公開鍵を減算することを含む、請求項３に記載の方法。
【請求項５】
前記特定のノードによって、前記直後のノードに、前記第1の値および前記特定のノードに関連付けられた公開鍵に基づく第2の値を送ることをさらに含む、
請求項１ないし４のうちいずれか一項に記載の方法。
【請求項６】
前記第2の値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵の和であり、前記第2の値は、前記第1の値から前記特定のノードに関連付けられた公開鍵を減算することによって決定される、請求項５に記載の方法。
【請求項７】
返還条件が満足されると、前記特定のノードに前記資源の制御を返すように別のトランザクションが構成される、請求項１ないし６のうちいずれか一項に記載の方法。
【請求項８】
前記直後のノードから前記開始ノードに至るまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵に対応する秘密鍵に基づいて第3の値を取得するステップと；
前記特定のノードによって、前記第3の値および前記特定のノードに関連付けられた公開鍵に対応する秘密鍵に基づいて第2のロック解除値を決定するステップと；
前記直前のノードによって準備され、前記直前のノードに関連付けられた源アドレスから前記特定のノードの受領アドレスに第2の資源の制御を送信するように構成された第2のトランザクションを実行するステップであって、前記第2の資源の制御は、前記第2のロック解除値の供給を含む実行条件の満足に応答して送信される、ステップと、をさらに含む、
請求項１ないし７のうちいずれか一項に記載の方法。
【請求項９】
前記第3の値は前記直後のノードから受領される、請求項８に記載の方法。
【請求項１０】
前記第3の値は、前記ブロックチェーン・ネットワークのブロックチェーンに提出されたトランザクションから抽出される、請求項８に記載の方法。
【請求項１１】
前記第3の値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵に対応する秘密鍵の和である、請求項８ないし１０のうちいずれか一項に記載の方法。
【請求項１２】
前記第2のロック解除値を決定することは、前記特定のノードに関連付けられた公開鍵に対応する秘密鍵を前記第3の値に加算することを含む、請求項１１に記載の方法。
【請求項１３】
前記第2のロック解除値を前記直前のノードに送ることをさらに含む、請求項８ないし１２のうちいずれか一項に記載の方法。
【請求項１４】
各公開鍵とその対応する秘密鍵は、楕円曲線暗号の公開鍵・秘密鍵のペアをなす、請求項１ないし１３のうちいずれか一項に記載の方法。
【請求項１５】
前記ブロックチェーン・ネットワークのブロックチェーンに前記第2のトランザクションを提出することをさらに含む、請求項１ないし１４のうちいずれか一項に記載の方法。
【請求項１６】
前記資源および前記第2の資源は同一である、請求項８ないし１５のうちいずれか一項に記載の方法。
【請求項１７】
循環的に順序付けられた集合における特定のノードとして機能するように適応されたコンピューティング装置であって、当該コンピューティング装置は：
プロセッサと；
メモリと；
ネットワーク・インターフェースと；
コンピュータ実行可能命令を記憶している非一時的なコンピュータ読取可能記憶媒体とを有しており、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、当該コンピューティング装置に請求項１ないし１６のうちいずれか一項に記載の方法を実行させる、コンピューティング装置。
【請求項１８】
コンピュータ・システムを循環的に順序付けられた集合における特定のノードとして機能するように適応させる命令を記憶している非一時的なコンピュータ読取可能記憶媒体であって、前記命令は、前記コンピュータ・システムのプロセッサによって実行されると、前記コンピュータ・システムに請求項１ないし１６のうちいずれか一項に記載の方法を実行させる、コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概括的には、ブロックチェーンおよびブロックチェーン・ネットワークに関し、より詳細には、資源〔リソース〕の制御〔コントロール〕の移転〔トランスファー〕のためのブロックチェーン・トランザクションの使用に関し、一層詳細には、ブロックチェーン実装された移転において、改善されたセキュリティ、秘匿性、および効率を提供するための暗号学的に施行される方法およびシステムに関する。本発明は、ビットコイン・ブロックチェーンの任意の変形と共に使用するのに特に適しているが、これに限定されるものではない。
【背景技術】
【０００２】
本稿では、「ブロックチェーン」という用語は、電子的な、コンピュータベースの分散台帳のあらゆる形を含むために使用される。これらは、コンセンサスに基づくブロックチェーンおよびトランザクション・チェーン技術、許可式および非許可式の台帳、共有台帳、およびそれらの変形を含む。ブロックチェーン技術の最も広く知られている応用はビットコイン台帳であるが、他のブロックチェーン実装が提案され開発されている。本稿では便宜上、例示のためにのみビットコインに言及することがあるが、本願の主題は、ビットコイン・ブロックチェーンとの使用に限定されず、代替的なブロックチェーン実装およびプロトコルが本願の範囲内にはいることに注意しておくべきである。本稿で使用されるところの用語「ビットコイン」は、ビットコイン・プロトコルから誘導されるあらゆる変形を含む。
【０００３】
ブロックチェーンは、コンピュータベースの脱中央集中式のシステムとして実装される、ピアツーピアの電子台帳であり、ブロックから構成され、ブロックはトランザクションから構成される。各トランザクションは、ブロックチェーン・システム内のアドレス間のデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも1つの入力および少なくとも1つの出力を含む。各ブロックは、直前のブロックのハッシュを含み、諸ブロックが連鎖されて、そのブロックチェーンに対してその発端以来に書き込まれたすべてのトランザクションの永続的で変更不可能な記録を作成する。
【０００４】
ブロックチェーンは、広範な用途に使用することができる。たとえば、ブロックチェーンは、一つまたは複数の商品の所有権を反映する台帳を提供することにおいて用いられてもよい。たとえば、ビットコイン・ブロックチェーンでは、台帳はビットコインおよびその一部の所有権を反映する。いくつかのそのような商品は、たとえば計算資源の単位のような、基礎となる単位を表わしうる。所有権を反映するブロックチェーン・ベースの台帳は、準匿名的に、当事者間で商品が移転されることを許容してもよく、ブロックチェーン上のトランザクションは、いずれの当事者の個人を識別する情報も含まない。
【０００５】
特に、所与のトランザクションの出力は、特定の当事者の公開鍵に対応するアドレスに送られてもよい。それらの出力は、その後、アドレスに対応する公開鍵の対応秘密鍵によってロック解除され、さらなるトランザクションへの入力として、関連する当事者によって使用されうる。
【０００６】
オープンで公開の台帳を提供するブロックチェーンは、特定のデジタルコイン、デジタル資産、またはデジタル資源の制御の、一連のアドレスにわたる動きを追跡する能力を任意の利害関係者に対して利用可能にする。たとえば、通貨としてのビットコインの有効性および成功は、ビットコインの実際のおよび知覚される代替可能性（fungibility）に結びついている。代替可能性は、財の単位の、同じタイプの他の単位財との交換可能性属性である（非特許文献１）。台帳がオープンで、分散されていることは、システムを信頼する手段として役立つが、アドレス間のトランザクションを追跡するためにそれが与える能力は、特定の履歴トランザクションに関係するデジタル資産トークンおよび資源が解析され、相関付けられることを許容する。これは標的型攻撃を生じさせる可能性がある。ビットコインの代替可能性に対処するために、セキュリティおよび匿名化解決策が開発されている。これは、多くの現実世界の商業トランザクションが、法的な理由、商業的な理由、またはその両方の理由から、本質的に秘密であるため、有用でありうる。よって、ブロックチェーン・システムは、ブロックチェーンの公共性にもかかわらず、ネットワーク上で行なわれるそのような移転に対してセキュリティと秘匿性の両方を確保することができなければならない。
【非特許文献１】http://www.investopedia.com/terms/f/fungibility.asp
【０００７】
ビットコイン匿名性の研究は、ZeroCash（非特許文献２）およびMonero（非特許文献３）のようなアルトコインの開発を含んできた。同様に、ビットコインと互換な解決策が開発されてきた。これらの互換解決策のうち、コイン混合および関連する変形が最も一般的であるが、TumbleBit（非特許文献４）やStealth  Addressesの使用（非特許文献５）のような他の匿名化技法が存在する。これらすべての解決策に共通しているのは、特定のビットコイン・トランザクションおよびアドレスからユーザーを切り離す施策である（ユーザーが支払者である場合またはユーザーが受取者である場合）。
【非特許文献２】Ben-Sasson,  E.,  et  al.  （2014）,  "Zerocash:  Decentralized  Anonymous  Payments  from…",  http://zerocash-project.org/media/pdf/zerocash-oakland2014.pdf
【非特許文献３】Mackenzie,  A.,  Noether,  S.,  et  al.  （2015）,  "Improving  Obfuscation  in  …",  https://lab.getmonero.org/pubs/MRL-0004.pdf
【非特許文献４】Heilman,  E.,  Alshenibr,  L.,  Baldimtsi,  F.,  Scafuro,  A.  and  Goldberg,  S.,  2016.  TumbleBit:  An  untrusted  Bitcoin-compatible  anonymous  payment  hub.  Cryptology  ePrint  Archive,  Report  2016/575;  https://eprint.iacr.org/2016/575.pdf
【非特許文献５】Franco,  P.,  （2014）,  "Understanding  Bitcoin:  Cryptography…",  http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119019168.html
【０００８】
コイン混合解決策の場合、ユーザーはサービスにビットコインを入力し、それらのビットコインはユーザーの選択した出力アドレスに転送される。出力アドレスに送られる前に資産がプールされることで、どの出力アドレスがそのユーザーに属するかを見きわめることが困難になる。
【０００９】
ブロックチェーン・トランザクション混合手法には、いくつかの技術的およびセキュリティ関連の問題がある。そのようなトランザクション混合手法は混合サービス・プロバイダーを必要とする。これは、追加的な資源要件をシステムに導入し、この集中型トランザクション混合サービス・プロバイダーを提供するための追加的な管理オーバーヘッドを導入する。さらに、中央トランザクション混合サービス・プロバイダーの提供は、ブロックチェーン・システムの脱中央集中式のピアツーピア・アーキテクチャを薄める、または損なう。そのような集中化されたシステムは、ユーザーから制御を取り上げる。さらに、そのような集中化されたシステムは、システムにおける、攻撃のための焦点を提供する。さらに、トランザクション混合サービス・プロバイダーが、ユーザーのデジタル資産をプールから盗んだり、入力アドレスと出力アドレスとの間のリンクを意図的にまたは意図せずに外部の当事者に開示したりして、セキュリティおよび秘匿性を低下させることがありうる。多くの点で、集中型トランザクション混合サービス・プロバイダーの提供は、集中化された機関の必要性を否定することを意図した、脱中央集中式のピアツーピア・ブロックチェーン・システムの基本的な精神を損なう。
【００１０】
上記に照らして、解決すべき一つの技術的課題は、既存の解決策よりも脱中央集中され、安全で、資源効率がよく、秘匿性の高い方法でブロックチェーン・トランザクション混合の達成を可能にし、かつ、背景セクションで記述した既存のシステムの仕方で第三者のトランザクション混合サービス・プロバイダーによって管理されるのではなく、システムのユーザーによって制御される解決策をいかにして提供するかでありうる。
【００１１】
出願人は、以前に、混合手法に関する上述の問題の一つまたは複数に対して、グループ・ランダム交換（Group  Random  Exchange、GRE）プロトコルおよび秘密変更式グループ・ランダム交換（Group  Random  Exchange  Changing  Secret、GRECS）プロトコルと称される2つのプロトコルにより対処した。概要として、GREは、ノード・グループの各メンバーについて、全員が支払を受けるよう、x単位の計算資源を一の他のメンバーに移転することに合意するグループの概念に基づいている。GREプロトコルは、開始者として選択されたノードが、そのノードに関連付けられたアドレスに有利なトランザクションをブロックチェーンに提出するときにのみ明かされる秘密の値kを利用する。GREプロトコルの一つの側面は、値kがプロトコルに参加するノード間で確立された諸支払いチャネルに共通であることにより、第三者がそれらのトランザクションを関連付けることを許容するということである。GRECSは、GREプロトコルの変形であり、各支払いチャネルについて異なる秘密値を使用しながら、同一の機能を提供するように修正されている。特に、プロトコルに参加する各ノードは、それぞれの秘密の値を開始ノードに送信し、開始ノードは、これらの値を使用して移転を開始する。
【００１２】
GREおよびその変形GRECSにより、複数のノードが、セキュリティおよび秘匿性が向上した資源の交換を可能にするトランザクション・チャネルを構築することが可能となる。トランザクション混合システムは、ブロックチェーン・トランザクション・チェーンを形成し実行することにおいて別個のものであり、ノードのうちの少なくとも1つが、チェーン内の複数のノードからランダムに選択される。チェーンは、コミットメント・トランザクションを使用してセットアップされる。複数のノードの間でデジタル資産を交換するためのそのようなシステムは、上述した従来技術の構成と比較して、より安全であり、追加のシステム・オーバヘッドを必要としない。たとえば、システムは、システムに追加的な資源要件を導入し、この集中化されたトランザクション混合サービス・プロバイダーを提供するための追加的な管理オーバーヘッドを導入したはずの混合サービス・プロバイダーを必要としない。さらに、中央トランザクション混合サービス・プロバイダーを提供すれば、ブロックチェーン・システムの脱中央集中式のピアツーピア・アーキテクチャを薄める、または損なう。そのような集中化されたシステムは、ノードから制御を取り上げてしまう。さらに、そのような集中化されたシステムは、システムにおける、攻撃のための焦点を提供する。さらに、トランザクション混合サービス・プロバイダーは、ユーザーのデジタル資産をプールから盗んだり、入力アドレスと出力アドレスとの間のリンクを意図的にまたは意図せずに外部の当事者に開示したりして、セキュリティを低下させることがありうる。対照的に、GREおよびGRECSでは、コミットメント・トランザクションのチェーンを介してトランザクションを準備することは、第三者ではなくノードによって実行される。すなわち、それらのシステムは、第三者によって実装／制御されるのでないプロトコルを利用する。
【００１３】
GREとGRECSの技術的効果の1つの結果は、新しい仕方で動作するように作られたコンピュータ・システムである。さらに、このコンピュータ・システムは、システムがハッキングやデータ操作に対してより堅牢である限り、より効率的かつ効果的に動作するという意味で、より優れたコンピュータ・システムである。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上述のように、GRECSでは、移転が開始される前に秘密の値が開始者に開示されなければならない。いくつかのシナリオでは、そのような開示は、セキュリティおよび／または効率の理由から望ましくないことがある。たとえば、GRECSが他の、潜在的にはより洗練された機能性のための構成要素として使用されるシナリオでは、そのような懸念が生じる可能性がある。
【００１５】
よって、いかなる参加ノードにも、そのノードに有利な移転の開始前に、プロトコル内の他の誰にもそれぞれの秘密の値kを通信することを要求しない解決策を提供することが望ましい。追加的または代替的に、参加するノードは、そのノードに関連するアドレスに有利なトランザクション内で、それぞれの秘密の値kを開示する必要があるだけであることが望ましいことがありうる。
【課題を解決するための手段】
【００１６】
GREおよびGRECSによって対処される技術的問題を解決し、同様の望ましい特性および技術的効果を提供しながら、これらの望ましい特性の一つまたは複数を有する改善された解決策が考案された。
【００１７】
本願は、添付の特許請求の範囲において定義される方法およびシステムを提供する。
【００１８】
本願は、コンピュータで実装される方法を記載する。本方法は、ブロックチェーン・ネットワークに参加する循環的に順序付けられたノードの集合における特定のノードに関連付けられた公開鍵を、前記循環的に順序付けられた集合の開始ノードに送信するステップと；前記特定のノードによって、前記循環的に順序付けられた集合における前記特定のノードの直前のノードから、前記特定のノードから前記開始ノードに至るまでの前記循環的に順序付けられた集合の中の各ノードに関連付けられた公開鍵に基づく第1の値を受信するステップと；前記特定のノードによって、前記第1の値および前記特定のノードに関連付けられた公開鍵に基づくロック値を決定するステップと；前記ロック値を使用して、前記特定のノードによって、資源の制御を、前記特定のノードに関連付けられた源アドレスから前記循環的に順序付けられた集合の中の前記特定のノードの直後のノードの受領アドレスに送信するように構成されたトランザクションを準備するステップであって、前記資源の制御は、前記ロック値に対応するロック解除値の供給を含む実行条件の満足に応じて送信される、ステップと、を含みうる。
前記資源は、たとえば、トークン化された資産またはエンティティ、または暗号通貨の一部、またはブロックチェーンを介して移転される任意のアイテムでありうる。
【００１９】
いくつかの実装では、前記ロック解除値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合内の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づく。
【００２０】
いくつかの実装では、前記第1の値は、前記特定のノードから前記開始ノードまでの前記循環的に順序付けられた集合の各ノードに関連付けられた公開鍵の和である。
【００２１】
いくつかの実装では、前記ロック値を決定することは、前記第1の値から前記特定のノードに関連付けられた公開鍵を差し引くことを含む。
【００２２】
いくつかの実装では、この方法は、前記特定のノードによって、前記直後のノードに、前記第1の値および前記特定のノードに関連付けられた公開鍵に基づく第2の値を送ることをさらに含む。前記第2の値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合内の各ノードに関連する公開鍵の和であってもよく、前記第1の値から前記特定のノードに関連付けられた公開鍵を減算することによって決定されてもよい。
【００２３】
いくつかの実装では、返還条件が満足されると、前記特定のノードに前記資源の制御を返すように別のトランザクションが構成される。
【００２４】
いくつかの実装では、本方法は、前記直後のノードから前記開始ノードに至るまでの前記循環的に順序付けられた集合内の各ノードに関連付けられた公開鍵に対応する秘密鍵に基づいて第3の値を取得するステップと；前記特定のノードによって、前記第3の値および前記特定のノードに関連付けられた公開鍵に対応する秘密鍵に基づいて第2のロック解除値を決定するステップと；前記直前のノードによって準備され、前記直前のノードに関連付けられた源アドレスから前記特定のノードの受領アドレスに第2の資源の制御を送信するように構成された第2のトランザクションを実行するステップであって、前記第2の資源の制御は、前記第2のロック解除値の供給を含む実行条件の満足に応答して送信される、ステップと、をさらに含む。
【００２５】
いくつかの実装では、前記第3の値は前記直後のノードから受領される。
【００２６】
いくつかの実装では、前記第3の値は、ブロックチェーン・ネットワークのブロックチェーンに提出されたトランザクションから抽出される。
【００２７】
いくつかの実装では、前記第3の値は、前記直後のノードから前記開始ノードまでの前記循環的に順序付けられた集合における各ノードに関連付けられた公開鍵に対応する秘密鍵の和である。
【００２８】
いくつかの実装では、前記第2のロック解除値を決定することは、前記特定のノードに関連付けられた公開鍵に対応する秘密鍵を前記第3の値に加算することを含む。
【００２９】
いくつかの実装では、前述の方法は、前記第2のロック解除値を前記直前のノードに送ることをさらに含んでいてもよい。
【００３０】
いくつかの実装では、各公開鍵とその対応する秘密鍵は、楕円曲線暗号の公開鍵・秘密鍵のペアを形成する。
【００３１】
いくつかの実装では、この方法は、さらに、ブロックチェーン・ネットワークのブロックチェーンに前記第2のトランザクションを提出することを含む。
【００３２】
いくつかの実装では、前記資源および前記第2の資源は、同一であるか、実質的に同一であるか、または類似している。それらは、ある種の特性または属性を共有するという意味で類似していてもよい。
【００３３】
本願は、さらに、循環的に順序付けられた集合内の特定のノードとして機能するように適応されたコンピューティング装置を記載する。該コンピューティング装置は、プロセッサと、メモリと、ネットワーク・インターフェースと、コンピュータ実行可能命令を記憶する非一時的コンピュータ読取可能記憶媒体とを含み、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記コンピューティング装置に上記方法を実行させる。
【００３４】
本願は、さらに、コンピュータ・システムを循環的に順序付けられた集合内の特定のノードとして機能するように適応させる命令を記憶している非一時的コンピュータ読取可能記憶媒体を記載し、前記命令は、前記コンピュータ・システムのプロセッサによって実行されると、前記コンピュータ・システムに前述の方法を実行させる。
【００３５】
本発明の一つの側面または実施形態に関連して記載される任意の特徴は、一つまたは複数の他の側面／実施形態に関しても使用されうる。本発明のこれらおよび他の側面は、本明細書に記載した実施形態から明白となり、それを参照して解明されるであろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して記述する。
【図面の簡単な説明】
【００３６】
【図１】支払いチャネルで使用されるトランザクションを示す。
【００３７】
【図２】図1に従った支払いチャネルがどのように生成されうるかを示すフローチャートである。
【００３８】
【図３】本願の例示的な動作環境を示す簡略化された概略図である。
【００３９】
【図４】例示的なコンピューティング装置を示す。
【００４０】
【図５】図3のノードによって実行される動作を示すフローチャートである。
【００４１】
【図６】図3のノードで構築された循環的に順序付けられた集合を示す。
【００４２】
【図７】本願による例示的な支払いチャネルを示す。
【００４３】
【図８】本願による例示的なコミットメント・トランザクションを示す。
【００４４】
【図９】本願による例示的な払い戻しトランザクションを示す。
【００４５】
【図１０】本願による例示的な支払いトランザクションを示す。
【００４６】
【図１１】図3の特定のノードによって実行される動作を示すフローチャートである。
【００４７】
【図１２】図3の諸ノードによって実行される動作を示すフローチャートである。
【００４８】
【図１３】図6の循環的に順序付けられた集合におけるノード間の移転を示す図である。
【００４９】
【図１４】図3の特定のノードによって実行される動作を示すフローチャートである。
【００５０】
図面において、同様の要素および特徴を示すために同様の参照符号がされる。
【発明を実施するための形態】
【００５１】
本願において、用語「および／または」は、リストされた要素のうち任意の1つのみ、任意のサブコンビネーション、または要素すべてを含む、リストされた要素のすべての可能な組み合わせおよびサブコンビネーションをカバーすることが意図されており、必ずしも追加的な要素を排除しない。
【００５２】
本願において、「…または…のうちの少なくとも1つ」は、リストされた要素のうち任意の1つのみ、任意のサブコンビネーション、または要素すべてをカバーすることが意図されており、必ずしも追加的な要素を排除せず、また必ずしも要素すべてを必要とすることはない。
【００５３】
本発明を具現する、後期開示式グループ・ランダム交換（Group  Random  Exchange  Late  Reveal、GRELR）プロトコルと名付けられるプロトコルが本明細書に記載される。これは、特定のノードの複数のアドレスの間のリンクを不明瞭にしながら、かつそのノードがその資源を不正使用する可能性を低減または制限しながら、あるアドレスから別のアドレスに、ある量の計算資源を表わす単位を移動させるための、あるノードについてのものである。これは、グループの各ノードが、全員が移転の出力を受け取るよう、計算資源の単位をグループの別のノードに関連付けられたアドレスに転送することに対して合意するグループの概念に基づいている。
【００５４】
特定のノードがx単位を移転するアドレスに関連付けられたノードは、グループのノードの中からランダムに選択され、同様に、計算資源のx単位を前記特定のノードに関連付けられたアドレスに転送するノードも、グループのノードの中からランダムに選択される。こうすることによって、前記特定のノードは、計算資源のx単位を1つのアドレスに移転するが、ランダムに決定される異なるノードから、異なるアドレスにおいて計算資源のx単位の受領を受け入れることができる。言い換えると、額（amount）としては、各ノードに送信される資源の量は、その発信元のアドレスのほかは同一であってもよい。しかしながら、ノードのランダム化は、プロトコルの外部の当事者がブロックチェーンを解析し、特定のノードの入力アドレスと出力アドレスの間のリンクを決定することを困難にしうる。よって、セキュリティを高めることができる。
【００５５】
さらに、GRELRプロトコルは、グループ内のどのユーザーも単位を失うリスクのない、nユーザーのグループ間でのこの交換を達成することができる。もしプロトコルの実行中に計画通りに進まないものがあれば、プロトコルは、適宜、払い戻しトランザクションを使用して、ユーザーがそれぞれの単位を取り返すことを許容する。
【００５６】
GREプロトコルは、既存の2つのビットコイン関連技術を基盤としている。これは一対のユーザー間のブロック外（off-block）ビットコイン・トランザクションのために設計された技法であり、特に払い戻しトランザクションの使用を組み込んでいる。これらの技術の第2は、原子的チェーン間取引（Atomic  Cross-Chain  Trading、ACCT）（非特許文献７）である。これは、ある暗号通貨でx枚のコインをもつユーザーが、それを別の暗号通貨における別のユーザーのy枚のコインと交換するために設計されたプロトコルである。これは「公正な交換」として行なわれ、第1のユーザーは、第1のユーザーが第2のユーザーに対して負っているコインを回収する能力を第2のユーザーに与えることなしには、第2のユーザーのコインを取得することができない。
【非特許文献６】‘Introduction  to  Micropayment  Channels’、http://super3.org/introduction-to-micropayment-channels/
【非特許文献７】‘Atomic  cross-chain  trading’、https://en.Bitcoin.it/wiki/Atomic_cross-chain_trading
【００５７】
GRELRプロトコルは、GREプロトコル、特にGRECSプロトコルに対する改良である。GRELRは、共通の秘密を使用する必要性を回避することによって改善する。GRELRプロトコルはまた、各ノードに関連付けられた特定の秘密を早期に明かす必要性を回避することによって、改善し、参加者が、それぞれの支払いを回収するときに、そのノードに関連付けられた特定の秘密に部分的に基づいた秘密の結果を明かすだけである。GRELRは、秘密の値が統合されて秘密の結果を形成するGRECSと比較して、方向を逆にすることによってこれを達成する。そうすることで、GRELRは、参加するノードが、そのノードに関連付けられたアドレスに有利なトランザクションの実行におけるほかは、自分の秘密の値を開示する必要を回避しうる。
【００５８】
GRECSに対して改善しつつ、GRELRは、下記を含む、GRECSが満足するさまざまな条件を満足する。
【００５９】
１．支払いチャネルについての秘密の値を推測するのは難しいべきである。
【００６０】
２．特定の支払いチャネルの支払いトランザクションを実行することにおける秘密の結果の開示は、GREシーケンス（反時計回り）で次の支払いチャネルのロックを解除するために必要な秘密の結果が開示される、または少なくとも簡単に計算できるようにするべきである。
【００６１】
３．外部の観察者が秘密鍵（または秘密鍵暗号化）の間の関係を識別することは困難であるべきである。
【００６２】
４．プロトコルは、プロトコルの動作のみに起因する、交換参加者にとっての、ブロックチェーンによって追跡される資産の損失リスクを防止または制限するように設計されるべきである。
【００６３】
支払いチャネル
上述したように、本発明においては、支払いチャネルが特徴である。下記は支払いチャネルの概要である。
【００６４】
支払いチャネル（payment  channel）は、ユーザーが、トランザクションのすべてをブロックチェーンにコミットすることなく、複数のビットコイン・トランザクションを行なうために設計された技法である。典型的な支払いチャネルの実装では、ほとんど無制限の額の支払いを行なうことができるが、ブロックチェーンには2つのトランザクションを追加するだけでよい。
【００６５】
ブロックチェーンに追加されるトランザクションの数の減少とそれに伴うコストの減少に加えて、支払いチャネルは、スピードと、重要なことに、物事が計画通りに進まない、またはいずれかのユーザーがある一組の支払いを超えて進まないことを決定した場合にユーザーが単位を払い戻してもらえることという利点をも提供する。支払いチャネル実装の概要が下記に記載される。
【００６６】
アリスがボブにサービスについて支払いをする必要があるシナリオを考える。これは、状況に応じて、ある時間期間にわたっての、アリスからボブへの複数の支払いを必要とすることがある。アリスは、交換の可能な集合において、ボブに対して、最大15ビットコイン（合計）費やすことを期待している。これを容易にするため、アリスとボブの間に支払いチャネルが確立され以下のように動作する。
【００６７】
まず、アリスは、アリスから発する15ビットコインをコミットする、アリスとボブの両方によって管理される、2/2マルチシグネチャー（2-of-2  multisignature）ペイツースクリプトハッシュ（pay  to  script  hash、P2SH）トランザクションTcを生成する。この時点では、トランザクションはビットコイン・ネットワークに提出されない（そのようなマルチシグネチャー・アドレスは、2人の個人（アリスとボブ）がこのアドレスからお金を使う何らかのトランザクションに署名することを要求する）。
【００６８】
次に、アリスは、「マルチシグネチャーで制御されるファンド」のすべての単位をアリスに返還する、別個の払い戻しトランザクション処理Tr,0を生成する。このトランザクションは、100ブロックのnLockTime値を含む（nLockTimeは、指定された時間が経過した後にのみビットコイン・トランザクションが実行可能になることを許容するビットコイン・トランザクション・パラメータである）。ボブが該トランザクションに署名する。この払い戻しトランザクションは、アリスとボブの間の交換がうまくいかない場合、nLockTimeが生起した後にアリスが払い戻しを受けることを許容する。
【００６９】
次に、アリスがもとのトランザクションTcに署名する。
【００７０】
この時点で、アリスとボブは、アリスからボブに対してなされる（ブロックチェーン外での）移転を反映するために、新しい払い戻しトランザクションを生成することに進んでもよい。これらの払い戻しトランザクションは、アリスがその時点においてボブに移転することを要求される正味の額を反映する。例として、アリスがボブに5ビットコインを転送する場合、ボブに5BTCを送り、アリスに10BTCを送り返す出力をもつ新しい払い戻しトランザクションTr,iが作成される。アリスがさらに5ビットコインをボブに転送する必要がある場合、10ビットコインをボブに、5ビットコインをアリスに送る出力をもつ新しい払い戻しトランザクションTr,i+1が作成される。それぞれの新しい払い戻しトランザクションについて、詳細については合意があると仮定して、両者は該トランザクションに署名するが、必ずしも該トランザクションをネットワークに提出するものではない。
【００７１】
作成されたそれぞれの相続く払い戻しトランザクションは、前回の払い戻しトランザクションよりも小さいnLockTimeをもつ、すなわち、nLockTime(Tr,i+1)＜nLockTime(Tr,i)であることを注意しておく。
【００７２】
あるユーザーがいずれかのTr,iに署名することを拒否する場合、不利益を受けるユーザーは単にTr,i-1を提出ればよい。最悪ケースのシナリオでは、アリスがTr,0に署名し、それをネットワークに提出して、（nLockTimeが満了した後に）自分のすべての単位を取り戻す。
【００７３】
構築された最終的な払い戻しトランザクションは、アリスからボブに移転される単位の正味合計を表わす。このトランザクションは、ネットワークに提出される。
【００７４】
図1は、支払いチャネルで使用されるトランザクションTc  100AおよびTr,n  100Dを示している。Mは、アリスからボブに送られうる最大金額を表わす。xはアリスがボブに支払う必要のある単位の現在の正味総額を表わす。Sstopは、初期の払い戻しトランザクションのnLockTimeである。nは、アリスとボブの間で行なわれる継続的な（ブロック外の）移転において作成された払い戻しトランザクションの数である（これは、前記初期の払い戻しトランザクションを除く）。sは、ある当事者が、他方の当事者が前回の払い戻しトランザクションを提出して事実上、アリスとボブの間の交換を終了させるリスクを負う前に、両ユーザーが払い戻しトランザクションに同意するために割り当てられた時間である。
【００７５】
t＋n*s＜Sstop（ここで、tは現在の時刻）、（Sstop−n*s）≧sであることを注意しておく。
【００７６】
図1のトランザクションTc  100A、Tr,0  100B、Tr,1  100C、およびTr,n  100Dは、ブロックチェーン上に現われうるトランザクションである。
【００７７】
アリスとボブとの間の支払いチャネルを構築するための動作が、図2のフローチャート200に示されている。動作210以下は、コンピュータ読取可能記憶媒体に記憶されうるコンピュータ実行可能命令を含むソフトウェアを実行する一つまたは複数のコンピューティング装置の一つまたは複数のプロセッサによって実行される。
【００７８】
動作210では、アリスに関連するコンピューティング装置のプロセッサは、上記の仕方で、2/2マルチシグネチャー・ペイツースクリプトハッシュ（P2SH）トランザクションTcを生成する。
【００７９】
動作210から制御フローは動作212に進む。動作212では、アリスに関連するコンピューティング装置のプロセッサは、「マルチシグネチャーで制御されるファンド」のすべての単位を上記の仕方でアリスに関連するアカウントに返還する、別個の払い戻しトランザクションTr,0を生成する。
【００８０】
動作212から制御フローは動作214に進む。動作214では、アリスに関連するコンピューティング装置のプロセッサが、上述の払い戻しトランザクションに署名する。
【００８１】
動作214から制御フローは動作216に進む。動作214では、ボブに関連するコンピューティング装置のプロセッサも、上述の払い戻しトランザクションに署名してもよい。該トランザクションがそのように署名されると、制御フローは動作218に進む。あるいはまた、該トランザクションが署名されない場合は、支払いチャネルの作成が中止される。
【００８２】
動作218では、アリスに関連するコンピューティング装置のプロセッサが、Tcに署名し、それをブロックチェーンに提出する。次いで、制御フローは動作220に進む。
【００８３】
動作220において、上記の払い戻しトランザクションは、アリスからボブへのさらなる移転が、時間が許せば、ネゴシエーションされうるように、第1の払い戻しトランザクションとして認識される。
【００８４】
動作220から制御フローは動作222に進んだ。動作222では、前記さらなる移転をネゴシエーションするのに十分な時間が残っているかどうかが判断される。十分な時間が残っていない場合、制御フローは、最後の払い戻しトランザクションがブロックチェーンに提出される動作224に進む。あるいはまた、十分な時間が残っている場合には、制御フローは動作226に進む。
【００８５】
動作226では、アリスとボブとの間のさらなる移転がネゴシエーションされる。動作226から制御フローは動作228に進み、そこでネゴシエーションが成功したかどうかが判定される。そのネゴシエーションが不成功だった場合、制御は、上述の動作224に進む。あるいはまた、ネゴシエーションが成功すると、制御フローは動作230に進むことになる。
【００８６】
動作230では、成功したネゴシエーションに由来する合意を反映する新たな払い戻しトランザクションが、上述の仕方で作成される。次いで、制御フローは動作240に進み、そこでは、前記新しい払い戻しトランザクションが現在の払い戻しトランザクションとして認識される。
【００８７】
動作240から、制御フローは動作242に進み、そこでは、アリスおよびボブに関連するコンピューティング装置のプロセッサが現在の払い戻しトランザクションに署名しうる。そうであれば、制御フローは、上述の動作222に戻る。あるいはまた、トランザクションがそのように署名されない場合、現在の払い戻しトランザクションの認識は、動作244において、以前の払い戻しトランザクションに戻る。動作244から、制御フローは、上述の動作222に戻る。
【００８８】
図3は、本願の例示的な動作環境を示す。
【００８９】
図示のように、複数のノード300は、コンピュータ・ネットワーク310を介して通信する。各ノード300は、コンピューティング装置であり、ブロックチェーンに参加しており、一つまたは複数の関連付けられたアドレスを有する。かかるアドレスと関連して、ブロックチェーンは、たとえば計算資源の単位のような単位のある量を反映する。
【００９０】
下記でさらに述べるように、ノード300のそれぞれは、該ノードに関連付けられたアドレスからノード300のうち別のノードに関連付けられたアドレスにある量、x単位を移転してもよい。便利なことに、このようにして、ブロックチェーン上の諸トランザクションは混合され、それによりさまざまな移転トランザクションの入力アドレスと出力アドレスとの間の所有関係を不明瞭にしうる。
【００９１】
図4は、例示的なコンピューティング装置の高レベルの動作図である。例示的なコンピューティング装置400は、たとえばノード300のうちの一つまたは複数を含む、本明細書に記載される一つまたは複数のコンピュータ・システムのうちの一つまたは複数の例であってもよい。例示的なコンピューティング装置400は、特定の機能を実行するようそれを適応させるソフトウェアを含む。
【００９２】
例示的なコンピューティング装置400は、多様なモジュールを含む。たとえば、図示のように、例示的なコンピューティング装置400は、プロセッサ410、メモリ420、およびネットワーク・インターフェース430を含んでいてもよい。図のように、例示的なコンピューティング装置400の前述の構成要素は、バス440を通じて通信する。
【００９３】
プロセッサ410は、ハードウェアプロセッサである。プロセッサ410は、たとえば、一つまたは複数のARM、Intel  x86、PowerPCプロセッサなどであってもよい。
【００９４】
メモリ420は、データが記憶され、取り出されることを許容する。メモリ420は、たとえば、ランダムアクセスメモリ、読み出し専用メモリ、および永続的記憶を含んでいてもよい。永続的記憶は、たとえば、フラッシュメモリ、ソリッドステートドライブ等であってもよい。読み出し専用メモリおよび永続的記憶は、非一時的なコンピュータ読出可能記憶媒体である。コンピュータ可読媒体は、例示的なコンピューティング装置400の全体的な動作を支配するオペレーティングシステムによって管理されうるようなファイルシステムを用いて編成されてもよい。
【００９５】
ネットワーク・インターフェース430は、例示的なコンピューティング装置400が、他のコンピューティング装置および／またはたとえばコンピュータ・ネットワーク310（図3）のようなさまざまな通信ネットワークと通信することを許容する。
【００９６】
命令を含むソフトウェアは、コンピュータ読取可能媒体からプロセッサ410によって実行される。たとえば、ソフトウェアは、メモリ420の永続的記憶からランダムアクセスメモリにロードされてもよい。追加的または代替的に、命令は、メモリ420の読み出し専用メモリから直接、プロセッサ410によって実行されてもよい。
【００９７】
下記でさらに述べるように、ソフトウェアは、例示的なコンピューティング装置400のインスタンスを、たとえばノード300のうちの一つまたは複数を含む、本明細書に記載のさまざまなコンピュータ・システムの一つまたは複数として機能するように、適応させてもよい。
【００９８】
協働して作用するノード300によって実行される動作が、図5のフローチャート500を参照して記述される。動作510以下は、さまざまなノード300の一つまたは複数のプロセッサによって実行される。よって、動作510以下は、たとえばメモリ420の記憶などのコンピュータ読取可能記憶媒体に記憶されうるコンピュータ実行可能な命令を含むソフトウェアを実行する例示的なコンピューティング装置400の好適に構成されたインスタンスの、たとえばプロセッサ410（図4）のようなコンピューティング装置の一つまたは複数のプロセッサによって実行される。
【００９９】
動作510では、ノード300からなる集合が識別される。たとえば、ノード300はすべて、ある機関（たとえば、別のノードまたはノード300のうちの特定の一つ）に登録するのでもよい。
【０１００】
次に、動作512において、ノード300からなる集合がランダム化されて、図6に示されるように、ノード300の循環的に順序付けられた集合を実現する。
【０１０１】
図6に示されるように、循環的に順序付けられた集合は、リング600として考えられてもよく、各ノード300は、そのノードへの直後のノードおよび直前のノードとして、2つの他のノードをもつ。
【０１０２】
リング600内の各ノード300は、図のように、0＜i＜nについて、ラベルUiが割り当てられてもよい。ここで、nはノードの数である。すると、便利なことに、Uiに対する直前のノードはノードU(i-1)mod  nであり、Uiに対する直後のノードはノードU(i+1)mod  nである。
【０１０３】
図5に戻ると、動作512に続いて、動作514において、ノード300のうちの一つが開始ノードとして選択される。たとえば、ノード300のそれぞれは、動作を実行してもよく、プロトコルに参加し、その結果、ノードのうちの特定のノードが開始ノードとして選択されるのであってもよい。あるいはまた、ノード300のうちの一つが、何らかの中央機関によって開始ノードとして選択されてもよい。
【０１０４】
例解のために、以下の説明は、開始ノードがU0であり、用語、開始者およびラベルU0は同義に使用されると仮定しているが、これは単に例であり、必須ではない。
【０１０５】
開始ノードは、たとえば好適な乱数ksであってもよい秘密鍵ksを選択する。Psと記されることのできる、秘密鍵・公開鍵ペアの対応する公開鍵が生成されてもよい。開始ノードは値ksを維持する。
【０１０６】
楕円曲線暗号が用いられてもよく、ksおよびPsは楕円曲線暗号の公開鍵・秘密鍵ペアであってもよく、Ps＝ksGとなる。ここで、Gは位数qをもつ楕円曲線上の基底点であり（q×G＝0）、qは大きな素数であり、0＜ks＜qである。特定の例では、非特許文献８において定義される楕円曲線secp256k1が使用されてもよい。よって、楕円曲線暗号を用いるとき、Psは関係Ps＝ksGから決定されてもよい。
【非特許文献８】"Standards  for  Efficient  Cryptography  2  （SEC  2）"、Certicom  Corp,  January  27,  2010
【０１０７】
次に、動作516において、さまざまなタイムアウト値が以下のように選択される。
【０１０８】
まず、各ユーザーUiが後述するある種の動作を完了するために要する時間の長さを表わす時間値sが選択される。該動作はつまり、支払チャネルUi→U(i+1)mod  nを構築し、秘密の値を受け取り、U(i+1)mod  nに有利なx単位を移転する実行トランザクションTpayをブロックチェーンに提出することである。ノード300の任意のものが、他のユーザーのコンセンサスが与えられれば、時間sを選択することができる。いくつかの実装では、開始ノードがsを選んでもよい。これはプロトコルを単純にしうる。時間sは、たとえば、秒またはブロック数のような適切な単位で表わされてもよい。
【０１０９】
第二に、あるユーザーへの第1の移転がビットコイン・ネットワークに提出される開始時刻として、値Sが選択される。ノード300の任意のものが、他のノードのコンセンサスが与えられれば、Sを選択することができる。いくつかの実装では、開始ノードがSを選ぶ。これはプロトコルの実装を単純化しうる。
【０１１０】
特に、Sは、たとえばユニックス時間またはブロック高さのいずれかで指定されうる時点を表わし、一方、sは時間スパンを表わす。
【０１１１】
次に、動作518において、開始ノード以外のノード300のそれぞれ、すなわちU1…Un-1は、対応する秘密のランダム値ki、Uiに関連する秘密鍵を選択する。次いで、各ノードUiは対応する公開鍵Piを決定し、それを開始ノードU0に送る。
【０１１２】
上述のように、楕円曲線暗号が使用されてもよく、各kiとその対応するPiは、Pi＝kiGとなるような、楕円曲線の公開鍵・秘密鍵ペアであってもよい。言い換えると、各公開鍵Piとその対応する秘密鍵kiは、楕円曲線の公開鍵・秘密鍵のペアを形成してもよい。よって、楕円曲線暗号が使用される場合、Piは、ノード300によって、それらのそれぞれのkiから、Pi＝kiGの関係を用いて決定されうる。
【０１１３】
のちにさらに記述するように、次に、ノード300のうちのそれぞれと、ノード300のうちの直後のノードとの間に、支払いチャネルが確立される。
【０１１４】
動作519によって示されるように、処理は、0に初期化されると考えられる概念的な反復子値iに従って、各ノードに関して生起する。すなわち、支払いチャネルの生成は、のちにさらに記述するように、開始ノードU0において開始される。
【０１１５】
動作520において、ロック値Qi+1が決定される。ロック値は、ノードUiから開始ノードまでの循環的に順序付けられた集合（すなわち、リング600（図6）を時計回りに進む）における各ノード300に関連付けられた公開鍵に基づいていてもよい。
【０１１６】
Qi+1は、PsおよびP1…Pn-1に基づいて決定されてもよい。たとえば、楕円鍵暗号が使用されている場合、Qi+1は、和Pi＋…＋Pn-1＋Psとして決定されてもよい。特に、開始ノードU0の場合、Q1の決定は、動作518において諸Pi値を受け取っているため、可能である。さらに、開始ノードの後の各ノード300は、支払いチャネルを作成する前に、そのノードの直前のノードから値Qnを学んでもよい。言い換えると、ノード300のそれぞれは、それぞれのQi+1値を、循環的に順序付けられた集合におけるその後続ノードに通信してもよい。便利なことに、これらの受信された値は、それぞれのQi+1を決定するために、開始ノードに続く各ノードによって使用されうる。たとえば、楕円曲線暗号が使用される場合、Qi+1は、Qnから、値Pnを差し引くことによって決定されうる。特に、Pnは、各Un（n＞0）に知られている。動作518においてその値を自分が生成したからである。
【０１１７】
次に、動作522において、GRELRプロトコルにおける必要なステップを完了するのに十分な時間が残っていることを確認するためのチェックが行なわれる。特に、まだ確立されていない各支払いチャネルが順次完了するために決定された時間sを割り当てられることができるように十分な時間が存在することを確実にために、現在の時刻が、第1の移転の開始時刻Sと比較されてもよい。言い換えれば、チェックはS−t＞(n−i)s（tは現在の時刻）を確認することであってもよい。
【０１１８】
動作522でのチェックが失敗した場合、GRELRは中止される。そうでない場合は、支払いチャネルのセットアップが完了したかどうか、すなわち、iがまだノード数nよりも小さいかどうかを確認するための別のチェックが、動作524において行なわれる。
【０１１９】
支払いチャネルのセットアップが完了した場合、この段階での処理は停止し、プロトコルは後述するさらなる処理に進んでもよい。そうでない場合には、次に、動作526において、支払いチャネルがノードUiとUi+1との間で確立される。以下にさらに述べるように、値Qi+1は、支払いチャネルの支払いトランザクションをロックするために使用される。
【０１２０】
図7は、動作526において確立されうるようなUi→U(i+1)mod  n支払いチャネルの表現700を提供する。
【０１２１】
図に示されるように、チャネルはTc、Tpay、Trの3つのトランザクションを含む。σUiはUiの署名を表わすことを注意しておく。
【０１２２】
Tcトランザクションは、支払いチャネルのコミットメント成分を表わす。ここで、該トランザクションを通じて、Uiは、指定された数の単位を、2/2マルチシグネチャー（Ui,U(i+1)）または値sv(i+1)の知識とU(i+1)の署名のいずれかによって支配されるべく、送る／コミットする。
【０１２３】
Trトランザクションは、指定された数の単位の（コミットメント・トランザクションから）Uiへの払い戻しを表わし、これは、指定された時間が経過した後に、ブロックチェーンへの提出に適格となる。よって、Trは、時間満了の返還条件が満足されるときに、資源の制御を特定のノードUiに返すように構成されている。このトランザクションが成功裏に実行されるためには、UiおよびUi+1の署名が必要となる。
【０１２４】
TPayトランザクションは、コミットされたファンドからの指定された数の単位の、UiからU(i+1)への移転である。このトランザクションが成功裏に実行されるためには、秘密の値svi+1とユーザーUi+1の署名を知る必要がある。下記でさらに述べるように、svi+1はQi+1の対応物であり、よって楕円曲線暗号が用いられる場合などでは、Qi+1＝svi+1Gのように、公開鍵とみなされるQi+1に関係した秘密鍵を表わしてもよい。
【０１２５】
特に、ノード300のリング配列、すなわち循環的に順序付けられた配列のため、そのリングにおけるノード300の順序付けがランダムであったという事実は、ノード300のうちの特定の1つUiに対して移転するノードおよびUiによる移転先のノードが両方ともランダムであることを意味する。さらに、Uiからの移転先のノードとUiから移転を受け取るノードは異なる。
【０１２６】
ブロックチェーンがビットコイン・ブロックチェーンである場合、Tc、TrおよびTpayのそれぞれはビットコイン・トランザクションであってもよい。
【０１２７】
図8は、例示的なTcビットコイン・トランザクションの詳細を示すテーブル800を含む。
【０１２８】
図9は、例示的なTrビットコイン・トランザクションの詳細を示すテーブル900を含む。
【０１２９】
図10は、例示的なTpayビットコイン・トランザクションの詳細を示すテーブル1000を含む。
【０１３０】
特に、テーブル800、テーブル900、およびテーブル1000のそれぞれに示されるトランザクションの詳細は、さまざまなトランザクションの<scriptSig>、<scriptPubkey>、nLockTime、および出力値に限定される。これらがGRELRプロトコルにとって最も重要なトランザクション要素であるためである。
【０１３１】
さらに、テーブル800、テーブル900、およびテーブル1000のそれぞれに示されるトランザクションは、楕円鍵暗号がGRELRのために用いられると想定している。特に、トランザクションTcでは、非標準的なオペコードOP_ECPMULTが使用される。OP_ECPMULTはエンコードされた楕円曲線点と数を受け取り、楕円曲線スカラー乗算を実行し、その結果を、エンコードされた楕円曲線点として出力する。
【０１３２】
図5に戻ると、動作526に続いて、フローは動作528に進み、そこで、動作526において支払いチャネルが成功裏に作成されたかどうかを判定するためのチェックが行なわれる。もしそうであれば、動作529でカウンタiがインクリメントされ、次いで、フローが動作520に戻り、もしあれば次のノードを処理する。あるいはまた、動作526において支払いチャネルの作成に失敗した場合、動作528でのチェックは失敗し、GRELRは終了する。
【０１３３】
注目すべきことに、開始ノードU0以外の各ノード300については、そのノードに有利な支払いチャネルが、そのノードが資源の提供者として機能する支払いチャネルより前に作成される。このシーケンスにより、各ノードUiは、Ui+1がTpayでUiからUi+1に集金する場合に実行できる、自分に有利なTpayトランザクションがあることを保証することができる。一方、開始ノードU0は、一つ一つの全支払いチャネルのロック解除値を構築するために必要とされる値ksの知識をもつ唯一のノードであるため「だまされる」ことがありえないので、U0は他のノードと異なり、この保証がなくても安全である。よって、U0がksを開示しない限り、トランザクションTpayはどれも実行されない（U0からU1へのTpayを含めて）。
【０１３４】
ここで、図11について論じる。図11は、フローチャート500（図5）に従って動作を実行する際に、図3の特定のノードによって実行される動作を示すフローチャート1100を示す。動作1110以下は、ノード300のうちの特定の開始ノードでないものの一つまたは複数のプロセッサによって実行される。よって、動作1110以下は、たとえばメモリ420の記憶などのコンピュータ読取可能記憶媒体に記憶されうるようなコンピュータ実行可能な命令を含むソフトウェアを実行する、例示的なコンピューティング装置400の好適に構成されたインスタンスのプロセッサ410（図4）などのコンピューティング装置の一つまたは複数のプロセッサによって実行される。
【０１３５】
フローチャート1100は、上述のように、ノードをランダム化することによって、ノード300をもって循環的に順序付けられた集合が形成されていることを前提とする。さらに、特定のノードUiは、秘密の値ki、秘密鍵、および対応する公開鍵Piをも生成していると想定する。たとえば、楕円曲線暗号がGRELRの特定の実装において利用されている場合、特定のノードは、上記で論じたように、kiを生成し、次いで、Pi＝kiGの関係を使ってPiを決定してもよい。
【０１３６】
動作1110では、特定のノードは、開始ノードU0にkiに対応する値Piを送る。上記で論じたように、Piはkiに対応する公開鍵である。よって、動作1110では、特定のノードは、該特定のノードに関連付けられた公開鍵を、循環的に順序付けられた集合の開始ノードに送信する。
【０１３７】
動作1110から、制御フローは動作1120に進む。動作1120では、第1の値Qiが直前のノード、すなわちUi-1から受信される。上記で論じたように、受信された値は、その特定のノードから開始ノードまで、すなわちU0からUiまでの循環的に順序付けられた集合内の各ノードに関連付けられた公開鍵に基づいている。たとえば、楕円曲線暗号が利用されている場合、その値は、その特定のノードから開始ノードへの循環的に順序付けられた集合内の各ノードに関連付けられた公開鍵の和であってもよい。
【０１３８】
動作1120から、制御フローは動作1130に進む。動作1130では、上記の仕方で第2の値、ロック値Qi+1がQiに基づいて決定される。言い換えれば、ロック値は、第1の値Qiと、その特定のノードに関連付けられた公開鍵Piとに基づいて決定される。たとえば、楕円曲線暗号が利用されており、Qi＝Pi＋…＋Pn-1＋Psである場合、ロック値Qi+1を決定することは、受信された値から、その特定のノードに関連付けられた公開鍵Piを減算することを含みうる。
【０１３９】
動作1130から、制御フローは動作1140に進み、UiはUiとUi+1の間の支払いチャネルを生成する。その際、上記のように、さまざまなトランザクションが準備される。たとえば、トランザクションTpayがロック値を使用して準備される。このトランザクションは、上述したように、その特定のノードに関連付けられた源アドレスからその特定のノードの直後のノード（すなわち、循環的に順序付けられた集合におけるUi+1）の受領アドレスに、資源（たとえば、x単位の計算資源）を送信するように構成される。このトランザクションによれば、資源の制御は、ロック値に対応するロック解除値（svi+1）の供給を含む実行条件の充足に応答して伝達される。
【０１４０】
図12を参照すると、フローチャートは、上述した仕方で確立された各支払いトランザクションの支払いトランザクションを完了するために協働して機能するノード300によって実行されるさらなる動作を示す。動作1210以下は、さまざまなノード300の一つまたは複数のプロセッサによって実行される。よって、動作1210以下は、たとえばメモリ420の記憶などのコンピュータ読取可能記憶媒体に記憶されうるコンピュータ実行可能命令を含むソフトウェアを実行する例示的なコンピューティング装置400の好適に構成されたインスタンスの、たとえばプロセッサ410（図4）のようなコンピューティング装置の一つまたは複数のプロセッサによって実行される。
【０１４１】
動作1210では、開始ノードU0は、U0に有利なTpayトランザクションをロック解除するためのロック解除値sv0を決定する。各トランザクションをロックするために使用されるロック値は、循環的に順序付けられた集合においてその特定のノードに続く、開始ノードまでの諸ノードに関連付けられた公開鍵に基づいていることを想起されたい。これは、前述のTpayトランザクションの場合、トランザクションをロックする値は、秘密鍵ksに対応する開始ノードの公開鍵Psのみに基づいていることを意味する。よって、ロック解除値はksに基づく。たとえば、sv0＝ksであってもよい。
【０１４２】
次に、制御フローは動作1212に進み、U0がU0に有利なTpayトランザクションに署名する。言い換えると、U0は、ブロックチェーンに提出されると、資源をUn-1→U0に移転するトランザクションに署名してもよい。たとえば、U0は対応するTpayトランザクションに署名してもよく、そしてsv0をロック解除スクリプトに入力してもよく、たとえば、表800（図8）に示されるredeemScriptに入力してもよい。
【０１４３】
U0はsv0も開示する。たとえば、U0は、コンピュータ・ネットワーク310を通じた送信によって、sv0をU1に送信するのでもよい。
【０１４４】
あるいはまた、U0は、U1がブロックチェーンからsv0を取得することに頼ってもよい。取得はたとえば、トランザクションTpayが動作1216（後述）においてブロックチェーンに提出されるときである。特に、ブロックチェーンからのsv0の取得に頼る場合、値sは、該時間期間が、そのトランザクションがブロックチェーン・ネットワークに提出された後、任意の参加者がその値を見出すのに十分な時間を提供するように選ばれるべきである。特定のブロックチェーン上のトランザクションを確認するための平均時間も考慮に入れる。
【０１４５】
動作1212から、制御フローは動作1214に進む。
【０１４６】
動作1214では、U0がU0に有利なTpayトランザクションをブロックチェーンに提出するのに十分な時間が残っているかどうかが判定される。言い換えれば、S＋sが起こったかどうかが判定される（t＜S＋s、ここでtは現在の時間）。
【０１４７】
動作1214でのチェックが失敗の場合（十分な時間がない）、GRELRは中止される。あるいはまた、チェックが成功する場合、制御フローは動作1216に進む。
【０１４８】
動作1216では、U0に有利な署名されたTpayトランザクションがブロックチェーンに提出される。言い換えると、資源をUn-1→U0に移転するトランザクションがブロックチェーンに提出される。
【０１４９】
動作1216から制御フローは動作1217に進む。動作1217では、カウンタiが初期化される。特に、トランザクションはリング600（図6）のまわりの反時計回り方向にロック解除されるので、iは、循環的に順序付けられた集合において開始ノードに先行するノードのインデックス、たとえばi＝n−1に初期化される。
【０１５０】
フロー制御は、動作1217から動作1218に進む。動作1218において、ロック解除すべきTpayトランザクションがまだあるかどうかが判定される。言い換えれば、i＞0であるかどうかが判定される。そうでない場合、GRELRは完了である。あるいはまた、そうである場合、制御フローは、動作1220に進む。
【０１５１】
動作1220では、最後のアンロック値（sv(i+1)mod  n）が、ノードUiによって得られる。たとえば、値は、たとえば、場合により動作1212または動作1224（後述）において、直前のノードから受信されていてもよい。あるいはまた、値は、ブロックチェーンに提出されたトランザクション、たとえば、場合により動作1216または動作1230（後述）で提出されたトランザクションから、決定されてもよい。
【０１５２】
動作1220から、制御フローは動作1222に進む。動作1222では、Uiは、動作1120で取得された最後のロック解除値とUiに関連付けられた秘密鍵とを使用して、ロック解除値sviを決定する。
【０１５３】
そのような決定の例を以下に示す。
【０１５４】
まず、U(i-1)mod  nからUiへ資源を移転するトランザクションをロックするために使用される値が、循環的に順序付けられた集合におけるUiから開始ノードU0までの各ノードに関連付けられた公開鍵に基づいていることを想起されたい。トランザクションは、対応する秘密鍵を使用してロック解除されうる。
【０１５５】
ロック値（公開鍵）については、楕円曲線暗号が用いられる場合、ロック値は和Qi＝Pi＋…＋Pn-1＋Psとして決定されうることを想起されたい。
【０１５６】
さらに、楕円曲線暗号ではP＝kGであることを想起されたい。また、楕円曲線加算の準同型特性によれば、E(m＋n)＝E(m)＋E(n)となることを想起されたい。ここでEは関数E(x)＝xGである。
【０１５７】
さらに、Pi＝kiGであることを想起されたい。よって、Qi＝kiG＋…＋k(n−1)G＋ksG＝G(k1＋…＋k(n−1))となる。したがって、公開鍵Qiに対応する秘密鍵は、秘密の値の和ki＋ki+1＋…＋kn-1＋ksとなることに注意されたい。
【０１５８】
言い換えると、特定のノードから開始ノードまでの、循環的に順序付けられた集合内の各ノードに関連する公開鍵の和であるロック値Qiに対応するロック解除値は、それらの公開鍵のそれぞれに関連する秘密鍵の総和、すなわち、特定のノードから開始ノードまでの、循環的に順序付けられた集合内の各ノードに関連する値kiの和によって得られる秘密鍵でありうる。
【０１５９】
特に、これは準同型特性によって可能となる。よって、値を組み合わせる別の方法であって、たとえば当業者に既知でありうるさまざまな準同型ハッシュ関数のような、同様の準同型特性を有するものが利用されることができる。追加的または代替的に、上記では準同型加算が示されているが、準同型は他の演算に対しても存在しうる。よって、いくつかの実装では、加算以外の演算に対する準同型が活用されてもよい。
【０１６０】
図12に戻ると、動作1222に続いて、制御フローは、動作1224に進む。動作1224において、UiはUiに有利なTpayトランザクションに署名する。言い換えると、ブロックチェーンに送信されると、資源をU(i-1)  mod  n→Uiに移転するトランザクションに署名する。たとえば、Uiは、対応するTpayトランザクションに署名してもよく、ロック解除スクリプトに、たとえばテーブル800（図8）に示されるredeemScriptに、sviを入力してもよい。
【０１６１】
Uiはまた、sviを明かす。たとえば、Uiは、コンピュータ・ネットワーク310を通じた伝送によってsviをUi-1に送るのでもよい。あるいはまた、Uiは、たとえばトランザクションTpayが動作1230（後述）においてブロックチェーンに提出されるときなどに、Ui-1がブロックチェーンからsv0を取得することに頼ってもよい。
【０１６２】
動作1224に続いて、制御フローは動作1226に進む。
【０１６３】
動作1226では、Uiに有利なTpayトランザクションのブロックチェーンへの提出を許容するのに十分な時間が残っているかどうかが判定される。換言すれば、時間S＋(n−i)sが生起したかどうか、すなわちt＜(n−i)S＋s（ここでtは現在の時刻）であるかどうかが判定される。
【０１６４】
チェックが失敗すると、制御フローは動作1228に進む。あるいはまた、チェックが成功した場合、制御フローは動作1230に進む。
【０１６５】
動作1228では、十分な残り時間の欠如は、Ui-1に、払い戻しトランザクションをトリガーすることによってGRELRの取り消しおよび中止をトリガーさせることによって対処される。具体的には、Ui-1は、ブロックチェーンにそのそれぞれの払い戻し処理Trを提出し、それによりノードUiないしU0にそれぞれの払い戻しトランザクションをブロックチェーンに提出させるプロセスを開始する。
【０１６６】
動作1230では、十分な残り時間があるので、Uiは、いくらかの資源をUi-1からUiへ移転する署名されたTpayトランザクションをブロックチェーンに提出する。
【０１６７】
動作1230から、制御フローは動作1231に進み、そこでカウンタiがデクリメントされ、次いで制御フローが動作1218に戻り、ロック解除すべきさらなるトランザクションが存在するかどうかを判定する。
【０１６８】
便利なことに、このようにして、秘密の値sviが明かされ、支払いトランザクションがロック解除される。循環的に順序付けられた集合関係におけるノード300に対するさまざまな値（さまざまな秘密の値sviを含む）の概観が、図13の描画1300に示されている。
【０１６９】
図13において、矢印は、Tpay支払いの方向を示す。矢印の外側に隣接する式は、トランザクションTpayがブロックチェーンによって受け入れられる基準を表わす。矢印の内側に隣接する式は、s時間スパン値を表わす。
【０１７０】
ここで図14について論じる。図14は、フローチャート1200に従って動作を実行する際に、図3の特定のノードによって実行される動作を示す、フローチャート1400を示す。動作1410以下は、ノード300のうちの特定の非開始ノードの一つまたは複数のプロセッサによって実行される。よって、動作1410以下は、たとえばメモリ420の記憶などのコンピュータ読取可能記憶媒体に記憶されうるようなコンピュータ実行可能な命令を含むソフトウェアを実行する、例示的なコンピューティング装置400の好適に構成されたインスタンスのプロセッサ410（図4）などのコンピューティング装置の一つまたは複数のプロセッサによって実行される。
【０１７１】
動作1410において、値svi+1が得られる。svi+1は、特定のノードUi以後開始ノードU0までの各ノードに関連する秘密の値kiに基づいていることを想起されたい。さらに、各kiは公開鍵Piに対応する秘密鍵であることを想起されたい。換言すれば、svi+1を得ることによって、その特定のノードの直後のノードから開始ノードに至る、循環的に順序付けられた集合内の各ノードに関連する公開鍵に対応する秘密鍵に基づく第3の値が得られる。
【０１７２】
特に、値svi+1は、上述のように、ノードUi+1、すなわち直後のノードから受領されうる。追加的または代替的に、その値は、上記のように、すでにブロックチェーンに提出されたトランザクションから抽出されてもよい。
【０１７３】
さらに、いくつかの実装において、svi+1は、たとえば楕円キー暗号が用いられるときなどは、和ki+1＋…＋kn-1＋ksであってもよいことを想起されたい。言い換えると、値svi+1は、その特定のノードの直後のノードから開始ノードに至るまでの、循環的に順序付けられた集合内の各ノードに関連付けられた、公開鍵Piに対応する秘密鍵kiの和であってもよい。
【０１７４】
動作1410に続いて、制御フローは動作1420に進む。動作1420では、ロック解除値svi+1および特定のノードに関連付けられた（公開鍵Piに対応する）秘密鍵kiに基づいて、第2のロック解除値sviが決定される。たとえば、楕円キー暗号が特定の実装において用いられる場合、第2のロック解除値を決定することは、上述したように、特定のノードに関連付けられた（公開鍵Piに対応する）秘密鍵kiを加算することを含んでいてもよい。
【０１７５】
動作1420に続いて、制御フローは動作1430に進み、そこで、資源をUiに移転するトランザクションTpayが実行される。このTpayトランザクションは、上述したように、Uiの直前のノード、すなわち、U(i-1)  mod  nによって準備され、上記のように第2のロック解除値sviの供給を含む実行条件の充足に応答して、直前のノードに関連付けられた源アドレスから前記特定のノードに関連付けられた受領アドレスにいくらかの資源の制御を送信するように構成されている。
【０１７６】
上述の動作に加えて、第2のロック解除値が直前のノードに送信されてもよい（たとえば、動作1224（図12）の議論において上述したように）。
【０１７７】
追加的または代替的に、Uiに有利なトランザクションが、その特定のノードによってブロックチェーンに提出されてもよい（たとえば、動作1230（図12）の議論において上述したように）。
【０１７８】
上述の実施形態は、本発明の主題を限定するものではなく、例解するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替実施形態を設計することができるであろうことを注意しておくべきである。請求項においては、括弧内に付した参照符号があったとしても、請求項を限定するものと解釈してはならない。「含む」および「有する」等の語は、いずれかの請求項または明細書全体に挙げられたもの以外の要素またはステップの存在を除外するものではない。本明細書において、「含む」は「…を含むまたは…からなる」を意味し、「有する」は「…を含むまたは…からなる」を意味する。要素の単数形での言及は、そのような要素の複数への言及を除外するものではなく、その逆もまた同様である。本発明の主題は、いくつかの別個の要素を含むハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項においては、これらの手段のいくつかは、同一のハードウェア項目によって具現されてもよい。ある種の措置が相互に異なる従属請求項に記載されているというだけの事実が、これらの措置の組み合わせが有利に利用できないことを示すものではない。
【図１】
2021513253.tif 000003
【図２】
2021513253.tif 000004
【図３】
2021513253.tif 000005
【図４】
2021513253.tif 000006
【図５】
2021513253.tif 000007
【図６】
2021513253.tif 000008
【図７】
2021513253.tif 000009
【図８】
2021513253.tif 000010
【図９】
2021513253.tif 000011
【図１０】
2021513253.tif 000012
【図１１】
2021513253.tif 000013
【図１２】
2021513253.tif 000014
【図１３】
2021513253.tif 000015
【図１４】
2021513253.tif 000016
【国際調査報告】
2021513253.tif 000017
2021513253.tif 000018