(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-27
(45)【発行日】2022-02-04
(54)【発明の名称】スマートコントラクトに基づくデータ処理方法、装置、機器及び記憶媒体
(51)【国際特許分類】
G06F 16/182 20190101AFI20220128BHJP
【FI】
G06F16/182
(21)【出願番号】P 2021024139
(22)【出願日】2021-02-18
【審査請求日】2021-02-18
(31)【優先権主張番号】202010104354.6
(32)【優先日】2020-02-20
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】512015127
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100163050
【氏名又は名称】小栗 眞由美
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】サン, ジュンイー
(72)【発明者】
【氏名】ワン, ユカオ
(72)【発明者】
【氏名】シャオ,ウェイ
【審査官】鹿野 博嗣
(56)【参考文献】
【文献】米国特許出願公開第2020/0050691(US,A1)
【文献】特開2020-013542(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/182
(57)【特許請求の範囲】
【請求項1】
スマートコントラクトに基づくデータ処理方法であって、ブロックチェーンネットワーク内の裏書きノードによって実行され、
スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するステップと、
ブロックチェーンネットワーク内の他のノードが、裏書き処理結果にしたがって現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、前記現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得するステップと、
を含むスマートコントラクトに基づくデータ処理方法。
【請求項2】
裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するステップが、
裏書きブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、裏書きブロックチェーンの現在ブロック時間を決定するステップと、
前記裏書きブロックチェーンの現在ブロック時間を前記裏書きの現在時間とするステップと、
を含む請求項1に記載の方法。
【請求項3】
前記スマートコントラクトが現在時間取得関数を実行する際に、前記裏書きの現在時間を実行する決定操作がトリガーされる請求項1に記載の方法。
【請求項4】
スマートコントラクトの呼び出し中に、前記他のノードが前記裏書きブロックチェーンの最後のブロックの高さに基づいて前記裏書き処理結果を検証するようにするために、裏書きブロックチェーンの最後のブロックの高さを決定するステップを含む請求項1に記載の方法。
【請求項5】
ブロックチェーンネットワーク内の他のノードによって実行され、
現在のトランザクション処理要求及び裏書き処理結果を受信するステップであって、前記裏書き処理結果は、裏書きノードがスマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られるステップと、
スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するステップと、
前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得するステップと、
前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得するステップと、
を含むスマートコントラクトに基づくデータ処理方法。
【請求項6】
ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するステップが、
ローカルブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、ローカルブロックチェーンの現在ブロック時間を決定するステップと、
前記ローカルブロックチェーンの現在ブロック時間を前記ローカル現在時間とするステップと、
を含む請求項5に記載の方法。
【請求項7】
スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定する前に、
裏書きブロックチェーンの最後のブロックの高さを受信するステップと、
ローカルブロックチェーンの最後のブロックの高さを決定するステップと、
前記裏書きブロックチェーンの最後のブロックの高さが前記ローカルブロックチェーンの最後のブロックの高さと一致しなければ、操作を終了するステップと、
を含む請求項5に記載の方法。
【請求項8】
検証結果にしたがって最終処理結果を取得するステップが、
前記他のノードがブロック生成ノードであり、且つ、前記検証結果が一致する場合、現在ブロックを生成して前記最終処理結果とするステップと、
前記他のノードがブロック検証ノードであり、且つ、前記検証結果が一致する場合、現在ブロックが検証にパスしたと決定して前記最終処理結果とするステップと、
を含む請求項5に記載の方法。
【請求項9】
ブロックチェーンネットワーク内の裏書きノードに配置され、
スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するための裏書き時間モジュールと、
ブロックチェーンネットワーク内の他のノードが裏書き処理結果にしたがって現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、前記現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得するための要求前処理モジュールと、
を備えるスマートコントラクトに基づくデータ処理装置。
【請求項10】
ブロックチェーンネットワーク内の他のノードに配置され、
現在のトランザクション処理要求及び裏書き処理結果を受信するための受信モジュールであって、前記裏書き処理結果は、裏書きノードがスマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られる受信モジュールと、
スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するためのローカル時間モジュールと、
前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得するための要求処理モジュールと、
前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得するための結果検証モジュールと、
を備えるスマートコントラクトに基づくデータ処理装置。
【請求項11】
少なくとも1つのプロセッサと、
該少なくとも1つのプロセッサに通信可能に接続されるメモリと、
を備え、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサによって実行される場合に、前記少なくとも1つのプロセッサが請求項1から8のいずれか一項に記載の方法を実行可能な電子機器。
【請求項12】
コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ命令が、コンピュータに、請求項1から8のいずれか一項に記載の方法を実行させるために用いられる非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項13】
コンピュータ上で動作しているときに、請求項1から8のいずれか一項に記載の方法を前記コンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願の実施例は、コンピュータ技術の分野に関し、特に、ブロックチェーン技術の分野に関し、具体的には、スマートコントラクトに基づくデータ処理方法、装置、電子機器及び記憶媒体に関する。
【背景技術】
【0002】
ブロックチェーンは、分散型データストレージ、ポイントツーポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムなどのコンピュータ技術の新しい応用モードである。ブロックチェーン技術の分野において、スマートコントラクトとは、改ざん不可能で、自動的に実行されるコンピュータプログラムをいう。
【0003】
Fabric及びバイドゥスーパーチェーンなどのような一部のブロックチェーンネットワークにおいて、スマートコントラクトは予備実行メカニズムに基づいて実行され、即ち、トランザクション処理要求がブロックにパッケージ化される前に、先に、裏書きノードによってトランザクション処理要求が予備実行され、ブロックチェーンネットワーク内の他のノードが裏書きノードの予備実行結果にしたがってトランザクション処理要求を処理する。
【0004】
予備実行メカニズムにおいて、異なるノードのクロックが一致せず、ネットワーク遅延があるなどの理由のため、スマートコントラクトの開発者に時間を取得する能力が提供され、即ち、時間に依存するスマートコントラクトを実現することができない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本出願の実施例は、スマートコントラクトに基づくデータ処理方法、装置、機器及び記憶媒体を開示し、予備実行メカニズムにおいて、時間に依存するスマートコントラクトを実現することができる。
【課題を解決するための手段】
【0006】
第1態様では、本出願の実施例は、スマートコントラクトに基づくデータ処理方法を開示し、当該方法は、スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するステップと、ブロックチェーンネットワーク内の他のノードが前記裏書き処理結果にしたがって前記現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得するステップと、を含む。
【0007】
上記出願における一実施例は、以下のような利点と有益な効果を有する。スマートコントラクトの呼び出し中に、ブロックチェーンにおける最後のブロック時間に基づいて現在時間を決定し、現在時間に基づいて現在のトランザクション処理要求を処理する。ブロックチェーンネットワークにおける異なるノードは、最長ブロックチェーンに更新される限り、スマートコントラクトの実行中に決定された現在時間は同じであるため、異なるノードのスマートコントラクトの処理結果は一致し、即ち、予備実行メカニズムでは、時間に依存するスマートコントラクトがサポートされる。
【0008】
また、本出願の上記実施例によるスマートコントラクトに基づくデータ処理方法は、以下のような付加的な技術的特徴をさらに有してもよい。
【0009】
選択可能に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するステップが、裏書きブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、裏書きブロックチェーンの現在ブロック時間を決定するステップと、前記裏書きブロックチェーンの現在ブロック時間を前記裏書きの現在時間とするステップと、を含む。
【0010】
選択可能に、前記スマートコントラクトが現在時間取得関数を実行する際に、前記裏書きの現在時間を実行する決定操作がトリガーされる。
【0011】
上記出願における一実施例は、以下のような利点と有益な効果を有する。ブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔によって、ブロックチェーンの現在ブロック時間が決定でき、つまり、予備実行メカニズムは、現在ブロックが生成される前に現在ブロック時間を決定し、現在ブロック時間を利用して現在のトランザクション処理要求を処理し、且つ、現在時間の誤差を1回のブロック生成時間間隔内に制御することができ、スマートコントラクトの処理精度を向上させた。
【0012】
選択可能に、前記方法は、スマートコントラクトの呼び出し中に、前記他のノードが前記裏書きブロックチェーンの最後のブロックの高さに基づいて前記裏書き処理結果を検証するようにするために、裏書きブロックチェーンの最後のブロックの高さを決定するステップをさらに含む。
【0013】
上記出願における一実施例は、以下のような利点と有益な効果を有する。裏書きノードスマートコントラクトの呼び出し中に、裏書きブロックチェーンの最後のブロックの高さを決定することにより、後続で他のノードが最後のブロックの高さとの比較で裏書きブロックチェーン又は他のノードにおけるブロックチェーンの高さが一致するか否かを決定し、一致しなければ、操作を終了するため、他のノードのトランザクション処理効率を向上させることができる。
【0014】
第2態様では、本出願の実施例は、スマートコントラクトに基づくデータ処理方法を開示し、当該方法は、現在のトランザクション処理要求及び裏書き処理結果を受信するステップであって、前記裏書き処理結果は、裏書きノードが前記スマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られるステップと、スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するステップと、前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得するステップと、前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得するステップと、を含む。
【0015】
第3態様では、本出願の実施例は、スマートコントラクトに基づくデータ処理装置を開示し、当該装置は、スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するための裏書き時間モジュールと、ブロックチェーンネットワーク内の他のノードが前記裏書き処理結果にしたがって前記現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得するための要求前処理モジュールと、を備える。
【0016】
第4態様では、本出願の実施例は、スマートコントラクトに基づくデータ処理装置を開示し、現在のトランザクション処理要求及び裏書き処理結果を受信するための受信モジュールであって、前記裏書き処理結果は、裏書きノードが前記スマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られる受信モジュールと、スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するためのローカル時間モジュールと、前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得するための要求処理モジュールと、前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得するための結果検証モジュールと、を備える。
【0017】
第5態様では、本出願の実施例は、電子機器を提供し、当該電子機器は、
少なくとも1つのプロセッサと、該少なくとも1つのプロセッサに通信可能に接続されるメモリと、を備え、前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが本出願のいずれの実施例に記載のスマートコントラクトに基づくデータ処理方法を実行できるように、前記少なくとも1つのプロセッサによって実行される。
【0018】
第6態様では、本出願の実施例はコンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体を提供し、前記コンピュータ命令は、コンピュータに本出願のいずれの実施例に記載のスマートコントラクトに基づくデータ処理方法を実行させるために用いられる。
【0019】
第7態様では、本出願の実施例はコンピュータプログラムを提供し、前記コンピュータプログラムは、前記コンピュータに本出願のいずれの実施例に記載のスマートコントラクトに基づくデータ処理方法を実行させるために用いられる。
【0020】
上記選択可能な方法が有する他の効果を、以下で具体的には実施例を参照しながら説明する。
【図面の簡単な説明】
【0021】
図面は、本技術案をよりよく理解するために使用され、本出願を限定するものではない。
【
図1】本出願の第1実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートである。
【
図2】本出願の第2実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートである。
【
図3】本出願の第3実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートである。
【
図4】本出願の第4実施例によるスマートコントラクトに基づくデータ処理装置の構造図である。
【
図5】本出願の第5実施例によるスマートコントラクトに基づくデータ処理装置の構造図である。
【
図6】本出願の実施例のスマートコントラクトに基づくデータ処理方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0022】
以下、図面を組み合わせて本出願の例示的な実施例を説明し、理解を容易にするためにその中には本出願の実施例の様々な詳細事項が含まれており、それらは単なる例示的なものと見なされるべきである。したがって、当業者は、本出願の範囲及び精神から逸脱することなく、ここで説明される実施例に対して様々な変更と修正を行うことができる。同様に、わかりやすくかつ簡潔にするために、以下の説明では、周知の機能及び構造の説明を省略する。
【0023】
第1実施例
図1は、本出願の第1実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートであり、本実施例は、予備実行メカニズムに基づいて、時間に依存するスマートコントラクトを呼び出して、トランザクション要求を処理する状況に適用でき、当該方法は、ブロックチェーンネットワーク内の裏書きノードに配置されたスマートコントラクトに基づくデータ処理装置によって実行でき、当該装置は、ソフトウェア及び/又はハードウェアの形態で実現される。
図1に示すように、当該方法は、具体的には、S110とS120とを含む。
【0024】
S110、スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定する。
【0025】
予備実行メカニズムに基づいて、ブロックチェーンネットワークは少なくとも1つの裏書きノードを決定する。例えば、バイドゥスーパーチェーンでは、単一のブロック生成周期内で裏書きノードを1つのみ決定し、ユーザノードのトランザクション処理要求を裏書きノードに送信して予備実行を行い、裏書きノードは予備実行結果をユーザノードに返す。ユーザノードは、予備実行結果及びトランザクション処理要求をブロックチェーンネットワークに送信して処理する。Fabricブロックチェーンは、単一のブロック生成周期内に、裏書きノードを少なくとも2つ決定し、各々のトランザクション処理要求は、いずれも前処理のために少なくとも2つの裏書きノードを必要とする。本出願の実施例は、裏書きノードの決定方法について具体的に限定しない。
【0026】
本出願の実施例では、裏書きブロックチェーンとは、裏書きノードにおけるブロックチェーンをいい、スマートコントラクトとは、時間に依存するスマートコントラクトをいい、裏書きの現在時間とは、裏書きノードによって決定される現在時間をいう。
【0027】
具体的には、裏書きノードは、スマートコントラクトを呼び出して、ユーザノードから取得した現在のトランザクション処理要求に対して前処理を行う中で、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定し、例えば、最後のブロック時間を直接裏書きの現在時間とするか、又は最後のブロック時間に対して予め設定された処理を行った後、裏書きの現在時間を取得する。裏書きの現在時間は、裏書きブロックチェーンにおける最後のブロック時間によって決定されるため、ノードのクロックと関係なく、且つ、裏書きノード自体に裏書きブロックチェーンが記憶されているため、通信操作を必要とせず、裏書きの現在時間を決定することができる。ブロックチェーンネットワークの最長チェーン原則に基づき、ブロックチェーンネットワーク内で最長チェーンに更新されたノードによって決定される現在時間は同じであり、即ち、ブロックチェーンネットワークの現在時間を取得することができ、あるノードによって決定される現在時間がブロックチェーンネットワークの現在時間と異なる場合、当該ノードのブロックチェーンは最長ブロックチェーンではなく、即ち、当該ノードによって処理されたデータを捨ててもよい。当該ノードは、裏書きノード、ブロック生成ノード又は検証ノードであり得る。
【0028】
S120、ブロックチェーンネットワーク内の他のノードが前記裏書き処理結果にしたがって前記現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得する。
【0029】
本出願の実施例では、スマートコントラクトは、裏書きの現在時間に基づいて、現在のトランザクション処理データセットに対して前処理を行うことにより、スマートコントラクトの読み書きセットを取得して裏書き処理結果とする。ここで、スマートコントラクトの読み書きセットのうち、読み集合は、スマートコントラクトの実行中に読み取る必要のあるデータを記録するために用いられ、書き集合は、スマートコントラクトの実行結果を記録するために用いられる。裏書き処理結果は、裏書きノードにおけるスマートコントラクトの読み書きセット又は書き集合であってもよい。
【0030】
ここで、他のノードは、ブロック生成ノード及び/又は検証ノードである。他のノードがブロック生成ノードである場合、ブロック生成ノードは、自分でスマートコントラクトを呼び出して現在のトランザクション処理要求を処理して処理結果を取得するとともに、検証して、処理結果と裏書き処理結果とが一致するか否かの結果を取得し、一致すれば、現在ブロックを生成し、一致しなければ、操作を停止する。他のノードがブロック検証ノードである場合、現在ブロック検証にパスしたと決定し、即ち、現在ブロックをブロックチェーンに書き込むことを確認する。なお、ブロック生成ノード又はブロック検証ノードが裏書きノード自体である場合、繰り返して処理する必要がなく、裏書き処理結果にしたがって最終処理結果を直接取得する。
【0031】
本実施例の技術案は、ブロックチェーンネットワークのノードが予備実行メカニズムに基づいて、スマートコントラクトの呼び出し中に、ブロックチェーンにおける最後のブロック時間に基づいて現在時間を決定することにより、ブロックチェーンネットワーク内の各ノードの現在時間に対してコンセンサスを達成でき、即ち、スマートコントラクトの実行に対してコンセンサスを達成でき、即ち、予備実行メカニズムにおいて、時間に依存するスマートコントラクトをサポートし、スマートコントラクトが、時間を取得する能力を開発者に提供することができる。本出願の実施例は、全ての予備実行メカニズムに適用する。
【0032】
第2実施例
図2は、本出願の第2実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートであり、本実施例は、上記第1実施例に加え、さらに、予備実行メカニズムに基づくスマートコントラクトについて解釈説明する。
図2を参照すると、当該方法は、具体的には、S210~S230を含む。
【0033】
S210、スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定する。
【0034】
本出願の実施例では、選択可能に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するステップは、裏書きブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、裏書きブロックチェーンの現在ブロック時間を決定するステップと、前記裏書きブロックチェーンの現在ブロック時間を前記裏書きの現在時間とするステップと、を含む。
【0035】
ここで、ブロック生成時間間隔とは、ブロックチェーンネットワークにおける隣接する2回のブロック時間の間隔をいい、既知の固定値である。最後のブロック時間及びブロック生成時間間隔に基づいて、現在ブロックを生成する前に現在ブロック時間を決定することができ、且つ、現在ブロック時間を現在時間とすることにより、現在時間が確実性を有し、コンセンサスが達成されるだけでなく、現在時間の誤差をブロック生成時間間隔内に制御することもでき、それにより、スマートコントラクトのトランザクション処理精度を向上させることができる。
【0036】
選択可能に、前記スマートコントラクトが現在時間取得関数を実行する際に、前記裏書きの現在時間を実行する決定操作がトリガーされる。
【0037】
本出願の実施例では、スマートコントラクトは、時間に依存し、現在時間取得関数now()を呼び出す必要があり、例えば、スマートコントラクトは、現在時間に基づいて資産の質入れなどを行うことであってもよい。本出願の実施例では、スマートコントラクトの具体的なロジックについて限定しない。
【0038】
S220、前記他のノードが前記裏書きブロックチェーンの最後のブロックの高さに基づいて前記裏書き処理結果を検証するようにするために、裏書きブロックチェーンの最後のブロックの高さを決定する。
【0039】
本出願の実施例では、裏書きノードがスマートコントラクトを呼び出して現在のトランザクション処理要求に対して前処理を行う中で、裏書きブロックチェーンの最後のブロックの高さも決定する。ブロックチェーンネットワークの最長チェーン原則に基づき、ブロックチェーンネットワーク内で最長チェーンに更新されたノードによって決定される最後のブロックの高さは同じである。後続で他のノードが裏書き処理結果を検証する前に、先に自分のブロックチェーンの最後のブロックの高さが裏書きブロックチェーンの最後のブロックの高さと一致するか否かを検証することができ、同じであれば、続いて裏書き処理結果を検証し、異なければ、裏書きブロックチェーン及び/又は自分のブロックチェーンが最長ブロックチェーンでないことを示し、操作を停止し、検証に失敗したことを示す。
【0040】
最後のブロックの高さに基づいて、異なるノード内でブロックチェーンが最長チェーンに更新されたか否かを事前に決定することにより、他のノードの裏書き処理結果に対する検証効率を向上させることができる。
【0041】
S230、ブロックチェーンネットワーク内の他のノードが前記裏書き処理結果にしたがって前記現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得する。
【0042】
本実施例の技術案では、裏書きノードは、スマートコントラクトを予備実行中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて裏書きの現在時間を決定し、且つ、裏書きブロックチェーンの最後のブロックの高さを決定し、スマートコントラクトが裏書きの現在データにしたがって現在のトランザクション処理要求を処理して、裏書き処理結果を取得する。ブロックチェーンネットワーク内の他のノードは、先に裏書きブロックチェーンの最後のブロックの高さに基づいて他のノードと裏書きノードのブロックチェーンとが同期されているか否かを決定し、同期されていれば、続いて裏書き処理結果を検証し、同期されていなければ、操作を終了する。予備実行メカニズムに基づいて、時間に依存するスマートコントラクトが実現できるだけでなく、他のノードの裏書き処理結果に対する検証効率も向上させることができる。
【0043】
第3実施例
図3は、本出願の第3実施例によるスマートコントラクトに基づくデータ処理方法のフローチャートであり、本実施例は、予備実行メカニズムに基づいて、時間に依存するスマートコントラクトを呼び出して、トランザクション要求を処理する状況に適用でき、当該方法は、ブロックチェーンネットワークの他のノードに配置されたスマートコントラクトに基づくデータ処理装置によって実行さてもよく、当該装置は、ソフトウェア及び/又はハードウェアの方法で実装される。
図3に示すように、当該方法は、具体的には、S310~S340を含む。
【0044】
S310、現在のトランザクション処理要求及び裏書き処理結果を受信する。
【0045】
本出願の実施例では、前記裏書き処理結果は、裏書きノードが前記スマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られる。
【0046】
具体的には、ユーザノードが裏書きノードに現在のトランザクション処理要求を送信し、裏書きノードはスマートコントラクトを呼び出して現在のトランザクション処理要求を処理して裏書き処理結果を取得するとともに、裏書き処理結果をユーザノードに返す。ユーザノードは、自分の秘密鍵で裏書き処理結果及び現在のトランザクション処理要求に署名し、署名データをブロックチェーンネットワーク内の他のノードに送信する。他のノードは、ユーザノードの公開鍵で署名データの署名を検証して、現在のトランザクション処理要求及び裏書き処理結果を取得する。選択可能に、他のノードは、ブロックチェーンネットワーク内のブロック生成ノード及び/又はブロック検証ノードであってもよい。
【0047】
S320、スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定する。
【0048】
ここで、ローカルブロックチェーンとは、他のノードのブロックチェーンをいい、ローカル現在時間とは、他のノードによって決定される現在時間をいう。ローカル現在時間は、ローカルブロックチェーンにおける最後のブロック時間によって決定され、ノードクロックと関係なく、且つ、ネットワークとの通信なしでも決定できる。
【0049】
選択可能に、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するステップは、ローカルブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、ローカルブロックチェーンの現在ブロック時間を決定するステップと、前記ローカルブロックチェーンの現在ブロック時間を前記ローカル現在時間とするステップと、を含む。
【0050】
選択可能に、前記スマートコントラクトが現在時間取得関数を実行する際に、前記ローカル現在時間を実行する決定操作がトリガーされる。
【0051】
S330、前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得する。
【0052】
S340、前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得する。
【0053】
本出願の実施例では、裏書き処理結果がローカル処理結果と一致すれば、スマートコントラクトの処理は確認され、即ち、他のノードは裏書きノードと処理結果に対してコンセンサスを達成し、裏書き処理結果がローカル処理結果と一致しなければ、コンセンサスが達成されず、後続の操作を停止する。
【0054】
選択可能に、前記他のノードがブロック生成ノードであり、且つ、前記検証結果が一致する場合、現在ブロックを生成して前記最終処理結果とし、前記他のノードがブロック検証ノードであり、且つ、前記検証結果が一致する場合、現在ブロックが検証にパスしたと決定して前記最終処理結果とする。
【0055】
本実施例の技術案では、ブロックチェーンネットワーク内のノードは、スマートコントラクトを実行中に、自分のブロックチェーンにおける最後のブロック時間に基づいて自分の現在時間を決定し、且つ、自分の現在時間に基づいて現在のトランザクション処理要求を処理して自分の処理結果を取得する。異なるノードの処理結果が一致すれば、ブロックチェーンネットワークはコンセンサスを達成し、そうでなければ、コンセンサスが達成されない。予備実行メカニズムでは、時間に依存するスマートコントラクトが実現できるだけでなく、他のノードの裏書き処理結果に対する検証効率を向上させることもできる。
【0056】
選択可能に、S320の前に、裏書きブロックチェーンの最後のブロックの高さを受信するステップと、ローカルブロックチェーンの最後のブロックの高さを決定するステップと、前記裏書きブロックチェーンの最後のブロックの高さが前記ローカルブロックチェーンの最後のブロックの高さと一致しなければ、操作を終了するステップと、をさらに含む。
【0057】
具体的には、前記裏書きブロックチェーンの最後のブロックの高さが前記ローカルブロックチェーンの最後のブロックの高さと一致しなければ、裏書きブロックチェーン及び/又はローカルブロックチェーンは最長ブロックチェーンではなく、操作を停止し、検証に失敗したため、スマートコントラクトの裏書き処理結果に対する検証を実行する必要がない。
【0058】
第4実施例
図4は、本出願の第4実施例によるスマートコントラクトに基づくデータ処理装置の構造図である。本実施例は、予備実行メカニズムに基づいて、時間に依存するスマートコントラクトを呼び出して、トランザクション要求を処理する状況に適用でき、当該装置は、本出願のいずれの実施例の裏書きノードによって実行されるスマートコントラクトに基づくデータ処理方法を実施できる。当該装置400は、具体的には、スマートコントラクトの呼び出し中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて、裏書きの現在時間を決定するための裏書き時間モジュール410と、ブロックチェーンネットワーク内の他のノードが前記裏書き処理結果にしたがって前記現在のトランザクション処理要求を処理するようにするために、前記裏書きの現在時間に基づいて、現在のトランザクション処理要求に対して前処理を行って、裏書き処理結果を取得するための要求前処理モジュール420と、を備える。
【0059】
さらに、裏書き時間モジュール410は、具体的には、裏書きブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、裏書きブロックチェーンの現在ブロック時間を決定し、前記裏書きブロックチェーンの現在ブロック時間を前記裏書きの現在時間とするために用いられる。
【0060】
さらに、前記スマートコントラクトが現在時間取得関数を実行する際に、前記裏書きの現在時間を実行する決定操作がトリガーされる。
【0061】
さらに、前記装置は、スマートコントラクトの呼び出し中に、前記他のノードが前記裏書きブロックチェーンの最後のブロックの高さに基づいて前記裏書き処理結果を検証するようにするために、裏書きブロックチェーンの最後のブロックの高さを決定するための第1結果検証モジュールをさらに備える。
【0062】
本実施例の技術案では、裏書きノードがスマートコントラクトを予備実行中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて裏書きの現在時間を決定し、且つ、裏書きブロックチェーンの最後のブロックの高さを決定し、スマートコントラクトは、裏書きの現在データにしたがって現在のトランザクション処理要求を処理して裏書き処理結果を取得する。ブロックチェーンネットワーク内の他のノードは、先に裏書きブロックチェーンの最後のブロックの高さに基づいて他のノードと裏書きノードのブロックチェーンが同期されているか否かを決定し、同期されていれば、続いて裏書き処理結果を検証し、同期されていなければ,操作を直接終了する。予備実行メカニズムでは、時間に依存するスマートコントラクトが実現できるだけでなく、他のノードの裏書き処理結果に対する検証効率を向上させることもできる。
【0063】
第5実施例
図5は、本出願の第5実施例によるスマートコントラクトに基づくデータ処理装置の構造図である。本実施例は、予備実行メカニズムに基づいて、時間に依存するスマートコントラクトを呼び出して、トランザクション要求を処理する状況に適用でき、当該装置は、本出願のいずれの実施例の他のノードによって実行されるスマートコントラクトに基づくデータ処理方法を実施できる。当該装置500は、具体的には、現在のトランザクション処理要求及び裏書き処理結果を受信されるための受信モジュールであって、前記裏書き処理結果は、裏書きノードが前記スマートコントラクトを呼び出して前記現在のトランザクション処理要求を前処理して得られる受信モジュール510と、スマートコントラクトを呼び出し、ローカルブロックチェーンにおける最後のブロック時間に基づいて、ローカル現在時間を決定するローカル時間モジュール520と、前記ローカル現在時間に基づいて、前記現在のトランザクション処理要求を処理して、ローカル処理結果を取得するための要求処理モジュール530と、前記裏書き処理結果と前記ローカル処理結果とが一致するか否かを検証し、検証結果にしたがって最終処理結果を取得するための第2結果検証モジュール540と、を備える。
【0064】
さらに、ローカル時間モジュール520は、具体的には、
ローカルブロックチェーンにおける最後のブロック時間及びブロック生成時間間隔に基づいて、ローカルブロックチェーンの現在ブロック時間を決定し、
前記ローカルブロックチェーンの現在ブロック時間を前記ローカル現在時間とするために用いられる。
【0065】
さらに、第3結果検証モジュールをさらに備え、具体的には、裏書きブロックチェーンの最後のブロックの高さを受信するステップと、ローカルブロックチェーンの最後のブロックの高さを決定するステップと、前記裏書きブロックチェーンの最後のブロックの高さが前記ローカルブロックチェーンの最後のブロックの高さと一致しなければ、操作を終了するステップと、を実行するために用いられる。
【0066】
さらに、第2結果検証モジュール540は、具体的には、前記他のノードがブロック生成ノードであり、且つ、前記検証結果が一致する場合、現在ブロックを生成して前記最終処理結果とし、前記他のノードがブロック検証ノードであり、且つ、前記検証結果が一致する場合、現在ブロックが検証にパスしたと決定して前記最終処理結果とするために用いられる。
【0067】
本実施例の技術案では、ブロックチェーンネットワーク内のノードは、スマートコントラクトを実行中に、自分のブロックチェーンにおける最後のブロック時間に基づいて自分の現在時間を決定し、且つ、自分の現在時間に基づいて現在のトランザクション処理要求を処理して自分の処理結果を取得する。異なるノードの処理結果が一致すれば、ブロックチェーンネットワークはコンセンサスを達成し、そうでなければ、コンセンサスが達成されない。予備実行メカニズムでは、時間に依存するスマートコントラクトが実現できるだけでなく、他のノードの裏書き処理結果に対する検証効率を向上させることもできる。
【0068】
第6実施例
本出願の実施例によれば、本出願は、電子機器及び読み取り可能な記憶媒体をさらに提供する。
【0069】
図6に示すように、本出願の実施例によるスマートコントラクトに基づくデータ処理方法の電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的とする。電子機器は、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブルデバイス、他の類似するコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すこともできる。本明細書で示されるコンポーネント、それらの接続と関係、及びそれらの機能は単なる例であり、本明細書の説明及び/又は要求される本出願の実現を制限することを意図したものではない。
【0070】
図6に示すように、当該電子機器は、1つ又は複数のプロセッサ601と、メモリ602と、高速インターフェース及び低速インターフェースを備える各コンポーネントを接続するためのインターフェースと、を備える。各コンポーネントは、異なるバスで相互に接続され、共通のマザーボードに取り付けられるか、又は必要にしたがって他の方式で取り付けることができる。プロセッサは、電子機器内で実行される命令を処理することができ、当該命令は、外部入力/出力装置(例えば、インターフェースに結合されたディスプレイデバイスなど)にGUIの図形情報をディスプレイするためにメモリ内又はメモリに記憶されている命令を含む。他の実施形態では、必要にしたがって、複数のプロセッサ及び/又は複数のバスを、複数のメモリと一緒に使用することができる。同様に、複数の電子機器を接続することができ、各電子機器は、一部の必要な操作(例えば、サーバアレイ、1グループのブレードサーバ、又はマルチプロセッサシステムとする)を提供することができる。
図6では、1つのプロセッサ601を例とする。
【0071】
メモリ602は、本出願により提供される非一時的なコンピュータ読み取り可能な記憶媒体である。その中で、前記メモリには、前記少なくとも1つのプロセッサが本出願により提供されるスマートコントラクトに基づくデータ処理方法を実行するように、少なくとも1つのプロセッサによって実行可能な命令が記憶されている。本出願の非一時的なコンピュータ読み取り可能な記憶媒体には、コンピュータに本出願により提供されるスマートコントラクトに基づくデータ処理方法を実行させるためのコンピュータ命令が記憶されている。
【0072】
メモリ602は、非一時的なコンピュータ読み取り可能な記憶媒体として、本出願の実施例におけるスマートコントラクトに基づくデータ処理方法に対応するプログラム命令/モジュール(例えば、
図4に示す裏書き時間モジュール410及び要求前処理モジュール420、
図5に示す受信モジュール510、ローカル時間モジュール520、要求処理モジュール530及び結果検証モジュール540)のような、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラム及びモジュールを記憶する。プロセッサ601は、メモリ602に記憶されている非一時的なソフトウェアプログラム、命令及びモジュールを実行することによって、サーバの様々な機能アプリケーション及びデータ処理を実行し、すなわち上記方法の実施例におけるスマートコントラクトに基づくデータ処理方法を実現する。
【0073】
メモリ602は、ストレージプログラムエリアとストレージデータエリアとを備えることができ、その中で、ストレージプログラムエリアは、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶することができ、ストレージデータエリアは、スマートコントラクトに基づくデータ処理の電子機器の使用によって作成されたデータなどを記憶することができる。また、メモリ602は、高速ランダムアクセスメモリを備えることができ、非一時的なメモリをさらに備えることができ、例えば、少なくとも1つの磁気ディスクストレージデバイス、フラッシュメモリデバイス、又は他の非一時的なソリッドステートストレージデバイスである。いくつかの実施例では、メモリ602は、プロセッサ601に対して遠隔に設定されたメモリを選択的に備えることができ、これらの遠隔メモリは、ネットワークを介してスマートコントラクトに基づくデータ処理の電子機器に接続されることができる。上記ネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、及びその組み合わせを含むが、これらに限定されない。
【0074】
スマートコントラクトに基づくデータ処理方法の電子機器は、入力装置603と出力装置604とをさらに備えてもよい。プロセッサ601、メモリ602、入力装置603、及び出力装置604バス又は他の方式を介して接続することができ、
図6では、バスを介して接続することを例とする。
【0075】
入力装置603は、入力された数字又は文字情報を受信し、スマートコントラクトに基づくデータ処理方法の電子機器のユーザ設定及び機能制御に関するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、ポインティングスティック、1つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置である。出力装置604は、ディスプレイデバイス、補助照明装置(例えば、LED)、及び触覚フィードバックデバイス(例えば、振動モータ)などを備えることができる。当該ディスプレイデバイスは、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、及びプラズマディスプレイを備えることができるが、これらに限定されない。いくつかの実施形態で、ディスプレイデバイスは、タッチスクリーンであってもよい。
【0076】
本明細書で説明されるシステムと技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、特定用途向けASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現することができる。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施され、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを備えるプログラム可能なシステムで実行及び/又は解釈することができ、当該プログラマブルプロセッサは、専用又は汎用のプログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、データ及び命令を当該ストレージシステム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に伝送することができる。
【0077】
これらのコンピューティングプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)は、プログラマブルプロセッサの機械命令を含むことができ、高レベルのプロセス及び/又は対象指向プログラミング言語、及び/又はアセンブリ/機械言語でこれらのコンピューティングプログラムを実施することができる。本明細書に使用されるような、「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」の用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械読み取り可能な信号である機械命令を受信する機械読み取り可能な媒体を含む。「機械読み取り可能な信号」の用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を指す。
【0078】
ユーザとのインタラクションを提供するために、ここで説明されているシステム及び技術をコンピュータ上で実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形態のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形態(音響入力と、音声入力と、触覚入力とを含む)でユーザからの入力を受信することができる。
【0079】
ここで説明されるシステム及び技術は、バックエンドコンポーネントを備えるコンピューティングシステム(例えば、データサーバとする)、又はミドルウェアコンポーネントを備えるコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを備えるコンピューティングシステム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータであり、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによってここで説明されるシステム及び技術の実施形態とインタラクションする)、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実施することができる。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットと、ブロックチェーンネットワークとを含む。
【0080】
コンピュータシステムは、クライアントとサーバとを備えることができる。クライアントとサーバは、一般的に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、かつ互いにクライアント-サーバの関係を有するコンピュータプログラムによって、クライアントとサーバとの関係が生成される。
【0081】
本出願の実施例による技術案では、裏書きノードがスマートコントラクトを予備実行中に、裏書きブロックチェーンにおける最後のブロック時間に基づいて裏書きの現在時間を決定し、且つ、裏書きブロックチェーンの最後のブロックの高さを決定し、スマートコントラクトは、裏書きの現在データにしたがって現在のトランザクション処理要求を処理して裏書き処理結果を取得する。ブロックチェーンネットワーク内の他のノードは、先に裏書きブロックチェーンの最後のブロックの高さに基づいて他のノードと裏書きノードのブロックチェーンが同期されているか否かを決定し、同期されていれば、続いて裏書き処理結果を検証し、同期されていなければ,操作を直接終了する。予備実行メカニズムでは、時間に依存するスマートコントラクトが実現できるだけでなく、他のノードの裏書き処理結果に対する検証効率を向上させることもできる。
【0082】
上記に示される様々な形態のフローを使用して、ステップを並べ替え、追加、又は削除することができる。例えば、本出願に記載されている各ステップは、並列に実行されてもよいし、順次的に実行されてもよいし、異なる順序で実行されてもよいが、本出願で開示されている技術案の所望の結果を実現することができれば、本明細書では限定しない。
【0083】
上記具体的な実施形態は、本出願の保護範囲を制限するものではない。当業者は、設計要件と他の要因に基づいて、様々な修正、組み合わせ、サブコンビネーション、及び代替を行うことができる。本出願の精神と原則内で行われる任意の修正、同等の置換、及び改善などは、いずれも本出願の保護範囲内に含まれるべきである。