(57)【特許請求の範囲】
【請求項１】
第１のコンセンサスノードによって、トランザクション情報を受信するステップと、
前記トランザクション情報を第２のコンセンサスノードに送信するステップと、
前記第２のコンセンサスノードからコンセンサス検証失敗通知を受信するステップであって、前記コンセンサス検証失敗通知は、前記トランザクション情報の情報識別子を含み、前記コンセンサス検証失敗通知は前記トランザクション情報の少なくとも一部が前記第２のコンセンサスノードのトランザクションプールから欠落していることと、前記トランザクション情報の検証が失敗していることとを示す、受信するステップと、
前記コンセンサス検証失敗通知の受信に応答して、前記第１のコンセンサスノードのトランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶するか否かを決定するステップと、
前記第１のコンセンサスノードの前記トランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶すると決定することに応答して、前記第１のコンセンサスノードによって、前記情報識別子に対応する前記トランザクション情報を前記第２のコンセンサスノードに再送するステップと、を含む、
トランザクション情報を送信するためのコンピュータ実装方法。
【請求項２】
前記第１のコンセンサスノードによって、前記トランザクション情報を受信するステップは、
前記第１のコンセンサスノードによって前記トランザクション情報をクライアントデバイスから受信するステップを含む、
請求項１に記載のコンピュータ実装方法。
【請求項３】
前記トランザクション情報を前記第２のコンセンサスノードに送信するステップは、
他の各コンセンサスノードのためにスレッドを作成するステップと、
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信するステップと、を含む、
請求項１に記載のコンピュータ実装方法。
【請求項４】
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信するステップは、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定されるか、または所定の送信中止条件が満たされるまで、前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに再送するステップを含む、
請求項３に記載のコンピュータ実装方法。
【請求項５】
前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定するステップが、
前記第２のコンセンサスノードによって返信された応答信号が特定の期間内に前記スレッドを通して受信されたと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定するステップを含み、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定するステップが、
前記第２のコンセンサスノードによって返信された応答信号が前記特定の期間内に前記スレッドを通して受信されないと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信できないと決定するステップを含む、
請求項４に記載のコンピュータ実装方法。
【請求項６】
前記所定の送信中止条件が、
前記トランザクション情報を前記第２のコンセンサスノードに送信する回数が所定の回数に達する、または
前記トランザクション情報が初回に前記第２のコンセンサスノードに送信された以降に経過した時間が所定の継続時間を超えるとき、を含む、
請求項４に記載のコンピュータ実装方法。
【請求項７】
前記所定の送信中止条件が満たされたと決定することに応答して、前記方法はさらに、
前記トランザクション情報を所定のキューに追加するステップを含み、
前記コンセンサス検証失敗通知に基づいて前記第２のコンセンサスノードに前記トランザクション情報を再送するステップは、
前記コンセンサス検証失敗通知内の前記トランザクション情報の前記情報識別子に対応する前記トランザクション情報を求めて前記所定のキューを検索するステップと、
前記第２のコンセンサスノードに前記トランザクション情報を送信するステップと、を含む、
請求項４に記載のコンピュータ実装方法。
【請求項８】
前記第２のコンセンサスノードによって前記第１のコンセンサスノードから前処理ブロックを受信するステップと、
前記第２のコンセンサスノードのトランザクションプールに記憶されたトランザクション情報と、前記前処理ブロックに含まれるトランザクション情報と、に基づいて、前記前処理ブロックに対してコンセンサス検証を実施するステップと、
前記前処理ブロックに含まれる前記トランザクション情報の少なくとも一部が前記第２のコンセンサスノードの前記トランザクションプールに存在しないと決定することに応答して、前記第２のコンセンサスノードによって、前記前処理ブロックに含まれる前記トランザクション情報の情報識別子を決定するステップと、
前記第２のコンセンサスノードによって、コンセンサス検証失敗通知を前記第１のコンセンサスノードに送信するステップであって、前記コンセンサス検証失敗通知は、前記トランザクション情報の前記情報識別子を含む、送信するステップと、をさらに含む、
請求項１に記載のコンピュータ実装方法。
【請求項９】
動作を実行するためにコンピュータシステムによって実施可能な１つまたは複数の命令を格納した非一時的コンピュータ可読記憶媒体であって、前記動作は、
第１のコンセンサスノードによって、トランザクション情報を受信することと、
前記トランザクション情報を第２のコンセンサスノードに送信することと、
前記第２のコンセンサスノードからコンセンサス検証失敗通知を受信することであって、前記コンセンサス検証失敗通知は、前記トランザクション情報の情報識別子を含み、前記コンセンサス検証失敗通知は前記トランザクション情報の少なくとも一部が前記第２のコンセンサスノードのトランザクションプールから欠落していることと、前記トランザクション情報の検証が失敗していることとを示す、受信することと、
前記コンセンサス検証失敗通知の受信に応答して、前記第１のコンセンサスノードのトランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶するか否かを決定することと、
前記第１のコンセンサスノードの前記トランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶すると決定することに応答して、前記第１のコンセンサスノードによって、前記情報識別子に対応する前記トランザクション情報を前記第２のコンセンサスノードに再送することと、を含む、
非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記トランザクション情報を前記第２のコンセンサスノードに送信することは、
他の各コンセンサスノードのためにスレッドを作成することと、
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信することと、を含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信することは、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定されるか、または所定の送信中止条件が満たされるまで、前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに再送することを含む、
請求項１０に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定することが、
前記第２のコンセンサスノードによって返信された応答信号が特定の期間内に前記スレッドを通して受信されたと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定することを含み、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定することが、
前記第２のコンセンサスノードによって返信された応答信号が前記特定の期間内に前記スレッドを通して受信されないと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信できないと決定することを含む、
請求項１１に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記所定の送信中止条件が、
前記トランザクション情報を前記第２のコンセンサスノードに送信する回数が所定の回数に達する、または
前記トランザクション情報が初回に前記第２のコンセンサスノードに送信された以降に経過した時間が所定の継続時間を超えるとき、を含む、
請求項１１に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記所定の送信中止条件が満たされたと決定することに応答して、前記動作はさらに、
前記トランザクション情報を所定のキューに追加することを含み、
前記コンセンサス検証失敗通知に基づいて前記第２のコンセンサスノードに前記トランザクション情報を再送することは、
前記コンセンサス検証失敗通知内の前記トランザクション情報の前記情報識別子に対応する前記トランザクション情報を求めて前記所定のキューを検索することと、
前記第２のコンセンサスノードに前記トランザクション情報を送信することと、を含む、
請求項１１に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記動作がさらに、
前記第２のコンセンサスノードによって前記第１のコンセンサスノードから前処理ブロックを受信することと、
前記第２のコンセンサスノードのトランザクションプールに記憶されたトランザクション情報と、前記前処理ブロックに含まれるトランザクション情報と、に基づいて、前記前処理ブロックに対してコンセンサス検証を実施することと、
前記前処理ブロックに含まれるトランザクション情報の少なくとも一部が前記第２のコンセンサスノードの前記トランザクションプールに存在しないと決定することに応答して、前記第２のコンセンサスノードによって、前記前処理ブロックに含まれる前記トランザクション情報の情報識別子を決定することと、
前記第２のコンセンサスノードによって、コンセンサス検証失敗通知を前記第１のコンセンサスノードに送信することであって、前記コンセンサス検証失敗通知は、前記トランザクション情報の前記情報識別子を含む、送信することと、を含む、
請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
１つまたは複数のコンピュータと、
前記１つまたは複数のコンピュータと相互運用的に結合され、かつ、前記１つまたは複数のコンピュータで実行されると１つまたは複数の動作を実行する１つまたは複数の命令を記憶する、有形の非一時的コンピュータ可読記憶媒体を有する、１つまたは複数のコンピュータメモリデバイスと、を備えるコンピュータ実装システムであって、
前記１つまたは複数の動作は、
第１のコンセンサスノードによって、トランザクション情報を受信することと、
前記トランザクション情報を第２のコンセンサスノードに送信することと、
前記第２のコンセンサスノードからコンセンサス検証失敗通知を受信することであって、前記コンセンサス検証失敗通知は、前記トランザクション情報の情報識別子を含み、前記コンセンサス検証失敗通知は前記トランザクション情報の少なくとも一部が前記第２のコンセンサスノードのトランザクションプールから欠落していることと、前記トランザクション情報の検証が失敗していることとを示す、受信することと、
前記コンセンサス検証失敗通知の受信に応答して、前記第１のコンセンサスノードのトランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶するか否かを決定することと、
前記第１のコンセンサスノードの前記トランザクションプールが、前記コンセンサス検証失敗通知に含まれる前記情報識別子に対応する前記トランザクション情報を記憶すると決定することに応答して、前記第１のコンセンサスノードによって、前記情報識別子に対応する前記トランザクション情報を前記第２のコンセンサスノードに再送することと、を含む、
コンピュータ実装システム。
【請求項１７】
前記トランザクション情報を前記第２のコンセンサスノードに送信することは、
他の各コンセンサスノードのためにスレッドを作成することと、
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信することと、を含む、
請求項１６に記載のコンピュータ実装システム。
【請求項１８】
前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに送信することは、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定されるか、または所定の送信中止条件が満たされるまで、前記スレッドを通して前記トランザクション情報を前記第２のコンセンサスノードに再送することを含む、
請求項１７に記載のコンピュータ実装システム。
【請求項１９】
前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定することが、
前記第２のコンセンサスノードによって返信された応答信号が特定の期間内に前記スレッドを通して受信されたと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信したと決定することを含み、
前記第２のコンセンサスノードが前記トランザクション情報を受信することに失敗したと決定することが、
前記第２のコンセンサスノードによって返信された応答信号が前記特定の期間内に前記スレッドを通して受信されないと決定することに応答して、前記第２のコンセンサスノードが前記トランザクション情報を受信できないと決定することを含む、
請求項１８に記載のコンピュータ実装システム。
【請求項２０】
前記所定の送信中止条件が、
前記トランザクション情報を前記第２のコンセンサスノードに送信する回数が所定の回数に達する、または
前記トランザクション情報が初回に前記第２のコンセンサスノードに送信された以降に経過した時間が所定の継続時間を超えるとき、を含む、
請求項１８に記載のコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願はブロックチェーン技術の分野に関し、詳細には、トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイスに関する。
【背景技術】
【０００２】
ブロックチェーン技術の分野において、トランザクションに対してコンセンサス検証を実施する責任があるブロックチェーンノードは、コンセンサスノードと呼ばれる。
【０００３】
コンセンサス検証フェーズにおいて、コンセンサス検証を開始するコンセンサスノードは、ある期間内に生成されたトランザクションのトランザクション情報を、前処理ブロックにパックし、その前処理ブロックをコンセンサス検証のために別のコンセンサスノードに送信する必要があり、その別のコンセンサスノードは、その別のコンセンサスノードのトランザクションプールが、前処理ブロックにおけるすべてのトランザクション情報を含むかどうか検証する。検証結果は、トランザクションプールが前処理ブロック中にすべてのトランザクション情報を含む場合、コンセンサス検証は成功であるということになる。検証結果は、トランザクションプールが前処理ブロック中にすべてのトランザクション情報を含むわけではない場合、コンセンサス検証は失敗であるということになる。次に、コンセンサスノードは、前処理ブロック上のコンセンサスノードの検証結果に基づいて、前処理ブロック中のトランザクション情報が有効または無効といったコンセンサスに到達し、前処理ブロック上のコンセンサスノードによるコンセンサス検証実施の結果として、そのコンセンサスを使用する。したがって、コンセンサスノードのコンセンサス検証結果をできるだけ正確にするために、コンセンサスノードのトランザクションプールに記憶されたトランザクション情報が首尾一貫していることを保証する必要がある。
【０００４】
様々なトランザクションに対するトランザクション取扱いフェーズにおいて、各コンセンサスノードは、トランザクションのトランザクション情報を取得するために、トランザクション取扱いノード(以下取扱いノードと呼ぶ)として働くことができる。トランザクションに対して、トランザクションに対応する取扱いノードは、トランザクション情報を各別のコンセンサスノードに送信する必要があり、トランザクション情報を受信する別のコンセンサスノードは、そのトランザクション情報を別のコンセンサスノードのトランザクションプールに記憶する。コンセンサスノードは、こうした方法を使用することにより、コンセンサスノードのトランザクションプールに記憶された首尾一貫したトランザクション情報を保持する。
【０００５】
しかし、ネットワーク障害は常に避けられないため、ネットワークの不安定性によりコンセンサスノード間の情報送信がしばしば不安定となり、一部のコンセンサスノードは、送信情報の受信ができない場合がある。たとえば、取扱いノードはトランザクション情報を他のコンセンサスノードに送信する。ネットワーク障害が発生すると、取扱いノードにより他のコンセンサスノードに送信されたトランザクション情報は、他のすべてのコンセンサスノードによって受信されない場合がある。その結果、コンセンサスノードのトランザクションプールに記憶されたトランザクション情報は、首尾一貫性を保持することができず、それによりコンセンサスノードのコンセンサス検証結果の精度が低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本出願の実施形態は、トランザクション情報を送信しコンセンサス検証を実施するための既存の方法を使用することによるコンセンサスノードのコンセンサス検証結果の精度が低下するという問題を軽減するために、トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイスを提供する。
【課題を解決するための手段】
【０００７】
以前の技術的問題を軽減するために、本出願の実施形態は以下のように実施される。
【０００８】
本出願の一実施形態は、トランザクション情報を送信するための方法を提供し、この方法は以下の、コンセンサスノードによりトランザクション情報を取得すること、トランザクション情報を別のコンセンサスノードに送信すること、および、別のコンセンサスノードによって送信されトランザクション情報の情報識別子を含むコンセンサス検証失敗通知を受信したとき、そのコンセンサス検証失敗通知に基づいてトランザクション情報を再送することを含む。
【０００９】
本出願の一実施形態は、コンセンサス検証のための方法を提供し、この方法は以下の、別のコンセンサスノードによって送信された前処理ブロックをコンセンサスノードによって受信すること、トランザクションプールに記憶されたトランザクション情報および前処理ブロックに含まれたトランザクション情報に基づいて、前処理ブロックについてコンセンサス検証を実施すること、および、コンセンサス検証プロセスにおいて、前処理ブロックに含まれる少なくとも1つのトランザクション情報がトランザクションプールに存在しないと決定された場合、前処理ブロックに含まれるトランザクション情報中のトランザクションプールから消失したトランザクション情報の情報識別子を決定し、その情報識別子を含むコンセンサス検証失敗通知を他のコンセンサスノードに送信することを含む。
【００１０】
本出願の一実施形態は、トランザクション情報を送信するためのデバイスを提供し、このデバイスは以下の、トランザクション情報を取得するように構成された取得モジュール、トランザクション情報を別のコンセンサスノードに送信するように構成された第1の送信モジュール、および、別のコンセンサスノードによって送信されトランザクション情報の情報識別子を含むコンセンサス検証失敗通知が受信されたとき、コンセンサス検証失敗通知に基づいて、トランザクション情報を再送するように構成された第2の送信モジュールを備える。
【００１１】
本出願の一実施形態は、コンセンサス検証のためのデバイスを提供し、このデバイスは以下の、別のコンセンサスノードによって送信された前処理ブロックを受信するように構成された受信モジュール、トランザクションプールに記憶されたトランザクション情報および前処理ブロックに含まれたトランザクション情報に基づいて、前処理ブロックについてコンセンサス検証を実施するように構成されたコンセンサス検証モジュール、ならびに、コンセンサス検証プロセスにおいて、前処理ブロックに含まれる少なくとも1つのトランザクション情報がトランザクションプールに存在しないと決定された場合、前処理ブロックに含まれるトランザクション情報中のトランザクションプールから消失したトランザクション情報の情報識別子を決定し、その情報識別子を含むコンセンサス検証失敗通知を他のコンセンサスノードに送信するように構成された送信モジュールを備える。
【００１２】
本出願の以前の実施形態に適用された技術的ソリューションから、本出願の実施形態において、別のコンセンサスノードがトランザクション取扱いフェーズの取扱いノードによって送信されたトランザクション情報を受信できない場合、別のコンセンサスノードが、前処理ブロックに含まれるトランザクション情報が別のコンセンサスノードのトランザクションプールに存在しないと決定したとき、別のコンセンサスノードは、トランザクション情報の情報識別子を含むコンセンサス検証失敗通知をコンセンサス検証フェーズの取扱いノードに送信することができ、その結果、取扱いノードはトランザクション情報を別のコンセンサスノードに再送する、ということが理解できる。本出願の本実施形態によれば、コンセンサスノードのトランザクションプールに記憶されたトランザクション情報は首尾一貫しており、したがって、コンセンサスノードのコンセンサス検証結果の精度は低下しないということができる限り保証できる。
【００１３】
本出願の実施形態または既存の技術における技術的ソリューションをより明確に説明するために、次に、実施形態または既存の技術を説明するために必要な添付図面を簡単に説明する。以下に記載の添付図面は、単に本出願のいくつかの実施形態を示しており、当業者であれば、こうした添付図面から創造的な努力をせずにさらに他の図面を導き出すことが可能であることは明らかである。
【図面の簡単な説明】
【００１４】
【図１】本出願の一実施形態による、トランザクション情報を送信するための方法を示す流れ図である。
【図２】本出願の一実施形態による、トランザクション取扱いフェーズにおける信頼できる機構を示す概略図である。
【図３】本出願の一実施形態による、コンセンサス検証のための方法を示す流れ図である。
【図４】本出願の一実施形態による、トランザクション情報を送信するためのデバイスを示す概略図である。
【図５】本出願の一実施形態による、コンセンサス検証のためのデバイスを示す概略図である。
【発明を実施するための形態】
【００１５】
本出願の実施形態は、トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイスを提供する。
【００１６】
当業者に本出願の技術的ソリューションをより良く理解させるために、以下に本出願の実施形態に添付の図面を参照しながら、本出願の実施形態の技術的ソリューションを明確かつ包括的に説明する。記載の実施形態は、本出願の実施形態の単に一部であり、すべてではないことは明らかである。当業者により本出願の実施形態に基づいて創造的な努力なしに取得される他のすべての実施形態は、本出願の保護範囲内に属するものとする。
【００１７】
本出願の実施形態において提供された技術的ソリューションは、添付図面を参照しながら以下で詳細に説明される。
【００１８】
図1は、本出願の一実施形態によるトランザクション情報を送信するための方法を示す流れ図である。この方法は以下のステップを含む。
【００１９】
S101.コンセンサスノードがトランザクション情報を取得する。
【００２０】
本出願の本実施形態において、トランザクション情報は、アカウントアドレス、トランザクション量およびトランザクションタイプといった、トランザクションに含まれるすべての詳細とすることができる。
【００２１】
トランザクション取扱いフェーズにおいて、コンセンサスノードは取扱いノードとして働き、クライアントデバイスによって送信されるトランザクション情報を受信することができる。クライアントデバイスは、トランザクションに関与するブロックチェーンノードのクライアントデバイスとすることができる。確実に、コンセンサスノードは自らトランザクションを開始することができ、トランザクションのトランザクション情報を生成することができる。
【００２２】
説明を簡単にするために、以下で説明する取扱いノードは、取扱いフェーズでトランザクションを取り扱うコンセンサスノードであり、本出願の本実施形態の実施体である。
【００２３】
S102.トランザクション情報を別のコンセンサスノードに送信する。
【００２４】
トランザクション情報を取得後、取扱いノードは、取扱いノードのトランザクションプール中のトランザクション情報を記憶し、トランザクション情報を別のコンセンサスノードに送信する。それにより、別のコンセンサスノードは、トランザクション情報を受信後、別のコンセンサスノードのトランザクションプール中のトランザクション情報を記憶する。次いで、コンセンサス検証フェーズにおいて、各コンセンサスノードは、コンセンサスノードのトランザクションプールに記憶されたトランザクション情報が、前処理ブロックのすべてのトランザクション情報を含むかどうかを決定することにより、前処理ブロックを検証することができる。
【００２５】
別のコンセンサスノードは、取扱いノード以外のコンセンサスノードである。トランザクションプールは、トランザクション情報を記憶するために使用されるデータベースである。各コンセンサスノードは、それ自体のトランザクションプールを有する。トランザクションプールは、コンセンサスノードまたはコンセンサスノードの外部記憶装置のメモリに構築することができる。
【００２６】
各コンセンサスノードは、多重プロセス作業を実行し、すなわち、同時にトランザクションAを処理し、トランザクション情報の束を含む前処理ブロック(これはトランザクションAを含まない)に係るコンセンサス検証に関与することができるということは強調する価値がある。コンピューティング能力が十分である限り、コンセンサスノードは、異なるトランザクションを同時に処理する、または複数のプロセスを通じてコンセンサス検証を実行することができる。
【００２７】
本出願の本実施形態において、各別のコンセンサスノードがトランザクションのトランザクション情報を受信するということを出来るだけ保証する方法を詳細に説明するために、トランザクション取扱いフェーズおよびコンセンサス検証フェーズは、同一のトランザクションのトランザクション情報に関して説明される。
【００２８】
本出願の本実施形態において、コンセンサスノードは、各別のコンセンサスノードのためにスレッドを作成し、トランザクション情報をスレッドを通して別のコンセンサスノードに送信することができる。コンセンサスノードは、非同期呼び出し技術を使用してトランザクション情報をスレッド通して送信することができる。トランザクション情報が送信された後で、別のコンセンサスノードがトランザクション情報を受信できるかどうかにかかわらず、スレッドは取り消される。それに代えて、コンセンサスノードは、同期呼び出し技術を使用してトランザクション情報を送信することができる。トランザクション情報を送信後、コンセンサスノードは、別のコンセンサスノードがトランザクション情報を受信した後に別のコンセンサスノードによって返信される応答信号の受信を待つために、そのスレッドを使用し続ける。
【００２９】
S103.別のコンセンサスノードによって送信され、トランザクション情報の情報識別子を含むコンセンサス検証失敗通知を受信したとき、そのコンセンサス検証失敗通知に基づいて、トランザクション情報を再送する。
【００３０】
本出願の本実施形態において、コンセンサス検証失敗通知は、後続のコンセンサス検証フェーズにおいて別のコンセンサスノードによって送信される。コンセンサス検証フェーズにおいて、コンセンサスを開始するコンセンサスノード(以下リーダノードと呼ぶ)は、コンセンサスノードのトランザクションプール中の一束のトランザクションのうちのトランザクション情報を前処理ブロックにパックし、その前処理ブロックをリーダノード以外のコンセンサスノード(レプリカノードと呼ぶ)に送信する。その結果、コンセンサスノード(リーダノードおよびレプリカノード)は前処理ブロックに対してコンセンサス検証を実施する。リーダノードは、コンセンサスノードによって選ばれてもよく、または任意に特定されてもよい。
【００３１】
本出願の本実施形態が、トランザクション取扱いフェーズにおいて取扱いノードによって実施されるということを強調することは価値のあることである。コンセンサス検証フェーズにおいて、取扱いノードはリーダノードまたはレプリカノードとすることができる。実施形態は本出願では制限されていない。さらに、別のコンセンサスノードは、取扱いフェーズ中の取扱いノード以外のコンセンサスノードであり、別のコンセンサスノードは通常レプリカノードまたはリーダノードとすることができる。
【００３２】
要するに、各コンセンサスノードのアイデンティティは、トランザクション取扱いフェーズからコンセンサス検証フェーズへの遷移後、それにしたがって変わり得る。以前の取扱いノードはレプリカノードとなってよく、別の以前のコンセンサスノードはリーダノードとなってよい。
【００３３】
本出願の本実施形態において、前処理ブロックを検証するとき、レプリカノードは、前処理ブロック中のトランザクション情報をレプリカノードのトランザクションプールに記憶されたトランザクション情報と比較する。レプリカノードのトランザクションプールに記憶されたトランザクション情報が、前処理ブロックのすべてのトランザクション情報を含む場合、レプリカノードが、以前のトランザクション取扱いフェーズにおいてトランザクション情報を首尾よく受信したことを示す。
【００３４】
レプリカノードのトランザクションプールに記憶されたトランザクション情報が、前処理ブロックのすべてのトランザクション情報を含まない場合、言い換えれば、前処理ブロックの一部のトランザクション情報が、レプリカノードのトランザクションプールに記憶されたトランザクション情報から消失した場合、レプリカノードが、以前のトランザクション取扱いフェーズにおいてトランザクション情報を首尾よく受信できなかったことを示す。この場合、レプリカノードにより前処理ブロックに対して実施された検証が失敗し、レプリカノードは、消失したトランザクション情報の情報識別子を含むコンセンサス検証失敗通知を他のレプリカノードおよびリーダノードに一斉送信する。コンセンサス検証失敗通知を受信する各コンセンサスノードは、コンセンサスノードのトランザクションプールをチェックすることができ、そのコンセンサスノードのトランザクションプールが、コンセンサス検証失敗通知に含まれる情報識別子に対応するトランザクション情報を記憶する(コンセンサスノードがトランザクション取扱いフェーズにおいてトランザクション情報を首尾よく受信する、またはコンセンサスノードが取扱いノードである)場合、情報識別子に対応するトランザクション情報を、コンセンサス検証失敗通知を送信するレプリカノードに送信することができる。
【００３５】
通常、前処理ブロックに含まれた非常に多くのトランザクション情報があり、そのトランザクション情報は、通常様々な取扱いノードによって一斉送信されるということを強調することは価値がある。したがって、コンセンサス検証フェーズにおいて、各コンセンサスノードは、前処理ブロックに含まれる一部のトランザクション情報を欠く場合がある。各コンセンサスノードが欠くトランザクション情報は、トランザクション情報を最初に一斉送信する取扱いノードのトランザクションプールに確かに記憶されている。さらに、各コンセンサスノードが欠くトランザクション情報は、2つ以上の他のコンセンサスノードのトランザクションプールに記憶することができる。言い換えれば、コンセンサス検証フェーズにおいて、各コンセンサスノードが欠くトランザクション情報は、他のコンセンサスノードが共同して援助することにより補うことができる。
【００３６】
たとえば、ブロックチェーンネットワーク中にA、B、C、DおよびEの5つのコンセンサスノードがある。コンセンサス検証フェーズにおいて、リーダノードとして働くAは、前処理ブロックを生成し、前処理ブロックに含まれるトランザクション情報はL、MおよびNである。LはEが取扱いノードとして働くときEによって一斉送信され、MはAが取扱いノードとして働くときAによって一斉送信され、NはDが取扱いノードとして働くときDによって一斉送信される。BおよびCはLの取扱いフェーズにおいてLを受信するのに失敗し、BおよびEはMの取扱いフェーズにおいてMを受信するのに失敗し、BはNの取扱いフェーズにおいてNを受信するのに失敗すると仮定する。この場合、コンセンサス検証フェーズにおいて、Aが前処理ブロックをB、C、DおよびEに送信した後に、Bは、L、MおよびNの情報識別子を含むコンセンサス検証失敗通知をA、C、DおよびEに送信する。というのは、L、MおよびNがBのトランザクションプールから消失しているからである。したがって、BはAによって送信されたL、MおよびN、Cによって送信されたMおよびN、Dによって送信されたL、MおよびN、ならびに、Eによって送信されたLおよびNを個々に受信する。言い換えれば、Bのトランザクションプールから消失したトランザクション情報は、A、C、DおよびのEのコンセンサス援助により補うことができる。
【００３７】
さらに、ネットワーク障害により、コンセンサス検証失敗通知を受信したすべてのコンセンサスノードは、トランザクション情報をレプリカノードに補うために送信する。実際、レプリカノードがトランザクション情報を高い確率で受信することが確実となり、その結果、ネットワーク障害が軽減され、コンセンサスノードのトランザクションプールにおける一貫性が保証される。
【００３８】
結論として、本出願の本実施形態において、トランザクション情報を別のコンセンサスノードに送信した後で、各別のコンセンサスノードがトランザクション情報を受信したかどうかにかかわらず、コンセンサスノードは、コンセンサス検証フェーズが、補うために、トランザクショ情報を受信されたコンセンサス検証失敗通知に基づいてコンセンサス検証失敗通知を送信する別のコンセンサスノードに再送するまで、待つことができる。
【００３９】
図1で示された情報を送信するための方法によれば、別のコンセンサスノードが、トランザクション取扱いフェーズの取扱いノードによって送信されたトランザクション情報を受信できない場合、別のコンセンサスノードが、前処理ブロックに含まれたトランザクション情報が別のコンセンサスノードのトランザクションプールに存在しないと決定した場合に、別のコンセンサスノードは、トランザクション情報の情報識別子を含むコンセンサス検証失敗通知をコンセンサス検証フェーズの取扱いノードに送信することができ、その結果、取扱いノードはトランザクション情報を別のコンセンサスノードに再送する、ということが理解できる。本出願の本実施形態によれば、コンセンサスノードのトランザクションプールに記憶されたトランザクション情報は首尾一貫しており、したがって、コンセンサスノードのコンセンサス検証結果の精度は低下しないということができる限り保証できる。
【００４０】
さらに、本出願の本実施形態において、トランザクション取扱いフェーズにおいていくつかの信頼できる機構を使用して、コンセンサスノードによりトランザクション情報を別のコンセンサスノードに送信する信頼性を高めることができる。
【００４１】
ステップS102において、コンセンサスノードは、各別のコンセンサスノードのためにスレッドを作成し、トランザクション情報をスレッドを通して別のコンセンサスノードに送信し、別のコンセンサスノードがトランザクション情報を受信できないと決定される場合に、別のコンセンサスノードがトランザクション情報を受信する、または、所定の送信中止条件が満たされていると決定されるまで、トランザクション情報をスレッドを通して別のコンセンサスノードに再送する。
【００４２】
別のコンセンサスノードによって返信された応答信号が特定の期間内にスレッドを通して受信される場合、別のコンセンサスノードはトランザクション情報を受信すると決定される。別のコンセンサスノードによって返信された応答信号が特定の期間内にスレッドを通して受信されない場合、別のコンセンサスノードはトランザクション情報を受信できないと決定される。
【００４３】
所定の送信中止条件は、以下のようにすることができる。トランザクション情報を別のコンセンサスノードに送信する回数が所定の回数に達する、または、トランザクション情報が初回に別のコンセンサスノードに送信された以降に経過した時間が所定の継続時間を超えるとき。所定の回数および所定の継続時間は本出願では制限されていない。
【００４４】
コンセンサスノードは、トランザクション情報を毎回以下の方法を使用することによりスレッドを通して別のコンセンサスノードに送信することができる、ということを言及することは価値がある。コンセンサスノードは、以前の送信が失敗したと決定される場合にトランザクション情報を再送できる、または、送信を遅らせるために一定の時間間隔待つことができる。一定の時間間隔を設定することができ、個々の再送を待つ一定の時間間隔は同一であっても異なっていてもよい。たとえば、一定の時間間隔は徐々に増加または減少する。
【００４５】
たとえば、コンセンサスノードは、各別のコンセンサスノードのためにスレッドを作成し、最初にトランザクション情報をスレッドを通して別のコンセンサスノードに送信する。コンセンサスノードは、別のコンセンサスノードが応答信号を返信しない場合、5秒の遅延の後にトランザクション情報を再送でき、応答信号が依然として受信されない場合、15分の遅延の後にトランザクション情報を再送でき、それでも対応する信号が受信されない場合、より長時間の遅延の後にトランザクション情報を再送できる。トランザクション情報の再送は、このようにして送信回数が所定の回数に達するまで、または、トランザクション情報が別のコンセンサスノードに初めて送信された以降の経過時間が所定の継続時間を超過するまで継続する。
【００４６】
特に、以前の例において、コンセンサスノードがトランザクション情報を送信する回数が所定の回数に達した場合、コンセンサスノードはさらにトランザクション情報をバックキューに追加し、特にバックキューを走査するために使用されるスレッドRecoveryを作成することができる。Recoveryは、特別な時間間隔ごとにバックキューを走査してトランザクション情報を識別し、トランザクション情報は、Recoveryを通して、トランザクション情報が初めて別のコンセンサスノードに送信された以降の経過時間が所定の継続時間を超過するまで送信される。Recoveryがバックキューを走査する特定の時間間隔もまた設定できるということは確かである。すなわち、トランザクション情報を送信する回数が所定の回数に到達したスレッドは、コンセンサスノードの資源を節約するために取り消され、トランザクション情報は、バックキューに追加され、常設のRecoveryスレッドはバックキューを走査し、特定の時間間隔ごとにトランザクション情報を送信する責任がある。したがって、コンセンサスノードにより比較的大量のスレッドを保持することによって引き起こされる資源の浪費を軽減することができる。
【００４７】
以前の例において、コンセンサスノードは実際、弱い同期呼び出し技術を使用してトランザクション情報を別のコンセンサスノードに送信する。各別のコンセンサスノード用のスレッドを非同期的に呼び出した後で、コンセンサスノードは、同期呼び出しを使用することによりトランザクション情報をスレッドを通して別のコンセンサスノードに送信する。スレッドは、コンセンサスノードのコンピューティングリソースを占有し、コンセンサスノードは、別のコンセンサスノードが応答信号を返信するのをスレッドを通して待つ。さらに、別のコンセンサスノードが、特定の期間内に応答信号を返信するのに失敗した場合、それは別のコンセンサスノードがトランザクション情報を受信するのに失敗したことを示し、コンセンサスノードはトランザクション情報をスレッドを通して別のコンセンサスノードに再送する。したがって、トランザクション取扱いフェーズにおいて弱い同期呼び出し技術を使用することにより、コンセンサスノードは、より重要な作業工程を脇において、別のコンセンサスノードにより応答信号が返信されるのをわざわざ待つ必要がなくなり、コンセンサスノードも各別のコンセンサスノードに対応するスレッドを使用して、応答信号を待ち、トランザクション情報を繰り返し送信することができ、これにより、別のコンセンサスノードが首尾よくトランザクション情報を受信することを保証する。
【００４８】
さらに、本出願の本実施形態において、所定の送信中止条件が満たされているとき、別のコンセンサスノードがなお応答信号を返信しない場合は、トランザクション情報は所定のキューに追加することができる。コンセンサス検証失敗通知を受信すると、キューは、コンセンサス検証失敗通知に含まれる情報識別子に基づいて、情報識別子に対応するトランザクション情報を求めて検索され、トランザクション情報が送信される。
【００４９】
キューは、コンセンサスノードのメモリ中の記憶空間であり、コンセンサスノードが取扱いフェーズにおいて繰り返し送信しようと試みるが、まだ各別のコンセンサスノードによって受信されていないトランザクション情報を記憶するように構成されている。コンセンサスノードが繰り返し送信しようと試みるが、まだ受信されていないトランザクション情報は、コンセンサスノードのトランザクションプールがメモリ中に作成されていない場合には、キューに記憶され、その結果、コンセンサスノードは、トランザクション情報を、コンセンサス検証フェーズにおいてトランザクション情報を欠く別のコンセンサスノードにより迅速に送信することができる。
【００５０】
特に、コンセンサス検証フェーズにおいて、トランザクションプールがメモリに作成されていないとき、レプリカノードによって送信されたコンセンサス検証失敗通知を受信した場合、コンセンサスノードは、コンセンサスノードのトランザクションプールをチェックする代わりに、コンセンサスノードのキューが、レプリカノードが欠くトランザクション情報を含んでいるかどうかをチェックすべきであり、コンセンサスノードのキューがレプリカノードが欠くトランザクション情報を含んでいる場合には、トランザクション情報をレプリカノードに送信することができ、または、コンセンサスノードのキューがレプリカノードが欠くトランザクション情報を含んでいない場合には、(たとえコンセンサスノードのトランザクションプールがレプリカノードが欠くトランザクションを含んでいたとしても)トランザクション情報をレプリカノードに送信する必要はない。したがって、レプリカノードがトランザクション情報Xを欠いたとしても、トランザクション情報Xを一斉送信する取扱いノードは、取扱いノードのキューからトランザクション情報Xを取得し、トランザクション情報Xを送信することが常に保証される。したがって、トランザクション情報を欠くレプリカノードは、常に迅速に補うことができる。
【００５１】
図2は、本出願の一実施形態によるトランザクション取扱いフェーズにおける信頼できる機構を示す概略図である。図2に示すように、トランザクション取扱いフェーズにおいて、取扱いノードは、トランザクション情報を5秒の遅延または10分の遅延といった方法を使用して別のコンセンサスノードに送信しようと試みる、しかしトランザクション情報を送信しようとする方法は制限される。すなわち、トランザクション情報は、送信回数の数が3よりも大きい場合、より長い遅延を使用して送信される。トランザクション情報のアクティブな期間(トランザクション情報が初回に別のコンセンサスノードに送信されて以降の経過時間)が所定の継続時間(たとえば、1時間)を超える場合、トランザクション情報は、所定のキューおよび送信中止に追加される。コンセンサス検証フェーズにおいて、コンセンサスノードは、コンセンサス検証失敗通知を受信したときのみキュー中のトランザクション情報をアクティブにする。
【００５２】
所定の継続時間は、各コンセンサスノードがコンセンサス検証を実施する期間に基づいて決定することができる、または一般的なネットワーク障害のトラブルシューティング期間に基づいて決定することができるということは強調する価値がある。
【００５３】
図2に示された信頼できる機構によれば、コンセンサスノードは、トランザクション情報を送信しようとする試みを遅らせ、コンセンサスノードがトランザクション情報を5秒の遅延の後に繰り返し2度送信した後で、一時的に解決できない送信障害が発生したと示される(これはトランザクション情報を首尾よく受信できなかった別のコンセンサスノードがダウンした、または大規模な障害がネットワークに発生したのかもしれない)。その結果、コンセンサスノードは、トランザクション情報を別のコンセンサスノードに送信することを一時的に停止する。比較的長い時間(たとえば、10分)待った後で、送信障害は解消される場合があり、その場合、コンセンサスノードは、トランザクション情報を送信し続ける。トランザクション情報のアクティブな期間が長すぎる場合、トランザクション情報は、トランザクショ情報をそれを欠く別のコンセンサスノードに、補うために、引き続き再送するのを待つために、所定のキューに追加することができる。
【００５４】
本出願の本実施形態において、コンセンサス検証フェーズにおいて、コンセンサスノードは、トランザクション情報を欠く個々のコンセンサスノードを共同で補い、それにより、ネットワーク障害によって引き起こされる、コンセンサスノードのトランザクションプール中の不一致という問題は十分軽減することができる。これを基礎に、図2に示した信頼できる機構にしたがって、トランザクション取扱いフェーズにおいて様々な手段を使用して、別のコンセンサスノードによるトランザクション情報受信の成功率を向上させることができる。
【００５５】
図3は、本出願の一実施形態によるコンセンサス検証のための方法である。この方法は以下のステップを含む。
【００５６】
S301.コンセンサスノードは、別のコンセンサスノードによって送信された前処理ブロックを受信する。
【００５７】
S302.トランザクションプールに記憶されたトランザクション情報および前処理ブロックに含まれたトランザクション情報に基づいて、前処理ブロックに対してコンセンサス検証を実施する。
【００５８】
S303.コンセンサス検証プロセスにおいて、前処理ブロックに含まれる少なくとも1つのトランザクション情報がトランザクションプールに存在しないと決定された場合、前処理ブロックに含まれるトランザクション情報中のトランザクションプールから消失したトランザクション情報の情報識別子を決定する。
【００５９】
S304.情報識別子を含むコンセンサス検証失敗通知を他のコンセンサスノードに送信する。
【００６０】
本出願の本実施形態において、コンセンサスノードは、コンセンサス検証フェーズにおいて、前処理ブロックを検証するコンセンサスノード、すなわち、レプリカノードである。別のコンセンサスノードは、コンセンサスを開始するノード、すなわち、リーダノードである。
【００６１】
図3に示したコンセンサス検証のための方法の詳細な説明は、図1に示したトランザクション情報を送信するための方法の説明に記録してきた。ここでは話を簡単にするため詳細は省略する。
【００６２】
図1に示したトランザクション情報を送信するための方法に基づいて、本出願の一実施形態は、さらに同様に、トランザクション情報を送信するためのデバイスを提供する。図4に示すように、このデバイスは以下の、トランザクション情報を取得するように構成された取得モジュール401、トランザクション情報を別のコンセンサスノードに送信するように構成された第1の送信モジュール402、および、別のコンセンサスノードによって送信されトランザクション情報の情報識別子を含むコンセンサス検証失敗通知が受信されたとき、コンセンサス検証失敗通知に基づいて、トランザクション情報を再送するように構成された第2の送信モジュール403を備える。
【００６３】
取得モジュール401は、クライアントデバイスによって送信されたトランザクション情報を受信するように構成される。
【００６４】
第1の送信モジュール402は、各別のコンセンサスノードのためのスレッドを作成し、トランザクション情報をそのスレッド通して別のコンセンサスノードに送信するように構成される。
【００６５】
第1の送信モジュール402は、別のコンセンサスノードがトランザクション情報を受信できないと決定される場合に、別のコンセンサスノードがトランザクション情報を受信する、または、所定の送信中止条件が満たされていると決定されるまで、トランザクション情報をスレッドを通して別のコンセンサスノードに再送するように構成される。
【００６６】
第1の送信モジュール402は、別のコンセンサスノードによって返信された応答信号が特定の期間内にスレッドを通して受信される場合、別のコンセンサスノードはトランザクション情報を受信すると決定するように構成され、または、別のコンセンサスノードによって返信された応答信号が特定の期間内にスレッドを通して受信されない場合、別のコンセンサスノードはトランザクション情報を受信できないと決定するように構成される。
【００６７】
所定の送信中止条件は以下のことを含むことができる。トランザクション情報を別のコンセンサスノードに送信する回数が所定の回数に達する、または、トランザクション情報が初回に別のコンセンサスノードに送信された以降に経過した時間が所定の継続時間を超える。
【００６８】
デバイスは、所定の送信中止条件が満たされているとき、トランザクション情報を所定のキューに追加するように構成された追加モジュール404をさらに含む。
【００６９】
第2の送信モジュール403は、コンセンサス検証失敗通知に含まれる情報識別子に基づいて、情報識別子に対応するトランザクション情報を求めてキューを検索し、トランザクション情報を送信するように構成される。
【００７０】
図3に示した、コンセンサス検証のための方法に基づいて、本出願の一実施形態は、コンセンサス検証のためのデバイスをさらに同様に提供する。図5に示すように、デバイスは以下の、別のコンセンサスノードによって送信された前処理ブロックを受信するように構成された受信モジュール501、トランザクションプールに記憶されたトランザクション情報および前処理ブロックに含まれたトランザクション情報に基づいて、前処理ブロックについてコンセンサス検証を実施するように構成されたコンセンサス検証モジュール502、ならびに、コンセンサス検証プロセスにおいて、前処理ブロックに含まれる少なくとも1つのトランザクション情報がトランザクションプールに存在しないと決定された場合、前処理ブロックに含まれるトランザクション情報中のトランザクションプールから消失したトランザクション情報の情報識別子を決定し、その情報識別子を含むコンセンサス検証失敗通知を他のコンセンサスノードに送信するように構成された送信モジュール503を備える。
【００７１】
1990年代においては、技術進歩はハードウェアの進歩(たとえば、ダイオード、トランジスタまたはスイッチなどの回路構造の進歩)であるかソフトウェアの進歩(方法手続きの進歩)であるかは、明確に区別することができた。しかし、技術が発展するにつれて、現在の多くの方法手続きの進歩は、ハードウェア回路構造の直接の進歩であると考えることができる。設計者は通常、改良された方法手続きをハードウェア回路にプログラミングして、対応するハードウェア回路構造を取得する。したがって、方法手続きは、ハードウェアエンティティモジュールを使用することによって改良することができる。たとえば、プログラム可能論理回路(PLD : programmable logic device)(たとえば、フィールドプログラマブルゲートアレイ(FPGA : field programmable gate array))は、こうした集積回路であり、PLDの論理機能は、デバイスのプログラミングを通してユーザによって決定される。設計者は、チップの製造業者に特定用途向け集積回路チップの設計および製造を依頼する必要なく、プログラミングを実施してデジタルシステムをPLDに「組み込む」。さらに、今のところ、集積回路チップを手作業で製造する代わりに、こうしたプログラミングは、「論理コンパイラ」ソフトウェアを使用してほとんど実装される。論理コンパイラソフトウェアは、プログラムを開発し書くために使用されるソフトウェアコンパイラに似ている。オリジナルコードは、コンパイルするために特定のプログラミング言語で書く必要がある。その言語は、ハードウェア記述言語(HDL : hardware description language)と呼ばれる。先進論理式言語(ABEL : Advanced Boolean Expression Language)、可変ハードウェア記述言語(AHDL : Altera Hardware Description Language)、合流コーネル大学プログラミング言語(CUPL)、HDCal、ジャバハードウェア記述言語(JHDL : Java（登録商標） Hardware Description Language)、Lava、Lola、MyHDL、PALASM、およびルビーハードウェア記述言語(RHDL : Ruby 
Hardware Description Language)といった、多くのHDLがある。超高速集積回路ハードウェア記述言語(VHDL : very-high-speed integrated circuit hardware description language)およびVerilogが、最も一般的に使用される。当業者はまた、論理方法手続きを実装するハードウェア回路は、いったん方法手続きがいくつかの記載されたハードウェア記述言語を使用して論理的にプログラミングされ集積回路にプログラムされると、容易に入手できるということを理解すべきである。
【００７２】
制御装置は、任意の適切な方法を使用して実装することができる。たとえば、制御装置は、マイクロプロセッサまたはプロセッサ、および、マイクロプロセッサまたはプロセッサ、論理ゲート、スイッチ、特定用途向け集積回路(ASIC : application-specific integrated circuit)、プログラマブル論理制御装置、または組込みマイクロコントローラによって実行できるコンピュータ可読プログラムコード(ソフトウェアまたはファームウェアなど)を記憶するコンピュータ可読媒体とすることができる。制御装置の例としては、以下のマイクロプロセッサ、すなわち、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、および、Silicone Labs C8051F320が挙げられるが、これだけには限られない。メモリ制御装置はまた、メモリの制御論理回路の一部として実装することができる。当業者はまた、コンピュータ可読プログラムコードを使用して制御装置を実装することに加えて、論理プログラミングを方法ステップに実行して、制御装置が、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理制御装置、および組込みマイクロコントローラの形式において同一の機能を実行できることを知っている。したがって、制御装置は、ハードウェア構成要素として考えることができ、および、制御装置に含まれ様々な機能を実行するように構成されたデバイスも、ハードウェア構成要素中の構造として考えることができる。あるいは、様々な機能を実行するように構成されたデバイスは、方法を実行するソフトウェアモジュールおよびハードウェア構成要素中の構造の両者とさえ考えることができる。
【００７３】
以前の実施形態に記載されたシステム、デバイス、モジュールまたはユニットは、コンピュータチップもしくはエンティティを使用することによって実装することができ、または、一定の機能を有する製品を使用することによって実装することができる。典型的な実装デバイスはコンピュータである。コンピュータは、たとえば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラフォン、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、イーメールデバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、または任意のこれらのデバイスの組合せとすることができる。
【００７４】
説明を簡単にするために、上記のデバイスは、機能を様々なユニットに分割することによって説明される。現在のアプリケーションが実行されるとき、ユニットの機能は、ソフトウェアおよび/またはハードウェアの1つまたは複数の部分で実行されることは確かである。
【００７５】
当業者は、本開示の一実施形態は、方法、システムまたはコンピュータプログラム製品として提供できることを理解すべきである。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、または、ソフトウェアとハードウェアとを組み合せた実施形態の形式を使用することができる。さらに、本開示は、コンピュータが使えるプログラムコードを含む、1つまたは複数のコンピュータが使える記憶媒体(ディスクメモリ、CD-ROM、光学メモリ等を含むがこれだけには限られない)に実装されたコンピュータプログラム製品の形式を使用することができる。
【００７６】
本開示は、本開示の実施形態による、流れ図、ならびに/または、方法、デバイス(システム)およびコンピュータプログラム製品のブロック図を参照しながら説明される。コンピュータプログラム命令を使用して、流れ図および/またはブロック図の各プロセスおよび/または各ブロック、ならびに、流れ図および/またはブロック図のプロセスおよび/またはブロックの組合せを実行することができることを理解すべきである。こうしたコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組込みプロセッサ、または別のプログラマブルデータ処理デバイスのプロセッサに提供されてマシンを生成することができ、その結果、別のプログラマブルデータ処理デバイスのコンピュータまたはプロセッサによって実行された命令は、流れ図の1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックの特定の機能を実行するためのデバイスを生成する。
【００７７】
こうしたコンピュータプログラム命令は、コンピュータまたは別のプログラマブルデータ処理デバイスに特定の方法で動作するように命令することができるコンピュータ可読メモリに記憶することができ、その結果、コンピュータ可読メモリに記憶された命令は、命令デバイスを含む製品を生成する。命令デバイスは、流れ図の1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックの特定の機能を実行する。
【００７８】
こうしたコンピュータプログラム命令は、コンピュータまたは別のプログラマブルデータ処理デバイスにロードすることができ、その結果、一連の動作ならびに動作およびステップがコンピュータまたは別のプログラマブルデバイスで実施され、それによりコンピュータ実施処理を生成する。したがって、コンピュータまたは別のプログラマブルデバイス上で実行された命令は、流れ図の1つまたは複数のプロセスおよび/またはブロック図の1つまたは複数のブロックの特定の機能を実行するためのステップを提供する。
【００７９】
典型的な構成において、コンピューティングデバイスは、1つまたは複数のプロセッサ(CPU)、1つまたは複数の入力/出力インタフェース、1つまたは複数のネットワークインタフェース、および、1つまたは複数のメモリを備える。
【００８０】
メモリは、非永続型メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリ、および/または、たとえば、リードオンリメモリ(ROM)もしくはフラッシュメモリ(フラッシュRAM)といったコンピュータ可読媒体中の別の形式を含むことができる。
【００８１】
コンピュータ可読媒体は、任意の方法または技術を使用することにより、メッセージを記憶することができる、永続型、非永続型、移動型および非移動型の媒体を含む。メッセージは、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータとすることができる。コンピュータ記憶媒体の例としては、パラメータランダムアクセスメモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)もしくは別のタイプのランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM : electrically erasable programmable read-only memory)、フラッシュメモリもしくは別のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)デジタル多用途ディスク(DVD)もしくは別の光学式記憶装置、磁気カセット、磁気テープ、磁気テープ/磁気ディスクメモリもしくは別の磁気ストレージデバイス、または、コンピューティングデバイスによってアクセスできるメッセージを記憶するために使用することができる任意の他の非伝送媒体が挙げられるが、これだけには限られない。本明細書の定義に基づいて、コンピュータ可読媒体は、変調されたデータ信号およびキャリヤといった、一時的なコンピュータ可読媒体(一時的媒体)は含まない。
【００８２】
「include」、「comprise」またはそれらのいかなる他の変異形の用語は、非排他的な包含関係を含もうとするものであり、そのため、要素の一覧表を含むプロセス、方法、製品またはデバイスは、これらの要素を含むだけでなく明白に表に載せていない他の要素も含む、あるいは、こうしたプロセス、方法、製品またはデバイスに固有の要素もさらに含むということにさらに言及することは価値のあることである。さらなる制限なしに、「includes...」に続く要素は、要素を含むプロセス、方法、製品またはデバイス中の追加的な同一の要素の存在を排除しない。
【００８３】
当業者は、本出願の一実施形態は、方法、システムまたはコンピュータプログラム製品として提供できるということを理解すべきである。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、または、ソフトウェアとハードウェアとを組み合せた実施形態の形式を使用することができる。さらに、本出願は、コンピュータが使えるプログラムコードを含む、1つまたは複数のコンピュータが使える記憶媒体(ディスクメモリ、CD-ROM、光学メモリ等を含むがこれだけには限られない)に実装されたコンピュータプログラム製品の形式を使用することができる。
【００８４】
本出願は、たとえば、プログラムモジュールといった、コンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実行する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本出願はまた、分散されたコンピューティング環境で実行することができる。分散されたコンピューティング環境において、タスクは通信ネットワークを通して接続された遠隔の処理デバイスによって実行される。分散されたコンピューティング環境において、プログラムモジュールは、記憶デバイスを含むローカルおよび遠隔の両方のコンピュータ記憶媒体に配置することができる。
【００８５】
本明細書における実施形態は段階的に記載されている。実施形態の同一または類似の部分について、実施形態への言及がなされ得る。各実施形態は、他の実施形態との相違に焦点が当てられている。特に、システムの実施形態は、基本的に方法の実施形態と類似しており、したがって簡単に記載されている。関連する部分については、方法の実施形態の関連する記載への言及がなされ得る。
【００８６】
以前の実施形態は、本出願の実施形態であり、本出願を制限しようとするものではない。当業者は、本出願に様々な変更および変化を加えることができる。本出願の趣旨および原理から逸脱することなくなされた、どのような変更、同等の置換え、または改良も、本出願における特許請求の範囲内に当てはまるものとする。
【符号の説明】
【００８７】
401  取得モジュール
402  第1の送信モジュール
403  第2の送信モジュール
501  受信モジュール
502  コンセンサス検証モジュール
503  送信モジュール
【図１】
0006794551.tif 000002
【図２】
0006794551.tif 000003
【図３】
0006794551.tif 000004
【図４】
0006794551.tif 000005
【図５】
0006794551.tif 000006