IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 杭州趣鏈科技有限公司の特許一覧

特許7394213スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体
<>
  • 特許-スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体 図1
  • 特許-スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体 図2
  • 特許-スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体 図3
  • 特許-スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体 図4
  • 特許-スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体
(51)【国際特許分類】
   G06F 11/36 20060101AFI20231130BHJP
   G06F 11/34 20060101ALI20231130BHJP
【FI】
G06F11/36 104
G06F11/34 147
【請求項の数】 13
(21)【出願番号】P 2022511179
(86)(22)【出願日】2020-08-21
(65)【公表番号】
(43)【公表日】2022-10-26
(86)【国際出願番号】 CN2020110367
(87)【国際公開番号】W WO2021032177
(87)【国際公開日】2021-02-25
【審査請求日】2022-02-18
(31)【優先権主張番号】201910772369.7
(32)【優先日】2019-08-21
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】521389103
【氏名又は名称】杭州趣鏈科技有限公司
【氏名又は名称原語表記】HANGZHOU QULIAN TECHNOLOGY CO., LTD.
【住所又は居所原語表記】Room 2001, Building A, Building 2, No.399, Danfeng Road, Binjiang District, Hangzhou, Zhejiang, China
(74)【代理人】
【識別番号】110002262
【氏名又は名称】TRY国際弁理士法人
(72)【発明者】
【氏名】邱 ▲うぇい▼偉
(72)【発明者】
【氏名】李 偉
(72)【発明者】
【氏名】蔡 亮
(72)【発明者】
【氏名】張 帥
(72)【発明者】
【氏名】張 丁文
【審査官】渡辺 一帆
(56)【参考文献】
【文献】特開2018-185808(JP,A)
【文献】国際公開第2019/072310(WO,A1)
【文献】国際公開第2019/120316(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するステップと、
前記プログラムセグメントに基づいて符号計算モデルを構築するステップと、
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力するステップと、を含む
ことを特徴とするスマートコントラクト処理方法。
【請求項2】
前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するステップは、
前記スマートコントラクトに対し構文解析を行い、構文木を構築するステップと、
前記構文木に基づいてソリディティシステム依存パターンを構築するステップと、
シャーディングアルゴリズムを採用して前記ソリディティシステム依存パターンにシャーディングを行い、完全なプログラムセグメントを抽出するステップと、を含む
ことを特徴とする請求項1に記載のスマートコントラクト処理方法。
【請求項3】
前記プログラムセグメントに基づいて符号計算モデルを構築するステップは、
ソリディティコンパイラのコンパイル原理に基づいて、前記プログラムセグメントをEVM仮想マシンの実行コードプログラムに変換するステップと、
前記実行コードプログラムによって消費されたGAS及びGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成するステップと、
前記実行コードプログラムに多項式ループが含まれる場合、ループ不変式を自動的に生成するステップと、
前記実行コードプログラムに非線形ループが含まれる場合、手動補助でループ不変式を追加するステップと、を含む
ことを特徴とする請求項1に記載のスマートコントラクト処理方法。
【請求項4】
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力するステップは、
前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、前記一次定係数差分連立方程式の閉形式解を取得して、前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を得るステップと、
前記実行コードプログラムに論理制御が含まれる場合、論理制御文を、関連する変数符号を含む斉次多項式に変換してGAS消費計算式とするステップと、
符号計算方法に基づいて、前記プログラムセグメントにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、前記GAS消費式を簡略化して出力するステップと、を含む
ことを特徴とする請求項3に記載のスマートコントラクト処理方法。
【請求項5】
前記符号計算方法は、
多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力するステップと、
LoopInvを初期化してNULLとするステップと、
前記多項式ループプログラムPを多項式遷移系Tで表すステップであって、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表すステップと、
前記多項式遷移系Tからサンプル点セットSを得るステップと、
BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とするステップであって、ただし、i=1,2,…,sであるステップと、
前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当てるステップであって、但し、V’は遷移後の変数セットを表すステップと、
前記不変式候補を検証するステップを繰り返し、i>sまでi値をトラバーサルし、前記LoopInvから前記多項式ループプログラムPのループ不変式を生成するステップと、を含む
ことを特徴とする請求項4に記載のスマートコントラクト処理方法。
【請求項6】
スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するために用いられる関数シャーディングモジュールと、
前記プログラムセグメントに基づいて符号計算モデルを構築するために用いられるモデル構築モジュールと、
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して出力するために用いられる式取得モジュールと、を含む
ことを特徴とするスマートコントラクト処理システム。
【請求項7】
コンピュータプログラムが記憶されるメモリとプロセッサを含むコンピュータ機器であって、
前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1から5のいずれか一項に記載のスマートコントラクト処理方法のステップが実行されることを特徴とするコンピュータ機器。
【請求項8】
コンピュータプログラムが記憶された読み取り可能な記憶媒体であって、
前記コンピュータプログラムがプロセッサによって実行されると、請求項1から5のいずれか一項に記載のスマートコントラクト処理方法のステップが実行されることを特徴とする読み取り可能な記憶媒体。
【請求項9】
(1)ソリディティスマートコントラクトを入力し、前記ソリディティスマートコントラクトのパフォーマンス解析の関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するステップと、
(2)ステップ(1)に記載の完全なプログラムセグメントに基づいて、符号計算モデルを構築するステップと、
(3)ステップ(2)に記載の符号計算モデルに基づいて、GAS消費式を算出し簡略化して、簡略化したGAS消費式を出力するステップと、を含む
ことを特徴とするソリディティスマートコントラクトのパフォーマンスの静的解析方法。
【請求項10】
ステップ(1)には、
(1.1)入力されたソリディティスマートコントラクトに対し構文解析を行い、構文木を構築するサブステップと、
(1.2)前記構文木に基づいてソリディティシステム依存パターンを構築するサブステップと、
(1.3)シャーディングアルゴリズムを採用して前記ソリディティシステム依存パターンにシャーディングを行い、完全なプログラムセグメントを抽出するサブステップとをさらに含む
ことを特徴とする請求項9に記載のソリディティスマートコントラクトのパフォーマンスの静的解析方法。
【請求項11】
ステップ(2)は具体的に、
(2.1)ソリディティコンパイラのコンパイル原理に基づいて、前記完全なプログラムセグメントをEVM仮想マシンの実行コード(またはアセンブリ命令と呼ばれる)プログラムに変換することと、
(2.2)前記実行コードプログラムによって消費されるGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成し、前記実行コードプログラムに多項式ループが含まれる場合には、ループ不変式を自動的に生成し、前記実行コードプログラムに非線形ループが含まれる場合には、手動補助でループ不変式を追加することと、を含む
ことを特徴とする請求項9に記載のソリディティスマートコントラクトのパフォーマンスの静的解析方法。
【請求項12】
ステップ(3)は具体的に、
(3.1)前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、差分連立方程式の閉形式解を求め、次に前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を取得し、前記実行コードプログラムに論理制御が含まれる場合、論理制御文を関連する変数符号を含む斉次多項式に変換してGAS消費計算式とすることと、
(3.2)符号計算方法に基づいて、前記シャーディングにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、GAS消費計算式を簡略化して出力することと、を含む
ことを特徴とする請求項11に記載のソリディティスマートコントラクトのパフォーマンスの静的解析方法。
【請求項13】
前記符号計算方法は具体的に、
(4.1)多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力することと、
(4.2)LoopInvを初期化してNULLとすることと、
(4.3)前記多項式ループプログラムPを多項式遷移系Tで表すことであって、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表すことと、
(4.4)ステップ4.3の前記多項式ループプログラムPからサンプル点セットSを得ることと、
(4.5)BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とすることであって、ただし、i=1,2,…,sであることと、
(4.6)前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当てることであって、但し、V’は遷移後の変数セットを表すことと、
(4.7)i>sまでステップ4.6を繰り返し、前記多項式ループプログラムPのループ不変式を生成すること、を含む
ことを特徴とする請求項12に記載のソリディティスマートコントラクトのパフォーマンスの静的解析方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の参照]
本願は、2019年8月21日に出願された、出願番号が201910772369.7であり、発明の名称が「ソリディティスマートコントラクトのパフォーマンスの静的解析方法」である中国特許出願の優先権を主張し、引用によりその内容の全てが本願に取り込まれたものとする。
【0002】
本願は、スマートコントラクトの技術分野に関し、特に、スマートコントラクト処理方法、システム、コンピュータ機器、および読み取り可能な記憶媒体に関する。
【背景技術】
【0003】
スマートコントラクトとは、ブロックチェーン内で実行可能なトラステッド・コンピュータ・コードであり、ソリディティとは、スマートコントラクトを記述するコンピュータ高級言語である。ソリディティスマートコントラクトは、EVM仮想マシン上で実行され、イーサリアムプラットフォーム上に配置され、その特殊な実行メカニズムにより、開発者にとって、コードの機能および安全性を注意することに加えて、ソリディティスマートコントラクトを呼び出す取引のそれぞれに、複雑度に応じて一定のGAS費用が消費されるため、ソリディティスマートコントラクトの複雑度が高いほど、消費される代価も高くなる。どのようにしてニーズを満たすとともに安価なソリディティスマートコントラクトを開発するかということは、開発者が直面する問題である。実際に、ソリディティスマートコントラクトの複雑度解析は即ちパフォーマンス解析である。現在の主要な方法は、経験により判断することと、動的に実行して実際のGAS消費を観察することの両方であり、静的なパフォーマンス解析方法はまだ未成熟であり、ループ不変量および終了条件の判定に難点がある。当該分野では、ソリディティスマートコントラクトのGAS消費値を正確に算出できる成熟した静的解析方法が欠けている。
【発明の概要】
【0004】
本願の様々な実施例によって、
(1)ソリディティスマートコントラクトを入力し、前記ソリディティスマートコントラクトのパフォーマンス解析の関数に対しシャーディング(sharding)を行い、完全なプログラムセグメントを抽出するステップと、
(2)ステップ(1)に記載の完全なプログラムセグメントに基づいて、符号計算モデルを構築するステップと、
(3)ステップ(2)に記載の符号計算モデルに基づいて、GAS消費式を算出し簡略化して、簡略化したGAS消費式を出力するステップと、を含む
ソリディティスマートコントラクトのパフォーマンスの静的解析方法を提供する。
【0005】
一実施例において、ステップ(1)には、
(1.1)入力されたソリディティスマートコントラクトに対し構文解析を行い、構文木を構築するステップと、
(1.2)前記構文木に基づいてソリディティシステム依存パターンを構築するステップと、
(1.3)シャーディングアルゴリズムを採用して前記ソリディティシステム依存パターンにシャーディングを行い、完全なプログラムセグメントを抽出するステップと、を含む。
【0006】
一実施例において、ステップ(2)には、
(2.1)ソリディティコンパイラのコンパイル原理に基づいて、前記完全なプログラムセグメントをEVM仮想マシンの実行コード(またはアセンブリ命令と呼ばれる)プログラムに変換するステップと、
(2.2)前記実行コードプログラムによって消費されるGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成し、前記実行コードプログラムに多項式ループが含まれる場合には、ループ不変式を自動的に生成し、前記実行コードプログラムに非線形ループが含まれる場合には、手動補助でループ不変式を追加するステップと、を含む。
【0007】
一実施例において、ステップ(3)は、
(3.1)前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、差分連立方程式の閉形式解を求め、次に前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を取得し、前記実行コードプログラムに論理制御が含まれる場合、論理制御文を、関連する変数符号を含む斉次多項式に変換してGAS消費計算式とするステップと、
(3.2)符号計算方法に基づいて、前記シャーディングにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得し簡略化して、GAS消費計算式を簡略化して出力するステップと、を含む。
【0008】
一実施例において、前記符号計算方法は、
(4.1)多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力するステップと、
(4.2)LoopInvを初期化してNULLとするステップと、
(4.3)前記多項式ループプログラムPを多項式遷移系Tで表すステップであって、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表すステップと、
(4.4)ステップ4.3の前記多項式ループプログラムPからサンプル点セットSを得るステップと、
(4.5)BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とするステップであって、ただし、i=1,2,…,sであるステップと、
(4.6)前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当てるステップであって、但し、V’は遷移後の変数セットを表すステップと、
(4.7)i>sまでステップ4.6を繰り返し、前記多項式ループプログラムPのループ不変式を生成するステップと、を含む。
【0009】
本願の有益な効果は以下のとおりである。本願によって提供されるソリディティスマートコントラクトのパフォーマンスの静的解析方法では、多項式ループを含むプログラムの実行によって消費されるGAS値を自動的に算出することができ、又は極めて少ない手動補助で非線形ループを含むプログラムの実行によって消費されるGAS値を算出することで、ソリディティスマートコントラクトのパフォーマンスを反映することができる。本願で計算されたGAS消費値は、一般に、ソリディティスマートコントラクトにおける入力パラメータ、局所変数、ループ数に関連する符号変数を含む式である。本願では、開発者が煩雑なテストケースを準備してスマートコントラクトを実行せずにGAS消費の計算式を正確に得ることができ、スマートコントラクトのパフォーマンスを定量的に評価でき、ソリディティスマートコントラクトがどのような場合にGASの上限に達するかを判断することに役立ち、開発者がソリディティスマートコントラクトに対して正確なパフォーマンス最適化を行うのに役立ち、プロジェクト関係者が該コントラクトの経済性を正確に判定するのに役立ち、実行コストと収益を評価することに顕著な効果をもたらす。また、本発明に係る処理ループプログラムの符号計算方法は、当該分野において一定の参考意義及び参照意義を有する。
【0010】
本願の各実施例により、
スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するステップと、
前記プログラムセグメントに基づいて符号計算モデルを構築するステップと、
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力するステップと、を含む
スマートコントラクト処理方法を更に提供する。
【0011】
一実施例において、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するステップは、
前記スマートコントラクトに対し構文解析を行い、構文木を構築するステップと、
前記構文木に基づいてソリディティシステム依存パターンを構築するステップと、
シャーディングアルゴリズムを採用して前記ソリディティシステム依存パターンに対しシャーディングを行い、完全なプログラムセグメントを抽出するステップと、を含む。
【0012】
一実施例において、前記プログラムセグメントに基づいて符号計算モデルを構築するステップは、
ソリディティコンパイラのコンパイル原理に基づいて、前記プログラムセグメントをEVM仮想マシンの実行コードプログラムに変換するステップと、
前記実行コードプログラムによって消費されたGAS及びGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成するステップと、
前記実行コードプログラムに多項式ループが含まれる場合、ループ不変式を自動的に生成するステップと、
前記実行コードプログラムに非線形ループが含まれる場合、手動補助でループ不変式を追加するステップと、を含む。
【0013】
一実施例において、前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力するステップは、
前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、前記一次定係数差分連立方程式の閉形式解を取得し、前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を得るステップと、
前記実行コードプログラムに論理制御が含まれる場合、論理制御文を関連する変数符号を含む斉次多項式に変換してGAS消費計算式とするステップと、
符号計算方法に基づいて、前記プログラムセグメントにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、前記GAS消費式を簡略化して出力するステップと、を含む。
【0014】
一実施例において、前記符号計算方法は、
多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力するステップと、
LoopInvを初期化してNULLとするステップと、
前記多項式ループプログラムPを多項式遷移系Tで表すステップであって、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表すステップと、
前記多項式遷移系Tからサンプル点セットSを得るステップと、
BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とするステップであって、ただし、i=1,2,…,sであるステップと、
前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当てるステップであって、但し、V’は遷移後の変数セットを表すステップと、
前記不変式候補を検証するステップを繰り返し、i>sまでi値をトラバーサルし、前記LoopInvから前記多項式ループプログラムPのループ不変式を生成するステップと、を含む。
【0015】
本願の各実施例により、
スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出するために用いられる関数シャーディングモジュールと、
前記プログラムセグメントに基づいて符号計算モデルを構築するために用いられるモデル構築モジュールと、
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して出力するために用いられる式取得モジュールと、を含む
スマートコントラクト処理システムを更に提供する。
【0016】
本願の各実施例によれば、コンピュータプログラムが記憶されるメモリとプロセッサを含むコンピュータ機器であって、
前記コンピュータプログラムが前記プロセッサによって実行されると、上記のスマートコントラクト処理方法のステップが実行されるコンピュータ機器を更に提供する。
【0017】
本願の各実施例により、コンピュータプログラムが記憶されたコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータプログラムがプロセッサによって実行されると、上記のスマートコントラクト処理方法のステップが実行されるコンピュータ読み取り可能な記憶媒体を更に提供する。
【図面の簡単な説明】
【0018】
ここに開示される発明の実施例および/または例示をよりよく記述し説明するために、1つまたは複数の図面を参照することができる。添付の図面を説明するための追加の詳細または例示は、開示された発明、現在説明されている実施例および/または例示、ならびに現在理解されているこれらの発明の最適形態のうちのいずれか一つの範囲を限定するものとみなされるべきではない。
図1】本願の実施例に係るソリディティスマートコントラクトに対してパフォーマンスの静的解析を行うフローチャートである。
図2】本願の実施例に係るスマートコントラクト処理方法のフローチャートである。
図3】本願の実施例に係るソリディティスマートコントラクトのループプログラムを処理するコアアルゴリズム図である。
図4】本願の実施例に係るスマートコントラクト処理システムの概略構造図である。
図5】本願実施例に係るコンピュータ機器の内部構造図である。
【発明を実施するための形態】
【0019】
本願に対する理解を容易にするために、本願の上記の目的、特徴および利点をより明確に理解されるように、以下に本願の具体的な実施形態を添付の図面を参照して詳細に説明する。本願が十分に理解されるように、多くの具体的な詳細が以下の説明で説明されており、本願の好ましい実施形態が添付の図面に示されている。しかし、本願は、多くの異なる形態で実施することができ、本明細書に記載の実施形態に限定されない。むしろ、これらの実施形態は、本願の開示をより完全に理解するために提供される。本願は、本明細書に記載された方法以外の様々な方法で実施することができ、当業者は、本願の意図から逸脱することなく改良を行うことができ、したがって、本願は、以下に開示される具体的な実施例に限定されない。
【0020】
また、用語「第1」、「第2」は、説明だけのために使用され、相対的重要性を示すまたは示唆する、あるいは指示された技術的特徴の数を暗黙的に示すものとして理解されるべきではない。したがって、「第1」、「第2」で限定される特徴は、少なくとも1つの特徴を明示的または暗黙的に含むことができる。本願の記載において、「複数」とは、別途明確に定義されない限り、少なくとも2つ、例えば2つ、3つなどを意味する。本願の説明において、「いくつかの」とは、別途明確に定義されない限り、少なくとも1つ、例えば1つ、2つなどを意味する。
【0021】
別途定義されない限り、本明細書で使用される全ての技術用語および科学用語は、本願の技術分野に属する当業者にとって一般に理解されるものと同じ意味を有する。本明細書で使用される用語は、ただ具体的な実施形態を説明するためのものであって、本願を限定することを意図するものではない。本明細書で使用される「及び/または」という用語は、1つまたは複数の関連する列挙された項の任意なすべての組み合わせを含む。
【0022】
図1は、一実施例に提供されるソリディティスマートコントラクトに対しパフォーマンスの静的解析を行うフローチャートであり、図1に示すように、ソリディティスマートコントラクトに対してパフォーマンスの静的解析を行う流れは、以下の通りである。
【0023】
(1)開発者はソリディティスマートコントラクトを入力し、このスマートコントラクトが非線形ループプロセスを含む場合、手動でループ不変式を追加する必要がある。前記ループ不変式の構文構造は、ループ不変式タグと、ループの反復中に成立する等式である不変式と、を含む。前記ソリディティスマートコントラクトのパフォーマンスの解析の関数をシャーディングし、シャーディングする時、まず入力されたソリディティスマートコントラクトを構文解析して構文木を構築し、続いてソリディティシステム依存パターンを構築し、最後はシャーディングアルゴリズムに基づいて前記ソリディティシステム依存パターンをシャーディングし、完全なプログラムセグメントを抽出する。
【0024】
(2)ソリディティスマートコントラクトのシャーディング結果をモデリングする。モデリングの際に、まずソリディティコンパイラ原理にしたがって前記完全なプログラムセグメントをEVM仮想マシンの実行コードプログラム(またはアセンブリ命令と呼ばれる)に変換する。次にソリディティ実行コードプログラムによって消費されるGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成する。前記実行コードプログラムに多項式ループが含まれる場合には、ループ不変式を自動的に生成する。前記実行コードプログラムに非線形ループが含まれる場合には、手動補助でループ不変式を追加する。
【0025】
(3)ソリディティスマートコントラクトの静的解析モデルを計算する。前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、差分連立方程式の閉形式解を求め、次に前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を得る。前記実行コードプログラムに論理制御が含まれる場合、論理制御文を関連する変数符号を含む斉次多項式に変換してGAS消費計算式とする。符号計算方法に基づいて、前記シャーディングにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、簡略化されたソリディティスマートコントラクトGAS消費式を得る。一般的には、これが符号変数を含む式であり、これらの符号変数はソリディティスマートコントラクトにおける入力パラメータ、局所変数、ループ回数に関連する。開発者は、この式に基づいて、パフォーマンスに影響を及ぼすキーパラメータを解析し、これらのパラメータを制御するまたはアルゴリズムを変更することによって、パフォーマンスを最適化することができる。
【0026】
さらに、ソリディティとはスマートコントラクトを記述するコンピュータ高級言語であり、他のプログラミング言語を採用する場合でも、スマートコントラクトを記述することができ、本願の方案は同様に適用される可能である。したがって、図2に示すように、スマートコントラクトに対して、以下の方案を採用してスマートコントラクトの処理を実現することができる。
S110:スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出する。
S120:前記プログラムセグメントに基づいて符号計算モデルを構築する。
S130:前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力する。
【0027】
前記スマートコントラクトのパフォーマンス解析関数に対しシャーディングを行い、完全なプログラムセグメントを抽出することは、下記のステップを含む。
前記スマートコントラクトに対し構文解析を行い、構文木を構築することと、前記構文木に基づいてソリディティシステム依存パターンを構築することと、シャーディングアルゴリズムを採用して前記ソリディティシステム依存パターンにシャーディングを行い、完全なプログラムセグメントを抽出すること。
【0028】
前記プログラムセグメントに基づいて符号計算モデルを構築することは、下記のステップを含む。
ソリディティコンパイラのコンパイル原理に基づいて、前記プログラムセグメントをEVM仮想マシンの実行コードプログラムに変換することと、前記実行コードプログラムによって消費されたGAS及びGASサイズの対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成することと、前記実行コードプログラムに多項式ループが含まれる場合、ループ不変式を自動的に生成し、前記実行コードプログラムに非線形ループが含まれる場合、手動補助でループ不変式を追加すること。
【0029】
前記符号計算モデルに基づいてGAS消費式を取得し簡略化して、簡略化したGAS消費式を出力することは、下記のステップを含む。
前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、前記一次定係数差分連立方程式の閉形式解を取得して、前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を取得することと、前記実行コードプログラムに論理制御が含まれる場合、論理制御文を関連する変数符号を含む斉次多項式に変換してGAS消費計算式とすることと、符号計算方法に基づいて、前記プログラムセグメントにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、GAS消費式を簡略化して出力すること。
【0030】
本願のソリディティスマートコントラクトのパフォーマンスの静的解析方法によれば、前記ループプログラムの符号計算方法は、ループ不変式の自動生成であり、その方法の流れを図3に示す。該符号計算方法では、BMアルゴリズムに基づいたものであり、多項式遷移系に対して、多項式等式を算出してそのループ不変式とする。所与のm個の変数を含むプログラムPについては、予想の生成される不変式の次数の上界Uを所与として、プログラムPから多くても(d+m,m)個のサンプル点を含むセットSを取得し、次いでサンプル点セットSの消去イデアルのGrobner基底I(S)を算出してプログラムの不変式候補とし、同時に、プログラムPにdより低い多項式等式型の不等式が存在するかどうかを判定するための、I(S)における全ての多項式の最低の次数dを取得して、多項式の割り切れる性質で不変式候補を検証し、最後にループ不変式として多項式を生成する。前記符号計算方法の具体的な流れは以下のとおりである。
(1)多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力する。
(2)LoopInvを初期化してNULLとする。
(3)前記多項式ループプログラムPを多項式遷移系Tで表し、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表す。
(4)ステップ3の前記多項式ループプログラムPからサンプル点セットSを得る。
(5)BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とする。ただし、i=1,2,…,sである。
(6)前記不変式候補を検証する。pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当てる。V’は遷移後の変数セットを表す。
(7)i>sまでステップ6を繰り返し、前記多項式ループプログラムPのループ不変式を生成する。
【0031】
上記のアルゴリズムでは、予想の得られる多項式不変式の次数の上界Uの所与が要求され、不変式のテンプレートが予め設定されていない。これは、テンプレート方法を適用する場合、予め設定された変数の数がmで次数がdである多項式テンプレートについて、(d+m,m)個の未知のパラメータが生成されるため、このような制約充足問題が困難であるからである。アルゴリズムでは、多くても(d+m,m)個のサンプル点を算出することが要求され、これは実際、テンプレート方法における未知のパラメータの数であるが、アルゴリズムの実際の運用では、それほど多くのサンプル点は必要とされない。そして、多項式時間複雑度のBMアルゴリズムに基づいて不変式候補を算出することでは、テンプレート方法において限定記号消去、多項式のイデアルのGrobner基底及びパラメータ係数半代数システムなどの二重指数時間複雑度を適用する方法で制約充足問題を解決することよりも、本アルゴリズムは高い効率を有する。
【0032】
さらに、スマートコントラクト処理方法に対して、前記符号計算方法が同様に適用され、以下のステップを含む。
多項式ループプログラムP、プログラム変数の個数m、多項式不変式の次数の上界Uを入力し、
LoopInvを初期化してNULLとし、
前記多項式ループプログラムPを多項式遷移系Tで表し、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表し、
前記多項式遷移系Tからサンプル点セットSを取得し、
BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とし、ただし、i=1,2,…,sであり、
前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当て、但し、V’は遷移後の変数セットを表し、
前記不変式候補を検証するステップを繰り返し、i>sまでi値をトラバーサルし、前記LoopInvから前記多項式ループプログラムPのループ不変式を生成する。
【0033】
一実施例では、図4に示されるように、関数シャーディングモジュール210、モデル構築モジュール220、及び式取得モジュール230を含むスマートコントラクト処理システムが提供され、
関数シャーディングモジュール210は、スマートコントラクトを取得し、前記スマートコントラクトのパフォーマンス解析関数にシャーディングを行い、完全なプログラムセグメントを抽出するために用いられ、
モデル構築モジュール220は、前記プログラムセグメントに基づいて符号計算モデルを構築するために用いられ、
式取得モジュール230は、前記符号計算モデルに基づいてGAS消費式を取得し簡略化して出力するために用いられる。
【0034】
一実施例では、関数シャーディングモジュール230はさらに以下のことに用いられ、即ち、前記スマートコントラクトに構文解析を行って構文木を構築し、前記構文木に基づいてソリディティシステム依存パターンを構築し、シャーディングアルゴリズムで前記ソリディティシステム依存パターンにシャーディングを行って、完全なプログラムセグメントを抽出する。
【0035】
一実施例では、モデル構築モジュール220はさらに以下のことに用いられ、即ち、ソリディティコンパイラのコンパイル原理に基づいて、前記プログラムセグメントをEVM仮想マシンの実行コードプログラムに変換し、前記実行コードプログラムによって消費されるGAS及びGASサイズ対照表に基づいて、前記実行コードプログラムをGAS累算の符号計算式に変換して、ループ不変式を生成し、前記実行コードプログラムに多項式ループが含まれる場合、ループ不変式を自動的に生成し、前記実行コードプログラムに非線形ループが含まれる場合、手動補助でループ不変式を追加する。
【0036】
一実施例では、公式取得モジュール230はさらに以下のことに用いられ、即ち、前記実行コードプログラムにループが含まれる場合、ループ代入文をループ回数に関するプログラム変数の一次定係数差分連立方程式として表し、前記一次定係数差分連立方程式の閉形式解を取得して、前記閉形式解をループ条件に代入し、ループ回数に関連するループGAS消費計算式を取得し、前記実行コードプログラムに論理制御が含まれる場合、論理制御文を、関連する変数符号を含む斉次多項式に変換してGAS消費計算式とし、符号計算方法に基づいて、前記プログラムセグメントにおける全てのGAS消費計算式を順次に累計して、最終的なGAS消費計算式を取得して、GAS消費式を簡略化して出力する。
【0037】
一実施例では、前記符号計算方法は下記のステップを含む。
多項式ループプログラムP、プログラム変数個数m、多項式不変式の次数の上界Uを入力し、
LoopInvを初期化してNULLとし、
前記多項式ループプログラムPを多項式遷移系Tで表し、ただし、TはV、L、Y、l0、Oからなり、Vは変数セット、Lは有限位置セット、Yは状態遷移セット、l0は初期位置、Oは初期条件を表し、
前記多項式遷移系Tからサンプル点セットSを取得し、
BMアルゴリズムにより、次別辞書順で、前記サンプル点セットSの消去イデアルのGrobner基底I(S)=<p1,p2,…,ps>を算出して、I(S)における全ての多項式p1,p2,…,psの最低の次数を算出し、pi=0を前記多項式ループプログラムPの不変式候補とし、ただし、i=1,2,…,sであり、
前記不変式候補を検証し、pi(V)|pi(V’)が成立すると、前記LoopInvにLoopInv^piを割り当て、但し、V’は遷移後の変数セットを表し、
前記不変式候補を検証するステップを繰り返し、i>sまでi値をトラバーサルし、前記LoopInvから前記多項式ループプログラムPのループ不変式を生成する。
【0038】
スマートコントラクト処理システムへの具体的な限定については、上記のスマートコントラクト処理方法への限定を参照すればよく、ここでは詳述しない。上述のスマートコントラクト処理システムにおける各モジュールの全部または一部は、ソフトウェア、ハードウェア、およびそれらの組み合わせによって実現され得る。上記の各モジュールは、ハードウェアとしてコンピュータ機器のプロセッサに組み込まれていてもよいし、独立していてもよいし、またプロセッサに呼び出されてそれらに対応する操作を実行するように、ソフトウェアとしてコンピュータ機器のメモリに記憶されていてもよい。
【0039】
一実施例では、コンピュータ機器が提供され、該コンピュータ機器は端末であってもよく、その内部構造図は、図5に示すようなものであってもよい。該コンピュータ機器は、システムバスを介して接続されるプロセッサ、メモリ、ネットワークインタフェース、ディスプレイ、および入力装置を含む。ここで、該コンピュータ機器のプロセッサは、計算機能および制御機能を提供するためのものである。該コンピュータ機器のメモリは、不揮発性記憶媒体、内部メモリを含む。該不揮発性記憶媒体には、オペレーティングシステムおよびコンピュータプログラムが記憶されている。この内部メモリは、不揮発性記憶媒体におけるオペレーティングシステムおよびコンピュータプログラムの実行のための環境を提供する。該コンピュータ機器のネットワークインタフェースは、ネットワーク接続を介して外部の端末と通信するためのものである。該コンピュータプログラムは、プロセッサによって実行されると、スマートコントラクト処理方法を実現する。該コンピュータ機器のディスプレイは、液晶ディスプレイまたは電子インクディスプレイであってもよく、該コンピュータ機器の入力装置は、ディスプレイに覆われるタッチ層であってもよく、コンピュータ機器の筐体に設けられるボタン、トラックボールまたはタッチパッドであってもよく、外付けのキーボード、タッチパッドまたはマウスなどであってもよい。
【0040】
当業者であれば、図5に示されている構造は、本願の方案に関連する一部の構造のブロック図にすぎず、本願の方案が適用されるコンピュータ機器への限定とはならず、具体的なコンピュータ機器は、図面に示されるものよりも多いまたは少ないコンポーネントを含み、あるいは、あるコンポーネントを組み合わせたり、異なるコンポーネント構成を有したりすることができることを理解するであろう。
【0041】
一実施例では、メモリとプロセッサを含むコンピュータ機器が提供され、メモリにコンピュータプログラムが記憶され、コンピュータプログラムが該プロセッサによって実行されると、上述のスマートコントラクト処理方法のステップが実現される。
【0042】
一実施例では、コンピュータプログラムが記憶されたコンピュータ読み取り可能な記憶媒体が提供され、コンピュータプログラムがプロセッサによって実行されると、上述のスマートコントラクト処理方法のステップが実行される。
【0043】
当業者であれば、上述の実施例の方法におけるフローの全部または一部を実現することは、関連するハードウェアを、コンピュータプログラムによって命令することによって行うことができ、前記コンピュータプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されることができ、該コンピュータプログラムは、実行されると、上述の各方法の実施例のフローを含むことができることを理解するであろう。本願に提供される各実施で使用される、メモリ、記憶装置、データベース、または他の媒体への任意の引用はいずれも、不揮発性および/または揮発性メモリを含むことができる。不揮発性メモリは、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、またはフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)または外部キャッシュメモリを含むことができる。限定ではなく説明として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、エンハンスドSDRAM(ESDRAM)、シンクロナスリンク(Synchlink) DRAM(SLDRAM)、メモリバス(Rambus)ダイレクトRAM(RDRAM)、ダイレクトメモリバスダイナミックRAM(DRDRAM)、およびメモリバスダイナミックRAM(RDRAM)などの様々な形態で入手可能である。
【0044】
以上説明した実施例の各技術的特徴は、任意に組み合わせることが可能であり、説明を簡潔にするために、上記実施例における各技術的特徴の全ての可能な組み合わせについては説明していないが、これらの技術的特徴の組み合わせは、矛盾しない限り、本明細書に記載された範囲内であると考えられるべきである。
【0045】
上述した実施例は本発明のいくつかの実施形態を説明したものにすぎず、その叙述は具体的で詳細であるが、発明特許範囲に対する限定として理解すべきではない。当業者にとって、本発明の構想から逸脱しない前提でいくつかの変形や改善が可能であり、これらは本発明の保護範囲に属する。したがって、本発明の特許の保護範囲は、添付の特許請求の範囲に従うものとする。
図1
図2
図3
図4
図5