(57)【特許請求の範囲】
【請求項１】
コンセンサス検証段階が始まる前において、
コンセンサス・ネットワークの第１のブロックチェーン・ノードが、ブロックチェーン・トランザクションに対して非対称署名の正当性検証を実行し、
前記ブロックチェーン・トランザクションが前記非対称署名の正当性検証に合格したと決定すること応答して、前記第１のブロックチェーン・ノードが、前記ブロックチェーン・トランザクションを記憶し、前記第１のブロックチェーン・ノードが、前記ブロックチェーン・トランザクションを、前記コンセンサス・ネットワークの複数の第２のブロックチェーン・ノードのそれぞれにブロードキャストし、
前記第１のブロックチェーン・ノードが、前記非対称署名の正当性検証に合格した、かつ、前記複数の第２のブロックチェーン・ノードにブロードキャストされた前記ブロックチェーン・トランザクションの識別子を含む、前処理されたデータブロックを生成し、
前記コンセンサス検証段階において、
前記第１のブロックチェーン・ノードが、前記前処理されたブロックを、前記複数の第２のブロックチェーン・ノードのそれぞれにブロードキャストして、前記第２のブロックチェーン・ノードが、取得した前記前処理されたブロックに対して前記コンセンサス検証を実行できるようにする、方法。
【請求項２】
前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行することは、
前記第１のブロックチェーン・ノードが、クライアントから前記ブロックチェーン・トランザクションを受信し、前記第１のブロックチェーン・ノードは、複数のサーバと、前記複数のサーバに結合されたメモリとを含み、
前記第１のブロックチェーン・ノードが、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから第１のサーバを選択し、
前記第１のサーバが、前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行する、
ことを含む、請求項１に記載の方法。
【請求項３】
前記複数のサーバは、前記第１のブロックチェーン・ノードに対応する１つのノード識別情報（ＩＤ）、ポイント・ツー・ポイント・ルーティング・テーブル、及び前記第１のブロックチェーン・ノードに対応する非対称な公開鍵と秘密鍵のペア、のうちの１以上を共有する、請求項２に記載の方法。
【請求項４】
前記第１のブロックチェーン・ノードは、前記複数のサーバに結合されたルーティング装置を更に含み、
前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することは、前記ルーティング装置が、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することを含む、請求項２に記載の方法。
【請求項５】
前記第１のブロックチェーン・ノードは、ゲートウェイを更に含み、
前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することは、前記ゲートウェイが、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することを含む、請求項２に記載の方法。
【請求項６】
前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行することは、
前記ブロックチェーン・トランザクションに関連付けられたユーザの公開鍵と秘密鍵のペアのうちの公開鍵を取得し、前記ブロックチェーン・トランザクションは、公開鍵と秘密鍵の前記ペアのうちの秘密鍵で暗号化されており、
前記ブロックチェーン・トランザクションを前記公開鍵で復号化することにより、前記ブロックチェーン・トランザクションの復号化された情報を取得し、
前記ブロックチェーン・トランザクションの前記復号化された情報を検証する、
ことを含む、請求項１に記載の方法。
【請求項７】
前記前処理されたデータブロックを生成することは、
複数のブロックチェーン・トランザクションの複数のサブハッシュ値をハッシュ・アルゴリズムに従って決定し、前記複数のブロックチェーン・トランザクションは、前記ブロックチェーン・トランザクションを含み、
ハッシュ値を前記複数のブロックチェーン・トランザクションの識別子のキューの順序に従って生成し、
生成された前記ハッシュ値と複数の識別子の前記キューを前記前処理されたデータブロックに順にパッケージ化する、
ことを含む、請求項１に記載の方法。
【請求項８】
前記前処理されたブロックを、前記複数の第２のブロックチェーン・ノードのそれぞれにブロードキャストすることは、
第１のブロックチェーン・ノードが、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから第２のサーバを選択し、
前記第２のサーバが、前記前処理されたデータブロックを前記複数の第２のブロックチェーン・ノードのそれぞれにブロードキャストする、
ことを含む、請求項１に記載の方法。
【請求項９】
コンセンサス検証段階が始まる前において、
第２のブロックチェーン・ノードが、第１のブロックチェーン・ノードによってブロードキャストされたブロックチェーン・トランザクションを受信し、
前記第２のブロックチェーン・ノードが、前記ブロックチェーン・トランザクションに対して非対称署名の正当性検証を実行し、
前記ブロックチェーン・トランザクションが前記非対称署名の正当性検証に合格したと前記第２のブロックチェーン・ノードが決定すること応答して、前記第２のブロックチェーン・ノードが、前記ブロックチェーン・トランザクションを記憶し、
前記コンセンサス検証段階において、
前記第２のブロックチェーン・ノードが、前記第１のブロックチェーン・ノードによってブロードキャストされた前処理されたデータブロックを受信し、前記前処理されたデータブロックは、前記非対称署名の正当性検証に合格した、かつ、前記複数の第２のブロックチェーン・ノードに記憶された前記ブロックチェーン・トランザクションの識別子を含み、
前記第２のブロックチェーン・ノードが、前記前処理されたデータブロックに対してコンセンサス検証を実行する、方法。
【請求項１０】
前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行することは、
前記第２のブロックチェーン・ノードが、複数のサーバ間のロード・バランシングに従って前記複数のサーバから第１のサーバを選択し、前記第２のブロックチェーン・ノードは、前記複数のサーバと、前記複数のサーバに結合されたメモリとを含み、
前記第１のサーバが、前記第１のブロックチェーン・ノードによってブロードキャストされた前記ブロックチェーン・トランザクションを受信し、
前記第１のサーバが、前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行する、
ことを含む、請求項９に記載の方法。
【請求項１１】
前記第２のブロックチェーン・ノードは、前記複数のサーバに結合されたルーティング装置を更に含み、
前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することは、前記ルーティング装置が、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することを含む、請求項１０に記載の方法。
【請求項１２】
前記第２のブロックチェーン・ノードは、ゲートウェイを更に含み、
前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することは、前記ゲートウェイが、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから前記第１のサーバを選択することを含む、請求項１０に記載の方法。
【請求項１３】
前記ブロックチェーン・トランザクションに対して前記非対称署名の正当性検証を実行することは、
前記ブロックチェーン・トランザクションに関連付けられたユーザの公開鍵と秘密鍵のペアのうちの公開鍵を取得し、前記ブロックチェーン・トランザクションは、公開鍵と秘密鍵の前記ペアのうちの秘密鍵で暗号化されており、
前記ブロックチェーン・トランザクションを前記公開鍵で復号化することにより、前記ブロックチェーン・トランザクションの復号化された情報を取得し、
前記ブロックチェーン・トランザクションの前記復号化された情報を検証する、
ことを含む、請求項９に記載の方法。
【請求項１４】
前記第１のブロックチェーン・ノードによってブロードキャストされた前記前処理されたデータブロックを受信することは、
第２のブロックチェーン・ノードが、前記複数のサーバ間のロード・バランシングに従って前記複数のサーバから第２のサーバを選択し、
前記第２のサーバが、前記第１のブロックチェーン・ノードによってブロードキャストされた前記前処理されたデータブロックを受信することを含む、請求項９に記載の方法。
【請求項１５】
１以上のプロセッサ、前記１以上のプロセッサに結合された１以上の非一時的なコンピュータ可読記憶媒体、及び前記１以上のプロセッサによって実行されてシステムに請求項１から１４のいずれか一項に記載の方法を実行させる命令を記憶する１以上の記憶媒体を含むシステム。
【請求項１６】
１以上のプロセッサによって実行されて前記１以上のプロセッサに請求項１から１４のいずれか一項に記載の方法を実行させる命令を記憶する非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年３月２４日出願の中国特許出願第２０１７１０１８１０６８．８号に基づき、またこの優先権を主張し、またこの内容全体を参考として本明細書に援用する。
【０００２】
本出願は、コンピュータ技術の分野に関し、詳細には、コンセンサス検証のための方法および機器に関する。
【背景技術】
【０００３】
ブロックチェーン技術は、ブロックチェーンに記憶されたデータを変更不可能にして分散化することができ、したがって、これが登場してから注目を集めてきた。ブロックチェーン技術に関するいっそう詳細な研究とともに、このブロックチェーン技術を用いて、さらに安全なデータ記憶環境が実現されてきており、さらに、ブロックチェーン技術を使用して、トランザクション・サービスなど様々なサービスの最適化を実現してきた。
【０００４】
現在、クライアントから送信されたトランザクション要求を受信すると、ブロックチェーン・ノードが、トランザクション要求をそれ自体に記憶することになる。同時に、このブロックチェーン・ノードはさらに、コンセンサス・ネットワークでのその他のブロックチェーン・ノードにトランザクション要求をブロードキャストすることになり、この他のブロックチェーン・ノードは、それに応じて、受信したトランザクション要求をそれ自体に記憶することになる。
【０００５】
コンセンサス検証段階では、ブロックチェーン・ノードはまず、そこに記憶されたトランザクション要求から複数のトランザクション要求を取得する必要があり、こうしたトランザクション要求に非対称署名の正当性検証を実行する。こうしたトランザクション要求が非対称署名の正当性検証に合格したと決定されると、ブロックチェーン・ノードは、こうしたトランザクション要求を前処理済みブロックにパッケージ化し、これをコンセンサス・ネットワーク全体での他のブロックチェーン・ノードにブロードキャストする。前処理済みブロックを受信すると、その他のブロックチェーン・ノードはまず、この前処理済みブロックに含まれるすべてのトランザクション要求に非対称署名の正当性検証を実行し、こうしたトランザクション要求が非対称署名の正当性検証に合格したと決定されると、こうしたトランザクション要求にコンセンサス検証を実行して、こうしたトランザクション要求をブロックチェーンでのブロックの形で記憶する必要があるかどうか決定する。
【０００６】
上記プロセスに示すように、コンセンサス検証段階においては、ブロックチェーン・ノードは、コンセンサスを得るべきトランザクション要求に比較的複雑な処理を実行した後に、こうしたトランザクション要求を前処理済みブロックにパッケージ化できるようにし、コンセンサス・ネットワークでの他のブロックチェーン・ノードにこれをブロードキャストする必要がある。他のブロックチェーン・ノードも、前処理済みブロックに処理を実行した後に、この前処理済みブロックに含まれるトランザクション要求にコンセンサス検証を実行できるようにする必要がある。したがって、従来技術によれば、コンセンサス段階に関わるプロセスは比較的複雑であり、コンセンサス・プロセスに時間がかかりすぎ、したがって、ブロックチェーン・トランザクションでのコンセンサス検証の効率が低下する。
【発明の概要】
【０００７】
本出願の各実施形態は、コンセンサス検証のための例示的なシステムおよび方法を提供して、従来技術でのブロックチェーン・トランザクションにおける低効率のコンセンサス検証を少なくとも軽減する。
【０００８】
一態様によれば、コンセンサス・ネットワークでの第１のブロックチェーン・ノードによって実装可能なコンセンサス検証のための方法は、クライアントからのトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行することと、トランザクション要求が第１のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶し、このトランザクション要求をコンセンサス・ネットワークでの第２のブロックチェーン・ノードのそれぞれにブロードキャストし、それにより、トランザクション要求が第２のセキュリティ検証に合格したと第２のブロックチェーン・ノードが決定することに応答して、それぞれの第２のブロックチェーン・ノードがトランザクション要求を記憶するようにすることと、事前設定済み条件を満たしたと決定することに応答して、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶することと、取得された前処理済みブロックを第２のブロックチェーン・ノードにブロードキャストし、それにより、この第２のブロックチェーン・ノードが、取得された前処理済みブロックにコンセンサス検証を実行するようにすることとを含んでもよい。
【０００９】
別の態様によれば、第２のブロックチェーン・ノードによって実装可能なコンセンサス検証のための方法は、第１のブロックチェーン・ノードによってブロードキャストされたトランザクション要求を受信し、このトランザクション要求に第２のセキュリティ検証を実行することと、トランザクション要求が第２のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶することと、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信することに応答して、この前処理済みブロックにコンセンサス検証を実行することとを含んでもよい。
【００１０】
本出願の各実施形態は、クライアントからのトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行するように構成された受信モジュールと、トランザクション要求が第１のセキュリティ検証に合格したと決定すると、このトランザクション要求を記憶し、このトランザクション要求をそれぞれの第２のブロックチェーン・ノードにブロードキャストし、その結果、それぞれの第２のブロックチェーン・ノードは、トランザクション要求が第２のセキュリティ検証に合格したと決定すると、トランザクション要求を記憶するように構成された記憶モジュールと、事前設定済み条件を満たしたと決定すると、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶するように構成された前処理モジュールと、コンセンサス検証を実行すると、前処理済みブロックを取り込み、これをコンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードにブロードキャストして、すべての第２のブロックチェーン・ノードにわたって、取り込まれた前処理済みブロックにコンセンサス検証を実行するように構成された取込みモジュールとを備える、コンセンサス検証のための機器を提供する。
【００１１】
別の態様によれば、コンセンサス検証のためのコンセンサス・ネットワークでの機器は、プロセッサと、このプロセッサによって実行されると、この機器が方法を実行するようにする命令を記憶する持続的でコンピュータ読取り可能な記憶媒体とを備えてもよい。この方法は、クライアントからのトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行することと、トランザクション要求が第１のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶し、このトランザクション要求をコンセンサス・ネットワークでのそれぞれの第２のブロックチェーン・ノードにブロードキャストし、それにより、トランザクション要求が第２のセキュリティ検証に合格したと第２のブロックチェーン・ノードが決定することに応答して、それぞれの第２のブロックチェーン・ノードがトランザクション要求を記憶するようにすることと、事前設定済み条件を満たしたと決定することに応答して、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶することと、取得された前処理済みブロックを第２のブロックチェーン・ノードにブロードキャストし、それにより、この第２のブロックチェーン・ノードが、取得された前処理済みブロックにコンセンサス検証を実行するようにすることとを含んでもよい。
【００１２】
別の態様によれば、コンセンサス・ネットワークでの第１のブロックチェーン・ノードは、複数の機器、および少なくとも１つのトランザクション・メモリを備えてもよい。それぞれの機器は、プロセッサと、このプロセッサによって実行されると、この機器が方法を実行するようにする命令を記憶する持続的でコンピュータ読取り可能な記憶媒体とを備えてもよい。この方法は、クライアントからのトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行することと、トランザクション要求が第１のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶し、このトランザクション要求をコンセンサス・ネットワークでのそれぞれの第２のブロックチェーン・ノードにブロードキャストし、それにより、トランザクション要求が第２のセキュリティ検証に合格したと第２のブロックチェーン・ノードが決定することに応答して、それぞれの第２のブロックチェーン・ノードがトランザクション要求を記憶するようにすることと、事前設定済み条件を満たしたと決定することに応答して、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶することと、取得された前処理済みブロックを第２のブロックチェーン・ノードにブロードキャストし、それにより、この第２のブロックチェーン・ノードが、取得された前処理済みブロックにコンセンサス検証を実行するようにすることとを含んでもよい。
【００１３】
別の態様によれば、コンセンサス検証のための機器は、プロセッサと、このプロセッサによって実行されると、この機器が方法を実行するようにする命令を記憶する持続的でコンピュータ読取り可能な記憶媒体とを備えてもよい。この方法は、第１のブロックチェーン・ノードによってブロードキャストされたトランザクション要求を受信し、このトランザクション要求に第２のセキュリティ検証を実行することと、トランザクション要求が第２のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶することと、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信することに応答して、この前処理済みブロックにコンセンサス検証を実行することとを含んでもよい。
【００１４】
別の態様によれば、第２のブロックチェーン・ノードは、複数の機器、および少なくとも１つのトランザクション・メモリを備えてもよい。それぞれの機器は、プロセッサと、このプロセッサによって実行されると、この機器が方法を実行するようにする命令を記憶する持続的でコンピュータ読取り可能な記憶媒体とを備えてもよい。この方法は、第１のブロックチェーン・ノードによってブロードキャストされたトランザクション要求を受信し、このトランザクション要求に第２のセキュリティ検証を実行することと、トランザクション要求が第２のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶することと、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信することに応答して、この前処理済みブロックにコンセンサス検証を実行することとを含んでもよい。
【００１５】
本出願の各実施形態は、第１のブロックチェーン・ノードによってブロードキャストされたトランザクション要求を受信し、このトランザクション要求に第２のセキュリティ検証を実行するように構成された要求受信モジュールと、トランザクション要求が第２のセキュリティ検証に合格したと決定すると、このトランザクション要求を記憶するように構成された要求記憶モジュールと、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信すると、この前処理済みブロックにコンセンサス検証を実行するように構成された検証モジュールとを備える、コンセンサス検証のための機器を提供する。
【００１６】
本開示の実施形態によっては、クライアントからのトランザクション要求を受信すると、第１のブロックチェーン・ノードは、コンセンサス検証段階を待ってトランザクション要求に第１のセキュリティ検証を実行する代わりに、このトランザクション要求に第１のセキュリティ検証を実行してもよく、これによって、コンセンサス検証を大幅に簡略化する。さらに、コンセンサス検証段階の前に、第１のブロックチェーン・ノードは、それ自体に記憶されたトランザクション要求から少なくとも１つのトランザクション要求を取得し、取得されたこのトランザクション要求を処理して前処理済みブロックを取得することができる。このようにして、第１のブロックチェーン・ノードは、コンセンサス検証段階において、これまでに取得した前処理済みブロックを、コンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードに直接ブロードキャストすることができ、これにより、コンセンサス検証段階でのプロセスを大幅に簡略化し、コンセンサス検証段階にかかる時間を短縮し、ブロックチェーン・トランザクションにおけるコンセンサス効率を改善する。
【００１７】
本明細書に記載の添付図面を使用して、本開示のさらなる理解をもたらす。例示的な実施形態およびその説明は、単に例示的なものであり、本開示を限定するものではない。添付図面は以下の通りである。
【図面の簡単な説明】
【００１８】
【図１】本開示の一実施形態による、コンセンサス検証プロセスの概略図である。
【図２】本開示の一実施形態による、コンセンサス・ネットワーク全体によってトランザクション要求に実行される非対称署名の正当性検証の詳細プロセスの概略図である。
【図３】本開示の一実施形態による、検証すべき特性値を決定することの概略図である。
【図４】本開示の一実施形態による、サーバ・クラスタの概略図である。
【図５】本開示の一実施形態による、コンセンサス検証のための機器の概略図である。
【図６】本開示の一実施形態による、コンセンサス検証のための別の機器の概略図である。
【発明を実施するための形態】
【００１９】
現在、ブロックチェーン・ノードがトランザクション処理を実行するプロセスは、ほぼ以下の通りである。クライアントが、トランザクション要求をブロックチェーン・ノードに送信し、このブロックチェーン・ノードが、受信したトランザクション要求を、ブロードキャスト形式で他のブロックチェーン・ノードに送信し、この他のブロックチェーン・ノードが、受信したトランザクション要求を記憶する。トランザクション要求を他のブロックチェーン・ノードに送信するブロックチェーン・ノードはまた、このトランザクション要求をそれ自体に記憶する。
【００２０】
ブロックチェーン・ノードによって形成されるコンセンサス・ネットワークでは、それぞれのブロックチェーン・ノードが、他のブロックチェーン・ノードへのコンセンサス要求を開始するための権利を有する。ブロックチェーン・ノードは、それ自体に記憶されたトランザクション要求をある順番にソートして、トランザクション要求キューを取得し、このトランザクション要求キューについてのハッシュ値を生成することができる。続いて、ブロックチェーン・ノードは、トランザクション要求キューおよびハッシュ値を、前処理済みブロックにパッケージ化することができ、この前処理済みブロックを、ブロードキャスト形式で、コンセンサス検証のために他のブロックチェーン・ノードに送信する。
【００２１】
コンセンサス検証プロセスでは、前処理済みブロックを受信すると、その他のブロックチェーン・ノードが、前処理済みブロックに含まれるすべてのトランザクション要求に、非対称署名の正当性検証などのセキュリティ検証を実行する。たとえば、ブロックチェーン・ノードは、所有する公開鍵に従って前処理済みブロックに含まれるすべてのトランザクション要求を解決して、それぞれのトランザクション要求が正当なトランザクション要求であるかどうかを検証してもよい。
【００２２】
さらに、ブロックチェーン・ノードがクライアントからのトランザクション要求を受信するたびに、ブロックチェーン・ノードは、このトランザクション要求を他のブロックチェーン・ノードにブロードキャストし、したがって、それぞれのブロックチェーン・ノードは一般に、コンセンサス・ネットワーク全体によって受信されたトランザクション要求をそれ自体に記憶してもよい。これに基づいて、前処理済みブロックを受信すると、その他のブロックチェーン・ノードが、この前処理済みブロックでのすべてのトランザクション要求にハッシュ完全性検証を実行することになる。つまり、ブロックチェーン・ノードは、それ自体に記憶されたトランザクション要求から、前処理済みブロックに含まれるトランザクション要求を見つけ出し、トランザクション要求が前処理済みブロックに配置される順序で、見つけ出されたトランザクション要求をソートして、トランザクション要求キューを取得することができる。続いて、ブロックチェーン・ノードは、トランザクション要求キューについてのハッシュ値を生成し、次いで、取得済みハッシュ値と、前処理済みブロックに含まれるハッシュ値とを比較して、前処理済みブロックでのトランザクション要求が変更されたかどうか決定することができる。
【００２３】
前処理済みブロックに実行されるセキュリティ検証およびハッシュ完全性検証によれば、それぞれのブロックチェーン・ノードは、前処理済みブロックが全体として正当であるかどうかに関するそれ自体の検証結果を取得し、それ自体によって取得された検証結果を、ブロードキャスト形式で他のブロックチェーン・ノードにブロードキャストすることになる。
【００２４】
他のブロックチェーン・ノードから送信された検証結果、および前処理済みブロックに関して、それ自体によって取得された検証結果に従って、それぞれのブロックチェーン・ノードは、前処理済みブロックが合格したかどうかに関する、コンセンサス・ネットワーク全体でのすべてのブロックチェーン・ノードによる包括的な検証結果を取得することになり、取得されたこの包括的な検証結果を、やはりブロードキャスト形式で他のブロックチェーン・ノードにブロードキャストすることになる。
【００２５】
相互にブロードキャストされた包括的な検証結果を受信すると、コンセンサス・ネットワークでのそれぞれのブロックチェーン・ノードはさらに、このコンセンサス・ネットワークでのすべてのブロックチェーン・ノードによって取得された包括的な検証結果のほとんどが、検証に合格したかどうか決定することになる。「はい」の場合、前処理済みブロックでのすべてのトランザクション要求は、ブロック形式でそれ自体のブロックチェーンに記憶され、「いいえ」の場合は、前処理済みブロックでのトランザクション要求はコンセンサス検証に合格しないと決定される。
【００２６】
上記のプロセスによれば、ブロックチェーン・ノードが、従来技術に従ってトランザクション要求にコンセンサス検証を実行するとき、このコンセンサス検証プロセスは比較的複雑であり、これにはあまりにも長い時間がかかり、その結果、ブロックチェーン・トランザクションのトランザクション処理効率が低下する。
【００２７】
上記の問題を効果的に解決するために、開示された第１のブロックチェーン・ノードは、コンセンサス検証段階に先立って、セキュリティ検証を実行し、前処理済みブロックを生成することができる。すなわち、第１のブロックチェーン・ノードは、コンセンサス検証段階に先立って、従来技術のコンセンサス検証段階に関わるプロセスの少なくとも一部分を実行することができ、これにより、コンセンサス検証プロセスを大幅に簡略化し、コンセンサス検証段階にかかる時間を短縮し、ブロックチェーン・トランザクションにおけるコンセンサス検証効率を改善する。
【００２８】
本明細書に記載の各実施形態は、単に例示なものである。発明性のある努力なしに、また各実施形態に基づいて当業者によって取得可能な他のすべての実施形態が、本開示に包含されるものとする。
【００２９】
図１は、本開示の一実施形態による、コンセンサス検証プロセスの概略図である。コンセンサス検証プロセスは、第１のブロックチェーン・ノードによって実装可能でもよく、以下のステップを含んでもよい。
【００３０】
Ｓ１０１：クライアントからトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行すること。
【００３１】
実施形態によっては、トランザクション処理プロセスにおいて、ユーザは、端末にインストールされたクライアントを介して、トランザクション要求を第１のブロックチェーン・ノードに送信してもよい。たとえば、ユーザは、クライアントにおいて提示されるインターフェースに、対応するトランザクション処理コンテンツを入力し、このクライアントは、このインターフェースにおいてユーザが入力したトランザクション処理コンテンツに従って、対応するトランザクション要求を生成し、次いで、端末を介してこのトランザクション要求を第１のブロックチェーン・ノードに送信する。ユーザはまた、自分自身が保有するユーザ端末に、対応するトランザクション処理コンテンツを入力してもよく、この端末は、ユーザが入力したトランザクション処理コンテンツに従って、対応するトランザクション要求を生成し、次いで、このトランザクション要求を、コンセンサス・ネットワークでの第１のブロックチェーン・ノードに送信する。ここで、本明細書で述べる端末は、コンピュータ、タブレット、スマートフォンなどの機器でもよい。
【００３２】
実施形態によっては、コンセンサス・ネットワークは、複数のブロックチェーン・ノードを含むが、言及した第１のブロックチェーン・ノードは、クライアントからトランザクション要求を受信するブロックチェーン・ノードを指してもよい。第１のブロックチェーン・ノード以外のブロックチェーン・ノードは、第２のブロックチェーン・ノードと呼んでもよい。第１のブロックチェーン・ノードと第２のブロックチェーン・ノードとは相対的な概念である。クライアントからトランザクション要求を受信するブロックチェーン・ノードは、第１のブロックチェーン・ノードでもよく、ブロードキャスト形式で第１のブロックチェーン・ノードによって送信されたトランザクション要求を受信するブロックチェーン・ノードは、第２のブロックチェーン・ノードと呼んでもよい。コンセンサス・ネットワークでのすべてのブロックチェーン・ノードは、クライアントからトランザクション要求を受信することができるので、すべてのブロックチェーン・ノードが、実質的に第１のブロックチェーン・ノードまたは第２のブロックチェーン・ノードである。第１のブロックチェーン・ノードと第２のブロックチェーン・ノードの差は、トランザクション要求をどこから受信するのかに依存する場合がある。
【００３３】
従来技術によれば、クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードは通常、直接それ自体にトランザクション要求を記憶する。このプロセスでは、第１のブロックチェーン・ノードは、トランザクション要求にいかなる検証をも実行しない。その一方で、検証プロセスは通常、コンセンサス検証段階で実行される。コンセンサス検証プロセスでは、コンセンサス・ネットワークでのすべてのブロックチェーン・ノードが、第１のブロックチェーン・ノードによってブロードキャストされた、前処理済みブロックに含まれるすべてのトランザクション要求に、ＲＳＡ（リベスト・シャミア・エーデルマン暗号システム）などを含む、非対称署名の正当性検証などのセキュリティ検証をまず実行して、前処理済みブロックに含まれるトランザクション要求が正当かどうか検証する。続いて、コンセンサス・ネットワークでのすべてのブロックチェーン・ノードが、それぞれのトランザクション要求のコンテンツを検証することになる。この検証は、ハッシュ完全性検証の形式で実行されてもよい。
【００３４】
上記２つの検証が完了すると、コンセンサス・ネットワークでのブロックチェーン・ノードは、前処理済みブロックに検証が実行された後に得られる検証結果に従って、コンセンサスをさらに実行することになり、次いで、前処理済みブロックに含まれるトランザクション要求をブロックチェーンに書き込むことができるかどうか決める。
【００３５】
したがって、コンセンサス検証プロセスでは、コンセンサス・ネットワークは、上記の前処理済みブロックに含まれるすべてのトランザクション要求への、セキュリティ検証、ハッシュ完全性検証、および検証結果のコンセンサスを含む３つの段階を有する必要がある。こうした３つの段階のせいで、従来技術によるコンセンサス検証プロセスは時間がかかりすぎ、その結果、ブロックチェーン・トランザクションのコンセンサス検証の効率が低下する。
【００３６】
上記の問題を効果的に解決するために、本開示では、コンセンサス検証でのセキュリティ検証を、このコンセンサス検証の前に実行することができ、それによって、コンセンサス検証プロセス全体を簡略化し、コンセンサス検証効率を改善し、次いで、ブロックチェーン・トランザクションにおけるトランザクション処理効率を改善する。
【００３７】
たとえば、クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードは、トランザクション要求に第１のセキュリティ検証を実行してもよい。一実施形態では、第１のセキュリティ検証は、非対称署名の正当性検証でもよく、本明細書での非対称署名の正当性検証は、ＲＳＡ暗号化アルゴリズムなどの非対称暗号化アルゴリズムによって実装されてもよい。したがって、クライアントがトランザクション要求を第１のブロックチェーン・ノードに送信すると、このクライアントは、それが保持する秘密鍵を介してトランザクション要求を暗号化することができ、第１のブロックチェーン・ノードは、トランザクション要求を受信すると、それが保持している公開鍵を介してトランザクション要求を解決し、解決済みコンテンツを検証することができる。
【００３８】
実施形態によっては、クライアントがトランザクション要求を第１のブロックチェーン・ノードに送信すると、このクライアントは、トランザクション要求でのトランザクション要求を解決するための公開鍵を送信してもよい。トランザクション要求を受信すると、第１のブロックチェーン・ノードは、トランザクション要求に含まれる公開鍵に従ってトランザクション要求を解決することができる。第１のブロックチェーン・ノードはまた、あらかじめクライアントから公開鍵を獲得することができる。それに応じて、クライアントがトランザクション要求を第１のブロックチェーン・ノードに送信すると、この第１のブロックチェーン・ノードは、あらかじめ獲得された公開鍵を介してトランザクション要求を解決することができる。
【００３９】
実施形態によっては、前述の第１のセキュリティ検証は、第１のブロックチェーン・ノードによって上記トランザクション要求に実行されるセキュリティ検証を指し、後述の第２のセキュリティ検証は、第２のブロックチェーン・ノードによって上記トランザクション要求に実行されるセキュリティ検証を指す。第１のセキュリティ検証および第２のセキュリティ検証によって適合される検証方式は、両方の場合において、同じ検証方式、たとえば非対称署名の正当性検証でもよい。したがって、本明細書に記載の第１のセキュリティ検証、および後述の第２のセキュリティ検証を使用して、どのブロックチェーン・ノードが上記トランザクション要求にセキュリティ検証を実行するか決定してもよい。
【００４０】
Ｓ１０２：トランザクション要求が第１のセキュリティ検証に合格したと決定することに応答して、このトランザクション要求を記憶し、コンセンサス・ネットワークでのそれぞれの第２のブロックチェーン・ノードにトランザクション要求をブロードキャストし、それにより、トランザクション要求が第２のセキュリティ検証に合格したと第２のブロックチェーン・ノードが決定することに応答して、それぞれの第２のブロックチェーン・ノードがトランザクション要求を記憶するようにすること。コンセンサス・ネットワークは、第１のブロックチェーン・ノードおよび第２のブロックチェーン・ノードを備えてもよい。
【００４１】
トランザクション要求が第１のセキュリティ検証に合格したと決定すると、第１のブロックチェーン・ノードは、このトランザクション要求を記憶することができる。トランザクション要求が第１のセキュリティ検証に合格しなかったと決定すると、第１のブロックチェーン・ノードは、このトランザクション要求を記憶せず、トランザクション要求の受入れに失敗したという指示メッセージをクライアントに送信することができる。この指示メッセージを受信すると、クライアントはこれをユーザに提示することができ、したがって、ユーザは、トランザクション要求を再編集し、これをクライアントを介して第１のブロックチェーン・ノードに送信する。
【００４２】
さらに、クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードは、すべての第２のブロックチェーン・ノードにブロードキャスト形式でトランザクション要求を送信することができる。本明細書におけるすべての第２のブロックチェーン・ノードは、第１のブロックチェーン・ノード以外の、コンセンサス・ネットワークでのブロックチェーン・ノードでもよい。図２に示すように、トランザクション要求を受信すると、すべての第２のブロックチェーン・ノードは、トランザクション要求に第２のセキュリティ検証を実行して、このトランザクション要求を記憶するかどうか決めることができる。
【００４３】
図２は、本開示の一実施形態による、コンセンサス・ネットワーク全体によってトランザクション要求に実行されるセキュリティ検証の詳細プロセスの概略図である。
【００４４】
一例として取引トランザクションの場合、ユーザが残高振込トランザクションを実行する必要があるとき、端末にインストールされたクライアントにおいて振込オブジェクトを選択することができ、振込金額が入力される。ユーザが入力したコンテンツに従って、クライアントは、対応するトランザクション要求を生成し、このトランザクション要求を第１のブロックチェーン・ノードに送信し、ここでクライアントは、それが保持している秘密鍵を用いてトランザクション要求を暗号化し、暗号化されたこのトランザクション要求を第１のブロックチェーン・ノードに送信することができる。
【００４５】
クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードは、（たとえば、トランザクション要求に第１のセキュリティ検証を実行することによって）トランザクション要求が担持する公開鍵を介してトランザクション要求を復号して（第１のブロックチェーン・ノードは、あらかじめクライアントから公開鍵を獲得することができる）、トランザクション要求に関わるトランザクション当事者のアカウント・アドレスを取得し、次いでこのトランザクション当事者のアカウント・アドレスが正当かどうか検証することができる。トランザクション要求に関わるトランザクション当事者のアカウント・アドレスが両方とも正当なアカウントであり、トランザクション開始当事者のアカウントでの金額が、トランザクション要求に関わる振込金額以上であると決定すると、第１のブロックチェーン・ノードは、トランザクション要求が第１のセキュリティ検証に合格したと決定し、次いでこのトランザクション要求を、第１のブロックチェーン・ノードに対応するトランザクション・メモリに記憶する。第１のブロックチェーン・ノードによってトランザクション要求をトランザクション・メモリに記憶することは、トランザクション要求を受け入れることと同等でもよい。その一方で、トランザクション要求が第１のセキュリティ検証に合格しなかったと、第１のブロックチェーン・ノードが決定する場合、この第１のブロックチェーン・ノードは、トランザクション要求の受入れを拒否する。すなわち、それ自体に対応するトランザクション・メモリにこのトランザクション要求を記憶しない。
【００４６】
さらに、トランザクション要求を受信すると、第１のブロックチェーン・ノードは、コンセンサス・ネットワークでの他のブロックチェーン・ノード、たとえばすべての第２のブロックチェーン・ノードに、ブロードキャスト形式でトランザクション要求を送信することができる。トランザクション要求を受信すると、すべての第２のブロックチェーン・ノードは、トランザクション要求に第２のセキュリティ検証を実行することができる。トランザクション要求が第２のセキュリティ検証に合格したと決定すると、それぞれの第２のブロックチェーン・ノードは、それ自体に対応するトランザクション・メモリにトランザクション要求を記憶して、トランザクション要求を受け入れる。同様にして、トランザクション要求が第２のセキュリティ検証に合格しなかったと決定すると、第２のブロックチェーン・ノードは、このトランザクション要求を受け入れない。
【００４７】
実施形態によっては、コンセンサス・ネットワークでのすべてのブロックチェーン・ノード、およびすべてのトランザクション・メモリは、事前設定済み分散ミドルウェアを介してデータ送信を実現することができる。たとえば、トランザクション要求が第１のセキュリティ検証に合格したと決定すると、第１のブロックチェーン・ノードは、トランザクション要求を分散ミドルウェアに送信することができ、この分散ミドルウェアは、第１のブロックチェーン・ノードのノード識別子に従って、記憶用の第１のブロックチェーン・ノードに対応するトランザクション・メモリにトランザクション要求を送信することができる。
【００４８】
Ｓ１０３：事前設定済み条件を満たしたと決定することに応答して、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶すること。
【００４９】
ブロックチェーン・トランザクションでのコンセンサス検証のプロセスを簡略化し、コンセンサス検証にかかる時間を短縮し、コンセンサス検証の効率を改善するために、第１のブロックチェーン・ノードは、それ自体に記憶されたトランザクション要求にコンセンサス検証を実行する前に、トランザクション要求に前処理を実行して、前処理済みブロックを取得する。その結果、コンセンサス検証プロセスでは、コンセンサス検証のためにコンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードに、前処理済みブロックが直接ブロードキャストされる。
【００５０】
一例では、事前設定済み条件を満たすと決定すると、第１のブロックチェーン・ノードは、それ自体に対応するトランザクション・メモリから少なくとも１つのトランザクション要求を取得し、後続のプロセスにおいてコンセンサス・ネットワーク全体を通じて、こうしたトランザクション要求にコンセンサスを実行することができる。
【００５１】
本明細書では、次のトランザクション要求を取得するための設定期間に現時点が達したと決定すると、第１のブロックチェーン・ノードは、要求取得条件を満たしたと決定し、それ自体に対応するトランザクション・メモリから少なくとも１つのトランザクション要求を取得し、取得した少なくとも１つのトランザクション要求に前処理を実行する。さらに、上記の事前設定済み条件はまた、他の条件でもよい。たとえば、監視し、トランザクション・メモリでのトランザクション要求が設定済み記憶時間に達したと決定すると、第１のブロックチェーン・ノードは、トランザクション要求が事前設定済み条件を満たすと決定する。続いて、第１のブロックチェーン・ノードは、事前設定済み条件を満たすすべてのトランザクション要求に前処理を実行し、対応する前処理済みブロックを取得することができる。本明細書での事前設定済み条件はまた、他の形式でもよい。
【００５２】
トランザクション・メモリからトランザクション要求を取得するプロセスにおいて、第１のブロックチェーン・ノードは、トランザクション・タイプの優先順位に従って、それ自体に対応するトランザクション・メモリから複数のトランザクション要求を取得することができる。たとえば、第１のブロックチェーン・ノードは、トランザクション・タイプを境界線として設定し、トランザクション・タイプの優先順位がこの境界線よりも上位であるすべてのトランザクション要求を、トランザクション・メモリから取得することができる。
【００５３】
コンセンサス・ネットワークを介してトランザクション要求にコンセンサスを実行すると、第１のブロックチェーン・ノードは、トランザクションを選択し、このトランザクションに対応するすべてのトランザクション要求をトランザクション・メモリから取得することができ、ここで、第１のブロックチェーン・ノードは、無作為に、または順序よくトランザクションを選択することができる。あるいは、第１のブロックチェーン・ノードは、トランザクション要求がトランザクション・メモリに入る時間的順序で、トランザクション・メモリから複数のトランザクション要求を取得することができる。第１のブロックチェーン・ノードは、本明細書では詳細に説明することのない他の決定基準に従って、トランザクション要求を取得することができる。
【００５４】
トランザクション要求を取得した後、第１のブロックチェーン・ノードは、事前設定済みの特性値決定ルールに従って、それぞれのトランザクション要求に対応するサブ特性値をそれぞれ決定することができる。たとえば、事前設定済みの特性値決定ルールがハッシュ・アルゴリズムであると、第１のブロックチェーン・ノードは、それぞれのトランザクション要求に対応するサブハッシュ値をそれぞれ決定することができる。事前設定済みの特性値決定ルールがメッセージ・ダイジェスト・アルゴリズム（ＭＤ５）であると、第１のブロックチェーン・ノードは、それぞれのトランザクション要求に対応するサブＭＤ５値をそれぞれ決定することができる。
【００５５】
それぞれのトランザクション要求に対応するサブ特性値を決定した後、第１のブロックチェーン・ノードは、決定されたこのサブ特性値およびトランザクション要求の順序に従って、トランザクション要求に一義的に対応する検証すべき特性値を決定することができる。
【００５６】
ここで、検証すべき特性値は、全体としてトランザクション要求に一義的に対応してもよい。たとえば、トランザクション要求のうちの１つのコンテンツが変化すると、それに応じて、検証すべき特性値が変化することになる。トランザクション要求の順序は、第１のブロックチェーン・ノードによって設定される順序でもよく、トランザクション・メモリでのトランザクション要求の順序に従って決められてもよい。検証すべき特性値を第１のブロックチェーン・ノードが決定する例示的な方式が、図３に示してある。
【００５７】
図３は、本開示の一実施形態による、検証すべき特性値を決定することの概略図である。
【００５８】
図３に示すように、実施形態によっては、第１のブロックチェーン・ノードによって使用される特性値決定ルールはハッシュ・アルゴリズムを含む。第１のブロックチェーン・ノードが、それ自体に記憶されたすべてのトランザクション要求から、４つのトランザクション要求を取得し、こうした４つのトランザクション要求が、図３に示す順序で配置されると仮定する。第１のブロックチェーン・ノードが、こうした４つのトランザクション要求にそれぞれ対応する４つのサブハッシュ値を決定した後、この４つのサブハッシュ値（ハッシュ１、ハッシュ２、ハッシュ３、ハッシュ４）を、こうした４つのトランザクション要求の順序に従って左から右への順に、マークル木の４つの葉ノードに配置することができ、これに基づいて、マークル木の非葉ノード（ハッシュ５、ハッシュ６）および根ノード（ハッシュ７）を決定することができる。続いて、第１のブロックチェーン・ノードは、マークル木の根ノード、ハッシュ７が、こうした４つのトランザクション要求に一義的に対応する、検証すべき特性値であると決定することができる。
【００５９】
上記の検証すべき特性値を決める方法は一義的ではなく、この検証すべき特性値が、ある一定の順序ですべてのトランザクション要求に一義的に対応することを確実にする限り、第１のブロックチェーン・ノードは他の方式も使用してよい。
【００６０】
すべてのトランザクション要求（たとえば、トランザクション・メモリから取得された少なくとも１つのトランザクション要求）に一義的に対応する、検証すべき特性値を決めた後、第１のブロックチェーン・ノードは、この検証すべき特性値と、すべてのトランザクション要求に対応するすべてのトランザクション要求識別子（たとえば、取引トランザクションでは、取引トランザクション識別子が、トランザクションのシリアル・ナンバーとすることもできる）とを、前処理済みブロックにパッケージ化することができ、ここで、第１のブロックチェーン・ノードは、すべてのトランザクション要求識別子を、トランザクション要求の上記順序でソートして、トランザクション要求識別子キューを取得し、このトランザクション要求識別子キューを前処理済みブロックに記憶することができる。
【００６１】
上記の前処理済みブロックを決めた後、第１のブロックチェーン・ノードは、それ自体に対応するトランザクション・メモリにこの前処理済みブロックを記憶することができる。コンセンサス検証段階が始まると、第１のブロックチェーン・ノードは、トランザクション・メモリから前処理済みブロックを取得し、コンセンサス検証のためにコンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードに前処理済みブロックをブロードキャストすることができ、ここで、第１のブロックチェーン・ノードは、それ自体に対応するトランザクション・メモリに記憶するために、前処理済みブロックとすべてのトランザクション要求とを混合することができ、またはトランザクション・メモリでの指定されたメモリ領域を分割し、この指定済みメモリ領域に前処理済みブロックを記憶することができる。
【００６２】
Ｓ１０４：取得された前処理済みブロックを第２のブロックチェーン・ノードにブロードキャストし、それにより、第２のブロックチェーン・ノードが、この取得された前処理済みブロックにコンセンサス検証を実行するようにすること。
【００６３】
コンセンサス検証では、第１のブロックチェーン・ノードは、すべてのトランザクション要求のこれまでの前処理に対応し、かつそれ自体に記憶された前処理済みブロックから、ある前処理済みブロックを取得し、ブロードキャストを介して、この前処理済みブロックを、コンセンサス・ネットワーク全体での他のブロックチェーン・ノード（たとえば、すべての第２のブロックチェーン・ノード）に送信し、次いで、コンセンサス・ネットワークを介して、前処理済みブロックに対応するすべてのトランザクション要求に、コンセンサス検証を実行することができる。
【００６４】
一例では、第１のブロックチェーン・ノードは、コンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードに上記の前処理済みブロックをブロードキャストすることができる。その一方で、それぞれの第２のブロックチェーン・ノードにおいて、第２のブロックチェーン・ノードは、第１のブロックチェーン・ノードから前処理済みブロックを受信すると、この前処理済みブロックを解決して、この前処理済みブロックに含まれるすべてのトランザクション要求のトランザクション要求識別子を決定することができる。
【００６５】
第２のブロックチェーン・ノードはさらに、それ自体に記憶されたすべてのトランザクション要求からトランザクション要求識別子に対応するすべてのトランザクション要求を決定し、事前設定済みの特性値決定ルールに従って、それぞれのトランザクション要求に対応するサブ特性値をそれぞれ決定することができ、ここで、第２のブロックチェーン・ノードによって使用される特性値決定ルールは、第１のブロックチェーン・ノードのものと同じでもよい。
【００６６】
それぞれのトランザクション要求に対応するサブ特性値を決定した後、第２のブロックチェーン・ノードは、トランザクション要求識別子の順序（たとえば、トランザクション要求識別子キューでのすべてのトランザクション要求識別子の順序）およびすべてのサブ特性値に従って、全体としてすべてのトランザクション要求に一義的に対応する特性値を決定し、次いで、この特性値と、前処理済みブロックでの検証すべき総合特性値とを比較することができる。こうした２つの特性値が同一であると、第１のブロックチェーン・ノードによってコンセンサス検証すべきこうしたトランザクション要求のコンテンツは変更されていないと決定することができ、つまり、こうしたトランザクション要求は、ハッシュ完全性検証に合格したと決定され、ここで、第２のブロックチェーン・ノードは、前処理済みブロックに含まれるすべてのトランザクション要求識別子の順序に従って、すべてのトランザクション要求識別子の順序を決定することができる。
【００６７】
それぞれの第２のブロックチェーン・ノードは、上記方法に従って上記の前処理済みブロックにハッシュ完全性検証を実行し、この前処理済みブロックに関するそれぞれの検証結果を取得することができる。続いて、それぞれの第２のブロックチェーン・ノードは、それぞれ得られた検証結果を、ブロードキャスト形式でコンセンサス・ネットワークでの他のブロックチェーン・ノードに送信することができる。相互にブロードキャストされたそれぞれの検証結果を受信すると、コンセンサス・ネットワークでのそれぞれのブロックチェーン・ノードは、受信した検証結果およびそれ自体の検証結果に従って、前処理済みブロックがコンセンサス・ネットワークでのすべてのブロックチェーン・ノードによる検証に合格したかどうかに関する包括的な検証結果を取得し、取得されたこの包括的な検証結果をコンセンサス・ネットワーク全体での他のブロックチェーン・ノードに再度ブロードキャストすることができる。
【００６８】
相互にブロードキャストされた包括的な検証結果を受信すると、コンセンサス・ネットワークでのそれぞれのブロックチェーン・ノードはさらに、このコンセンサス・ネットワーク全体でのすべてのブロックチェーン・ノードによって取得された包括的な検証結果のほとんどが、検証に合格したかどうか決定することができる。「はい」の場合、ブロックチェーン・ノードは、前処理済みブロックに含まれるトランザクション要求識別子に対応するトランザクション要求を記憶用のブロックに書き込み、さらに、時間的順序に従ってそれ自体に記憶されたブロックチェーンに、このブロックを書き込む。「いいえ」の場合、ブロックチェーン・ノードは、前処理済みブロックに対応するトランザクション要求がコンセンサス・ネットワークによるコンセンサス検証に合格しなかったと決定し、トランザクション要求をブロックチェーンに書き込むことを拒否する。
【００６９】
ブロックチェーン・ノード（本明細書でのブロックチェーン・ノードは、第１のブロックチェーン・ノードまたは第２のブロックチェーン・ノードでもよい）が、ブロックの形式ですべてのトランザクション要求をブロックチェーンに記憶した後、こうしたトランザクション要求が、そのそれぞれのトランザクション・メモリにおいて占める記憶空間を解放することができ、こうしたトランザクション要求は、履歴トランザクション要求を記憶するためにデータベースに転送される。
【００７０】
上記の方法から、クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードが、トランザクション要求に第１のセキュリティ検証を実行し、トランザクション要求が第１のセキュリティ検証に合格したと決定した後、このトランザクション要求を記憶してもよいことが分かる。続いて、第１のブロックチェーン・ノードは、それ自体の少なくとも１つのトランザクション要求に前処理を実行して、前処理済みブロックを取得し、この前処理済みブロックを記憶してもよい。その結果、コンセンサス検証を実行するプロセスにおいて、第１のブロックチェーン・ノードは、コンセンサス検証段階の前にこれまで取得した前処理済みブロックを直接取得し、コンセンサス検証のためにこの前処理済みブロックをコンセンサス・ネットワークでの他のブロックチェーン・ノードにブロードキャストしてもよく、これにより、コンセンサス検証段階でのプロセスを大幅に簡略化し、コンセンサス検証段階にかかる時間を短縮し、したがって、ブロックチェーン・ノードのコンセンサス検証効率を改善し、ブロックチェーン・トランザクションのコンセンサス検証効率を改善する。
【００７１】
実施形態によっては、ブロックチェーン・トランザクションでのコンセンサス検証効率をさらに改善するために、コンセンサス・ネットワークでのすべてのブロックチェーン・ノード（たとえば、第１のブロックチェーン・ノードおよびすべての第２のブロックチェーン・ノード）は、サーバ・クラスタを介して、上記のトランザクション要求を受信し、記憶し、検証し、前処理してもよい。すなわち、ブロックチェーン・ノードは、従来技術での個々の装置から構成されてもよいが、本開示においては、ブロックチェーン・ノードはサーバ・クラスタを備えてもよい。サーバ・クラスタでのすべてのサーバは、同じ階層レベルを有してもよく、または指定されたタスクを特に処理するように提供されてもよく、サーバ・クラスタでのすべてのサーバは、同じノード構成を共有する。たとえば、すべてのサーバは、１つのノード識別情報（ＩＤ）、ポイント・ツー・ポイント・ルーティング・テーブル、ノードの非対称な公開鍵および秘密鍵、ならびに他のノード構成を共有することができる。したがって外部の観点からは、サーバ・クラスタでのそれぞれのサーバによって送信されるすべての動作および命令は、１つのブロックチェーン・ノードからのものとみなすことができる。サーバ・クラスタの概略図を以下の図に示す。
【００７２】
図４は、本開示の一実施形態による、サーバ・クラスタの概略図である。図４には、第１のブロックチェーン・ノードのサーバ・クラスタ・アーキテクチャが示してある。ルーティング機能を有する装置がサーバ・クラスタ内に存在する。ルーティング機能を有する装置は、ユーザ端末からサーバ・クラスタでのサーバまでトランザクション要求を配信する役割を担う。ここで、ルーティング機能を有する装置は、トランザクション要求を無作為にサーバ・クラスタでのサーバに配信することができ、またはこのトランザクション要求をロード・バランシング方式でサーバ・クラスタでのサーバに配信することができる。したがって、ルーティング機能を有する装置はまた、ロード・バランシング装置でもよい。トランザクション要求を受信すると、サーバ・クラスタでのサーバは、トランザクション要求に第１のセキュリティ検証を実行し、このトランザクション要求が第１のセキュリティ検証に合格したと決定した後、このトランザクション要求を第１のブロックチェーン・ノードに対応するトランザクション・メモリに記憶することができ、ここで、第１のブロックチェーン・ノードのサーバ・クラスタは、トランザクション・メモリに対応することができる。サーバ・クラスタでの各サーバは、それぞれのトランザクション・メモリに対応することができ、この時点で、第１のブロックチェーン・ノードが複数のトランザクション・メモリに対応することになる。
【００７３】
サーバ・クラスタでのサーバは、トランザクション・メモリから複数のトランザクション要求を取得し、このトランザクション要求に前処理を実行して、前処理済みブロックを取得することができる。続いて、サーバは、後続のコンセンサス検証で使用するために、第１のブロックチェーン・ノードに対応するトランザクション・メモリに、取得したこの前処理済みブロックを記憶することができ、ここで、サーバは、クライアントからトランザクション要求を受信するためにロード・バランシング装置によってこれまで選択されたサーバ（または、ルーティング機能を有する装置によって選択されたサーバ）でもよく、または第１のブロックチェーン・ノードに含まれる複数のサーバから再選択されたサーバでもよい。
【００７４】
実施形態によっては、サーバ・クラスタでのサーバは、上記のトランザクション・メモリから複数のトランザクション要求を取得すると、前処理のために、こうしたトランザクション要求をサーバに直接転送することができる。このようにして、サーバ・クラスタでの他のサーバは、トランザクション・メモリからこうしたトランザクション要求を取得することができなくなり、それにより、こうしたトランザクション要求が、サーバ・クラスタでのサーバによって繰り返し前処理されやすくなる状況を回避する。
【００７５】
サーバ・クラスタでのサーバがこうしたトランザクション要求を取得するプロセスでは、サーバは、こうしたトランザクション要求をトランザクション・メモリにマーク付けすることができる。このようにして、サーバ・クラスタでの他のサーバは、トランザクション・メモリで、マーク付けされたトランザクション要求を検出すると、このトランザクション要求に前処理を実行することにならない。さらに、サーバ・クラスタでのサーバはまた、トランザクション要求が、他の方式でサーバ・クラスタでのサーバによって繰り返し前処理されやすい状況としてもよい。
【００７６】
コンセンサス検証では、サーバ・クラスタでのサーバは、第１のブロックチェーン・ノードに対応するトランザクション・メモリからの、すべてのトランザクション要求のこれまでの前処理から得られる前処理済みブロックを取得し、この前処理済みブロックを、コンセンサス・ネットワーク全体においてゲートウェイを介して、他のブロックチェーン・ノード（たとえば、すべての第２のブロックチェーン・ノード）に送信することができる。前処理済みブロックを受信すると、第２のブロックチェーン・ノードは、それぞれのロード・バランシング装置（または、ルーティング機能を有する装置）を介して、前処理済みブロックを、それ自体のサーバ・クラスタでの１つのサーバに配信し、サーバを介してこの前処理済みブロックにコンセンサス検証を実行することができる。
【００７７】
ここで、トランザクション・メモリから上記の前処理済みブロックを取得するサーバは、サーバ・クラスタでの任意のサーバでもよい。サーバの選択は、ロード・バランシング方式でロード・バランシング装置によって決められてもよく（もしくは、ルーティング機能を有する装置によって選択されてもよく）、またはサーバ・クラスタでの指定されたサーバによって決められてもよい。あるいは、サーバ・クラスタでのそれぞれのサーバにコンセンサス期間を設けてもよく、様々なサーバが様々なコンセンサス期間を有する。すなわち、様々なサーバのコンセンサス期間は時間的にずれている。サーバ・クラスタでのそれぞれのサーバにおいて、サーバは、期間（たとえば、それ自体に対応するコンセンサス期間）が経過するたびに、第１のブロックチェーン・ノードに対応するトランザクション・メモリから、これまでに取得した前処理済みブロックを自動的に取得し、ゲートウェイを介して、前処理済みブロックをコンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードにブロードキャストすることができる。さらに、前処理済みブロックを取得する作業はまた、サーバ・クラスタでの指定されたサーバによって実行されてもよいが、他のサーバは、前処理済みブロックを取得する作業に参加しない。
【００７８】
図を見ると分かるように、実施形態によっては、サーバ・クラスタは、第１のブロックチェーン・ノードと同等でもよい。第１のブロックチェーン・ノードのサーバの数が、単一のサーバからサーバ・クラスタのモードに変更されるので、サーバへの圧力およびトランザクション処理効率が両方とも大幅に改善され、これにより、その後にユーザが増加する結果としてトランザクション圧力が増加するのに対して効果的な解決策を提供する。
【００７９】
実施形態によっては、図４に示すように、ルーティング機能を有する装置（または、ロード・バランシング装置）を介して、第１のブロックチェーン・ノードに含まれる複数のサーバから１つのサーバを選択することによって、指定されたタスクを完了することができ、さらに、ゲートウェイのような形式で実装することができる。サーバがゲートウェイを介して選択される場合、このゲートウェイは、ロード・バランシング方式で第１のブロックチェーン・ノードに含まれる複数のサーバから１つのサーバを選択して、指定されたタスクを完了することができる。無作為選択または代替実装形態を使用して、サーバを選択することができる。
【００８０】
ルーティング機能を有する上記装置によって選択されたサーバ（または、ロード・バランシング装置）がクライアントからトランザクション要求を受信した後、ルーティング機能を有するこの装置は、トランザクション要求を記憶するために第１のブロックチェーン・ノードに含まれる複数のサーバから１つのサーバを再び選択し、トランザクション要求を受信するサーバを介して、このトランザクション要求を記憶するように選択されたサーバにトランザクション要求を送信し、次いで、このサーバを介してトランザクション要求を記憶することができる。第１のブロックチェーン・ノードは、ルーティング機能を有する装置（または、ロード・バランシング装置）によって選択されるサーバを介して、トランザクション要求に前処理を実行するときに同じ方式を使用することができる。つまり、選択されたサーバがトランザクション要求に前処理を完了した後、ルーティング機能を有する装置は、第１のブロックチェーン・ノードに含まれる複数のサーバから１つのサーバを再決定し、トランザクション要求に前処理を完了して、取得された前処理済みブロックを再決定されたサーバに送信するサーバに、再決定済みサーバを介して、第１のブロックチェーン・ノードに含まれるトランザクション・メモリに前処理済みブロックを記憶するように通知することができる。
【００８１】
図４に示すように、第１のブロックチェーン・ノードのサーバ・クラスタを一例として使用して、このサーバ・クラスタが、ブロックチェーン・トランザクションにおいてどのように機能するのかを説明するが、コンセンサス・ネットワークでのすべての第２のブロックチェーン・ノードのサーバ・クラスタは、上記のサーバ・クラスタと同じでもよく、いくつかの処理プロセスは、第１のブロックチェーン・ノードの上記サーバ・クラスタのプロセスと同様であり、本明細書において詳細に繰り返すことはない。
【００８２】
実施形態によっては、コンセンサス・ネットワーク全体はアライアンス・チェーンでもよく、それぞれのブロックチェーン・ノードはアライアンス・チェーンでのブロックチェーン・ノードでもよい。
【００８３】
本開示のいくつかの実施形態による、コンセンサス検証のための方法をこれまで述べてきた。同じ考え方に基づいて、本開示の実施形態はさらに、図５および図６に示すように、コンセンサス検証のための２つの機器を提供する。
【００８４】
図５は、本開示の一実施形態による、コンセンサス検証のための機器５００の概略図である。機器５００は、コンセンサス・ネットワークに（たとえば、コンセンサス・ネットワークでの第１のブロックチェーン・ノードとして）存在してもよく、ソフトウェア、ハードウェア、または両方の組合せとして実装されてもよい。一例では、機器５００は、互いに結合されたメモリとプロセッサを備えてもよい。このメモリは、持続的で、コンピュータ読取り可能でもよい。このメモリは、プロセッサによって実行されると、本明細書に記載の１つまたは複数のステップを機器５００が実行するようにする命令を記憶してもよい。実施形態によっては、この命令は、様々なソフトウェア・モジュールとして実装されてもよい。このようなモジュールは、端末からのトランザクション要求を受信し、このトランザクション要求に第１のセキュリティ検証を実行するように構成された受信モジュール５０１と、トランザクション要求が第１のセキュリティ検証に合格したと決定すると、このトランザクション要求を記憶し、このトランザクション要求をコンセンサス・ネットワークでのそれぞれの第２のブロックチェーン・ノードにブロードキャストし、その結果、それぞれの第２のブロックチェーン・ノードは、トランザクション要求が第２のセキュリティ検証に合格したと決定すると、トランザクション要求を記憶するように構成された記憶モジュール５０２と、事前設定済み条件を満たしたと決定すると、少なくとも１つの記憶済みトランザクション要求に前処理を実行して、前処理済みブロックを取得および記憶するように構成された前処理モジュール５０３と、取得された前処理済みブロックを第２のブロックチェーン・ノードにブロードキャストし、それにより、第２のブロックチェーン・ノードが、取得されたこの前処理済みブロックにコンセンサス検証を実行するようにするように構成された取得モジュール５０４とを備えてもよい。
【００８５】
第１のセキュリティ検証は、非対称署名の正当性検証を含む。
【００８６】
実施形態によっては、トランザクション要求が第１のセキュリティ検証に失敗したと決定すると、記憶モジュール５０２は、このトランザクション要求を記憶しなくてもよい。
【００８７】
前処理モジュール５０３は、設定期間を経過したことを監視すると、事前設定済み条件を満たしたと決定してもよい。
【００８８】
前処理モジュール５０３は、事前設定済みの特性値決定ルールに従って、少なくとも１つのトランザクション要求に対応する検証すべき特性値を決定し、少なくとも１つのトランザクション要求および検証すべき特性値に対応する、すべてのトランザクション要求識別子を、前処理済みブロックにパッケージ化してもよい。
【００８９】
図６は、本開示の一実施形態による、コンセンサス検証のための別の機器６００の概略図である。機器６００は、コンセンサス・ネットワークに（たとえば、コンセンサス・ネットワークでの第２のブロックチェーン・ノードとして）存在してもよく、ソフトウェア、ハードウェア、または両方の組合せとして実装されてもよい。一例では、機器６００は、互いに結合されたメモリとプロセッサを備えてもよい。このメモリは、持続的で、コンピュータ読取り可能でもよい。このメモリは、プロセッサによって実行されると、本明細書に記載の１つまたは複数のステップを機器６００が実行するようにする命令を記憶してもよい。実施形態によっては、この命令は、様々なソフトウェア・モジュールとして実装されてもよい。このようなモジュールは、第１のブロックチェーン・ノードによってブロードキャストされたトランザクション要求を受信し、このトランザクション要求に第２のセキュリティ検証を実行するように構成された要求受信モジュール６０１と、トランザクション要求が第２のセキュリティ検証に合格したと決定すると、このトランザクション要求を記憶するように構成された要求記憶モジュール６０２と、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信すると、この前処理済みブロックにコンセンサス検証を実行するように構成された検証モジュール６０３とを備えてもよい。
【００９０】
第２のセキュリティ検証は、非対称署名の正当性検証を含む。
【００９１】
実施形態によっては、トランザクション要求が第２のセキュリティ検証に失敗したと決定すると、要求記憶モジュール６０２は、このトランザクション要求を記憶しなくてもよい。
【００９２】
検証モジュール６０３は、第１のブロックチェーン・ノードによってブロードキャストされた前処理済みブロックを受信すると、この前処理済みブロックに含まれるすべてのトランザクション要求識別子に対応するトランザクション要求について、それ自体に記憶されたすべてのトランザクション要求を検索し、事前設定済み特性値決定ルールに従って、それぞれのトランザクション要求に対応する特性値を決定し、この特性値を用いて、前処理済みブロックに含まれる検証すべき特性値にコンセンサス検証を実行してもよい。
【００９３】
実施形態によっては、クライアントからトランザクション要求を受信すると、第１のブロックチェーン・ノードが、トランザクション要求に第１のセキュリティ検証を実行し、トランザクション要求が第１のセキュリティ検証に合格したと決定した後、このトランザクション要求をそれ自体に記憶してもよい。続いて、第１のブロックチェーン・ノードは、それ自体に記憶されたすべてのトランザクション要求から、少なくとも１つのトランザクション要求に前処理を実行して、前処理済みブロックを取得し、この前処理済みブロックを記憶してもよい。その結果、コンセンサス検証を実行するプロセスにおいて、第１のブロックチェーン・ノードは、記憶されたすべての前処理済みブロックから、１つの前処理済みブロックを直接取得し、コンセンサス検証のためにこの前処理済みブロックをコンセンサス・ネットワークでの他のブロックチェーン・ノードにブロードキャストしてもよく、これにより、コンセンサス検証段階でのプロセスを大幅に簡略化し、コンセンサス検証にかかる時間を短縮し、したがって、ブロックチェーン・トランザクションでのコンセンサス検証効率を改善する。
【００９４】
１９９０年代には、技術の改良は、ハードウェアの改良（たとえば、ダイオード、トランジスタ、スイッチなどの回路構造の改良）、またはソフトウェアの改良（方法の流れの改良）に区別することができた。しかし、技術の発展とともに、方法の流れに対する現在の数多くの改良は、ハードウェア回路構造への直接の改良とみなすことができる。設計者は、改良された方法の流れをハードウェア回路にプログラミングすることによって、対応するハードウェア回路構造を取得することができる。したがって、方法の流れの改良は、ハードウェア実装によって実現することができる。たとえば、プログラマブル論理デバイス（ＰＬＤ）（たとえば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ））は、そのデバイスのプログラミングを通じて、ユーザによってその論理機能が決定されるような集積回路である。設計者は、チップ製造業者に専用ＩＣチップを設計および製造するように依頼することなく、デジタル・システムを１つのＰＬＤに「集積化」するようにプログラムすることができる。現在、このタイプのプログラミングは、ＩＣチップを手動で製造するのではなく、大抵は「ロジック・コンパイラ」ソフトウェアを用いて実装されてきた。ロジック・コンパイラ・ソフトウェアは、プログラムの開発および記述に使用されるソフトウェア・コンパイラと同様であるが、コンパイルする前にソース・コードを記述するのに特定のプログラミング言語が使用され、これはハードウェア記述言語（ＨＤＬ）と呼ばれる。ＡＢＥＬ（高度なブール式言語）、ＡＨＤＬ（アルテラ・ハードウェア記述言語）、コンフルエンス、ＣＵＰＬ（コーネル大学プログラミング言語）、ＨＤＣａｌ、ＪＨＤＬ（Ｊａｖａ（登録商標）ハードウェア記述言語）、Ｌａｖａ、Ｌｏｌａ、ＭｙＨＤＬ、ＰＡＬＡＳＭ、ＲＨＤＬ（Ｒｕｂｙハードウェア記述言語）など、１つだけでなく、数多くのタイプのＨＤＬが存在する。最も一般に使用されるＨＤＬには、ＶＨＤＬ（超高速集積回路ハードウェア記述言語）、およびＶｅｒｉｌｏｇが含まれる。上記ＨＤＬを使用して方法の流れに何らかの論理プログラミングを実行し、これをＩＣにプログラムすることによって、論理的な方法の流れを実装するハードウェア回路を取得することを、当業者は知っていたはずである。
【００９５】
任意の適切な方式で制御装置を実装してもよい。たとえば、制御装置は、たとえば、マイクロプロセッサまたはプロセッサの形式、ならびに（マイクロ）プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル・ロジック・コントローラ、および組込み式マイクロコントローラによって実行することが可能な、コンピュータ読取り可能なプログラム・コード（たとえば、ソフトウェアまたはファームウェア）を記憶する、コンピュータ読取り可能な媒体の形式でもよい。制御装置の例には、それだけには限定されないが、以下のマイクロコントローラ、すなわち、ＡＲＣ６２５Ｄ、Ａｔｍｅｌ  ＡＴ９１ＳＡＭ、Ｍｉｃｒｏｃｈｉｐ  ＰＩＣ１８Ｆ２６Ｋ２０、およびＳｉｌｉｃｏｎｅ  Ｌａｂｓ  Ｃ８０５１Ｆ３２０が含まれる。メモリの制御ロジックの一部分として、メモリ・コントローラをさらに実装してもよい。制御装置が純粋なコンピュータ読取り可能なプログラム・コードの方式で実装されることに加えて、制御装置が、論理ゲート、スイッチ、ＡＳＩＣ、プログラマブル・ロジック・コントローラ、および組込み式マイクロコントローラの形式で同じ機能を実装できるようにする方法のステップで論理プログラミングを実行することも可能であることを、当業者なら気づくはずである。したがって、このような制御装置は、ハードウェア部品とみなすことができるが、その中に含まれ、様々な機能を実行するように構成された装置も、ハードウェア部品の内部の構造体とみなすことができる。あるいは、様々な機能を実行するように構成された装置は、ハードウェア部品の内部の方法および構造体を実装するための両方のソフトウェア・モジュールとみなすことができる。
【００９６】
上記実施形態において説明したシステム、機器、モジュール、またはユニットは、コンピュータのチップもしくはエンティティによって実装されてもよく、または機能を有する製品によって実装されてもよい。典型的な実装装置はコンピュータである。たとえば、コンピュータは、パーソナル・コンピュータ、ラップトップ・コンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯型情報端末、メディア・プレーヤ、ナビゲーション装置、ｅメール機器、ゲーム機、タブレット・コンピュータ、ウェアラブル・デバイス、またはこうした装置での任意の装置の組合せでもよい。
【００９７】
説明する便宜上、上記機器は、説明するための機能に従って、様々なユニットに分割される。本開示を実装するとき、各ユニットの機能は、１つまたは複数のソフトウェアおよび／またはハードウェアで実装されてもよい。
【００９８】
本開示の各実施形態は、方法、システム、またはコンピュータ・プログラム製品として実現されてもよいことを、当業者は理解すべきである。したがって、開示されたシステムは、完全なハードウェア実施形態、完全なソフトウェア実施形態、または開示された方法を実行するためのソフトウェアとハードウェアを組み合わせる実施形態として実装されてもよい。さらに、開示されたシステムは、コンピュータ使用可能なプログラム・コードを内部に含む、１つまたは複数のコンピュータ使用可能な記憶媒体（磁気ディスク・メモリ、ＣＤ−ＲＯＭ、光学メモリなどを含むが、それらに限定されない）に実装されるコンピュータ・プログラム製品の形式でもよい。
【００９９】
開示されたシステムは、本開示の各実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図および／またはブロック図を参照して説明してある。コンピュータ・プログラム命令を使用して、流れ図および／またはブロック図での各プロセスおよび／または各ブロック、ならびに流れ図および／またはブロック図でのプロセスおよび／またはブロックの組合せを実装してもよいことを理解されたい。こうしたコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、組込みプロセッサ、またはマシンを生成する他のプログラム可能なデータ処理装置のプロセッサに提供されてもよく、その結果、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサによって実行される命令は、流れ図での１つもしくは複数のプロセス、および／またはブロック図での１つもしくは複数のブロックにおける、指定された機能を実装するための機器を生成する。
【０１００】
こうしたコンピュータ・プログラム命令はまた、コンピュータまたは他のプログラム可能なデータ処理装置が特定の方式で動作するように命令することのできる、コンピュータ読取り可能なメモリに記憶されてもよく、したがって、コンピュータ読取り可能なメモリに記憶された命令は、命令機器を含む製品を生成する。この命令機器は、流れ図での１つもしくは複数のプロセス、および／またはブロック図での１つもしくは複数のブロックにおいて、１つまたは複数の機能を実装する。
【０１０１】
こうしたコンピュータ・プログラム命令はまた、コンピュータまたは他のプログラム可能なデータ処理装置にロードされてもよく、その結果、一連の動作ステップが、コンピュータまたは他のプログラム可能な装置において実行され、それによってコンピュータ実装済みの処理を生成する。したがって、コンピュータまたは他のプログラム可能な装置に実行される命令は、流れ図での１つもしくは複数のプロセス、および／またはブロック図での１つもしくは複数のブロックにおいて、１つまたは複数の機能を実装するステップを提供する。
【０１０２】
典型的な構成では、計算装置は、１つまたは複数の中央処理装置（ＣＰＵ）、入力／出力インターフェース、ネットワーク・インターフェース、およびメモリを備える。
【０１０３】
メモリには、揮発性メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、および／または不揮発性メモリ、たとえば、リードオンリ・メモリ（ＲＯＭ）またはフラッシュＲＡＭなど、コンピュータ読取り可能な媒体が含まれてもよい。このメモリは、コンピュータ読取り可能な媒体の一例である。
【０１０４】
コンピュータ読取り可能な媒体には、永続的、揮発性、モバイル、および固定の媒体が含まれ、こうした媒体は、任意の方法または技術を用いて情報記憶装置を実装することができる。情報は、コンピュータ読取り可能な命令、データ構造、プログラム・モジュール、または他のデータでもよい。コンピュータの記憶媒体の例には、それだけには限定されないが、相変化ＲＡＭ（ＰＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、他のタイプのランダム・アクセス・メモリ（ＲＡＭ）、リードオンリ・メモリ（ＲＯＭ）、電気消去可能プログラマブル・リードオンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または他のメモリ技術、コンパクト・ディスク・リードオンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、または他の光学メモリ、カセット、カセット・メモリおよびディスク・メモリ、もしくは他の磁気メモリ・デバイス装置、または他の任意の非伝送媒体が含まれ、これらを使用して、計算装置からアクセス可能な情報を記憶することができる。本明細書での定義によれば、コンピュータ読取り可能な媒体には、変調されたデータ信号や搬送波など、一過性の媒体は含まれない。
【０１０５】
「ｉｎｃｌｕｄｉｎｇ」、「ｃｏｍｐｒｉｓｉｎｇ」、または他の任意のその変形例の用語は、非排他的な包含を含むものであり、したがって、一連の要素を含むプロセス、方法、物品、または装置は、こうした要素を含むだけでなく、列挙されていない他の要素を含み、またはプロセス、方法、物品、もしくは装置に固有の要素をさらに含むことに、さらに留意すべきである。さらなる制約がないとき、「ｃｐｍｐｒｉｓｉｎｇ  ｏｎｅ・・・」という記述で定義される要素は、定義されたこの要素を含むプロセス、方法、物品、または装置での追加の類似要素を除外しない。
【０１０６】
本開示の各実施形態は、方法、システム、またはコンピュータ・プログラム製品として実現されてもよいことを、当業者は理解すべきである。したがって、本開示は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはソフトウェアとハードウェアを組み合わせる実施形態として実装されてもよい。さらに、本開示は、コンピュータ使用可能なプログラム・コードを内部に含む、１つまたは複数のコンピュータ使用可能な記憶媒体（磁気ディスク・メモリ、ＣＤ−ＲＯＭ、光学メモリなどを含むが、それらに限定されない）に実装されるコンピュータ・プログラム製品の形式でもよい。
【０１０７】
本開示は、プログラム・モジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の通常のコンテキストで説明されてもよい。様々な実施形態において、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本開示はまた、分散コンピューティング環境において実施されてもよい。こうした分散コンピューティング環境では、通信ネットワークを介して接続された遠隔処理装置がタスクを実行する。分散コンピューティング環境では、ローカル・コンピュータおよび遠隔コンピュータの、記憶装置を含む記憶媒体に、プログラム・モジュールを配置することができる。
【０１０８】
この説明での各実施形態は、それぞれの実施形態が他の実施形態との差に焦点を当てて順次説明されており、これらの実施形態は、その同一部分または類似部分について相互に参照してもよい。システムの実施形態については、方法の実施形態と実質的に同様なので、その説明は比較的簡略である。方法の実施形態の説明は、その関連部分について参照してもよい。
【０１０９】
本開示の各実施形態は、単に例示的なものにすぎず、本開示を限定するのに使用されるものではない。当業者にとっては、開示された各実施形態を、様々な方式で修正または変更してもよい。本開示の精神および原理の範囲内で加えられる修正、均等物との置換、または改善は、本開示の特許請求の範囲に包含されるものとする。
【図１】
0006959353.tif 000002
【図２】
0006959353.tif 000003
【図３】
0006959353.tif 000004
【図４】
0006959353.tif 000005
【図５】
0006959353.tif 000006
【図６】
0006959353.tif 000007