(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワーク内の第1のノードと第2のノードとの間のトランザクションの有効性を確認するためのコンセンサスノードによって行われるコンピュータ実施方法であって、前記方法は、
前記トランザクションに関連付けられたトランザクションデータを受信するステップであって、前記トランザクションデータは、複数のアセットを表すデータ、前記トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と前記複数のアセットの総額から前記トランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、線形決定論的準同型暗号化(HE)スキームに基づいて前記第2のノードの公開鍵によって双方が暗号化されている前記トランザクション金額および第3の乱数、前記線形決定論的HEスキームに基づいて前記第1のノードの公開鍵によって双方が暗号化されている前記残金および第4の乱数、1つまたは複数の範囲証明、ゼロ知識証明(ZKP)、ならびに前記第1のノードの前記公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む、ステップと、
前記第1のノードの前記公開鍵に基づいて前記電子署名を検証するステップと、
前記トランザクション金額と前記残金との各々がゼロより大きいまたはゼロと等しいことを前記1つまたは複数の範囲証明が証明していると決定するステップと、
前記複数のアセットの前記総額が前記トランザクション金額と前記残金との合計と等しいと決定するステップと、
前記第1の乱数が前記第3の乱数と等しく、前記第2の乱数が前記第4の乱数と等しく、前記第1のコミットメントにおいて秘匿化されている前記トランザクション金額が前記第2のノードの前記公開鍵によって暗号化された前記トランザクション金額と等しいと決定することによって、前記ZKPに基づいて、前記トランザクションが有効であると決定するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記トランザクションは、前記第1のノードに関連付けられたアカウントと前記第2のノードに関連付けられたアカウントとの間で行われ、前記方法は、前記トランザクションが有効であると決定した後に、前記トランザクション金額と前記残金とに基づいて、前記第1のノードに関連付けられた前記アカウントと前記第2のノードに関連付けられた前記アカウントとを更新するステップをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項３】
前記複数のアセットの各々は、アセットタイプ、コミットメントにおいて秘匿化されているアセット額面、および前記コミットメントを生成するために使用された乱数のうちの1つまたは複数に関連付けられる、請求項1に記載のコンピュータ実施方法。
【請求項４】
前記複数のアセットの各々が同一のアセットタイプに関連付けられていると決定するステップをさらに含む、請求項3に記載のコンピュータ実施方法。
【請求項５】
前記第1のコミットメント、前記第2のコミットメント、および前記アセット額面を秘匿化している前記コミットメントは、準同型であるコミットメントスキームに基づいて生成され、前記複数のアセットの前記総額が前記トランザクション金額と前記残金との前記合計と等しいと決定するステップは、前記コミットメントスキームの準同型に基づいて行われる、請求項3に記載のコンピュータ実施方法。
【請求項６】
前記線形決定論的HEスキームは、確率的HEスキームに関連付けられた乱数を固定数に変更することに基づいて前記確率的HEスキームから導出される、請求項1に記載のコンピュータ実施方法。
【請求項７】
前記ZKPは、第5の乱数と第6の乱数とを秘匿化しているコミットメントを含み、前記第5の乱数と前記第6の乱数との暗号文は、前記線形決定論的HEスキームに基づいて、前記第2のノードの前記公開鍵によって暗号化され、前記第5の乱数と前記第6の乱数との暗号文は、前記線形決定論的HEスキームに基づいて、前記第1のノードの前記公開鍵によって暗号化される、請求項1に記載のコンピュータ実施方法。
【請求項８】
前記ZKPは、前記トランザクションが前記線形決定論的HEスキームの特性に基づいて有効であると決定するために生成および使用される、請求項1に記載のコンピュータ実施方法。
【請求項９】
前記トランザクションが有効であると決定するステップは、前記ブロックチェーンネットワークの外部を経由し、前記第1のノードと前記第2のノードとの間のインタラクションを用いることなく、前記ZKPに基づいて行われる、請求項1に記載のコンピュータ実施方法。
【請求項１０】
1つまたは複数のコンピュータに結合されているとともに、請求項1から9のうちの1つまたは複数に記載の方法による動作を行うように、前記1つまたは複数のコンピュータによって実行可能な命令で構成される、非一時的コンピュータ可読記憶媒体。
【請求項１１】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合されているとともに、請求項1から9のうちの1つまたは複数に記載の方法による動作を行うように、前記1つまたは複数のコンピュータによって実行可能な命令で構成される、1つまたは複数のコンピュータ可読メモリと
を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
汎用アカウントモデルおよび準同型暗号化に基づいたブロックチェーンデータ保護にかんする。
【背景技術】
【０００２】
ブロックチェーンシステム、コンセンサスネットワーク、分散型台帳システムネットワーク、またはブロックチェーンとも称され得る、ブロックチェーンネットワークは、関与エンティティが安全かつ変更不可能な形でデータを記憶することを可能にする。ブロックチェーンはトランザクションの台帳として説明することができ、ブロックチェーンの複数のコピーがブロックチェーンネットワークにわたって記憶される。例示的なタイプのブロックチェーンは、パブリックブロックチェーン、コンソーシアムブロックチェーン、およびプライベートブロックチェーンを含み得る。パブリックブロックチェーンは、ブロックチェーンを使用し、コンセンサスプロセスに関与するように、すべてのエンティティに対してオープンとなっている。コンソーシアムブロックチェーンは、コンセンサスプロセスがある組織または機関などの事前に選択されたノードのセットによって制御されるブロックチェーンである。プライベートブロックチェーンは、読込みパーミッションおよび書込みパーミッションを中央集権的に制御する特定のエンティティに対して提供されるものである。
【０００３】
ブロックチェーンは、様々なレコードキーピングモデルを使用してユーザ間のトランザクションを記録することを可能にしている。例示的なレコードキーピングモデルは、未使用トランザクションアウトプット(UTXO)モデルとアカウント残高モデルとを含む。UTXOモデルにおいては、各トランザクションは、以前のトランザクションからのアウトプットを使用し、以後のトランザクションにおいて使用され得る新たなアウトプットを生成する。ユーザの未使用トランザクションはトラッキングされ、支出するのに利用可能な残高は未使用トランザクションの合計として算出される。アカウント残高モデルにおいては、各ユーザのアカウント残高は大域状態としてトラッキングされる。各トランザクションについては、支出アカウントの残高をチェックして、それがトランザクション金額より大きいまたはトランザクション金額と等しいことを確認する。このことは、従来の銀行業務と類似している。
【０００４】
ブロックチェーンは、その各々がネットワークにおいて実行される1つまたは複数のトランザクションを含む一連のブロックを含む。各ブロックは台帳のページに相当し得る一方で、ブロックチェーンそのものは台帳と完全に瓜二つである。個々のトランザクションが確認されるとともにブロックに追加され、ブロックはブロックチェーンに追加される。ブロックチェーンのコピーがネットワークのノードにわたって複製される。このように、ブロックチェーンの状態に対してグローバルコンセンサスが存在している。さらに、ブロックチェーンは、少なくともパブリックネットワークのケースにおいては、確かめられるようにすべてのノードに対してオープンとなっている。ブロックチェーンユーザのプライバシーを保護するために、暗号化技術が施されている。
【０００５】
アカウント残高モデルの下では、コミットメントスキームは、トランザクションの関係者の双方がコミットする秘匿化された値に対して使用され得る。コミットメントスキームは、選択肢または値をコミットするという関係者にとっての必要性から生じており、その値を関与している他の関係者に後ほど通信し得る。例えば、インタラクティブPedersenコミットメント(PC)スキームにおいては、第1のユーザは、乱数値rに基づいて生成されたコミットメント値PC(t, r)を送信することによってトランザクション金額tをコミットし得る。コミットメント値が生成されると、第2のユーザのみが、乱数rを取得することによってトランザクション金額tを明らかにすることができる。トランザクション金額が有効であることを保証するために、範囲証明が、トランザクション金額がゼロ以上かつアカウント残高以下であることを証明するべく生成される。
【０００６】
いくつかのケースにおいては、複数のトランザクションがユーザからなされ得る。範囲証明がアカウントの残りの残高と関連付けられているため、複数のトランザクションはブロックチェーンにおいてシーケンシャルに検証される必要がある。そのため、対応する範囲証明は、各トランザクション後のアカウントの残りの残高と正確に関連付けられ得る。しかしながら、シーケンシャルに複数のトランザクションを検証することは多大な時間を必要とし得る。特に時間的制約のあるタスクにとって、トランザクションのパラレル検証を可能とするレコードキーピングモデルが有利なものとなり得る。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書の実施形態は、ブロックチェーントランザクションの非インタラクティブプライバシー保護型検証のためのコンピュータ実施方法を含む。より詳細には、本明細書の実施形態は、コミットメントを生成するために、トランザクション金額、アカウント残高、または乱数などのプライバシー情報を、他のブロックチェーンノードに公開することなく、コミットメントスキームおよび準同型暗号化に基づいて、パラレルにブロックチェーンノードのアカウントに関連付けられた複数のトランザクションの有効性を確認することを可能とするコンピュータ実施方法を目的としている。
【０００８】
いくつかの実施形態においては、アクションは、トランザクションに関連付けられたトランザクションデータを受信するステップであって、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、線形決定論的暗号化(HE)スキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、線形決定論的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ゼロ知識証明(ZKP)、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む、ステップと、第1のノードの公開鍵に基づいて電子署名を検証するステップと、トランザクション金額と残金との各々がゼロより大きいまたはゼロと等しいことを1つまたは複数の範囲証明が証明していると決定するステップと、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップと、第1の乱数が第3の乱数と等しく、第2の乱数が第4の乱数と等しく、第1のコミットメントにおいて秘匿化されているトランザクション金額が第2のノードの公開鍵によって暗号化されたトランザクション金額と等しいと決定することによって、ZKPに基づいて、トランザクションが有効であると決定するステップとを含む。他の実施形態は、対応する、システムと、装置と、コンピュータストレージデバイス上に符号化された、方法のアクションを行うように構成される、コンピュータプログラムとを含む。
【０００９】
これらおよび他の実施形態の各々は、次の特徴のうちの1つまたは複数を必要に応じて含み得る。トランザクションは、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとの間で行われ、方法は、トランザクションが有効であると決定した後に、トランザクション金額と残金とに基づいて、第1のノードのアカウントと第2のノードのアカウントとを更新するステップであって、複数のアセットの各々は、アセットタイプ、コミットメントにおいて秘匿化されているアセット額面、およびコミットメントを生成するために使用された乱数のうちの1つまたは複数に関連付けられる、ステップと、複数のアセットの各々が同一のアセットタイプに関連付けられていると決定するステップとをさらに含み、第1のコミットメント、第2のコミットメント、およびアセット額面を秘匿化しているコミットメントは、準同型であるコミットメントスキームに基づいて生成され、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップは、コミットメントスキームの準同型に基づいて行われ、線形決定論的HEスキームは、確率的HEスキームに関連付けられた乱数を固定数に変更することに基づいて確率的HEスキームから導出され、ZKPは、第5の乱数と第6の乱数とを秘匿化しているコミットメントを含み、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第2のアカウントの公開鍵によって暗号化され、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第1のアカウントの公開鍵によって暗号化され、ZKPは、トランザクションが線形決定論的HEの特性に基づいて有効であると決定するために生成および使用され、トランザクションが有効であると決定するステップは、ブロックチェーンネットワークの外部を経由し、第1のノードと第2のノードとの間のインタラクションを用いることなく、ZKPに基づいて行われる。
【００１０】
本明細書はまた、1つまたは複数のプロセッサに結合されているとともに命令を記憶している1つまたは複数の非一時的コンピュータ可読記憶媒体を提供しており、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供した方法の実施形態に従った動作を行わせる。
【００１１】
本明細書は、本明細書で提供した方法を実施するためのシステムをさらに提供している。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合されるとともに命令を記憶しているコンピュータ可読記憶媒体であって、1つまたは複数のプロセッサによって実行されると、命令は、1つまたは複数のプロセッサに、本明細書で提供した方法の実施形態による動作を行わせる、コンピュータ可読記憶媒体とを含む。
【００１２】
本明細書において説明した発明特定事項の実施形態は、特定の利点または技術的効果を実現するために実施され得る。例えば、本明細書の実施形態は、ブロックチェーンノードのアカウント残高およびトランザクション金額がトランザクションの間は非公開となるようにすることを可能にする。資金移動の受領側は、トランザクションを確認することまたは乱数を使用してコミットメントを検証することをする必要がないため、トランザクションの有効性確認は、非インタラクティブであり得る。ブロックチェーンノードは、HEおよびコミットメントスキームに基づいてトランザクションの有効性を確認してゼロ知識証明を可能にし得る。
【００１３】
説明した方法論は、様々なモバイルコンピューティングデバイスのアカウント/データセキュリティの向上を可能にしている。アカウントの残高およびランザクション金額は、HEに基づいて暗号化され、コミットメントスキームによって秘匿化され得る。そのため、コンセンサスノードは、アカウントの実際のアカウント残高を公開することなく、HEの特性に基づいてトランザクション後に台帳においてアカウント残高を更新することができる。トランザクションを確認するために受領側に乱数を送信する必要がないため、データ漏洩のリスクを低減することができ、乱数を管理するために使用するために必要なコンピューティングリソースおよびメモリリソースをより少なくしている。
【００１４】
本明細書による方法が本明細書に記載の態様と特徴との任意の組合せを含み得ることは諒解されよう。すなわち、本明細書による方法は、特に本明細書に記載の態様と特徴との組合せに限定されるわけではなく、提供した態様と特徴との任意の組合せも含む。
【００１５】
本明細書の1つまたは複数の実施形態の詳細を添付の図面および以下の説明に記載している。本明細書の他の特徴および利点が、説明および図面から、および特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】本明細書の実施形態を実行するために使用され得る環境の例を示す図である。
【図２】本明細書の実施形態による、概念的機構の例を示す図である。
【図３】準同型暗号化に基づいたブロックチェーントランザクションのプライバシー保護された有効性確認のプロセスの例を示す図である。
【図４】本明細書の実施形態による、ブロックチェーントランザクションの例を示す図である。
【図５】準同型暗号化に基づいたブロックチェーントランザクションのプライバシー保護された有効性確認のプロセスの別の例を示す図である。
【図６】本明細書の実施形態により行われ得る方法の例を示す図である。
【図７】本明細書の実施形態により行われ得る方法の別の例を示す図である。
【図８】本明細書の実施形態によるプロセスを行い得るブロックチェーンノードの例を示す図である。
【発明を実施するための形態】
【００１７】
様々な図面における類似の参照記号は類似の要素を示す。
【００１８】
本明細書の実施形態は、ブロックチェーントランザクションの非インタラクティブプライバシー保護型検証のためのコンピュータ実施方法を含む。より詳細には、本明細書の実施形態は、コミットメントを生成するために、トランザクション金額、アカウント残高、または乱数などのプライバシー情報を、他のブロックチェーンノードに公開することなく、コミットメントスキームおよび準同型暗号化に基づいて、パラレルにブロックチェーンノードのアカウントに関連付けられた複数のトランザクションの有効性を確認することを可能とするコンピュータ実施方法を目的としている。いくつかの実施形態においては、アクションは、トランザクションに関連付けられたトランザクションデータを受信するステップであって、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、線形決定論的準同型暗号化(HE)スキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、線形決定論的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ゼロ知識証明(ZKP)、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む、ステップと、第1のノードの公開鍵に基づいて電子署名を検証するステップと、トランザクション金額と残金との各々がゼロより大きいまたはゼロと等しいことを1つまたは複数の範囲証明が証明していると決定するステップと、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップと、第1の乱数が第3の乱数と等しく、第2の乱数が第4の乱数と等しく、第1のコミットメントにおいて秘匿化されているトランザクション金額が第2のノードの公開鍵によって暗号化されたトランザクション金額と等しいと決定することによって、ZKPに基づいて、トランザクションが有効であると決定するステップとを含む。他の実施形態は、対応する、システムと、装置と、コンピュータストレージデバイス上に符号化された、方法のアクションを行うように構成される、コンピュータプログラムとを含む。
【００１９】
本明細書の実施形態についてのさらなる状況をあげるとすれば、上述したように、コンセンサスネットワーク(例えば、ピア・ツー・ピアノードで構成される)およびブロックチェーンネットワークとも称することができる分散型台帳システム(DLS)は、関与エンティティが安全かつ変更不可能な形でトランザクションを実施しデータを記憶することを可能にする。ブロックチェーンは、任意の特定のユースケースを指すわけではなくDLSを一般的に指すために本明細書では使用している。
【００２０】
ブロックチェーンは、トランザクションが変更不可能となる方法でトランザクションを記憶するデータ構造であり、後ほど検証することができる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号ハッシュを含めることによって、チェーン内のその直前にある前のブロックに連結される。各ブロックはまた、タイムスタンプ、それ自身の暗号ハッシュ、および1つまたは複数のトランザクションを含む。ブロックチェーンネットワークのノードによって既に検証されているトランザクションは、ハッシュ化され、Merkleツリーに符号化される。Merkleツリーは、ツリーのリーフノードにおけるデータがハッシュ化され、ツリーの各ブランチにおけるすべてのハッシュがブランチのルートにおいて連結されるデータ構造である。このプロセスは、ツリー全体のルートまでツリーの上方へと進行し続け、ツリー全体のルートは、ツリー内のすべてのデータを表すハッシュを記憶している。ツリーに記憶されているトランザクションであることを意味するハッシュは、それがツリーの構造と一致しているかどうかを決定することによって素早く検証され得る。
【００２１】
ブロックチェーンが、トランザクションを記憶するためのデータ構造であるのに対して、ブロックチェーンネットワークは、1つまたは複数のブロックチェーンを管理、更新、および維持するコンピューティングノードのネットワークである。上述したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。
【００２２】
パブリックブロックチェーンにおいては、コンセンサスプロセスは、コンセンサスネットワークのノードによって制御される。例えば、数百、数千、さらには数百万のエンティティは、その各々がパブリックブロックチェーン内の少なくとも1つのノードを管理するパブリックブロックチェーンに関与し得る。それゆえ、パブリックブロックチェーンを、関与エンティティに対するパブリックネットワークとみなすことができる。いくつかの例においては、大部分のエンティティ(ノード)は、ブロックを有効にしてブロックチェーンに追加するために、ブロックごとに署名する必要がある。例示的なパブリックブロックチェーンネットワークは、ブロックチェーンと称する分散型台帳を活用する特定のピア・ツー・ピア支払ネットワークを含む。しかしながら、上述したように、ブロックチェーンという用語は、任意の特定のブロックチェーンネットワークを特に指すわけではなく分散型台帳を一般的に指すために使用される。
【００２３】
一般に、パブリックブロックチェーンは、パブリックトランザクションをサポートする。パブリックトランザクションは、ブロックチェーン内のノードのすべてに共有され、ブロックチェーンは、すべてのノードにわたって複製される。すなわち、すべてのノードは、ブロックチェーンに関するコンセンサスの完全状態にある。コンセンサス(例えば、ブロックチェーンへのブロックの追加に対する合意)を得るために、コンセンサスプロトコルがブロックチェーンネットワークにおいて実施される。例示的なコンセンサスプロトコルは、プルーフ・オブ・ワーク(POW)、プルーフ・オブ・ステーク(POS)、およびプルーフ・オブ・オーソリティ(POA)を含むがこれらに限定されない。非限定的な例として、POWをここではさらに参照する。
【００２４】
本明細書の実施形態は、ブロックチェーントランザクションの非インタラクティブプライバシー保護型検証のためのコンピュータ実施方法を含む。より詳細には、本明細書の実施形態は、コミットメントを生成するために、トランザクション金額、アカウント残高、または乱数などのプライバシー情報を、他のブロックチェーンノードに公開することなく、コミットメントスキームおよび準同型暗号化に基づいて、パラレルにブロックチェーンノードのアカウントに関連付けられた複数のトランザクションの有効性を確認することを可能とするコンピュータ実施方法を目的としている。
【００２５】
本明細書の実施形態によれば、ブロックチェーンノードは、レコードキーピング方法としてパラレルトランザクション検証をサポートし得る汎用アカウントモデルを使用し得る。アカウント残高モデルと比較して、汎用アカウントモデルを採用しているブロックチェーンノードは、アカウント残高の代わりに複数のアセットのレコードを管理し得る。複数のアセットの各々は、アセットタイプ、アセットID、またはアセット額面のうちの少なくとも1つに関連付けられ得る。汎用アカウントモデルの下でのアセットは、貨幣資産または固定資産などの任意の形式またはタイプであり得る。貨幣資産は、実際の通貨または暗号通貨を含み得る。いくつかの実施形態においては、固定資産は、貨幣金額に関連付けられた貨幣資産に変換され得る。その後、貨幣金額は、ブロックチェーンネットワークのアカウント間でトランザクションを行うために使用され得る。例示を目的として、本明細書の実施形態において説明したアセットが、同一のタイプの通貨に変換され、汎用アカウントモデルの下でのブロックチェーンアカウントに保存されると仮定する。
【００２６】
データプライバシーを保護するために、ブロックチェーンユーザアカウントに関連付けられたトランザクション金額または貨幣金額情報を公開することなく、コミットメントに基づいてトランザクションをブロックチェーン(台帳)に記録することができる。コミットメントスキームは、乱数を使用してトランザクション金額のコミットメントを生成するために使用され得る。例示的なコミットメントスキームは、PCスキームを含むがこれに限定されない。トランザクション金額がコミットメントにおいて秘匿化されているため、1つまたは複数の範囲証明は、トランザクション金額がブロックチェーンユーザアカウントの額面を超過していないことを証明するために使用される。
【００２７】
アカウント残高モデルの下では、範囲証明は、アカウント残高に関連付けられる。2つ以上のトランザクションがなされたもののトランザクションのすべてがブロックチェーンにおいて有効性が確認されるとともに記録されているわけではない場合には、範囲証明は、不正確なアカウント残高に関連付けられることになり得る、したがって、無効となり得る。対して、汎用アカウントモデルの下では、アカウントの額面は、複数のアセットの合計として算出され得る。トランザクション金額がブロックチェーンユーザアカウント間で送金されることになる場合には、トランザクション金額より大きいまたはトランザクション金額と等しい総計額を有する複数のアセットの少なくとも一部が、トランザクション金額を負担するために使用され得る。さらなる送金は、残りのアセットが送金されることになる金額より大きい総計額を有しているという条件の下でなされ得る。そのトランザクションがブロックチェーンにおいて有効性が確認されるとともに記録されているわけではない場合でさえも、残りのアセットの総計額がトランザクション金額より大きいまたはトランザクション金額と等しいことを示す範囲証明は、まだ有効であり得る。したがって、2つ以上のトランザクション検証が、汎用アカウントモデルの下ではパラレルに行われ得る。
【００２８】
本明細書の実施形態によれば、ブロックチェーントランザクションは、トランザクションアカウント残高、トランザクション金額、またはコミットメントを生成するために使用された乱数を公開することなく、コミットメントに基づいて、ブロックチェーン(台帳)に対して有効性が確認されるとともに記録され得る。PCスキームなどのコミットメントスキームが、乱数に基づいてトランザクション金額のコミットメントを生成するために使用され得る。トランザクション金額および乱数は、確率的または線形決定論的HEを使用して暗号化され得る。トランザクション金額および乱数はまた、使用されるHEスキームの特性に基づいてトランザクションの有効性を確認するためにZKPとして値のセットを生成するために使用され得る。トランザクション金額のコミットメント、暗号化されたトランザクション金額および乱数、ならびにZKPが、アカウント残高、トランザクション金額、または乱数を公開することなく、トランザクションが有効であるかどうかを検証するためにブロックチェーンノードによって使用され得る。
【００２９】
図1は、本明細書の実施形態を実行するために使用され得る環境100の例を図示している。いくつかの例においては、例示的な環境100は、エンティティがパブリックブロックチェーン102に慣用することを可能にする。例示的な環境100は、コンピューティングシステム106、108、およびネットワーク110を含む。いくつかの例においては、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(例えば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例においては、ネットワーク110は、有線および/または無線通信リンクを介してアクセスされ得る。
【００３０】
図示した例においては、コンピューティングシステム106、108の各々は、パブリックブロックチェーン102内のノードとして関与を可能にする任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスは、限定を意図したものではないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例においては、コンピューティングシステム106、108は、パブリックブロックチェーン102とやりとりするための1つまたは複数のコンピュータ実施サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第1のエンティティ(例えば、ユーザA)のコンピュータ実施サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第2のエンティティ(例えば、ユーザB)のコンピュータ実施サービスをホストすることができる。図1の例においては、パブリックブロックチェーン102を、ノードのピア・ツー・ピアネットワークとして表しており、コンピューティングシステム106、108は、パブリックブロックチェーン102に関与する、第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【００３１】
図2は、本明細書の実施形態による、概念的機構200の例を図示している。例示的な概念的機構200は、エンティティレイヤ202、ホステッドサービスレイヤ204、およびパブリックブロックチェーンレイヤ206を含む。図示した例においては、エンティティレイヤ202は、3つのエンティティEntity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれのトランザクション管理システム208を有する。
【００３２】
図示した例においては、ホステッドサービスレイヤ204は、各トランザクション管理システム208のためのブロックチェーンインターフェース210を含む。いくつかの例においては、それぞれのトランザクション管理システム208は、通信プロトコル(例えば、ハイパーテキスト・トランスファー・プロトコル・セキュア(HTTPS))を使用してネットワーク(例えば、図1のネットワーク110)を介してそれぞれのブロックチェーンインターフェース210と通信する。いくつかの例においては、各ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンレイヤ206との間の通信接続を提供する。より詳細には、各ブロックチェーンインターフェース210は、それぞれのエンティティがブロックチェーンレイヤ206のブロックチェーンネットワーク212に記録されているトランザクションを実施することを可能にする。いくつかの例においては、ブロックチェーンインターフェース210とブロックチェーンレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して実施される。いくつかの例においては、ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンノードを「ホスト」する。例えば、ブロックチェーンインターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【００３３】
本明細書に記載しているように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を変更不可能な形で記録する複数のノード214を含むピア・ツー・ピアネットワークとして提供される。単一のブロックチェーン216を概略的に図示しているが、ブロックチェーン216の複数のコピーが、提供され、ブロックチェーンネットワーク212にわたって保持される。例えば、各ノード214は、ブロックチェーン216のコピーを記憶する。いくつかの実施形態においては、ブロックチェーン216は、パブリックブロックチェーンに関与する2つ以上のエンティティの間で行われるトランザクションに関連付けられた情報を記憶する。
【００３４】
図3は、HEに基づいたブロックチェーントランザクションのプライバシー保護された有効性確認のプロセス300の例を図示している。高次においては、プロセス300は、ユーザノードA302と、ユーザノードB(図3には図示せず)と、コンセンサスノードとも称するブロックチェーンノード304とによって行われる。ユーザノードA302のアカウントおよびユーザノードBのアカウントの双方は、汎用アカウントモデルに基づいたレコードキーピングモデルを有し得る。すなわち、ユーザノードA302とユーザノードBとのアカウントレコードは複数のアセットとして管理されている。額面の送金などのトランザクションがユーザノードA302からユーザノードBへとなされ得る。ユーザノードA302は、トランザクション金額以上の総額を有する1つまたは複数のアカウントアセットを選択して、トランザクションを負担し得る。1つまたは複数のアセットの総額とトランザクション金額との間の差額は、ユーザノードA302に残されたトランザクションの残金とみなされ得る。
【００３５】
アカウントプライバシーを保護するために、ユーザノードA302は、トランザクションを負担するために使用されるアセットの額面のコミットメントを生成し得る。ユーザノードA302はまた、トランザクションのトランザクション金額のコミットメントを生成し得る。ユーザノードA302はまた、HEを使用してトランザクション金額、残金、およびコミットメントを生成するために使用された乱数を暗号化し得る。トランザクションの有効性を検証するために、ブロックチェーンノード304は、コミットメントにおいて秘匿化されているトランザクション金額、残金、および乱数と、ZKPに基づいてHEによって暗号化されているトランザクション金額、残金、および乱数とを比較し得る。トランザクション金額、残金、および乱数が一致している場合には、トランザクションは、ブロックチェーンノード304によって有効であると決定される。プロセス300についてのさらなる詳細を図3についての以下の記載において説明する。
【００３６】
306において、ユーザノードA302は、トランザクション金額をユーザノードBに送金するために複数のアセットを選択する。ユーザノードA302およびユーザノードBは、ブロックチェーンコンセンサスノードまたはコンセンサスプロセスに関与することなくブロックチェーンネットワークを使用しているユーザノードであり得る。前述したように、ユーザノードA302は、汎用アカウントモデルを使用してレコードを管理し得る。アカウント残高モデルの下でレコードについてのアカウント残高を管理する代わりに、ユーザノードA302のアカウントの額面は、それが処理するアセットの総額によって評価され得る。ユーザノードA302は、トランザクション金額を負担するのに十分な額面を有している複数のアセットを選択し得る。例えば、トランザクション金額が7.5米ドルである場合には、ユーザノードA302は、それぞれ5米ドル、2米ドル、および1米ドルの価値がある3つのアセットを選択して、トランザクション金額を負担し得る。
【００３７】
いくつかの実施形態においては、各アセットは、対応するアセットを識別するトランザクションアドレスまたはアセットIDに関連付けられ得る。アセットIDは、アセット情報のハッシュであり得る。k個の選択したアセットのアセットIDは、ID1, ..., IDkと表され得る。
【００３８】
308において、ユーザノードA302は、複数のアセットの総額およびトランザクション金額に基づいて残金を算出する。アセットがトランザクション金額より大きい総額を有するように選択されているため、残金は、トランザクション金額が差し引かれた選択したアセットの総額として算出され得る。トランザクション金額を表すためにtを使用するとともに残金を表すためにt0を使用すれば、残金の計算は、t0=a1+...+ak-tと表され得る、ここで、a1, ..., akは、それぞれ、トランザクション金額tを負担するためにユーザノードA302によって選択されたk個のアセットのアセット額面である。
【００３９】
310において、ユーザノードA302は、トランザクション金額に対応する乱数および残金に対応する乱数を生成する。トランザクション金額tに対応する乱数は、rと表され得る。残金t0に対応する乱数は、r0と表され得る。いくつかの実施形態においては、複数の乱数は、アセット額面のコミットメントを作成するために生成され得る。例えば、a1, ..., akがアセット額面であると仮定すると、アセット額面に対応する乱数は、ra1, … , rakと表され得る。
【００４０】
いくつかの実施形態においては、乱数r0は、ランダムに生成される代わりに算出され得る。計算は、r0=ra1+...+rak-rと表され得る、ここで、rはトランザクション金額tについてのコミットメントを作成するために生成された乱数である。算出した乱数r0を使用することによって、ユーザノードA302は、送金したアセットの総額が受領したアセットの総額と等しいことを証明するために追加のZKPを生成する必要がない。いくつかの実施形態においては、別の乱数r'が、ZKPを支援するために、r'=r1+…+rk-r-r0として計算され得る。
【００４１】
312において、ユーザノードA302は、トランザクション金額と残金とのコミットメントを生成し、確率的HEに基づいて対応する乱数を暗号化する。いくつかの実施形態においては、PCなどの準同型コミットメントスキームが、コミットメントを生成するために使用され得る。非限定的な例としてPCを使用して、トランザクション金額tのPCは、乱数rを使用して生成され得るし、PC(r, t)=grhtと表され得る、ここで、gおよびhは楕円曲線の生成元であり得るし、PC(r, t)は曲線の点についてのスカラ乗算である。同様に、残金t0のPCは、PC(r0, t0)=gr0ht0と表され得る。
【００４２】
乱数rは、Okamoto-Uchiyama(OU)暗号化スキームなどの確率的HEスキームに基づいてユーザノードBの公開鍵を使用して暗号化され得る。Boneh-Goh-Nissimなどの他のHEスキームも使用され得ることは理解されよう。非限定的な例としてOUを使用すれば、乱数は、OUB(r, t)=urvtまたは単にOUB(t)と表され得る乱数としてトランザクション金額tを処理することによってOUに基づいて暗号化され得る、ここで、uはv=un mod nかつn=p×qという条件を満足する(Z/nZ)*の元であり、pおよびqは2つの素数である。確率的OUは、OU(a+b)=OU(a)×OU(b)であるという特性を満足し得る、ここで、aおよびbはOUに対して使用される平文である。
【００４３】
乱数r0は、ユーザノードA302の公開鍵を使用して暗号化され得る。乱数は、OUA(r0, t0)と表され得る乱数として残金t0を処理することによってOUに基づいて暗号化され得る。
【００４４】
その後、トランザクション金額の暗号文がT=(PC(t, r), OUB(r, t))と表され得るし、残金の暗号文がT0=(PC(t0, r0), OUA(r0, t0))と表され得る。同様に、k個の選択したアセットの暗号文がTi=(PC(ti, ri), OUA(ri, ti))と表され得る、ここで、i=1, ..., kである。
【００４５】
314において、ユーザノードA302は、1つまたは複数の範囲証明を生成する。いくつかの実施形態においては、第1の範囲証明であるRP1は、トランザクション金額t≧0であることを示すために生成され得る。第2の範囲証明であるRP2は、残金t0≧0である、または、換言すれば、複数のアセットの総額がトランザクション金額以上であることを示すために生成され得る。
【００４６】
316において、ユーザノードA302は、ZKPを生成する。ZKPは、PCにおいて秘匿化されている乱数およびトランザクション金額(r, t)がOUB(r, t)において暗号化されている乱数およびトランザクション金額と同一であることと、PCにおいて秘匿化されている乱数およびトランザクション金額(r0, t0)がOUA(r0, t0)において暗号化されている乱数およびトランザクション金額と同一であることとを示すために使用され得る。ZKPを生成するために、2つの乱数t'1およびr'1が選択され得る。2つの乱数は、P=PC(t'1, r'1)、P'=OUB(r'1, t'1)、P''=OUA(r'1, t'1)である3つの値を生成するために使用され得る。3つの値は、その後、x=Hash(P, P', P'')と表されるハッシュを生成するために使用され得る。ハッシュ値xは、t'2=t'1+xt、r'2=r'1+xr、t'3=t'1+xt、およびr'3=r'1+xr0を計算するために使用され得る。ZKPは、その後、(P, P', t'2, r'2, P'', t'3, r'3)と表され得る。
【００４７】
318において、ユーザノードA302は、トランザクションデータを署名するために秘密鍵を使用して電子署名を生成する。いくつかの実施形態においては、トランザクションデータは、k個の選択したアセット(ID1, ..., IDk)のアセットID、トランザクション金額(T)の暗号文、残金(T0)の暗号文、範囲証明(RP1およびRP2)、乱数r'、およびZKPを含み得る。
【００４８】
320において、ユーザノードA302は、トランザクションデータの電子的に署名されたコピーをブロックチェーンネットワークに提示する。
【００４９】
322において、ブロックチェーンノード304は、電子署名を検証する。電子署名の検証は、トランザクションデータがユーザノードA302によって送信されていることを保証するために行われ得る。いくつかの実施形態においては、ブロックチェーンノード304は、トランザクションが既に行われているかを検証することができる二重支払い対策機構を含む。既に行われている場合には、ブロックチェーンノード304は、トランザクションを拒否し得る。
【００５０】
324において、ブロックチェーンノード304は、選択したアセットがユーザノードAのアカウントに関連付けられているかを検証する。検証は、アセットのアセットIDに基づき得る。
【００５１】
326において、ブロックチェーンノード304は、選択した複数のアセットの総額がトランザクション金額と残金との合計と等しいことを検証する。換言すれば、ブロックチェーンは、a1+...+ak=t+t0であることを検証する。前述したように、汎用アカウントモデルの下では、アセットは、データプライバシーを保護するためにPCとしてブロックチェーン上で管理され得る。PCの準同型に基づけば、PC(ra1, a1)×...×PC(rak, ak)=PC(ra1+...+rak, a1+...+ak)であり、PC(r, t)×PC(r0, t0)=PC(r+r0, t+t0)である。したがって、PC(ra1, a1)×...×PC(rak, ak)=PC(r, t)×PC(r0, t0)×gr'であることを示すことによって、a1+...+ak=t+t0であることを証明することができる。
【００５２】
328において、ブロックチェーンノード304は、1つまたは複数の範囲証明を検証する。
【００５３】
330において、ブロックチェーンノード304は、ZKPを検証する。上述したように、ZKPは、ユーザノードBの公開鍵を使用して暗号化されたトランザクション金額に対応する乱数がPCによって秘匿化されている対応する乱数と同一かどうか、およびユーザノードA302の公開鍵を使用して暗号化された残金に対応する乱数がPCによって秘匿化されている対応する乱数と同一かどうかを検証するために生成され得る。いくつかの実施形態においては、ZKPを検証するために、ブロックチェーンノード304は、x=Hash(P, P', P'')としてハッシュ値xをまず算出し得る。ブロックチェーンノード304は、その後、PC(t'2, r'2)=P×PC(t, r)x、OUB(r'2, t'2)=P'×OUB(r, t)x、PC(t'3, r'3)=P×PC(t0, r0)x、およびOUA(r'3, t'3)=P''×OUA(r0, t0)xのすべてが真であるかどうかを検証し得る。すべてが真である場合には、例示的なプロセス300は332に進む。さもなければ、ブロックチェーンノード304は、トランザクションを拒否し得る。
【００５４】
332において、ブロックチェーンノード304は、ユーザノードA302およびユーザノードBのアカウントを更新する。ユーザノードA302およびユーザノードBのアカウントは汎用アカウントモデルの下ではレコードとしてアセットを管理しているため、トランザクション後に、ユーザノードA302から送金された複数のアセットがユーザノードA302のアカウントから除去され得る。残金は、ユーザノードA302のアカウントに戻され追加され得る。トランザクション金額および対応するアセットIDが、新たなアセットとしてユーザノードBのアカウントに追加され得る。いくつかの実施形態においては、更新は、ユーザノードA302およびユーザノードBの対応するアカウントによって保持されているアセットリストを更新することに基づいて行われ得る。いくつかの実施形態においては、更新は、トランザクション金額と残金との暗号文をユーザノードA302およびユーザノードBによって保持されている暗号化されたアセット額面に追加することに基づいて行われ得る。アカウントの更新を図4を参照してさらに詳細にここで説明する。
【００５５】
図4は、本明細書の実施形態による、ブロックチェーントランザクション400の例を図示している。例示的なブロックチェーントランザクション400に示しているように、ユーザノードA402は、トランザクション金額tをユーザノードB404に送金している。トランザクション前には、ユーザノードA402は、(ID1, T1)、(ID2, T2)、(IDn, Tn)を含むn個のアセットを有している。
【００５６】
例として図3を参照して本明細書に記載した、コミットメントスキーム、暗号化スキーム、およびトランザクションを使用して、ユーザノードA402は、ID, ID2, …, IDkといったk個の選択したアセットのアセットIDを含む、トランザクションデータ408を生成し得る。トランザクションデータ408は、T0、T、RP1、RP2、r'、およびZKPをさらに含み得る。トランザクションデータ408を生成した後に、ユーザノードA402は、コンセンサスのために、その電子署名を追加して、電子的に署名されたトランザクションデータをブロックチェーンネットワーク406に提示し得る。
【００５７】
トランザクション後には、k個の選択したアセットを、ユーザアセットA402のアカウントから除去し得る。残金は、ユーザノードA402に戻され追加され得る。したがって、ユーザノードA402は、(IDk+1, Tk+1)、(IDk+2, Tk+2)、…、(IDn, Tn)、(ID0, T0)と表されるアセットを有し得る、ここで、ID0は残金t0のアセットIDを表す。
【００５８】
トランザクション前には、ユーザノードB404は、(ID1', T1')、(ID2', T2')、(IDm', Tm')と表されるm個のアセットを有している。トランザクション後には、トランザクション金額が、ユーザノードB404に追加され得る。ユーザノードB404は、(ID1', T1')、(ID2', T2')、(IDm', Tm')、(IDt, T)と表されるアセットを有し得る、ここで、IDtはトランザクション金額tのアセットIDを表す。
【００５９】
図5は、HEに基づいたブロックチェーントランザクションのプライバシー保護された有効性確認のプロセス500の例を図示している。高次においては、例示的なプロセス500は、ユーザノードA502と、ユーザノードB(図5には図示せず)と、コンセンサスノードとも称するブロックチェーンノード504とによって行われる。ユーザノードA502のアカウントおよびユーザノードBのアカウントの双方は、汎用アカウントモデルに基づき得る。額面の送金などのトランザクションがユーザノードA502からユーザノードBへとなされ得る。ユーザノードA502は、トランザクション金額以上の総額を有する1つまたは複数のアカウントアセットを選択して、トランザクションを負担し得る。1つまたは複数のアセットの総額とトランザクション金額との間の差額は、ユーザノードA502に残されたトランザクションの残金とみなされ得る。
【００６０】
アカウントプライバシーを保護するために、ユーザノードA502は、PCなどのコミットメントスキームを使用して、トランザクションを負担するために使用されるアセットの額面およびトランザクションの金額のコミットメントを生成し得る。ユーザノードA502はまた、線形決定論的HEを使用して、コミットメントを生成するために使用された乱数を暗号化し得る。線形決定論的HEは、HE(s+t)=HE×HE(t)かつHE(kt)=HE(t)kという特性を有し得る。トランザクションの有効性を検証するために、ブロックチェーンノード504は、コミットメントにおいて秘匿化されている乱数とZKPに基づいてHEによって暗号化されている乱数とを比較し得る。乱数が一致している場合には、トランザクションは、ブロックチェーンノード504によって有効であると決定され得る。例示的なプロセス500についてのさらなる詳細を図5についての以下の記載において説明する。
【００６１】
506において、ユーザノードA502は、トランザクション金額をユーザノードBに送金するために複数のアセットを選択する。ユーザノードA502およびユーザノードBは、ブロックチェーンコンセンサスノード、またはコンセンサスプロセスに関与することなくブロックチェーンネットワークを使用しているユーザノードであり得る。ユーザノードA502は、トランザクション金額を負担するのに十分な額面を有している複数のアセットを選択し得る。
【００６２】
いくつかの実施形態においては、各アセットは、対応するアセットを識別するトランザクションアドレスまたはアセットIDに関連付けられ得る。アセットIDは、アセット情報のハッシュであり得る。k個の選択したアセットのアセットIDは、ID1, ..., IDkと表され得る。
【００６３】
508において、ユーザノードA502は、複数のアセットの総額およびトランザクション金額に基づいて残金を算出する。アセットがトランザクション金額より大きい総額を有するように選択されているため、残金は、トランザクション金額が差し引かれた選択したアセットの総額として算出され得る。トランザクション金額を表すためにtを使用するとともに残金を表すためにt0を使用すれば、残金の計算は、t0=a1+...+ak-tと表され得る、ここで、a1, ..., akは、それぞれ、トランザクション金額tを負担するためにユーザノードA502によって選択されたk個のアセットのアセット額面である。
【００６４】
510において、ユーザノードA502は、トランザクション金額に対応する乱数および残金に対応する乱数を生成する。トランザクション金額tに対応する乱数は、rと表され得る。残金t0に対応する乱数は、r0と表され得る。いくつかの実施形態においては、複数の乱数は、アセット額面のコミットメントを作成するために生成され得る。例えば、a1, ..., akがアセット額面であると仮定すると、アセット額面に対応する乱数は、ra1, … , rakと表され得る。
【００６５】
いくつかの実施形態においては、乱数r0は、ランダムに生成される代わりに算出され得る。上記算出では、r0=ra1+...+rak-rと表され得る、ここで、rはトランザクション金額tについてのコミットメントを作成するために生成された乱数である。r0を算出することによって、ユーザノードA502は、送金したアセットの総額が受領したアセットの総額と等しいことを示すために追加のZKPを生成する必要がない。いくつかの実施形態においては、乱数r'は、r'=r1+…+rk-r-r0として算出され得る。
【００６６】
512において、ユーザノードA502は、トランザクション金額と残金とのコミットメントを生成し、決定論的HEに基づいて対応する乱数を暗号化する。いくつかの実施形態においては、PCなどの準同型コミットメントスキームが、コミットメントを生成するために使用され得る。非限定的な例としてPCを使用して、トランザクション金額tのPCは、乱数rを使用して生成され得るし、PC(r, t)=grhtと表され得る、ここで、gおよびhは楕円曲線の生成元であり得るし、PC(r, t)は曲線の点についてのスカラ乗算である。同様に、残金t0のPCは、PC(r0, t0)=gr0ht0と表され得る。
【００６７】
乱数rは、線形決定論的HEに基づいてユーザノードBの公開鍵を使用して暗号化され得る。線形決定論的HEは、HEスキームにおける乱数を0もしくは1または他の適切な数に調整することによって、Paillier、Benaloh、OU、Naccache-Stern、Boneh-Goh-Nissim、Damgard-Jurik、または等確率的HEなどといった確率的HEから得られ得る。暗号化された乱数は、HE(r)と表され得る。
【００６８】
乱数r0は、ユーザノードAの公開鍵を使用して暗号化され得る。乱数は、線形決定論的HEに基づいて暗号化され得る。暗号化された乱数は、HE(r0)と表され得る。
【００６９】
その後、トランザクション金額tの暗号文がT=(grht, HEB(r))と表され得るし、残金の暗号文がT0=(gr0ht0, HEA(r0))と表され得る。同様に、k個の選択したアセットの暗号文がTi=(grihti, HE(ri))と表され得る、ここで、i=1, ..., kである。
【００７０】
514において、ユーザノードA502は、1つまたは複数の範囲証明を生成する。いくつかの実施形態においては、第1の範囲証明であるRP1は、トランザクション金額t≧0であることを示すために生成され得る。第2の範囲証明であるRP2は、残金t0≧0である、または、換言すれば、複数のアセットの総額がトランザクション金額以上であることを示すために生成され得る。
【００７１】
516において、ユーザノードA502は、ZKPを生成する。ZKPは、PCにおいて秘匿化されている乱数(r, t)がHE(r)において暗号化されている乱数と同一であることと、PCにおいて秘匿化されている乱数(r0, t0)がHE(r0)において暗号化されている乱数と同一であることとを示すために使用され得る。ZKPを生成するために、2つの乱数t'1およびr'1が選択され得る。2つの乱数は、P=gr'1ht'1、P'=HEB(r'1)、P''=HEA(r'1)である3つの値を生成するために使用され得る。3つの値は、その後、x=Hash(P, P', P'')と表されるハッシュを生成するために使用され得る。ハッシュ値xは、t'2=t'1+xt、r'2=r'1+xr、t'3=t'1+xt、およびr'3=r'1+xr0を計算するために使用され得る。ZKPは、その後、(P, P', t'2, r'2, P'', t'3, r'3)と表され得る。
【００７２】
518において、ユーザノードA502は、トランザクションデータを署名するために秘密鍵を使用して電子署名を生成する。いくつかの実施形態においては、トランザクションデータは、k個の選択したアセット(ID1, ..., IDk)のアセットID、トランザクション金額(T)の暗号文、残金(T0)の暗号文、範囲証明(RP1およびRP2)、乱数r'、およびZKPを含み得る。
【００７３】
520において、ユーザノードA502は、トランザクションデータの電子的に署名されたコピーをブロックチェーンネットワークに提示する。
【００７４】
522において、ブロックチェーンノード504は、電子署名を検証する。電子署名の検証は、トランザクションデータがユーザノードA502によって送信されていることを保証するために行われ得る。いくつかの実施形態においては、ブロックチェーンノード504は、トランザクションが既に行われているかどうかを検証することができる二重支払い対策機構を含む。既に行われている場合には、ブロックチェーンノード504は、トランザクションを拒否し得る。
【００７５】
524において、ブロックチェーンノード504は、選択したアセットがユーザノードAのアカウントに関連付けられているかどうかを検証する。検証は、アセットのアセットIDに基づき得る。
【００７６】
526において、ブロックチェーンノード504は、選択した複数のアセットの総額がトランザクション金額と残金との合計と等しいことを検証する。換言すれば、ブロックチェーンノード504は、a1+...+ak=t+t0であることを検証する。前述したように、汎用アカウントモデルの下では、アセットは、データプライバシーを保護するためにPCとしてブロックチェーン上で管理され得る。PCの準同型に基づけば、PC(ra1, a1)×...×PC(rak, ak)=PC(ra1+...+rak, a1+...+ak)であり、PC(r, t)×PC(r0, t0)=PC(r+r0, t+t0)である。したがって、PC(ra1, a1)×...×PC(rak, ak)=PC(r, t)×PC(r0, t0)×gr'であることを示すことによって、a1+...+ak=t+t0であることを証明することができる。
【００７７】
528において、ブロックチェーンノード504は、1つまたは複数の範囲証明を検証する。
【００７８】
530において、ブロックチェーンノード504は、ZKPを検証する。前述したように、ZKPは、ユーザノードBの公開鍵を使用して暗号化されたトランザクション金額に対応する乱数がPCによって秘匿化されている対応する乱数と同一かどうか、およびユーザノードA502の公開鍵を使用して暗号化された残金に対応する乱数がPCによって秘匿化されている対応する乱数と同一かどうかを検証するために生成され得る。いくつかの実施形態においては、ZKPを検証するために、ブロックチェーンノード504は、x=Hash(P, P', P'')としてハッシュ値xをまず算出し得る。ブロックチェーンノード504は、その後、gr'2ht'2=P×(grht)x、HEB(r')=P'×HE(r)x、gr'3ht'3=P×(gr0ht0)x、およびHEA(r'3)=P''×HEA(r0)xのすべてが真であるかどうかを検証し得る。各々が真である場合には、例示的なプロセス500は532に進む。さもなければ、ブロックチェーンノード504は、トランザクションを拒否し得る。
【００７９】
532において、ブロックチェーンノード504は、ユーザノードA502およびユーザノードBのアカウントを更新する。ユーザノードA502およびユーザノードBのアカウントは汎用アカウントモデルの下ではレコードとしてアセットを管理しているため、トランザクション後に、ユーザノードA502から送金された複数のアセットがユーザノードA502のアカウントから除去され得る。残金は、ユーザノードA502のアカウントに戻され追加され得る。トランザクション金額および対応するアセットIDが、新たなアセットとしてユーザノードBのアカウントに追加され得る。いくつかの実施形態においては、更新は、ユーザノードA502およびユーザノードBの対応するアカウントによって保持されているアセットリストを更新することに基づいて行われ得る。いくつかの実施形態においては、更新は、トランザクション金額と残金との暗号文をユーザノードA502およびユーザノードBによって保持されている暗号化されたアセット額面に追加することに基づいて行われ得る。例示的なブロックチェーントランザクション400および対応するアカウントの更新は、図4の記載において説明している。
【００８０】
図6は、本明細書の実施形態により行われ得るプロセス600の例を図示している。提示を明確にするために、以下の説明は、本説明における他の図に即して方法600を一般的に説明している。しかしながら、例示的なプロセス600が、例えば、任意のシステム、環境、ソフトウェア、およびハードウェアによって、または、必要に応じて、システムと、環境と、ソフトウェアと、ハードウェアとの組合せによって、行われ得ることは理解されよう。いくつかの実施形態においては、例示的なプロセス600のステップは、並列して、組み合わせて、ループして、または任意の順序で動作され得る。
【００８１】
602において、コンセンサスノードは、トランザクションに関連付けられたトランザクションデータを受信する。いくつかの例においては、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、確率的HEスキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、確率的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ZKP、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む。
【００８２】
いくつかの実施形態においては、複数のアセットの各々は、アセットタイプ、コミットメントにおいて秘匿化されているアセット額面、およびコミットメントを生成するために使用された乱数のうちの1つまたは複数に関連付けられる。いくつかの実施形態においては、コンセンサスノードは、複数のアセットの各々が同一のアセットタイプに関連付けられていると決定する。いくつかの実施形態においては、第1のコミットメント、第2のコミットメント、およびアセット額面を秘匿化しているコミットメントは、準同型であるコミットメントスキームに基づいて生成される。
【００８３】
いくつかの実施形態においては、第3の乱数は、乱数としてトランザクション金額を処理することによって確率的HEスキームに基づいて暗号化され、第4の乱数は、乱数として残金を処理することによって確率的HEスキームに基づいて暗号化される。いくつかの実施形態においては、第1のコミットメントと第2のコミットメントとがPedersenコミットメントスキームに基づいて生成され、確率的HEスキームはOU暗号化スキームである。
【００８４】
いくつかの実施形態においては、ZKPは、第5の乱数および第6の乱数を秘匿化しているPedersenコミットメントを含み、第5の乱数と第6の乱数との暗号文は、OU暗号化スキームに基づいて、第2のアカウントの公開鍵によって暗号化され、第5の乱数と第6の乱数との暗号文は、OU暗号化スキームに基づいて、第1のアカウントの公開鍵によって暗号化される。
【００８５】
604において、コンセンサスノードは、第1のノードの公開鍵に基づいて電子署名を検証する。
【００８６】
606において、コンセンサスノードは、トランザクション金額と残金との各々がゼロより大きいまたはゼロと等しいことを1つまたは複数の範囲証明が証明していると決定する。
【００８７】
608において、コンセンサスノードは、複数の手形の総額がトランザクション金額と残金との合計と等しいと決定する。いくつかの実施形態においては、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップは、コミットメントスキームの準同型に基づいて行われる。
【００８８】
610において、コンセンサスノードは、第1の乱数が第3の乱数と等しく、第2の乱数が第4の乱数と等しく、第1のコミットメントにおいて秘匿化されているトランザクション金額が第2のノードの公開鍵によって暗号化されたトランザクション金額と等しいと決定することによって、ZKPに基づいて、トランザクションが有効であると決定する。
【００８９】
いくつかの実施形態においては、トランザクションは、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとの間で行われ、方法は、トランザクションが有効であると決定した後に、トランザクション金額と残金とに基づいて、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとを更新するステップをさらに含む。いくつかの実施形態においては、ZKPは、トランザクションが確率的HEの特性に基づいて有効であると決定するために生成および使用される。いくつかの実施形態においては、トランザクションが有効であると決定するステップは、ブロックチェーンネットワークの外部を経由し、第1のノードと第2のノードとの間のインタラクションを用いることなく、ZKPに基づいて行われる。
【００９０】
図7は、本明細書の実施形態により行われ得る例示的なプロセス700を図示している。提示を明確にするために、以下の説明は、本説明における他の図に即して方法700を一般的に説明している。しかしながら、例示的なプロセス700が、例えば、任意のシステム、環境、ソフトウェア、およびハードウェアによって、または、必要に応じて、システムと、環境と、ソフトウェアと、ハードウェアとの組合せによって、行われ得ることは理解されよう。いくつかの実施形態においては、例示的なプロセス700のステップは、並列して、組み合わせて、ループして、または任意の順序で動作され得る。
【００９１】
702において、コンセンサスノードは、トランザクションに関連付けられたトランザクションデータを受信する。いくつかの例においては、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、線形決定論的HEスキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、線形決定論的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ZKP、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む。
【００９２】
いくつかの実施形態においては、複数のアセットの各々は、アセットタイプ、コミットメントにおいて秘匿化されているアセット額面、およびコミットメントを生成するために使用された乱数のうちの1つまたは複数に関連付けられる。いくつかの実施形態においては、コンセンサスノードは、複数のアセットの各々が同一のアセットタイプに関連付けられていると決定する。いくつかの実施形態においては、第1のコミットメント、第2のコミットメント、およびアセット額面を秘匿化しているコミットメントは、準同型であるコミットメントスキームに基づいて生成される。
【００９３】
いくつかの実施形態においては、線形決定論的HEスキームは、確率的HEスキームに関連付けられた乱数を固定数に変更することに基づいて確率的HEスキームから導出される。
【００９４】
いくつかの実施形態においては、ZKPは、第5の乱数と第6の乱数とを秘匿化しているコミットメントを含み、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第2のアカウントの公開鍵によって暗号化され、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第1のアカウントの公開鍵によって暗号化される。
【００９５】
704において、コンセンサスノードは、第1のノードの公開鍵に基づいて電子署名を検証する。
【００９６】
706において、コンセンサスノードは、トランザクション金額と残金との各々がゼロより大きいまたはゼロと等しいことを1つまたは複数の範囲証明が証明していると決定する。
【００９７】
708において、コンセンサスノードは、複数の手形の総額がトランザクション金額と残金との合計と等しいと決定する。いくつかの実施形態においては、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップは、コミットメントスキームの準同型に基づいて行われる。
【００９８】
710において、コンセンサスノードは、第1の乱数が第3の乱数と等しく、第2の乱数が第4の乱数と等しく、第1のコミットメントにおいて秘匿化されているトランザクション金額が第2のノードの公開鍵によって暗号化されたトランザクション金額と等しいと決定することによって、ZKPに基づいて、トランザクションが有効であると決定する。
【００９９】
いくつかの実施形態においては、トランザクションは、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとの間で行われ、方法は、トランザクションが有効であると決定した後に、トランザクション金額と残金とに基づいて、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとを更新するステップをさらに含む。いくつかの実施形態においては、ZKPは、トランザクションが線形決定論的HEの特性に基づいて有効であると決定するために生成および使用される。いくつかの実施形態においては、トランザクションが有効であると決定するステップは、ブロックチェーンネットワークの外部を経由し、第1のノードと第2のノードとの間のインタラクションを用いることなく、ZKPに基づいて行われる。
【０１００】
図8は、本明細書の実施形態によるプロセスを行い得るブロックチェーンノード800の例を図示している。高次においては、ブロックチェーンノード800は、受信ユニット802、検証ユニット804、第1の決定ユニット806、第2の決定ユニット808、および第3の決定ユニット810を含む。
【０１０１】
いくつかの実施形態においては、受信ユニット802は、トランザクションに関連付けられたトランザクションデータを受信するように動作可能である。いくつかの例においては、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、確率的HEスキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、確率的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ZKP、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む。
【０１０２】
いくつかの実施形態においては、受信ユニット802は、トランザクションに関連付けられたトランザクションデータを受信するように動作可能である、ここで、トランザクションデータは、複数のアセットを表すデータ、トランザクションの第1の乱数とトランザクション金額とを秘匿化している第1のコミットメント、第2の乱数と複数のアセットの総額からトランザクション金額を差し引くことに基づいて算出された残金とを秘匿化している第2のコミットメント、線形決定論的HEスキームに基づいて第2のノードの公開鍵によって双方が暗号化されているトランザクション金額および第3の乱数、線形決定論的HEスキームに基づいて第1のノードの公開鍵によって双方が暗号化されている残金および第4の乱数、1つまたは複数の範囲証明、ZKP、ならびに第1のノードの公開鍵に対応する秘密鍵に基づいて生成された電子署名を含む。
【０１０３】
いくつかの実施形態においては、複数のアセットの各々は、アセットタイプ、コミットメントにおいて秘匿化されているアセット額面、およびコミットメントを生成するために使用された乱数のうちの1つまたは複数に関連付けられる。いくつかの実施形態においては、ブロックチェーンノード800は、複数のアセットの各々が同一のアセットタイプに関連付けられていると決定する。いくつかの実施形態においては、第1のコミットメント、第2のコミットメント、およびアセット額面を秘匿化しているコミットメントは、準同型であるコミットメントスキームに基づいて生成される。いくつかの実施形態においては、線形決定論的HEスキームは、確率的HEスキームに関連付けられた乱数を固定数に変更することに基づいて確率的HEスキームから導出される。
【０１０４】
いくつかの実施形態においては、第3の乱数は、乱数としてトランザクション金額を処理することによって確率的HEスキームに基づいて暗号化され、第4の乱数は、乱数として残金を処理することによって確率的HEスキームに基づいて暗号化される。いくつかの実施形態においては、第1のコミットメントと第2のコミットメントとがPedersenコミットメントスキームに基づいて生成され、確率的HEスキームはOU暗号化スキームである。
【０１０５】
いくつかの実施形態においては、ZKPは、第5の乱数および第6の乱数を秘匿化しているPedersenコミットメントを含み、第5の乱数と第6の乱数との暗号文は、OU暗号化スキームに基づいて、第2のアカウントの公開鍵によって暗号化され、第5の乱数と第6の乱数との暗号文は、OU暗号化スキームに基づいて、第1のアカウントの公開鍵によって暗号化される。いくつかの実施形態においては、ZKPは、第5の乱数と第6の乱数とを秘匿化しているコミットメントを含み、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第2のアカウントの公開鍵によって暗号化され、第5の乱数と第6の乱数との暗号文は、線形決定論的HEスキームに基づいて、第1のアカウントの公開鍵によって暗号化される。
【０１０６】
検証ユニット804は、第1のノードの公開鍵に基づいて電子署名を検証するように動作可能である。
【０１０７】
第1の決定ユニット806は、トランザクション金額と残金との各々がゼロより大きいまたはゼロと等しいことを1つまたは複数の範囲証明が証明していると決定するように動作可能である。
【０１０８】
第2の決定ユニット808は、複数の手形の総額がトランザクション金額と残金との合計と等しいと決定するように動作可能である。いくつかの実施形態においては、複数のアセットの総額がトランザクション金額と残金との合計と等しいと決定するステップは、コミットメントスキームの準同型に基づいて行われる。
【０１０９】
第3の決定ユニット810は、第1の乱数が第3の乱数と等しく、第2の乱数が第4の乱数と等しく、第1のコミットメントにおいて秘匿化されているトランザクション金額が第2のノードの公開鍵によって暗号化されたトランザクション金額と等しいと決定することによって、ZKPに基づいて、トランザクションが有効であると決定するように動作可能である。
【０１１０】
いくつかの実施形態においては、トランザクションは、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとの間で行われ、ブロックチェーンノード800は、トランザクションが有効であると第3の決定ユニット810が決定した後に、トランザクション金額と残金とに基づいて、第1のノードに関連付けられたアカウントと第2のノードに関連付けられたアカウントとを更新するように動作可能である、更新ユニットを含み得る。いくつかの実施形態においては、ZKPは、トランザクションが確率的HEの特性に基づいて有効であると決定するために生成および使用される。いくつかの実施形態においては、ZKPは、トランザクションが線形決定論的HEの特性に基づいて有効であると決定するために生成および使用される。いくつかの実施形態においては、トランザクションが有効であると決定するステップは、ブロックチェーンネットワークの外部を経由し、第1のノードと第2のノードとの間のインタラクションを用いることなく、ZKPに基づいて行われる。
【０１１１】
本明細書において説明した発明特定事項の実施形態は、特定の利点または技術的効果を実現するために実施され得る。例えば、本明細書の実施形態は、ブロックチェーンノードのアカウント残高およびトランザクション金額がトランザクションの間は非公開となるようにすることを可能にする。資金移動の受領側は、トランザクションを確認することまたは乱数を使用してコミットメントを検証することをする必要がないため、トランザクションの有効性確認は、非インタラクティブであり得る。ブロックチェーンノードは、HEおよびコミットメントスキームに基づいてトランザクションの有効性を確認してゼロ知識証明を可能にし得る。
【０１１２】
説明した方法論は、様々なモバイルコンピューティングデバイスのアカウント/データセキュリティの向上を可能にしている。アカウントの残高およびランザクション金額は、HEに基づいて暗号化され、コミットメントスキームによって秘匿化され得る。そのため、コンセンサスノードは、アカウントの実際のアカウント残高を公開することなく、HEの特性に基づいてトランザクション後に台帳においてアカウント残高を更新することができる。トランザクションを確認するために受領側に乱数を送信する必要がないため、データ漏洩のリスクを低減することができ、乱数を管理するために使用するために必要なコンピューティングリソースおよびメモリリソースをより少なくしている。
【０１１３】
本明細書において説明した実施形態および動作は、本明細書において開示した構造またはそれらのうちの1つまたは複数の組合せを含む、デジタル電子回路の形式で、またはコンピュータソフトウェア、ファームウェア、またはハードウェアの形式で実装され得る。動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されるまたは他のソースから受信されるデータに対してデータ処理装置によって行われる動作として実装され得る。データ処理装置、コンピュータ、またはコンピューティングデバイスは、例として、プログラマブルプロセッサ、コンピュータ、システム・オン・チップ、または前述したもののうちの複数もしくは組合せを含む、処理データのための装置、デバイス、マシンを含み得る。装置は、例えば、中央処理ユニット(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)といった、特殊用途ロジック回路を含み得る。装置はまた、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム(例えばオペレーティングシステムもしくはオペレーティングシステムの組合せ)、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードといった、当該コンピュータプログラムのための実行環境を作成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラなどといった、様々な異なるコンピューティングモデルインフラを実現し得る。
【０１１４】
コンピュータプログラム(例えば、プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプト、またはコードとしても知られる)は、コンパイル型またはインタプリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語で書かれ得るし、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとしてといったことを含む、任意の形式でデプロイされ得る。プログラムは、他のプログラムまたはデータを保持しているファイルの一部(例えば、マークアップ言語ドキュメントに記憶されている1つまたは複数のスクリプト)に、当該のプログラム専用の単一のファイルに、または複数の協調ファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトに位置しもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続された、複数のコンピュータ上で実行され得る。
【０１１５】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用および特殊用途マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの必須の要素は、命令に従ってアクションを行うためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般的に、コンピュータはまた、データを記憶するための1つまたは複数のマスストレージデバイスを含むことになる、または、そのようなマスストレージデバイスからデータを受信もしくはそのようなマスストレージデバイスにデータを送信もしくはその両方を行うことが動作可能なように結合されることになる。コンピュータは、例えば、モバイルデバイス、携帯情報端末(PDA)、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイスといった、別のデバイスに組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、磁気ディスク、および光磁気ディスクといった、不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、殊用途ロジック回路によって補完され得る、またはそれに組み込まれ得る。
【０１１６】
モバイルデバイスは、ハンドセット、ユーザ機器(UE)、モバイル電話(例えば、スマートフォン)、タブレット、ウェアラブルデバイス(例えば、スマートウォッチおよびスマートメガネ)、人体内部の埋め込みデバイス(例えば、バイオセンサ、人工内耳)、または他のタイプのモバイルデバイスを含み得る。モバイルデバイスは、様々な通信ネットワーク(以下で説明)と無線で(例えば、無線周波数(RF)信号を使用して)通信し得る。モバイルデバイスは、モバイルデバイスの現在の環境の特性を決定するためのセンサを含み得る。センサは、カメラ、マイクロフォン、近接センサ、GPSセンサ、モーションセンサ、加速度計、照度センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(例えば、Wi-Fiおよびセルラ無線)、熱センサ、または他のタイプのセンサを含み得る。例えば、カメラは、可動または固定レンズ、フラッシュ、画像センサ、および画像プロセッサを有する、前面または背面カメラを含み得る。カメラは、顔および/または虹彩認識のために細部をキャプチャすることが可能なメガピクセルカメラであり得る。データプロセッサ、およびメモリに記憶されているまたはリモートでアクセスされる認証情報とともに、カメラは、顔認識システムを形成し得る。顔認識システム、または、例えば、マイクロフォン、モーションセンサ、加速度計、GPSセンサ、もしくはRFセンサといった、1つまたは複数のセンサが、ユーザ認証のために使用され得る。
【０１１７】
ユーザとのインタラクションを提供するために、実施形態は、例えば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイと、ユーザがコンピュータに入力を提供することを可能にするタッチスクリーン、キーボード、およびポインティングデバイスといった、表示デバイスと入力デバイスとを有するコンピュータ上で実施され得る。同様に他の種類のデバイスをユーザとのインタラクションを提供するために使用し得るし、例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックといった任意の形式の感覚フィードバックであり得るし、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信することおよびユーザによって使用されるデバイスからドキュメントを受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信した要求に応答してウェブブラウザにウェブページを送信することによって、ユーザとのインタラクションを行い得る。
【０１１８】
実施形態は、任意の形式または媒体の有線または無線デジタルデータ通信(またはその組合せ)、例えば、通信ネットワークによって相互接続されたコンピューティングデバイスを使用して実施され得る。相互接続されたデバイスの例としては、通信ネットワークを介して通常はやりとりする、一般的に互いにリモートに存在するクライアントとサーバとがある。例えば、モバイルデバイスといった、クライアントは、購入、売却、支払、贈与、送付、もしくは貸付のトランザクションを行うもしくはこれらを許可するサーバとのトランザクションを、またはそのようなサーバを介したトランザクションを、それ自身で実行し得る。そのようなトランザクションは、アクションとレスポンスとが時間的にほぼ同じであるリアルタイムであり得る。例えば、個人が、アクションとレスポンスとが実質的に同時に知覚し、個人のアクションの後のレスポンスについての時間差が1ミリ秒(ms)または1秒(s)未満である、またはレスポンスは、システムの処理限界を考慮しつつも意図的な遅延は有していない。
【０１１９】
通信ネットワークの例としては、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、およびワイドエリアネットワーク(WAN)を含む。通信ネットワークは、インターネット、別の通信ネットワーク、または通信ネットワークの組合せのすべてまたは一部を含み得る。情報は、ロング・ターム・エボリューション(LTE)、5G、IEEE802、インターネットプロトコル(IP)、または他のプロトコルもしくはプロトコルの組合せを含む、様々なプロトコルおよび標準に準拠した通信ネットワーク上で送信され得る。通信ネットワークは、接続されたコンピューティングデバイス間で、音声、ビデオ、生体、もしくは認証データ、または他の情報を送信し得る。
【０１２０】
別個の実施形態として説明した特徴を、組合せで、単一の実施形態で実施し得る一方で、単一の実施形態として説明した特徴を、複数の実施形態で、別々に、または任意の適切なサブコンビネーションで実施し得る。特定の順序で説明および主張した動作は、その特定の順序を必要とするものとして理解されるべきではないし、図示した動作のすべてを行う必要があると理解すべきではない(いくつかの動作がオプションであり得る)。必要に応じて、マルチタスク処理または並列処理(またはマルチタスク処理と並列処理との組合せ)が行われ得る。
【符号の説明】
【０１２１】
110  ネットワーク
208  トランザクション管理
208  トランザクション管理
208  トランザクション管理
210  ブロックチェーンインターフェース
210  ブロックチェーンインターフェース
210  ブロックチェーンインターフェース
302  ユーザノードA
304  ブロックチェーンノード
402  ユーザノードA
404  ユーザノードB
406  ブロックチェーンネットワーク
408  トランザクションデータ:
502  ユーザノードA
504  ブロックチェーンノード
802  受信ユニット
804  検証ユニット
806  第1の決定ユニット
808  第2の決定ユニット
810  第3の決定ユニット
【図１】
0006808057.tif 000002
【図２】
0006808057.tif 000003
【図３】
0006808057.tif 000004
【図４】
0006808057.tif 000005
【図５】
0006808057.tif 000006
【図６】
0006808057.tif 000007
【図７】
0006808057.tif 000008
【図８】
0006808057.tif 000009