図1は、様々な実施形態を実装することができるブロックチェーン環境を図示している。
  本開示は、指数(exponent)又は乗算係数(multiplicative  coefficient)が共有秘密のべき乗(powers  of  a  shared  secret)に依存するグループの要素を、複数の当事者が安全に共有することを可能にする、システム及び方法を実装するために利用され得る技術を説明する。複数の当事者が、共有秘密を公開することなく、共有秘密(例えば共有秘密のべき乗)に基づく数量(quantities)を交換するように、数量が共有されてよい。したがって、様々な実施形態において。複数のn参加者は、共有秘密のべき乗の表現(例えば乗算的ケースでは〈Si〉Gを確立する。
  実施形態において、本明細書で説明されるプロトコル利用技術及び方法は、スマートコントラクトの2当事者によって、秘密自体を共有せず、かつ別のコンピューティングエンティティ(例えばスマートコントラクトへの当事者でないコンピューティングエンティティ)がその秘密を決定することを可能にする情報を明らかにせずに、これらの当事者によって使用され得る数量を共有し、共有秘密のべき乗を決定するために使用される。一実施形態において、プロトコルは、スマートコントラクトの第1当事者が、スマートコントラクトの第2当事者に送信されるパラメータの第1セットを計算することと、第2当事者が、パラメータの第2セットを計算し、これらのパラメータを第1当事者に提示することを含み、ここで上述のようなパラメータの交換時に、両当事者は、検証鍵を含む同一の共通参照文字列を計算することができる。当事者は、次いで、トランザクションに合意してよく、そのようなトランザクションでは、当事者は、アドレス(例えばブロックチェーンネットワークの作業者ノードのアドレス)に対してロックされ、アンロック(例えば使用)することができる、スマートコントラクトに対してデジタル資産の比例的寄与(proportionate  contributions)を行う。一実施形態において、スマートコントラクトの当事者間のオフチェーン通信は、共通参照文字列を生成するために使用されるパラメータの交換に限定されるが、セキュリティ保証は維持される(例えばスマートコントラクトに対する当事者ではない、相手(adversary)又は他のコンピューティングエンティティによって交換されたパラメータに基づいて、秘密鍵は開かされず又は他の方法で決定可能でない)。一実施形態において、2当事者(又はより一般的な場合では、2以上の当事者)は、本明細書の他の箇所、例えば図1~図7に関連して説明されるような方法で、共有秘密のべき乗を共有する技術を利用する。
  本開示の様々な実施形態が実施され得る例示のコンピューティング環境を図示している図1を参照することができる。本明細書で説明されるシステム及び方法は、第1及び第2コンピューティングエンティティが同一の共通参照文字列を計算するために使用することができる数量を、スマートコントラクトの当事者が交換するためのプロトコルに関連し得る。図1は、パラメータのセットを交換する第1コンピューティングエンティティ102と第2コンピューティングエンティティ104を含む、コンピューティング環境100を図示している。そのようなパラメータのセットは、第1コンピューティングエンティティと第2コンピューティングエンティティの双方が、共通参照文字列108を決定することを可能にする。共通参照文字列は、コンピューティングエンティティのいずれか又は双方がトランザクション入力として寄与するデジタル資産をロックするスマートコントラクト110を生成するために、当事者によって使用されてよい。共通参照文字列は、評価鍵112と検証鍵114を含んでよい。スマートコントラクト110は、図1に図示されるブロックチェーン118のようなブロックチェーンに対して発行されてよい。スマートコントラクト110は、該スマートコントラクト110に対する当事者ではない、第3コンピューティングエンティティ106によって実行されてよい。スマートコントラクトの実行の一部として又はそれに関連して、第3コンピューティングエンティティ(例えば作業者(worker))は、共通参照文字列の評価鍵に少なくとも部分的に基づいて、スマートコントラクトの正しい実行のプルーフ(proof  of  correct  execution)116を生成してよい。正しい実行のプルーフ116は、任意の適切なコンピューティングシステム(例えばスマートコントラクトの当事者、あるいは検証者ノードとして動作するブロックチェーンネットワークのノード)によって計算的に検証可能であり得る。実施形態において、検証鍵114は、第4コンピューティングエンティティ(例えば検証者コンピュータシステム)によって、ブロックチェーンネットワーク118に発行されたプルーフが正しいことを検証するために使用される。
  第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は、少なくとも1つの実施形態によると、スマートコントラクトに対する当事者であるコンピュータシステムである。スマートコントラクトの当事者は、スマートコントラクトの実行に対する条件に(例えば関連するユーザ入力デバイスを通して提供されるユーザ入力に従って)合意する2つ以上のコンピューティングエンティティを指してよい。第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は双方ともスマートコントラクトに合意し、スマートコントラクトにトランザクション入力を寄与してよく、これにより、スマートコントラクトのそれぞれのトランザクション入力は、作業者ノードがスマートコントラクトの正しい実行のプルーフを提供した結果としてアンロック(例えば使用)できる、ロッキングスクリプトによって妨害される。本明細書で説明されるシステム及び方法は、ロッキングスクリプトが検証鍵VKを変更から保護することを可能にし、プルーフπの妥当性をチェックし、それにより、トランザクション検証中にブロックチェーンに対するゼロ知識プロトコルの実行を可能にすることに関する。
  様々な実施形態において、第1コンピューティングエンティティ102及び第2コンピューティングエンティティ104は、一実施形態では、スマートコントラクトの実行を制御するために使用される、日付、時間、条件及びアクション(例えばデジタル資産の制御の移転)のようなスマートコントラクトのパラメータを符号化するメッセージのセットを交換することによって、スマートコントラクトに合意する。例えばスマートコントラクト(例えば実行可能プログラム)は、特定のフライトの遅延に対する当事者の保険を引き受けることがあり、プログラムの実行は、特定の日における特定の商用フライトのフライト情報のような外部データを使用して、その特定のフライトが遅れたかどうかを判断することを含んでよい。フライトが遅れた場合、プログラムの当事者は、資産の移転を受け取ってよい(例えば遅延に対する旅行保険を提供するスマートコントラクト)。
  一実施形態において、スマートコントラクト110は、C、C++又はJava(登録商標)のような高レベルのプログラミング言語でソースコードとして符号化される。これらは単に説明的な例であり、スマートコントラクトは、他の適切なプログラミング言語を使用して符号化されてよい。一実施形態では、コンパイラ、インタプリタ及び/又はアセンブラのようなソフトウェアを使用して、スマートコントラクト110を、フィールド
からの値を担持し、かつ加算ゲートと乗算ゲートを接続する、「ワイヤ」からなる演算回路に変換してよい。演算回路は、(例えば7400シリーズゲート、フリップフロップ、バッファ、デコーダ、マルチプレクサ等のトランジスタ-トランジスタロジック(TTL)集積回路を使用して)物理ワイヤによって接続される一連の物理ゲートを含む物理回路によって実装され得る論理回路を指してもよいことに留意されたい。スマートコントラクト110の実行が図1の文脈又は他の箇所で説明されるが、スマートコントラクトの使用は、算術回路に変換することができるソースコードの非限定的な一例にすぎない。一実施形態では、クライアントは(例えば第1コンピューティングエンティティ102単独で、あるいは第2コンピューティングエンティティ104とともに)、オペレーションのセットによって定義されるタスクを実行するためのソースコードを決定し、ここで、タスクの実行は、第3コンピューティングエンティティ106(作業者又は証明者(prover)と呼ばれる)に委任される。一般的に言うと、検証者は、証明者によって生成された正しい実行のプルーフ116の妥当性を確かめること等によって、証明者がタスクを正しく実行したことを決定することに関連するタスクを実行してよい。
  検証可能な計算は、計算のプルーフの生成を可能にする技術である。一実施形態において、そのような技術は、クライアントによって、本明細書で証明者と呼ばれる別のコンピューティングエンティティに、入力xに対する関数fの評価をアウトソースするために利用される。場合によっては、クライアントは計算的に制限されるため、クライアントが関数の評価を実行することは不可能であるが(例えばクライアントに利用可能なコンピューティングリソースを用いる計算の予測されるランタイムが、許容可能な最大閾値を超える)、必ずしもそうである必要はなく、クライアントは、一般的に言うと、計算ランタイム、計算コスト(例えば関数の評価を実行するためにコンピューティングリソースを割り当てる金融コスト)等のような任意の適切な基準に基づいて入力xに対する関数fの評価を委任してよい。
  証明者は、一実施形態では、本開示の他の箇所で更に詳細に説明されるブロックチェーンノードのような、任意の適切なコンピューティングエンティティである。一実施形態において、証明者(例えばブロックチェーンノード)は、入力xに対して関数fを評価し、出力yと、上述のようなクライアント及び/又はブロックチェーンネットワークの他のノードのような他のコンピューティングエンティティによって検証できる出力yの正しさのプルーフπとを生成する。プルーフは、引数とも呼ばれることがあるが、実際の計算を行うよりも早く検証することができ、したがって、上述の証明者によって生成された出力の正しさを判断するために、入力xに対して関数fを再計算する代わりにプルーフの正しさを検証することにより、計算的オーバーヘッドを低減することができる(例えば電力オーバーヘッドと、コンピューティングリソースの電力供給(powering)及び実行に関連付けられるコストを低減する)。ゼロ知識検証可能な計算において、証明者は、該証明者が、特定の特性を有する入力を知っていることの証明をクライアントに提供する。
  知識のゼロ知識プルーフ(zero-knowledge  proof  of  knowledge)の有効な変形はzk_SNARK(Succinct  Non-interactive  ARgument  of  Knowledge)である。一実施形態において、全ペアリングベースのzk_SNARKs(all  pairings-based  zk-SNARKs)は、証明者が、一般的なグループオペレーションを使用して複数のグループ要素を計算し、検証者が、複数のペアリング積の方程式(pairing  product  equations)を使用してプルーフをチェックするプロセスを含む。一実施形態において、線形対話型プルーフは有限フィールドに対して機能し、証明者の及び検証者のメッセージは、フィールド要素のベクトルを決定するために使用可能な情報を含むか、符号化し、参照し、あるいは他の方法で含む。
  一実施形態において、第1コンピューティングエンティティ及び/又は第2コンピューティングエンティティは、メッセージのセットを交換することによって、スマートコントラクトの実行の条項について合意する。そのようなメッセージは、例えば満たされている条件に基づいて、実行すべきスマートコントラクト及びオペレーションのセットを実施するかどうか及び/又はどのように実施するかを決定する、条件のセットを符号化する1つ以上のブール式のようなスマートコントラクトの実行のための提案されるパラメータを符号化する。一実施形態において、あるコンピューティングエンティティは、パラメータのセットをプロトコルの一部として第2コンピューティングエンティティに送信し、第2コンピューティングエンティティは、それらのパラメータがスマートコントラクトにとって受け入れ可能であるかどうかを判断する。パラメータが受け入れられない場合、第2コンピューティングエンティティは、スマートコントラクトの実行のための提案されるパラメータの第2セットとして、異なるパラメータのセットを第1コンピューティングエンティティに提供してよい。また、第2コンピューティングエンティティは、パラメータの第1セットが受け入れ可能でなかったという信号を提供してよく、第1コンピューティングエンティティは、提供すべきパラメータの第2セットを決定する。いずれかの場合において、すべての当事者がパラメータに対する合意を信号伝達すると、いずれかのコンピューティングエンティティは、一実施形態において、ロッキングトランザクションを生成することができ、ここで、出力のうちの1つがプログラム(例えばスマートコントラクトスクリプト)によってロックされ、それを、スマートコントラクトの相手方に送信する。ロッキングトランザクションは、アンロッキングトランザクションを有効にすることができる制約を初期化するトランザクションを指してよい。いくつかの例において、「アンロッキングトランザクション」は、以前のトランザクションのUTXOによって示されるデジタル資産の少なくとも一部を、ブロックチェーンアドレスに関連付けられるエンティティに再関連付けする(例えば所有権及び制御を移転する)、ブロックチェーントランザクションを指す。
  一実施形態において、第1コンピューティングエンティティは、ロッキングトランザクションを生成し、作業者フリー(worker  fee)の部分を網羅するトランザクション入力を追加する。この時点では、ロッキングトランザクションはまだ有効ではないことに留意されたい。なぜなら、トランザクション入力の値は、ロッキングトランザクションのトランザクション出力の値に等しくないからである。例を続けると、第2コンピューティングエンティティがロッキングトランザクションを受け取ると、第2コンピューティングエンティティは、スマートコントラクトを確認(例えば共通参照文字列及びスマートコントラクトの実行のためのパラメータを確認)し、入力をロッキングトランザクションに追加し、UTXOをアンロックして、デジタル資産に合意し、かつプログラム(例えばスマートコントラクト)の実行のために作業者に支払われるべき報酬及び該作業者に対する報酬の値を有する出力にも合意した発行者に転送する。第1コンピューティングエンティティと第2コンピューティングエンティティの双方がトランザクション入力をスマートコントラクトに寄与する場合、スマートコントラクトは、両当事者によって共同で所有されることがあり、スマートコントラクトの移転(例えば交換又は販売)は、両当事者からの証明書を必要とすることがある。
  スマートコントラクト110は、ブロックチェーンネットワークのノードのような第3コンピューティングエンティティ106によって実行されてよい。第3コンピューティングエンティティ106は、作業者又は証明者と呼ばれることがある。一実施形態において、作業者は、入力に対する関数の計算を伴う計算タスクを少なくとも実行することによって、スマートコントラクトを実行する。一実施形態において、作業者は、スマートコントラクトの所有者が計算タスクを委任し得る任意の適切なコンピュータシステムである。入力は、一実施形態では、作業者の身元を証明する情報、例えば作業者に関連付けられる秘密鍵を使用して生成されたデジタル署名等を含む。一実施形態において、作業者は、第1及び第2コンピューティングエンティティが、計算タスクを成功裏に完了した見返りにデジタル資産を移転するよう合意したコンピューティングエンティティである。スマートコントラクトの所有者は、一実施形態では、入力x及び評価鍵EK112を証明者に提供し、証明者は、計算ルーチンに対して評価モジュールを使用して出力yを計算し(すなわち、y=f(x)、ここで、入力はx、関数はfである)、評価鍵EKを使用して、正しい実行のプルーフ116を生成する。正しい実行のプルーフ116は、本明細書の他の箇所では、正当性のプルーフと呼ばれることもある。実施形態において、作業者は、コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムにQAPの内部回路ワイヤの値を評価させ、QAPの出力yを生成させる命令を含む、ハードウェア及び/又はソフトウェアを備えるコンピュータシステムである。
  実施形態において、出力y、内部回路ワイヤの値(又はそのサブセット)及び評価鍵EKは、正当性のプルーフを生成するために使用される。プルーフπをブロックチェーンに格納することができ、作業者が複数の当事者と別個に対話する必要なく、複数の当事者によって確認することができる。このようにして、第4コンピューティングエンティティ(例えば検証者コンピュータシステム)は、公開検証鍵VK114及びプルーフπを使用して、ブロードキャストされたトランザクションを検証することができ、それにより、スマートコントラクトを検証することができる。場合によっては、スマートコントラクトの所有者は、検証が失敗した場合に、ブロードキャストされたトランザクションによって妨害されているデジタル資産を取り戻してもよい。場合によっては、スマートコントラクトの所有者は、プルーフの検証を実行することができる。
  一実施形態において、検証鍵114及び対応するプルーフ116は、上記及び/又は下記で説明される技術に従って生成される。したがって、検証者は、該検証者が、複数の楕円曲線乗算(elliptic  curve  multiplications)(例えば各公開入力変数に対して1つ)及び5つのペアチェックを計算し、5つのペアチェックのうちの1つが、追加のペアリング乗算を含むように、次の検証鍵V
K及びプルーフπを与えられる:
  検証鍵V
K、プルーフπ及び(a
1,a
2,...,a
N)を所与として、t(x)がp(x)を割ること、したがって、(x
N+1,...,x
m)=f(x
0,...,x
N)であることを確認するために、検証者は次のように進む。まず、すべての3つのα項をチェックする:
    e(α
vr
vV
mid(s)P,Q)=e(r
vV
mid(s)P,α
vQ)
    e(α
wr
wW
mid(s)P,Q)=e(α
wP,r
wW
mid(s)Q)
    e(α
yr
yY
mid(s)P,Q)=e(r
yY
mid(s)P,α
yQ)
  ここで、
である。次いで、検証者は、項βをチェックする:
    e(r
vV
mid(s)P+r
yY
mid(s)P,βQ)・e(βP,r
wW
mid(s)Q)=e(Z
mid(s)P,Q)及び
である。最後に、検証者は、可分性要件をチェックする:
    e(r
vV(s)P,r
wW(s)Q)=e(r
yY(s)P,Q)・e(r
yt(s)P,h(s)Q)
ここで、
である。
  したがって、上述のセクションからの表記及び本開示で説明される例を考えると、検証は、一実施形態によると、以下の要素のペアチェックのセットを含む:
  図2は、第1コンピューティングエンティティ202と第2コンピューティングエンティティ204が、2以上の当事者間で共有秘密のべき乗を決定するために使用できる数量を交換するコンピューティング環境200を図示している。第1コンピューティングエンティティと第2コンピューティングエンティティ204は、(図2に図示される水平の矢印の下に図示されるように)同一の共通参照文字列を計算するために使用される数量を交換してよい。一実施形態において、第1コンピューティングエンティティ及び第2コンピューティングエンティティは、図1に関連して説明されたものに従うブロックチェーンネットワークのノードである。少なくとも一実施形態によると、
をフィールドにおける関数であるとし、Cを対応する演算回路とし、Q=(t(x)、V,W,Y)、サイズmの対応するQAP(quadratic  arithmetic  program、二次算術プログラム)、次数dとする。さらに、
を双線形マッピングであるとし、Gを
のジェネレータとする。一実施形態では、(指数表現とは反対に)加法表現が選択される。一実施形態では、評価鍵及び検証鍵は、ランダムな
を選択し、r
y=r
v・r
w,r
v・G=〈g
v〉(一般に:〈a〉=a・G)及び対応して〈g
w〉〈g
y〉を設定して鍵を再構築することによって、選択される:
ここで、N=N
in+N
out、すなわち、入力と出力の数である。非対称のペアリングを検討する一実施形態では、ペアリングマッピングは、次のように定義される:
G
iは
のジェネレータであり、i=1、2である。そのような場合、CRSはわずかに変化し、VKは以下のようになる:
ここで、r
y=r
v・r
wであり、〈a〉
i=a・G
iである。
  示されるように、回路は多項式v、wによって記述され、これらの多項式は、それらの回路及び対応するQAPを所有/作成する当事者(例えばスマートコントラクトの所有者)にのみ知られている秘密sで評価される。
  より正確には、上述のように、クライアントは要素を生成する:
  一方、提案されるソリューションのセキュリティは、パラメータsに依拠し、いくつかの実施形態では、残りの(rv,rw,αv,αw,αy,β,γ)を公開することは、システムにゼロ知識を提示しない情報及び/又はクライアントが他のエンティティに知らせたくない情報を明らかにする可能性がある。
  一実施形態では、作業者が正当性のプルーフを提供することを必要とするソリューションでは、検証鍵に対して正当性のプルーフを確認するためのオペコード(又は同等のもの)が存在してよい。
  本開示全体を通して、別段の記載がない限り、本明細書における多項式は、フィールド
に対して定義される。したがって、
をフィールドとする。したがって、
に対する多項式は、
によって与えられる:
ここで、
である。
  一実施形態では、共通参照文字列は、形式:
    v(s)=a0+a1s+a2s2+・・・+ansn
    w(s)=b0+b1s+b2s2+・・・+bnsn
で表される、秘密sで評価される多項式v(x)、w(x)によって表される。
  一実施形態において、本明細書で説明される技術は、関連するグループ(例えば楕円曲線点)のジェネレータについて、形式:〈v(s)〉G=〈a0〉G+〈a1s〉G+〈a2s2〉G+・・・の楕円曲線点を決定して共有するために利用される。したがって、一実施形態では、本明細書で説明されるシステム及び方法は、任意の整数べき乗rについて、srG=〈sr〉Gを決定して分配するために利用される。
  少なくとも一実施形態による、〈sr〉Gを共有して分配するための技術が図2に図示されている。一例として、n=2の場合が、図2に関連して以下で更に詳細に説明されており、スマートコントラクトの当事者間で秘密のべき乗を共有する非限定的な例と見なされるべきである。さらに、本明細書で説明される様々な実施形態では、閾値に相当するものが予め与えられ、必要な数の参加者が最初に合意すると想定されることに留意されたい。
  図2は、少なくとも一実施形態による、2参加者間の場合に共有秘密のべき乗を共有及び分配するための技術を図示している。図2に図示されるように、少なくとも一実施形態によると、正確に2人の当事者が、共有秘密のべき乗を共有する参加者である(すなわち、n=2の場合)。第1及び第2コンピューティングエンティティは、それぞれ、A及びBと呼ばれることがある。一実施形態において、A及びBは、以下の情報を交換してよい:Aは〈p1(xi)〉GをBに送信し、代わりに〈p2(xi)〉Gを受け取る(i∈{1,2})。このようにして、双方が計算することができる:
    〈p(xi)〉G=〈p1(xi)+p2(xi)〉G
  ラグランジュ補間(ラグランジュ多項式、n.d.)を使用して、pを、p(x1)及びp(x2)に関して、そして〈p(x
i)〉
Gによって、拡張〈p(x)〉
Gにより表すことができる(WP0559を参照されたい):
参加者は、p(x)を再構築することはできないが、交換された点〈p
i(x
j)〉
Gによって、〈p(x)〉
G(特に〈p(0)〉
G)を再構築することができる。これは、同様に、〈p
n(x)〉
Gのより高いべき乗についても当てはまる。多項方程式(多項定理、n.d.)の結果として、
である。m=2について、これは次のようになる:
次に、以下の項の「タワー」(tower)が得られる(ここで、i=1、2):
  模式的に、交換は(何らかのx
iについて)以下のように見えることがある:
  この交換の後(特定の予め予定された変換に続いて)、両当事者は〈pn(xj)〉G、特に〈pn(0)〉G=〈sn〉Gを計算することができる。
  図3は、第1コンピューティングエンティティ302と第2コンピューティングエンティティ304が、図1に関連して説明されるもののようなプロトコルにゼロ知識を提示するパラメータのセットを交換する、コンピューティング環境300を図示している。様々な実施形態によると、公開検証鍵は、以下の形式を持ってよい:
  一方、提案されるソリューションのセキュリティは、パラメータsに依拠し、いくつかの実施形態では、残りの(rv,rw,αv,αw,αy,β,γ)を公開することは、システムにゼロ知識を提示しない情報及び/又はクライアントが他のエンティティに知らせたくない情報を明らかにする可能性がある。したがって、一実施形態では、検証鍵306を生成するために使用される残りのパラメータの一部又はすべてが、図3に関連して説明される技術を使用して共有される。
  一実施形態において、多項式は、例えば図1、図2及び図4に関連して説明されるもののような、本開示の他の箇所で説明される技術に従って、第1コンピューティングエンティティ302と第2コンピューティングエンティティ304(それぞれA及びBと呼ばれることもある)との間で交換される。したがって、一実施形態において、第1コンピューティングエンティティ302は、楕円曲線点のセット
を計算して第2コンピューティングエンティティ304に共有し、第2コンピューティングエンティティ304は、楕円共有点のセット
を計算して第1コンピューティングエンティティ302に共有する。加えて、検証鍵306を生成するために使用される他のパラメータは、平文フォーマットでは通信チャネルを介して明らかにされず、代わりに、以下で説明される技術を使用して伝送されてよい。
  一実施形態によると、G
iを
のジェネレータ、i=1,2であるとし、p=v,w,yについて、〈p
k(s)〉
i=r
p・p
k(s)・G
iとする。さらに、一実施形態では、
が共有され、他のパラメータは、該パラメータの秘密性(例えば暗号化又は他の隠蔽技術)を保証する方法で伝搬される。参加者のいずれかは、反対に、パラメータ
を生成し、それらを、他のオフライン又はオンライン(例えばオンチェーン)のものに転送してよいことに留意されたい。前者、すなわち、他のパラメータの秘密性を保証することに関して、様々な技術が利用されてよい。例えばシャミアの秘密分散法(Shamir’s  Secret  Sharing  Scheme:4S)を使用することによって、要素〈α
v〉
2,〈α
w〉
2,〈α
w〉
1,〈α
y〉
2(及び場合によっては、実装/プロトコルに依存して〈β〉
1,〈β〉
2)を共有し、かつ/又はr
v,r
w,β,γについてディフィー・ヘルマンのような秘密生成を使用する。
  一実施形態において、要素〈α
v〉
2,〈α
w〉
2,〈α
w〉
1,〈α
y〉
2,〈β〉
1,〈β〉
2又はこれらの何らかの組合せは、〈a〉
i=a・G
iの形式のものである。sの場合と同様に、iは、多項式q
iを生成し、それをx
j、j∈{1,...,m}で評価し、参加者jと対応するq
i(x
j)を共有する。各参加者は、
特にq(0)・G
i=〈q(0)〉
iを決定することができ、ここで、q(0)は、α
v,α
w,α
y,β又はその何らかの組合せとすることができ、その特定の組合せは、zk_SNARKsプロトコルのようなプロトコル/変換に基づいてよい。
  一実施形態において、αパラメータは、楕円曲線点によって共有され、一方、他のパラメータはスカラー値によってなされる。そのような値について、少なくとも一実施形態によると、パラメータ自体を共有する必要なく、ディフィー・ヘルマン法(Diffie-Hellman  scheme)を使用して2つのコンピューティングエンティティ間でスカラーパラメータを共有する。したがって、一実施形態によると、P={t
1,...,t
N}をNパラメータのセットとする。一実施形態では、A及びBが、法(modulus)μ及びジェネレータγの乗法群Γを使用して合意しており、参加者(A及びB)は以下のステップに続くと想定する(ここでは指数表現が説明的例として使用されるが、他の適切な表現が利用されてよい):各i∈{1,...,N}について、第1及び第2コンピューティングエンティティは、それぞれ、(秘密の)ランダム数v
A,i、v
B,iを作成し、双方が(公開)要素:
を導出する。コンピューティングエンティティは、次いで
を交換し、
をそれぞれ計算する。したがって、パラメータは、
を設定される。
  したがって、上記技術は、第1及び第2コンピューティングエンティティが、パラメータを交換する必要なく、代わりに、
を交換することによって、パラメータt
iを共有することを証明した。少なくとも一実施形態によると、参加者の数は、少なくとも1つのパラメータが前述の方法で交換された結果として、n=2に限定されることに留意されたい。
  図4は、2当事者の共通参照文字列(CRS)と、対応する正当性のプルーフ(POC)又は正しい実行のプルーフに基づくプロトコルの図400を図示している。図400は、第1コンピューティングエンティティ402、第2コンピューティングエンティティ404及び第3コンピューティングエンティティ406を図示しており、第1コンピューティングエンティティ402及び第2コンピューティングエンティティ404は一緒に、スマートコントラクトの実行後に第3コンピューティングエンティティ406によってアンロックできるスマートコントラクトに対する寄与を行う。一実施形態において、プロトコルは、少なくとも部分的にブロックチェーンネットワークを使用して実装される。
  本開示によると、(例えば図4に関連して)更に詳細に説明されるように、2参加者A及びBのためのスキーム及びプロトコルが、共有秘密を生成し、したがって、関連する回路の正しい実行を確認するために使用できる共有の共通参照文字列(CRS)を生成するために利用されてよい。一実施形態において、スキームは、最初にAとBの間で、次に、A+B(又はいずれか)と、A又はCの少なくとも一方の代わりに計算タスクを実行する作業者Cとの間でのデータのオフチェーン交換を想定している。作業者Cに計算タスク(例えばスマートコントラクトの実行)を実行させるために、A及びBは双方、作業者Cが正当性のプルーフを提供し、資金をアンロックするために正しい検証鍵(VK)の所持を証明することを要するトランザクション(特定のP2SHタイプのリディームスクリプト(redeem  script)を含んでも含まなくてもよい)に署名する。
  本開示で提示されるプロトコルを実装するための技術は、いくつかの実施形態では、(例えば既にサポートされている既存のコマンドを使用して、ビットコインベースのブロックチェーン上に実装され得る)既存のブロックチェーンネットワークに対するいかなるプロトコルの変更も必要としない。いくつかの実施形態では、ビットコインプロトコルによってサポートされる既存のコマンドのセットに対する拡張も本明細書で議論される-拡張は、スマートコントラクトの実行の効率を改善することや、スマートコントラクトのサイズを減らすこと(正しく動作するためにブロックチェーンネットワークのノードによって必要とされるストレージ空間の量を減らすことができる)等といった、様々な利点を有し得る新たなコマンド(例えば新たなオペコード)を含んでもよい。いくつかの実施形態において、ブロックチェーンに対してスマートトランザクションを確認するコストは、スマートコントラクトのサイズに少なくとも部分的に基づく。
  一実施形態において、楕円曲線点及び共通参照文字列に関連する他のデータの交換及び移転は、オフチェーンで転送される。一実施形態において、検証鍵は最終的に、作業者Cとスマートコントラクトの評価を望んでいる2当事者(A及びB)によって実行される作業(例えばスマートコントラクトの実行)のために、デジタル資産の交換を介してブロードキャストされるか、他の方法でオンチェーンに利用可能にされる。本明細書で説明されるように、いくつかのスキームが可能である。例えばA及びBは、ロッキングトランザクションを準備するときに、双方がVK又はVKのハッシュを供給しても、しなくてもよい。言い換えると、一実施形態では、キャパシティ集中型のワークロードの大部分はオフチェーンで行われる。
  一実施形態において、プロトコルは、図4に図示される点線によって示されるように、オフチェーンとオンチェーンコンポーネントの双方を含む。オフチェーンコンポーネントは、ブロックチェーン台帳にデータを格納することなく起こり得る、データ及び情報の通信及び交換を含んでよい。例えばプロトコルのオフチェーンコンポーネントは、ソースと宛先との間でのIPパケットの交換を含んでよい(例えば第1コンピューティングエンティティ402は、第1パラメータのセットを宛先、すなわち第2コンピューティングエンティティ404に送信するソースである)。例えばプロトコルのオンチェーンプロトコルは、ブロックチェーンネットワークのノードに利用可能にされるブロックチェーン台帳にデータをボロードキャストすることを含んでよい。
  一実施形態において、第1コンピューティングエンティティ402は、第1多項式に少なくとも部分的に基づいて、楕円曲線点のセット
を計算する。第1コンピューティングエンティティ402は、楕円曲線点のセットの少なくとも一部を含む第2コンピューティングエンティティ404にデータを送信してよい。例えば第1コンピューティングエンティティ402は、楕円曲線点の完全なセットを送信してもよい。第2の例として、第1コンピューティングエンティティ402は、楕円曲線点のサブセット
を送信してもよい。
  いくつかの実施形態において、共有秘密sの秘密性を維持するためには必要とされないが、システムにゼロ知識を提示するために必要とされる可能性がある、追加のデータが送信される。例えば
又はその何らかの組合せも計算され(例えば図3に関連して上述したように)、共通参照文字列を決定することの一部として使用することができる追加のパラメータを生成してもよい。一実施形態において、
は、スカラー値のセットである。一実施形態において、q
1,I(I=v,w,y)は楕円曲線点のセットを指す。
  一実施形態において、第2コンピューティングエンティティ404は同様に、第1コンピューティングエンティティ402によって使用されたものとは異なり得る多項式に基づいて、楕円曲線点のセット
を計算する。第2コンピューティングエンティティ404は、生成された楕円曲線点のサブセット
を第1コンピューティングエンティティ402に送信してよい。加えて、一実施形態では、
又はその何らかの組合せのようなオプションのパラメータが交換されてよい。このようなオプションのパラメータは、共有秘密sの秘密性を維持するために必ずしも必要ではないが、プロトコルがゼロ知識であることを保証するため利用され得る。
  一実施形態において、交換された数量を、第1コンピューティングエンティティ402と第2コンピューティングエンティティ404の双方により、同一の共通参照文字列を計算するために利用することができる。第3コンピューティングエンティティ406は、後に正しい検証鍵の所有を証明しなければならないので、それらは、第3コンピューティングエンティティ(例えば作業者)に共通参照文字列を提供しても、しなくてもよい。第1及び第2コンピューティングエンティティによる同じ共通参照文字列の決定は、オフチェーンで実行されてよい。
  プロトコルを続けると、一実施形態によると、第1及び第2コンピューティングエンティティは、それらがスマートコントラクトの実行のために比例する寄与を行うトランザクションに合意する。一実施形態において、第1及び第2コンピューティングエンティティは寄与の割合に合意し、各々、スマートコントラクトに対して妨害され、かつスマートコントラクトの実行時に第3コンピューティングエンティティによってアンロックできる、トランザクション入力を提供する。これは、第1及び第2コンピューティングエンティティが両方とも同じアドレス(Cのアドレス)に資金を転送する場合、P2SH(pay-to-script-hash)タイプの合意であってよく、そうでなくてもよい。P2SHタイプのスクリプトは、検証鍵の要素又は検証鍵のハッシュ値、すなわち、hi=HASH(VKi)を含んでもよく、含まなくてもよい。一実施形態において、鍵はチャンクに分割されている。スマートコントラクトは、第1及び第2コンピューティングエンティティによって合意された比で支払われる作業者報酬として機能する、第1コンピューティングエンティティ402によって寄与される第1トランザクション入力と第2コンピューティングエンティティ404によって寄与される第2トランザクション入力とを有する第1トランザクション410として、ブロックチェーンにブロードキャストされてよい。
  一実施形態において、作業者とも呼ばれる第3コンピューティングエンティティ406は、英国特許出願第1719998.5号及び/又は英国特許出願第1720768.9号におけるプロトコルに従って、第2トランザクション410内の報酬をアンロックし、第3コンピューティングエンティティ406は、作業(回路の正しい実行)のため報酬をアンロックし、そのようにする際に、(a)正しい検証鍵と、(b)正当性の有効なプルーフを所有していることを証明する。検証は、別のコンピュータシステム(例えば検証者であるブロックチェーンのノード)によって及び/又はスマートコントラクトへの参加者であるコンピューティングエンティティの双方又はいずれかによって実行されてよい。
  図5は、一実施形態に従って、検証鍵と評価鍵を含む2当事者の共通参照文字列を生成するためのプロセス500の説明的例を示している。プロセス500の一部又はすべて(あるいは本明細書で説明される任意の他のプロセス又はその変形及び/又は組合せ)が、コンピュータ実行可能命令を用いて構成される1つ以上のコンピュータシステムの制御下で実行されてよく、ハードウェア、ソフトウェア又はその組合せによって1つ以上のプロセッサ上で一緒に動作するコード(例えばコンピュータ実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装されてよい。コードは、例えば1つ以上のプロセッサによって実行可能な複数のコンピュータ読取可能命令を含むコンピュータプログラムの形式で、コンピュータ読取可能記憶媒体上に格納されてよい。コンピュータ読取可能記憶媒体は、非一時的コンピュータ読取可能媒体であってよい。いくつかの実施形態において、プロセス500を実行するために使用可能なコンピュータ読取可能命令の少なくとも一部は、単に一時的信号(例えば伝搬する一時的電気又は電磁気伝送)を使用して格納されない。非一時的コンピュータ読取可能媒体は、一時的信号のトランシーバ内部に非一時的データ記憶回路(例えばバッファ、キャッシュ及びキュー)を含んでよい。
  一実施形態において、プロセス500を実行するシステムは、システム及びスマートコントラクトの当事者によって同一の共通参照文字列を計算するために使用できる情報を少なくとも確立するために、プロセスを実行するスマートコントラクトに対する当事者であるコンピューティングエンティティである。プロセス500に関連して説明される共通参照文字列は、例えば図1~図4に関連して議論されるものに従うものであってよい。一実施形態において、共通参照文字列は:
    v(s)=a0+a1s+a2S2+・・・+ansn
    w(s)=b0+b1s+b2S2+・・・+bnsn
の形式の秘密sで評価される多項式v(x)、w(x)によって表される。
  一実施形態において、第1コンピューティングエンティティは、楕円曲線値の第1セットを生成するために、第1多項式を決定する502。一実施形態において、システムは、関連するグループの(例えば楕円曲線点の)何らかのジェネレータGについて、〈v(s)〉
G=〈a
0〉
G+〈a
1s〉
G+〈a
2s
2〉
G+・・・,の形式の楕円曲線点を生成する。特段の記載がない限り、このプロセス500における多項式は、フィールド
に対して定義される。したがって、
をフィールドであるとする。次いで、
に対する多項式が、
及び
によって与えられ、ここで、
である。楕円曲線点のセットは、
として表されてよい。
  第1コンピューティングエンティティは、楕円曲線点のセットを第2コンピューティングエンティティに利用可能にしてよい504。一実施形態において、システムは、楕円曲線点のセット全体を第2コンピューティングエンティティに利用可能にする必要はなく、むしろ一実施形態では、システムは、楕円曲線点のサブセット
を伝送する。
  例えば少なくとも一実施形態によると、n=2の場合、第1コンピューティングエンティティは、
を計算し、第2コンピューティングエンティティと
を共有する。残りの数量
は、第1コンピューティングエンティティによって、共通参照文字列を計算するために利用されてよい。
  第2コンピューティングエンティティもスマートコントラクトに対する当事者であるが、同じ入力点に対する楕円曲線点のセットを別個に生成(例えば楕円曲線点
を生成)し、生成された点のすべて又は一部を第1コンピューティングエンティティに提供してよい。第1コンピューティングエンティティは、第2コンピューティングエンティティから、該第2コンピューティングエンティティによって生成された楕円曲線点の一部又はすべてに対応する楕円曲線点の第2セットを受け取ってよく506、ここで、サブセットは、本開示の他の箇所で(例えば図2及び図6に関連して)説明される技術に基づいて決定されてよい。
  一実施形態において、システムは、楕円曲線点の第1及び第2セットの少なくとも一部に基づいて、同一の共通参照文字列を決定する508。例えば楕円曲線点の交換後、ラグランジュ補間を利用して、p(x
1)及びp(x
2)に関してpを表してよい。一実施形態において、スマートコントラクトの両当事者は、交換された点〈p
i(x
j)〉
Gによって、べき乗〈p
n(x)〉
G(特に、〈p
n(0)〉
G=〈s
n〉
G)を再構築することができる。べき乗〈p
n(x)〉
Gについて、上述の多項方程式が利用されてよい:
  一実施形態では、追加のパラメータ(例えばスカラー値及び/又は楕円曲線点)が、例えば図3に関連して説明された方法等で第1コンピューティングエンティティと第2コンピューティングエンティティとの間で交換され、それらのパラメータは、共有秘密の累乗〈sn〉Gとともに、検証鍵及び/又は評価鍵を計算するために利用される。一実施形態では、パラメータは、暗号化に対する依存なしに、かつ/又は機密性の暗号的に検証可能な保証を提供する通信チャネルに対する依存なしに交換される。
  一実施形態において、第1及び第2コンピューティングエンティティはトランザクションに合意し、スマートコントラクトを正しく実行する第3コンピューティングエンティティ(例えば作業者)によってアンロックできる、スマートコントラクトのそれぞれのトランザクション入力に対する寄与を各々作成する510。一実施形態において、コンピューティングエンティティのいずれかが、比例作業者フリー(proportionate  worker  fee)を提供する。P2SHタイプの合意が存在することも、存在しないこともあるが、この合意では、その双方が、同じアドレス(例えば作業者用のアドレス)に寄与する。一実施形態において、P2SHスクリプトは、検証鍵の要素又は検証鍵のハッシュ値を含む。例えば英国特許出願第1719998.5及び/又は英国特許出願第1720768.9に関連して説明される技術を使用することにより、作業者(例えば第3コンピューティングエンティティ)は、該作業者が正しい検証(correct  verification)を有しており、かつ正当性の有効なプルーフを提供することの計算的に検証可能な証明書を提供することによって、寄与をアンロック(例えばアンロック)してよい。
  図6は、少なくとも一実施形態に従って、n当事者(例えばn>2)の間で共有秘密のべき乗を共有するためのプロセス600の説明的例を示している。プロセス600の一部又はすべて(あるいは本明細書で説明される任意の他のプロセス又はその変形及び/又は組合せ)が、コンピュータ実行可能命令を用いて構成される1つ以上のコンピュータシステムの制御下で実行されてよく、ハードウェア、ソフトウェア又はその組合せによって1つ以上のプロセッサ上で一緒に動作するコード(例えばコンピュータ実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装されてよい。コードは、例えば1つ以上のプロセッサによって実行可能な複数のコンピュータ読取可能命令を含むコンピュータプログラムの形式で、コンピュータ読取可能記憶媒体上に格納されてよい。コンピュータ読取可能記憶媒体は、非一時的コンピュータ読取可能媒体であってよい。いくつかの実施形態において、プロセス600を実行するために使用可能なコンピュータ読取可能命令の少なくとも一部は、単に一時的信号(例えば伝搬する一時的電気又は電磁気伝送)を使用して格納されない。非一時的コンピュータ読取可能媒体は、一時的信号のトランシーバ内部に非一時的データ記憶回路(例えばバッファ、キャッシュ及びキュー)を含んでよい。一実施形態では、閾値に相当するもの(equivalent)が事前に与えられ、必要な数の参加者が最初に合意すると想定される。これは、シャミアの秘密分散法(4S)で説明されるような様々な既存の技術とは異なり、秘密の共有は、所与の閾値に到達する制限下でのみ機能する。
  秘密の共有は、様々な実施形態によると、任意の数の当事者に対して有効である。一実施形態において、本開示で説明される形式主義(formalism)の大部分を、複数当事者(n>2)シナリオに適用することができる。いくつかの実施形態において、複数当事者システム(n>2)は、特定の他のパラメータ(例えば以下の非楕円曲線(例えばスカラー)パラメータ:rv、rw、αv、αw、αy、β、γの一部又はすべて)を隠す必要がない。しかしながら、これらのパラメータが、プロトコルに従ってプライベートのままである場合、例えば図3に関連して説明されるもののような異なるアプローチを利用して、rv、rwのようなパラメータを隠してもよい。
  一実施形態において、すべての参加者は、有限フィールド要素を他の有限フィールド要素にマップする関数
に合意602し、かつ/又はこれに対するアクセスを有する。関数は、一実施形態では、グループのジェネレータの係数/指数として機能する。例示の目的のために、我々が関心のある関数を、テイラー級数の一般化によって多項式で表すことができるので、以下で説明される実施形態は多項式に焦点を当てる。特に、様々な実施形態において、関与する当事者は、それらの周囲の間で値を渡すことなく、同じ値で関数を評価する。例えば次数1の多項式の場合、これは、シャミアの秘密分散法を使用することになる。より高い次数(n>1)では、当事者は、
    f(s)=a
0+a
1s+a
2s
2+・・・+a
ns
nの形式の表現を取り扱っている。
  したがって、本明細書で説明される技術を利用して、すべての参加者が同じ〈f(s)〉Gを有することを保証することができる。例えば少なくとも一実施形態に従って説明されるプロトコルでは、〈f(s)〉G=〈a0〉G+〈a1s〉G+〈a2S2〉G+・・・,なので、任意の整数べき乗rについて、〈sr〉Gの形式で点を公的に分配することによって、同じEQ_FSGを、2人以上の参加者(すなわち、n>1)の間で共有することができ、ここで、Gは、議論されているグループの(例えば楕円曲線点の)ジェネレータである。
  一実施形態において、各参加者は、x
i≠0∀iの点のセット(x
1,x
2,...)で評価される多項式を生成することができ604、点はすべての当事者に知られ得る。一実施形態において、各参加者の多項式の和は、(マスター)多項式を構成し、そのy軸との交差は秘密であり、すなわち、
ただし、P(0)=sであり、ここで、mは参加者の数である。上述のy軸との交差は、交点と呼ばれてよい。
  sを確立するために、各参加者は、異なる点(x1,x2,...)で評価された、対応する多項式を共有する606。より具体的には、参加者iは、i,j∈{1,...,m}についてpi(xj)を作成/計算し、〈pi(xj)〉Gをjに送り出す。これらの数量が共有されると、各参加者は、共有秘密の累乗srを計算するか、他の方法で決定することができる608。
  s
rを検討するとき、これは、
の表現を共有することになるので、もう少し精査する必要がある。
  〈p
i(x
j)〉
Gのべき乗を計算することができない可能性がある。なぜなら、ジェネレータのべき乗は一般的に定義されていないからである。しかしながら、すべての参加者は、交換された〈p
i(x
j)〉
Gによって〈s〉
Gを推論することができるので、(マスター多項式は、一般に、ラグランジュ補間(ラグランジュ多項式、n.d.)によって構築できるので)ラグランジュ補間多項式L(x)のべき乗を検査することによって開始することが可能である。ラグランジュ補間を
と書くことができ、ここで、
であり、したがって、
であり、ここで、
は、多項係数(多項定理、n.d.)である。したがって、l
j(x)多項式を、各参加者によって独立に計算することができる。次に、各参加者は、
を計算することができるので、
となり、これは、(多項拡張を使用して)
と書き直すことができる。
  これは、(多項式piの所有者/作成者である)参加者iが、参加者jに〈p
i(x
j)〉
Gのべき乗、すなわち、セット:
  を提供することができることを意味する。
  これは、参加者jが、
(及び同様に、
)等を計算することを可能にする。一実施形態において、参加者は、
の形式における表現を計算する。
  少なくとも一実施形態による、参加者が楕円曲線を使用し、Gが、対応する掛け算表現におけるジェネレータである例を考える。2参加者A及びBの場合、Aは〈p1(x2)〉GをBに送信し、代わりに〈p2(x1)〉Gを受け取る。したがって、参加者Aは、
    〈p(x1)〉G=〈p1(x1)+p2(x1)〉G
を計算することができ、同様に、参加者Bは、
    〈p(x2)〉G=〈p1(x2)+p2(x2)〉G
を計算することができる。
  ラグランジュ補間を使用して、p(x
1)及びp(x
2)に関してpを表現することができる:
  各参加者は、交換された点〈p
i(x
j)〉
Gによって、〈p(x)〉
G(特に〈p(0)〉
G)を再構築することができる。〈p
n(x)〉
Gのより高いべき乗について、以前のセクションからの多項方程式が利用されてよい:
  この交換の後(特定の予め予定された変換に続いて)、両当事者は〈pn(xj)〉G、特に〈pn(0)〉G=〈sn〉Gを計算することができる。
  プロセス600によるプロトコルが、以下で説明される。各参加者は、
の形式の式を取得できる必要があるので、点を交換するときに、順序付け(ordering)が必要となることがある。ここで、我々はそのようなソリューションを説明する。
  一般性を失うことなく、少なくとも一実施形態によると、参加者1は、第1楕円曲線点を提示するものである。プロトコルは、一実施形態では、以下のステップに従う:
  1.参加者1は、
をi≠1のすべての参加者に分配し、ここで、k
1=1,...,n及びj=1,...,mであり、mは、ここでは参加者の数である。
  2.参加者2は、k
1=0,...,n-1、k
2=1,...,n及びj=1,...,mについて、
をi≠2のすべての参加者に分配する。
  3.参加者3は、k
1=0,...,n-1、k
2=0,...,n-1、k
3=1,...,n及びj=1,...,mについて、
をi≠3のすべての参加者に分配する。
  4.  ...(各参加者について同様である)。
  シーケンス内のl番目の参加者は、i∈{1,...,l-1}に対するk
i=0,...,n-1、k
l=1,...,n及びj=1,...,mについて、
をすべてのi≠lに分配する。最後の参加者mが、彼/彼女の点を分配するとき、すべての参加者は、〈s
n〉
G=〈p
n(0)〉
Gを計算するために、必要なコンポーネントを有する。
  一実施形態において、プロセス600は、形式
の点のセットを交換する複数のm参加者(例えば2人より多くの参加者)を含み、ここで、点は、各参加者によって〈p
k(x
j)〉
Gを計算するために使用される。参加者は、次いで〈p
k(x
j)〉
Gをラグランジュ補間とともに使用して、〈p
k(x)〉
G及び特に〈s
k〉
G=〈p
k(0)〉
Gを取得し得る。一実施形態において、点は、楕円曲線点であり、x
j≠0∀jである。
  本明細書及び図面は、したがって、限定的な意味ではなく、例示的なもの見なされるべきである。しかしながら、特許請求の範囲に記載される本発明の範囲から逸脱することなく、様々な修正及び変更がそれに行われてもよいことは明らかである。同様に、他の変形も本開示の範囲内である。したがって、開示される技術は、様々な修正及び代替的構造の影響を受けやすいが、その特定の例示的実施形態が図面に示され、上記に詳細に説明されている。しかしながら、開示される1つ又は複数の特定の実施形態に本発明を限定する意図はなく、反対に、添付の特許請求の範囲内で定義される本発明の範囲内にある、すべての修正、代替的構造及び均等物を網羅するよう意図されることを理解されたい。
  「セット」(例えば「アイテムのセット」)又は「サブセット」という用語の使用は、特段の記載がない限り又は文脈によって矛盾しない限り、1つ以上のメンバを含む、空でない集合として解釈されるべきである。さらに、特段の記載がない限り又は文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも、対応するセットの正確なサブセットを示さないが、サブセット及び対応するサブセットは等しくてもよい。
  「A、B、及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形の句のような連結語は、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、アイテム、用語等がA又はB又はCのいずれか、あるいはA及びB及びCのセットのうちの任意の空でないサブセットであり得ることを示すために、一般的に使用されるような文脈で理解される。例えば3つのメンバを有するセットの説明的例では、「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という連結句は、以下のセット:すなわち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のいずれかを指す。したがって、そのような連結語は、一般に、特定の実施形態が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ及びCのうちの少なくとも1つが各々提示されること要することを暗示するように意図されていない。さらに、特段の記載がない限り又は文脈から明らかでない限り、「基づいて」という句は、「のみに基づいて」ではなく、「少なくとも部分的に基づいて」を意味する。
  説明されるプロセスのオペレーションは、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、任意の適切な順序で実行され得る。説明されるプロセス(又はその変形及び/又は組合せ)を、実行可能命令とともに構成される1つ以上のコンピュータシステムの制御下で実行することができ、ハードウェア又はその組合せによって1つ以上のプロセッサ上で集合的に動作するコード(例えば実行可能命令、1つ以上のコンピュータプログラム又は1つ以上のアプリケーション)として実装することができる。いくつかの実施形態において、コードを、例えば1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形で、コンピュータ読取可能記憶媒体上に格納することができる。いくつかの実施形態において、コンピュータ読取可能記憶媒体は非一時的である。
  提供される任意の及びすべての例又は例示的言語(例えば「のような」)の使用は単に、本発明の実施形態をよりよく説明するように意図されるものにすぎず、別段の請求がない限り、本発明の範囲に対する限定を課するものではない。本明細書におけるいかなる言語も、いずれかの特許請求されていない要素を、本発明の実施に必須であるものとして示すように解釈されるべきではない。
  本発明を実行するために本発明者らに知られているベストモードを含め、本開示の実施形態が説明されている。これらの実施形態の変形は、前述の説明を読むと、当業者に明らかになるであろう。本発明者らは、当業者がそのような変形を適切に使用することを期待し、本発明者らは、本発明の実施形態が、具体的に説明されるもの以外の他の方法で実施されることを意図している。したがって、本開示の範囲は、適用可能な法律で許容されるように、添付の特許請求の範囲に記載される主題のすべての修正及び均等物を含む。さらに、そのすべての可能な変形における上述の要素の任意の組合せは、特段の記載がない限り又は文脈によって明らかに矛盾しない限り、本開示の範囲によって包含される。
  引用された刊行物、特許出願及び特許を含むすべての参照文献は、各参照文献が、参照によって個々に具体的に組み込まれることが示され、その全体が説明されている場合と同程度に、参照によって組み込まれる。
  上述の実施形態は、本発明を限定するものではなく例示するものであり、当業者は、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することができることに留意されたい。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、それらの手段の組合せを有利に使用することができないことを示すものではない。