JP7315786B2 - スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 - Google Patents
スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 Download PDFInfo
- Publication number
- JP7315786B2 JP7315786B2 JP2022511395A JP2022511395A JP7315786B2 JP 7315786 B2 JP7315786 B2 JP 7315786B2 JP 2022511395 A JP2022511395 A JP 2022511395A JP 2022511395 A JP2022511395 A JP 2022511395A JP 7315786 B2 JP7315786 B2 JP 7315786B2
- Authority
- JP
- Japan
- Prior art keywords
- smart contract
- interface
- name
- calling
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
- G06F8/437—Type checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本願は、2019年9月16日に出願された、出願番号が201910870035.3であり、発明の名称が「ソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法」である中国特許出願の優先権を主張し、その全体が援用によりにより本願に取り込まれている。
(1)スマートコントラクトのABIまたはソースコードに応じて、スマートコントラクトのインタフェースを解析するステップと、
(2)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成するステップと、
(3)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップと、
(4)関連する呼出し階層フレームワーク設計パターンに応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む。
スマートコントラクトのABIが提供される場合、ABIに対応するABI解析対象を構築し、JSON変換によってABIテキストをABI解析対象に変換し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得し、
スマートコントラクトのソースコードが提供される場合、スマートコントラクトソースコードテキストに構文解析を行い、構文木を構築し、これによりスマートコントラクトのすべてのインタフェースの情報を取得する。
実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される。
(1)呼出し階層のインタフェースを定義する。そのうち、呼出し階層インタフェース名がコントラクト名によって決定され、インタフェースにおける方法がスマートコントラクトに露出されるインタフェースに対応し、方法名がインタフェース名とインタフェース定義番号によって決定され、方法の入力パラメータと戻りパラメータが対応する実体クラスである。
(2)呼出し階層のインタフェースに対応する実装クラスを実装する。そのうち、実装クラスの名付けがコントラクト名によって決定され、実装クラスにおける方法は、方法パラメータとして導入される実体クラスを対応するスマートコントラクトパラメータに変換する第一ステップと、対応するスマートコントラクトのインタフェースを指定してスマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する第二ステップと、スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す第三ステップと、という三つのステップを経て実現される。
(1)実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装する。スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換する。
(2)スマートコントラクトにより提供されるAPIをパッケージングする。
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するステップと、
インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するステップと、
前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む。
前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、これにより前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、
前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築し、これにより、前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、を含む。
コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名とインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
前記インタフェースの入力パラメータと戻りパラメータのタイプに応じて変換を行って、前記実体クラスのフィールドタイプを取得するステップと、
前記インタフェースの入力パラメータと戻りパラメータの名付け情報に応じて、前記実体クラスのフィールドの名付けを決定するステップと、
POJO仕様に従って前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を相応的に生成するステップと、を含む。
呼出し階層のインタフェースを定義するステップであって、呼出し階層のインタフェース名がコントラクト名に応じて決定され、前記呼出し階層のインタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名とインタフェース定義番号によって決定され、前記呼び出し方法の入力パラメータと戻りパラメータが対応する実体クラスであるステップと、
前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定され、
前記実装クラスにおける方法は、
前記方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIによって対応するインタフェースを呼び出し、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、前記呼び出し方法により当該実体クラスを返すステップと、を含むステップと、
を含む。
前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む。
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられるインタフェース解析モジュールと、
インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するために用いられる実体クラス生成モジュールと、
前記インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられる呼び出し方法生成モジュールと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられるプログラム生成モジュールと、を含む。
S3:インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成する。
(1)実体クラスパッケージ:このパッケージは、すべてのプロジェクトにおける実体クラス、特に、スマートコントラクトの呼び出しに関連する入力パラメータ実体クラスおよび戻りパラメータ実体クラスを管理するために使用される。
(2)あるコントラクト実体クラスパッケージ:このパッケージは、あるスマートコントラクトにおけるすべてのインタフェースの入力パラメータ実体クラスおよび戻りパラメータ実体クラスを管理するために使用され、パッケージ名はコントラクト名によって決定される。
(3)ある入力パラメータまたは戻りパラメータ実体クラス:当該実体クラスはあるコントラクトにおけるあるインタフェースの入力パラメータに対応し、そのフィールドタイプは文字列または文字列配列であり、そのフィールド名はパラメータ名によって決定され、POJOクラスのデフォルトのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を含み、実体クラス名はインタフェース名とインタフェース番号によって決定される。
(4)コントラクト層パッケージ:このパッケージは、すべてのスマートコントラクトの呼び出しインタフェースおよびインタフェース実装クラスを管理するために使用される。
(5)あるコントラクトインタフェース:当該インタフェースはあるコントラクトのすべてのインタフェースに対応し、すなわちある方法はスマートコントラクトにおける一つの公開関数に対応し、方法名はインタフェース名とインタフェース番号によって決定され、方法の入力パラメータは当該方法に対応する入力パラメータ実体クラスであり、方法の戻りパラメータは当該方法に対応する戻りパラメータ実体クラスであり、入力パラメータのないインタフェースの場合、当該方法の入力パラメータはNULLであり、戻りパラメータのないインタフェースの場合、当該方法の戻りパラメータはvoidである。
(6)インタフェース実体クラスパッケージ:当該パッケージは、すべてのコントラクトのインタフェースの実装クラスを管理するために使用される。
あるコントラクトのインタフェースの実装クラス:当該クラスはあるコントラクトのインタフェースの実装に対応し、そのうち、方法の宣言はインタフェースの方法の宣言と一致して保持され、方法の実現ロジックは主に三つのステップを経る。第一ステップでは、方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換する。第二ステップでは、対応するスマートコントラクトのインタフェースを指定してスマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する。第三ステップでは、スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す。
(7)フレームワークツール層:このパッケージは、すべてのコントラクト呼び出しに関連するインタフェース解析、パラメータ変換などのツールクラスを管理するために使用される。
(8)実体クラス変換ツールクラス:入力パラメータまたは戻りパラメータ実体クラスを、スマートコントラクトパラメータとの間に相互変換するツールクラスであって、その変換規則は上述の通りである。
(9) API呼び出しツールクラス:スマートコントラクトのインタフェースを呼び出す基礎的なツールクラスであり、その実装は具体的なブロックチェーンプロトコルおよび提供されるAPIインタフェースに依存するが、基本的なスマートコントラクトのインタフェースの呼び出し機能を満たすべきである。
S110:スマートコントラクトのABI又はソースコードに応じて、前記スマートコントラクトのインタフェースを解析する。
S120:インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータ及び戻りパラメータに対応する実体クラスを生成する。
S130:前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成する。
S140:関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成する。
前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、それにより前記スマートコントラクトの全てのインタフェースの情報を取得し、
前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築することにより、前記スマートコントラクトのすべてのインタフェースの情報を取得する。
コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名及びインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
前記インタフェースの入力パラメータ及び戻りパラメータのタイプに応じて変換を行い、実体クラスのフィールドタイプを取得するステップと、
インタフェースの入力パラメータ及び戻りパラメータの名付け情報に応じて実体クラスのフィールド名付けを決定するステップと、
POJO仕様に従って、前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を生成するステップと、を含む。
呼出し階層インタフェースを定義するステップであって、呼出し階層インタフェース名がコントラクト名に応じて決定され、前記呼出し階層インタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名及びインタフェース定義番号に応じて決定され、前記呼び出し方法の入力パラメータ及び戻りパラメータが対応する実体クラスであるステップと、
前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定されるステップと、を含み、
前記実装クラスにおける方法は、
方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返すステップと、を含む。
前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装するステップであって、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列タイプおよび可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む。
インタフェース解析モジュール210は、前記スマートコントラクトのABI又はソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられ、
実体クラス生成モジュール220は、インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータ及び戻りパラメータに対応する実体クラスを生成するために用いられ、
呼び出し方法生成モジュール230は、前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられ、
プログラム生成モジュール240は、関連する呼出し階層フレームワーク設計パターン、前記実体クラス、および前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられる。
方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返すステップと、を含む。
Claims (11)
- ソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法において、
(1)スマートコントラクトのABIまたはソースコードに応じて、スマートコントラクトのインタフェースを解析するステップと、
(2)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成するステップであって、具体的には、
実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、
実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、
実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される、ステップと、
(3)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップと、
(4)関連する呼出し階層フレームワーク設計パターンに応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む
ことを特徴とする方法。 - 前記ステップ(1)におけるスマートコントラクトのインタフェースを解析するステップは、具体的に、以下の通りであり、
スマートコントラクトのABIが提供される場合、ABIに対応するABI解析対象を構築し、JSON変換によってABIテキストをABI解析対象に変換し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得し、
スマートコントラクトのソースコードが提供される場合、スマートコントラクトソースコードテキストに構文解析を行い、構文木を構築し、これによりスマートコントラクトのすべてのインタフェースの情報を取得する
ことを特徴とする請求項1に記載の方法。 - 前記ステップ(3)における当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップは、具体的に、以下の通りであり、
(1)呼出し階層のインタフェースを定義し、そのうち、呼出し階層インタフェース名がコントラクト名によって決定され、インタフェースにおける方法がスマートコントラクトに露出されるインタフェースに対応し、方法名がインタフェース名とインタフェース定義番号によって決定され、方法の入力パラメータと戻りパラメータが対応する実体クラスであり、
(2)呼出し階層のインタフェースに対応する実装クラスを実装し、そのうち、実装クラスの名付けがコントラクト名によって決定され、実装クラスにおける方法は、
方法パラメータで導入される実体クラスを対応するスマートコントラクトパラメータに変換する第一ステップと、
対応するスマートコントラクトのインタフェースを指定し、スマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する第二ステップと、
スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す第三ステップと、
という三つのステップを経て実現されることを特徴とする請求項1に記載の方法。 - 前記ステップ(4)におけるスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは、具体的に、以下の通りであり、
(1)実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換し、
(2)スマートコントラクトにより提供されるAPIをパッケージングする
ことを特徴とする請求項1に記載の方法。 - スマートコントラクトのクライアントプログラムの生成方法において、
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するステップと、
インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するステップであって、具体的には、
コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名とインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
前記インタフェースの入力パラメータと戻りパラメータのタイプに応じて変換を行って、前記実体クラスのフィールドタイプを取得するステップと、
前記インタフェースの入力パラメータと戻りパラメータの名付け情報に応じて、前記実体クラスのフィールドの名付けを決定するステップと、
POJO仕様に従って前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を相応的に生成するステップと、を含む、ステップと、
前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む
ことを特徴とするスマートコントラクトのクライアントプログラムの生成方法。 - 前記スマートコントラクトのインタフェースを解析するステップは、
前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、これにより前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、
前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築し、これにより、前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、を含む
ことを特徴とする請求項5に記載のスマートコントラクトのクライアントプログラムの生成方法。 - 前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップは、
呼出し階層のインタフェースを定義するステップであって、呼出し階層のインタフェース名がコントラクト名に応じて決定され、前記呼出し階層のインタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名とインタフェース定義番号によって決定され、前記呼び出し方法の入力パラメータと戻りパラメータが対応する実体クラスであるステップと、
前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定され、前記実装クラスにおける方法は、
前記方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIによって対応するインタフェースを呼び出し、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、前記呼び出し方法により当該実体クラスを返すステップと、を含むステップと、
を含む
ことを特徴とする請求項5に記載のスマートコントラクトのクライアントプログラムの生成方法。 - 関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じてスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは、
前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む
ことを特徴とする請求項5に記載のスマートコントラクトのクライアントプログラムの生成方法。 - スマートコントラクトのクライアントプログラムの生成システムにおいて、前記生成システムは、
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられるインタフェース解析モジュールと、
インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するために用いられる実体クラス生成モジュールであって、実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される、実体クラス生成モジュールと、
前記インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられる呼び出し方法生成モジュールと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられるプログラム生成モジュールと、を含む
ことを特徴とするスマートコントラクトのクライアントプログラムの生成システム。 - コンピュータプログラムが記憶されるメモリと、プロセッサとを含むスマートコントラクトのクライアントプログラムの生成機器であって、前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1~8のいずれか一項に記載の方法のステップが実現されることを特徴とするスマートコントラクトのクライアントプログラムの生成機器。
- コンピュータプログラムが記憶される読み取り可能な記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1~8のいずれか一項に記載の方法のステップが実現されることを特徴とする読み取り可能な記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910870035.3A CN110633076B (zh) | 2019-09-16 | 2019-09-16 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
CN201910870035.3 | 2019-09-16 | ||
PCT/CN2020/115407 WO2021052338A1 (zh) | 2019-09-16 | 2020-09-15 | 智能合约客户端程序的生成方法、系统、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022545489A JP2022545489A (ja) | 2022-10-27 |
JP7315786B2 true JP7315786B2 (ja) | 2023-07-26 |
Family
ID=68972505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022511395A Active JP7315786B2 (ja) | 2019-09-16 | 2020-09-15 | スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220179651A1 (ja) |
JP (1) | JP7315786B2 (ja) |
CN (1) | CN110633076B (ja) |
WO (1) | WO2021052338A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633076B (zh) * | 2019-09-16 | 2021-05-04 | 杭州趣链科技有限公司 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
CN111581047B (zh) * | 2020-03-24 | 2023-03-24 | 博雅正链(北京)科技有限公司 | 一种针对智能合约行为的监管方法 |
US11650802B2 (en) * | 2020-12-22 | 2023-05-16 | Diffblue Ltd | Idiomatic source code generation |
CN113885862A (zh) * | 2021-09-29 | 2022-01-04 | 武汉斗鱼鱼乐网络科技有限公司 | 一种头像框复用方法、存储介质、电子设备 |
US11675571B1 (en) * | 2021-12-28 | 2023-06-13 | Nb Ventures, Inc. | Restructuring enterprise application |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013073400A (ja) | 2011-09-27 | 2013-04-22 | Fujitsu Ltd | サービスモジュール生成プログラム、該装置、及びサービス情報管理方法 |
US20130124608A1 (en) | 2011-11-15 | 2013-05-16 | Joseph Charles Gregorio | Providing a client interface for a server-based web application programming interface |
CN107463376A (zh) | 2017-07-21 | 2017-12-12 | 珠海牛角科技有限公司 | 基于Javadoc的自动生成后端接口文档的方法及装置 |
CN108304307A (zh) | 2018-01-24 | 2018-07-20 | 深圳圣马歌科技有限公司 | 一种区块链上智能合约的性能检测方法 |
CN109614102A (zh) | 2018-10-09 | 2019-04-12 | 平安科技(深圳)有限公司 | 代码自动生成方法、装置、电子设备及存储介质 |
US20190188063A1 (en) | 2017-12-18 | 2019-06-20 | Sap Se | Mapping computer programs to network protocol methods |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8624921B2 (en) * | 2008-09-30 | 2014-01-07 | Rockwell Automation Technologies, Inc. | Industrial automation visualization schemes employing overlays |
US9883008B2 (en) * | 2010-01-15 | 2018-01-30 | Endurance International Group, Inc. | Virtualization of multiple distinct website hosting architectures |
US8683428B2 (en) * | 2011-03-23 | 2014-03-25 | Microsoft Corporation | Automated generation of client/driver communication interfaces |
US8732720B2 (en) * | 2011-12-22 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Job scheduling based on map stage and reduce stage duration |
US10187452B2 (en) * | 2012-08-23 | 2019-01-22 | TidalScale, Inc. | Hierarchical dynamic scheduling |
US9774401B1 (en) * | 2013-07-15 | 2017-09-26 | Paul Borrill | Entangled links, transactions and trees for distributed computing systems |
US11030105B2 (en) * | 2014-07-14 | 2021-06-08 | Oracle International Corporation | Variable handles |
US10210606B2 (en) * | 2014-10-14 | 2019-02-19 | Kla-Tencor Corporation | Signal response metrology for image based and scatterometry overlay measurements |
US9916170B2 (en) * | 2015-12-30 | 2018-03-13 | Vmware, Inc. | Cloud computing simulator |
US10339246B2 (en) * | 2016-05-26 | 2019-07-02 | Synopsys, Inc. | Schematic overlay for design and verification |
US10353736B2 (en) * | 2016-08-29 | 2019-07-16 | TidalScale, Inc. | Associating working sets and threads |
CN106919509B (zh) * | 2017-03-09 | 2020-11-24 | 腾讯科技(深圳)有限公司 | 一种客户端生成方法、装置及电子设备 |
CN108572986B (zh) * | 2017-03-13 | 2022-05-17 | 华为技术有限公司 | 一种数据更新的方法及节点设备 |
CN107038242B (zh) * | 2017-04-24 | 2020-02-07 | 杭州趣链科技有限公司 | 一种面向区块链全局智能合约业务数据解析方法 |
CN107274186A (zh) * | 2017-05-11 | 2017-10-20 | 上海点融信息科技有限责任公司 | 在区块链中获得智能合约接口的方法和设备 |
US11488121B2 (en) * | 2017-05-11 | 2022-11-01 | Microsoft Technology Licensing, Llc | Cryptlet smart contract |
US10325116B2 (en) * | 2017-06-30 | 2019-06-18 | Vmware, Inc. | Dynamic privilege management in a computer system |
US10671377B2 (en) * | 2017-07-13 | 2020-06-02 | Vmware, Inc. | Method to deploy new version of executable in node based environments |
CN107844294B (zh) * | 2017-11-17 | 2020-05-19 | 杭州溪塔科技有限公司 | 一种高可用的合约执行方法及系统 |
WO2019108676A1 (en) * | 2017-11-28 | 2019-06-06 | Yale University | Systems and methods of formal verification |
CN108156022B (zh) * | 2017-12-04 | 2021-07-09 | 北京奇艺世纪科技有限公司 | 一种服务调用方法、装置及电子设备 |
US11256712B2 (en) * | 2018-02-05 | 2022-02-22 | Accenture Global Solutions Limited | Rapid design, development, and reuse of blockchain environment and smart contracts |
WO2020005328A2 (en) * | 2018-02-09 | 2020-01-02 | Orbs Ltd. | Decentralized application platform for private key management |
WO2019194267A1 (ja) * | 2018-04-06 | 2019-10-10 | 日本電信電話株式会社 | ブロックチェーンシステム、登録端末、承認端末、スマートコントラクト登録方法、および、スマートコントラクト登録プログラム |
CN108769173B (zh) * | 2018-05-21 | 2021-11-09 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
US10754952B2 (en) * | 2018-07-23 | 2020-08-25 | Vmware, Inc. | Host software metadata verification during remote attestation |
US10896195B2 (en) * | 2018-07-29 | 2021-01-19 | International Business Machines Corporation | Automatic generation of smart contracts |
US11188911B2 (en) * | 2018-08-21 | 2021-11-30 | Bcdb, Inc. | Object oriented smart contracts for UTXO-based blockchains |
CN109375899B (zh) * | 2018-09-25 | 2021-08-03 | 杭州趣链科技有限公司 | 一种形式验证Solidity智能合约的方法 |
US10871989B2 (en) * | 2018-10-18 | 2020-12-22 | Oracle International Corporation | Selecting threads for concurrent processing of data |
CN109710235B (zh) * | 2018-12-29 | 2022-04-01 | 杭州趣链科技有限公司 | 一种基于Java智能合约业务逻辑的事务实现系统及方法 |
US11194600B2 (en) * | 2019-01-16 | 2021-12-07 | Vmware, Inc. | Secure digital workspace using machine learning and microsegmentation |
WO2019101236A2 (en) * | 2019-03-04 | 2019-05-31 | Alibaba Group Holding Limited | Software interface for smart contracts |
CN110175022B (zh) * | 2019-04-25 | 2023-10-13 | 平安科技(深圳)有限公司 | 自动生成pojo类的方法、装置及存储介质、计算机设备 |
US11526610B2 (en) * | 2019-05-21 | 2022-12-13 | Veracode, Inc. | Peer-to-peer network for blockchain security |
CN110297721B (zh) * | 2019-06-24 | 2021-08-03 | 杭州趣链科技有限公司 | 一种基于java的智能合约的跨合约调用方法 |
CN110633076B (zh) * | 2019-09-16 | 2021-05-04 | 杭州趣链科技有限公司 | 一种自动生成Solidity智能合约Java客户端程序的方法 |
US11573951B2 (en) * | 2019-10-03 | 2023-02-07 | Curvegrid, Inc. | Systems, methods, and storage media for interfacing a user device with a decentralized architecture |
KR102247233B1 (ko) * | 2019-10-28 | 2021-05-03 | 주식회사 린아레나 | 다중 레이어 기반 스마트 컨트랙트 감사 방법 및 그 장치 |
SG11202010736YA (en) * | 2019-11-08 | 2020-11-27 | Alipay Hangzhou Inf Tech Co Ltd | System and method for blockchain-based decentralized application development |
US11641354B2 (en) * | 2020-03-09 | 2023-05-02 | Nant Holdings Ip, Llc | Enhanced access to media, systems and methods |
-
2019
- 2019-09-16 CN CN201910870035.3A patent/CN110633076B/zh active Active
-
2020
- 2020-09-15 JP JP2022511395A patent/JP7315786B2/ja active Active
- 2020-09-15 WO PCT/CN2020/115407 patent/WO2021052338A1/zh active Application Filing
-
2022
- 2022-02-22 US US17/676,840 patent/US20220179651A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013073400A (ja) | 2011-09-27 | 2013-04-22 | Fujitsu Ltd | サービスモジュール生成プログラム、該装置、及びサービス情報管理方法 |
US20130124608A1 (en) | 2011-11-15 | 2013-05-16 | Joseph Charles Gregorio | Providing a client interface for a server-based web application programming interface |
CN107463376A (zh) | 2017-07-21 | 2017-12-12 | 珠海牛角科技有限公司 | 基于Javadoc的自动生成后端接口文档的方法及装置 |
US20190188063A1 (en) | 2017-12-18 | 2019-06-20 | Sap Se | Mapping computer programs to network protocol methods |
CN108304307A (zh) | 2018-01-24 | 2018-07-20 | 深圳圣马歌科技有限公司 | 一种区块链上智能合约的性能检测方法 |
CN109614102A (zh) | 2018-10-09 | 2019-04-12 | 平安科技(深圳)有限公司 | 代码自动生成方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
モディ リテシュ,Solidityプログラミング,株式会社講談社,2019年09月05日,p.20-21,30,ISBN: 978-4-06-515537-0 |
立石孝彰 ほか,"ブロックチェーンアプリケーション開発の実践と今後の課題",ソフトウェアエンジニアリングシンポジウム2017 [online],日本,情報処理学会,2017年08月23日,Vol.2017,p204-211,[2017年08月23日検索],インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=183231&file_id=1&file_no=1> |
Also Published As
Publication number | Publication date |
---|---|
US20220179651A1 (en) | 2022-06-09 |
WO2021052338A1 (zh) | 2021-03-25 |
CN110633076A (zh) | 2019-12-31 |
JP2022545489A (ja) | 2022-10-27 |
CN110633076B (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7315786B2 (ja) | スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 | |
US5307499A (en) | Interpretive object-oriented facility which can access pre-compiled classes | |
US10146522B1 (en) | Live code updates | |
CN112748908B (zh) | 基于SSM框架的Restful服务开发方法与装置 | |
US7992130B2 (en) | Class-based object-oriented features in class-less script language | |
CN110187902B (zh) | 基于spring boot的项目改造方法、装置、设备及存储介质 | |
US20120084749A1 (en) | Programming language support for reactive programming | |
KR20140057547A (ko) | 런타임 시스템 | |
US20090228904A1 (en) | Declarative support for asynchronous methods | |
CN105022630A (zh) | 一种组件管理系统及组件管理方法 | |
JP2009512014A (ja) | オブジェクト合成に対する拡張可能メカニズム | |
CN111506314B (zh) | 项目开发的方法、装置、服务器及介质 | |
CN110457013B (zh) | 程序组件配置装置及方法 | |
CN113434131A (zh) | 编写程序方法、装置、计算机设备和存储介质 | |
US8438538B2 (en) | SimpleBinding extension | |
CN112187713A (zh) | 报文转换的方法、装置、计算机设备和存储介质 | |
US10802855B2 (en) | Producing an internal representation of a type based on the type's source representation | |
CN109739655A (zh) | 一种gRPC请求的参数设置方法及装置 | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
US8793671B2 (en) | Interface optimization in a closed system | |
CN117971350A (zh) | 小程序运行方法、装置和计算机可读存储介质 | |
CN113760360A (zh) | 一种文件生成方法、装置、设备及存储介质 | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
CN113608745B (zh) | 一种初始化用户权限的方法及存储介质 | |
CN117519691B (zh) | 应用程序处理方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230411 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230626 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230711 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230713 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7315786 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |