(57)【要約】本発明は、ブロックチェーン上のスマートコントラクトの検証方法、装置および記憶媒体を提供する。当該方法は、ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、第１マークルツリーのルートノードとトランザクション標識を検証することと、第２マークルツリーのルートノードとスマートコントラクトの実行結果を検証することと、指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証することと、前述検証に合格した場合、スマートコントラクトの実行結果が有効であると判定する。本発明によれば、完全なブロック情報をダウンロードする必要がなく、且つ軽量ノードローカルにてスマートコントラクトを繰り返し実行する必要もなく、スマートコントラクトの実行結果の有効性を判断することができ、これにより、リソースを節約し、効率を向上させることができる。【選択図】図１
2021515311.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得ることと、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得ることと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得ることと、
前記第１検証結果、前記第２検証結果及び前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定することと、を含む、
ことを特徴とするブロックチェーン上のスマートコントラクトの検証方法。
【請求項２】
前記第１マークルツリーのルートノードと前記トランザクション標識を検証することは、
前記トランザクションリストにおけるトランザクション標識を用いて第３マークルツリーを構築し、前記第３マークルツリーのルートノードを算出することと、
前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることと、を含む、
ことを特徴とする請求項１に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項３】
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証することは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築し、前記第４マークルツリーのルートノードを算出することと、
前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることと、を含む、
ことを特徴とする請求項１に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項４】
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、
ブロックチェーンネットワークにおける前記第１ノードおよび第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得することと、
前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較することと、
一致する場合に、前記指定ブロックが有効であると判定することと、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証することと、をさらに含む、
ことを特徴とする請求項１乃至３のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項５】
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得する取得ユニットと、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得る第１検証ユニットと、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得る第２検証ユニットと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得る第３検証ユニットと、
前記第１検証結果、前記第２検証結果および前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定する判定ユニットと、を備える、
ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項６】
前記第１検証ユニットは、
前記トランザクションリストのトランザクション標識を用いて第３マークルツリーを構築して、前記第３マークルツリーのルートノードを算出し、
前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる、
ことを特徴とする請求項５に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項７】
前記第２検証ユニットは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築して、前記第４マークルツリーのルートノードを算出し、
前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる、
ことを特徴とする請求項５に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項８】
ブロックチェーンネットワークにおける前記第１ノードと第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、
前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、
一致する場合に、前記指定ブロックが有効であると判定し、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する第４検証ユニットをさらに備える、
ことを特徴とする請求項５乃至７のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項９】
１つ又は複数のプロセッサと、
１つ又は複数のプログラムを記憶するメモリと、を備え、
前記１つ又は複数のプロセッサは、前記１つ又は複数のプログラムを実行する場合に、請求項１乃至４のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、
ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項１０】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
当該コンピュータプログラムがプロセッサにより実行される場合に、請求項１乃至４のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、
ことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１８年９月２０日に中国国家知識産権局に出願された、出願番号が２０１８１１１０１３４１．２であり、発明の名称が「ブロックチェーン上のスマートコントラクトの検証方法、装置、及び記憶媒体」である中国特許出願の優先権を主張しており、その全体が参照により本明細書に取り込まれる。本発明は、情報技術分野に関し、特に、ブロックチェーン上のスマートコントラクトの検証方法、装置およびコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
ブロックチェーンネットワークは、通常、ブロックチェーン上の台帳の完全なデータを維持する全ノードを大量に含んでいる。各ブロックの完全なデータが、これらの全ノードにリアルタイムに同期させられるため、ブロックの有効性を正確に判断することができる。
【０００３】
ブロックチェーンネットワークには、携帯電話のようなモバイルクライアントなどの軽量ノードも存在する。これらの軽量ノードは、記憶空間が限られているため、すべてのブロック履歴データを記憶することができない。また、モバイルクライアントの帯域幅が限られ、流量費用が高いので、ブロックのサイズが大きい且つブロックの出力速度が速い場合、各ブロックの完全なデータをモバイルクライアントまでにリアルタイムに同期することも現実的ではない。一方、軽量ノードのハードウェア機能が弱いため、スマートコントラクトをローカルにて繰り返し実行することにより、スマートコントラクトの実行結果がブロックチェーンより同期させられれたブロックと一致するか否かを検証するコストが高すぎる。
【０００４】
現在、軽量ノード技術が市販されているが、スマートコントラクトを繰り返し実行しない条件のもとで、軽量ノードにてスマートコントラクトの実行結果を効果的に検証することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、少なくとも従来技術における１つまたは複数の技術的課題を解決するために、ブロックチェーン上のスマートコントラクト検証方法、装置、およびコンピュータ可読記憶媒体を提供する。
【課題を解決するための手段】
【０００６】
本発明の第１態様は、ブロックチェーン上のスマートコントラクトの検証方法を提供する。当該方法は、
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得ることと、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得ることと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得ることと、
前記第１検証結果、前記第２検証結果、及び前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定することと、を含む。
【０００７】
１つの実施形態において、前記第１マークルツリーのルートノードと前記トランザクション標識を検証することは、
前記トランザクションリストにおけるトランザクション標識を用いて第３マークルツリーを構築し、前記第３マークルツリーのルートノードを算出することと、
前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることと、を含む。
【０００８】
１つの実施形態において、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証することは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築し、前記第４マークルツリーのルートノードを算出することと、
前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることと、を含む。
【０００９】
１つの実施形態において、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、
ブロックチェーンネットワークにおける前記第１ノードおよび第２ノードから前記指定ブロックのブロックヘッダ情報をそれぞれ取得することと、
前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較することと、
一致する場合に、前記指定ブロックが有効であると判定することと、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証することと、をさらに含む。
【００１０】
本発明の第２態様は、ブロックチェーン上のスマートコントラクトの検証装置を提供する。当該装置は、
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するための取得ユニットと、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得るための第１検証ユニットと、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得るための第２検証ユニットと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得るための第３検証ユニットと、
前記第１検証結果、前記第２検証結果および前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するための判定ユニットと、を備える。
【００１１】
１つの実施形態において、前記第１検証ユニットは、
前記トランザクションリストのトランザクション標識を用いて第３マークルツリーを構築して、前記第３マークルツリーのルートノードを算出し、
前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる。
【００１２】
１つの実施形態において、前記第２検証ユニットは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築して、前記第４マークルツリーのルートノードを算出し、
前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる。
【００１３】
１つの実施形態において、ブロックチェーンネットワークにおける前記第１ノードと第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、
前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、
一致する場合に、前記指定ブロックが有効であると判定し、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するための第４検証ユニットをさらに備える。
【００１４】
１つの可能な実施形態において、ブロックチェーン上のスマートコントラクト検証装置には、ブロックチェーン上のスマートコントラクト検証装置が前述のブロックチェーン上のスマートコントラクト検証方法を実行することをサポートするプログラムを記憶するためのメモリと、メモリに記憶されるプログラムを実行するように構成されるプロセッサとが含まれる。前記ブロックチェーン上のスマートコントラクト検証装置には、ブロックチェーン上のスマートコントラクト検証装置を他の機器や通信ネットワークに通信させるための通信インターフェースがさらに含まれてもよい。
【００１５】
本発明の第３態様は、ブロックチェーン上のスマートコントラクトの検証装置を提供する。当該装置は、
１つ又は複数のプロセッサと、
１つ又は複数のプログラムを記憶するためのメモリと、を備え、
前記１つ又は複数のプロセッサは、前記１つ又は複数のプログラムを実行する場合に、前記１つ又は複数のプロセッサに前述の第１態様のいずれかに記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる。
【００１６】
本発明の第４態様は、コンピュータ可読媒体を提供する。当該コンピュータ可読媒体には、コンピュータプログラムが記憶され、当該コンピュータプログラムがプロセッサにより実行される場合に、前述の第１態様のいずれかに記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる。
【００１７】
上記技術案のうちのいずれか１つの技術案は、以下の利点又は有益な効果を有する。
【００１８】
本発明は、完全なブロック情報をダウンロードして記憶する必要がなく、軽量クライアントのローカルにてスマートコントラクトを繰り返し実行する必要もなく、ブロックチェーンネットワークにおいて軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援することができ、これにより、システムリソースを節約し、実行効率を向上させる。
【００１９】
上記の略述は、単に説明のために過ぎず、いかなる限定をも目的としない。上記に記載されている例示的な様態、実施形態、及び特徴以外に、図面及び下記の詳細説明を参照することによって、本発明のさらなる様態、実施形態、及び特徴の理解を促す。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【図２】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【図３】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法における全ノードが第２マークルツリーを計算するフローチャートである。
【図４】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【図５】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【図６】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【図７】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法の軽量ノードでの有効性の検証フローチャートである。
【図８】本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【図９】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【図１０】本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【発明を実施するための形態】
【００２１】
図面において特に規定されない限り、複数の図面において同様の図面符号は、同様又は類似的な部材又はエレメントを示す。これらの図面は必ずしも実際の比例に従って製図されたものではない。これらの図面は本発明に基づいて開示された幾つかの実施形態を描いたものに過ぎず、本発明の範囲に対する制限としてはならないことを理解すべきである。
【００２２】
下記において、幾つかの例示的実施形態を簡単に説明する。当業者が把握出来るよう、本発明の主旨又は範囲を逸脱しない限り、様々な方式にから説明された実施形態に変更可能である。従って、図面と説明は制限を加えるものでなく、本質的には例示的なものである。
【００２３】
図１は本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。図１に示すように、本発明の実施形態におけるブロックチェーン上のスマートコントラクトの検証方法は、
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するステップＳ１１０と、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得るステップＳ１２０と、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得るステップＳ１３０と、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得るステップＳ１４０と、
前記第１検証結果、前記第２検証結果、及び前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するステップＳ１５０と、を含む。
前記第１マークルツリーのリーフノードは、前記指定ブロックにおけるすべてのトランザクション標識から構成され、前記第２マークルツリーのリーフノードは、前記指定ブロックにおけるすべてのスマートコントラクトの実行結果から構成される。
【００２４】
マークルツリー（Ｍｅｒｋｌｅ  ｔｒｅｅｓ）は、ブロックチェーンの重要なデータ構造であり、ブロックデータを迅速に要約してブロックデータの存在性と整合性を検証することができるものである。マークルツリーには、通常、ブロックボディの下層（トランザクション）データベース、ブロックヘッダのルートハッシュ値（すなわち、Ｍｅｒｋｌｅルート）及び下層のブロックデータからルートハッシュ値へのすべての分岐が含まれています。マークルツリー演算プロセスは、通常、ブロックボディのデータをグループ化してハッシュ計算を行い、生成された新しいハッシュ値をマークルツリーに挿入して、最後のルートハッシュ値のみが残ってブロックヘッダのＭｅｒｋｌｅルートとされるまで再帰的に行うことである。最も一般的なマークルツリーは、ビットコインが採用した二叉マークルツリーであり、二叉マークルツリーにおける各ハッシュノードは、常に隣接する２つのデータブロックまたは２つのハッシュ値を含んでいる。
【００２５】
ブロックチェーンネットワークには、携帯電話のようなモバイルクライアントなどの軽量ノードが存在する。軽量ノードとしては、記憶空間が限られ、ハードウェア機能が弱い。これにより、軽量ノードにてネットワークより新たに同期させられたスマートコントラクトの実行結果の有効性を検証するための可能な方法を求める必要がある。本発明の実施形態は、ブロックチェーンネットワークにおいて、軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援する方法を提供する。本発明の実施形態における具体的な検証方法は、以下のステップＳ１２０〜Ｓ１４０を含む。
【００２６】
ステップＳ１２０では、ブロックヘッダ情報における第１マークルツリーのルートノードがトランザクションリストにおけるトランザクション標識にマッチングするか否かを検証する。
【００２７】
ステップＳ１３０では、ブロックヘッダ情報における第２マークルツリーのルートノードがトランザクションリストにおけるスマートコントラクトの実行結果にマッチングするか否かを検証する。
【００２８】
ステップＳ１４０では、ブロックヘッダ情報における指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証する。
【００２９】
ここで、ステップＳ１２０とステップＳ１３０との実行順序は、入れ替え可能である。あるいは、他の実施形態では、ステップＳ１２０とステップＳ１３０とが並列に実行されてもよい。
【００３０】
本発明の実施形態は、ブロックチェーン技術を利用する任意の軽量ノードに適用できる。軽量ノードは、モバイルクライアントデバイスを含むが、これに限られない。
【００３１】
図２は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。図２に示すように、本発明の実施形態における具体的な実施手順は、以下の通りである。
【００３２】
ステップＳ１０５では、ブロックヘッダのチェーンデータ構造をローカルにてメンテナンスする。
【００３３】
Ａ、ブロックヘッダには、
ｉ、ブロックｉｄ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ、標識）と、
ｉｉ、一つ前のブロックｉｄと、
ｉｉｉ、第１マークルツリーのルートノードｈａｓｈ（ハッシュ値）と、
ｉｖ、第２マークルツリーのルートノードｈａｓｈとのデータが含まれている。
【００３４】
Ｂ、各ブロックヘッダは、一つ前のブロックのブロックヘッダを指向し、これにより、チェーンデータ構造を維持している。ジェネシスブロックのブロックヘッダが指向している一つ前のブロックｉｄは、０になっている。
【００３５】
第１マークルツリーの最下層のリーフノードは、当該ブロックに含まれるすべてのＵＴＸＯ（Ｕｎｓｐｅｎｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｏｕｔｐｕｔ、未使用トランザクションアウトプット）のトランザクションｉｄから構成されている。ここで、トランザクションｉｄは、トランザクション内容をハッシュ計算することで得られるが、トランザクション内容にスマートコントラクトの実行結果が含まれていない。
【００３６】
第２マークルツリーの最下層のリーフノードは、当該ブロックに含まれるすべてのスマートコントラクトの実行結果から構成されている。１つのトランザクションがスマートコントラクトの実行に関わる場合に、スマートコントラクトの実行結果は、新しいフィールドに記憶される。これらの新しいフィールドは、１つのマークルツリーを構成する。
【００３７】
各トランザクションに関わるスマートコントラクトの実行結果は、次の２つの部分から構成されている。
【００３８】
ｖ−１、１つのマークルツリーのルートノード。ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、仮想マシン）は、１つのトランザクションに関わるスマートコントラクトを実行したたびに、スマートコントラクトのデータ内容を記憶するデータ構造を変更する。すべてのデータは、このマークルツリーを構成している。
【００３９】
ｖ−２、今回のトランザクションに関わるスマートコントラクトの実行による実行結果。
【００４０】
図３は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法における全ノードが第２マークルツリーを計算するフローチャートである。図３において、Ｓｔａｔｅ−Ｋｅｙは、スマートコントラクトの実行結果に対応する値（ｓｔａｔｅ）とキー値（ｋｅｙ）とのデータとを表している。「Ｋｅｙ  ｓｔａｔｅ  ｓｎａｐｓｈｏｔｓ  ｗｈｅｎ  Ｓｍａｒｔ  Ｃｏｎｔｒａｔｉｏｎ  ｈａｓ  ｂｅｅｎ  ｉｎｖｏｋｅｄ」は、スマートコントラクトの実行による実行結果に対応する値とキー値とのデータのスナップショットを表している。Ｓｔａｔｅ−Ｋｅｙ１とＳｔａｔｅ−Ｋｅｙ２に対するハッシュ計算をそれぞれ行うことにより、２つのリーフノードＨａｓｈ  Ｌ−ＬＥＡＦを得る。さらに、２つのリーフノードＨａｓｈ  Ｌ−ＬＥＡＦに対するハッシュ計算を行うことにより、枝ノードＨａｓｈ  Ｘ−ＢＲＡＮＣＨを得る。２つの枝ノードＨａｓｈ  Ｘ−ＢＲＡＮＣＨとＨａｓｈ  Ｙ−ＢＲＡＮＣＨに対するハッシュ計算を行うことにより、前述のｖ−１におけるマークルツリーのルートノード、すなわち、「Ｓｔａｔｅ  ＤＢ  ｍｅｒｋｌｅ  ｒｏｏｔ  ｗｈｅｎ  Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ  ｈａｓ  ｂｅｅｎ  Ｉｎｖｏｋｅｄ−Ｔｘ  Ｂ」（スマートコントラクトＢを実行した後のマークルツリーのルート値のデータベース）を生成する。「Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ  Ｉｎｖｏｋｅ  Ｒｅｓｕｌｔ」は、スマートコントラクトの実行結果を表している。「Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ  Ｉｎｖｏｋｅ  Ｒｅｓｐｏｎｓｅ−Ｔｘ  Ｂ」は、スマートコントラクトＢの実行結果を表している。「Ｓｔａｔｅ  ＤＢ  ｍｅｒｋｌｅ  ｒｏｏｔ  ｗｈｅｎ  Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ  ｈａｓ  ｂｅｅｎ  Ｉｎｖｏｋｅｄ−Ｔｘ  Ｂ」に対するハッシュ計算を行うことにより、Ｈａｓｈ  ４−ＬＥＡＦを得、「Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ  Ｉｎｖｏｋｅ  Ｒｅｓｐｏｎｓｅ−Ｔｘ  Ｂ」に対するハッシュ計算を行うことにより、Ｈａｓｈ  ３−ＬＥＡＦを得、Ｈａｓｈ  ４−ＬＥＡＦとＨａｓｈ  ３−ＬＥＡＦに対するハッシュ計算を行うことにより、枝ノード「Ｈａｓｈ６−ＢＲＡＮＣＨ（Ｈａｓｈ  ｏｆ  ｓｍａｒｔ  ｃｏｎｔｒａｃｔ  ｒｅｓｕｌｔ−Ｔｘ  Ｂ、すなわち、スマートコントラクトＢの実行結果のハッシュ値）」を得る。最後に、ｈａｓｈ６−ＢＲＡＮＣＨと「ｈａｓｈ５−ＢＲＡＮＣＨ（Ｈａｓｈ  ｏｆ  ｓｍａｒｔ  ｃｏｎｔｒａｃｔ  ｒｅｓｕｌｔ−Ｔｘ  Ａ、すなわち、スマートコントラクトＡの実行結果のハッシュ値）」に対するハッシュ計算を行うことにより、ルートノード「ｈａｓｈ７−Ｒｏｏｔ（Ｈａｓｈ  ｏｆ  Ｂｒａｎｃｈｅｓ、すなわち、枝のハッシュ値）」を得る。「Ｍｅｒｋｌｅ  Ｔｒｅｅ  ｕｓｅｄ  ｆｏｒ  Ｇｅｎｅｒａｔｉｎｇ  Ｒｏｏｔ」は、ルートノードを生成するマークルツリーを表している。
【００４１】
ステップＳ１１０では、ブロックチェーンネットワークからランダムに選択する、あるいはユーザが第１ノードを指定することにより、データ同期を行い、指定ブロックのブロックヘッダとトランザクションリストとを取得する。指定ブロックをＸで表す場合、このステップにおいて、ブロックＸの情報の一部であるブロックヘッダ、ＵＴＸＯトランザクションリスト（トランザクションｉｄやトランザクションに関わるスマートコントラクトの実行結果などを含む）を取得する。ここで、第１ノードは、ブロックチェーンネットワークの全ノードである。
【００４２】
ステップＳ１１５では、第１ノードと第２ノードから取得されたデータが一致するか否かを比較する。
【００４３】
図４は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。図４に示すように、１つの可能な実施形態において、ステップＳ１４０では、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、ステップＳ１１５が実行される。ステップＳ１１５は、具体的に、
ブロックチェーンネットワークにおける前記第１ノードおよび第２ノードから前記指定ブロックのブロックヘッダ情報をそれぞれ取得するステップＳ４１０と、
前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較するステップＳ４２０と、
一致する場合に、前記指定ブロックが有効であると判定するＳ４３０と、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するステップＳ４４０と、を含む。
【００４４】
一例において、ステップＳ１１５は、具体的に、次のステップを含んでもよい。
【００４５】
さらに、ブロックチェーンネットワークからランダムに選択する、あるいはユーザが第２ノードを指定することにより検索を行い、検索条件は、ステップＳ１１０で取得されたブロックＸのヘッダに含まれるブロックｉｄである。そして、当該対象ブロックｉｄに基づいて、第２ノードにおいて、ブロックＸに対応するブロックヘッダＺを検索し得た。ここで、第２ノードは、ブロックチェーンネットワークにおける全ノードである。
【００４６】
ブロックＸのヘッダの第１マークルツリーのルートと、第２マークルツリーのルートと、一つ前のブロックｉｄとが第２ノードから得られたブロックヘッダＺの情報にマッチングするか否かを比較する。マッチングする場合には、ブロックＸが実際に有効であることを示す。
【００４７】
図５は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。図５に示すように、１つの可能な実施形態において、ステップＳ１２０では、前記第１マークルツリーのルートノードと前記トランザクション標識を検証し、具体的に、
前記トランザクションリストにおけるトランザクション標識を用いて第３マークルツリーを構築し、前記第３マークルツリーのルートノードを算出するステップＳ２１０と、
前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較するステップＳ２２０と、
一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となるステップＳ２３０と、を含んでもよい。    
【００４８】
具体的には、ブロックＸのブロックヘッダがトランザクションｉｄのリストにマッチングするか否かを検証する。トランザクションｉｄを１つのマークルツリー（すなわち、第３マークルツリー）に構成させ、その最終のマークルツリーのルートを算出する。そして、算出された第３マークルツリーのルートとブロックヘッダに含まれる第１マークルツリーのルートノードｈａｓｈとが一致するか否かを比較する。一致する場合に、検証ブロックＸのブロックヘッダがトランザクションｉｄのリストにマッチングすることを示し、つまり、第１マークルツリーのルートノードが前記トランザクション標識にマッチングすることを示す。これにより、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となる。
【００４９】
図６は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。図６に示すように、１つの可能な実施形態において、ステップＳ１３０では、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証し、具体的に、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築し、前記第４マークルツリーのルートノードを算出するステップＳ３１０と、
前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較するステップＳ３２０と、
一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクト実行結果が検証合格となるステップＳ３３０と、を含んでもよい。
【００５０】
具体的には、ブロックＸのブロックヘッダがスマートコントラクトの実行結果リストにマッチングするか否かを検証する。スマートコントラクトの実行結果を１つのマークルツリー（すなわち、第４マークルツリー）に構成し、その最終のマークルツリーのルートを算出する。そして、算出された第４マークルツリーのルートとブロックヘッダに含まれる第２マークルツリーのルートノードが一致するか否かを比較する。一致する場合に、ブロックＸのブロックヘッダがスマートコントラクトの実行結果リストにマッチングすることを示し、つまり、第２マークルツリーのルートノードが前記スマートコントラクトの実行結果にマッチングすることを示す。これにより、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となる。
【００５１】
ステップＳ１４０では、ブロックＸのブロックヘッダに含まれる一つ前のブロックｉｄがローカルにてメンテナンスされたブロックヘッダチェーン構造にあるか否かを判断する。
【００５２】
ステップＳ１５０では、以上のステップＳ１１５、ステップＳ１２０、ステップＳ１３０およびステップＳ１４０にて検証合格である場合、前記スマートコントラクトの実行結果が有効であると判断する。最後の検証ステップＳ１４０では、ブロックＸのブロックヘッダに含まれる一つ前のブロックｉｄがローカルにてメンテナンスされたブロックヘッダチェーン構造にあると判断した場合、実際に有効なブロックＸのブロックヘッダを、ローカルにてメンテナンスされたブロックヘッダチェーンのデータベースに記憶する。
【００５３】
上記ステップにおいて、ステップＳ１１５は省略可能な実行ステップであり、検証の応答時間に対する要求が相対的に高い場合に、ステップＳ１１５が実行されなくてもよい。
【００５４】
また、ステップＳ１１５、ステップＳ１２０、ステップＳ１３０については、これらの実行順序を入れ替えてもよく、あるいは、他の実施形態において、ステップＳ１１５、ステップＳ１２０、ステップＳ１３０は、並列に実行されてもよい。これらの３つのステップの実行が完了した後、ステップＳ１４０が実行される。
【００５５】
図７は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法の軽量ノードでの有効性の検証フローチャートである。図７に示すように、一例において、ブロックチェーン上のスマートコントラクトの検証方法の具体的な実行ステップは、以下の通りである。
【００５６】
１、軽量ノードは、全ノード１より最新のブロックのヘッダ（２つのマークルツリーを含む必要がある）、トランザクションｉｄリスト及びスマートコントラクトの実行結果リストが同期される。
【００５７】
２、ブロックの正当性を検証する。検証の具体的な手順は、前述のステップＳ１１５、ステップＳ１２０、ステップＳ１３０およびステップＳ１４０を含んでもよい。
【００５８】
３、全ノード２において同一のブロックのブロックヘッダを検索し、２つのマークルツリーのルート及び指向される一つ前のブロックｉｄが全ノード１より同期されたデータに一致するか否かを比較する。比較の具体的な手順は、上記のステップＳ１１５を含んでもよい。
【００５９】
４、トランザクションｉｄリストとスマートコントラクトの実行結果とを検証する。
４．１、ｔｘ（Ｔｒａｎｓａｃｔｉｏｎ、取引）ｉｄリストがブロックヘッダの第１マークルツリーのルートにマッチングするか否かを判断し、例えば、純支払トランザクションを検証する。
４．２、スマートコントラクトの実行結果リストがブロックヘッドの第２マークルツリーのルートにマッチングするか否かを判断し、すなわち、スマートコントラクトに関わるトランザクションを検証する。
【００６０】
上記の全ての手順で検証に成功した場合に、真に有効なブロックヘッダが記憶される。
【００６１】
上記技術案のうちのいずれか１つの技術案は、以下の利点又は有益な効果を有する。
【００６２】
完全なブロック情報をダウンロードして記憶する必要がなく、軽量クライアントのローカルにてスマートコントラクトを繰り返し実行する必要もなく、ブロックチェーンネットワークにおいて軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援することができ、これにより、システムリソースを節約し、実行効率を向上させる。
【００６３】
図８は、本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。図８に示すように、本発明の実施形態に係るブロックチェーン上のスマートコントラクトの検証装置は、
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するための取得ユニット１００と、
前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得るための第１検証ユニット２００と、
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得るための第２検証ユニット３００と、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得るための第３検証ユニット４００と、
前記第１検証結果、前記第２検証結果および前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するための判定ユニット５００と、を備え、
前記第１マークルツリーのリーフノードは、前記指定ブロックのすべてのトランザクション標識から構成され、前記第２マークルツリーのリーフノードは、前記指定ブロックのすべてのスマートコントラクトの実行結果から構成される。
【００６４】
１つの実施形態において、前記第１検証ユニット２００は、前記トランザクションリストのトランザクション標識を用いて第３マークルツリーを構築して、前記第３マークルツリーのルートノードを算出し、前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードが一致するか否かを比較し、一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる。
【００６５】
１つの実施形態において、前記第２検証ユニット３００は、前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築して、前記第４マークルツリーのルートノードを算出し、前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードが一致するか否かを比較し、一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる。
【００６６】
図９は、本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。図９に示すように、１つの実施形態において、ブロックチェーンネットワークにおける前記第１ノードと第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、一致する場合に、前記指定ブロックが有効であると判定し、前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するための第４検証ユニット６００をさらに備える。
【００６７】
本発明の実施形態のブロックチェーン上のスマートコントラクト検証装置における各ユニットの機能は、前述の方法に関する説明を参照することができ、ここではその説明を省略する。
【００６８】
１つの可能な実施形態において、ブロックチェーン上のスマートコントラクトの検証装置には、ブロックチェーン上のスマートコントラクトの検証装置が前述のブロックチェーン上のスマートコントラクトの検証方法を実行することをサポートするプログラムを記憶するためのメモリと、メモリに記憶されるプログラムを実行するように構成されるプロセッサとが含まれる。前記ブロックチェーン上のスマートコントラクトの検証装置には、ブロックチェーン上のスマートコントラクトの検証装置が他の機器や通信ネットワークと通信するための通信インターフェースがさらに含まれてもよい。
【００６９】
図１０は、本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。図１０に示すように、当該装置は、メモリ１０１とプロセッサ１０２とを備える。メモリ１０１には、プロセッサ１０２で実行可能なコンピュータプログラムが記憶され、前記プロセッサ１０２は、前記コンピュータプログラムを実行するとき、上記実施形態に係るブロックチェーン上のスマートコントラクトの検証方法を実現させる。メモリ１０１とプロセッサ１０２の数は、１つ又は複数であってもよい。
【００７０】
前記検証装置は、周辺機器と通信し、データを交換・転送するための通信インターフェース１０３をさらに備える。
【００７１】
メモリ１０１は、高速ＲＡＭメモリを含む可能性もあり、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）、例えば、少なくとも１つの磁気ディスクメモリをさらに含む可能性もある。
【００７２】
メモリ１０１、プロセッサ１０２及び通信インターフェース１０３が個別に実現される場合、メモリ１０１、プロセッサ１０２及び通信インターフェース１０３は、バスによって相互接続して相互通信を行うことができる。前記バスは、インダストリスタンダードアーキテクチャ（ＩＳＡ、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、外部デバイス相互接続（ＰＣＩ、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、又は拡張インダストリスタンダードアーキテクチャ（ＥＩＳＡ、Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ｃｏｍｐｏｎｅｎｔ）バス等であってもよい。前記バスは、アドレスバス、データバス、制御バス等として分けられることが可能である。表示の便宜上、図１０に１本の太線のみで表示するが、バスが１つ又は１種類のみであることを意味しない。
【００７３】
任意選択で、具体的に実現する時、メモリ１０１、プロセッサ１０２及び通信インターフェース１０３が１枚のチップに統合される場合、メモリ１０１、プロセッサ１０２及び通信インターフェース１０３は、内部インターフェースによって、相互通信を実現することができる。
【００７４】
さらに、本発明の実施形態は、プロセッサによって実行されるときに、前述のブロックチェーン上のスマートコントラクトの検証方法のいずれかに記載の方法を実現するコンピュータプログラムが記憶されるコンピュータ可読記憶媒体を提供する。
【００７５】
本明細書において、「１つの実施形態」、「幾つかの実施形態」、「例」、「具体例」或いは「一部の例」などの用語とは、当当該実施形態或いは例で説明された具体的特徴、構成、材料或いは特点を結合して、本発明の少なくとも１つの実施形態或いは実施形態に含まれることを意味する。また、説明された具体的特徴、構成、材料或いは特点は、いずれか１つ或いは複数の実施形態または例において適切に結合することが可能である。また、矛盾しない限り、当業者は、本明細書の異なる実施形態または例、および、異なる実施形態または例における特徴を結合したり、組み合わせたりすることができる。
【００７６】
また、用語「第１」、「第２」とは比較的重要性を示している又は暗示しているわけではなく、単に説明のためのものであり、示される技術的特徴の数を暗示するわけでもない。そのため、「第１」、「第２」で限定される特徴は、少なくとも１つの当当該特徴を明示又は暗示的に含むことが可能である。本出願の記載の中において、「複数」の意味とは、明確的に限定される以外に、２つ又は２つ以上を意味する。
【００７７】
フローチャート又はその他の方式で説明された、いかなるプロセス又は方法に対する説明は、特定な論理的機能又はプロセスのステップを実現するためのコマンドのコードを実行可能な１つ又はそれ以上のモジュール、断片若しくはセグメントとして理解することが可能であり、さらに、本発明の好ましい実施形態の範囲はその他の実現を含み、示された、又は、記載の順番に従うことなく、係る機能に基づいてほぼ同時にまたは逆の順序に従って機能を実行することを含み、これは当業者が理解すべきことである。
【００７８】
フローチャートに示された、又はその他の方式で説明された論理及び／又はステップは、例えば、論理機能を実現させるための実行可能なコマンドのシーケンスリストとして見なされることが可能であり、コマンド実行システム、装置、又はデバイス（プロセッサのシステム、又はコマンド実行システム、装置、デバイスからコマンドを取得して実行することが可能なその他のシステムを含むコンピュータによるシステム）が使用できるように提供し、又はこれらのコマンドを組み合わせて使用するコマンド実行システム、装置、又はデバイスに使用されるために、いかなるコンピュータ読取可能媒体にも具体的に実現されることが可能である。本明細書において、「コンピュータ読取可能媒体」は、コマンド実行システム、装置、デバイス、又はこれらのコマンドを組み合わせて実行するシステム、装置又はデバイスが使用できるように提供するため、プログラムを格納、記憶、通信、伝搬又は伝送する装置であってもよい。コンピュータ読み取り可能媒体のから具体的例（非網羅的なリスト）として、１つ又は複数の布配線を含む電気接続部（電子装置）、ポータブルコンピュータディスク（磁気装置）、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、消去書き込み可能リード・オンリー・メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバー装置、及びポータブル読み取り専用メモリ（ＣＤＲＯＭ）を少なくとも含む。また、コンピュータ読み取り可能媒体は、そのうえで前記プログラムを印字できる紙又はその他の適切な媒体であってもよく、例えば紙又はその他の媒体に対して光学的スキャンを行い、そして編集、解釈又は必要に応じてその他の適切の方式で処理して電子的方式で前記プログラムを得、その後コンピュータメモリに記憶することができるためである。
【００７９】
なお、本発明の各部分は、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせによって実現されることができる。上記実施形態において、複数のステップ又は方法は、メモリに記憶された、適当なコマンド実行システムによって実行されるソフトウェア又はファームウェアによって実施されることができる。例えば、ハードウェアによって実現するとした場合、別の実施形態と同様に、データ信号に対して論理機能を実現する論理ゲート回路を有する離散論理回路、適切な混合論理ゲート回路を有する特定用途向け集積回路、プログラマブルゲートアレイ（ＧＰＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などといった本技術分野において公知である技術のうちのいずれか１つ又はそれらの組み合わせによって実現される。
【００８０】
当業者は、上記の実施形態における方法に含まれるステップの全部又は一部を実現するのは、プログラムによって対応するハードウェアを指示することによって可能であることを理解することができる。前記プログラムは、コンピュータ読取可能な媒体に記憶されてもよく、当当該プログラムが実行されるとき、方法の実施形態に係るステップのうちの１つ又はそれらの組み合わせを含むことができる。
【００８１】
また、本発明の各実施形態における各機能ユニットは、１つの処理モジュールに統合されてよく、別個の物理的な個体であってもよく、２つ又は３つ以上のユニットが１つのモジュールに統合されてもよい。上記の統合モジュールは、ハードウェアで実現されてもよく、ソフトウェア機能モジュールで実現されてもよい。上記の統合モジュールが、ソフトウェア機能モジュールで実現され、しかも独立した製品として販売又は使用される場合、コンピュータ読取可能な記憶媒体に記憶されてもよい。前記記憶媒体は読取専用メモリ、磁気ディスク又は光ディスク等であってもよい。
【００８２】
上記の記載は、単なる本発明の具体的な実施形態に過ぎず、本発明の保護範囲はそれに限定されることなく、当業者が本発明に開示されている範囲内において、容易に想到し得る変形又は置換は、全て本発明の範囲内に含まれるべきである。そのため、本発明の範囲は、記載されている特許請求の範囲に準じるべきである。
【図１】
2021515311.tif 000003
【図２】
2021515311.tif 000004
【図３】
2021515311.tif 000005
【図４】
2021515311.tif 000006
【図５】
2021515311.tif 000007
【図６】
2021515311.tif 000008
【図７】
2021515311.tif 000009
【図８】
2021515311.tif 000010
【図９】
2021515311.tif 000011
【図１０】
2021515311.tif 000012
【手続補正書】
【提出日】令和2年8月21日(2020.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、  前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得ることと、  前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得ることと、  前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得ることと、  前記第１検証結果、前記第２検証結果及び前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定することと、を含む、  ことを特徴とするブロックチェーン上のスマートコントラクトの検証方法。
【請求項２】
前記第１マークルツリーのルートノードと前記トランザクション標識を検証することは、  前記トランザクションリストにおけるトランザクション標識を用いて第３マークルツリーを構築し、前記第３マークルツリーのルートノードを算出することと、  前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較することと、  一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることと、を含む、  ことを特徴とする請求項１に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項３】
前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証することは、  前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築し、前記第４マークルツリーのルートノードを算出することと、  前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較することと、  一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることと、を含む、  ことを特徴とする請求項１に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項４】
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、  ブロックチェーンネットワークにおける前記第１ノードおよび第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得することと、  前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較することと、  一致する場合に、前記指定ブロックが有効であると判定することと、  前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証することと、をさらに含む、  ことを特徴とする請求項１乃至３のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項５】
ブロックチェーンネットワークにおける第１ノードから指定ブロックの、第１マークルツリーのルートノードと、第２マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得する取得ユニットと、  前記第１マークルツリーのルートノードと前記トランザクション標識を検証して、第１検証結果を得る第１検証ユニットと、  前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第２検証結果を得る第２検証ユニットと、  前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第３検証結果を得る第３検証ユニットと、  前記第１検証結果、前記第２検証結果および前記第３検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定する判定ユニットと、を備える、  ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項６】
前記第１検証ユニットは、  前記トランザクションリストのトランザクション標識を用いて第３マークルツリーを構築して、前記第３マークルツリーのルートノードを算出し、  前記第３マークルツリーのルートノードと前記第１マークルツリーのルートノードとが一致するか否かを比較し、  一致する場合に、前記第１マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる、  ことを特徴とする請求項５に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項７】
前記第２検証ユニットは、  前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第４マークルツリーを構築して、前記第４マークルツリーのルートノードを算出し、  前記第４マークルツリーのルートノードと前記第２マークルツリーのルートノードとが一致するか否かを比較し、  一致する場合に、前記第２マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる、  ことを特徴とする請求項５に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項８】
ブロックチェーンネットワークにおける前記第１ノードと第２ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、  前記第１ノードにおける前記指定ブロックのブロックヘッダ情報と前記第２ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、  一致する場合に、前記指定ブロックが有効であると判定し、  前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する第４検証ユニットをさらに備える、  ことを特徴とする請求項５乃至７のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項９】
１つ又は複数のプロセッサと、  １つ又は複数のプログラムを記憶するメモリと、を備え、  前記１つ又は複数のプロセッサは、前記１つ又は複数のプログラムを実行する場合に、請求項１乃至４のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、  ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項１０】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、  当該コンピュータプログラムがプロセッサにより実行される場合に、請求項１乃至４のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、  ことを特徴とするコンピュータ可読記憶媒体。
【請求項１１】
コンピュータにおいて、プロセッサにより実行される場合、請求項１乃至４のいずれか１項に記載のブロックチェーン上のスマートコントラクトの検証方法を実現することを特徴とするプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】  本出願は、２０１８年９月２０日に中国国家知識産権局に出願された、出願番号が２０１８１１１０１３４１．２であり、発明の名称が「ブロックチェーン上のスマートコントラクトの検証方法、装置、及び記憶媒体」である中国特許出願の優先権を主張しており、その全体が参照により本明細書に取り込まれる。本発明は、情報技術分野に関し、特に、ブロックチェーン上のスマートコントラクトの検証方法、装置、コンピュータ可読記憶媒体、及びプログラムに関する。
【国際調査報告】
2021515311.tif 000013
2021515311.tif 000014
2021515311.tif 000015
2021515311.tif 000016