JP7315786B2 - スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 - Google Patents

スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 Download PDF

Info

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
Application number
JP2022511395A
Other languages
English (en)
Other versions
JP2022545489A (ja
Inventor
▲うぇい▼偉 邱
偉 李
亮 蔡
帥 張
丁文 張
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Publication of JP2022545489A publication Critical patent/JP2022545489A/ja
Application granted granted Critical
Publication of JP7315786B2 publication Critical patent/JP7315786B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote 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クライアントプログラムを自動的に生成する方法」である中国特許出願の優先権を主張し、その全体が援用によりにより本願に取り込まれている。
本願は、スマートコントラクトの技術分野に関し、特に、スマートコントラクトのクライアントプログラムの生成方法、システム機器、及び媒体に関する。
スマートコントラクトは、ブロックチェーン上で実行可能なコンピュータプログラムであり、スマートコントラクトがブロックチェーンに配置された後、クライアントプログラムにより呼び出すことにより、スマートコントラクトで定義された対応するインタフェースのサービスを取得できる。Javaは、オブジェクト指向プログラミング言語であり、現在のバックグラウンド開発の主流言語の1つである。Javaクライアントプログラムは、多くの開発者がスマートコントラクトのインタフェースを呼び出すための主要な選択である。一般には、開発者にとって、スマートコントラクトを作成した後、そのスマートコントラクトを呼び出すためのクライアントプログラムを対応的に作成する必要もあり、スマートコントラクトのクライアントプログラムを開発するプロセスは煩雑であり、効率が低い。
本願の各実施例によると、ソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法を提供し、前記方法は、
(1)スマートコントラクトのABIまたはソースコードに応じて、スマートコントラクトのインタフェースを解析するステップと、
(2)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成するステップと、
(3)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップと、
(4)関連する呼出し階層フレームワーク設計パターンに応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む。
一実施例において、ステップ(1)におけるスマートコントラクトのインタフェースを解析するステップは具体的に以下のステップを含み、
スマートコントラクトのABIが提供される場合、ABIに対応するABI解析対象を構築し、JSON変換によってABIテキストをABI解析対象に変換し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得し、
スマートコントラクトのソースコードが提供される場合、スマートコントラクトソースコードテキストに構文解析を行い、構文木を構築し、これによりスマートコントラクトのすべてのインタフェースの情報を取得する。
一実施例において、ステップ(2)における当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成するステップは具体的に以下のステップを含み、
実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される。
一実施例において、ステップ(3)における当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップは以下のステップを含み、
(1)呼出し階層のインタフェースを定義する。そのうち、呼出し階層インタフェース名がコントラクト名によって決定され、インタフェースにおける方法がスマートコントラクトに露出されるインタフェースに対応し、方法名がインタフェース名とインタフェース定義番号によって決定され、方法の入力パラメータと戻りパラメータが対応する実体クラスである。
(2)呼出し階層のインタフェースに対応する実装クラスを実装する。そのうち、実装クラスの名付けがコントラクト名によって決定され、実装クラスにおける方法は、方法パラメータとして導入される実体クラスを対応するスマートコントラクトパラメータに変換する第一ステップと、対応するスマートコントラクトのインタフェースを指定してスマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する第二ステップと、スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す第三ステップと、という三つのステップを経て実現される。
一実施例において、ステップ(4)におけるスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは具体的に以下のステップを含み、
(1)実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装する。スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換する。
(2)スマートコントラクトにより提供されるAPIをパッケージングする。
本願の有益な効果は以下の通りである。本願の方法により汎用のスマートコントラクトのインタフェース解析、パラメータ変換方法、及び関連する呼出し階層フレームワーク設計パターンが提供され、スマートコントラクトのクライアントプログラムが自動的に生成され、呼び出し者は本願の呼出し階層フレームワークの規定にしたがって、インタフェースの解析とパラメータの変換に注目しなく、スマートコントラクトのインタフェースを便利に呼び出すことができ、従来のスマートコントラクトの開発プロセスが簡略化され、スマートコントラクトの開発効率が向上する。
本願の各実施例によると、スマートコントラクトのクライアントプログラムの生成方法も提供され、前記生成方法は、
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するステップと、
インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するステップと、
前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む。
一実施例において、前記スマートコントラクトのインタフェースを解析するステップは、
前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、これにより前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、
前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築し、これにより、前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、を含む。
一実施例において、前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するステップは、
コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名とインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
前記インタフェースの入力パラメータと戻りパラメータのタイプに応じて変換を行って、前記実体クラスのフィールドタイプを取得するステップと、
前記インタフェースの入力パラメータと戻りパラメータの名付け情報に応じて、前記実体クラスのフィールドの名付けを決定するステップと、
POJO仕様に従って前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を相応的に生成するステップと、を含む。
一実施例において、前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップは、
呼出し階層のインタフェースを定義するステップであって、呼出し階層のインタフェース名がコントラクト名に応じて決定され、前記呼出し階層のインタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名とインタフェース定義番号によって決定され、前記呼び出し方法の入力パラメータと戻りパラメータが対応する実体クラスであるステップと、
前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定され、
前記実装クラスにおける方法は、
前記方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIによって対応するインタフェースを呼び出し、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、前記呼び出し方法により当該実体クラスを返すステップと、を含むステップと、
を含む。
一実施例において、関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じてスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは、
前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む。
本願の各実施例によると、スマートコントラクトのクライアントプログラムの生成システムも提供され、前記生成システムは、
スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられるインタフェース解析モジュールと、
インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するために用いられる実体クラス生成モジュールと、
前記インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられる呼び出し方法生成モジュールと、
関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられるプログラム生成モジュールと、を含む。
本願の各実施例によると、コンピュータプログラムが記憶されるメモリと、プロセッサとを含むスマートコントラクトのクライアントプログラムの生成機器も提供され、前記コンピュータプログラムが前記プロセッサによって実行されると、上記のスマートコントラクトのクライアントプログラムの生成方法のステップが実現される。
本願の各実施例によると、コンピュータプログラムが記憶される読み取り可能な記憶媒体も提供され、前記コンピュータプログラムがプロセッサによって実行されると、上記のスマートコントラクトのクライアントプログラムの生成方法のステップが実現される。
ここに開示される発明の実施例および/または例示をよりよく記述し説明するために、1つまたは複数の図面を参照することができる。添付の図面を説明するための追加の詳細または例示は、開示された発明、現在説明されている実施例および/または例示、ならびに現在理解されているこれらの発明の最適形態のうちのいずれか一つの範囲を限定するものとみなされるべきではない。
本願の実施例に係るソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法のフローチャートである。 本願の実施例に係るソリディティスマートコントラクトのJavaクライアントプログラムの自動生成に基づくUML図である。 本願の実施例に係るスマートコントラクトのクライアントプログラムの生成方法を示すフローチャートである。 本願の実施例に係るスマートコントラクトのクライアントプログラムの生成システムの概略構造図である。 本願の実施例に係るスマートコントラクトのクライアントプログラムの生成機器の内部構成図である。
本願に対する理解を容易にするために、本願の上記の目的、特徴および利点をより明確に理解されるように、以下に本願の具体的な実施形態を添付の図面を参照して詳細に説明する。本願が十分に理解されるように、多くの具体的な詳細が以下の説明で説明されており、本願の好ましい実施形態が添付の図面に示されている。しかし、本願は、多くの異なる形態で実施することができ、本明細書に記載の実施形態に限定されない。むしろ、これらの実施形態は、本願の開示をより完全に理解するために提供される。本願は、本明細書に記載された以外の多くの方法で実施することができ、当業者は、本願の意図から逸脱することなく類似な改良を行うことができ、したがって、本願は、以下に開示される具体的な実施例に限定されない。
また、用語「第1」、「第2」は、説明だけのために使用され、相対的重要性を示すまたは示唆する、あるいは指示された技術的特徴の数を暗黙的に示すものとして理解されるべきではない。したがって、「第1」、「第2」が限定される特徴は、少なくとも1つの特徴を明示的または暗黙的に含むことができる。本願の記載において、「複数」とは、別途明確に定義されない限り、少なくとも2つ、例えば2つ、3つなどを意味する。本願の説明において、「いくつかの」とは、別途明確に定義されない限り、少なくとも1つ、例えば1つ、2つなどを意味する。
別途定義されない限り、本明細書で使用される全ての技術用語および科学用語は、本願の技術分野に属する当業者によって一般に理解されるものと同じ意味を有する。本明細書で使用される用語は、ただ具体的な実施形態を説明するためのものであって、本願を限定することを意図するものではない。本明細書で使用される「及び/または」という用語は、1つまたは複数の関連する列挙された項の任意及びすべての組み合わせを含む。
図1に示すように、ソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法は、以下のステップS1~S4を含む。
S1:前記スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析する。
スマートコントラクトのABI(アプリケーション二値インタフェース)が提供される場合、ABIに対応する解析対象を構築し、JSON(JavaScript Object Notation)変換によってABIテキストをABI解析対象に変換し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得する。
スマートコントラクトのソースコードが提供される場合、スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得する。
構文木からインタフェース情報を抽出する場合、publicの関数を抽出すればよい。
S2:インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成する。
実体クラスが含まれるパッケージ名はコントラクト名によって決定され、実体クラスの名付けはインタフェース名とインタフェース定義番号によって決定される。
実体クラスのフィールドタイプは、インターフェースの入力パラメータおよび戻りパラメータのタイプに応じて、対応的に変換される。ソリディティは、ソリディティスマートコントラクトおよびJavaクライアントプログラムに適用される場合、スマートコントラクトを記述するコンピュータ高級言語であり、イーサリアム仮想マシンEVM上で実行され、ソリディティスマートコントラクトの中のデータの基本単位が256バイトのものであるので、Javaクライアントで完全に表現させるために、Java実体クラスのフィールドタイプは、それと対応するように、すべて文字列タイプを採用している。ソリディティにおける配列タイプについては、Java実体クラスにおいて文字列配列タイプとして表される。
実体クラスのフィールドの名付けは、インターフェースの入力パラメータおよび戻りパラメータの名付け情報によって決定される。
実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法は、POJO(Plain Ordinary Java Object 簡単なJava対象)仕様に従って相応的に生成される。
S3:インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成する。
具体的には、(1)呼出し階層のインタフェースを定義する。そのうち、呼出し階層のインタフェース名はコントラクト名によって決定され、呼出し階層のインタフェースにおける方法はスマートコントラクトに露出されるインタフェースに対応し、方法名はインタフェース名及びインタフェース定義番号によって決定され、方法の入力パラメータ及び戻りパラメータは対応する実体クラスである。
(2)呼出し階層のインタフェースに対応する実装クラスを実装する。そのうち、実装クラスの名付けはコントラクト名によって決定され、実装クラスにおける方法は主に三つのステップを経て実現される。第一ステップでは、方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換する。第二ステップでは、対応するスマートコントラクトのインタフェースを指定してスマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する。第三ステップでは、スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す。
S4:関連する呼出し階層フレームワーク設計パターンに応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成する。
具体的には、(1)実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装する。スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、スマートコントラクトにおける配列タイプおよび可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換する。このうち、Java実体クラスをソリディティスマートコントラクトの入力パラメータに変換する場合、本質的には文字列をソリディティにおける対応するデータタイプに変換することであり、スマートコントラクトAPI(アプリケーションプログラミングインタフェース)に提供される呼び出しインタフェースに応じて、最終的にAPIに導入されるデータも最終的に文字列の形式で送信される。1つのJava実体クラスにソリディティの同一タイプに対応するフィールドが複数存在する場合、当該タイプの配列に統合して統一に導入することにより、ソリディティスマートコントラクトのパラメータ数を低減させて、EVMのスタック制限を超えることを回避することができる。このとき、Java実体クラスに当該タイプの配列タイプが存在する場合、占有する配列の長さの違いにより、各フィールドが入力パラメータ配列に占有する配列長さを記録し、別の正の整数配列に記録する必要がある。同様に、ソリディティスマートコントラクトの戻りパラメータをJava実体クラスに変換する場合、配列タイプが返されると、上記の分割規則に従って、Java実体クラスにおける文字列に対応的につなぎ合わせて、配列要素のつなぎ合わせの時に分割時の長さ定義に合致することを保証する。
(2)スマートコントラクトにより提供されるAPIをパッケージングする。これは、異常の捕捉、同期非同期呼び出しなどの特性のサポートを提供することができる。当該パッケージの実現および関連する特性のサポートは、具体的なブロックチェーンプロトコルおよび提供されるAPIインタフェースに依存するが、基本的なスマートコントラクトのインタフェースの呼び出し機能を満たすべきである。
本願の方法により、ソリディティスマートコントラクトのJavaクライアントプログラムが自動的に生成され、開発者は、呼出し階層プログラムフレームワークの相応の規定に従って、Java実体クラスをスマートコントラクトのインタフェースの入力パラメータとして導入し、Java実体クラスの戻り結果を取得する。開発者は、スマートコントラクトの呼出し階層だけに注目すればよく、スマートコントラクトのインタフェース解析及びパラメータ変換のステップが省略され、クライアントプログラムの開発作業量が大幅に低減する。
本願の方法により、ソリディティスマートコントラクトのJavaクライアントプログラムが自動的に生成され、最終的に生成されるクライアントプログラムは、図2にUML図の形式で示される。当該クライアントプログラムに具体的に以下のJava構造を含む。
(1)実体クラスパッケージ:このパッケージは、すべてのプロジェクトにおける実体クラス、特に、スマートコントラクトの呼び出しに関連する入力パラメータ実体クラスおよび戻りパラメータ実体クラスを管理するために使用される。
(2)あるコントラクト実体クラスパッケージ:このパッケージは、あるスマートコントラクトにおけるすべてのインタフェースの入力パラメータ実体クラスおよび戻りパラメータ実体クラスを管理するために使用され、パッケージ名はコントラクト名によって決定される。
(3)ある入力パラメータまたは戻りパラメータ実体クラス:当該実体クラスはあるコントラクトにおけるあるインタフェースの入力パラメータに対応し、そのフィールドタイプは文字列または文字列配列であり、そのフィールド名はパラメータ名によって決定され、POJOクラスのデフォルトのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を含み、実体クラス名はインタフェース名とインタフェース番号によって決定される。
(4)コントラクト層パッケージ:このパッケージは、すべてのスマートコントラクトの呼び出しインタフェースおよびインタフェース実装クラスを管理するために使用される。
(5)あるコントラクトインタフェース:当該インタフェースはあるコントラクトのすべてのインタフェースに対応し、すなわちある方法はスマートコントラクトにおける一つの公開関数に対応し、方法名はインタフェース名とインタフェース番号によって決定され、方法の入力パラメータは当該方法に対応する入力パラメータ実体クラスであり、方法の戻りパラメータは当該方法に対応する戻りパラメータ実体クラスであり、入力パラメータのないインタフェースの場合、当該方法の入力パラメータはNULLであり、戻りパラメータのないインタフェースの場合、当該方法の戻りパラメータはvoidである。
(6)インタフェース実体クラスパッケージ:当該パッケージは、すべてのコントラクトのインタフェースの実装クラスを管理するために使用される。
あるコントラクトのインタフェースの実装クラス:当該クラスはあるコントラクトのインタフェースの実装に対応し、そのうち、方法の宣言はインタフェースの方法の宣言と一致して保持され、方法の実現ロジックは主に三つのステップを経る。第一ステップでは、方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換する。第二ステップでは、対応するスマートコントラクトのインタフェースを指定してスマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する。第三ステップでは、スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す。
(7)フレームワークツール層:このパッケージは、すべてのコントラクト呼び出しに関連するインタフェース解析、パラメータ変換などのツールクラスを管理するために使用される。
(8)実体クラス変換ツールクラス:入力パラメータまたは戻りパラメータ実体クラスを、スマートコントラクトパラメータとの間に相互変換するツールクラスであって、その変換規則は上述の通りである。
(9) API呼び出しツールクラス:スマートコントラクトのインタフェースを呼び出す基礎的なツールクラスであり、その実装は具体的なブロックチェーンプロトコルおよび提供されるAPIインタフェースに依存するが、基本的なスマートコントラクトのインタフェースの呼び出し機能を満たすべきである。
さらに、ソリディティはスマートコントラクトを記述するコンピュータ高級言語であり、他のプログラミング言語を採用する場合でも、スマートコントラクトを記述することができ、本願の方案は同様に適用される。したがって、図3に示すように、スマートコントラクトに対して、以下の方案でスマートコントラクトのクライアントプログラムの生成を実現することができる。
S110:スマートコントラクトのABI又はソースコードに応じて、前記スマートコントラクトのインタフェースを解析する。
S120:インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータ及び戻りパラメータに対応する実体クラスを生成する。
S130:前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成する。
S140:関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成する。
一実施例において、前記スマートコントラクトのインタフェースを解析することは以下のステップを含み、
前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、それにより前記スマートコントラクトの全てのインタフェースの情報を取得し、
前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築することにより、前記スマートコントラクトのすべてのインタフェースの情報を取得する。
一実施例において、前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータ及び戻りパラメータに対応する実体クラスを生成することは、
コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名及びインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
前記インタフェースの入力パラメータ及び戻りパラメータのタイプに応じて変換を行い、実体クラスのフィールドタイプを取得するステップと、
インタフェースの入力パラメータ及び戻りパラメータの名付け情報に応じて実体クラスのフィールド名付けを決定するステップと、
POJO仕様に従って、前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を生成するステップと、を含む。
一実施例において、前記インタフェースの解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成することは、
呼出し階層インタフェースを定義するステップであって、呼出し階層インタフェース名がコントラクト名に応じて決定され、前記呼出し階層インタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名及びインタフェース定義番号に応じて決定され、前記呼び出し方法の入力パラメータ及び戻りパラメータが対応する実体クラスであるステップと、
前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定されるステップと、を含み、
前記実装クラスにおける方法は、
方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返すステップと、を含む。
一実施例において、前記関連する呼出し階層フレームワーク設計パターン、前記実体クラス、及び前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成することは、
前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装するステップであって、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列タイプおよび可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む。
一実施例では、図4に示すように、スマートコントラクトのクライアントプログラムの生成システムが提供され、インタフェース解析モジュール210、実体クラス生成モジュール220、呼び出し方法生成モジュール230、及びプログラム生成モジュール240を含み、そのうち、
インタフェース解析モジュール210は、前記スマートコントラクトのABI又はソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられ、
実体クラス生成モジュール220は、インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータ及び戻りパラメータに対応する実体クラスを生成するために用いられ、
呼び出し方法生成モジュール230は、前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられ、
プログラム生成モジュール240は、関連する呼出し階層フレームワーク設計パターン、前記実体クラス、および前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられる。
一実施例において、インタフェース解析モジュール210は、さらに、前記スマートコントラクトのABIが提供される場合、JSON変換によりABIテキストをABI解析対象に変換することにより、前記スマートコントラクトのすべてのインタフェースの情報を取得し、前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築することにより、前記スマートコントラクトのすべてのインタフェースの情報を取得するために用いられる。
一実施例において、実体クラス生成モジュール220は、さらに、コントラクト名に応じて実体クラスが含まれるパッケージ名を決定し、インタフェース名とインタフェース定義番号に応じて実体クラスの名付けを決定し、インタフェースの入力パラメータと戻りパラメータのタイプに応じて変換を行い、実体クラスのフィールドタイプを取得し、インタフェースの入力パラメータと戻りパラメータの名付け情報に応じて実体クラスのフィールド名付けを決定し、 POJO仕様にしたがって実体クラスのコンストラクタ、Get、Set、ToString、Equals、およびHashCode方法を相応的に生成するために用いられる。
一実施例では、呼び出し方法生成モジュール230は、さらに、呼出し階層のインタフェースを定義するために用いられ、そのうち、呼出し階層インタフェース名がコントラクト名に応じて決定され、前記呼出し階層のインタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出す方法名がインタフェース名およびインタフェース定義番号に応じて決定され、前記呼び出し方法の入力パラメータおよび戻りパラメータは、対応する実体クラスである。
また、呼び出し方法生成モジュール230は、さらに、前記呼出し階層のインタフェースに対応する実装クラスを実装するために用いられ、そのうち、実装クラスの名付けがコントラクト名に応じて決定され、前記実装クラスにおける方法は、
方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得するステップと、
前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返すステップと、を含む。
一実施例において、プログラム生成モジュール240は、さらに、前記実体クラスをスマートコントラクトパラメータに変換するためのツールクラスを定義して実装するために用いられ、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列および可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換し、前記スマートコントラクトにより提供されるAPIをパッケージングする。
スマートコントラクトのクライアントプログラムの生成システムの具体的な限定については、上述したスマートコントラクトのクライアントプログラムの生成方法に対する限定を参照することができ、ここでは説明を省略する。上述したスマートコントラクトのクライアントプログラムの生成システムにおける各モジュールの全部または一部がソフトウェア、ハードウェア、およびそれらの組み合わせによって実現されてもよい。上記の各モジュールは、ハードウェアとしてコンピュータ機器のプロセッサに内蔵または独立されてもよいし、プロセッサが以上の各モジュールに対応する操作を呼び出して実行しやいように、ソフトウェアとしてコンピュータ機器のメモリに記憶されてもよい。
一実施例において、スマートコントラクトのクライアントプログラムの生成機器が提供され、当該スマートコントラクトのクライアントプログラムの生成機器は端末であってもよく、その内部構成図は図5に示されるようなものであってもよい。当該スマートコントラクトのクライアントプログラムの生成機器は、システムバスによって接続されているプロセッサ、メモリ、ネットワークインタフェース、ディスプレイ、および入力装置を含む。そのうち、当該スマートコントラクトのクライアントプログラムの生成機器のプロセッサは、計算能力および制御能力を提供するために使用される。当該スマートコントラクトのクライアントプログラムの生成機器のメモリは、不揮発性記憶媒体、内部メモリを含む。当該不揮発性記憶媒体には、オペレーティングシステムおよびコンピュータプログラムが記憶されている。当該内部メモリは、不揮発性記憶媒体におけるオペレーティングシステムおよびコンピュータプログラムの実行に環境を提供する。当該スマートコントラクトのクライアントプログラムの生成機器のネットワークインタフェースは、ネットワーク接続を介して外部の端末と通信するために用いられる。当該コンピュータプログラムは、プロセッサによって実行される時に、スマートコントラクトのクライアントプログラムの生成方法が実装される。当該スマートコントラクトのクライアントプログラムの生成機器のディスプレイは、液晶ディスプレイまたは電子インクディスプレイであってもよく、当該スマートコントラクトのクライアントプログラムの生成機器の入力装置は、ディスプレイに覆われるタッチ層であってもよく、スマートコントラクトのクライアントプログラムの生成機器の筐体に設けられるボタン、トラックボールまたはタッチパッドであってもよく、また外付けのキーボード、タッチパッドまたはマウスなどであってもよい。
図5に示される構造は、本願の方案に関連する部分的な構造のブロック図にすぎず、本願の態様が適用されるスマートコントラクトのクライアントプログラムの生成機器に対する限定を構成するものではなく、具体的には、スマートコントラクトのクライアントプログラムの生成機器は、図面に示されるものよりも多くのまたは少ない部品、あるいは、いくつかの部品を組み合わせたものを含み、或いは異なる部品配置を有することができることは、当業者であれば、理解するであろう。
一実施例において、コンピュータプログラムが格納されているメモリと、プロセッサとを含むスマートコントラクトのクライアントプログラムの生成機器が提供され、当該プロセッサによりコンピュータプログラムが実行されると、上記のスマートコントラクトのクライアントプログラムの生成方法のステップが実現される。
一実施例において、コンピュータプログラムが記憶されている読み取り可能な記憶媒体が提供され、コンピュータプログラムがプロセッサによって実行されると、上記のスマートコントラクトのクライアントプログラムの生成方法のステップが実現される。
実装の実施例の方法におけるフローの全部または一部を実現することは、関連するハードウェアを、コンピュータプログラムによって命令することによって行うことができ、前記のコンピュータプログラムは、不揮発性のコンピュータ可読記憶媒体に記憶されることができ、当該コンピュータプログラムが実行されると、上述の各方法の実施例のフローを含むことができることは、当業者であれば理解するであろう。そのうち、本願で提供される各実施例で使用されるストレージ、メモリ、データベース、または他の媒体への任意の引用は、いずれも不揮発性および/または揮発性メモリを含むことができる。不揮発性メモリは、読み出し専用メモリ( 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)などの様々な形態で入手可能である。
以上説明した実施例の各技術的特徴は、任意に組み合わせることが可能であり、説明を簡潔にするために、上記実施例における各技術的特徴の全ての可能な組み合わせについては説明していないが、これらの技術的特徴の組み合わせに矛盾がない限り、本明細書に記載される範囲内であると考えられるべきである。
上記の実施例は、本願のいくつかの実施形態を示しているに過ぎず、その叙述は具体的かつ詳細であるが、本願の発明の範囲を限定するものとして理解されるべきではない。当業者であれば、本願の思想から逸脱することなく、本願の範囲に含まれるいくつかの変形および改善を行うことができることに留意されたい。したがって、本願の特許の範囲は、添付の特許請求の範囲に従うものとする。

Claims (11)

  1. ソリディティスマートコントラクトのJavaクライアントプログラムを自動的に生成する方法において、
    (1)スマートコントラクトのABIまたはソースコードに応じて、スマートコントラクトのインタフェースを解析するステップと、
    (2)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを自動的に生成するステップであって、具体的には、
    実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、
    実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、
    実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される、ステップと、
    (3)インタフェース解析結果に応じて、当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップと、
    (4)関連する呼出し階層フレームワーク設計パターンに応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む
    ことを特徴とする方法。
  2. 前記ステップ(1)におけるスマートコントラクトのインタフェースを解析するステップは、具体的に、以下の通りであり、
    スマートコントラクトのABIが提供される場合、ABIに対応するABI解析対象を構築し、JSON変換によってABIテキストをABI解析対象に変換し、これにより、スマートコントラクトのすべてのインタフェースの情報を取得し、
    スマートコントラクトのソースコードが提供される場合、スマートコントラクトソースコードテキストに構文解析を行い、構文木を構築し、これによりスマートコントラクトのすべてのインタフェースの情報を取得する
    ことを特徴とする請求項1に記載の方法。
  3. 前記ステップ(3)における当該スマートコントラクトのインタフェースに対応する呼び出し方法を自動的に生成するステップは、具体的に、以下の通りであり、
    (1)呼出し階層のインタフェースを定義し、そのうち、呼出し階層インタフェース名がコントラクト名によって決定され、インタフェースにおける方法がスマートコントラクトに露出されるインタフェースに対応し、方法名がインタフェース名とインタフェース定義番号によって決定され、方法の入力パラメータと戻りパラメータが対応する実体クラスであり、
    (2)呼出し階層のインタフェースに対応する実装クラスを実装し、そのうち、実装クラスの名付けがコントラクト名によって決定され、実装クラスにおける方法は、
    方法パラメータで導入される実体クラスを対応するスマートコントラクトパラメータに変換する第一ステップと、
    対応するスマートコントラクトのインタフェースを指定し、スマートコントラクトパラメータを導入し、当該スマートコントラクトにより提供されるAPIにより対応するインタフェースを呼び出して、戻りパラメータを取得する第二ステップと、
    スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、方法により当該実体クラスを返す第三ステップと、
    という三つのステップを経て実現されることを特徴とする請求項1に記載の方法。
  4. 前記ステップ(4)におけるスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは、具体的に、以下の通りであり、
    (1)実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換し、
    (2)スマートコントラクトにより提供されるAPIをパッケージングする
    ことを特徴とする請求項1に記載の方法。
  5. スマートコントラクトのクライアントプログラムの生成方法において、
    スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するステップと、
    インタフェース解析結果に応じて前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するステップであって、具体的には、
    コントラクト名に応じて前記実体クラスが含まれるパッケージ名を決定し、インタフェース名とインタフェース定義番号に応じて実体クラスの名付けを決定するステップと、
    前記インタフェースの入力パラメータと戻りパラメータのタイプに応じて変換を行って、前記実体クラスのフィールドタイプを取得するステップと、
    前記インタフェースの入力パラメータと戻りパラメータの名付け情報に応じて、前記実体クラスのフィールドの名付けを決定するステップと、
    POJO仕様に従って前記実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法を相応的に生成するステップと、を含む、ステップと、
    前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップと、
    関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するステップと、を含む
    ことを特徴とするスマートコントラクトのクライアントプログラムの生成方法。
  6. 前記スマートコントラクトのインタフェースを解析するステップは、
    前記スマートコントラクトのABIが提供される場合、JSON変換によってABIテキストをABI解析対象に変換し、これにより前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、
    前記スマートコントラクトのソースコードが提供される場合、前記スマートコントラクトのソースコードテキストに構文解析を行い、構文木を構築し、これにより、前記スマートコントラクトのすべてのインタフェースの情報を取得するステップと、を含む
    ことを特徴とする請求項5に記載のスマートコントラクトのクライアントプログラムの生成方法。
  7. 前記インタフェース解析結果に応じて前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するステップは、
    呼出し階層のインタフェースを定義するステップであって、呼出し階層のインタフェース名がコントラクト名に応じて決定され、前記呼出し階層のインタフェースにおける方法が前記スマートコントラクトに露出されるインタフェースに対応し、呼び出し方法名がインタフェース名とインタフェース定義番号によって決定され、前記呼び出し方法の入力パラメータと戻りパラメータが対応する実体クラスであるステップと、
    前記呼出し階層のインタフェースに対応する実装クラスを実装するステップであって、実装クラスの名付けがコントラクト名に応じて決定され、前記実装クラスにおける方法は、
    前記方法の入力パラメータとしての実体クラスを対応するスマートコントラクトパラメータに変換するステップと、
    対応するスマートコントラクトのインタフェースを指定して前記スマートコントラクトパラメータを導入し、前記スマートコントラクトにより提供されるAPIによって対応するインタフェースを呼び出し、戻りパラメータを取得するステップと、
    前記スマートコントラクトの戻りパラメータを対応する実体クラスに変換し、前記呼び出し方法により当該実体クラスを返すステップと、を含むステップと、
    を含む
    ことを特徴とする請求項に記載のスマートコントラクトのクライアントプログラムの生成方法。
  8. 関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じてスマートコントラクトのクライアントの呼出し階層プログラムを生成するステップは、
    前記実体クラスをスマートコントラクトパラメータに変換するツールクラスを定義して実装し、前記スマートコントラクトにおける基本タイプについては、一対一で直接に変換を行い、前記スマートコントラクトにおける配列と可変長文字列タイプについては、分割して分割後の各セグメントの長さを変換するステップと、
    前記スマートコントラクトにより提供されるAPIをパッケージングするステップと、を含む
    ことを特徴とする請求項に記載のスマートコントラクトのクライアントプログラムの生成方法。
  9. スマートコントラクトのクライアントプログラムの生成システムにおいて、前記生成システムは、
    スマートコントラクトのABIまたはソースコードに応じて、前記スマートコントラクトのインタフェースを解析するために用いられるインタフェース解析モジュールと、
    インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースの入力パラメータと戻りパラメータに対応する実体クラスを生成するために用いられる実体クラス生成モジュールであって、実体クラスが含まれるパッケージ名がコントラクト名によって決定され、実体クラスの名付けがインタフェース名とインタフェース定義番号によって決定され、実体クラスのフィールドタイプがインタフェースパラメータのタイプに応じて相応的に変換され、実体クラスのフィールドの名付けがインタフェースパラメータの名付け情報によって決定され、実体クラスのコンストラクタ、Get、Set、ToString、Equals、HashCode方法がPOJO仕様にしたがって相応的に生成される、実体クラス生成モジュールと、
    前記インタフェース解析結果に応じて、前記スマートコントラクトのインタフェースに対応する呼び出し方法を生成するために用いられる呼び出し方法生成モジュールと、
    関連する呼出し階層フレームワーク設計パターン、前記実体クラス、前記呼び出し方法に応じて、スマートコントラクトのクライアントの呼出し階層プログラムを生成するために用いられるプログラム生成モジュールと、を含む
    ことを特徴とするスマートコントラクトのクライアントプログラムの生成システム。
  10. コンピュータプログラムが記憶されるメモリと、プロセッサとを含むスマートコントラクトのクライアントプログラムの生成機器であって、前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1~のいずれか一項に記載の方法のステップが実現されることを特徴とするスマートコントラクトのクライアントプログラムの生成機器。
  11. コンピュータプログラムが記憶される読み取り可能な記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1~のいずれか一項に記載の方法のステップが実現されることを特徴とする読み取り可能な記憶媒体。
JP2022511395A 2019-09-16 2020-09-15 スマートコントラクトのクライアントプログラムの生成方法、システム、機器、及び媒体 Active JP7315786B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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