(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】同期処理方法及び関連装置
(51)【国際特許分類】
G06F 9/52 20060101AFI20240910BHJP
【FI】
G06F9/52 150A
(21)【出願番号】P 2022523680
(86)(22)【出願日】2021-02-05
(86)【国際出願番号】 CN2021075370
(87)【国際公開番号】W WO2021190179
(87)【国際公開日】2021-09-30
【審査請求日】2022-04-21
(31)【優先権主張番号】202010212529.5
(32)【優先日】2020-03-24
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】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)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】李 茂材
(72)【発明者】
【氏名】王 宗友
(72)【発明者】
【氏名】▲張▼ ▲勁▼松
(72)【発明者】
【氏名】周 ▲開▼班
(72)【発明者】
【氏名】▲時▼ 一防
(72)【発明者】
【氏名】▲黄▼ ▲フアン▼坤
(72)【発明者】
【氏名】▲劉▼ 区城
(72)【発明者】
【氏名】▲劉▼ 攀
(72)【発明者】
【氏名】▲藍▼ ▲虎▼
(72)【発明者】
【氏名】▲楊▼ 常青
(72)【発明者】
【氏名】朱 耿良
(72)【発明者】
【氏名】孔 利
【審査官】坂東 博司
(56)【参考文献】
【文献】中国特許出願公開第110430087(CN,A)
【文献】米国特許出願公開第2020/0389291(US,A1)
【文献】米国特許出願公開第2021/0184780(US,A1)
【文献】中国特許出願公開第110569305(CN,A)
【文献】中国特許出願公開第109522362(CN,A)
【文献】中国特許出願公開第107332876(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおける
いずれか1つのノード機器である第1ノード機器が実行する、同期処理方法であって、前記ブロックチェーンネットワーク
には
、前記第1ノード機器に接続される複数の同期候補ノード機器
により構成される同期候補ノード集合が含まれ、前記方法は、
複数のブロックを含むデータ構造であるフレームワークからなるフレームワーク集合、及び前記第1ノード機器
にあるブロックと前記同期候補ノード機器
にあるブロックとを同期させるタスクである同期タスクからなる同期タスク集合を、前記第1ノード機器内において特定するステップであって、前記フレームワーク集合は、前記第1ノード機器の同期されるべきM個のブロックを記憶するためのものであり、前記フレームワーク集合にP個のフレームワークが含まれ、前記同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数であり、前記フレームワーク集合における同期されるべき前記M個のブロックはP個のフレームワークに割り振られ、前記P個の同期タスクはそれぞれ指示情報を含み、前記指示情報は、前記フレームワークの、それぞれの最初のブロックのインデックスと最後のブロックのインデックスとを含み、且つ前記フレームワークの複数の同期されるべきブロックを指示する、ステップと、
前記同期候補ノード集合から、少なくとも1つの第2ノード機器を所定の基準に従って選択するステップであって、前記第2ノード機器は、前記同期候補ノード集合内の少なくとも1つの同期候補ノード機器である、ステップと、
前記第2ノード機器に前記同期タスク集合内の同期タスクをそれぞれ同時に送信することによって、前記第2ノード機器がそれぞれ受信した前記同期タスクに含まれる前記指示情報に従って、それぞれの前記第2ノード機器に、前記指示情報によって指示された複数の同期されるべきブロックを一度に
前記第1ノード機器へ送信させるステップであって、前記指示情報によって指示された前記複数の同期されるべきブロックは前記M個のブロック
である、ステップと、
前記M個のブロックを前記フレームワーク集合内の各フレームワークに記憶させるステップと、を含む、同期処理方法。
【請求項2】
ターゲットフレームワークは、前記P個のフレームワークのうちのいずれか1つであり、
前記ターゲットフレームワークは、N個のデータユニットを含み、前記N個のデータユニットは、前記第1ノード機器の同期されるべきN個のブロックを記憶するためのものであり、前記N個のブロックと前記N個のデータユニットは、一対一に対応し、Nは、正の整数であり、且つN≦Mであることを特徴とする
請求項1に記載の方法。
【請求項3】
前記ターゲットフレームワークにおけるN個のデータユニットは、順に配列され、前記N個のブロックは、前記ブロックチェーンネットワークにおいて連続するブロックであり、
前記N個のデータユニットのうちのi番目のデータユニットは、前記N個のブロックのうちのi番目のブロックを記憶するためのものであり、iは、正の整数であり、且つ1≦i≦Nであることを特徴とする
請求項2に記載の方法。
【請求項4】
ターゲット第2ノード機器は、第2ノード機器のうちのいずれか1つであり、前記ターゲット第2ノード機器は、前記ターゲットフレームワークに対応するターゲット同期タスクを実行し、前記第1ノード機器にN個のブロックを
送信するためのものであり、
前記ターゲット第2ノード機器に対して、前記M個のブロックを前記フレームワーク集合内の各フレームワークに記憶させるステップは、
前記N個のブロックをそれぞれ前記ターゲットフレームワークのN個のデータユニットに記憶させるステップを含むことを特徴とする
請求項2に記載の方法。
【請求項5】
前記方法は、
前記ターゲットフレームワークから、前記N個のデータユニットに記憶されているN個のブロックを読み取り、読み取られた前記N個のブロックを前記第1ノード機器のローカルに記憶されている第1ブロックチェーンに順に追加するステップを更に含むことを特徴とする
請求項4に記載の方法。
【請求項6】
前記
同期候補ノード集合から第2ノード機器を所定の基準に従って選択するステップは、
前記
同期候補ノード集合における各
同期候補ノード機器の信用度を特定するステップと、
前記
同期候補ノード集合における信用度が信用度閾値よりも高い少なくとも1つの
同期候補ノード機器を前記第2ノード機器として決定するステップと、を含むことを特徴とする
請求項1-5のうちいずれか一項に記載の方法。
【請求項7】
前記
同期候補ノード集合から第2ノード機器を所定の基準に従って選択するステップは、
前記
同期候補ノード集合における
同期候補ノード機器の処理性能を特定するステップと、
前記
同期候補ノード集合における処理性能が性能閾値よりも高い少なくとも1つの
同期候補ノード機器を前記第2ノード機器として決定するステップと、を含むことを特徴とする
請求項1-5のうちいずれか一項に記載の方法。
【請求項8】
前記
同期候補ノード集合から第2ノード機器を所定の基準に従って選択するステップは、
前記
同期候補ノード集合における
同期候補ノード機器が記憶しているブロックの状況を示すブロック記憶状況を受信するステップと、
前記
同期候補ノード集合における
同期候補ノード機器のブロック記憶声明に基づいて、前記
同期候補ノード集合から、少なくとも1つの
同期候補ノード機器を選択して前記第2ノード機器として決定するステップと、を含むことを特徴とする
請求項1-5のうちいずれか一項に記載の方法。
【請求項9】
フレームワーク集合を特定するステップは、
前記ブロックチェーンネットワークにおける参照ブロックチェーンのブロック高さを特定し、前記第1ノード機器のローカルに記憶されている第1ブロックチェーンのブロック高さを特定するステップと、
前記参照ブロックチェーンのブロック高さと前記第1ブロックチェーンのブロック高さとの差分であるM個のブロックを前記第1ノード機器の同期されるべきブロックとして決定するステップと、
前記M個のブロックに基づいて前記フレームワーク集合を構築するステップと、を含むことを特徴とする
請求項1-5のうちいずれか一項に記載の方法。
【請求項10】
同期処理装置であって、前記同期処理装置は、ブロックチェーンネットワークにおける
いずれか1つのノード機器である第1ノード機器に設けられ、前記ブロックチェーンネットワーク
には
、前記第1ノード機器に接続される複数の
同期候補ノード機器
により構成される同期候補ノード集合が含まれ、前記同期処理装置は、
複数のブロックを含むデータ構造であるフレームワークからなるフレームワーク集合、及び前記第1ノード機器
にあるブロックと前記
同期候補ノード機器
にあるブロックとを同期させるタスクである同期タスクからなる同期タスク集合を前記第1ノード機器内において特定するように構成される特定ユニットであって、前記フレームワーク集合は、前記第1ノード機器の同期されるべきM個のブロックを記憶するためのものであり、前記フレームワーク集合にP個のフレームワークが含まれ、前記同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数であり、前記フレームワーク集合における同期されるべき前記M個のブロックはP個のフレームワークに割り振られ、前記P個の同期タスクはそれぞれ指示情報を含み、前記指示情報は、前記フレームワークの、それぞれの最初のブロックのインデックスと最後のブロックのインデックスとを含み、且つ前記フレームワークの複数の同期されるべきブロックを指示する、特定ユニットと、
前記
同期候補ノード集合から、少なくとも1つの第2ノード機器を所定の基準に従って選択し、前記第2ノード機器は、前記
同期候補ノード集合内の少なくとも1つの
同期候補ノード機器であり、前記第2ノード機器がそれぞれ受信した前記同期タスクに含まれる前記指示情報に従って、前記第2ノード機器に前記同期タスク集合内の同期タスクをそれぞれ同時に送信することによって、それぞれの前記第2ノード機器に、前記指示情報によって指示された複数の同期されるべきブロックを一度に
前記第1ノード機器へ送信させ、前記指示情報によって指示された前記複数の同期されるべきブロックは前記M個のブロック
であり、前記M個のブロックを前記フレームワーク集合内の各フレームワークに記憶させるように構成される処理ユニットと、を備える、同期処理装置。
【請求項11】
同期処理機器であって、前記同期処理機器は、ブロックチェーンネットワークにおける第1ノード機器であり、前記ブロックチェーンネットワークは、
同期候補ノード集合を含み、前記
同期候補ノード集合に、前記第1ノード機器に接続される複数の
同期候補ノード機器が含まれ、
1つ又は複数の命令を実現することに適するプロセッサと、
1つ又は複数の命令が記憶されているコンピュータ記憶媒体であって、前記1つ又は複数の命令は前記プロセッサによってロードされて請求項1-9のうちいずれか一項に記載の同期処理方法を実行する、コンピュータ記憶媒体と、を更に備える、同期処理機器。
【請求項12】
命令を含むコンピュータプログラムであって、コンピュータ上で実行される時、前記コンピュータに、請求項1-9のうちいずれか一項に記載の同期処理方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2020年03月24日に中国特許局に提出された、出願番号が202010212529.5であり、発明名称が「同期処理方法、装置、機器及び媒体」である中国特許出願に基づく優先権を主張し、該中国特許出願の全内容が参照として本願に組み込まれる。
【0002】
本願は、ブロックチェーン技術分野に関し、具体的には、ブロックチェーンの同期処理に関する。
【背景技術】
【0003】
ブロックチェーンネットワークにおけるあるノード機器は、ブロックチェーンの同期処理を行う時に、ブロックチェーンネットワークにおける他のノード機器(例えば、コンセンサスノード機器又は同期ノード機器)から、必要なブロックを一つずつ取得する。
【発明の概要】
【0004】
本願の実施例は、同期処理効率を効果的に向上させることができる同期処理方法及び関連装置を提供する。
【0005】
一態様によれば、本願の実施例は、同期処理方法を提供する。該方法は、ブロックチェーンネットワークにおける第1ノード機器によって実行され、ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれ、該方法は、
フレームワーク集合及び同期タスク集合を取得するステップであって、フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、フレームワーク集合にP個のフレームワークが含まれ、同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数である、ステップと、
候補ノード集合から、第2ノード機器を選択するステップであって、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器である、ステップと、
第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させるステップと、
M個のブロックをフレームワーク集合内の各フレームワークに充填するステップと、を含む。
【0006】
一態様によれば、本願の実施例は、同期処理装置を提供する。同期処理装置は、ブロックチェーンネットワークにおける第1ノード機器に設けられ、ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれ、該同期処理装置は、
フレームワーク集合及び同期タスク集合を取得するように構成される取得ユニットであって、フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、フレームワーク集合にP個のフレームワークが含まれ、同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数である、取得ユニットと、
候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、M個のブロックをフレームワーク集合内の各フレームワークに充填するように構成される処理ユニットと、を備える。
【0007】
一態様によれば、本願の実施例は、同期処理機器を提供する。該同期処理機器は、ブロックチェーンネットワークにおける第1ノード機器であり、ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれ、該同期処理機器は、入力機器と、出力機器と、を備え、
1つ又は複数の命令を実現することに適するプロセッサと、
1つ又は複数の命令が記憶されているコンピュータ記憶媒体であって、1つ又は複数の命令はプロセッサによってロードされて上記態様における同期処理方法を実行する、コンピュータ記憶媒体と、を更に備える。
【0008】
一態様によれば、本願の実施例は、コンピュータ記憶媒体を提供する。該コンピュータ記憶媒体に1つ又は複数の命令が記憶されており、1つ又は複数の命令はプロセッサによってロードされて上記態様における同期処理方法を実行する。
【0009】
一態様によれば、本願の実施例は、命令を含むコンピュータプログラム製品を提供する。これは、コンピュータ上で運行される時、前記コンピュータに、上記態様における同期処理方法を実行させる。
【発明の効果】
【0010】
本願の実施例において、第1ノード機器は、同期処理を行う時、フレームワーク集合及び同期タスク集合を取得し、該フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、第1ノード機器は、更に、M個のブロックをフレームワーク集合内の各フレームワークに充填する。このようなフレームワーク充填による同期処理方式によって、一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することができる。このように、複数のフレームワークに基づいて、より多くのブロックを一括して同期することができ、同期処理の効率を向上させる。
【図面の簡単な説明】
【0011】
【
図1】本願の1つの例示的な実施例によるブロックチェーンの基礎アーキテクチャ図を示す。
【
図2】本願の1つの例示的な実施例によるブロックチェーンの構造概略図を示す。
【
図3】本願の1つの例示的な実施例によるブロックチェーンネットワークのアーキテクチャ概略図を示す。
【
図4】本願の1つの例示的な実施例によるフレームワークの構造概略図を示す。
【
図5】本願の1つの例示的な実施例による同期処理方法のフローチャートを示す。
【
図6】本願の1つの例示的な実施例による別の同期処理方法のフローチャートを示す。
【
図7】本願の1つの例示的な実施例による同期処理装置の構造概略図を示す。
【
図8】本願の1つの例示的な実施例による別の同期処理装置の構造概略図を示す。
【発明を実施するための形態】
【0012】
本願の実施例における技術的解決手段をより明確に説明するために、以下、実施例の説明に必要な図面を簡単に説明する。勿論、上記の図面は本願の一部の実施例に過ぎず、当業者は創造的な労力を払わなくても、これらの図面に基づいて他の図面を得ることもできる。
【0013】
以下、本出願の実施例における図面を参照しながら、本出願の実施例における技術的解決手段を明瞭かつ完全に説明する。勿論、記述される実施例は、全ての実施例ではなく、ただ本出願の一部の実施例である。本出願における実施例に基づいて、当業者が創造的な労力を払わずに得られる他の実施例の全ては、本出願の保護の範囲に含まれる。
【0014】
本願の実施例は、ブロックチェーン技術に関する。ブロックチェーンは、分散型記憶特徴を有する、分散化されている基礎アーキテクチャであり、具体的には、時間順に従って、データブロックからリンクのような方式で構成されるデータ構造であり、先後関係を有する、システム内において検証できるデータを安全に記憶することができ、そして、暗号化の方式でデータの改竄できないことと偽造できないことを保証する。
【0015】
図1は、本願の1つの例示的な実施例によるブロックチェーンの基礎アーキテクチャ図を示す。
図1に示すように、ブロックチェーンの基礎アーキテクチャは、下から上まで、順に、101-105という計5個の階層的構造を主に含む。
【0016】
(1)情報データとマークル(Merkle)ツリーは、下位層101に位置する。ここの情報データは、ブロックチェーンネットワークへの配布が要求されているが、ブロックを形成していないオリジナルデータであり、例えば、業務データ、取引データなどであってもよい。これらのオリジナルデータをブロック内に書き込むために、更に加工を行う必要がある(例えば、ブロックチェーンネットワークにおける各ノードによって検証され、ハッシュ演算などを行う)。マークルツリーは、ブロックチェーン技術の重要な構成部であり、ブロックチェーンは、平文のオリジナルデータを直接的に保存することがなく、オリジナルデータに対して、ハッシュ演算を行い、ハッシュ値の方式で記憶される。マークルツリーは、複数のオリジナルデータに対してハッシュ演算を行うことで形成されるハッシュ値を二分木構造に従ってまとめて、ブロックのブロックボディに保存するためのものである。
【0017】
(2)ブロックは、階層102に位置する。ブロックは、データブロックであり、下位層101の情報データは、更に加工された後に階層102のブロック内に書き込まれる。複数のブロックは、チェーン構造として順に接続され、即ち、ブロックチェーンを形成する。チェーン構造において、前のブロックと隣接するその後のブロックは、親子関係を有する。
図2は、本願の1つの例示的な実施例によるブロックチェーンの構造概略図を示す。
図2に示すように、ブロックi-1(iは、正の整数である)、ブロックi及びブロックi+1は、チェーン構造として順に接続される。ブロックiは、ブロックヘッダとブロックボディの2つの部分に分けられる。ブロックヘッダは、前のブロックi-1のダイジェスト値及び本ブロックiのダイジェスト値(即ち、本ブロックのマークル(Merkle)ルート)を含む。ブロックボディは、本ブロックiの完全なデータを含み、Merkleツリーの形式でまとめられている。ブロックi-1とブロックiは、親子関係を有し、即ち、ブロックi-1は、ブロックiの親ブロックであり、ブロックiは、ブロックi-1の子ブロックである。同様に、ブロックiは、ブロックi+1の親ブロックであり、ブロックi+1は、ブロックiの子ブロックである。
【0018】
(3)ブロックチェーンが準拠するプロトコルとメカニズムは、階層103に位置する。これらのプロトコルは、P2P(Peer-to-Peer:ピアツーピアネットワーク)プロトコルを含んでもよく、メカニズムは、ブロードキャストメカニズム、コンセンサスメカニズム(PoW(Proof Of Work:プルーフオブワーク)メカニズム、POS(Proof Of Stake:プルーフオブステーク)メカニズムなどのコアメカニズムを含む)を含んでもよいが、これらに限らない。
【0019】
(4)ブロックチェーンネットワークは、階層104に位置する。ブロックチェーンネットワークは、複数のノード機器から構成される。ノード機器は、コンピュータ機器であってもよく、PC(Personal Computer:パーソナルコンピュータ)、サーバ、マイナー、スマートフォン、タブレット、携帯型コンピュータなどを含んでもよいが、これらに限らない。ブロックチェーンネットワークにおける各ノード機器は、P2Pの方式でネットワーキングされ、ノード機器とノード機器とは、P2Pプロトコルに従って互いに通信する。各ノード機器は、共同でブロードキャストメカニズム、コンセンサスメカニズム(PoWメカニズム、POSメカニズムなどのコアメカニズムを含む)に従い、ブロックチェーンにおけるデータの改竄できないことと偽造できないことを共同で確保すると同時に、ブロックチェーンの分散化、不確実化などの特性を実現する。
【0020】
(5)スマートコントラクトは、上位層105に位置する。スマートコントラクトは、1組のシナリオ対応型プログラミングルールとロジックであり、ブロックチェーンに配置される分散化された情報共有可能なプログラムコードである。コントラクトを行う各関与者は、コントラクト内容に合意し、スマートコントラクトの形式でブロックチェーンに配置され、即ち、いかなる中央局に依存することもなく、各署名者を自動的に代表してコントラクトを実行することができる。
【0021】
ブロックチェーンのタイプは、パブリックブロックチェーン(Public Blockchain)、プライベートブロックチェーン(Private Blockchain)及びコンソーシアムブロックチェーン(Consortium Blockchain)を含んでもよい。パブリックブロックチェーンは、公開され、誰でもこれに加入してブロックチェーンにアクセスすることができる。パブリックブロックチェーンにおけるブロックは、誰にでも閲覧されてもよく、誰でもパブリックブロックチェーンにおいて取引を開始することができ、パブリックブロックチェーンのコンセンサスプロセスに何時でも参加することができる。プライベートブロックチェーンは、プライベート組織内部のみに用いられ、ブロックチェーンにおける読み書き権限、アカウンティングへの関与権限は、プライベート組織のルールに従って行われる。一般的には、企業内部のデータ管理、会計監査などに用いられる。コンソーシアムブロックチェーンは、コンソーシアムメンバーのみが関与でき、ブロックチェーンにおける読み書き権限、アカウンティングへの関与権限は、コンソーシアムルールに従って制定される。一般的には、機構間の取引、決算又は清算などのシーンに用いられる。
図1に示されるブロックチェーンの基礎アーキテクチャは、各タイプのブロックチェーンの発展の基礎である。理解できるように、異なるタイプのブロックチェーンに対応するブロックチェーンネットワークのネットワーキング方式にも何らかの差異がある。ブロックチェーンが分散化、分散式記憶、データの改竄できないことと偽造できないことなどの特性を有するため、ますます多くの業務活動(例えば、貸与活動、金融取引活動)は、ブロックチェーン技術に基づいて展開され、それによりブロックチェーンの特性を利用して、業務活動の公平性及び公開性を確保する。
【0022】
図3は、本願の1つの例示的な実施例によるブロックチェーンネットワークのアーキテクチャ概略図を示す。該ブロックチェーンネットワークは、複数のノード機器を含む(図面において、7個のノード機器を例として説明する)。
図4に示すように、ノード機器1とノード機器2は、コンセンサスノード機器であり、ノード機器3~ノード機器7は、いずれも同期ノード機器である。コンセンサスノード機器は、ブロック同期プロセスを実行できるだけでなく、ブロックコンセンサスプロセスにも参加できるノード機器である。同期ノード機器は、ブロック同期プロセスのみを実行でき、ブロックコンセンサスプロセスに参加できないノード機器である。
【0023】
ブロックチェーンは、分散型アプリケーションモードである。ブロックチェーンネットワークにおける各ノード機器のそれぞれに1本のブロックチェーンが記憶されている。具体的には、
図3に示されるブロックチェーンネットワークにおいて、ノード機器1は、該ノード機器1の記憶スペースにブロックチェーン1を記憶し、ノード機器2は、該ノード機器2の記憶スペースにブロックチェーン2を記憶し、ノード機器3は、該ノード機器3の記憶スペースにブロックチェーン3を記憶し、このように類推する。ネットワークの接続性能に差異があり、処理性能に差異があり、ブロックチェーンネットワークに加入する時間に差異があるなどの要因により、ブロックチェーンネットワークのノード機器に記憶されているブロックチェーンに差異が生じる。ブロックチェーンネットワークにおける各ノード機器は、同期などの手段により、各ノード機器に記憶されているブロックチェーンの一致性を保持する必要がある。例えば、ブロックチェーンネットワークに既にn(nは、正の整数である)個のノード機器が存在する。あるノード機器n+1は、ブロックチェーンネットワークに新たに加入する。該ノード機器n+1にとって、その記憶スペースに、如何なるブロックも保存されていない。該ノード機器n+1のブロックチェーンn+1のブロック高さは0である。ブロックチェーンネットワークに既に存在しているノード機器nに、10001個のブロックが記憶されている可能性があり、該ノード機器nの記憶スペースに記憶されているブロックチェーンnのブロック高さは、10000であり得る。従って、ノード機器n+1は、ノード機器nよりも遅れている。該ノード機器n+1は、ブロック同期プロセスを実行する必要があり、ブロック高さ0~ブロック高さ10000の間の全てのブロックを取得し、自己のブロックチェーンn+1を更新し、ノード機器nに追いつく。実際の応用において、ブロックチェーンネットワークで生じる新たなブロックは、まず、コンセンサスノード機器によってコンセンサス処理される必要があり、コンセンサス処理に成功した後に、コンセンサスノード機器によって、該新たなブロックを該コンセンサスノード機器のローカルに記憶されているブロックチェーンに追加する。ブロックチェーンネットワークにおける同期ノード機器は、更に、コンセンサスノード機器から、該新たなブロックを取得し、該同期ノード機器のローカルに記憶されているブロックチェーンに追加し、ブロック同期プロセスを遂行する。これによれば、一般的には、コンセンサスノード機器に記憶されているブロックチェーンは、ブロックチェーンネットワークにおける最も長い(又は、最も完全な)ブロックチェーンであると言え、コンセンサスノード機器に記憶されているブロックチェーンを同期処理プロセスにおける参照ブロックチェーンとしてもよい。
【0024】
図3に示されるブロックチェーンネットワークのアーキテクチャによれば、本願の実施例は、同期処理方案を提供する。該方案にフレームワーク(Framework)の概念が導入される。
図4は、本願の1つの例示的な実施例によるフレームワークの構造概略図を示す。フレームワークは、データ構造である。1つのフレームワークは、複数のデータユニット401を含み、各データユニットは、1つのブロックを記憶するためのものである。
図4に示される例を参照すると、ブロックチェーンネットワークにおけるいずれか1つのノード機器(
図3に示されるノード機器3であるとする)がブロック1~ブロック100の100個のブロックを同期する必要があれば、該ノード機器3の同期処理プロセスは、下記ステップ(1)-(4)を含んでもよい。
【0025】
(1)において、同期待ちブロックに基づいて、フレームワーク集合を構築し、該フレームワーク集合に1つ又は複数のフレームワークが含まれる。
【0026】
図4に示すように、フレームワーク集合に計10個のフレームワークが含まれ、各フレームワークは、いずれも10個のデータユニット401を含み、これらのデータユニット401は、用意されており、それにより、該ノード機器3が同期ブロックを取得した後、これらの同期ブロックを記憶するために用いられる。フレームワーク1を例として、フレームワーク1は、10個のデータユニット401を含み、これらのデータユニットは、順に配列され、1番目のデータユニットは、ブロック1を記憶するためのものであり、2番目のデータユニットは、ブロック2を記憶するためのものであり、このように類推する。フレームワーク集合において、各フレームワークに含まれるデータユニットの数は、同じであってもよく、
図4に示すように、各フレームワークはいずれも10個のデータユニットを含んでもよい。無論、各フレームワークに含まれるデータユニットの数は、異なってもよく、例えば、
図4におけるフレームワーク1は、10個のデータユニットを含んでもよく、フレームワーク2は、5個のデータユニットを含んでもよく、フレームワーク3は、15個のデータユニットを含んでもよい。ノード機器3は、実際の状況に応じて、フレームワークの数及びフレームワークに含まれるデータユニットの数を設定してもよい。ここの実際の状況は、候補ノード集合におけるノード機器の数及び処理能力、ノード機器3の実際の並行処理能力などを含んでもよいが、これらに限らない。
【0027】
(2)フレームワーク集合のために、同期タスク集合を作成し、該同期タスク集合に1つ又は複数の同期タスクが含まれ、1つのフレームワークは、1つの同期タスクに対応する。
【0028】
図4に示すように、フレームワーク1は、同期タスク1に対応し、フレームワーク2は、同期タスク2に対応し、フレームワーク3は、同期タスク3に対応し、このように類推する。各フレームワークに対応する同期タスクは、該フレームワークの、記憶のための複数のブロックを返送するよう指示するために用いられる。例えば、フレームワーク1に対応する同期タスク1は、フレームワーク1の、記憶のためのブロック1-ブロック10をノード機器3に返送するよう指示するために用いられる。また例えば、フレームワーク2に対応する同期タスク2は、フレームワーク2の、記憶のためのブロック11-ブロック20をノード機器3に返送するよう指示するために用いられる。理解できるように、同期タスクは指示情報を含む。該指示情報は、フレームワークにおける首尾の2つのデータユニットに対応するブロックのインデックスを含んでもよい。ここのインデックスは、ブロックのハッシュ値であってもよく、又はブロックの生成タイムスタンプであり、又は、ブロックに対応するブロック高さである。このように、他のノード機器は、該同期タスクを受信した後、指示情報における2つのブロックのインデックスに基づいて、該ノード機器3に、該フレームワークにおける該2つのブロック及び2つのブロックの間の全てのブロックを返送する。該指示情報は、フレームワークの、記憶のための全てのブロックのインデックスを含んでもよい。このように、他のノード機器は、該同期タスクを受信した後、必要な全てのブロックのインデックスに基づいて、該ノード機器3に、必要な全てのブロックを返送する。
【0029】
(3)において、第2ノード機器を選択し、該第2ノード機器は、ブロックチェーンネットワークにおける、第1ノード機器に接続される同期タスクを実行するための少なくとも1つのノード機器である。
【0030】
まず、候補ノード集合を決定し、候補ノード集合に含まれるのは、ノード機器3に直接的に接続される候補ノード機器である。
図3に示すように、ノード機器3の候補ノード集合に、ノード機器1、ノード機器4-ノード機器7が含まれる。ノード機器1がコンセンサスノード機器であり、コンセンサスタスクも実行する必要があるため、ノード機器1の処理負担を引き起こすことを避けると同時に、同期効率を向上させるために、候補ノード集合から、ノード機器4-ノード機器7を第2ノード機器として選択し、同期タスクを実行することができる。次に、各同期タスクに対して、対応する第2ノード機器を割り当てる。ここの割り当ては、主に以下のポリシーを含む。
【0031】
ポリシー1:記憶状況に応じて割り当てる。同期タスクを、対応するブロックが記憶されている第2ノード機器に割り当てる。例えば、同期タスク1がブロック1-ブロック10を同期しようとする場合、ブロック1-ブロック10が記憶されている第2ノード機器を選択して同期タスク1を実行する。また例えば、同期タスク2がブロック81-ブロック90を同期しようとする場合、ブロック81-ブロック90が記憶されている第2ノード機器を選択して同期タスク2を実行する。
【0032】
ポリシー2:処理性能に応じて割り当てる。処理性能に応じて、複数の第2ノード機器から1つを選択して同期タスクを実行することができる。例えば、ノード機器4の処理性能がノード機器5よりもよいとした場合、ノード機器4を選択して同期タスク1を実行することができる。処理性能は、CPU処理速度、並行処理量、ネットワーク帯域幅のリソースなどを含むが、これらに限らない。処理性能が高いほど、実行度が高くなり、同期タスクを高速に実行できることを表す。
【0033】
ポリシー3:信用度に応じて割り当てる。信用度は、ノード機器の信用程度を表すための情報であり、信用度が高いほど、該ノード機器の信用程度が高くなることを表す。一般的には、公的機関で用いられるノード機器の信用度は、非公的機関で用いられるノード機器の信用度よりも高い。一実施形態において、信用度は、スコアで表されてもよい。例えば、信用度のスコア範囲は、[0,10]を含む。信用度のスコアが高いほど、信用程度が高くなることを表す。別の実施形態において、信用度は、等級で表されてもよい。例えば、信用度等級は、高、中、低の3つの等級を含む。該3つの等級の信用程度は、順次低下する。信用度に応じて、複数の第2ノード機器から、1つを選択してある同期タスクを実行することができる。例えば、ノード機器4の信用度がノード機器5よりも高く、ノード機器4を選択して同期タスク1を実行することができる。
【0034】
1つの同期タスクは、1つのノード機器によって実行される。1つのノード機器は、複数の同期タスクを実行することができる。理解できるように、上記ポリシーは、網羅的ではなく、本願の実施例は、他のポリシーに適用可能である。例えば、ランダム割り当てポリシーであり、即ち、複数の第2ノード機器から、1つの第2ノード機器をランダムに選択してある同期タスクを実行することができる。また例えば、加重平均ポリシーであり、即ち、複数の影響ファクター(記憶状況ファクター、信用度ファクター、処理性能ファクター)に対して、それぞれ重みを設定し、加重平均の方式で、複数の第2ノード機器から、1つを選択して該同期タスクを実行する。なお、上記ポリシー2とポリシー3において、ある同期タスクを実行するためのものとして選択される第2ノード機器自体に、該同期タスクによって指示される同期待ちブロックが記憶されていない場合、該第2ノード機器は、ブロックチェーンネットワークにおける他のノード機器(例えば、コンセンサスノード機器)から該ブロックを取得し、第1ノード機器に返送することができる。例えば、同期タスク1がブロック1-ブロック10を同期しようとする場合、ポリシー2又はポリシー3によって、ノード機器4を選択して同期タスク1を実行する。しかしながら、該ノード機器4に該ブロック1-ブロック10が記憶されていない。従って、該ノード機器4は、コンセンサスノード機器から該ブロック1-ブロック10を取得し、第1ノード機器に返送することができる。
【0035】
(4)において、第2ノード機器に複数の同期タスクを並行送信し、第2ノード機器によって、これらの同期タスクを実行する。
【0036】
図4に示されるものを例として、同期タスク1と同期タスク3は、ノード機器4によって実行され、同期タスク2、同期タスク4及び同期タスク6は、ノード機器5によって実行され、同期タスク5、同期タスク6及び同期タスク9は、ノード機器6によって実行され、同期タスク7、同期タスク8及び同期タスク10は、ノード機器7によって実行されるとする。従って、ノード機器3は、該10個の同期タスクを一括して並行送信することができる。第2ノード機器(即ち、ノード機器4、ノード機器5、ノード機器6及びノード機器7)は、内部で直列方式又は平行方式でこれらの同期タスクを実行し、ノード機器3に必要なブロックをノード機器3に返送し、それにより、ノード機器3は、一回の同期処理プロセスにより、同期されるべきブロックを得ることができる。
【0037】
(5)において、第2ノード機器から返送されたブロックを前記フレームワーク集合内の各フレームワークに充填する。
【0038】
図4に示されるものを例として、ノード機器4が同期タスク1を実行して返送したブロック1-ブロック10をフレームワーク1の各データユニットに充填する。ノード機器4が同期タスク3を実行して返送したブロック21-ブロック30をフレームワーク3の各データユニットに充填する。各フレームワークへの充填が完了した後、第1ノード機器は、各フレームワークに記憶されているブロックを順に(例えば、各ブロックの生成タイムスタンプの前後順序に応じて)第1ノード機器のローカルブロックチェーンに追加することができ、それにより、第1ノード機器のローカルブロックチェーンの更新を実現する。
【0039】
説明すべきこととして、ある同期タスクについて、如何なるポリシーを用いても、これを実行する第2ノード機器の割り当てができない場合、例えば、候補ノード集合に、あるフレームワークに必要なブロックが完全に記憶されているノード機器がなければ、フレームワークの構築は、合理的ではない可能性があり、フレームワークの再構築を行い、同期タスクを再更新してもよい。無論、従来の同期方式を踏襲し、ノード機器との割り当てに失敗した同期タスクに対応するフレームワークの必要なブロックを一つずつ同期することもできる。
【0040】
本願の実施例によって提供されるこのようなフレームワーク充填による同期処理方案は、1つのフレームワークに対応する1つの同期タスクに基づいて、複数のブロックを一括して同期することができ、同期処理効率を効果的に向上させる。更に、一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することもできる。このように、複数のフレームワークによれば、より多くのブロックを一括して同期することができ、同期処理の効率を更に向上させる。
【0041】
図5は、本願の1つの例示的な実施例による同期処理方法のフローチャートを示す。該方法は、ブロックチェーンネットワークにおける第1ノード機器によって実行され、該第1ノード機器は、ブロックチェーンネットワークにおけるいずれか1つのノード機器であってもよい。本願の後続の実施例は、第1ノード機器が
図3に示されるブロックチェーンネットワークにおけるノード機器3であることを例として説明する。ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれ、該方法は、以下のステップS501-S504を含む。
【0042】
S501において、フレームワーク集合及び同期タスク集合を取得し、フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、フレームワーク集合にP個のフレームワークが含まれ、同期タスク集合にP個の同期タスクが含まれ、1つのフレームワークは、1つの同期タスクに対応し、M、Pはいずれも正の整数である。
【0043】
フレームワーク集合におけるいずれか1つのフレームワークを例として説明する。該いずれか1つのフレームワークは、ターゲットフレームワークとして表される。ターゲットフレームワークは、N個のデータユニットを含み、N個のデータユニットは、第1ノード機器の同期待ちのN個のブロックを記憶するためのものであり、N個のブロックとN個のデータユニットは、一対一に対応し、Nは、正の整数であり、且つN≦Mである。ターゲットフレームワークにおけるN個のデータユニットは、順に配列され、N個のブロックは、ブロックチェーンネットワークにおいて連続するブロックであり、N個のデータユニットのうちのi番目のデータユニットは、N個のブロックのうちのi番目のブロックを記憶するためのものであり、iは、正の整数であり、且つ1≦i≦Nである。
図4に示される例を参照すると、ターゲットフレームワークは、フレームワーク1-フレームワーク10のうちのいずれか1つのフレームワークであってもよい。ターゲットフレームワークがフレームワーク1であることを例として、Nは、10であり、ターゲットフレームワークの1番目のデータユニットは、ブロック1を記憶するためのものであり、ターゲットフレームワークの2番目のデータユニットは、ブロック2を記憶するためのものであり、このように類推する。ターゲットフレームワークは、ターゲット同期タスクに対応し、該ターゲット同期タスクは、指示情報が含み、該指示情報は、ターゲットフレームワークにおける首尾の2つのデータユニットに対応するブロックのインデックスを含んでもよい。ここのインデックスは、ブロックのハッシュ値であってもよく、又はブロックの生成タイムスタンプであり、又は、ブロックに対応するブロック高さである。該指示情報は、フレームワークの、記憶のための全てのブロックのインデックスを含んでもよい。ターゲットフレームワークが
図4に示されるフレームワーク1であることを例として、ターゲット同期タスクは、指示情報を含み、該指示情報は、ブロック1とブロック10のインデックスとを含んでもよく、ブロック1-ブロック10のインデックスを含んでもよい。
【0044】
理解できるように、本願の実施例において、ターゲットフレームワークのデータユニットが順に配列されることは、単なる例であり、ターゲットフレームワークのデータユニットは、順に配列されなくてもよい。無論、ターゲットフレームワークに記憶されているN個のブロックは、連続するブロックではなくてもよい。又は、ターゲットフレームワークにおけるデータユニットは、順番に従ってN個のブロックを記憶しなくてもよい。この場合、ターゲット同期タスクに含まれる指示情報は、N個のブロックのインデックスを含めばよい。
【0045】
S502において、候補ノード集合から、第2ノード機器を選択する。
該第2ノード機器は、候補ノード集合における、同期タスクを実行するための少なくとも1つのノード機器である。本ステップは、上記ポリシーを用いて第2ノード機器を選択してもよい。該ポリシーは、記憶状況に応じて割り当てを行うという方式で選択することと、処理性能に応じて割り当てを行うという方式で選択することと、信用度に応じて割り当てを行うという方式で選択することとのうちのいずれか1つを含んでもよいが、これに限らない。
【0046】
S503において、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させる。
【0047】
ここの並行送信は、一括して並行送信することと、複数回に分けて並行送信することとを含む。一括して並行送信することは、第1ノード機器が該同期タスク集合内の全ての同期タスクを第2ノード機器に一括して送信することであり、このように、必要な全てのブロックを一括して同期することができる。複数回に分けて並行送信することは、第1ノード機器が該同期タスク集合内の同期タスクに対して分割を行い、これらの同期タスクを複数回に分けて並行送信することである。分割方式として、例えば、ブロックの順番に従って、インデックスが先であるブロックに対応する同期タスクのバッチは、インデックスが後であるブロックに対応する同期タスクのバッチより先行する。
S504において、M個のブロックをフレームワーク集合内の各フレームワークに充填する。
【0048】
充填プロセスは、ブロックを対応するデータユニットに記憶するプロセスである。第1ノード機器は、第2ノード機器から返送されたM個のブロックを各フレームワークのデータユニットに順に充填する。ターゲットフレームワークを例として、ターゲットフレームワークがターゲット同期タスクに対応するとし、ターゲットフレームワークは、フレームワーク集合におけるいずれか1つであり、ターゲット同期タスクは、同期タスク集合におけるいずれか1つである。ターゲット第2ノード機器は、S502においてターゲット同期タスクのために選択される1つの第2ノード機器である。ターゲット同期タスクは、S503によってターゲット第2ノード機器に送信された後、ターゲット第2ノード機器は、該ターゲット同期タスクを実行し、第1ノード機器にN個のブロックを返送する。第1ノード機器は、該N個のブロックをそれぞれ前記ターゲットフレームワークのN個のデータユニットに充填する。
【0049】
本願の実施例において、第1ノード機器は、同期処理を行う時に、フレームワーク集合及び同期タスク集合を取得し、該フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、第1ノード機器は、更に、M個のブロックをフレームワーク集合内の各フレームワークに充填する。このようなフレームワーク充填による同期処理方式によって、1つのフレームワークに対応する1つの同期タスクに基づいて、複数のブロックを一括して同期することができ、同期処理効率を効果的に向上させる。一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することができる。このように、複数のフレームワークに基づいて、より多くのブロックを一括して同期することができ、同期処理の効率を更に向上させる。
【0050】
図6は、本願の別の例示的な実施例による同期処理方法のフローチャートを示す。該方法は、ブロックチェーンネットワークにおける第1ノード機器によって実行され、該第1ノード機器は、ブロックチェーンネットワークにおけるいずれか1つのノード機器であってもよい。本願の後続の実施例は、第1ノード機器が
図3に示されるブロックチェーンネットワークにおけるノード機器3であることを例として説明する。ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれ、該方法は、以下のステップS601-S608を含む。
【0051】
S601において、ブロックチェーンネットワークにおける参照ブロックチェーンのブロック高さを取得し、第1ノード機器のローカルに記憶されている第1ブロックチェーンのブロック高さを取得する。
【0052】
参照ブロックチェーンは、ブロックチェーンネットワークにおける各ノード機器に記憶されているブロックチェーンのうち、最も長い(又は最も完全な)ブロックチェーンであり、一般的には、コンセンサスノード機器に記憶されているブロックチェーンである。ブロック高さは、ブロックチェーン上に接続されるブロックの数を表すためのものである。ブロック高さは、ブロックのフラグであり、ブロックチェーンにおけるブロックの位置を指示するために用いられてもよい。ブロックチェーンにおけるジェネシスブロックの高さは、デフォルトで0である。ジェネシスブロックの後の1番目のブロックのブロック高さは、1であり(該1番目のブロックは、ブロック1と略称される)、ジェネシスブロックの後の2番目のブロック高さは、2であり(該2番目のブロックは、ブロック2と略称される)、このように類推する。例えば、参照ブロックチェーンの現在ブロックのブロック高さが100(該現在ブロックは、ブロック100と略称されてもよい)である場合、100個のブロックがジェネシスブロックの上に積層されることを表し、即ち、ジェネシスブロックからブロック100までの間で形成される参照ブロックチェーン上のブロックの数は、101個である。
【0053】
S602において、参照ブロックチェーンのブロック高さと第1ブロックチェーンのブロック高さとの差分であるM個のブロックを第1ノード機器の同期待ちのブロックとして決定し、Mは、正の整数である。
【0054】
参照ブロックチェーンのブロック高さが200であり、第1ブロックチェーンのブロック高さが100であるとすれば、これらの間の差分である100個のブロックは、ブロック101-ブロック200を含み、この差分である100個のブロックは、第1ノード機器の同期待ちのブロックであり、即ち、この場合、M=100である。
【0055】
S603において、M個のブロックに基づいてフレームワーク集合を構築し、該フレームワーク集合にP個のフレームワークが含まれ、Pは、正の整数である。フレームワーク集合の構築は、
図4に示される実例を参照してもよく、ここでは説明を省略する。
【0056】
S604において、フレームワーク集合のために同期タスク集合を作成し、該同期タスク集合にP個の同期タスクが含まれ、1つのフレームワークは、1つの同期タスクに対応する。
S605において、候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器である。
【0057】
一実施形態において、上記ポリシー1に対応する。即ち、S605において、記憶状況に応じて割り当てを行うという方式で、候補ノード集合から、第2ノード機器を選択してもよい。該S605の選択プロセスは、以下のステップs21-s22を含んでもよい。
s21において、候補ノード集合における各候補ノード機器のブロック記憶声明を受信する。
【0058】
ブロック記憶声明は、候補ノード機器のブロック記憶状況を含む。例えば、ある候補ノード機器のブロック記憶声明にブロック1-ブロック10のインデックスが含まれる場合、該候補ノード機器がブロック1-ブロック10を記憶していることを声明することを表す。
【0059】
s22において、候補ノード集合における各候補ノード機器のブロック記憶声明に基づいて、候補ノード集合から、少なくとも1つの候補ノード機器を選択して第2ノード機器として決定する。
【0060】
本ステップにおいて、ある同期タスクに対して、該同期タスクによって指示されるブロックが記憶されていることを声明したノード機器を、該同期タスクを実行する第2ノード機器として決定してもよい。このように、該第2ノード機器が該同期タスクを実行する能力を有し、そして該同期タスクによって指示されるブロックを返送することができることを確保する。s21-s22において、ブロック記憶状況に応じて、第2ノード機器を選択することによって、同期タスクが成功して実行される確率を向上させ、同期処理の成功率を向上させることができる。
【0061】
一実施形態において、上記ポリシー2に対応する。即ち、S605において、処理性能に応じて割り当てを行うという方式で、候補ノード集合から、第2ノード機器を選択してもよい。該S605における選択プロセスは、以下のs23-s24を含んでもよい。
s23において、候補ノード集合における各候補ノード機器の処理性能を取得する。
s24において、候補ノード集合における処理性能が性能閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定する。
【0062】
s23-s24において、処理性能は、CPU処理速度、並行処理量、ネットワーク帯域幅リソースなどを含むが、これらに限らない。処理性能が高いほど、実行度が高くなることを表し、このような該第2ノード機器は、第1ノード機器による同期処理をより迅速に協働することができる。このように、同期処理の安全性を向上させることができる。性能閾値は、実際の状況に応じて設定されてもよい。例えば、性能閾値は、候補ノード集合における各候補ノード機器の処理性能の平均値であってもよい。即ち、処理性能が平均値よりも高い少なくとも1つの候補ノード機器は、第2ノード機器として決定されてもよい。
【0063】
一実施形態において、上記ポリシー3に対応する。即ち、S605において、信用度に応じて割り当てを行うという方式で、候補ノード集合から第2ノード機器を選択してもよい。該S605の選択プロセスは、以下のs25-s26を含んでもよい。
s25において、候補ノード集合における各候補ノード機器の信用度を取得する。
s26において、候補ノード集合における信用度が信用度閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定する。
【0064】
s25-s26において、信用度は、ノード機器の信用程度を表すためのものである。信用度が高いほど、該ノード機器がより信用できることを表す。信用度閾値は、実際の状況に応じて設定されてもよい。例えば、信用度閾値は、スコア5であってもよい。信用度のスコアが5よりも高い少なくとも1つの候補ノード機器は、第2ノード機器として決定されてもよい。信用度によって第2ノード機器を選択する。このように、いくつかの悪意のあるノードが同期処理プロセスを妨害することを防止し、同期処理の安全性を向上させることができる。
【0065】
S606において、前記第2ノード機器に同期タスク集合内の同期タスクを並行送信し、前記第2ノード機器に、同期タスクを実行させてM個のブロックを返送させる。
S607において、M個のブロックを前記フレームワーク集合内の各フレームワークに充填する。
【0066】
S608において、各フレームワークから、各データユニットに記憶されているM個のブロックを読み取り、読み取られたM個のブロックを第1ノード機器のローカルに記憶されている第1ブロックチェーンに順に追加する。
【0067】
各フレームワークの充填が完了した後、第1ノード機器は、各フレームワークに記憶されているブロックを順に(例えば、各ブロックの生成タイムスタンプの前後順序に応じて)第1ノード機器のローカルブロックチェーンに追加することができ、それにより、第1ノード機器のローカルブロックチェーンの更新を実現する。ターゲットフレームワークを例として、第1ノード機器は、ターゲットフレームワークから、N個のデータユニットに順に記憶されているN個のブロックを読み取り、読み取られたN個のブロックを第1ノード機器のローカルに記憶されている第1ブロックチェーンに追加する。フレームワークは、データ構造であり、ターゲットフレームワークにN個のブロックを記憶した後、該N個のブロックを順に読み取り、第1ノード機器のローカルに記憶されている第1ブロックチェーンに順に追加する。このように、第1ブロックチェーン上で、N個のブロックの更新に成功した。フレームワーク集合における全てのフレームワークのブロックがいずれも第1ブロックチェーンに順に追加された後、第1ノード機器は、全てのブロックの同期を完了し、ブロックチェーンネットワークにおける他のノード機器に適時に追い付くことができる。
【0068】
本願の実施例において、第1ノード機器は、同期処理を行う場合、フレームワーク集合及び同期タスク集合を取得し、該フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、候補ノード集合から、第2ノード機器を選択し、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、第1ノード機器は、更に、M個のブロックをフレームワーク集合内の各フレームワークに充填する。このようなフレームワーク充填による同期処理方式によって、1つのフレームワークに対応する1つの同期タスクに基づいて、複数のブロックを一括して同期することができ、同期処理効率を効果的に向上させる。一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することができる。このように、複数のフレームワークに基づいて、より多くのブロックを一括して同期することができ、同期処理の効率を更に向上させる。
【0069】
図7は、本願の1つの例示的な実施例による同期処理装置の構造概略図を示す。該同期処理装置は、ブロックチェーンネットワークにおける第1ノード機器に設けられる。具体的には、該同期処理装置は、第1ノード機器において動作する1つのコンピュータプログラム(プログラムコードを含む)であってもよい。例えば、該同期処理装置は、第1ノード機器における1つのアプリケーションソフトウェアであってもよい。該同期処理装置は、
図5-
図6に示される実施例におけるステップを実行するために用いられてもよい。該第1ノード機器は、ブロックチェーンネットワークにおけるいずれか1つのノード機器であってもよい。例えば、該第1ノード機器は、
図3に示されるブロックチェーンネットワークにおけるノード機器である。ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれる。
図7に示すように、該同期処理装置は、
フレームワーク集合及び同期タスク集合を取得するように構成される取得ユニット701であって、フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、フレームワーク集合にP個のフレームワークが含まれ、同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数である、取得ユニット701と、
候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、M個のブロックをフレームワーク集合内の各フレームワークに充填するように構成される処理ユニット702と、を備える。
【0070】
一実施形態において、フレームワーク集合にターゲットフレームワークが含まれ、ターゲットフレームワークは、P個のフレームワークのうちのいずれか1つであり、ターゲットフレームワークは、N個のデータユニットを含み、N個のデータユニットは、第1ノード機器の同期待ちのN個のブロックを記憶するためのものであり、N個のブロックとN個のデータユニットは、一対一に対応し、Nは、正の整数であり、且つN≦Mである。
【0071】
一実施形態において、ターゲットフレームワークにおけるN個のデータユニットは、順に配列され、N個のブロックは、ブロックチェーンネットワークにおいて連続するブロックであり、N個のデータユニットのうちのi番目のデータユニットは、N個のブロックのうちのi番目のブロックを記憶するためのものであり、iは、正の整数であり、且つ1≦i≦Nである。
【0072】
一実施形態において、ターゲット第2ノード機器は、第2ノード機器のうちのいずれか1つであり、ターゲット第2ノード機器は、ターゲットフレームワークに対応するターゲット同期タスクを実行し、第1ノード機器にN個のブロックを返送するためのものであり、第1ノード機器がN個のブロックをターゲットフレームワークに充填する具体的な方式は、N個のブロックをそれぞれターゲットフレームワークのN個のデータユニットに充填することである。
【0073】
一実施形態において、処理ユニット702は、更に、
ターゲットフレームワークから、N個のデータユニットに記憶されているN個のブロックを読み取り、読み取られたN個のブロックを第1ノード機器のローカルに記憶されている第1ブロックチェーンに順に追加するように構成される。
【0074】
一実施形態において、処理ユニット702は具体的には、
候補ノード集合における各候補ノード機器の信用度を取得し、
候補ノード集合における信用度が信用度閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定するように構成される。
【0075】
一実施形態において、処理ユニット702は具体的には、
候補ノード集合における各候補ノード機器の処理性能を取得し、
候補ノード集合における処理性能が性能閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定するように構成される。
【0076】
一実施形態において、処理ユニット702は具体的には、
候補ノード集合における各候補ノード機器のブロック記憶声明を受信し、
候補ノード集合における各候補ノード機器のブロック記憶声明に基づいて、候補ノード集合から、少なくとも1つの候補ノード機器を選択して第2ノード機器として決定するように構成される。
【0077】
一実施形態において、取得ユニット701は具体的には、
ブロックチェーンネットワークにおける参照ブロックチェーンのブロック高さを取得し、第1ノード機器のローカルに記憶されている第1ブロックチェーンのブロック高さを取得し、
参照ブロックチェーンのブロック高さと第1ブロックチェーンのブロック高さとの差分であるM個のブロックを第1ノード機器の同期待ちのブロックとして決定し、
M個のブロックに基づいてフレームワーク集合を構築するように構成される。
【0078】
本願の一実施例によれば、
図7に示される同期処理ユニットにおける各ユニットの各々又はすべては、1つの又は複数の別のユニットとして組み合わせられて構成されてもよく、又は、そのうちのある(いくつかの)ユニットは、機能的にはより小さい複数のユニットに分割されて構成されてもよい。これは、本願の実施例による技術的効果の実現に影響を及ぼすことなく、同様な操作を実現することができる。上記ユニットは、ロジック機能に基づいて分割される。実際の応用において、1つのユニットの機能は、複数のユニットによって実現してもよく、又は、複数のユニットの機能は、1つのユニットによって実現してもよい。本願の他の実施例において、該同期処理装置は、他のユニットを含んでもよい。実際の応用によって、これらの機能は、他のユニットによる支援で実現してもよく、そして、複数のユニットによる支援で実現する。本願の別の実施例によれば、中央演算装置(CPU)、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)などの処理素子と記憶素子を含むコンピュータのような汎用コンピューティング機器上で、
図5-
図6に示される対応する方法に係る各ステップを実行できるコンピュータプログラム(プログラムコードを含む)を実行することによって、
図7に示される同期処理装置を構成することができ、本願の実施例による同期処理方法を実現することができる。コンピュータプログラムは、例えば、コンピュータ可読記録媒体に記述されてもよく、そして、コンピュータ可読記録媒体によって上記コンピューティング機器にロードされ、その上で実行される。
【0079】
本願の実施例において、第1ノード機器は、同期処理を行う場合、フレームワーク集合及び同期タスク集合を取得し、該フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、第1ノード機器は、更に、M個のブロックをフレームワーク集合内の各フレームワークに充填する。このようなフレームワーク充填による同期処理方式によって、1つのフレームワークに対応する1つの同期タスクに基づいて、複数のブロックを一括して同期することができ、同期処理効率を効果的に向上させる。一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することができる。このように、複数のフレームワークに基づいて、より多くのブロックを一括して同期することができ、同期処理の効率を更に向上させる。
【0080】
図8は、本願の1つの例示的な実施例による同期処理機器の構造概略図を示す。該同期処理機器は、ブロックチェーンネットワークにおける第1ノード機器であり、該第1ノード機器は、ブロックチェーンネットワークにおけるいずれか1つのノード機器であってもよく、例えば、該第1ノード機器は、
図3に示されるブロックチェーンネットワークにおけるノード機器である。ブロックチェーンネットワークは、候補ノード集合を含み、候補ノード集合に、第1ノード機器に接続される複数の候補ノード機器が含まれる。
図8に示すように、該同期処理機器は、少なくともプロセッサ801、入力機器802、出力機器803及びコンピュータ記憶媒体804を含む。プロセッサ801、入力機器802、出力機器803及びコンピュータ記憶媒体804は、バス又は他の方式を介して接続されてもよい。コンピュータ記憶媒体804は、同期処理機器のメモリに記憶されてもよい。コンピュータ記憶媒体804は、コンピュータプログラムを記憶するためのものであり、コンピュータプログラムは、プログラム命令を含み、プロセッサ801は、コンピュータ記憶媒体804に記憶されているプログラム命令を実行するためのものである。プロセッサ801(又は、CPU(Central Processing Unit:中央演算処理装置)と呼ばれる)は、同期処理機器のコンピューティングコア及び制御コアであり、それは、1つ又は複数の命令の実現に適し、具体的には、1つ又は複数の命令をロードして実行することによって本願の実施例による方法のプロセス又は機能を実現することに適する。
【0081】
本願の実施例は、コンピュータ記憶媒体(Memory)を更に提供する。コンピュータ記憶媒体は、同期処理機器における記憶機器であり、プログラムとデータを保存するためのものである。理解できるように、ここのコンピュータ記憶媒体は、同期処理機器における内蔵記憶媒体を含んでもよく、無論、同期処理機器によってサポートされる拡張記憶媒体を含んでもよい。コンピュータ記憶媒体は、記憶スペースを提供する。該記憶スペースに同期処理機器のオペレーティングシステムが記憶されている。そして、該記憶スペースに、プロセッサ801によってロードされて実行される1つ又は複数の命令が更に記憶されている。これらの命令は、1つ又は複数のコンピュータプログラム(プログラムコードを含む)であってもよい。説明すべきこととして、ここのコンピュータ記憶媒体は、高速RAMメモリであってもよく、不揮発性メモリ(non-volatile memory)、例えば少なくとも1つの磁気ディスクメモリであってもよい。選択的に、前記プロセッサから離れる少なくとも1つのコンピュータ記憶媒体であってもよい。
【0082】
該コンピュータ記憶媒体に1つ又は複数の命令が記憶されており、プロセッサ801によってコンピュータ記憶媒体に記憶されている1つ又は複数の命令をロードして実行し、上記同期処理方法の実施例におけるステップを実現する。具体的な実現において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、
フレームワーク集合及び同期タスク集合を取得するステップであって、フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、フレームワーク集合にP個のフレームワークが含まれ、同期タスク集合にP個の同期タスクが含まれ、前記P個のフレームワークと前記P個の同期タスクは、一対一に対応し、M、Pはいずれも正の整数である、ステップと、
候補ノード集合から、第2ノード機器を選択するステップであって、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器である、ステップと、
第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させるステップと、
M個のブロックをフレームワーク集合内の各フレームワークに充填するステップと、を実行する。
【0083】
一実施形態において、フレームワーク集合にターゲットフレームワークが含まれ、ターゲットフレームワークは、P個のフレームワークのうちのいずれか1つであり、ターゲットフレームワークは、N個のデータユニットを含み、N個のデータユニットは、第1ノード機器の同期待ちのN個のブロックを記憶するためのものであり、N個のブロックとN個のデータユニットは、一対一に対応し、Nは、正の整数であり、且つN≦Mである。
【0084】
一実施形態において、ターゲットフレームワークにおけるN個のデータユニットは、順に配列され、N個のブロックは、ブロックチェーンネットワークにおいて連続するブロックであり、N個のデータユニットのうちのi番目のデータユニットは、N個のブロックのうちのi番目のブロックを記憶するためのものであり、iは、正の整数であり、且つ1≦i≦Nである。
【0085】
一実施形態において、ターゲット第2ノード機器は、第2ノード機器のうちのいずれか1つであり、ターゲット第2ノード機器は、ターゲットフレームワークに対応するターゲット同期タスクを実行し、第1ノード機器にN個のブロックを返送するためのものであり、第1ノード機器がN個のブロックをターゲットフレームワークに充填する具体的な方式は、N個のブロックをそれぞれターゲットフレームワークのN個のデータユニットに充填することである。
【0086】
一実施形態において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、
ターゲットフレームワークから、N個のデータユニットに記憶されているN個のブロックを読み取り、読み取られたN個のブロックを第1ノード機器のローカルに記憶されている第1ブロックチェーンに順に追加するステップを更に実行する。
【0087】
一実施形態において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、候補ノード集合から第2ノード機器を選択するステップを実行する時、具体的には、
候補ノード集合における各候補ノード機器の信用度を取得するステップと、
候補ノード集合における信用度が信用度閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定するステップとを実行する。
【0088】
一実施形態において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、候補ノード集合から第2ノード機器を選択するステップを実行する時、具体的には、
候補ノード集合における各候補ノード機器の処理性能を取得するステップと、
候補ノード集合における処理性能が性能閾値よりも高い少なくとも1つの候補ノード機器を第2ノード機器として決定するステップと、を実行する。
【0089】
一実施形態において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、候補ノード集合から第2ノード機器を選択するステップを実行する時、具体的には、
候補ノード集合における各候補ノード機器のブロック記憶声明を受信するステップと、
候補ノード集合における各候補ノード機器のブロック記憶声明に基づいて、候補ノード集合から、少なくとも1つの候補ノード機器を選択して第2ノード機器として決定するステップと、を実行する。
【0090】
一実施形態において、コンピュータ記憶媒体における1つ又は複数の命令は、プロセッサ801によってロードされて、フレームワーク集合を取得するステップを実行する時、具体的には、
ブロックチェーンネットワークにおける参照ブロックチェーンのブロック高さを取得し、第1ノード機器のローカルに記憶されている第1ブロックチェーンのブロック高さを取得するステップと、
参照ブロックチェーンのブロック高さと第1ブロックチェーンのブロック高さとの差分であるM個のブロックを第1ノード機器の同期待ちのブロックとして決定するステップと、
M個のブロックに基づいてフレームワーク集合を構築するステップと、を実行する。
【0091】
本願の実施例において、第1ノード機器は、同期処理を行う場合、フレームワーク集合及び同期タスク集合を取得し、該フレームワーク集合は、第1ノード機器の同期待ちのM個のブロックを記憶するためのものであり、候補ノード集合から、第2ノード機器を選択し、該第2ノード機器は、候補ノード集合内の少なくとも1つの候補ノード機器であり、第2ノード機器に同期タスク集合内の同期タスクを並行送信することによって、第2ノード機器に、同期タスクを実行させてM個のブロックを返送させ、第1ノード機器は、更に、M個のブロックをフレームワーク集合内の各フレームワークに充填する。このようなフレームワーク充填による同期処理方式によって、1つのフレームワークに対応する1つの同期タスクに基づいて、複数のブロックを一括して同期することができ、同期処理効率を効果的に向上させる。一回の同期処理プロセスにおいて、複数のフレームワークに対応する同期タスクを並行送信することができる。このように、複数のフレームワークに基づいて、より多くのブロックを一括して同期することができ、同期処理の効率を更に向上させる。
【0092】
本願の実施例は、命令を含むコンピュータプログラム製品を更に提供する。これは、コンピュータ上で実行される時、コンピュータに上記実施例による方法を実行させる。
【0093】
以上に開示されたものは本出願の好適な実施例に過ぎず、当然ながら、本出願の権利範囲を限定するものではなく、従って、本願の特許請求の範囲に基づいた等価変形は、依然として本出願の保護範囲に含まれる
【符号の説明】
【0094】
101 下位層
102 階層
103 階層
104 階層
105 上位層
401 データユニット
701 取得ユニット
702 処理ユニット
801 プロセッサ
802 入力機器
803 出力機器
804 コンピュータ記憶媒体