(57)【要約】【解決手段】本出願の実施例は、ブロックチェーンのデータ処理方法、装置、機器及び媒体を開示する。ブロックチェーンのデータ処理方法はブロックチェーンノードに適用され、当該方法は、同期グループ作成トランザクション要求を取得するステップと、前記同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを前記同期グループの同期ブロックとして決定するステップと、前記同期ブロックに基づいて、前記同期グループの同期署名を決定するステップと、前記同期署名をトランザクションデータとしてブロックに記録するステップと、を含む。【選択図】図１
2021506185.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンノードに適用されるブロックチェーンのデータ処理方法であって、
前記方法は、
同期グループ作成トランザクション要求を取得するステップと、
前記同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを前記同期グループの同期ブロックとして決定するステップと、
前記同期ブロックに基づいて、前記同期グループの同期署名を決定するステップと、
前記同期署名をトランザクションデータとしてブロックに記録するステップと、を含む、
ことを特徴とするブロックチェーンのデータ処理方法。
【請求項２】
同期グループ作成トランザクション要求を取得する操作は、
現在の状態がローカル配置データにおける同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する操作と、
現在の状態が履歴ブロックに記憶されている同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する操作と、
任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する操作と、
同期グループの使用需要が発生した場合、同期グループ作成トランザクション要求を開始する操作と、のうちの少なくとも一つを含む、
ことを特徴とする請求項１に記載のブロックチェーンのデータ処理方法。
【請求項３】
前記同期グループ作成ルールは、
現在の時間が予め設定された時間値を満たすことと、
現在のブロックの高さが予め設定されたブロック高さの間隔を満たすことと、のうちの少なくとも一つを含む、
ことを特徴とする請求項２に記載のブロックチェーンのデータ処理方法。
【請求項４】
前記同期署名をトランザクションデータとしてブロックに記録した後に、
同期グループのインデックスデータをローカルの同期グループインデックステーブルに保存するステップをさらに含む、
ことを特徴とする請求項１に記載のブロックチェーンのデータ処理方法。
【請求項５】
前記方法は、
ローカルの同期グループインデックステーブルで同期グループのインデックスデータを照会するステップ、又は、
同期グループ照会トランザクション要求を開始し、現在のブロック生成ノードが後ろから前へブロックチェーンをトラバーサルして同期グループを照会するように要求するステップ、をさらに含む、
ことを特徴とする請求項４に記載のブロックチェーンのデータ処理方法。
【請求項６】
前記同期ブロックに基づいて、前記同期グループの同期署名を決定するステップは、
各同期ブロックのブロック識別子を順次接続して、署名計算を行って、現在作成された同期グループの同期署名を形成するステップと、
各同期ブロックのブロック識別子でマークルツリーを構築し、マークルツリーのルートを同期署名とするステップと、
各同期ブロックのブロックヘッダデータを署名してサブ署名を形成し、各サブ署名を使用してマークルツリーを構築し、マークルツリーのルートを同期署名とするステップと、
現在作成された同期グループの同期ブロックと、少なくとも一つの既存の同期グループの同期署名とに基づいて、署名計算を行って、現在作成された同期グループの同期署名を形成するステップと、のうちの少なくとも一つを含む、
ことを特徴とする請求項１に記載のブロックチェーンのデータ処理方法。
【請求項７】
前記同期ブロックに基づいて、前記同期グループの同期署名を決定するステップは、
前記同期ブロックと関連情報とに基づいて、前記同期グループの同期署名を決定するステップを含み、
前記関連情報は、作成者情報と作成時間情報と、のうちの少なくとも一つを含む、
ことを特徴とする請求項６に記載のブロックチェーンのデータ処理方法。
【請求項８】
前記同期署名をトランザクションデータとしてブロックに記録するステップは、
現在のブロック生成ノードによって、前記同期署名をトランザクションデータとして現在のブロックに記録するステップと、
前記現在のブロックを他のノードに送信して検証するステップと、を含む、
ことを特徴とする請求項１に記載のブロックチェーンのデータ処理方法。
【請求項９】
ブロックチェーンノードに配置されるブロックチェーンのデータ処理装置であって、前記装置は、
同期グループ作成トランザクション要求を取得するように構成されるトランザクション要求取得モジュールと、
前記同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを前記同期グループの同期ブロックとして決定するように構成される同期ブロック決定モジュールと、
前記同期ブロックに基づいて、前記同期グループの同期署名を決定するように構成される同期署名決定モジュールと、
前記同期署名をトランザクションデータとしてブロックに記録するように構成される記録モジュールと、を含む、
ことを特徴とするブロックチェーンのデータ処理装置。
【請求項１０】
機器であって、
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するように構成される記憶装置と、を含み、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合に、前記一つ又は複数のプロセッサが、請求項１〜８のいずれかに記載のブロックチェーンのデータ処理方法を実現する、
ことを特徴とする機器。
【請求項１１】
コンピュータプログラムが記憶されている媒体であって、
当該プログラムがプロセッサによって実行される場合に、請求項１〜８のいずれかに記載のブロックチェーンのデータ処理方法が実現される、
ことを特徴とする媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ブロックチェーン技術に関し、例えば、ブロックチェーンのデータ処理方法、装置、機器及び媒体に関する。
【背景技術】
【０００２】
ブロックチェーンは、分散データストレージ、ポイントツーポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムなどのコンピュータ技術の新しいアプリケーションモデルである。
【０００３】
既存のブロックチェーン技術では、あるノードが他のノードからブロックチェーンデータを同期的に取得する必要がある場合、受信されたデータを多重検証して、ブロックの有効性、正当性、及びデータの正しさなどを決定する必要があるため、検証プロセスは、大量のプロセッサの処理リソースを占有し、時間がかかる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
以下は、本明細書で詳細に説明される主題の概要である。本概要は、請求項の保護範囲を制限するためのものではない。
【０００５】
本出願の実施例は、ブロックデータの検証方式を最適化するためにブロックチェーンのデータ処理方法、装置、機器及び媒体を提供する。
【課題を解決するための手段】
【０００６】
本出願の実施例は、ブロックチェーンノードに適用されるブロックチェーンのデータ処理方法を提供し、同期グループ作成トランザクション要求を取得するステップと、前記同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを前記同期グループの同期ブロックとして決定するステップと、前記同期ブロックに基づいて、前記同期グループの同期署名を決定するステップと、前記同期署名をトランザクションデータとしてブロックに記録するステップと、を含む。
【０００７】
本出願の実施例は、ブロックチェーンノードに配置されるブロックチェーンのデータ処理装置をさらに提供し、同期グループ作成トランザクション要求を取得するように構成されるトランザクション要求取得モジュールと、前記同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを前記同期グループの同期ブロックとして決定するように構成される同期ブロック決定モジュールと、前記同期ブロックに基づいて、前記同期グループの同期署名を決定するように構成される同期署名決定モジュールと、前記同期署名をトランザクションデータとしてブロックに記録するように構成される記録モジュールと、を含む。
【０００８】
本出願の実施例は、機器をさらに提供し、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するように構成される記憶装置と、を含み、前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合に、前記一つ又は複数のプロセッサが、第１の態様のいずれかに記載のブロックチェーンのデータ処理方法を実現する。
【０００９】
本出願の実施例は、コンピュータプログラムが記憶されている媒体をさらに提供し、当該プログラムがプロセッサによって実行される場合に、第１の態様のいずれかに記載のブロックチェーンのデータ処理方法が実現される。
【００１０】
図面と詳細の説明を読んで理解した後に、他の態様を理解することができる。
【図面の簡単な説明】
【００１１】
本出願の実施例における技術案を更に明確に説明するため、以下に、実施例に用いられる図面を簡単に説明する。以下の説明に関わる図面は、本出願の幾つかの実施例に過ぎなく、当業者にとって、創造性な労働をしないことを前提として、これらの図面に基づいて他の図面を取得できることは、明らかである。
【図１】本出願の実施例１により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図２】本出願の実施例２により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図３】本出願の実施例３により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図４】本出願の実施例４により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図５】本出願の実施例５により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図６】本出願の実施例６により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図７】本出願の実施例７により提供されるブロックチェーンのデータ処理方法のフローチャートである。
【図８】本出願の実施例８により提供されるブロックチェーンのデータ検証方法のフローチャートである。
【図９】本出願の実施例９により提供されるブロックチェーンのデータ処理装置の概略構成図である。
【図１０】本出願の実施例１０により提供される機器の概略構成図である。
【発明を実施するための形態】
【００１２】
以下、図面と実施例とを組み合わせて、本出願についてさらに詳しく説明する。なお、ここで説明される具体的な実施例は、単に本出願を解釈するためのものであり、本出願を限定するものではない。また、説明の便宜上、図面には、すべての構成ではなく、本出願に係る部分だけが示されている。
【００１３】
実施例１
図１は、本出願の実施例１により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、ブロックチェーンネットワーク内のデータ処理の場合に適用することができ、例えば、ブロックチェーンネットワークにおいて、あるノードが、他のノードからブロックチェーンデータを同期的に取得するシーンに適用することができる。適用されるブロックチェーンは、パブリックブロックチェーン、プライベートブロックチェーン、又はコンソーシアムブロックチェーンであってもよい。本出願の実施例の技術案は、ブロックチェーンノードに適用され、当該方法は、ブロックチェーンのデータ処理装置によって実行されることができ、当該装置は、ソフトウェア及び／又はハードウェアの方式を採用して実現することができ、ブロックチェーンノードが搭載されるコンピューティング機器に集積されることができる。図１を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ１１０：同期グループ作成トランザクション要求を取得する。
【００１４】
同期グループは、一つ又は複数のブロックで構成され、同期グループ作成トランザクション要求は、同期グループを作成するためのトランザクション要求を指す。選択可能には、同期グループ作成トランザクション要求には、同期グループに必要なブロックのブロック識別子、同期グループに必要な設置された同期ポイント位置、同期グループの署名方式、又は同期グループの識別子などの情報が含まれることができる。本実施例では、同期グループ作成トランザクション要求が、同期グループを作成するための作成命令であってもよく、ノードが現在のブロック位置に同期ポイントを設置して同期グループを作成するように指示するためのものである。
【００１５】
同期ポイントは、一般に同期グループの終了位置を指すことができ、同期グループの開始位置は、例えば、各同期グループがいずれも前の同期ポイントから開始するか、又はいずれも０番目のブロックから開始するかをデフォルトで設置することができる。ローカルノードは、ブロックチェーンネットワーク内の他のノードによって開始された同期グループ作成トランザクション要求を受信してもよいし、ローカルで同期グループ作成トランザクション要求を開始してもよい。
【００１６】
なお、ローカルノードは、現在のブロック生成ノードであってもよいし、他のブロックチェーンノードであってもよく、ローカルノードが現在のブロックによって生成されるか否かによって、同期グループ作成トランザクション要求を取得する方式が異なる。具体的には、ローカルノードが現在のブロック生成ノードである場合、以下のような方式によって同期グループ作成トランザクション要求を取得することができる。１）ブロックチェーンネットワーク内の任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する。２）ローカルノードは、ブロックチェーンの現在の状態がローカル配置データ又は履歴ブロックに記憶されている同期グループ作成ルールを満たしていることが検出された場合、ローカルで同期グループ作成トランザクション要求を開始する。３）ローカルノードは、同期グループがブロックデータ同期を行う必要がある場合、ローカルで同期グループ作成トランザクション要求を開始する。
【００１７】
これに応じて、ローカルノードが他のブロックチェーンノードである場合、以下のような方式によって同期グループ作成トランザクション要求を取得することができる。１）ブロックチェーンネットワーク内の任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する。２）現在のブロック生成ノードによって開始された同期グループ作成トランザクション要求を受信する。３）ローカルノードは、同期グループがブロックデータ同期を行う必要がある場合、ローカルで同期グループ作成トランザクション要求を開始する。
【００１８】
ブロックデータのセキュリティと信頼性を確保するために、例示的には、同期グループ作成トランザクション要求を取得した後に、制御権限用の公開鍵を使用して同期グループ作成トランザクション要求の作成者の身元を検証するステップを含むこともできる。
【００１９】
なお、同期グループの作成を開始する権限をさらに制御するために、権限が設定されたノードによって同期グループの作成を開始するように制御することができ、例えば、中心ノードによって開始することができる。ブロックチェーン内の中心ノードは、制御権限を持ち、制御権限用の秘密鍵を使用して同期グループ作成トランザクション要求の一部の内容を暗号化して、身元を示すため、ローカルノードは、同期グループ作成トランザクション要求を取得した後に、制御権限用の公開鍵を使用して同期グループ作成トランザクション要求中の少なくとも作成者の身元識別子を含む一部の内容を復号化することができる。その後、復号化された作成者の身元識別子を設定された検証ノードに送信して検証するか、又は復号化された作成者の身元識別子を予め記憶された身元識別子とマッチングして検証することができる。その中、ブロックチェーン内の各ノードは、各ノード身元識別子を記憶するテーブルをローカルでメンテナンスすることができる。身元識別子は、ノード識別子又はネットワークＩＰアドレスなどであってもよい。
【００２０】
Ｓ１２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００２１】
その中、同期ブロックは、同期グループを構成するブロックである。最初のブロックは、ブロックチェーンにおける０番目のブロック、すなわち基礎ブロックであってもよい。現在のブロックは、ブロックチェーンネットワークで現在に生成されているブロック、すなわちブロックチェーンネットワークで最新に生成されたブロックを指す。同期グループの同期ブロック数は、最初のブロックと現在のブロックが同一のブロックであるように、一つであってもよいし、複数であってもよい。
【００２２】
なお、現在のブロックは、ブロックチェーンネットワークの実行とともに、絶えず更新されるため、異なる同期グループ間の同期ブロックが重なる。例えば、現在のブロックが１０番目のブロックである場合、ブロックチェーンにおける０番目のブロックから１０番目のブロックは一つの同期グループであり、現在のブロックが２０番目のブロックである時に同期グループの作成を開始した場合、０番目のブロックから２０番目のブロックは、一つの同期グループである。本実施例では、同期ポイントは、現在のブロック位置にデフォルトで設置され、且つ同期グループの最後のブロックとし、最初のブロックデフォルトは０番目のブロックである。
【００２３】
具体的には、ローカルノードは、同期グループ作成トランザクション要求に含まれる同期ポイント位置に基づいて、現在のブロックが同期グループの最後のブロックであることを決定し、ブロックチェーンの０から現在のブロックまでの連続ブロックを同期グループの同期ブロックとすることができる。ローカルノードは、同期グループ作成トランザクション要求に含まれるブロック識別子に基づいて、現在のブロックに特定し、ブロックチェーンの０から現在のブロックまでの連続ブロックを同期グループの同期ブロックとすることもできる。同期グループ作成トランザクション要求が作成命令である場合、ローカルノードが同期グループ作成トランザクション要求を取得した後に、現在のブロック位置に一つの同期ポイントを直接に設置し、且つ０から同期ポイント位置までの連続ブロックを同期グループの同期ブロックとして決定することができる。
【００２４】
Ｓ１３０：同期ブロックに基づいて、同期グループの同期署名を決定する。
【００２５】
その中、同期署名は、ある同期グループを一意に識別又は決定するための識別子を指し、同期グループ内に含まれる同期ブロックの情報などを代表するものである。選択可能には、同期グループの同期署名方式は、同期グループ作成トランザクション要求に指定された署名方式であってもよいし、ブロックチェーンネットワークに規定された署名方式であってもよいし、ローカルノードが自身の公開鍵、秘密鍵、又はＳＨＡ２５６などの署名アルゴリズムを使用して決定された署名方式などであってもよい。
【００２６】
具体的には、異なる署名方式によってブロックデータの検証度合いが决定され、後続の実施例は、異なる署名方式によって同期グループの同期署名を決定する実現方式を詳細に説明する。例えば、同期グループ内の各同期ブロックのブロック識別子に基づいて、ハッシュ署名を行って当該同期グループの同期署名を取得することができる。
【００２７】
なお、本実施例が、同期ブロックに基づいて、同期グループの同期署名を決定することは、同期ブロック、同期グループ、及び同期署名の三者間の関連関係を間接的に示しており、後続の同期グループ照会に便利になる。
【００２８】
Ｓ１４０：同期署名をトランザクションデータとしてブロックに記録する。
【００２９】
ローカルノードが同期グループの同期署名を改ざんする確率を低下するために、同期ブロックに基づいて、同期グループの同期署名を決定した後に、同期署名をトランザクションデータとしてブロックに記憶することができる。
【００３０】
選択可能には、同期署名をトランザクションデータとしてブロックに記録するステップは、現在のブロック生成ノードによって、同期署名をトランザクションデータとして現在のブロックに記録するステップと、現在のブロックを他のノードに送信して検証するステップと、を含むことができる。
【００３１】
具体的には、ローカルノードが現在のブロック生成ノードである場合、ローカルノードは、同期ブロックに基づいて、同期グループの同期署名を決定した後に、直接に当該同期グループの同期署名をトランザクションデータとして、現在のブロックに記録する。そして、現在のブロックをブロックチェーン内の他のノードに送信して検証し、他のノードがローカルノードによって送信された現在のブロックを受信した後に、同期グループ作成トランザクション要求を処理し、ローカルノードと同じ方式を採用して当該同期グループの同期署名を計算し、同期署名が現在のブロックにおける同期署名と一致する場合、現在のブロックが有効であることを確認し、現在のブロックをブロックチェーンに記憶する。同期署名が現在のブロックにおける同期署名と一致していない場合、ブロックチェーン内の他のノードに現在のブロック識別子を含むブロック無効情報を送信する。
【００３２】
同期署名をトランザクションデータとしてブロックに記録した後に、ブロックチェーンのいずれかのノードがブロックチェーンを同期しようとする場合、同期署名を検証し、同期署名の検証に合格した後に、同期グループを単位として同期を行い、データ同期レートを加速することができる。
【００３３】
なお、本実施例は、０番目のブロックから現在のブロックまで同期グループを構築するため、毎回最新に構築される同期グループの同期ブロックは、以前に既に構築されたすべて同期グループの同期ブロックをカバーするため、ブロックに最新の同期グループの同期署名を記憶する場合、ブロックチェーンに以前に記憶された同期グループの同期署名が、デフォルトで無効になる。同期ブロックチェーンをダウンロードする必要がある場合、ブロックチェーンでの後ろから前へのトラバーサルによって、最新の同期グループに対応する同期署名を迅速に見つけることができ、すべてのブロックを認識することなく、同期グループの同期署名を取得するのにかかる時間を減らすことができる。また、本実施例では、最初のブロックから構築された同期グループは、ブロックチェーンネットワークに新しく追加したノード同期ブロックチェーンをダウンロードするのにより適しており、一回だけ同期グループの同期署名を検証すればよく、同期グループ内の各ブロックをすべて検証する必要がなく、検証フローを簡略化した。同期にダウンロードする必要があるのがブロックチェーン内の０からある位置までのブロックセグメントである場合、当該ブロックセグメントが属する最も近い一つの同期署名を見つけて使用することができる。
【００３４】
本出願の実施例により提供される技術案によれば、同期グループ作成トランザクション要求を取得した後に、同期グループ作成トランザクション要求に基づいて最初のブロックから現在のブロックまでの同期グループを構築し、ブロックチェーンネットワークに新しく追加したノード同期ブロックチェーンをダウンロードするのにより適する。そして、同期グループを構成する同期ブロックに基づいて、同期グループの同期署名を決定し、その後、同期署名をトランザクションデータとしてブロックに記憶するため、同期署名によって改ざんされた確率を低下する。ブロックチェーンのいずれかのノードがブロックデータを取得しようとする場合、同期グループを単位として検証することができ、ブロックチェーン内のノードがブロックチェーンデータを検証するために新しいアイデアを提供し、ブロックデータの検証方式を最適化することができる。ブロックデータを同期するためのシーンに使用された場合、複数の同期ブロックを一度に検証し、データ同期を加速させることができる。
【００３５】
実施例２
図２は、本出願の実施例２により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、同期グループ作成トランザクション要求を取得する方式を提供し、本実施例は、ブロックチェーンノードの配置データに基づいて同期グループを作成する。図２を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ２１０：現在の状態がローカル配置データにおける同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する。
【００３６】
その中、現在の状態は、ブロックチェーンネットワークが現在にある状態を指し、現在の時間及び現在のブロック高さなどのうちの少なくとも一つを含むことができる。現在の時間は、ローカルノードの現在のローカル時間を指し、ブロック高さは、ブロックチェーンの現在のブロックのシーケンス番号であり、現在のブロック高さは、ブロックチェーンネットワークの現在のブロック数などを指し、ローカル配置データは、ローカルノードがブロックチェーンネットワークに追加される際に、ローカルに配置されたブロックチェーンネットワークの実行ルールを指し、ローカル配置データは、同期グループ作成ルール、発行メカニズム、賞罰メカニズムなどを含むことができる。なお、ローカル配置データは、ローカルノードのローカルに記憶されることができ、基礎ブロック、すなわちブロックチェーンの０番目のブロックに記憶されることもできる。また、配置データは、スマートコントラクトの形式でブロックチェーンネットワークに提出し、あるブロックに記憶され、配置データにおける同期グループ作成ルールを定期的に実行することができる。
【００３７】
同期グループ作成ルールは、同期グループを作成するために満たす必要な条件を指す。選択可能には、同期グループ作成ルールは、
１）現在の時間が予め設定された時間値を満たすことと、２）現在のブロック高さが予め設定されたブロック高さの間隔などを満たすことと、の少なくとも一つを含むことができる。その中、予め設定された時間値は、１０分毎に同期グループを作成するか、又は各正時点毎に同期グループを作成するなどのように、予め設定された同期グループを作成する固定時点又は時間周期を指す。予め設定されたブロック高さの間隔は、予め設定された同期グループを作成するブロック高さ周期を指し、例えば１００個ブロック毎に一つの新しい同期グループを作成する。
【００３８】
具体的には、ローカルノードが、現在の時間がローカル配置データにおける同期グループによって作成された予め設定された時間値を満たしていることを認識した場合、同期グループ作成トランザクション要求を開始する。例えば、予め設定された時間値は１０分毎であり、ローカルノードが現在の時間から前の同期グループ作成時間を減算した差分値が１０分に等しいことを認識した場合、同期グループ作成トランザクション要求を開始する。ローカルノードが、現在のブロック高さがローカル配置データにおける同期グループによって作成された予め設定されたブロック高さの間隔を満たしていることを認識した場合、同期グループ作成トランザクション要求を開始することができる。例えば、予め設定されたブロック高さの間隔は、前の同期グループの最後のブロックが現在のブロックと１００個ブロックを離れており、ローカルノードが、現在のブロック高さが予め設定されたブロック高さの間隔を満たすことを認識した場合、同期グループ作成トランザクション要求を開始する。現在の時間及び現在のブロック高さが、ローカル配置データにおける同期に作成された予め設定された時間及び予め設定されたブロック高さの間隔をそれぞれ満たしている場合、同期グループ作成トランザクション要求を開始することができる。
【００３９】
なお、本実施例におけるローカルノードは、現在のブロック生成ノード又は同期グループ作成を監督するための専用のノードである。
【００４０】
Ｓ２２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００４１】
Ｓ２３０：同期ブロックに基づいて、同期グループの同期署名を決定する。
【００４２】
Ｓ２４０：同期署名をトランザクションデータとしてブロックに記録する。
【００４３】
本出願の実施例により提供される技術案によれば、ブロックチェーンノードがブロックチェーンネットワークに追加する時に、ローカル配置データに同期グループ作成ルールを追加することによって、同期グループ作成の順序性及びブロックチェーンネットワーク実行の妥当性を確保し、ブロックチェーンの現在の状態が同期グループ作成ルールを満たしていることが認識された場合、同期グループの作成要求を自動的に開始し、同期グループ作成トランザクション要求を取得するために新しいアイデアを提供することができる。
【００４４】
実施例３
図３は、本出願の実施例３により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、同期グループ作成トランザクション要求を取得する方式をさらに提供し、本実施例の技術案は、スマートコントラクトの方式によって同期グループ作成ルールを決定することに適用される。図３を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ３１０：現在の状態が履歴ブロックに記憶されている同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する。
【００４５】
本実施例では、同期グループ作成ルールは、スマートコントラクト、又は他の当該ブロックチェーンネットワークが承認する形式で、トランザクションデータとしてブロックに書き込まれることができる。選択可能には、同期グループ作成ルールには、現在の時間が予め設定された時間値を満たすことと、現在のブロック高さが予め設定されたブロック高さの間隔などを満たすことと、のうちの少なくとも一つを含むことができる。
【００４６】
具体的には、ローカルノードは、履歴ブロックをトラバーサルして同期グループ作成ルールを取得してもよい。又は、履歴ブロックが同期グループ作成ルールを記憶する場合、トリガ通知メカニズムを合わせて設置し、現在のブロック生成ノードが同期グループ作成ルールを照会して取得するように通知してもよい。ローカルノードがブロックチェーンの現在の状態が履歴ブロックに記憶されている同期グループ作成ルールを満たしていることを認識した場合、同期グループ作成トランザクション要求を開始する。
【００４７】
Ｓ３２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００４８】
Ｓ３３０：同期ブロックに基づいて、同期グループの同期署名を決定する。
【００４９】
Ｓ３４０：同期署名をトランザクションデータとしてブロックに記録する。
【００５０】
本出願の実施例により提供される技術案によれば、同期グループ作成ルールをブロックに記憶することによって、同期グループ作成ルールの改ざん不可能性と透明度を確保し、ブロックチェーンノードがブロックチェーンの現在の状態が同期グループ作成ルールを満たしていることを認識した場合、同期グループの作成要求を自動的に開始し、同期グループ作成トランザクション要求を取得するために新しいアイデアを提供することができる。
【００５１】
例示的には、同期グループ作成トランザクション要求を取得するステップは、以下のような方式によって実行されることもできる。
１）同期グループの使用需要が発生した場合、同期グループ作成トランザクション要求を開始する。
【００５２】
その中、同期グループの使用需要は、同期グループを使用する必要がある時に発生した要求を指し、同期グループの使用需要には、必要な同期グループに含まれるブロックなどが含まれることができる。選択可能には、同期グループの使用需要を発生することは、ローカルがブロックチェーンを同期する必要がある場合、同期グループの使用需要を発生することを含むことができ、ローカルがブロックチェーン内のデータを修正する必要がある場合、同期グループの使用需要を発生することなどを含むこともできる。
【００５３】
具体的には、ローカルノードがブロックチェーンに新たに追加されたノードであり、又はローカルノードが通信品質又は悪意の攻撃を受けるなどのような他の要因によってローカルノードのブロックチェーンの一部又は全部のブロックなどが欠落した場合、ローカルノードがブロックチェーンを同期する必要があり、ローカルが同期グループの使用需要を発生する。ローカルノードは、同期グループの使用需要に基づいて、同期グループ作成トランザクション要求を開始することができる。ローカルノードは、現在のブロック生成ノードに同期グループの使用需要を送信するか、又は現在のブロック生成ノードが、ローカルノードが同期グループの使用需要を発生したことを検出した場合、現在のブロック生成ノードが同期グループ作成トランザクション要求を開始することができる。
【００５４】
２）任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する。その中、任意のノードは、ブロックチェーン内の同期を必要とする任意のノードであってもよいし、スーパー権限を持つ任意のノードであってもよいし、現在のブロック生成ノードなどであってもよい。具体的には、ローカルノードは、ブロックチェーンのいずれかのノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信することによって、同期グループ作成トランザクション要求を取得することができる。
【００５５】
３）ブロックチェーン内の任意のノードは、ローカルが同期グループを使用する必要があり、且つブロックチェーンをトラバーサルした後にそれにマッチングする同期グループが照会されていない場合、同期グループ作成トランザクション要求を開始する。
【００５６】
上記のノードによって開始された同期グループ作成トランザクション要求には、同期グループ作成ルールを持つことができ、当該作成ルールは、現在の時刻に同期グループを作成するルールを規定してもよく、後続の同期グループを継続的に作成するルールを規定してもよく、すなわち、ブロックに記憶されて、後続の履歴ブロックにおける同期グループ作成ルールとする。
【００５７】
実施例４
図４は、本出願の実施例４により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、さらに最適化され、本実施例は、同期グループのインデックス方式を提供する。図４を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ４１０：同期グループ作成トランザクション要求を取得する。
【００５８】
Ｓ４２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００５９】
Ｓ４３０：同期ブロックに基づいて、同期グループの同期署名を決定する。
【００６０】
Ｓ４４０：同期署名をトランザクションデータとしてブロックに記録する。
【００６１】
Ｓ４５０：同期グループのインデックスデータをローカルの同期グループインデックステーブルに保存する。
【００６２】
その中、インデックスデータは、ノードが同期グループ情報を迅速に見つけるのを支援するためのデータを指し、同期グループ識別子、同期グループを構成する各同期ブロック識別子、同期グループの同期署名、及び同期署名があるブロック識別子などを含むことができる。同期グループ識別子は、同期グループの番号又は名称などであってもよい。ブロック識別子は、あるブロックを一意に識別又は決定するためのフラグを指し、ブロックのＩＤ又は番号などであってもよい。
【００６３】
同期グループインデックステーブルは、一定の順序又はルールに従って異なる同期グループインデックスデータを記憶するテーブルを指し、例えば、同期グループ識別子に従って異なる同期グループのインデックスデータを記憶することができ、一つの同期グループは、同期グループインデックステーブルにおける１行又は１列などに一意に対応することができる。選択可能には、同期グループインデックステーブルは、ブロックチェーンに構築された同期グループに基づいて、追加、削除、又は置換などの動的に更新することができる。
【００６４】
具体的には、ローカルノードは、同期グループ作成トランザクション要求を受信し、署名処理を行ってトランザクションデータを検証した後に、同期グループ、同期署名、及び同期ブロックなどのマッピング関係をローカルの同期グループインデックステーブルに保存する。
【００６５】
例示的には、ローカルノードがある同期グループを照会する必要がある場合、以下のいずれか又はいくつかの方式によって必要な同期グループを照会することができる。
１）ローカルの同期グループインデックステーブルで同期グループのインデックスデータを照会する。
【００６６】
２）同期グループ照会トランザクション要求を開始し、現在のブロック生成ノードが後ろから前へブロックチェーンをトラバーサルして同期グループを照会するように要求し、その中、同期グループ照会要求は、同期グループを照会するための要求を指し、必要な同期グループ識別子又は同期グループ署名などを含むことができる。
【００６７】
３）ローカルノードが信頼する各ノードに同期グループ照会要求を送信し、各ノードがローカルの同期グループインデックステーブルで同期グループのインデックスデータなどを照会するように要求する。
【００６８】
具体的には、ローカルノードが同期グループの同期ブロックチェーンを使用する必要がある際に、同期グループインデックステーブルがローカルに記憶されている場合、先にローカルの同期グループインデックステーブルで照会することができ、必要な同期グループにマッチングする同期グループがある場合、当該同期グループのインデックスデータを直接に取得して同期操作を行うことができる。マッチングする同期グループがない場合、ローカルノードは、信頼する各ノードに同期グループ照会トランザクション要求を開始して、信頼する各ノードが当該同期グループ照会トランザクション要求を受信した後に、ローカルの同期グループインデックステーブルで同期グループのインデックスデータを照会するようにすることができる。ローカルノードが信頼する各ノードによってフィードバックされた照会されていない情報を受信した場合、現在のブロック生成ノードに同期グループ照会トランザクション要求を送信して、現在のブロック生成ノードが現在のブロックから前にブロックチェーンをトラバーサルして同期グループを照会するように要求する。現在のブロック生成ノードもマッチングする同期グループを照会していない場合、必要な同期グループを含む同期グループ作成トランザクション要求を開始することができる。
【００６９】
なお、上記で与えられた必要な同期グループを照会する方式間には、独立に行われてもよく、先にローカル照会である第１の方式を行い、その後に同期グループ照会トランザクション要求を送信する方式である第２又は第３の方式で照会してもよい。
【００７０】
本出願の実施例により提供される技術案によれば、同期グループを構築し、同期グループの同期署名をブロックに記憶した後に、ブロックチェーン内のノードは、一つの同期グループインデックステーブルをローカルでメンテナンスし、同期グループのインデックスデータをローカルの同期グループインデックステーブルに保存して、後続の照会、検証、及び同期データなどに便利を提供することができる。
【００７１】
実施例５
図５は、本出願の実施例５により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、ローカルノードが任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信することによって、同期グループ作成トランザクション要求を取得する方式をさらに最適化した。図５を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ５１０：任意のノードによって開始された同期グループ作成提案要求を受信する。
【００７２】
その中、提案要求は、ブロックチェーン内の任意のノードが、スマートコントラクトなどのようなあるトランザクションを実行する必要がある場合、提案トランザクション要求を開始し、現在のブロック生成ノードが他のノードに投票結果のフィードバックを要求することを指し、提案要求には、構築する同期グループの同期ブロックと署名方式などのうちの少なくとも一つを含むことができる。又は、提案要求は、デフォルト方式に基づいて同期グループの作成内容を表すことができ、例えば、現在開始された同期グループ作成提案要求は、現在のブロックに同期ポイントを作成することを示すことができる。
【００７３】
Ｓ５２０：提案要求に従って、提案投票通知を開始し、他のノードが当該同期グループの作成に対して投票するように要求する。
【００７４】
Ｓ５３０：投票結果に基づいて、提案要求における同期グループ作成トランザクション要求の実行可能性を決定する。
【００７５】
現在のブロック生成ノードは、投票割合に基づいて投票結果を決定することができ、投票割合は、デフォルトで設置してもよいし、又は同期グループ作成提案要求で規定してもよい。
【００７６】
Ｓ５４０：任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する。
【００７７】
具体的には、提案要求における同期グループ作成トランザクション要求が承認されたと決定された後、関連する同期グループ作成トランザクション要求を受け入れることができ、当該同期グループ作成トランザクション要求は、一般に同期グループ作成提案要求に含まれることができる。
【００７８】
Ｓ５５０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００７９】
Ｓ５６０：同期ブロックに基づいて、同期グループの同期署名を決定する。
【００８０】
Ｓ５７０：同期署名をトランザクションデータとしてブロックに記録する。
【００８１】
本出願の実施例により提供される技術案によれば、同期グループ作成トランザクション要求を取得する前に、先にブロックチェーンネットワークのコンセンサスメカニズムに基づいて同期グループ作成提案要求を投票し、提案要求における同期グループ作成トランザクション要求が承認されたと決定された後、後続の同期グループ作成フローを実行する。
【００８２】
実施例６
図６は、本出願の実施例６により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、同期ブロックに基づいて、同期グループの同期署名を決定する方式を提供する。図６を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ６１０：同期グループ作成トランザクション要求を取得する。
【００８３】
Ｓ６２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００８４】
Ｓ６３０：各同期ブロックのブロック識別子を順次接続して、署名計算を行って、現在作成された同期グループの同期署名を形成する。
【００８５】
具体的には、ローカルノードは、同期グループ作成トランザクション要求に基づいて同期グループの同期ブロックを決定した後に、各同期ブロックのブロックヘッダから当該同期ブロックのブロック識別子を取得し、各同期ブロックのブロック識別子を各同期ブロックの番号順に従って連結して一つの全体識別子とし、同期グループ作成トランザクション要求に指定された署名方式、ローカルノードの公開鍵、秘密鍵、又はＳＨＡ２５６などのような署名アルゴリズムを使用して全体識別子に対して署名を行い、現在作成された同期グループの同期署名を形成する。
【００８６】
同期署名の安全性をさらに向上させ、且つ同期署名の複雑さを増加させるために、例示的には、同期ブロックに基づいて、同期グループの同期署名を決定することは、各同期ブロックのブロック識別子でマークルツリーを構築し、マークルツリーのルートを同期署名とするステップを含むこともできる。具体的には、ローカルノードは、同期グループ作成トランザクション要求に基づいて同期グループの同期ブロックを決定した後に、各同期ブロックのブロックヘッダから当該同期ブロックのブロック識別子を取得し、各同期ブロックのブロック識別子に基づいて、マークルツリーアルゴリズムを使用してマークルツリーを生成し、マークルツリーのルートを同期グループの同期署名とする。
【００８７】
また、同期署名の安全性をさらに向上させ、且つ同期署名の信頼性を増加させ、ローカルノードが詐欺の確率を減らすために、例示的には、同期ブロックに基づいて、同期グループの同期署名を決定することは、同期ブロックと関連情報とに基づいて、同期グループの同期署名を決定するステップを含むこともでき、関連情報は、作成者情報と作成時間情報と、の少なくとも一つを含む。
【００８８】
作成者情報は、ノード識別子などのように、同期グループを作成するノード情報を指し、作成時間情報は、ローカルノード同期グループを作成するローカルタイムスタンプを指す。
【００８９】
具体的には、ローカルノードは、各同期ブロックの識別子を順次接続して一つの全体識別子とし、作成者情報と作成時間情報を全体識別子に追加して新たな全体識別子を形成し、新たな全体識別子に対して署名を行って、現在作成された同期グループの同期署名を形成することができる。ローカルノードは、各同期ブロックのブロック識別子に基づいて、マークルツリーアルゴリズムを使用してマークルツリーを生成した後に、マークルツリーのルートを、作成者情報及び作成時間情報とともに同期グループの同期署名とすることもできる。
【００９０】
Ｓ６４０：同期署名をトランザクションデータとしてブロックに記録する。
【００９１】
具体的には、現在のブロック生成ノードによって同期署名をトランザクションデータとして、現在のブロックに記録し、現在のブロックを他のノードに送信して検証する。他のノードがローカルノードによって送信された現在のブロックを受信した後に、まず、同期署名から作成時間情報を取得し、作成時間情報をローカルノードの現在のローカル時間と比較して、時間差分値が予め設定された時間閾値内でなければ、ローカルノードに詐欺の現象が存在する可能性があることを説明し、後続の同期署名の検証フローを行わず、検証失敗情報を直接フィードバックする。時間差分値が予め設定された時間閾値内にある場合、他のノードは、ローカルノードと同じ方式を採用して当該同期グループの同期署名を計算することができ、同期署名が現在のブロックにおける同期署名と一致する場合、現在のブロックが有効であることを確認し、現在のブロックをブロックチェーンに記憶し、一致していない場合、ブロックチェーン内の他のノードに現在のブロック識別子を含むブロック無効情報を送信する。
【００９２】
本出願の実施例により提供される技術案によれば、同期ブロック及び実際の状況に応じて、異なる同期署名アルゴリズムを使用して同期グループの同期署名を決定することにより、同期署名の使用をより柔軟にした。当時に、同期ブロックに基づいて同期署名を決定して、同期署名が、一定のルールにしたがっていることを間接的に示し、同期ブロック、同期グループ、及び同期署名の三者間の関連関係を間接的に示すため、後続の同期グループの照会を容易にする。
【００９３】
実施例７
図７は、本出願の実施例７により提供されるブロックチェーンのデータ処理方法のフローチャートである。本実施例は、上記の実施例の上に、同期ブロックに基づいて、同期グループの同期署名を決定する方式をさらに提供する。図７を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ７１０：同期グループ作成トランザクション要求を取得する。
【００９４】
Ｓ７２０：同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定する。
【００９５】
Ｓ７３０：各同期ブロックのブロックヘッダデータを署名してサブ署名を形成し、各サブ署名を使用してマークルツリーを構築し、マークルツリーのルートを同期署名とする。
【００９６】
その中、ブロックヘッダデータは、前のブロック識別子、ブロック作成のタイムスタンプ、乱数、ターゲットハッシュ、及び当該ブロック内のトランザクションデータによって構築されたマークルツリールートなどを含むことができる。サブ署名は、ハッシュ署名などであってもよい。
【００９７】
具体的には、ローカルノードは、同期グループ作成トランザクション要求に基づいて同期グループの同期ブロックを決定した後に、各同期ブロックから当該同期ブロックのブロックヘッダデータを取得し、各同期ブロックのブロックヘッダデータに対してハッシュ署名などのような署名方式を使用してサブ署名を行い、各サブ署名に基づいて、マークルツリーアルゴリズムを使用してマークルツリーを生成し、マークルツリーのルートを同期グループの同期署名とすることができる。
【００９８】
同期署名の安全性をさらに向上させ、且つ同期署名の信頼性を増加させ、ローカルノードが詐欺する確率を減らすために、例示的には、同期ブロックに基づいて、同期グループの同期署名を決定することは、同期ブロックと関連情報とに基づいて、同期グループの同期署名を決定するステップを含むこともでき、関連情報は、作成者情報と作成時間情報と、のうちの少なくとも一つを含む。作成者情報は、ノード識別子などのように同期グループを作成するノード情報を指し、作成時間情報は、ローカルノード同期グループを作成するローカルタイムスタンプを指す。
【００９９】
具体的には、ローカルノードは、各同期ブロックのブロックヘッダデータに署名してサブ署名を形成し、各サブ署名に基づいて、マークルツリーアルゴリズムを使用してマークルツリーを生成した後に、マークルツリーのルートを、作成者情報及び作成時間情報とともに同期グループの同期署名とする。
【０１００】
Ｓ７４０：同期署名をトランザクションデータとしてブロックに記録する。
【０１０１】
本出願の実施例により提供される技術案によれば、先に、各同期ブロックのブロックヘッダデータを使用して署名することによってサブ署名を形成し、次に、マークルツリーアルゴリズムを使用してサブ署名を計算することによってマークルツリーを生成し、マークルツリーのルートを同期署名とする。同期署名の複雑さを増加することによって、同期署名の安全性をさらに向上させ、且つ同期署名の信頼性を増加させる。
【０１０２】
例示的には、同期ブロックに基づいて、同期グループの同期署名を決定することは、現在作成された同期グループの同期ブロックと、少なくとも一つの既存の同期グループの同期署名とに基づいて、署名計算を行って、現在作成された同期グループの同期署名を形成するステップとを含むこともできる。
【０１０３】
具体的には、ローカルノードは、現在作成された同期グループの同期ブロックを決定した後に、先に、ローカルの同期グループインデックステーブルから照会して、現在作成された同期グループに含まれる既存の同期グループの同期署名を取得することができる。例えば、現在作成された同期グループに含まれる同期ブロックが０番目のブロックから３００番目のブロックであり、既存の同期グループ１は、０番目のブロックから１００番目のブロックで構成され、同期グループ２は、０番目のブロックから２００番目のブロックで構成され、ローカルノードは、同期グループ１の同期署名と同期グループ２の同期署名、及び現在の同期グループの同期ブロックを組み合わせて署名することによって、現在作成された同期グループの同期署名を形成することができる。本実施例で使用される署名方法は、各同期グループ間に関連があり、孤立していないようにする。
【０１０４】
実施例８
図８は、本出願の実施例８により提供されるブロックチェーンのデータ検証方法のフローチャートである。本実施例は、ブロックチェーンに同期グループが存在する時のデータ検証方法を提供し、当該方法は、ブロックチェーンネットワークにおいて、任意のノードが他のノードからデータ同期を行うシーンの解決策に適用される。その中、当該同期グループは、上記の実施例を使用した方式で作成することができる。当該実施例の技術案は、ブロックチェーンのデータ検証装置によって実行されることができ、当該装置は、ソフトウェア及び／又はハードウェアの方式を採用して実現することができ、一般に、ブロックチェーンノードの電子機器に構成されてもよい。図８を参照すると、当該方法は、具体的には、以下のようなステップを含む。
Ｓ８１０、他のノードにブロック同期要求を開始し、他のノードによってフィードバックされたブロックを受信する。
【０１０５】
本実施例では、ブロック同期要求が発生された場合、他のノードにブロック同期要求を開始して、同期ブロックデータをダウンロードすることができる。他のノードは、ブロックチェーンが記憶されている任意のノードであってもよく、好ましくは、ローカルノードの信頼ノードであってもよい。ブロック同期要求は、ブロックチェーン内のノードがブロックデータ同期を行う必要がある時に発生した要求を指し、ブロック同期要求は、必要な同期ブロックのブロック識別子を含むことができる。
【０１０６】
選択可能には、ブロック同期要求を発生することは、以下のような少なくとも一つを含むことができる。１）ローカルノードがブロックチェーンネットワークに新たに追加されるノードであると決定された場合、完全なブロックチェーンを取得するブロック同期要求を生成する。２）ローカルノードが通信品質又は悪意の攻撃を受けるなどのような他の要因によってローカルノードのブロックチェーンの一部又は全部のブロックなどが欠落した場合、ローカルがブロックチェーンを同期にダウンロードする必要があり、ブロック同期要求を発生する。３）ブロックデータ照会要求に基づいて、照会対象ブロックのブロック同期要求を発生する。４）ブロックデータ検証要求に基づいて、検証対象ブロックのブロック同期要求などを発生する。
【０１０７】
ローカルノードは、ブロックチェーンネットワーク内の他のノードにブロック同期要求を送信し、他のノードがローカルノードによって送信されたブロック同期要求を受信した後に、対応する同期グループのブロックデータを取得し、ブロックデータをローカルノードにフィードバックする。ローカルノードは、他のノードによってフィードバックされた同期グループのブロックデータを受信し、ローカルに保存する。
【０１０８】
Ｓ８２０：同期対象ブロックにマッチングする同期グループを決定し、ブロックから同期グループの同期署名を照会し、同期グループは、少なくとも一つの同期ブロックを含む。
【０１０９】
具体的には、ローカルノードは、ブロック同期要求に含まれる、同期が必要なブロック識別子に基づいてローカルにメンテナンスされているインデックステーブル又はブロックチェーンなどで同期グループを検索し、マッチングする同期グループが見つけられた場合、マッチングする同期グループを同期が必要なブロックが存在する同期グループとして決定する。マッチングする同期グループが見つけられていない場合、ブロックチェーンネットワークに同期グループ作成トランザクション要求を送信して、ブロックチェーンネットワークに当該同期グループの作成を要求することによって、同期グループを取得することができる。ローカルにメンテナンスされているインデックステーブルは、同期グループ作成の時に、照会するために同期グループ情報を追加したものである。
【０１１０】
選択可能には、当該方法は、マッチングする必要な同期グループがないと決定された場合、同期グループ作成トランザクション要求を開始するステップを含むこともできる。
【０１１１】
ローカルノードは、同期が必要なブロックが存在する同期グループを決定した後に、同期グループに基づいてブロックから同期グループの同期署名を取得することができる。
【０１１２】
上記のステップＳ８１０及びＳ８２０が実行する前後順序は限定されず、まずブロックデータ同期要求を開始し、他のノードから同期のブロックデータを受信してから、対応する同期グループをマッチングして、同期署名を取得してもよい。
【０１１３】
Ｓ８３０：同期ブロックに基づいて同期署名を計算し、取得された同期署名と比較して検証する。
【０１１４】
その中、同期ブロックは、同期グループを構成するブロックを指し、各同期グループは、少なくとも一つの同期ブロックを含む。選択可能には、取得された同期グループの同期署名方式が異なることによって、ローカルノードが同期ブロックに基づいて同期署名を計算する方式も異なる。
【０１１５】
具体的には、ローカルノードは、同期ブロックに基づいて同期グループの同期署名を計算して取得し、計算された同期署名とブロックから取得された同期署名とを比較し、両者が同じである場合、同期署名の検証に合格したと決定され、そうでない場合、同期グループの同期署名の検証に合格していないと決定される。
【０１１６】
Ｓ８４０：検証に合格した場合、同期グループの同期ブロックが検証に合格したと決定される。
【０１１７】
具体的には、同期グループの同期署名が検証に合格した場合、同期グループの同期ブロックが検証に合格したと決定され、同期署名が検証に合格していない場合、同期グループの同期ブロックが検証に合格していないと決定される。
【０１１８】
なお、本実施例では、同期署名の検証を採用して同期ブロックのブロック識別検証機能を直接に代替し、又は同期署名の検証優先度を同期ブロックの検証優先度よりも高く設置することもできる。ブロックデータを使用して同期する場合、同期グループを単位として一回検証することで、各同期ブロックのブロック識別子を一つずつ検証する必要がないため、検証フローを簡略化する。また、同期署名はブロックに記録されているため、他のノードの承認及び有効な監視を得るとともに、ブロックデータの改ざんを防止する役割も果たすことができる。
【０１１９】
上記の技術案では、同期対象ブロック中の少なくとも一つのブロックにマッチングする同期グループがないと決定された場合、マッチングしていないブロックのブロック識別子に基づいて検証するステップを含むこともできる。例えば、同期対象ブロックが９２０ブロックである場合、第９００番目のブロックに同期ポイントが形成され、０〜９００番目のブロックが一つの同期グループであり、最後の２０ブロックは、任意の同期グループにも属されない場合、同期グループに属する同期ブロックは、同期署名に基づいて検証することができ、同期グループに属していないブロックは、依然としてブロック自身の識別子に基づいて検証することができる。
【０１２０】
本出願の実施例により提供される技術案によれば、ローカルノードがブロックデータを使用して同期を行う必要がある場合、同期ブロックに基づいて計算された同期署名とブロックから取得された同期署名とを比較して検証すればよいため、各同期ブロックのブロック識別子を一つずつ検証する必要がなく、既存のブロックデータ検証方法と比較して、ブロックデータの検証方式を最適化することができ、検証フローを簡略化し、データ同期を加速する。
【０１２１】
実施例９
図９は、本出願の実施例９により提供されるブロックチェーンのデータ処理装置の概略構成図である。当該装置は、ブロックチェーンノードに構成されることができ、本出願の任意の実施例により提供されるブロックチェーンのデータ処理方法を実行することができ、方法の実行に対応される機能モジュール及び有益な効果を備える。図９に示すように、当該装置は、
同期グループ作成トランザクション要求を取得するように構成されるトランザクション要求取得モジュール９１０と、
同期グループ作成トランザクション要求に基づいて、最初のブロックから現在のブロックまでの連続ブロックを同期グループの同期ブロックとして決定するように構成される同期ブロック決定モジュール９２０と、
同期ブロックに基づいて、同期グループの同期署名を決定するように構成される同期署名決定モジュール９３０と、
同期署名をトランザクションデータとしてブロックに記録するように構成される記録モジュール９４０と、を含む。
【０１２２】
本出願の実施例により提供される技術案によれば、同期グループ作成トランザクション要求を取得した後に、同期グループ作成トランザクション要求に基づいて同期グループを構築し、同期グループを構成する同期ブロックに基づいて、同期グループの同期署名を決定し、その後、同期署名をトランザクションデータとしてブロックに記憶するため、同期署名によって改ざんされた確率を低下する。ブロックチェーンのいずれかのノードがブロックデータを取得しようとする場合、同期グループを単位として検証することができ、ブロックチェーン内のノードがブロックチェーンデータを検証するために新しいアイデアを提供し、ブロックデータの検証方式を最適化することができる。ブロックデータを同期するためのシーンに使用された場合、複数の同期ブロックを一度に検証し、データ同期を加速させることができる。
【０１２３】
例示的には、トランザクション要求取得モジュール９１０は、
現在の状態がローカル配置データにおける同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する操作と、
現在の状態が履歴ブロックに記憶されている同期グループ作成ルールを満たしていることが認識された場合、同期グループ作成トランザクション要求を開始する操作と、
任意のノードによってリアルタイムに開始された同期グループ作成トランザクション要求を受信する操作と、
同期グループの使用需要が発生した場合、同期グループ作成トランザクション要求を開始する操作と、のうち少なくとも一つを実行するように構成される。
【０１２４】
なお、上記の同期グループ作成ルールは、現在の時間が予め設定された時間値を満たすことと、現在のブロック高さが予め設定されたブロック高さの間隔を満たすことと、のうちの少なくとも一つを含むことができる。
【０１２５】
例示的には、上記装置は、
同期署名をトランザクションデータとしてブロックに記録した後に、同期グループのインデックスデータをローカルの同期グループインデックステーブルに保存するように構成される保存モジュールを含むこともできる。
【０１２６】
例示的には、上記装置は、
ローカルの同期グループインデックステーブルで同期グループのインデックスデータを照会し、又は、同期グループ照会トランザクション要求を開始し、現在のブロック生成ノードが後ろから前へブロックチェーンをトラバーサルして同期グループを照会するように要求するように構成される照会モジュールを含むこともできる。
【０１２７】
例示的には、同期署名決定モジュール９３０は、
各同期ブロックのブロック識別子を順次接続して、署名計算を行って、現在作成された同期グループの同期署名を形成する操作と、
各同期ブロックのブロック識別子でマークルツリーを構築し、マークルツリーのルートを同期署名とする操作と、
各同期ブロックのブロックヘッダデータを署名してサブ署名を形成し、各サブ署名を使用してマークルツリーを構築し、マークルツリーのルートを同期署名とする操作と、
現在作成された同期グループの同期ブロックと、少なくとも一つの既存の同期グループの同期署名とに基づいて、署名計算を行って、現在作成された同期グループの同期署名を形成する操作と、のうちの少なくとも一つを実行するように構成される。
【０１２８】
例示的には、同期署名決定モジュール９３０は、さらに、
同期ブロックと関連情報とに基づいて、同期グループの同期署名を決定するように構成され、関連情報は、作成者情報と作成時間情報と、のうちの少なくとも一つを含む。
【０１２９】
例示的には、記録モジュール９４０は、
現在のブロック生成ノードによって、同期署名をトランザクションデータとして現在のブロックに記録し、現在のブロックを他のノードに送信して検証するように構成される。
【０１３０】
実施例１０
図１０は、本出願の実施例１０により提供される機器の概略構成図である。図１０は、本出願の実施形態を実現するのに適する例示的な機器１２のブロック図を示す。図１０に示される機器１２は、単なる一つの例であり、本出願の実施例の機能及び使用範囲を一切制限しない。機器１２は、典型的には、ブロックチェーンネットワークノード機能を担うコンピューティング機器である。
【０１３１】
図１０に示すように、機器１２は、汎用コンピューティング機器の形態で示される。機器１２のコンポーネントは、一つ又は複数のプロセッサ又は処理ユニット１６と、システムメモリ２８と、異なるシステムコンポーネント（システムメモリ２８と処理ユニット１６とを含む）を接続するバス１８と、を含むことができるが、これらに限定されない。
【０１３２】
バス１８は、メモリバス又はメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、プロセッサ又は多様なバス構造のうち任意のバス構造を使用するローカルバスを含む、複数種のバス構造のうち一つ又は複数のものを表す。例を挙げると、これらのアーキテクチャは、インダストリスタンダードアーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＡＣ）バス、拡張ＩＳＡバス、ビデオエレクトロニクススタンダーズアソシエーション（ＶＥＳＡ）ローカルバス、及びペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスを含むが、これらに限定されない。
【０１３３】
機器１２は、典型的には、多種類のコンピュータシステム読み取り可能な媒体を含む。これらの媒体は、機器１２がアクセスすることができる任意の使用可能な媒体であってもよく、揮発性媒体及び不揮発性媒体、リムーバブル媒体及びノンリムーバブル媒体を含む。
【０１３４】
システムメモリ２８は、ランダムアクセスメモリ（ＲＡＭ）３０及び／又はキャッシュメモリ３２などの揮発性メモリの形態のコンピュータシステム読み取り可能な媒体を含んでもよい。機器１２は、他のリムーバブル／ノンリムーバブル、揮発性／不揮発性コンピュータシステム記憶媒体をさらに含んでもよい。単なる一例として、ストレージシステム３４は、ノンリムーバブル、不揮発性磁気媒体（図１０に示されていないが、通常「ハードドライブ」と呼ぶ）に対して読み出し及び書き込みをするために用いることができる。図１０に示されていないが、リムーバブル、不揮発性磁気ディスク（例えば、「フロッピーディスク」）に対して読み出し及び書き込みをするための磁気ディスクドライブ、及びリムーバブル、不揮発性光学ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光学媒体）に対して読み出し及び書き込みをするための光学ディスクドライブを提供することができる。この場合、各ドライブは、一つ又は複数のデータメディアインターフェイスを介してバス１８に接続することがきる。システムメモリ２８は、本出願の各実施例に記載の機能を実行するように構成されるワンセットのプログラムモジュール（例えば、少なくとも一つ）を有する少なくとも一つのプログラム製品を含んでもよい。
【０１３５】
ワンセットのプログラムモジュール４２（少なくとも一つ）を有するプログラム／ユーティリティ４０は、例えば、メモリ２８に記憶されてもよく、このようなプログラムモジュール４２は、オペレーティングシステム、一つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むことができるがこれらに限定されない。これらの例のそれぞれ又は何らかの組み合わせには、ネットワーく環境の実装が含まれる可能性がある。プログラムモジュール４２は、通常本出願に記載の実施例における機能及び／又は方法を実行する。
【０１３６】
機器１２は、一つ又は複数の外部機器１４（例えば、キーボード、ポインティング機器、ディスプレイ２４など）と通信することができるし、ユーザが機器１２とインタラクションすることを可能にする一つ又は複数の機器と通信することもでき、及び／又は機器１２が一つ又は複数の他のコンピューティングデバイスと通信することを可能にする任意の機器（例えば、ネットワークカード、モデムなど）と通信することができる。そのような通信は、入力／出力（Ｉ／Ｏ）インターフェイス２２を介して行うことができる。また、機器１２は、ネットワークアダプタ２０を介して、一つ又は複数のネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、及び／又はパブリックネットワーク、例えば、インターネット）と通信することができる。図４に示すように、ネットワークアダプタ２０は、バス１８を介して、機器１２の他のモジュールと通信する。なお、図示されていないが、マイクロコードやデバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、ＲＡＩＤシステム、テープドライバ、及びデータバックアップトレージシステムなどを含むがこれらに限定されない他のハードウェア及び／又はソフトウェアモジュールを、機器１２と組み合わせて使用することができる。
【０１３７】
処理ユニット１６は、システムメモリ２８に記憶されるプログラムを実行することにより、多様な機能アプリケーション及びデータ処理を実行し、例えば、本出願の実施例により提供されるブロックチェーンのデータ処理方法を実現する。
【０１３８】
実施例１１
本出願の実施例１１は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、当該プログラムがプロセッサによって実行される場合に、上記の実施例に記載のブロックチェーンのデータ処理方法が実現される。当該コンピュータ読み取り可能な記憶媒体は、ブロックチェーンノードに配置することができる。
【０１３９】
本出願の実施例に係るコンピュータ記憶媒体は、一つ又は複数のコンピュータ読み取り可能な媒体の任意の組み合わせを採用することができる。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体、或いはコンピュータ読み取り可能な記憶媒体であってもよい。コンピュータ読み取り可能な媒体は、例えば、電子、磁気、光、電磁気、赤外線、又は半導体のシステム、装置又はデバイス、或いは上記の任意の組み合わせであってもよいがこれらに限定されない。コンピュータ読み取り可能な記憶媒体のより具体的な例（非網羅的なリスト）は、一つ又は複数の配線を備える電気接続部、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ-ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記の任意の適切な組み合わせを含む。この文書において、コンピュータ読み取り可能な記憶媒体は、命令実行システム、装置又はデバイスにより使用され、或いはそれらと組み合わせて使用されることが可能であるプログラムを含む又は記憶する任意の有形の媒体であってもよい。
【０１４０】
コンピュータ読み取り可能なの信号媒体は、ベースバンドにおける、又は搬送波の一部として伝播するデータ信号を含むことができ、その中のにはコンピュータ読み取り可能なのプログラムコードが搭載される。この伝播するデータ信号は様々な形式を採用することができ、電磁信号、光信号又は上記の任意の適切な組み合わせを含むがこれらに限定されない。コンピュータ読み取り可能なの信号媒体は、さらに、コンピュータ読み取り可能な記憶媒体以外の任意のコンピュータ読み取り可能な媒体であってもよく、当該コンピュータ読み取り可能な媒体は、命令実行システム、装置又はデバイスにより使用され、或いはそれらと組み合わせて使用されるプログラムを送信、伝播又は伝送することができる。
【０１４１】
コンピュータ読み取り可能な媒体に含まれるプログラムコードは、無線、有線、光ケーブル、ＲＦなど、又は上記の任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体によって伝送することができる。
【０１４２】
一つ又は複数のプログラミング言語又はそれらの組み合わせで本出願の動作を実行するためのコンピュータプログラムコードを作成することができ、前記プログラミング言語は、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのようなプロジェクト指向のプログラミング言語を含み、さらに、「Ｃ」言語又は同様のプログラミング言語といった従来の手続き型プログラミング言語をも含む。プログラムコードは、完全にユーザーコンピュータで実行されてもよいし、部分的にユーザーコンピュータに実行されてもよいし、スタンドアロンソフトウェアパッケージとして実行されてもよいし、部分的にユーザーコンピュータで、部分的にリモートコンピュータで実行されてもよい、又は完全にリモートコンピュータ又はサーバーで実行してもよい。リモートコンピュータに係る場合、リモートコンピュータは、ローカルネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意種類のインターネットを介して、ユーザーコンピュータに接続することができ、或いは、外部コンピュータ（例えば、インターネットサービスプロバイダを利用してインターネットを介して接続する）に接続することもできる。
【０１４３】
上記実施例により本出願について比較的詳細に説明したが、本出願は、上記実施例のみに限定されず、本出願の構想を逸脱しない場合、より多くの他の効果同等な実施例をさらに含むことができ、本出願の範囲は、特許請求の範囲によって决定される。
【０１４４】
本願は、２０１８年９月１８日付に中国特許庁に提出した、中国特許出願番号が「２０１８１１０８９３８９.６」である中国特許出願の優先権を主張するものであり、当該出願のすべての内容は、引用により本願に組み込まれる。
【図１】
2021506185.tif 000003
【図２】
2021506185.tif 000004
【図３】
2021506185.tif 000005
【図４】
2021506185.tif 000006
【図５】
2021506185.tif 000007
【図６】
2021506185.tif 000008
【図７】
2021506185.tif 000009
【図８】
2021506185.tif 000010
【図９】
2021506185.tif 000011
【図１０】
2021506185.tif 000012
【国際調査報告】
2021506185.tif 000013
2021506185.tif 000014
2021506185.tif 000015
2021506185.tif 000016