IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特表2024-542677ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム
<>
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図1
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図2
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図3
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図4
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図5
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図6
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図7
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図8
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図9
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図10
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図11
  • 特表-ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-15
(54)【発明の名称】ブロックチェーンコンセンサス方法、装置、電子機器及びプログラム
(51)【国際特許分類】
   H04L 67/104 20220101AFI20241108BHJP
   H04L 9/32 20060101ALI20241108BHJP
   H04L 67/1074 20220101ALI20241108BHJP
【FI】
H04L67/104
H04L9/32 200Z
H04L67/1074
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024532392
(86)(22)【出願日】2023-04-03
(85)【翻訳文提出日】2024-05-30
(86)【国際出願番号】 CN2023085831
(87)【国際公開番号】W WO2023231558
(87)【国際公開日】2023-12-07
(31)【優先権主張番号】202210622140.7
(32)【優先日】2022-06-02
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】杜 智超
(57)【要約】
本願はブロックチェーン技術分野に属しており、具体的にはブロックチェーンコンセンサス方法、ブロックチェーンコンセンサス装置、コンピュータ読取り可能媒体、電子機器及びコンピュータプログラム製品に関するものである。当該方法には、ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストすることであって、ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれることと、各コンセンサス段階でブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得することと、同一のコンセンサス段階において応答メッセージを発出したブロックチェーンノードのノード数をカウントすることと、ノード数が第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、第2コンセンサスアルゴリズムを実行するブロックチェーンノードに第1コンセンサスアルゴリズムのコンセンサス結果を同期させることと、を含み、第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムは異なるタイプのコンセンサスアルゴリズムである。本願はブロックチェーンコンセンサスの柔軟性を高めることができる。
【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおける現在のブロックチェーンノードにより実行されるブロックチェーンコンセンサス方法であって、
前記ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストすることであって、前記ブロックチェーンネットワークには少なくとも2種の異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる、ことと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得することであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージである、ことと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントすることであって、前記ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる、ことと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させることと、を含む、ブロックチェーンコンセンサス方法。
【請求項2】
異なるタイプのコンセンサスアルゴリズムは異なる数のコンセンサス段階を有し、前記応答メッセージは、ブロックチェーンノードのアルゴリズムタイプ及びノード署名を伝送し、前記アルゴリズムタイプは前記ブロックチェーンノードが実行するコンセンサスアルゴリズムを示すために用いられ、前記ノード署名には前記ブロックチェーンノードの各コンセンサス段階におけるデジタル署名が含まれる、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項3】
前記同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントすることは、
前記応答メッセージを解析して、前記応答メッセージに含まれているアルゴリズムタイプ及びノード署名を得ることと、
前記アルゴリズムタイプに応じて、メッセージ送信ノードが実行したコンセンサスアルゴリズムを識別することであって、前記メッセージ送信ノードは前記応答メッセージを発出したブロックチェーンノードである、ことと、
前記ノード署名に応じて、前記メッセージ送信ノードが位置するコンセンサス段階を識別することと、
前記メッセージ送信ノードが実行したコンセンサスアルゴリズム及び前記メッセージ送信ノードが位置するコンセンサス段階に応じて、前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントすることと、を含む、請求項2に記載のブロックチェーンコンセンサス方法。
【請求項4】
前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントする前に、更に、
前記異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係を取得することと、
前記メッセージ送信ノードと現在のブロックチェーンノードとが異なるタイプのコンセンサスアルゴリズムを実行している場合は、前記マッチング関係に応じて、前記現在のブロックチェーンノードと同一コンセンサス段階にあるメッセージ送信ノードを確定することと、を含む、請求項3に記載のブロックチェーンコンセンサス方法。
【請求項5】
前記第1コンセンサスアルゴリズムはN個のコンセンサス段階を含み、前記第2コンセンサスアルゴリズムはM個のコンセンサス段階を含み、前記異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係は、
前記第1コンセンサスアルゴリズム及び前記第2コンセンサスアルゴリズムの前半P個のコンセンサス段階を相互にマッチングさせることであって、PはN-1及びM-1のうちの小さい方の数値である、ことと、
前記第1コンセンサスアルゴリズムの後半N-P個のコンセンサス段階と前記第2コンセンサスアルゴリズムの後半M-P個のコンセンサス段階とを相互にマッチングさせることと、を含む、請求項4に記載のブロックチェーンコンセンサス方法。
【請求項6】
前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントした後、更に、
前記現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最終1つのコンセンサス段階である場合は、前記ノード数が実行するコンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに応じて、コンセンサスアルゴリズムのコンセンサス結果を確定することと、
前記現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最終1つのコンセンサス段階ではない場合は、前記ノード数が、実行するコンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに応じて、コンセンサスアルゴリズムを実行する次のコンセンサス段階であるか否かを確定することと、を含む、請求項3に記載のブロックチェーンコンセンサス方法。
【請求項7】
前記第1コンセンサスアルゴリズムは低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの1種であり、前記第2コンセンサスアルゴリズムは前記低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの前記第1コンセンサスアルゴリズムと異なる別種であり、
前記低耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第1割合閾値よりも大きいことであり、前記高耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第2割合閾値よりも大きいことであり、前記第1割合閾値は前記第2割合閾値よりも小さい、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項8】
前記低耐故障性コンセンサスアルゴリズムは、第1数のコンセンサス段階を有し、前記高耐故障性コンセンサスアルゴリズムは、第2数のコンセンサス段階を有し、前記第1数は前記第2数よりも小さい、請求項7に記載のブロックチェーンコンセンサス方法。
【請求項9】
前記低耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される準備段階及びコミット段階を含み、前記高耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される前準備段階、準備段階及びコミット段階を含み、前記低耐故障性コンセンサスアルゴリズムの準備段階は、前記高耐故障性コンセンサスアルゴリズムの前準備段階と相互にマッチングしており、前記低耐故障性コンセンサスアルゴリズムのコミット段階は、前記高耐故障性コンセンサスアルゴリズムの準備段階及びコミット段階と相互にマッチングしている、請求項8に記載のブロックチェーンコンセンサス方法。
【請求項10】
前記ブロックチェーンネットワークにおいてコンセンサス要求をブロードキャストする過程で、前記方法は、更に、
前記ブロックチェーンネットワークにおける一部またはすべてのブロックチェーンノードのアルゴリズムを切り換えて、前記一部またはすべてのブロックチェーンノードが実行するコンセンサスアルゴリズムを変更することを含む、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項11】
前記ブロックチェーンネットワークにおける一部またはすべてのブロックチェーンノードのアルゴリズムを前記切り換えることは、
前記ブロックチェーンネットワークに対して信頼度予測を実施して、前記ブロックチェーンネットワークの運用環境が信頼環境であるか否かを確定することと、
前記ブロックチェーンネットワークの運用環境が信頼環境である場合は、前記ブロックチェーンネットワークにおいて低耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、高耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、
前記ブロックチェーンネットワークの運用環境が信頼環境ではない場合は、前記ブロックチェーンネットワークにおいて高耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、低耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、を含む、請求項10に記載のブロックチェーンコンセンサス方法。
【請求項12】
前記ブロックチェーンネットワークに対して信頼度予測を前記実施することは、
前記ブロックチェーンネットワークにおける各ブロックチェーンノードの運用時間長を取得することと、
前記運用時間長が時間長閾値よりも短い場合は、前記ブロックチェーンノードを非信頼ノードと確定することと、
前記ブロックチェーンネットワークにおける非信頼ノードの数が数閾値よりも大きい場合は、前記ブロックチェーンネットワークの運用環境を非信頼環境と確定することと、
前記ブロックチェーンネットワークにおける非信頼ノードの数が数閾値未満である場合は、前記ブロックチェーンネットワークの運用環境を信頼環境と確定することと、を含む、請求項11に記載のブロックチェーンコンセンサス方法。
【請求項13】
ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストするように構成された要求モジュールであって、前記ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる、要求モジュールと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得するように構成された応答モジュールであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージである、応答モジュールと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントするように構成された統計モジュールであって、前記ノード数には少なくとも2つの、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる、統計モジュールと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させるように構成された同期モジュールと、を含むブロックチェーンコンセンサス装置。
【請求項14】
コンピュータプログラムが記憶されたコンピュータ読取り可能媒体であって、前記コンピュータプログラムがプロセッサにより実行されると、請求項1~12のいずれか1項に記載のブロックチェーンコンセンサス方法が実装される、コンピュータ読取り可能媒体。
【請求項15】
プロセッサと、
前記プロセッサの実行可能指令を記憶するためのメモリと、を含む電子機器であって、
前記プロセッサは、前記実行可能指令を実行することにより、前記電子機器に請求項1~12のいずれか1項に記載のブロックチェーンコンセンサス方法を実行させるように構成された、電子機器。
【請求項16】
コンピュータプログラムを含むコンピュータプログラム製品であって、前記コンピュータプログラムがプロセッサにより実行されると、請求項1~12のいずれか1項に記載のブロックチェーンコンセンサス方法が実装される、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本願は2022年06月02日に中国特許局に提出された、出願番号が202210622140.7であり、出願名が「ブロックチェーンコンセンサス方法、装置、媒体及び電子機器」である中国特許出願の優先権を求めており、そのすべての内容は引用されることにより本願中に結合される。
【0002】
本願はブロックチェーン技術分野に属しており、具体的にはブロックチェーンコンセンサスに関するものである。
【背景技術】
【0003】
複数のブロックチェーンノードを含むブロックチェーンネットワークにおいて、分散型信頼環境を実現するため、すべてのブロックチェーンノードが一般的に統一されたコンセンサスアルゴリズムを実行して、各ノード間でデータの一致性同期を行う必要がある。しかし、統一されたコンセンサスアルゴリズムは多様化されたシステムの業務要求を満たすことが困難であり、柔軟性が劣るという問題が存在している。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願はブロックチェーンコンセンサス方法、ブロックチェーンコンセンサス装置、コンピュータ読取り可能媒体、電子機器及びコンピュータプログラム製品を提供し、目的はブロックチェーンコンセンサスの柔軟性を高めることにある。
【課題を解決するための手段】
【0005】
本願のその他の特性及び利点は、以下における詳細な描写を通して明らかとなるか、または部分的に本願の実践を通して習得される。
【0006】
本願実施例の1つの様態に基づいて、ブロックチェーンコンセンサス方法を提供し、前記方法はブロックチェーンネットワークにおける現在のブロックチェーンノードにより実行され、当該方法は、
前記ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストすることであって、前記ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれることと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得することであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージであることと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントすることであって、前記ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれることと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させることと、を含む。
【0007】
本願実施例の1つの様態に基づいて、ブロックチェーンコンセンサス装置を提供し、当該装置は、
ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストするように構成された要求モジュールであって、前記ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる要求モジュールと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得するように構成された応答モジュールであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージである応答モジュールと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントするように構成された統計モジュールであって、前記ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる統計モジュールと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させるように構成された同期モジュールと、を含む。
【0008】
本願実施例の1つの様態に基づいて、コンピュータ読取り可能な媒体を提供し、それにはコンピュータプログラムが記憶されており、当該コンピュータプログラムがプロセッサにより実行されると、上記技術案におけるブロックチェーンコンセンサス方法が実現される。
【0009】
本願実施例の1つの様態に基づいて、電子機器を提供し、当該電子機器は、プロセッサと、前記プロセッサの実行可能な指令を記憶するためのメモリとを含み、前記プロセッサは前記実行可能な指令を実行することにより上記技術案におけるブロックチェーンコンセンサス方法を実行するように構成されている。
【0010】
本願実施例の1つの様態に基づいて、コンピュータプログラムを含むコンピュータプログラム製品を提供し、当該コンピュータプログラムがプロセッサにより実行されると、上記技術案におけるブロックチェーンコンセンサス方法が実現される。
【0011】
本願のいくつかの実施例では、当該コンピュータプログラム製品またはコンピュータプログラムはコンピュータプログラムを含み、当該コンピュータプログラムはコンピュータ読取り可能な記憶媒体に記憶される。コンピュータ機器のプロセッサがコンピュータ読取り可能な記憶媒体から当該コンピュータプログラムを読み取り、プロセッサが当該コンピュータプログラムを実行して、当該コンピュータ機器に上記技術案におけるブロックチェーンコンセンサス方法を実行させる。
【0012】
本願実施例が提供する技術案において、ブロックチェーンネットワークに少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードを構成することにより、ノードコンセンサスを実施する過程で、コンセンサス応答を発出したブロックチェーンノードのノード数をカウントすることができ、ノード数が任意1種のコンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、コンセンサス条件を満たしているブロックチェーンノードからコンセンサス条件を満たしていないブロックチェーンノードにコンセンサス結果を同期させることができ、ブロックチェーンコンセンサスの柔軟性を高めることができる。
【0013】
ここで理解すべきは、以上の一般的な描写及び後半の細目描写は例示的及び解釈的なものに過ぎず、本願を制限するものではない点である。
【図面の簡単な説明】
【0014】
図1】本願実施例におけるブロックチェーンシステムの構成概略図である。
図2】ブロックチェーンネットワーク上で維持されているブロックチェーンの構成構造である。
図3】例示的に示された本願技術案を応用したブロックチェーンネットワークのネットワーク構造である。
図4】本願の1つの実施例におけるブロックチェーンコンセンサス方法のステップフロー図である。
図5】本願の1つの実施例における応答メッセージのデータ構造である。
図6】本願の1つの実施例におけるコンセンサス段階に基づきノード数をカウントするブロックチェーンコンセンサス方法である。
図7】本願の1つの実施例における低耐故障性コンセンサスアルゴリズムのコンセンサスフローである。
図8】本願の1つの実施例における高耐故障性コンセンサスアルゴリズムのコンセンサスフローである。
図9】本願実施例のアルゴリズム切換え実行過程におけるシーンの例である。
図10】本願実施例が1つの応用シーンにおいてコンセンサス認証を実行する方法のステップフロー図である。
図11】例示的に示された本願実施例が提供するブロックチェーンコンセンサス装置の構造ブロック図である。
図12】例示的に示された本願実施例の実現に適した電子機器のコンピュータシステムの構造ブロック図である。
【発明を実施するための形態】
【0015】
ここにおいては添付図面を参照してより全面的に例示的な実施形態について説明するが、例示的な実施形態は多種の形式で実施可能であり、かつ、ここで記述される範例に限定されると理解すべきではなく、逆に、それらの実施形態を提供して本願をより全面的及び完璧なものとすることにより、例示的な実施形態の構想が全面的に当業者に伝達されることになる。
【0016】
また、描写される特徴、構造または特性は任意の好適な方式で1つまたはより多くの実施例に結合することができる。以下の描写においては、数多くの具体的な細目を提供することにより本願の実施例に対する十分な理解を促進させる。しかし、当業者であれば認識可能な通り、本願の技術案を実践する際に細目のうちの1つまたはより多くを特定しなくてもよく、またはその他の方法、ユニット、装置、ステップなどを採用することもできる。その他の場合、本願の各様態が曖昧となることを回避するため、公知の方法、装置、実現及び操作について詳細に提示または説明しない。
【0017】
添付図面に示されているブロック図は機能実体に過ぎず、物理的に独立した実体と相互に対応しているとは限らない。つまり、ソフトウェア形式を採用してそれらの機能実体を実現するか、または1つもしくは複数のハードウェアモジュールもしくは集積回路内でそれらの機能実体を実現するか、または異なるネットワーク及び/またはプロセッサ装置及び/またはマイクロコントローラ装置内でそれらの機能実体を実現することもできる。
【0018】
添付図面に示されているフロー図は例示的な説明に過ぎず、すべての内容及び操作/ステップを含んでいなければならないとは限らず、描写された順序で実行しなければならないとも限らない。例えば、ある操作/ステップは更に分解することができ、ある操作/ステップは併合または部分的に併合することもできるため、実際に実行する順序は実際の状況に応じて変更される可能性がある。
【0019】
本願の具体的な実施形態において、ユーザがブロックチェーン製品を応用する際に生成する要求、応答などの関連データに関しては、本願の各実施例を具体的な製品または技術に運用する際に、ユーザの許可または同意を得なければならず、かつ、関連するデータの収集、使用及び処理は、関連する国と地域の関連する法律法規及び標準を遵守しなければならない。
【0020】
ブロックチェーンは対等なネットワーク環境下において、透明で信頼可能な規則により構築された偽造防止、改竄防止及び追跡可能に共有されるブロックチェーン型データ構造(chained-block data structure)を有するデジタル台帳である。ブロックチェーン型データ構造は一定時間内に発生した事務処理をブロック単位として記憶するとともに、暗号化アルゴリズムによりブロックを時間順通りにチェーンに連結するデータ構造である。台帳はネットワーク内のすべてのメンバーノードに分配され、ハッシュ暗号化アルゴリズムにより連結されたブロックのシーケンシャルチェーン内に、ネットワークにおける対等なノードの間で発生した資産取引の履歴が恒久的に記録される。確認及び証明されたすべての取引はいずれもチェーンのヘッダから最新のブロックまでチェーン接続されるため、ブロックチェーンと名付けられており、ブロックチェーンは単一の事実ソースに充当することができ、かつ、ブロックチェーンネットワーク内のメンバーは彼らに関する取引を確認することしかできない。
【0021】
図1には本願実施例におけるブロックチェーンシステムの組成概略図が示されており、ブロックチェーンシステム100は少なくとも1つのクライアント110及びブロックチェーンネットワーク120を含むことができ、ブロックチェーンネットワーク120は少なくとも1つのブロックチェーンノード121を含む。クライアント110はスマートフォン、タブレットPC、ノートパソコン、デスクトップ型パソコン、ウェアラブル機器、スマート車載機器、スマート支払い端末、顔認識端末などの各種電子機器とすることができ、相応のクライアントアプリケーションプログラムを実装することにより、ユーザにブロックチェーンデータサービスを提供することができる。ブロックチェーンノード121は端末機器またはサーバとすることができ、例えば、ブロックチェーンノード121は独立した物理サーバとすることができ、複数の物理サーバにより構成されるサーバ群とすることもでき、更にはクラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウドファンクション、クラウドメモリ、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメインサービス、セキュリティサービス、CDN、及びビッグデータや人工知能プラットホームなどの基礎クラウドコンピューティングサービスを提供するクラウドサーバとすることもできる。
【0022】
ブロックチェーンネットワーク120において、各ブロックチェーンノード121は正常に動作している際に入力情報を受信するとともに、受信した入力情報に基づきブロックチェーンネットワーク内の共有データを維持することができる。情報の相互接続を保証するため、各ブロックチェーンノード121の間には情報連結が存在することができ、各ブロックチェーンノード121は相互に情報連結を介して情報伝送を行うことができる。例えば、ブロックチェーンネットワーク120における任意のブロックチェーンノード121が入力情報を受信するとともに、入力情報をブロックチェーンネットワーク120内でブロードキャストした場合、ブロックチェーンネットワーク120内のその他のノード機器はコンセンサスアルゴリズムに基づいて当該入力情報を取得し、当該入力情報を共有データとして記憶することができる。
【0023】
ブロックチェーンネットワーク120内の各ブロックチェーンノード121に対しては、いずれもそれに対応するノード識別子を有しており、かつ、ブロックチェーンネットワーク120内の各ブロックチェーンノード121は、いずれも同一ブロックチェーンネットワーク内のその他のブロックチェーンノードのノード識別子を記憶し、後続過程においてその他のブロックチェーンノードのノード識別子に基づいて、生成したブロックをブロックチェーンネットワーク120内のその他のノードまでブロードキャストすることができる。ブロックチェーンノード121には表1で示されているノード識別子リストが維持でき、ノード名及びノード識別子を対応付けて当該ノード識別子リスト内に記憶することができる。ノード識別子はIP(Internet Protocol、ネットワーク間の相互接続プロトコル)アドレス及びその他の任意1種の当該ノードの標識化に用いることが可能な情報とすることができ、表1はIPアドレスを例としたノード識別子リストである。
【0024】
【表1】
【0025】
図2にはブロックチェーンネットワーク上で維持されたブロックチェーンの構成構造が示されている。図2に示されている通り、ブロックチェーンは複数の順次連結されたブロックからなり、新たなデータをブロックチェーンに書き込む必要がある場合には、それらのデータを1つの新たに生成されたブロック内に集約し、新たに生成されたブロックはブロックチェーンの末端に連結され、コンセンサスアルゴリズムによって各ノード機器121で新たに追加するブロックが完全に同一であることを保証できる。各ブロックのブロックボディに現在のブロックのデータが記録され、同時にそのブロックヘッダにそれに連結される1つ前のブロックのハッシュ値(Hash)が保存され、1つ前のブロック内のトランザクションデータに変化が発生した場合は、現在のブロックのハッシュ値もそれに伴い変化する。従って、ブロックチェーンネットワーク内にアップロードされたデータを改竄することは困難となり、共有データの信頼性を高めることができる。
【0026】
図3には本願の技術案を応用したブロックチェーンネットワークのネットワーク構造が模式的に示されている。図3に示されている通り、ネットワーク取引及びネットワーク支払いを実現する応用シーンにおいては、ブロックチェーンネットワーク内に位置するトランザクション主体ノード310、トランザクションプラットホームノード320及びリソース配分ノード330が共同して1本または複数本のブロックチェーン340を維持する。
【0027】
トランザクション主体ノード310は、ユーザのためにトランザクションサービスを提供するブロックチェーンノードであり、例えば、ユーザとネットワーク取引を行うショップまたは個人業者とすることができる。
【0028】
トランザクションプラットホームノード320は、ネットワーク取引のために取引シーンを提供するブロックチェーンノードであり、例えば、eコマースサイト、ネットショッピングモールまたはネットワーク取引サービスを提供する各種業務プラットホームとすることができる。
【0029】
リソース配分ノード330は、ネットワーク取引のために資金管理及び配分サービスを提供するブロックチェーンノードであり、例えば、第三者支払機関とすることができる。
【0030】
ユーザがトランザクション主体ノード310とネットワーク取引を行う場合は、リソース配分ノード330上で開通したアカウントを介してトランザクション主体ノード310に取引資金を支払い、トランザクションプラットホームノード320は取引シーンの提供方として、当該取引資金から一定額の資金をプラットホームサービス費用として天引きする必要がある。トランザクション主体ノード310とトランザクションプラットホームノード320との間で信頼性のある資金配分を実現するため、ブロックチェーンネットワークに基づき相応の資金配分を行うためのスマートコントラクト(例えば、分離勘定契約)を締結することができ、ネットワーク取引が発生すると、リソース配分ノード330は当該スマートコントラクトに応じて取引シーンにおける各対象に向けて資金配分を行い、各ブロックチェーンノード上でネットワーク取引を行って生じた取引データはいずれもブロックチェーン340を介してアップロードして保存することができ、分散型のデータ保存は信頼を損なう危機を効果的に回避することができる。
【0031】
ノードダウン、ネットワーク故障、ソフトウェアエラー、悪意のあるノードなどのエラーにより、各ブロックチェーンノード間に保存されているデータが一致しなくなる問題が発生する可能性があるが、コンセンサスアルゴリズムでは1組のノード間におけるネットワークインタラクティブの分散型アルゴリズムが定義されており、上記エラーが出現したシステム環境においても、依然として各ブロックチェーンノード間のデータの一致性を確保することができる。本願の関連技術において、1つのブロックチェーンネットワークにおけるすべてのブロックチェーンノードは、いずれも統一されたコンセンサスアルゴリズムを採用してコンセンサス認証を実施し、コンセンサス過程及びコンセンサス結果の一致性を確保しなければならない。しかし、実際のブロックチェーンの業務処理過程においては、ブロックチェーンサービスを使用する上層業務システムがユーザの需要に伴って絶え間なく変更されており、性能、可用性、耐故障性、拡張性などの面において異なる訴求を有している。現在のブロックチェーンネットワークは採用しているのがいずれも単一のコンセンサスアルゴリズムであるため、上層業務システムの要求に適応することができない。ブロックチェーンネットワーク上でブロックチェーンノードのコンセンサスアルゴリズムを変更する必要がある場合は、ブロックチェーンネットワーク全体のサービスを停止し、すべてのブロックチェーンノードに対するアルゴリズムの変更が完了するのを待った後、再度新たなコンセンサスアルゴリズムが構成されたブロックチェーンネットワークを起動するように制御しなければならない。この種のコンセンサスアルゴリズムの切換え方式は、長時間、高頻度のサービス中断を招きやすいため、コンセンサスアルゴリズムの切換え効率が低下する問題が存在しているばかりではなく、ブロックチェーンネットワークにおけるサービスの連続性及び安定した信頼性にも重大な影響が及ぼされる。
【0032】
関連技術に存在する以上の技術的問題に対して、本願では複数種の異なるタイプのコンセンサスアルゴリズム間においてオンラインで柔軟に切換え可能な技術案が提供されており、ブロックチェーンシステムがサービスを停止しない状況で、コンセンサスアルゴリズムをリアルタイムで変更して業務システムの要求を満たすことができる。
【0033】
以下において、具体的な実施形態を組み合わせて本願が提供するブロックチェーンコンセンサス方法、ブロックチェーンコンセンサス装置、コンピュータ読取り可能媒体、電子機器及びコンピュータプログラム製品などの技術案について詳細に説明する。
【0034】
図4には本願の1つの実施例におけるブロックチェーンコンセンサス方法のステップフロー図が示されており、当該ブロックチェーンコンセンサス方法は図1に示されているクライアントまたはブロックチェーンノードにより実行することができるが、説明上の便宜を図るため、ブロックチェーンネットワークにおける任意の1つのブロックチェーンノードを現在のブロックチェーンノードとし、現在のブロックチェーンノードを、本願実施例を実行する実行主体とし、当該現在のブロックチェーンノードを図1に示されているクライアントに設定して、本願実施例が現在のブロックチェーンノード上で実行するブロックチェーンコンセンサス方法を例にして説明する。図4に示されている通り、本願実施例におけるブロックチェーンコンセンサス方法には、以下のS410~S440が含まれる。
【0035】
S410:ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストする、ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれる。
【0036】
本願実施例におけるブロックチェーンネットワークは、パブリックチェーン(Public Block Chain)、プライベートチェーン(Private Block Chain)またはコンソーシアムチェーン(Consortium Block Chain)のうちのいずれか1種を含むことができる。分散型の程度が最も高いのはパブリックチェーンである。パブリックチェーンに加わったノード/参加者はいずれもチェーン上のデータを読み取り、取引を提案及び新たなブロックの記帳権などを争うことができ、かつ、各ノード/参加者はパブリックチェーンに自由に加入及び退出することができる。プライベートチェーンは逆であり、プライベートチェーンの記帳権はある組織または機構によりコントロールされ、データ読取り権限も当該組織または機構のコントロールを受け、参加者は少なく、かつ、プライベートチェーンに随意加入することはできず、組織または機構の審査を通過しなければならない。コンソーシアムチェーンは共同体ブロックチェーンとも称され、コンセンサス過程が予め選出されたノードのコントロールを受けるブロックチェーンを指しており、パブリックチェーンとプライベートチェーンとの混合であり、「部分的な分散型」を実現することができる。チェーン上の各ノードは、通常、それに対応した実体の機構または組織を有しており、参加者は授権されてネットワークに加入するとともに、利益関連のコンソーシアムを形成し、ブロックチェーンの運用を共同で維持する。コンソーシアムチェーンにより、新たな参加者はすでに形成されているブロックチェーンに加入してデータを共有することができ、それを最初から構築する必要はない。パブリックチェーン、プライベートチェーンであるかそれともコンソーシアムチェーンであるかに拘わらず、いずれもスマートコントラクトの機能を提供することができる。ブロックチェーン上のスマートコントラクトはブロックチェーンシステム上で取引に触発されて実行可能となる契約である。スマートコントラクトはコード形式で定義することができる。
【0037】
スマートコントラクト(Smart contract)は、チェーンコード(Chaincode)またはアプリケーションコードとも称され、情報化方式で契約を伝達、検証または実行することを旨とするコンピュータプロトコルであり、ブロックチェーンネットワークのノード内のプログラムに配置され、取引を実行する業務論理が搭載されており、隔離された運用環境(例えば、コンテナまたは仮想マシン)内で運用される。ブロックチェーンシステム内の各ノードは特定条件で自動的に実行されるコントラクトプログラムに基づいて、チェーン上に記憶されているデータを操作することができ、業務主体とブロックチェーンとは双方向で対話し、ブロックチェーンを利用して業務論理を実現する重要なルートである。スマートコントラクトの目的は従来の契約よりも優れたセキュリティ方法を提供するとともに、契約に関するその他の取引コストを削減することであり、第三者がいない状況下で信頼性のある取引が許容され、それらの取引は追跡可能であり、かつ、不可逆的である。
【0038】
スマートコントラクトに基づき生成された取引データはコンセンサスアルゴリズムを介して異なるブロックチェーンノードの間でコンセンサス認証が行われて、各ブロックチェーンノード上に一致した取引データが保存可能であることを保証しなければならない。本願の1つの実施例において、ユーザがブロックチェーンシステムを運用するクライアントを介してネットワーク取引を行って取引データが生成されると、クライアントからそれと通信しているブロックチェーンノードにコンセンサス要求を送信することができ、コンセンサス要求を受信したブロックチェーンノードはブロックチェーンネットワーク上でそれをブロードキャスト送信して、コンセンサス要求をブロックチェーンネットワーク内のすべてのブロックチェーンノードに伝送可能とさせることができる。
【0039】
本願実施例においては、ブロックチェーンネットワーク上で少なくとも2種の異なるタイプのコンセンサスアルゴリズムを同時に運用することができ、例えば、ブロックチェーンネットワークにおける一部のブロックチェーンノードでは第1コンセンサスアルゴリズムを実行し、別の一部のブロックチェーンノードでは第1コンセンサスアルゴリズムとは異なる第2コンセンサスアルゴリズムを実行することができる。第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムは、同一のコンセンサス条件を有することができ、または異なるコンセンサス条件を有することもできる。第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムは、同一数のコンセンサス段階を有するかまたは異なる数のコンセンサス段階を有することができる。
【0040】
本願の1つの実施例においては、ブロックチェーンネットワークから1つまたは複数のブロックチェーンノードを、コンセンサス要求を処理するマスタノードとして選択することができ、ブロックチェーンネットワークにおけるマスタノードを除くその他のブロックチェーンノードをスレーブノードとする。クライアントがコンセンサス要求を生成すると、先ずコンセンサス要求をマスタノードに送信することができ、マスタノードが再度コンセンサス要求を各スレーブノードに分配する。マスタノードは投票選挙、輪番指定または無作為選出などの方式により生成することができる。
【0041】
S420:各コンセンサス段階でブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得する、応答メッセージはブロックチェーンノードがコンセンサス要求に応答するメッセージである。
【0042】
ブロックチェーンネットワーク内のブロックチェーンノードがコンセンサス要求を受信すると、コンセンサス要求に応答して、応答メッセージを生成するとともに、ブロックチェーンネットワーク上で応答メッセージをブロードキャストすることができる。
【0043】
本願の1つの実施例において、ブロックチェーンノードは受信したコンセンサス要求に対してコンセンサス検証を行うとともに、検証通過後にブロックチェーンネットワーク上に応答メッセージをブロードキャスト送信することができる。ブロックチェーンノードのコンセンサス要求に対するコンセンサス検証には署名検証及びデータ検証の2つの面を含むことができる。署名検証はコンセンサス要求のソースの信頼性を検証するために用いられ、データ検証はコンセンサス要求の内容の真実性を検証するために用いられる。
【0044】
本願の1つの実施例において、ブロックチェーンネットワーク内でブロードキャストされたコンセンサス要求はコンセンサス要求を発出したブロックチェーンノードのデジタル署名を伝送しており、ブロックチェーンネットワーク内でブロードキャストされた応答メッセージも同様に応答メッセージを発出したブロックチェーンノードのデジタル署名を伝送している。ブロックチェーンネットワークにおける各ブロックチェーンノードは非対称暗号鍵対を構成する公開鍵及び秘密鍵を所持することができ、コンセンサス要求または応答メッセージにデジタル署名をする際には、先ずダイジェスト抽出アルゴリズムによりデータ内容から内容ダイジェストを抽出し、その後、更に秘密鍵を使用して内容ダイジェストを暗号化処理してデジタル署名を形成し、当該デジタル署名は公開鍵により検証することができる。
【0045】
内容ダイジェストは、1項目のデータ内容に唯一対応した固定長さを有する文字列であり、一方向性ハッシュ暗号化関数がデータ内容に作用して生成される。データ内容がネットワーク伝送過程において改竄されている場合は、データ内容について伝送前後の内容ダイジェストを比較することにより、データ内容に改変が発生しているか否かを判別することができる。従って、内容ダイジェストに基づきデータ内容の完全性を検証することができる。内容ダイジェストは一方向性ハッシュ関数を採用して伝送対象のデータ内容の平文をマッピングして一連の暗号文とし、この一連の暗号文はデジタル指紋とも称される。内容ダイジェストは固定された長さを有しており、かつ、異なる平文ダイジェストを暗号文にすると、その結果は常に異なっているが、同様の平文はそのダイジェストが必ず一致する。本願実施例におけるダイジェスト抽出アルゴリズムには、例えば、MD(Message Digest、メッセージダイジェストアルゴリズム)、SHA(Secure Hash Algorithm、セキュアハッシュアルゴリズム)、MAC(Message Authentication Code、メッセージ認証コードアルゴリズム)などのアルゴリズムを含むことができる。
【0046】
デジタル署名は暗号鍵を有するメッセージダイジェストアルゴリズムであり、この暗号鍵には公開鍵及び秘密鍵が含まれ、データの完全性、認証データのソース及び否認防止、OSI参照モデル遵守、秘密鍵署名及び公開鍵検証を検証するために用いられる。非対称暗号化アルゴリズムとメッセージダイジェストアルゴリズムとの結合体でもあり、常見されるデジタル署名アルゴリズムは、主にRSA、DSA、ECDSAの3種類である。
【0047】
RSAアルゴリズムに基づき、先ず一対のRSA秘密鍵を生成することができ、そのうち一方が秘密が保持された秘密鍵で、業務主体が保存し、他方が公開秘密鍵であり、ネットワークサーバに登録可能となるような、対外的に公開が可能なものである。秘密保持強度を高めるため、RSA秘密鍵は少なくとも500ビット長、一般には1024ビットの使用が推奨される。それにより暗号化の計算量が非常に大きくなる。計算量を低減するため、情報伝送時には、常に従来の暗号化方法と公開鍵暗号化方法とを結合した方式が採用され、つまり情報は改良されたDESまたはIDEAセッション鍵を採用して暗号化され、その後、RSA暗号鍵を使用してセッション鍵及び情報ダイジェストを暗号化する。相手方は情報を受信した後、異なる秘密鍵を用いて復号するとともに、情報ダイジェストをチェックすることができる。
【0048】
DSA(Digital Signature Algorithm、デジタル署名アルゴリズム)の1つの重要な特徴は、2つの素数の公開である。それにより、その他の主体のp及びqを使用した場合に、秘密鍵を知らなくても、それらがランダムに生成されたものであるのか、それとも偽造または改変により生成されたものであるのかを確認することができる。
【0049】
ECDSA(Elliptic Curve Digital Signature Algorithm、楕円曲線デジタル署名アルゴリズム)は、ECC(Elliptic Curves Cryptography、楕円曲線暗号学)とDSAとの結合であり、署名過程全体がDSAに類似しており、違いは署名に採用されるアルゴリズムがECCである点であり、最後に署名された値もそれぞれr及びsの2項目のパラメータに分かれる。
【0050】
本願の1つの実施例において、コンセンサス要求に対する署名検証が完了すると、コンセンサス要求に含まれるデータ内容をデータ検証することができる。データ検証の方法には、例えば、コンセンサス要求に含まれるデータ内容と現在のブロックチェーンノードにローカルで一時保存されているデータ内容とを一致性チェックすることを含むことができ、検証を通過すると、コンセンサス要求を発出したブロックチェーンノードと現在のブロックチェーンノードとに同一のデータ内容が一時的に保存されており、かつ、当該データ内容はネットワーク伝送過程において改変されていないことを示している。
【0051】
S430:同一のコンセンサス段階において応答メッセージを発出したブロックチェーンノードのノード数をカウントする、ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる。
【0052】
ブロックチェーンノードがブロックチェーンネットワーク内でブロードキャスト送信された応答メッセージを受信すると、応答メッセージを解析することで各応答メッセージのメッセージソースを確定することができ、異なるメッセージソースを有する応答メッセージの統計を使用して、応答メッセージを発出したブロックチェーンノードのノード数をカウントすることができる。当該ノード数はブロックチェーンネットワークにおいてコンセンサス要求に応答して異なるタイプのコンセンサスアルゴリズムを実行したブロックチェーンノードの数を示している。
【0053】
本願の1つの実施例において、各ブロックチェーンノードは、いずれもその他のブロックチェーンノードから発出された応答メッセージを受信してカウントすることができる。例えば、ブロックチェーンネットワーク内にn個のブロックチェーンノードが含まれる場合、各ブロックチェーンノードは最も多い場合でその他のブロックチェーンノードが発出したn-1個の応答メッセージを受信することができる。それと同時に、各ブロックチェーンノード自身も対外的に応答メッセージを送信する。従って、1つのブロックチェーンノードによってカウントされる、応答メッセージを発出したブロックチェーンノードのノード数は、最大でブロックチェーンネットワークにおけるブロックチェーンノードの総数である。各ブロックチェーンノードによりそれぞれメッセージソースの統計を行うので、コンセンサス過程の信頼性を高めることができる。
【0054】
本願の1つの実施例において、ブロックチェーンネットワーク内の1つまたは複数のマスタノードにより応答メッセージに対してソースの統計を取ることができるが、その他のスレーブノードは数量統計を行う必要はない。例えば、1回のコンセンサス過程において、投票選挙、輪番指定またはランダム選出などの方式によりマスタノードが生成され、マスタノードはブロックチェーンネットワーク内にコンセンサス要求を送信した後、ブロックチェーンネットワークにおいてスレーブノードから返信された応答メッセージをモニタリングするとともに、応答メッセージを発出したスレーブノードのノード数をカウントすることができる。マスタノードを介してメッセージソースの統計を実行するメリットは、その他のスレーブノードの計算コストを削減することができ、余分なデータ費用の発生が回避される点にある。
【0055】
本願の1つの実施例において、コンセンサス効率を高めるため、予め設定された時間範囲内において応答メッセージを発出したブロックチェーンノードのノード数をカウントすることができる。時間範囲を超えて新たな応答メッセージを受信した場合は、それを破棄して統計に組み入れなくてもよい。
【0056】
本願の1つの実施例において、ノード数をカウントする時間範囲は、現在のブロックチェーンノードがコンセンサス要求を受信した第1時点を範囲の起点とする指定時間長を有する固定時間ウィンドウとすることができ、現在のブロックチェーンノードが応答メッセージを発出した第2時点を範囲の起点とする指定時間長を有する固定時間ウィンドウとすることもできる。
【0057】
本願の1つの実施例において、ノード数をカウントする時間範囲は、直近1回に応答メッセージを受信した第3時点及び予め設定された時間長に基づいて範囲終点が確定される、変化長さを有する動的時間ウィンドウとすることができる。例えば、1つのブロックチェーンノードが直近1回に応答メッセージを受信した時点をAとすると、時間長Bに基づき、時間範囲の範囲終点をA+Bと確定することができる。時点AからA+Bの間に、ブロックチェーンノードが新たな応答メッセージを受信していない場合は、応答メッセージのソース統計を停止することができる。時点AからA+Bの間に、ブロックチェーンノードが更に新たな応答メッセージを受信した場合、例えば、時点Cで新たな応答メッセージを受信すると、時間範囲の範囲終点をC+Bに更新することができ、以下同様に、ブロックチェーンノードが長時間にわたって新たな応答メッセージを受信しなくなったら、応答メッセージのソース統計を停止することができる。
【0058】
本願の1つの実施例において、応答メッセージのソース統計を実施する時間範囲は、静的起点及び動的終点を有する時間範囲とすることができ、例えば、コンセンサス要求を受信したか、応答メッセージを発出したかまたは初めて応答メッセージを受信したかのうちのいずれか1つの時点を静的起点とし、直近1回に新たな応答メッセージを受信したこと及び予め設定された時間長により動的終点を確定する。動的に変化する時間範囲を利用してメッセージソースの統計を行うと、統計効率が向上すると同時にデータ統計の正確性を確保することができ、時間範囲が過度に長いことに起因するコンセンサス進度への影響を回避することができ、同時に時間範囲が過度に短いことに起因するデータ統計が不完全であるという問題も回避される。
【0059】
S440:ノード数が第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、第2コンセンサスアルゴリズムを実行するブロックチェーンノードに第1コンセンサスアルゴリズムのコンセンサス結果を同期させる、第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムは異なるタイプのコンセンサスアルゴリズムである。
【0060】
コンセンサスアルゴリズムのコンセンサス条件は、コンセンサス結果の判断条件を取得できるか否かを確定するために用いられ、例えば、1つのコンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノードの総数に対して予め設定された割合を超えることとすることができる。ブロックチェーンネットワーク内に構成された異なるタイプのコンセンサスアルゴリズムは、同一のコンセンサス条件を有してもよく、異なるコンセンサス条件を有してもよい。
【0061】
本願の1つの実施例において、ブロックチェーンネットワーク内のブロックチェーンノードは自身が実行するコンセンサスアルゴリズムに基づいて、統計で得られたノード数がコンセンサス条件を満たしているか否かに対して判断することができる。例えば、現在のブロックチェーンノードが実行しているコンセンサスアルゴリズムが第1コンセンサスアルゴリズムである場合は、統計で得られたノード数に基づいて第1コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かを判断することができ、現在のブロックチェーンノードが実行しているコンセンサスアルゴリズムが第2コンセンサスアルゴリズムである場合は、統計で得られたノード数に基づいて第2コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かを判断することができる。
【0062】
本願の1つの実施例において、ブロックチェーンネットワーク内の一部のブロックチェーンノードが第1コンセンサスアルゴリズムを実行し、別の一部のブロックチェーンノードが第2コンセンサスアルゴリズムを実行している場合、第1コンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノード総数に占める統計的割合が第1割合閾値を超えていることであり、第2コンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノード総数に占める統計的割合が第2割合閾値を超えていることであり、第2割合閾値は第1割合閾値よりも大きい。ブロックチェーンノード総数に対する統計で得られたノード数の割合が第1割合閾値よりも大きいが、第2割合閾値よりも小さい場合、当該ノード数は第1コンセンサスアルゴリズムのコンセンサス条件を満たしているが、第2コンセンサスアルゴリズムのコンセンサス条件を満足していないと確定することができる。これを基礎として、第1コンセンサスアルゴリズムを実行したブロックチェーンノードはコンセンサス成功のコンセンサス結果を取得することができ、第2コンセンサスアルゴリズムを実行したブロックチェーンノードはまだコンセンサスに成功していないが、第1コンセンサスアルゴリズムを実行したブロックチェーンノードを介して第2コンセンサスアルゴリズムを実行したブロックチェーンノードにデータ同期を行うことができ、第2コンセンサスアルゴリズムを実行したブロックチェーンノードもコンセンサスを完了することができる。
【0063】
本願実施例が提供するブロックチェーンコンセンサス方法において、ブロックチェーンネットワーク内に少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードを構成することにより、ノードコンセンサスを実施する過程において、コンセンサス応答メッセージを発出したブロックチェーンノードのノード数をカウントすることができ、ノード数が任意の1種のコンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、コンセンサス条件を満たしているブロックチェーンノードからコンセンサス条件を満たしていないブロックチェーンノードにコンセンサス結果を同期させることができ、ブロックチェーンコンセンサスの柔軟性を高めることができる。
【0064】
本願の1つの実施例において、異なるタイプのコンセンサスアルゴリズムは異なる数のコンセンサス段階を有しており、応答メッセージにブロックチェーンノードのアルゴリズムタイプ及びノード署名を伝送しており、アルゴリズムタイプはブロックチェーンノードが実行するコンセンサスアルゴリズムを示すために用いられ、ノード署名にはブロックチェーンノードの各コンセンサス段階におけるデジタル署名が含まれる。
【0065】
図5には本願の1つの実施例における応答メッセージのデータ構造が示されている。図5に示されている通り、ある1種のコンセンサスアルゴリズムに基づき生成される応答メッセージにはタイプフィールド501、署名フィールド502及びデータフィールド503を含むことができる。
【0066】
タイプフィールド501は、応答メッセージを発出したブロックチェーンノードが実行するコンセンサスアルゴリズムのアルゴリズムタイプを示すために用いられ、例えば、CFT系コンセンサスアルゴリズムまたはBFT系コンセンサスアルゴリズムを含むことができる。
【0067】
CFT系コンセンサスアルゴリズム、つまり障害耐性アルゴリズム(Crash Fault Tolerance algorithm,CFT)とは、障害系エラーに直面した場合に、ノードデータの一致性を保証することができるコンセンサスアルゴリズムの1種を指している。障害系エラーにはノードダウン、ネットワークエラーなどの良性障害が含まれる。
【0068】
BFT系コンセンサスアルゴリズム、つまりビザンチン障害耐性アルゴリズム(Byzantine Fault Tolerance algorithm,BFT)とは、ビザンチン系エラーに直面した場合に、ノードデータの一致性を保証することができるコンセンサスアルゴリズムの1種を指している。ビザンチン系エラーには上記障害系エラー、及びソフトウェアエラー、悪意のあるノードなどの悪性障害が含まれる。
【0069】
署名フィールド502は、応答メッセージを発出したブロックチェーンノードの各コンセンサス段階におけるデジタル署名を保存するために用いられ、例えば、前準備段階の署名、準備段階の署名及びコミット段階の署名を含むことができる。
【0070】
CFT系コンセンサスアルゴリズムを実行するブロックチェーンノードが応答メッセージを生成する場合は、データ構造内の前準備段階署名及びコミット段階署名を使用することができ、BFT系コンセンサスアルゴリズムを実行するブロックチェーンノードが応答メッセージを生成する場合は、全3段階の署名を使用することができる。
【0071】
本願の1つの実施例において、1つの段階の応答メッセージはその前すべての段階のデジタル署名を伝送している。例えば、第1段階の応答メッセージには第1段階のデジタル署名が含まれており、第2段階の応答メッセージには第1段階及び第2段階のデジタル署名が同時に含まれており、第3段階の応答メッセージには第1、第2、第3段階のデジタル署名が同時に含まれている。
【0072】
データフィールド503は、コンセンサス認証を要求するデータを保存するために用いられ、例えば、ネットワーク取引の取引データであってもよい。
【0073】
本願実施例が提供する応答メッセージデータ構造は、同時に複数種の異なるタイプのコンセンサスアルゴリズムに適用することができ、異なる数のコンセンサス段階を有するコンセンサスアルゴリズムを同一の応答メッセージを介してコンセンサス認証させることができるため、ブロックチェーンネットワークの異なるコンセンサスアルゴリズムに対するマッチングの多様性が向上する。
【0074】
異なる数のコンセンサス段階を有するコンセンサスアルゴリズムに対して、ブロックチェーンネットワークにおける各ブロックチェーンノードには計算能力及びネットワーク伝送速度の面で一定の差異が存在しているため、コンセンサス認証を実施する過程において、各ブロックチェーンノードが所在するコンセンサス段階もおそらく異なることになる。従って、1つ前のブロックチェーンノードがその他のブロックチェーンノードが発出した応答メッセージを受信した場合は、応答メッセージに基づいて対応するコンセンサス段階を識別して、異なるコンセンサス段階に位置するブロックチェーンノードのノード数を効果的にカウントしなければならない。図6には本願の1つの実施例におけるコンセンサス段階に基づきノード数をカウントするブロックチェーンコンセンサス方法が示されている。図6に示されている通り、当該方法には以下のS610~S670が含まれている。
【0075】
S610:ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストする、ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれる。
【0076】
本願実施例においては、ブロックチェーンネットワーク上において同時に少なくとも2種の異なるタイプのコンセンサスアルゴリズムを運用することができ、例えば、ブロックチェーンネットワークにおける一部のブロックチェーンノードが第1コンセンサスアルゴリズムを実行し、別の一部のブロックチェーンノードが第1コンセンサスアルゴリズムとは異なる第2コンセンサスアルゴリズムを実行する。第1コンセンサスアルゴリズムと第2コンセンサスアルゴリズムとは同一のコンセンサス条件を有することができ、または異なるコンセンサス条件を有することもできる。
【0077】
本願の1つの実施例において、ブロックチェーンネットワークから1つまたは複数のブロックチェーンノードを選出してコンセンサス要求を処理するマスタノードとし、ブロックチェーンネットワークにおけるマスタノードを除くその他のブロックチェーンノードをスレーブノードとすることができる。クライアントがコンセンサス要求を生成すると、先ずコンセンサス要求をマスタノードに送信することができ、マスタノードは更にコンセンサス要求を各スレーブノードに配分し、マスタノードは投票選挙、輪番指定またはランダム選出などの方式により生成することができる。
【0078】
S620:各コンセンサス段階でブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得する、応答メッセージはブロックチェーンノードがコンセンサス要求に応答するメッセージである。
【0079】
ブロックチェーンネットワーク内のブロックチェーンノードがコンセンサス要求を受信すると、コンセンサス要求に応答して、応答メッセージを生成するとともに、ブロックチェーンネットワーク上で応答メッセージをブロードキャストすることができる。
【0080】
本願の1つの実施例において、ブロックチェーンノードは受信したコンセンサス要求に対してコンセンサス検証を実施するとともに、検証を通過した後にブロックチェーンネットワーク上に応答メッセージをブロードキャスト送信することができる。ブロックチェーンノードのコンセンサス要求に対するコンセンサス検証には、署名検証及びデータ検証の2つの面を含むことができる。署名検証はコンセンサス要求のソース信頼性を検証するために用いられ、データ検証はコンセンサス要求の内容の真実性を検証するために用いられる。
【0081】
本願の1つの実施例において、ブロックチェーンネットワークにおいてブロードキャストされたコンセンサス要求はコンセンサス要求を発出したブロックチェーンノードのデジタル署名を伝送しており、ブロックチェーンネットワークにおいてブロードキャストされた応答メッセージも同様に応答メッセージを発出したブロックチェーンノードのデジタル署名を伝送している。ブロックチェーンネットワーク内の各ブロックチェーンノードは非対称暗号鍵対を構成する公開鍵及び秘密鍵を所持することができ、コンセンサス要求または応答メッセージにデジタル署名する際には、先ずダイジェスト抽出アルゴリズムによりデータ内容から内容ダイジェストを抽出し、その後、更に秘密鍵を使用して内容ダイジェストを暗号化処理してデジタル署名を形成し、当該デジタル署名は公開鍵により検証することができる。
【0082】
本願の1つの実施例において、コンセンサス要求に対する署名検証が完了すると、コンセンサス要求に含まれるデータ内容に対してデータ検証を行うことができる。データ検証の方法には、例えば、コンセンサス要求に含まれるデータ内容と現在のブロックチェーンノードにローカルで一時保存されているデータ内容とを一致性チェックすることを含むことができ、検証を通過すると、コンセンサス要求を発出したブロックチェーンノードと現在のブロックチェーンノードとに同一のデータ内容が一時的に保存されており、かつ、当該データ内容はネットワーク伝送過程において改変されていないことを示している。
【0083】
S630:応答メッセージを解析して、応答メッセージに含まれるアルゴリズムタイプ及びノード署名を得る。
【0084】
応答メッセージ内にブロックチェーンノードのアルゴリズムタイプ及びノード署名を伝送しており、アルゴリズムタイプはブロックチェーンノードが実行するコンセンサスアルゴリズムを示すために用いられ、ノード署名にはブロックチェーンノードの各コンセンサス段階におけるデジタル署名が含まれる。
【0085】
応答メッセージを解析することにより、図6に示されているデータ構造を得ることができ、その中のタイプフィールドに基づいてアルゴリズムタイプを得ることができ、その中の署名フィールドに基づいて各コンセンサス段階に対応したノード署名を得ることができる。
【0086】
S640:アルゴリズムタイプに基づいて、メッセージ送信ノードが実行したコンセンサスアルゴリズムを識別する、メッセージ送信ノードは応答メッセージを発出したブロックチェーンノードである。
【0087】
ブロックチェーンネットワーク内の各ブロックチェーンノードについては、いずれもそれに対応したノード識別子を有しており、かつ、ブロックチェーンネットワーク内の各ブロックチェーンノードはいずれもブロックチェーンネットワーク内のその他のブロックチェーンノードのノード識別子を記憶して、後続過程においてその他のブロックチェーンノードのノード識別子に基づいて、生成されたコンセンサス要求、応答メッセージ、チェーン連結待ちブロックなどのデータをブロックチェーンネットワーク内のその他のブロックチェーンノードにブロードキャストすることができる。各ブロックチェーンノード内に1つのノード識別子リストを維持することができ、ノード名及びノード識別子が対応して当該ノード識別子リストに記憶される。ノード識別子はIP(Internet Protocol、ネットワーク間の相互接続プロトコル)アドレス及びその他任意の1種の当該ブロックチェーンノードの標識化に用いることが可能な情報とすることができる。
【0088】
1つのブロックチェーンノードがブロックチェーンネットワークに応答メッセージをブロードキャスト送信する場合は、応答メッセージに自身のノード識別子をパッケージすることができる。現在のブロックチェーンノードがブロックチェーンネットワーク上でブロードキャストされた応答メッセージを受信した場合は、応答メッセージ内の解析して得られたノード識別子に基づいて当該応答メッセージを発出したメッセージ送信ノードを確定することができる。応答メッセージ内の解析して得られたアルゴリズムタイプに基づいてメッセージ送信ノードが実行しているコンセンサスアルゴリズムを確定することができる。
【0089】
S650:ノード署名に基づいて、メッセージ送信ノードが位置するコンセンサス段階を識別する。
【0090】
応答メッセージを解析することにより、その署名フィールドを読み取って各コンセンサス段階に対応したノード署名を得ることができる。各ブロックチェーンノードにはコンセンサス進度におそらく差異が存在しているため、ブロックチェーンネットワーク上でブロードキャストされる応答メッセージもおそらく異なるコンセンサス段階に対応したノード署名を伝送している。例えば、ある1つのブロックチェーンノードが前準備段階にある場合は、それが発出する応答メッセージ内に前準備段階のノード署名を伝送しており、また例えば、ある1つのブロックチェーンノードがすでに前準備段階のコンセンサス認証を完了しており、現在準備段階にある場合は、それが発出する応答メッセージ内に前準備段階及び準備段階の両部分のノード署名を伝送している。
【0091】
本願の1つの実施例において、応答メッセージを解析することにより、その中に存在するノード署名の1つまたは複数のコンセンサス段階をスクリーニングすることができる。各コンセンサス段階の実行順序に基づいて、メッセージ送信ノードが現在位置するコンセンサス段階を確定することができる。
【0092】
署名フィールド内に1つのコンセンサス段階にのみノード署名が存在している場合は、メッセージ送信ノードは当該コンセンサス段階にあると確定することができる。例えば、1つの応答メッセージの署名フィールドの前準備段階にのみノード署名が存在し、その他のコンセンサス段階に対応する署名フィールドは空白である場合、当該応答メッセージを発出したメッセージ送信ノードは現在前準備段階にあると確定することができる。
【0093】
署名フィールド内に少なくとも2つのコンセンサス段階にノード署名が存在している場合、少なくとも2つのコンセンサス段階の実行順序に基づいて、実行順序が後のコンセンサス段階をメッセージ送信ノードが現在位置するコンセンサス段階であると確定することができる。例えば、1つの応答メッセージの署名フィールドの前準備段階及び準備段階のいずれにもノード署名が存在し、その他のコンセンサス段階に対応する署名フィールドは空白である場合、コンセンサスアルゴリズム内の準備段階は前準備段階の後に実行されるため、当該応答メッセージのメッセージ送信ノードは現在準備段階にあると確定することができる。
【0094】
S660:メッセージ送信ノードが実行したコンセンサスアルゴリズム及びメッセージ送信ノードが位置するコンセンサス段階に基づいて、現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントする。
【0095】
メッセージ送信ノードが実行したコンセンサスアルゴリズムに基づいて、メッセージ送信ノードが現在のブロックチェーンノードと同一タイプのコンセンサスアルゴリズムを実行しているか否かを確定することができる。メッセージ送信ノードが現在のブロックチェーンノードと同一タイプのコンセンサスアルゴリズムを実行している場合は、直接、メッセージ送信ノードが位置するコンセンサス段階に基づいて、メッセージ送信ノードが現在のブロックチェーンノードと同一のコンセンサス段階にあるか否かを確定することができる。メッセージ送信ノードが現在のブロックチェーンノードと異なるタイプのコンセンサスアルゴリズムを実行している場合は、予め設定されたマッチング関係に基づいてメッセージ送信ノードが位置するコンセンサス段階が現在のブロックチェーンノードと同一であるか否かを確定する必要がある。
【0096】
現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントする前に、現在のブロックチェーンノードは先ず異なるタイプのコンセンサスアルゴリズムとの間のコンセンサス段階のマッチング関係を取得することができる。メッセージ送信ノードが現在のブロックチェーンノードと異なるタイプのコンセンサスアルゴリズムを実行している場合、マッチング関係に基づいて現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードを確定する。
【0097】
任意の2種の異なるタイプのコンセンサスアルゴリズムについて、いずれもマッチング関係に基づいて各ブロックチェーンノードが同一のコンセンサス段階にあるか否かを確定することができる。例えば、メッセージ送信ノードが第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムのうちの一方を実行し、現在のブロックチェーンノードが第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムのうちの他方を実行し、第1コンセンサスアルゴリズムにはN個のコンセンサス段階が含まれ、第2コンセンサスアルゴリズムにはM個のコンセンサス段階が含まれるとすると、異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係には、第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムの前半P個のコンセンサス段階の相互マッチングであって、PはN-1及びM-1の小さい方の値である相互マッチングと、第1コンセンサスアルゴリズムの後半N-P個のコンセンサス段階と第2コンセンサスアルゴリズムの後半M-P個のコンセンサスアルゴリズムとの相互マッチングとが含まれる。
【0098】
例を挙げて述べると、第1コンセンサスアルゴリズムがCFT系コンセンサスアルゴリズムである場合は、2つのコンセンサス段階、つまり準備段階及びコミット段階を含み、第2コンセンサスアルゴリズムがBFT系コンセンサスアルゴリズムである場合は、3つのコンセンサス段階、つまり前準備段階、準備段階及びコミット段階を含む。
【0099】
以上のマッチング関係に基づくと、第1コンセンサスアルゴリズムの前半1つのコンセンサス段階と第2コンセンサスアルゴリズムの前半1つのコンセンサス段階とが相互にマッチングしており、つまり、CFT系コンセンサスアルゴリズムの準備段階とBFT系コンセンサスアルゴリズムの前準備段階とが相互にマッチングしている。第2コンセンサスアルゴリズムの後半1つのコンセンサス段階と第2コンセンサスアルゴリズムの後半2つのコンセンサス段階とが相互にマッチングしており、つまり、CFT系コンセンサスアルゴリズムのコミット段階とBFT系コンセンサスアルゴリズムの準備段階及びコミット段階とが相互にマッチングしている。
【0100】
これを基礎として、1つのブロックチェーンノードがCFT系コンセンサスアルゴリズムの準備段階にあり、かつ、別の1つのブロックチェーンノードがBFT系コンセンサスアルゴリズムの前準備段階にある場合、両者は同一のコンセンサス段階にあると確定することができ、同様に、1つのブロックチェーンノードがCFT系コンセンサスアルゴリズムのコミット段階にあり、かつ、別の1つのブロックチェーンノードがBFT系コンセンサスアルゴリズムの準備段階またはコミット段階にある場合、両者は同一のコンセンサス段階にあると確定することができる。
【0101】
本願の1つの実施例において、現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントした後、現在のブロックチェーンノードは自身が位置するコンセンサス段階に基づいて後続のアルゴリズム実行動作を確定することができる。現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最後のコンセンサス段階である場合は、ノード数が当該コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに基づいて、当該コンセンサスアルゴリズムのコンセンサス結果を確定し、現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最後のコンセンサス段階でない場合は、ノード数が当該コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに基づいて、当該コンセンサスアルゴリズムの次のコンセンサス段階を実行するか否かを確定する。
【0102】
例えば、現在のブロックチェーンノードが位置するコンセンサス段階がCFT系コンセンサスアルゴリズムの準備段階である場合、それと同一のコンセンサス段階(CFT系コンセンサスアルゴリズムの準備段階またはBFT系コンセンサスアルゴリズムの前準備段階を含む)にあるブロックチェーンノードのノード数をカウントすることにより、当該ノード数がCFT系コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かを判断することができる。CFT系コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、コミット段階に進むことができる。CFT系コンセンサスアルゴリズムのコンセンサス条件を満たしていない場合は、引き続きその他のブロックチェーンノードが発出する応答メッセージの受信を待つとともに、統計上のノード数をリアルタイムで更新する必要がある。
【0103】
本願の1つの実施例において、各ブロックチェーンノードはいずれもその他のブロックチェーンノードから発出された応答メッセージを受信してカウントすることができる。例えば、ブロックチェーンネットワークにn個のブロックチェーンノードが含まれる場合、各ブロックチェーンノードが最も多い場合にその他のブロックチェーンノードが発出したn-1個の応答メッセージを受信することができ、それと同時に、各ブロックチェーンノード自身も対外的に応答メッセージを送信する。従って、1つのブロックチェーンノードによってカウントされる、応答メッセージを発出したブロックチェーンノードのノード数は最大で、ブロックチェーンネットワークにおけるブロックチェーンノードの総数である。各ブロックチェーンノードがそれぞれメッセージソースの統計を行うので、コンセンサス過程の信頼性を高めることができる。
【0104】
本願の1つの実施例において、ブロックチェーンネットワーク内の1つまたは複数のマスタノードにより応答メッセージのソース統計を行うことができるが、その他のスレーブノードは数量統計を実行する必要はない。例えば、1回のコンセンサス過程において、投票選挙、輪番指定またはランダム選出などの方式でマスタノードが生成され、マスタノードがブロックチェーンネットワークにコンセンサス要求を送信すると、ブロックチェーンネットワークにおいてスレーブノードから返信された応答メッセージをモニタリングするとともに、応答メッセージを発出したスレーブノードのノード数をカウントすることができる。マスタノードを介してメッセージソースの統計を実行するメリットは、その他のスレーブノードの計算コストを削減することができ、余分なデータ費用の発生が回避される点にある。
【0105】
本願の1つの実施例において、コンセンサス効率を高めるため、予め設定された時間範囲内において応答メッセージを発出したブロックチェーンノードのノード数をカウントすることができる。時間範囲を超えて新たな応答メッセージを受信した場合は、それを破棄して統計に組み入れなくてもよい。
【0106】
本願の1つの実施例において、ノード数をカウントする時間範囲は、現在のブロックチェーンノードがコンセンサス要求を受信した第1時点を範囲の起点とする指定時間長を有する固定時間ウィンドウとすることができ、現在のブロックチェーンノードが応答メッセージを発出した第2時点を範囲の起点とする指定時間長を有する固定時間ウィンドウとすることもできる。
【0107】
本願の1つの実施例において、ノード数をカウントする時間範囲は、直近1回に応答メッセージを受信した第3時点及び予め設定された時間長に基づいて範囲終点が確定される変化長さを有する動的時間ウィンドウとすることができる。例えば、1つのブロックチェーンノードが直近1回に応答メッセージを受信した時点をAとすると、時間長Bに基づき、時間範囲の範囲終点をA+Bと確定することができる。時点AからA+Bの間に、ブロックチェーンノードが新たな応答メッセージを受信していない場合は、応答メッセージのソース統計を停止することができる。時点AからA+Bの間に、ブロックチェーンノードが更に新たな応答メッセージを受信した場合、例えば、時点Cで新たな応答メッセージを受信した場合は、時間範囲の範囲終点をC+Bに更新することができ、以下同様に、ブロックチェーンノードが長時間にわたって応答メッセージを受信しなくなると、応答メッセージのソース統計を停止することができる。
【0108】
本願の1つの実施例において、応答メッセージのソース統計を実施する時間範囲は、静的起点及び動的終点を有する時間範囲とすることができ、例えば、コンセンサス要求を受信したか、応答メッセージを発出したかまたは初めて応答メッセージを受信したかのうちのいずれか1つの時点を静的起点とし、直近1回に新たな応答メッセージを受信したこと及び予め設定された時間長により動的終点を確定する。動的に変化する時間範囲を利用してメッセージソースの統計を行うと、統計効率が向上すると同時にデータ統計の正確性を確保することができ、時間範囲が過度に長いことに起因するコンセンサス進度への影響を回避することができ、同時に時間範囲が過度に短いことに起因するデータ統計が不完全であるという問題も回避される。
【0109】
S670:ノード数が第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、第2コンセンサスアルゴリズムを実行するブロックチェーンノードに第1コンセンサスアルゴリズムのコンセンサス結果を同期させる、第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムは異なるタイプのコンセンサスアルゴリズムである。
【0110】
コンセンサスアルゴリズムのコンセンサス条件は、コンセンサス結果の判断条件を取得できるか否かを確定するために用いられ、例えば、1つのコンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノードの総数に対して予め設定された割合を超えることとすることができる。ブロックチェーンネットワーク内に構成された異なるタイプのコンセンサスアルゴリズムは、同一のコンセンサス条件を有してもよく、異なるコンセンサス条件を有してもよい。
【0111】
本願の1つの実施例において、ブロックチェーンネットワーク内のブロックチェーンノードは自身が実行するコンセンサスアルゴリズムに基づいて、統計で得られたノード数がコンセンサス条件を満たしているか否かを判断することができる。例えば、現在のブロックチェーンノードが実行しているコンセンサスアルゴリズムが第1コンセンサスアルゴリズムである場合は、統計で得られたノード数に基づいて第1コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かを判断することができ、現在のブロックチェーンノードが実行しているコンセンサスアルゴリズムが第2コンセンサスアルゴリズムである場合は、統計で得られたノード数に基づいて第2コンセンサスアルゴリズムのコンセンサス条件を満たしているか否かを判断することができる。
【0112】
本願の1つの実施例において、ブロックチェーンネットワーク内の一部のブロックチェーンノードが第1コンセンサスアルゴリズムを実行し、別の一部のブロックチェーンノードが第2コンセンサスアルゴリズムを実行している場合、第1コンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノード総数に占める統計的割合が第1割合閾値を超えていることであり、第2コンセンサスアルゴリズムのコンセンサス条件は、応答メッセージを発出したブロックチェーンノードのノード数がブロックチェーンノード総数に占める統計的割合が第2割合閾値を超えていることであり、第2割合閾値は第1割合閾値よりも大きい。ブロックチェーンノード総数に対する統計で得られたノード数の割合が第1割合閾値よりも大きいが、第2割合閾値よりも小さい場合は、当該ノード数は第1コンセンサスアルゴリズムのコンセンサス条件を満たしているが、第2コンセンサスアルゴリズムのコンセンサス条件を満たしていないと確定することができる。これを基礎として、第1コンセンサスアルゴリズムを実行したブロックチェーンノードはコンセンサス成功のコンセンサス結果を得ることができ、第2コンセンサスアルゴリズムを実行したブロックチェーンノードはまだコンセンサスに成功していないが、第1コンセンサスアルゴリズムを実行したブロックチェーンノードを介して第2コンセンサスアルゴリズムを実行したブロックチェーンノードにデータ同期を行うことができ、第2コンセンサスアルゴリズムを実行したブロックチェーンノードもコンセンサスを完了することができる。
【0113】
本願の1つの実施例において、第1コンセンサスアルゴリズムは低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの1種であり、第2コンセンサスアルゴリズムは低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの第1コンセンサスアルゴリズムとは異なる別の1種である。低耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出するブロックチェーンノード数の割合が第1割合閾値よりも大きいことであり、高耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出するブロックチェーンノード数の割合が第2割合閾値よりも大きいことであり、第1割合閾値は第2割合閾値よりも小さい。第1割合閾値及び第2割合閾値はいずれも0よりも大きくかつ1よりも小さい定数である。例えば、第1割合閾値は1/2、第2割合閾値2/3である。
【0114】
すべてのブロックチェーンノードに対する応答メッセージを発出するブロックチェーンノード数の割合が1/2よりも小さい場合、ノード数は低耐故障性コンセンサスアルゴリズムのコンセンサス条件を満たしていないばかりではなく、高耐故障性コンセンサスアルゴリズムのコンセンサス条件も満たしておらず、2種のコンセンサスアルゴリズムを実行するすべてのブロックチェーンノードはいずれもコンセンサス認証を完了することができない。
【0115】
すべてのブロックチェーンノードに対する応答メッセージを発出するブロックチェーンノード数の割合が1/2よりも大きくかつ2/3よりも小さい場合、ノード数は低耐故障性コンセンサスアルゴリズムのコンセンサス条件を満たしているが、高耐故障性コンセンサスアルゴリズムのコンセンサス条件は満たしておらず、低耐故障性コンセンサスアルゴリズムを実行するブロックチェーンノードはコンセンサス認証を完了することができるが、高耐故障性コンセンサスアルゴリズムを実行するブロックチェーンノードはコンセンサス認証を完了することができない。これを基礎として、低耐故障性コンセンサスアルゴリズムを実行するブロックチェーンノードは高耐故障性コンセンサスアルゴリズムを実行するブロックチェーンノードにコンセンサス結果を同期させることができ、ブロックチェーンネットワーク内のすべてのブロックチェーンノードがいずれもコンセンサス認証を完了することが可能となる。
【0116】
すべてのブロックチェーンノードに対する応答メッセージを発出するブロックチェーンノード数の割合が2/3よりも大きい場合、ノード数は低耐故障性コンセンサスアルゴリズムのコンセンサス条件を満たしているばかりでなく、高耐故障性コンセンサスアルゴリズムのコンセンサス条件も満たしており、2種のコンセンサスアルゴリズムを実行するすべてのブロックチェーンノードがいずれもコンセンサス認証を完了することができる。
【0117】
本願の1つの実施例において、低耐故障性コンセンサスアルゴリズムは第1数のコンセンサス段階を有し、高耐故障性コンセンサスアルゴリズムは第2数のコンセンサス段階を有しており、第1数は第2数よりも小さい。コンセンサス段階の数を増加することによりコンセンサスアルゴリズムの耐故障性を高めることができる。
【0118】
本願の1つの実施例において、低耐故障性コンセンサスアルゴリズムのコンセンサス段階は順次実行される準備段階及びコミット段階を含み、高耐故障性コンセンサスアルゴリズムのコンセンサス段階は順次実行される前準備段階、準備段階及びコミット段階を含み、低耐故障性コンセンサスアルゴリズムの準備段階と高耐故障性コンセンサスアルゴリズムの前準備段階とが相互にマッチングしており、低耐故障性コンセンサスアルゴリズムのコミット段階と高耐故障性コンセンサスアルゴリズムの準備段階及びコミット段階とが相互にマッチングしている。
【0119】
図7には本願の1つの実施例における低耐故障性コンセンサスアルゴリズムのコンセンサスフローが示されており、低耐故障性コンセンサスアルゴリズムは、例えば、CFT系コンセンサスアルゴリズムのうちのPaxosアルゴリズムである。本願実施例における低耐故障性コンセンサスアルゴリズムは2段階のノード間のインタラクションに基づいており、その利点はノード間のインタラクションが比較的簡単であるため、実現がより容易で、性能が比較的高いことである。
【0120】
図7に示されている通り、低耐故障性コンセンサスアルゴリズムに基づきコンセンサス認証を実施するフローには以下のステップを含むことができる。
【0121】
S701:クライアントがコンセンサス要求をマスタノードに送信する。コンセンサス要求は、例えば、ブロックチェーンにデータを書き込むデータ書き込み要求であってもよい。
【0122】
S702:マスタノードが第1段階のノードインタラクションを実行し(準備段階)、認証要求をその他のスレーブノードに配分し、スレーブノードは認証要求を受信してコンセンサス処理を実施すると、マスタノードに応答メッセージを返信することができる。
【0123】
準備段階において、マスタノードがその他のスレーブノードに送信する認証要求にはブロックチェーンに書き込みする必要があるデータ、及びマスタノードの秘密鍵を利用して当該データにダイジェスト処理及び暗号化処理を行った後に得られるマスタノードのデジタル署名が含まれている。図5に示されているデータ構造を例とすると、マスタノードがスレーブノードに送信する認証請求中に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名が含まれている。
【0124】
スレーブノードが、マスタノードが送信した認証要求を受信すると、マスタノードの公開鍵を利用して認証要求に含まれているデジタル署名に対して署名検証することができる。署名検証を通過した後、スレーブノードは自身の秘密鍵を利用してブロックチェーンに書き込む必要があるデータをダイジェスト処理及び暗号化処理した後にスレーブノードデジタル署名を得ることができる。図5に示されているデータ構造を例にすると、スレーブノードがマスタノードに返信した準備段階の応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及びスレーブノードデジタル署名が含まれている。
【0125】
S703:マスタノードがノード総数の1/2を超える応答メッセージを受信すると(マスタノード自身を含む)、マスタノードは第2段階(コミット段階)を実行し、マスタノードはデータをコミットするとともに、その他のスレーブノードにデータのコミットを通知する。スレーブノードはコミット通知を受信すると、自身が保存するブロックチェーンにデータを書き込むとともに、マスタノードに応答メッセージを返信することができる。
【0126】
マスタノードが、スレーブノードが返信した準備段階の応答メッセージを受信すると、各応答メッセージに含まれているスレーブノードのデジタル署名を収集並びに集約することができる。
【0127】
コミット段階に進んだ後、マスタノードは各スレーブノードに集約した後のデジタル署名を伝送したコミット通知を送信することができる。図5に示されているデータ構造を例にすると、マスタノードがスレーブノードに送信したコミット通知に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名が含まれている。フィールド「前準備段階署名」におけるマスタノードデジタル署名及びスレーブノードデジタル署名の数はノード総数の1/2を超えていなければならず、つまり低耐故障性コンセンサスアルゴリズムの準備段階におけるコンセンサス条件を満たしていなければならない。
【0128】
スレーブノードが、マスタノードが送信したコミット通知を受信すると、前段階と同一の方式を採用して署名検証するとともに、検証通過後に、応答メッセージ内に自身のスレーブノードデジタル署名を書き込むことができる。図5に示されているデータ構造を例にすると、スレーブノードがマスタノードに返信したコミット段階の応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名及び当該スレーブノード自身のスレーブノードデジタル署名が含まれている。
【0129】
S704:マスタノードがクライアントにデータ書き込み成功の応答を返信する。その際、クライアントはデータがすでに全ブロックチェーンシステムへの書き込みに成功したと確定することができる。
【0130】
マスタノードが、スレーブノードが返信したコミット段階の応答メッセージを受信すると、各応答メッセージに含まれているスレーブノードデジタル署名を収集並びに集約することができる。図5に示されているデータ構造を例にすると、マスタノードがクライアントに返信した応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれている。フィールド「前準備段階署名」内のマスタノードデジタル署名及びスレーブノードデジタル署名の数はノード総数の1/2を超えていなければならず、フィールド「コミット段階署名」内のマスタノードデジタル署名及びスレーブノードデジタル署名の数もノード総数の1/2を超えていなければならず、つまり低耐故障性コンセンサスアルゴリズムの準備段階及びコミット段階におけるコンセンサス条件を満たしていなければならない。
【0131】
図8には本願の1つの実施例における高耐故障性コンセンサスアルゴリズムのコンセンサスフローが示されており、高耐故障性コンセンサスアルゴリズムは、例えば、BFT系コンセンサスアルゴリズムのうちのPBFTアルゴリズムである。CFT系コンセンサスアルゴリズムに対して、BFT系コンセンサスアルゴリズムはソフトウェアエラーまたはノードに悪意がある場合にも依然としてシステムの一致性を保証しなければならないため、BFT系アルゴリズムのノードインタラクションはより複雑であり、一般には3つの段階のインタラクションが必要であり、耐故障性ノード数は更に少なく、一般には1/3のエラーノードが許容される。
【0132】
図8に示されている通り、高耐故障性コンセンサスアルゴリズムに基づきコンセンサス認証を実施するフローには以下のステップを含むことができる。
【0133】
S801:クライアントがコンセンサス要求をマスタノードに送信する。コンセンサス要求は、例えば、ブロックチェーンにデータを書き込むデータ書き込み要求とすることができる。
【0134】
S802:マスタノードが第1段階のノードインタラクションを実行し(前準備段階)、認証要求をその他のスレーブノードに配分する。スレーブノードが認証要求を受信するとともに、コンセンサス処理を実施すると、マスタノードに応答メッセージを返信することができる。この段階の目的は、複数のスレーブノードが受信した要求が同一のものであることを確認し、マスタノードの悪意で、異なるスレーブノードに異なるメッセージが送信されることを防止することである。
【0135】
前準備段階において、マスタノードがその他のスレーブノードに送信する認証要求にはブロックチェーンに書き込む必要があるデータ、及びマスタノードの秘密鍵を利用して当該データにダイジェスト処理及び暗号化処理を行った後に得られるマスタノードのデジタル署名が含まれている。図5に示されているデータ構造を例にすると、マスタノードがスレーブノードに送信する認証要求内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名が含まれている。
【0136】
スレーブノードが、マスタノードが送信した認証要求を受信すると、マスタノードの公開鍵を利用して認証要求に含まれているデジタル署名に対して署名検証することができる。署名検証を通過すると、スレーブノードは自身の秘密鍵を利用してブロックチェーンに書き込む必要があるデータをダイジェスト処理及び暗号化処理した後にスレーブノードデジタル署名を得ることができる。図5に示されているデータ構造を例にすると、スレーブノードがマスタノードに返信した前準備段階の応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及びスレーブノードデジタル署名が含まれている。
【0137】
S803:マスタノードがノード総数の2/3を超える前準備段階の応答メッセージを受信すると(マスタノード自身を含む)、マスタノードは第2段階(準備段階)を実行し、マスタノードはメッセージ署名を再度その他のスレーブノードに送信する。スレーブノードはメッセージ署名数がノード総数の2/3を超えているか否かを検証し、2/3を超えている場合、スレーブノードはマスタノードに投票成功の応答メッセージを返信する。
【0138】
マスタノードが、スレーブノードが返信した前準備段階の応答メッセージを受信すると、各応答メッセージに含まれているスレーブノードデジタル署名を収集並びに集約することができる。
【0139】
準備段階に進んだ後、マスタノードは各スレーブノードに、集約した後のデジタル署名を伝送した準備メッセージを送信することができる。図5に示されているデータ構造を例にすると、マスタノードがスレーブノードに送信した準備メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「準備段階署名」に書き込まれたマスタノードデジタル署名が含まれている。フィールド「前準備段階署名」内のマスタノードデジタル署名及びスレーブノードデジタル署名の数はノード総数の2/3を超えていなければならず、つまり高耐故障性コンセンサスアルゴリズムの前準備段階におけるコンセンサス条件を満たしていなければならない。
【0140】
スレーブノードが、マスタノードが送信した準備メッセージを受信すると、前段階と同一の方式を採用して署名検証するとともに、検証通過後に、応答メッセージ内に自身のスレーブノードデジタル署名を書き込むことができる。図5に示されているデータ構造を例にすると、スレーブノードがマスタノードに返信した準備段階の応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名及び当該スレーブノード自身のスレーブノードデジタル署名が含まれている。
【0141】
S804:マスタノードがノード総数の2/3を超える応答メッセージを受信すると(マスタノード自身を含む)、マスタノードは第3段階(コミット段階)を実行し、マスタノードはデータをコミットするとともに、その他のスレーブノードにデータのコミットを通知する。スレーブノードがコミット通知を受信すると、自身が保存するブロックチェーンにデータを書き込むとともに、マスタノードに応答メッセージを返信することができる。
【0142】
マスタノードが、スレーブノードが返信した準備段階の応答メッセージを受信すると、各応答メッセージに含まれているスレーブノードデジタル署名を収集並びに集約することができる。
【0143】
コミット段階に進んだ後、マスタノードは各スレーブノードに、集約した後のデジタル署名を伝送したコミット通知を送信することができる。図5に示されているデータ構造を例にすると、マスタノードがスレーブノードに送信したコミット通知に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名、及びフィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名が含まれている。フィールド「前準備段階署名」内のマスタノードデジタル署名及びスレーブノードデジタル署名の数はノード総数の2/3を超えていなければならず、フィールド「準備段階署名」内のマスタノードデジタル署名及びスレーブノードデジタル署名の数もノード総数の2/3を超えていなければならず、つまり高耐故障性コンセンサスアルゴリズムの前準備段階及び準備段階におけるコンセンサス条件を満たしていなければならない。
【0144】
スレーブノードが、マスタノードが送信した準備メッセージを受信すると、前段階と同一の方式を採用して署名検証するとともに、検証通過後に、応答メッセージに自身のスレーブノードデジタル署名を書き込むことができる。図5に示されているデータ構造を例にすると、スレーブノードがマスタノードに返信したコミット段階の応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名、及びフィールド「コミット段階署名」に書き込まれたマスタノード署名及び当該スレーブノード自身のスレーブノードデジタル署名が含まれている。
【0145】
S805:スレーブノードがクライアントにデータ書き込み成功の応答を返信する。その際、クライアントはデータがすでに全ブロックチェーンシステムへの書き込みに成功したと確定することができる。
【0146】
マスタノードが、スレーブノードが返信したコミット段階の応答メッセージを受信すると、各応答メッセージに含まれているスレーブノードデジタル署名を収集並びに集約することができる。図5に示されているデータ構造を例にすると、マスタノードがクライアントに返信した応答メッセージ内に、フィールド「前準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれており、同時に、更に、フィールド「準備段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名、フィールド「コミット段階署名」に書き込まれたマスタノードデジタル署名及び複数のスレーブノードデジタル署名が含まれている。フィールド「前準備段階署名」におけるマスタノードデジタル署名及びスレーブノードデジタル署名の数はノード総数の2/3を超えていなければならず、フィールド「準備段階署名」におけるマスタノードデジタル署名及びスレーブノードデジタル署名の数もノード総数の2/3を超えていなければならず、フィールド「コミット段階署名」におけるマスタノードデジタル署名及びスレーブノードデジタル署名の数もノード総数の2/3を超えていなければならず、つまり高耐故障性コンセンサスアルゴリズムの前準備段階、準備段階及びコミット段階におけるコンセンサス条件を満たしていなければならない。
【0147】
関連技術のブロックチェーンシステムにおいて、一連のシステムはシステム性能を追い求めて、CFT系のコンセンサス、例えば、Fabricを採用しており、別の一連のシステムはより広範な耐故障性を追い求めており、BFT系のコンセンサス、例えば、Tendermintを採用している。実際の企業レベルでの応用において、ブロックチェーンサービスを使用する上層業務システムはユーザ需要の絶え間ない変更に伴い、性能、可用性、耐故障性、拡張性などの面で異なる訴求を有している。そして現在のブロックチェーンシステムは採用しているのがいずれも単一のコンセンサスアルゴリズムであるため、上層業務システムの要求に適応することができない。本願実施例が提供するCFT及びBFTアルゴリズムの間をオンラインで柔軟に切り換える技術案は、ブロックチェーンシステムがサービスを停止することなく、コンセンサスアルゴリズムを変更して業務システムの要求を満たすことができる。
【0148】
本願の1つの実施例において、ブロックチェーンネットワークにおいてコンセンサス要求をブロードキャストする過程では、ブロックチェーンネットワーク内の一部またはすべてのブロックチェーンノードがアルゴリズムを切り換えて、一部またはすべてのブロックチェーンノードが実行するコンセンサスアルゴリズムを変更することができる。
【0149】
一部のブロックチェーンノードがアルゴリズムの切換えを完了しているが、別の一部のブロックチェーンノードはまだアルゴリズムの切換えを完了していない場合、ブロックチェーンネットワーク内には少なくとも2種の、異なるコンセンサスアルゴリズムを実行するブロックチェーンノードが存在している。これを基礎として、本願の上記実施例を利用してコンセンサス認証を実施することができる。
【0150】
本願の1つの実施例において、ブロックチェーンネットワーク内の一部またはすべてのブロックチェーンノードのアルゴリズムを切り換える方法は、
ブロックチェーンネットワークに対して信頼度予測を実施して、ブロックチェーンネットワークの運用環境が信頼環境であるか否かを確定することと、
ブロックチェーンネットワークの運用環境が信頼環境である場合は、ブロックチェーンネットワークにおいて低耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、高耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、
ブロックチェーンネットワークの運用環境が信頼環境ではない場合は、ブロックチェーンネットワークにおいて高耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、低耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、を含むことができる。
【0151】
本願の1つの実施例において、ブロックチェーンネットワークの信頼度を予測する方法は、
ブロックチェーンネットワーク内の各ブロックチェーンノードの運用時間長を取得することと、
運用時間長が時間長閾値よりも短い場合は、ブロックチェーンノードを非信頼ノードと確定することと、
ブロックチェーンネットワーク内の非信頼ノードの数が数閾値よりも大きい場合は、ブロックチェーンネットワークの運用環境を非信頼環境と確定することと、
ブロックチェーンネットワーク内の非信頼ノードの数が数閾値未満である場合は、ブロックチェーンネットワークの運用環境を信頼環境と確定することと、を含むことができる。
【0152】
例を挙げて述べると、サプライチェーンを管理するシーンにおいて、ブロックチェーンシステムは往々にしてサプライチェーンフローにおけるある一部の企業により提起されるが、その際、ブロックチェーンシステムは信頼できる環境にあると認識することができ、悪意のあるノードがある状況を考慮する必要はなく、簡単なCFTアルゴリズムをコンセンサスアルゴリズムとして使用することができるが、サプライチェーン内のその他の企業がブロックチェーンシステムに加わる場合は、その他の企業に悪意がある状況を防止しなければならないため、本願実施例のアルゴリズム切換えステップを実行して、サービスを停止することなく、コンセンサスアルゴリズムをBFT系アルゴリズムに切り換えることができ、ブロックチェーンシステムがすでに一定時間安定して運用され、各参加企業が信頼性のあるノードであると認識された後には、再度本願実施例のアルゴリズム切換えステップを実行して、コンセンサスアルゴリズムをCFT系アルゴリズムに切り換えることができ、ブロックチェーンシステムの性能が向上する。
【0153】
図9には本願実施例においてアルゴリズムの切換え過程を実施するシーンが例示されている。4つのノードのアルゴリズム切換えを例にしており、各ブロックチェーンノードはアルゴリズム切換えの異なる時刻下において異なるコンセンサスアルゴリズムを実行している。
【0154】
ブロックチェーンネット内に異なる分布割合の2種のコンセンサスアルゴリズムが存在している場合は、図8に示されている5種のシーンを形成することができる。CFTコンセンサスをBFTコンセンサスに切り換えると、ノードはすべていずれもCFTコンセンサスアルゴリズムからいずれもすべてBFT系コンセンサスアルゴリズムに徐々に切り換わり、シーン1が徐々にシーン5に切り換わる。BFTコンセンサスをCFTコンセンサスに切り換えると、ノードはすべていずれもBFTコンセンサスアルゴリズムからすべていずれもCFT系コンセンサスアルゴリズムに徐々に切り換わり、シーン5が徐々にシーン1に切り換わる。
【0155】
表2は5種のシーン下において異なるコンセンサスアルゴリズムを実行するブロックチェーンノードがノード総数に占める割合関係である。
【0156】
【表2】
【0157】
以下においては、5種の応用シーン下におけるコンセンサス案についてそれぞれ説明する。
【0158】
シーン1:
シーン1においては、すべてのノードのコンセンサスアルゴリズムがCFTであるため、このシーンはCFTアルゴリズムを単独で使用しているシーンに相当する。すべてのノードがいずれもローカルのCFTアルゴリズムステップに則るだけで、システムデータは一致に達することができる。
【0159】
シーン2:
シーン2においては、ノード1のコンセンサスアルゴリズムのみがBFTアルゴリズムであり、残り3つのノードはいずれもCFTアルゴリズムである。その際、CFTノードの総数(3)はノード総数(4)の1/2よりも大きいため、CFTアルゴリズムのコンセンサス条件に則り、3つのCFTノードの間でコンセンサスに達することができる。コンセンサスに達した後、ノード1がコンセンサス結果に同期して、システムデータの一致を保証することができる。
【0160】
シーン3:
シーン3においては、CFTノード数はCFTアルゴリズムが要求する1/2よりも大きいというコンセンサス条件を満たすことができず、同時にBFTノード数もBFTアルゴリズムが要求する2/3よりも大きいというコンセンサス条件を満たすことができない。その際は、正常なCFTアルゴリズムまたはBFTアルゴリズムに則り、システム内のすべてのノードはいずれもコンセンサスに達することはできない。
【0161】
当該シーンにおいて、本願実施例は図5に示されているようなデータ構造を有する応答メッセージを使用してノード間のデータインタラクションを実施することができる。
【0162】
図5を参照すると、当該データ構造には前準備段階署名、準備段階署名及びコミット段階署名の3つの署名フィールドが含まれている。CFTコンセンサスノードはその中の前準備段階署名及びコミット段階署名を使用し、BFTコンセンサスノードは3段階すべての署名を使用する。
【0163】
図10には本願実施例が1つの応用シーンにおいてコンセンサス認証を実施する方法ステップのフロー図が示されている。図10に示されている通り、上記シーン3において、コンセンサス認証を実行する方法には以下のステップを含むことができる。
【0164】
S1001:マスタノードが、クライアントが送信したコンセンサス要求を受信する。
【0165】
S1002:マスタノードがスレーブノードに<前準備>メッセージを送信する。
【0166】
S1003:スレーブノードがマスタノードに<前準備>メッセージを返信する。
【0167】
CFT系コンセンサスアルゴリズムの準備段階はBFT系コンセンサスアルゴリズムの前準備段階と相互にマッチングしているため、CFT系コンセンサスアルゴリズムを使用するノードは<前準備>メッセージを<準備>メッセージに充当して対処することができる。その際、CFT系コンセンサスを使用するスレーブノード及びBFT系コンセンサスを使用するスレーブノードはいずれもマスタノードに<前準備>メッセージを返信する。
【0168】
S1004:マスタノードが総ノード数の2/3を超える割合の<前準備>メッセージを受信したか否かを判断する。
【0169】
2/3を超えていない場合は、S1003に戻り、引き続きその他のスレーブノードが返信する<前準備>メッセージを受信する。2/3を超えている場合は、前準備段階のコンセンサス認証が完了しているため、準備段階に進んで、S1005を実行する。
【0170】
S1005:マスタノードがスレーブノードに<準備>メッセージを送信する。
【0171】
S1006:<準備>メッセージを受信したスレーブノードがCFT系コンセンサスアルゴリズムを実行するCFTノードであるか否かを判断する。判断結果が「はい」の場合は、S1007を実行する。判断結果が「いいえ」の場合は、当該スレーブノードはBFT系コンセンサスアルゴリズムを実行するBFTノードであることを示しているため、S10010にスキップする。
【0172】
S1007:スレーブノードがデータをコミットする。
【0173】
CFT系コンセンサスアルゴリズムを使用するスレーブノードがマスタノードから<準備>メッセージを受信した場合、マスタノードがすでに2/3よりも大きい<前準備>メッセージを受信していると説明することができる。これはCFTアルゴリズムが要求する1/2条件よりも大きいため、その際、CFT系コンセンサスアルゴリズムを実行するスレーブノードは<準備>メッセージを<コミット>メッセージに充当させ、直接データをコミットすることができ、その際、CFT系コンセンサスアルゴリズムを使用するノードはコンセンサスに達することができ、データは一致している。
【0174】
S1008:スレーブノードがマスタノードに<コミット>メッセージを返信する。
【0175】
CFT系コンセンサスアルゴリズムを実行するスレーブノードは、データコミットを完了した後、マスタノードに<コミット>メッセージを返信して、その他のBFT系ノードに<準備>+<コミット>総数が2/3に達するとのコミット条件を達成させる。その後、S1010を実行する。
【0176】
S1009:スレーブノードがマスタノードに<準備>メッセージを返信する。
【0177】
S1010:マスタノードが総ノード数の2/3を超える割合の<準備>メッセージを受信したか否かを判断する。
【0178】
2/3を超えていないと判断した場合は、引き続きS1011を実行する。2/3を超えていると判断した場合は、準備段階のコンセンサス認証が完了しているため、コミット段階に進むとともに、スキップしてS1012を実行する。
【0179】
S1011:マスタノードが総ノード数の2/3を超える割合の<準備>メッセージ及び<コミット>メッセージを受信したか否かを判断する。
【0180】
CFT系コンセンサスアルゴリズムのコミット段階はBFT系コンセンサスアルゴリズムの準備段階及びコミット段階と相互にマッチングしている。そのため、マスタノードがCFTノードの返信した<コミット>メッセージへの応答を受信した場合、マスタノードは<コミット>メッセージへの応答を<準備>メッセージへの応答に充当して対処することができる。それを基礎として、マスタノードがノード総数の2/3を超える割合の<準備>メッセージ及び<コミット>メッセージを受信したと判断した場合は、準備段階のコンセンサス認証は完了しているため、コミット段階に進むとともに、引き続きS1012を実行する。マスタノードがノード総数の2/3を超える割合の<準備>メッセージ及び<コミット>メッセージを受信していないと判断した場合は、S1005に戻り、マスタノードが引き続きその他のスレーブノードに<準備>メッセージを送信する。
【0181】
S1012:マスタノードがスレーブノードに<コミット>メッセージを送信する。
【0182】
S1013:各スレーブノードがデータをコミットするとともに、マスタノードに<コミット>メッセージを返信して、システムがコンセンサスに達する。
【0183】
BFT系コンセンサスを使用するノードは2/3よりも大きい<準備>メッセージへの応答条件に達することができる。その際、BFT系コンセンサスノードはBFT系アルゴリズムのステップに従ってコンセンサスに達することができ、かつ、データのCFT系ノードとの一致性を保証することができる。
【0184】
シーン4:
シーン4においては、ノード4がCFT系コンセンサスアルゴリズムを実行し、残り3つのノードがBFT系コンセンサスアルゴリズムを実行する。その際、BFTノードの総数(3)はノード総数(4)の2/3よりも大きいため、BFT系コンセンサスアルゴリズムに則り、3つのBFTノードの間でコンセンサスに達することができる。コンセンサスに達した後、ノード4がコンセンサス結果に同期して、システムデータの一致を保証することができる。
【0185】
シーン5:
シーン5においては、すべてのノードがいずれもBFT系コンセンサスアルゴリズムを実行しているため、BFT系コンセンサスアルゴリズムのステップに則って、システムは一致性コンセンサスに達することができる。
【0186】
以上各応用シーンの説明に基づくと、本願実施例が提供するオンラインコンセンサスアルゴリズム切換え案は、サービスを停止しない情況で行うコンセンサスアルゴリズムの切換えをサポートしており、ブロックチェーンシステムは上層業務の必要により柔軟に適応することができ、ブロックチェーンシステムをより広範に異なるシーン中に応用することができることが判明した。
【0187】
ここで注意すべきは、添付図面においては特定の順序で本願方法における各ステップを描写しているが、それは当該特定の順序でそれらのステップを実行しなければならないこと、または、提示されているすべてのステップを実行してはじめて所望の結果が実現されることを要求または暗示しているわけではない点である。付加的または選択肢として、ある種のステップを省略して、複数のステップを1つのステップに併合して実行するか、及び/または1つのステップを複数のステップに分解して実行することなども可能である。
【0188】
以下においては、本願の上記実施例におけるブロックチェーンコンセンサス方法を実行するために用いることができる本願の装置実施例について紹介する。図11には本願実施例が提供するブロックチェーンコンセンサス装置の構造ブロック図が模式的に示されている。図11に示されている通り、ブロックチェーンコンセンサス装置1100には、
ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストするように構成された要求モジュール1110であって、前記ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれる、要求モジュール1110と、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得するように構成された応答モジュール1120であって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージであり、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる、応答モジュール1120と、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントするように構成された統計モジュール1130であって、前記ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる、統計モジュール1130と、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させるように構成された同期モジュール1140と、が含まれる。
【0189】
本願の1つの実施例においては、以上の各実施例に基づき、異なるタイプのコンセンサスアルゴリズムは異なる数のコンセンサス段階を有しており、前記応答メッセージ内にブロックチェーンノードのアルゴリズムタイプ及びノード署名が含まれており、前記アルゴリズムタイプは前記ブロックチェーンノードが実行するコンセンサスアルゴリズムを示すために用いられ、前記ノード署名には前記ブロックチェーンノードの各コンセンサス段階におけるデジタル署名が含まれている。
【0190】
本願の1つの実施例においては、以上の各実施例に基づき、統計モジュール1030は、更に、
前記応答メッセージを解析して、前記応答メッセージに含まれているアルゴリズムタイプ及びノード署名を得るように構成された解析モジュールと、
前記アルゴリズムタイプに基づいてメッセージ送信ノードが実行したコンセンサスアルゴリズムを識別するように構成されたアルゴリズム識別モジュールであって、前記メッセージ送信ノードは前記応答メッセージを発出したブロックチェーンノードである、アルゴリズム識別モジュールと、
前記ノード署名に基づいて前記メッセージ送信ノードが位置するコンセンサス段階を識別するように構成された段階識別モジュールと、
前記メッセージ送信ノードが実行したコンセンサスアルゴリズム及び前記メッセージ送信ノードが位置するコンセンサス段階に基づいて、現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントするように構成された数量統計モジュールと、を含むことができる。
【0191】
本願の1つの実施例において、以上の各実施例に基づき、統計モジュール1030は、更に、
異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係を取得するように構成された関係取得モジュールと、
前記メッセージ送信ノードが現在のブロックチェーンノードとは異なるタイプのコンセンサスアルゴリズムを実行している場合は、前記マッチング関係に基づいて現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードを確定するように構成されたノード確定モジュールと、を含むことができる。
【0192】
本願の1つの実施例において、以上の各実施例に基づき、前記第1コンセンサスアルゴリズムはN個のコンセンサス段階を含み、前記第2コンセンサスアルゴリズムはM個のコンセンサス段階を含み、異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係には、
前記第1コンセンサスアルゴリズム及び前記第2コンセンサスアルゴリズムの前半P個のコンセンサス段階を相互にマッチングさせることであって、PはN-1及びM-1のうちの小さい方の数値であることと、
前記第1コンセンサスアルゴリズムの後半N-P個のコンセンサス段階と前記第2コンセンサスアルゴリズムの後半M-P個のコンセンサス段階とを相互にマッチングさせることと、が含まれる。
【0193】
本願の1つの実施例においては、以上の各実施例に基づき、現在のブロックチェーンノードが同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントした後、統計モジュール1030は、更に、
前記現在のブロックチェーンノードが位置するコンセンサス段階が、コンセンサスアルゴリズムを実行する最後のコンセンサス段階である場合は、前記ノード数がコンセンサスアルゴリズムを実行するコンセンサス条件を満たしているか否かに基づいて、コンセンサスアルゴリズムのコンセンサス結果を確定するように構成されたコンセンサス結果確定モジュールと、
前記現在のブロックチェーンノードが位置するコンセンサス段階が、コンセンサスアルゴリズムを実行する最後のコンセンサス段階ではない場合は、前記ノード数がコンセンサスアルゴリズムを実行するコンセンサス条件を満たしているか否かに基づいて、コンセンサスアルゴリズムの次のコンセンサス段階を実行するか否かを確定するように構成されたコンセンサス段階実行モジュールと、を含むことができる。
【0194】
本願の1つの実施例において、以上の各実施例に基づき、前記第1コンセンサスアルゴリズムは低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの1種であり、前記第2コンセンサスアルゴリズムは前記低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの前記第1コンセンサスアルゴリズムと異なる別種である。
【0195】
前記低耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第1割合閾値よりも大きいことであり、前記高耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第2割合閾値よりも大きいことであり、前記第1割合閾値は前記第2割合閾値よりも小さい。
【0196】
本願の1つの実施例において、以上の各実施例に基づき、前記低耐故障性コンセンサスアルゴリズムは、第1数のコンセンサス段階を有し、前記高耐故障性コンセンサスアルゴリズムは、第2数のコンセンサス段階を有し、前記第1数は前記第2数よりも小さい。
【0197】
本願の1つの実施例において、以上の各実施例に基づき、前記低耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される準備段階及びコミット段階を含み、前記高耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される前準備段階、準備段階及びコミット段階を含み、前記低耐故障性コンセンサスアルゴリズムの準備段階は、前記高耐故障性コンセンサスアルゴリズムの前準備段階と相互にマッチングしており、前記低耐故障性コンセンサスアルゴリズムのコミット段階は、前記高耐故障性コンセンサスアルゴリズムの準備段階及びコミット段階と相互にマッチングしている。
【0198】
本願の1つの実施例において、以上の各実施例に基づき、ブロックチェーンコンセンサス装置1000は、更に、
前記ブロックチェーンネットワーク内の一部またはすべてのブロックチェーンノードがアルゴリズムを切り換えて、前記一部またはすべてのブロックチェーンノードが実行するコンセンサスアルゴリズムを変更するように構成されたアルゴリズム切換えモジュールも含むことができる。
【0199】
本願の1つの実施例において、以上の各実施例に基づき、アルゴリズム切換えモジュールは、更に、
前記ブロックチェーンネットワークに対して信頼度予測を実施して、前記ブロックチェーンネットワークの運用環境が信頼環境であるか否かを確定するように構成された信頼度検出モジュールと、
前記ブロックチェーンネットワークの運用環境が信頼環境である場合、前記ブロックチェーンネットワークにおいて低耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、高耐故障性コンセンサスアルゴリズムを実行するように切り換えるよう構成された第1アルゴリズム切換えモジュールと、
前記ブロックチェーンネットワークの運用環境が信頼環境ではない場合、前記ブロックチェーンネットワークにおいて高耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、低耐故障性コンセンサスアルゴリズムを実行するように切り換えるよう構成された第2アルゴリズム切換えモジュールと、を含むことができる。
【0200】
本願の1つの実施例において、以上の各実施例に基づき、前記ブロックチェーンネットワークに対して信頼度予測を実施する信頼度検出モジュールは、更に、
前記ブロックチェーンネットワーク内の各ブロックチェーンノードの運用時間長を取得するように構成された時間長取得モジュールと、
前記運用時間長が時間長閾値よりも短い場合、前記ブロックチェーンノードを非信頼ノードと確定するように構成された非信頼ノード確定モジュールと、
前記ブロックチェーンネットワーク内の非信頼ノードの数が数閾値よりも大きい場合、前記ブロックチェーンネットワークの運用環境を非信頼環境と確定するように構成された非信頼環境確定モジュールと、
前記ブロックチェーンネットワーク内の非信頼ノードの数が数閾値未満である場合、前記ブロックチェーンネットワークの運用環境を信頼環境と確定するように構成された信頼環境確定モジュールと、を含むことができる。
【0201】
本願が各実施例で提供するブロックチェーンコンセンサス装置の具体的な細目はすでに対応する方法の実施例内で詳細に描写しているため、ここで改めては詳述しない。
【0202】
図12には本願実施例を実現するための電子機器におけるコンピュータシステムの構造ブロック図が模式的に示されている。
【0203】
なお、図12に示されている電子機器のコンピュータシステム1200は1つの例示に過ぎず、本願実施例の機能及び使用範囲に何らかの制限をもたらすものではない。
【0204】
図12に示されている通り、コンピュータシステム1200は、中央処理装置1201(Central Processing Unit、CPU)を含み、それはリードオンリーメモリ1202(Read-Only Memory、ROM)内に記憶されているプログラムまたは記憶部分1208からランダムアクセスメモリ1203(Random Access Memory、RAM)内にロードされたプログラムに基づいて各種の適当な動作及び処理を実行する。ランダムアクセスメモリ1203には、更に、システムの操作に必要な各種のプログラム及びデータが記憶されている。中央処理装置1201、リードオンリーメモリ1202及びランダムアクセスメモリ1203はバス1204を介して相互に接続される。入力/出力ポート1205(Input /Outputポート、つまりI/Oポート)もバス1204に接続されている。
【0205】
以下の部材、つまりキーボード、マウスなどを含む入力部分1206、例えば、陰極線管(Cathode Ray Tube,CRT)、液晶ディスプレイ(Liquid Crystal Display、LCD)など及びスピーカなどの出力部分1207、ハードディスクなどを含む記憶部分1208、及びローカルエリアネットワークカード、モデムなどを含むネットワークインターフェイスカードの通信部分1209が、入力/出力ポート1205に接続される。通信部分1209はインターネットなどのネットワークを介して通信処理を実行する。ドライバ1210も必要に応じて入力/出力ポート1205に接続される。着脱可能媒体1211、例えば、磁気ディスク、光ディスク、磁気光ディスク、半導体メモリなどは、必要に応じてドライバ1210に実装され、その上から読みだされるコンピュータプログラムが必要に応じて記憶部分1208に実装される。
【0206】
特に、本願の実施例に基づき、各方法のフロー図に描写されている過程はコンピュータソフトウェアプログラムとして実現される。例えば、本願の実施例はコンピュータプログラム製品を含み、それはコンピュータ読取り可能な媒体に載置されたコンピュータプログラムを含んでおり、当該コンピュータプログラムはフロー図に示されている方法を実行するためのプログラムコードを含んでいる。このような実施例において、当該コンピュータプログラムは、通信部分1209を介してネットワークからダウンロードされて実装され、及び/または着脱可能媒体1211から実装される。当該コンピュータプログラムが中央処理装置1201により実行されると、本願のシステムで限定されている各種機能が実行される。
【0207】
なお、本願実施例に示されているコンピュータ読取り可能な媒体は、コンピュータ読取り可能な信号媒体またはコンピュータ読取り可能な記憶媒体、もしくは上記両者の任意の組合せとすることができる。コンピュータ読取り可能な記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、または半導体のシステム、装置またはデバイス、もしくは任意の以上の組合せとすることができるが、それらに限定されない。コンピュータ読取り可能な記憶媒体のより具体的な例には、1つまたは複数の導線を有する電気接続、コンパクト型コンピュータ磁気ディスク、ハードウェアディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(Erasable Programmable Read Only Memory、EPROM)、フラッシュメモリ、光ファイバ、コンパクト型ディスクリードオンリーメモリ(Compact Disc Read-Only Memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、または上記任意の好適な組合せを含むことができるが、それらに限定されない。本願において、コンピュータ読取り可能な記憶媒体は、何らかのプログラムを含むまたは記憶する有形媒体とすることができ、当該プログラムは指令実行システム、装置またはデバイスにより使用されるか、それと結合して使用される。本願において、コンピュータ読取り可能な信号媒体は、ベース帯域または搬送波の一部として伝播されるデータ信号を含むことができ、その中にコンピュータが読取り可能なプログラムコードが載置されている。この種の伝播されるデータ信号には複数種の形式を採用することができ、電磁信号、光信号または上記任意の好適な組合せが含まれるが、それらに限定されない。コンピュータ読取り可能な信号媒体は、更に、コンピュータ読取り可能な記憶媒体以外の任意のコンピュータ読取り可能な媒体とすることができ、当該コンピュータ読取り可能な媒体は、指令実行システム、装置、またはデバイスにより使用されるかまたはそれに結合して使用するためのプログラムを送信、伝播または伝送することができる。コンピュータ読取り可能な媒体に含まれるプログラムコードは、任意の好適な媒体を用いて伝送することができ、無線、有線など、または上記任意の好適な組合せが含まれるが、それらに限定されない。
【0208】
添付図面のフロー図及びブロック図は、本願の各種実施例に応じたシステム、方法及びコンピュータプログラム製品の実現可能な体系構造、機能及び操作を図示している。この点において、フロー図またはブロック図内の各ブロック図は1つのモジュール、プログラムセクション、またはコードの一部を表すことができ、上記モジュール、プログラムセクション、またはコードの一部には1つまたは複数の規定された論理機能を実現するための実行可能な指令が含まれている。また、ここで注意すべきは、いくつかの代替的な実現において、ブロック内に表記されている機能は添付図面内の表記とは異なる順序でも発生可能な点である。例えば、2つの接続するように表示されているブロックは実際には基本的に並行して実施することができ、それらは時には逆の順序で実行することもでき、それは言及されている機能に応じて決定される。また、ここで注意すべきは、ブロック図またはフロー図内の各ブロック、及びブロック図またはフロー図におけるブロックの組合せは、規定された機能または操作を実行する専用のハードウェアベースのシステムにより実現することができるか、または専用のハードウェアとコンピュータ指令との組合せにより実現することができる点である。
【0209】
ここで注意すべきは、上記文章の詳細な描写内で動作を実行する機器に用いられる若干のモジュールまたはユニットについて言及されているが、この種の区分は強制的ではない点である。実際には、本願の実施形態に基づいて、上記文章で描写されている2つまたはより多くのモジュールまたはユニットの特徴及び機能は1つのモジュールまたはユニット内で具体化することができる。逆に、上記文章で描写されている1つのモジュールまたはユニットの特徴及び機能を更に複数のモジュールまたはユニットで具体化するように区分することもできる。
【0210】
以上の実施形態についての描写について、当業者であれば理解可能な通り、ここで描写されている例示的な実施形態はソフトウェアにより実現することができ、ソフトウェアを介して必要なハードウェアを結合する方式によっても実現することができる。従って、本願実施形態に基づく技術案はソフトウェア製品の形式で体現することができ、当該ソフトウェア製品は、1つの不揮発性記憶媒体(CD―ROM、USB、ポータブルハードディスクなどであってもよい)内またはネットワーク上に記憶することができ、1台のコンピューティング機器(パソコン、サーバ、タッチ制御端末、またはネットワーク機器などであってもよい)に本願実施形態に基づいて方法を実行させる若干の指令が含まれている。
【0211】
当業者であれば、明細書を考慮し、ここで公開されている発明を実践した後、本願のその他の実施案を想到することは容易である。本願は、本願の任意の変形、用途または好適な変化をカバーしており、それらの変形、用途または好適な変化は本願の一般的な原理を遵守しているとともに、本願で公開されていない本分野における公知の常識または慣用的な技術的手段を含んでいることをその旨としている。
【0212】
ここで理解すべきは、本願は上記ですでに描写されているとともに、添付図面内に示されている正確な構造に限定されず、かつ、その範囲を脱離することなく各種の修正及び変更を施すことができる点であり、本願の範囲は添付されている特許請求の範囲により限定されるものとする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
【手続補正書】
【提出日】2024-05-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおける現在のブロックチェーンノードにより実行されるブロックチェーンコンセンサス方法であって、
前記ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストすることであって、前記ブロックチェーンネットワークには少なくとも2種の異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる、ことと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得することであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージである、ことと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントすることであって、前記ノード数には少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる、ことと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させることと、を含む、ブロックチェーンコンセンサス方法。
【請求項2】
異なるタイプのコンセンサスアルゴリズムは異なる数のコンセンサス段階を有し、前記応答メッセージは、ブロックチェーンノードのアルゴリズムタイプ及びノード署名を伝送し、前記アルゴリズムタイプは前記ブロックチェーンノードが実行するコンセンサスアルゴリズムを示すために用いられ、前記ノード署名には前記ブロックチェーンノードの各コンセンサス段階におけるデジタル署名が含まれる、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項3】
前記同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントすることは、
前記応答メッセージを解析して、前記応答メッセージに含まれているアルゴリズムタイプ及びノード署名を得ることと、
前記アルゴリズムタイプに応じて、メッセージ送信ノードが実行したコンセンサスアルゴリズムを識別することであって、前記メッセージ送信ノードは前記応答メッセージを発出したブロックチェーンノードである、ことと、
前記ノード署名に応じて、前記メッセージ送信ノードが位置するコンセンサス段階を識別することと、
前記メッセージ送信ノードが実行したコンセンサスアルゴリズム及び前記メッセージ送信ノードが位置するコンセンサス段階に応じて、前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントすることと、を含む、請求項2に記載のブロックチェーンコンセンサス方法。
【請求項4】
前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントする前に、更に、
前記異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係を取得することと、
前記メッセージ送信ノードと現在のブロックチェーンノードとが異なるタイプのコンセンサスアルゴリズムを実行している場合は、前記マッチング関係に応じて、前記現在のブロックチェーンノードと同一コンセンサス段階にあるメッセージ送信ノードを確定することと、を含む、請求項3に記載のブロックチェーンコンセンサス方法。
【請求項5】
前記第1コンセンサスアルゴリズムはN個のコンセンサス段階を含み、前記第2コンセンサスアルゴリズムはM個のコンセンサス段階を含み、前記異なるタイプのコンセンサスアルゴリズムの間のコンセンサス段階のマッチング関係は、
前記第1コンセンサスアルゴリズム及び前記第2コンセンサスアルゴリズムの前半P個のコンセンサス段階を相互にマッチングさせることであって、PはN-1及びM-1のうちの小さい方の数値である、ことと、
前記第1コンセンサスアルゴリズムの後半N-P個のコンセンサス段階と前記第2コンセンサスアルゴリズムの後半M-P個のコンセンサス段階とを相互にマッチングさせることと、を含む、請求項4に記載のブロックチェーンコンセンサス方法。
【請求項6】
前記現在のブロックチェーンノードと同一のコンセンサス段階にあるメッセージ送信ノードのノード数をカウントした後、更に、
前記現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最終1つのコンセンサス段階である場合は、前記ノード数が実行するコンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに応じて、コンセンサスアルゴリズムのコンセンサス結果を確定することと、
前記現在のブロックチェーンノードが位置するコンセンサス段階がコンセンサスアルゴリズムを実行する最終1つのコンセンサス段階ではない場合は、前記ノード数が、実行するコンセンサスアルゴリズムのコンセンサス条件を満たしているか否かに応じて、コンセンサスアルゴリズムを実行する次のコンセンサス段階であるか否かを確定することと、を含む、請求項3に記載のブロックチェーンコンセンサス方法。
【請求項7】
前記第1コンセンサスアルゴリズムは低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの1種であり、前記第2コンセンサスアルゴリズムは前記低耐故障性コンセンサスアルゴリズム及び高耐故障性コンセンサスアルゴリズムのうちの前記第1コンセンサスアルゴリズムと異なる別種であり、
前記低耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第1割合閾値よりも大きいことであり、前記高耐故障性コンセンサスアルゴリズムのコンセンサス条件は、すべてのブロックチェーンノードに対する応答メッセージを発出したブロックチェーンノード数の割合が第2割合閾値よりも大きいことであり、前記第1割合閾値は前記第2割合閾値よりも小さい、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項8】
前記低耐故障性コンセンサスアルゴリズムは、第1数のコンセンサス段階を有し、前記高耐故障性コンセンサスアルゴリズムは、第2数のコンセンサス段階を有し、前記第1数は前記第2数よりも小さい、請求項7に記載のブロックチェーンコンセンサス方法。
【請求項9】
前記低耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される準備段階及びコミット段階を含み、前記高耐故障性コンセンサスアルゴリズムのコンセンサス段階は、順次実行される前準備段階、準備段階及びコミット段階を含み、前記低耐故障性コンセンサスアルゴリズムの準備段階は、前記高耐故障性コンセンサスアルゴリズムの前準備段階と相互にマッチングしており、前記低耐故障性コンセンサスアルゴリズムのコミット段階は、前記高耐故障性コンセンサスアルゴリズムの準備段階及びコミット段階と相互にマッチングしている、請求項8に記載のブロックチェーンコンセンサス方法。
【請求項10】
前記ブロックチェーンネットワークにおいてコンセンサス要求をブロードキャストする過程で、前記方法は、更に、
前記ブロックチェーンネットワークにおける一部またはすべてのブロックチェーンノードのアルゴリズムを切り換えて、前記一部またはすべてのブロックチェーンノードが実行するコンセンサスアルゴリズムを変更することを含む、請求項1に記載のブロックチェーンコンセンサス方法。
【請求項11】
前記ブロックチェーンネットワークにおける一部またはすべてのブロックチェーンノードのアルゴリズムを前記切り換えることは、
前記ブロックチェーンネットワークに対して信頼度予測を実施して、前記ブロックチェーンネットワークの運用環境が信頼環境であるか否かを確定することと、
前記ブロックチェーンネットワークの運用環境が信頼環境である場合は、前記ブロックチェーンネットワークにおいて低耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、高耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、
前記ブロックチェーンネットワークの運用環境が信頼環境ではない場合は、前記ブロックチェーンネットワークにおいて高耐故障性コンセンサスアルゴリズムを実行する一部またはすべてのブロックチェーンノードを、低耐故障性コンセンサスアルゴリズムを実行するように切り換えることと、を含む、請求項10に記載のブロックチェーンコンセンサス方法。
【請求項12】
前記ブロックチェーンネットワークに対して信頼度予測を前記実施することは、
前記ブロックチェーンネットワークにおける各ブロックチェーンノードの運用時間長を取得することと、
前記運用時間長が時間長閾値よりも短い場合は、前記ブロックチェーンノードを非信頼ノードと確定することと、
前記ブロックチェーンネットワークにおける非信頼ノードの数が数閾値よりも大きい場合は、前記ブロックチェーンネットワークの運用環境を非信頼環境と確定することと、
前記ブロックチェーンネットワークにおける非信頼ノードの数が数閾値未満である場合は、前記ブロックチェーンネットワークの運用環境を信頼環境と確定することと、を含む、請求項11に記載のブロックチェーンコンセンサス方法。
【請求項13】
ブロックチェーンネットワークにおいて少なくとも2つのコンセンサス段階に対応したコンセンサス要求をブロードキャストするように構成された要求モジュールであって、前記ブロックチェーンネットワークには少なくとも2種の、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードが含まれ、前記異なるタイプのコンセンサスアルゴリズムには第1コンセンサスアルゴリズム及び第2コンセンサスアルゴリズムが含まれる、要求モジュールと、
各前記コンセンサス段階で前記ブロックチェーンネットワークによってブロードキャストされた応答メッセージをそれぞれ取得するように構成された応答モジュールであって、前記応答メッセージは前記ブロックチェーンノードが前記コンセンサス要求に応答するメッセージである、応答モジュールと、
同一のコンセンサス段階において前記応答メッセージを発出したブロックチェーンノードのノード数をカウントするように構成された統計モジュールであって、前記ノード数には少なくとも2つの、異なるタイプのコンセンサスアルゴリズムを実行するブロックチェーンノードの数が含まれる、統計モジュールと、
前記ノード数が前記第1コンセンサスアルゴリズムのコンセンサス条件を満たしている場合は、前記第1コンセンサスアルゴリズムを実行するブロックチェーンノード上でコンセンサスを達成し、前記第2コンセンサスアルゴリズムを実行するブロックチェーンノードに前記第1コンセンサスアルゴリズムのコンセンサス結果を同期させるように構成された同期モジュールと、を含むブロックチェーンコンセンサス装置。
【請求項14】
プロセッサと、
前記プロセッサの実行可能指令を記憶するためのメモリと、を含む電子機器であって、
前記プロセッサは、前記実行可能指令を実行することにより、前記電子機器に請求項1~12のいずれか1項に記載のブロックチェーンコンセンサス方法を実行させるように構成された、電子機器。
【請求項15】
コンピュータプログラムであって、コンピュータに、請求項1~12のいずれか1項に記載のブロックチェーンコンセンサス方法を実行させる、コンピュータプログラム。
【国際調査報告】