【文献】
NARULA, Neha et al.,zkLedger: Privacy-Preserving Auditing for Distributed Ledgers,Proc. of the 15th USENIX Symposium on Networked Systems Design and Implementation (NSDI '18),2018年 4月,pp. 65-80,[2020年8月28日検索],インターネット,URL,https://www.usenix.org/conference/nsdi18/presentation/narula
【文献】
安坂 祐紀,他,プライバシーを考慮したブロックチェーンの取引者間事前合意プロトコル,コンピュータセキュリティシンポジウム2018論文集,情報処理学会,2018年10月15日,pp. 850-856
(58)【調査した分野】(Int.Cl.,DB名)
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項1に記載の方法。
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項1に記載の方法。
一つ以上のプロセッサと、前記一つ以上のプロセッサと結合されるとともに、前記一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成された一つ以上の非一時的なコンピュータ可読メモリーとを備え、前記動作は、
複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、
前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、
前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、
前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示し、
取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、
前記アカウントのそれぞれから複数の署名を取得することを含み、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、ブロックチェーンネットワーク上の一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む、情報保護システム。
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項7に記載のシステム。
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項7に記載のシステム。
一つ以上のプロセッサにより実行可能な指令を含むとともに前記一つ以上のプロセッサに動作を実行させるよう構成された非一時的なコンピュータ可読記憶媒体であって、前記動作は、
複数のアカウント間のトランザクションに対応する複数の暗号化されたトランザクション額を取得することを含み、
前記暗号化されたトランザクション額はそれぞれ、前記トランザクション額の一つを送る又は受け取る前記アカウントの一つと関連付けられており、
前記トランザクション額のそれぞれの暗号は、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものであり、
前記トランザクションに関与している前記アカウントにそれぞれ対応する複数のレンジプルーフを取得することを更に含み、前記レンジプルーフは少なくとも、前記トランザクション額を送る前記アカウントはそれぞれ、充分な資産を有することを示し、
取得された前記暗号化されたトランザクション額に基づいてサムプルーフを生成することを含み、前記サムプルーフは少なくとも前記トランザクション額が釣り合っていることを示すものであり、
前記アカウントのそれぞれから複数の署名を取得することを含み、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、ブロックチェーンネットワーク上の一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう、前記ノードに送信することを含む、記憶媒体。
前記トランザクション額のそれぞれの暗号は、前記トランザクション額のそれぞれが前記一つのアカウントに流入するものであるか流出するものであるかを隠匿することにより、少なくとも、前記一つのアカウントが前記トランザクション額の一つを送る側であるか受け取る側であるかを隠匿する、請求項13に記載の記憶媒体。
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードが前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名に基づいて前記トランザクションを確認できるよう前記ノードに送信することは、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を、前記ブロックチェーンネットワーク上の前記一つ以上のノードに送信することと、
前記ノードに、
前記暗号化されたトランザクション額、前記レンジプルーフ、前記サムプルーフ、及び前記署名を認証させ、
前記トランザクションを正常に確認したことを受けて前記トランザクションを実行させ、
前記トランザクションを前記ブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む、請求項13に記載の記憶媒体。
【発明を実施するための形態】
【0016】
以下、好ましい実施形態について詳述する。実施形態の例は添付の図面に示されている。以下の説明は添付の図面に基づいており、各図面においては特に注釈のない限り、同じ符号は同一又は類似の要素を指す。本発明に合致する好ましい実施形態に関して以下に述べる態様は、本発明に合致する態様のすべてではない。それらは単に、本発明に関する態様に合致するシステム及び方法の例示に過ぎない。
【0017】
ブロックチェーン技術は、データを認証、更新するため分散ノード合意アルゴリズムを用いて、P2P(peer)ネットワーク上に構築が可能である。ブロックチェーンはまた、データ送信とアクセスの安全確保のため暗号を用いることができ、データのプログラムと操作のため自動スクリプトコードを含むスマートコントラクトを用いることもできる。ブロックチェーンは、各々が一つ前のデータブロックにリンクされたヘッダーを有する一連のデータブロックを持つことができ、それによりデータブロックの連鎖を形成することができる。リンクを確立するため、現在のデータブロックのヘッダーは、一つ前のデータブロックのヘッダーの暗号学的ハッシュ又はチェックサムを有していてもよい。ブロックチェーンネットワークによって、トランザクションの実行が容易となる。トランザクションとは、ユーザー(コンピュータ機器などのユーザーノード)間、又はユーザーと金融機関とのあらゆるコミュニケーションを指す。トランザクションの例としては、物品やサービスの購入又は販売、物品やサービスのオファー又は返却、支払いトランザクション、クレジットトランザクション、その他類似の双方向行為が挙げられる。また、トランザクションは「通商」又は「取引行為」を指すこともある。トランザクションの対象となるものとしては、例えば、貨幣、トークン、デジタル通貨、契約、行為、医療記録、顧客情報、株式、債券、資本、その他デジタル形式で記述できるあらゆる資産が含まれる。
【0018】
ブロックチェーンは、公共の又は私的なピアネットワークにおけるトランザクションを記録する、改竄不能な共有のデジタルレッジャーと考えることができる。レッジャーはネットワーク上のメンバーノードに配布され、ネットワークで行われる資産トランザクションの履歴がブロックチェーンに記録される。ブロックチェーンレッジャーは公共のものであり、且つレッジャー自体にプライバシー保護の機能はないので、レッジャーの重要なトランザクション情報は公的に開示され、無許可の又は悪意による使用のリスクにさらされる。例えば、既存のブロックチェーントランザクションの枠組みでは、トランザクションの実行時にはどの当事者が資産を送りどの当事者がその資産を受け取るのかを、そのトランザクション資産の額とともに明示する必要があるが、これらはどれ一つ保護されていない。既存の技術における問題点を少なくとも緩和し、コンピュータの情報保護機能を向上させるため、情報保護のシステムと方法を、
図1から
図7を参照しつつ以下開示する。
【0019】
図1は様々な実施形態に係るブロックチェーンの一例を示している。
図1に示すように、ブロックチェーン100は複数のデータブロック102を含む。各々のブロック102は、例えばトランザクションや領収証などのデータ104を含むデータ構造体である。各々のブロックは、一つ前のブロックと暗号学的ハッシュを介してつながっている。例えば、ブロック2はブロック1のハッシュ106を介してブロック1とつながり、ブロックnはブロックn−1の別のハッシュを介してブロックn−1とつながっている。新しいデータが提出され認証されると、その新しいデータを示す追加のブロックが生成され、ブロックチェーン100の最後のブロックに、その一つ前のブロックのハッシュを付与することにより、付加される。
【0020】
図2は、様々な実施形態に係る、トランザクションを実行するためのブロックチェーンネットワーク200の一例を示している。
図2に示すように、ブロックチェーンネットワーク200は複数のノード202と一つ以上のユーザーコンピュータ機器240を有し、コンピュータ機器は一つ以上の通信路を介して互いに通信可能となっている。通信路の代表例としては、データ送受信のために例えば携帯電話、WiFi、及びその他の通信プロトコルなど一つ以上の通信プロトコルを用いるネットワーク220(例えば、インターネットでの有線又は無線接続等)が挙げられる。ネットワーク220はP2P及び/又はクライアント・サーバー方式を採用してよい。ある実施形態において、複数のノード202は、一つ以上のプロセッサ204と、一つ以上のプロセッサ204に結合された一つ以上のメモリー206(例えば、指令を格納した一つ以上の非一時的なコンピュータ可読記憶媒体)とを各々が有する複数のコンピュータ機器を備えている。ノード202は、スマートコントラクトの安全性を向上させる好適なシステムとなり得る。上記の一つ以上のメモリーは、一つ以上のプロセッサが実行可能な指令を含むとともにシステム(例えば、一つ以上のプロセッサ)にここに記載の動作を実行させるよう構成されている。ある実施形態において、プロセッサ204は一つ以上の論理回路を、部分的に又は全体的に備えていてもよい。ある実施形態において、ノード202とユーザーコンピュータ機器240は他の演算資源を有し、及び/又は他の演算資源に(例えば、一つ以上の接続/ネットワークを介して)アクセス可能となっていてもよい。
【0021】
ある実施形態において、ブロックチェーン100は複数のノード202に非集中的に格納されている。ある実施形態において、いくつかのノード202は、合意に基づいて受け取ったトランザクションを認証し、認証されたトランザクションを他のノード202に伝達してもよい。したがって、ノード202は認証されたトランザクションに基づいて、レッジャー208を更新できる。レッジャー208に関するデータの送受信のため、ノード202同士でネットワーク220を介して互いに通信が可能である。レッジャー208は、認証されてブロックチェーン100に付加されたデータブロック102を含む。レッジャー208に新たなデータブロックが追加されると、ノード202は新たなデータブロックを、ネットワーク220を介して通信又は共有できる。ノード202のメモリー206は、ブロックチェーン100のレッジャー208の少なくとも一部を格納することができる。
【0022】
ある実施形態において、一人以上のユーザーは、ユーザーのコンピュータ機器240を通じて通信路220を介し、トランザクションを一つ以上のノード202に提出することができる。ある実施形態において、提出されたトランザクションは、ノード202のメモリー206に設けられた記憶領域に一時的に保管されるか、又はネットワーク220を通じてアクセス可能な遠隔データベースに格納される。一つ以上のノード202は、提出されたトランザクションを記憶領域から読み出して、当該トランザクションを処理することができる。説明を簡潔明瞭とするため、本開示ではノード202を単数形で表すものとする。当業者であれば、ブロックチェーンネットワークが多数のノード202を有し、且つ一つ以上のノード202がトランザクションの処理に関与することが理解できるであろう。ノード202は単数形でありながら、一つ以上のノードを意味している。
【0023】
ある実施形態において、ノード202はトランザクションの結果に基づいて、ブロックチェーン100を更新してもよい。ある実施形態において、一つのトランザクションに二人以上の参加者(例えば送り手と受け手である当事者又はユーザーと表すこともある)が関与する場合がある。トランザクションとは、資産の交換のための二人の当事者間の合意と言える。例えば、一つのトランザクションには、一方の当事者が他方の当事者に資産の額を転送する又は支払うという行為が含まれ、この支払額は両社の合意により決定される。資産は、例えばビットコインやモネーロなどのデジタル通貨の形式であってよい。あるいは、資産は従来の通貨、例えばドルであってもよい。トランザクションの両当事者は各々のアカウントに対応している。当事者各々のアカウントはそのアドレスと残高がブロックチェーン100に保管されている。したがって、トランザクションが実行された後、ノード202は当事者各々のアカウントの残高を更新する。
【0024】
ある実施形態において、ノード202は、どの当事者が資産を送る又は支払う送り手であり、どの当事者が資産を受け取る受け手であるのかを知ることなく、トランザクションを実行してもよい。ここに開示されたシステム及び方法によれば、どの当事者が送り手でありどの当事者が受け手であるかに関する情報を隠匿することができ、尚且つ、ブロックチェーンのトランザクションを実行することが可能である。ある実施形態において、処理対象の資産の額にプラス又はマイナスのラベルを付けることによってその資産額に関連付けられた当事者が送り手であるのか受け手であるのかが示される。例えば、当事者Aと当事者B間のあるトランザクションにおいて、Aに対する1,000ドル(プラス)という額は、当事者Aが当事者Bに1,000ドルを送ることを表し、当事者Aに対する−1,000ドル(マイナス)という額は、当事者Aが当事者Bから1,000ドル受け取ることを表す。したがって、アカウントAのトランザクション額がゼロより大きければ、当該アカウントAが他のアカウントBにトランザクション額を送ることを意味しており、ゆえにアカウントAが送り手である。一方、アカウントAのトランザクション額がゼロより少ない(マイナス)場合、アカウントAがその額を受け取ることを意味し、ゆえにアカウントAが受け手である。
【0025】
ある実施形態において、トランザクション額は様々な暗号化方法によって暗号化することができる。一例では、トランザクション額は準同型暗号によって暗号化されてもよい。準同型暗号スキームの例としては、エルガマル準同型暗号、ペイエ準同型暗号、ベナロー準同型暗号、オカモト‐ウチヤマ準同型暗号、ナカッシェ−スターン準同型暗号、ダンガード−ユリック準同型暗号、ボネー−ゴー−ニッシム準同型暗号などが挙げられるが、これらに限定されない。他の例では、トランザクション額は準同型コミットメントなどのコミットメントスキームを用いて暗号化されてもよい。準同型コミットメントの例としてはペダーセンコミットメントが挙げられる。トランザクション額「t」に対するペダーセンコミットメント「T」は、次のように表すことができる。
T=PC(r,t)=rG+tH
ここでrは隠匿の働きをするランダムなブラインディングファクター(単にブラインディングファクターとも言う)であり、GとHは公的に合意されたジェネレータ又は楕円曲線のベースポイントであり、無作為に選択できるものである。例えばrはランダムな数値であってよい。GとHはノード202に既知のパラメータであってよい。コミットメントスキームはデータの秘匿性を維持するが、データの送信者によって後に変更できないように、データにコミットする。コミットメントを受ける当事者(例えば、トランザクションの受け手ノード)はコミットメント額(例えば、PC(r,t))のみを知ることができ、ランダムなブラインディングファクター(例えばr)のゆえに、どれくらいの埋め込みデータ額(例えばt)がコミットされているかを判定することはできない。しかし、コミットメントを受けるノード202はコミットメントを用いて、コミットされたデータが明らかにされたデータと合致することを確認することはできる。このように、当事者の役割(例えば、送り手であるか受け手であるか)を隠匿し、且つトランザクション額を暗号化することにより、第三者はどちらの当事者が送り手でどちらの当事者が受け手であるかを知ることはできず、それゆえトランザクションにおける当事者のプライバシーが保護される。
【0026】
ペダーセンコミットメントにはさらなる特性がある。コミットメントを追加することができ、一つのコミットメントセットの合計額は(いくつかのブラインディングキーの合計が一つのブラインディングキーとして設定された)データの額に対するコミットメントと同じである。
PC(r
1,t
1)+PC(r
2,t
2)=PC(r
1+r
2,t
1+t
2)
言い換えれば、コミットメントは追加の余地を保有しており、交換可能な特性が適用できる、すなわちペダーセンコミットメントは、埋め込まれたデータがあたかも暗号化されていないかの如く数学的に操作可能であるという点で、相加的に準同型のものである。したがって、トランザクション額及びトランザクションの当事者の残高にペダーセンコミットメントを適用する場合、トランザクション額及び/又は残高に対するペダーセンコミットメントを復号することなく、ペダーセンコミットメントを直接追加することにより、トランザクション額を用いて残高を更新することができる。
【0027】
ある実施形態において、ノード202は上記のようなトランザクションを複数、包括的に実行することができる。例えば、当事者Aと当事者B間のトランザクションに加え、当事者Cと当事者Dが彼ら同士のトランザクションを求める可能性がある。さらには、当事者Eと当事者Fも、彼らの間で資産の移転を求めることもある。当事者Aと当事者B間のトランザクションは、当事者Cと当事者D間のトランザクション、及び当事者Eと当事者F間のトランザクションと混合することができる。ノード202は、当事者A、B、C、D、E、及びF間のトランザクションを、各々の送り手と受け手を明示することを要求することなく、一度に実行することができる。さらに複雑な状況において、ノード202は、一人の当事者(例えば、当事者A)が複数の当事者(例えば、当事者B、当事者C等)にそれぞれ異なる資産トランザクション額を送るという多重的トランザクションを実行することができる。
【0028】
図3を参照すると、様々な実施形態に係る、送り手と受け手が混在する状態でのトランザクション実行フロー300の一例が示されている。トランザクション実行フロー300は、例えば
図2に示すブロックチェーンネットワーク200などの、様々なシステムに導入することができる。トランザクション実行フロー300は、一つ以上のノード202とユーザーコンピュータ機器240とで実現することができる。以下に示すトランザクション実行フロー300の動作は、例証的である。実行の態様に応じて、例示的なトランザクション実行フロー300はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【0029】
図3に示す実施形態において、一つ以上のトランザクションの参加者と、対応するアカウントがブロック302に示されている。例えば、参加者はそれぞれアカウント「A_i」と対応付けられており、1≦i≦nであり、nは任意の正の整数である。ある実施形態において、nは参加者の総数を表す。他の実施形態では、iは連続した整数ではない場合があり、その場合はn参加者の総数を表していない。ブロック302に示すように、アカウント「A_i」はそれぞれ残高「s_i」、すなわち利用可能なアカウント「A_i」の資産の額を有する。ある実施形態において残高「s_1」は、例えばビットコインなどのデジタル通貨の形式をとっている。あるいは、残高「s_1」は従来の通貨であってもよい。さらに、ブロック302に示すように、残高「s_i」は、上記の一つ以上の準同型暗号又は準同型コミットメントスキームを用いて暗号化された残高「S_i」を取得するべく、暗号化されてもよい。暗号化された残高「S_i」は残高「s_i」の暗号文でもよく、その場合「HE(s_i)」と表される。したがって、S_i=HE(s_i)であり、1≦i≦nであり、nは任意の正の整数である。例えばアカウント「A_1」は、「S_1」で表される、残高「s_1」の暗号文を有し、S_1=HE(s_1)が成り立つ。ある実施形態において、暗号化された残高「S_i」はペダーセンコミットメントであり、HE(s_i)=r_i*G+s_i*Hが成り立ち、rはランダムなブラインディングファクターである。
【0030】
ブロック304において、ノード202が参加者の複数のアカウント「A_i」から多重的なトランザクションを受信することがある。
図3に示す実施形態において、各々のアカウントは「A_i」のようなアカウントID、トランザクション額「t_i」、レンジプルーフ「Pf_i」、及び署名「Sig_i」と対応付けられている。「署名」は実在の特定人による承認を表す。「署名」と言う場合、承認を示すものであればどのような形式でもよい。例えば、一つのアカウントからのトランザクションに対応する署名は、そのアカウントが当該トランザクションを承認していることを示す。ある実施形態において、トランザクションは、各々のトランザクションの少なくとも送り手又は受け手の身元を隠匿するために暗号化される。例えばトランザクションは、「T_i」で表される、各々のトランザクションの実際のトランザクション額の暗号文を含んでいてもよく、この場合T_i=HE(t_i)が成り立つ。トランザクション額の暗号文は、上記の準同型暗号又は準同型コミットメントスキームを用いて生成することができる。例えば、暗号化されたトランザクション額「T_i」は、実際のトランザクション額「t_i」のペダーセンコミットメントとすることができる。
【0031】
レンジプルーフは、ある数が一定の範囲内にあることを証明するための証拠確保プロトコルであり、その数の実際の値などそれ以外の情報は明かさないものである。レンジプルーフは、例えばボロミアン・リング署名スキームやビュレットプルーフスキームなどのスキームを用いて生成することができる。その他のスキームを用いてレンジプルーフを生成してもよい。レンジプルーフ「Pf_i」は、アカウント「A_i」がトランザクションが可能となる充分な残高を有すること、例えばアカウント「s_i」の残高がトランザクション額「t_i」の絶対値以上であることを証明する。アカウント「A_i」のレンジプルーフ「Pf_i」は、Pf_i=Pf(s
i−t
i≧0)と表すことができる。
【0032】
ある実施形態において、別のプルーフ、例えば、Pf_sum=Pf(t_1+t_2+...+t_n=0)を、トランザクションに際して生成してもよい。このプルーフは以下、サムプルーフと呼び、トランザクション額の合計が釣り合っている、例えばゼロであることを証明するのに用いられる。上記のとおり、送り手のトランザクション額をプラスの値で表し、対応する受け手のトランザクション額をマイナスの値で表すことができる。送り手とその相手の受け手にそれぞれ対応するトランザクション額の絶対値は同一である。これによりノード202は、どちらの当事者が送り手でどちらの当事者が受け手であるかを明示的に示すよう要求することなく、両者間のトランザクションを実行することができる。
【0033】
当事者Aが当事者Bに1,000ドル支払うという上記の例において、当事者AがアカウントID「A_1」と対応付けられ、当事者BがアカウントID「A_2」と対応付けられているものとした場合、「A_1」に対応するトランザクション額「t_1」は+1,000ドルであり、「A_2」に対応するトランザクション額「t_2」は−1,000ドルである。サムプルーフ「Pf_sum」を生成することによって、トランザクション額「t_1」とトランザクション額「t_2」が相殺しあい、トランザクション額「t_1」と「t_2」の合計がゼロになることが証明できる。
【0034】
ある実施形態において、サムプルーフ「Pf_sum」は暗号化されたトランザクション額HE(t
i)に基づいて証明されてもよい。例えば、トランザクション額HE(t_i)の暗号文はHE(t_i)=G
{t_1}*H
{r_1}と表すことができ、r_iはランダムなブラインディングファクター、GとHは公的に合意されたジェネレータ又は楕円曲線のベースポイントであり、無作為に選択できる。したがって、サムプルーフ「Pf_sum」はPf(r=r_1+r_2+...+r_n)と表すことができる。サムプルーフを認証する際、ノード202はHE(t_1)*...*HE(t_n)=H
rであるか否かを確認してもよい。HE(t_1)*...*HE(t_n)=H
rが成り立つのであれば、t_1+t_2+...+t_n=0が成り立つということになり、このようにしてPf_sum及びトランザクション額が釣り合っていることが証明される。上記が成り立たない場合、トランザクション額は釣り合っておらず、何らかの誤ったトランザクション額が存在する可能性がある。ある実施形態において、トランザクション額は別のスキームを用いて暗号化されてもよく、その場合はサムプルーフ及びサムプルーフの確認方法はここに記載のものとは異なる。
【0035】
多数の送り手及び/又は受け手が存在する場合、トランザクション額はその組み合わせごとに釣り合いがとられる。ある実施形態において、送り手が複数の受け手に対し処理を行う場合、送り手のトランザクション額は、複数の受け手に送るべきすべてのトランザクション額の合計として設定される。例えば、アカウント「A_1」が1,000ドルのトランザクション額をアカウント「A_2」に、2,000ドルのトランザクション額をアカウント「A_3」に送ろうとする場合、アカウント「A_1」のトランザクション額は3,000ドル(すなわち、1,000ドルと2,000ドルの合計)となる。アカウント「A_1」のトランザクション額は、アカウント「A_2」のトランザクション額すなわち−1,000ドルと、アカウント「A_3」のトランザクション額すなわち−2,000ドルと釣り合いがとられる。トランザクションにおける他のトランザクション額も同様にして釣り合いがとられる。このようなプルーフを生成し、トランザクションに対応付けてもよい。
【0036】
上記のとおり、各々のアカウントから署名を受け取ることができるが、その署名は
図3の「Sig_i」で表されている。ある実施形態において、トランザクションにおける各々のアカウントによる署名、レンジプルーフ、及びサムプルーフはSig_i=Signature(A_1:T_1、Pf_1;...; A_n:T_n、Pf_n; Pf_sum)と表すことができる。このように、トランザクションに関与している各々のアカウントによる、Signature()のいろいろなパラメータに対する合意が表明される。ある実施形態において、署名は一つ以上のトランザクション、レンジプルーフ、又はサムプルーフに対応付けられてもよい。
【0037】
ブロック306において、ノード202は、受け取るトランザクションの確認のためにトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する上記の複数のアカウント、レンジプルーフ、サムプルーフ、及び署名とに対応するトランザクションを受け取ることができる。ある実施形態において、ノード202は、トランザクション参加者間でコーディネートするオーガナイザーノードからトランザクションを受け取ってもよい。ある実施形態において、オーガナイザーノードは、コンピュータ機器(不図示であるがノード202と同様のもの)によって導入された第三者である。例えば、参加者はそれぞれユーザーコンピュータ機器240を通じて、アカウントIDを暗号化されたトランザクション額、レンジプルーフ、及び同様のものとともにオーガナイザーノードに送ることができる。オーガナイザーノードは、参加者から受け取ったトランザクション額に基づいて、サムプルーフを生成する。オーガナイザーノードは、複数のアカウントに対応するトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及びトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する複数のアカウントの各々の署名を、ノード202を含むブロックチェーンネットワーク200に提出することができる。ある実施形態においてオーガナイザーノードは、参加者の一人であって、他の参加者をコーディネートする者でもよい。あるいは、オーガナイザーはブロックチェーンネットワーク200上のノード202であってもよい。オーガナイザーノード202は、複数のアカウントIDに対応するトランザクションを、各々のトランザクションについてのレンジプルーフ、及びトランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する署名とともに、参加者から受け取ってもよい。オーガナイザーノード202は、参加者から受け取ったトランザクション額に基づいて、サムプルーフを実行してもよい。
【0038】
ブロック306において、ノード202はトランザクション、レンジプルーフ、サムプルーフ、及び署名を認証する。トランザクションとそれに関連する情報が認証されると、ノード202は、トランザクションに関与する各々のアカウントの残高を更新することにより、トランザクションを実行する。例えば、ノード202は各々のアカウントの署名を確認する。ある実施形態において、いずれかの署名が無効であった場合、ノード202はトランザクションを拒絶することができる。署名がすべて確認された後、ノード202はトランザクションのそれぞれについてレンジプルーフを認証する。ある実施形態において、ノード202は暗号化された残高「S_i」を読み出し、レンジプルーフ「Pf_i」と暗号化された残高「S_i」を照合する。ある実施形態において、ノード202はレンジプルーフ「Pf_i」自体の有効性を確認してもよい。いずれかのレンジプルーフが無効であった場合、ノード202はトランザクションを拒絶することができる。
【0039】
ある実施形態において、レンジプルーフがそれぞれ認証された後、ノード202はトランザクションについてのサムプルーフを認証する。例えば、暗号化されたトランザクション額に基づいてサムプルーフが生成されている場合、ノード202は、ブロック304について説明したように、暗号スキームを用いてサムプルーフを確認する。サムプルーフが認証されなかった場合、ノード202はトランザクションを拒絶することができる。ある実施形態において、サムプルーフが認証されなかった場合、ノード202は各々のアカウントの残高を更新してもよい。例えば、ノード202残高「s_i」からトランザクション額「t_i」を差し引く、すなわちS_i−T_iを演算することによって残高「s_i」を更新する。アカウント「A_1」が1,000ドルのトランザクション額をアカウント「A_2」に送るという上記の例においては、ノード202はトランザクションを認証すると、アカウント「A_1」の残高「S_1」から1,000ドルを差し引き、アカウント「A_2」の残高「S_2」に1,000ドルを加算する。ある実施形態において、ノード202は、S_i−T_iで表される暗号化された残高を直接更新してもよい。上記のとおり、ペダーセンコミットメントは相加的に準同型であり、埋め込まれているデータはあたかも暗号化されていないかの如く、数学的に操作可能である。例えば、ノード202は残高についてのペダーセンコミットメントを、当該残高のペダーセンコミットメントにトランザクション額のペダーセンコミットメントを加算することにより、更新してもよい。ブロック308において、トランザクション結果が得られる。
図3に示すとおり、トランザクションの実行後は、各々のアカウントの残高は「S_i−T_i」に更新される。
【0040】
上記は署名、レンジプルーフ、及びサムプルーフを時系列で認証する場合の説明である。当業者は、認証はどのような順序でも可能であることを理解するであろう。例えば、ノードは署名、サムプルーフ、レンジプルーフの順、レンジプルーフ、サムプルーフ、署名の順、レンジプルーフ、署名、サムプルーフの順、サムプルーフ、レンジプルーフ、署名の順、又はサムプルーフ、署名、レンジプルーフの順のいずれでも、認証を行うことができる。さらに、認証は任意である。認証の一部、例えばレンジプルーフ及び/又は署名の認証を省略してもよい。
【0041】
このように本開示によれば、強化されたプライバシー保護のもと、混在する送り手と受け手の間の多重的なトランザクションを同時に実行することが可能となる。すなわち、送り手と受け手の身元は公的な場から隠匿される。参加者それぞれのトランザクション額はゼロより多くても少なくてもよい。プラスのトランザクション額は参加者のアカウントがその金額を消費することを示し、マイナスのトランザクション額はアカウントがその金額を受け取ることを示す。加えて、本開示ではトランザクション額とトランザクションにおける各々のアカウントの残高を暗号化するため、準同型暗号、準同型コミットメント、又は他の暗号スキームが使用され、それゆえ非参加者にはトランザクション額がプラスかマイナスか、及び実際のトランザクション額又は残高を知ることは不可能となっており、したがって非参加者による誰が送り手で誰が受け手なのかを特定することが防止されている。
【0042】
図4は、様々な実施形態に係るトランザクションの実行方法400の一例を示すフローチャートである。方法400は、様々なシステム、例えば
図2に示すブロックチェーンネットワーク200の一つ以上の構成要素に実装することができる。例示的な方法400は、一つ以上のノード202及び/又はユーザーコンピュータ機器240によって実行される。一例では、方法400はオーガナイザーノード(例えば、ノード202の一つ)によって実行される。他の例では、方法400はトランザクションを実行する一つ以上のノード(例えば、ノード202)によって実行される。以下に示す方法400に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法400はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【0043】
ブロック401は、複数のアカウント(例えば、A_1、A_2、…A_n)間のトランザクションに対応する複数の暗号化されたトランザクション額(例えば、HE(t_1)、HE(t_2)、... 、HE(t_n))を取得することを含む。暗号化されたトランザクション額はそれぞれ、トランザクション額の一つを送る又は受け取るアカウントの一つと関連付けられており、トランザクション額のそれぞれの暗号は、少なくとも、一つのアカウントがトランザクション額の一つを送る側であるか受け取る側であるかを隠匿するものである。
【0044】
ある実施形態において、暗号化はオーガナイザーノードが実行するか、又はトランザクションにおいて送り手又は受け手であるノードが実行し、オーガナイザーノードが受け取ってもよい。トランザクション額の暗号化には、様々な暗号化方法が用いられる。各々のトランザクション額の暗号には準同型暗号が含まれる。例えば、各々のトランザクション額の暗号は、準同型暗号又は準同型コミットメントスキーム(例えば、ペダーセンコミットメントスキーム)であってもよい。
【0045】
ある実施形態において、二つ以上のアカウント間の資産移転は、それぞれが送り手のアカウント又は受け手のアカウントに対応した複数のトランザクションに分解することができる。各々のアカウントはノード202の一つのノードに対応している。例えば、アカウントAからBへの100ドルの資産移転は、アカウントAが100ドルを消費することを示す、アカウントAに対応するプラス100ドルの第1のトランザクションと、アカウントBが100ドルを受け取ることを示す、アカウントBに対応するマイナス100ドルの第2のトランザクションを含む。別の例として、アカウントAからBへの100ドルの資産移転と、アカウントAからCへの80ドルの別の資産移転が行われる場合、アカウントAが180ドルを消費することを示す、アカウントAに対応するプラス100ドルの第1のトランザクションと、アカウントBが100ドルを受け取ることを示す、アカウントBに対応するマイナス100ドルの第2のトランザクションと、アカウントAが80ドルを消費することを示す、アカウントAに対応するプラス80ドルの第3のトランザクションと、アカウントCが80ドルを受け取ることを示す、アカウントCに対応するマイナス80ドルの第3のトランザクションとが含まれる。「プラス」と「マイナス」の符号は、他の代替的な表現においては、逆にするか変更してもよい。加えて、図示のとおり、例えばアカウントが複数のアカウントに送金又は複数のアカウントから入金する場合、二つのアカウントは同一でもよい。
【0046】
さらに、ある実施形態において、トランザクション額のそれぞれの暗号は、トランザクション額のそれぞれが一つのアカウントに流入するもの(例えば、受け取り資産)であるか流出するもの(例えば、払い出し資産)であるかを隠匿することにより、少なくとも、一つのアカウントがトランザクション額の一つを送る側であるか受け取る側であるかを隠匿する。アカウントAからBへの100ドルと、アカウントAからCへの80ドルの暗号による資産移転の例では、送り手又は受け手の身元を示す情報、例えばトランザクション額の「プラス180ドル」における「プラス」の符号やトランザクション額の「マイナス100ドル」や「マイナス80ドル」における「マイナス」の符号などは、消去してもよい。この場合、暗号化されたトランザクション額には送り手又は受け手の身元を示す情報は含まれない。暗号化されたトランザクション額が「プラス」や「マイナス」の符号を含んでいたとしても(含んでいるとは限らないが)、その符号はもはや送り手と受け手の身元を正確に示すものではない。このように、トランザクションにおける送り手と受け手の身元が公になることはない。
【0047】
任意に実行されるブロック402は、トランザクションに関与しているアカウントにそれぞれ対応する複数のレンジプルーフ(例えば、Pf_1,Pf_2,…,Pf_n)を取得することを含む。レンジプルーフは少なくとも、トランザクション額を送るアカウントはそれぞれ充分な資産を有することを示している。Pf_1の詳細については上記を参照されたい。
【0048】
ブロック403は、取得した暗号化されたトランザクション額に基づいてサムプルーフ(例えば、Pf_sum)を生成することを含む。このサムプルーフは少なくともトランザクション額が釣り合っていることを示す。Pf_sumの詳細については上記を参照されたい。例えば、オーガナイザーノードは暗号化されたトランザクション額を取得し、HE(t_1)*...*HE(t_n)=H
r_1*H
r_2*...*H
r_n=H
rが成り立つか否かを判定する。HE(t_1)*...*HE(t_n)=Hrが成り立つのであれば、t_1+t_2+...+t_n=0が成り立つこととなり、オーガナイザーノードはトランザクション額が釣り合っていることを確認できる。上記が成り立たなければトランザクション額は釣り合っておらず、オーガナイザーノードはトランザクションを拒絶できる。暗号と、暗号の準同型特性とによって、オーガナイザーノードは、埋め込まれているトランザクション額と、その額が流入するものであるか流出するものであるかがわからなくとも、上記のような確認を行うことができる。
【0049】
任意に実行されるブロック404は、アカウントのそれぞれから複数の署名(例えば、Sig_1、Sig_2、…、Sig_n)を取得することを含む。署名は暗号化されたトランザクション額、レンジプルーフ、及びサムプルーフの少なくとも一つと対応している。Sig_iの詳細については上記を参照されたい。署名は楕円曲線デジタル署名アルゴリズム(ECDSA)などのデジタル署名アルゴリズム(DSA)に従って行われ、これにより署名の受領者(例えば、トランザクションを認証するノード)は、署名者(例えば、トランザクションに参加しているノード)の公開鍵を用いて署名を確認することで認証が可能となる。
【0050】
ブロック405は、暗号化されたトランザクション額及びサムプルーフを、ブロックチェーンネットワーク上の一つ以上のノード(例えば、合意ノード)がトランザクションを確認できるよう、当該ノードに送信することを含む。ある実施形態において、暗号化されたトランザクション額及びサムプルーフを、ブロックチェーンネットワーク上の一つ以上のノードがトランザクションを確認できるよう、当該ノードに送信することは、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の前記一つ以上のノードが暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名に基づいてトランザクションを確認できるよう、当該ノードに送信することを含む。
【0051】
ある実施形態において、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の一つ以上のノードが暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名に基づいて前記トランザクションを確認できるよう当該ノードに送信することは、暗号化されたトランザクション額、レンジプルーフ、サムプルーフ、及び署名を、ブロックチェーンネットワーク上の一つ以上のノードに送信することと、当該ノードに、暗号化されたトランザクション、レンジプルーフ、サムプルーフ、及び署名を認証させ、トランザクションを正常に確認したことを受けてトランザクションを実行させ、トランザクションをブロックチェーンネットワークが保有するブロックチェーンの新規のデータブロックに追加させることを含む。暗号と、暗号の準同型特性とによって、ノードは、埋め込まれているトランザクション額と、その額が流入するものであるか流出するものであるかがわからなくとも、上記のような認証を行うことができる。
【0052】
ある実施形態において、ノードにトランザクションを正常に確認したことを受けてトランザクションを実行させることは、当該ノードに、トランザクションを正常に確認したことを受けて、暗号化されたトランザクション額(T_i)を、対応するアカウントの暗号化されたアカウント残高(例えば、S_i)から差し引かせることを含む(S_i−T_i)。準同型特性によって、残高が暗号化された状態のまま、トランザクションに基づき残高を更新することが可能である。
【0053】
このように、ここに開示されたシステム及び方法によれば、どのアカウントが送り手でどのアカウントが受け手であるかを開示することなく、参加アカウント間のトランザクションを実行することが可能となる。埋め込まれたトランザクション額は、送り手であるか受け手であるかを示すためにゼロより大きく又は小さくすることはできるが、送り手であるか受け手であるかを非参加者がトランザクション額を用いて特定することができないよう、目的に特化した暗号を用いてトランザクション額を隠匿することが可能である。さらに、複数のトランザクションに参加しているアカウントは、彼らが資産を送る側か受け取る側かを示すことなく、どのような順序で混合されてもよい。複数のトランザクション又は資産の移転はまとめて実行することができる。このようにして参加アカウントのプライバシー保護が達成でき、それによりコンピュータの機能性が向上し、オンライントランザクションがより安全なものとなる。
【0054】
図5は、様々な実施形態に係るトランザクションの別の実行方法500の一例を示すフローチャートである。方法500は、様々なシステム、例えば
図2に示すブロックチェーンネットワーク200の一つ以上の構成要素に実装することができる。例示的な方法500は、一つ以上のノード202及び/又はユーザーコンピュータ機器240によって実行される。以下に示す方法500に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法500はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【0055】
ブロック502において、複数のアカウントに対応する暗号化されたトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及び複数のアカウントそれぞれによる、トランザクション、レンジプルーフ、又はサムプルーフの少なくとも一つに対応する署名が受領される。ブロック504では、暗号化されたトランザクション、各々のトランザクションについてのレンジプルーフ、トランザクションについてのサムプルーフ、及び複数のアカウントそれぞれによる署名が認証される。ブロック506では、認証に基づき、複数のアカウントそれぞれの残高を更新することにより、トランザクションが実行される。
【0056】
図6は、様々な実施形態に係るトランザクションの認証方法600の一例を示すフローチャートである。方法600は、様々なシステム、例えば
図2に示すブロックチェーンネットワーク200の一つ以上の構成要素に実装することができる。例示的な方法600は、一つ以上のノード202及び/又はユーザーコンピュータ機器240によって実行される。例えば、方法600は、方法500のブロック504に対応する。以下に示す方法600に基づく動作は、例証的なものである。実行の態様に応じて、例示的な方法600はより多くの若しくはより少ないステップ、又は代替的なステップを有することがあり、それらは様々な順序で又は並行して実行される。
【0057】
ブロック602において、署名が有効であるか否かが判定される。署名のうちいずれかでも有効でないと判定された場合、ブロック604において、トランザクションが拒絶される。署名がすべて有効であると判定されると、ブロック606において、各々のトランザクションについてのレンジプルーフが有効であるか否かが判定される。レンジプルーフのうちいずれかでも有効でないと判定された場合、方法600はブロック604に進み、トランザクションが拒絶される。レンジプルーフがすべて有効であると判定されると、ブロック608において、サムプルーフが有効であるか否かが判定される。サムプルーフ有効でないと判定された場合、方法600はブロック604に進み、トランザクションが拒絶される。サムプルーフが有効であると判定されると、方法600はブロック610に進み、各々のアカウントの残高が、アカウントに対応したトランザクション額に基づいて更新される。上記の説明は認証方法を順を追って述べている。当業者は、認証はいかなる順序で行われてもよいことを理解するであろう。
【0058】
ここに記載の技術は、一つ以上の専用コンピュータ機器によって実現される。専用のコンピュータ機器は、デスクトップコンピュータシステム、サーバーコンピュータシステム、ポータブルコンピュータシステム、携帯機器、ネットワーク機器、又はその他の機器であってもよく、当該技術を実現可能なハード回路及び/又はプログラムロジックを搭載した機器の組みあわせであってもよい。
【0059】
図7は、ここに記載の任意の実施形態を実現可能なコンピュータシステム700の一例を示すブロック図である。システム700は、
図2に基づいて説明したノード202又はユーザーコンピュータ機器240に相当する。コンピュータシステム700は、情報通信のためのバス702又は他の通信メカニズムと、情報処理のためバス702と接続された一つ以上のハードウエアプロセッサ704とを備えている。ハードウエアプロセッサ704は、例えば、一つ以上の汎用マイクロプロセッサであってもよい。
【0060】
コンピュータシステム700はまた、ランダムアクセスメモリー(RAM)などのメインメモリー706と、情報やプロセッサ704が実行すべき指令を格納するためバス702と接続されたキャッシュ及び/又は他のダイナミックストレージ装置を有する。メインメモリー706は、プロセッサ704が与えられた指令の実行中に、一時的な変数や他の中間情報を格納するのにも用いられる。このような指令をプロセッサ704がアクセス可能な記憶媒体に格納することにより、コンピュータシステム700を、当該指令に記載された動作を実行するようカスタマイズされた専用マシンとしてセットアップすることができる。コンピュータシステム700はさらに、プロセッサ704に対する静的情報や指令を格納するためバス702と接続された、リードオンリーメモリー(ROM)708又は他の静的記憶装置を有する。磁気ディスク、光学ディスク、又はUSBサムドライブ(フラッシュドライブ)などの記憶装置710が設けられ、情報や指令を格納するためバス702に接続されている。
【0061】
コンピュータシステム700は、カスタマイズされたハード論理回路、一つ以上のASIC又はFPGA、コンピュータシステムと協働してコンピュータシステム700を専用マシンとして作動させるかプログラムするファームウエア及び/又はプログラムロジックなどを用いて、ここに記載の技術を実現することができる。一つの実施形態によれば、ここに記載の動作、方法、及びプロセスは、プロセッサ704がメモリー706に記憶された一つ以上の指令の一つ以上のシーケンスを実行することに応答して、コンピュータシステム700により実行される。この指令は、記憶装置710など他の記憶媒体から、メインメモリー706に読み込まれてもよい。メインメモリー706に記憶された指令のシーケンスを実行することにより、プロセッサ704はここに記載のプロセスを実行する。代替的な実施形態では、ソフトウエアによる指令に代えて、又はそれとの組み合わせで、ハード回路を採用してもよい。
【0062】
プロセッサ704は上記のプロセッサ204に相当し、メインメモリー706、ROM708、及び/又は記憶装置710は、上記のメモリー206に相当すると言える。メインメモリー706、ROM708、及び/又は記憶装置710は、非一時的な記憶媒体を有していてもよい。「非一時的な媒体」及び類似の用語は、本明細書において、機器を特定の態様で動作させるデータ及び/又は指令を格納したあらゆる媒体を指す。このような非一時的な媒体は不揮発性及び/又は揮発性の媒体であってよい。不揮発性媒体の例としては、記憶装置710のような光学又は磁気ディスクが挙げられる。揮発性媒体の例としては、メインメモリー706のようなダイナミックメモリーが挙げられる。非一時的な媒体の一般的な形式としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ又は他のあらゆる磁気記憶媒体、CD−ROM又は他のあらゆる光学記憶媒体、パターン又は穴を有するあらゆる物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、NVRAM、他のあらゆるメモリーチップ又はカートリッジ、及びこれらのネットワーク接続されたバージョンが挙げられる。
【0063】
コンピュータシステム700はさらに、バス702に接続された通信インターフェース718を有する。通信インターフェース718は、一つ以上のローカルネットワークに接続された一つ以上のネットワークリンクの双方向データ通信を可能とする。通信インターフェース718は、例えば、サービス総合デジタルネットワーク(ISDN)カード、ケーブルモデム、サテライトモデム、又は対応する電話線にデータ通信のため接続できるモデムであってもよい。他の例としては、通信インターフェース718は対応するローカルエリアネットワーク(LAN)にデータ通信のため接続できるLANカード(又はWANと通信するWANコンポーネント)であってもよい。無線リンクを実装してもよい。どのような実現態様であれ、通信インターフェース718は、様々な形式の情報を表すデジタルデータストリームを搬送する電気的、電磁的、又は光学的信号の送受信を行う。
【0064】
コンピュータシステム700はネットワーク、ネットワークリンク、及び通信インターフェース718を介して、メッセージを送信し、プログラムコードなどのデータを受信することができる。インターネットを例にとれば、例えばサーバーが、要求されたアプリケーションプログラムのコードを、インターネット、ISP、ローカルネットワーク及び通信インターフェース718を通じて送信することが可能である。受信されたコードは、受信の時点でプロセッサ704によって実行されてもよく、それとともに又はそれに代えて、記憶装置710又は他の不揮発性メモリーに記憶されて後刻実行されてもよい。
【0065】
ここまで述べてきたスキーム、メカニズム、方策、プロセス、方法、及びアルゴリズムはそれぞれ、一つ以上のコンピュータシステム又はコンピュータハードウエアを備えるコンピュータプロセッサに実行されるコードモジュールとして実現され、また全体的又は部分的に自動化されてもよい。プロセスとアルゴリズムは部分的又は全体として、アプリケーションに特化した回路に実装されてもよい。ある実施形態において、プロセッサ704は部分的又は全体として、上記の一つ以上の論理回路として実現されてもよい。
【0066】
上記の様々な特徴及びプロセスは、それぞれ別個に用いられてもよく、様々な態様で組み合わされてもよい。考え得るあらゆる組み合わせ、及び下層の組みあわせは、本開示の範囲に含まれる。さらに、実現の態様によっては、いくつかの方法やプロセスのブロックを省略してもよい。ここに記載の方法及びプロセスは、特定のシーケンスに限定されるものではなく、それらに関連するブロックや状態は適宜、他のシーケンスにより実行されてもよい。例えば、上記のブロックや状態はここに開示されたものとは異なる順序で実行されてもよく、複数のブロックや状態を組み合わせて単一のブロックや状態としてもよい。例示されたブロックや状態は順次又は並行して、あるいは他の態様で実行されてもよい。ブロックや状態は、開示された実施形態の例に追加、又はそれから除外してもよい。ここに記載のシステム及び構成要素の例は、記載した以外の方法で実現されてもよい。例えば、構成要素は開示された実施形態の例に追加、除外、又は変更されてもよい。
【0067】
ここに記載の様々な方法に基づく動作は、少なくとも部分的に、アルゴリズムに基づき実行されてもよい。アルゴリズムはメモリー(例えば、上記の非一時的なコンピュータ可読記憶媒体)に格納されたプログラムコード又は指令に含まれてもよい。このようなアルゴリズムは、機械学習アルゴリズムを含んでもよい。ある実施形態において、機械学習アルゴリズムは、コンピュータを機能を実行できるように明確にプログラムすることはできないかもしれないが、トレーニングデータを通じて、機能を実行できる予測モデルを構築することは可能である。
【0068】
ここに記載の様々な方法に基づく動作は、少なくとも部分的に、一時的に構成された(例えば、ソフトウエア)、又は当該動作を実行するよう定常的に構成された一つ以上のプロセッサにより、実行されてもよい。一時的であれ定常的であれこのようなプロセッサは、ここに記載の一つ以上の動作又は機能を実行する、プロセッサに実装されたエンジンを構成する。
【0069】
同様に、ここに記載の方法は、少なくとも部分的に、ハードウエアの例としての特定のプロセッサ又は複数のプロセッサに実装されてもよい。例えば、方法に基づく動作の少なくとも一部は、一つ以上のプロセッサ又はプロセッサに実装されたエンジンにより実行されてもよい。さらに、一つ以上のプロセッサは、「クラウドコンピューティング」環境又は「サース」(SaaS=software as a service)により当該動作の実行をサポートするよう作動してもよい。例えば、動作の少なくとも一部は、これらの動作にネットワーク(例えばインターネット)を通じ、又は一つ以上の適切なインターフェース(例えばアプリケーションプログラムインターフェース(API))を通じてアクセス可能な状態で、コンピュータグループ(プロセッサを含むマシンの例)により実行されてもよい。
【0070】
動作のうちのあるものは、単一のマシン内のプロセッサのみならず、複数のマシンに展開されたプロセッサに分配されてもよい。いくつかの実施形態の例では、プロセッサ又はプロセッサに実装されたエンジンは地理的に一ヵ所(例えば、家庭内、オフィス内、又はサーバファーム)に設置されてもよい。他の実施形態の例では、プロセッサ又はプロセッサに実装されたエンジンは地理的に離れた複数の場所にわたって設置されてもよい。
【0071】
本明細書の全体において、複数で述べられた構成要素、動作、又は構造の例は、それらが単数である場合を含む。一つ以上の方法の個別の動作はそれぞれ別個の動作として説明されているが、一つ以上の個別の動作は同時に実行されてもよく、動作を記載通りの順序で実行する必要は全くない。構成例の中で別個のものとして提示された構造や機能は、構造や機能の組みあわせとして実現されてもよい。同様に、単一の要素として提示された構造や機能は、別個の要素として実現されてもよい。上記の及び他の変形例、改変例、追加、および及び改善例はここに記載の主題物の範疇に含まれる。
【0072】
ここに記載の及び/又は添付の図面に示された、プロセスの説明、構成要素、又はフローチャート中のブロックはすべて、プロセス中の特定の論理機能又はステップを実行させる一つ以上の実行可能な指令を含むコードのモジュール、セグメント、又は一部分を潜在的に表すものと解すべきである。ここに記載の実施形態は代替的な実現態様も含んでおり、実施形態における構成要素や機能は、当業者であれば理解できるとおり、関連する機能の態様に応じて、除外されてもよく、また実質的に同時に又は逆の順序で実行されることも含めて、図示又は説明された順序とは異なる方法で実行されてもよい。
【0073】
本開示の主題物の概略を具体的な実施形態の例に基づき説明したが、本開示の実施形態の広汎な範囲を逸脱することなく、これら実施形態に対し様々な改変や変更が可能である。主題物のこれら実施形態は、本明細書で個別的又は包括的に「発明」と称されることもあるが、これは単に便宜上の事であり、本明細書の範囲を、実際に開示されているか否かを問わず、いかなる単一の開示又は概念にも自ら限定する意図ではない。
【0074】
ここに記載の実施形態は当業者が開示内容を実現できる充分な程度まで詳細に述べられている。これら実施形態から、本開示の範囲を逸脱することなく構造上または論理上の代替や変更がなされる形で、他の実施形態を使用または派生させてもよい。したがって詳細な説明は、限定的な意味と解釈すべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲に包含されるあらゆる均等物とともに、当該請求の範囲によってのみ定義される。