(57)【要約】  （ｉ）ストレージノードが公開ブロックチェーンを維持することに対して報酬を与えられることを可能にし、（ｉｉ）プルーフオブブロックチェーンストレージ（ＰｏＢＳ）スキームを用いてブロックチェーンの完全性を立証するプロトコルが説明される。このプロトコルは、チャレンジレスポンス方法を使用してリモートのサーバに記憶されたデータファイルが損なわれていないかを暗号でチェックする方法を提供する。このプロトコルは、中間者攻撃に対して安全にされる。悪意のあるピアは、データを記憶している第三者にチャレンジを渡してレスポンスを返すことができない。該スキームは、公に立証可能でもある。
2020528691.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークのノードのための、コンピュータにより実現される方法であって、
ブロックチェーンから、プルーフオブストレージがチャレンジされるべき１つ以上のトランザクションを選択するステップであり、前記選択された１つ以上のトランザクションはトランザクション深さを有する、ステップと、
プルーフオブストレージがチャレンジされるべき前記１つ以上の選択されたブロックチェーントランザクションを示すプルーフオブブロックチェーンストレージトランザクションと、前記１つ以上の選択されたトランザクションを記憶するストレージノードによりロック解除できるプルーフオブブロックチェーンストレージ報酬とを作成するステップと、
前記プルーフオブブロックチェーンストレージトランザクションを前記ブロックチェーンネットワーク上の１つ以上のストレージノードに送信するステップと、
を含む、コンピュータにより実現される方法。
【請求項２】
前記１つ以上の選択されたブロックチェーントランザクションは、前記ブロックチェーンにおける前記１つ以上のトランザクションの深さに対応するトランザクション深さｄを有し、
前記プルーフオブブロックチェーンストレージ報酬は、前記トランザクション深さｄに従って設定され、それにより、前記トランザクション深さｄがより大きいほど前記報酬がより大きい、
請求項１に記載のコンピュータにより実現される方法。
【請求項３】
前記１つ以上のブロックチェーントランザクションは前記ブロックチェーンからランダムに選択される、
請求項１又は２に記載のコンピュータにより実現される方法。
【請求項４】
ブロックチェーントランザクションのリストが前記ブロックチェーンから選択される、
請求項１乃至３のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項５】
前記１つ以上のトランザクションは、前記ブロックチェーン上で複数の確認を受信した１つ以上のブロックから選択される、
請求項１乃至４のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項６】
前記プルーフオブブロックチェーンストレージトランザクションは、前記ブロックチェーン上に記憶されるべき新たにマイニングされたブロックに関連づけられたデータを含む、
請求項１乃至５のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項７】
前記新たにマイニングされたブロックに関連づけられた前記データは、前記新たにマイニングされたブロックのブロックヘッダデータである、
請求項６に記載のコンピュータにより実現される方法。
【請求項８】
新たにマイニングされたブロックに関連づけられた前記データは、前記ブロックチェーンから選択された前記１つ以上のブロックチェーントランザクションに関連づけられたデータと組み合わせられる、
請求項６又は７に記載のコンピュータにより実現される方法。
【請求項９】
前記新たにマイニングされたブロックに関連づけられた前記データは、ＸＯＲ演算又は連結により、前記ブロックチェーンから選択された前記１つ以上のブロックチェーントランザクションに関連づけられた前記データと組み合わせられる、
請求項８に記載のコンピュータにより実現される方法。
【請求項１０】
前記プルーフオブブロックチェーンストレージトランザクションは、
前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数、
前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数、
のうち１つを含む、請求項６乃至９のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１１】
前記プルーフオブブロックチェーンストレージトランザクションは、前記ブロックチェーンネットワーク上の前記１つ以上のストレージノードに関連づけられた１つ以上のブロックチェーンネットワークアドレスを含む、
請求項１乃至１０のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１２】
前記ブロックチェーンネットワーク上の前記１つ以上のストレージノードに関連づけられた前記１つ以上のブロックチェーンネットワークアドレスは、認定されたブロックチェーンネットワークアドレスであり、認定は、秘密鍵シェアスキームを介して達成される、
請求項１１に記載のコンピュータにより実現される方法。
【請求項１３】
前記１つ以上の選択されたブロックチェーントランザクションの識別番号を含むチャレンジプレフィックスを生成するステップ、をさらに含み、前記チャレンジプレフィックス及び前記プルーフオブブロックチェーンストレージトランザクションは、前記ブロックチェーンネットワーク上の前記１つ以上のストレージノードに送信される、
請求項１乃至１２のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１４】
前記チャレンジプレフィックスと、前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数又は前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数とを生成するために、ランダムオラクルが使用される、
請求項１３に記載のコンピュータにより実現される方法。
【請求項１５】
前記チャレンジプレフィックスは、完全性及び認証に対するデジタル署名を添えられ、あるいは、前記チャレンジプレフィックスのメッセージが、非トランザクションフィールドで送信される、
請求項１３又は１４に記載のコンピュータにより実現される方法。
【請求項１６】
前記プルーフオブブロックチェーンストレージトランザクションを受信すると、前記１つ以上のストレージノードは、それらノードに記憶された前記１つ以上の選択されたブロックチェーントランザクションにアクセスし、前記報酬をロック解除するために前記１つ以上の選択されたブロックチェーントランザクションを使用する、
請求項１乃至１５のうちいずれか１項に記載のコンピュータにより実現される方法。
【請求項１７】
前記報酬は、
前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数、
前記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数、
のうち１つを算出することによりロック解除される、請求項１６に記載のコンピュータにより実現される方法。
【請求項１８】
コンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体であって、前記コンピュータ実行可能命令は、実行されたときに、請求項１乃至１７のうちいずれか１項に記載の方法を実行するように１つ以上のプロセッサを構成する、コンピュータ読取可能記憶媒体。
【請求項１９】
インターフェースデバイスと、
前記インターフェースデバイスに結合された１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合されたメモリであり、前記メモリは、コンピュータ実行可能命令を記憶し、前記コンピュータ実行可能命令は、実行されたときに、請求項１乃至１７のうちいずれか１項に記載の方法を実行するように前記１つ以上のプロセッサを構成する、メモリと、
を含む電子デバイス。
【請求項２０】
ブロックチェーンネットワークのノードであって、請求項１乃至１７のうちいずれか１項に記載の方法を実行するように構成される、ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、概して、ブロックチェーンネットワークのノードにおける実装に適したコンピュータにより実現される方法及びシステムに関する。多数のトランザクション及び大きいトランザクションブロックを扱うための修正されたブロックチェーンノード構造、ネットワークアーキテクチャ、及びプロトコルが説明される。本発明は、これに限られないが、ビットコインブロックチェーンで使用するのに特に適する。
【背景技術】
【０００２】
本文献では、用語「ブロックチェーン」を用いて、電子的なコンピュータベースの分散台帳の全ての形態を含める。これらには、ブロックチェーン及びトランザクションチェーン技術、許可あり（permissioned）及び許可なし（un-permissioned）台帳、共有台帳、及びこれらの変形が含まれるが、これらに限られない。ブロックチェーン技術の最も広く知られている適用はビットコイン（登録商標）台帳であるが、他のブロックチェーン実装が提案され、開発されている。本明細書では、簡便さ及び例示の目的でビットコインが参照されることがあるが、本発明はビットコインブロックチェーンでの使用に限定されず、代替的なブロックチェーンの実装及びプロトコルが本発明の範囲内に入ることに留意されたい。
【０００３】
ブロックチェーンは合意に基づく電子台帳であり、これは、ブロックから構成されるコンピュータベースの非中央集権的な分散システムとして実現され、同様に、ブロックはトランザクション及び他の情報から構成される。ビットコインの場合、各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移転を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、それにより、ブロックが一緒にチェーン化されて、ブロックチェーンの開始以降にそれに書き込まれた全てのトランザクションの永続的で改変不可能なレコードを作成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さいプログラムを含み、これは、トランザクションのアウトプットに如何にして及び誰がアクセスできるかを指定する。ビットコインプラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して書かれる。
【０００４】
トランザクションがブロックチェーンに書き込まれるためには、それは「検証され」なければならない。いくつかのネットワークノードが、マイナーとして動作し、作業を実行して各トランザクションが有効であることを保証し、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされたソフトウェアクライアントは、未使用トランザクションアウトプット（unspent  transaction、ＵＴＸＯ）を参照するトランザクションに対してこの検証作業を実行する。検証は、そのロック及びロック解除スクリプトを実行することにより行われてもよい。ロック及びロック解除スクリプトの実行がＴＲＵＥの評価である場合、及び特定の他の条件が満たされる場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれてもよい。ゆえに、トランザクションがブロックチェーンに書き込まれるためには、それは、ｉ）トランザクションを受信したノードにより検証され、トランザクションが検証された場合、ノードはそれをネットワーク内の他のノードに中継する、ｉｉ）マイナーにより構築された新しいブロックに追加される、ｉｉｉ）マイニングされる、すなわち過去のトランザクションの公開台帳に追加される、がなされなければならない。トランザクションは、十分な数のブロックがブロックチェーンに追加されてトランザクションを事実上不可逆にしたとき、確認されたと考えられる。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用に対して最も広く知られているが、デジタル起業家は、新しいシステムを実現するために、ビットコインが基礎とする暗号セキュリティシステムとブロックチェーンに記憶できるデータとの双方の使用を探求し始めている。ブロックチェーンが暗号通貨で表される支払いに純粋に限定されない自動化されたタスク及び処理に使用できる場合、かなり有利であろう。このような解決策は、その適用においてより多目的に使用できると同時に、ブロックチェーンの利点（例えば、イベントの永続的な改ざん防止のレコード、分散処理等）を利用することができる。
【０００６】
研究の１つの分野は、「スマートコントラクト」の実装のためのブロックチェーンの使用である。これらは、マシン読取可能な契約又は同意の条件の履行を自動化するように設計されたコンピュータプログラムである。自然言語で書かれる従来の契約と異なり、スマートコントラクトは、インプットを処理して結果を生成することができるルールを含むマシン実行可能プログラムであり、これは次いで、これら結果に依存してアクションを実行させることができる。
【０００７】
ブロックチェーン関連の関心のある別の領域は、ブロックチェーンを介して実世界のエンティティを表現及び移転するための「トークン」（又は「カラードコイン（coloured  coins）」）の使用である。潜在的に機密又は秘密のアイテムは、認識可能な意味又は値を有さないトークンにより表現できる。ゆえに、トークンは、実世界のアイテムがブロックチェーンから参照されることを可能にする識別子として機能する。
【発明の概要】
【０００８】
ブロックチェーンベースの暗号通貨の健全性を測定するための重要な要素の１つは、ブロックチェーンを実際に記憶しているノードの数である。ブロックチェーンは、秒あたりのトランザクション数に従って成長する。しかし、暗号通貨が普及すると、秒あたりの支払い数は増加し、ブロックチェーンの成長率も増加する。次いで、記憶コストが法外に高くなる。
【０００９】
ゆえに、１つの技術的な問題は、ブロックチェーンネットワークがかなり大きいブロックチェーンを記憶するよう適合されるように、ブロックチェーンネットワークを再構成する方法である。さらなる技術的な問題は、ブロックチェーンネットワーク上のすべてのノードにそのようなかなり大きいブロックチェーンを記憶することを求めずに、これを達成する方法である。また、さらなる技術的な問題は、専門化されたストレージノードが、それらがそのようなかなり大きいブロックチェーンの少なくとも一部分を記憶していることを証明できるように、ブロックチェーンネットワークを再構成する方法である。また、さらなる技術的な問題は、専門化されたストレージノードがそのようなかなり大きいブロックチェーンの少なくとも一部分を記憶するよう動機づけされるように、ブロックチェーンネットワークを再構成する方法である。
【００１０】
本発明の一目的は、本明細書に記載される技術的解決策を提供することにより、これらの技術的問題に対処することである。詳細には、本明細書は、（ｉ）ストレージノードが公開ブロックチェーンを維持することに対して報酬を与えられることを可能にし、（ｉｉ）プルーフオブブロックチェーンストレージ（ＰｏＢＳ）スキームを用いてブロックチェーンの完全性を立証するプロトコルを説明する。このプロトコルは、チャレンジレスポンス方法を使用してリモートのサーバに記憶されたデータファイルが損なわれていないかを暗号でチェックする方法を提供する。このプロトコルは、中間者攻撃に対して安全にされる。悪意のあるピアは、データを記憶している第三者にチャレンジを渡してレスポンスを返すことができない。該スキームは、公に立証可能でもある。
【００１１】
本発明の実施形態は、様々な形式で提供できる。例えば、コンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体を提供でき、該コンピュータ実行可能命令は、実行されたときに、本明細書に記載される方法を実行するように１つ以上のプロセッサを構成する。また、インターフェースデバイスと、インターフェースデバイスに結合された１つ以上のプロセッサと、１つ以上のプロセッサに結合されたメモリであり、該メモリは、コンピュータ実行可能命令を記憶し、該コンピュータ実行可能命令は、実行されたとき、本明細書に記載される方法を実行するように１つ以上のプロセッサを構成する、メモリと、を含む電子デバイスを提供できる。さらに、ブロックチェーンネットワークのノードを提供でき、ノードは、本明細書に記載される方法を実行するように構成される。
【図面の簡単な説明】
【００１２】
本発明のこれら及び他の態様が、本明細書に記載した実施形態から明らかであり、それらを参照して明らかにされるであろう。次に、本発明の一実施形態が、単なる例として、添付の図面を参照して説明される。
【図１】プルーフオブブロックチェーンストレージ（ＰｏＢＳ）プロトコルのステップ１を例示する図を示す。
【図２】プルーフオブブロックチェーンストレージ（ＰｏＢＳ）プロトコルにおけるステップ３を例示する図を示す。
【図３】分布関数ｆ（Ｔ）を釣鐘状曲線の形式で示す。
【図４】プルーフオブブロックチェーンストレージ（ＰｏＢＳ）プロトコルで使用されるトランザクションの一例を示す。
【図５】プルーフオブブロックチェーンストレージ（ＰｏＢＳ）プロトコルにおけるランダムオラクルの使用を示す。
【発明を実施するための形態】
【００１３】
発明の概要セクションに記載されるように、ブロックチェーンは、秒あたりのトランザクション数に従って成長する。しかし、暗号通貨が普及すると、秒あたりの支払い数は増加し、ブロックチェーンの成長率も増加する。次いで、記憶コストが法外に高くなる。
【００１４】
（ｉ）ストレージノードが公開ブロックチェーンを維持することに対して報酬を与えられることを可能にし、（ｉｉ）プルーフオブブロックチェーンストレージ（Proof-of-Blockchain  Storage、ＰｏＢＳ）スキームを用いてブロックチェーンの完全性を立証するプロトコルを我々は説明する。このプロトコルは、チャレンジレスポンス方法を使用してリモートのサーバに記憶されたデータファイルが損なわれていないかを暗号でチェックする方法を提供する。このプロトコルは、中間者攻撃に対して安全にされる。悪意のあるピアは、データを記憶している第三者にチャレンジを渡してレスポンスを返すことができない。該スキームは、公に立証可能でもある。
【００１５】
システムが提供され、（例えば）マイナーにより実行され、これにおいて、（例えば）毎分、各マイナーがブロックチェーンからランダムに取引をサンプリングする（マイナーは必ずしも同期されない）。
【００１６】
ブロックチェーンネットワークのノードのための、コンピュータにより実現される方法が提供され、当該コンピュータにより実現される方法は、
ブロックチェーンから、プルーフオブストレージがチャレンジされる（challenged）べき１つ以上のトランザクションを選択するステップであり、上記選択された１つ以上のトランザクションはトランザクション深さを有する、ステップと、
プルーフオブストレージがチャレンジされるべき上記１つ以上の選択されたブロックチェーントランザクションを示すプルーフオブブロックチェーンストレージトランザクションと、上記１つ以上の選択されたトランザクションを記憶するストレージノードによりロック解除できるプルーフオブブロックチェーンストレージ報酬とを作成するステップと、
上記プルーフオブブロックチェーンストレージトランザクションを上記ブロックチェーンネットワーク上の１つ以上のストレージノードに送信するステップと、
を含む。
【００１７】
本方法は、ブロックチェーンネットワーク上のマイナーがブロックチェーンネットワーク上のストレージノードにチャレンジして、これらがブロックチェーン又はその少なくとも一部を記憶していることを証明できる手段を提供する。
【００１８】
上記１つ以上の選択されたブロックチェーントランザクションは、上記ブロックチェーンにおける上記１つ以上のトランザクションの深さに対応するトランザクション深さｄを有し、上記プルーフオブブロックチェーンストレージ報酬は、上記トランザクション深さｄに従って設定でき、それにより、上記トランザクション深さｄがより大きいほど上記報酬がより大きい。
【００１９】
この特徴は、ストレージノードがブロックチェーンのうちより多くを記憶するよう奨励し、なぜならば、これらは、より深いトランザクションを記憶することに対してより大きい報酬を受けるからである。
【００２０】
上記１つ以上のブロックチェーントランザクションは上記ブロックチェーンからランダムに選択できる。ブロックチェーントランザクションのリストが選択されてもよい。ランダムな選択を導入することは、システムのセキュリティを増大させることに役立つ。セキュリティは、上記１つ以上のトランザクションが上記ブロックチェーン上で複数の確認（confirmations）を受信した１つ以上のブロックから選択されることを保証することにより、さらに向上する。
【００２１】
上記プルーフオブブロックチェーンストレージトランザクションは、上記ブロックチェーン上に記憶されるべき新たにマイニングされたブロックに関連づけられたデータを含むことができる。上記新たにマイニングされたブロックに関連づけられた上記データは、例えば、上記新たにマイニングされたブロックのブロックヘッダデータであり得る。そのようなものとして、マイナーは、それらがストレージノード上への記憶の準備ができた新たにマイニングされたブロックを有するとき、ブロックチェーン上のストレージノードにチャレンジすることができ、チャレンジは、記憶されるべき新たにマイニングされたブロックに関連づけられる。
【００２２】
新たにマイニングされたブロックに関連づけられた上記データは、上記ブロックチェーンから選択された上記１つ以上のブロックチェーントランザクションに関連づけられたデータと組み合わせられ得る。例えば、上記新たにマイニングされたブロックに関連づけられた上記データは、ＸＯＲ演算又は連結により、上記ブロックチェーンから選択された上記１つ以上のブロックチェーントランザクションに関連づけられた上記データと組み合わせられ得る。さらに、上記プルーフオブブロックチェーンストレージトランザクションは、
上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数、
上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数、
のうち１つを含むことができる。
【００２３】
このような特徴は、報酬をロック解除するために１つ以上の選択されたブロックチェーントランザクションを所有するストレージノードにより算出できる暗号関数をセットアップする。
【００２４】
上記プルーフオブブロックチェーンストレージトランザクションは、上記ブロックチェーンネットワーク上の上記１つ以上のストレージノードに関連づけられた１つ以上のブロックチェーンネットワークアドレスをさらに含む。これらのアドレスは、認定されたブロックチェーンネットワークアドレスでもよく、認定は、（後により詳細に説明されるように）システムのセキュリティを増大させるために、秘密鍵シェアスキームを介して達成される。
【００２５】
当該方法は、上記１つ以上の選択されたブロックチェーントランザクションの識別番号を含むチャレンジプレフィックスを生成するステップ、をさらに含むことができ、上記チャレンジプレフィックス及び上記プルーフオブブロックチェーンストレージトランザクションは、上記ブロックチェーンネットワーク上の上記１つ以上のストレージノードに送信できる。チャレンジプレフィックスは、１つ以上のストレージノードにより、そのブロックチェーンのコピーから１つ以上の選択されたブロックチェーントランザクションを識別及び抽出するために使用できる。システムのセキュリティをさらに増大させるために、ランダムオラクルが使用されて、上記チャレンジプレフィックス、及び、上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数と上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数とのうち１つを生成することができる。上記チャレンジプレフィックスは、完全性及び認証に対するデジタル署名を添えられてもよく、あるいは、チャレンジプレフィックスメッセージが、非トランザクションフィールドでストレージノードに送信されてもよい。
【００２６】
上記プルーフオブブロックチェーンストレージトランザクションを受信すると、上記１つ以上のストレージノードは、それらノードに記憶された上記１つ以上の選択されたブロックチェーントランザクションにアクセスし、上記報酬をロック解除するために上記１つ以上の選択されたブロックチェーントランザクションを使用することができる。例えば、前に説明された例に続き、上記報酬は、
上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータの暗号関数、
上記１つ以上の選択されたブロックチェーントランザクションに関連づけられたデータと組み合わせられた新たにマイニングされたブロックに関連づけられたデータの暗号関数、
のうち１つを算出することによりロック解除できる。
【００２７】
コンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体が提供されてもよく、上記コンピュータ実行可能命令は、実行されたときに、本明細書に記載の方法を実行するように１つ以上のプロセッサを構成する。
【００２８】
電子デバイスがさらに提供されてもよく、当該電子デバイスは、
インターフェースデバイスと、
上記インターフェースデバイスに結合された１つ以上のプロセッサと、
上記１つ以上のプロセッサに結合されたメモリであり、上記メモリは、コンピュータ実行可能命令を記憶し、上記コンピュータ実行可能命令は、実行されたときに、本明細書に記載の方法を実行するように上記１つ以上のプロセッサを構成する、メモリと、
を含む。
【００２９】
またさらに、ブロックチェーンネットワークのノードが提供でき、当該ノードは、本明細書に記載の方法を実行するように構成される
【００３０】
次に、プルーフオブブロックチェーンストレージプロトコルの一例が説明される。このセクションでは、我々は、
【数１】
2020528691.tif 000003
と書いて、元ｘが集合Ｘからランダムにサンプリングされることを表す。我々は時に、ｙ:＝Ａ（ｘ）と書いて、インプットｘに対するアルゴリズムＡの実行の決定的結果を表す。文字列連結は縦棒（||）で表される。ＸＯＲ演算はシンボル（
【数２】
2020528691.tif 000004
）で表される。ブロックチェーントランザクションの集合はシンボルＢで表される。
【００３１】
［各マイナーにより実行されるプロトコル］
１．時間τにおいて、ランダムに選ばれたトランザクションの集合がブロックチェーンから選定される（図１）。トランザクションのリストがローカルに記憶される（ＧｅｎＬｉｓｔ機能）。
２．新しいブロックの成功裏のマイニングにおいて、成功したマイナーは多くのチャレンジを作成する（ＧｅｎＣｈａｌ機能）。チャレンジ収益、すなわち＄Ｒ:＝ＧｅｔＲｅｗ（ｄ）が算出され、ｄはトランザクション深さ（transaction  depth）である。
３．マイナーは、プルーフオブストレージ（proof  of  storage）に関連づけられたチャレンジを含むコインベーストランザクションを含む新たにマイニングされたブロックデータをブロードキャストする（図２）。
【００３２】
次に、ＰｏＢＳ構築で使用される機能を我々は定義する。
【００３３】
前処理（PrePROCESSING）：トランザクション深さｄに対して演算するＰｏＢＳ報酬関数Ｒｅｗを設定する。トランザクションＴがブロックチェーン内でより深いほど、ＰｏＢＳ報酬はより高い。
【００３４】
ＧｅｔＲｅｗａｒｄ機能：
Ｒｅｗを報酬関数とする。深さｄを受信すると、
ＧｅｔＲｅｗａｒｄ（ｄ）：
１．Ｒｅｔｕｒｎ  Ｒｅｗ（ｄ）
【００３５】
ＧｅｎＬｉｓｔ機能：
ｎを、必要とされるトランザクションの総数とする。ブロックチェーンＢを調べる（interrogating）と、リストＬが作成される。
ＧｅｎＬｉｓｔ（ｎ）：
【数３】
2020528691.tif 000005
【００３６】
セットアップ（SETUP）：（ｉ）新たにマイニングされたもののブロックヘッダＨｅａｄと、（ｉｉ）確認されたトランザクションのリストＬと、を保持するマイナーＭを所与として、Ｍは、チャレンジＣｈａｌを生成し、該チャレンジは、とりわけ、Ｍが所有の証明（proof  of  possession）を望む特定のトランザクションＴ∈Ｌを示す。トランザクションは、複数の確認を受けたブロックに記録される。
【００３７】
ＧｅｎＣｈａｌ機能：
前に定義されたように、Ｈｅａｄをブロックヘッダとし、Ｌを確認されたトランザクションのリストとし、Ｈを暗号ハッシュ関数とする。ｄをトランザクションの深さ（ブロック又はその後の確認の数）とする。ＧｅｎＣｈａｌ（Ｈｅａｄ，Ｌ）機能は、以下のように定義される。
ＧｅｎＣｈａｌ（Ｈｅａｄ，Ｌ）：
【数４】
2020528691.tif 000006
【００３８】
上記では、分布関数ｆ（Ｔ）の形状を我々は示さなかったことに留意されたい。関数は一様であってもよく、あるいは釣鐘状曲線に従ってもよい（図３参照）。
【００３９】
コインベースＴＸの準備（PREPARE  COINBASE  TX）：Ｍは、コインベーストランザクションを、Ｃｈａｌとストレージノードの受領者ビットコインアドレスとを使用して完了する。例示の目的で、簡素な例が図４に与えられる。
【００４０】
チャレンジ（CHALLENGE）：Ｍは、トランザクション識別番号を含むチャレンジプレフィックスｐｒｅｆ＝Ｔｉｄを生成する。そのメッセージは、（ｉ）完全性及び認証に対するデジタル署名を添えられてもよく、あるいは（ｉｉ）非トランザクションフィールドに、例えば、ＯＰ＿ＲＥＴＵＲＮの後に含まれもよい。Ｍは、ｐｒｅｆ及びｃｈａｌをストレージノードＳに送信する。Ｃｈａｌを受信すると、サーバは、彼／彼女が資金をロック解除することを可能にするＨ（Ｈｅａｄ||Ｔ）を計算する。
【００４１】
上述された手法は、プロトコルにランダムオラクル（random  oracle）を追加することからの恩恵を受けることもできる。ランダムオラクルは、あらゆるクエリに対して、（正直者を表す）ランダムに選ばれたレスポンスで応答するオラクルである。このシナリオでは、マイナーＭは、ブロックヘッダＨｅａｄについてランダムオラクル（ＲＯ）にクエリする。Ｈｅａｄを受信すると、ＲＯは、あらゆるクエリに対して、真にランダムなレスポンスＨ（Ｈｅａｄ||Ｔ）、ｐｒｅｆ＝Ｔｉｄで応答する（図５参照）。
【００４２】
［認定されたビットコインアドレス］
さらに、認定されたビットコインアドレスを使用して、セキュリティの目的でマイナーとストレージノードとの間の共謀を防止することを我々は提案する。この点に関して、非中央集権的なピアツーピアシステムにおける挑戦の１つは、ノードが信頼ベースでネットワーク内の別のノードと通信できることを保証することである。いくつかの実装のネットワークアーキテクチャが進化したとき、いくつかのノードは、より専門化されたタスクを引き受ける可能性があり、他のノードは、（前に記載されたような）特定のデータのソースとして又は特定の機能の実行者としてこれらの専門化されたノードに依存する可能性がある。ノードが、情報のために又は正当なソースとして別のノードに依存しようとする場合、それは、そのノードと通信するために信頼された関係を確立できる必要がある。複数のノードが異なる役割を有する可能性がある場合、ノードの役割を決定及び立証するメカニズムを有することが有利である。さらに、ノードが違法又は悪意があることが判明した場合、他のノードがそれを覚えておき、そのようなノードからの将来の通信を無視することが可能であるべきである。ピアツーピアシステムでは、中央の権限を課すことによりシステムのピアツーピアの性質を妥協することなく、これらの問題を解決することが挑戦である。
【００４３】
ゆえに、自律的な専門化されたノードのグループから要求ノードへのクレデンシャルのセキュアな配布を管理する方法及びデバイスを提供できる。クレデンシャルのセキュアな配布は、秘密シェア（secret  share）と、ノードのいずれも再構築又は所有しないグループ秘密鍵とを使用してもよい。クレデンシャルは、要求ノードの識別子と、秘密点（secret  point）とを含み、ノードは、該秘密点を、複数の専門化されたノードの各々により提供される秘密点の部分から組み立て、秘密点は、グループ秘密鍵と、要求ノードの識別子のマップツーポイント（map-to-point）ハッシュとに基づく。ノードは、いくつかの実装においてブロックチェーンノードであってもよい。
【００４４】
２つのノードが、自律的な専門化されたノードのグループにより認定されているとして、グループを伴うこと又は中央集権的な認定管理者若しくは承認者を伴うことなく互いを認証することができる。この方法は、第１のノード及び第２のノードがそのそれぞれの識別子及び秘密点を伴う双線形ペアリング演算を使用して同じ鍵を導出することを伴ってもよい。秘密点及び識別子がグループ秘密鍵を使用してグループから取得されたという条件で、双線形ペアリング演算は、２つのノードの各々における同じ鍵の生成をもたらし、それにより、そのそれぞれのクレデンシャルを認証し、２つのノード間の信頼された通信を可能にする。
【００４５】
ノードは、専門化されたノードのグループからクレデンシャルを取得することができ、専門化されたノードの各々は、グループ秘密鍵の秘密鍵シェアを有する。この方法は、ノードから複数の専門化されたノードにクレデンシャルの要求を送信することであり、ノードは識別子を有する、ことと、複数の専門化されたノード内の各ノードから、識別子とそのノードの秘密鍵シェアとからそのノードにより生成された秘密点の一部分を受信することと、秘密点の受信部分を組み合わせることにより秘密点を生成することと、を含んでもよく、秘密点は、グループ秘密鍵に識別子のマップツーポイントハッシュを掛けたもの（times）であり、クレデンシャルは、識別子及び秘密点である。専門化されたノード又はノードのいずれも、グループ秘密鍵の完全なコピーを取得するよう求められなくてもよい。
【００４６】
いくつかの実装において、要求を送信することは、複数の専門化されたノードの各々に別個の要求を送信することを含んでもよい。識別子は、ノードを識別する識別子文字列と、専門化されたノードのグループの役割を識別する役割文字列とを含んでもよい。いくつかの場合、識別子は、クレデンシャルの満了時間をさらに含み、いくつかのさらなる場合、要求を送信することは、識別子文字列を送信することを含み、受信することは、識別子を受信することを含む。
【００４７】
いくつかの実装において、秘密点を生成することは、秘密点の受信部分を組み合わせることを含む。組み合わせることは、いくつかの例示的な実装において合計することを含んでもよい。
【００４８】
いくつかの実装において、秘密点は秘密シェアを使用して生成され、グループ秘密鍵に基づく。これらの場合のいくつかにおいて、秘密シェアは、グループ秘密鍵を再構築することなく、ラグランジュ補間と複数の専門化されたノードの秘密鍵シェアとを使用する。
【００４９】
第１のノードが第２のノードとの信頼された通信を確立するために、コンピュータにより実現される方法をさらに提供でき、第２のノードは、第２のノード識別子及び第２の秘密点を有し、第２の秘密点は、グループ秘密鍵に第２のノード識別子のマップツーポイントハッシュを掛けたものであり、グループ秘密鍵は、クレデンシャルを付与するように構成されたノードのグループに関連づけられる。この方法は、ノードのグループから第１の秘密点を取得することであり、第１の秘密点は、グループ秘密鍵に第１のノード識別子のマップツーポイントハッシュを掛けたものである、ことと、第１のノード識別子を第２のノードに送信することと、第２のノード識別子を受信することと、第２のノード識別子のマップツーポイントハッシュを用い及び第１の秘密点を用いて双線形ペアリング演算を使用して第１のセッション鍵を生成することと、第１のセッション鍵が、第２の秘密点を用い及び第１のノード識別子のマップツーポイントハッシュを用いて双線形ペアリング演算を使用して第２のノードにより生成された第２のセッション鍵と一致することを確認することと、を含んでもよい。
【００５０】
いくつかの実装において、第１のセッション鍵を生成する双線形ペアリング演算動作は、式：
ＫＡ＝ｅ（Ｈ１（ｉｄＢ），ｓＡ）、及び
ＫＡ＝ｅ（ｓＢ，Ｈ１（ｉｄＡ））
のうち一方により特徴づけられてもよく、第２のセッション鍵を生成する双線形ペアリング演算は、式のうち他方により特徴づけられ、ｅ（）は、双線形ペアリング演算であり、Ｈ１（）は、マップツーポイントハッシュであり、ｉｄＡ及びｉｄＢは、第１のノード識別子及び第２のノード識別子の各ノード識別子であり、ｓＡ及びｓＢは、第１の秘密点及び第２の秘密点の各秘密点である。
【００５１】
いくつかの実装において、第１の秘密点を取得することは、ノードのグループ内の複数のノードの各々から、第１の秘密点のそれぞれの部分を取得することと、グループ秘密鍵を再構築することなく、それぞれの部分を組み合わせて第１の秘密点を形成することとを含む。
【００５２】
いくつかの実装において、確認することは、第１のノードから第２のノードに、第１のセッション鍵で暗号化されたチャレンジを送信することと、チャレンジに対するレスポンスを受信することと、レスポンスに基づいて、第２のノードが第２のセッション鍵を使用してチャレンジを有効に復号したと決定することと、を含む。
【００５３】
いくつかの実装において、送信することは、第１のノンスを送信することをさらに含み、受信することは、第２のノンス及び算出されたＣ０値を受信することをさらに含み、Ｃ０値は、第２のセッション鍵、第１のノンス、及び第２のノンスの連結のハッシュを含む。これらの場合のいくつかにおいて、連結は、第１のノード識別子及び第２のノード識別子をさらに含む。これらの場合のいくつかにおいて、生成することは、第１のセッション鍵、第１のノンス、及び第２のノンスの連結のハッシュを含む算出されたＣ１値を生成することを含み、確認することは、算出されたＣ０値が算出されたＣ１値に一致することを確認することを含む。
【００５４】
いくつかの実装において、第２の秘密点は、グループ秘密鍵に第２のノード識別子のマップツーポイントハッシュを掛けたものである。
【００５５】
いくつかの実装において、第１の秘密点及び第２の秘密点は各々、秘密シェアリングを使用して第１のノード及び第２のノードにそれぞれ、ノードのグループにより提供される。
【００５６】
例えば、ノードのグループ内の各ノードは、秘密鍵ｋのシェアｋｉを含むことができる。秘密シェアリングが、秘密ｋがｎ人のプレーヤ間で分割される閾値暗号システムで使用され、それにより、少なくともｔ＋１人の参加者が、ｋを再構築するために協働するよう求められる。秘密ｋのうち任意のｔ個の断片についての知識は、後者の秘密ｋを未確定のままにする。
【００５７】
秘密シェアリングは、多項式補間に基づき、秘密は、有限体Ｆの元であると仮定される。このスキームは、ディーラー（ディーラー無しバージョンも存在する）、ｎ人の参加者の集合Ｕ１，・・・，Ｕｎを含む。そのプロトコルでは、任意のランダムな秘密がｔ次多項式ｆ（ｘ）におけるｆ（０）として記憶され、ノードｉのみがそのシェアｆ（ｘｉ）を算出することができる。ｎ個のノードのうちｔ＋１個が協働した場合、それらは、ラグランジュ多項式補間を使用してｆ（ｘ１），ｆ（ｘ２），・・・，ｆ（ｘｎ）に対応する（鍵ｋの）そのシェアｋ１，ｋ２，・・・，ｋｎを用いて、ｆ（ｘ）上のいかなる点も再構築することができる。ラグランジュ多項式補間は、次数ｔを有する関数ｆ（ｘ）がｔ＋１個の点ｐ＝｛（ｘ１，ｆ（ｘ１）），（ｘ２，ｆ（ｘ２）），・・・，（ｘｔ＋１，ｆ（ｘｔ＋１））｝を用いて再構築できることを提供し、
【数５】
2020528691.tif 000007
であり、
【数６】
2020528691.tif 000008
である。ｂｉ,ｐ（ｘｉ）＝１であり、ｂｉ,ｐ（ｘｊ）＝０であることに留意する。この点で、ｂｉは補間係数である。
【００５８】
ディーラー無しシェア分配を伴う一実装において、
１．各ノードｉは、誰もが知るｘｉを割り当てられる。各ｘｉは、一意である必要がある。
２．各ノードｉは、次数ｔを有するランダムな多項式ｆｉ（ｘ）を生成する。
３．各ノードｉは、あらゆる他のノードに、多項式上のそのそれぞれの点ｆｉ（ｘｊ）ｍｏｄ  ｎを秘密に送信する（受領者の公開鍵で暗号化される）。
４．各ノードｉは、すべてのその受信したｆ１（ｘｉ），ｆ２（ｘｉ），・・・ｆｐ（ｘｉ）、すべてのｍｏｄ  ｎ（ｎは、基礎体Ｆｎの特性である（Ｆｎは、ＧＦ（ｎ）、ｚ／ｎｚで表されることもある））を合計して、多項式上のシェアｆ（ｘ）  ｍｏｄ  ｎであるｋｉ＝ｆ（ｘｉ）  ｍｏｄ  ｎを形成する。
【００５９】
ノードのグループのうちのノードが、要求ノードのための秘密点ｓＡを生成するよう協働する。秘密点ｓＡは、巡回群Ｇ１内であり、その重要性は、ハンドシェイク及びペアリングに関する以下の説明から明らかになる。秘密点は、
ｓＡ＝ｋ・Ｈ１（ｉｄＡ）
として識別子に関連し、ｉｄＡは、要求ノード５０４の識別子である。クレデンシャルは、いくつかの実装において（ｉｄＡ，ｓＡ）であると考えられてもよい。Ｈ１は、以下でより詳細に説明されるように、マップツーポイントハッシュ関数である。
【００６０】
グループ秘密鍵ｋを再構築することなく秘密点を生成するために、ノードのグループは、秘密シェア参加（Secret  Share  Joining）の形式を使用して、ｓＡを生成することにおいて協働する。要求ノードは、ノードのグループのうち少なくともｔ＋１個のノードにクレデンシャル要求を送信する。これらのノードは各々、要求ノードにｓＡの一部分を提供する。詳細には、秘密点ｓＡの各シェアｓＡｉがノードｉにより決定され、要求ノードに送信され、次いで、要求ノードは、それらを秘密点ｓＡに組み立てる（すなわち、それらを組み合わせる）。いくつかの例において、シェアｓＡｉは、これらを合計することにより組み合わせられ、秘密点ｓＡを取得する。
【００６１】
次に、クレデンシャルのグループベースの分散生成のための一例示的な処理が説明される。処理は、要求ノードにより実行される。これは、要求ノードがインデックスｉを１に設定することで開始する。次いで、要求ノードは、ノードｉからのクレデンシャルを要求する。ノードｉは、本明細書に記載のクレデンシャル付与手順の実装を実行するように構成されたノードのグループ内の専門化されたノードである。ノードｉは、グループ秘密鍵シェアｋｉの一部分を使用して、秘密点ｓＡのｉ番目の部分を決定する。その部分は、ｓＡｉとして参照されてもよい。
【００６２】
要求ノードはｉ番目のノードから部分ｓＡｉを受信し、すなわち、それは部分的なクレデンシャルを受信する。受信ノードは、インデックスｉがｔ＋１であるかどうかを評価する。そうである場合、受信ノードは、ｔ＋１個の部分的クレデンシャルを受信したが、そうでない場合、それは、秘密点ｓＡを再構築するためにさらなる部分的なクレデンシャルを依然として必要とする。ｉがまだｔ＋１に等しくない場合、それは１だけ増分され、処理は戻って、ノードのグループ内の別のノードからのさらなる部分的なクレデンシャルを要求する。ｉがｔ＋１に等しい場合、動作７１２において、要求ノードは秘密点ｓＡを組み立てる。
【００６３】
ノードのグループ内のノードの協働作業を通してクレデンシャルを取得すると、中央の権限に依存すること又は検証／認証のためにグループに戻ることなく、クレデンシャルをチェック又は検証するメカニズムを有することが有利である。その方法で、同じノードグループからの、有効なクレデンシャルを有すると主張する２つのノードが、発行されたクレデンシャルを協働的に立証及び検証するノードのグループを有することに関連づけられた時間遅延及び通信オーバーヘッドの負担なく、互いのクレデンシャルを検証することができる。
【００６４】
概観として、グループ秘密鍵ｋが有限体のメンバである、すなわちｋ∈Ｚｑであることを考える。クレデンシャルを取得した要求ノードは、該クレデンシャルを、その識別子ｉｄＡと巡回群Ｇ１内の秘密点ｓＡとの形式で有する。この例示的な実施形態において、識別子（又は「仮名（pseudonym）」）ｉｄＡは、（Ａｌｉｃｅ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ）であり、||は、２つの文字列の連結を示し、ｒｏｌｅは、ノードのグループ及び／又はその機能若しくは役割に関連づけられた文字列又は他の英数字識別子である。要求ノードは、その識別子を誰にでも明らかにすることができるが、ｓＡを秘密にする。
【００６５】
別の要求ノードが、（Ｂｏｂ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ）としての識別子ｉｄＢと、秘密点ｓＢとを取得する。
【００６６】
秘密点ｓＡは、ｓＡ＝ｋ・Ｈ１（ｉｄＡ）により与えられ、秘密点ｓＢは、ｓＢ＝ｋ・Ｈ１（ｉｄＢ）により与えられることに留意する。
【００６７】
ＡｌｉｃｅとＢｏｂが互いに信頼された通信を確立したい、すなわち、これらのうち一方又は双方が他方のクレデンシャルを立証したいとき、この２つのノードは、その秘密点を開示することなく、そのそれぞれの識別子／仮名を交換する。
【００６８】
次いで、ノードＡｌｉｃｅが、セッション鍵ＫＡを、
ＫＡ＝ｅ（Ｈ１（Ｂｏｂ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ），ｓＡ）
を計算することにより生成する。ｅ（）は、双線形写像、すなわちペアリング演算であり、ノードＢｏｂは、セッション鍵ＫＢを、
ＫＢ＝ｅ（ｓＢ，Ｈ１（Ａｌｉｃｅ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ））
を計算することにより算出する。
【００６９】
演算Ｈ１（）は、以下でさらに説明されるように、マップツーポイント関数である。ペアリングの特性に起因して、２つの鍵は同じであり、すなわちＫＡ＝ＫＢである。チャレンジ値を送信し、それのレスポンスを得ることにより、２つのノードは、プロトコルが成功したこと、すなわち、２つのノードが各々、同じ役割を示す同じノードグループにより発行されたクレデンシャルを保持していることを立証することができる。あるいは、一方の当事者が、他方に何らかのコンテンツを送信することができ、これは、ハンドシェイクが成功した場合、及びその場合に限り、成功裏に復号される。
【００７０】
この例におけるペアリング演算は、ｓＡ及びｓＢがこの場合には同じ巡回群Ｇ１からであることに依存する。他の場合に、この２つは、別のアーベル群内の値を
ｅ：Ｇ１×Ｇ２→ＧＴ
としてとる２つのアーベル群として関連する、異なる巡回群Ｇ１及びＧ２からであってもよく、Ｇ１、Ｇ２、及びＧＴは、同じ位数の巡回群である。
【００７１】
公開であるクレデンシャルの生成において特定のパラメータが存在する。これらは、処理において任意のノードにより生成され、他のノードと共有されてもよい。Ｅが、体Ｆｑ上のｎ個の点を含む楕円曲線であるという仮定から開始し、ｑが、２及び３に対し相対的に素な素数のべきである場合、公開パラメータは、以下：
ｐａｒａｍｓ＝（ｐ，Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｅ，Ｈ１，Ｈ２）
を含んでもよく、ｇ１（ｒｅｓｐ．ｇ２）は、双線形写像ｅ（．，．）を有する素数位数ｐの群Ｇ１（ｒｅｓｐ．Ｇ２）の生成元である。Ｇ１は、互いに素なｒ、ｑを有する位数ｒのＥ（Ｆｑ）の巡回部分群である。そして、ｅ（ｇ１，ｇ２）は、位数ｐを同様に有するＧＴを生成する。Ｈ１及びＨ２は、それぞれ、Ｇ１及びＧ２に関するマップツーポイントハッシュである。上述したように、いくつかの実装において、及び本明細書に記載した例の多くにおいて、Ｇ１のみが使用されてもよく、これは、同じマップツーポイントハッシュ関数Ｈ１が秘密点ｓＡ及びｓＢの双方に使用されることを意味する。
【００７２】
いくつかの楕円曲線暗号システムにおいて、ハッシュアルゴリズムは、有限体の元であるパスワード又は他の文字列を、所与の楕円曲線の点に写像するために使用される。これらは、マップツーポイントハッシュである。より正確には、マップツーポイントハッシュ関数Ｈ１は、インプットにメッセージをとって点Ｐ∈Ｅ（Ｋ）を返す変換である。より詳細には、Ｈ１は、点Ｐ∈Ｅ（Ｋ）［ｒ］を返し、Ｅ（Ｋ）［ｒ］は、Ｇ１により生成されたＥ（Ｋ）の部分群である。このスキームにおいて、基礎体Ｆｑから曲線への１対１の写像が存在する。これは、ｆ（Ｈ（ｍ））を使用してハッシュすることを可能にし、Ｈは、古典的なハッシュ関数であり、Ｈ（ｍ）∈Ｆｑである。
【００７３】
次に、互いのクレデンシャルを検証することにより信頼された通信チャネルを確立する際の、２つのノードＡ及びＢ間のメッセージフローが説明される。この例示的な実装において、ノードＡは、その識別子ｉｄＡをノードＢに提供する。識別子ｉｄＡは公に利用可能であり、いくつかの場合には別のソースからノードＢにより取得されてもよい。これから、ノードＢは、ノードＡの識別子と、ノードＢにより保持される秘密点ｓＢと、クレデンシャルを発行したノードのグループにより規定されるマップツーポイントハッシュ関数Ｈ１とを使用して、セッション鍵ＫＢを生成することができる。セッション鍵ＫＢは、ノードのグループにより同様に規定されるペアリング演算ｅ（）、すなわち、
ＫＢ＝ｅ（ｓＢ，Ｈ１（Ａｌｉｃｅ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ））
を使用して生成され、この例において、ノードＢの識別子ｉｄＢは、（Ａｌｉｃｅ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ）である。
【００７４】
ノードＢは、その識別子ｉｄＢをノードＡを提供し、次いで、ノードＡは、ノードＢの識別子、その秘密点ｓＡ、並びに同じペアリング演算及びマップツーハッシュ関数、すなわち、
ＫＡ＝ｅ（Ｈ１（Ｂｏｂ||ｒｏｌｅ||ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ），ｓＡ）
を使用して、セッション鍵ＫＡを同様に生成することができる。
【００７５】
秘密点が、同じグループ秘密鍵ｋとそれぞれのノードＡ及びＢの識別子とを使用してノードのグループにより適法に協働的に生成された場合、ペアリング演算は、ＫＡ＝ＫＢの結果をもたらすはずである。これは、任意数の方法でテストしてもよい。この例示的な実装において、ノードＡは、セッション鍵ＫＡで暗号化されたチャレンジをノードＢに送信する。ノードＢは、そのセッション鍵ＫＢを使用してチャレンジを復号しようとし、チャレンジに対するレスポンスを送信する。レスポンスは、セッション鍵ＫＢにより暗号化されてもよい。これに基づいて、双方のノードは、これらが同じセッション鍵を有することを確かめることができる。そのセッション鍵は、２つのノード間の通信を暗号化するために使用されてもよい。別の実装において、セッション鍵は、別の鍵のセットアップにつながる通信を暗号化するために使用されてもよい。さらに別の実装において、２つのノード間の通信は、上述の手順に単に依存して互いのクレデンシャルを検証／認証し、２つのノード間の通信は、暗号化されないか、あるいはノードの通常の公開・秘密鍵ペアを使用して暗号化される。
【００７６】
次に、別の例示的な実装が説明される。この例では、ノードＡは、ランダムノンスｎｏｎｃｅＡを生成することで開始する。それは、その識別子ｉｄＡ及びそのノンスをノードＢに送信する。ノードＢは、その独自のノンスｎｏｎｃｅＢを生成する。ノードＢは、次いで、この例では、ペアリング演算の結果とノンスを含む他のデータとのハッシュである値Ｃ０を生成する。この例では、値Ｃ０は、
Ｃ０＝Ｈ（ｅ（ｓＢ，Ｈ１（ｉｄＡ））||ｉｄＡ||ｉｄＢ||ｎｏｎｃｅＡ||ｎｏｎｃｅＢ）
により与えられてもよく、Ｈは、文字列から文字列への衝突耐性ハッシュ関数である。一例において、Ｈは、ＳＨＡ‐２５６である。
【００７７】
ノードＢは、次いで、ノードＡにリプライし、その識別子ｉｄＢ、そのノンスｎｏｎｃｅＢ、及び値Ｃ０を提供する。ノードＡは、次いで、同様の算出を実行して値Ｃ１を取得する。値Ｃ１は、この例では、
Ｃ１＝Ｈ（ｅ（Ｈ１（ｉｄＢ），ｓＡ）||ｉｄＡ||ｉｄＢ||ｎｏｎｃｅＡ||ｎｏｎｃｅＢ）
として表される。
【００７８】
Ｃ０に対するＣ１の式内の引数における唯一の差は、ペアリング演算であることに留意されたい。したがって、双線形ペアリング演算が、ノードＡ及びノードＢのクレデンシャルが同じノードグループから取得されたことを確認した場合、２つの値は一致するはずである。ノードＡは、それらが一致することを立証することができ、そうである場合、Ｃ１をノードＢに送信し、ノードＢもまた、それらが一致することを立証する。一実装において、値Ｃ０＝Ｃ１は、次いで、ノードＡ及びノードＢの間の通信を暗号化するためのセッション鍵として使用される。いくつかの実装において、ノードは、通常の公開鍵・秘密鍵のペアに単に依存して通信を暗号化し、上述の動作は、認証のためのものであり、セッション鍵を確立するためのものではない。
【００７９】
いくつかの例示的な実装において、値Ｃ０及びＣ１を形成するために連結及びハッシュされるデータ又は文字列は、他のデータ又は文字列を含んでもよく、あるいは上記の例示的な文字列のうちいくつかを除外してもよい。例えば、一実装において、値Ｃ０とＣ１は、識別子ｉｄＡ及びｉｄＢの連結を含まなくてもよい。しかしながら、ハッシュ及びノンスが中間者攻撃から通信を保護するのに役立つことは理解されるであろう。
【００８０】
上述の実施形態は、発明を限定するのでなく例示しており、当業者は、別記の特許請求の範囲により定義される発明の範囲から逸脱することなく多くの代替的な実施形態を設計可能であることに留意されたい。例えば、トランザクションはビットコインを移転し得るが、ユーザは本明細書に記載される方法及びシステムを使用して情報、コントラクト、及びトークンなどの他のリソースを代わりに交換してもよいことが理解されるべきである。トークンは、トークンに関連づけられたスマートコントラクトに従った資産又はリソースを表し、それにより、トークンの制御は資産又はリソースの制御を与える。スマートコントラクト自体はブロックチェーン外に記憶されてもよく、あるいは、それは１つ以上のトランザクション内部に記憶されてもよい。
【００８１】
特許請求の範囲においては、括弧内に付されたいかなる参照符号も、特許請求の範囲を限定するものと解釈されてはならない。用語「含んでいる」及び「含む」などは、任意の請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外しない。本明細書において、「含む」は、「含める、又は、からなる」ことを意味し、「含んでいる」は、「含めている、又は、からなっている」ことを意味する。要素の単数の参照は、そのような要素の複数の参照を除外するものではなく、その逆もまた同様である。発明は、いくつかの区別可能な要素を含むハードウェアを用いて、及び適切にプログラムされたコンピュータを用いて実現されてもよい。いくつかの手段を列挙するデバイスクレームにおいては、これらの手段のうちいくつかは、１つ及び同じアイテムのハードウェアにより具現化されてもよい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが利するように使用できないことを示すものではない。
【図１】
2020528691.tif 000009
【図２】
2020528691.tif 000010
【図３】
2020528691.tif 000011
【図４】
2020528691.tif 000012
【図５】
2020528691.tif 000013
【国際調査報告】
2020528691.tif 000014
2020528691.tif 000015
2020528691.tif 000016