(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-14
(45)【発行日】2023-08-22
(54)【発明の名称】ブロックチェーンデータのアーカイブ方法、ブロックチェーンデータのアーカイブ装置、電子機器、及びコンピュータプログラム
(51)【国際特許分類】
G06F 16/11 20190101AFI20230815BHJP
H04L 9/32 20060101ALI20230815BHJP
【FI】
G06F16/11
H04L9/32 200B
(21)【出願番号】P 2022539416
(86)(22)【出願日】2021-03-12
(86)【国際出願番号】 CN2021080371
(87)【国際公開番号】W WO2021213065
(87)【国際公開日】2021-10-28
【審査請求日】2022-06-27
(31)【優先権主張番号】202010329695.3
(32)【優先日】2020-04-24
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】▲呉▼ 小▲龍▼
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2019-532401(JP,A)
【文献】特開2019-160312(JP,A)
【文献】中国特許出願公開第111209346(CN,A)
【文献】中国特許出願公開第107526775(CN,A)
【文献】中国特許出願公開第110717764(CN,A)
【文献】中国特許出願公開第109656873(CN,A)
【文献】国際公開第2019/174430(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/11
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンシステムに用いられる、ブロックチェーンデータのアーカイブ方法であって、前記ブロックチェーンシステムは、コンセンサスノードと、第1記帳ノードと、第2記帳ノードとを含み、前記方法は、
前記第1記帳ノードが、前記コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定するステップであって、前記同期されたブロックチェーンデータには、状態データが含まれる、ステップと、
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定し、前記ターゲット状態データをバックアップするステップと、
前記第1記帳ノードが、バックアップされたターゲット状態データに基づいて前記同期ブロック高さの状態データスナップショットを生成し、前記状態データスナップショット、前記同期ブロック高さ、及び前記第1記帳ノードの署名情報を共同でアーカイブポイント情報として前記第2記帳ノードに送信するステップと、
前記第1記帳ノードが、前記第2記帳ノードの前記アーカイブポイント情報に対する裏書き情報を受信するステップと、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記同期されたブロックチェーンデータをアーカイブするステップと、
を含むブロックチェーンデータのアーカイブ方法。
【請求項2】
前記状態データには、複数のサブ状態データが含まれ、
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定し、前記ターゲット状態データをバックアップするステップは、
前記第1記帳ノードが、前記サブ状態データに対応するブロック高さと、ローカルデータベースにおける記憶タグとを取得するステップと、
前記第1記帳ノードが、前記サブ状態データに対応するブロック高さを、前記サブ状態データに対応する記憶タグに追加してマーク付けすることにより、マーク付けされた記憶タグを取得するステップと、
前記第1記帳ノードが、前記マーク付けされた記憶タグに基づいて、前記複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別するステップと、
前記第1記帳ノードが、前記ターゲットサブ状態データをバックアップするステップと、を含む、
請求項1に記載のブロックチェーンデータのアーカイブ方法。
【請求項3】
前記第1記帳ノードが、前記マーク付けされた記憶タグに基づいて、前記複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別するステップは、
前記第1記帳ノードが、前記現在の取引に対応する取引情報を取得するステップと、
前記第1記帳ノードが、前記取引情報に基づいて、前記第1記帳ノードの現在のブロックチェーンデータの現在ブロック高さを決定するステップと、
前記現在ブロック高さが前記同期ブロック高さを超える場合、前記第1記帳ノードが、前記現在のブロックチェーンデータに新たなブロックが存在すると決定するステップと、
前記第1記帳ノードが、前記現在のブロックチェーンデータから前記新たなブロックにおける取引に必要な呼び出し情報を選別するステップであって、前記呼び出し情報は、呼び出された前記サブ状態データを示すためのものである、ステップと、
前記第1記帳ノードが、前記呼び出し情報と、前記マーク付けされた記憶タグとに基づいて、前記複数のサブ状態データから前記ターゲットサブ状態データを選別するステップと、を含む、
請求項2に記載のブロックチェーンデータのアーカイブ方法。
【請求項4】
前記第1記帳ノードが、前記ターゲットサブ状態データをバックアップするステップは、
前記第1記帳ノードが、前記取引情報から前記新たなブロックにおける取引に必要な取引操作情報を選別するステップと、
前記第1記帳ノードが、前記取引操作情報に基づいて、前記ターゲットサブ状態データに対応する取引操作タイプを決定するステップと、
前記取引操作タイプが更新操作である場合、前記第1記帳ノードが、前記更新操作に対応するターゲットサブ状態データをバックアップするステップと、
前記取引操作タイプが削除操作である場合、前記第1記帳ノードが、前記削除操作に対応するターゲットサブ状態データをバックアップし、バックアップされたターゲットサブ状態データに削除タグを追加するステップと、を含み、
前記削除タグは、前記バックアップされたターゲットサブ状態データを取引の実行時に読み取れないことを示すためのものである、
請求項3に記載のブロックチェーンデータのアーカイブ方法。
【請求項5】
前記第1記帳ノードが、バックアップされたターゲット状態データに基づいて前記同期ブロック高さの状態データスナップショットを生成するステップは、
前記第1記帳ノードが、前記状態データからブロック高さが前記同期ブロック高さを超えない同期サブ状態データを選別することにより、同期サブ状態データ集合を取得するステップと、
前記第1記帳ノードが、バックアップされたターゲットサブ状態データを新たな同期サブ状態データとして前記同期サブ状態データ集合に追加することにより、前記同期サブ状態データ集合を更新するステップと、
前記第1記帳ノードが、更新された同期サブ状態データ集合における同期サブ状態データに対してハッシュ演算を行うことにより、ターゲット構造の状態データを生成するステップと、
前記第1記帳ノードが、前記ターゲット構造の状態データをコピーすることにより、前記同期ブロック高さの状態データスナップショットを生成するステップと、を含む、
請求項2に記載のブロックチェーンデータのアーカイブ方法。
【請求項6】
前記第1記帳ノードが、更新された同期サブ状態データ集合における同期サブ状態データに対してハッシュ演算を行うことにより、ターゲット構造の状態データを生成するステップは、
前記第1記帳ノードが、更新された同期サブ状態データ集合における複数の同期サブ状態データを分類することにより、複数のタイプの同期サブ状態データを取得するステップと、
前記第1記帳ノードが、前記複数のタイプの同期サブ状態データに対してハッシュ演算をそれぞれ行うことにより、前記複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値を取得するステップと、
前記第1記帳ノードが、前記複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値に基づいてハッシュ演算を行うことにより、ルートのハッシュ値を取得するステップと、
前記第1記帳ノードが、前記ルートのハッシュ値と、前記複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値とに基づいて、ターゲット構造の状態データを生成するステップと、を含む、
請求項5に記載のブロックチェーンデータのアーカイブ方法。
【請求項7】
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記同期されたブロックチェーンデータをアーカイブするステップは、
前記第1記帳ノードが、前記裏書き情報を送信した第2記帳ノードの裏書き数量を決定するステップと、
前記裏書き数量が数量閾値を超える場合、前記第1記帳ノードが、前記裏書き情報を前記アーカイブポイント情報に追加することにより、更新されたアーカイブポイント情報を取得するステップと、
前記第1記帳ノードが、前記更新されたアーカイブポイント情報を前記コンセンサスノードに送信するステップと、
前記第1記帳ノードが、前記更新されたアーカイブポイント情報に対して前記コンセンサスノードから送信された設定ブロックデータを受信すると、前記同期されたブロックチェーンデータをアーカイブするステップと、を含む、
請求項1に記載のブロックチェーンデータのアーカイブ方法。
【請求項8】
前記同期されたブロックチェーンデータには、第1ブロックデータが含まれ、
前記第1記帳ノードが、前記同期されたブロックチェーンデータをアーカイブするステップは、
前記第1記帳ノードが、前記更新されたアーカイブポイント情報をコピーすることにより、前記第1記帳ノードの前記同期ブロック高さでのアーカイブデータスナップショットを生成するステップと、
前記第1記帳ノードが、前記設定ブロックデータを前記第1ブロックデータに追加することにより、更新された第1ブロックデータを取得するステップと、
前記第1記帳ノードが、前記更新された第1ブロックデータからブロック高さが前記同期ブロック高さを超えないターゲットブロックデータを選別するステップと、
前記第1記帳ノードが、前記ターゲットブロックデータを削除するステップと、を含む、
請求項7に記載のブロックチェーンデータのアーカイブ方法。
【請求項9】
前記第1記帳ノードが前記ターゲットブロックデータを削除する際に、
前記第1記帳ノードが前記ターゲットブロックデータを分散ストレージシステムに記憶するステップをさらに含み、
前記分散ストレージシステムは、前記ブロックチェーンシステムと異なる、
請求項8に記載のブロックチェーンデータのアーカイブ方法。
【請求項10】
前記第1記帳ノードが、前記更新されたアーカイブポイント情報を前記コンセンサスノードに送信した後、
前記コンセンサスノードが、前記更新されたアーカイブポイント情報から前記裏書き情報及び前記署名情報を選別するステップと、
前記コンセンサスノードが、前記裏書き情報及び前記署名情報をチェックするステップと、
前記コンセンサスノードによる前記裏書き情報及び前記署名情報のチェックが合格した場合、前記コンセンサスノードが、設定ブロックを生成し、前記更新されたアーカイブポイント情報を前記設定ブロックに記憶することにより、設定ブロックデータを取得するステップと、
前記コンセンサスノードが、前記設定ブロックデータを前記第1記帳ノード及び前記第2記帳ノードに送信するステップと、をさらに含む、
請求項7に記載のブロックチェーンデータのアーカイブ方法。
【請求項11】
前記コンセンサスノードが、前記裏書き情報及び前記署名情報をチェックするステップは、
前記コンセンサスノードが、前記裏書き情報の数量、及び前記裏書き情報に対応する第2記帳ノードのアイデンティティ識別子のうちの少なくとも1つをチェックするステップと、
前記コンセンサスノードが、署名フォーマット及び署名規則のうちの少なくとも1つに基づいて、前記署名情報をチェックするステップと、を含む、
請求項10に記載のブロックチェーンデータのアーカイブ方法。
【請求項12】
前記第1記帳ノードが、前記第2記帳ノードから送信された前記アーカイブポイント情報を受信すると、前記アーカイブポイント情報から前記第2記帳ノードの状態データのルートのハッシュ値を抽出するステップと、
前記第1記帳ノードが、前記第2記帳ノードの状態データのルートのハッシュ値と、前記第1記帳ノード自身の状態データのルートのハッシュ値とを比較するステップと、
前記第2記帳ノードの状態データのルートのハッシュ値が前記第1記帳ノード自身の状態データのルートのハッシュ値と同じである場合、前記第1記帳ノードが、前記アーカイブポイント情報を署名することにより、前記アーカイブポイント情報の裏書き情報を取得するステップと、
前記第1記帳ノードが、前記裏書き情報を前記第2記帳ノードに送信し、前記アーカイブポイント情報を前記ブロックチェーンシステムにブロードキャストするステップと、をさらに含む、
請求項1乃至11のいずれか1項に記載のブロックチェーンデータのアーカイブ方法。
【請求項13】
前記第1記帳ノードが、前記ブロックチェーンシステムにおける新たに追加された記帳ノードである場合、前記第1記帳ノードが、前記コンセンサスノードに同期要求を送信し、前記同期要求に対して前記コンセンサスノードから送信された裏書き情報及びアーカイブポイント情報を受信するステップと、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記第2記帳ノードから状態データを取得するステップと、
前記第1記帳ノードが、前記コンセンサスノード又は前記第2記帳ノードからブロック高さが前記同期ブロック高さを超える第2ブロックデータを取得するステップと、
前記第1記帳ノードが、前記第2ブロックデータにおける取引情報に基づいて、前記状態データを更新することにより、前記第1記帳ノードの現在のブロックチェーンデータを取得するステップと、をさらに含む、
請求項1乃至11のいずれか1項に記載のブロックチェーンデータのアーカイブ方法。
【請求項14】
前記アーカイブポイント情報には、前記コンセンサスノードの状態データのルートのハッシュ値と、前記第2記帳ノードの署名情報とが含まれ、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記第2記帳ノードから状態データを取得するステップは、
前記第1記帳ノードが、前記裏書き情報及び前記第2記帳ノードの署名情報をチェックするステップと、
前記第1記帳ノードによる前記裏書き情報及び前記第2記帳ノードの署名情報のチェックが合格した場合、前記第1記帳ノードが、前記ルートのハッシュ値に対応する複数の葉のハッシュ値を決定するステップと、
前記第1記帳ノードが、前記第2記帳ノードから異なる前記葉のハッシュ値に対応するサブ状態データを並列に取得して、取得された状態データとするステップと、を含む、
請求項13に記載のブロックチェーンデータのアーカイブ方法。
【請求項15】
前記第1記帳ノードが、前記第2記帳ノードから異なる前記葉のハッシュ値に対応するサブ状態データを並列に取得するステップは、
前記第1記帳ノードが、前記第2記帳ノードの数量に基づいて、前記複数の葉のハッシュ値を分類するステップと、
前記第1記帳ノードが、前記複数の葉のハッシュ値に対する分類結果に基づいて、異なる前記第2記帳ノードに対応するターゲット葉のハッシュ値を決定するステップと、
前記第1記帳ノードが、異なる前記第2記帳ノードから前記ターゲット葉のハッシュ値に対応するサブ状態データを取得するステップと、を含む、
請求項14に記載のブロックチェーンデータのアーカイブ方法。
【請求項16】
前記第1記帳ノードが、前記コンセンサスノードと、ブロックチェーンデータの同期を行うステップは、
前記第1記帳ノードが、前記コンセンサスノードに同期要求を送信するステップであって、前記同期要求には、前記第1記帳ノードのアイデンティティ識別子が含まれる、ステップと、
前記第1記帳ノードが、前記同期要求に対して前記コンセンサスノードから送信されたブロックを受信するステップであって、前記ブロックは、前記コンセンサスノードによる前記同期要求における前記第1記帳ノードのアイデンティティ識別子のチェックが合格した場合に送信されたものである、ステップと、
前記第1記帳ノードが、前記コンセンサスノードから送信されたブロックに基づいて、ローカルのブロックチェーンデータを更新することにより、同期されたブロックチェーンデータを取得するステップと、を含む、
請求項1乃至11のいずれか1項に記載のブロックチェーンデータのアーカイブ方法。
【請求項17】
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定するステップは、
前記第1記帳ノードが、前記同期ブロック高さとアーカイブブロック高さとをマッチングするステップと、
前記同期ブロック高さと前記アーカイブブロック高さとのマッチングが成功した場合、前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定するステップと、を含む、
請求項1乃至11のいずれか1項に記載のブロックチェーンデータのアーカイブ方法。
【請求項18】
ブロックチェーンシステムに用いられる、ブロックチェーンデータのアーカイブ装置であって、前記ブロックチェーンシステムは、コンセンサスノードと、第1記帳ノードと、第2記帳ノードとを含み、前記装置は、
前記第1記帳ノードが、前記コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定するように構成される同期ユニットであって、前記同期されたブロックチェーンデータには、状態データが含まれる、同期ユニットと、
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定し、前記ターゲット状態データをバックアップするように構成される決定ユニットと、
前記第1記帳ノードが、バックアップされたターゲット状態データに基づいて前記同期ブロック高さの状態データスナップショットを生成し、前記状態データスナップショット、前記同期ブロック高さ、及び前記第1記帳ノードの署名情報を共同でアーカイブポイント情報として前記第2記帳ノードに送信するように構成される生成ユニットと、
前記第1記帳ノードが、前記第2記帳ノードの前記アーカイブポイント情報に対する裏書き情報を受信するように構成される受信ユニットと、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記同期されたブロックチェーンデータをアーカイブするように構成されるアーカイブユニットと、
を含むブロックチェーンデータのアーカイブ装置。
【請求項19】
電子機器であって、
実行可能な命令を記憶するメモリと、
前記メモリに記憶された実行可能な命令を実行すると、請求項1乃至17のいずれか1項に記載のブロックチェーンデータのアーカイブ方法を実現するプロセッサと、
を備える電子機器。
【請求項20】
請求項1乃至17のいずれか1項に記載のブロックチェーンデータのアーカイブ方法を
コンピュータに実現させるコンピュータ
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、出願番号が第202010329695.3号であり、出願日が2020年4月24日である、中国特許出願に基づいて提出され、該中国特許出願に基づく優先権を主張し、該中国特許出願の全ての内容がここで参考として本願に組み込まれている。
【0002】
本願は、通信技術の分野に関し、特にブロックチェーンデータのアーカイブ方法、装置、電子機器、及びコンピュータ可読記憶媒体に関する。
【背景技術】
【0003】
ブロックチェーンシステムは、コンセンサス方式によって新たなブロックをブロックチェーンに入れる一連のノードの集合を指す。近年、ブロックチェーン技術の発展に伴い、ブロックチェーンシステムは、取引分野での応用もますます広くなり、例えば、銀行や政府などの取引シナリオに応用することができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
ブロックチェーンシステムの動作時間の増加に伴い、ブロックチェーンシステムにおける各ノードのブロックチェーンデータが占める記憶空間もますます大きくなり、ブロックチェーンシステムにおけるノードには、応答が遅く、ひいてはダウンするという状況が発生し、ブロックチェーンの動作過程に悪影響が与えられる。
【課題を解決するための手段】
【0005】
本願の実施例は、ブロックチェーンシステムに用いられる、ブロックチェーンデータのアーカイブ方法を提供する。前記ブロックチェーンシステムは、コンセンサスノードと、第1記帳ノードと、第2記帳ノードとを含み、前記方法は、
前記第1記帳ノードが、前記コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定するステップであって、前記同期されたブロックチェーンデータには、状態データが含まれる、ステップと、
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定し、前記ターゲット状態データをバックアップするステップと、
前記第1記帳ノードが、バックアップされたターゲット状態データに基づいて前記同期ブロック高さの状態データスナップショットを生成し、前記状態データスナップショット、前記同期ブロック高さ、及び前記第1記帳ノードの署名情報を共同でアーカイブポイント情報として前記第2記帳ノードに送信するステップと、
前記第1記帳ノードが、前記第2記帳ノードの前記アーカイブポイント情報に対する裏書き情報を受信するステップと、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記同期されたブロックチェーンデータをアーカイブするステップと、を含む。
【0006】
これに応じて、本願の実施例は、ブロックチェーンシステムに用いられる、ブロックチェーンデータのアーカイブ装置を提供する。前記ブロックチェーンシステムは、コンセンサスノードと、第1記帳ノードと、第2記帳ノードとを含み、前記装置は、
前記第1記帳ノードが、前記コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定するように構成される同期ユニットであって、前記同期されたブロックチェーンデータには、状態データが含まれる、同期ユニットと、
前記第1記帳ノードが、前記状態データから現在の取引に必要なターゲット状態データを決定し、前記ターゲット状態データをバックアップするように構成される決定ユニットと、
前記第1記帳ノードが、バックアップされたターゲット状態データに基づいて前記同期ブロック高さの状態データスナップショットを生成し、前記状態データスナップショット、前記同期ブロック高さ、及び前記第1記帳ノードの署名情報を共同でアーカイブポイント情報として前記第2記帳ノードに送信するように構成される生成ユニットと、
前記第1記帳ノードが、前記第2記帳ノードの前記アーカイブポイント情報に対する裏書き情報を受信するように構成される受信ユニットと、
前記第1記帳ノードが、前記裏書き情報及び前記アーカイブポイント情報に基づいて、前記同期されたブロックチェーンデータをアーカイブするように構成されるアーカイブユニットと、を含む。
【0007】
また、本願の実施例は、プロセッサとメモリとを備える電子機器をさらに提供する。前記メモリには、実行可能な命令が記憶され、前記プロセッサは、前記メモリに記憶された実行可能な命令を実行すると、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法を実現する。
【0008】
また、本願の実施例は、実行可能な命令を記憶したコンピュータ可読記憶媒体をさらに提供する。前記実行可能な命令は、プロセッサによって実行されると、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法を実現させる。
【図面の簡単な説明】
【0009】
本願の実施例の構成をより明確に説明するために、以下に、実施例の説明に必要な図面を簡単に紹介する。明らかに、以下の説明における図面は本願のいくつかの実施例を示しているに過ぎず、当業者であれば、創造的な労働をすることなく、これらの図面から他の図面を得ることもできる。
【0010】
【
図1A】本願の実施例で提供されるブロックチェーンデータのアーカイブシステムの構成の模式図である。
【
図1B】本願の実施例で提供されるブロックチェーンシステムの構成の模式図である。
【
図2A】本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
【
図2B】本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
【
図2C】本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
【
図3】本願の実施例で提供されるサブ状態データのバックアップの模式図である。
【
図4】本願の実施例で提供される状態データに対応するマークルツリーのスナップショットの模式図である。
【
図5】本願の実施例で提供される第1記帳ノードのブロックチェーンデータのアーカイブの模式図である。
【
図6】本願の実施例で提供されるブロックチェーンシステムにおけるブロックチェーンデータのアーカイブの手順の模式図である。
【
図7】本願の実施例で提供される状態データに対応するマークルツリーの構造の模式図である。
【
図8】本願の実施例で提供される第1記帳ノードがローカルのワールド状態を構築する手順の模式図である。
【
図9】本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
【
図10】本願の実施例で提供される第1記帳ノードが最新のブロックチェーンデータを取得する手順の模式図である。
【
図11】本願の実施例で提供されるブロックチェーンデータのアーカイブ装置の構成の模式図である。
【
図12】本願の実施例で提供されるブロックチェーンデータのアーカイブ装置の構成の模式図である。
【
図13】本願の実施例で提供されるブロックチェーンデータのアーカイブ装置の構成の模式図である。
【
図14】本願の実施例で提供されるブロックチェーンデータのアーカイブ装置の構成の模式図である。
【
図15】本願の実施例で提供されるブロックチェーンデータのアーカイブ装置の構成の模式図である。
【
図16】本願の実施例で提供される電子機器の構成の模式図である。
【発明を実施するための形態】
【0011】
以下、本願の実施例の図面を参照しながら、本願の実施例の構成を明確かつ完全に説明するが、明らかなように、説明する実施例は、本願のいくつかの実施例に過ぎず、全ての実施例ではない。当業者が創造的な労働をせずに本願の実施例から得る全ての他の実施例は、本願の保護範囲に属する。
【0012】
以下の説明に記載の「いくつかの実施例」は、全ての可能な実施例の部分集合を記述するものである。ただし、理解できるものとして、「いくつかの実施例」は、全ての可能な実施例の同じ部分集合又は異なる部分集合であってもよく、且つ矛盾しない限り、互いに組み合わせることができる。
【0013】
以下の説明に記載の用語「第1/第2/第3」は、類似した対象を区別するものに過ぎず、対象に対する特定の順序を表すものではない。理解できるものとして、「第1/第2/第3」は、可能な場合、特定の順序又は優先順位を交換してもよい。これにより、ここで説明される本願の実施例は、ここで図示又は説明されるもの以外の順序で実施されることが可能になる。以下の説明に記載の用語「複数」は、少なくとも2つを指す。
【0014】
別に定義しない限り、本明細書で使用される全ての技術的用語及び科学的用語は、当業者が通常理解する意味と同じである。本明細書で使用される用語は、本願の実施例を説明することのみを目的としており、本願を制限することを意図するものではない。
【0015】
本願の実施例をさらに詳細に説明するに先立って、本願の実施例で提供される名詞及び用語を説明する。本願の実施例で提供される名詞及び用語は、以下の解釈を適用する。
【0016】
1)ブロックチェーン(Blockchain)は、ブロック(Block)で形成される暗号化された、チェーン式の取引記憶構造である。例えば、各ブロックのヘッダは、ブロック内の全ての取引のハッシュ値を含むと共に、直前のブロック内の全ての取引のハッシュ値を含むことができる。これにより、ハッシュ値に基づいてブロック内の取引の改ざん防止及び偽造防止を達成する。新たに生成された取引は、ブロックに充填されて、ブロックチェーンシステムにおけるノードのコンセンサスを経た後、ブロックチェーンの末尾に追加され、チェーン式の増大につながる。
【0017】
2)ブロックチェーンネットワーク(Blockchain Network)は、ブロックチェーンシステムとも呼ばれ、コンセンサス方式によって新たなブロックをブロックチェーンに入れる一連のノードの集合を指す。
【0018】
3)取引(Transaction)は、コンピュータ用語「トランザクション」と同等である。取引は、ブロックチェーンシステムに提出して実行する必要がある操作を含み、単に商業的な文脈における取引を意味するものではない。ブロックチェーン技術において「取引」という用語が慣習的に使用されていることに鑑み、本願の実施例は、この慣習に従う。
【0019】
例えば、配置(Deploy)取引は、指定されたスマートコントラクトをブロックチェーンシステム内のノードにインストールし、それが呼び出される準備をしておくためのものである。呼び出し(Invoke)取引は、スマートコントラクトを呼び出すことによりブロックチェーンに取引の記録を追加し、ブロックチェーンの状態データベースに対して、更新操作(状態データベースにおけるキー値ペアの追加、削除、及び修正を含む)及び照会操作(即ち、状態データベースにおけるキー値ペアの照会)を含む操作を行うためのものである。
【0020】
4)台帳(Ledger)は、ブロックチェーン(台帳データとも呼ばれる)と、ブロックチェーンと同期する状態データベースとの総称である。そのうち、ブロックチェーンは、ファイルシステムにおけるファイルの形式で取引を記録する。状態データベースは、キー(Key)値(Value)ペアの形式でブロックチェーンにおける取引を記録し、ブロックチェーンにおける取引に対する迅速な照会をサポートするためのものである。状態データベースは、台帳データベースとも呼ばれる。
【0021】
5)スマートコントラクト(Smart Contracts)は、チェーンコード(Chaincode)又はアプリケーションコードとも呼ばれ、ブロックチェーンネットワークのノードに配置されたプログラムである。ノードは、受信された取引で呼び出されたスマートコントラクトを実行して、状態データベースのキー値ペアデータに対して更新又は照会の操作を行う。
【0022】
6)コンセンサス(Consensus)は、ブロックチェーンシステムにおける1つの過程であり、関連する複数のノードの間で、ブロックにおける取引に対して合意するためのものである。合意されたブロックは、ブロックチェーンの末尾に追加される。コンセンサスを実現するメカニズムは、プルーフ・オブ・ワーク(PoW:Proof of Work)、プルーフ・オブ・ステーク(PoS:Proof of Stake)、及びデリゲート・プルーフ・オブ・ステーク(DPoS:Delegated Proof-of-Stake)などを含む。
【0023】
ブロックチェーンシステムの動作時間の増加に伴い、ブロックチェーンシステムにおける各ノードのブロックチェーンデータが占める記憶空間もますます大きくなり、ブロックチェーンの動作過程に悪影響が与えられる。関連技術で提供される構成では、通常、ノードの台帳スナップショットを生成し、次に、台帳スナップショットを専用の分散ストレージシステムに記憶し、最後に、スナップショットポイントより前のブロック、取引情報、及び領収書などのブロックデータをノードローカルから削除して、ノードローカルの記憶空間の使用を低減する。
【0024】
関連技術の研究及び実践の過程において、本願の出願人は、台帳スナップショットを生成する際に、ブロックチェーンシステムが依然として取引サービスを正常に提供しており、記帳ノードの状態データに対してスナップショットの読み書きを行う際に取引が依然として存在すると、スナップショットの読み書きが取引と衝突することで、スナップショットの読み取りの失敗、又はスナップショットによって読み取られたデータの不正確を引き起こし、生成された状態データスナップショットも公信力に欠けることを見出した。このため、関連技術で提供される構成では、ブロックチェーンデータのアーカイブ精度及びアーカイブ効率が低い。
【0025】
本願の実施例は、ブロックチェーンデータのアーカイブ精度及びアーカイブ効率を効果的に向上させることができるブロックチェーンデータのアーカイブ方法、装置、電子機器、及びコンピュータ可読記憶媒体を提供する。そのうち、該ブロックチェーンデータのアーカイブ装置は、電子機器に組み込むことができ、該電子機器は、サーバであってもよいし、端末などの機器であってもよい。
【0026】
本願の実施例で提供されるブロックチェーンデータのアーカイブ方法は、主に、ブロックチェーンシステムに応用され、ブロックチェーンは、分散型データ記憶、ポイントツーポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムなどのコンピュータ技術の新しい応用モードである。ブロックチェーンは、実質的に、脱中心化データベースであり、暗号学方法を用いて関連付けて生成された一連のデータブロックであり、各データブロックそれぞれは、1ロットのネットワーク取引の情報を含み、その情報の有効性(偽造防止)を検証し、次のブロックを生成するためのものである。ブロックチェーンは、ブロックチェーン最下層プラットフォーム、プラットフォーム製品サービス層、及びアプリケーションサービス層を含んでもよい。
【0027】
ブロックチェーン最下層プラットフォームは、ユーザ管理、基本サービス、スマートコントラクト、及び運営監視制御などの処理モジュールを含んでもよい。そのうち、ユーザ管理モジュールは、公開鍵及び秘密鍵の生成のメンテナンス(アカウント管理)、鍵管理、及びユーザの真のアイデンティティとブロックチェーンアドレスとの対応関係のメンテナンス(権限管理)などを含む、全てのブロックチェーン参加者のアイデンティティ情報管理を担当するとともに、許可される場合に、いくつかの真のアイデンティティの取引状況を監督管理して監査し、リスクコントロールの規則設定を提供する(リスクコントロール及び監査)。基本サービスモジュールは、全てのブロックチェーンノード機器に配置され、サービス要求の有効性を検証し、有効要求をコンセンサスしてストレージに記録する。1つの新たなサービス要求に対して、基本サービスモジュールは、まず、インタフェースに適応して解析及び認証処理を行い(インタフェース適応)、次に、コンセンサスアルゴリズムによってサービス情報を暗号化し(コンセンサス管理)、暗号化されたものに対して、共有台帳への完全且つ一貫した伝送(ネットワーク通信)、記録及び記憶を行う。スマートコントラクトモジュールは、コントラクトの登録発行、コントラクトのトリガ、及びコントラクトの実行を担当する。開発者は、あるプログラミング言語でコントラクトロジックを定義してブロックチェーンに発行してもよい(コントラクト登録)。スマートコントラクトモジュールは、コントラクト条項のロジックに基づいて、鍵又は他のイベントを呼び出してコントラクトの実行をトリガし、コントラクトロジックを完了するとともに、コントラクトのアップグレード及び無効化の機能を提供する。運営監視制御モジュールは、主に、製品リリース過程における配置、設定の修正、コントラクト設定、クラウド適応、及び製品動作中のリアルタイム状態の可視化の出力、例えば、警告、ネットワーク状況の監視制御、ノード機器の健康状態の監視制御などを担当する。
【0028】
プラットフォーム製品サービス層は、典型的なアプリケーションの基本能力及び実現フレームを提供する。開発者は、これらの基本能力に基づいて、業務の特性を重ね、業務ロジックのブロックチェーン実現を完了することができる。アプリケーションサービス層は、ブロックチェーン手段に基づくアプリケーションサービスをサービス参加者に提供して使用させる。
【0029】
以下、
図1Aを参照して、本願の実施例で提供されるブロックチェーンシステムの例示的な応用を説明する。
図1Aは、本願の実施例で提供されるブロックチェーンデータのアーカイブシステム100の構成の模式図であり、ブロックチェーンシステム200(ブロックチェーンシステム200は、複数のノードを含み、
図1Aにノード210を例示的に示す)、及びサービスシステム400(サービスシステム400に属する端末410及びそのグラフィックインタフェース420を例示的に示す)を含む。以下、それぞれ説明する。
【0030】
ブロックチェーンシステム200のタイプは、柔軟で多様であり、例えば、パブリックチェーン、プライベートチェーン、又はコンソーシアムチェーンのいずれか1つであってもよい。パブリックチェーンを例にすると、任意のサービスシステム(又は、サービス主体と呼ばれる)の電子機器、例えば、端末及びサーバは、許可を必要とすることなく、ブロックチェーンシステム200にアクセスすることができる。コンソーシアムチェーンを例にすると、サービスシステムが許可を受けると、その管轄する電子機器(例えば、端末/サーバ)は、ブロックチェーンシステム200にアクセスすることができ、このとき、ブロックチェーンシステム200における特殊なノード、即ちクライアントノードになる。
【0031】
ブロックチェーンシステム200は、サービスシステムのクライアントノード(以下、説明の便宜上、端末410を例とする)から提出された取引を受信し、取引を実行して台帳を更新するか又は台帳を照会し、端末410のグラフィックインタフェース420に取引実行の様々な中間結果又は最終結果を表示する。理解できるものとして、取引を受信して取引を実行する上記ブロックチェーンシステム200は、具体的に、ブロックチェーンシステム200におけるネイティブノード210を指し、当然のことながら、サービスシステムのクライアントノードがブロックチェーンシステム200におけるネイティブノード210の機能(例えば、コンセンサス機能、記帳機能)を有する場合、対応するクライアントノードを含んでもよい。
【0032】
以下、サービスシステムがブロックチェーンシステムにアクセスすることを例として、ブロックチェーンシステムの例示的な応用を説明する。
【0033】
図1Aを参照すると、端末410は、データをブロックチェーンにアップロードする必要がある場合、更新操作に対応する取引を生成し、取引をブロックチェーンシステム200にブロードキャストすることができる。該取引には、アップロードする必要があるデータが含まれる。また、取引において、更新操作を実現するために呼び出す必要があるスマートコントラクト、及びスマートコントラクトに伝達するパラメータをさらに指定してもよく、取引には、サービスシステム400が署名したデジタル署名(例えば、認証センター300がサービスシステム400に発行したデジタル証明書における秘密鍵を用いて、取引の要約を暗号化したものである)をさらに付してもよい。。
【0034】
ブロックチェーンシステム200におけるノード210は、取引を受信すると、取引に付されているデジタル署名を検証する。ノード210は、取引におけるデジタル署名の検証が合格した場合、取引に付されているサービスシステム400のアイデンティティに基づいて、サービスシステム400が取引権限を有するか否かを確認する。デジタル署名及び権限の検証のうち、いずれの検証の失敗も取引の失敗につながる。検証が成功すると、ノード210自身のデジタル署名(例えば、ノード210の秘密鍵で取引の要約を暗号化したもの)を署名し、ブロックチェーンシステム200におけるブロードキャストを継続する。ここで、デジタル署名は、即ち署名情報である。
【0035】
ブロックチェーンシステム200における、順序付け機能を有するノード210は、検証に成功した取引を受信すると、取引を新たなブロックに充填して、ブロックチェーンシステム200における、コンセンサスサービスを提供するノード(即ち、コンセンサスノード)にブロードキャストする。
【0036】
ブロックチェーンシステム200における、コンセンサスサービスを提供するノード210は、合意のために、新たなブロックに対してコンセンサス過程を行い、記帳機能を提供するノード210(即ち、記帳ノード)は、新たなブロックをブロックチェーンの末尾に追加し、新たなブロックにおける取引を実行し、データを提出する取引に対して、該データに対応するキー値ペアを状態データベースに追加することにより、状態データベースの更新を実現する。説明すべきものとして、ブロックチェーンシステムにおける1つのノードは、複数の機能を同時に提供することができ、例えば、順序付け機能及びコンセンサス機能を同時に提供する。
【0037】
同様に、端末410は、ブロックチェーンシステム200からデータを照会する必要がある場合、照会操作に対応する取引(例えば、取引は、照会対象のキーを含むことができる)を生成し、取引において、照会操作を実現するために呼び出す必要があるスマートコントラクト、及びスマートコントラクトに伝達するパラメータを指定し、取引をブロックチェーンシステム200にブロードキャストしてもよい。取引には、サービスシステム400が署名したデジタル署名をさらに付してもよい。
【0038】
ブロックチェーンシステム200におけるノード210は、検証、ブロック充填、及びコンセンサス合意を経た後、新たなブロックをブロックチェーンの末尾に追加し、新たなブロックにおける取引を実行し、データを照会する取引に対して、状態データベースから対応するキー値ペアを照会し、照会結果を返信する(例えば、照会結果は、提出された取引におけるキーに対応する値であってもよい)。
【0039】
本願の実施例では、ブロックチェーンシステムは、コンセンサスノードと複数の記帳ノードとを含んでもよい。記帳ノードは、チェーンコードを実行することにより、台帳に対する読み書き操作を実現することを担当することができ、つまり、主に、状態データと台帳のコピーとのメンテナンスを担当する。記帳ノードは、Peerノードと呼んでもよい。コンセンサスノードは、コンセンサス順序付けノード(Orderer)と呼んでもよく、ブロックチェーンシステムにおいて、主に、署名情報が含まれる取引を受信し、パッケージングされていない取引を順序付け、ブロックを生成してPeerノードにブロードキャストするために用いられる。ブロックチェーンシステムに含まれるコンセンサスノードの数量は、1つのみであってもよく、もちろん、ブロックチェーンシステムは、コンセンサスノードのノードクラスタを含んでもよい。本願の実施例では、説明の便宜上、アーカイブ操作を行う必要がある記帳ノードを第1記帳ノードと呼び、他の記帳ノードを第2記帳ノードと呼ぶ。ここで、第2記帳ノードの数量は、少なくとも1つである。
【0040】
例えば、
図1Bに示すブロックチェーンシステムの構成の模式図を参照すると、ブロックチェーンシステム500は、第1記帳ノード510と、第2記帳ノード520と、コンセンサスノード530とを含む。第1記帳ノード510は、コンセンサスノード530と、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定することができ、該同期されたブロックチェーンデータには、状態データが含まれる。次に、第1記帳ノード510は、状態データから現在の取引に必要なターゲット状態データを決定し、ターゲット状態データをバックアップする。ここで、現在の取引は、ブロックチェーンデータの同期後に行われる取引である。第1記帳ノード510は、バックアップされたターゲット状態データに基づいて同期ブロック高さの状態データスナップショットを生成し、状態データスナップショット、同期ブロック高さ、及び第1記帳ノード510の署名情報を共同でアーカイブポイント情報とし、アーカイブポイント情報を第2記帳ノード520に送信する。第1記帳ノード510は、第2記帳ノード520のアーカイブポイント情報に対する裏書き情報を受信し、該裏書き情報は、第2記帳ノード520のアーカイブポイント情報に対する承認を示すためのものである。最終的に、第1記帳ノード510は、裏書き情報及びアーカイブポイント情報に基づいて、同期されたブロックチェーンデータをアーカイブする。
【0041】
ここで、ブロックチェーンデータは、ブロックチェーンにおけるブロックデータと、ワールド状態(World State)を記述する状態データとを含んでもよい。そのうち、ブロックデータは、実際にブロックチェーンで発生した各取引の記録である。また、ブロックデータは、通常ブロックデータと、設定ブロックデータとを含んでもよい。状態データは、各アカウント及びスマートコントラクトを記録した現在の状態を含んでもよく、ノードの状態データは、ノードの状態データベース(即ち、ローカルデータベース)に記憶されてもよい。
【0042】
ここで、アーカイブは、データアーカイブと理解することができ、主に、ブロックチェーンデータのうちのいくつかのデータをコピーすることにより、スナップショットを取得することを指し、記帳ノードのローカルの記憶空間を節約するために、一定範囲内のブロックデータを削除し、及び/又は他の分散ストレージシステム(ブロックチェーンシステムと異なる分散ストレージシステムを指し、アーカイブに専用する)のコールドストレージに転記することを指してもよい。
【0043】
本願の実施例では、ブロックチェーンシステムにおけるノード(例えば、記帳ノードやコンセンサスノードなど)は、サーバ又は端末であってもよく、クライアントノードも同様である。そのうち、サーバは、独立した物理サーバであってもよく、複数の物理サーバで構成されたサーバクラスタ又は分散型システムであってもよく、クラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウドストレージ、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、コンテンツデリバリネットワーク(CDN:Content Delivery Network)、及びビッグデータや人工知能プラットフォームなどのベースクラウドコンピューティングサービスを提供するクラウドサーバであってもよい。端末は、スマートフォン、タブレットコンピュータ、ノートパソコン、デスクトップコンピュータ、スマートスピーカ、スマートウォッチなどであってもよいが、これらに限定されない。端末及びサーバは、有線又は無線の通信方式によって直接又は間接的に接続されてもよく、本願の実施例はこれを制限しない。
【0044】
以下、本願の実施例で提供されるブロックチェーンシステムの例示的な応用及び実施を参照しながら、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法を説明する。説明すべきものとして、以下の実施例の記述順序は、実施例の好ましい順序を限定するものではない。
【0045】
本願の実施例では、ブロックチェーンデータのアーカイブ装置の観点から説明する。該ブロックチェーンデータのアーカイブ装置は、電子機器に組み込むことができ、該電子機器は、サーバであってもよいし、端末などの機器であってもよい。
【0046】
図2Aを参照する。
図2Aは、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
図2Aに示されたステップを参照して説明する。
【0047】
ステップ101では、第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定し、同期されたブロックチェーンデータには、状態データが含まれる。
【0048】
本願の実施例では、ブロックチェーンシステムは、コンセンサスノードと複数の記帳ノードとを含む。記帳ノードは、Peerノードと呼んでもよく、チェーンコードを実行することにより、台帳に対する読み書き操作を実現することを担当し、つまり、主に、状態データと台帳のコピーとのメンテナンスを担当する。コンセンサスノードは、署名情報が含まれる取引を受信し、パッケージングされていない取引を順序付け、ブロックを生成してPeerノードにブロードキャストする。本願の実施例では、説明の便宜上、データアーカイブを行う必要がある記帳ノードを第1記帳ノードと呼び、他の記帳ノードを第2記帳ノードと呼ぶ。ここで、第2記帳ノードの数量は、少なくとも1つである。
【0049】
第1記帳ノードは、データアーカイブを行う必要がある場合、まず、コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定する。ここで、同期されたブロックチェーンデータには、ブロックデータ及び状態データが含まれ、ブロックデータは、ブロックチェーンにおけるブロックを記述するためのものであり、状態データは、ブロックチェーンシステムにおける各アカウント及びスマートコントラクトを記録した現在の状態を含んでもよい。
【0050】
ここで、同期ブロック高さは、第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行って得られた同期されたブロックチェーンデータのブロック高さ(又は、ブロック数量と呼ばれる)を指してもよい。例えば、第1記帳ノードの同期されたブロックチェーンデータに5つのブロックが存在する場合、同期ブロック高さは、5であってもよい。
【0051】
いくつかの実施例では、以下のような方式によって、上述した第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行うことを実現することができる。第1記帳ノードは、コンセンサスノードに、第1記帳ノードのアイデンティティ識別子が含まれる同期要求を送信する。第1記帳ノードは、同期要求に対してコンセンサスノードから送信されたブロックを受信する。ここで、ブロックは、コンセンサスノードによる同期要求における第1記帳ノードのアイデンティティ識別子のチェックが合格した場合に送信されたものである。第1記帳ノードは、コンセンサスノードから送信されたブロックに基づいて、ローカルのブロックチェーンデータを更新することにより、同期されたブロックチェーンデータを取得する。
【0052】
例えば、第1記帳ノードは、コンセンサスノードに同期要求を送信することができ、該同期要求には、第1記帳ノードのアイデンティティ識別子を付してもよい。コンセンサスノードは、同期要求を受信すると、同期要求における第1記帳ノードのアイデンティティ識別子をチェックする。コンセンサスノードは、第1記帳ノードのアイデンティティ識別子のチェックが合格した場合、即ち、第1記帳ノードのアイデンティティに問題がないと決定した場合、コンセンサスノードのローカルに記憶されたブロックを第1記帳ノードに送信する。ここで、コンセンサスノードは、ローカルに記憶された全てのブロックを第1記帳ノードに送信してもよいし、計算リソースを節約するために、最新のブロックを第1記帳ノードに送信してもよい。そのうち、最新のブロックは、ブロックチェーンの末尾に最新に追加され、且つ数量が同期数量閾値(例えば、1つ又は2つ)に等しいブロックを指してもよいし、前回の同期(即ち、コンセンサスノードが前回に第1記帳ノードにブロックを送信した)の上で追加されたブロックを指してもよい。以下、理解を容易にするために、コンセンサスノードが最新のブロックを第1記帳ノードに送信する場合を例として説明する。
【0053】
第1記帳ノードは、コンセンサスノードから最新のブロックを受信すると、受信された最新のブロックに基づいて、ローカルのブロックチェーンデータを更新し、更新されたブロックチェーンデータを同期されたブロックチェーンデータとし、ブロックチェーンデータの同期を完了する。第1記帳ノードは、同期されたブロックチェーンデータに存在するブロック数量を識別し、該ブロック数量を同期されたブロックチェーンデータの同期ブロック高さとする。例えば、同期されたブロックチェーンデータに5つのブロックが含まれる場合、同期されたブロックチェーンデータの同期ブロック高さは、5である。
【0054】
ここで、第1記帳ノードは、アーカイブ要求又はアーカイブ指示(例えば、人為的にトリガされたアーカイブ要求又はアーカイブ指示)を受信すると、同期要求をトリガしてもよい(コンセンサスノードに同期要求を送信することを指す)。第1記帳ノードは、一定の時間帯ごとに、同期要求の送信を自動的にトリガしてもよい。例えば、第1記帳ノードは、5分や20分などの時間帯ごとに、同期要求を1回トリガし、次に、同期されたブロックチェーンデータの同期ブロック高さを決定するように設定されてもよい。
【0055】
ステップ102では、第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定し、ターゲット状態データをバックアップする。
【0056】
ブロックチェーンデータが同期された後、ブロックチェーンシステムにおけるノードは、依然として取引を行っている可能性がある。これらの取引を無視すれば、データアーカイブの正確性の低下を引き起こす。そのため、本願の実施例において、第1記帳ノードは、同期されたブロックチェーンデータに含まれる状態データから、現在の取引に必要なターゲット状態データを決定し、ターゲット状態データをバックアップする。ここで、現在の取引は、ブロックチェーンデータの同期後に行われる取引である。
【0057】
説明すべきものとして、現在の取引が存在しないか、又は状態データに現在の取引に必要なターゲット状態データが存在しない場合、第1記帳ノードは、同期されたブロックチェーンデータを直接的にアーカイブすることができる。この場合、データアーカイブの正確性を保証することができる。
【0058】
いくつかの実施例では、以下のような方式によって、上述した第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定することを実現することができる。即ち、第1記帳ノードが、同期ブロック高さとアーカイブブロック高さとをマッチングし、同期ブロック高さとアーカイブブロック高さとのマッチングが成功した場合、第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定する。
【0059】
ここで、意義がないか又は用途が少ない複数回のデータアーカイブによる計算リソースの浪費を回避するために、データアーカイブに条件を予め設定しておいてもよい。例を挙げて説明すると、アーカイブブロック高さを予め設定してもよい。第1記帳ノードは、同期ブロック高さを取得すると、同期ブロック高さとアーカイブブロック高さとをマッチングする。同期ブロック高さとアーカイブブロック高さとのマッチングが成功した場合、第1記帳ノードは、状態データから現在の取引に必要なターゲット状態データを決定する操作を実行する。同期ブロック高さとアーカイブブロック高さとのマッチングが失敗した場合、第1記帳ノードは、後続の操作を実行しない。
【0060】
アーカイブブロック高さは、実際の応用シナリオに応じて設定してもよく、その数量は、1つであってもよいし、複数であってもよい。例えば、間隔が同じである複数のアーカイブブロック高さを、例えば、具体的に10、20、…10×nを含む10の整数倍に設定してもよく、ここで、nは、1よりも大きい整数である。アーカイブブロック高さの数量が1つのみである場合、「同期ブロック高さとアーカイブブロック高さとのマッチングが成功した」ということは、同期ブロック高さがアーカイブブロック高さと同じであることを指してもよく、「同期ブロック高さとアーカイブブロック高さとのマッチングが失敗した」ということは、同期ブロック高さがアーカイブブロック高さと異なることを指してもよい。アーカイブブロック高さの数が複数である場合、「同期ブロック高さとアーカイブブロック高さとのマッチングが成功した」ということは、同期ブロック高さがある1つのアーカイブブロック高さと同じであることを指してもよく、「同期ブロック高さとアーカイブブロック高さとのマッチングが失敗した」ということは、同期ブロック高さが全てのアーカイブブロック高さと異なることを指してもよい。上記の方式によれば、データアーカイブの必要性を保証し、計算リソースを節約し、意義がないか又は用途が少ないデータアーカイブを回避することができる。
【0061】
ステップ103では、第1記帳ノードが、バックアップされたターゲット状態データに基づいて同期ブロック高さの状態データスナップショットを生成し、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報を共同でアーカイブポイント情報として第2記帳ノードに送信する。
【0062】
ここで、状態データスナップショットは、状態データ(ここでは、バックアップされたターゲット状態データを指す)に対してスナップショットコピーを行って得られたスナップショットであってもよい。
【0063】
第1記帳ノードは、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報をアーカイブポイント情報にパッケージし、アーカイブポイント情報を第2記帳ノードに送信してもよい。ここで、第1記帳ノードは、状態データスナップショットを署名することにより、署名情報を取得することができる。
【0064】
ステップ104では、第1記帳ノードが、第2記帳ノードのアーカイブポイント情報に対する裏書き情報を受信する。
【0065】
ここで、裏書き情報は、第2記帳ノードのアーカイブポイント情報に対する承認を示すためのものである。第2記帳ノードは、受信されたアーカイブポイント情報をチェックし、チェックが合格した場合にアーカイブポイント情報を署名することにより、裏書き情報を取得してもよい。
【0066】
例を挙げて説明すると、第2記帳ノードは、第1記帳ノードから送信されたアーカイブポイント情報における状態データスナップショットのルートのハッシュ値をチェックしてもよい。第1記帳ノードの状態データスナップショットのルートのハッシュ値が第2記帳ノード自身の状態データスナップショットのルートのハッシュ値と同じである(即ち、チェックが合格した)場合、第2記帳ノードは、該アーカイブポイント情報を承認し、アーカイブポイント情報を署名することにより、アーカイブポイント情報に対する裏書き情報を取得する。また、第2記帳ノードは、アーカイブポイント情報を他の第2記帳ノードにブロードキャストしてもよい。
【0067】
いくつかの実施例において、上記方法は、任意のステップの間に、第1記帳ノードが第2記帳ノードから送信されたアーカイブポイント情報を受信すると、第1記帳ノードが、アーカイブポイント情報から第2記帳ノードの状態データのルートのハッシュ値を抽出するステップと、第1記帳ノードが、第2記帳ノードの状態データのルートのハッシュ値と、第1記帳ノード自身の状態データのルートのハッシュ値とを比較するステップと、第2記帳ノードの状態データのルートのハッシュ値が第1記帳ノード自身の状態データのルートのハッシュ値と同じである場合、第1記帳ノードが、アーカイブポイント情報を署名することにより、アーカイブポイント情報の裏書き情報を取得するステップと、第1記帳ノードが、裏書き情報を第2記帳ノードに送信し、アーカイブポイント情報をブロックチェーンシステムにブロードキャストするステップと、をさらに含む。
【0068】
ここで、第1記帳ノードは、データアーカイブを必要とする第2記帳ノードから送信されたアーカイブポイント情報を受信する可能性もある。この場合、第1記帳ノードは、第2記帳ノードから送信されたアーカイブポイント情報から第2記帳ノードの状態データのルートのハッシュ値を抽出し、抽出されたルートのハッシュ値と、第1記帳ノード自身の状態データのルートのハッシュ値とを比較する。ルートのハッシュ値の生成方式は後述する。第2記帳ノードの状態データのルートのハッシュ値が第1記帳ノード自身の状態データのルートのハッシュ値と同じである場合、第1記帳ノードは、第2記帳ノードから送信されたアーカイブポイント情報を署名することにより、該アーカイブポイント情報の裏書き情報を取得し、裏書き情報を第2記帳ノードに送信し、同時に、第2記帳ノードから送信されたアーカイブポイント情報をブロックチェーンシステムにブロードキャストしてもよい。上記の方式によれば、裏書きの正確性及び有効性を向上させる。
【0069】
ステップ105では、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、同期されたブロックチェーンデータをアーカイブする。
【0070】
例えば、第1記帳ノードは、裏書き情報及びアーカイブポイント情報に基づいて、同期されたブロックチェーンデータにおける削除する必要があるターゲットブロックデータを決定し、ターゲットブロックデータに対して削除処理を行うと同時に、ターゲットブロックデータをアーカイブ専用の分散ストレージシステムに記憶してもよい。ここでの分散ストレージシステムは、ブロックチェーンシステムと異なる。
【0071】
図2Aに示すように、本願の実施例では、現在の取引に必要なターゲット状態データをバックアップし、バックアップされたターゲット状態データに基づいて状態データスナップショットを生成することにより、スナップショットと本々の取引の衝突問題が解決され、状態データのリアルタイムスナップショットが実現される。また、ブロックチェーンシステムにおける他の記帳ノードに、状態データスナップショットなどの情報に対して署名裏書きを行わせることにより、これらの情報が公信力を持つようになる。そのため、ブロックチェーンデータのアーカイブ効率及びアーカイブ正確性を大幅に向上させることができる。
【0072】
いくつかの実施例では、
図2Bを参照する。
図2Bは、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
図2Aに示されたステップ102は、ステップ201~ステップ204によって実現することができる。各ステップを参照して説明する。
【0073】
ステップ201では、第1記帳ノードが、サブ状態データに対応するブロック高さと、ローカルデータベースにおける記憶タグとを取得する。
【0074】
ここで、状態データは、第1記帳ノードのローカルデータベース(即ち、状態データベース)に記憶された複数のサブ状態データを含んでもよい。
【0075】
ここで、記憶タグは、ローカルデータベースにおけるキー値ペアK-V(key-value)を指してもよく、各K(キー)それぞれは、1つのV(値)に対応する。例えば、ある1つのサブ状態データのローカルデータベースにおける記憶タグは、K1-V1であってもよく、K1は、該サブ状態データのローカルデータベースにおける番号であり、V1は、この番号のローカルデータベースにおける対応する値である。
【0076】
異なるサブ状態データは、異なるブロック高さに対応する可能性があり、第1記帳ノードは、サブ状態データに対応するブロック番号に基づいて、サブ状態データに対応するブロック高さを決定することができる。例えば、第1サブ状態データに対応するのが第1ブロック(ブロックチェーンにおける1番目のブロックを指し、以下同様)である場合は、第1サブ状態データに対応するブロック高さが1であることを表すことができ、第2サブ状態データに対応するのが第3ブロックである場合は、第2サブ状態データに対応するブロック高さが3であることを表すことができる。第1記帳ノードは、ローカルデータベースから各サブ状態データそれぞれに対応するキー値ペアを読み取り、該キー値ペアをサブ状態データの記憶タグとすることができる。
【0077】
ステップ202では、第1記帳ノードが、サブ状態データに対応するブロック高さを、サブ状態データに対応する記憶タグに追加してマーク付けすることにより、マーク付けされた記憶タグを取得する。
【0078】
例えば、第1記帳ノードは、サブ状態データに対応するブロック高さを、該サブ状態データに対応する記憶タグに追加して、該記憶タグをマーク付けする。例えば、第1記帳ノードは、サブ状態データの記憶タグにバージョン番号(Version)を追加してもよい。該バージョン番号は、このサブ状態データに対応するブロック高さである。例を挙げて説明すると、あるサブ状態データに対応するブロック高さが5であり、記憶タグが(K1-V1)である場合、記憶タグにバージョン番号(ブロック高さ)を追加してマーク付けした後、マーク付けされた記憶タグは、(K1-V1,バージョン(5))であってもよい。
【0079】
ステップ203では、第1記帳ノードが、マーク付けされた記憶タグに基づいて、複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別する。
【0080】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、マーク付けされた記憶タグに基づいて、複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別することを実現することができる。即ち、第1記帳ノードが、現在の取引に対応する取引情報を取得し、第1記帳ノードが、取引情報に基づいて、第1記帳ノードの現在のブロックチェーンデータの現在ブロック高さを決定し、現在ブロック高さが同期ブロック高さを超える場合、第1記帳ノードが、現在のブロックチェーンデータに新たなブロックが存在すると決定し、第1記帳ノードが、現在のブロックチェーンデータから、新たなブロックにおける取引に必要な呼び出し情報を選別し、呼び出し情報が、呼び出されるサブ状態データを示すためのものであり、第1記帳ノードが、呼び出し情報とマーク付けされた記憶タグとに基づいて、複数のサブ状態データからターゲットサブ状態データを選別する。
【0081】
例えば、ブロックチェーンデータが同期された後、現在の取引に取引情報が依然として存在する場合は、このときにブロックチェーンシステムにおける記帳ノードが依然として取引を行っていることを意味する。そのため、第1記帳ノードは、コンセンサスノードから送信された新たなブロックを受信する。このとき、第1記帳ノードは、現在のブロックチェーンデータに基づいて現在ブロック高さを決定することができる。ここで説明すべきものとして、現在のブロックチェーンデータは、必ずしも同期されたブロックチェーンデータではなく、現在のブロックチェーンデータは、ブロックチェーンデータの同期後に取引を発生し続けることで、同期されたブロックチェーンデータを更新して得られたブロックチェーンデータである。そのため、現在のブロックチェーンデータと同期されたブロックチェーンデータのブロック高さは、異なる可能性がある。現在の取引に取引情報が存在しない場合は(現在の取引が存在しないことに同等である)、このときの現在のブロックチェーンデータが、同期されたブロックチェーンデータに等しいことを意味する。
【0082】
現在ブロック高さが同期ブロック高さを超える場合、第1記帳ノードは、現在のブロックチェーンデータに新たなブロックが存在すると決定し、現在のブロックチェーンデータから新たなブロックにおける取引に必要な呼び出し情報を選別する。呼び出し情報は、呼び出されるサブ状態データを示すためのものである。例えば、呼び出し情報は、現在の取引に、状態データにおけるどのブロック高さのどのサブ状態データを呼び出す必要があるかを示すために用いることができ、例えば、ブロック高さが3であり、サブ状態データ値がV1であるサブ状態データを呼び出す必要がある。第1記帳ノードは、呼び出し情報に基づいて、呼び出す必要があるサブ状態データのマーク付けされた記憶タグを決定し、決定されたマーク付けされた記憶タグに基づいて状態データからターゲットサブ状態データを選別する。例えば、再度、呼び出し情報は、ブロック高さが3であり、サブ状態データ値がV1であるサブ状態データを呼び出す必要があることを示すためのものである場合を例にすると、第1記帳ノードは、呼び出す必要があるターゲットサブ状態データのマーク付けされた記憶タグが(K1-V1,バージョン(3))であると決定することができる。第1記帳ノードは、このマーク付けされた記憶タグに基づいて、状態データからターゲットサブ状態データを選別することができる。そのうち、ターゲット状態データは、即ち、ここで選別された全てのターゲットサブ状態データを含む。上記の方式によれば、ターゲットサブ状態データを選別する正確性を向上させることができる。
【0083】
説明すべきものとして、現在ブロック高さが同期ブロック高さを超えない場合、第1記帳ノードは、後続の操作の実行を停止し、即ちデータアーカイブを停止することができる。
【0084】
ステップ204では、第1記帳ノードが、ターゲットサブ状態データをバックアップする。
【0085】
第1記帳ノードは、選別によってターゲットサブ状態データを取得すると、ターゲットサブ状態データをバックアップすることができる。
【0086】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、ターゲットサブ状態データをバックアップすることを実現することができる。即ち、第1記帳ノードが、取引情報から新たなブロックにおける取引に必要な取引操作情報を選別し、第1記帳ノードが、取引操作情報に基づいて、ターゲットサブ状態データに対応する取引操作タイプを決定し、取引操作タイプが更新操作である場合、第1記帳ノードが、更新操作に対応するターゲットサブ状態データをバックアップし、取引操作タイプが削除操作である場合、第1記帳ノードが、削除操作に対応するターゲットサブ状態データをバックアップし、バックアップされたターゲットサブ状態データに削除タグを追加する。ここで、削除タグは、バックアップされたターゲットサブ状態データを取引の実行時に読み取れないことを示すためのものである。
【0087】
例えば、第1記帳ノードは、現在のブロックチェーンデータの取引情報から、新たなブロックにおける取引に必要な取引操作情報を選別することができる。取引操作情報には、取引過程で呼び出されたこれらのターゲットサブ状態データの操作タイプが含まれ、通常、操作タイプは、更新や削除などを含んでもよい。第1記帳ノードは、取引操作情報に基づいて、ターゲットサブ状態データに対応する取引操作タイプを決定し、例えば、取引操作情報における各ターゲットサブ状態データと取引操作タイプとを一対一に対応させ、最後に、各ターゲットサブ状態データそれぞれに対応する取引操作タイプを取得する。
【0088】
第1記帳ノードは、ターゲットサブ状態データの取引操作タイプに応じて、ターゲットサブ状態データをバックアップする。
図3に示すように、ターゲットサブ状態データの取引操作タイプが更新操作である場合、更新操作に対応するターゲットサブ状態データを直接的にバックアップする。例えば、更新操作に対応するターゲットサブ状態データのマーク付けされた記憶タグが(K1-V1,バージョン(5))である場合、このサブ状態データを直接的にバックアップすればよい。説明すべきものとして、
図3における新たなブロックのブロック高さは、即ち、現在ブロック高さを指す。
【0089】
ターゲットサブ状態データの取引操作タイプが削除操作である場合、第1記帳ノードは、削除操作に対応するターゲットサブ状態データをバックアップし、バックアップされたターゲットサブ状態データに削除タグを追加する。例えば、
図3において、削除操作に対応するターゲットサブ状態データのマーク付けされた記憶タグが(K3-V3,バージョン(4))である場合を例にすると、第1記帳ノードは、このターゲットサブ状態データを直接的にバックアップし、このバックアップされたターゲットサブ状態データに1つの削除タグを追加する。ここで、削除タグは、任意のマークであってもよく、例えば、deleted、Dであってもよいし、中国語文字
【数1】
(削除を意味する)であってもよいし、他の削除マークであってもよい。バックアップされたターゲットサブ状態データに削除タグを追加することは、該バックアップされたターゲットサブ状態データに対応するマーク付けされた記憶タグに削除タグを追加することにより、マーク付けされた記憶タグに対する更新を実現することを指してもよい。中国語文字
【数2】
を例にすると、バックアップされたターゲットサブ状態データに対応するマーク付けされた記憶タグを(K3-V3,バージョン(4),
【数3】
)に更新することができる。第1記帳ノードが、バックアップされたターゲットサブ状態データに削除タグを追加すると、該バックアップされたターゲットサブ状態データは、後続の取引時に読み取られないようになる。上記の方式によれば、ターゲットサブ状態データに対応する取引操作タイプに応じて、異なる方法でバックアップし、バックアップの有効性及び正確性を向上させる。
【0090】
図2Bにおいて、
図2Aに示されたステップ103は、ステップ205~ステップ209で実現可能である。各ステップを参照して説明する。
【0091】
ステップ205では、第1記帳ノードが、状態データからブロック高さが同期ブロック高さを超えない同期サブ状態データを選別することにより、同期サブ状態データ集合を取得する。
【0092】
例えば、第1記帳ノードは、状態データにおけるサブ状態データのマーク付けされた記憶タグに基づいて、ブロック高さが同期ブロック高さを超えないサブ状態データを選別する。区別しやすいために、ここで選別されたサブ状態データを同期サブ状態データと名づける。同期ブロック高さが5であることを例にすると、第1記帳ノードは、ローカルデータベースから、マーク付けされた記憶タグにおけるブロック高さが5を超えないサブ状態データを選別し、これらの選別されたサブ状態データを同期サブ状態データとして同期サブ状態データ集合に追加することができる。
【0093】
ステップ206では、第1記帳ノードが、バックアップされたターゲットサブ状態データを新たな同期サブ状態データとして同期サブ状態データ集合に追加することにより、同期サブ状態データ集合を更新する。
【0094】
新たなブロックにおける取引(即ち、現在の取引)の影響を受け、第1記帳ノードの状態データにおける、更新操作に対応するターゲットサブ状態データは、既に更新された可能性があり、即ち、ステップ205で取得された同期サブ状態データ集合に含まれるのは、既に更新されたターゲットサブ状態データであり、第1記帳ノードの状態データにおける、削除操作に対応するターゲットサブ状態データが既に削除された可能性があり、即ち、ステップ205で取得された同期サブ状態データ集合には、削除操作に対応するターゲットサブ状態データが含まれない。そのため、本願の実施例において、同期サブ状態データ集合のデータの完全性及び正確性を保証するために、第1記帳ノードは、バックアップされたターゲットサブ状態データを新たな同期サブ状態データとして同期サブ状態データ集合に追加することにより、同期サブ状態データ集合に対する更新を実現する。
【0095】
バックアップされたターゲット状態データには、バックアップされた更新操作に対応するターゲットサブ状態データと、削除タグが追加されたバックアップされたターゲットサブ状態データとが含まれ得るため、この2つの状況についてそれぞれ説明する。
【0096】
1)更新操作に対応するターゲットサブ状態データについて、第1記帳ノードは、バックアップされた更新操作に対応するターゲットサブ状態データで、同期サブ状態データ集合における対応する同期サブ状態データを置き換える。例えば、更新操作に対応するターゲットサブ状態データが(K1-V1,バージョン(5))である場合を例にすると、新たなブロックの取引において(K1-V1’,バージョン(5+1))に更新され、ステップ205で取得された同期サブ状態データ集合に含まれるのも(K1-V1’,バージョン(5+1))である。このとき、第1記帳ノードは、以前にバックアップされた(K1-V1,バージョン(5))で、同期サブ状態データ集合における(K1-V1’,バージョン(5+1))を置き換える。このようにすると、後続に生成される状態データスナップショットの正確性を保証することができる。
【0097】
2)削除操作に対応するターゲットサブ状態データについて、(K3-V3,バージョン(4))を例にする。(K3-V3,バージョン(4))が既に現在の取引の過程で削除されたため、ステップ205で取得された同期されたサブ状態データ集合には、(K3-V3,バージョン(4))が含まれない。そのため、この削除タグが追加されたバックアップされたターゲットサブ状態データ、即ち、(K3-V3,バージョン(4)
,
【数4】
)を同期サブ状態データ集合に追加して、削除された(K3-V3,バージョン(4))の位置を補充する。
【0098】
説明すべきものとして、上記の例では、マーク付けされた記憶タグで対応するサブ状態データを表す。上記の方式では、置き換え及び追加の操作によって、更新された同期サブ状態データ集合を取得することができる。このように、ブロックチェーンデータの同期後にどのように取引を行っても、第1記帳ノードは、同期ブロック高さ以内の状態データの完全性を保証することができ、さらに、状態データのスナップショット時に取得された同期ブロック高さの状態データスナップショットの正確性を保証することができる。
【0099】
ステップ207では、第1記帳ノードが、更新された同期サブ状態データ集合における同期サブ状態データに対してハッシュ演算を行うことにより、ターゲット構造の状態データを生成する。
【0100】
例えば、ターゲット構造は、マークルツリー(Merkle Tree)であってもよく、当然ながら、これは、本願の実施例を限定するものではない。
【0101】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、更新された同期サブ状態データ集合における同期サブ状態データに対してハッシュ演算を行うことにより、ターゲット構造の状態データを生成することを実現することができる。即ち、第1記帳ノードが、更新された同期サブ状態データ集合における複数の同期サブ状態データを分類することにより、複数のタイプの同期サブ状態データを取得し、第1記帳ノードが、複数のタイプの同期サブ状態データに対してハッシュ演算をそれぞれ行うことにより、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値を取得し、第1記帳ノードが、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値に基づいてハッシュ演算を行うことにより、ルートのハッシュ値を取得し、第1記帳ノードが、ルートのハッシュ値と、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値とに基づいて、ターゲット構造の状態データを生成する。
【0102】
一例として、本願の実施例では、
図4に示すようなターゲット構造の状態データの模式図が提供されている。更新された同期サブ状態データ集合に10個の同期サブ状態データ、即ち(K1-V1)~(K10-V10)が含まれる場合を例として説明する。まず、第1記帳ノードは、同期サブ状態データ集合における全ての同期サブ状態データを分類することができる。例えば、記憶タグ(又はマーク付けされた記憶タグ)におけるキーの設定順序に応じて分類し、各タイプそれぞれに含まれる同期サブ状態データの数量がタイプ数量閾値を超えないように限定してもよい。ここで、キーの設定順序は、小さい順又は大きい順であってもよく、タイプ数量閾値は、実際の応用シナリオに応じて設定してもよく、例えば3に設定する。
【0103】
例えば、
図4において、(K1-V1)、(K2-V2)、及び(K3-V3)を第1タイプとして、(K4-V4)、(K5-V5)、及び(K6-V6)を第2タイプとして、(K7-V7)、(K8-V8)、及び(K9-V9)を第3タイプとして、(K10-V10)を単独で第4タイプとして分けてもよい。分類を完了した後、各タイプの同期サブ状態データに対してハッシュ演算を個別に行うことにより、各タイプそれぞれに対応するハッシュ値を取得する。例えば、(K1-V1)、(K2-V2)、及び(K3-V3)に対してハッシュ演算を行うことにより、ハッシュ値h1を取得し、(K4-V4)、(K5-V5)、及び(K6-V6)に対してハッシュ演算を行うことにより、ハッシュ値h2を取得し、このように類推する。次に、h1とh2に対してハッシュ演算を行うことにより、中間ハッシュ値h5を取得し、h3とh4に対してハッシュ演算を行うことにより、中間ハッシュ値h6を取得する。最終的に、中間ハッシュ値h5とh6に対してハッシュ演算を行うことにより、ルートのハッシュ値h7を取得する。算出されたこれらのハッシュ値に基づいて、ターゲット構造の状態データを生成する。例えば、これらのハッシュ値に基づいて、1つのマークルツリーを構築し、4つのタイプにそれぞれ対応するハッシュ値h1、h2、h3、及びh4をマークルツリーの葉のハッシュ値とし、h5及びh6をマークルツリーの中間ハッシュ値とし、h7をマークルツリーのルートのハッシュ値(Root Hash)としてもよい。
【0104】
ステップ208では、第1記帳ノードが、ターゲット構造の状態データをコピーすることにより、同期ブロック高さの状態データスナップショットを生成する。
【0105】
ここで、第1記帳ノードは、生成されたターゲット構造の状態データをコピーすることにより、同期ブロック高さの状態データスナップショットを取得する。例えば、
図4に示すように、生成されたマークルツリーの状態
データをコピーすることにより、マークルツリーのスナップショットを取得してもよい。
【0106】
ステップ209では、第1記帳ノードが、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報を共同でアーカイブポイント情報として第2記帳ノードに送信する。
【0107】
例えば、第1記帳ノードは、状態データスナップショットを署名することにより、署名情報を取得する。次に、第1記帳ノードは、署名情報、状態データスナップショット、及び同期ブロック高さをアーカイブポイント情報にパッケージし、アーカイブポイント情報をブロックチェーンシステムの第2記帳ノードに送信する。
【0108】
図2Bに示すように、本願の実施例では、マーク付けされた記憶タグに基づいてターゲットサブ状態データを選別することにより、選別効率及び選別精度を向上させることができ、バックアップされたターゲットサブ状態データに基づいて同期サブ状態データ集合を更新することにより、更新された同期サブ状態データ集合のデータ完全性及びデータ正確性を保証することができる。
【0109】
いくつかの実施例では、
図2Cを参照する。
図2Cは、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
図2Aに示されたステップ105は、ステップ301~ステップ304によって実現することができる。各ステップを参照して説明する。
【0110】
ステップ301では、第1記帳ノードが、裏書き情報を送信した第2記帳ノードの裏書き数量を決定する。
【0111】
例えば、第1記帳ノードは、受信された裏書き情報に基づいて、裏書き情報を送信した第2記帳ノードの数量を裏書き数量として決定する。例えば、第1記帳ノードは、5つの裏書き情報を受信した場合、裏書き情報を送信した第2記帳ノードの数量が5であり、即ち裏書き数量が5であると決定することができる。
【0112】
ステップ302では、裏書き数量が数量閾値を超える場合、第1記帳ノードが、裏書き情報をアーカイブポイント情報に追加することにより、更新されたアーカイブポイント情報を取得する。
【0113】
ここで、数量閾値は、実際の応用シナリオに応じて設定してもよく、例えば、ブロックチェーンシステムに含まれる第2記帳ノードの総数の1/2、1/3、又は他の割合に対応する数量であってもよいし、3つ、5つ、又は7つなどの数値に直接的に設定してもよい。裏書き情報を送信した第2記帳ノードの数量が数量閾値を超える場合、第1記帳ノードは、裏書き情報をアーカイブポイント情報に追加して、アーカイブポイント情報を更新することにより、更新されたアーカイブポイント情報を取得する。ここで、更新されたアーカイブポイント情報における裏書き情報及び第1記帳ノードの署名情報は、同期ブロック高さに対する状態データの署名証拠情報を共同で構成することができる。
【0114】
ステップ303では、第1記帳ノードが、更新されたアーカイブポイント情報をコンセンサスノードに送信する。
【0115】
ここで、第1記帳ノードは、更新されたアーカイブポイント情報をコンセンサスノードに送信し、コンセンサスノードは、更新されたアーカイブポイント情報に基づいて、設定ブロックデータを生成するか否かを決定する。そのうち、設定ブロックデータは、コンセンサスノードが、設定ブロックを生成し、更新されたアーカイブポイント情報を設定ブロックに記憶して得られたものである。
【0116】
いくつかの実施例において、上記方法は、ステップ303の後に、コンセンサスノードが、更新されたアーカイブポイント情報から裏書き情報及び署名情報を選別するステップと、コンセンサスノードが、裏書き情報及び署名情報をチェックするステップと、コンセンサスノードによる裏書き情報及び署名情報のチェックが合格した場合、コンセンサスノードが、設定ブロックを生成し、更新されたアーカイブポイント情報を設定ブロックに記憶することにより、設定ブロックデータを取得するステップと、コンセンサスノードが、設定ブロックデータを第1記帳ノード及び第2記帳ノードに送信するステップと、をさらに含む。
【0117】
例えば、第1記帳ノードは、更新されたアーカイブポイント情報をコンセンサスノードに送信し、コンセンサスノードは、更新されたアーカイブポイント情報から裏書き情報及び署名情報を選別し、裏書き情報及び署名情報をチェックし、即ち、裏書き情報と第1記帳ノードの署名情報とで構成される署名証拠情報をチェックする。
【0118】
裏書き情報に対して、コンセンサスノードは、裏書き情報の数量をチェックしてもよい。例えば、裏書き情報の数量が数量閾値(ステップ302における数量閾値と同じであってもよい)を超える場合、裏書き情報のチェックが合格すると決定し、裏書き情報の数量が数量閾値を超えない場合、裏書き情報のチェックが合格しないと決定する。コンセンサスノードは、裏書き情報に対応する第2記帳ノードのアイデンティティ識別子をチェックしてもよい。例えば、ブロックチェーンシステムに各裏書き情報に対応する第2記帳ノードが存在する場合、裏書き情報のチェックが合格すると決定し、ブロックチェーンシステムにある1つ又は複数の裏書き情報に対応する第2記帳ノードが存在しない場合、裏書き情報のチェックが合格しないと決定する。説明すべきものとして、裏書き情報の数量、及び裏書き情報に対応する第2記帳ノードのアイデンティティ識別子の両方をチェックする場合に、裏書き情報の数量が数量閾値を超え、且つブロックチェーンシステムに各裏書き情報に対応する第2記帳ノードが存在するときのみ、裏書き情報のチェックが合格すると決定する。
【0119】
第1記帳ノードの署名情報に対して、コンセンサスノードは、設定された署名フォーマット及び署名規則のうちの少なくとも1つに基づいて、第1記帳ノードの署名情報をチェックしてもよい。署名フォーマットを例にすると、第1記帳ノードの署名情報が署名フォーマットに合致する場合、該署名情報のチェックが合格すると決定し、第1記帳ノードの署名情報が署名フォーマットに合致しない場合、該署名情報のチェックが合格しないと決定する。署名規則に基づいたチェック過程は、同様である。説明すべきものとして、署名フォーマット及び署名規則に基づいて第1記帳ノードの署名情報をチェックする場合に、第1記帳ノードの署名情報が署名フォーマット及び署名規則の両方に合致するときのみ、該署名情報のチェックが合格すると決定する。
【0120】
コンセンサスノードの裏書き情報及び署名情報に対するチェック規則は、上記の例に限定されず、実際の応用シナリオに応じて設定してもよく、例えば、特定の裏書き規則又は裏書き要求に基づいて裏書き情報をチェックしてもよい。コンセンサスノードによる裏書き情報及び署名情報のチェックが合格した場合、コンセンサスノードは、設定ブロックを生成し、更新されたアーカイブポイント情報を設定ブロックに記憶することにより、設定ブロックデータを取得する。そして、コンセンサスノードは、設定ブロックデータを第1記帳ノード及び第2記帳ノードに送信する。上記の方式によれば、更新されたアーカイブポイント情報に対する効果的なチェックが実現され、データアーカイブの正当性が向上し、悪意のあるアーカイブを効果的に回避される。
【0121】
ステップ304では、第1記帳ノードが、更新されたアーカイブポイント情報に対してコンセンサスノードから送信された設定ブロックデータを受信すると、同期されたブロックチェーンデータをアーカイブする。
【0122】
ここで、第1記帳ノードが、更新されたアーカイブポイント情報に対してコンセンサスノードから送信された設定ブロックデータを受信すると、更新されたアーカイブポイント情報がコンセンサスノードによって承認されることが証明されるため、第1記帳ノードは、同期されたブロックチェーンデータをアーカイブする。
【0123】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、同期されたブロックチェーンデータをアーカイブすることを実現することができる。即ち、第1記帳ノードが、更新されたアーカイブポイント情報をコピーすることにより、第1記帳ノードの同期ブロック高さでのアーカイブデータスナップを生成し、第1記帳ノードが、設定ブロックデータを第1ブロックデータに追加することにより、更新された第1ブロックデータを取得し、第1記帳ノードが、更新された第1ブロックデータからブロック高さが同期ブロック高さを超えないターゲットブロックデータを選別し、第1記帳ノードが、ターゲットブロックデータを削除する。
【0124】
例えば、第1記帳ノードは、更新されたアーカイブポイント情報における同期ブロック高さ、署名情報、及び裏書き情報をコピーすることにより、これらのデータに対応するデータスナップショットを取得し、次に、これらのデータに対応するデータスナップショットと、更新されたアーカイブポイント情報における状態データスナップショットとで、同期ブロック高さのアーカイブデータスナップショットを共同で構成し、アーカイブデータスナップショットをローカルに記憶する。
【0125】
また、第1記帳ノードは、設定ブロックデータを第1ブロックデータに追加して、第1ブロックデータを更新することにより、更新された第1ブロックデータを取得する。ここで、第1ブロックデータは、同期されたブロックチェーンデータに含まれるブロック
データを指す。第1記帳ノードは、更新された第1ブロックデータからブロック高さが同期ブロック高さを超えないブロックデータを選別する。区別しやすいために、ここで選別されたブロックデータをターゲットブロックデータと名づける。一例として、本願の実施例では、
図5に示すようなデータアーカイブの模式図が提供されている。同期ブロック高さがHである場合を例として、更新された第1ブロックデータから通常ブロックデータを選別し、選別された通常ブロックデータからブロック高さがHを超えない通常ブロック
データをさらに選別してターゲットブロックデータとする。
図5には、ターゲットブロックデータに通常ブロック0~通常ブロックH
のデータが含まれる場合を示す。ここで、通常ブロックデータは、更新された第1ブロックデータにおける設定ブロックデータと異なるブロックデータを指す。また、
図5におけるHは、0以上の整数であり、Nは、Hよりも大きい整数である。ターゲットブロックデータを取得した後、第1記帳ノードは、ターゲットブロックデータに対して削除処理を行うことができる。
図5に示すように、第1記帳ノードは、通常ブロック0~通常ブロックHを削除する。
【0126】
いくつかの実施例において、上記方法は、ステップ303の後に、第2記帳ノードが、コンセンサスノードから送信された設定ブロックデータを受信すると、設定ブロックデータにおける署名情報、裏書き情報、状態データスナップショット、及び同期ブロック高さをコピーすることにより、同期ブロック高さのアーカイブデータスナップショットを取得するステップと、第2記帳ノードが、設定ブロックデータを第2記帳ノードのブロックチェーンデータに追加し、更新された第2記帳ノードのブロックチェーンデータからブロック高さが同期ブロック高さを超えないターゲットブロックデータを選別するステップと、第2記帳ノードが、ターゲットブロックデータを削除するステップと、をさらに含む。
【0127】
コンセンサスノードは、設定ブロックデータを生成した後、設定ブロックデータを第1記帳ノード及び第2記帳ノードに送信する。第2記帳ノードは、設定ブロックデータを受信すると、設定ブロックデータにおける署名情報、裏書き情報、状態データスナップショット、及び同期ブロック高さを抽出し、抽出されたこれらのデータをコピーすることにより、同期ブロック高さのアーカイブデータスナップショットを取得し、該アーカイブデータスナップショットをローカルに記憶する。
【0128】
また、第2記帳ノードは、設定ブロックデータを第2記帳ノードのローカルのブロックチェーンデータに追加することにより、更新された第2記帳ノードのブロックチェーンデータを取得してもよい。次に、第2記帳ノードは、更新された第2記帳ノードのブロックチェーンデータからブロック高さが同期ブロック高さを超えないターゲットブロックデータ(区別しやすいために、第2記帳ノードのターゲットブロックデータと名づける)を選別し、第2記帳ノードのターゲットブロックデータを削除し、データアーカイブを完了する。上記の方式によれば、第1記帳ノードがデータアーカイブを行うと同時に、第2記帳ノードのデータアーカイブを実現することもでき、ブロックチェーンシステムにおける全ての記帳ノードの記憶リソースを節約する。
【0129】
ここで、第1記帳ノードと第2記帳ノードが、同期ブロック高さを超えないターゲットブロックデータをアーカイブする過程は、同時に行われてもよいし、同時に行われなくてもよい。アーカイブ過程全体は、
図6に示すとおりであってもよい。
図6におけるアーカイブコンセンサスは、コンセンサスノードがデータアーカイブ過程において実行する操作を指す。説明すべきものとして、データアーカイブ過程では、ターゲットブロックデータを分散ストレージシステムに記憶してもよい。ここで、分散ストレージシステムは、ブロックチェーンシステムと異なる。分散ストレージシステムは、記憶されたデータがよくアクセスされないコールドストレージ(Cold Storage)に用いることができ、ブロックチェーンシステムは、記憶されたデータがよくアクセスされるホットストレージ(Hot Storage)に用いることができる。
【0130】
いくつかの実施例において、上記方法は、任意のステップの間に、第1記帳ノードが、ブロックチェーンシステムにおける新たに追加された記帳ノードである場合、第1記帳ノードが、コンセンサスノードに同期要求を送信し、同期要求に対してコンセンサスノードから送信された裏書き情報及びアーカイブポイント情報を受信するステップと、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、第2記帳ノードから状態データを取得するステップと、第1記帳ノードが、コンセンサスノード又は第2記帳ノードからブロック高さが同期ブロック高さを超える第2ブロックデータを取得するステップと、第1記帳ノードが、第2ブロックデータにおける取引情報に基づいて、状態データを更新することにより、第1記帳ノードの現在のブロックチェーンデータを取得するステップと、をさらに含む。
【0131】
第1記帳ノードが、ブロックチェーンシステムにおける新たに追加された記帳ノードである場合、第1記帳ノードは、ブロックチェーンシステムから、ローカルに記憶されたブロックチェーンデータを取得する必要がある。即ち、本願の実施例では、データアーカイブのニーズに加えて、データ取得のニーズが存在する。
【0132】
データ取得のニーズに直面して、第1記帳ノードは、コンセンサスノードに同期要求を送信することができ、コンセンサスノードは、同期要求を受信すると、該同期要求に対する裏書き情報及びアーカイブポイント情報を第1記帳ノードに送信する。第1記帳ノードは、受信された裏書き情報及びアーカイブポイント情報に基づいて、第2記帳ノードから状態データを取得する。第1記帳ノードは、コンセンサスノード又は第2記帳ノードからブロック高さが同期ブロック高さを超えるブロックデータを取得してもよい。区別しやすいために、ここで取得されたブロックデータを第2ブロックデータと名づける。ここでの同期ブロック高さは、第2記帳ノードがブロックチェーンデータの同期を行って得られた同期ブロック高さを指してもよい。例えば、同期ブロック高さが5である場合、第1記帳ノードは、コンセンサスノード又は第2記帳ノードからブロック高さが5を超えるブロックデータを第2ブロックデータとして取得する。次に、第1記帳ノードは、第2ブロックデータにおける取引情報に基づいて状態データを更新する。例えば、第2ブロックデータに含まれるブロックにおける取引を再生することにより、第1記帳ノードのワールド状態を更新してもよい。これにより、コンセンサスノード及び第2記帳ノードにおける最新のワールド状態に同期し、第1記帳ノードの現在のブロックチェーンデータを取得する。上記の方式によれば、ブロックチェーンシステムにおける新たに追加された記帳ノードは、正確で効果的な現在のブロックチェーンデータを取得することができ、データ取得の精度を向上させる。
【0133】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、第2記帳ノードから状態データを取得することを実現することができる。即ち、第1記帳ノードが、裏書き情報及び第2記帳ノードの署名情報をチェックし、第1記帳ノードによる裏書き情報及び第2記帳ノードの署名情報のチェックが合格した場合、第1記帳ノードが、ルートのハッシュ値に対応する複数の葉のハッシュ値を決定し、第1記帳ノードが、第2記帳ノードから異なる葉のハッシュ値に対応するサブ状態データを並列に取得して、取得された状態データとする。
【0134】
ここで、第1記帳ノードは、裏書き情報及びアーカイブポイント情報を受信すると、裏書き情報、及びアーカイブポイント情報における第2記帳ノード(ここでは、データアーカイブを行う記帳ノードを指す)の署名情報をチェックしてもよい。ここでは、チェック規則を限定せず、上記のコンセンサスノードのチェック規則を流用することができる。
【0135】
第1記帳ノードによる裏書き情報及び第2記帳ノードの署名情報のチェックが合格した場合、第1記帳ノードは、アーカイブポイント情報におけるルートのハッシュ値に基づいて、対応する複数の葉のハッシュ値を決定する。ここで、第1記帳ノードが受信したアーカイブポイント情報には、コンセンサスノードの状態データのルートのハッシュ値と、第2記帳ノードの署名情報とが含まれる。例えば、状態データに対応するマークルツリー(即ちターゲット構造)が
図7に示すようなものである場合を例にすると、ルートのハッシュ値がh7であるため、第1記帳ノードは、該マークルツリーに基づいて、ルートのハッシュ値に対応する葉のハッシュ値がh1、h2、h3、及びh4を含むと決定することができる。
【0136】
複数の葉のハッシュ値を取得すると、第1記帳ノードは、第2記帳ノードから異なる葉のハッシュ値に対応するサブ状態データを並列に取得し、取得された全てのサブ状態データを共同で、取得された状態データとすることができる。ここで、第1記帳ノードは、単一の第2記帳ノードから全ての葉のハッシュ値にそれぞれ対応するサブ状態データを取得してもよいし、異なる第2記帳ノードから異なるサブ状態データを取得してもよい。上記の方式によれば、取得された状態データの正確性を保証することができる。
【0137】
いくつかの実施例では、このような方式によって、上述した第1記帳ノードが、第2記帳ノードから異なる葉のハッシュ値に対応するサブ状態データを並列に取得することを実現することができる。即ち、第1記帳ノードが、第2記帳ノードの数量に基づいて、複数の葉のハッシュ値を分類し、第1記帳ノードが、複数の葉のハッシュ値に対する分類結果に基づいて、異なる第2記帳ノードに対応するターゲット葉のハッシュ値を決定し、第1記帳ノードが、異なる第2記帳ノードからターゲット葉のハッシュ値に対応するサブ状態データを取得する。
【0138】
例えば、ブロックチェーンシステムにおける第2記帳ノードの数量が2つである場合、第1記帳ノードは、h1とh2を1つのタイプとして、h3とh4を1つのタイプとして分けてもよい。次に、第1記帳ノードは、分類結果に基づいて、第2記帳ノードに対応するターゲット葉のハッシュ値を決定する。例えば、第1記帳ノードは、1つのタイプとして分けられたh1とh2を、いずれも第2記帳ノードAに対応するターゲット葉のハッシュ値とし、別のタイプのh3とh4を、いずれも第2記帳ノードBに対応するターゲット葉のハッシュ値としてもよい。
【0139】
各第2記帳ノードそれぞれに対して、第1記帳ノードは、第2記帳ノードに対応するターゲット葉のハッシュ値に基づいて、該第2記帳ノードからターゲット葉のハッシュ値に対応するサブ状態データを取得する。
図8に示すように、第1記帳ノードは、第2記帳ノードAから、h1に対応するサブ状態データ(K1-V1)~(K3-V3)と、h2に対応するサブ状態データ(K4-V4)~(K6-V6)とを取得し、第2記帳ノードBから、h3に対応するサブ状態データ(K7-V7)~(K9-V9)と、h4に対応するサブ状態データ(K10-V10)とを取得することができる。第1記帳ノードは、取得された状態データを使用して、第1記帳ノードのローカルのワールド状態を構築することができる。上記の方式によれば、異なる第2記帳ノードから異なるサブ状態データを取得することで、各第2記帳ノードの処理負担を軽減することができると共に、取得された状態データの正確性を向上させることができる。
【0140】
図2Cに示すように、本願の実施例では、更新されたアーカイブ
ポイント情報をコンセンサスノードに送信し、更新されたアーカイブ
ポイント情報に対してコンセンサスノードから送信された設定ブロックデータを受信すると、同期されたブロックチェーンデータをアーカイブし、アーカイブの有効性及び正確性を効果的に向上させることができる。
【0141】
上記の実施例で説明された方法に基づいて、以下で例を挙げてさらに詳細に説明する。
図9を参照する。
図9は、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法の手順の模式図である。
図9に示されたステップを参照して説明する。
【0142】
ステップ401では、第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定する。
【0143】
ステップ402では、同期ブロック高さとアーカイブブロック高さとのマッチングが成功した場合、第1記帳ノードが、サブ状態データに対応するブロック高さと、ローカルデータベースにおける記憶タグとを取得する。
【0144】
ステップ403では、第1記帳ノードが、サブ状態データに対応するブロック高さを、サブ状態データに対応する記憶タグに追加してマーク付けすることにより、マーク付けされた記憶タグを取得する。
【0145】
ステップ404では、第1記帳ノードが、マーク付けされた記憶タグに基づいて、複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別する。
【0146】
ステップ405では、第1記帳ノードが、ターゲットサブ状態データをバックアップする。
【0147】
ステップ406では、第1記帳ノードが、バックアップされたターゲットサブ状態データに基づいて同期ブロック高さの状態データスナップショットを生成し、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報を共同でアーカイブポイント情報として第2記帳ノードに送信する。
【0148】
ステップ407では、第2記帳ノードが、アーカイブポイント情報に対する裏書き情報を生成し、裏書き情報を第1記帳ノードに送信する。
【0149】
ステップ408では、第1記帳ノードが、第2記帳ノードのアーカイブポイント情報に対する裏書き情報を受信する。
【0150】
ステップ409では、第1記帳ノードが、裏書き情報を送信した第2記帳ノードの裏書き数量を決定する。
【0151】
ステップ410では、裏書き数量が数量閾値を超える場合、第1記帳ノードが、裏書き情報をアーカイブポイント情報に追加することにより、更新されたアーカイブポイント情報を取得し、更新されたアーカイブポイント情報をコンセンサスノードに送信する。
【0152】
ステップ411では、コンセンサスノードが、更新されたアーカイブポイント情報に基づいて設定ブロックデータを生成し、設定ブロックデータを第1記帳ノード及び第2記帳ノードに送信する。
【0153】
ステップ412では、第1記帳ノードが、コンセンサスノードから送信された設定ブロックデータを受信すると、同期されたブロックチェーンデータをアーカイブする。
【0154】
ステップ413では、第2記帳ノードが、設定ブロックデータを受信すると、第2記帳ノードのブロックチェーンデータをアーカイブする。
【0155】
いくつかの実施例では、第1記帳ノードが、ブロックチェーンシステムにおける新たに追加された記帳ノードである場合、第1記帳ノードは、ブロックチェーンシステムから最新のブロックチェーンデータを取得することができる。
図10に示されたステップを参照して説明する。
【0156】
ステップ414では、第1記帳ノードが、同期要求をコンセンサスノードに送信する。
【0157】
ステップ415では、コンセンサスノードは、同期要求に基づいて、裏書き情報及びアーカイブポイント情報を第1記帳ノードに送信する。
【0158】
ステップ416では、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、第2記帳ノードから状態データを取得する。
【0159】
ステップ417では、第1記帳ノードが、コンセンサスノード又は第2記帳ノードからブロック高さが同期ブロック高さを超える第2ブロックデータを取得する。
【0160】
ステップ418では、第1記帳ノードが、第2ブロックデータにおける取引情報に基づいて、状態データを更新することにより、第1記帳ノードの現在のブロックチェーンデータを取得する。
【0161】
図9及び
図10に示すように、本願の実施例では、現在の取引に必要なターゲット状態データをバックアップし、バックアップされたターゲット状態データに基づいて状態データスナップショットを生成することができ、スナップショットと本々の取引の衝突問題が解決され、状態データのリアルタイムスナップショットが実現される。また、ブロックチェーンシステムにおける他の記帳ノードに、状態データスナップショットなどの情報に対して署名裏書きを行わせることにより、これらの情報が公信力を持つようになる。そのため、ブロックチェーンデータのアーカイブ効率及びアーカイブ精度を大幅に向上させることができる。また、データアーカイブに加えて、本願の実施例では、新たに追加された記帳ノードに対して、裏書き情報、アーカイブポイント情報、及び第2ブロックデータなどの情報を送信することにより、新たに追加された記帳ノードが、正確な現在のブロックチェーンデータを取得することができ、即ち、簡潔で正確な台帳を取得することができる。
【0162】
上記方法をより良く実施するために、本願の実施例は、ブロックチェーンデータのアーカイブ装置をさらに提供する。該ブロックチェーンデータのアーカイブ装置は、電子機器、例えば、サーバや端末などの機器に組み込むことができ、該端末は、タブレットコンピュータ、ノートパソコン、及び/又はパーソナルコンピュータなどを含んでもよい。
【0163】
例えば、
図11に示すように、該ブロックチェーンデータのアーカイ
ブ装置は、同期ユニット301と、決定ユニット302と、生成ユニット303と、受信ユニット304と、アーカイブユニット305とを含んでもよい。同期ユニット301は、第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定するように構成され、同期されたブロックチェーンデータには、状態データが含まれる。決定ユニット302は、第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定し、ターゲット状態データをバックアップするように構成される。生成ユニット303は、第1記帳ノードが、バックアップされたターゲット状態データに基づいて同期ブロック高さの状態データスナップショットを生成し、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報を共同でアーカイブポイント情報として第2記帳ノードに送信するように構成される。受信ユニット304は、第1記帳ノードが、第2記帳ノードのアーカイブポイント情報に対する裏書き情報を受信するように構成される。アーカイブユニット305は、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、同期されたブロックチェーンデータをアーカイブするように構成される。
【0164】
いくつかの実施例において、状態データには、複数のサブ状態データが含まれ、決定ユニット302は、
図12に示すように、取得サブユニット3021と、追加サブユニット3022と、選別サブユニット3023と、バックアップサブユニット3024と、を含んでもよい。取得サブユニット3021は、第1記帳ノードが、サブ状態データに対応するブロック高さと、ローカルデータベースにおける記憶タグとを取得するように構成される。追加サブユニット3022は、第1記帳ノードが、サブ状態データに対応するブロック高さを、サブ状態データに対応する記憶タグに追加してマーク付けすることにより、マーク付けされた記憶タグを取得するように構成される。選別サブユニット3023は、第1記帳ノードが、マーク付けされた記憶タグに基づいて、複数のサブ状態データから現在の取引に必要なターゲットサブ状態データを選別するように構成される。バックアップサブユニット3024は、第1記帳ノードが、ターゲットサブ状態データをバックアップするように構成される。
【0165】
いくつかの実施例において、選別サブユニット3023は、第1記帳ノードが、現在の取引に対応する取引情報を取得し、第1記帳ノードが、取引情報に基づいて、第1記帳ノードの現在のブロックチェーンデータの現在ブロック高さを決定し、現在ブロック高さが同期ブロック高さを超える場合、第1記帳ノードが、現在のブロックチェーンデータに新たなブロックが存在すると決定し、第1記帳ノードが、現在のブロックチェーンデータから新たなブロックにおける取引に必要な呼び出し情報を選別し、呼び出し情報が、呼び出されたサブ状態データを示すためのものであり、第1記帳ノードが、呼び出し情報と、マーク付けされた記憶タグとに基づいて、複数のサブ状態データからターゲットサブ状態データを選別するように構成される。
【0166】
いくつかの実施例において、バックアップサブユニット3024は、第1記帳ノードが、取引情報から新たなブロックにおける取引に必要な取引操作情報を選別し、第1記帳ノードが、取引操作情報に基づいて、ターゲットサブ状態データに対応する取引操作タイプを決定し、取引操作タイプが更新操作である場合、第1記帳ノードが、更新操作に対応するターゲットサブ状態データをバックアップし、取引操作タイプが削除操作である場合、第1記帳ノードが、削除操作に対応するターゲットサブ状態データをバックアップし、バックアップされたターゲットサブ状態データに削除タグを追加するように構成され、ここで、削除タグは、バックアップされたターゲットサブ状態データを取引の実行時に読み取れないことを示すためのものである。
【0167】
いくつかの実施例において、生成ユニット303は、第1記帳ノードが、状態データからブロック高さが同期ブロック高さを超えない同期サブ状態データを選別することにより、同期サブ状態データ集合を取得し、第1記帳ノードが、バックアップされたターゲットサブ状態データを新たな同期サブ状態データとして同期サブ状態データ集合に追加することにより、同期サブ状態データ集合を更新し、第1記帳ノードが、更新された同期サブ状態データ集合における同期サブ状態データに対してハッシュ演算を行うことにより、ターゲット構造の状態データを生成し、第1記帳ノードが、ターゲット構造の状態データをコピーすることにより、同期ブロック高さの状態データスナップショットを生成するように構成される。
【0168】
いくつかの実施例において、生成ユニット303は、第1記帳ノードが、更新された同期サブ状態データ集合における複数の同期サブ状態データを分類することにより、複数のタイプの同期サブ状態データを取得し、第1記帳ノードが、複数のタイプの同期サブ状態データに対してハッシュ演算をそれぞれ行うことにより、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値を取得し、第1記帳ノードが、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値に基づいてハッシュ演算を行うことにより、ルートのハッシュ値を取得し、第1記帳ノードが、ルートのハッシュ値と、複数のタイプの同期サブ状態データにそれぞれ対応する葉のハッシュ値とに基づいて、ターゲット構造の状態データを生成するように構成される。
【0169】
いくつかの実施例において、アーカイブユニット305は、
図13に示すように、決定サブユニット3051と、更新サブユニット3052と、送信サブユニット3053と、アーカイブサブユニット3054と、を含んでもよい。決定サブユニット3051は、第1記帳ノードが、裏書き情報を送信した第2記帳ノードの裏書き数量を決定するように構成される。更新サブユニット3052は、裏書き数量が数量閾値を超える場合、第1記帳ノードが、裏書き情報をアーカイブポイント情報に追加することにより、更新されたアーカイブポイント情報を取得するように構成される。送信サブユニット3053は、第1記帳ノードが、更新されたアーカイブポイント情報をコンセンサスノードに送信するように構成される。アーカイブサブユニット3054は、第1記帳ノードが、更新されたアーカイブポイント情報に対してコンセンサスノードから送信された設定ブロックデータを受信すると、同期されたブロックチェーンデータをアーカイブするように構成される。
【0170】
いくつかの実施例において、同期されたブロックチェーンデータには、第1ブロックデータが含まれ、アーカイブサブユニット3054は、第1記帳ノードが、更新されたアーカイブポイント情報をコピーすることにより、第1記帳ノードの同期ブロック高さでのアーカイブデータスナップショットを生成し、第1記帳ノードが、設定ブロックデータを第1ブロックデータに追加することにより、更新された第1ブロックデータを取得し、第1記帳ノードが、更新された第1ブロックデータからブロック高さが同期ブロック高さを超えないターゲットブロックデータを選別し、第1記帳ノードが、ターゲットブロックデータを削除するように構成される。
【0171】
いくつかの実施例において、アーカイブサブユニット3054は、第1記帳ノードがターゲットブロックデータを削除する際に、第1記帳ノードがターゲットブロックデータを分散ストレージシステムに記憶するように構成され、ここで、分散ストレージシステムは、ブロックチェーンシステムと異なる。
【0172】
いくつかの実施例において、送信サブユニット3053は、コンセンサスノードが、更新されたアーカイブポイント情報から裏書き情報及び署名情報を選別し、コンセンサスノードが、裏書き情報及び署名情報をチェックし、コンセンサスノードによる裏書き情報及び署名情報のチェックが合格した場合、コンセンサスノードが、設定ブロックを生成し、更新されたアーカイブポイント情報を設定ブロックに記憶することにより、設定ブロックデータを取得し、コンセンサスノードが、設定ブロックデータを第1記帳ノード及び第2記帳ノードに送信するように構成される。
【0173】
いくつかの実施例において、送信サブユニット3053は、コンセンサスノードが、裏書き情報の数量、及び裏書き情報に対応する第2記帳ノードのアイデンティティ識別子のうちの少なくとも1つをチェックし、コンセンサスノードが、署名フォーマット及び署名規則のうちの少なくとも1つに基づいて、署名情報をチェックするように構成される。
【0174】
いくつかの実施例において、
図14に示すように、ブロックチェーンデータのアーカイブ装置は、裏書きユニット306をさらに含んでもよい。裏書きユニット306は、第1記帳ノードが、第2記帳ノードから送信されたアーカイブポイント情報を受信すると、アーカイブポイント情報から第2記帳ノードの状態データのルートのハッシュ値を抽出し、第1記帳ノードが、第2記帳ノードの状態データのルートのハッシュ値と、第1記帳ノード自身の状態データのルートのハッシュ値とを比較し、第2記帳ノードの状態データのルートのハッシュ値が第1記帳ノード自身の状態データのルートのハッシュ値と同じである場合、第1記帳ノードが、アーカイブポイント情報を署名することにより、アーカイブポイント情報の裏書き情報を取得し、第1記帳ノードが、裏書き情報を第2記帳ノードに送信し、アーカイブポイント情報をブロックチェーンシステムにブロードキャストするように構成される。
【0175】
いくつかの実施例において、第1記帳ノードが、ブロックチェーンシステムにおける新たに追加された記帳ノードである場合、
図15に示すように、ブロックチェーンデータのアーカイブ装置は、更新ユニット307をさらに含んでもよい。更新ユニット307は、第1記帳ノードが、コンセンサスノードに同期要求を送信し、同期要求に対してコンセンサスノードから送信された裏書き情報及びアーカイブポイント情報を受信し、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、第2記帳ノードから状態データを取得し、第1記帳ノードが、コンセンサスノード又は第2記帳ノードからブロック高さが同期ブロック高さを超える第2ブロックデータを取得し、第1記帳ノードが、第2ブロックデータにおける取引情報に基づいて、状態データを更新することにより、第1記帳ノードの現在のブロックチェーンデータを取得するように構成される。
【0176】
いくつかの実施例において、アーカイブポイント情報には、コンセンサスノードの状態データのルートのハッシュ値と、第2記帳ノードの署名情報とが含まれ、更新ユニット307は、第1記帳ノードが、裏書き情報及び第2記帳ノードの署名情報をチェックし、第1記帳ノードによる裏書き情報及び第2記帳ノードの署名情報のチェックが合格した場合、第1記帳ノードが、ルートのハッシュ値に対応する複数の葉のハッシュ値を決定し、第1記帳ノードが、第2記帳ノードから異なる葉のハッシュ値に対応するサブ状態データを並列に取得して、取得された状態データとするように構成される。
【0177】
いくつかの実施例において、更新ユニット307は、第1記帳ノードが、第2記帳ノードの数量に基づいて、複数の葉のハッシュ値を分類し、第1記帳ノードが、複数の葉のハッシュ値に対する分類結果に基づいて、異なる第2記帳ノードに対応するターゲット葉のハッシュ値を決定し、第1記帳ノードが、異なる第2記帳ノードからターゲット葉のハッシュ値に対応するサブ状態データを取得するように構成される。
【0178】
いくつかの実施例において、同期ユニット301は、第1記帳ノードが、コンセンサスノードに同期要求を送信し、同期要求には、第1記帳ノードのアイデンティティ識別子が含まれ、第1記帳ノードが、同期要求に対してコンセンサスノードから送信されたブロックを受信し、ブロックが、コンセンサスノードによる同期要求における第1記帳ノードのアイデンティティ識別子のチェックが合格した場合に送信されたものであり、第1記帳ノードが、コンセンサスノードから送信されたブロックに基づいて、ローカルのブロックチェーンデータを更新することにより、同期されたブロックチェーンデータを取得するように構成される。
【0179】
いくつかの実施例において、決定ユニット302は、第1記帳ノードが、同期ブロック高さとアーカイブブロック高さとをマッチングし、同期ブロック高さとアーカイブブロック高さとのマッチングが成功した場合、第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定するように構成される。
【0180】
実施時に、上記の各ユニットは、独立したエンティティとして実現してもよいし、任意に組み合わせることにより、同一又は若干のエンティティとして実現してもよい。上記の各ユニットの実施は、前述した方法の実施例を参照すればよい。
【0181】
図16に示すように、本願の実施例では、電子機器がさらに提供されている。
図16は、本願の実施例に係る電子機器の構成の模式図である。該電子機器は、1つ又は複数の処理コアを含むプロセッサ401、1つ又は複数のコンピュータ可読記憶媒体を含むメモリ402、電源403、及び入力ユニット404などの部品を含んでもよい。当業者であれば理解できるように、
図16に示された電子機器の構成は、電子機器を限定するものではなく、図示されたものよりも多く又は少ない部品を含んでもよく、或いは特定の部品を組み合わせたものであってもよく、或いは部品の異なる配置を有してもよい。
【0182】
プロセッサ401は、該電子機器の制御センターであり、各種のインタフェース及び回線を利用して電子機器全体の各部分を接続し、メモリ402に記憶されたソフトウェアプログラム及び/又はモジュールを実行又は遂行して、メモリ402に記憶されたデータを呼び出すことにより、電子機器の各種の機能を実行してデータを処理し、電子機器を全体的に監視制御する。任意選択的に、プロセッサ401は、1つ又は複数の処理コアを含んでもよい。好ましくは、プロセッサ401には、アプリケーションプロセッサ及びモデムプロセッサを組み込んでもよい。ここで、アプリケーションプロセッサは、主にオペレーティングシステム、ユーザインタフェース、及びアプリケーションプログラムなどを処理し、モデムプロセッサは主に無線通信を処理する。理解できるように、上記モデムプロセッサは、プロセッサ401に組み込まれなくてもよい。
【0183】
メモリ402は、ソフトウェアプログラム及びモジュールを記憶するために使用することができ、プロセッサ401は、メモリ402に記憶されたソフトウェアプログラム及びモジュールを実行することにより、各種の機能アプリケーション及びデータ処理を実行する。メモリ402は、主にプログラム記憶領域及びデータ記憶領域を含んでもよい。ここで、プログラム記憶領域には、オペレーティングシステム、少なくとも1つの機能(例えば、音響再生機能、画像再生機能など)に必要なアプリケーションプログラムなどを記憶してもよい。データ記憶領域には、電子機器の使用に応じて作成されたデータなどを記憶してもよい。また、メモリ402は、高速ランダムアクセスメモリを含んでもよいし、不揮発性メモリ、例えば、少なくとも1つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスを含んでもよい。これに応じて、メモリ402は、メモリコントローラをさらに含んでもよい。これにより、プロセッサ401によるメモリ402へのアクセスが提供される。
【0184】
電子機器は、各部品に電力を供給する電源403をさらに含む。好ましくは、電源403は、電源管理システムを介して、プロセッサ401にロジック的に接続されてもよい。これにより、電源管理システムによって、充電、放電、及び電力消耗の管理などの機能を実現する。電源403は、1つ又は複数の直流又は交流の電源、再充電システム、電源故障検出回路、電源変換器又はインバータ、電源状態インジケータなどの任意のコンポーネントを含んでもよい。
【0185】
該電子機器は、入力ユニット404をさらに含んでもよい。該入力ユニット404は、入力された数字又は文字の情報を受信することと、ユーザ設定及び機能制御に関する、キーボード、マウス、ジョイスティック、光学又はトラックボールによる信号入力を生成することとに使用することができる。
【0186】
図示されていないが、電子機器は、表示ユニットなどを含んでもよい。本実施例では、電子機器のプロセッサ401は、下記の命令に従って、1つ又は複数のアプリケーションプログラムのプロセスに対応する実行可能ファイルをメモリ402にロードし、メモリ402に記憶されたアプリケーションプログラム(実行可能な命令)をプロセッサ401が実行することで、各種の機能を実現する。即ち、
第1記帳ノードが、コンセンサスノードと、ブロックチェーンデータの同期を行い、同期されたブロックチェーンデータの同期ブロック高さを決定し、同期されたブロックチェーンデータには、状態データが含まれ、第1記帳ノードが、状態データから現在の取引に必要なターゲット状態データを決定し、ターゲット状態データをバックアップし、第1記帳ノードが、バックアップされたターゲット状態データに基づいて同期ブロック高さの状態データスナップショットを生成し、状態データスナップショット、同期ブロック高さ、及び第1記帳ノードの署名情報を共同でアーカイブポイント情報として第2記帳ノードに送信し、第1記帳ノードが、第2記帳ノードのアーカイブポイント情報に対する裏書き情報を受信し、第1記帳ノードが、裏書き情報及びアーカイブポイント情報に基づいて、同期されたブロックチェーンデータをアーカイブする。上記の各操作の実施は、前述した実施例を参照すればよい。
【0187】
上記から分かるように、本願の実施例では、現在の取引に必要なターゲット状態データをバックアップし、バックアップされたターゲット状態データに基づいて状態データスナップショットを生成することができ、スナップショットと本々の取引の衝突問題が解決され、状態データのリアルタイムスナップショットが実現される。また、ブロックチェーンシステムにおける他の記帳ノードに、状態データスナップショットなどの情報に対して署名裏書きを行わせることにより、これらの情報が公信力を持つようになる。そのため、ブロックチェーンデータのアーカイブ効率及びアーカイブ精度を大幅に向上させることができる。
【0188】
当業者であれば理解できるように、上記実施例の各方法の手順の全部又は一部は、命令(実行可能な命令)によって実現するか、又は、命令によって関連ハードウェアを制御することにより実現してもよい。この命令は、コンピュータ可読記憶媒体に記憶され、プロセッサによりロードされて実行されてもよい。
【0189】
このため、本願の実施例は、実行可能な命令を含むコンピュータプログラム製品又はコンピュータプログラムを提供する。該実行可能な命令は、コンピュータ可読記憶媒体に記憶されている。コンピュータ機器のプロセッサは、コンピュータ可読記憶媒体から該実行可能な命令を読み取る。プロセッサは、該実行可能な命令を実行することにより、該コンピュータ機器に、本願の実施例の上述したブロックチェーンデータのアーカイブ方法を実行させる。
【0190】
本願の実施例は、実行可能な命令を記憶したコンピュータ可読記憶媒体をさらに提供する。該実行可能な命令は、プロセッサによりロードされると、本願の実施例で提供されるいずれか1つのブロックチェーンデータのアーカイブ方法を実現させることができる。ここで、該コンピュータ可読記憶媒体は、読み出し専用メモリ(ROM:Read Only Memory)、ランダムアクセスメモリ(RAM:Random Access Memory)、磁気ディスク、又は光ディスクなどを含んでもよい。
【0191】
該コンピュータ可読記憶媒体に記憶された実行可能な命令は、本願の実施例で提供されるいずれか1つのブロックチェーンデータのアーカイブ方法を実行させることが可能であるため、本願の実施例で提供されるいずれか1つのブロックチェーンデータのアーカイブ方法によって達成できる有益な効果を達成させることができる。その詳細については、前述した実施例を参照すればよい。
【0192】
いくつかの実施例において、実行可能な命令は、プログラム、ソフトウェア、ソフトウェアモジュール、スクリプト、又はコードの形式を採用して、任意の形式のプログラミング言語(コンパイル言語又はインタプリタ言語、或いは、宣言型言語又は手続き型言語を含む)でプログラミングされてもよく、独立したプログラムとして配置されたり、モジュール、コンポーネント、サブルーチン、又はコンピューティング環境に適用可能な他のユニットとして配置されたりする場合を含めて、任意の形式で配置されてもよい。
【0193】
一例として、実行可能な命令は、ファイルシステムにおけるファイルに対応してもよいが、必ずしも、ファイルシステムにおけるファイルに対応するわけではなく、他のプログラム又はデータを保存するファイルの一部に記憶されてもよく、例えば、ハイパーテキストマークアップ言語(HTML:HyperText Markup Language)ドキュメントの1つ又は複数のスクリプトに記憶されたり、検討するプログラムの単一のファイルに記憶されたり、複数のコラボレーションファイル(例えば、1つ又は複数のモジュール、サブプログラム、又はコード部分を記憶するファイル)に記憶されたりしてもよい。
【0194】
一例として、実行可能な命令は、1つのコンピューティングデバイスで実行されたり、1つの場所にある複数のコンピューティングデバイスで実行されたり、複数の場所に分散されて通信ネットワークを介して互いに接続される複数のコンピューティングデバイスで実行されたりするように配置されてもよい。
【0195】
以上は、本願の実施例で提供されるブロックチェーンデータのアーカイブ方法、装置、電子機器、及びコンピュータ可読記憶媒体について詳細に説明している。本明細書では、本願の原理及び実施形態を説明するために具体例を使用したが、以上の実施例の説明は、本願の方法及びその主旨の理解を助けるためにのみ使用される。また、当業者にとっては、本願の構想に基づき、具体的な実施形態及び適用範囲のいずれにも変更があり得る。上述のように、本明細書の内容は、本願を制限するものと理解されるべきではない。
【符号の説明】
【0196】
100 アーカイブシステム
200 ブロックチェーンシステム
210 ネイティブノード
300 認証センター
400 サービスシステム
410 端末
420 グラフィックインタフェース