(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-02
(45)【発行日】2022-02-10
(54)【発明の名称】ブロックチェーン上のスマートコントラクトの検証方法、装置、記憶媒体、及びプログラム
(51)【国際特許分類】
G06F 21/64 20130101AFI20220203BHJP
【FI】
G06F21/64
(21)【出願番号】P 2020544505
(86)(22)【出願日】2019-06-17
(86)【国際出願番号】 CN2019091475
(87)【国際公開番号】W WO2020057196
(87)【国際公開日】2020-03-26
【審査請求日】2020-08-21
(31)【優先権主張番号】201811101341.2
(32)【優先日】2018-09-20
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】512015127
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】ジン,ボ
【審査官】岸野 徹
(56)【参考文献】
【文献】国際公開第2018/149345(WO,A1)
【文献】国際公開第2018/137564(WO,A1)
【文献】国際公開第2017/189027(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得ることと、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得ることと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得ることと、
前記第1検証結果、前記第2検証結果及び前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定することと、を含む、
ことを特徴とする
ブロックチェーン上のスマートコントラクトの検証装置により実行されるブロックチェーン上のスマートコントラクトの検証方法。
【請求項2】
前記第1マークルツリーのルートノードと前記トランザクション標識を検証することは、
前記トランザクションリストにおけるトランザクション標識を用いて第3マークルツリーを構築し、前記第3マークルツリーのルートノードを算出することと、
前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となることと、を含む、
ことを特徴とする請求項1に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項3】
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証することは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築し、前記第4マークルツリーのルートノードを算出することと、
前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることと、を含む、
ことを特徴とする請求項1に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項4】
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、
ブロックチェーンネットワークにおける前記第1ノードおよび第2ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得することと、
前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較することと、
一致する場合に、前記指定ブロックが有効であると判定することと、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証することと、をさらに含む、
ことを特徴とする請求項1乃至3のいずれか1項に記載のブロックチェーン上のスマートコントラクトの検証方法。
【請求項5】
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得する取得ユニットと、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得る第1検証ユニットと、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得る第2検証ユニットと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得る第3検証ユニットと、
前記第1検証結果、前記第2検証結果および前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定する判定ユニットと、を備える、
ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項6】
前記第1検証ユニットは、
前記トランザクションリストのトランザクション標識を用いて第3マークルツリーを構築して、前記第3マークルツリーのルートノードを算出し、
前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる、
ことを特徴とする請求項5に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項7】
前記第2検証ユニットは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築して、前記第4マークルツリーのルートノードを算出し、
前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる、
ことを特徴とする請求項5に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項8】
ブロックチェーンネットワークにおける前記第1ノードと第2ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、
前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、
一致する場合に、前記指定ブロックが有効であると判定し、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する第4検証ユニットをさらに備える、
ことを特徴とする請求項5乃至7のいずれか1項に記載のブロックチェーン上のスマートコントラクトの検証装置。
【請求項9】
1つ又は複数のプロセッサと、
1つ又は複数のプログラムを記憶するメモリと、を備え、
前記1つ又は複数のプロセッサは、前記1つ又は複数のプログラムを実行する場合に、請求項1乃至4のいずれか1項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、
ことを特徴とするブロックチェーン上のスマートコントラクトの検証装置。
【請求項10】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、
当該コンピュータプログラムがプロセッサにより実行される場合に、請求項1乃至4のいずれか1項に記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項11】
コンピュータにおいて、プロセッサにより実行される場合、請求項1乃至4のいずれか1項に記載のブロックチェーン上のスマートコントラクトの検証方法を実現することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年9月20日に中国国家知識産権局に出願された、出願番号が201811101341.2であり、発明の名称が「ブロックチェーン上のスマートコントラクトの検証方法、装置、及び記憶媒体」である中国特許出願の優先権を主張しており、その全体が参照により本明細書に取り込まれる。本発明は、情報技術分野に関し、特に、
ブロックチェーン上のスマートコントラクトの検証方法、装置、コンピュータ可読記憶媒
体、及びプログラムに関する。
【背景技術】
【0002】
ブロックチェーンネットワークは、通常、ブロックチェーン上の台帳の完全なデータを維持する全ノードを大量に含んでいる。各ブロックの完全なデータが、これらの全ノードにリアルタイムに同期させられるため、ブロックの有効性を正確に判断することができる。
【0003】
ブロックチェーンネットワークには、携帯電話のようなモバイルクライアントなどの軽量ノードも存在する。これらの軽量ノードは、記憶空間が限られているため、すべてのブロック履歴データを記憶することができない。また、モバイルクライアントの帯域幅が限られ、流量費用が高いので、ブロックのサイズが大きい且つブロックの出力速度が速い場合、各ブロックの完全なデータをモバイルクライアントまでにリアルタイムに同期することも現実的ではない。一方、軽量ノードのハードウェア機能が弱いため、スマートコントラクトをローカルにて繰り返し実行することにより、スマートコントラクトの実行結果がブロックチェーンより同期させられれたブロックと一致するか否かを検証するコストが高すぎる。
【0004】
現在、軽量ノード技術が市販されているが、スマートコントラクトを繰り返し実行しない条件のもとで、軽量ノードにてスマートコントラクトの実行結果を効果的に検証することができない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、少なくとも従来技術における1つまたは複数の技術的課題を解決するために、ブロックチェーン上のスマートコントラクト検証方法、装置、およびコンピュータ可読記憶媒体を提供する。
【課題を解決するための手段】
【0006】
本発明の第1態様は、ブロックチェーン上のスマートコントラクトの検証方法を提供する。当該方法は、
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得することと、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得ることと、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得ることと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得ることと、
前記第1検証結果、前記第2検証結果、及び前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定することと、を含む。
【0007】
1つの実施形態において、前記第1マークルツリーのルートノードと前記トランザクション標識を検証することは、
前記トランザクションリストにおけるトランザクション標識を用いて第3マークルツリーを構築し、前記第3マークルツリーのルートノードを算出することと、
前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となることと、を含む。
【0008】
1つの実施形態において、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証することは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築し、前記第4マークルツリーのルートノードを算出することと、
前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードとが一致するか否かを比較することと、
一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることと、を含む。
【0009】
1つの実施形態において、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、
ブロックチェーンネットワークにおける前記第1ノードおよび第2ノードから前記指定ブロックのブロックヘッダ情報をそれぞれ取得することと、
前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較することと、
一致する場合に、前記指定ブロックが有効であると判定することと、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証することと、をさらに含む。
【0010】
本発明の第2態様は、ブロックチェーン上のスマートコントラクトの検証装置を提供する。当該装置は、
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するための取得ユニットと、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得るための第1検証ユニットと、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得るための第2検証ユニットと、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得るための第3検証ユニットと、
前記第1検証結果、前記第2検証結果および前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するための判定ユニットと、を備える。
【0011】
1つの実施形態において、前記第1検証ユニットは、
前記トランザクションリストのトランザクション標識を用いて第3マークルツリーを構築して、前記第3マークルツリーのルートノードを算出し、
前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる。
【0012】
1つの実施形態において、前記第2検証ユニットは、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築して、前記第4マークルツリーのルートノードを算出し、
前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードとが一致するか否かを比較し、
一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる。
【0013】
1つの実施形態において、ブロックチェーンネットワークにおける前記第1ノードと第2ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、
前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、
一致する場合に、前記指定ブロックが有効であると判定し、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するための第4検証ユニットをさらに備える。
【0014】
1つの可能な実施形態において、ブロックチェーン上のスマートコントラクト検証装置には、ブロックチェーン上のスマートコントラクト検証装置が前述のブロックチェーン上のスマートコントラクト検証方法を実行することをサポートするプログラムを記憶するためのメモリと、メモリに記憶されるプログラムを実行するように構成されるプロセッサとが含まれる。前記ブロックチェーン上のスマートコントラクト検証装置には、ブロックチェーン上のスマートコントラクト検証装置を他の機器や通信ネットワークに通信させるための通信インターフェースがさらに含まれてもよい。
【0015】
本発明の第3態様は、ブロックチェーン上のスマートコントラクトの検証装置を提供する。当該装置は、
1つ又は複数のプロセッサと、
1つ又は複数のプログラムを記憶するためのメモリと、を備え、
前記1つ又は複数のプロセッサは、前記1つ又は複数のプログラムを実行する場合に、前記1つ又は複数のプロセッサに前述の第1態様のいずれかに記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる。
【0016】
本発明の第4態様は、コンピュータ可読媒体を提供する。当該コンピュータ可読媒体には、コンピュータプログラムが記憶され、当該コンピュータプログラムがプロセッサにより実行される場合に、前述の第1態様のいずれかに記載のブロックチェーン上のスマートコントラクトの検証方法を実行させる。
【0017】
上記技術案のうちのいずれか1つの技術案は、以下の利点又は有益な効果を有する。
【0018】
本発明は、完全なブロック情報をダウンロードして記憶する必要がなく、軽量クライアントのローカルにてスマートコントラクトを繰り返し実行する必要もなく、ブロックチェーンネットワークにおいて軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援することができ、これにより、システムリソースを節約し、実行効率を向上させる。
【0019】
上記の略述は、単に説明のために過ぎず、いかなる限定をも目的としない。上記に記載されている例示的な様態、実施形態、及び特徴以外に、図面及び下記の詳細説明を参照することによって、本発明のさらなる様態、実施形態、及び特徴の理解を促す。
【図面の簡単な説明】
【0020】
【
図1】本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【
図2】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【
図3】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法における全ノードが第2マークルツリーを計算するフローチャートである。
【
図4】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【
図5】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【
図6】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
【
図7】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法の軽量ノードでの有効性の検証フローチャートである。
【
図8】本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【
図9】本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【
図10】本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
【発明を実施するための形態】
【0021】
図面において特に規定されない限り、複数の図面において同様の図面符号は、同様又は類似的な部材又はエレメントを示す。これらの図面は必ずしも実際の比例に従って製図されたものではない。これらの図面は本発明に基づいて開示された幾つかの実施形態を描いたものに過ぎず、本発明の範囲に対する制限としてはならないことを理解すべきである。
【0022】
下記において、幾つかの例示的実施形態を簡単に説明する。当業者が把握出来るよう、本発明の主旨又は範囲を逸脱しない限り、様々な方式にから説明された実施形態に変更可能である。従って、図面と説明は制限を加えるものでなく、本質的には例示的なものである。
【0023】
図1は本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
図1に示すように、本発明の実施形態におけるブロックチェーン上のスマートコントラクトの検証方法は、
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するステップS110と、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得るステップS120と、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得るステップS130と、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得るステップS140と、
前記第1検証結果、前記第2検証結果、及び前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するステップS150と、を含む。
前記第1マークルツリーのリーフノードは、前記指定ブロックにおけるすべてのトランザクション標識から構成され、前記第2マークルツリーのリーフノードは、前記指定ブロックにおけるすべてのスマートコントラクトの実行結果から構成される。
【0024】
マークルツリー(Merkle trees)は、ブロックチェーンの重要なデータ構造であり、ブロックデータを迅速に要約してブロックデータの存在性と整合性を検証することができるものである。マークルツリーには、通常、ブロックボディの下層(トランザクション)データベース、ブロックヘッダのルートハッシュ値(すなわち、Merkleルート)及び下層のブロックデータからルートハッシュ値へのすべての分岐が含まれています。マークルツリー演算プロセスは、通常、ブロックボディのデータをグループ化してハッシュ計算を行い、生成された新しいハッシュ値をマークルツリーに挿入して、最後のルートハッシュ値のみが残ってブロックヘッダのMerkleルートとされるまで再帰的に行うことである。最も一般的なマークルツリーは、ビットコインが採用した二叉マークルツリーであり、二叉マークルツリーにおける各ハッシュノードは、常に隣接する2つのデータブロックまたは2つのハッシュ値を含んでいる。
【0025】
ブロックチェーンネットワークには、携帯電話のようなモバイルクライアントなどの軽量ノードが存在する。軽量ノードとしては、記憶空間が限られ、ハードウェア機能が弱い。これにより、軽量ノードにてネットワークより新たに同期させられたスマートコントラクトの実行結果の有効性を検証するための可能な方法を求める必要がある。本発明の実施形態は、ブロックチェーンネットワークにおいて、軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援する方法を提供する。本発明の実施形態における具体的な検証方法は、以下のステップS120~S140を含む。
【0026】
ステップS120では、ブロックヘッダ情報における第1マークルツリーのルートノードがトランザクションリストにおけるトランザクション標識にマッチングするか否かを検証する。
【0027】
ステップS130では、ブロックヘッダ情報における第2マークルツリーのルートノードがトランザクションリストにおけるスマートコントラクトの実行結果にマッチングするか否かを検証する。
【0028】
ステップS140では、ブロックヘッダ情報における指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証する。
【0029】
ここで、ステップS120とステップS130との実行順序は、入れ替え可能である。あるいは、他の実施形態では、ステップS120とステップS130とが並列に実行されてもよい。
【0030】
本発明の実施形態は、ブロックチェーン技術を利用する任意の軽量ノードに適用できる。軽量ノードは、モバイルクライアントデバイスを含むが、これに限られない。
【0031】
図2は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
図2に示すように、本発明の実施形態における具体的な実施手順は、以下の通りである。
【0032】
ステップS105では、ブロックヘッダのチェーンデータ構造をローカルにてメンテナンスする。
【0033】
A、ブロックヘッダには、
i、ブロックid(identification、標識)と、
ii、一つ前のブロックidと、
iii、第1マークルツリーのルートノードhash(ハッシュ値)と、
iv、第2マークルツリーのルートノードhashとのデータが含まれている。
【0034】
B、各ブロックヘッダは、一つ前のブロックのブロックヘッダを指向し、これにより、チェーンデータ構造を維持している。ジェネシスブロックのブロックヘッダが指向している一つ前のブロックidは、0になっている。
【0035】
第1マークルツリーの最下層のリーフノードは、当該ブロックに含まれるすべてのUTXO(Unspent Transaction Output、未使用トランザクションアウトプット)のトランザクションidから構成されている。ここで、トランザクションidは、トランザクション内容をハッシュ計算することで得られるが、トランザクション内容にスマートコントラクトの実行結果が含まれていない。
【0036】
第2マークルツリーの最下層のリーフノードは、当該ブロックに含まれるすべてのスマートコントラクトの実行結果から構成されている。1つのトランザクションがスマートコントラクトの実行に関わる場合に、スマートコントラクトの実行結果は、新しいフィールドに記憶される。これらの新しいフィールドは、1つのマークルツリーを構成する。
【0037】
各トランザクションに関わるスマートコントラクトの実行結果は、次の2つの部分から構成されている。
【0038】
v-1、1つのマークルツリーのルートノード。VM(Virtual Machine、仮想マシン)は、1つのトランザクションに関わるスマートコントラクトを実行したたびに、スマートコントラクトのデータ内容を記憶するデータ構造を変更する。すべてのデータは、このマークルツリーを構成している。
【0039】
v-2、今回のトランザクションに関わるスマートコントラクトの実行による実行結果。
【0040】
図3は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法における全ノードが第2マークルツリーを計算するフローチャートである。
図3において、State-Keyは、スマートコントラクトの実行結果に対応する値(state)とキー値(key)とのデータとを表している。「Key state snapshots when Smart Contration has been invoked」は、スマートコントラクトの実行による実行結果に対応する値とキー値とのデータのスナップショットを表している。State-Key1とState-Key2に対するハッシュ計算をそれぞれ行うことにより、2つのリーフノードHash L-LEAFを得る。さらに、2つのリーフノードHash L-LEAFに対するハッシュ計算を行うことにより、枝ノードHash X-BRANCHを得る。2つの枝ノードHash X-BRANCHとHash Y-BRANCHに対するハッシュ計算を行うことにより、前述のv-1におけるマークルツリーのルートノード、すなわち、「State DB merkle root when Smart Contract has been Invoked-Tx B」(スマートコントラクトBを実行した後のマークルツリーのルート値のデータベース)を生成する。「Smart Contract Invoke Result」は、スマートコントラクトの実行結果を表している。「Smart Contract Invoke Response-Tx B」は、スマートコントラクトBの実行結果を表している。「State DB merkle root when Smart Contract has been Invoked-Tx B」に対するハッシュ計算を行うことにより、Hash 4-LEAFを得、「Smart Contract Invoke Response-Tx B」に対するハッシュ計算を行うことにより、Hash 3-LEAFを得、Hash 4-LEAFとHash 3-LEAFに対するハッシュ計算を行うことにより、枝ノード「Hash6-BRANCH(Hash of smart contract result-Tx B、すなわち、スマートコントラクトBの実行結果のハッシュ値)」を得る。最後に、hash6-BRANCHと「hash5-BRANCH(Hash of smart contract result-Tx A、すなわち、スマートコントラクトAの実行結果のハッシュ値)」に対するハッシュ計算を行うことにより、ルートノード「hash7-Root(Hash of Branches、すなわち、枝のハッシュ値)」を得る。「Merkle Tree used for Generating Root」は、ルートノードを生成するマークルツリーを表している。
【0041】
ステップS110では、ブロックチェーンネットワークからランダムに選択する、あるいはユーザが第1ノードを指定することにより、データ同期を行い、指定ブロックのブロックヘッダとトランザクションリストとを取得する。指定ブロックをXで表す場合、このステップにおいて、ブロックXの情報の一部であるブロックヘッダ、UTXOトランザクションリスト(トランザクションidやトランザクションに関わるスマートコントラクトの実行結果などを含む)を取得する。ここで、第1ノードは、ブロックチェーンネットワークの全ノードである。
【0042】
ステップS115では、第1ノードと第2ノードから取得されたデータが一致するか否かを比較する。
【0043】
図4は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
図4に示すように、1つの可能な実施形態において、ステップS140では、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証する前に、ステップS115が実行される。ステップS115は、具体的に、
ブロックチェーンネットワークにおける前記第1ノードおよび第2ノードから前記指定ブロックのブロックヘッダ情報をそれぞれ取得するステップS410と、
前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較するステップS420と、
一致する場合に、前記指定ブロックが有効であると判定するS430と、
前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するステップS440と、を含む。
【0044】
一例において、ステップS115は、具体的に、次のステップを含んでもよい。
【0045】
さらに、ブロックチェーンネットワークからランダムに選択する、あるいはユーザが第2ノードを指定することにより検索を行い、検索条件は、ステップS110で取得されたブロックXのヘッダに含まれるブロックidである。そして、当該対象ブロックidに基づいて、第2ノードにおいて、ブロックXに対応するブロックヘッダZを検索し得た。ここで、第2ノードは、ブロックチェーンネットワークにおける全ノードである。
【0046】
ブロックXのヘッダの第1マークルツリーのルートと、第2マークルツリーのルートと、一つ前のブロックidとが第2ノードから得られたブロックヘッダZの情報にマッチングするか否かを比較する。マッチングする場合には、ブロックXが実際に有効であることを示す。
【0047】
図5は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
図5に示すように、1つの可能な実施形態において、ステップS120では、前記第1マークルツリーのルートノードと前記トランザクション標識を検証し、具体的に、
前記トランザクションリストにおけるトランザクション標識を用いて第3マークルツリーを構築し、前記第3マークルツリーのルートノードを算出するステップS210と、
前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードとが一致するか否かを比較するステップS220と、
一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となるステップS230と、を含んでもよい。
【0048】
具体的には、ブロックXのブロックヘッダがトランザクションidのリストにマッチングするか否かを検証する。トランザクションidを1つのマークルツリー(すなわち、第3マークルツリー)に構成させ、その最終のマークルツリーのルートを算出する。そして、算出された第3マークルツリーのルートとブロックヘッダに含まれる第1マークルツリーのルートノードhashとが一致するか否かを比較する。一致する場合に、検証ブロックXのブロックヘッダがトランザクションidのリストにマッチングすることを示し、つまり、第1マークルツリーのルートノードが前記トランザクション標識にマッチングすることを示す。これにより、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となる。
【0049】
図6は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法のフローチャートである。
図6に示すように、1つの可能な実施形態において、ステップS130では、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証し、具体的に、
前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築し、前記第4マークルツリーのルートノードを算出するステップS310と、
前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードとが一致するか否かを比較するステップS320と、
一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクト実行結果が検証合格となるステップS330と、を含んでもよい。
【0050】
具体的には、ブロックXのブロックヘッダがスマートコントラクトの実行結果リストにマッチングするか否かを検証する。スマートコントラクトの実行結果を1つのマークルツリー(すなわち、第4マークルツリー)に構成し、その最終のマークルツリーのルートを算出する。そして、算出された第4マークルツリーのルートとブロックヘッダに含まれる第2マークルツリーのルートノードが一致するか否かを比較する。一致する場合に、ブロックXのブロックヘッダがスマートコントラクトの実行結果リストにマッチングすることを示し、つまり、第2マークルツリーのルートノードが前記スマートコントラクトの実行結果にマッチングすることを示す。これにより、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となる。
【0051】
ステップS140では、ブロックXのブロックヘッダに含まれる一つ前のブロックidがローカルにてメンテナンスされたブロックヘッダチェーン構造にあるか否かを判断する。
【0052】
ステップS150では、以上のステップS115、ステップS120、ステップS130およびステップS140にて検証合格である場合、前記スマートコントラクトの実行結果が有効であると判断する。最後の検証ステップS140では、ブロックXのブロックヘッダに含まれる一つ前のブロックidがローカルにてメンテナンスされたブロックヘッダチェーン構造にあると判断した場合、実際に有効なブロックXのブロックヘッダを、ローカルにてメンテナンスされたブロックヘッダチェーンのデータベースに記憶する。
【0053】
上記ステップにおいて、ステップS115は省略可能な実行ステップであり、検証の応答時間に対する要求が相対的に高い場合に、ステップS115が実行されなくてもよい。
【0054】
また、ステップS115、ステップS120、ステップS130については、これらの実行順序を入れ替えてもよく、あるいは、他の実施形態において、ステップS115、ステップS120、ステップS130は、並列に実行されてもよい。これらの3つのステップの実行が完了した後、ステップS140が実行される。
【0055】
図7は、本発明の他の実施形態に係るブロックチェーン上のスマートコントラクトの検証方法の軽量ノードでの有効性の検証フローチャートである。
図7に示すように、一例において、ブロックチェーン上のスマートコントラクトの検証方法の具体的な実行ステップは、以下の通りである。
【0056】
1、軽量ノードは、全ノード1より最新のブロックのヘッダ(2つのマークルツリーを含む必要がある)、トランザクションidリスト及びスマートコントラクトの実行結果リストが同期される。
【0057】
2、ブロックの正当性を検証する。検証の具体的な手順は、前述のステップS115、ステップS120、ステップS130およびステップS140を含んでもよい。
【0058】
3、全ノード2において同一のブロックのブロックヘッダを検索し、2つのマークルツリーのルート及び指向される一つ前のブロックidが全ノード1より同期されたデータに一致するか否かを比較する。比較の具体的な手順は、上記のステップS115を含んでもよい。
【0059】
4、トランザクションidリストとスマートコントラクトの実行結果とを検証する。
4.1、tx(Transaction、取引)idリストがブロックヘッダの第1マークルツリーのルートにマッチングするか否かを判断し、例えば、純支払トランザクションを検証する。
4.2、スマートコントラクトの実行結果リストがブロックヘッドの第2マークルツリーのルートにマッチングするか否かを判断し、すなわち、スマートコントラクトに関わるトランザクションを検証する。
【0060】
上記の全ての手順で検証に成功した場合に、真に有効なブロックヘッダが記憶される。
【0061】
上記技術案のうちのいずれか1つの技術案は、以下の利点又は有益な効果を有する。
【0062】
完全なブロック情報をダウンロードして記憶する必要がなく、軽量クライアントのローカルにてスマートコントラクトを繰り返し実行する必要もなく、ブロックチェーンネットワークにおいて軽量ノードがスマートコントラクトの実行結果の有効性を判断することを支援することができ、これにより、システムリソースを節約し、実行効率を向上させる。
【0063】
図8は、本発明の一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
図8に示すように、本発明の実施形態に係るブロックチェーン上のスマートコントラクトの検証装置は、
ブロックチェーンネットワークにおける第1ノードから指定ブロックの、第1マークルツリーのルートノードと、第2マークルツリーのルートノードと、前記指定ブロックの一つ前のブロックの標識とを含むブロックヘッダ情報と、トランザクション標識とスマートコントラクトの実行結果とを含むトランザクションリストとを取得するための取得ユニット100と、
前記第1マークルツリーのルートノードと前記トランザクション標識を検証して、第1検証結果を得るための第1検証ユニット200と、
前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果を検証して、第2検証結果を得るための第2検証ユニット300と、
前記指定ブロックの一つ前のブロックの標識が予め記憶されたブロックヘッダチェーン構造にあるか否かを検証して、第3検証結果を得るための第3検証ユニット400と、
前記第1検証結果、前記第2検証結果および前記第3検証結果の全てが検証合格である場合に、前記スマートコントラクトの実行結果が有効であると判定するための判定ユニット500と、を備え、
前記第1マークルツリーのリーフノードは、前記指定ブロックのすべてのトランザクション標識から構成され、前記第2マークルツリーのリーフノードは、前記指定ブロックのすべてのスマートコントラクトの実行結果から構成される。
【0064】
1つの実施形態において、前記第1検証ユニット200は、前記トランザクションリストのトランザクション標識を用いて第3マークルツリーを構築して、前記第3マークルツリーのルートノードを算出し、前記第3マークルツリーのルートノードと前記第1マークルツリーのルートノードが一致するか否かを比較し、一致する場合に、前記第1マークルツリーのルートノードと前記トランザクション標識が検証合格となることにさらに用いられる。
【0065】
1つの実施形態において、前記第2検証ユニット300は、前記トランザクションリストにおけるスマートコントラクトの実行結果を用いて第4マークルツリーを構築して、前記第4マークルツリーのルートノードを算出し、前記第4マークルツリーのルートノードと前記第2マークルツリーのルートノードが一致するか否かを比較し、一致する場合に、前記第2マークルツリーのルートノードと前記スマートコントラクトの実行結果が検証合格となることにさらに用いられる。
【0066】
図9は、本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
図9に示すように、1つの実施形態において、ブロックチェーンネットワークにおける前記第1ノードと第2ノードから、前記指定ブロックのブロックヘッダ情報をそれぞれ取得し、前記第1ノードにおける前記指定ブロックのブロックヘッダ情報と前記第2ノードにおける前記指定ブロックのブロックヘッダ情報とが一致するか否かを比較し、一致する場合に、前記指定ブロックが有効であると判定し、前記指定ブロックが有効であると判定した場合に、前記指定ブロックの一つ前のブロック標識が予め記憶されたブロックヘッドチェーン構造にあるか否かを検証するための第4検証ユニット600をさらに備える。
【0067】
本発明の実施形態のブロックチェーン上のスマートコントラクト検証装置における各ユニットの機能は、前述の方法に関する説明を参照することができ、ここではその説明を省略する。
【0068】
1つの可能な実施形態において、ブロックチェーン上のスマートコントラクトの検証装置には、ブロックチェーン上のスマートコントラクトの検証装置が前述のブロックチェーン上のスマートコントラクトの検証方法を実行することをサポートするプログラムを記憶するためのメモリと、メモリに記憶されるプログラムを実行するように構成されるプロセッサとが含まれる。前記ブロックチェーン上のスマートコントラクトの検証装置には、ブロックチェーン上のスマートコントラクトの検証装置が他の機器や通信ネットワークと通信するための通信インターフェースがさらに含まれてもよい。
【0069】
図10は、本発明の又一実施形態に係るブロックチェーン上のスマートコントラクトの検証装置のブロック構成図である。
図10に示すように、当該装置は、メモリ101とプロセッサ102とを備える。メモリ101には、プロセッサ102で実行可能なコンピュータプログラムが記憶され、前記プロセッサ102は、前記コンピュータプログラムを実行するとき、上記実施形態に係るブロックチェーン上のスマートコントラクトの検証方法を実現させる。メモリ101とプロセッサ102の数は、1つ又は複数であってもよい。
【0070】
前記検証装置は、周辺機器と通信し、データを交換・転送するための通信インターフェース103をさらに備える。
【0071】
メモリ101は、高速RAMメモリを含む可能性もあり、不揮発性メモリ(non-volatile memory)、例えば、少なくとも1つの磁気ディスクメモリをさらに含む可能性もある。
【0072】
メモリ101、プロセッサ102及び通信インターフェース103が個別に実現される場合、メモリ101、プロセッサ102及び通信インターフェース103は、バスによって相互接続して相互通信を行うことができる。前記バスは、インダストリスタンダードアーキテクチャ(ISA、Industry Standard Architecture)バス、外部デバイス相互接続(PCI、Peripheral Component Interconnect)バス、又は拡張インダストリスタンダードアーキテクチャ(EISA、Extended Industry Standard Component)バス等であってもよい。前記バスは、アドレスバス、データバス、制御バス等として分けられることが可能である。表示の便宜上、
図10に1本の太線のみで表示するが、バスが1つ又は1種類のみであることを意味しない。
【0073】
任意選択で、具体的に実現する時、メモリ101、プロセッサ102及び通信インターフェース103が1枚のチップに統合される場合、メモリ101、プロセッサ102及び通信インターフェース103は、内部インターフェースによって、相互通信を実現することができる。
【0074】
さらに、本発明の実施形態は、プロセッサによって実行されるときに、前述のブロックチェーン上のスマートコントラクトの検証方法のいずれかに記載の方法を実現するコンピュータプログラムが記憶されるコンピュータ可読記憶媒体を提供する。
【0075】
本明細書において、「1つの実施形態」、「幾つかの実施形態」、「例」、「具体例」或いは「一部の例」などの用語とは、当当該実施形態或いは例で説明された具体的特徴、構成、材料或いは特点を結合して、本発明の少なくとも1つの実施形態或いは実施形態に含まれることを意味する。また、説明された具体的特徴、構成、材料或いは特点は、いずれか1つ或いは複数の実施形態または例において適切に結合することが可能である。また、矛盾しない限り、当業者は、本明細書の異なる実施形態または例、および、異なる実施形態または例における特徴を結合したり、組み合わせたりすることができる。
【0076】
また、用語「第1」、「第2」とは比較的重要性を示している又は暗示しているわけではなく、単に説明のためのものであり、示される技術的特徴の数を暗示するわけでもない。そのため、「第1」、「第2」で限定される特徴は、少なくとも1つの当当該特徴を明示又は暗示的に含むことが可能である。本出願の記載の中において、「複数」の意味とは、明確的に限定される以外に、2つ又は2つ以上を意味する。
【0077】
フローチャート又はその他の方式で説明された、いかなるプロセス又は方法に対する説明は、特定な論理的機能又はプロセスのステップを実現するためのコマンドのコードを実行可能な1つ又はそれ以上のモジュール、断片若しくはセグメントとして理解することが可能であり、さらに、本発明の好ましい実施形態の範囲はその他の実現を含み、示された、又は、記載の順番に従うことなく、係る機能に基づいてほぼ同時にまたは逆の順序に従って機能を実行することを含み、これは当業者が理解すべきことである。
【0078】
フローチャートに示された、又はその他の方式で説明された論理及び/又はステップは、例えば、論理機能を実現させるための実行可能なコマンドのシーケンスリストとして見なされることが可能であり、コマンド実行システム、装置、又はデバイス(プロセッサのシステム、又はコマンド実行システム、装置、デバイスからコマンドを取得して実行することが可能なその他のシステムを含むコンピュータによるシステム)が使用できるように提供し、又はこれらのコマンドを組み合わせて使用するコマンド実行システム、装置、又はデバイスに使用されるために、いかなるコンピュータ読取可能媒体にも具体的に実現されることが可能である。本明細書において、「コンピュータ読取可能媒体」は、コマンド実行システム、装置、デバイス、又はこれらのコマンドを組み合わせて実行するシステム、装置又はデバイスが使用できるように提供するため、プログラムを格納、記憶、通信、伝搬又は伝送する装置であってもよい。コンピュータ読み取り可能媒体のから具体的例(非網羅的なリスト)として、1つ又は複数の布配線を含む電気接続部(電子装置)、ポータブルコンピュータディスク(磁気装置)、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去書き込み可能リード・オンリー・メモリ(EPROM又はフラッシュメモリ)、光ファイバー装置、及びポータブル読み取り専用メモリ(CDROM)を少なくとも含む。また、コンピュータ読み取り可能媒体は、そのうえで前記プログラムを印字できる紙又はその他の適切な媒体であってもよく、例えば紙又はその他の媒体に対して光学的スキャンを行い、そして編集、解釈又は必要に応じてその他の適切の方式で処理して電子的方式で前記プログラムを得、その後コンピュータメモリに記憶することができるためである。
【0079】
なお、本発明の各部分は、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせによって実現されることができる。上記実施形態において、複数のステップ又は方法は、メモリに記憶された、適当なコマンド実行システムによって実行されるソフトウェア又はファームウェアによって実施されることができる。例えば、ハードウェアによって実現するとした場合、別の実施形態と同様に、データ信号に対して論理機能を実現する論理ゲート回路を有する離散論理回路、適切な混合論理ゲート回路を有する特定用途向け集積回路、プログラマブルゲートアレイ(GPA)、フィールドプログラマブルゲートアレイ(FPGA)などといった本技術分野において公知である技術のうちのいずれか1つ又はそれらの組み合わせによって実現される。
【0080】
当業者は、上記の実施形態における方法に含まれるステップの全部又は一部を実現するのは、プログラムによって対応するハードウェアを指示することによって可能であることを理解することができる。前記プログラムは、コンピュータ読取可能な媒体に記憶されてもよく、当当該プログラムが実行されるとき、方法の実施形態に係るステップのうちの1つ又はそれらの組み合わせを含むことができる。
【0081】
また、本発明の各実施形態における各機能ユニットは、1つの処理モジュールに統合されてよく、別個の物理的な個体であってもよく、2つ又は3つ以上のユニットが1つのモジュールに統合されてもよい。上記の統合モジュールは、ハードウェアで実現されてもよく、ソフトウェア機能モジュールで実現されてもよい。上記の統合モジュールが、ソフトウェア機能モジュールで実現され、しかも独立した製品として販売又は使用される場合、コンピュータ読取可能な記憶媒体に記憶されてもよい。前記記憶媒体は読取専用メモリ、磁気ディスク又は光ディスク等であってもよい。
【0082】
上記の記載は、単なる本発明の具体的な実施形態に過ぎず、本発明の保護範囲はそれに限定されることなく、当業者が本発明に開示されている範囲内において、容易に想到し得る変形又は置換は、全て本発明の範囲内に含まれるべきである。そのため、本発明の範囲は、記載されている特許請求の範囲に準じるべきである。