特許第6817429号(P6817429)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスド ニュー テクノロジーズ カンパニー リミテッドの特許一覧

特許6817429ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護
<>
  • 特許6817429-ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護 図000002
  • 特許6817429-ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護 図000003
  • 特許6817429-ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護 図000004
  • 特許6817429-ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護 図000005
  • 特許6817429-ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6817429
(24)【登録日】2020年12月28日
(45)【発行日】2021年1月20日
(54)【発明の名称】ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護
(51)【国際特許分類】
   H04L 9/30 20060101AFI20210107BHJP
   H04L 9/32 20060101ALI20210107BHJP
   G06F 21/10 20130101ALI20210107BHJP
   G06Q 20/38 20120101ALI20210107BHJP
【FI】
   H04L9/00 663Z
   H04L9/00 675B
   G06F21/10
   G06Q20/38
【請求項の数】11
【全頁数】20
(21)【出願番号】特願2019-521800(P2019-521800)
(86)(22)【出願日】2018年11月7日
(65)【公表番号】特表2020-503718(P2020-503718A)
(43)【公表日】2020年1月30日
(86)【国際出願番号】CN2018114420
(87)【国際公開番号】WO2019072268
(87)【国際公開日】20190418
【審査請求日】2019年6月21日
(73)【特許権者】
【識別番号】520015461
【氏名又は名称】アドバンスド ニュー テクノロジーズ カンパニー リミテッド
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【弁理士】
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】バオリ・マ
(72)【発明者】
【氏名】ウェンビン・ジャン
(72)【発明者】
【氏名】フアンユ・マ
(72)【発明者】
【氏名】ジェン・リュウ
(72)【発明者】
【氏名】リチュン・リ
【審査官】 松平 英
(56)【参考文献】
【文献】 特開2010−039489(JP,A)
【文献】 特開2010−039890(JP,A)
【文献】 特開2018−007168(JP,A)
【文献】 国際公開第2018/194736(WO,A1)
【文献】 米国特許出願公開第2016/0358165(US,A1)
【文献】 中国特許出願公開第108764874(CN,A)
【文献】 Integrated Encryption Scheme,[online],Wikipedia,2016年 5月 2日,[検索日 2020年12月10日]、インターネット<URL:https://en.wikipedia-on-ipfs.org/wiki/Integrated_Encryption_Scheme.html>
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00−21/88
G06Q20/00−20/42
40/00−40/08
G09C 1/00−5/00
H04K 1/00−3/00
H04L 9/00−9/38
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークのコンセンサスノードによって行われる、コンピュータで実行される方法であって、
第1のアカウントから、対応する複数の注釈を特定する複数の注釈識別子(ID)、前記複数の注釈の少なくとも一部分によって支払われる前記第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメント、前記複数の注釈の合計値から前記トランザクション量を差し引くことによる変化のコミットメント、前記第2のアカウントの公開鍵によって暗号化される前記トランザクション量の前記コミットメントを生成するために使用される第1の乱数、前記第2のアカウントの前記公開鍵によって暗号化される前記トランザクション量、前記第1のアカウントの前記公開鍵によって暗号化される前記変化の前記コミットメントを生成するために使用される第2の乱数、前記第1のアカウントの前記公開鍵によって暗号化される前記変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明の、デジタル署名されたコピーを受信するステップと、
前記デジタル署名されたコピーに対応するデジタル署名を、前記第1のアカウントの前記公開鍵を使用して検証するステップと、
前記トランザクション量および前記変化が0以上であることを前記1つまたは複数のレンジプルーフが証明すると決定するステップと、
前記複数の注釈の前記合計値が前記トランザクション量と前記変化の合計に等しいと決定するステップと、
前記コミットメントの中の前記トランザクション量が暗号化される前記トランザクション量と同じであるかどうか、および前記トランザクション量の前記コミットメントを生成するために使用される乱数が前記第1の乱数と同じであるかどうかを決定するステップと、
前記コミットメントの中の前記トランザクション量が暗号化される前記トランザクション量と同じであり、かつ前記トランザクション量の前記コミットメントを生成するために使用される前記乱数が前記第1の乱数と同じである場合、前記複数の注釈、前記トランザクション量、および前記変化に基づいて、前記第1のアカウントおよび前記第2のアカウントを更新するステップとを備える、
コンピュータで実行される方法。
【請求項2】
前記複数の注釈の各々が、注釈タイプ、注釈値のコミットメント、公開鍵暗号化または統合暗号化によって暗号化される前記注釈値、および前記公開鍵暗号化または前記統合暗号化によって暗号化される前記コミットメントを生成するために使用される乱数のうちの1つまたは複数を含む、
請求項1に記載のコンピュータで実行される方法。
【請求項3】
前記複数の注釈の各々が同じ注釈タイプを有すると決定するステップをさらに備える、
請求項2に記載のコンピュータで実行される方法。
【請求項4】
前記トランザクション量の前記コミットメント、前記変化の前記コミットメント、および前記注釈値の前記コミットメントが、準同型であるコミットメントスキームを使用して生成される、
請求項2に記載のコンピュータで実行される方法。
【請求項5】
前記複数の注釈の前記合計値が前記トランザクション量および前記変化の前記合計に等しいかどうかを決定するステップが、
各注釈値の前記コミットメントの合計と、前記トランザクション量の前記コミットメントと前記変化の前記コミットメントの合計とを比較することに基づく、
請求項4に記載のコンピュータで実行される方法。
【請求項6】
前記複数の注釈IDの各々が、トランザクションアドレスと、トランザクション出力における前記対応する注釈の順序を示すインデックス番号とを含み、前記トランザクションアドレスが、前記トランザクションのトランザクション情報をハッシュすることによって生成される、
請求項1に記載のコンピュータで実行される方法。
【請求項7】
前記複数の注釈IDの各々が前記第1のアカウントと関連付けられると決定するステップをさらに備える、
請求項1に記載のコンピュータで実行される方法。
【請求項8】
前記第1の乱数および前記トランザクション量が、Paillier暗号化または岡本-内山暗号化に基づいて前記第2のアカウントの公開鍵によって暗号化される、
請求項1に記載のコンピュータで実行される方法。
【請求項9】
前記コミットメントの中の前記トランザクション量が暗号化される前記トランザクション量と同じであるかどうか、および、前記トランザクション量の前記コミットメントを生成するために使用される乱数が前記第1の乱数と同じであるかどうかを決定するステップが、
前記ブロックチェーンネットワークの外側の前記第1のアカウントと前記第2のアカウントとの間の対話なしで、ゼロ知識証明に基づく、
請求項1に記載のコンピュータで実行される方法。
【請求項10】
1つまたは複数のプロセッサに結合され、かつ前記1つまたは複数のプロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法に従った動作を前記1つまたは複数のプロセッサに実行させる命令が記録された、
非一時的コンピュータ可読記録媒体。
【請求項11】
コンピューティングデバイスと、
前記コンピューティングデバイスに結合され、かつ前記コンピューティングデバイスによって実行されると、請求項1から9のいずれか一項に記載の方法に従った動作を前記コンピューティングデバイスに実行させる命令が記録されたコンピュータ可読記録デバイスとを備える、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ゼロ知識証明を用いたアカウント注釈モデルに基づくブロックチェーンデータの保護に関する。
【背景技術】
【0002】
ブロックチェーンシステム、コンセンサスネットワーク、分散型台帳システムネットワーク、またはブロックチェーンとも呼ばれ得るブロックチェーンネットワークは、参加するエンティティが安全にかつ変更不可能にデータを記録することを可能にする。ブロックチェーンは、トランザクションの台帳として記述されることが可能であり、ブロックチェーンの複数のコピーがブロックチェーンネットワークにわたって記録される。例示的なタイプのブロックチェーンには、パブリックブロックチェーン、コンソーシアムブロックチェーン、およびプライベートブロックチェーンがあり得る。パブリックブロックチェーンは、そのブロックチェーンを使用しコンセンサスプロセスに参加するためにすべてのエンティティに対して開かれている。コンソーシアムブロックチェーンは、コンセンサスプロセスがいくつかの組織または機関などのノードの事前に選択されたセットによって制御される、ブロックチェーンである。プライベートブロックチェーンは、読取りパーミッションおよび書込みパーミッションを集中的に制御する特定のエンティティだけに提供される。
【0003】
ブロックチェーンは、参加者が暗号通貨を使用して商品/サービスを購入/販売するためにトランザクションを行うことを可能にする、暗号通貨ネットワークにおいて使用される。一般的な暗号通貨にはビットコインがある。暗号通貨ネットワークでは、ユーザ間のトランザクションを記録するために記録管理モデルが使用される。例示的な記録管理モデルには未使用トランザクションアウトプット(UTXO: unspent transaction output)モデルおよびアカウント残高(account balance)モデルがある。UTXOモデルでは、各トランザクションは、前のトランザクションからのアウトプットを使用し、後のトランザクションにおいて使用され得る新しいアウトプットを生成する。ユーザの未使用のトランザクションが追跡され、ユーザが使わなければならない残高が未使用のトランザクションの合計として計算される。アカウント残高モデルでは、各ユーザのアカウント残高がグローバル状態として追跡される。各トランザクションに対して、使用するアカウントの残高がトランザクションの量以上であることを確実にするために、その残高が確認される。これは従来の銀行業と同等である。
【0004】
ブロックチェーンは一連のブロックを含み、その各々がネットワークにおいて実行される1つまたは複数のトランザクションを含む。各ブロックは台帳のページに類似していることがあるが、ブロックチェーン自体が台帳の完全なコピーである。個々のトランザクションが確認されてブロックに追加され、ブロックはブロックチェーンに追加される。ブロックチェーンのコピーは、ネットワークの複数のノードにわたって複製される。このようにして、ブロックチェーンの状態についてグローバルな合意が存在する。さらに、ブロックチェーンは、少なくともパブリックネットワークの場合には、すべてのノードによる閲覧のために公開されている。ブロックチェーンユーザのプライバシーを保護するために、暗号化技術が実装される。
【0005】
アカウント残高モデルのもとでは、トランザクションの双方の関係者がコミットする対象の値を隠すために、コミットメントスキームが使用され得る。コミットメントスキームは、関係者が選択または値をコミットし、関与する他の関係者にその値を後で伝えることの必要性から生じ得る。たとえば、対話型のペダーセンコミットメント(PC)スキームでは、第1のユーザは、乱数rに基づいて生成されるコミットメント値PC(t,r)を送信することによって、トランザクション量tをコミットすることができる。コミットメント値が生成され、第2のユーザは乱数rを得ることによってのみトランザクション量tを明らかにすることができる。トランザクション量が有効であることを確実にするために、トランザクション量が0以上でありアカウント残高以下であることを証明するための、レンジプルーフが作成され得る。
【0006】
いくつかの場合、あるユーザから複数のトランザクションが行われ得る。レンジプルーフはアカウントの残高と関連付けられるので、複数のトランザクションがブロックチェーンにおいて順番に検証されることが重要である。したがって、対応するレンジプルーフは、各トランザクションの後でアカウントの残高と正しく関連付けられ得る。
【発明の概要】
【課題を解決するための手段】
【0007】
本開示の実装形態は、アカウント注釈モデルに基づくゼロ知識証明を用いた、ブロックチェーントランザクションの非対話型のプライバシーを保護する検証のためのコンピュータで実行される方法を含む。より具体的には、本開示の実装形態は、アカウント注釈モデルのもとでブロックチェーンアカウント間のトランザクションを承認することを対象とする。いくつかの実装形態では、アカウント注釈モデルでは、アカウント残高が注釈の集合体として記録される。本開示の実装形態によれば、トランザクションの承認は、トランザクション量、注釈値、またはコミットメントを生成するための乱数を明らかにすることなく、コミットメントスキームおよび公開鍵暗号化スキームまたは統合暗号化スキームに基づいて実行され得る。
【0008】
いくつかの実装形態では、活動は、第1のアカウントから、対応する複数の注釈を特定する複数の注釈識別子(ID)、複数の注釈の少なくとも一部分によって支払われる第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメント、複数の注釈の合計値からトランザクション量を差し引くことによる変化のコミットメント、第2のアカウントの公開鍵によって暗号化されるトランザクション量のコミットメントを生成するために使用される第1の乱数、第2のアカウントの公開鍵によって暗号化されるトランザクション量、第1のアカウントの公開鍵によって暗号化される変化のコミットメントを生成するために使用される第2の乱数、第1のアカウントの公開鍵によって暗号化される変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明の、デジタル署名されたコピーを受信することと、第1のアカウントの公開鍵を使用して、デジタル署名されたコピーに対応するデジタル署名を検証することと、トランザクション量および変化が0以上であることを1つまたは複数のレンジプルーフが証明すると決定することと、複数の注釈の合計値がトランザクション量および変化の合計に等しいと決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであり、かつトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じである場合、複数の注釈、トランザクション量、および変化に基づいて、第1のアカウントおよび第2のアカウントを更新することとを含む。他の実装形態は、対応するシステムと、装置と、コンピュータ記録デバイスに符号化される、方法の活動を実行するように構成されるコンピュータプログラムとを含む。
【0009】
これらのおよび他の実装形態は各々、任意選択で、以下の特徴のうちの1つまたは複数を含むことがあり、それらの特徴とは、複数の注釈の各々が、注釈タイプ、注釈値のコミットメント、公開鍵暗号化または統合暗号化によって暗号化される注釈値、および公開鍵暗号化または統合暗号化によって暗号化されるコミットメントを生成するために使用される乱数のうちの1つまたは複数を含むこと、複数の注釈の各々が同じ注釈タイプを有すると決定すること、トランザクション量のコミットメント、変化のコミットメント、および注釈値のコミットメントが準同型であるコミットメントスキームを使用して生成されること、複数の注釈の合計値がトランザクション量および変化の合計に等しいかどうかを決定することが、各注釈値のコミットメントの合計と、トランザクション量のコミットメントと変化のコミットメントの合計とを比較することに基づくこと、複数の注釈IDの各々が、トランザクションアドレスと、トランザクション出力における対応する注釈の順序を示すインデックス番号とを含み、トランザクションアドレスがトランザクションのトランザクション情報をハッシュすることによって生成されること、複数の注釈IDの各々が第1のアカウントと関連付けられると決定すること、第1の乱数およびトランザクション量がPaillier暗号化または岡本-内山暗号化に基づいて第2のアカウントの公開鍵によって暗号化されること、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することが、ブロックチェーンネットワークの外側の第1のアカウントと第2のアカウントとの間の対話なしでゼロ知識証明に基づくことである。
【0010】
本開示はまた、1つまたは複数のプロセッサによって実行されると、本明細書で提供される方法の実装形態に従って1つまたは複数のプロセッサに動作を実行させる命令が記録された、1つまたは複数のプロセッサに結合される1つまたは複数の非一時的コンピュータ可読記録媒体を提供する。
【0011】
本開示はさらに、本明細書で提供される方法を実施するためのシステムを提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供される方法の実装形態に従って動作を実行させる命令が記録された、1つまたは複数のプロセッサに結合されるコンピュータ可読記録媒体とを含む。
【0012】
本開示による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることを了解されたい。すなわち、本開示による方法は、本明細書で特に説明される態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【0013】
本開示の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載される。本開示の他の特徴および利点が、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0014】
図1】本開示の実装形態を実行するために使用され得る例示的な環境の図である。
図2】本開示の実装形態による例示的な概念のアーキテクチャの図である。
図3】本開示の実装形態による、アカウント注釈モデルに基づくブロックチェーントランザクションのプライバシーが保護された承認の例示的なプロセスの図である。
図4】本開示の実装形態による、アカウント注釈モデルに基づく例示的なブロックチェーントランザクションの図である。
図5】本開示の実装形態に従って実行され得る例示的なプロセスの図である。
【発明を実施するための形態】
【0015】
様々な図における同様の参照記号は同様の要素を示す。
【0016】
本開示の実装形態は、アカウント注釈モデルに基づくゼロ知識証明を用いた、ブロックチェーントランザクションの非対話型のプライバシーが保護される検証のためのコンピュータで実行される方法を含む。より具体的には、本開示の実装形態は、アカウント注釈モデルのもとでブロックチェーンアカウント間のトランザクションを承認することを対象とする。いくつかの実装形態では、アカウント注釈モデルでは、アカウント残高が注釈の集合体として記録される。本開示の実装形態によれば、トランザクションの承認は、トランザクション量、注釈値、またはコミットメントを生成するための乱数を明らかにすることなく、コミットメントスキームおよび公開鍵暗号化スキームまたは統合暗号化スキームに基づいて実行され得る。いくつかの実装形態では、活動は、第1のアカウントから、対応する複数の注釈を特定する複数の注釈識別子(ID)、複数の注釈の少なくとも一部分によって支払われる第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメント、複数の注釈の合計値からトランザクション量を差し引くことによる変化のコミットメント、第2のアカウントの公開鍵によって暗号化されるトランザクション量のコミットメントを生成するために使用される第1の乱数、第2のアカウントの公開鍵によって暗号化されるトランザクション量、第1のアカウントの公開鍵によって暗号化される変化のコミットメントを生成するために使用される第2の乱数、第1のアカウントの公開鍵によって暗号化される変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明の、デジタル署名されたコピーを受信することと、第1のアカウントの公開鍵を使用して、デジタル署名されたコピーに対応するデジタル署名を検証することと、トランザクション量および変化が0以上であることを1つまたは複数のレンジプルーフが証明すると決定することと、複数の注釈の合計値がトランザクション量および変化の合計に等しいと決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することと、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであり、かつトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じである場合、複数の注釈、トランザクション量、および変化に基づいて、第1のアカウントおよび第2のアカウントを更新することとを含む。
【0017】
本開示の、および上で紹介された実装形態のさらなる文脈を提供すると、コンセンサスネットワーク(たとえば、ピアツーピアノードからなる)、分散型台帳システム、または単にブロックチェーンとも呼ばれ得る、ブロックチェーンネットワークは、参加するエンティティが安全かつ変更不可能にトランザクションを行いデータを記録することを可能にする。ブロックチェーンは、パブリックブロックチェーン、プライベートブロックチェーン、またはコンソーシアムブロックチェーンとして提供され得る。本開示の実装形態は、参加するエンティティの間で公開されているパブリックブロックチェーンに関して、本明細書でさらに詳細に説明される。しかしながら、本開示の実装形態はあらゆる適切なタイプのブロックチェーンにおいて実現され得ることが企図される。
【0018】
パブリックブロックチェーンでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンに参加することができ、それらの各々がパブリックブロックチェーンの中の少なくとも1つのノードを運用する。したがって、パブリックブロックチェーンは、参加するエンティティに関して公開のネットワークであると見なされ得る。いくつかの例では、ブロックが有効となりブロックチェーンに追加されるには、過半数のエンティティ(ノード)がそれぞれのブロックに署名しなければならない。例示的なパブリックブロックチェーンには、ピアツーピア支払ネットワーク(暗号通貨ネットワーク)であるビットコインネットワークにおいて使用されるブロックチェーンがある。ブロックチェーンという用語は一般にビットコインネットワークに関して言及されるが、本明細書では、ブロックチェーンは、ビットコインネットワークに特に言及することなく分散型台帳を全般的に指す。
【0019】
一般に、パブリックブロックチェーンはパブリックトランザクションをサポートする。パブリックトランザクションはブロックチェーン内のノードのすべてと共有され、ブロックチェーンはすべてのノードにわたって複製される。すなわち、すべてのノードがブロックチェーンに関して完全にコンセンサスのとれた状態にある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、ブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルには、限定はされないが、ビットコインネットワークにおいて実装されるプルーフオブワーク(POW)がある。
【0020】
本開示の実装形態は、上記の文脈に鑑みて本明細書でさらに詳細に説明される。より具体的には、上で紹介されたように、本開示の実装形態は、アカウント注釈モデルのもとでブロックチェーンアカウント間のトランザクションを承認することを対象とし、アカウント残高は注釈の集合体として記録される。いくつかの実施形態では、本明細書でさらに詳細に説明されるように、トランザクションの承認は、トランザクション量、注釈値、またはコミットメントを生成するための乱数を明らかにすることなく、コミットメントスキームおよびHEに基づいて実行され得る。
【0021】
本開示の実装形態によれば、ブロックチェーンノードは、アカウント注釈モデルを記録方法として使用することができる。アカウント残高モデルと比較すると、アカウント注釈モデルを採用するブロックチェーンノードは、アカウント残高の代わりに複数の注釈の記録をとる。複数の注釈の各々が、注釈タイプおよび注釈値と関連付けられる。注釈タイプは、注釈と関連付けられる通貨または資産のタイプであり得る。通貨のタイプは、現実の通貨または暗号通貨の任意のタイプであり得る。注釈値は、対応する注釈値を用いて注釈の額面値を示すことができる。
【0022】
データのプライバシーを保護するために、トランザクションは、ブロックチェーンユーザアカウントと関連付けられるトランザクション量または金銭の量の情報を明らかにすることなく、コミットメントに基づいてブロックチェーン(台帳)に記録され得る。乱数を使用してトランザクション量のコミットメントを生成するために、コミットメントスキームが使用され得る。例示的なコミットメントスキームには、限定はされないが、ペダーセンコミットメント(PC)スキームがある。トランザクション量はコミットメントの中に秘匿されるので、ブロックチェーンユーザアカウントの値をトランザクション量が超えないことを証明するために、1つまたは複数のレンジプルーフが使用され得る。
【0023】
アカウント残高モデルのもとでは、レンジプルーフがアカウント残高と関連付けられる。2つ以上のトランザクションが行われるが、すべてのトランザクションがブロックチェーン上で承認され記録されるのではない場合、レンジプルーフは正しくないアカウント残高と関連付けられることがあり、したがって無効であることがある。それと比較して、アカウント注釈モデルのもとでは、アカウント値は複数の注釈の合計によって計算される。あるトランザクション量がブロックチェーンユーザアカウント間で移動されるべきであるとき、合成値がそのトランザクション量以上である複数の注釈の一部分が、その移動を行うために使用され得る。追加の移動は、移動されるべき量よりも大きい合成値を残りの注釈が有するという条件のもとで行われ得る。したがって、トランザクションがブロックチェーン上で承認され記録されない場合であっても、残りの注釈の合成値がトランザクション量以上であることを示すレンジプルーフは、それでも有効であり得る。
【0024】
ユーザA(ノード)とユーザB(ノード)との間のトランザクションを承認するために、たとえば、トランザクション量および乱数は、ユーザBの公開鍵に基づいて公開鍵暗号化スキーム(たとえば、EIGamal)または統合暗号化スキーム(たとえば、ECIES)を使用して、ユーザAによって暗号化され得る。トランザクション量および乱数はまた、トランザクションを承認するためのゼロ知識証明(ZKP)を生成するために使用され得る。トランザクションのコミットメント、暗号化されたトランザクション量、暗号化された乱数、およびZKPは、トランザクションが有効であるかどうかを検証するために、ブロックチェーンノードによって使用され得る。承認プロセスの間、アカウント残高、トランザクション量、または乱数は、明らかにされる必要がなく、またはユーザBに送信される必要がない。
【0025】
図1は、本開示の実装形態を実行するために使用され得る例示的な環境100を図示する。いくつかの例では、例示的な環境100は、エンティティがパブリックブロックチェーン102に参加することを可能にする。例示的な環境100は、コンピューティングシステム106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は有線および/またはワイヤレス通信リンクを通じてアクセスされ得る。
【0026】
図示される例では、コンピューティングシステム106、108は各々、パブリックブロックチェーン102の中のノードとしての参加を可能にする、任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスには、限定はされないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンがある。いくつかの例では、コンピューティングシステム106、108は、パブリックブロックチェーン102と対話するための、1つまたは複数のコンピュータで実施されるサービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第1のエンティティのコンピュータで実施されるサービスをホストすることができる。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第2のエンティティのコンピュータで実施されるサービスをホストすることができる。図1の例では、パブリックブロックチェーン102はノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108はそれぞれ、パブリックブロックチェーン102に参加する第1のエンティティおよび第2のエンティティのノードを提供する。
【0027】
図2は、本開示の実装形態による例示的な概念のアーキテクチャ200を図示する。例示的な概念のアーキテクチャ200は、エンティティレイヤ202、ホストされたサービスレイヤ204、およびパブリックブロックチェーンレイヤ206を含む。図示される例では、エンティティレイヤ202は、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)という3つのエンティティを含み、各エンティティがそれぞれのトランザクション管理システム208をもつ。
【0028】
図示される例では、ホストされるサービスレイヤ204は、各トランザクション管理システム208のためのブロックチェーンインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、通信プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、図1のネットワーク110)を通じてそれぞれのブロックチェーンインターフェース210と通信する。いくつかの例では、各ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンレイヤ206との間の通信接続を提供する。より具体的には、各ブロックチェーンインターフェース210は、それぞれのエンティティがブロックチェーンレイヤ206のブロックチェーンネットワーク212に記録されるトランザクションを行うことを可能にする。いくつかの例では、ブロックチェーンインターフェース210とブロックチェーンレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して行われる。いくつかの例では、ブロックチェーンインターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンノードを「ホスト」する。たとえば、ブロックチェーンインターフェース210は、ブロックチェーンネットワーク212へのアクセスのためにアプリケーションプログラミングインターフェース(API)を提供する。
【0029】
本明細書で説明されるように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を変更不可能に記録する複数のノード214を含む、ピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に図示されるが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214はブロックチェーン216のコピーを記録する。いくつかの実装形態では、ブロックチェーン216は、パブリックブロックチェーンに参加する2つ以上のエンティティの間で実行されるトランザクションと関連付けられる情報を記録する。
【0030】
図3は、本開示の実装形態による、アカウント注釈モデルに基づくブロックチェーントランザクションのプライバシーが保護された承認の例示的な方法300を図示する。高水準において、例示的な方法300が、ユーザノードA302、ユーザノードB(図3に示されない)、およびコンセンサスノードとも呼ばれるブロックチェーンノード304によって実行される。ユーザノードA302のアカウントとユーザノードBのアカウントの両方が、アカウント注釈モデルに基づく。すなわち、ユーザノードA302およびユーザノードBの通貨が複数の注釈として保持される。価値の移動などのトランザクションが、ユーザノードA302からユーザノードBへと行われ得る。ユーザノードA302は、トランザクション量をカバーするようにそのアカウントから注釈のセットを選択することができる。注釈のセットの合計値とトランザクション量との差は、ユーザノードA302の変化として計算され得る。
【0031】
アカウントのプライバシーを保護するために、ユーザノードA302は、乱数rに基づいて、PCなどのコミットメントスキームを使用して、トランザクション量tのコミットメントを生成することができる。ユーザノードA302は、ユーザノードBの公開鍵に基づいて公開鍵暗号化スキームまたは統合暗号化スキームを使用して、トランザクション量および乱数を暗号化することができる。ユーザノードA302はまた、ユーザノードAの公開鍵に基づいて公開鍵暗号化スキームまたは統合暗号化スキームを使用して、変化および変化に対応する乱数を暗号化することができる。トランザクションの有効性を検証するために、ブロックチェーンノード304は、ZKPに基づいてコミットメントの中の対応するトランザクション量および乱数を用いて、暗号化されたトランザクション量および乱数を検証することができる。トランザクション量および乱数が一致する場合、トランザクションは、ブロックチェーンノード304によって有効であると決定される。例示的な方法300のさらなる詳細が図3の以下の説明において論じられる。
【0032】
306において、ユーザノードA302は、トランザクション量をユーザノードBに移動させるための複数の注釈を選択する。ユーザノードA302およびユーザノードBは、ブロックチェーンコンセンサスノード、またはコンセンサスプロセスに参加することなくブロックチェーンネットワークを使用するユーザノードであり得る。前に論じられたように、ユーザノードA302は、記録をとるためにアカウント注釈モデルを使用することができる。アカウント残高モデルのもとでアカウント残高の記録をとる代わりに、ユーザノードA302のアカウント値は、その注釈の合計値によって測られる。ユーザノードA302は、トランザクション量をカバーするのに十分な複数の注釈を自身が持つ注釈から選択することができる。たとえば、トランザクション量が7.5ビットコインである場合、ユーザノードA302は、トランザクション量をカバーするために、それぞれ5ビットコイン、2ビットコイン、および1ビットコインの価値がある3つの注釈を選択することができる。
【0033】
いくつかの実装形態では、各注釈は、注釈の通貨または資産のタイプを特定する注釈タイプを有し得る。各注釈は、トランザクションIDおよびインデックス番号を含む注釈IDも有し得る。トランザクションIDは、トランザクション情報のハッシュであり得る。インデックスは、トランザクション出力における対応する注釈の順序を示し得る。たとえば、5ビットコイン、2ビットコイン、および1ビットコインという注釈量をもつ3つの注釈を送信するとき、2ビットコインの注釈は、2というインデックス番号をもつ2番目のトランザクション出力であり得る。いくつかの例では、k個の注釈が選択され、それらの注釈タイプおよび注釈IDは、NoteType1、NoteIda1、...、NoteTypek、NoteIdakとして表され得る。いくつかの例では、同じタイプの注釈は、トランザクション量の移動を実行するために選択され得る。いくつかの場合、変化に対応する注釈IDおよびトランザクション量は、トランザクションが作製される前に取得されることが可能ではない。そのような場合、前記注釈IDは、コンセンサスおよび契約更新を実行できるブロックチェーン契約に基づいて生成され得る。
【0034】
308において、ユーザノードA302は、複数の注釈の合計値およびトランザクション量に基づいて変化を計算する。注釈はトランザクション量より大きい合計値を有するように選択されるので、変化は、選択された注釈の合計値からトランザクション量を差し引いたものとして計算され得る。トランザクション量を表すためにtを使用し、変化を表すためにt0を使用すると、変化の計算をt0=a1+...+ak-tとして表すことができ、ここでa1、...、akは、トランザクション量tをカバーするために、ユーザノードA302によって選択されるk個の注釈の注釈値である。
【0035】
310において、ユーザノードA302は、複数の注釈に対応する複数の乱数を生成し、変化に対応する乱数を計算する。複数の乱数が、注釈値のコミットメントを生み出すために生成され得る。たとえば、a1、...、akは注釈値であり、注釈値に対応する乱数をra1、...、rakとして表現することができる。注釈のコミットメントは、PC(ra1、a1)、...、PC(rak、ak)として表現され得る。
【0036】
いくつかの実装形態では、乱数r0は、変化t0に対応するように計算され得る。この計算を、r0=ra1+...+rak-rと表現することができ、ここでrは、トランザクション量tのためのコミットメントを生み出すために生成される乱数である。r0を計算することによって、ユーザノードA302は、移動される注釈の合計値が受け取られる注釈の合計値に等しいことを示すために、追加のZKPを生成する必要がない。
【0037】
312において、ユーザノードA302は、トランザクション量および変化のコミットメントと公開鍵暗号化された暗号文とを生成する。データのプライバシーを保護するために、注釈値、トランザクション量、および変化を含む金銭的な値は、コミットメントスキームに基づいてコミットメントによって秘匿され得る。ブロックチェーンは、記録としてコミットメントを保持することができる。いくつかの実装形態では、PCなどの準同型なコミットメントスキームが、コミットメントを生成するために使用され得る。非限定的な例としてPCを使用すると、T=PC(r,t)=grhtとして表現され得るトランザクションtのPCは、乱数rを使用することによって生成されることが可能であり、ここでgおよびhは楕円曲線のジェネレータであってよく、PC(r,t)は曲線点のスカラー乗算である。藤崎-岡本コミットメントスキームなどのHEに基づく他のコミットメントスキームも、コミットメント値を生成するために使用され得ることを理解されたい。
【0038】
トランザクション量および乱数はまた、ユーザノードBの公開鍵を使用して暗号化され得る。この暗号化は、PaillierもしくはElGamalアルゴリズムなどの公開鍵暗号化スキーム、またはECIESなどの統合暗号化スキームに基づき得る。したがって、ユーザノードBは、トランザクション量および乱数を明らかにするために、その対応する公開鍵を使用することができる。公開鍵暗号化される乱数およびトランザクション量を、それぞれPB=E(PkB,r)、QB=E(PkB,t)と表現することができ、ここでPkBはユーザノードBの公開鍵を表す。
【0039】
同様に、変化のコミットメントをT0=PC(r0,t0)と表現することができる。乱数r0および変化量t0を、それぞれPA=E(PkA,r0)、QA=E(PkA,t0)として表現されるユーザノードA302の公開鍵としても暗号化することができ、ここでPkAはユーザノードA302の公開鍵を表す。
【0040】
314において、ユーザノードA302は、1つまたは複数のレンジプルーフを生成する。いくつかの実装形態では、第1のレンジプルーフRP1が、トランザクション量t≧0であることを示すために生成され得る。第2のレンジプルーフRP2は、変化t0≧0であることを示すために生成されることがあり、言い換えると、複数の注釈の合計値はトランザクション量以上である。
【0041】
316において、ユーザノードA302はZKPを生成する。いくつかの実装形態では、ZKPは、PBおよびQBに含まれる乱数rおよびトランザクション量tが、コミットメントTに含まれる対応する乱数およびトランザクション量に等しいことを証明するために使用され得る。いくつかの実装形態では、ZKPは、zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK)を使用して生成され得る。
【0042】
318において、ユーザノードA302は、トランザクションデータのデジタル署名を生成するために秘密鍵を使用する。いくつかの実装形態では、トランザクションデータは、NoteType1、NoteIda1、...、NoteTypek、NoteIdak; T0、T、PB、QB、PA、QA、RP1、RP2、およびZKPを含み得る。
【0043】
320において、ユーザノードA302は、ブロックチェーンネットワークにトランザクションデータのデジタル署名されたコピーを提出する。
【0044】
322において、ブロックチェーンノード304はデジタル署名を検証する。デジタル署名の検証は、トランザクションデータがユーザノードA302によって送信されることを確実にできる。
【0045】
324において、ブロックチェーンノード304は、複数の注釈の注釈タイプを検証する。言い換えると、ブロックチェーンノード304は、NoteType1〜NoteTypekが同じであることを検証する。
【0046】
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)であることを示すことによって、a1+...+ak=t+t0であることが証明され得る。
【0047】
328において、ブロックチェーンノード304は、1つまたは複数のレンジプルーフを検証する。
【0048】
330において、ブロックチェーンノード304はZKPを検証し、ZKPの検証が成功する場合、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。上で論じられたように、ZKPはzk-SNARKを使用して生成され得る。
【0049】
いくつかの実装形態では、ZKPはSigmaプロトコルにも基づいて生成され得る。例としてPaillier公開鍵暗号化を使用すると、PBおよびQBを、それぞれPB=E(PkB,r)=uryn、QB=E(Pk,t)=utznとして表現することができ、ここでuおよびnは公開鍵であり、yおよびzは乱数である。
【0050】
Sigmaプロトコルに基づいてZKPを生成するために、ユーザノードA302は、3つの暗号文C、D、およびEを計算するために、4つの追加の乱数r*、t*、y*、およびz*を生成することができる。C、D、およびEは、C=gr*ht*、D=ur*y*n、およびE=ut*z*nとして表現され得る。ハッシュされた値xは、x=Hash(T,PB,QB,g,h,u,n,C,D,E)として表現され得る、T、PB、QB、g、h、u、n、C、D、およびEをハッシュすることによって計算され得る。4つの追加の暗号文a、b、c、およびdは、a=r*+xr、b=t*+xt、c=y*yx、d=z*zxとして計算され得る。最後に、ZKPはZKP=(C,D,E,a,b,c,d)として形成され得る。
【0051】
ZKPを検証するために、ブロックチェーンノード304はまず、x=Hash(T,PB,QB,g,h,u,n,C,D,E)を計算することができる。ブロックチェーンノード304は、gahb=CTxであるかどうか、uacn=DPxであるかどうか、およびubdn=EQxであるかどうかを検証することができる。そうである場合、ZKPは検証され、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。
【0052】
別の例では、OU公開鍵暗号化が、トランザクション量および乱数を暗号化するために使用され得る。PBおよびQBをそれぞれ、PB=E(PkB,r)=urvy、QB=E(Pk,t)=utvzとして表現することができ、ここでu、v、およびnは公開鍵であり、r、y、およびzは乱数である。
【0053】
Sigmaプロトコルに基づいてZKPを生成するために、ユーザノードA302は、3つの暗号文C、D、およびEを計算するために、4つの追加の乱数r*、t*、y*、およびz*を生成することができる。暗号文C、D、およびEは、C=gr*ht*、D=ur*v*y、およびE=ut*v*zとして計算され得る。ハッシュされた値xは、x=Hash(T,PB,QB,g,h,u,v,n,C,D,E)として表現され得る、T、PB、QB、g、h、u、v、n、C、D、およびEをハッシュすることによって計算され得る。4つの追加の暗号文a、b、c、およびdは、a=r*+xr、b=t*+xt、c=y*+xy、d=z*+xzとして計算され得る。最後に、ZKPはZKP=(C,D,E,a,b,c,d)として形成され得る。
【0054】
ZKPを検証するために、ブロックチェーンノード304は、x=Hash(T,PB,QB,g,h,u,v,n,C,D,E)を計算することができる。ブロックチェーンノード304は、gahb=CTxであるかどうか、uavc=DPxであるかどうか、およびubvd=EQxであるかどうかを検証することができる。そうである場合、ZKPは検証され、ユーザノードBの公開鍵を使用して暗号化されるトランザクション量および乱数は、PCによって秘匿される対応するトランザクション量および乱数と同じであることが証明される。
【0055】
332において、ブロックチェーンノード304は、複数の注釈がユーザノードA302に属することを検証する。検証は、注釈ID、NoteIDaiに基づくことがあり、ここでi=1,...,kである。
【0056】
334において、ブロックチェーンノード304は、ユーザノードA302およびユーザノードBのアカウントを更新する。ユーザノードA302およびユーザノードBのアカウントはアカウント注釈モデルのもとで記録として注釈を保持するので、トランザクションの後で、ユーザノードA302から移動される複数の注釈が、ユーザノードA302のアカウントから除去され得る。変化はユーザノードAのアカウントへと戻るように加算され得る。トランザクション量、ならびに対応する注釈タイプおよび注釈IDは、ユーザノードBのアカウントに新しい注釈として加算され得る。アカウントの更新は、図4を参照して本明細書においてさらに詳細に説明される。
【0057】
図4は、本開示の実装形態による、アカウント注釈モデルに基づく例示的なブロックチェーントランザクション400を図示する。例示的なブロックチェーントランザクション400において示されるように、ユーザノードA402はトランザクション量tをユーザノードB404に移す。トランザクションの前に、ユーザノードA402は、NoteIda1、PC(ra1,a1)、E(PkA,ra1)、E(PkA,a1); NoteIda2、PC(ra2,a2)、E(PkA,ra2)、E(PKA,a2); ... ; NoteIdam、PC(ram,am)、E(PkA,ram)、E(PKA,am)を含むm個の注釈を有する。
【0058】
図3を参照して例として本明細書で説明されるコミットメントスキーム、暗号化スキーム、およびトランザクションプロセスを使用すると、ユーザノードA402はトランザクションデータ408を生成し、トランザクションデータ408は、k個の選択された注釈の注釈IDと、NoteType1、NoteIda1、...、NoteTypek、NoteIdakとして表されるそれらのタイプとを含み得る。トランザクションデータ408はさらに、T0、T、PB、QB、PA、QA、RP1、RP2、およびZKPを含み得る。トランザクションデータ408が生成された後で、ユーザノードA402は、デジタル署名を追加し、合意のためにデジタル署名されたトランザクションデータをブロックチェーンネットワーク406に提出することができる。
【0059】
トランザクションの後で、k個の選択された注釈が、ユーザノードA402のアカウントから除去され得る。変化がユーザノードA402へ戻るように加算され得る。したがって、ユーザノードA402は、NoteIda(k+1)、PC(ra(k+1),a(k+1))、E(PkA,ra(k+1))、E(PkA,a(k+1))、...、NoteIdam、PC(ram,am)、E(PkA,ram)、E(PkA,am)、NoteIda(m+1)、PC(r0,t0)、E(PkA,r0)、E(PkA,t0)として表される注釈を有することができ、NoteIda(m+1)は変化t0の注釈IDを表す。
【0060】
トランザクションの前に、ユーザノードB404は、NoteIdb1、PC(rb1,b1)、E(PkB,rb1)、E(PkB,b1); NoteIdb2、PC(rb2,b2)、E(PkB,rb2)、E(PkB,b2); ... ; NoteIdbm、PC(rbm,bm)、E(PkB,rbm)、E(PkB,bm)として表され得る、m個の注釈を有する。トランザクションの後で、トランザクション量がユーザノードB404に加算され得る。ユーザノードB404は、NoteIdb1、PC(rb1,b1)、E(PkB,rb1)、E(PkB,b1)、...、NoteIdbm、PC(rbm,bm)、E(PkB,rbm)、E(PkB,bm)、NoteIdb(m+1)、PC(r,t)、E(PkB,r)、E(PkB,t)として表される注釈を有することができ、NoteIdb(m+1)はトランザクション量tの注釈IDを表す。
【0061】
図5は、本開示の実装形態に従って実行され得る例示的なプロセス500を図示する。提示を明確にするために、以下の説明は全般に、この説明では他の図面の文脈で例示的なプロセス500を説明する。しかしながら、例示的なプロセス500は、たとえば、任意のシステム、環境、ソフトウェア、およびハードウェア、またはシステム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得ることが理解されるであろう。いくつかの実装形態では、例示的なプロセス500の様々なステップは、並列に、組合せで、ループで、または任意の順序で行われ得る。
【0062】
502において、コンセンサスノードは、第1のアカウントから、対応する複数の注釈を特定する複数の注釈IDのデジタル署名されたコピーを受信する。いくつかの例では、コンセンサスノードはさらに、複数の注釈の少なくとも一部分によって支払われる、第1のアカウントと第2のアカウントとの間のトランザクションのトランザクション量のコミットメントを受信することができる。いくつかの例では、コンセンサスノードはさらに、複数の注釈の合計値からトランザクション量を差し引くことによって、変化のコミットメントを受信することができる。いくつかの例では、コンセンサスノードはさらに、第2のアカウントの公開鍵によって暗号化されるトランザクション量のコミットメントを生成するために使用される第1の乱数と、第2のアカウントの公開鍵によって暗号化されるトランザクション量とを受信することができる。いくつかの例では、コンセンサスノードはさらに、第1のアカウントの公開鍵によって暗号化される変化のコミットメントを生成するために使用される第2の乱数、第1のアカウントの公開鍵によって暗号化される変化、1つまたは複数のレンジプルーフ、および1つまたは複数の選択された乱数に基づいて生成されるゼロ知識証明を受信することができる。
【0063】
いくつかの実装形態では、複数の注釈の各々が、注釈タイプ、注釈値のコミットメント、公開鍵暗号化スキームまたは統合暗号化スキームによって暗号化される注釈値、および公開鍵暗号化スキームまたは統合暗号化スキームによって暗号化されるコミットメントを生成するために使用される乱数のうちの1つまたは複数を含む。いくつかの実装形態では、トランザクション量のコミットメント、変化のコミットメント、および注釈値のコミットメントが、準同型であるコミットメントスキームを使用して生成される。いくつかの実装形態では、複数の注釈IDの各々は、トランザクションアドレスと、トランザクション出力における対応する注釈の順序を示すインデックス番号とを含み、トランザクションアドレスは、トランザクションのトランザクション情報をハッシュすることによって生成される。いくつかの実装形態では、第1の乱数およびトランザクション量は、EIGamal、ECIESなどの暗号化スキームに基づいて、第2のアカウントの公開鍵によって暗号化される。
【0064】
504において、コンセンサスノードは、デジタル署名されたコピーに対応するデジタル署名を、第1のアカウントの公開鍵を使用して検証する。
【0065】
506において、コンセンサスノードは、トランザクション量および変化が0以上であることを1つまたは複数のレンジプルーフが証明すると決定する。
【0066】
508において、コンセンサスノードは、複数の注釈の合計値がトランザクション量と変化の合計に等しいと決定する。いくつかの実装形態では、複数の注釈の合計値がトランザクション量および変化の合計に等しいかどうかを決定することは、各注釈値のコミットメントの合計と、トランザクション量のコミットメントと変化のコミットメントの合計とを比較することに基づく。
【0067】
510において、コンセンサスノードは、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、およびトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定する。いくつかの実装形態では、コンセンサスノードはさらに、複数の注釈の各々が同じ注釈タイプを有すると決定する。いくつかの実装形態では、コンセンサスノードはさらに、複数の注釈IDの各々が第1のアカウントと関連付けられると決定する。いくつかの実装形態では、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであるかどうか、および、トランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じであるかどうかを決定することは、ブロックチェーンネットワークの外側の第1のアカウントと第2のアカウントとの間の対話なしで、ゼロ知識証明に基づく。
【0068】
512において、コンセンサスノードは、コミットメントの中のトランザクション量が暗号化されるトランザクション量と同じであり、かつトランザクション量のコミットメントを生成するために使用される乱数が第1の乱数と同じである場合、複数の注釈、トランザクション量、および変化に基づいて、第1のアカウントおよび第2のアカウントを更新する。
【0069】
本明細書で説明される主題の実装形態は、特定の利点または技術的な効果を実現するように実装され得る。たとえば、本開示の実装形態は、アカウント残高およびブロックチェーンノードのトランザクション量がトランザクションの間に非公開であることを可能にする。資金移動の受領者は、トランザクションを確認すること、またはコミットメントを検証するために乱数を使用することが必要ではなく、トランザクションの承認は非相互的であり得る。ブロックチェーンノードは、公開鍵暗号化スキームおよびコミットメントスキームに基づいてトランザクションを承認して、ゼロ知識証明を可能にできる。
【0070】
説明される方法は、様々なモバイルコンピューティングデバイスのアカウント/データセキュリティの向上を可能にする。アカウントの残高およびトランザクション量は、コミットメントスキームによって秘匿され得る。したがって、コンセンサスノードは、アカウントの実際のアカウント残高を明らかにすることなく、トランザクションの後の台帳のアカウント残高を更新することができる。トランザクションを確認するために乱数を受領者に送信する必要がないので、データ漏洩のリスクを減らすことができ、乱数を管理するために使用することが必要なコンピューティングリソースおよびメモリリソースがより少なくなる。
【0071】
本明細書で説明される実装形態および動作は、本明細書で開示される構造もしくはそれらのうちの1つまたは複数の組合せを含めて、デジタル電子回路で、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェアで実装され得る。動作は、1つまたは複数のコンピュータ可読記録デバイスに記録される、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。データ処理装置、コンピュータ、またはコンピューティングデバイスは、前述の1つのプログラマブルプロセッサ、1つのコンピュータ、1つのシステムオンチップ、またはこれらの複数、または組合せを例として含む、データを処理するための装置、デバイス、および機械を包含し得る。装置は、専用論理回路、たとえば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)を含み得る。装置はまた、対象のコンピュータプログラムのための実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトロルスタック、データベース管理システム、オペレーティングシステム(たとえば、1つのオペレーティングシステムまたはオペレーティングシステムの組合せ)、クロスプラットフォームランタイム環境、仮想マシン、またはこれらの1つまたは複数の組合せを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0072】
コンピュータプログラム(たとえば、プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプト、またはコードとしても知られている)は、コンパイル型またはインタプリタ型言語、宣言型または手続き型言語を含む、任意の形式のプログラミング言語で書かれてよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む、任意の形式で展開されてよい。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに記録される1つまたは複数のスクリプト)を保持するファイルの一部分、対象のプログラムに専用の単一のファイル、または複数の協調的なファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記録するファイル)に記録され得る。コンピュータプログラムは、1つの場所に位置する、または、複数の場所に分散され通信ネットワークによって相互接続される、1つのコンピュータまたは複数のコンピュータ上で実行され得る。
【0073】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って活動を実行するためのプロセッサ、ならびに、命令およびデータを記録するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記録するための1つまたは複数のマスストレージデバイスも含み、または、そのマスストレージデバイスからデータを受信し、もしくはそこへデータを移し、もしくはその両方を行うように、動作可能に結合される。コンピュータは、別のデバイス、たとえば、モバイルデバイス、携帯情報端末(PDA)、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記録デバイスに埋め込まれ得る。コンピュータプログラム命令およびデータを記録するのに適したデバイスは、例として、半導体メモリデバイス、磁気ディスク、および磁気光学ディスクを含む、不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されても、またはそれに組み込まれてもよい。
【0074】
モバイルデバイスは、ハンドセット、ユーザ機器(UE)、携帯電話(たとえば、スマートフォン)、タブレット、ウェアラブルデバイス(たとえば、スマートウォッチおよびスマート眼鏡)、人体に埋め込まれたデバイス(たとえば、バイオセンサ、人工内耳)、または他のタイプのモバイルデバイスを含み得る。モバイルデバイスは、様々な通信ネットワーク(以下で説明される)にワイヤレスに(たとえば、高周波(RF)信号を使用して)通信することができる。モバイルデバイスは、モバイルデバイスの現在の環境の特性を決定するためのセンサを含み得る。センサは、カメラ、マイクロフォン、近接センサ、GPSセンサ、モーションセンサ、加速度計、周辺光センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(たとえば、Wi-Fiおよびセルラー無線)、温度センサ、または他のタイプのセンサを含み得る。たとえば、カメラは、可動レンズまたは固定レンズ、フラッシュ、イメージセンサ、およびイメージプロセッサを伴う、前面カメラまたは後面カメラを含み得る。カメラは、顔認識および/または虹彩認識のための詳細を捉えることが可能なメガピクセルカメラであり得る。カメラは、データプロセッサ、およびメモリに記録されるまたはリモートでアクセスされる認証情報とともに、顔認識システムを形成することができる。顔認識システムまたは1つまたは複数のセンサ、たとえば、マイクロフォン、モーションセンサ、加速度計、GPSセンサ、またはRFセンサは、ユーザ認証のために使用され得る。
【0075】
ユーザとの対話を提供するために、実装形態は、ディスプレイデバイスおよび入力デバイス、たとえば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイ、ならびに、ユーザがそれによってコンピュータに入力を提供できるタッチスクリーン、キーボード、およびポインティングデバイスを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは任意の形式の感覚的なフィードバック、たとえば視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバックであってよく、ユーザからの入力は、音響入力、発話入力、または触覚入力を含む、任意の形式で受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、そこからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【0076】
実装形態は、有線またはワイヤレスデジタルデータ通信(またはそれらの組合せ)の任意の形式もしくは媒体、たとえば通信ネットワークによって相互接続されるコンピューティングデバイスを使用して実装され得る。相互接続されたデバイスの例は、一般に互いから離れており典型的には通信ネットワークを介して対話する、クライアントおよびサーバである。クライアント、たとえばモバイルデバイスは、たとえば、購入、売却、支払、贈与、送付、もしくは貸付のトランザクションの実行、またはこれらの認可を行うサーバと、またはサーバを通じて、自身でトランザクションを実行することができる。そのようなトランザクションは、活動と応答が時間的に近くなるようにリアルタイムであり得る。たとえば、ある個人は、活動および応答が実質的に同時に発生することを知覚し、その個人の活動に続く応答の時間差が1ミリ秒(ms)未満もしくは1秒(s)未満であり、または応答にシステムの処理制約を考慮した意図的な遅延がない。
【0077】
通信ネットワークの例は、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、およびワイドエリアネットワーク(WAN)を含む。通信ネットワークは、インターネット、別の通信ネットワーク、または通信ネットワークの組合せの、すべてもしくは一部分を含み得る。情報は、Long Term Evolution(LTE)、5G、IEEE 802、インターネットプロトコル(IP)、または他のプロトコルもしくはプロトコルの組合せを含む、様々なプロトコルおよび規格に従って通信ネットワーク上で送信され得る。通信ネットワークは、接続されたコンピューティングデバイス間で、音声データ、ビデオデータ、バイオメトリックデータ、または認証データ、または他の情報を送信することができる。
【0078】
別個の実装形態として説明される特徴は、組合せで、単一の実装形態で実装され得るが、単一の実装形態として説明される特徴は、複数の実装形態で、別々に、または任意の適切な部分組合せで実装され得る。特定の順序で説明され特許請求される動作は、特定の順序が実行されなければならないこと、またはすべての図示される動作が実行されなければならないことを要求するものとして理解されるべきではない(いくつかの動作は任意選択であり得る)。適宜、マルチタスキングまたは並列処理(またはマルチタスキングと並列処理の組合せ)が実行され得る。
【符号の説明】
【0079】
102 パブリックブロックチェーン
106 コンピューティングシステム
108 コンピューティングシステム
110 ネットワーク
202 エンティティレイヤ
204 ホストされたサービスレイヤ
206 パブリックブロックチェーンレイヤ
208 トランザクション管理システム
210 ブロックチェーンインターフェース
212 ブロックチェーンネットワーク
214 ノード
216 ブロックチェーン
302 ユーザノードA
304 ブロックチェーンノード
406 ブロックチェーンネットワーク
図1
図2
図3
図4
図5