(57)【要約】  データ処理方法、装置、コンピュータ機器、及び記憶媒体であって、当該方法は、第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出し、前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別し、選別された前記ノードに応じて、ノード保留ツリーを構築し、前記トランザクションレコードを、前記ノード保留ツリーの相応するリーフノードに記憶し、前記ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新し、前記ブロックヘッダは前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接し、前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除することを含む。当該方法は、ストレージリソースを節約することができる。
2021536085.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンノードによって実行される、データ処理方法であって、
第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出するステップと、
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップと、
選別された前記ノードに応じて、ノード保留ツリーを構築するステップと、
前記トランザクションレコードを、前記ノード保留ツリーにおける相応するリーフノードに記憶するステップと、
前記ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、前記ブロックのブロックヘッダが、前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接するステップと、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除するステップと
を含む方法。
【請求項２】
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップは、
前記ブロックに保留を必要とするトランザクションレコードを検出したことに応答して、前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップを実行するステップを含み、
前記方法は、
前記ブロックに保留を必要とするトランザクションレコードが存在しないことを検出したことに応答して、前記ブロックのブロックヘッダを直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記トランザクションレコードが勘定照合に使用されるトランザクションレコードであり、前記ブロックにおける、保留を必要とするトランザクションレコードを検出するステップは、
前記ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとを対比するステップと、
前記ブロックにおけるトランザクションレコードが前記勘定照合に成功しなかったセットに含まれていることに応答して、前記トランザクションレコードが保留を必要とするトランザクションレコードであると判定するステップと
を含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
勘定照合に成功しなかったセットは、勘定照合されていないセットを含み、
前記方法は、
第１の勘定照合装置から送信された勘定照合呼び出し要求を受信したことに応答して、スマートコントラクトを介して勘定照合すべき第１のトランザクションレコードを、前記勘定照合呼び出し要求に携帯されている第１のブロックファイルのブロックに記憶するステップと、
スマートコントラクトを介して、前記第１のトランザクションレコードに対応する勘定照合関連識別子を取得するステップと、
ブロックチェーンに確立された、勘定照合されていないセットから、前記勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検索するステップと、
前記第２のトランザクションレコードを検出しなかったことに応答して、前記第１のトランザクションレコードを、勘定照合されていないセットに追加するステップ
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記勘定照合に成功しなかったセットは、勘定照合エラーセットをさらに含み、前記方法は、
前記第２のトランザクションレコードを検出したことに応答して、前記勘定照合されていないセットから、前記第２のトランザクションレコードを除去するステップと、 
前記第１のトランザクションレコードと、前記第２のトランザクションレコードとを対比するステップと、
一致しないことに応答して、前記第１のトランザクションレコード及び前記第２のトランザクションレコードを、勘定照合エラーセットに追加するステップ
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップは、
前記ブロックのハッシュツリーにおいて、前記トランザクションレコードに相応するリーフノードを特定するステップと、 
前記ハッシュツリーから、前記リーフノードの第１の祖先ノード及び兄弟リーフノードを選別するステップと、 
前記リーフノードの非兄弟リーフノードに対して、前記非兄弟リーフノードの、ルートノードに最も近い第２の祖先ノードを選別するステップと
を含み、
前記選別された前記ノードに応じてノード保留ツリーを構築するステップは、
前記リーフノード、前記第１の祖先ノード、前記兄弟リーフノード及び前記第２の祖先ノードに応じて、ノード保留ツリーを構築するステップ
を含むことを特徴とする請求項１〜５の何れか一項に記載の方法。
【請求項７】
前記ハッシュツリーは２層ハッシュツリーであり、前記２層ハッシュツリーのルートノードのハッシュ値は、リーフノードのハッシュ値のそれぞれを直列に連結した後にハッシュ演算が行われて得られ、選別された前記ノードは前記ハッシュツリーにおける全てのノードであることを特徴とする請求項１〜６の何れか一項に記載の方法。
【請求項８】
前記第２のブロックファイルの第２の記憶位置を取得するステップと、
前記ブロックの位置インデックスを、前記第１のブロックファイルの第１の記憶位置を指向するものから前記第２の記憶位置を指向するものに修正するステップと
をさらに含むことを特徴とする請求項１〜７のいずれか一項に記載の方法。
【請求項９】
ブロックチェーンノードに使用される、データ処理装置であって、
第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出し、前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別し、選別された前記ノードに応じてノード保留ツリーを構築するためのノード保留モジュールと、
前記トランザクションレコードを、前記ノード保留ツリーにおける相応するリーフノードに記憶するためのトランザクション記憶モジュールと、
前記ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新するためのものであって、前記ブロックのブロックヘッダは前記第２のブロックファイルにおいてその直前のブロックのブロックヘッダに隣接するブロック更新モジュールと、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除するための削除モジュールと
を含むことを特徴とする装置。
【請求項１０】
前記ノード保留モジュールは、前記ブロックにおける保留を必要とするトランザクションレコードを検出したことに応答して、前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップを実行するために用いられ、
前記ノード保留モジュールは、さらに、前記ブロックに保留を必要とするトランザクションレコードが存在しないことを検出したことに応答して、前記ブロックのブロックヘッダを直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新することを前記ブロック更新モジュールに通知することをために用いられることを特徴とする請求項９に記載の装置。
【請求項１１】
前記トランザクションレコードは、勘定照合に使用されるトランザクションレコードであり、前記ノード保留モジュールは、さらに、前記ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとを対比し、前記ブロックにおけるトランザクションレコードが前記勘定照合に成功しなかったセットに含まれていることに応答して、前記トランザクションレコードが、保留すべきトランザクションレコードであると判定するために用いられることを特徴とする請求項９又は１０に記載の装置。
【請求項１２】
勘定照合に成功しなかったセットは、勘定照合されていないセットを含み、前記装置は、
第１の勘定照合装置から送信された勘定照合呼び出し要求を受信したことに応答して、スマートコントラクトを介して、勘定照合すべき、前記勘定照合呼び出し要求に携帯されている第１のトランザクションレコードを、第１のブロックファイルのブロックに記憶し、スマートコントラクトを介して前記第１のトランザクションレコードに対応する勘定照合関連識別子を取得し、ブロックチェーンにおいて確立された勘定照合されていないセットから、前記勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検索し、前記第２のトランザクションレコードを検出しなかったことに応答して、前記第１のトランザクションレコードを、勘定照合されていないセットに追加するための、リアルタイム勘定照合モジュールをさらに含むことを特徴とする請求項１１に記載の装置。
【請求項１３】
前記勘定照合に成功しなかったセットには、勘定照合エラーセットがさらに含まれ、前記リアルタイム勘定照合モジュール、さらに、前記第２のトランザクションレコードを検索したことに応答して、前記勘定照合されていないセットから前記第２のトランザクションレコードを除去し、前記第１のトランザクションレコードと、前記第２のトランザクションレコードとを対照し、対比不一致に応答して、前記第１のトランザクションレコード及び前記第２のトランザクションレコードを勘定照合エラーセットに追加するために用いられることを特徴とする請求項１２に記載の装置。
【請求項１４】
前記ノード保留モジュール、さらに、前記ブロックのハッシュツリーにおいて、前記トランザクションレコードに相応するリーフノードを特定し、前記ハッシュツリーから、前記リーフノードの第１の祖先ノード及び兄弟リーフノードを選別し、前記リーフノードの非兄弟リーフノードに対して、前記非兄弟リーフノードの、ルートノードに最も近い第２の祖先ノードを選別し、前記リーフノード、前記第１の祖先ノード、前記兄弟リーフノード及び前記第２の祖先ノードに応じて、ノード保留ツリーを構築するために用いられることを特徴とする請求項９〜１３の何れか一項に記載の装置。
【請求項１５】
前記ハッシュツリーは２層ハッシュツリーであり、前記２層ハッシュツリーのルートノードのハッシュ値は、それぞれのリーフノードのハッシュ値を直列に連結した後にハッシュ演算が行われて得られ、選別された前記ノードは前記ハッシュツリーにおける全てのノードであることを特徴とする請求項９〜１４の何れか一項に記載の装置。
【請求項１６】
前記ブロック更新モジュール、さらに、第２のブロックファイルの第２の記憶位置を取得し、ブロックの位置インデックスを、第１のブロックファイルの第１の記憶位置を指向するものから第２の記憶位置を指向するものに修正するために用いられることを特徴とする請求項１５に記載の装置。
【請求項１７】
コンピュータ機器であって、メモリ及びプロセッサを含み、前記メモリにコンピュータプログラムを記憶しており、前記コンピュータプログラムが前記プロセッサによって実行される場合に、請求項１〜８のいずれか一項に記載の方法のステップを前記プロセッサに実行させることを特徴とするコンピュータ機器。
【請求項１８】
コンピュータプログラムであって、前記コンピュータプログラムがプロセッサによって実行されると、請求項１〜８のいずれか一項に記載の方法のステップを前記プロセッサに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１９年０１月２３日に中国専利局に提出した、出願番号が２０１９１００６３３２６.１であって、発明の名称が「データ処理方法、装置、コンピュータ機器、及び記憶媒体」である中国特許出願の優先権を主張し、本出願にその全ての内容を援用する。
【０００２】
本出願は、コンピュータ技術の分野に関し、特に、データ処理方法、装置、コンピュータ機器、及び記憶媒体に関する。
【背景技術】
【０００３】
科学技術の急速な発展に伴い、様々な技術が飛躍的に進歩しており、大量の先進的な技術が絶えずに現れている。ブロックチェーン技術は、当面非常に重要な技術に該当し、非常に多くのシナリオに適用される。
【０００４】
従来の方法では、ブロックチェーンは、主に、記帳に使用され、即ち、トランザクションレコードを記憶するために用いられる。トランザクションレコードは、ブロックチェーンに記憶されると、削除や改ざんすることができず、記憶されたトランザクションレコードの真実有効性が保証される。ただし、場合によっては、ブロックチェーンにおける全てのトランザクションレコードを常に保留する必要はなく、一部のトランザクションレコードのみを保留する必要があり、例えば、勘定照合が完了したトランザクションレコードを保留しなくなり、勘定照合されていないトランザクションレコードのみを保留すればよい。ただし、ブロックチェーンにおけるデータを削除したり改ざんしたりすることができないという特性に基づき、従来の方法では、保留する必要のないトランザクションレコードを削除できないため、これらの不要なデータが大量のスペースを占有し、多くのストレージリソースが浪費されてしまう。
【発明の概要】
【課題を解決するための手段】
【０００５】
そこで、本出願は、データ処理方法、装置、コンピュータ機器、及び記憶媒体を提供し、ブロックチェーンにおけるストレージリソースを節約することができる。
【０００６】
ブロックチェーンノードによって実行されるデータ処理方法であって、
第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける、保留を必要とするトランザクションレコードを検出し、
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別し、
選別された前記ノードに応じて、ノード保留ツリーを構築し、
前記トランザクションレコードを、前記ノード保留ツリーにおける相応するリーフノードに記憶し、
前記ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、前記ブロックのブロックヘッダは、前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接し、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除することを含む。
【０００７】
ブロックチェーンノードに使用される、データ処理装置であって、
第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出し、前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別し、選別された前記ノードに応じてノード保留ツリーを構築するためのノード保留モジュールと、
前記トランザクションレコードを、前記ノード保留ツリーにおける相応するリーフノードに記憶するためのトランザクション記憶モジュールと、
前記ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新するためのブロック更新モジュールであって、前記ブロックのブロックヘッダは、前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接するブロック更新モジュールと、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除するための削除モジュールとを含む。
【０００８】
コンピュータ機器であって、メモリ及びプロセッサを含み、前記メモリにコンピュータプログラムを記憶しており、前記コンピュータプログラムが前記プロセッサによって実行されると、
第１のブロックファイルにおけるブロックのそれぞれに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出するステップと、
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選別するステップと、
選別された前記ノードに応じて、ノード保留ツリーを構築し、
前記トランザクションレコードを、前記ノード保留ツリーにおける相応するリーフノードに記憶するステップと、
前記ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、前記ブロックのブロックヘッダは、前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接するステップと、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除するステップとを前記プロセッサ実行させる。
【０００９】
コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体にコンピュータプログラムを記憶しており、前記コンピュータプログラムがプロセッサによって実行される場合に、
第１のブロックファイルにおける各ブロックに対して、前記ブロックにおける保留を必要とするトランザクションレコードを検出するステップと、
前記ブロックのハッシュツリーから、前記トランザクションレコードが前記ブロックに属することを証明するためのノードを選択するステップと、
選択された前記ノードに応じて、ノード保留ツリーを構築し、
前記トランザクションレコードを、前記ノード保留ツリーの相応するリーフノードに記憶するステップと、
前記ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、前記ブロックのブロックヘッダは、前記第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接するステップと、
前記ブロックのそれぞれに対する更新処理が完了した後に、前記第１のブロックファイルを削除するステップとを前記プロセッサ実行させる。
【００１０】
上記のデータ処理方法、装置、コンピュータ機器、及び記憶媒体によれば、第１のブロックファイルにおける各ブロックに対して、ブロックにおける保留を必要とするトランザクションレコードを検出し、当該ブロックのハッシュツリーから、当該保留を必要とするトランザクションレコードが当該ブロックに属することを証明するためのノードを選別し、選別されたノードに応じて、ノード保留ツリーを構築し、トランザクションレコードをノード保留ツリーの相応するリーフノードに記憶する。ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、ブロックヘッダは、第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接する。第２のブロックファイルにおいて、ブロックヘッダが変化せず且つブロックヘッダが依然として順に隣接するため、ブロックチェーンにおいてハッシュ値によりヘッドツーテールに接続される特性を維持する。このように、ノード保留ツリーにおけるリーフノードに保存されているトランザクションレコード、及びノード保留ツリーにおけるノードによれば、当該トランザクションレコードが対応する元のブロックに属することを証明することができ、依然としてオリジナルハッシュツリーがデータの真実性をチェックする機能を保留することに相当し、第２のブロックファイルに保留されているトランザクションレコードは、依然として、偽造したり改ざんしたりすることができない。ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除する。第２のブロックファイルに元のブロックにおける保留を必要とするトランザクションレコードが記憶されていないが、保留を必要とするトランザクションレコード、及び当該トランザクションレコードの真実性をチェックするためのノード保留ツリーのみを保存するので、第１のブロックファイルに比べてストレージリソースが大幅に節約された。
【図面の簡単な説明】
【００１１】
【図１】一実施例におけるデータ処理方法の適用シナリオの図である。
【図２】一実施例におけるデータ処理方法の概略フローチャートである。
【図３】一実施例におけるノード保留ツリーを構築する原理の概略図である。
【図４】一実施例における勘定照合ステップの概略フローチャートである。
【図５】別の実施例におけるデータ処理方法の概略フローチャートである。
【図６】一実施例におけるデータ処理装置のブロック図である。
【図７】別の実施例におけるデータ処理装置のブロック図である。
【図８】一実施例におけるコンピュータ機器の内部構造の概略図である。
【発明を実施するための形態】
【００１２】
本出願の目的、技術案、及び利点をより明確にするために、以下は、添付の図面及び実施例を参照して、本出願の実施形態についてより詳細に説明する。ここで説明された具体的な実施例は、本出願を解釈するもので、本出願を限定するものではないことを理解されたい。
【００１３】
図１は、一実施例におけるデータ処理方法の適用シナリオの図である。図１を参照して、当該適用シナリオには、ネットワークを介して接続される第１の勘定照合装置１１０、第２の勘定照合装置１２０及びブロックチェーンノード１３０が含まれる。ブロックチェーンノード１３０は、ブロックチェーンにおけるブロックを格納するために用いられる。ブロックチェーンノード１３０は、１つ又は複数のサーバーによって構成される。複数のブロックチェーンノード１３０はブロックチェーンプラットフォームを構成する。ブロックチェーンプラットフォームは、プライベートブロックチェーンプラットフォームであってもよいし、オープンのブロックチェーンプラットフォームであってもよい。ブロックチェーンプラットフォームはクラウドブロックチェーンプラットフォームであってもよい。クラウドブロックチェーンプラットフォームはクラウドを基に構築され、ユーザーは、オープンのクラウドプラットフォーム上で自分に必要なインフラストラクチャ及びブロックチェーンサービスのプラットフォームを快速に構築することができる。
【００１４】
第１の勘定照合装置１１０及び第２の勘定照合装置１２０は、勘定照合の両方が勘定照合を実現するためのデバイスである。第１の勘定照合装置１１０及び第２の勘定照合装置１２０は、端末やサーバーであってもよい。端末はインテリジェントテレビ、デスクトップコンピュータ、又はモバイル端末であってもよく、モバイル端末は、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、携帯情報端末、及びウェアラブルデバイスのうちの少なくとも１つを含んでもよい。サーバーは、独立したサーバー又は複数の物理サーバーからなるサーバー群れによって実現されてもよい。
【００１５】
第１の勘定照合装置１１０及び第２の勘定照合装置１２０は、勘定照合を必要とするトランザクションレコードを、ブロックチェーンノード１３０におけるブロックチェーンに記憶することができる。ブロックチェーンにおける各ブロックは第１のブロックファイルに記憶される。ブロックチェーンノード１３０は、第１のブロックファイルにおけるブロックのそれぞれに対して、当該ブロックにおける保留を必要とするトランザクションレコードを検出し、当該ブロックのハッシュツリーから、当該トランザクションレコードが当該ブロックに属することを証明するためのノードを選別し、選別された当該ノードに応じてノード保留ツリーを構築し、当該トランザクションレコードを当該ノード保留ツリーにおける相応するリーフノードに記憶し、当該ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新し、当該ブロックのブロックヘッダは当該第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接し、当該ブロックのそれぞれに対する更新処理が完了した後に、当該第１のブロックファイルを削除することができる。第２のブロックファイルには、各ブロックが更新された保留を必要とするトランザクションレコードを記憶するが、保留を必要としないトランザクションレコードを除去するこれにより、ストレージスペースが節約される。また、第２のブロックファイルにおける各ブロックのブロックヘッダは、引き続き、第１のブロックファイルにおける順序に従って隣接し、つまり、依然としてブロックチェーンでハッシュ値によりヘッドツーテールに接続される特性を維持し、そうすると、第２のブロックファイルに保留されているトランザクションレコードは、偽造したり改ざんしたりすることができない。
【００１６】
なお、図１は、本出願におけるデータ処理方法の１つの適用シナリオである。本出願におけるデータ処理方法は、図１の勘定照合シナリオにおけるトランザクションレコードを適切にクリアすることに限定されず、他のシナリオにおいて記憶されたトランザクションレコードをクリアすることもできる。
【００１７】
図２は一実施例におけるデータ処理方法の概略フローチャートである。本実施例では、主に、当該データ処理方法を図１におけるブロックチェーンノード１３０に適用する例を挙げて説明する。図２を参照し、当該方法は、具体的に、以下のステップを含む。
【００１８】
Ｓ２０２において、第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックにおける保留を必要とするトランザクションレコードを検出する。
【００１９】
なお、保留を必要とするトランザクションレコードは、クリアを必要としないトランザクションレコードである。第１のブロックファイルは、ブロックチェーンノードにおける元のブロックチェーンに記憶されるファイルである。第１のブロックファイルには、ブロックチェーンを構成する複数のブロックを含む。各ブロックには一つ又は複数のトランザクションレコードを含んでもよい。保留を必要とするトランザクションレコードは一つ又は複数であってもよい。
【００２０】
一実施例において、トランザクションレコードは勘定照合に使用されるトランザクションレコードであってもよい。他の実施例において、トランザクションレコードは、単純にバックアップを記憶するためのトランザクションレコードであってもよい。トランザクションレコードは、他の使用シナリオで使用を必要とするトランザクションレコードであり得ることを理解されたい。それを限定しない。
【００２１】
一実施例において、第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックチェーンノードは、当該ブロック内で直接指定された、保留を必要とするトランザクションレコードを検出してもよい。
【００２２】
一実施例において、ブロックチェーンノードは、各ブロックにおけるトランザクションレコードを分析し、その中から保留を必要とするトランザクションレコードを特定することもできる。好ましく、ブロックチェーンノードはブロックにおける各トランザクションレコードの状態を取得し、有効状態にあるトランザクションレコードを、保留を必要とするトランザクションレコードとして特定してもよい。ブロックチェーンノードは、ブロックにおける勘定照合に成功しなかったセットにあるトランザクションレコードを選別して、保留を必要とするトランザクションレコードを取得してもよい。
【００２３】
ブロックチェーンノードは第１のブロックファイル内の最初のブロックから開始し、ブロックごとにステップＳ２０２〜Ｓ２１０を実行することができることが理解されるべきである。ブロックチェーンノードは、第１のブロックファイルにおける各ブロックに対してステップＳ２０２〜Ｓ２１０を並行して実行することもできる。ここで限定しない。
【００２４】
なお、ブロックチェーンノードは、ブロックから保留を必要とするトランザクションレコードの存在を検出したか、保留を必要とするトランザクションレコードが存在しないことを検出し得る。従って、ブロックにおける保留を必要とするトランザクションレコードを検出したことに応答して、ステップＳ２０４〜Ｓ２１０を実行し、ブロックに保留を必要とするトランザクションレコードが存在しないことを検出したことに応答して、当該ブロックのブロックヘッダをその直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新する。例えば、保留を必要とするトランザクションレコードが存在しないブロックに対して、ブロックチェーンノードは、第２のブロックファイルにおいてその直前のブロックのブロックヘッダを特定し、第２のブロックファイルにおいて当該直前のブロックのブロックヘッダの後に当該ブロックを記憶するブロックヘッダを更新することができる。即ち、保留を必要とするトランザクションレコードが存在しないブロックに対して、第２のブロックファイルにおいて、トランザクションレコードを保留する必要がなく、ブロックヘッダのみを保留することができる。
【００２５】
Ｓ２０４において、ブロックのハッシュツリーから、保留を必要とするトランザクションレコードがブロックに属することを証明するためのノードを選別する。
【００２６】
なお、ブロックのハッシュツリーは、当該ブロックにおける各トランザクションレコードに応じて生成されたハッシュツリーである。ハッシュツリーのリーフノードはブロックにおける各トランザクションレコードのハッシュ値と１対１で対応する。ハッシュツリーのルートノードのハッシュ値は、各リーフノードのハッシュ値により算出されたものである。ハッシュツリーのルートノードのハッシュ値は当該ブロックに一意に対応する。
【００２７】
保留を必要とするトランザクションレコードがブロックに属することを証明するためのノードとは、当該保留を必要とするトランザクションレコードに対応するリーフノードのハッシュ値からルートノードのハッシュ値を算出する際に必要なハッシュ値に対応するノードを指す。当該保留を必要とするトランザクションレコードに対応するリーフノードのハッシュ値からルートノードのハッシュ値を算出するため、選別されたノードは当該保留を必要とするトランザクションレコードに対応するリーフノード及びルートノードを含むことが理解すべきである。
【００２８】
一実施例において、ハッシュツリーは２層ハッシュツリーであってもよい。２層ハッシュツリーとは、ルートノード及びリーフノードを含む２階層のハッシュツリーを指す。２層ハッシュツリーのルートノードのハッシュ値は、各リーフノードのハッシュ値を直列に結合した後にハッシュ演算を行うことで得られる。ハッシュツリーが２層ハッシュツリーである場合に、選別された、トランザクションレコードがブロックに属することを証明するためのノードは、ハッシュツリーの全てのノードであることが理解されるべきである。
【００２９】
別の実施例において、ハッシュツリーは多層ハッシュツリーであってもよい。多層ハッシュツリーは、２層よりも多い階層を有するハッシュツリーを指す。この場合、前記トランザクションレコードが前記ブロックに属することを証明するためのノードは多層ハッシュツリーの一部のノードに過ぎない。一実施例において、多層ハッシュツリーはマークルツリー であってもよい。なお、マークルツリー (Ｍｅｒｋｌｅ Ｔｒｅｅ)は、多階層の木状のデータ構造である。マークルツリーにおけるリーフノードのそれぞれは、各トランザクションレコードのハッシュ値をラベルとする。一方、リーフノードは、そのサブ子ノードのラベルを直列に連結した後にハッシュ演算を行うことで得られたハッシュ値をラベルとする。なお、マークルツリーのルートノードは、この階層における当該ルートノードに最も近いノードのラベルを直列に連結した後にハッシュ演算を行うことで得られたハッシュ値をラベルとすることが理解されるべきである。
【００３０】
なお、保留を必要とするトランザクションレコードは複数がある場合、保留を必要とするトランザクションレコードごとに、ブロックのハッシュツリーから、当該保留を必要とするトランザクションレコードがこのブロックに属することを証明するためのノードを選別する。なお、保留を必要とする複数のトランザクションレコードに対して選別されたノードは、重複する可能性があることが理解されるべきである。
【００３１】
Ｓ２０６において、選別されたノードに応じて、ノード保留ツリーを構築する。
【００３２】
選別されたノードは、オリジナルハッシュツリーにおける、保留を必要とするノードである。ノード保留ツリーは、選別された、保留を必要とするノードに応じて再構築されたハッシュツリーである。
【００３３】
保留を必要とするトランザクションレコードは１つがしかない場合、当該トランザクションレコードに対して選別されたノードのみに応じてノード保留ツリーを構築することができる。保留を必要とするトランザクションレコードは複数がある場合、保留を必要とする複数のトランザクションレコードに対して選別されたノードをまとめて重複排除し、そして、重複排除されたノードに応じてノード保留ツリーを再構築することができる。なお、構築されたノード保留ツリーには、選別された各ノードがオリジナルハッシュツリーに位置している階層関係が保留されている。
【００３４】
理解されるように、図３を結合しながらノード保留ツリーについて例を挙げて説明する。図３を参照し、ｎ−１番目のブロックのブロックヘッダには、その直前のブロックのハッシュ値及びｎ−１番目のブロックの自ブロックのルートハッシュが含まれる。図３におけるルートハッシュは、マークルツリーのルートノードを指し、ｎ番目のブロックのブロックヘッダには、ｎ−１番目のブロックのハッシュ値及びｎ番目のブロックの自ブロックのルートハッシュが含まれ、ｎ＋１番目のブロックのブロックヘッダにはｎ番目のブロックのハッシュ値及びｎ＋１番目のブロックの自ブロックのルートハッシュが含まれる。ｎ番目のブロックを例にして、当該ｎ番目のブロックには４つのトランザクションレコードＴｘ(１)〜Ｔｘ(４)が含まれるとして、Ｔｘ(１)〜Ｔｘ(４)のそれぞれに対してハッシュ演算を行って、相応するハッシュ値Ｈ(１)〜Ｈ(４)をそれぞれ取得する。そうすると、これらの４つのトランザクションレコードによれば、リーフノードＨ(１)〜Ｈ(４)、Ｈ(１＋２)、Ｈ(３＋４)、及びルートノードを含むハッシュツリーを生成することができる。なお、Ｈ(１＋２)は、Ｈ(１)及びＨ(２)の親ノードであり、その対応するハッシュ値が、Ｈ(１)及びＨ(２)を直列に連結した後にハッシュ演算が行われて得られる。Ｈ(３＋４)は、Ｈ(３)及びＨ(４)の親ノードであり、その対応するハッシュ値がＨ(３)及びＨ(４) を直列に連結した後にハッシュ演算が行われて得られる。ルートノードは、Ｈ(１＋２)及びＨ(３＋４)の親ノードであり、その対応するハッシュ値がＨ(１＋２)及びＨ(３＋４) を直列に結合した後にハッシュ運算が行われて得られる。
【００３５】
ｎ番目のブロックについて、トランザクションレコードＴｘ(３)が、保留を必要とするトランザクションレコードであり、残りのトランザクションレコードが、保留を必要としないトランザクションレコードであることが検出されたとして、Ｔｘ(３)が当該ブロックに属することを証明するためのノードを選別してもよい。図３に示すように、選択枠で選別されたノードは、ルートノードに加え、選別を必要とするノードであり、即ち、ルートノードに加えて、ノードＨ(１＋２)、Ｈ(３＋４)、Ｈ(３)及びＨ(４)をさらに選出してノード保留ツリーを構築する必要がある。また、例えば、トランザクションレコードＴｘ(２)及びＴｘ(３)が、保留を必要とするトランザクションレコードであることが検出されたとして、Ｔｘ(２)及びＴｘ(３)それぞれが当該ブロックに属することを証明するためのノードを選別してもよい。なお、Ｔｘ(２)に対して選別されたノードは、必ずＨ(１＋２)及びＨ(３＋４)を含み、Ｔｘ(２)及びＴｘ(３)に対して選別されたノードをまとめ重複排除し、重複排除されたことは、ハッシュツリー全体における全てのノードを選別してノード保留ツリーを構築することに相当する。その後、Ｔｘ(２)及びＴｘ(３)のみを、それぞれの相応するリーフノードに記憶することが理解されるべきである。
【００３６】
Ｓ２０８において、保留を必要とするトランザクションレコードを、ノード保留ツリーにおける相応するリーフノードに記憶する。
【００３７】
好ましく、ブロックチェーンノードは、保留を必要とするトランザクションレコードをノード保留ツリーにおける相応するリーフノードに対応するデータブロックに記憶してもよい。
【００３８】
同図３を例として、ブロックチェーンノードは、ノード保留ツリーにおいて、トランザクションレコードＴｘ(３)を、相応するリーフノードＨ(３)に対応するデータブロックに記憶してもよい。
【００３９】
Ｓ２１０において、ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新し、ブロックヘッダは、第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接する。
【００４０】
第２のブロックファイルは、第１のブロックファイルと異なり、ブロックチェーンノードにおいて新規に構築されたブロックファイルであることが理解されるべきである。
【００４１】
好ましく、ブロックチェーンノードは、ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとに対してシーケンス化処理を行い、ブロックのブロックヘッダ、及びトランザクションレコードが記憶されたノード保留ツリーを、記憶可能な形式に変換することができる。ブロックチェーンノードは、第２のブロックファイルにおいて、当該ブロックの直前のブロックのブロックヘッダを特定することができる。シーケンス化された当該ブロックのブロックヘッダを、直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新し、第２のブロックファイルにおいて、シーケンス化された、保留を必要とするトランザクションレコードが記憶されたノード保留ツリーと、当該ブロックのブロックヘッダとを関連付けて記憶する。
【００４２】
一実施例において、当該方法は、第２のブロックファイルの第２の記憶位置を取得し、前記ブロックの位置インデックスを、前記第１のブロックファイルの第１の記憶位置を指向するものから、前記第２の記憶位置を指向するものに修正することをさらに含む。
【００４３】
なお、ブロックの位置インデックスとは、当該ブロックの記憶位置を検索するためのインデックスを指す。
【００４４】
ブロックの位置インデックスは、初期に第１のブロックファイルの第１の記憶位置を指向し、ブロックチェーンノードはブロックをステップＳ２０４〜２１０に従って第２のブロックファイルに更新した後に、当該ブロックの位置インデックスを、第２のブロックの第２の記憶位置を指向するものに修正することができる。そうすると、その後、当該第２の記憶位置を指向する位置インデックスに従って、第２のブロックファイルから当該ブロックを検索することができることが理解されるべきである。
【００４５】
なお、ブロックチェーンノード同士にはコンセンサスメカニズムがあるため、コンセンサスに達成した後、ブロックチェーンノードのそれぞれは、ブロックのブロックヘッダとトランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新する。
【００４６】
Ｓ２１２において、すべてのブロックに対する更新処理が完了した後に、第１のブロックファイルを削除する。
【００４７】
第１のブロックファイルにおける保留を必要とするトランザクションレコードが存在するブロックに対して、ステップＳ２０４〜Ｓ２１０を実行することで、当該ブロックのブロックヘッダをその直前のブロックのブロックヘッダに隣接して、保留を必要とするトランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新することができることが理解されるべきである。保留を必要とするトランザクションレコードが存在していないブロックに対して、第２のブロックファイルにおいて当該直前のブロックのブロックヘッダの後に当該ブロックのブロックヘッダを更新し記憶することができる。第２のブロックファイルに記憶されている各ブロックのコンテンツは、当該ブロックが更新処理されたコンテンツに相当する。すると、第１のブロックファイルにおけるブロックのすべてに対して更新処理が完了すると、更新されたブロックを含む第２のブロックファイルを得ることができ、そして、第１のブロックファイルを削除することができる。
【００４８】
なお、ブロックチェーンノード同士にコンセンサスメカニズムがあるため、コンセンサスに達成した後、それぞれのブロックチェーンノードは第１のブロックファイルを削除する。
【００４９】
上記の実施例において、ブロックヘッダが変化せず且つ依然として順に隣接しているため、ブロックチェーンでハッシュ値による首尾に接続される特性が維持される。このように、ノード保留ツリーにおけるリーフノードに保存されているトランザクションレコード、及びノード保留ツリーにおけるノードによれば、当該トランザクションレコードが対応する元のブロックに属することを証明することができ、オリジナルハッシュツリーによるデータの真実性への検証機能が依然として保留されることに相当し、第２のブロックファイルに保留されているトランザクションレコードは、相変わらず偽造したり改ざんしたりされることができない。ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除する。第２のブロックファイルには、元のブロックにおける保留を必要とするトランザクションレコードが記憶されず、保留を必要とするトランザクションレコード及び当該トランザクションレコードの真実性を検証するためのノード保留ツリーのみが保存されているので、第１のブロックファイルに比べてストレージリソースが大幅に節約される。
【００５０】
一実施例において、トランザクションレコードは、勘定照合に使用されるトランザクションレコードである。ステップＳ２０２は、第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとを対比し、ブロックにおけるトランザクションレコードが勘定照合に成功しなかったセットに含まれることに応答して、トランザクションレコードが保留を必要とするトランザクションレコードであると判定することを含む。
【００５１】
なお、勘定照合に成功しなかったセットは、勘定照合に成功しなかった各トランザクションレコードからなるセットである。
【００５２】
一実施例において、勘定照合に成功しなかったセットは、勘定照合されていないトランザクションレコードと、勘定照合に失敗したトランザクションレコードとの両方を含むセットであってもよい。
【００５３】
一実施例において、勘定照合に成功しなかったセットは、勘定照合されていないセット又は勘定照合エラーセットを含んでもよい。
【００５４】
一実施例において、勘定照合に成功しなかったセットは、勘定照合されていないセット及び勘定照合エラーセットの二つのサブセットを含んでもよい。
【００５５】
なお、勘定照合されていないセットは、未だ勘定照合処理が行われていないトランザクションレコードからなるセットである。勘定照合エラーセットは、勘定照合が一致していない(即ち、勘定照合にエラーが発生した)トランザクションレコードからなるセットである。
【００５６】
好ましく、ブロックチェーンノードは、ブロックにおけるトランザクションレコードのそれぞれを、勘定照合に成功しなかったセットにおけるトランザクションレコードと対比して、勘定照合に成功しなかったセットに当該ブロックにおけるトランザクションレコードが含まれているか否かを判断してもよい。ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとが一致していることに応答する場合、当該トランザクションレコードが勘定照合に成功しなかったセットに含まれることを示すので、当該ブロックにおける勘定照合に成功しなかったセットに含まれるトランザクションレコードが、保留を必要とするトランザクションレコードであると判定することができる。ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとが一致していないことに応答する場合、当該トランザクションレコードが勘定照合に成功しなかったセットに存在しないことを示すので、当該トランザクションレコードが、保留を必要としないトランザクションレコードであると判定することができる。
【００５７】
上記の実施例において、ブロックチェーンに勘定照合に成功しなかったセットを設置し、ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとを対比することにより、保留を必要とするトランザクションレコードを快速に特定することができる。
【００５８】
一実施例において、勘定照合に成功しなかったセットは、勘定照合されていないセットを含む。当該方法は、勘定照合ステップをさらに含み、当該勘定照合ステップは以下のステップを含んでもよい。
【００５９】
Ｓ４０２において、第１の勘定照合装置から送信された勘定照合呼び出し要求を受信したことに応答して、スマートコントラクトを介して勘定照合呼び出し要求に携帯されている勘定照合すべき第１のトランザクションレコードを第１のブロックファイルのブロックに記憶する。
【００６０】
なお、勘定照合されていないセットは、未だ勘定照合処理が行われていないトランザクションレコードからなるセットである。第１の勘定照合装置は、勘定照合処理を開始する側により使用される装置である。勘定照合呼び出し要求は、勘定照合処理が実現されるように、ブロックチェーンにおけるスマートコントラクトを呼び出すことを要求するために用いられる。
【００６１】
スマートコントラクトは、ブロックチェーンノードのそれぞれが関与して共同で制定されたものであって、権利及び義務を明確するためのプロトコルをプログラミングすることで得られた、ブロックチェーンに設定されたコードの一部である。当該コードには、コントラクトの自動実行をトリガーする条件を含む。あるイベントのトリガー条件を満たす場合、ブロックチェーンノードのそれぞれがこのイベントのコンセンサスに達成した後、スマートコントラクトが自動的にイベントを実行することができることが理解されるべきである。
【００６２】
ブロックチェーンノードは、未だ勘定照合されていないトランザクションレコードを保存するために、勘定照合されていないセットを予め確立したことが理解される。初期確立された勘定照合されていないセットは空セットであってもよく、その中にトランザクションレコードが含まれていないことが理解されるべきである。
【００６３】
好ましく、勘定照合の両方は、勘定照合を行う場合に、それぞれの勘定照合装置を介してブロックチェーンノードに勘定照合呼び出し要求を送信して、ブロックチェーンノードに設置されたスマートコントラクトを呼び出すことを要求することができる。ブロックチェーンノードが第１の勘定照合装置から送信された勘定照合呼び出し要求を受信したことに応答して、スマートコントラクトで当該勘定照合呼び出し要求を解析し、その中から勘定照合すべき第１のトランザクションレコードを取得することができる。ブロックチェーンノードは、スマートコントラクトを介して当該第１のトランザクションレコードを第１のブロックファイルのブロックに記憶することができる。
【００６４】
勘定照合の両方のいずれか一方に使用される勘定照合装置から送信された勘定照合呼び出し要求を受信した場合、ブロックチェーンノードは、スマートコントラクトを介して当該勘定照合呼び出し要求に携帯されるトランザクションレコードを第１のブロックファイルのブロックに記憶することができることが理解されるべきである。
【００６５】
Ｓ４０４において、スマートコントラクトを介して第１のトランザクションレコードに対応する勘定照合関連識別子を取得する。
【００６６】
なお、勘定照合関連識別子は、勘定照合の両方に使用される勘定照合装置のそれぞれから送信された、同一のトランザクションを示すトランザクションレコードを関連付けてマークするために用いられる。
【００６７】
一実施例において、勘定照合関連識別子はトランザクションシリアルナンバーを含んでもよい。そうすると、勘定照合の両方から送信された、同一のトランザクションシリアルナンバーに対応するトランザクションレコード同士は勘定照合処理を行う必要がある。他の実施例において、勘定照合関連識別子は、同一のトランザクションを一意に表し可能な他の識別子であってよいことが理解されるべきである。
【００６８】
ブロックチェーンノードは、スマートコントラクトを介して第１のトランザクションレコードから勘定照合関連識別子を抽出することができる。ブロックチェーンノードは、スマートコントラクトを介して勘定照合呼び出し要求から第１のトランザクションレコードに対応する勘定照合関連識別子を抽出することもできることが理解されるべきである。
【００６９】
Ｓ４０６において、ブロックチェーンに確立された勘定照合されていないセットから、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検索する。
【００７０】
なお、第２の勘定照合装置は、勘定照合処理を開始する他方側により使用される装置である。
【００７１】
具体的に、ブロックチェーンノードは、スマートコントラクトを介して勘定照合されていないセットのトランザクションレコードから、当該勘定照合関連識別子に対応する第２のトランザクションレコードが存在するか否かを検索することができる。当該第２のトランザクションレコードは、勘定照合処理を開始する他方側により使用される第２の勘定照合装置が勘定照合呼び出し要求を送信する場合に携帯しているトランザクションレコードである。
【００７２】
Ｓ４０８において、第２のトランザクションレコードを検索しなかったことに応答して、第１のトランザクションレコードを勘定照合されていないセットに追加する。
【００７３】
勘定照合の両方は、スマートコントラクトを呼び出して勘定照合する場合、完全に一致するわけではなく、必ず速度の差が生じてしまい、勘定照合するトランザクションレコードを選択する順序において異なる場合もある。勘定照合の一方が勘定照合を必要とするトランザクションレコードをスマートコントラクトに送信したが、勘定照合の他方がまだ同一の勘定照合関連識別子に対応する勘定照合データを送信していないことで、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードが検出されない場合があることが理解されるべきである。同様に、他方が先に勘定照合を必要とするトランザクションレコードをスマートコントラクトに送信すると、当該先に送信されたトランザクションレコードについても、同一の勘定照合関連識別子に対応するトランザクションレコードを検出することができないため、勘定照合が実現できないため、先に送信されたトランザクションレコードは勘定照合されていないセットに追加される。
【００７４】
従って、勘定照合されていないセットから、ブロックチェーンノードは、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検出してもよく、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検出しなくてもよい。
【００７５】
第２のトランザクションレコードを検索しなかったことに応答して、ブロックチェーンノードは、第１のトランザクションレコードを勘定照合されていないセットに追加することができる。
【００７６】
一実施例において、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検出したことに応答して、ブロックチェーンノードは、当該第２のトランザクションレコードを勘定照合されていないセットから削除し、第１のトランザクションレコードと第２のトランザクションレコードとを対比することができる。対比により一致しないことに応答して、第１のトランザクションレコード及び第２のトランザクションレコードを、勘定照合に成功したトランザクションレコードに対して区別処理を行うことができる。区別処理とは、第１のトランザクションレコード及び第２のトランザクションレコードを、勘定照合に成功したトランザクションレコードに対して区別させた処理を指す。
【００７７】
一実施例において、ブロックチェーンノードは、対比による一致しない第１のトランザクションレコード及び第２のトランザクションレコードに勘定照合失敗マークを追加することができる。ブロックチェーンノードは、対比による一致しない第１のトランザクションレコード及び第２のトランザクションレコードを、勘定照合に成功したトランザクションレコードと区別させて処理を行うことができれば、他の形態を採用してもよいことが理解されるべきである。
【００７８】
上記の実施例において、勘定照合がよりタイムリーかつ便利になるように、ブロックチェーンに勘定照合されていないセットを設け、勘定照合呼び出し要求を受信した場合に、勘定照合されていないセットに合わせてリアルタイム勘定照合処理が実現される。
【００７９】
図４に示すように、一実施例において、勘定照合に成功しなかったセットは勘定照合エラーセットをさらに含む。当該勘定照合ステップは、上記のステップＳ４０２〜４０８に加えて、以下のステップをさらに含む。
【００８０】
Ｓ４１０において、第２のトランザクションレコードを検出したことに応答して、勘定照合されていないセットから第２のトランザクションレコードを除去する。
【００８１】
Ｓ４１２において、第１のトランザクションレコードと第２のトランザクションレコードとを対比する。
【００８２】
好ましく、ブロックチェーンノードは、勘定照合されていないセットから第２のトランザクションレコードを検出したことに応答して、勘定照合されていないセットから第２のトランザクションレコードを削除し、第２のトランザクションレコードと第１のトランザクションレコードとを対比して、両者が一致しているか否かを確認する。
【００８３】
Ｓ４１４において、対比による一致しないことに応答して、第１のトランザクションレコード及び第２のトランザクションレコードを勘定照合エラーセットに追加する。
【００８４】
なお、勘定照合エラーセットは、勘定照合が一致しないトランザクションレコードからなるセットである。
【００８５】
第２のトランザクションレコードと第１のトランザクションレコードとを対比した結果、対比による一致すること及び対比による一致していないことの2種類の状況があることが理解されるべきである。対比による一致することに応答して、第１のトランザクションレコード及び第２のトランザクションレコードが勘定照合に成功したトランザクションレコードに属すると判定する。対比による一致しないことに応答して、第１のトランザクションレコード及び第２のトランザクションレコードが勘定照合に失敗したトランザクションレコードに属することを示す。すると、第１のトランザクションレコード及び第２のトランザクションレコードを、勘定照合エラーセットに追加することができる。
【００８６】
一実施例において、ブロックチェーンノードは、勘定照合エラーセットにおけるトランザクションレコードについての修正処理を受けて、修正したトランザクションレコードに対して勘定照合対照処理を再度行うことができる。
【００８７】
上記の実施例において、ブロックチェーンに勘定照合に成功しなかったセットを２種類、即ち、勘定照合されていないセット及び勘定照合エラーセットが設けられ、これらの２種類のセットによりリアルタイムの勘定照合が実現され、非常に便利で、かつ勘定照合結果を正確に管理することができる。
【００８８】
一実施例において、ステップＳ２０４は、ブロックのハッシュツリーにおいて、トランザクションレコードに相応するリーフノードを特定し、ハッシュツリーから、リーフノードの第１の祖先ノード及び兄弟リーフノードを選別し、リーフノードの非兄弟リーフノードに対して、非兄弟リーフノードのルートノードに最も近い第２の祖先ノードを選別し、リーフノード、第１の祖先ノード、兄弟リーフノード及び第２の祖先ノードに応じて、ノード保留ツリーを構築することを含む。
【００８９】
なお、トランザクションレコードに相応するリーフノードとは、保留を必要とするトランザクションレコードのハッシュ値をラベルとするリーフノードを指す。祖先ノードとは、リーフノードと祖先関係にあるノードを指す。親ノード、祖父ノード、曽祖父ノードなどのいずれもリーフノードの祖先ノードに属することが理解されるべきである。兄弟リーフノードとは、リーフノードと同じ親ノードに対応するリーフノードを指す。非兄弟リーフノードとは、リーフノードと同じ親ノードを持たないリーフノードを指す。
【００９０】
好ましく、ブロックチェーンノードは、ハッシュツリーから、保留を必要とするトランザクションレコードに対応するリーフノードの第１の祖先ノード、及び当該リーフノードの兄弟リーフノードを選別してもよい。第１の祖先ノードとはリーフノードの全ての祖先ノードを指すことが理解されるべきである。ルートノードは必ず、保留を必要とするトランザクションレコードに対応するリーフノードの祖先ノードであるため、第１の祖先ノードにはルートノードを含む。ブロックチェーンノードは、ハッシュツリーからトランザクションレコードに対応するリーフノードの非兄弟リーフノードを特定し、当該非兄弟リーフノードのルートノードに最も近い祖先ノードを特定して、第２の祖先ノードを取得することができる。１つ又は複数の非兄弟リーフノードを有しても良いが、複数の非兄弟リーフノードの、ルートノードに最も近い祖先ノードが異なる場合、ルートノードに最も近い各祖先ノードを選別し、複数の非兄弟リーフノードのルートノードに最も近い祖先ノードが同じである場合に、ルートノードに最も近い祖先ノードのみを選別することができることが理解されるべきである。
【００９１】
ブロックチェーンノードは、リーフノード、第１の祖先ノード、兄弟リーフノード及び第２の祖先ノードに応じて、ノード保留ツリーを構築することができる。
【００９２】
図３に合わせて解釈して説明する。例えば、保留を必要とするトランザクションレコードはＴｘ(３)であり、それに対応するリーフノードはＨ(３)であり、Ｈ(３)の兄弟リーフノードはＨ(４)であり、Ｈ(３)の第１の祖先ノードはＨ(３＋４)及びルートノードである。Ｈ(１)及びＨ(２)はＨ(３)の非兄弟リーフノードであり、非兄弟リーフノードＨ(１)及びＨ(２)は、いずれの、ルートノードに最も近い第２の祖先ノードがＨ(１＋２)である。従って、ブロックチェーンノードは、Ｔｘ(３)に対応するリーフノードＨ(３)、Ｈ(４)、Ｈ(３＋４)、Ｈ(１＋２)及びルートノードに応じて、ノード保留ツリーを構築することができる。
【００９３】
上記の実施例において、当該保留を必要とするトランザクションレコードに応じて、オリジナルハッシュツリーに対応するリーフノード、第１の祖先ノード、兄弟リーフノード及び第２の祖先ノードでノード保留ツリーを構築し、オリジナルハッシュツリーがデータの真実性を認証する機能を保留することを前提として、不要なノード及びトランザクションレコードデータを除去することにより、ストレージリソースをある程度節約できる。
【００９４】
図５に示すように、一実施例において、データ処理方法を提供し、当該データ処理方法は、具体的に、以下のステップを含む。
【００９５】
Ｓ５０２において、ブロックチェーンに１つの勘定照合されていないセット及び勘定照合エラーセットをそれぞれ確立する。
【００９６】
なお、初期確立された勘定照合されていないセット及び勘定照合エラーセットは空セットであってもよく、その中にトランザクションレコードが含まれず、その後、実際の勘定照合の状況に応じて、相応するトランザクションレコードを追加する。
【００９７】
勘定照合されていないセット及び勘定照合エラーセットは、ブロックチェーンの状態データに相当することが理解されるべきである。
【００９８】
Ｓ５０４において、第１の勘定照合装置がスマートコントラクトに対して送信した勘定照合呼び出し要求を受信したことに応答し、スマートコントラクトを介して勘定照合呼び出し要求に携帯されている勘定照合すべき第１のトランザクションレコードを、第１のブロックファイルのブロックに記憶する。
【００９９】
Ｓ５０６において、スマートコントラクトを介して第１のトランザクションレコードに対応する勘定照合関連識別子を取得し、ブロックチェーンに確立された勘定照合されていないセットから、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検索する。第２のトランザクションレコードを検出しなかったことに応答し、ステップＳ５０８を実行し、第２のトランザクションレコードを検出したことに応答して、ステップＳ５１０を実行する。
【０１００】
Ｓ５０８において、第１のトランザクションレコードを、勘定照合されていないセットに追加する。
【０１０１】
なお、勘定照合関連識別子は、勘定照合の両方に使用される勘定照合装置のそれぞれから送信され且つ同一のトランザクションを示すトランザクションレコードを関連付けマークするために用いられる。
【０１０２】
ブロックチェーンは第１のブロックから後ろへ順にブロックを生成してトランザクションレコードを記憶するので、Ｓ５０６における勘定照合されていないセットに含まれるトランザクションレコードは、第１のトランザクションレコードがブロックに記憶されるまで勘定照合されていないトランザクションレコードであることが理解されるべきである。例えば、第１のブロックファイルの前の４つのブロックの記憶がいっぱいになると、第１のトランザクションレコードＲ１を５番目のブロックに記憶する。よって、勘定照合されていないセットに含まれたのは、５番目のブロックまで現在未だ勘定照合されていないトランザクションレコードである。ブロックチェーンノードは、現在の勘定照合されていないセットから、第１のトランザクションレコードＲ１と同一の勘定照合関連識別子に対応する第２のトランザクションレコードＲ２が存在するか否かを検索し、存在しない場合、第１のトランザクションレコードＲ１も勘定照合されていないセットに追加することができる。
【０１０３】
Ｓ５１０において、勘定照合されていないセットから第２のトランザクションレコードを除去し、第１のトランザクションレコードと第２のトランザクションレコードとを対照し、対比による一致しないことに応答して、第１のトランザクションレコード及び第２のトランザクションレコードを勘定照合エラーセットに追加する。
【０１０４】
同様に、ブロックチェーンは第１のブロックから後ろへ順にブロックを生成してトランザクションレコードを記憶するため、第１のトランザクションレコード及び第２のトランザクションレコードが追加された勘定照合エラーセットに含まれるトランザクションレコードは、第１のトランザクションレコードがブロックに記憶されるまで、勘定照合にエラーが発生したトランザクションレコードである。
【０１０５】
ステップＳ５０４〜Ｓ５１０にて記載されたのは、リアルタイムの勘定照合のプロセスであり、即ち、ブロックチェーンノードは、第１の勘定照合装置の勘定照合呼び出し要求に携帯されている第１のトランザクションレコードをブロックに記憶しながら、当該第１のトランザクションレコードに対して勘定照合処理を行うことができる。これにより、記憶しながら勘定照合を行うリアルタイムの勘定照合処理が実現されることが理解されるべきである。
【０１０６】
なお、ここで、「第１の勘定照合装置」及び「第２の勘定照合装置」は、区別に用いるに過ぎず、他の制限に使用されない。スマートコントラクトは、いずれか一方の勘定照合呼び出し要求を受信すると、その携帯されているトランザクションレコードを、ブロックに記憶することができることが理解されるべきである。
【０１０７】
また、勘定照合の両方がスマートコントラクトを呼び出して勘定照合する場合に、完全に一致するわけではなく、必ず速度の差が生じてしまい、勘定照合するトランザクションレコードを選択する順序においても異なる場合もあり、勘定照合の一方が勘定照合装置を介して勘定照合を必要とするトランザクションレコードをスマートコントラクトに送信し、勘定照合の他方が未だ勘定照合データを送信していない場合に、当該勘定照合を必要とするトランザクションレコードを勘定照合されていないセットに追加することができる。
【０１０８】
勘定照合の一方は勘定照合を必要とするトランザクションレコードをスマートコントラクトに送信し、勘定照合方の他方も同一のトランザクションに対応するトランザクションレコードを送信してきた場合に、同一のトランザクションに対応する異なるトランザクションレコードを対比することができ、一致しない場合、勘定照合にエラーが発生したことを示すので、対比による一致しないトランザクションレコードを、勘定照合エラーセットに追加することができることが理解されるべきである。
【０１０９】
Ｓ５１２において、第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックにおけるトランザクションレコードを、勘定照合エラーセット及び勘定照合されていないセットにおけるトランザクションレコードと対比する。ブロックにおけるトランザクションレコードが勘定照合エラーセット又は勘定照合されていないセットに含まれていることに応答して、ステップＳ５１４〜Ｓ５１６を実行し、ブロックにおけるトランザクションレコードが勘定照合エラーセット及び勘定照合されていないセットに含まれないことに応答して、ステップＳ５１８を実行する。
【０１１０】
第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックチェーンノードは、所定の周期に従ってステップＳ５１２を実行することができる(ブロックチェーンにおけるデータを定期的にクリアすることに相当する)ことが理解されるべきである。他の実施例において、ブロックチェーンノードは、第１のブロックファイルにおけるブロック数が予定の数の閾値に達する場合に、ステップＳ５１２の実行をトリガーすることもできる(ブロックチェーンにおけるブロック数が多すぎて、占用しているストレージスペースが大きくなったら、ブロックチェーンにおけるデータをクリアすることに相当する)。
【０１１１】
Ｓ５１４において、ブロックのハッシュツリーにおいてトランザクションレコードに相応するリーフノードを特定し、ハッシュツリーから、リーフノードの第１の祖先ノード及び兄弟リーフノードを選別し、リーフノードの非兄弟リーフノードに対して、非兄弟リーフノードの、ルートノードに最も近い第２の祖先ノードを選別し、リーフノード、第１の祖先ノード、兄弟リーフノード及び第２の祖先ノードに応じて、ノード保留ツリーを構築する。
【０１１２】
Ｓ５１６において、トランザクションレコードをノード保留ツリーの相応するリーフノードに記憶し、ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新し、ブロックヘッダは、第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接する。
【０１１３】
Ｓ５１８において、ブロックのブロックヘッダを直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新する。
【０１１４】
Ｓ５２０において、ブロックの位置インデックスを、第１のブロックファイルの第１の記憶位置を指向するものから第２の記憶位置を指向するものに修正する。
【０１１５】
Ｓ５２２において、ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除する。
【０１１６】
]
上記の実施例において、第２のブロックファイルにおいて、ブロックヘッダが変化せず、且つブロックヘッダが依然として順に隣接するため、ブロックチェーンにおけるハッシュ値により首尾に接続される特性が維持される。このように、ノード保留ツリーのリーフノードに保存されているトランザクションレコード、及びノード保留ツリーにおけるノードによれば、当該トランザクションレコードが対応する元のブロックに属することを証明することができ、オリジナルハッシュツリーがデータの真実性を認証する機能が相変わらず保留されることに相当し、第２のブロックファイルに保留されているトランザクションレコードは、依然として偽造したり改ざんしたりすることができない。ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除する。第２のブロックファイルに元のブロックにおける保留を必要とするトランザクションレコードが記憶されていないが、保留を必要とするトランザクションレコード、及び当該トランザクションレコードの真実性を認証するためのノード保留ツリーのみが保存されるため、第１のブロックファイルに比べてストレージリソースを大幅に節約する。
【０１１７】
図６に示すように、一実施例において、データ処理装置６００を提供し、当該装置は、ハードウェア、又は、ハードウェアとソフトウェアの組み合わせによりコンピュータ機器の全て又は一部として実現され、好ましく、当該コンピュータ機器は、図１中のブロックチェーンノードであってもよい。当該装置６００はノード保留モジュール６０２、トランザクション記憶モジュール６０４、ブロック更新モジュール６０６及び削除モジュール６０８を含む。
【０１１８】
ノード保留モジュール６０２は、第１のブロックファイルにおけるブロックのそれぞれに対して、ブロックにおける保留を必要とするトランザクションレコードを検出し、ブロックのハッシュツリーから、トランザクションレコードがブロックに属することを証明するためのノードを選別し、選別されたノードに応じてノード保留ツリーを構築するために用いられる。
【０１１９】
トランザクション記憶モジュール６０４は、トランザクションレコードを、ノード保留ツリーの相応するリーフノードに記憶するために用いられる。
【０１２０】
ブロック更新モジュール６０６は、ブロックのブロックヘッダと、トランザクションレコードが記憶されたノード保留ツリーとを関連付けて第２のブロックファイルに更新するためのものであり、ブロックのブロックヘッダは、第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接する。
【０１２１】
削除モジュール６０８は、ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除するために用いられる。
【０１２２】
一実施例において、ノード保留モジュール６０２は、ブロックにおける保留を必要とするトランザクションレコードを検出したことに応答して、ブロックのハッシュツリーから、トランザクションレコードがブロックに属することを証明するためのノードを選別するステップを実行するために用いられ、ノード保留モジュール６０２は、さらに、ブロックに保留を必要とするトランザクションレコードが存在しないことを検出したことに応答して、ブロックのブロックヘッダを直前のブロックのブロックヘッダに隣接して第２のブロックファイルに更新することをブロック更新モジュール６０６に通知することをために用いられる。
【０１２３】
一実施例において、トランザクションレコードは、勘定照合に使用されるトランザクションレコードであり、ノード保留モジュール６０２は、さらに、ブロックにおけるトランザクションレコードと、勘定照合に成功しなかったセットにおけるトランザクションレコードとを対比し、ブロックにおけるトランザクションレコードが勘定照合に成功しなかったセットに含まれていることに応答して、トランザクションレコードが保留すべきトランザクションレコードであると判定するために用いられる。
【０１２４】
図７に示すように、一実施例において、勘定照合に成功しなかったセットは勘定照合されていないセットを含む。当該装置６００は、
第１の勘定照合装置から送信された勘定照合呼び出し要求を受信したことに応答して、スマートコントラクトを介して勘定照合すべき第１のトランザクションレコードを、第１のブロックファイルのブロックに記憶し、第１のトランザクションレコードは勘定照合呼び出し要求に携帯され、スマートコントラクトを介して第１のトランザクションレコードに対応する勘定照合関連識別子を取得し、ブロックチェーン上に確立された勘定照合されていないセットから、勘定照合関連識別子に対応する第２の勘定照合装置の第２のトランザクションレコードを検索し、第２のトランザクションレコードを検出しなかったことに応答して、第１のトランザクションレコードを、勘定照合されないセットに追加するためのリアルタイム勘定照合モジュール６０１をさらに含む。
【０１２５】
一実施例において、勘定照合に成功しなかったセットは勘定照合エラーセットをさらに含む。リアルタイム勘定照合モジュール６０１は、さらに、第２のトランザクションレコードを検出したことに応答して、勘定照合されないセットから第２のトランザクションレコードを除去し、第１のトランザクションレコードと、第２のトランザクションレコードとを対比し、対比による一致しないことに応答して、第１のトランザクションレコード及び第２のトランザクションレコードを勘定照合エラーセットに追加するために用いられる。
【０１２６】
一実施例において、ノード保留モジュール６０２は、さらに、ブロックのハッシュツリーにおいて、トランザクションレコードに相応するリーフノードを特定し、ハッシュツリーから、リーフノードの第１の祖先ノード及び兄弟リーフノードを選別し、リーフノードの非兄弟リーフノードに対して、非兄弟リーフノードの、ルートノードに最も近い第２の祖先ノードを選別し、リーフノード、第１の祖先ノード、兄弟リーフノード及び第２の祖先ノードに応じて、ノード保留ツリーを構築するために用いられる。
【０１２７】
一実施例において、ハッシュツリーは２層ハッシュツリーであり、２層ハッシュツリーのルートノードのハッシュ値は、各リーフノードのハッシュ値を直列に連結した後にハッシュ演算を行うことで得られ、選別されたノードはハッシュツリーの全てのノードである。
【０１２８】
一実施例において、ブロック更新モジュール６０６は、さらに、第２のブロックファイルの第２の記憶位置を取得し、ブロックの位置インデックスを、第１のブロックファイルの第１の記憶位置を指向するものから第２の記憶位置を指向ものに修正するために用いられる。
【０１２９】
図８は一実施例におけるコンピュータ機器の内部構造の概略図である。図８を参照し、当該コンピュータ機器は図１に示されたブロックチェーンノード１３０における各サーバーであってもよい。当該コンピュータ機器は、システムバスを介して接続されるプロセッサ、メモリ及びネットワークインターフェースを含む。なお、メモリは非揮発性記憶媒体及び内部メモリを含む。当該コンピュータ機器の非揮発性記憶媒体はオペレーティングシステム及びコンピュータプログラムを記憶し得る。当該コンピュータプログラムが実行される場合に、上記の各方法実施例に示されたデータ処理方法の全て又は一部のステップをプロセッサに実行させることができる。当該コンピュータ機器のプロセッサは、コンピュータデバイス全体の運行をサポートするために、計算及び制御機能を提供する。当該内部メモリにはコンピュータプログラムを記憶し得、当該コンピュータプログラムがプロセッサによって実行される場合に、上記の各方法実施例に示されたデータ処理方法の全て又は一部のステップをプロセッサに実行させることができる。コンピュータ機器のネットワークインターフェースはネットワーク通信を行うために用いられる。
【０１３０】
当業者は、図８に示される構造は本出願の解決策に関連する構造の一部のブロック図に過ぎず、本出願の解決策が適用されるコンピュータ機器に対する制限を構成するものではなく、コンピュータ機器は、具体的に、図に示されているコンポーネントよりも多い又は少ないコンポーネントを含むか、いくつかのコンポーネントを組み合わせるか、又は異なるコンポーネント配置を有することができる。
【０１３１】
一実施例において、本出願で提供されるデータ処理装置はコンピュータプログラムの形態として実現され得、コンピュータプログラムは、図８に示すコンピュータ機器上で実行され得、コンピュータ機器の非揮発性記憶媒体は、当該データ処理装置を構成する各プログラムモジュール、例えば、図６に示すノード保留モジュール６０２、トランザクション記憶モジュール６０４、ブロック更新モジュール６０６及び削除モジュール６０８を記憶し得る。 各プログラムモジュールからなるコンピュータプログラムは、本明細書で説明された本出願の各実施例にかかるデータ処理方法におけるステップを当該コンピュータ機器に実行させるために用いられ、例えば、コンピュータ機器は、図６に示すデータ処理装置６００におけるノード保留モジュール６０２により、第１のブロックファイルにおける各ブロックに対して、ブロックにおける保留を必要とするトランザクションレコードを検出し、ブロックのハッシュツリーから、トランザクションレコードがブロックに属することを証明するためのノードを選別し、選別されたノードに応じて、ノード保留ツリーを構築してもよい。コンピュータ機器は、トランザクション記憶モジュール６０４により、トランザクションレコードをノード保留ツリーの相応するリーフノードに記憶してもよい。コンピュータ機器は、ブロック更新モジュール６０６により、ブロックのブロックヘッダと、トランザクションレコードを記憶したノード保留ツリーとを関連付けて第２のブロックファイルに更新してもよく、当該ブロックのブロックヘッダは、第２のブロックファイルにおいて直前のブロックのブロックヘッダに隣接する。コンピュータ機器は、削除モジュール６０８により、ブロックのそれぞれに対する更新処理が完了した後に、第１のブロックファイルを削除してもよい。
【０１３２】
一実施例において、コンピュータ機器を提供し、メモリ及びプロセッサを含み、メモリにコンピュータプログラムを記憶しており、コンピュータプログラムがプロセッサによって実行される場合に、上記のデータ処理方法のステップをプロセッサに実行させる。ここで、データ処理方法のステップは、上記の各実施例のデータ処理方法におけるステップであってもよい。
【０１３３】
一実施例において、コンピュータ読み取り可能な記憶媒体を提供し、コンピュータプログラムを記憶しており、コンピュータプログラムがプロセッサによって実行される場合に、上記のデータ処理方法のステップをプロセッサに実行させる。ここで、データ処理方法のステップは、上記の各実施例のデータ処理方法におけるステップであってもよい。
【０１３４】
なお、本出願の実施形態における「第１」及び「第２」は、単に区別するために使用され、サイズ、順序、従属などの方面における制限を構成することを意図するものではない。
【０１３５】
本出願の各実施例における各ステップは必ずステップの番号で示す順序に応じて順に実行されるわけではないと理解すべきである。本明細書に明確に説明しない限り、これらのステップの実行順序が制限されず、これらのステップが他の順序で実行されてもよい。且つ、各実施例では、少なくとも一部のステップは複数のサブステップ又は複数のステージを含んでもよく、これらのサブステップ又はステージが必ず同じ時刻に実行して完了するわけではなく、異なる時刻に実行されてもよく、これらのサブステップ又はステップの実行順序が必ず順に行われるわけではなく、他のステップ又は他のステップのサブステップ又はステップの少なくとも一部と順番又は交互に実行されてもよい。
【０１３６】
当業者であれば、上記実施例の方法における全部又は一部のプロセスの実現はコンピュータプログラムが関連するハードウェアを命令することで完成することができ、前記プログラムが不揮発性コンピュータ可読記憶媒体に記憶されてもよく、該プログラムは実行時、上記各方法の実施例のプロセスを含んでもよいと理解される。本出願で提供される各実施例に使用されるメモリ、ストレージ、データベース又は他の媒体のいかなる引用はいずれも不揮発性メモリ及び／又は揮発性メモリを含んでもよい。不揮発性メモリは読み出し専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラム可能ＲＯＭ（ＥＥＰＲＯＭ）又はフラッシュメモリを含んでもよい。揮発性メモリはランダムアクセスメモリ（ＲＡＭ）又は外部キャッシュメモリを含んでもよい。制限的ではなく、説明として、ＲＡＭは多くの形式で得られるものであり、例えばスタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲＳＤＲＡＭ）、拡張型ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンク（Ｓｙｎｃｈｌｉｎｋ）ＤＲＡＭ（ＳＬＤＲＡＭ）、ラムバス（Ｒａｍｂｕｓ）ダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）及びラムバスダイナミックＲＡＭ（ＲＤＲＡＭ）等である。
【０１３７】
以上の実施例の各技術的特徴を任意に組み合わせることができ、説明を簡潔にするために、上記実施例の各技術的特徴のすべての可能な組み合わせを説明しないが、これらの技術的特徴の組み合わせは矛盾しない限り、いずれも本明細書に記載する範囲に含まれるべきと考えられる。
【０１３８】
以上の実施例は本出願のいくつかの実施形態を説明したが、その説明はより具体的且つ詳細であるが、本発明の保護範囲を制限するためのものではない。ただし、当業者であれば、本出願の思想から逸脱しない範囲において更にいくつかの変形や改良を行うことができ、これらの変形や改良はいずれも本出願の保護範囲に属すべきである。従って、本出願の保護範囲は添付の特許請求の範囲に準じるべきである。
【符号の説明】
【０１３９】
１１０  第１の勘定照合装置
１２０  第２の勘定照合装置
１３０  ブロックチェーンノード
６００  データ処理装置
６０１  リアルタイム勘定照合モジュール
６０２  ノード保留モジュール
６０４  トランザクション記憶モジュール
６０６  ブロック更新モジュール
６０８  削除モジュール
【図１】
2021536085.tif 000003
【図２】
2021536085.tif 000004
【図３】
2021536085.tif 000005
【図４】
2021536085.tif 000006
【図５】
2021536085.tif 000007
【図６】
2021536085.tif 000008
【図７】
2021536085.tif 000009
【図８】
2021536085.tif 000010
【国際調査報告】
2021536085.tif 000011
2021536085.tif 000012
2021536085.tif 000013
2021536085.tif 000014