(57)【特許請求の範囲】
【請求項１】
コンピュータに実装された情報保護の方法であって、
複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、
前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、
前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、
前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示し、
取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、
前記アカウントのそれぞれから複数の署名を取得することを含み、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、ブロックチェーンネットワーク上の一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む、方法。
【請求項２】
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項１に記載の方法。
【請求項３】
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項１に記載の方法。
【請求項４】
前記ノードに前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させることは、
前記ノードに、前記トランザクションを正常に確認したことを受けて、前記暗号化されたトランザクション額を、対応する前記アカウントの暗号化されたアカウント残高から差し引かせることを含む、請求項３に記載の方法。
【請求項５】
前記トランザクション額のそれぞれの前記暗号は、準同型暗号からなる、請求項１に記載の方法。
【請求項６】
前記トランザクション額のそれぞれの前記暗号は、ペダーセンコミットメントスキームからなる、請求項１に記載の方法。
【請求項７】
一つ以上のプロセッサと、前記一つ以上のプロセッサと結合されるとともに、前記一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成された一つ以上の非一時的なコンピュータ可読メモリーとを備え、前記動作は、
複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、
前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、
前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、
前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示し、
取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、
前記アカウントのそれぞれから複数の署名を取得することを含み、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、ブロックチェーンネットワーク上の一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む、情報保護システム。
【請求項８】
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項７に記載のシステム。
【請求項９】
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項７に記載のシステム。
【請求項１０】
前記ノードに前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させることは、
前記ノードに、前記トランザクションを正常に確認したことを受けて、前記暗号化されたトランザクション額を、対応する前記アカウントの暗号化されたアカウント残高から差し引かせることを含む、請求項９に記載のシステム。
【請求項１１】
前記トランザクション額のそれぞれの前記暗号は、準同型暗号からなる、請求項７に記載のシステム。
【請求項１２】
前記トランザクション額のそれぞれの前記暗号は、ペダーセンコミットメントスキームからなる、請求項７に記載のシステム。
【請求項１３】
一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成された非一時的なコンピュータ可読記憶媒体であって、前記動作は、
複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、
前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、
前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、
前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示し、
取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、
前記アカウントのそれぞれから複数の署名を取得することを含み、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、ブロックチェーンネットワーク上の一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む、記憶媒体。
【請求項１４】
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項１３に記載の記憶媒体。
【請求項１５】
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項１３に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概略的にはコンピュータ技術に関し、より具体的には情報保護のシステム及び方法に関する。
【背景技術】
【０００２】
多様なユーザー間での通信やデータ転送においては、プライバシーは重要である。例えば、送り手と受け手の情報や、両者間のトランザクション額に関する情報は、プライバシー保護の肝要な部分である。保護されていなければ、ユーザーは個人情報の盗難、不正な転送、その他潜在的な損失を被るリスクにさらされることになる。オンライン情報には自由にアクセスできるため、通信や転送がオンラインで実行される場合にはリスクはさらに大きくなる。
【発明の概要】
【０００３】
本開示の様々な実施形態を通じ、情報保護のシステム、方法、及び非一時的なコンピュータ可読媒体を提供する。
【０００４】
一つの態様において、コンピュータに実装された情報保護方法は、複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、前記暗号化されたトランザクション額及び前記サムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードが前記トランザクションを確認できるよう、前記ノードに送信することを含む。
【０００５】
ある実施形態において、前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものあるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものである。
【０００６】
ある実施形態において、前記方法は、前記サムプルーフを生成する前に、前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示す。
【０００７】
ある実施形態において、前記方法は、前記暗号化されたトランザクション額及び前記サムプルーフを前記一つ以上のノードに送信する前に、前記アカウントのそれぞれから複数の署名を取得することを更に含む。前記暗号化されたトランザクション額及び前記サムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードが前記トランザクションを確認できるよう前記ノードに送信することは、前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む。
【０００８】
ある実施形態において、前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、前記ノードに、前記暗号化されたトランザクション、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む。
【０００９】
ある実施形態において、前記ノードに前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させることは、前記ノードに、前記トランザクションを正常に確認したことを受けて、前記暗号化されたトランザクション額を、対応する前記アカウントの暗号化されたアカウント残高から差し引かせることを含む。
【００１０】
ある実施形態において、前記トランザクション額のそれぞれの前記暗号は、準同型暗号からなる。
【００１１】
ある実施形態において、前記トランザクション額のそれぞれの前記暗号は、ペダーセンコミットメントスキームからなる。
【００１２】
別の態様において、情報保護システムは、一つ以上のプロセッサと、前記一つ以上のプロセッサと結合されるとともに、前記一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成された一つ以上の非一時的なコンピュータ可読メモリーとを備え、前記動作は、複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額を送る又は受け取る前記アカウントの一つと関連付けられており、前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、前記暗号化されたトランザクション額及び前記サムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードが前記トランザクションを確認できるよう、前記ノードに送信することを含む。
【００１３】
また別の態様において、非一時的なコンピュータ可読記憶媒体は、一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成され、前記動作は、複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、前記暗号化されたトランザクション額及び前記サムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードが前記トランザクションを確認できるよう、前記ノードに送信することを含む。
【００１４】
ここに開示されたシステム、方法、及び非一時的なコンピュータ可読媒体の上記の特徴とさらなる特徴、並びに関連する構成要素の機能と作動方法、要素の組み合わせ及び製造の効率性は、以下の説明と添付の特許請求の範囲を添付の図面との関連において考察することにより、一層明らかとなるであろう。図面はすべ本明細書の一部をなすものであり、同様の符号は異なる図面における対応する要素を指すものとする。しかしながら、図面は単に図解と描写のためだけのものであって、本発明の範囲の定義を意図したものではないことは明確に理解されたい。
【図面の簡単な説明】
【００１５】
本技術の様々な実施形態の特徴は、添付の特許請求の範囲に具体的に記載されている。本技術の特徴と利点は、以下の、本発明の原理が適用された例証的な実施形態の説明及び添付の図面を通じ、よりよく理解されるであろう。
【図１】様々な実施形態に係るブロックチェーンの一例を示す図である。
【図２】様々な実施形態に係る、情報保護のためのブロックチェーンネットワークの一例を示す図である。
【図３】様々な実施形態に係る、送り手と受け手が混在する状態でのトランザクションの実行フローの一例を示す図である。
【図４】様々な実施形態に係る、情報保護方法の一例を示すフローチャートである。
【図５】様々な実施形態に係る、情報保護方法の別の例を示すフローチャートである。
【図６】様々な実施形態に係る、情報保護方法の一例を示すフローチャートである。
【図７】本明細書に記載の任意の実施形態を実現可能なコンピュータシステムの一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、好ましい実施形態について詳述する。実施形態の例は添付の図面に示されている。以下の説明は添付の図面に基づいており、各図面においては特に注釈のない限り、同じ符号は同一又は類似の要素を指す。本発明に合致する好ましい実施形態に関して以下に述べる態様は、本発明に合致する態様のすべてではない。それらは単に、本発明に関する態様に合致するシステム及び方法の例示に過ぎない。
【００１７】
ブロックチェーン技術は、データを認証、更新するため分散ノード合意アルゴリズムを用いて、Ｐ２Ｐ（ｐｅｅｒ）ネットワーク上に構築が可能である。ブロックチェーンはまた、データ送信とアクセスの安全確保のため暗号を用いることができ、データのプログラムと操作のため自動スクリプトコードを含むスマートコントラクトを用いることもできる。ブロックチェーンは、各々が一つ前のデータブロックにリンクされたヘッダーを有する一連のデータブロックを持つことができ、それによりデータブロックの連鎖を形成することができる。リンクを確立するため、現在のデータブロックのヘッダーは、一つ前のデータブロックのヘッダーの暗号学的ハッシュ又はチェックサムを有していてもよい。ブロックチェーンネットワークによって、トランザクションの実行が容易となる。トランザクションとは、ユーザー（コンピュータ機器などのユーザーノード）間、又はユーザーと金融機関とのあらゆるコミュニケーションを指す。トランザクションの例としては、物品やサービスの購入又は販売、物品やサービスのオファー又は返却、支払いトランザクション、クレジットトランザクション、その他類似の双方向行為が挙げられる。また、トランザクションは「通商」又は「取引行為」を指すこともある。トランザクションの対象となるものとしては、例えば、貨幣、トークン、デジタル通貨、契約、行為、医療記録、顧客情報、株式、債券、資本、その他デジタル形式で記述できるあらゆる資産が含まれる。
【００１８】
ブロックチェーンは、公共の又は私的なピアネットワークにおけるトランザクションを記録する、改竄不能な共有のデジタルレッジャーと考えることができる。レッジャーはネットワーク上のメンバーノードに配布され、ネットワークで行われる資産トランザクションの履歴がブロックチェーンに記録される。ブロックチェーンレッジャーは公共のものであり、且つレッジャー自体にプライバシー保護の機能はないので、レッジャーの重要なトランザクション情報は公的に開示され、無許可の又は悪意による使用のリスクにさらされる。例えば、既存のブロックチェーントランザクションの枠組みでは、トランザクションの実行時にはどの当事者が資産を送りどの当事者がその資産を受け取るのかを、そのトランザクション資産の額とともに明示する必要があるが、これらはどれ一つ保護されていない。既存の技術における問題点を少なくとも緩和し、コンピュータの情報保護機能を向上させるため、情報保護のシステムと方法を、図１から図７を参照しつつ以下開示する。
【００１９】
図１は様々な実施形態に係るブロックチェーンの一例を示している。図１に示すように、ブロックチェーン１００は複数のデータブロック１０２を含む。各々のブロック１０２は、例えばトランザクションや領収証などのデータ１０４を含むデータ構造体である。各々のブロックは、一つ前のブロックと暗号学的ハッシュを介してつながっている。例えば、ブロック２はブロック１のハッシュ１０６を介してブロック１とつながり、ブロックｎはブロックｎ−１の別のハッシュを介してブロックｎ−１とつながっている。新しいデータが提出され認証されると、その新しいデータを示す追加のブロックが生成され、ブロックチェーン１００の最後のブロックに、その一つ前のブロックのハッシュを付与することにより、付加される。
【００２０】
図２は、様々な実施形態に係る、トランザクションを実行するためのブロックチェーンネットワーク２００の一例を示している。図２に示すように、ブロックチェーンネットワーク２００は複数のノード２０２と一つ以上のユーザーコンピュータ機器２４０を有し、コンピュータ機器は一つ以上の通信路を介して互いに通信可能となっている。通信路の代表例としては、データ送受信のために例えば携帯電話、ＷｉＦｉ、及びその他の通信プロトコルなど一つ以上の通信プロトコルを用いるネットワーク２２０（例えば、インターネットでの有線又は無線接続等）が挙げられる。ネットワーク２２０はＰ２Ｐ及び／又はクライアント・サーバー方式を採用してよい。ある実施形態において、複数のノード２０２は、一つ以上のプロセッサ２０４と、一つ以上のプロセッサ２０４に結合された一つ以上のメモリー２０６（例えば、指令を格納した一つ以上の非一時的なコンピュータ可読記憶媒体）とを各々が有する複数のコンピュータ機器を備えている。ノード２０２は、スマートコントラクトの安全性を向上させる好適なシステムとなり得る。上記の一つ以上のメモリーは、一つ以上のプロセッサが実行可能な指令を含むとともにシステム（例えば、一つ以上のプロセッサ）にここに記載の動作を実行させるよう構成されている。ある実施形態において、プロセッサ２０４は一つ以上の論理回路を、部分的に又は全体的に備えていてもよい。ある実施形態において、ノード２０２とユーザーコンピュータ機器２４０は他の演算資源を有し、及び／又は他の演算資源に（例えば、一つ以上の接続/ネットワークを介して）アクセス可能となっていてもよい。
【００２１】
ある実施形態において、ブロックチェーン１００は複数のノード２０２に非集中的に格納されている。ある実施形態において、いくつかのノード２０２は、合意に基づいて受け取ったトランザクションを認証し、認証されたトランザクションを他のノード２０２に伝達してもよい。したがって、ノード２０２は認証されたトランザクションに基づいて、レッジャー２０８を更新できる。レッジャー２０８に関するデータの送受信のため、ノード２０２同士でネットワーク２２０を介して互いに通信が可能である。レッジャー２０８は、認証されてブロックチェーン１００に付加されたデータブロック１０２を含む。レッジャー２０８に新たなデータブロックが追加されると、ノード２０２は新たなデータブロックを、ネットワーク２２０を介して通信又は共有できる。ノード２０２のメモリー２０６は、ブロックチェーン１００のレッジャー２０８の少なくとも一部を格納することができる。
【００２２】
ある実施形態において、一人以上のユーザーは、ユーザーのコンピュータ機器２４０を通じて通信路２２０を介し、トランザクションを一つ以上のノード２０２に提出することができる。ある実施形態において、提出されたトランザクションは、ノード２０２のメモリー２０６に設けられた記憶領域に一時的に保管されるか、又はネットワーク２２０を通じてアクセス可能な遠隔データベースに格納される。一つ以上のノード２０２は、提出されたトランザクションを記憶領域から読み出して、当該トランザクションを処理することができる。説明を簡潔明瞭とするため、本開示ではノード２０２を単数形で表すものとする。当業者であれば、ブロックチェーンネットワークが多数のノード２０２を有し、且つ一つ以上のノード２０２がトランザクションの処理に関与することが理解できるであろう。ノード２０２は単数形でありながら、一つ以上のノードを意味している。
【００２３】
ある実施形態において、ノード２０２はトランザクションの結果に基づいて、ブロックチェーン１００を更新してもよい。ある実施形態において、一つのトランザクションに二人以上の参加者（例えば送り手と受け手である当事者又はユーザーと表すこともある）が関与する場合がある。トランザクションとは、資産の交換のための二人の当事者間の合意と言える。例えば、一つのトランザクションには、一方の当事者が他方の当事者に資産の額を転送する又は支払うという行為が含まれ、この支払額は両社の合意により決定される。資産は、例えばビットコインやモネーロなどのデジタル通貨の形式であってよい。あるいは、資産は従来の通貨、例えばドルであってもよい。トランザクションの両当事者は各々のアカウントに対応している。当事者各々のアカウントはそのアドレスと残高がブロックチェーン１００に保管されている。したがって、トランザクションが実行された後、ノード２０２は当事者各々のアカウントの残高を更新する。
【００２４】
ある実施形態において、ノード２０２は、どの当事者が資産を送る又は支払う送り手であり、どの当事者が資産を受け取る受け手であるのかを知ることなく、トランザクションを実行してもよい。ここに開示されたシステム及び方法によれば、どの当事者が送り手でありどの当事者が受け手であるかに関する情報を隠匿することができ、尚且つ、ブロックチェーンのトランザクションを実行することが可能である。ある実施形態において、処理対象の資産の額にプラス又はマイナスのラベルを付けることによってその資産額に関連付けられた当事者が送り手であるのか受け手であるのかが示される。例えば、当事者Ａと当事者Ｂ間のあるトランザクションにおいて、Ａに対する１，０００ドル（プラス）という額は、当事者Ａが当事者Ｂに１，０００ドルを送ることを表し、当事者Ａに対する−１，０００ドル（マイナス）という額は、当事者Ａが当事者Ｂから１，０００ドル受け取ることを表す。したがって、アカウントＡのトランザクション額がゼロより大きければ、当該アカウントＡが他のアカウントＢにトランザクション額を送ることを意味しており、ゆえにアカウントＡが送り手である。一方、アカウントＡのトランザクション額がゼロより少ない（マイナス）場合、アカウントＡがその額を受け取ることを意味し、ゆえにアカウントＡが受け手である。
【００２５】
ある実施形態において、トランザクション額は様々な暗号化方法によって暗号化することができる。一例では、トランザクション額は準同型暗号によって暗号化されてもよい。準同型暗号スキームの例としては、エルガマル準同型暗号、ペイエ準同型暗号、ベナロー準同型暗号、オカモト‐ウチヤマ準同型暗号、ナカッシェ−スターン準同型暗号、ダンガード−ユリック準同型暗号、ボネー−ゴー−ニッシム準同型暗号などが挙げられるが、これらに限定されない。他の例では、トランザクション額は準同型コミットメントなどのコミットメントスキームを用いて暗号化されてもよい。準同型コミットメントの例としてはペダーセンコミットメントが挙げられる。トランザクション額「ｔ」に対するペダーセンコミットメント「Ｔ」は、次のように表すことができる。
Ｔ＝ＰＣ（ｒ，ｔ）＝ｒＧ＋ｔＨ
ここでｒは隠匿の働きをするランダムなブラインディングファクター（単にブラインディングファクターとも言う）であり、ＧとＨは公的に合意されたジェネレータ又は楕円曲線のベースポイントであり、無作為に選択できるものである。例えばｒはランダムな数値であってよい。ＧとＨはノード２０２に既知のパラメータであってよい。コミットメントスキームはデータの秘匿性を維持するが、データの送信者によって後に変更できないように、データにコミットする。コミットメントを受ける当事者（例えば、トランザクションの受け手ノード）はコミットメント額（例えば、ＰＣ（ｒ，ｔ））のみを知ることができ、ランダムなブラインディングファクター（例えばｒ）のゆえに、どれくらいの埋め込みデータ額（例えばｔ）がコミットされているかを判定することはできない。しかし、コミットメントを受けるノード２０２はコミットメントを用いて、コミットされたデータが明らかにされたデータと合致することを確認することはできる。このように、当事者の役割（例えば、送り手であるか受け手であるか）を隠匿し、且つトランザクション額を暗号化することにより、第三者はどちらの当事者が送り手でどちらの当事者が受け手であるかを知ることはできず、それゆえトランザクションにおける当事者のプライバシーが保護される。
【００２６】
ペダーセンコミットメントにはさらなる特性がある。コミットメントを追加することができ、一つのコミットメントセットの合計額は（いくつかのブラインディングキーの合計が一つのブラインディングキーとして設定された）データの額に対するコミットメントと同じである。
ＰＣ（ｒ１，ｔ１）＋ＰＣ（ｒ２，ｔ２）＝ＰＣ（ｒ１＋ｒ２，ｔ１＋ｔ２）
言い換えれば、コミットメントは追加の余地を保有しており、交換可能な特性が適用できる、すなわちペダーセンコミットメントは、埋め込まれたデータがあたかも暗号化されていないかの如く数学的に操作可能であるという点で、相加的に準同型のものである。したがって、トランザクション額及びトランザクションの当事者の残高にペダーセンコミットメントを適用する場合、トランザクション額及び／又は残高に対するペダーセンコミットメントを復号することなく、ペダーセンコミットメントを直接追加することにより、トランザクション額を用いて残高を更新することができる。
【００２７】
ある実施形態において、ノード２０２は上記のようなトランザクションを複数、包括的に実行することができる。例えば、当事者Ａと当事者Ｂ間のトランザクションに加え、当事者Ｃと当事者Ｄが彼ら同士のトランザクションを求める可能性がある。さらには、当事者Ｅと当事者Ｆも、彼らの間で資産の移転を求めることもある。当事者Ａと当事者Ｂ間のトランザクションは、当事者Ｃと当事者Ｄ間のトランザクション、及び当事者Ｅと当事者Ｆ間のトランザクションと混合することができる。ノード２０２は、当事者Ａ、Ｂ、Ｃ、Ｄ、Ｅ、及びＦ間のトランザクションを、各々の送り手と受け手を明示することを要求することなく、一度に実行することができる。さらに複雑な状況において、ノード２０２は、一人の当事者（例えば、当事者Ａ）が複数の当事者（例えば、当事者Ｂ、当事者Ｃ等）にそれぞれ異なる資産トランザクション額を送るという多重的トランザクションを実行することができる。
【００２８】
図３を参照すると、様々な実施形態に係る、送り手と受け手が混在する状態でのトランザクション実行フロー３００の一例が示されている。トランザクション実行フロー３００は、例えば図２に示すブロックチェーンネットワーク２００などの、様々なシステムに導入することができる。トランザクション実行フロー３００は、一つ以上のノード２０２とユーザーコンピュータ機器２４０とで実現することができる。以下に示すトランザクション実行フロー３００の動作は、例証的である。実行の態様に応じて、例示的なトランザクション実行フロー３００はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【００２９】
図３に示す実施形態において、一つ以上のトランザクションの参加者と、対応するアカウントがブロック３０２に示されている。例えば、参加者はそれぞれアカウント「Ａ＿ｉ」と対応付けられており、１≦ｉ≦ｎであり、ｎは任意の正の整数である。ある実施形態において、ｎは参加者の総数を表す。他の実施形態では、ｉは連続した整数ではない場合があり、その場合はｎ参加者の総数を表していない。ブロック３０２に示すように、アカウント「Ａ＿ｉ」はそれぞれ残高「ｓ＿ｉ」、すなわち利用可能なアカウント「Ａ＿ｉ」の資産の額を有する。ある実施形態において残高「ｓ＿１」は、例えばビットコインなどのデジタル通貨の形式をとっている。あるいは、残高「ｓ＿１」は従来の通貨であってもよい。さらに、ブロック３０２に示すように、残高「ｓ＿ｉ」は、上記の一つ以上の準同型暗号又は準同型コミットメントスキームを用いて暗号化された残高「Ｓ＿ｉ」を取得するべく、暗号化されてもよい。暗号化された残高「Ｓ＿ｉ」は残高「ｓ＿ｉ」の暗号文でもよく、その場合「ＨＥ（ｓ＿ｉ）」と表される。したがって、Ｓ＿ｉ＝ＨＥ（ｓ＿ｉ）であり、１≦ｉ≦ｎであり、ｎは任意の正の整数である。例えばアカウント「Ａ＿１」は、「Ｓ＿１」で表される、残高「ｓ＿１」の暗号文を有し、Ｓ＿１＝ＨＥ（ｓ＿１）が成り立つ。ある実施形態において、暗号化された残高「Ｓ＿ｉ」はペダーセンコミットメントであり、ＨＥ（ｓ＿ｉ）＝ｒ＿ｉ＊Ｇ＋ｓ＿ｉ＊Ｈが成り立ち、ｒはランダムなブラインディングファクターである。
【００３０】
ブロック３０４において、ノード２０２が参加者の複数のアカウント「Ａ＿ｉ」から多重的なトランザクションを受信することがある。図３に示す実施形態において、各々のアカウントは「Ａ＿ｉ」のようなアカウントＩＤ、トランザクション額「ｔ＿ｉ」、レンジプルーフ「Ｐｆ＿ｉ」、及び署名「Ｓｉｇ＿ｉ」と対応付けられている。「署名」は実在の特定人による承認を表す。「署名」と言う場合、承認を示すものであればどのような形式でもよい。例えば、一つのアカウントからのトランザクションに対応する署名は、そのアカウントが当該トランザクションを承認していることを示す。ある実施形態において、トランザクションは、各々のトランザクションの少なくとも送り手又は受け手の身元を隠匿するために暗号化される。例えばトランザクションは、「Ｔ＿ｉ」で表される、各々のトランザクションの実際のトランザクション額の暗号文を含んでいてもよく、この場合Ｔ＿ｉ＝ＨＥ（ｔ＿ｉ）が成り立つ。トランザクション額の暗号文は、上記の準同型暗号又は準同型コミットメントスキームを用いて生成することができる。例えば、暗号化されたトランザクション額「Ｔ＿ｉ」は、実際のトランザクション額「ｔ＿ｉ」のペダーセンコミットメントとすることができる。
【００３１】
レンジプルーフは、ある数が一定の範囲内にあることを証明するための証拠確保プロトコルであり、その数の実際の値などそれ以外の情報は明かさないものである。レンジプルーフは、例えばボロミアン・リング署名スキームやビュレットプルーフスキームなどのスキームを用いて生成することができる。その他のスキームを用いてレンジプルーフを生成してもよい。レンジプルーフ「Ｐｆ＿ｉ」は、アカウント「Ａ＿ｉ」がトランザクションが可能となる充分な残高を有すること、例えばアカウント「ｓ＿ｉ」の残高がトランザクション額「ｔ＿ｉ」の絶対値以上であることを証明する。アカウント「Ａ＿ｉ」のレンジプルーフ「Ｐｆ＿ｉ」は、Ｐｆ＿ｉ＝Ｐｆ（ｓｉ−ｔｉ≧０）と表すことができる。
【００３２】
ある実施形態において、別のプルーフ、例えば、Ｐｆ＿ｓｕｍ＝Ｐｆ（ｔ＿１＋ｔ＿２＋．．．＋ｔ＿ｎ＝０）を、トランザクションに際して生成してもよい。このプルーフは以下、サムプルーフと呼び、トランザクション額の合計が釣り合っている、例えばゼロであることを証明するのに用いられる。上記のとおり、送り手のトランザクション額をプラスの値で表し、対応する受け手のトランザクション額をマイナスの値で表すことができる。送り手とその相手の受け手にそれぞれ対応するトランザクション額の絶対値は同一である。これによりノード２０２は、どちらの当事者が送り手でどちらの当事者が受け手であるかを明示的に示すよう要求することなく、両者間のトランザクションを実行することができる。
【００３３】
当事者Ａが当事者Ｂに１，０００ドル支払うという上記の例において、当事者ＡがアカウントＩＤ「Ａ＿１」と対応付けられ、当事者ＢがアカウントＩＤ「Ａ＿２」と対応付けられているものとした場合、「Ａ＿１」に対応するトランザクション額「ｔ＿１」は＋１，０００ドルであり、「Ａ＿２」に対応するトランザクション額「ｔ＿２」は−１，０００ドルである。サムプルーフ「Ｐｆ＿ｓｕｍ」を生成することによって、トランザクション額「ｔ＿１」とトランザクション額「ｔ＿２」が相殺しあい、トランザクション額「ｔ＿１」と「ｔ＿２」の合計がゼロになることが証明できる。
【００３４】
ある実施形態において、サムプルーフ「Ｐｆ＿ｓｕｍ」は暗号化されたトランザクション額ＨＥ（ｔｉ）に基づいて証明されてもよい。例えば、トランザクション額ＨＥ（ｔ＿ｉ）の暗号文はＨＥ（ｔ＿ｉ）＝Ｇ｛ｔ＿１｝＊Ｈ｛ｒ＿１｝と表すことができ、ｒ＿ｉはランダムなブラインディングファクター、ＧとＨは公的に合意されたジェネレータ又は楕円曲線のベースポイントであり、無作為に選択できる。したがって、サムプルーフ「Ｐｆ＿ｓｕｍ」はＰｆ（ｒ＝ｒ＿１＋ｒ＿２＋．．．＋ｒ＿ｎ）と表すことができる。サムプルーフを認証する際、ノード２０２はＨＥ（ｔ＿１）＊．．．＊ＨＥ（ｔ＿ｎ）＝Ｈｒであるか否かを確認してもよい。ＨＥ（ｔ＿１）＊．．．＊ＨＥ（ｔ＿ｎ）＝Ｈｒが成り立つのであれば、ｔ＿１＋ｔ＿２＋．．．＋ｔ＿ｎ＝０が成り立つということになり、このようにしてＰｆ＿ｓｕｍ及びトランザクション額が釣り合っていることが証明される。上記が成り立たない場合、トランザクション額は釣り合っておらず、何らかの誤ったトランザクション額が存在する可能性がある。ある実施形態において、トランザクション額は別のスキームを用いて暗号化されてもよく、その場合はサムプルーフ及びサムプルーフの確認方法はここに記載のものとは異なる。
【００３５】
多数の送り手及び／又は受け手が存在する場合、トランザクション額はその組み合わせごとに釣り合いがとられる。ある実施形態において、送り手が複数の受け手に対し処理を行う場合、送り手のトランザクション額は、複数の受け手に送るべきすべてのトランザクション額の合計として設定される。例えば、アカウント「Ａ＿１」が１，０００ドルのトランザクション額をアカウント「Ａ＿２」に、２，０００ドルのトランザクション額をアカウント「Ａ＿３」に送ろうとする場合、アカウント「Ａ＿１」のトランザクション額は３，０００ドル（すなわち、１，０００ドルと２，０００ドルの合計）となる。アカウント「Ａ＿１」のトランザクション額は、アカウント「Ａ＿２」のトランザクション額すなわち−１，０００ドルと、アカウント「Ａ＿３」のトランザクション額すなわち−２，０００ドルと釣り合いがとられる。トランザクションにおける他のトランザクション額も同様にして釣り合いがとられる。このようなプルーフを生成し、トランザクションに対応付けてもよい。
【００３６】
上記のとおり、各々のアカウントから署名を受け取ることができるが、その署名は図３の「Ｓｉｇ＿ｉ」で表されている。ある実施形態において、トランザクションにおける各々のアカウントによる署名、レンジプルーフ、及びサムプルーフはＳｉｇ＿ｉ＝Ｓｉｇｎａｔｕｒｅ（Ａ＿１：Ｔ＿１、Ｐｆ＿１；．．．；  Ａ＿ｎ：Ｔ＿ｎ、Ｐｆ＿ｎ；  Ｐｆ＿ｓｕｍ）と表すことができる。このように、トランザクションに関与している各々のアカウントによる、Ｓｉｇｎａｔｕｒｅ（）のいろいろなパラメータに対する合意が表明される。ある実施形態において、署名は一つ以上のトランザクション、レンジプルーフ、又はサムプルーフに対応付けられてもよい。
【００３７】
ブロック３０６において、ノード２０２は、受け取るトランザクションの確認のためにトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する上記の複数のアカウント、レンジプルーフ、サムプルーフ、及び署名とに対応するトランザクションを受け取ることができる。ある実施形態において、ノード２０２は、トランザクション参加者間でコーディネートするオーガナイザーノードからトランザクションを受け取ってもよい。ある実施形態において、オーガナイザーノードは、コンピュータ機器（不図示であるがノード２０２と同様のもの）によって導入された第三者である。例えば、参加者はそれぞれユーザーコンピュータ機器２４０を通じて、アカウントＩＤを暗号化されたトランザクション額、レンジプルーフ、及び同様のものとともにオーガナイザーノードに送ることができる。オーガナイザーノードは、参加者から受け取ったトランザクション額に基づいて、サムプルーフを生成する。オーガナイザーノードは、複数のアカウントに対応するトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及びトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する複数のアカウントの各々の署名を、ノード２０２を含むブロックチェーンネットワーク２００に提出することができる。ある実施形態においてオーガナイザーノードは、参加者の一人であって、他の参加者をコーディネートする者でもよい。あるいは、オーガナイザーはブロックチェーンネットワーク２００上のノード２０２であってもよい。オーガナイザーノード２０２は、複数のアカウントＩＤに対応するトランザクションを、各々のトランザクションについてのレンジプルーフ、及びトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する署名とともに、参加者から受け取ってもよい。オーガナイザーノード２０２は、参加者から受け取ったトランザクション額に基づいて、サムプルーフを実行してもよい。
【００３８】
ブロック３０６において、ノード２０２はトランザクション、レンジプルーフ、サムプルーフ、及び署名を認証する。トランザクションとそれに関連する情報が認証されると、ノード２０２は、トランザクションに関与する各々のアカウントの残高を更新することにより、トランザクションを実行する。例えば、ノード２０２は各々のアカウントの署名を確認する。ある実施形態において、いずれかの署名が無効であった場合、ノード２０２はトランザクションを拒絶することができる。署名がすべて確認された後、ノード２０２はトランザクションのそれぞれについてレンジプルーフを認証する。ある実施形態において、ノード２０２は暗号化された残高「Ｓ＿ｉ」を読み出し、レンジプルーフ「Ｐｆ＿ｉ」と暗号化された残高「Ｓ＿ｉ」を照合する。ある実施形態において、ノード２０２はレンジプルーフ「Ｐｆ＿ｉ」自体の有効性を確認してもよい。いずれかのレンジプルーフが無効であった場合、ノード２０２はトランザクションを拒絶することができる。
【００３９】
ある実施形態において、レンジプルーフがそれぞれ認証された後、ノード２０２はトランザクションについてのサムプルーフを認証する。例えば、暗号化されたトランザクション額に基づいてサムプルーフが生成されている場合、ノード２０２は、ブロック３０４について説明したように、暗号スキームを用いてサムプルーフを確認する。サムプルーフが認証されなかった場合、ノード２０２はトランザクションを拒絶することができる。ある実施形態において、サムプルーフが認証されなかった場合、ノード２０２は各々のアカウントの残高を更新してもよい。例えば、ノード２０２残高「ｓ＿ｉ」からトランザクション額「ｔ＿ｉ」を差し引く、すなわちＳ＿ｉ−Ｔ＿ｉを演算することによって残高「ｓ＿ｉ」を更新する。アカウント「Ａ＿１」が１，０００ドルのトランザクション額をアカウント「Ａ＿２」に送るという上記の例においては、ノード２０２はトランザクションを認証すると、アカウント「Ａ＿１」の残高「Ｓ＿１」から１，０００ドルを差し引き、アカウント「Ａ＿２」の残高「Ｓ＿２」に１，０００ドルを加算する。ある実施形態において、ノード２０２は、Ｓ＿ｉ−Ｔ＿ｉで表される暗号化された残高を直接更新してもよい。上記のとおり、ペダーセンコミットメントは相加的に準同型であり、埋め込まれているデータはあたかも暗号化されていないかの如く、数学的に操作可能である。例えば、ノード２０２は残高についてのペダーセンコミットメントを、当該残高のペダーセンコミットメントにトランザクション額のペダーセンコミットメントを加算することにより、更新してもよい。ブロック３０８において、トランザクション結果が得られる。図３に示すとおり、トランザクションの実行後は、各々のアカウントの残高は「Ｓ＿ｉ−Ｔ＿ｉ」に更新される。
【００４０】
上記は署名、レンジプルーフ、及びサムプルーフを時系列で認証する場合の説明である。当業者は、認証はどのような順序でも可能であることを理解するであろう。例えば、ノードは署名、サムプルーフ、レンジプルーフの順、レンジプルーフ、サムプルーフ、署名の順、レンジプルーフ、署名、サムプルーフの順、サムプルーフ、レンジプルーフ、署名の順、又はサムプルーフ、署名、レンジプルーフの順のいずれでも、認証を行うことができる。さらに、認証は任意である。認証の一部、例えばレンジプルーフ及び／又は署名の認証を省略してもよい。
【００４１】
このように本開示によれば、強化されたプライバシー保護のもと、混在する送り手と受け手の間の多重的なトランザクションを同時に実行することが可能となる。すなわち、送り手と受け手の身元は公的な場から隠匿される。参加者それぞれのトランザクション額はゼロより多くても少なくてもよい。プラスのトランザクション額は参加者のアカウントがその金額を消費することを示し、マイナスのトランザクション額はアカウントがその金額を受け取ることを示す。加えて、本開示ではトランザクション額とトランザクションにおける各々のアカウントの残高を暗号化するため、準同型暗号、準同型コミットメント、又は他の暗号スキームが使用され、それゆえ非参加者にはトランザクション額がプラスかマイナスか、及び実際のトランザクション額又は残高を知ることは不可能となっており、したがって非参加者による誰が送り手で誰が受け手なのかを特定することが防止されている。
【００４２】
図４は、様々な実施形態に係るトランザクションの実行方法４００の一例を示すフローチャートである。方法４００は、様々なシステム、例えば図２に示すブロックチェーンネットワーク２００の一つ以上の構成要素に実装することができる。例示的な方法４００は、一つ以上のノード２０２及び／又はユーザーコンピュータ機器２４０によって実行される。一例では、方法４００はオーガナイザーノード（例えば、ノード２０２の一つ）によって実行される。他の例では、方法４００はトランザクションを実行する一つ以上のノード（例えば、ノード２０２）によって実行される。以下に示す方法４００に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法４００はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【００４３】
ブロック４０１は、複数のアカウント（例えば、Ａ＿１、Ａ＿２、…Ａ＿ｎ）間のトランザクションに対応する複数の暗号化されたトランザクション額（例えば、ＨＥ（ｔ＿１）、ＨＥ（ｔ＿２）、．．．  、ＨＥ（ｔ＿ｎ））を取得することを含む。暗号化されたトランザクション額はそれぞれ、トランザクション額の一つを送る又は受け取るアカウントの一つと関連付けられており、トランザクション額のそれぞれの暗号は、少なくとも、一つのアカウントがトランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものである。
【００４４】
ある実施形態において、暗号化はオーガナイザーノードが実行するか、又はトランザクションにおいて送り手又は受け手であるノードが実行し、オーガナイザーノードが受け取ってもよい。トランザクション額の暗号化には、様々な暗号化方法が用いられる。各々のトランザクション額の暗号には準同型暗号が含まれる。例えば、各々のトランザクション額の暗号は、準同型暗号又は準同型コミットメントスキーム（例えば、ペダーセンコミットメントスキーム）であってもよい。
【００４５】
ある実施形態において、二つ以上のアカウント間の資産移転は、それぞれが送り手のアカウント又は受け手のアカウントに対応した複数のトランザクションに分解することができる。各々のアカウントはノード２０２の一つのノードに対応している。例えば、アカウントＡからＢへの１００ドルの資産移転は、アカウントＡが１００ドルを消費することを示す、アカウントＡに対応するプラス１００ドルの第１のトランザクションと、アカウントＢが１００ドルを受け取ることを示す、アカウントＢに対応するマイナス１００ドルの第２のトランザクションを含む。別の例として、アカウントＡからＢへの１００ドルの資産移転と、アカウントＡからＣへの８０ドルの別の資産移転が行われる場合、アカウントＡが１８０ドルを消費することを示す、アカウントＡに対応するプラス１００ドルの第１のトランザクションと、アカウントＢが１００ドルを受け取ることを示す、アカウントＢに対応するマイナス１００ドルの第２のトランザクションと、アカウントＡが８０ドルを消費することを示す、アカウントＡに対応するプラス８０ドルの第３のトランザクションと、アカウントＣが８０ドルを受け取ることを示す、アカウントＣに対応するマイナス８０ドルの第３のトランザクションとが含まれる。「プラス」と「マイナス」の符号は、他の代替的な表現においては、逆にするか変更してもよい。加えて、図示のとおり、例えばアカウントが複数のアカウントに送金又は複数のアカウントから入金する場合、二つのアカウントは同一でもよい。
【００４６】
さらに、ある実施形態において、トランザクション額のそれぞれの暗号は、トランザクション額のそれぞれが一つのアカウントに流入するもの（例えば、受け取り資産）であるか流出するもの（例えば、払い出し資産）であるかを隠匿することにより、少なくとも、一つのアカウントがトランザクション額の一つを送る側であるか受け取る側であるかを隠匿する。アカウントＡからＢへの１００ドルと、アカウントＡからＣへの８０ドルの暗号による資産移転の例では、送り手又は受け手の身元を示す情報、例えばトランザクション額の「プラス１８０ドル」における「プラス」の符号やトランザクション額の「マイナス１００ドル」や「マイナス８０ドル」における「マイナス」の符号などは、消去してもよい。この場合、暗号化されたトランザクション額には送り手又は受け手の身元を示す情報は含まれない。暗号化されたトランザクション額が「プラス」や「マイナス」の符号を含んでいたとしても（含んでいるとは限らないが）、その符号はもはや送り手と受け手の身元を正確に示すものではない。このように、トランザクションにおける送り手と受け手の身元が公になることはない。
【００４７】
任意に実行されるブロック４０２は、トランザクションに関与しているアカウントにそれぞれ対応する複数のレンジプルーフ（例えば、Ｐｆ＿１，Ｐｆ＿２，…，Ｐｆ＿ｎ）を取得することを含む。レンジプルーフは少なくとも、トランザクション額を送るアカウントはそれぞれ充分な資産を有することを示している。Ｐｆ＿１の詳細については上記を参照されたい。
【００４８】
ブロック４０３は、取得した暗号化されたトランザクション額に基づいてサムプルーフ（例えば、Ｐｆ＿ｓｕｍ）を生成することを含む。このサムプルーフは少なくともトランザクション額が釣り合っていることを示す。Ｐｆ＿ｓｕｍの詳細については上記を参照されたい。例えば、オーガナイザーノードは暗号化されたトランザクション額を取得し、ＨＥ（ｔ＿１）＊．．．＊ＨＥ（ｔ＿ｎ）＝Ｈｒ＿１＊Ｈｒ＿２＊．．．＊Ｈｒ＿ｎ＝Ｈｒが成り立つか否かを判定する。ＨＥ（ｔ＿１）＊．．．＊ＨＥ（ｔ＿ｎ）＝Ｈｒが成り立つのであれば、ｔ＿１＋ｔ＿２＋．．．＋ｔ＿ｎ＝０が成り立つこととなり、オーガナイザーノードはトランザクション額が釣り合っていることを確認できる。上記が成り立たなければトランザクション額は釣り合っておらず、オーガナイザーノードはトランザクションを拒絶できる。暗号と、暗号の準同型特性とによって、オーガナイザーノードは、埋め込まれているトランザクション額と、その額が流入するものであるか流出するものであるかがわからなくとも、上記のような確認を行うことができる。
【００４９】
任意に実行されるブロック４０４は、アカウントのそれぞれから複数の署名（例えば、Ｓｉｇ＿１、Ｓｉｇ＿２、…、Ｓｉｇ＿ｎ）を取得することを含む。署名は暗号化されたトランザクション額、レンジプルーフ、及びサムプルーフの少なくとも一つと対応している。Ｓｉｇ＿ｉの詳細については上記を参照されたい。署名は楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）などのデジタル署名アルゴリズム（ＤＳＡ）に従って行われ、これにより署名の受領者（例えば、トランザクションを認証するノード）は、署名者（例えば、トランザクションに参加しているノード）の公開鍵を用いて署名を確認することで認証が可能となる。
【００５０】
ブロック４０５は、暗号化されたトランザクション額及びサムプルーフを、ブロックチェーンネットワーク上の一つ以上のノード（例えば、合意ノード）がトランザクションを確認できるよう、当該ノードに送信することを含む。ある実施形態において、暗号化されたトランザクション額及びサムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードがトランザクションを確認できるよう、当該ノードに送信することは、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の前記一つ以上のノードが暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名に基づいてトランザクションを確認できるよう、当該ノードに送信することを含む。
【００５１】
ある実施形態において、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の一つ以上のノードが暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名に基づいて前記トランザクションを確認できるよう当該ノードに送信することは、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の一つ以上のノードに送信することと、当該ノードに、暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名を認証させ、トランザクションを正常に確認したことを受けてトランザクションを実行させ、トランザクションをブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む。暗号と、暗号の準同型特性とによって、ノードは、埋め込まれているトランザクション額と、その額が流入するものであるか流出するものであるかがわからなくとも、上記のような認証を行うことができる。
【００５２】
ある実施形態において、ノードにトランザクションを正常に確認したことを受けてトランザクションを実行させることは、当該ノードに、トランザクションを正常に確認したことを受けて、暗号化されたトランザクション額（Ｔ＿ｉ）を、対応するアカウントの暗号化されたアカウント残高（例えば、Ｓ＿ｉ）から差し引かせることを含む（Ｓ＿ｉ−Ｔ＿ｉ）。準同型特性によって、残高が暗号化された状態のまま、トランザクションに基づき残高を更新することが可能である。
【００５３】
このように、ここに開示されたシステム及び方法によれば、どのアカウントが送り手でどのアカウントが受け手であるかを開示することなく、参加アカウント間のトランザクションを実行することが可能となる。埋め込まれたトランザクション額は、送り手であるか受け手であるかを示すためにゼロより大きく又は小さくすることはできるが、送り手であるか受け手であるかを非参加者がトランザクション額を用いて特定することができないよう、目的に特化した暗号を用いてトランザクション額を隠匿することが可能である。さらに、複数のトランザクションに参加しているアカウントは、彼らが資産を送る側か受け取る側かを示すことなく、どのような順序で混合されてもよい。複数のトランザクション又は資産の移転はまとめて実行することができる。このようにして参加アカウントのプライバシー保護が達成でき、それによりコンピュータの機能性が向上し、オンライントランザクションがより安全なものとなる。
【００５４】
図５は、様々な実施形態に係るトランザクションの別の実行方法５００の一例を示すフローチャートである。方法５００は、様々なシステム、例えば図２に示すブロックチェーンネットワーク２００の一つ以上の構成要素に実装することができる。例示的な方法５００は、一つ以上のノード２０２及び／又はユーザーコンピュータ機器２４０によって実行される。以下に示す方法５００に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法５００はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【００５５】
ブロック５０２において、複数のアカウントに対応する暗号化されたトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及び複数のアカウントそれぞれによる、トランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する署名が受領される。ブロック５０４では、暗号化されたトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及び複数のアカウントそれぞれによる署名が認証される。ブロック５０６では、認証に基づき、複数のアカウントそれぞれの残高を更新することにより、トランザクションが実行される。
【００５６】
図６は、様々な実施形態に係るトランザクションの認証方法６００の一例を示すフローチャートである。方法６００は、様々なシステム、例えば図２に示すブロックチェーンネットワーク２００の一つ以上の構成要素に実装することができる。例示的な方法６００は、一つ以上のノード２０２及び／又はユーザーコンピュータ機器２４０によって実行される。例えば、方法６００は、方法５００のブロック５０４に対応する。以下に示す方法６００に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法６００はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【００５７】
ブロック６０２において、署名が有効であるか否かが判定される。署名のうちいずれかでも有効でないと判定された場合、ブロック６０４において、トランザクションが拒絶される。署名がすべて有効であると判定されると、ブロック６０６において、各々のトランザクションについてのレンジプルーフが有効であるか否かが判定される。レンジプルーフのうちいずれかでも有効でないと判定された場合、方法６００はブロック６０４に進み、トランザクションが拒絶される。レンジプルーフがすべて有効であると判定されると、ブロック６０８において、サムプルーフが有効であるか否かが判定される。サムプルーフ有効でないと判定された場合、方法６００はブロック６０４に進み、トランザクションが拒絶される。サムプルーフが有効であると判定されると、方法６００はブロック６１０に進み、各々のアカウントの残高が、アカウントに対応したトランザクション額に基づいて更新される。上記の説明は認証方法を順を追って述べている。当業者は、認証はいかなる順序で行われてもよいことを理解するであろう。
【００５８】
ここに記載の技術は、一つ以上の専用コンピュータ機器によって実現される。専用のコンピュータ機器は、デスクトップコンピュータシステム、サーバーコンピュータシステム、ポータブルコンピュータシステム、携帯機器、ネットワーク機器、又はその他の機器であってもよく、当該技術を実現可能なハード回路及び／又はプログラムロジックを搭載した機器の組みあわせであってもよい。
【００５９】
図７は、ここに記載の任意の実施形態を実現可能なコンピュータシステム７００の一例を示すブロック図である。システム７００は、図２に基づいて説明したノード２０２又はユーザーコンピュータ機器２４０に相当する。コンピュータシステム７００は、情報通信のためのバス７０２又は他の通信メカニズムと、情報処理のためバス７０２と接続された一つ以上のハードウエアプロセッサ７０４とを備えている。ハードウエアプロセッサ７０４は、例えば、一つ以上の汎用マイクロプロセッサであってもよい。
【００６０】
コンピュータシステム７００はまた、ランダムアクセスメモリー（ＲＡＭ）などのメインメモリー７０６と、情報やプロセッサ７０４が実行すべき指令を格納するためバス７０２と接続されたキャッシュ及び／又は他のダイナミックストレージ装置を有する。メインメモリー７０６は、プロセッサ７０４が与えられた指令の実行中に、一時的な変数や他の中間情報を格納するのにも用いられる。このような指令をプロセッサ７０４がアクセス可能な記憶媒体に格納することにより、コンピュータシステム７００を、当該指令に記載された動作を実行するようカスタマイズされた専用マシンとしてセットアップすることができる。コンピュータシステム７００はさらに、プロセッサ７０４に対する静的情報や指令を格納するためバス７０２と接続された、リードオンリーメモリー（ＲＯＭ）７０８又は他の静的記憶装置を有する。磁気ディスク、光学ディスク、又はＵＳＢサムドライブ（フラッシュドライブ）などの記憶装置７１０が設けられ、情報や指令を格納するためバス７０２に接続されている。
【００６１】
コンピュータシステム７００は、カスタマイズされたハード論理回路、一つ以上のＡＳＩＣ又はＦＰＧＡ、コンピュータシステムと協働してコンピュータシステム７００を専用マシンとして作動させるかプログラムするファームウエア及び／又はプログラムロジックなどを用いて、ここに記載の技術を実現することができる。一つの実施形態によれば、ここに記載の動作、方法、及びプロセスは、プロセッサ７０４がメモリー７０６に記憶された一つ以上の指令の一つ以上のシーケンスを実行することに応答して、コンピュータシステム７００により実行される。この指令は、記憶装置７１０など他の記憶媒体から、メインメモリー７０６に読み込まれてもよい。メインメモリー７０６に記憶された指令のシーケンスを実行することにより、プロセッサ７０４はここに記載のプロセスを実行する。代替的な実施形態では、ソフトウエアによる指令に代えて、又はそれとの組み合わせで、ハード回路を採用してもよい。
【００６２】
プロセッサ７０４は上記のプロセッサ２０４に相当し、メインメモリー７０６、ＲＯＭ７０８、及び／又は記憶装置７１０は、上記のメモリー２０６に相当すると言える。メインメモリー７０６、ＲＯＭ７０８、及び／又は記憶装置７１０は、非一時的な記憶媒体を有していてもよい。「非一時的な媒体」及び類似の用語は、本明細書において、機器を特定の態様で動作させるデータ及び／又は指令を格納したあらゆる媒体を指す。このような非一時的な媒体は不揮発性及び／又は揮発性の媒体であってよい。不揮発性媒体の例としては、記憶装置７１０のような光学又は磁気ディスクが挙げられる。揮発性媒体の例としては、メインメモリー７０６のようなダイナミックメモリーが挙げられる。非一時的な媒体の一般的な形式としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ又は他のあらゆる磁気記憶媒体、ＣＤ−ＲＯＭ又は他のあらゆる光学記憶媒体、パターン又は穴を有するあらゆる物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、他のあらゆるメモリーチップ又はカートリッジ、及びこれらのネットワーク接続されたバージョンが挙げられる。
【００６３】
コンピュータシステム７００はさらに、バス７０２に接続された通信インターフェース７１８を有する。通信インターフェース７１８は、一つ以上のローカルネットワークに接続された一つ以上のネットワークリンクの双方向データ通信を可能とする。通信インターフェース７１８は、例えば、サービス総合デジタルネットワーク（ＩＳＤＮ）カード、ケーブルモデム、サテライトモデム、又は対応する電話線にデータ通信のため接続できるモデムであってもよい。他の例としては、通信インターフェース７１８は対応するローカルエリアネットワーク（ＬＡＮ）にデータ通信のため接続できるＬＡＮカード（又はＷＡＮと通信するＷＡＮコンポーネント）であってもよい。無線リンクを実装してもよい。どのような実現態様であれ、通信インターフェース７１８は、様々な形式の情報を表すデジタルデータストリームを搬送する電気的、電磁的、又は光学的信号の送受信を行う。
【００６４】
コンピュータシステム７００はネットワーク、ネットワークリンク、及び通信インターフェース７１８を介して、メッセージを送信し、プログラムコードなどのデータを受信することができる。インターネットを例にとれば、例えばサーバーが、要求されたアプリケーションプログラムのコードを、インターネット、ＩＳＰ、ローカルネットワーク及び通信インターフェース７１８を通じて送信することが可能である。受信されたコードは、受信の時点でプロセッサ７０４によって実行されてもよく、それとともに又はそれに代えて、記憶装置７１０又は他の不揮発性メモリーに記憶されて後刻実行されてもよい。
【００６５】
ここまで述べてきたスキーム、メカニズム、方策、プロセス、方法、及びアルゴリズムはそれぞれ、一つ以上のコンピュータシステム又はコンピュータハードウエアを備えるコンピュータプロセッサに実行されるコードモジュールとして実現され、また全体的又は部分的に自動化されてもよい。プロセスとアルゴリズムは部分的又は全体として、アプリケーションに特化した回路に実装されてもよい。ある実施形態において、プロセッサ７０４は部分的又は全体として、上記の一つ以上の論理回路として実現されてもよい。
【００６６】
上記の様々な特徴及びプロセスは、それぞれ別個に用いられてもよく、様々な態様で組み合わされてもよい。考え得るあらゆる組み合わせ、及び下層の組みあわせは、本開示の範囲に含まれる。さらに、実現の態様によっては、いくつかの方法やプロセスのブロックを省略してもよい。ここに記載の方法及びプロセスは、特定のシーケンスに限定されるものではなく、それらに関連するブロックや状態は適宜、他のシーケンスにより実行されてもよい。例えば、上記のブロックや状態はここに開示されたものとは異なる順序で実行されてもよく、複数のブロックや状態を組み合わせて単一のブロックや状態としてもよい。例示されたブロックや状態は順次又は並行して、あるいは他の態様で実行されてもよい。ブロックや状態は、開示された実施形態の例に追加、又はそれから除外してもよい。ここに記載のシステム及び構成要素の例は、記載した以外の方法で実現されてもよい。例えば、構成要素は開示された実施形態の例に追加、除外、又は変更されてもよい。
【００６７】
ここに記載の様々な方法に基づく動作は、少なくとも部分的に、アルゴリズムに基づき実行されてもよい。アルゴリズムはメモリー（例えば、上記の非一時的なコンピュータ可読記憶媒体）に格納されたプログラムコード又は指令に含まれてもよい。このようなアルゴリズムは、機械学習アルゴリズムを含んでもよい。ある実施形態において、機械学習アルゴリズムは、コンピュータを機能を実行できるように明確にプログラムすることはできないかもしれないが、トレーニングデータを通じて、機能を実行できる予測モデルを構築することは可能である。
【００６８】
ここに記載の様々な方法に基づく動作は、少なくとも部分的に、一時的に構成された（例えば、ソフトウエア）、又は当該動作を実行するよう定常的に構成された一つ以上のプロセッサにより、実行されてもよい。一時的であれ定常的であれこのようなプロセッサは、ここに記載の一つ以上の動作又は機能を実行する、プロセッサに実装されたエンジンを構成する。
【００６９】
同様に、ここに記載の方法は、少なくとも部分的に、ハードウエアの例としての特定のプロセッサ又は複数のプロセッサに実装されてもよい。例えば、方法に基づく動作の少なくとも一部は、一つ以上のプロセッサ又はプロセッサに実装されたエンジンにより実行されてもよい。さらに、一つ以上のプロセッサは、「クラウドコンピューティング」環境又は「サース」（ＳａａＳ＝ｓｏｆｔｗａｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ）により当該動作の実行をサポートするよう作動してもよい。例えば、動作の少なくとも一部は、これらの動作にネットワーク（例えばインターネット）を通じ、又は一つ以上の適切なインターフェース（例えばアプリケーションプログラムインターフェース（ＡＰＩ））を通じてアクセス可能な状態で、コンピュータグループ（プロセッサを含むマシンの例）により実行されてもよい。
【００７０】
動作のうちのあるものは、単一のマシン内のプロセッサのみならず、複数のマシンに展開されたプロセッサに分配されてもよい。いくつかの実施形態の例では、プロセッサ又はプロセッサに実装されたエンジンは地理的に一ヵ所（例えば、家庭内、オフィス内、又はサーバファーム）に設置されてもよい。他の実施形態の例では、プロセッサ又はプロセッサに実装されたエンジンは地理的に離れた複数の場所にわたって設置されてもよい。
【００７１】
本明細書の全体において、複数で述べられた構成要素、動作、又は構造の例は、それらが単数である場合を含む。一つ以上の方法の個別の動作はそれぞれ別個の動作として説明されているが、一つ以上の個別の動作は同時に実行されてもよく、動作を記載通りの順序で実行する必要は全くない。構成例の中で別個のものとして提示された構造や機能は、構造や機能の組みあわせとして実現されてもよい。同様に、単一の要素として提示された構造や機能は、別個の要素として実現されてもよい。上記の及び他の変形例、改変例、追加、および及び改善例はここに記載の主題物の範疇に含まれる。
【００７２】
ここに記載の及び／又は添付の図面に示された、プロセスの説明、構成要素、又はフローチャート中のブロックはすべて、プロセス中の特定の論理機能又はステップを実行させる一つ以上の実行可能な指令を含むコードのモジュール、セグメント、又は一部分を潜在的に表すものと解すべきである。ここに記載の実施形態は代替的な実現態様も含んでおり、実施形態における構成要素や機能は、当業者であれば理解できるとおり、関連する機能の態様に応じて、除外されてもよく、また実質的に同時に又は逆の順序で実行されることも含めて、図示又は説明された順序とは異なる方法で実行されてもよい。
【００７３】
本開示の主題物の概略を具体的な実施形態の例に基づき説明したが、本開示の実施形態の広汎な範囲を逸脱することなく、これら実施形態に対し様々な改変や変更が可能である。主題物のこれら実施形態は、本明細書で個別的又は包括的に「発明」と称されることもあるが、これは単に便宜上の事であり、本明細書の範囲を、実際に開示されているか否かを問わず、いかなる単一の開示又は概念にも自ら限定する意図ではない。
【００７４】
ここに記載の実施形態は当業者が開示内容を実現できる充分な程度まで詳細に述べられている。これら実施形態から、本開示の範囲を逸脱することなく構造上または論理上の代替や変更がなされる形で、他の実施形態を使用または派生させてもよい。したがって詳細な説明は、限定的な意味と解釈すべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲に包含されるあらゆる均等物とともに、当該請求の範囲によってのみ定義される。
【図１】
0006871380.tif 000002
【図２】
0006871380.tif 000003
【図３】
0006871380.tif 000004
【図４】
0006871380.tif 000005
【図５】
0006871380.tif 000006
【図６】
0006871380.tif 000007
【図７】
0006871380.tif 000008