(58)【調査した分野】(Int.Cl.,DB名)
前記未確認トランザクションデータパッケージが、前記マルチパーティトランザクションを実行するのに必要なすべてのノードのアドレスを含む、請求項1に記載の方法。
前記未確認トランザクションデータパッケージが、前記ブロックチェーンネットワークにより、キー値対における値として維持されている未確認トランザクションプールに記憶されており、
前記キー値対におけるキーが、前記未確認トランザクションデータパッケージに関連した前記トランザクションペイロードの前記ハッシュである、請求項1に記載の方法。
前記ブロックチェーンネットワークによって維持されているブロックチェーンにおける前記トランザクションペイロードの実行を記録するステップをさらに含む、請求項1に記載の方法。
前記第1のパブリックキーおよび前記第2のパブリックキーが、前記ブロックチェーンネットワークによって維持されているブロックチェーンのブロックに記憶されている、請求項1に記載の方法。
命令で符号化された1つまたは複数のコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から7のいずれか1項に記載の方法による動作を実行させる、コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0011】
様々な図面において同じ参照符号は同じ要素を示す。
【0012】
本明細書の実装形態は、ブロックチェーンネットワークにおけるマルチパーティスマートコントラクトの実行を検証するためにコンピュータで実施される方法を含む。より詳細には、本明細書の実装形態は、スマートコントラクトを使用するマルチパーティトランザクションのトランザクション確認状態を維持するステップと、すべてのパーティの確認が受け取られた後にトランザクションを実行するステップとを対象とするものである。いくつかの実装形態では、アクションには、ブロックチェーンネットワークにおけるコンピュータノードである第1のノードから第1のトランザクション情報を受け取るステップであって、第1のトランザクション情報が、トランザクションペイロード、第1のパブリックキー、およびトランザクションのための署名入りトランザクションペイロードを含む、ステップと、第1のパブリックキーを使用して署名入りトランザクションペイロードを検証するステップと、署名入りトランザクションペイロードを検証するステップに応答して未確認トランザクションデータパッケージ構築し、未確認トランザクションデータパッケージの確認状態を設定するステップと、ブロックチェーンネットワークにおけるコンピュータノードである第2のノードから第2のトランザクション情報を受け取るステップであって、第2のトランザクション情報が、トランザクションペイロードのハッシュ、第2のパブリックキー、およびトランザクションのためのトランザクションペイロードの署名入りハッシュを含む、ステップと、第2のパブリックキーを使用して第2のトランザクション情報を検証するステップと、未確認トランザクションデータパッケージの確認状態を更新するステップと、トランザクションに対するすべてのパーティがトランザクションを確認したことを指示する確認状態に応答してトランザクションペイロードを実行するステップとが含まれる。
【0013】
本明細書の実装形態のさらなるコンテキストを提供するために、上記で導入されたように、コンセンサスネットワークおよびブロックチェーンネットワーク(たとえばピアツーピアノードから構成されている)とも称され得る分散台帳システム(DLS)により、参加しているエンティティは、安全かつ不変に、トランザクションを行ったりデータを記憶したりすることが可能になる。ブロックチェーンという用語は、一般にビットコインの暗号通貨ネットワークに関連したものであるが、本明細書では、一般に、いかなる特別な使用の場合も参照することなくDLSを参照するのに使用される。上記で導入されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとしてもたらされ得る。本明細書では、参加しているエンティティの間に公開されるパブリックブロックチェーンネットワークを参照しながら、本明細書の実装形態がより詳細に説明される。しかしながら、本明細書の実装形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現され得ることが企図されている。
【0014】
本明細書の実装形態のさらなるコンテキストを提供するために、ブロックチェーンネットワークにおいてアプリケーションを開発し、試験して、ブロックチェーンネットワークの内部で実行するように展開することができる。例示のアプリケーションは、スマートコントラクトを制限なく含むことができる。スマートコントラクトは、様々なパーティに影響を及ぼす契約条項を有する現実の適法契約のデジタル表現と説明され得る。スマートコントラクトは、例示のコンテキストにおいて、コンソーシアムブロックチェーンネットワークの内部で実施され、記憶され、(必要に応じて)更新され、実行される。スマートコントラクトに関連したコントラクトパーティ(たとえば購買者および販売者)は、コンソーシアムブロックチェーンネットワークにおけるノードとして表現される。
【0015】
いくつかの例では、スマートコントラクトに記憶され得るデータは、情報、事実、提携、差引勘定、およびコントラクトを実行するための論理を実施するのに必要な何らかの他の情報を記録するのに使用され得る。スマートコントラクトは、スマートコントラクトのインスタンスが生成され得る関数から成るコンピュータ実行可能プログラムとして記述され得、関数は、その中の論理を実行するために呼び出される。
【0016】
専門用語では、スマートコントラクトは、オブジェクトおよびオブジェクト指向のクラスに基づいて実施され得る。たとえば、スマートコントラクトの事項および構成要素は、スマートコントラクトを実施するアプリケーションによって扱われるオブジェクトとして表現され得る。スマートコントラクト(またはスマートコントラクトにおけるオブジェクト)は、他のオブジェクト指向のオブジェクトと同様の別のスマートコントラクト(または同一のスマートコントラクトにおけるオブジェクト)をコールすることができる。オブジェクトによって行われるコールは、たとえば別のクラスのオブジェクトを生成する、更新する、削除する、伝搬させる、または同オブジェクトと通信するためのコールであり得る。オブジェクト間のコールは、関数、方法、アプリケーションプログラミングインターフェース(API)、または他のコール機構として実施され得る。たとえば、第1のオブジェクトは、第2のオブジェクトを生成する関数をコールすることができる。
【0017】
上記の状況を考慮して、本明細書の実装形態が、より詳細に本明細書で説明される。より詳細には、上記で導入されたように、本明細書の実装形態は、スマートコントラクトを使用するマルチパーティトランザクションのトランザクション確認状態を維持するステップと、すべてのパーティの確認が受け取られた後にトランザクションを実行するステップとを対象とするものである。
【0018】
図1は、本明細書の実装形態を実行するのに使用され得る例示の環境100を描写するものである。いくつかの例では、エンティティは、例示の環境100によってブロックチェーンネットワーク102に参加することができる。ブロックチェーンネットワーク102は、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークであり得る。例示の環境100は、コンピュータデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(たとえばコンピュータデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線および/または無線の通信リンクを通じてアクセスされ得る。
【0019】
描写された例では、コンピュータシステム106、108のそれぞれが、ブロックチェーンネットワーク102におけるノードとして参加することを可能にする任意の適切なコンピュータシステムを含み得る。例示のコンピュータデバイスは、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータデバイス、およびスマートフォンを制限なく含む。いくつかの例では、コンピュータシステム106、108のそれぞれが、ブロックチェーンネットワーク102と相互作用するための、1つまたは複数のコンピュータで実施されるサービスをホスティングする。たとえば、コンピュータシステム106は、第1のエンティティ(たとえばユーザA)が1つまたは複数の他のエンティティ(たとえば他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第1のエンティティのコンピュータで実施されるサービスをホスティングすることができる。コンピュータシステム108は、第2のエンティティ(たとえばユーザB)が1つまたは複数の他のエンティティ(たとえば他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティのコンピュータで実施されるサービスをホスティングすることができる。
図1の例では、ブロックチェーンネットワーク102はノードのピアツーピアネットワークとして表現されており、コンピュータシステム106、108は、それぞれ第1のエンティティのノードおよび第2のエンティティのノードをもたらし、これらはブロックチェーンネットワーク102に参加する。
【0020】
図2は、本明細書の実装形態による例示の概念的構造200を描写するものである。例示の概念的構造200は、エンティティ層202、ホスティングされたサービス層204、およびブロックチェーンネットワーク層206を含む。描写された例では、エンティティ層202には、それぞれがトランザクション管理システム208を有する、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)といった3つのエンティティが含まれる。
【0021】
描写された例では、ホスティングされたサービス層204は、それぞれのトランザクション管理システム208用のインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえばハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、ネットワーク(たとえば
図1のネットワーク110)を通じて、それぞれのインターフェース210と通信する。いくつかの例では、それぞれのインターフェース210が、それぞれのトランザクション管理システムとブロックチェーンネットワーク層206の間の通信接続をもたらす。より詳細には、インターフェース210は、ブロックチェーンネットワーク層206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワーク層206の間の通信はリモートプロシージャコール(RPC)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208用のブロックチェーンネットワークノードを「ホスティングする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212にアクセスするためのアプリケーションプログラムインターフェース(API)をもたらす。
【0022】
本明細書で説明されたように、ブロックチェーンネットワーク212は、ブロックチェーン216における情報を不変に記録する複数のノード214を含むピアツーピアネットワークとしてもたらされる。単一のブロックチェーン216が概略的に描写されているが、ブロックチェーン216の複数のコピーがもたらされ、ブロックチェーンネットワーク212にわたって維持される。たとえば、それぞれのノード214がブロックチェーンのコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、ブロックチェーンネットワークに参加している2つ以上のエンティティの間で遂行されるトランザクションに関連した情報を記憶する。
【0023】
本明細書でより詳細に説明されたように、本明細書の実装形態は、ブロックチェーンネットワークの内部のマルチパーティトランザクションの実行を対象とするものである。本明細書の実装形態によれば、スマートコントラクトはブロックチェーンネットワークにおいて実行し、トランザクションに参加しているユーザ(パーティ)の署名を検証する。いくつかの実装形態では、スマートコントラクトは、トランザクション状態が維持される未確認データ構造を含む。トランザクションに対するすべてのパーティが確認されるとトランザクションが実行される。
【0024】
図3は、本明細書の実装形態によるマルチパーティトランザクションを実行するための例示の信号
図300を描写するものである。
図3の例示の信号
図300は、ユーザA 302(たとえばブロックチェーンネットワークにおけるノード)、ユーザB 304(たとえばブロックチェーンネットワークにおけるノード)、ブロックチェーンネットワークの内部で実行するスマートコントラクト306、およびコントラクトマネージャ308を含む。
【0025】
ユーザA 302は、トランザクションペイロードを構築する(310)ことにより、ブロックチェーンネットワークにおけるトランザクションを開始する。トランザクションペイロードは、意図されたトランザクションの詳細をもたらすデータパッケージである。たとえば、ユーザA 302は、ペイロードの中に、ブロックチェーンネットワークの内部のすべての参加しているエンティティ(たとえばユーザA 302およびユーザB 304)のアドレス、アセット、および/またはトランザクションの対象である値などを含むことができる。
【0026】
ユーザA 302は、トランザクションペイロードにデジタル署名する(312)。いくつかの実装形態では、ユーザA 302は、非対称の暗号化技術を使用してトランザクションペイロードに署名する。たとえば、ユーザA 302は、パブリックキー(たとえばブロックチェーンネットワークの参加者なら誰でも知り得るpubkey_A)およびプライベートキー(たとえばユーザAにのみ知られるprivkey_A)を含む関連するキーペアを有することができる。ユーザA302は、プライベートキーを用いてトランザクションペイロードに署名して、ハッシュ値(たとえばsig_A(ペイロード)と表現される)をもたらす。[ペイロード, pubkey_A, sig_A(ペイロード)]といった例示のトランザクション情報パッケージがもたらされ得る。
【0027】
本明細書の実装形態によれば、ユーザA 302は、トランザクションペイロードと、デジタル署名入りトランザクションペイロードと、スマートコントラクト306に対するパブリックキーとを含む、トランザクション情報パッケージを提出する(314)。ユーザA 302のデジタル署名はパブリックキーを使用して検証される(316)。いくつかの例では、スマートコントラクト306は、(たとえばユーザA 302から送られた)トランザクションが有効であることを検証して、トランザクションペイロードの実行を開始する。いくつかの例では、ブロックチェーンネットワークは、パブリックキーを使用してユーザA 302のデジタル署名を検証する。
【0028】
トランザクションが、少なくとも2つのエンティティが参加しているマルチパーティトランザクションである場合には、スマートコントラクト306は、トランザクションペイロードを使用して未確認トランザクションデータパッケージを構築して未確認トランザクションプールに記憶し、確認を設定する(318)。未確認トランザクションデータパッケージの例示の確認状態は、[A:確認済, B:未確認]を含み得る。
【0029】
いくつかの例では、未確認トランザクションプールは、スマートコントラクト306によって維持されたキー値対を含む記憶されたデータ(たとえば連想配列(associative array)、表)であり得る。未確認トランザクションプールにおけるキーは、トランザクションペイロードのハッシュ値であり、未確認トランザクションプールにおける値は、対応する未確認トランザクションデータパッケージである。たとえば、ユーザA 302がスマートコントラクト306にトランザクションペイロードを提出するとき、未確認トランザクションプールにおける通信エントリは、(ハッシュ(ペイロード)、[ペイロード, node_A_address, node_B_address, node_A_confirmation_status, node_B_confirmation_status])と表現され得る。
【0030】
ユーザA 302は、スマートコントラクト306に署名入りトランザクションペイロードを提出するのに加えて、他の参加しているエンティティ(たとえばユーザB 304)にも署名入りトランザクションペイロードを提出する(320)。ユーザB 304は、ユーザA 302のパブリックキーを使用して署名入りペイロードを検証し、ペイロードをハッシュして、ハッシュされたペイロードに自分のプライベートキーを用いて署名する(322)。ユーザB 304は、ハッシュされたペイロード、署名入りのハッシュされたペイロード、および自分のパブリックキーをスマートコントラクト306に提出する。
【0031】
スマートコントラクト306は、ユーザB 304のパブリックキーを使用してユーザB 304のデジタル署名を検証する(326)。スマートコントラクト306は、対応する未確認トランザクションデータパッケージを未確認トランザクションプールの内部に配置するためのキーとして、ハッシュされたペイロードを使用する(328)。ユーザB 304によって使用されるハッシュ関数は、スマートコントラクト306が未確認トランザクションデータパッケージを構築するときに使用するハッシュ関数と同一のものである。スマートコントラクト306は、ユーザB 302の確認状態を確認済(たとえば[A:確認済、B:確認済])に変更することにより、未確認トランザクションデータパッケージを更新する(328)。
【0032】
代替実装形態では、未確認トランザクションデータパッケージは、それぞれのトランザクションペイロードに汎用一意識別子(UUID)を割り当てることによって配置され得る。ユーザB 304は、ハッシュされたペイロードに署名する代わりに、ユーザA 302がやったようにペイロード全体に署名する。スマートコントラクト306は、UUIDを使用して、ユーザB 304の未確認トランザクションの保留確認(unconfirmed transaction pending confirmation)を配置する。
【0033】
スマートコントラクト306は、すべてのパーティ(たとえばユーザA 302およびユーザB 304)がトランザクションを確認した後にトランザクションを実行する(330)。トランザクションが3つ以上のエンティティを包含している場合には、開始したエンティティを除くエンティティの各々が、別個に、トランザクションペイロードをハッシュして署名する必要がある。いくつかの例では、トランザクションの実行は、コンセンサス処理のためにブロックチェーンネットワークにトランザクションを提出するステップと、ブロックチェーンに追加されるブロックの内部にトランザクションをパッケージングするステップとを含む。
【0034】
スマートコントラクト306は、トランザクションが終了した後に(たとえばコンセンサス処理が成功してトランザクションがブロックチェーンに追加された後に)、このトランザクションを未確認トランザクションプールから除去する(332)。
【0035】
いくつかの実装形態では、コントラクトマネージャ308は、未確認トランザクションプールを、終了条件に関して周期的に検査する。いくつかの例では、未確認トランザクションデータパッケージのみが、所定期間にわたって未確認トランザクションプールにとどまる。所定期間が満了すると(たとえば所定期間内にトランザクションを確認しないパーティがあった場合)、未確認トランザクションが削除される(334)。この時間制限により、ブロックチェーンネットワークのリソースが、不正エンティティが提出した望ましくないトランザクションによって占有されないことを保証する。
【0036】
図4は、本明細書の実装形態によって実行され得る例示のプロセス400を描写するものである。いくつかの例では、例示のプロセス400は、1つまたは複数のコンピュータデバイスによって実行される1つまたは複数のコンピュータ実行可能プログラムを使用してもたらされる。たとえば、例示のプロセス400の少なくとも一部分は、ブロックチェーンネットワークの内部で実行するスマートコントラクト(たとえば
図2のブロックチェーンネットワーク212の内部で実行する
図3のスマートコントラクト306)によって実行され得る。
【0037】
署名入りトランザクションが受け取られる(402)。たとえば、スマートコントラクト306は、ユーザA 302からトランザクションを受け取る(たとえば、ユーザA 302は、スマートコントラクト306に署名入りトランザクションパッケージを送る)。署名入りトランザクションの署名が有効かどうか判定される(404)。たとえば、スマートコントラクト306は、ユーザA 302のパブリックキーを使用してトランザクションの署名が有効かどうかを判定する。署名が無効であるとエラーが指示され、例示のプロセス400は終結する。
【0038】
署名が有効であれば、未確認トランザクションパッケージが与えられて未確認トランザクションプールに記憶される(408)。たとえば、本明細書で説明されたように、スマートコントラクト306は、(たとえば、UUIDに基づき、ハッシュに基づき、)トランザクションにキーを与えて、トランザクションをキーとともに未確認トランザクションプールに記憶する。パーティ状態が設定される(410)。たとえば、スマートコントラクト306は、トランザクションのパーティ状態を[A:確認済, B:未確認]に設定する。
【0039】
トランザクションに対するすべてのパーティがトランザクションを確認したかどうかが判定される(412)。すべてのパーティがトランザクションを確認していれば、トランザクションが実行される。たとえば、スマートコントラクト306は、コンセンサス処理のために、ブロックチェーンネットワークにトランザクションを提出する。いくつかの例では、このトランザクションは未確認トランザクションプールから削除される。
【0040】
トランザクションが終了したかどうかが判定される(416)。たとえば、スマートコントラクト306は、コントラクトマネージャ308から、トランザクションが終了した(たとえば所定期間以上にわたって未確認であった)かどうかを判定するきっかけとなる周期信号を受け取る。トランザクションが終了していれば、このトランザクションは未確認トランザクションプールから削除される(418)。トランザクションが終了していなければ、別のトランザクションが受け取られているかどうかが判定される(420)。別のトランザクションが受け取られていなければ、例示のプロセス400は、416へ戻って、終了したかどうか検査する。
【0041】
別のトランザクションが受け取られていれば、このトランザクションの署名が有効であるかどうかが判定される(422)。たとえば、スマートコントラクト306は、ユーザB 304からトランザクションを受け取る(たとえば、ユーザB 304は、スマートコントラクト306に署名入りトランザクションパッケージを送る)。署名が無効であると424でエラーが指示され、例示のプロセス400は420へ戻る。署名が有効であれば、このトランザクションが、未確認トランザクションプールに記憶されたトランザクションに対して対応するかどうかが判定される(426)。たとえば、スマートコントラクト306は、受け取ったトランザクション(たとえばハッシュ、UUID)の値を使用して、未確認トランザクションプールにおける対応するキーを探索する。このトランザクションは、未確認トランザクションプールになければ新規のトランザクションと見なされ得て、例示のプロセス400は、404へ戻って、このトランザクションを未確認トランザクションプールに追加する。このトランザクションが未確認トランザクションプールにある場合、例示のプロセス400は、本明細書で説明されたように、(410へ)戻ってパーティの状態を更新して(たとえば、スマートコントラクト306はトランザクションのパーティ状態を[A:確認済, B:確認済]に設定する)、すべてのパーティがそのトランザクションを確認したかどうかを判定する(412)。
【0042】
説明された特徴は、デジタル電子回路、コンピュータのハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実施され得る。装置は、プログラム可能なプロセッサで実行するための、情報媒体(たとえば機械可読の記憶装置)に具体的に収録されたコンピュータプログラム製品で実施され得、方法のステップは、入力データに対して動作して出力を生成することにより、説明された実装形態の機能を遂行する命令のプログラムを実行する、プログラム可能なプロセッサによって遂行され得る。説明された特徴は、データ記憶システムに対してデータおよび命令をやり取りするように結合された少なくとも1つのプログラム可能なプロセッサと、少なくとも1つの入力装置と、少なくとも1つの出力装置とを含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムにおいて有利に実施され得る。コンピュータプログラムは、特定の動作を遂行するため、または特定の結果をもたらすために、コンピュータにおいて直接的または間接的に使用され得る1組の命令である。コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語を含めて任意の形式のプログラミング言語で記述され得、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、またはコンピュータ環境で用いる適切な別のユニットとして、任意の形式に展開され得る。
【0043】
プログラムの命令を実行するのに適切なプロセッサには、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサ、ならびに任意の種類のコンピュータの唯一のプロセッサまたは複数のプロセッサのうち1つが含まれる。一般に、プロセッサは、命令およびデータを、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から受け取ることになる。コンピュータの要素には、命令を実行するためのプロセッサならびに命令およびデータを記憶するための1つまたは複数の記憶装置が含まれ得る。一般に、コンピュータは、データファイルを記憶するための1つまたは複数の大容量記憶装置も含んでよく、またはこれと通信するように動作可能に結合されてもよく、そのような装置は、内部ハードディスクおよび取外し可能ディスクなどの磁気ディスクと、光磁気ディスクと、光ディスクとを含む。コンピュータプログラムの命令およびデータを具体的に実施するのに適切な記憶装置には、例として、EPROM、EEPROM、およびフラッシュメモリ素子などの半導体メモリ素子と、内部ハードディスクおよび取外し可能ディスクなどの磁気ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含む、すべての形態の不揮発性記憶装置が含まれる。プロセッサおよび記憶装置は、特定用途向け集積回路(ASIC)を追加されてよく、または特定用途向け集積回路(ASIC)に組み込まれてもよい。
【0044】
ユーザとの相互作用を提供するために、これらの特徴は、ユーザに情報を表示するための、ブラウン管(CRT)または液晶表示器(LCD)モニタなどの表示装置、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実施され得る。
【0045】
これらの特徴は、データサーバなどのバックエンドコンポーネントを含むコンピュータシステム、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピュータシステム、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピュータシステム、あるいはそれらの任意の組合せで実施され得る。システムの構成要素は、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって接続され得る。通信ネットワークの例には、たとえば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ならびにインターネットを形成するコンピュータおよびネットワークが含まれる。
【0046】
コンピュータシステムは、クライアントおよびサーバを備え得る。一般に、クライアントとサーバは互いに遠く離れていて、典型的には、説明されたものなどのネットワークを介して相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で走って互いにクライアント対サーバの関係を有する各コンピュータプログラムによって生じる。
【0047】
加えて、図に示された論理の流れは、望ましい結果を達成するのに、示された特定の順番または順序を必要とするわけではない。加えて、他のステップが与えられてよく、もしくは説明された流れからステップが削除されてもよく、または、説明されたシステムに対する他の構成要素の付加/除去が可能である。したがって、他の実装形態は、以下の特許請求の範囲の範囲内にある。
【0048】
本明細書の複数の実装形態が説明されてきた。しかし、本明細書の趣旨および範囲から逸脱することなく、様々な修正形態が作製され得ることが理解されよう。したがって、他の実装形態は、以下の特許請求の範囲の範囲内にある。