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

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

▶ テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッドの特許一覧

特許7186862ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム
<>
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図1
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図2
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図3
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図4
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図5
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図6
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図7
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図8
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図9
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図10
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図11
  • 特許-ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-01
(45)【発行日】2022-12-09
(54)【発明の名称】ブロック処理方法、ブロックチェーンノード、ブロック処理システム及びコンピュータプログラム
(51)【国際特許分類】
   G06F 21/64 20130101AFI20221202BHJP
【FI】
G06F21/64
【請求項の数】 20
(21)【出願番号】P 2021512837
(86)(22)【出願日】2020-04-23
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 CN2020086351
(87)【国際公開番号】W WO2020216280
(87)【国際公開日】2020-10-29
【審査請求日】2021-03-22
(31)【優先権主張番号】201910345985.4
(32)【優先日】2019-04-26
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514187420
【氏名又は名称】テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リィウ,パン
(72)【発明者】
【氏名】リ,マオツァイ
(72)【発明者】
【氏名】ワン,ゾォンイオウ
(72)【発明者】
【氏名】ラン,フゥ
(72)【発明者】
【氏名】シ,イファン
【審査官】小林 秀和
(56)【参考文献】
【文献】国際公開第2018/222927(WO,A1)
【文献】国際公開第2018/111295(WO,A1)
【文献】国際公開第2018/203382(WO,A1)
【文献】特開2019-053713(JP,A)
【文献】中国特許出願公開第108876384(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンにおける第1のノードが実行する、ブロック処理方法であって、
前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記ブロックチェーンにおける或るノードが入力情報を取得すると、他のノードも前記入力情報を受信することにより、前記ブロックチェーンを介したブロードキャストが行われ、前記方法において、
前記第1のノードは、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第1のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するステップと、
前記第1のノードは、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするステップと、
前記第1のノードは、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を、前記ブロックチェーンを介した前記第2のノードからのブロードキャストにより受信するステップと、
前記第1のノードは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記第1のノードは、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するステップとを含む方法。
【請求項2】
前記第1のノードが前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージする前に、
前記第1のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップと、
前記トランザクションキューが前記ブロック生成条件を満たしている場合、以下のステップ、即ち、前記第1のノードが前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージするステップの実行をトリガーするステップとをさらに含む請求項1に記載の方法。
【請求項3】
前記第1のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第1のノードが、前記トランザクションキューに記憶されているトランザクション情報の数が第1の閾値を超えたか否かをチェックし、前記トランザクション情報の数が前記第1の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記トランザクション情報の数が前記第1の閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項2に記載の方法。
【請求項4】
前記第1のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第1のノードは、前記トランザクションキューに記憶されているデータの量が第2の閾値を超えたか否かをチェックし、前記データの量が前記第2の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記データの量が前記第2の閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項2に記載の方法。
【請求項5】
前記第1のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第1のノードが前記トランザクションキューの直前のブロック生成時間と現在の時間との間の時間差がブロック生成時間閾値を超えたか否かをチェックし、前記時間差が前記ブロック生成時間閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記時間差が前記ブロック生成時間閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項2に記載の方法。
【請求項6】
前記第1のノードは、少なくとも1つのクライアントから前記ブロックチェーンに送信されたトランザクション情報を受信し、又は、前記第2のノードが少なくとも1つのクライアントから取得したトランザクション情報を受信するステップと、
前記第1のノードが前記少なくとも1つのクライアントのトランザクション情報を前記トランザクションキューに入れるステップとをさらに含む請求項1~5の何れか1項に記載の方法。
【請求項7】
前記第1のトランザクション情報が前記候補ブロックにパッケージされると、前記第1のノードが前記トランザクションキューにおける第2のトランザクション情報を前記候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第1のノードは、前記候補ブロックにおける第2のトランザクション情報を検証して第3の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第3のトランザクション実行結果を生成するステップと
前記第1のノードは、前記ブロックチェーンを介して、前記第3の検証結果及び前記第3のトランザクション実行結果を含む第3のノード処理結果をブロードキャストするステップと
前記第1のノードは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第2のトランザクション情報を検証することで生成した第4の検証結果、及び前記候補ブロックにおける第2のトランザクション情報を実行することで生成した第4のトランザクション実行結果を含む第4のノード処理結果を受信するステップと
前記第1のノードは、前記第3のノード処理結果及び前記第4のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記第1のノードが前記候補ブロックのコンセンサスに成功した場合、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合、前記第3のトランザクション実行結果を保存するステップとをさらに含む請求項1~5の何れか1項に記載の方法。
【請求項8】
前記第1のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存するステップは、
前記候補ブロックのコンセンサスに成功した場合に、前記第1のノードが前記候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存するステップを含む請求項1~7のいずれか一項に記載の方法。
【請求項9】
ブロックチェーンにおける第2のノードにより実行されるブロック処理方法であって、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記ブロックチェーンにおける或るノードが入力情報を取得すると、他のノードも前記入力情報を受信することにより、前記ブロックチェーンを介したブロードキャストが行われ、前記方法において、
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得するステップと、
前記第2のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するステップと、
前記第2のノードは、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするステップと、
前記第2のノードは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するステップとを含む方法。
【請求項10】
前記第2のノードが前記ブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした、前記第1のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第1の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第1のトランザクション実行結果を含む第1のノード処理結果を受信するステップと、
前記第2のノードは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合、前記第2のノードが前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存することの実行をトリガーするステップとをさらに含む請求項9に記載の方法。
【請求項11】
前記第2のノードが前記ブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、
前記第2のノードが、前記候補ブロックのコンセンサスに成功した場合に前記第1のノードにより送信された通知メッセージを受信するステップと、
前記第2のノードが、前記通知メッセージに応じて、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存することの実行をトリガーするステップとをさらに含む請求項9に記載の方法。
【請求項12】
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第2のトランザクション情報を取得するステップと、
前記第2のノードは、前記候補ブロックにおける第2のトランザクション情報を検証して第4の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第4のトランザクション実行結果を生成するステップと、
前記第2のノードは、前記ブロックチェーンを介して、前記第4の検証結果及び前記第4のトランザクション実行結果を含む第4のノード処理結果をブロードキャストするステップと、
前記第2のノードは、前記第2のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合に、前記第4のトランザクション実行結果を保存するステップとをさらに含む請求項9~11のいずれか一項に記載の方法。
【請求項13】
ブロックチェーンにおける第1のノードによって実行されるブロック処理方法であって、前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記ブロックチェーンにおける或るノードが入力情報を取得すると、他のノードも前記入力情報を受信することにより、前記ブロックチェーンを介したブロードキャストが行われ、前記方法において、
前記第1のノードは、少なくとも1つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントが送信したトランザクション情報を前記第1のノードのトランザクションキューに入れるステップと、
前記第1のノードは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップと、
前記第1のノードは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第1のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するステップと、
前記第1のノードは、第1のノード処理結果に署名し、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするステップと、
前記第1のノードは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信するステップと、
前記第1のノードは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて、分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するステップとを含む方法。
【請求項14】
前記第1のトランザクション情報が前記候補ブロックにパッケージされると、前記第1のノードは、前記トランザクションキューにおける第2のトランザクション情報を前記候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第1のノードは、前記候補ブロックにおける第2のトランザクション情報を検証して第3の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第3のトランザクション実行結果を生成するステップと、
前記第1のノードは、第3のノード処理結果に署名し、前記ブロックチェーンを介して、前記第3の検証結果及び前記第3のトランザクション実行結果を含む前記第3のノード処理結果をブロードキャストするステップと、
前記第1のノードは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第2のトランザクション情報を検証することで生成した第4の検証結果及び前記候補ブロックにおける第2のトランザクション情報を実行することで生成した第4のトランザクション実行結果を含む第4のノード処理結果を受信するステップと、
前記第1のノードは、前記第3のノード処理結果及び前記第4のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合に、前記第3のトランザクション実行結果を保存するステップとをさらに含む請求項13に記載の方法。
【請求項15】
前記第1のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存するステップは、
前記候補ブロックのコンセンサスに成功した場合に、前記第1のノードが、前記候補ブロックの直前のブロックのハッシュ値、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値を含む前記候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存するステップを含む請求項13又は14に記載の方法。
【請求項16】
ブロックチェーンにおける第2のノードにより実行されるブロック処理方法であって、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記ブロックチェーンにおける或るノードが入力情報を取得すると、他のノードも前記入力情報を受信することにより、前記ブロックチェーンを介したブロードキャストが行われ、前記方法において、
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得するステップと、
前記第2のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するステップと、
前記第2のノードは、第2のノード処理結果に署名し、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするステップと、
前記第2のノードは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するステップとを含む方法。
【請求項17】
ブロックチェーンノードであって、前記ブロックチェーンノードはブロックチェーンにおける第1のノードであり、前記第1のノードは
コマンドを記憶するためのメモリと、
前記メモリにおける前記コマンドを実行することで、請求項1~8のいずれか一項に記載の方法、又は、請求項13~15のいずれか一項に記載の方法を実行するためのプロセッサとを含む、ブロックチェーンノード。
【請求項18】
ブロックチェーンノードであって、前記ブロックチェーンノードはブロックチェーンにおける第2のノードであり、前記第2のノードは、
コマンドを記憶するためのメモリと、
前記メモリにおける前記コマンドを実行することで、請求項9~12のいずれか一項に記載の方法、又は、請求項16に記載の方法を実行するためのプロセッサとを含む、ブロックチェーンノード。
【請求項19】
ブロック処理システムであって、
請求項1~8のいずれか一項に記載の方法を実行するための第1のノードと、請求項9~12のいずれか一項に記載の方法を実行するための前記第2のノードとを含み、又は、
請求項13~15のいずれか一項に記載の方法を実行するための第1のノードと、請求項16に記載の方法を実行するための第2のノードとを含むブロック処理システム。
【請求項20】
コンピュータプログラムであって、請求項1~8のいずれか一項に記載の方法、又は、請求項9~12のいずれか一項に記載の方法、又は、請求項13~15のいずれか一項に記載の方法、又は、請求項16に記載の方法をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年04月26日に出願された「ブロック処理方法、ノード及びシステム」と題する中国特許出願第201910345985.4号に対する優先権を主張しており、その全ての内容は本願に援用される。
【0002】
本願は、コンピュータ技術の分野に関し、特に、ブロック処理方法、ノード及びシステム及びコンピュータプログラムに関する。
【背景技術】
【0003】
ユーザーはクライアントを介してトランザクションを開始することができ、トランザクション中に記録されたすべてのトランザクション情報は、一つのブロックにパッキングされて記憶される。トランザクションが継続的に拡張してゆくにつれて、ブロック同士が相互にリンクされてブロックチェーンが形成される。ブロックチェーンは台帳とも呼ばれる。ブロックチェーンはオープンネットワーク台帳であり、ブロックチェーンは複数のブロック(Block)を含んでもよい。ブロックチェーンは複数の形式を有し、例えば、パブリックチェーン、プライベートチェーン、及びアライアンスチェーンを含んでもよく、パブリックチェーンは、ビットコイン系、イーサリアム系などを含んでもよい。
【0004】
現在、パブリックチェーンのブロック生成方法は、具体的に、以下のフローを含んでもよい。
【0005】
新規トランザクションがブロックチェーンにおけるあるノード(例えばノード1)に到着すると、当該ノード1は、まず、トランザクションが正当であるか否かを検証し、次に正当のトランザクションをロカールトランザクションプールに入れ、ブロックチェーンにおいて他のノードにトランザクション情報をブロードキャストする。
【0006】
新規ブロック生成周期が到来すると、該ノード1は、トランザクションプールからトランザクションリストを取得し、次に当該トランザクションリストを候補ブロックにパッケージし、当該候補ブロックに署名してからブロックチェーンを介して候補ブロックをブロードキャストする。
【0007】
ブロックチェーンにおける全てのノードがその受信した候補ブロックに対してコンセンサスを実行し、コンセンサスに成功した場合に当該候補ブロックを保存し、最後にノード1は、候補ブロックにおけるトランザクションを実行する。
【0008】
上記のブロック生成方法をパブリックチェーンに適用する場合、ブロックチェーンの最下層データのセキュリティを保証することができるが、アライアンスチェーン及びプライベートチェーンにおいて、セキュリティ要素の検証は、ブロックチェーンの最下層に限定されず、複数の層に分割されることができる。前記のブロック生成方法をアライアンスチェーン又はプライベートチェーンに適用する場合、ブロック生成に必要な時間が長すぎて、トランザクションをタイムリーに処理することができないので山積する恐れがあり、ブロックチェーンの輻輳問題を引き起こしやすいことが懸念される。
【発明の概要】
【0009】
本願の実施例は、ブロック生成の速度、及びトランザクション処理の性能を向上するためのブロック処理方法、ノード及びシステムを提供する。
【0010】
本願の実施例は、以下の技術案を提供する。
一局面によれば、本願の実施例はブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第1のノードにより実行され、前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードである前記方法において、
前記第1のノードは、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストし、
前記第1のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成し、
前記第1のノードは、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストし、
前記第1のノードは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信し、
前記第1のノードは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存することを含む。
【0011】
一局面によれば、本願の実施例は、ブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第2のノードにより実行され、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードである前記方法において、
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得し、
前記第2のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成し、
前記第2のノードは、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストし、
前記第2のノードは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存することを含む
【0012】
一局面によれば、本願の実施例は、ブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第1のノードにより実行され、前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードである前記方法において、
前記第1のノードは、少なくとも1つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントが送信したトランザクション情報を前記第1のノードのトランザクションキューに入れ、
前記第1のノードは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、
前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第1のノードは、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストし、
前記第1のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成し、
前記第1のノードは、第1のノード処理結果に署名し、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストし、
前記第1のノードは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信し、
前記第1のノードは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて、前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存することを含む。
【0013】
一局面によれば、本願の実施例はブロック処理方法を提供し、前記方法はブロックチェーンにおける第2のノードにより実行され、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードである前記方法において、
前記第2のノードは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得し、
前記第2のノードは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成し、
前記第2のノードは、第2のノード処理結果に署名し、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストし、
前記第2のノードは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存することを含む。
【0014】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第1のノードであり、前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記第1のノードは、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージするための処理モジュールと、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするための送受信モジュールとを含み、
前記処理モジュールは、さらに、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信するために用いられ、、
前記処理モジュールは、さらに、前記第1のノード処理結果及び前記第2のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記第1のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するために用いられる。
【0015】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第2のノードであり、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記第2のノードは、
前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信するための送受信モジュールと、
前記候補ブロックから第1のトランザクション情報を取得るための処理モジュールとを含み、
前記処理モジュールは、さらに、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するために用いられる。
【0016】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第1のノードであり、前記ブロックチェーンは第2のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記第1のノードは処理モジュール及び送受信モジュールを含み、
前記処理モジュールは、少なくとも1つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントから送信されたトランザクション情報を前記第1のノードのトランザクションキューに入れるために用いられ、
前記処理モジュールは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするために用いられ、
前記送受信モジュールは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第1のノード処理結果に署名し、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信するために用いられ、
前記処理モジュールは、前記第1のノード処理結果及び前記第2のノード処理結果に応じて前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するために用いられる。
【0017】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第2のノードであり、前記ブロックチェーンは第1のノードをさらに含み、前記第1のノードはリーダーノードであり、前記第2のノードはフォロワーノードであり、前記第2のノードは処理モジュール及び送受信モジュールを含み、
前記送受信モジュールは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得するために用いられ、
前記処理モジュールは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第2のノード処理結果に署名し、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するために用いられる。
【0018】
一局面によれば、本願の実施例は、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第1のノードであり、前記第1のノードはプロセッサ及びメモリを含み、前記メモリは、コマンドを記憶するために用いられ、前記プロセッサは、第1のノードが前記第1のノード側のブロック処理方法を実行するように、前記メモリにおける前記コマンドを実行するために用いられる。
【0019】
一局面によれば、本願の実施例は、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第2のノードであり、前記第2のノードはプロセッサ及びメモリを含み、前記メモリは、コマンドを記憶するために用いられ、前記プロセッサは、第2のノードが前記第2のノード側のブロック処理方法を実行するように、前記メモリにおける前記コマンドを実行するために用いられる。
【0020】
一局面によれば、本願の実施例は、ブロック処理システムを提供し、前記ブロック処理システムは第1のノード及び第2のノードを含み、
前記第1のノードは、前記第1のノード側のブロック処理方法を実行するために用いられ、
前記第2のノードは、前記第2のノード側のブロック処理方法を実行するために用いられる。
【0021】
一局面によれば、本願の実施例は、コンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータ読み取り可能な記憶媒体にコマンドを記憶しており、コンピュータで実行されると、上記の各局面に記載の方法をコンピュータに実行させる。
【0022】
一局面によれば、本願の実施例はコンピュータプログラム製品を提供し、前記コンピュータプログラム製品がコンピュータ上で実行されると、上記の方法をコンピュータに実行させる。
【0023】
本願の実施例において、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第1のノードは第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、第1のノードは候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成し、第1のノードは、ブロックチェーンを介して、第1の検証結果及び第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストし、第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信し、第1のノードは第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、第1のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第1のトランザクション実行結果を保存する。本願の実施例における第1のノードがリーダーノードであり、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行が行われるように当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第1のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、第1のノードが第1のノード処理結果をブロードキャストすることができ、第1のノードはブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功した場合、ブロックの保存を実行する処理を実行することができる。本願の実施例では、ロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。よって、ブロック生成の速度及びトランザクション処理の性能が向上される。
【図面の簡単な説明】
【0024】
本願の実施例における技術案をより明確に説明するために、以下で実施例の記述において使用する必要がある図面を簡単に紹介し、以下に記述される図面は本願のいくつかの実施例に関連しているに過ぎず、当業者にとって、創造的な労力を要しない前提で、これらの図面に基づいて他の図面を得ることも可能であることは明らかである。
図1】本願の実施例にかかるブロックチェーンシステムの概略図である。
図2】本願の実施例にかかるブロック構成の概略図である。
図3】本願の実施例にかかるブロック処理システムの構成の概略構成図である。
図4】本願の実施例にかかるリーダーノードとフォロワーノードとの間のインタラクションフローの概略図である。
図5】本願の実施例にかかるリーダーノードにより実行されるブロック処理方法の概略ブロックフローチャートである。
図6】本願の実施例にかかるフォロワーノードにより実行されるブロック処理方法のフローの概略ブロックである。
図7】本願の実施例にかかるブロック生成フローの適用シナリオの概略図である。
図8】本願の実施例にかかるRaftデータ提出フローの概略図である。
図9】本願の実施例にかかるBft-Raftデータ提出フローの概略図である。
図10】本願の実施例にかかる第1のノードの構成の概略構成図である。
図11】本願の実施例にかかる第2のノードの構成の概略構成図である。
図12】願の実施例にかかるブロック処理方法をサーバーに適用する構成の概略構成図である。
【発明を実施するための形態】
【0025】
本願の実施例においては、ブロック生成の速度及びトランザクション処理の性能を向上するためのブロック処理方法、ノード及びシステムを提供する。
【0026】
本願の実施例の目的、特徴、及び利点をさらに明確や理解し易くにするために、以下に本願の実施例における図面を参照して、本願の実施例における技術案を明確かつ完全に説明するが、以下に記載の実施例は、本願のあらゆる実施例ではなく、単なる一部に過ぎないことが明らかである。本願の実施例に基づいて、当業者が取得した実施例の全ては、本願の保護範囲に含まれるものとする。
【0027】
本願の明細書及び請求項ならびに上記図面における用語である「含む」及び「有する」、ならびに、それらの任意の変化形は、非排他的な包含を網羅するよう意図されたものであり、一連のユニットを含むプロセス、方法、システム、製品、又は、デバイスが、それらのユニットに必ずしも限定されることはなく、明確に列挙されていない、もしくは、これらのプロセス、方法、システム、製品、又は、デバイスに固有の他のユニットを含んでもよい。
【0028】
まず、本願の実施例に係るブロックチェーンシステムについて簡単に説明する。
【0029】
ブロックチェーンシステムは、データ共有システム、即ち、ノード間でデータを共有するためのシステムである。図1に示すように、本願の実施例にかかるブロックチェーンシステム100の概略図を示す。当該ブロックチェーンシステム100には、複数のノード110(「ブロックチェーンノード」とも呼ばれる)を含んでもよく、各ノード110は通常の作動中に入力情報を受信することができ、受信した入力情報に基づいて当該ブロックチェーンシステム100における共有データをメンテナンスする。ブロックチェーンシステム100における情報交互を保証するために、ブロックチェーンシステム100におけるノード110同士の間に直接又は間接的な情報接続が存在することができ、ノード110の間で上記情報接続を介して情報を伝送することができる。例えば、ブロックチェーンシステム100における任意のノードが入力情報を受信すると、ブロックチェーンシステム100における他のノードはコンセンサスアルゴリズムにより当該入力情報を取得し、ブロックチェーンシステム100における全てのノードに記憶されているデータが一致するように、当該入力情報を共有データ内のデータとして記憶する。
【0030】
ブロックチェーンシステム100における各ノード110について、それに対応するノード識別子を有し、他のノードのノード識別子に応じて、生成されたブロックをブロックチェーンシステムにおける他のノードにブロードキャストするように、ブロックチェーンシステム100における各ノード110が、ブロックチェーンシステム100における他のノードのノード識別子を記憶する。各ノードには、次の表に示す1つのノード識別子リストがメンテナンスされ、ノードの名称とノード識別子とを対応付けて当該ノード識別子リストに記憶する。なお、ノード識別子は、IP(InternetProtocol、インターネットプロトコル)アドレス、及び他の任意の当該ノードを識別するための情報であってもよく、表1には、IPアドレスのみを例にとって説明する。
【0031】
【表1】
【0032】
ブロックチェーンシステム100における各ノード110は、一つの同じブロックチェーンを記憶する。ブロックチェーンは複数のブロックからなり、図2を参照し、ブロックチェーン200は複数のブロック201からなり、ジェネシスブロックにブロックヘッダ及びブロック本体を含み、ブロックヘッダに入力情報の特徴値、バージョン番号、タイムスタンプ及び難易度の値を記憶しており、ブロック本体に入力情報を記憶しており、ジェネシスブロックの直後のブロックはジェネシスブロックを親ブロックであり、その次のブロックに、同様に、ブロックヘッダ及びブロック本体を含み、ブロックヘッダに現在のブロックの入力情報の特徴値、親ブロックのブロックヘッダ特徴値、バージョン番号、タイムスタンプ及び難易度の値を記憶しており、このように、ブロックチェーンにおける各ブロックに記憶されているブロックデータは親ブロックに記憶されているブロックデータと関連付けられ、ブロックにおける入力情報のセキュリティが保証される。
【0033】
図2は、本願の実施例にかかるブロック構成の一つの好ましい概略図である。図2を参照し、ブロックチェーン200における各ブロック201を生成する場合に、ブロックチェーンが所在しているノードは入力情報を受信すると、入力情報を検証し、検証を完了した後に、入力情報をメモリプールに記憶し、入力情報を記録するためのハッシュツリーを更新し、その後、更新タイムスタンプを、入力情報を受信した時間に更新し、異なる乱数を試し、特徴値を複数回計算し、計算された特徴値が以下の式を満たしていることができるようにする。
【数1】
なお、SHA256は、特徴値の計算に使用される特徴値アルゴリズムであり、version(バージョン番号)はブロックチェーンの関連ブロックプロトコルのバージョン情報であり、prev_hashは現在のブロックの親ブロックのブロックヘッダー特徴値であり、merkle_rootは入力情報の特徴値であり、ntimeは更新タイムスタンプの更新時間であり、nbitsは現在の難易度であり、一定期間に固定値であり、一定期間を超えると再特定され、xは乱数であり、TARGETは特徴値の閾値であり、当該特徴値閾値はnbitsによって特定される。
【0034】
このように、上記の式を満たしている乱数を計算する際に、情報を対応して記憶して、ブロックヘッダー及びブロック本体を生成して、現在のブロックを取得する。次に、ブロックチェーンが所在しているノードは、ブロックチェーンシステムにおける他のノードのノード識別子に応じて、新規に生成されたブロックを、その所在しているブロックチェーンシステムにおける他のノードにそれぞれ送信し、他のノードは、新規に生成されたブロックを検証し、検証が完了した後に、新規に生成されたブロックをその記憶されているブロックチェーンに追加する。
【0035】
本願の実施例にかかるブロック処理方法はブロック処理システムに適用可能であり、当該ブロック処理処理システムはブロックチェーンの一部に属する。図3に示すように、当該ブロック処理システムには少なくとも二つのブロックチェーンノードを含んでもよい。例えば、第1のノード及び第2のノードを含んでもよい。なお、第1のノードはリーダー(Leader)ノードであり、第2のノードはフォロワー(Follower)ノードであり、第1のノードと第2のノードとの間は相互に通信することができ、例えば、無線ネットワーク又は有線ネットワークを介して通信する。具体的に、ブロック処理システムは、ノードの役割選択によりリーダーノード及びフォロワーノードを特定してもよく、例えば、ブロックチェーンの全てのノードにおいて、Raftアルゴリズムを実行し、Leaderノード及びFollowerノードを選出し、なお、ブロックチェーンにはLeaderノードが1つだけあるが、ブロックチェーンには1つ又は複数のFollowerノードがある。Raftアルゴリズムは分散型コンセンサスアルゴリズムであり、複数のノードが状態でコンセンサスに達成することを保証する。正常の作動中、ノードは、Leader役割およびFollower役割うちの一方でありか、Follower役割はLeader役割の状態に追従する。本願の実施例におけるノードの役割の選択に使用されるアルゴリズムはRaftアルゴリズムに限定されず、例えば、BFT(ByzantineFaultTolerance、ビザンチンフォールトトレランス)アルゴリズムを使用してノードの役割を選択してもよく、例えば、PBFT(PracticalByzantineFaultTolerance、実用的ビザンチンフォールトトレランス)アルゴリズムなどであり、ここで、限定しない。
【0036】
まず、本願の実施例におけるブロック処理システム中のリーダーノードとフォロワーノードとの間のインタラクションフローについて例を挙げて説明し、図4に示すように、本願の実施例の一実施例にかかるブロック処理方法は、以下のステップを含んでもよい。
【0037】
201において、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第1のノードは、第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストする。
【0038】
本願の実施例において、ブロックチェーンにおいてノードの役割の選択により1つのリーダーノード、及び少なくとも1つのフォロワーノードを特定し得、第1のノードがリーダーノード、第2のノードがフォロワーノードであることを例として、第1のノードがリーダーノードとして選出された場合に、当該第1のノードは1つのトランザクションキューを管理することができ、トランザクションキューはクライアントによって送信されたトランザクション情報を記憶するために用いられる。なお、トランザクションキューに記憶されているトランザクション情報は1つまたは複数であってもよく、当該トランザクション情報はトランザクションと呼ばれることもある。
【0039】
例えば、第1のノードは、第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、なお、候補ブロックは、ブロックチェーン台帳に書き込まれるブロックであり、第1のトランザクション情報が候補ブロックにパッケージされた場合に、第1のノードがブロックチェーンを介して候補ブロックをブロードキャストし、第1のノードは候補ブロックをブロードキャストする場合に、当該ブロックチェーンにある全てのノード(フォロワーノード及びリーダーノードを含む)は、当該候補ブロックを受信することができる。本願の実施例における第1のノードは、ブロードキャストする前に、さらに、候補ブロック又は第1のトランザクション情報に署名し、ブロードキャストされる情報が改ざんされるのを防ぐことができるが、それに限定されない。
【0040】
211において、第2のノードは、第1のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第1のトランザクション情報を取得する。
【0041】
本願の実施例において、第1のノードがブロックチェーンを介して候補ブロックをブロードキャストする場合に、ブロックチェーンにおける第2のノードは、第1のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信することができる。ブロックチェーンにおける他のフォロワーノードも当該候補ブロックを受信することができ、例えば、ブロックチェーンにおける第3のノードは、第1のノードが送信した候補ブロックを受信することができるが、それに限定されない。後続の実施例において、第2のノードが候補ブロック及びトランザクション情報を処理することを例にとって、ブロックチェーンにおける他のフォロワーノードは、第2のノードが実行するフローを参照することもできるので、ここで限定しない。
【0042】
第2のノードが第1のノードから候補ブロックを取得した後に、第2のノードは、当該候補ブロックから、第1のノードによって候補ブロックにパッケージされた第1のトランザクション情報を取得することができる。
【0043】
212において、第2のノードは、候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成する。
【0044】
本願の実施例において、第2のノードが候補ブロックから第1のトランザクション情報を取得した後、第2のノードは、第1のトランザクション情報を検証することができ、当該第1のトランザクション情報に対してトランザクション実行操作を行うこともできる。なお、第2のノードによる第1のトランザクション情報の検証は、正当性の検証と呼ばれ得る。当該正当性の検証は、トランザクションデータフォーマット及びパラメータの検証、トランザクションリストに重複するトランザクションがあるか否かの検証、トランザクションの入力が正当であるか否か及び二重支払いであるか否かの検証、トランザクションの署名が正しいか否かの検証、トランザクションの入力数額が出力数額以上であるか否かの検証の少なくとも一つを含んでもよい。第2のノードは第1のトランザクション情報を実行することで、第2のトランザクション実行結果を実行することができ、トランザクションを実行するシナリオが複数あるので、ここで限定しない。
【0045】
202において、第1のノードは、候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成する。
【0046】
本願の実施例において、第1のノードが候補ブロックから第1のトランザクション情報を取得した後に、第1のノードは、第1のトランザクション情報を検証することができ、当該第1のトランザクション情報に対してトランザクション実行操作を行うこともできる。なお、第1のノードによる第1のトランザクション情報の検証は、正当性の検証と呼ばれ得る。当該正当性の検証は、トランザクションデータフォーマット及びパラメータの検証、トランザクションリストに重複するトランザクションがあるか否かの検証、トランザクションの入力が正当であるか否か及び二重支払いであるか否かの検証、トランザクションの署名が正しいか否かの検証、トランザクションの入力数額が出力数額以上であるか否かの検証の少なくとも一つを含んでもよい。第1のノードは第1のトランザクション情報を実行することで、第1のトランザクション実行結果を実行することができ、トランザクションを実行するシナリオが複数あるので、ここで限定しない。
【0047】
203において、第1のノードは、ブロックチェーンを介して第1の検証結果及び第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストする。
【0048】
本願の実施例において、第1のノードによるトランザクションの検証及びトランザクションの実行が完了した後に、第1のノードは、第1のノード処理結果を生成することができ、第1のノード処理結果は、第1の検証結果及び第1のトランザクション実行結果を含む。第1のノードは、ブロックチェーンを介して第1のノード処理結果をブロードキャストし、当該ブロックチェーンにおける全てのノード(フォロワーノード及びリーダーノードを含む)は、当該第1のノードの処理結果を受信することができる。
【0049】
213において、第2のノードは、ブロックチェーンを介して第2の検証結果及び第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストする。
【0050】
本願の実施例において、第2のノードによるトランザクションの検証及びトランザクションの実行が完了した後に、第2のノードは第2のノード処理結果を生成することができ、第2のノード処理結果は、第2の検証結果及び第2のトランザクション実行結果を含む。第2のノードは、ブロックチェーンを介して第2のノード処理結果をブロードキャストし、当該ブロックチェーンにおける全てのノード(フォロワーノード及びリーダーノードを含み)は当該第2のノードの処理結果を受信することができる。
【0051】
なお、前記の実施例においてステップ202からステップ203とステップ211からステップ213は、優位なしに行われている。図2は、好ましい実施形態であり、本願の実施例を制限することを意図するものではない。
【0052】
204において、第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信し、第2のノード処理結果は、第2のノードが候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果、及び候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む。
【0053】
本願の実施例において、第2のノードは、ブロックチェーンを介して第2のノード処理結果をブロードキャストし、ブロックチェーンにおける第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信することができる。
【0054】
205において、第1のノードは、第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第1のノードは、候補ブロックのコンセンサスに成功した場合に候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に第1のトランザクション実行結果を保存する。
【0055】
本願の実施例において、第1のノードはステップ204で第2のノードがキャストした第2のノード処理結果を受信し、第1のノードは第1のノード処理結果及び第2のノード処理結果に応じて候補ブロックに対してコンセンサスを実行し、例えば、第1のノードは分散型コンセンサスアルゴリズムを使用してコンセンサスを実行することができ、当該分散型コンセンサスアルゴリズムはRaftアルゴリズムであってもよく、また、本願の実施例において、分散型コンセンサスアルゴリズムは、Bft-Raftアルゴリズムであってもよく、Bft-Raftアルゴリズムはビザンチンフォールトトレランスと互換性のあるRaftアルゴリズムであり、ビザンチンフォールトトレランス(Bft)は、ハードウェアのエラー、ネットワーク障害、ネットワーク異常及びネットワークノードからの悪意攻撃によって引き起こされるノードの予期されない失効行為を処理するために用いられる。
【0056】
本願の実施例において、第1のノードは、候補ブロックに対してコンセンサスを実行し、その後、第1のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存することにより、候補ブロックのブロック生成を完了し、第1のノードは、さらに、後続の処理フローで第1のトランザクション情報に対応する第1のトランザクション実行結果がクエリされるように、第1のトランザクション情報の実行に成功した場合に、第1のトランザクション実行結果を保存する。
【0057】
本願の幾つかの実施例において、ステップ205にて第1のノードが、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存することは、
候補ブロックのコンセンサスに成功した場合に、第1のノードは、候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存することを含む。
【0058】
なお、候補ブロックに第1のトランザクション情報をパッケージし、第1のノードが候補ブロックに対してコンセンサスを実行した後に、第1のノードは、候補ブロックのコンセンサスに成功した場合に、第1のノードは、具体的に、候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存することができる。なお、候補ブロックのヘッダー情報は、候補ブロックのデータフォーマットから言えば、例えば、直前のブロックのハッシュ(hash)値、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値(nonce)などを含んでよい。具体的に、適用シナリオに応じて当該候補ブロックのヘッダー情報を特定することができるが、ここで限定しない。
【0059】
214において、第2のノードは、第1のトランザクション情報の検証に成功した場合に候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に第2のトランザクション実行結果を保存する。
【0060】
本願の実施例において、第2のノードは、ブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、第2のノードは、第1のトランザクション情報の検証に成功したか否かに応じて、当該候補ブロックを保存するか否かを特定してもよく、第1のトランザクション情報の検証に成功した場合に、第2のノード候補ブロックを保存して、候補ブロックのブロック生成が完了し、第2のノードは、さらに、後続の処理フローで第1のトランザクション情報に対応する第2のトランザクション実行結果がクエリされるように、第1のトランザクション情報の実行に成功した場合に、第2のトランザクション実行結果を保存してもよい。
【0061】
以上の実施例による本願の実施例についての説明から分かるように、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第1のノードは第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、第1のノードは候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成し、次に、第1のノードは、ブロックチェーンを介して第1の検証結果及び第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストし、次に、第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信し、第1のノードは第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第1のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第1のトランザクション実行結果を保存する。本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように当該候補ブロックをブロードキャストし、当該候補ブロックをブロードキャストした後に、第1のノードは、以下の処理を実行することができ、即ち、トランザクション検証及びトランザクション実行を行い、その後、第1のノードが第1のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。よって、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0062】
次に、第1のノードの観点から、本願の実施例にかかるブロック処理方法を説明し、図5に示すように、本願の実施例において、ブロック処理方法を提供し、主に、以下のステップを含む。
【0063】
301において、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第1のノードは少なくとも1つのクライアントからブロックチェーンに送信されたトランザクション情報を受信する。
【0064】
本願の幾つかの実施例において、上記のステップ301はステップに置き換えられてもよい。即ち、第1のノードは、第2のノードが少なくとも1つのクライアントから取得したトランザクション情報を受信することができるが、これに限定されない。
【0065】
本願の実施例において、少なくとも1つのクライアントは、ユーザーのトランザクション情報を取得した後に、少なくとも1つのクライアントはトランザクション情報をブロックチェーンに送信することができ、例えば、ブロックチェーンにおける第1のノード又は第2のノードに送信することができ、具体的に、適用シナリオによって、どのトランザクション情報の送信方法を採用するかを特定することができ、クライアントはトランザクション情報を第1のノードに直接送信すると、第1のノードは、少なくとも1つのクライアントからブロックチェーンに送信されたトランザクション情報を受信する。クライアントはトランザクション情報を第2のノードに直接送信すると、第2のノードはフォロワーノードとしてクライアントのトランザクション情報を受信した後に、第2のノードは、トランザクション情報を第1のノードに送信し、第1のノードは、第2のノードが少なくとも1つのクライアントから取得したトランザクション情報を受信することができる。
【0066】
302において、第1のノードは、少なくとも1つのクライアントのトランザクション情報を、トランザクションキューに入れる。
【0067】
本願の実施例において、第1のノードは、トランザクションキューをメンテナンスし、第1のノードは少なくとも1つのクライアントのトランザクション情報を取得した後に、第1のノードは、少なくとも1つのクライアントのトランザクション情報を、トランザクションキューに入れる。
【0068】
303において、第1のノードは、トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックする。
【0069】
本願の実施例において、第1のノードは、予め、トランザクションキューについてのブロック生成条件を配置することができ、これにより、トランザクションキューに新規トランザクション情報を記憶している場合に、トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、当該ブロック生成条件とは、ブロック生成の設置を実行するか否かの実行条件を指し、トランザクションキューが当該ブロック生成条件を満たしている場合、第1のノードはブロック生成フローを実行し、トランザクションキューが当該ブロック生成条件を満たしていない場合、第1のノードはブロック生成フローを実行せず、当該ブロック生成条件を満たしているようになるまで、当該ブロック生成条件を満たしているか否かを判断し続ける。
【0070】
本願の幾つかの実施例において、ステップ303において第1のノードがトランザクションキューが、予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第1のノードは、トランザクションキューに記憶されているトランザクション情報の数が第1の閾値を超えたか否かをチェックし、トランザクション情報の数が第1の閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクション情報の数が第1の閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【0071】
なお、第1のノードは、トランザクションキューに記憶されているトランザクション情報の数を統計し、トランザクション情報の数はトランザクションキューのサイズを示し、当該トランザクション情報の数が予め設定された第1の閾値を満たしているか否かをチェックし、当該第1の閾値は、ブロック生成閾値を指し、例えば、第1の閾値は1000であってもよく、トランザクションキューに含まれるトランザクション情報の数が1000に達する場合に、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクションキューに含まれるトランザクション情報の数が1000に到達しない場合に、トランザクションキューがブロック生成条件を満たしていると特定する。
【0072】
本願の幾つかの実施例において、ステップ303において第1のノードがトランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第1のノードがトランザクションキューに記憶されているデータの量が第2の閾値を超えたか否かをチェックし、データの量が第2の閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、データの量が第2の閾値を満たしていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【0073】
なお、第1のノードは、トランザクションキューに記憶されているデータの量を統計し、データの量は、トランザクションキューが占用しているストレージスペース容量を示し、データの量が予め設定された第2の閾値を満たしているか否かをチェックし、当該第2の閾値はブロック生成閾値を指し、例えば、第2の閾値は1メガ(M)であってもよく、トランザクションキューに記憶されているデータの量が1Mに達する場合に、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクションキューに記憶されているデータの量が1Mに達していない場合に、トランザクションキューがブロック生成条件を満たしていないと特定する。
【0074】
本願の幾つかの実施例において、ステップ303において第1のノードがトランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第1のノードがトランザクションキューの直前のブロック生成時間から現在の時間までの時間差がブロック生成時間閾値を超えたか否かをチェックし、時間差がブロック生成時間閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、時間差がブロック生成時間閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【0075】
なお、第1のノードは、さらに、トランザクションキューのブロック生成回数をカウントすることができ、トランザクションキューがブロック生成するたびに1つのブロック生成時間を記録し、直前のブロック生成時間から現在の時間までの時間差をリアルタイムで統計し、当該時間差がブロック生成時間閾値を超えたか否かをチェックし、時間差がブロック生成時間閾値を超えたと、トランザクションキューがブロック生成条件を満たしていると特定し、時間差がブロック生成時間閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定し、例えば、ブロック生成時間閾値は5秒であってもよい。
【0076】
304において、トランザクションキューがブロック生成条件を満たしている場合、第1のノードは第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストする。
【0077】
本願の実施例において、第1のノードはトランザクションキューがブロック生成条件を満たしていることを検出した場合に、ブロックチェーンにおける全てのノードが候補ブロックを受信することができるように、第1のノードは第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、当該候補ブロックをブロードキャストする。
【0078】
305において、第1のノードは、候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して、第1のトランザクション実行結果を生成する。
【0079】
306において、第1のノードは、ブロックチェーンを介して、第1の検証結果及び第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストする。
【0080】
307において、第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信し、第2のノード処理結果は、第2のノードが候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果、及び候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む。
【0081】
308において、第1のノードは、第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第1のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第1のトランザクション実行結果を保存する。
【0082】
なお、本願の実施例におけるステップ304からステップ308は、前実施例におけるステップ202からステップ205の実行フローと類似するので、ここで重複な説明を省略する。
【0083】
本願の幾つかの実施例において、第1のノードは前記ステップ304からステップ308のいずれか一つのステップを実行する場合に、本願の実施例にかかるブロック生成処理方法は、
第1のトランザクション情報が候補ブロックにパッケージされると、第1のノードは、トランザクションキューにおける第2のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストするステップと、
第1のノードは、候補ブロックにおける第2のトランザクション情報を検証して第3の検証結果を生成し、候補ブロックにおける第2のトランザクション情報を実行して第3のトランザクション実行結果を生成するステップと、
第1のノードがブロックチェーンを介して、第3の検証結果及び第3のトランザクション実行結果を含む第3のノード処理結果をブロードキャストするステップと、
第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした、第2のノードが候補ブロックにおける第2のトランザクション情報を検証することで生成した第4の検証結果及び候補ブロックにおける第2のトランザクション情報を実行することで生成した第4のトランザクション実行結果を含む第4のノード処理結果を受信するステップと、
第1のノードが第3のノード処理結果及び第4のノード処理結果に応じて候補ブロックに対してコンセンサスを実行し、その後、第1のノードが、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第2のトランザクション情報の実行に成功した場合に、第3のトランザクション実行結果を保存するステップとをさらに含む。
【0084】
なお、第1のノードのトランザクションキューには第1のトランザクション情報及び第2のトランザクション情報が記憶され、第1のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存のいずれか1つのフローを実行する場合、第1のノードは、さらに、同時に第2のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存などのフローを実行することができる。従って、本願の実施例において、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、相互に依存しないブロックに対して並行に検証を実行し、これにより、ブロック生成効率がさらに向上される。
【0085】
以上の実施例による本願の実施例についての説明から分かるように、本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングすることができ、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第1のノードは、以下の処理を実行することができる。即ち、トランザクション検証及びトランザクション実行を行い、その後、第1のノードが第1のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるようにブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0086】
次に、第2のノードの観点から、本願の実施例にかかるブロック処理方法を説明し、図6に示すように、本願の実施例はブロック処理方法を提供し、主に、以下のステップを含む。
【0087】
401において、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第2のノードは、第1のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第1のトランザクション情報を取得する。
【0088】
402において、第2のノードは、候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成する。
【0089】
403において、第2のノードは、ブロックチェーンを介して、第2の検証結果及び第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストする。
【0090】
なお、本願の実施例におけるステップ401からステップ403は図4実施例におけるステップ211からステップ213の実行フローと類似するため、ここで重複な説明を省略する。
【0091】
404において、第2のノードは、第1のノードがブロックチェーンを介してブロードキャストした第1のノード処理結果を受信し、第1のノード処理結果は、第1のノードが候補ブロックにおける第1のトランザクション情報を検証することで生成した第1の検証結果、及び候補ブロックにおける第1のトランザクション情報を実行することで生成した第1のトランザクション実行結果を含む。
【0092】
本願の幾つかの実施例において、ブロックチェーンにおいて、リーダーノード(即ち、第1のノード)はコンセンサスを実行することに加えて、ブロックチェーンにおけるフォロワーノードはコンセンサスを実行することができる。例えば、第2のノードは、ステップ404にて第1のノードによってブロードキャストされた第1のノード処理結果を受信し、第2のノードは、第1のノード処理結果及び第2のノード処理結果に応じて候補ブロックに対してコンセンサスを実行することができ、例えば、第2のノードは分散型コンセンサスアルゴリズムでコンセンサスを実行してもよく、当該分散型コンセンサスアルゴリズムはRaftアルゴリズムであってもよく、また、本願の実施例における分散型コンセンサスアルゴリズムはBft-Raftアルゴリズムであってもよい。
【0093】
405において、第2のノードは、第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、候補ブロックのコンセンサスに成功した場合に、以下のステップ、即ち、第2のノードが、第1のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第2のトランザクション実行結果を保存するステップをトリガーする。
【0094】
本願の実施例において、第2のノードは候補ブロックに対してコンセンサスを実行することができ、当候補ブロックのコンセンサスに成功した場合に、第2のノードは、第1のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第2のトランザクション実行結果を保存する。ブロックチェーンにおいて、第1のノードが悪意の可能性がある場合、第2のノードは、第2のノード処理結果に対してブロードキャストすることを採用する。このように、ブロックチェーンにおける全てのノードは他のノードのノード処理結果を受信することができ、各ノードは、受信したノード処理結果に応じて、データが保存提出か否かを判断し、第1のノードの通知に依存しないため、第1のトランザクション情報の正確な実行が保証される。
【0095】
本願の幾つかの実施例において、ステップ403において第2のノードはブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、本願の実施例は、ステップ404からステップ405に加えて、ステップ404からステップ405を以下の代替ステップで置き換える。
第2のノードが、候補ブロックのコンセンサスに成功した場合に第1のノードよって送信された通知メッセージを受信し、
第2のノードが通知メッセージに応じて以下のステップ、即ち、第2のノードが、第1のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第2のトランザクション実行結果を保存するステップの実行をトリガーする。
【0096】
なお、第1のノードは、候補ブロックに対してコンセンサスを実行し、候補ブロックのコンセンサスに成功した場合に、第1のノードが通知メッセージをブロードキャストすることができ、ブロックチェーンにおける第2のノードは、当該通知メッセージを受信し、当該通知メッセージに応じてコンセンサスに成功したと特定することができ、その後、第2のノードは、第1のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第2のトランザクション実行結果を保存する。
【0097】
本願の幾つかの実施例において、第1のノードは、前記ステップ304からステップ308のいずれか1つのステップを実行する場合に、本願の実施例にかかるブロック生成処理方法は、
第2のノードが、第1のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第2のトランザクション情報を取得するステップと、
第2のノードが候補ブロックにおける第2のトランザクション情報を検証して第4の検証結果を生成し、候補ブロックにおける第2のトランザクション情報を実行して第4のトランザクション実行結果を生成するステップと、
第2のノードが前記ブロックチェーンを介して、前記第4の検証結果及び前記第4のトランザクション実行結果を含む第4のノード処理結果をブロードキャストするステップと、
第2のノードが、第2のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第2のトランザクション情報の実行に成功した場合に、第4のトランザクション実行結果を保存するステップとをさらに含むことができる。
【0098】
なお、第1のノードのトランザクションキューには第1のトランザクション情報及び第2のトランザクション情報を記憶し、第1のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存のいずれかのフローを実行する場合に、第1のノードは、さらに、同時に、第2のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存などのフローを実行することができ、従って、本願の実施例において、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、相互に依存しないブロックに対して並行に検証を実行する。これにより、ブロック生成効率がさらに向上される。
【0099】
以上の実施例による本願の実施例についての説明から分かるように、本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューで処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第2のノードがトランザクション検証及びトランザクション実行を行うように、当該候補ブロックをブロードキャストすることができる。その後、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行するように、第2のノードが第2のノード処理結果をブロードキャストすることができ、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うように、ブロック生成の順序が変更される。、従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0100】
本願の実施例の上記案が良く理解・実施されるように、以下に、相応する適用シナリオの例を挙げて具体的に説明する。
【0101】
本願の実施例で新規ブロック生成案を提供し、次に、第1のノードが具体的にleaderノードであり、第2のノードが具体的にfollowerノードである例をとる。本願の実施例において、検証されていない一連のトランザクションを1つの候補ブロックにパッケージし、bft-Raftアルゴリズムによりleaderノードをfollowerノードにブロードキャストし、leaderノード及びfollowerノードは、コンセンサスノードとして、候補ブロックの検証過程にトランザクションを同時に検証・実行し、トランザクション検証の実行結果を成功又は失敗としてマークし、最後、全てのコンセンサスノードは候補ブロックの検証結果に対してコンセンサスを実行し、コンセンサスに成功した後に、全てのノードが候補ブロックを保存し、候補ブロックのうち成功としてマークされたトランザクションを保存し、失敗したトランザクションを削除する。
【0102】
次に、図7に示すように、本願の実施例にかかるブロック生成フローの適用シナリオ概略図であり、主に、以下のフローを含む。
【0103】
S101において、ブロックチェーンネットワークから、Raftアルゴリズムによりleaderノードおよびfollowerノードを選出する。
【0104】
まず、ノードの役割の選択を行い、ブロックチェーンネットワークの全てのノードにRaftアルゴリズムを実行し、leaderノード及びfollowerノードを選出し、ブロックチェーンにはleaderノードが1つのみがある。
【0105】
S102において、ユーザーはトランザクションをブロックチェーンネットワークに送信し、leaderノードがトランザクションを受信すると直接にトランザクションキューに入れる。
【0106】
なお、ユーザーは、端末を介してトランザクションをブロックチェーンネットワークに送信することができる。leaderノードに送信されたトランザクションについて、leaderノードは直接にトランザクションキューに入れる。又は、followerノードに送信されたトランザクションについて、followerノードはトランザクションをleaderノードに転送し、その後、leaderノードはfollowerノードから受信したトランザクションをトランザクションキューに入れる。
【0107】
S103において、leaderノードは、トランザクションキューにおけるトランザクションがブロック生成要求を満たしているか否かをチェックする。
【0108】
S104において、ブロック生成要求を満たしている場合に、leaderノードはトランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してfollowerノードにブロードキャストする。
【0109】
なお、leaderノードはトランザクションキューがブロック生成要求を満たしているか否かをチェックし、例えば、トランザクションキューに記憶されているトランザクションの数又はトランザクションデータの量がブロック生成要求を満たしているか否かを検出してもよい。ブロック生成要求を満たしている場合、トランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してブロードキャストする。ブロック生成要求を満たしていない場合、ブロック生成時間に達するか否かをチェックし、当該ブロック生成時間に達すると、leaderノードはトランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してブロードキャストする。
【0110】
S105において、ブロックチェーンネットワークにおけるコンセンサスノードから候補ブロックにおけるトランザクションリストを含めて候補ブロックまで検証する。
【0111】
S106において、コンセンサスノードは候補ブロックの検証結果を署名してブロードキャストする。
【0112】
なお、leaderノード及びfollowerノードはコンセンサスノードとして、候補ブロックを検証し、検証過程に候補ブロックにおけるトランザクションリストについて正当性を検証し、トランザクションの正当又は不正をマークし、トランザクションを実行してトランザクション実行結果を生成し、正当なトランザクション実行結果をバッファリングする。
【0113】
S107において、ブロックチェーンネットワークにおいてコンセンサスノードは結果に対してBFT判断を行い、コンセンサスに達成した後に候補ブロック及び正当なトランザクションを保存する。
【0114】
leaderノード及びfollowerノードは、前記ステップS106の検証結果及び実行結果のそれぞれに署名してブロードキャストする。その後、受信したノード署名結果をビザンチンフォールトトレランスアルゴリズム(Bft)でコンセンサスを実行し、ノード署名結果は検証結果及びトランザクション実行結果を含む。
【0115】
leaderノード及びfollowerノードによるノード署名結果のコンセンサスに成功した後に、ノードは候補ブロックヘッダー部情報を保存し、候補ブロックにおける正当なトランザクションを保存し、候補ブロックにバッファリングされたトランザクション実行結果を保存する。なお、候補ブロックにおける正当なトランザクションを保存することは、ユーザーから送信されたトランザクションのオリジナルのデータを保存することを指し(即ち、ここでトランザクション実行結果を含まない)、トランザクション実行結果を保存することは、トランザクション実行結果状態を保存することを指す。
【0116】
なお、候補ブロックヘッダー部情報は、ブロックのデータフォーマットから言えば、1つ前のブロックのハッシュ値(hash)、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値などを含む。
【0117】
図8に示すように、本願の実施例にかかるRaftデータ提出フローの概略図であり、図8におけるLはleaderノードを表し、Fはfollowerノードを表し、主に、以下のプロセスを含む。
ステップ1において、クライアントはデータv=3を提出し、leaderノードに送信する。
ステップ2.1において、leaderノードはデータv=3をコピーし、followerノードに送信する。
ステップ3.1において、followerノードは、データv=3の受信を確認し、leaderノードに送信する。
ステップ3.2において、followerノードは、データv=3の受信を確認し、leaderノードに送信する。
ステップ4.1において、leaderノードは、データv=3の受信を確認し、クライアントに送信する。
ステップ4.2において、leaderノードはデータv=3を提出し、followerノードに送信する。
【0118】
上記のフローにおいて、Raftアルゴリズムのフォールトトレランス技術は、leaderノードに基づいたものであり、followerノードは、leaderノードのデータを受信した後に、データをバッファリングし結果をleaderノードに返信し、leaderノードはfollowerノードからの結果を受信し、フォールトトレランス判断を行い、同じ結果を受信したノードの割合が50%よりも大きいと、データが成功したと見なし、次に、leaderノードは、データ状態を保存することをfollowerノードに通知する。
【0119】
図9に示すように、本願の実施例にかかるBft-Raftデータ提出フローの概略図であり、主に、以下のフローを含む。
クライアント1がトランザクション1を生成してリーダーノードに送信し、クライアント2がトランザクション2を生成してフォロワーノード1に送信してから、フォロワーノード1がトランザクション2をリーダーノードに送信し、リーダーノードはブロックを生成した後に、当該ブロックを3つのフォロワーノードにブロードキャストし、3つのフォロワーノードがブロードキャスト応答をブロックチェーンに送信し、リーダーノード及び3つのフォロワーノードがブロックを提出し、リーダーノードと3つのフォロワーノードとがコンセンサスを実行し、コンセンサスに成功した後に、リーダーノード及び3つのフォロワーノードはクライアント1に提出成功メッセージを送信し、リーダーノード及び3つのフォロワーノードはクライアント2に提出成功メッセージを送信する。
【0120】
ブロックチェーンにおいて、図8の実施例に示すフォールトトレランス技術はleaderノードが悪意のある状況に対処することができないため、本願において、ビザンチンフォールトトレランス技術を追加し、上記のfollowerノードは結果をブロードキャストし、このようにすれば、ブロックチェーンネットワークにおける全てのノードは他のノードの署名結果を受信し、各ノードは、leaderノードの通知に依存しなくなり、受信した署名結果に応じて、データを保存に提出するか否かを判断する。
【0121】
本願の実施例において、上記のステップS101からステップS107は、ブロック並行検証技術をさらに使用することもでき、即ち、1つのブロック内に複数のトランザクションがあり、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、互いに依存していないブロックを並行に検証を実行する。
【0122】
本願の実施例にかかる前記案は、アライアンスチェーン又はプライベートチェーンにおけるブロック生成の速度及びトランザクション処理の性能を向上することができる。
【0123】
前記の各方法の実施例では、記述の簡素化のため、実施例を一連の動作の組み合わせとして表現したが、本願の実施例記載によれば、幾つかのステップは他の順で実施されたり、同時に実行されたりすることができるため、本願に記述された動作の順序に制限されないことが当業者にとって自明である。次に、明細書に記述された実施例は、好ましい実施例に過ぎず、係る動作及びモジュールは必ずしも本発明にとって必須であるわけではないことも業者にとって自明である。
【0124】
本願の実施例の上記の案を良く実施しやすいために、以下に上記の案を実施するための関連装置をさらに提供する。
【0125】
図10に示すように、本願の実施例にかかるブロックチェーンにおける第1のノード800であり、当該ブロックチェーンは第2のノードをさらに含み、第1のノードはリーダーノードであり、第2のノードはフォロワーノードであり、前記第1のノード800は処理モジュール801及び送受信モジュール802を含み、
前記処理モジュールは、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージするために用いられ、
前記送受信モジュールは、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む第2のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第1のノード処理結果及び前記第2のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、その後、前記第1のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するために用いられる。
【0126】
本願の幾つかの実施例において、前記送受信モジュールが前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージする前に、前記処理モジュールは、さらに、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、前記トランザクションキューが前記ブロック生成条件を満たしている場合、以下のステップ、即ち、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージするステップの実行をトリガーするために用いられる。
【0127】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューに記憶されているトランザクション情報の数が第1の閾値を超えたか否かをチェックし、前記トランザクション情報の数が前記第1の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記トランザクション情報の数が前記第1の閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【0128】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューに記憶されているデータの量が第2の閾値を超えたか否かをチェックし、前記データの量が前記第2の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記データの量が前記第2の閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【0129】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューの直前のブロック生成時間から現在の時間までの時間差がブロック生成時間閾値を超えたか否かをチェックし、前記時間差が前記ブロック生成時間閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記時間差が前記ブロック生成時間閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【0130】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、少なくとも1つのクライアントから前記ブロックチェーンに送信されたトランザクション情報を受信し、又は、前記第1のノードが、前記第2のノードが少なくとも1つのクライアントから取得したトランザクション情報を受信するために用いられ、
前記処理モジュールは、さらに、前記少なくとも1つのクライアントのトランザクション情報を前記トランザクションキューに入れるために用いられる。
【0131】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記第1のトランザクション情報を前記候補ブロックにパッケージする際に、前記トランザクションキューにおける第2のトランザクション情報を候補ブロックにパッケージするために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第2のトランザクション情報を検証して第3の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第3のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第3の検証結果及び前記第3のトランザクション実行結果を含む第3のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第2のトランザクション情報を検証することで生成した第4の検証結果及び前記候補ブロックにおける第2のトランザクション情報を実行することで生成した第4のトランザクション実行結果を含む第4のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第3のノード処理結果及び前記第4のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、その後、前記第1のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合に、前記第3のトランザクション実行結果を保存するために用いられる。
【0132】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存するために用いられる。
【0133】
以上の実施例による本願の実施例についての説明から分かるように、第1のノードがリーダーノードであり、第2のノードがフォロワーノードである場合に、第1のノードは第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、その後、第1のノードは候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成し、そして、第1のノードは、ブロックチェーンを介して、第1の検証結果及び第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストし、そして、第1のノードは、第2のノードがブロックチェーンを介してブロードキャストした第2のノード処理結果を受信し、第1のノードは第1のノード処理結果及び第2のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第1のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第1のトランザクション情報の実行に成功した場合に、第1のトランザクション実行結果を保存する。本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第1のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、その後、第1のノードが第1のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する処理を行うことができる。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0134】
図11に示すように、本願の実施例にかかるブロックチェーンにおける第2のノード900であり、当該ブロックチェーンには、第1のノードがさらに含まれ、第1のノードはリーダーノードであり、第2のノードはフォロワーノードであり、前記第2のノード900は処理モジュール901及び送受信モジュール902を含み、
前記送受信モジュールは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信するために用いられ、
前記処理モジュールは、前記候補ブロックから第1のトランザクション情報を取得するために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するために用いられる。
【0135】
本願の幾つかの実施例において、前記送受信モジュールは、前記ブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、前記第1のノードが前記ブロックチェーンを介してブロードキャストした、前記第1のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第1の検証結果、前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第1のトランザクション実行結果を含む第1のノード処理結果を受信し、
前記処理モジュールは、さらに、前記第1のノード処理結果及び前記第2のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、以下のステップの実行をトリガーし、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するために用いられる。
【0136】
本願の幾つかの実施例において、前記送受信モジュールは、前記ブロックチェーンを介して第2のノード処理結果をブロードキャストした後に、前記第1のノードが前記候補ブロックのコンセンサスに成功した場合に送信した通知メッセージを受信し、
前記処理モジュールは、さらに、前記通知メッセージに応じて、以下のステップ、即ち、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するステップの実行をトリガーするために用いられる。
【0137】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第2のトランザクション情報を取得するために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第2のトランザクション情報を検証して第4の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第4のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第4の検証結果及び前記第4のトランザクション実行結果を含む第4のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第2のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合に、前記第4のトランザクション実行結果を保存するために用いられる。
【0138】
上記本願の実施例に対する説明から分かるように、本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第2のノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、その後、第2のノードが第2のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0139】
例示的に実施例において、図10を参照し、本願の実施例にかかる他のブロックチェーンにおける第1のノード800であり、当該ブロックチェーンは第2のノードをさらに含み、第1のノードはリーダーノードであり、第2のノードはフォロワーノードであり、前記第1のノード800は処理モジュール801及び送受信モジュール802を含み、
前記処理モジュールは、少なくとも1つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントから送信されたトランザクション情報を前記第1のノードのトランザクションキューに入れるために用いられ、
前記処理モジュールは、さらに、前記トランザクションキューを満たしているか否か予め設定されたブロック生成条件をチェックするために用いられ、
前記送受信モジュールは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第1のノードのトランザクションキューにおける第1のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名して前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第1のトランザクション情報を検証して第1の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第1のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、第1のノード処理結果に署名して前記ブロックチェーンを介して、前記第1の検証結果及び前記第1のトランザクション実行結果を含む第1のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノードが前記候補ブロックにおける第1のトランザクション情報を検証することで生成した第2の検証結果、及び前記候補ブロックにおける第1のトランザクション情報を実行することで生成した第2のトランザクション実行結果を含む、第2のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第1のノード処理結果及び前記第2のノード処理結果に応じて前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、その後、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第1のトランザクション実行結果を保存するために用いられる。
【0140】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、前記第1のトランザクション情報を前記候補ブロックにパッケージする場合に、前記トランザクションキューにおける第2のトランザクション情報を前記候補ブロックにパッケージし、前記候補ブロックに署名して前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第2のトランザクション情報を検証して第3の検証結果を生成し、前記候補ブロックにおける第2のトランザクション情報を実行して第3のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、第3のノード処理結果に署名して前記ブロックチェーンを介して、前記第3の検証結果及び前記第3のトランザクション実行結果を含む前記第3のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第2のノードが前記ブロックチェーンを介してブロードキャストした、前記第2のノード前記候補ブロックにおける第2のトランザクション情報を検証することで生成した第4の検証結果、及び前記候補ブロックにおける第2のトランザクション情報を実行することで生成した第4のトランザクション実行結果を含む第4のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第1のノードが前記第3のノード処理結果及び前記第4のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、その後、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第2のトランザクション情報の実行に成功した場合に、前記第3のトランザクション実行結果を保存するために用いられる。
【0141】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックの直前のブロックのハッシュ値、マークルツリーのルート、ステートのルート、レシート根、ノードの署名、乱数値を含む前記候補ブロックのヘッダー情報を保存し、検証に成功した第1のトランザクション情報を保存するために用いられる。
【0142】
上記の本願の実施例に対する説明から分かるように、本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第1のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、その後、第1のノードが第1のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する処理を実行することができる。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0143】
例示的な実施例において、図11を参照し、本願の実施例にかかる他のブロックチェーンにおける第2のノード900であって、当該ブロックチェーンには第1のノードをさらに含まれ、第1のノードはリーダーノードであり、第2のノードはフォロワーノードであり、前記第2のノード900は処理モジュール901及び送受信モジュール902を含み、
前記送受信モジュールは、前記第1のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第1のトランザクション情報を取得するために用いられ、
前記処理モジュールは、前記候補ブロックにおける第1のトランザクション情報を検証して第2の検証結果を生成し、前記候補ブロックにおける第1のトランザクション情報を実行して第2のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第2のノード処理結果に署名して前記ブロックチェーンを介して、前記第2の検証結果及び前記第2のトランザクション実行結果を含む第2のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、前記第1のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第1のトランザクション情報の実行に成功した場合に、前記第2のトランザクション実行結果を保存するために用いられる。
【0144】
上記の本願の実施例に対する説明から分かるように、本願の実施例における第1のノードがリーダーノードとされ、第1のノードは、トランザクションキューで処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第2のノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストでき、その後、第2のノードが第2のノード処理結果をブロードキャストすることができ、第1のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する。本願の実施例では、、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【0145】
図12は本願の実施例で提供されるサーバーの概略構成図であり、当該サーバーは、前記第1のノード側のブロック処理方法を実現するために、具体的に、前記のブロックチェーンにおける第1のノードであってもよいし、前記第2のノード側のブロック処理方法を実現するために、前記のブロックチェーンにおける第2のノードであってもよく、サーバー1100は、異なる配置又は性能によって大きく相違する可能性があり、1つ又は複数の中央処理装置(centralprocessingunits、CPU)1122(例えば、1つ以上のプロセッサ)と、メモリ1132と、アプリケーションプログラム1142又はデータ1144を記憶する1つ又は複数の記憶媒体1130(例えば1つ又は複数の大容量記憶装置)とを含むことができる。なお、メモリ1132及び記憶媒体1130は、一時的記憶装置又は永続的記憶装置であり得る。記憶媒体1130に記憶されるプログラムは1つ以上のモジュール(図示せず)を含むことができ、各モジュールは、サーバーに対する一連のコマンド操作を含んでもよい。さらに、中央処理装置1122は、記憶媒体1130と通信し、サーバー1100上で記憶媒体1130における一連のコマンド操作を実行するように配置できる。
【0146】
サーバー1100は1つ又は複数の電源1126、1つ又は複数の有線又は無線ネットワークインタフェース1150、1つ又は複数の入出力インタフェース1158、及び/又は、例えば、WindowsServerTM、MacOSXTM、UnixTM、LinuxTM、FreeBSDTMなどの1つ又は複数のオペレーティングシステム1141を含んでもよい。
【0147】
上記の実施例における第1のノードによって実行されるブロック処理方法ステップは、当該図12に示されたサーバー構成に基づくことができ、同様に、上記の実施例における第2のノードによって実行されるブロック処理方法ステップは図12に示されたサーバー構成に基づくことができる。
【0148】
なお、上述した装置の実施例は単なる例示であり、別々の部分として説明したユニットは、物理的に分離されてもよく或いは分離されなくてもよく、ユニットとして表示される部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、1つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよいことに留意すべきである。モジュールの一部又は全部は、実施例の方案の目的を達成するために、実際のニーズに従って選択されてもよい。さらに、本願の実施例で提供される装置の実施例の添付図面において、モジュールの間の接続関係は、モジュールが互いに通信接続を有することを示し、これは、具体的には1つ以上の通信バス又は信号ケーブルとして実現されてもよい。当業者は、創造的取り組みなしに理解して実現し得る。
【0149】
上記の実施例の説明に基づいて、当業者は、本願の実施例が必要なユニバーサルハードウェアに加えてソフトウェアにより実現されてもよく、専用集積回路、専用CPU、専用メモリ、専用コンポーネントなどを含む専用ハードウェアのみにより実現されてもよいことを明確に理解し得る。一般的に、コンピュータプログラムにより実行可能な如何なる機能は、対応するハードウェアを使用することにより容易に実現可能である。さらに、同じ機能を達成するために使用される具体的なハードウェア構成は様々な形式、例えば、アナログ回路、デジタル回路、専用回路などの形式であってもよい。ただし、本願の実施例について、ソフトウェアプログラムの実現がほとんどの場合によりよい実現方式である。このような理解に基づいて、本願の技術案又は従来の技術に貢献する部分は、ソフトウェア製品の形式で実質的に具現できる。このコンピュータソフトウェア製品は、読み取り可能記憶媒体、例えば、コンピュータのフロッピーディスク、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ(ROM、Read-OnlyMemory)、ランダムアクセスメモリ(RAM、RandomAccessMemory)、磁気ディスク又は光ディスクに記憶され、1台のコンピュータ機器(例えば、パーソナルコンピュータ、サーバー又はネットワークデバイス)に本願の各実施例による方法を実行させるためのいくつかのコマンドを含む。
【0150】
例示的な実施例において、さらに、コンピュータプログラム製品を提供し、当該コンピュータプログラム製品は、第1のノードで実行されると、上記の第1のノード側のブロック処理方法を実現するために用いられ、当該コンピュータプログラム製品は、第2のノードで実行されると、上記の第2のノード側のブロック処理方法を実現するために用いられる。
【0151】
このように、上記の実施例は、本願を限定するものではなく、ただ本願の技術案を説明するためのものに過ぎない。上記の実施例を参照して本願を詳細に説明したが、当業者は、依然として上記の実施例に記載の技術案を修正したり、その一部の技術的特徴を均等に置き換えたりすることが可能であり、これらの修正又は置き換えは、その対応する技術提案の本質を本願の各実施例の技術思想及び範囲から逸脱させないことが自明である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12