(57)【要約】  本願の実施例は、ブロック生成の速度及びトランザクション処理の性能を改善するためのブロック処理方法、ノード及びシステムを開示する。第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは、第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、候補ブロックをブロードキャストし、第１のノードは、候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、第１のノードは、第１のノード処理結果をブロードキャストし、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第１のノードは、第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。
2022500742.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンにおける第１のノードが実行する、ブロック処理方法であって、
前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである、前記方法において、
前記第１のノードは、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第１のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するステップと、
前記第１のノードは、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするステップと、
前記第１のノードは、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を、前記ブロックチェーンを介した前記第２のノードからのブロードキャストにより受信するステップと、
前記第１のノードは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記第１のノードは、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するステップとを含む方法。
【請求項２】
前記第１のノードが前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージする前に、
前記第１のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップと、
前記トランザクションキューが前記ブロック生成条件を満たしている場合、以下のステップ、即ち、前記第１のノードが前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージするステップの実行をトリガーするステップとをさらに含む請求項１に記載の方法。
【請求項３】
前記第１のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第１のノードが、前記トランザクションキューに記憶されているトランザクション情報の数が第１の閾値を超えたか否かをチェックし、前記トランザクション情報の数が前記第１の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記トランザクション情報の数が前記第１の閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項２に記載の方法。
【請求項４】
前記第１のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第１のノードは、前記トランザクションキューに記憶されているデータの量が第２の閾値を超えたか否かをチェックし、前記データの量が前記第２の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記データの量が前記第２の閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項２に記載の方法。
【請求項５】
前記第１のノードが、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップは、
前記第１のノードが前記トランザクションキューの直前のブロック生成時間と現在の時間との間の時間差がブロック生成時間閾値を超えたか否かをチェックし、前記時間差が前記ブロック生成時間閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記時間差が前記ブロック生成時間閾値を超えない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するステップを含む請求項２に記載の方法。
【請求項６】
前記第１のノードは、少なくとも１つのクライアントから前記ブロックチェーンに送信されたトランザクション情報を受信し、又は、前記第２のノードが少なくとも１つのクライアントから取得したトランザクション情報を受信するステップと、
前記第１のノードが前記少なくとも１つのクライアントのトランザクション情報を前記トランザクションキューに入れるステップとをさらに含む請求項１〜５の何れか１項に記載の方法。
【請求項７】
前記第１のトランザクション情報が前記候補ブロックにパッケージされると、前記第１のノードが前記トランザクションキューにおける第２のトランザクション情報を前記候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第１のノードは、前記候補ブロックにおける第２のトランザクション情報を検証して第３の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第３のトランザクション実行結果を生成するステップと
前記第１のノードは、前記ブロックチェーンを介して、前記第３の検証結果及び前記第３のトランザクション実行結果を含む第３のノード処理結果をブロードキャストするステップと
前記第１のノードは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第２のトランザクション情報を検証することで生成した第４の検証結果、及び前記候補ブロックにおける第２のトランザクション情報を実行することで生成した第４のトランザクション実行結果を含む第４のノード処理結果を受信するステップと
前記第１のノードは、前記第３のノード処理結果及び前記第４のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記第１のノードが前記候補ブロックのコンセンサスに成功した場合、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合、前記第３のトランザクション実行結果を保存するステップとをさらに含む請求項１〜５の何れか１項に記載の方法。
【請求項８】
前記第１のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存するステップは、
前記候補ブロックのコンセンサスに成功した場合に、前記第１のノードが前記候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存するステップを含む請求項１〜７のいずれか一項に記載の方法。
【請求項９】
ブロックチェーンにおける第２のノードにより実行されるブロック処理方法であって、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである、前記方法において、
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得するステップと、
前記第２のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するステップと、
前記第２のノードは、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするステップと、
前記第２のノードは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するステップとを含む方法。
【請求項１０】
前記第２のノードが前記ブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした、前記第１のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第１の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第１のトランザクション実行結果を含む第１のノード処理結果を受信するステップと、
前記第２のノードは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合、前記第２のノードが前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存することの実行をトリガーするステップとをさらに含む請求項９に記載の方法。
【請求項１１】
前記第２のノードが前記ブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、
前記第２のノードが、前記候補ブロックのコンセンサスに成功した場合に前記第１のノードにより送信された通知メッセージを受信するステップと、
前記第２のノードが、前記通知メッセージに応じて、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存することの実行をトリガーするステップとをさらに含む請求項９に記載の方法。
【請求項１２】
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第２のトランザクション情報を取得するステップと、
前記第２のノードは、前記候補ブロックにおける第２のトランザクション情報を検証して第４の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第４のトランザクション実行結果を生成するステップと、
前記第２のノードは、前記ブロックチェーンを介して、前記第４の検証結果及び前記第４のトランザクション実行結果を含む第４のノード処理結果をブロードキャストするステップと、
前記第２のノードは、前記第２のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合に、前記第４のトランザクション実行結果を保存するステップとをさらに含む請求項９〜１１のいずれか一項に記載の方法。
【請求項１３】
ブロックチェーンにおける第１のノードによって実行されるブロック処理方法であって、前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第１のノードは、少なくとも１つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントが送信したトランザクション情報を前記第１のノードのトランザクションキューに入れるステップと、
前記第１のノードは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするステップと、
前記第１のノードは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第１のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するステップと、
前記第１のノードは、第１のノード処理結果に署名し、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするステップと、
前記第１のノードは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信するステップと、
前記第１のノードは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて、分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するステップとを含む方法。
【請求項１４】
前記第１のトランザクション情報が前記候補ブロックにパッケージされると、前記第１のノードは、前記トランザクションキューにおける第２のトランザクション情報を前記候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするステップと、
前記第１のノードは、前記候補ブロックにおける第２のトランザクション情報を検証して第３の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第３のトランザクション実行結果を生成するステップと、
前記第１のノードは、第３のノード処理結果に署名し、前記ブロックチェーンを介して、前記第３の検証結果及び前記第３のトランザクション実行結果を含む前記第３のノード処理結果をブロードキャストするステップと、
前記第１のノードは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第２のトランザクション情報を検証することで生成した第４の検証結果及び前記候補ブロックにおける第２のトランザクション情報を実行することで生成した第４のトランザクション実行結果を含む第４のノード処理結果を受信するステップと、
前記第１のノードは、前記第３のノード処理結果及び前記第４のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合に、前記第３のトランザクション実行結果を保存するステップとをさらに含む請求項１３に記載の方法。
【請求項１５】
前記第１のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存するステップは、
前記候補ブロックのコンセンサスに成功した場合に、前記第１のノードが、前記候補ブロックの直前のブロックのハッシュ値、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値を含む前記候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存するステップを含む請求項１３又は１４に記載の方法。
【請求項１６】
ブロックチェーンにおける第２のノードにより実行されるブロック処理方法であって、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得するステップと、
前記第２のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するステップと、
前記第２のノードは、第２のノード処理結果に署名し、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするステップと、
前記第２のノードは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するステップとを含む方法。
【請求項１７】
ブロックチェーンノードであって、前記ブロックチェーンノードはブロックチェーンにおける第１のノードであり、前記第１のノードは
コマンドを記憶するためのメモリと、
前記メモリにおける前記コマンドを実行することで、請求項１〜８のいずれか一項に記載の方法、又は、請求項１３〜１５のいずれか一項に記載の方法を実行するためのプロセッサとを含む、ブロックチェーンノード。
【請求項１８】
ブロックチェーンノードであって、前記ブロックチェーンノードはブロックチェーンにおける第２のノードであり、前記第２のノードは、
コマンドを記憶するためのメモリと、
請求項９〜１２のいずれか一項に記載の方法、又は、請求項１６に記載の方法を実行するためのプロセッサとを含む、ブロックチェーンノード。
【請求項１９】
ブロック処理システムであって、
請求項１〜８のいずれか一項に記載の方法を実行するための第１のノードと、請求項９〜１２のいずれか一項に記載の方法を実行するための前記第２のノードとを含み、又は、
請求項１３〜１５のいずれか一項に記載の方法を実行するための第１のノードと、請求項１６に記載の方法を実行するための第２のノードとを含むブロック処理システム。
【請求項２０】
コンピュータプログラムであって、
コンピュータに実行されると、請求項１〜８のいずれか一項に記載の方法、又は、請求項９〜１２のいずれか一項に記載の方法、又は、請求項１３〜１５のいずれか一項に記載の方法、又は、請求項１６に記載の方法が実現される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１９年０４月２６日に出願された「ブロック処理方法、ノード及びシステム」と題する中国特許出願第２０１９１０３４５９８５．４号に対する優先権を主張しており、その全ての内容は本願に援用される。
【０００２】
本願は、コンピュータ技術の分野に関し、特に、ブロック処理方法、ノード及びシステム及びコンピュータプログラムに関する。
【背景技術】
【０００３】
ユーザーはクライアントを介してトランザクションを開始することができ、トランザクション中に記録されたすべてのトランザクション情報は、一つのブロックにパッキングされて記憶される。トランザクションが継続的に拡張してゆくにつれて、ブロック同士が相互にリンクされてブロックチェーンが形成される。ブロックチェーンは台帳とも呼ばれる。ブロックチェーンはオープンネットワーク台帳であり、ブロックチェーンは複数のブロック（Ｂｌｏｃｋ）を含んでもよい。ブロックチェーンは複数の形式を有し、例えば、パブリックチェーン、プライベートチェーン、及びアライアンスチェーンを含んでもよく、パブリックチェーンは、ビットコイン系、イーサリアム系などを含んでもよい。
【０００４】
現在、パブリックチェーンのブロック生成方法は、具体的に、以下のフローを含んでもよい。
【０００５】
新規トランザクションがブロックチェーンにおけるあるノード（例えばノード１）に到着すると、当該ノード１は、まず、トランザクションが正当であるか否かを検証し、次に正当のトランザクションをロカールトランザクションプールに入れ、ブロックチェーンにおいて他のノードにトランザクション情報をブロードキャストする。
【０００６】
新規ブロック生成周期が到来すると、該ノード１は、トランザクションプールからトランザクションリストを取得し、次に当該トランザクションリストを候補ブロックにパッケージし、当該候補ブロックに署名してからブロックチェーンを介して候補ブロックをブロードキャストする。
【０００７】
ブロックチェーンにおける全てのノードがその受信した候補ブロックに対してコンセンサスを実行し、コンセンサスに成功した場合に当該候補ブロックを保存し、最後にノード１は、候補ブロックにおけるトランザクションを実行する。
【０００８】
上記のブロック生成方法をパブリックチェーンに適用する場合、ブロックチェーンの最下層データのセキュリティを保証することができるが、アライアンスチェーン及びプライベートチェーンにおいて、セキュリティ要素の検証は、ブロックチェーンの最下層に限定されず、複数の層に分割されることができる。前記のブロック生成方法をアライアンスチェーン又はプライベートチェーンに適用する場合、ブロック生成に必要な時間が長すぎて、トランザクションをタイムリーに処理することができないので山積する恐れがあり、ブロックチェーンの輻輳問題を引き起こしやすいことが懸念される。
【発明の概要】
【０００９】
本願の実施例は、ブロック生成の速度、及びトランザクション処理の性能を向上するためのブロック処理方法、ノード及びシステムを提供する。
【００１０】
本願の実施例は、以下の技術案を提供する。
一局面によれば、本願の実施例はブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第１のノードにより実行され、前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第１のノードは、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記ブロックチェーンを介して前記候補ブロックをブロードキャストし、
前記第１のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、
前記第１のノードは、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストし、
前記第１のノードは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信し、
前記第１のノードは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存することを含む。
【００１１】
一局面によれば、本願の実施例は、ブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第２のノードにより実行され、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得し、
前記第２のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成し、
前記第２のノードは、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストし、
前記第２のノードは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存することを含む
【００１２】
一局面によれば、本願の実施例は、ブロック処理方法を提供し、前記方法は、ブロックチェーンにおける第１のノードにより実行され、前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第１のノードは、少なくとも１つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントが送信したトランザクション情報を前記第１のノードのトランザクションキューに入れ、
前記第１のノードは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、
前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第１のノードは、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストし、
前記第１のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、
前記第１のノードは、第１のノード処理結果に署名し、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストし、
前記第１のノードは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信し、
前記第１のノードは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて、前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存することを含む。
【００１３】
一局面によれば、本願の実施例はブロック処理方法を提供し、前記方法はブロックチェーンにおける第２のノードにより実行され、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードである前記方法において、
前記第２のノードは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得し、
前記第２のノードは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成し、
前記第２のノードは、第２のノード処理結果に署名し、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストし、
前記第２のノードは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存することを含む。
【００１４】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第１のノードであり、前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードであり、前記第１のノードは、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージするための処理モジュールと、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするための送受信モジュールとを含み、
前記処理モジュールは、さらに、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信するために用いられ、、
前記処理モジュールは、さらに、前記第１のノード処理結果及び前記第２のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記第１のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するために用いられる。
【００１５】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第２のノードであり、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードであり、前記第２のノードは、
前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信するための送受信モジュールと、
前記候補ブロックから第１のトランザクション情報を取得るための処理モジュールとを含み、
前記処理モジュールは、さらに、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するために用いられる。
【００１６】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第１のノードであり、前記ブロックチェーンは第２のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードであり、前記第１のノードは処理モジュール及び送受信モジュールを含み、
前記処理モジュールは、少なくとも１つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントから送信されたトランザクション情報を前記第１のノードのトランザクションキューに入れるために用いられ、
前記処理モジュールは、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックするために用いられ、
前記送受信モジュールは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名し、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第１のノード処理結果に署名し、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信するために用いられ、
前記処理モジュールは、前記第１のノード処理結果及び前記第２のノード処理結果に応じて前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するために用いられる。
【００１７】
一局面によれば、本願の実施例は、さらに、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第２のノードであり、前記ブロックチェーンは第１のノードをさらに含み、前記第１のノードはリーダーノードであり、前記第２のノードはフォロワーノードであり、前記第２のノードは処理モジュール及び送受信モジュールを含み、
前記送受信モジュールは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得するために用いられ、
前記処理モジュールは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第２のノード処理結果に署名し、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するために用いられる。
【００１８】
一局面によれば、本願の実施例は、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第１のノードであり、前記第１のノードはプロセッサ及びメモリを含み、前記メモリは、コマンドを記憶するために用いられ、前記プロセッサは、第１のノードが前記第１のノード側のブロック処理方法を実行するように、前記メモリにおける前記コマンドを実行するために用いられる。
【００１９】
一局面によれば、本願の実施例は、ブロックチェーンノードを提供し、前記ブロックチェーンノードはブロックチェーンにおける第２のノードであり、前記第２のノードはプロセッサ及びメモリを含み、前記メモリは、コマンドを記憶するために用いられ、前記プロセッサは、第２のノードが前記第２のノード側のブロック処理方法を実行するように、前記メモリにおける前記コマンドを実行するために用いられる。
【００２０】
一局面によれば、本願の実施例は、ブロック処理システムを提供し、前記ブロック処理システムは第１のノード及び第２のノードを含み、
前記第１のノードは、前記第１のノード側のブロック処理方法を実行するために用いられ、
前記第２のノードは、前記第２のノード側のブロック処理方法を実行するために用いられる。
【００２１】
一局面によれば、本願の実施例は、コンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータ読み取り可能な記憶媒体にコマンドを記憶しており、コンピュータで実行されると、上記の各局面に記載の方法をコンピュータに実行させる。
【００２２】
一局面によれば、本願の実施例はコンピュータプログラム製品を提供し、前記コンピュータプログラム製品がコンピュータ上で実行されると、上記の方法をコンピュータに実行させる。
【００２３】
本願の実施例において、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、第１のノードは候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、第１のノードは、ブロックチェーンを介して、第１の検証結果及び第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストし、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第１のノードは第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、第１のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。本願の実施例における第１のノードがリーダーノードであり、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行が行われるように当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第１のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、第１のノードが第１のノード処理結果をブロードキャストすることができ、第１のノードはブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功した場合、ブロックの保存を実行する処理を実行することができる。本願の実施例では、ロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。よって、ブロック生成の速度及びトランザクション処理の性能が向上される。
【図面の簡単な説明】
【００２４】
本願の実施例における技術案をより明確に説明するために、以下で実施例の記述において使用する必要がある図面を簡単に紹介し、以下に記述される図面は本願のいくつかの実施例に関連しているに過ぎず、当業者にとって、創造的な労力を要しない前提で、これらの図面に基づいて他の図面を得ることも可能であることは明らかである。
【図１】本願の実施例にかかるブロックチェーンシステムの概略図である。
【図２】本願の実施例にかかるブロック構成の概略図である。
【図３】本願の実施例にかかるブロック処理システムの構成の概略構成図である。
【図４】本願の実施例にかかるリーダーノードとフォロワーノードとの間のインタラクションフローの概略図である。
【図５】本願の実施例にかかるリーダーノードにより実行されるブロック処理方法の概略ブロックフローチャートである。
【図６】本願の実施例にかかるフォロワーノードにより実行されるブロック処理方法のフローの概略ブロックである。
【図７】本願の実施例にかかるブロック生成フローの適用シナリオの概略図である。
【図８】本願の実施例にかかるＲａｆｔデータ提出フローの概略図である。
【図９】本願の実施例にかかるＢｆｔ−Ｒａｆｔデータ提出フローの概略図である。
【図１０】本願の実施例にかかる第１のノードの構成の概略構成図である。
【図１１】本願の実施例にかかる第２のノードの構成の概略構成図である。
【図１２】願の実施例にかかるブロック処理方法をサーバーに適用する構成の概略構成図である。
【発明を実施するための形態】
【００２５】
本願の実施例においては、ブロック生成の速度及びトランザクション処理の性能を向上するためのブロック処理方法、ノード及びシステムを提供する。
【００２６】
本願の実施例の目的、特徴、及び利点をさらに明確や理解し易くにするために、以下に本願の実施例における図面を参照して、本願の実施例における技術案を明確かつ完全に説明するが、以下に記載の実施例は、本願のあらゆる実施例ではなく、単なる一部に過ぎないことが明らかである。本願の実施例に基づいて、当業者が取得した実施例の全ては、本願の保護範囲に含まれるものとする。
【００２７】
本願の明細書及び請求項ならびに上記図面における用語である「含む」及び「有する」、ならびに、それらの任意の変化形は、非排他的な包含を網羅するよう意図されたものであり、一連のユニットを含むプロセス、方法、システム、製品、又は、デバイスが、それらのユニットに必ずしも限定されることはなく、明確に列挙されていない、もしくは、これらのプロセス、方法、システム、製品、又は、デバイスに固有の他のユニットを含んでもよい。
【００２８】
まず、本願の実施例に係るブロックチェーンシステムについて簡単に説明する。
【００２９】
ブロックチェーンシステムは、データ共有システム、即ち、ノード間でデータを共有するためのシステムである。図１に示すように、本願の実施例にかかるブロックチェーンシステム１００の概略図を示す。当該ブロックチェーンシステム１００には、複数のノード１１０（「ブロックチェーンノード」とも呼ばれる）を含んでもよく、各ノード１１０は通常の作動中に入力情報を受信することができ、受信した入力情報に基づいて当該ブロックチェーンシステム１００における共有データをメンテナンスする。ブロックチェーンシステム１００における情報交互を保証するために、ブロックチェーンシステム１００におけるノード１１０同士の間に直接又は間接的な情報接続が存在することができ、ノード１１０の間で上記情報接続を介して情報を伝送することができる。例えば、ブロックチェーンシステム１００における任意のノードが入力情報を受信すると、ブロックチェーンシステム１００における他のノードはコンセンサスアルゴリズムにより当該入力情報を取得し、ブロックチェーンシステム１００における全てのノードに記憶されているデータが一致するように、当該入力情報を共有データ内のデータとして記憶する。
【００３０】
ブロックチェーンシステム１００における各ノード１１０について、それに対応するノード識別子を有し、他のノードのノード識別子に応じて、生成されたブロックをブロックチェーンシステムにおける他のノードにブロードキャストするように、ブロックチェーンシステム１００における各ノード１１０が、ブロックチェーンシステム１００における他のノードのノード識別子を記憶する。各ノードには、次の表に示す１つのノード識別子リストがメンテナンスされ、ノードの名称とノード識別子とを対応付けて当該ノード識別子リストに記憶する。なお、ノード識別子は、ＩＰ（ＩｎｔｅｒｎｅｔＰｒｏｔｏｃｏｌ、インターネットプロトコル）アドレス、及び他の任意の当該ノードを識別するための情報であってもよく、表１には、ＩＰアドレスのみを例にとって説明する。
【００３１】
【表１】
2022500742.tif 000003
【００３２】
ブロックチェーンシステム１００における各ノード１１０は、一つの同じブロックチェーンを記憶する。ブロックチェーンは複数のブロックからなり、図２を参照し、ブロックチェーン２００は複数のブロック２０１からなり、ジェネシスブロックにブロックヘッダ及びブロック本体を含み、ブロックヘッダに入力情報の特徴値、バージョン番号、タイムスタンプ及び難易度の値を記憶しており、ブロック本体に入力情報を記憶しており、ジェネシスブロックの直後のブロックはジェネシスブロックを親ブロックであり、その次のブロックに、同様に、ブロックヘッダ及びブロック本体を含み、ブロックヘッダに現在のブロックの入力情報の特徴値、親ブロックのブロックヘッダ特徴値、バージョン番号、タイムスタンプ及び難易度の値を記憶しており、このように、ブロックチェーンにおける各ブロックに記憶されているブロックデータは親ブロックに記憶されているブロックデータと関連付けられ、ブロックにおける入力情報のセキュリティが保証される。
【００３３】
図２は、本願の実施例にかかるブロック構成の一つの好ましい概略図である。図２を参照し、ブロックチェーン２００における各ブロック２０１を生成する場合に、ブロックチェーンが所在しているノードは入力情報を受信すると、入力情報を検証し、検証を完了した後に、入力情報をメモリプールに記憶し、入力情報を記録するためのハッシュツリーを更新し、その後、更新タイムスタンプを、入力情報を受信した時間に更新し、異なる乱数を試し、特徴値を複数回計算し、計算された特徴値が以下の式を満たしていることができるようにする。
【数１】
2022500742.tif 000004
なお、ＳＨＡ２５６は、特徴値の計算に使用される特徴値アルゴリズムであり、ｖｅｒｓｉｏｎ（バージョン番号）はブロックチェーンの関連ブロックプロトコルのバージョン情報であり、ｐｒｅｖ＿ｈａｓｈは現在のブロックの親ブロックのブロックヘッダー特徴値であり、ｍｅｒｋｌｅ＿ｒｏｏｔは入力情報の特徴値であり、ｎｔｉｍｅは更新タイムスタンプの更新時間であり、ｎｂｉｔｓは現在の難易度であり、一定期間に固定値であり、一定期間を超えると再特定され、ｘは乱数であり、ＴＡＲＧＥＴは特徴値の閾値であり、当該特徴値閾値はｎｂｉｔｓによって特定される。
【００３４】
このように、上記の式を満たしている乱数を計算する際に、情報を対応して記憶して、ブロックヘッダー及びブロック本体を生成して、現在のブロックを取得する。次に、ブロックチェーンが所在しているノードは、ブロックチェーンシステムにおける他のノードのノード識別子に応じて、新規に生成されたブロックを、その所在しているブロックチェーンシステムにおける他のノードにそれぞれ送信し、他のノードは、新規に生成されたブロックを検証し、検証が完了した後に、新規に生成されたブロックをその記憶されているブロックチェーンに追加する。
【００３５】
本願の実施例にかかるブロック処理方法はブロック処理システムに適用可能であり、当該ブロック処理処理システムはブロックチェーンの一部に属する。図３に示すように、当該ブロック処理システムには少なくとも二つのブロックチェーンノードを含んでもよい。例えば、第１のノード及び第２のノードを含んでもよい。なお、第１のノードはリーダー（Ｌｅａｄｅｒ）ノードであり、第２のノードはフォロワー（Ｆｏｌｌｏｗｅｒ）ノードであり、第１のノードと第２のノードとの間は相互に通信することができ、例えば、無線ネットワーク又は有線ネットワークを介して通信する。具体的に、ブロック処理システムは、ノードの役割選択によりリーダーノード及びフォロワーノードを特定してもよく、例えば、ブロックチェーンの全てのノードにおいて、Ｒａｆｔアルゴリズムを実行し、Ｌｅａｄｅｒノード及びＦｏｌｌｏｗｅｒノードを選出し、なお、ブロックチェーンにはＬｅａｄｅｒノードが１つだけあるが、ブロックチェーンには１つ又は複数のＦｏｌｌｏｗｅｒノードがある。Ｒａｆｔアルゴリズムは分散型コンセンサスアルゴリズムであり、複数のノードが状態でコンセンサスに達成することを保証する。正常の作動中、ノードは、Ｌｅａｄｅｒ役割およびＦｏｌｌｏｗｅｒ役割うちの一方でありか、Ｆｏｌｌｏｗｅｒ役割はＬｅａｄｅｒ役割の状態に追従する。本願の実施例におけるノードの役割の選択に使用されるアルゴリズムはＲａｆｔアルゴリズムに限定されず、例えば、ＢＦＴ（ＢｙｚａｎｔｉｎｅＦａｕｌｔＴｏｌｅｒａｎｃｅ、ビザンチンフォールトトレランス）アルゴリズムを使用してノードの役割を選択してもよく、例えば、ＰＢＦＴ（ＰｒａｃｔｉｃａｌＢｙｚａｎｔｉｎｅＦａｕｌｔＴｏｌｅｒａｎｃｅ、実用的ビザンチンフォールトトレランス）アルゴリズムなどであり、ここで、限定しない。
【００３６】
まず、本願の実施例におけるブロック処理システム中のリーダーノードとフォロワーノードとの間のインタラクションフローについて例を挙げて説明し、図４に示すように、本願の実施例の一実施例にかかるブロック処理方法は、以下のステップを含んでもよい。
【００３７】
２０１において、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは、第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストする。
【００３８】
本願の実施例において、ブロックチェーンにおいてノードの役割の選択により１つのリーダーノード、及び少なくとも１つのフォロワーノードを特定し得、第１のノードがリーダーノード、第２のノードがフォロワーノードであることを例として、第１のノードがリーダーノードとして選出された場合に、当該第１のノードは１つのトランザクションキューを管理することができ、トランザクションキューはクライアントによって送信されたトランザクション情報を記憶するために用いられる。なお、トランザクションキューに記憶されているトランザクション情報は１つまたは複数であってもよく、当該トランザクション情報はトランザクションと呼ばれることもある。
【００３９】
例えば、第１のノードは、第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、なお、候補ブロックは、ブロックチェーン台帳に書き込まれるブロックであり、第１のトランザクション情報が候補ブロックにパッケージされた場合に、第１のノードがブロックチェーンを介して候補ブロックをブロードキャストし、第１のノードは候補ブロックをブロードキャストする場合に、当該ブロックチェーンにある全てのノード（フォロワーノード及びリーダーノードを含む）は、当該候補ブロックを受信することができる。本願の実施例における第１のノードは、ブロードキャストする前に、さらに、候補ブロック又は第１のトランザクション情報に署名し、ブロードキャストされる情報が改ざんされるのを防ぐことができるが、それに限定されない。
【００４０】
２１１において、第２のノードは、第１のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第１のトランザクション情報を取得する。
【００４１】
本願の実施例において、第１のノードがブロックチェーンを介して候補ブロックをブロードキャストする場合に、ブロックチェーンにおける第２のノードは、第１のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信することができる。ブロックチェーンにおける他のフォロワーノードも当該候補ブロックを受信することができ、例えば、ブロックチェーンにおける第３のノードは、第１のノードが送信した候補ブロックを受信することができるが、それに限定されない。後続の実施例において、第２のノードが候補ブロック及びトランザクション情報を処理することを例にとって、ブロックチェーンにおける他のフォロワーノードは、第２のノードが実行するフローを参照することもできるので、ここで限定しない。
【００４２】
第２のノードが第１のノードから候補ブロックを取得した後に、第２のノードは、当該候補ブロックから、第１のノードによって候補ブロックにパッケージされた第１のトランザクション情報を取得することができる。
【００４３】
２１２において、第２のノードは、候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成する。
【００４４】
本願の実施例において、第２のノードが候補ブロックから第１のトランザクション情報を取得した後、第２のノードは、第１のトランザクション情報を検証することができ、当該第１のトランザクション情報に対してトランザクション実行操作を行うこともできる。なお、第２のノードによる第１のトランザクション情報の検証は、正当性の検証と呼ばれ得る。当該正当性の検証は、トランザクションデータフォーマット及びパラメータの検証、トランザクションリストに重複するトランザクションがあるか否かの検証、トランザクションの入力が正当であるか否か及び二重支払いであるか否かの検証、トランザクションの署名が正しいか否かの検証、トランザクションの入力数額が出力数額以上であるか否かの検証の少なくとも一つを含んでもよい。第２のノードは第１のトランザクション情報を実行することで、第２のトランザクション実行結果を実行することができ、トランザクションを実行するシナリオが複数あるので、ここで限定しない。
【００４５】
２０２において、第１のノードは、候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成する。
【００４６】
本願の実施例において、第１のノードが候補ブロックから第１のトランザクション情報を取得した後に、第１のノードは、第１のトランザクション情報を検証することができ、当該第１のトランザクション情報に対してトランザクション実行操作を行うこともできる。なお、第１のノードによる第１のトランザクション情報の検証は、正当性の検証と呼ばれ得る。当該正当性の検証は、トランザクションデータフォーマット及びパラメータの検証、トランザクションリストに重複するトランザクションがあるか否かの検証、トランザクションの入力が正当であるか否か及び二重支払いであるか否かの検証、トランザクションの署名が正しいか否かの検証、トランザクションの入力数額が出力数額以上であるか否かの検証の少なくとも一つを含んでもよい。第１のノードは第１のトランザクション情報を実行することで、第１のトランザクション実行結果を実行することができ、トランザクションを実行するシナリオが複数あるので、ここで限定しない。
【００４７】
２０３において、第１のノードは、ブロックチェーンを介して第１の検証結果及び第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストする。
【００４８】
本願の実施例において、第１のノードによるトランザクションの検証及びトランザクションの実行が完了した後に、第１のノードは、第１のノード処理結果を生成することができ、第１のノード処理結果は、第１の検証結果及び第１のトランザクション実行結果を含む。第１のノードは、ブロックチェーンを介して第１のノード処理結果をブロードキャストし、当該ブロックチェーンにおける全てのノード（フォロワーノード及びリーダーノードを含む）は、当該第１のノードの処理結果を受信することができる。
【００４９】
２１３において、第２のノードは、ブロックチェーンを介して第２の検証結果及び第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストする。
【００５０】
本願の実施例において、第２のノードによるトランザクションの検証及びトランザクションの実行が完了した後に、第２のノードは第２のノード処理結果を生成することができ、第２のノード処理結果は、第２の検証結果及び第２のトランザクション実行結果を含む。第２のノードは、ブロックチェーンを介して第２のノード処理結果をブロードキャストし、当該ブロックチェーンにおける全てのノード（フォロワーノード及びリーダーノードを含み）は当該第２のノードの処理結果を受信することができる。
【００５１】
なお、前記の実施例においてステップ２０２からステップ２０３とステップ２１１からステップ２１３は、優位なしに行われている。図２は、好ましい実施形態であり、本願の実施例を制限することを意図するものではない。
【００５２】
２０４において、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第２のノード処理結果は、第２のノードが候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果、及び候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む。
【００５３】
本願の実施例において、第２のノードは、ブロックチェーンを介して第２のノード処理結果をブロードキャストし、ブロックチェーンにおける第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信することができる。
【００５４】
２０５において、第１のノードは、第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第１のノードは、候補ブロックのコンセンサスに成功した場合に候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に第１のトランザクション実行結果を保存する。
【００５５】
本願の実施例において、第１のノードはステップ２０４で第２のノードがキャストした第２のノード処理結果を受信し、第１のノードは第１のノード処理結果及び第２のノード処理結果に応じて候補ブロックに対してコンセンサスを実行し、例えば、第１のノードは分散型コンセンサスアルゴリズムを使用してコンセンサスを実行することができ、当該分散型コンセンサスアルゴリズムはＲａｆｔアルゴリズムであってもよく、また、本願の実施例において、分散型コンセンサスアルゴリズムは、Ｂｆｔ−Ｒａｆｔアルゴリズムであってもよく、Ｂｆｔ−Ｒａｆｔアルゴリズムはビザンチンフォールトトレランスと互換性のあるＲａｆｔアルゴリズムであり、ビザンチンフォールトトレランス（Ｂｆｔ）は、ハードウェアのエラー、ネットワーク障害、ネットワーク異常及びネットワークノードからの悪意攻撃によって引き起こされるノードの予期されない失効行為を処理するために用いられる。
【００５６】
本願の実施例において、第１のノードは、候補ブロックに対してコンセンサスを実行し、その後、第１のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存することにより、候補ブロックのブロック生成を完了し、第１のノードは、さらに、後続の処理フローで第１のトランザクション情報に対応する第１のトランザクション実行結果がクエリされるように、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。
【００５７】
本願の幾つかの実施例において、ステップ２０５にて第１のノードが、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存することは、
候補ブロックのコンセンサスに成功した場合に、第１のノードは、候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存することを含む。
【００５８】
なお、候補ブロックに第１のトランザクション情報をパッケージし、第１のノードが候補ブロックに対してコンセンサスを実行した後に、第１のノードは、候補ブロックのコンセンサスに成功した場合に、第１のノードは、具体的に、候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存することができる。なお、候補ブロックのヘッダー情報は、候補ブロックのデータフォーマットから言えば、例えば、直前のブロックのハッシュ（ｈａｓｈ）値、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値（ｎｏｎｃｅ）などを含んでよい。具体的に、適用シナリオに応じて当該候補ブロックのヘッダー情報を特定することができるが、ここで限定しない。
【００５９】
２１４において、第２のノードは、第１のトランザクション情報の検証に成功した場合に候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に第２のトランザクション実行結果を保存する。
【００６０】
本願の実施例において、第２のノードは、ブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、第２のノードは、第１のトランザクション情報の検証に成功したか否かに応じて、当該候補ブロックを保存するか否かを特定してもよく、第１のトランザクション情報の検証に成功した場合に、第２のノード候補ブロックを保存して、候補ブロックのブロック生成が完了し、第２のノードは、さらに、後続の処理フローで第１のトランザクション情報に対応する第２のトランザクション実行結果がクエリされるように、第１のトランザクション情報の実行に成功した場合に、第２のトランザクション実行結果を保存してもよい。
【００６１】
以上の実施例による本願の実施例についての説明から分かるように、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、第１のノードは候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、次に、第１のノードは、ブロックチェーンを介して第１の検証結果及び第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストし、次に、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第１のノードは第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第１のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように当該候補ブロックをブロードキャストし、当該候補ブロックをブロードキャストした後に、第１のノードは、以下の処理を実行することができ、即ち、トランザクション検証及びトランザクション実行を行い、その後、第１のノードが第１のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。よって、ブロック生成の速度及びトランザクション処理の性能が向上される。
【００６２】
次に、第１のノードの観点から、本願の実施例にかかるブロック処理方法を説明し、図５に示すように、本願の実施例において、ブロック処理方法を提供し、主に、以下のステップを含む。
【００６３】
３０１において、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは少なくとも１つのクライアントからブロックチェーンに送信されたトランザクション情報を受信する。
【００６４】
本願の幾つかの実施例において、上記のステップ３０１はステップに置き換えられてもよい。即ち、第１のノードは、第２のノードが少なくとも１つのクライアントから取得したトランザクション情報を受信することができるが、これに限定されない。
【００６５】
本願の実施例において、少なくとも１つのクライアントは、ユーザーのトランザクション情報を取得した後に、少なくとも１つのクライアントはトランザクション情報をブロックチェーンに送信することができ、例えば、ブロックチェーンにおける第１のノード又は第２のノードに送信することができ、具体的に、適用シナリオによって、どのトランザクション情報の送信方法を採用するかを特定することができ、クライアントはトランザクション情報を第１のノードに直接送信すると、第１のノードは、少なくとも１つのクライアントからブロックチェーンに送信されたトランザクション情報を受信する。クライアントはトランザクション情報を第２のノードに直接送信すると、第２のノードはフォロワーノードとしてクライアントのトランザクション情報を受信した後に、第２のノードは、トランザクション情報を第１のノードに送信し、第１のノードは、第２のノードが少なくとも１つのクライアントから取得したトランザクション情報を受信することができる。
【００６６】
３０２において、第１のノードは、少なくとも１つのクライアントのトランザクション情報を、トランザクションキューに入れる。
【００６７】
本願の実施例において、第１のノードは、トランザクションキューをメンテナンスし、第１のノードは少なくとも１つのクライアントのトランザクション情報を取得した後に、第１のノードは、少なくとも１つのクライアントのトランザクション情報を、トランザクションキューに入れる。
【００６８】
３０３において、第１のノードは、トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックする。
【００６９】
本願の実施例において、第１のノードは、予め、トランザクションキューについてのブロック生成条件を配置することができ、これにより、トランザクションキューに新規トランザクション情報を記憶している場合に、トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、当該ブロック生成条件とは、ブロック生成の設置を実行するか否かの実行条件を指し、トランザクションキューが当該ブロック生成条件を満たしている場合、第１のノードはブロック生成フローを実行し、トランザクションキューが当該ブロック生成条件を満たしていない場合、第１のノードはブロック生成フローを実行せず、当該ブロック生成条件を満たしているようになるまで、当該ブロック生成条件を満たしているか否かを判断し続ける。
【００７０】
本願の幾つかの実施例において、ステップ３０３において第１のノードがトランザクションキューが、予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第１のノードは、トランザクションキューに記憶されているトランザクション情報の数が第１の閾値を超えたか否かをチェックし、トランザクション情報の数が第１の閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクション情報の数が第１の閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【００７１】
なお、第１のノードは、トランザクションキューに記憶されているトランザクション情報の数を統計し、トランザクション情報の数はトランザクションキューのサイズを示し、当該トランザクション情報の数が予め設定された第１の閾値を満たしているか否かをチェックし、当該第１の閾値は、ブロック生成閾値を指し、例えば、第１の閾値は１０００であってもよく、トランザクションキューに含まれるトランザクション情報の数が１０００に達する場合に、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクションキューに含まれるトランザクション情報の数が１０００に到達しない場合に、トランザクションキューがブロック生成条件を満たしていると特定する。
【００７２】
本願の幾つかの実施例において、ステップ３０３において第１のノードがトランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第１のノードがトランザクションキューに記憶されているデータの量が第２の閾値を超えたか否かをチェックし、データの量が第２の閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、データの量が第２の閾値を満たしていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【００７３】
なお、第１のノードは、トランザクションキューに記憶されているデータの量を統計し、データの量は、トランザクションキューが占用しているストレージスペース容量を示し、データの量が予め設定された第２の閾値を満たしているか否かをチェックし、当該第２の閾値はブロック生成閾値を指し、例えば、第２の閾値は１メガ（Ｍ）であってもよく、トランザクションキューに記憶されているデータの量が１Ｍに達する場合に、トランザクションキューがブロック生成条件を満たしていると特定し、トランザクションキューに記憶されているデータの量が１Ｍに達していない場合に、トランザクションキューがブロック生成条件を満たしていないと特定する。
【００７４】
本願の幾つかの実施例において、ステップ３０３において第１のノードがトランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックすることは、
第１のノードがトランザクションキューの直前のブロック生成時間から現在の時間までの時間差がブロック生成時間閾値を超えたか否かをチェックし、時間差がブロック生成時間閾値を超えた場合、トランザクションキューがブロック生成条件を満たしていると特定し、時間差がブロック生成時間閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定することを含む。
【００７５】
なお、第１のノードは、さらに、トランザクションキューのブロック生成回数をカウントすることができ、トランザクションキューがブロック生成するたびに１つのブロック生成時間を記録し、直前のブロック生成時間から現在の時間までの時間差をリアルタイムで統計し、当該時間差がブロック生成時間閾値を超えたか否かをチェックし、時間差がブロック生成時間閾値を超えたと、トランザクションキューがブロック生成条件を満たしていると特定し、時間差がブロック生成時間閾値を超えていない場合、トランザクションキューがブロック生成条件を満たしていないと特定し、例えば、ブロック生成時間閾値は５秒であってもよい。
【００７６】
３０４において、トランザクションキューがブロック生成条件を満たしている場合、第１のノードは第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストする。
【００７７】
本願の実施例において、第１のノードはトランザクションキューがブロック生成条件を満たしていることを検出した場合に、ブロックチェーンにおける全てのノードが候補ブロックを受信することができるように、第１のノードは第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、当該候補ブロックをブロードキャストする。
【００７８】
３０５において、第１のノードは、候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して、第１のトランザクション実行結果を生成する。
【００７９】
３０６において、第１のノードは、ブロックチェーンを介して、第１の検証結果及び第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストする。
【００８０】
３０７において、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第２のノード処理結果は、第２のノードが候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果、及び候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む。
【００８１】
３０８において、第１のノードは、第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第１のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。
【００８２】
なお、本願の実施例におけるステップ３０４からステップ３０８は、前実施例におけるステップ２０２からステップ２０５の実行フローと類似するので、ここで重複な説明を省略する。
【００８３】
本願の幾つかの実施例において、第１のノードは前記ステップ３０４からステップ３０８のいずれか一つのステップを実行する場合に、本願の実施例にかかるブロック生成処理方法は、
第１のトランザクション情報が候補ブロックにパッケージされると、第１のノードは、トランザクションキューにおける第２のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストするステップと、
第１のノードは、候補ブロックにおける第２のトランザクション情報を検証して第３の検証結果を生成し、候補ブロックにおける第２のトランザクション情報を実行して第３のトランザクション実行結果を生成するステップと、
第１のノードがブロックチェーンを介して、第３の検証結果及び第３のトランザクション実行結果を含む第３のノード処理結果をブロードキャストするステップと、
第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした、第２のノードが候補ブロックにおける第２のトランザクション情報を検証することで生成した第４の検証結果及び候補ブロックにおける第２のトランザクション情報を実行することで生成した第４のトランザクション実行結果を含む第４のノード処理結果を受信するステップと、
第１のノードが第３のノード処理結果及び第４のノード処理結果に応じて候補ブロックに対してコンセンサスを実行し、その後、第１のノードが、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第２のトランザクション情報の実行に成功した場合に、第３のトランザクション実行結果を保存するステップとをさらに含む。
【００８４】
なお、第１のノードのトランザクションキューには第１のトランザクション情報及び第２のトランザクション情報が記憶され、第１のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存のいずれか１つのフローを実行する場合、第１のノードは、さらに、同時に第２のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存などのフローを実行することができる。従って、本願の実施例において、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、相互に依存しないブロックに対して並行に検証を実行し、これにより、ブロック生成効率がさらに向上される。
【００８５】
以上の実施例による本願の実施例についての説明から分かるように、本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングすることができ、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第１のノードは、以下の処理を実行することができる。即ち、トランザクション検証及びトランザクション実行を行い、その後、第１のノードが第１のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるようにブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【００８６】
次に、第２のノードの観点から、本願の実施例にかかるブロック処理方法を説明し、図６に示すように、本願の実施例はブロック処理方法を提供し、主に、以下のステップを含む。
【００８７】
４０１において、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第２のノードは、第１のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第１のトランザクション情報を取得する。
【００８８】
４０２において、第２のノードは、候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成する。
【００８９】
４０３において、第２のノードは、ブロックチェーンを介して、第２の検証結果及び第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストする。
【００９０】
なお、本願の実施例におけるステップ４０１からステップ４０３は図４実施例におけるステップ２１１からステップ２１３の実行フローと類似するため、ここで重複な説明を省略する。
【００９１】
４０４において、第２のノードは、第１のノードがブロックチェーンを介してブロードキャストした第１のノード処理結果を受信し、第１のノード処理結果は、第１のノードが候補ブロックにおける第１のトランザクション情報を検証することで生成した第１の検証結果、及び候補ブロックにおける第１のトランザクション情報を実行することで生成した第１のトランザクション実行結果を含む。
【００９２】
本願の幾つかの実施例において、ブロックチェーンにおいて、リーダーノード（即ち、第１のノード）はコンセンサスを実行することに加えて、ブロックチェーンにおけるフォロワーノードはコンセンサスを実行することができる。例えば、第２のノードは、ステップ４０４にて第１のノードによってブロードキャストされた第１のノード処理結果を受信し、第２のノードは、第１のノード処理結果及び第２のノード処理結果に応じて候補ブロックに対してコンセンサスを実行することができ、例えば、第２のノードは分散型コンセンサスアルゴリズムでコンセンサスを実行してもよく、当該分散型コンセンサスアルゴリズムはＲａｆｔアルゴリズムであってもよく、また、本願の実施例における分散型コンセンサスアルゴリズムはＢｆｔ−Ｒａｆｔアルゴリズムであってもよい。
【００９３】
４０５において、第２のノードは、第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、候補ブロックのコンセンサスに成功した場合に、以下のステップ、即ち、第２のノードが、第１のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第２のトランザクション実行結果を保存するステップをトリガーする。
【００９４】
本願の実施例において、第２のノードは候補ブロックに対してコンセンサスを実行することができ、当候補ブロックのコンセンサスに成功した場合に、第２のノードは、第１のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第２のトランザクション実行結果を保存する。ブロックチェーンにおいて、第１のノードが悪意の可能性がある場合、第２のノードは、第２のノード処理結果に対してブロードキャストすることを採用する。このように、ブロックチェーンにおける全てのノードは他のノードのノード処理結果を受信することができ、各ノードは、受信したノード処理結果に応じて、データが保存提出か否かを判断し、第１のノードの通知に依存しないため、第１のトランザクション情報の正確な実行が保証される。
【００９５】
本願の幾つかの実施例において、ステップ４０３において第２のノードはブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、本願の実施例は、ステップ４０４からステップ４０５に加えて、ステップ４０４からステップ４０５を以下の代替ステップで置き換える。
第２のノードが、候補ブロックのコンセンサスに成功した場合に第１のノードよって送信された通知メッセージを受信し、
第２のノードが通知メッセージに応じて以下のステップ、即ち、第２のノードが、第１のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第２のトランザクション実行結果を保存するステップの実行をトリガーする。
【００９６】
なお、第１のノードは、候補ブロックに対してコンセンサスを実行し、候補ブロックのコンセンサスに成功した場合に、第１のノードが通知メッセージをブロードキャストすることができ、ブロックチェーンにおける第２のノードは、当該通知メッセージを受信し、当該通知メッセージに応じてコンセンサスに成功したと特定することができ、その後、第２のノードは、第１のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第２のトランザクション実行結果を保存する。
【００９７】
本願の幾つかの実施例において、第１のノードは、前記ステップ３０４からステップ３０８のいずれか１つのステップを実行する場合に、本願の実施例にかかるブロック生成処理方法は、
第２のノードが、第１のノードがブロックチェーンを介してブロードキャストした候補ブロックを受信し、候補ブロックから第２のトランザクション情報を取得するステップと、
第２のノードが候補ブロックにおける第２のトランザクション情報を検証して第４の検証結果を生成し、候補ブロックにおける第２のトランザクション情報を実行して第４のトランザクション実行結果を生成するステップと、
第２のノードが前記ブロックチェーンを介して、前記第４の検証結果及び前記第４のトランザクション実行結果を含む第４のノード処理結果をブロードキャストするステップと、
第２のノードが、第２のトランザクション情報の検証に成功した場合に、候補ブロックを保存し、第２のトランザクション情報の実行に成功した場合に、第４のトランザクション実行結果を保存するステップとをさらに含むことができる。
【００９８】
なお、第１のノードのトランザクションキューには第１のトランザクション情報及び第２のトランザクション情報を記憶し、第１のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存のいずれかのフローを実行する場合に、第１のノードは、さらに、同時に、第２のトランザクション情報に対してパッケージ、検証、実行、コンセンサス、保存などのフローを実行することができ、従って、本願の実施例において、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、相互に依存しないブロックに対して並行に検証を実行する。これにより、ブロック生成効率がさらに向上される。
【００９９】
以上の実施例による本願の実施例についての説明から分かるように、本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューで処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第２のノードがトランザクション検証及びトランザクション実行を行うように、当該候補ブロックをブロードキャストすることができる。その後、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行するように、第２のノードが第２のノード処理結果をブロードキャストすることができ、コンセンサスに成功すると、ブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うように、ブロック生成の順序が変更される。、従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【０１００】
本願の実施例の上記案が良く理解・実施されるように、以下に、相応する適用シナリオの例を挙げて具体的に説明する。
【０１０１】
本願の実施例で新規ブロック生成案を提供し、次に、第１のノードが具体的にｌｅａｄｅｒノードであり、第２のノードが具体的にｆｏｌｌｏｗｅｒノードである例をとる。本願の実施例において、検証されていない一連のトランザクションを１つの候補ブロックにパッケージし、ｂｆｔ−Ｒａｆｔアルゴリズムによりｌｅａｄｅｒノードをｆｏｌｌｏｗｅｒノードにブロードキャストし、ｌｅａｄｅｒノード及びｆｏｌｌｏｗｅｒノードは、コンセンサスノードとして、候補ブロックの検証過程にトランザクションを同時に検証・実行し、トランザクション検証の実行結果を成功又は失敗としてマークし、最後、全てのコンセンサスノードは候補ブロックの検証結果に対してコンセンサスを実行し、コンセンサスに成功した後に、全てのノードが候補ブロックを保存し、候補ブロックのうち成功としてマークされたトランザクションを保存し、失敗したトランザクションを削除する。
【０１０２】
次に、図７に示すように、本願の実施例にかかるブロック生成フローの適用シナリオ概略図であり、主に、以下のフローを含む。
【０１０３】
Ｓ１０１において、ブロックチェーンネットワークから、Ｒａｆｔアルゴリズムによりｌｅａｄｅｒノードおよびｆｏｌｌｏｗｅｒノードを選出する。
【０１０４】
まず、ノードの役割の選択を行い、ブロックチェーンネットワークの全てのノードにＲａｆｔアルゴリズムを実行し、ｌｅａｄｅｒノード及びｆｏｌｌｏｗｅｒノードを選出し、ブロックチェーンにはｌｅａｄｅｒノードが１つのみがある。
【０１０５】
Ｓ１０２において、ユーザーはトランザクションをブロックチェーンネットワークに送信し、ｌｅａｄｅｒノードがトランザクションを受信すると直接にトランザクションキューに入れる。
【０１０６】
なお、ユーザーは、端末を介してトランザクションをブロックチェーンネットワークに送信することができる。ｌｅａｄｅｒノードに送信されたトランザクションについて、ｌｅａｄｅｒノードは直接にトランザクションキューに入れる。又は、ｆｏｌｌｏｗｅｒノードに送信されたトランザクションについて、ｆｏｌｌｏｗｅｒノードはトランザクションをｌｅａｄｅｒノードに転送し、その後、ｌｅａｄｅｒノードはｆｏｌｌｏｗｅｒノードから受信したトランザクションをトランザクションキューに入れる。
【０１０７】
Ｓ１０３において、ｌｅａｄｅｒノードは、トランザクションキューにおけるトランザクションがブロック生成要求を満たしているか否かをチェックする。
【０１０８】
Ｓ１０４において、ブロック生成要求を満たしている場合に、ｌｅａｄｅｒノードはトランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してｆｏｌｌｏｗｅｒノードにブロードキャストする。
【０１０９】
なお、ｌｅａｄｅｒノードはトランザクションキューがブロック生成要求を満たしているか否かをチェックし、例えば、トランザクションキューに記憶されているトランザクションの数又はトランザクションデータの量がブロック生成要求を満たしているか否かを検出してもよい。ブロック生成要求を満たしている場合、トランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してブロードキャストする。ブロック生成要求を満たしていない場合、ブロック生成時間に達するか否かをチェックし、当該ブロック生成時間に達すると、ｌｅａｄｅｒノードはトランザクションキューにおけるトランザクションを候補ブロックにパッケージし署名してブロードキャストする。
【０１１０】
Ｓ１０５において、ブロックチェーンネットワークにおけるコンセンサスノードから候補ブロックにおけるトランザクションリストを含めて候補ブロックまで検証する。
【０１１１】
Ｓ１０６において、コンセンサスノードは候補ブロックの検証結果を署名してブロードキャストする。
【０１１２】
なお、ｌｅａｄｅｒノード及びｆｏｌｌｏｗｅｒノードはコンセンサスノードとして、候補ブロックを検証し、検証過程に候補ブロックにおけるトランザクションリストについて正当性を検証し、トランザクションの正当又は不正をマークし、トランザクションを実行してトランザクション実行結果を生成し、正当なトランザクション実行結果をバッファリングする。
【０１１３】
Ｓ１０７において、ブロックチェーンネットワークにおいてコンセンサスノードは結果に対してＢＦＴ判断を行い、コンセンサスに達成した後に候補ブロック及び正当なトランザクションを保存する。
【０１１４】
ｌｅａｄｅｒノード及びｆｏｌｌｏｗｅｒノードは、前記ステップＳ１０６の検証結果及び実行結果のそれぞれに署名してブロードキャストする。その後、受信したノード署名結果をビザンチンフォールトトレランスアルゴリズム（Ｂｆｔ）でコンセンサスを実行し、ノード署名結果は検証結果及びトランザクション実行結果を含む。
【０１１５】
ｌｅａｄｅｒノード及びｆｏｌｌｏｗｅｒノードによるノード署名結果のコンセンサスに成功した後に、ノードは候補ブロックヘッダー部情報を保存し、候補ブロックにおける正当なトランザクションを保存し、候補ブロックにバッファリングされたトランザクション実行結果を保存する。なお、候補ブロックにおける正当なトランザクションを保存することは、ユーザーから送信されたトランザクションのオリジナルのデータを保存することを指し（即ち、ここでトランザクション実行結果を含まない）、トランザクション実行結果を保存することは、トランザクション実行結果状態を保存することを指す。
【０１１６】
なお、候補ブロックヘッダー部情報は、ブロックのデータフォーマットから言えば、１つ前のブロックのハッシュ値（ｈａｓｈ）、マークルツリーのルート、ステートのルート、レシートルート、ノードの署名、乱数値などを含む。
【０１１７】
図８に示すように、本願の実施例にかかるＲａｆｔデータ提出フローの概略図であり、図８におけるＬはｌｅａｄｅｒノードを表し、Ｆはｆｏｌｌｏｗｅｒノードを表し、主に、以下のプロセスを含む。
ステップ１において、クライアントはデータｖ＝３を提出し、ｌｅａｄｅｒノードに送信する。
ステップ２．１において、ｌｅａｄｅｒノードはデータｖ＝３をコピーし、ｆｏｌｌｏｗｅｒノードに送信する。
ステップ３．１において、ｆｏｌｌｏｗｅｒノードは、データｖ＝３の受信を確認し、ｌｅａｄｅｒノードに送信する。
ステップ３．２において、ｆｏｌｌｏｗｅｒノードは、データｖ＝３の受信を確認し、ｌｅａｄｅｒノードに送信する。
ステップ４．１において、ｌｅａｄｅｒノードは、データｖ＝３の受信を確認し、クライアントに送信する。
ステップ４．２において、ｌｅａｄｅｒノードはデータｖ＝３を提出し、ｆｏｌｌｏｗｅｒノードに送信する。
【０１１８】
上記のフローにおいて、Ｒａｆｔアルゴリズムのフォールトトレランス技術は、ｌｅａｄｅｒノードに基づいたものであり、ｆｏｌｌｏｗｅｒノードは、ｌｅａｄｅｒノードのデータを受信した後に、データをバッファリングし結果をｌｅａｄｅｒノードに返信し、ｌｅａｄｅｒノードはｆｏｌｌｏｗｅｒノードからの結果を受信し、フォールトトレランス判断を行い、同じ結果を受信したノードの割合が５０％よりも大きいと、データが成功したと見なし、次に、ｌｅａｄｅｒノードは、データ状態を保存することをｆｏｌｌｏｗｅｒノードに通知する。
【０１１９】
図９に示すように、本願の実施例にかかるＢｆｔ−Ｒａｆｔデータ提出フローの概略図であり、主に、以下のフローを含む。
クライアント１がトランザクション１を生成してリーダーノードに送信し、クライアント２がトランザクション２を生成してフォロワーノード１に送信してから、フォロワーノード１がトランザクション２をリーダーノードに送信し、リーダーノードはブロックを生成した後に、当該ブロックを３つのフォロワーノードにブロードキャストし、３つのフォロワーノードがブロードキャスト応答をブロックチェーンに送信し、リーダーノード及び３つのフォロワーノードがブロックを提出し、リーダーノードと３つのフォロワーノードとがコンセンサスを実行し、コンセンサスに成功した後に、リーダーノード及び３つのフォロワーノードはクライアント１に提出成功メッセージを送信し、リーダーノード及び３つのフォロワーノードはクライアント２に提出成功メッセージを送信する。
【０１２０】
ブロックチェーンにおいて、図８の実施例に示すフォールトトレランス技術はｌｅａｄｅｒノードが悪意のある状況に対処することができないため、本願において、ビザンチンフォールトトレランス技術を追加し、上記のｆｏｌｌｏｗｅｒノードは結果をブロードキャストし、このようにすれば、ブロックチェーンネットワークにおける全てのノードは他のノードの署名結果を受信し、各ノードは、ｌｅａｄｅｒノードの通知に依存しなくなり、受信した署名結果に応じて、データを保存に提出するか否かを判断する。
【０１２１】
本願の実施例において、上記のステップＳ１０１からステップＳ１０７は、ブロック並行検証技術をさらに使用することもでき、即ち、１つのブロック内に複数のトランザクションがあり、ブロック生成過程に、ブロック並行検証アルゴリズムを採用して、互いに依存していないブロックを並行に検証を実行する。
【０１２２】
本願の実施例にかかる前記案は、アライアンスチェーン又はプライベートチェーンにおけるブロック生成の速度及びトランザクション処理の性能を向上することができる。
【０１２３】
前記の各方法の実施例では、記述の簡素化のため、実施例を一連の動作の組み合わせとして表現したが、本願の実施例記載によれば、幾つかのステップは他の順で実施されたり、同時に実行されたりすることができるため、本願に記述された動作の順序に制限されないことが当業者にとって自明である。次に、明細書に記述された実施例は、好ましい実施例に過ぎず、係る動作及びモジュールは必ずしも本発明にとって必須であるわけではないことも業者にとって自明である。
【０１２４】
本願の実施例の上記の案を良く実施しやすいために、以下に上記の案を実施するための関連装置をさらに提供する。
【０１２５】
図１０に示すように、本願の実施例にかかるブロックチェーンにおける第１のノード８００であり、当該ブロックチェーンは第２のノードをさらに含み、第１のノードはリーダーノードであり、第２のノードはフォロワーノードであり、前記第１のノード８００は処理モジュール８０１及び送受信モジュール８０２を含み、
前記処理モジュールは、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージするために用いられ、
前記送受信モジュールは、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む第２のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第１のノード処理結果及び前記第２のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、その後、前記第１のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するために用いられる。
【０１２６】
本願の幾つかの実施例において、前記送受信モジュールが前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージする前に、前記処理モジュールは、さらに、前記トランザクションキューが予め設定されたブロック生成条件を満たしているか否かをチェックし、前記トランザクションキューが前記ブロック生成条件を満たしている場合、以下のステップ、即ち、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージするステップの実行をトリガーするために用いられる。
【０１２７】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューに記憶されているトランザクション情報の数が第１の閾値を超えたか否かをチェックし、前記トランザクション情報の数が前記第１の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記トランザクション情報の数が前記第１の閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【０１２８】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューに記憶されているデータの量が第２の閾値を超えたか否かをチェックし、前記データの量が前記第２の閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記データの量が前記第２の閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【０１２９】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記トランザクションキューの直前のブロック生成時間から現在の時間までの時間差がブロック生成時間閾値を超えたか否かをチェックし、前記時間差が前記ブロック生成時間閾値を超えた場合、前記トランザクションキューが前記ブロック生成条件を満たしていると特定し、前記時間差が前記ブロック生成時間閾値を超えていない場合、前記トランザクションキューが前記ブロック生成条件を満たしていないと特定するために用いられる。
【０１３０】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、少なくとも１つのクライアントから前記ブロックチェーンに送信されたトランザクション情報を受信し、又は、前記第１のノードが、前記第２のノードが少なくとも１つのクライアントから取得したトランザクション情報を受信するために用いられ、
前記処理モジュールは、さらに、前記少なくとも１つのクライアントのトランザクション情報を前記トランザクションキューに入れるために用いられる。
【０１３１】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記第１のトランザクション情報を前記候補ブロックにパッケージする際に、前記トランザクションキューにおける第２のトランザクション情報を候補ブロックにパッケージするために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第２のトランザクション情報を検証して第３の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第３のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第３の検証結果及び前記第３のトランザクション実行結果を含む第３のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第２のトランザクション情報を検証することで生成した第４の検証結果及び前記候補ブロックにおける第２のトランザクション情報を実行することで生成した第４のトランザクション実行結果を含む第４のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第３のノード処理結果及び前記第４のノード処理結果に応じて、前記候補ブロックに対してコンセンサスを実行し、その後、前記第１のノードが、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合に、前記第３のトランザクション実行結果を保存するために用いられる。
【０１３２】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存するために用いられる。
【０１３３】
以上の実施例による本願の実施例についての説明から分かるように、第１のノードがリーダーノードであり、第２のノードがフォロワーノードである場合に、第１のノードは第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、ブロックチェーンを介して候補ブロックをブロードキャストし、その後、第１のノードは候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成し、そして、第１のノードは、ブロックチェーンを介して、第１の検証結果及び第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストし、そして、第１のノードは、第２のノードがブロックチェーンを介してブロードキャストした第２のノード処理結果を受信し、第１のノードは第１のノード処理結果及び第２のノード処理結果に応じて、候補ブロックに対してコンセンサスを実行し、その後、第１のノードは、候補ブロックのコンセンサスに成功した場合に、候補ブロックを保存し、第１のトランザクション情報の実行に成功した場合に、第１のトランザクション実行結果を保存する。本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第１のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、その後、第１のノードが第１のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功すると、ブロックの保存を実行する処理を行うことができる。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【０１３４】
図１１に示すように、本願の実施例にかかるブロックチェーンにおける第２のノード９００であり、当該ブロックチェーンには、第１のノードがさらに含まれ、第１のノードはリーダーノードであり、第２のノードはフォロワーノードであり、前記第２のノード９００は処理モジュール９０１及び送受信モジュール９０２を含み、
前記送受信モジュールは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信するために用いられ、
前記処理モジュールは、前記候補ブロックから第１のトランザクション情報を取得するために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するために用いられる。
【０１３５】
本願の幾つかの実施例において、前記送受信モジュールは、前記ブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、前記第１のノードが前記ブロックチェーンを介してブロードキャストした、前記第１のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第１の検証結果、前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第１のトランザクション実行結果を含む第１のノード処理結果を受信し、
前記処理モジュールは、さらに、前記第１のノード処理結果及び前記第２のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、前記候補ブロックのコンセンサスに成功した場合に、以下のステップの実行をトリガーし、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するために用いられる。
【０１３６】
本願の幾つかの実施例において、前記送受信モジュールは、前記ブロックチェーンを介して第２のノード処理結果をブロードキャストした後に、前記第１のノードが前記候補ブロックのコンセンサスに成功した場合に送信した通知メッセージを受信し、
前記処理モジュールは、さらに、前記通知メッセージに応じて、以下のステップ、即ち、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するステップの実行をトリガーするために用いられる。
【０１３７】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第２のトランザクション情報を取得するために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第２のトランザクション情報を検証して第４の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第４のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、前記ブロックチェーンを介して、前記第４の検証結果及び前記第４のトランザクション実行結果を含む第４のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第２のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合に、前記第４のトランザクション実行結果を保存するために用いられる。
【０１３８】
上記本願の実施例に対する説明から分かるように、本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第２のノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、その後、第２のノードが第２のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【０１３９】
例示的に実施例において、図１０を参照し、本願の実施例にかかる他のブロックチェーンにおける第１のノード８００であり、当該ブロックチェーンは第２のノードをさらに含み、第１のノードはリーダーノードであり、第２のノードはフォロワーノードであり、前記第１のノード８００は処理モジュール８０１及び送受信モジュール８０２を含み、
前記処理モジュールは、少なくとも１つのクライアントがトランザクション情報を前記ブロックチェーンに送信したことに応答して、前記クライアントから送信されたトランザクション情報を前記第１のノードのトランザクションキューに入れるために用いられ、
前記処理モジュールは、さらに、前記トランザクションキューを満たしているか否か予め設定されたブロック生成条件をチェックするために用いられ、
前記送受信モジュールは、前記トランザクションキューが前記ブロック生成条件を満たしていることに応答して、前記第１のノードのトランザクションキューにおける第１のトランザクション情報を候補ブロックにパッケージし、前記候補ブロックに署名して前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第１のトランザクション情報を検証して第１の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第１のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、第１のノード処理結果に署名して前記ブロックチェーンを介して、前記第１の検証結果及び前記第１のトランザクション実行結果を含む第１のノード処理結果をブロードキャストするために用いられ、
前記送受信モジュールは、さらに、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノードが前記候補ブロックにおける第１のトランザクション情報を検証することで生成した第２の検証結果、及び前記候補ブロックにおける第１のトランザクション情報を実行することで生成した第２のトランザクション実行結果を含む、第２のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第１のノード処理結果及び前記第２のノード処理結果に応じて前記分散型コンセンサスアルゴリズムで前記候補ブロックに対してコンセンサスを実行し、その後、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第１のトランザクション実行結果を保存するために用いられる。
【０１４０】
本願の幾つかの実施例において、前記送受信モジュールは、さらに、前記第１のトランザクション情報を前記候補ブロックにパッケージする場合に、前記トランザクションキューにおける第２のトランザクション情報を前記候補ブロックにパッケージし、前記候補ブロックに署名して前記ブロックチェーンを介して前記候補ブロックをブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記候補ブロックにおける第２のトランザクション情報を検証して第３の検証結果を生成し、前記候補ブロックにおける第２のトランザクション情報を実行して第３のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、さらに、第３のノード処理結果に署名して前記ブロックチェーンを介して、前記第３の検証結果及び前記第３のトランザクション実行結果を含む前記第３のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、さらに、前記第２のノードが前記ブロックチェーンを介してブロードキャストした、前記第２のノード前記候補ブロックにおける第２のトランザクション情報を検証することで生成した第４の検証結果、及び前記候補ブロックにおける第２のトランザクション情報を実行することで生成した第４のトランザクション実行結果を含む第４のノード処理結果を受信するために用いられ、
前記処理モジュールは、さらに、前記第１のノードが前記第３のノード処理結果及び前記第４のノード処理結果に応じて前記候補ブロックに対してコンセンサスを実行し、その後、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックを保存し、前記第２のトランザクション情報の実行に成功した場合に、前記第３のトランザクション実行結果を保存するために用いられる。
【０１４１】
本願の幾つかの実施例において、前記処理モジュールは、さらに、前記候補ブロックのコンセンサスに成功した場合に、前記候補ブロックの直前のブロックのハッシュ値、マークルツリーのルート、ステートのルート、レシート根、ノードの署名、乱数値を含む前記候補ブロックのヘッダー情報を保存し、検証に成功した第１のトランザクション情報を保存するために用いられる。
【０１４２】
上記の本願の実施例に対する説明から分かるように、本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューにより処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、ブロックチェーンにおけるフォロワーノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストすることができ、当該候補ブロックをブロードキャストした後に、第１のノードは、以下の処理、即ち、トランザクション検証及びトランザクション実行を行い、その後、第１のノードが第１のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する処理を実行することができる。本願の実施例では、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【０１４３】
例示的な実施例において、図１１を参照し、本願の実施例にかかる他のブロックチェーンにおける第２のノード９００であって、当該ブロックチェーンには第１のノードをさらに含まれ、第１のノードはリーダーノードであり、第２のノードはフォロワーノードであり、前記第２のノード９００は処理モジュール９０１及び送受信モジュール９０２を含み、
前記送受信モジュールは、前記第１のノードが前記ブロックチェーンを介してブロードキャストした候補ブロックを受信し、前記候補ブロックから第１のトランザクション情報を取得するために用いられ、
前記処理モジュールは、前記候補ブロックにおける第１のトランザクション情報を検証して第２の検証結果を生成し、前記候補ブロックにおける第１のトランザクション情報を実行して第２のトランザクション実行結果を生成するために用いられ、
前記送受信モジュールは、第２のノード処理結果に署名して前記ブロックチェーンを介して、前記第２の検証結果及び前記第２のトランザクション実行結果を含む第２のノード処理結果をブロードキャストするために用いられ、
前記処理モジュールは、前記第１のトランザクション情報の検証に成功した場合に、前記候補ブロックを保存し、前記第１のトランザクション情報の実行に成功した場合に、前記第２のトランザクション実行結果を保存するために用いられる。
【０１４４】
上記の本願の実施例に対する説明から分かるように、本願の実施例における第１のノードがリーダーノードとされ、第１のノードは、トランザクションキューで処理すべきトランザクション情報をバッファリングし、トランザクションキューにおけるトランザクション情報を先に候補ブロックにパッケージして置き、このようにすれば、第２のノードがトランザクション検証及びトランザクション実行を行うことができるように、当該候補ブロックをブロードキャストでき、その後、第２のノードが第２のノード処理結果をブロードキャストすることができ、第１のノードがブロックチェーンにおける各ノードの処理結果に応じて候補ブロックのコンセンサスを実行し、コンセンサスに成功するとブロックの保存を実行する。本願の実施例では、、ブロックチェーンにおける全てのノードがトランザクション検証及びトランザクション実行を行うことができるように、ブロック生成の順序が変更される。従って、ブロック生成の速度及びトランザクション処理の性能が向上される。
【０１４５】
図１２は本願の実施例で提供されるサーバーの概略構成図であり、当該サーバーは、前記第１のノード側のブロック処理方法を実現するために、具体的に、前記のブロックチェーンにおける第１のノードであってもよいし、前記第２のノード側のブロック処理方法を実現するために、前記のブロックチェーンにおける第２のノードであってもよく、サーバー１１００は、異なる配置又は性能によって大きく相違する可能性があり、１つ又は複数の中央処理装置（ｃｅｎｔｒａｌｐｒｏｃｅｓｓｉｎｇｕｎｉｔｓ、ＣＰＵ）１１２２（例えば、１つ以上のプロセッサ）と、メモリ１１３２と、アプリケーションプログラム１１４２又はデータ１１４４を記憶する１つ又は複数の記憶媒体１１３０（例えば１つ又は複数の大容量記憶装置）とを含むことができる。なお、メモリ１１３２及び記憶媒体１１３０は、一時的記憶装置又は永続的記憶装置であり得る。記憶媒体１１３０に記憶されるプログラムは１つ以上のモジュール（図示せず）を含むことができ、各モジュールは、サーバーに対する一連のコマンド操作を含んでもよい。さらに、中央処理装置１１２２は、記憶媒体１１３０と通信し、サーバー１１００上で記憶媒体１１３０における一連のコマンド操作を実行するように配置できる。
【０１４６】
サーバー１１００は１つ又は複数の電源１１２６、１つ又は複数の有線又は無線ネットワークインタフェース１１５０、１つ又は複数の入出力インタフェース１１５８、及び／又は、例えば、ＷｉｎｄｏｗｓＳｅｒｖｅｒＴＭ、ＭａｃＯＳＸＴＭ、ＵｎｉｘＴＭ、ＬｉｎｕｘＴＭ、ＦｒｅｅＢＳＤＴＭなどの１つ又は複数のオペレーティングシステム１１４１を含んでもよい。
【０１４７】
上記の実施例における第１のノードによって実行されるブロック処理方法ステップは、当該図１２に示されたサーバー構成に基づくことができ、同様に、上記の実施例における第２のノードによって実行されるブロック処理方法ステップは図１２に示されたサーバー構成に基づくことができる。
【０１４８】
なお、上述した装置の実施例は単なる例示であり、別々の部分として説明したユニットは、物理的に分離されてもよく或いは分離されなくてもよく、ユニットとして表示される部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、１つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよいことに留意すべきである。モジュールの一部又は全部は、実施例の方案の目的を達成するために、実際のニーズに従って選択されてもよい。さらに、本願の実施例で提供される装置の実施例の添付図面において、モジュールの間の接続関係は、モジュールが互いに通信接続を有することを示し、これは、具体的には１つ以上の通信バス又は信号ケーブルとして実現されてもよい。当業者は、創造的取り組みなしに理解して実現し得る。
【０１４９】
上記の実施例の説明に基づいて、当業者は、本願の実施例が必要なユニバーサルハードウェアに加えてソフトウェアにより実現されてもよく、専用集積回路、専用ＣＰＵ、専用メモリ、専用コンポーネントなどを含む専用ハードウェアのみにより実現されてもよいことを明確に理解し得る。一般的に、コンピュータプログラムにより実行可能な如何なる機能は、対応するハードウェアを使用することにより容易に実現可能である。さらに、同じ機能を達成するために使用される具体的なハードウェア構成は様々な形式、例えば、アナログ回路、デジタル回路、専用回路などの形式であってもよい。ただし、本願の実施例について、ソフトウェアプログラムの実現がほとんどの場合によりよい実現方式である。このような理解に基づいて、本願の技術案又は従来の技術に貢献する部分は、ソフトウェア製品の形式で実質的に具現できる。このコンピュータソフトウェア製品は、読み取り可能記憶媒体、例えば、コンピュータのフロッピーディスク、ＵＳＢフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−ＯｎｌｙＭｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）、磁気ディスク又は光ディスクに記憶され、１台のコンピュータ機器（例えば、パーソナルコンピュータ、サーバー又はネットワークデバイス）に本願の各実施例による方法を実行させるためのいくつかのコマンドを含む。
【０１５０】
例示的な実施例において、さらに、コンピュータプログラム製品を提供し、当該コンピュータプログラム製品は、第１のノードで実行されると、上記の第１のノード側のブロック処理方法を実現するために用いられ、当該コンピュータプログラム製品は、第２のノードで実行されると、上記の第２のノード側のブロック処理方法を実現するために用いられる。
【０１５１】
このように、上記の実施例は、本願を限定するものではなく、ただ本願の技術案を説明するためのものに過ぎない。上記の実施例を参照して本願を詳細に説明したが、当業者は、依然として上記の実施例に記載の技術案を修正したり、その一部の技術的特徴を均等に置き換えたりすることが可能であり、これらの修正又は置き換えは、その対応する技術提案の本質を本願の各実施例の技術思想及び範囲から逸脱させないことが自明である。
【図１】
2022500742.tif 000005
【図２】
2022500742.tif 000006
【図３】
2022500742.tif 000007
【図４】
2022500742.tif 000008
【図５】
2022500742.tif 000009
【図６】
2022500742.tif 000010
【図７】
2022500742.tif 000011
【図８】
2022500742.tif 000012
【図９】
2022500742.tif 000013
【図１０】
2022500742.tif 000014
【図１１】
2022500742.tif 000015
【図１２】
2022500742.tif 000016
【国際調査報告】
2022500742.tif 000017
2022500742.tif 000018
2022500742.tif 000019
2022500742.tif 000020