JP2019536153A - スマート・コントラクト処理方法及び装置 - Google Patents
スマート・コントラクト処理方法及び装置 Download PDFInfo
- Publication number
- JP2019536153A JP2019536153A JP2019524456A JP2019524456A JP2019536153A JP 2019536153 A JP2019536153 A JP 2019536153A JP 2019524456 A JP2019524456 A JP 2019524456A JP 2019524456 A JP2019524456 A JP 2019524456A JP 2019536153 A JP2019536153 A JP 2019536153A
- Authority
- JP
- Japan
- Prior art keywords
- class file
- smart contract
- deployment
- call request
- request
- 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.)
- Withdrawn
Links
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本発明の一実施例は、スマート・コントラクト処理方法及び装置を開示する。この処理方法は、呼び出されるスマート・コントラクトに対応するクラスファイルに基づいて前記呼び出されるスマート・コントラクトを実行するステップを含む。前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。本発明の実施例が提供する技術案を採用することによって、Java言語でスマート・コントラクトを開発するのがサポートされ、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にJava言語の全ての機能が保持され、簡単にアクセスすることができる。
Description
本願は、2017年07月31日に出願された中国特許出願第201710638423.X号の優先権を主張し、その内容全体を参照により本願に援用する。
本発明は、コンピュータデータ処理の分野に関し、特にスマート・コントラクト処理方法及び装置に関する。
本発明は、コンピュータデータ処理の分野に関し、特にスマート・コントラクト処理方法及び装置に関する。
スマート・コントラクトは、デジタルの形で定義された承諾であり、コントラクトの参加者は、コントラクトにおいてこれらの承諾の協議を実行することができる。スマート・コントラクト自体及びコントラクト実行の過程は観察されることが可能で、コントラクト実行の過程と判決も検証されることができる。スマート・コントラクト自体及びコントラクトに関連する情報は、関連するコントラクトの当事者によってのみ接触されることが可能であり、衝突が発生した場合だけに第三者に関連する情報が開示され、審査に付される。
ブロックチェーン技術は、分散されたピアツーピアネットワークに基づき、暗号法の原理とコンセンサスのメカニズムを組み合わせることによって、各分散型ノードのデータの一貫性及び継続性を保証し、情報の即時検証、トレーサビリティ、改ざんの難しさ、及びブロック不可能を実現する。それにより、プライベート、効率的且つ安全な共通価値システムが構築される。スマート・コントラクトとは、ブロックチェーン技術による、複雑な機能を実現する分散応用技術である。スマート・コントラクトは、高級言語で書かれ、対応するコンパイラによってコンパイルされた後に、ブロックチェーンが識別し実行できるコードを生成し、ブロックチェーンにデプロイし、対応する機能を提供する。
スマート・コントラクトを実行するシステム又はモジュールは、一般的に、スマート・コントラクトの実行エンジンと称される。既存のスマート・コントラクト実行エンジンは、主にスクリプト言語及びそのインタープリターを作成することにより実現されるが、以下のような問題点がある。(1)学習コストが高く、開発者はそのようなブロックチェーンを使用するために、それに対応するスクリプト言語を学ぶ必要がある。(2)普遍性がなく、一般に、1種類のスクリプト言語は特定のブロックチェーンプラットフォームでのみ使用できる。(3)機能が限られているため、この種類のスクリプト言語は、簡単な計算しかサポートできず、商業的使用やエンジニアリングレベルのニーズを満たすことが困難である。
従って、上記の欠点を克服することができるスマート・コントラクト処理方法及び対応する装置が必要とされている。
本発明は、上記問題に対して、スマート・コントラクト処理方法及び装置を提案する。
本発明の一態様によれば、マルチノードシステムにおいてスマート・コントラクトを処理するための方法が提供される。この方法は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するステップと、前記クラスファイルに基づいて前記スマート・コントラクトを実行するステップと、を含む。前記クラスファイルは、前記スマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
本発明の一実施例では、前記クラスファイルは、命令と、前記命令に対応する計数器とを含む。前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するステップを含む。
本発明の一実施例では、前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられる。前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる。
本発明の一実施例では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前記ステップは、前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップを含む。
本発明の一実施例では、前記呼び出し要求に基づいて、クラスファイルライブラリで呼び出される前記スマート・コントラクトに対応するクラスファイルを検索する前記ステップは、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得するステップと、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップとを含む。
本発明の一実施例では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記呼び出されるスマート・コントラクトに対応するクラスファイルを確定する前記ステップは、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するステップを含む。
本発明の一実施例では、前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、前記クラスファイルをインスタンス化し、前記呼び出し要求における関数及びパラメータを確定するステップと、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記スマート・コントラクトを実行するステップとを含む。
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、マルチノードシステムにおいてスマート・コントラクトを処理するための前記方法は、前記呼び出し要求の妥当性を確定するステップを更に含む。
本発明の一実施例では、前記呼び出し要求の妥当性を確定する前記ステップは、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
本発明の一実施例では、前記クラスファイルを前記マルチノードシステムに予めデプロイする。前記クラスファイルのデプロイメントプロセスは、デプロイされる前記クラスファイルをクラスローダーによってロードするステップと、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするステップとを含む。
本発明の一実施例では、前記クラスファイルのデプロイメントプロセスは、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
本発明の一実施例では、前記クラスファイルをデプロイする前に、マルチノードシステムにおいてスマート・コントラクトを処理するための前記方法は、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む。
本発明の一実施例では、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトを処理するための装置が更に提供される。この装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュールと、呼び出されるスマート・コントラクトに対応するクラスファイルに基づいて、前記呼び出されるスマート・コントラクトを実行するように構成された実行モジュールとを含む。前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
本発明の一実施例では、前記クラスファイルは、命令と、前記命令に対応する計数器とを含む。前記実行モジュールはさらに、前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するように構成される。
本発明の一実施例では、前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられる。前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる。
本発明の一実施例では、前記確定モジュールはさらに、前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される。
本発明の一実施例では、前記確定モジュールはさらに、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される。
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するように構成された生成モジュールを更に含む。
本発明の一実施例では、前記実行モジュールはさらに、前記クラスファイルをインスタンス化し、前記スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記呼び出し要求によって呼び出された前記スマート・コントラクトを実行するように構成される。
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて前記スマート・コントラクトに対応するクラスファイルを確定する前に、前記スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第1検証モジュールを更に含む。
本発明の一実施例では、前記第1検証モジュールはさらに、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、デプロイされる前記クラスファイルをクラスローダーによってロードしており、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするように構成されたデプロイメントモジュールを更に含む。
本発明の一実施例では、前記デプロイメントモジュールはさらに、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
本発明の一実施例では、前記デプロイメントモジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、前記デプロイメントモジュールによって前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第2検証モジュールを更に含む。
本発明の一実施例では、前記第2検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトをデプロイする方法が更に提供される。この方法は、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するステップと、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするステップとを含む。
本発明の一実施例では、前記クラスファイルのデプロイメントプロセスは、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
本発明の一実施例では、前記クラスファイルを、ローカルノードにデプロイするか、又は前記ローカルノードに通信接続された記憶装置にデプロイして、クラスファイルライブラリを形成する。
本発明の一実施例では、前記クラスファイルをデプロイする前に、マルチノードシステムにおいてスマート・コントラクトをデプロイする前記方法は、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む。
本発明の一実施例では、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトをデプロイする装置が更に提供される。この装置は、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュールと、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするように構成されたデプロイメント実行モジュールとを含む。
本発明の一実施例では、前記デプロイメント実行モジュールはさらに、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
本発明の一実施例では、前記デプロイメント実行モジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
本発明の一実施例では、第3検証モジュールが、前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成される。
本発明の一実施例では、前記第3検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
本発明の別の態様によれば、コンピュータ装置が更に提供される。このコンピュータ装置は、メモリと、プロセッサと、前記メモリに記憶され前記プロセッサによって実行されるコンピュータプログラムとを含む。前記コンピュータプログラムの特徴は、前記プロセッサによって前記コンピュータプログラムが実行されると、マルチノードシステムにおいてスマート・コントラクトを処理するためのいずれかの前記方法のステップ、又はマルチノードシステムにおいてスマート・コントラクトをデプロイするいずれかの前記方法のステップが実現されることである。
本発明の別の態様によれば、コンピュータプログラムを記憶しているコンピュータ読取可能な記憶媒体が更に提供される。前記コンピュータプログラムの特徴は、前記コンピュータプログラムがプロセッサによって実行されると、マルチノードシステムにおいてスマート・コントラクトを処理するためのいずれかの前記方法のステップ、又はマルチノードシステムにおいてスマート・コントラクトをデプロイするいずれかの前記方法のステップが実現されることである。
本発明の技術案を実行することによって、Java(登録商標)言語に基づいてスマート・コントラクトを開発することができるとともに、決定性計算、有限計算の特徴があり、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にJava言語の全ての機能が保持され、アクセスしやすく、普及に適する。
実施例は、添付の図面を参照して示され、説明される。これらの図面は、基本原理を明確にするために使用され、基本原理を理解するのに必要な面のみを示す。これらの図面は、縮尺通りではない。図面において、同じ参照符号は類似的な特徴を示す。
本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法で呼び出されるスマート・コントラクトを実行するフローの模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
発明の一実施例によるスマート・コントラクトの呼び出し方法のフローチャートである。
本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
本発明の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置のアーキテクチャの模式図を示す。
本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
本発明の一実施例によるスマート・コントラクトのデプロイメント方法のフローチャートである。
本発明の一実施例によるクラスファイルの構造模式図である。
本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。
本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。
以下の好ましい実施例の詳細な説明において、本発明の一部を構成する添付の図面を参照する。添付の図面は、本発明を実現することができる特定の実施例を例示する。例示的な実施例は、本発明による全ての実施例を網羅するものではない。本発明の範囲から逸脱することなく他の実施例を利用することができ、構造的又は論理的修正を行うこともできることを理解されたい。従って、以下の詳細な説明は限定されるものではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
関連分野の当業者に知られている技術、方法及び装置については詳細に論じないが、適切な場合には、その技術、方法及び装置は本明細書の一部として考えられるべきである。図面中の各ユニットの間の接続線は、単に説明の便宜上のものであり、少なくとも接続線の両端のユニットが互いに通信していることを示し、接続されていないユニットが互いに通信できないように制限するものではない。
まず、本発明に係る名詞及び関連技術について説明する。Java言語は、高級プログラミング言語である。クラスファイル(Class file)は、Javaソースコードがコンパイルされてなるものであり、具体的なプログラムロジックを担持する。Javaプログラムを実行する環境は、Java仮想マシン(JVM)と呼ばれる。Java仮想マシンは、クラスローディング(Class Loading)メカニズムを提供する。このメカニズムにより、Java実行中のクラスファイルを管理することができる。このメカニズムの機能を実現するモジュールはクラスローダー(Class Loader)と呼ばれる。決定性関数は、特定の入力値セットによって呼び出されるたびに、常に同じ値を返すことを意味する。それに対応して、異なる結果が返された場合、その関数は非決定性関数である。
図1は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。図1に示されるように、この方法はステップ101〜ステップ102を含む。
ステップ101では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイル(Class file)を確定する。そのクラスファイルは、呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
ステップ102では、そのクラスファイルに基づいて、呼び出されるスマート・コントラクトを実行する。具体的な実行プロセスは、まず、クラスファイルをインスタンス化し、スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、次に、インスタンス化されたクラスファイル、関数及びパラメータに基づいて、呼び出し要求によって呼び出されたスマート・コントラクトを実行することを含む。
ステップ101では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイル(Class file)を確定する。そのクラスファイルは、呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
ステップ102では、そのクラスファイルに基づいて、呼び出されるスマート・コントラクトを実行する。具体的な実行プロセスは、まず、クラスファイルをインスタンス化し、スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、次に、インスタンス化されたクラスファイル、関数及びパラメータに基づいて、呼び出し要求によって呼び出されたスマート・コントラクトを実行することを含む。
本発明の実施例は、実際に、Java仮想マシンに基づくスマート・コントラクト実行システム(実行エンジン)並びにこのシステムに対応するフロー及びアルゴリズムを提供することが分かる。この実行システムを用いるブロックチェーンプラットフォームは、Java言語を使用してスマート・コントラクトを開発するのをサポートすることができる。さらに、Scala、Groovy、Jythonなどを含むJava仮想マシンに実行される全ての言語(JVM言語とも呼ばれる)をサポートすることができる。スマート・コントラクトのプログラムロジックはJava言語に基づいて実現されるクラスファイルにコンパイルされるので、コンパイラ及びインタープリターの追加開発の必要がなく、Java言語に基づいてスマート・コントラクトを開発することが実現される。開発者は、Java言語の機能を使用すればブロックチェーン技術の開発及び使用を実現することができ、エンジニアリングレベルの使用を満たすためにアクセスがしやすく、商業的に使いやすく、マーケティングに適する。
クラスファイルはスマート・コントラクトに基づいてコンパイルされるものであるので、クラスファイルの内容は実際にスマート・コントラクトのプログラムロジック内容を含む。そのため、以下の幾つかの実施例の説明では、クラスファイルの概念とスマート・コントラクトの概念とを厳密に論理的に区別しない。例えば、スマート・コントラクトに対する呼び出し、実行及びデプロイメントを実現しようとするとき、実際には、クラスファイルに対する呼び出し、実行及びデプロイメントを実行している。
本発明の一実施例では、発明者が研究を通じて以下のことを発見した。即ち、ブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるとき、スマート・コントラクトは、計算が有限であり、無限ループ及び無限再帰がないはずであるという要件を満たす必要がある。そのため、クラスファイルは、命令と、命令に対応する計数器とを含んでもよい。この場合、図2に示されるように、呼び出されるスマート・コントラクトを実行するとき、以下のステップ1021〜ステップ1022が含まれてもよい。
ステップ1021では、その計数器を用いて命令の実行回数を計数する。
ステップ1022では、実行回数が予め設定された回数を超えた場合、命令の実行を停止する。
ステップ1021では、その計数器を用いて命令の実行回数を計数する。
ステップ1022では、実行回数が予め設定された回数を超えた場合、命令の実行を停止する。
例えば、呼び出されるスマート・コントラクトに対応するクラスファイルは命令1及び命令2を含み、命令1の実行回数は1であり、命令2の実行回数は3であると仮定する。命令2が呼び出される命令であると仮定すると、命令2が実行されるたびに、命令2の計数器の計数は1回増加する。このようにして、命令2の予め設定された回数が4に設定されると、そのクラスファイルは完全に実行され得る。逆に、命令2の予め設定された回数が2に設定されると、そのクラスファイルは、完全に実行されないか、又はエラーを示す結果を出力する。
一実施形態では、異なる「重み」を異なる命令に割り当てることもできる。重みの値が大きいほど、重みに対応する命令の予め設定された回数が少なくなる。対応する命令の重みを調整することによって、命令の実行回数に対して対応する限定を行うことができる。例えば、命令2の重みを増加させることによって、許可される命令2の実行回数が更に減少する。同様に、命令2の重みを低減することによって、許可される命令2の実行回数が増加する。
従って、命令を計数することによって、あるユーザ/ノードが意図的に又は障害によって命令に対する多数の重複の呼び出しが生成されることが防止され、ブロックチェーンの有限計算の特徴が保証される。例えば、入札システムでは、入札の取り下げに対応する命令に計数器を追加することにより、ユーザが不正に入札を繰り返して取り下げるのを防止することができ、あるユーザの操作により入札システム全体がダウンするか又は正常に動作できなくなることを防止する。理解されるように、計数器は、具体的な用途に応じて異なる位置に配置されることができる。
本発明の一実施例では、発明者は研究を通じて以下のことを発見した。即ち、ブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるとき、スマート・コントラクトは、異なるノードで、異なる時間に、同じ入力によって同じ出力を取得できる(又は、決定性計算と呼ばれる)という要件を満たす必要がある。そのため、マルチノードシステムにクラスファイルを予めデプロイするとき、非決定性クラス及び/又は非決定性関数を含むクラスファイルを除去することによって、実行可能なクラスファイルが全て決定性計算が実現できるのを保証することができる。具体的には、クラスファイルのデプロイメントプロセスは、例えばクラスローダーによってデプロイされるクラスファイルをロードして、そのクラスファイルが非決定性関数を使用したか否かを判断するステップを含む。そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される。そのスマート・コントラクトのクラスファイルが非決定性関数を使用していないと判断すると、クラスファイルがデプロイされる。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗した結果をユーザに返して、ユーザが提出したスマート・コントラクトをブロックチェーンにデプロイできないことを通知する(例えば、ユーザが見ることができるインターフェイスを介して)。
本発明の一実施例では、スマート・コントラクトの決定性計算要件と有限計算要件との両方を満たすと考える場合、クラスファイルをデプロイするとき、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定した後に、クラスファイルに命令に対応する計数器を設けてもよい。具体的には、クラスローダー及びバイトコードエンハンサーに基づいてスマート・コントラクトのクラスファイルを処理することができる。クラスローダーは、ロードされるクラスファイルが非決定性関数を含むか否かを判断して、その能力に基づいて、非決定性関数を含むクラスのロードを拒否するために使用される。バイトコードエンハンサーは、クラスファイルを分析及び修正するために使用され、クラスファイルの実行中にクラスファイルにおける呼び出される各命令を計数する。書かれたスマート・コントラクトがコンパイルされた後、P2P又は他の伝送方法によってマルチノードシステム(例えば、ブロックチェーン)に広げられ、各ノードはそのスマート・コントラクトのクラスファイルを受信する。ブロックチェーンにおけるノード(例えば、検証ノード)は、指定されたルールに従って受信したクラスファイルについて合意するか、又は、受信したコントラクトをメモリに保存し、新たな合意時間になってからそのコントラクトに対する合意及び処理を引き起こす。理解されるように、本発明における合意は、1つ又は複数のクラスファイルを対象とすることができる。
本発明の一実施例では、クラスファイルのデプロイメント操作の信頼性を向上させるために、クラスファイルをデプロイする前に、そのクラスファイルをデプロイするデプロイメント要求の妥当性を確定する必要がある。具体的には、そのデプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行うことができる。妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求か否かを判断し、例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
さらなる実施例では、ブロックチェーンについて、上記妥当性検査は合意のメカニズムによって実行することができる。具体的には、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、デプロイメント要求が妥当であることを確定する。PoW、PoS、PBFT又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。合意の結果に基づいて、異なる操作が生じる。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない(例えば、デプロイメント要求のフォーマットが要件を満たしていない)ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である(例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど)ことを示す場合、後続のクラスファイルデプロイメント操作が実行される。
本発明の一実施例では、図3に示されるように、クラスファイルがクラスファイルライブラリに予めデプロイされる(例えば、ローカルノードにデプロイされるか、又はローカルノードに通信接続された記憶装置にデプロイされる)場合、呼び出し要求に基づいてクラスファイルライブラリで呼び出されるスマート・コントラクトに対応するクラスファイルを検索して(ステップ101’)、検索されたクラスファイルに基づいてスマート・コントラクトを実行する。
さらなる実施例では、図4に示されるように、スマート・コントラクトを呼び出す呼び出し要求にスマート・コントラクトを指示するための識別情報が含まれている場合、まず、呼び出し要求における識別情報を取得し(ステップ401)、次に、識別情報を基づいてクラスファイルライブラリで呼び出されるスマート・コントラクトに対応するクラスファイルを検索する(ステップ402)。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけられない場合、呼び出しを停止し、呼び出しの失敗を提示する(ステップ403)。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけることができる場合、後続のスマート・コントラクトの実行操作を行う。
本発明の別の実施例では、呼び出されるスマート・コントラクトに対応するクラスファイルは、呼び出し要求を受信したときにデプロイされてもよい。具体的には、スマート・コントラクトを呼び出す呼び出し要求には、プログラムロジック内容が含まれていてもよく、この場合、呼び出し要求における識別情報に基づいて呼び出し要求を満たすクラスファイルを生成する必要がある。
本発明の一実施例では、図5に示されるように、スマート・コントラクトを呼び出す操作の信頼性を向上させるために、クラスファイルに基づいてスマート・コントラクトを実行する前、スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定することができる(ステップ501)。具体的には、呼び出し要求を受信したノードは、その呼び出し要求の妥当性を検査する。ノードは、その呼び出し要求のフォーマット又は他のパラメータを検査して、呼び出し要求が妥当な呼び出し要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。
さらなる実施例では、スマート・コントラクトに対する呼び出し要求の妥当性検査は、合意メカニズムによって実行されてもよい。呼び出し要求のフォーマットについて合意して、全てのノードが呼び出し要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定する。例えば、PoW、PoS、PBFT又は他の合意アルゴリズムによって、その呼び出し要求を受信した複数のノードは、呼び出し要求の妥当性を検査して、現在のブロックチェーンに対してその呼び出し要求が妥当な呼び出し要求であるか否かを確定することができる。妥当性検査の判断結果に基づいて、対応する操作が生成される。具体的には、呼び出し要求が妥当な呼び出し要求でない場合、スマート・コントラクトの呼び出しは中止される。例えば、失敗した呼び出しの結果がユーザに返され、呼び出されるスマート・コントラクトが欠落しているか、又は呼び出せないことがユーザの見ることができるインターフェイスに通知される。呼び出し要求が妥当な呼び出し要求である(例えば、呼び出し要求のフォーマットがブロックチェーンの呼び出し要求に対するフォーマット要件を満たしているなど)場合、後続のスマート・コントラクトの実行操作が実行される。
図6は、発明の一実施例によるスマート・コントラクトの呼び出し方法のフローチャートである。図6に示されるように、この方法はステップS601〜ステップS608を含む。
ステップS601では、スマート・コントラクトの呼び出し要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトの呼び出し要求を受信する。この実施例では、呼び出し要求は特定のフォーマットを有する。理解されるように、呼び出し要求は、まずあるノードにより受信されて、その後、該ノードによってP2Pでブロックチェーンにおける多くのノードに送信することができる。
ステップS601では、スマート・コントラクトの呼び出し要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトの呼び出し要求を受信する。この実施例では、呼び出し要求は特定のフォーマットを有する。理解されるように、呼び出し要求は、まずあるノードにより受信されて、その後、該ノードによってP2Pでブロックチェーンにおける多くのノードに送信することができる。
ステップS602では、呼び出し要求が妥当性を有するか否かを判断する。
このステップでは、呼び出し要求を受信したノードは、その呼び出し要求の妥当性を検査する。この実施例では、上記ノードは、その呼び出し要求のフォーマット又は他のパラメータを検査して、呼び出し要求が妥当な呼び出し要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。
このステップでは、呼び出し要求を受信したノードは、その呼び出し要求の妥当性を検査する。この実施例では、上記ノードは、その呼び出し要求のフォーマット又は他のパラメータを検査して、呼び出し要求が妥当な呼び出し要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。
ステップS602は、合意のメカニズムによって実行することができる。例えば、PoW、PoS、PBFT又は他の合意アルゴリズムによって、その呼び出し要求を受信した複数のノードは、呼び出し要求の妥当性を検査して、現在のブロックチェーンに対してその呼び出し要求が妥当な呼び出し要求であるか否かを確定することができる。
ステップS602の判断の結果に基づいて、対応する操作が生成される。具体的には、呼び出し要求が妥当な呼び出し要求でない場合、スマート・コントラクトの呼び出しが終了され、ステップS609の操作が実行されて、スマート・コントラクトの呼び出しが失敗したことが提示される。例えば、失敗した呼び出しの結果がユーザに返され、呼び出されるスマート・コントラクトが欠落しているか、又は呼び出せないことがユーザの見ることができるインターフェイスに通知される。呼び出し要求が妥当な呼び出し要求である(例えば、呼び出し要求のフォーマットがブロックチェーンの呼び出し要求に対するフォーマット要件を満たしているなど)場合、ステップS603の操作が実行される。
ステップS603では、呼び出し要求に対応するスマート・コントラクトの識別情報を確定する。
本実施例では、呼び出し要求は特定のフォーマットを有し、呼び出されるスマート・コントラクトの識別情報並びに対応する関数及びパラメータを含む。このステップでは、妥当な呼び出し要求を分析して、妥当な呼び出し要求中に含まれた、スマート・コントラクトを指示するための識別情報を確定する。理解されるように、このステップでは、呼び出し要求に含まれている関数及びパラメータを確定することができる。
本実施例では、呼び出し要求は特定のフォーマットを有し、呼び出されるスマート・コントラクトの識別情報並びに対応する関数及びパラメータを含む。このステップでは、妥当な呼び出し要求を分析して、妥当な呼び出し要求中に含まれた、スマート・コントラクトを指示するための識別情報を確定する。理解されるように、このステップでは、呼び出し要求に含まれている関数及びパラメータを確定することができる。
ステップS604では、呼び出し要求に対応するスマート・コントラクトのクラスファイルがあるか否かを判断する。
このステップでは、呼び出し要求内の識別情報に基づいて、クラスファイルライブラリ(即ち、デプロイされたスマート・コントラクトのセット)で検索して、検索の結果に基づいて対応する操作を確定する。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけられない場合、呼び出しを停止し、呼び出しの失敗を提示する(ステップ609)。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけることができる場合、後続の操作を行う。
このステップでは、呼び出し要求内の識別情報に基づいて、クラスファイルライブラリ(即ち、デプロイされたスマート・コントラクトのセット)で検索して、検索の結果に基づいて対応する操作を確定する。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけられない場合、呼び出しを停止し、呼び出しの失敗を提示する(ステップ609)。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけることができる場合、後続の操作を行う。
理解されるように、1つの実施形態では、呼び出し要求に基づいて対応するクラスファイルを生成することもできる。例えば、呼び出し要求に含まれる識別情報が取得された後、例えば図1に示されるデプロイメント方法又はそのデプロイメント方法の一部によって、呼び出し要求を満たすクラスファイルが生成される。
ステップS605では、スマート・コントラクトをインスタンス化する。
このステップでは、ステップS204で見つけたクラスファイルに基づいて、スマート・コントラクトのインスタンス化を行う。
このステップでは、ステップS204で見つけたクラスファイルに基づいて、スマート・コントラクトのインスタンス化を行う。
ステップS606では、呼び出し要求における関数及びパラメータを確定する。
このステップでは、呼び出し要求を分析することによって呼び出し要求における関数及びパラメータを確定する。理解されるように、ステップS603の結果に基づいて呼び出し要求における関数及びパラメータを確定することもできる。
このステップでは、呼び出し要求を分析することによって呼び出し要求における関数及びパラメータを確定する。理解されるように、ステップS603の結果に基づいて呼び出し要求における関数及びパラメータを確定することもできる。
ステップS607では、スマート・コントラクトを実行する。
このステップでは、ステップS605及びS606の操作結果を組み合わせて、スマート・コントラクトを呼び出す。具体的には、インスタンス化されたクラスファイル並びに妥当な呼び出し要求における関数及びパラメータに基づいて、この妥当な呼び出し要求に対応するスマート・コントラクトを実行して、スマート・コントラクトの結果を出力する(ステップS608)。
このステップでは、ステップS605及びS606の操作結果を組み合わせて、スマート・コントラクトを呼び出す。具体的には、インスタンス化されたクラスファイル並びに妥当な呼び出し要求における関数及びパラメータに基づいて、この妥当な呼び出し要求に対応するスマート・コントラクトを実行して、スマート・コントラクトの結果を出力する(ステップS608)。
上記のステップは連続番号を使用するが、当業者であれば、上記のステップの中の幾つかのステップの順序を変えることができることを理解するであろう。例えば、スマート・コントラクトのインスタンス化(ステップS605)を先に実行した後、呼び出し要求における関数及びパラメータの確定(ステップS606)を実行することができる。まずステップS606を実行し、その後ステップS605を実行することもできる。
図7は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。図7に示されるように、この装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュール701と、クラスファイルに基づいて呼び出されるスマート・コントラクトを実行するように構成された実行モジュール702と、を含む。クラスファイルは、呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされるものである。
本発明の一実施例では、クラスファイルは、命令と、命令に対応する計数器とを含む。実行モジュール702はさらに、計数器を用いて命令の実行回数を計数し、実行回数が予め設定された回数を超えた場合、命令の実行を停止するように構成される。
本発明の一実施例では、クラスファイルは複数の命令を含み、各命令には対応する重みが設けられる。重みの値が大きいほど、重みに対応する命令の予め設定された回数が少なくなる。
本発明の一実施例では、確定モジュール701はさらに、呼び出し要求に基づいて、クラスファイルライブラリでスマート・コントラクトに対応するクラスファイルを検索するように構成される。
本発明の一実施例では、確定モジュール701はさらに、呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、識別情報に基づいて、クラスファイルライブラリでスマート・コントラクトに対応するクラスファイルを検索するように構成される。
本発明の一実施例では、図8に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、呼び出し要求におけるスマート・コントラクトを指示するための識別情報に基づいて、呼び出し要求を満たすクラスファイルを生成するように構成された生成モジュール703を更に含む。
本発明の一実施例では、実行モジュール702はさらに、クラスファイルをインスタンス化し、スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化されたクラスファイル、関数及びパラメータに基づいて、呼び出し要求によって呼び出されたスマート・コントラクトを実行するように構成される。
本発明の一実施例では、図9に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、スマート・コントラクトに対応するクラスファイルを確定する前に、スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第1検証モジュール704を更に含む。
本発明の一実施例では、第1検証モジュール704はさらに、呼び出し要求のフォーマットについて合意して、全てのノードが呼び出し要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
本発明の一実施例では、図10に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、デプロイされる前記クラスファイルをクラスローダーによってロードしており、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために、クラスファイルをデプロイするように構成されたデプロイメントモジュール705を更に含む。
本発明の一実施例では、デプロイメントモジュール705はさらに、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるように構成され、計数器はスマート・コントラクトの実行中に命令の実行回数を計数するために使用される。
本発明の一実施例では、デプロイメントモジュール705はさらに、ローカルノードに、又はローカルノードに通信接続された記憶装置にクラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
本発明の一実施例では、図10に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、デプロイメントモジュールによってクラスファイルをデプロイする前に、クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第2検証モジュール706を更に含む。
本発明の一実施例では、第2検証モジュール706はさらに、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
上記実施例によるマルチノードシステムにおいてスマート・コントラクトを処理するための装置に記載されたモジュールの各々は、マルチノードシステムにおいてスマート・コントラクトを処理するための上記方法中の1つの方法ステップに対応することを理解されたい。したがって、上記方法ステップで説明された操作及び特徴は、装置及びそこに含まれる対応するモジュールに等しく適用可能であり、重複する内容はここで再び説明しない。
図11は、本発明の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置のアーキテクチャの模式図を示す。図11に示されるように、処理装置300は、呼び出し要求受信ユニット301、呼び出し要求分析ユニット302、クラスファイル選択ユニット303及び実行ユニット304を含む。具体的には、呼び出し要求受信ユニット301は、スマート・コントラクトに対する呼び出し要求を受信し、妥当な呼び出し要求を確定するために前記呼び出し要求に対して妥当性検査を行うように構成される。呼び出し要求分析ユニット302は、呼び出し要求受信ユニット301に通信接続され、前記妥当な呼び出し要求を分析して、前記妥当な呼び出し要求内の対応するスマート・コントラクトを指示するための識別情報を取得するように構成される。クラスファイル選択ユニット303は、前記識別情報に基づいて、前記妥当な呼び出し要求に対応するスマート・コントラクトのクラスファイルを確定するように構成される。この識別情報に基づいて、クラスファイル選択ユニット303は、この識別情報をクラスファイルライブラリにおける各クラスファイルの識別情報と比較して、該妥当な呼び出し要求に対応するクラスファイルを選択する。実行ユニット304は、クラスファイル選択ユニット303によって確定されたクラスファイル及び呼び出し要求に基づいて、対応するスマート・コントラクトを実行するように構成される。具体的には、実行ユニット304は、クラスファイルをインスタンス化し、呼び出し要求における関数及びパラメータを組み合わせて、前記妥当な呼び出し要求に対応するスマート・コントラクトを実行する。
図12は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。図12に示されるように、この方法はステップ1201〜ステップ1202を含む。
ステップ1201では、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得する。
ステップ1202では、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイする。例えば、クラスファイルライブラリを形成するために、クラスファイルを、ローカルノードにデプロイするか、又はローカルノードに通信接続された記憶装置にデプロイする。
ステップ1201では、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得する。
ステップ1202では、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイする。例えば、クラスファイルライブラリを形成するために、クラスファイルを、ローカルノードにデプロイするか、又はローカルノードに通信接続された記憶装置にデプロイする。
そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される。そのスマート・コントラクトのクラスファイルが非決定性関数を使用していないと判断すると、クラスファイルがデプロイされる。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗したとの結果がユーザに返され、ユーザにより提出されたスマート・コントラクトをブロックチェーンにデプロイできないことが(例えば、ユーザが見ることができるインターフェイスを介して)通知される。
従って、このようにクラスファイルをデプロイすることによって、マルチノードシステムにおいてクラスファイルを予めデプロイするとき、非決定性クラス及び/又は非決定性関数を含むクラスファイルを除去して、全ての実行可能なクラスファイルについて決定性計算を実現できることが保証され、異なるノードで異なる時間に同じ入力によって同じ出力を取得できるというブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるときの要件が満たされる。
本発明の一実施例では、図13に示されるように、スマート・コントラクトの決定性計算要件と有限計算要件との両方を満たすと考える場合、マルチノードシステムにおいてスマート・コントラクトをデプロイする方法は、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるステップ(ステップ1301)を更に含むことができる。計数器はスマート・コントラクトの実行中に命令の実行回数を計数する。具体的には、クラスローダー及びバイトコードエンハンサーに基づいてスマート・コントラクトのクラスファイルを処理することができる。クラスローダーは、ロードされるクラスファイルが非決定性関数を含むか否かを判断して、その能力に基づいて、非決定性関数を含むクラスのロードを拒否するために使用される。バイトコードエンハンサーは、クラスファイルを分析及び修正するために使用され、クラスファイルの実行中にクラスファイルにおける呼び出される各命令を計数する。書かれたスマート・コントラクトがコンパイルされた後、P2P又は他の伝送方法によってマルチノードシステム(例えば、ブロックチェーン)に広げられ、各ノードはそのスマート・コントラクトのクラスファイルを受信する。ブロックチェーンにおけるノード(例えば、検証ノード)は、指定されたルールに従って受信したクラスファイルについて合意するか、又は、受信したコントラクトをメモリに保存し、新たな合意時間になってからそのコントラクトに対する合意及び処理を引き起こす。理解されるように、本発明における合意は、1つ又は複数のクラスファイルを対象とすることができる。
本発明の一実施例では、図14に示されるように、クラスファイルのデプロイメント操作の信頼性を向上させるために、クラスファイルをデプロイする前に、そのクラスファイルをデプロイするデプロイメント要求の妥当性を確定する必要がある(ステップ1401)。具体的には、そのデプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行うことができる。妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
さらなる実施例では、ブロックチェーンについて、上記妥当性検査は合意のメカニズムによって実行することができる。具体的には、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、デプロイメント要求が妥当であることを確定する。PoW、PoS、PBFT又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。合意の結果に基づいて、異なる操作が生成される。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない(例えば、デプロイメント要求のフォーマットが要件を満たしていない)ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である(例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど)ことを示す場合、後続のクラスファイルデプロイメント操作が実行される。
図15aは、本発明の一実施例によるスマート・コントラクトのデプロイメント方法のフローチャートである。図15に示されるように、スマート・コントラクトをデプロイする方法は、以下のステップS1501〜ステップS1507を含む。
ステップS1501では、スマート・コントラクトのデプロイメント要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトのデプロイメント要求を受信する。この実施例では、デプロイメント要求は特定のフォーマットを有し、スマート・コントラクトのクラスファイル(即ち、デプロイされるクラスファイル)を含む。理解されるように、デプロイメント要求は、まずあるノードにより受信されて、その後、該ノードによってP2Pでブロックチェーンにおける多くのノードに送信することができる。
ステップS1501では、スマート・コントラクトのデプロイメント要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトのデプロイメント要求を受信する。この実施例では、デプロイメント要求は特定のフォーマットを有し、スマート・コントラクトのクラスファイル(即ち、デプロイされるクラスファイル)を含む。理解されるように、デプロイメント要求は、まずあるノードにより受信されて、その後、該ノードによってP2Pでブロックチェーンにおける多くのノードに送信することができる。
ステップS1502では、デプロイメント要求が妥当性を有するか否かを判断する。
このステップでは、デプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行う。本実施例では、妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求であるか否かを判断し、例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
このステップでは、デプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行う。本実施例では、妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求であるか否かを判断し、例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
ブロックチェーンについて、ステップS1502は、合意のメカニズムによって実行することができる。具体的には、PoW、PoS、PBFT又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。
ステップS1502の合意の結果に基づいて、異なる操作が生じる。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない(例えば、デプロイメント要求のフォーマットが要件を満たしていない)ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である(例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど)ことを示す場合、ステップS1503の操作が実行される。
ステップS1503では、デプロイメント要求に非決定性があるか否かを判断する。
以上のことから分かるように、デプロイメント要求は特定のフォーマットを有し、デプロイされるクラスファイルを含む。そのため、例えばクラスローダーによって、デプロイされるクラスファイルが非決定性関数を使用しているか否かを判断することができる。そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される(ステップS1507)。クラスローダーがスマート・コントラクトのクラスファイルに非決定性関数が使用されていない(即ち、クラスファイルに非決定性クラスが含まれていない)と判定すると、ステップS1504の操作が実行される。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗したとの結果をユーザに返して、(例えば、ユーザが見ることができるインターフェイスを介して)ユーザが提出したスマート・コントラクトをブロックチェーンにデプロイできないことを通知する。
以上のことから分かるように、デプロイメント要求は特定のフォーマットを有し、デプロイされるクラスファイルを含む。そのため、例えばクラスローダーによって、デプロイされるクラスファイルが非決定性関数を使用しているか否かを判断することができる。そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される(ステップS1507)。クラスローダーがスマート・コントラクトのクラスファイルに非決定性関数が使用されていない(即ち、クラスファイルに非決定性クラスが含まれていない)と判定すると、ステップS1504の操作が実行される。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗したとの結果をユーザに返して、(例えば、ユーザが見ることができるインターフェイスを介して)ユーザが提出したスマート・コントラクトをブロックチェーンにデプロイできないことを通知する。
ステップS1504では、計数器を追加する。
このステップでは、指定された命令の後に計数器を設けて、呼び出される命令に対する計数を実現することができる。以下、図15bを参照して、計数器が追加された後のクラスファイルの実行について説明する。
このステップでは、指定された命令の後に計数器を設けて、呼び出される命令に対する計数を実現することができる。以下、図15bを参照して、計数器が追加された後のクラスファイルの実行について説明する。
図15bに示されるように、クラスファイル400は、実行中に命令1を実行する回数が1、命令2を実行する回数が3である。上述のように、命令2が指定された命令であると仮定すると、命令2が実行されるたびに、計数器は1回増加する。このようにして、命令2の実行回数の閾値が4以上に設定されると、クラスファイル400は完全に実行され得る。逆に、命令2の実行回数の閾値が2に設定されると、クラスファイル400は、一部しか実行されないか、又はエラーを示す結果を出力する。
一実施形態では、異なる「重み」を異なる命令に割り当てることもできる。図14bに示される命令を例にすると、対応する命令の重みを調整することによって、命令の実行回数に対して対応する指定を行うことができる。例えば、命令2の重みを増加させることによって、命令2の実行が許可される回数は更に減少する。同様に、命令2の重みを低減することによって、命令2の実行が許可される回数は増加する。
従って、命令を計数することによって、あるユーザ/ノードが意図的に又は障害によって命令に対する多数の重複の呼び出しが生成されることが防止され、ブロックチェーンの有限計算の特徴が保証される。例えば、入札システムでは、入札の取り下げに対応する命令に計数器を追加することにより、ユーザが不正に入札を繰り返して取り下げるのを防止することができ、あるユーザの操作により入札システム全体がダウンするか又は正常に動作できなくなることを防止する。理解されるように、計数器は、具体的な用途に応じて異なる位置に配置されることができる。
ステップ1505では、修正されたクラスファイルを記憶する。
前のステップから分かるように、デプロイされる未修正のクラスファイルは計数器を含んでいない。本実施例では、クラスファイルは、バイトコードエンハンスメント技術によって修正され、指定された命令の後に計数器が追加される。修正されたデプロイされるクラスファイルは、指定された場所に記憶され(例えば、ブロックチェーンのノードに記憶されるか、又はノードに通信接続された記憶装置に記憶される)、それによって、デプロイされるクラスファイルはクラスファイルライブラリにデプロイされて、クラスファイルライブラリが構築される。
前のステップから分かるように、デプロイされる未修正のクラスファイルは計数器を含んでいない。本実施例では、クラスファイルは、バイトコードエンハンスメント技術によって修正され、指定された命令の後に計数器が追加される。修正されたデプロイされるクラスファイルは、指定された場所に記憶され(例えば、ブロックチェーンのノードに記憶されるか、又はノードに通信接続された記憶装置に記憶される)、それによって、デプロイされるクラスファイルはクラスファイルライブラリにデプロイされて、クラスファイルライブラリが構築される。
上記の記憶ステップが完了した後、デプロイメントの成功を提示するステップS1506が実行される。例えば、デプロイメント成功したとの結果がユーザに返されて、ユーザにより提出されたスマート・コントラクトをブロックチェーンにデプロイしたことは、ユーザが見ることができるインターフェイスに通知される。
上記のステップによって、スマート・コントラクトのクラスファイルに対するデプロイメントが実現され、ブロックチェーンにおけるクラスファイルがすべて決定性及び有限性を有し、それにより、ネットワークの安定性が向上する。具体的には、デプロイされるクラスファイルは、クラスファイルに非決定性クラス及び/又は非決定性関数又は非決定性クラスが含まれるか否かに基づいて選別され、それにより、選別後に残っているクラスファイルはすべて決定性を有する。また、修正されたクラスファイルの指定された命令の後に計数器が設けられるので、その命令の呼び出し回数に対して閾値が設定されるとき、計数器の出力値と呼び出し回数の閾値とを比較することによって命令の呼び出し回数を制限することができ、さらに、呼び出されるときにクラスファイルが有限計算の特徴を有する。
図16は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。図16に示されるように、この装置は、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュール1601と、
クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイするように構成されたデプロイメント実行モジュール1602とを含む。
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュール1601と、
クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイするように構成されたデプロイメント実行モジュール1602とを含む。
本発明の一実施例では、デプロイメント実行モジュール1602はさらに、クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるように構成され、計数器はスマート・コントラクトの実行中に命令の実行回数を計数するために使用される。
本発明の一実施例では、デプロイメント実行モジュール1602はさらに、ローカルノードに、又はローカルノードに通信接続された記憶装置にクラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
本発明の一実施例では、図17に示されるように、マルチノードシステムにおいてスマート・コントラクトをデプロイする装置は、クラスファイルをデプロイする前に、クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第3検証モジュール1603を更に含む。
本発明の一実施例では、第3検証モジュール1603はさらに、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
上記実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイするための装置に記載されたモジュールの各々は、マルチノードシステムにおいてスマート・コントラクトをデプロイするための上記方法中の1つの方法ステップに対応することを理解されたい。したがって、上記方法ステップで説明された操作及び特徴は、装置及びそこに含まれる対応するモジュールに等しく適用可能であり、重複する内容はここで再び説明しない。
前述の方法のいずれかのフローは、プロセッサによって実行されるプログラムを含む機械可読命令として実現されてもよいことを理解されたい。このプログラムは、CD−ROM、フロッピーディスク、ハードディスク、デジタル多用途ディスク(DVD)、ブルーレイディスク又は他の形態のメモリなどの有形のコンピュータ可読媒体に記憶されたソフトウェアで実体化されることができる。あるいは、前述の方法のいずれかのステップの一部又は全部は、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルロジックデバイス(EPLD)、ディスクリートロジック、ハードウェア、ファームウェアなどの任意の組み合わせによって実現することができる。さらに、前述の方法のいずれかに対応するフローチャートはデータ処理方法を説明しているが、処理方法のステップは変更、削除、又はマージされてもよい。
上述したように、コード化された命令(コンピュータ可読命令など)によって、前述の方法のいずれかのプロセスを実現することができる。プログラミング命令は、ハードディスク、フラッシュメモリ、読み出し専用メモリ(ROM)、光ディスク(CD)、デジタル多用途ディスク(DVD)、高速バッファ、ランダムアクセスメモリ(RAM)及び/又は任意の他の記憶媒体などの有形のコンピュータ可読媒体に記憶される。情報は、記憶媒体に任意の時間形式で(例えば、長時間、恒久的、短い時間、一時的なバッファリング、及び/又は情報のキャッシング)記憶されることができる。本明細書で使用される有形のコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読記憶信号を含むように明らかに定義される。追加的又は代替的に、コード化された命令(コンピュータ可読命令など)によって、前述の方法のいずれかの例示的なプロセスを実現することができる。コード化された命令は、ハードディスク、フラッシュメモリ、読み出し専用メモリ、光ディスク、デジタル多用途ディスク、高速バッファ、ランダムアクセスメモリ及び/又は任意の他の記憶媒体などの非一時的なコンピュータ可読媒体に記憶される。情報は、記憶媒体に任意の時間形式で(例えば、長時間、恒久的、短い時間、一時的なバッファリング、及び/又は情報のキャッシング)記憶されることができる。
本発明は、Java言語に基づいてスマート・コントラクトを開発するのをサポートするとともに、決定性計算、有限計算の特徴があり、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にJava言語の全ての機能が保持され、アクセスしやすい。
例示的なものに過ぎず、本発明を制限するものではない具体的な例を参照して本発明を説明したが、本発明の趣旨及び保護範囲から逸脱することなく、開示された実施例の変更、追加又は削除が可能であることは、当業者には明らかであろう。
Claims (39)
- マルチノードシステムにおいてスマート・コントラクトを処理する方法であって、
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するステップと、
前記クラスファイルに基づいて前記スマート・コントラクトを実行するステップと、を含み、
前記クラスファイルは、前記スマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる、ことを特徴とする方法。 - 前記クラスファイルは、命令と、前記命令に対応する計数器とを含み、
前記クラスファイルに基づいて前記スマート・コントラクトを実行する前記ステップは、
前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するステップを含む、ことを特徴とする請求項1に記載の方法。 - 前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられ、
前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる、ことを特徴とする請求項1又は2に記載の方法。 - 呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前記ステップは、
前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップを含む、ことを特徴とする請求項1〜3のいずれか一項に記載の方法。 - 前記呼び出し要求に基づいて、クラスファイルライブラリで呼び出される前記スマート・コントラクトに対応するクラスファイルを検索する前記ステップは、
前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得するステップと、
前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップとを含む、ことを特徴とする請求項4に記載の方法。 - 呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記呼び出されるスマート・コントラクトに対応するクラスファイルを確定する前記ステップは、
前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するステップを含む、ことを特徴とする請求項1〜3のいずれか一項に記載の方法。 - 前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、
前記クラスファイルをインスタンス化し、前記呼び出し要求における関数及びパラメータを確定するステップと、
インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記スマート・コントラクトを実行するステップとを含む、ことを特徴とする請求項1〜6のいずれか一項に記載の方法。 - 呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、
前記呼び出し要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項1〜7のいずれか一項に記載の方法。 - 前記呼び出し要求の妥当性を確定する前記ステップは、
前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む、ことを特徴とする請求項8に記載の方法。 - 前記クラスファイルを前記マルチノードシステムに予めデプロイするステップを含み、
前記クラスファイルのデプロイメントプロセスは、
デプロイされる前記クラスファイルをクラスローダーによってロードするステップと、
前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするステップとを含む、ことを特徴とする請求項1〜9のいずれか一項に記載の方法。 - 前記クラスファイルのデプロイメントプロセスは、
前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、
前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項10に記載の方法。 - 前記クラスファイルをデプロイする前に、
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項10又は11に記載の方法。 - 前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、
前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するステップを含む、ことを特徴とする請求項12に記載の方法。 - マルチノードシステムにおいてスマート・コントラクトを処理する装置であって、
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュールと、
前記クラスファイルに基づいて前記呼び出されるスマート・コントラクトを実行するように構成された実行モジュールと、を含み、
前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる、ことを特徴とする装置。 - 前記クラスファイルは、命令と、前記命令に対応する計数器とを含み、
前記実行モジュールは、さらに、
前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するように構成される、ことを特徴とする請求項14に記載の装置。 - 前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられ、
前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる、ことを特徴とする請求項15に記載の装置。 - 前記確定モジュールは、さらに、
前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される、ことを特徴とする請求項14〜16のいずれか一項に記載の装置。 - 前記確定モジュールは、さらに、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される、ことを特徴とする請求項17に記載の装置。
- 前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するように構成された生成モジュールを更に含む、ことを特徴とする請求項14〜18のいずれか一項に記載の装置。
- 前記実行モジュールは、さらに、前記クラスファイルをインスタンス化し、前記スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記呼び出し要求によって呼び出された前記スマート・コントラクトを実行するように構成される、ことを特徴とする請求項14〜19のいずれか一項に記載の装置。
- 呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、前記スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第1検証モジュールを更に含む、ことを特徴とする請求項14〜20のいずれか一項に記載の装置。
- 前記第1検証モジュールは、さらに、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される、ことを特徴とする請求項21に記載の装置。
- デプロイされる前記クラスファイルをクラスローダーによってロードし、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするように構成されたデプロイメントモジュールを更に含む、ことを特徴とする請求項14〜22のいずれか一項に記載の装置。
- 前記デプロイメントモジュールは、さらに、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項23に記載の装置。
- 前記デプロイメントモジュールは、さらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される、ことを特徴とする請求項23又は24に記載の装置。
- 前記デプロイメントモジュールによって前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第2検証モジュールを更に含む、ことを特徴とする請求項23〜25のいずれか一項に記載の装置。
- 前記第2検証モジュールは、さらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するように構成される、ことを特徴とする請求項26に記載の装置。
- マルチノードシステムにおいてスマート・コントラクトをデプロイする方法であって、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するステップと、
前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするステップとを含む、ことを特徴とする方法。 - 前記クラスファイルのデプロイメントプロセスは、
前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項28に記載の方法。 - 前記クラスファイルを、ローカルノードにデプロイするか、又は前記ローカルノードに通信接続された記憶装置にデプロイして、クラスファイルライブラリを形成する、ことを特徴とする請求項28又は29に記載の方法。
- 前記クラスファイルをデプロイする前に、
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項28〜30のいずれか一項に記載の方法。 - 前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するステップを含む、ことを特徴とする請求項31に記載の方法。
- マルチノードシステムにおいてスマート・コントラクトをデプロイする装置であって、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュールと、
前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするように構成されたデプロイメント実行モジュールとを含む、ことを特徴とする装置。 - 前記デプロイメント実行モジュールは、さらに、前記クラスファイルに非決定性クラス及び/又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項33に記載の装置。
- 前記デプロイメント実行モジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される、ことを特徴とする請求項33又は34に記載の装置。
- 第3検証モジュールが、前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成される、ことを特徴とする請求項33〜35のいずれか一項に記載の装置。
- 前記第3検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するように構成される、ことを特徴とする請求項36に記載の装置。
- コンピュータ装置であって、メモリと、プロセッサと、前記メモリに記憶され前記プロセッサによって実行されるコンピュータプログラムとを含み、前記プロセッサによって前記コンピュータプログラムが実行されると、請求項1〜13及び28〜32のいずれか一項に記載の方法のステップが実現される、ことを特徴とするコンピュータ装置。
- コンピュータプログラムを記憶しているコンピュータ読取可能な記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1〜13及び28〜32のいずれか一項に記載の方法のステップが実現される、ことを特徴とするコンピュータ読取可能な記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638423.X | 2017-07-31 | ||
CN201710638423.XA CN107392619B (zh) | 2017-07-31 | 2017-07-31 | 智能合约处理方法及装置 |
PCT/CN2018/095784 WO2019024674A1 (zh) | 2017-07-31 | 2018-07-16 | 智能合约处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019536153A true JP2019536153A (ja) | 2019-12-12 |
Family
ID=60342494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019524456A Withdrawn JP2019536153A (ja) | 2017-07-31 | 2018-07-16 | スマート・コントラクト処理方法及び装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20190324772A1 (ja) |
JP (1) | JP2019536153A (ja) |
KR (1) | KR20190107664A (ja) |
CN (1) | CN107392619B (ja) |
AU (1) | AU2018310287A1 (ja) |
SG (1) | SG11201907111QA (ja) |
TW (1) | TW201911032A (ja) |
WO (1) | WO2019024674A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9918605B2 (en) | 2015-04-09 | 2018-03-20 | Irobot Corporation | Wall following robot |
CN107392619B (zh) * | 2017-07-31 | 2020-12-29 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
CN108776936A (zh) * | 2018-06-05 | 2018-11-09 | 中国平安人寿保险股份有限公司 | 保险理赔方法、装置、计算机设备和存储介质 |
CN109146679B (zh) * | 2018-06-29 | 2023-11-10 | 创新先进技术有限公司 | 基于区块链的智能合约调用方法及装置、电子设备 |
CN108916604B (zh) * | 2018-07-04 | 2020-07-03 | 临沂大学 | 一种便于维护的智能合约转换器 |
US11842322B2 (en) * | 2018-08-22 | 2023-12-12 | Equinix, Inc. | Smart contract interpreter |
CN109067759B (zh) * | 2018-08-27 | 2020-11-03 | 深圳前海益链网络科技有限公司 | 一种智能合约调用单点执行系统 |
CN109376541A (zh) * | 2018-09-21 | 2019-02-22 | 上海点融信息科技有限责任公司 | 用于运行智能合约的方法、装置以及计算机存储介质 |
CN111045690B (zh) * | 2018-10-12 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 区块链节点服务部署方法、装置、系统、计算设备及介质 |
CN109933404B (zh) * | 2018-12-12 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的编解码方法及系统 |
CN109710385A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约复杂度限制方法 |
PL3542494T3 (pl) * | 2018-12-29 | 2021-08-23 | Advanced New Technologies Co., Ltd. | System i sposób realizacji umowy wewnętrznej w łańcuchu bloków |
US10733152B2 (en) | 2018-12-29 | 2020-08-04 | Alibaba Group Holding Limited | System and method for implementing native contract on blockchain |
US10866823B2 (en) | 2019-03-26 | 2020-12-15 | Advanced New Technologies Co., Ltd. | System and method for implementing different types of blockchain contracts |
CN110119428B (zh) * | 2019-04-19 | 2023-05-12 | 腾讯科技(深圳)有限公司 | 一种区块链信息管理方法、装置、设备及存储介质 |
CN110188097A (zh) * | 2019-04-19 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 区块链中智能合约的存储、执行方法及装置和电子设备 |
CN116757843A (zh) * | 2019-06-28 | 2023-09-15 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN110675256B (zh) * | 2019-08-30 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN110688428B (zh) * | 2019-09-24 | 2021-01-26 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
CN110633328B (zh) * | 2019-09-25 | 2024-03-22 | 腾讯云计算(北京)有限责任公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN111160911B (zh) * | 2019-12-31 | 2023-10-24 | 杭州趣链科技有限公司 | 一种面向区块链的智能合约调用频率控制方法 |
US11893002B2 (en) * | 2020-05-04 | 2024-02-06 | Salesforce, Inc. | System or method to run distributed validation of workflows across a network in a shared distributed ledger in multi-tenant cloud environment |
CN111831745B (zh) * | 2020-06-05 | 2023-04-18 | 广东科学技术职业学院 | 定时智能合约的调度方法及装置 |
CN111815330A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN112070618B (zh) * | 2020-09-02 | 2024-09-10 | 中国平安人寿保险股份有限公司 | 基于区块链的保险核赔方法、装置、设备及介质 |
CN112162851B (zh) * | 2020-09-14 | 2022-12-13 | Oppo(重庆)智能科技有限公司 | dex预编译方法、装置、计算机设备及存储介质 |
CN112417514B (zh) * | 2020-10-30 | 2024-04-05 | 迅鳐成都科技有限公司 | 基于电子合约的多方数据协作方法、系统及存储介质 |
CN112346820B (zh) * | 2020-11-16 | 2024-07-30 | 上海可东网络科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN112765676B (zh) * | 2020-12-03 | 2024-07-12 | 杭州趣链科技有限公司 | 一种智能合约执行方法、智能合约执行装置及节点设备 |
CN112636981B (zh) * | 2020-12-28 | 2023-02-17 | 杭州趣链科技有限公司 | 区块链主机及其代理方法、装置及存储介质 |
CN112968930B (zh) * | 2021-01-29 | 2022-08-19 | 东南大学 | 区块链键值对智能合约及其设计方法 |
CN112950237B (zh) * | 2021-05-12 | 2021-08-06 | 常州市市场监管服务中心(常州市特种设备事故调查处置中心) | 基于ocr和区块链的气瓶质量安全追溯系统及控制方法 |
CN113342429B (zh) * | 2021-06-09 | 2023-08-08 | 网易(杭州)网络有限公司 | 智能合约数据处理方法、装置、计算机设备及存储介质 |
CN113805889B (zh) * | 2021-08-27 | 2023-07-28 | 成都质数斯达克科技有限公司 | 一种智能合约调用执行方法、装置、设备及可读存储介质 |
CN113778564B (zh) * | 2021-09-03 | 2023-05-30 | 杭州复杂美科技有限公司 | 一种高效执行evm智能合约的方法、设备及储存介质 |
CN114422535B (zh) * | 2022-01-18 | 2024-04-09 | 网易(杭州)网络有限公司 | 区块链中部署合约的方法、装置、计算机设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1645319A (zh) * | 2005-01-20 | 2005-07-27 | 上海交通大学 | 优化网络环境下部分计值服务的方法 |
CN100349115C (zh) * | 2005-06-30 | 2007-11-14 | 西安交通大学 | 一种应用服务器平台的实现方法 |
US20150379510A1 (en) * | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
CN104731708A (zh) * | 2015-03-25 | 2015-06-24 | 北京信息控制研究所 | 一种Shellcode的动态检测方法 |
CN106295336B (zh) * | 2015-06-26 | 2020-05-22 | 阿里巴巴集团控股有限公司 | 恶意程序检测方法及装置 |
EP3323080B1 (en) * | 2015-07-14 | 2020-11-04 | Fmr Llc | Computationally efficient transfer processing, auditing, and search apparatuses, methods and systems |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
CN106101242B (zh) * | 2016-06-24 | 2019-08-06 | 深圳前海微众银行股份有限公司 | 区块链云服务平台的构建方法和装置 |
CN106651303B (zh) * | 2016-12-02 | 2020-05-26 | 北京轻信科技有限公司 | 一种基于模板的智能合约处理方法和系统 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107392619B (zh) * | 2017-07-31 | 2020-12-29 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
-
2017
- 2017-07-31 CN CN201710638423.XA patent/CN107392619B/zh active Active
-
2018
- 2018-07-16 JP JP2019524456A patent/JP2019536153A/ja not_active Withdrawn
- 2018-07-16 SG SG11201907111QA patent/SG11201907111QA/en unknown
- 2018-07-16 AU AU2018310287A patent/AU2018310287A1/en not_active Withdrawn
- 2018-07-16 WO PCT/CN2018/095784 patent/WO2019024674A1/zh active Application Filing
- 2018-07-16 KR KR1020197019035A patent/KR20190107664A/ko active Search and Examination
- 2018-07-30 TW TW107126301A patent/TW201911032A/zh unknown
-
2019
- 2019-07-02 US US16/460,202 patent/US20190324772A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
SG11201907111QA (en) | 2019-09-27 |
CN107392619A (zh) | 2017-11-24 |
US20190324772A1 (en) | 2019-10-24 |
WO2019024674A1 (zh) | 2019-02-07 |
KR20190107664A (ko) | 2019-09-20 |
TW201911032A (zh) | 2019-03-16 |
AU2018310287A1 (en) | 2019-09-05 |
CN107392619B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019536153A (ja) | スマート・コントラクト処理方法及び装置 | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
US9740505B2 (en) | Accurate static dependency analysis via execution-context type prediction | |
JP7394211B2 (ja) | スマートコントラクトの並行実行の方法、装置、機器、及び媒体 | |
US7552422B2 (en) | Test case inheritance controlled via attributes | |
US20150363195A1 (en) | Software package management | |
TW200937188A (en) | Contract programming for code error reduction | |
US7010783B2 (en) | Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation | |
US20090193444A1 (en) | Techniques for creating and managing extensions | |
CN110335041B (zh) | 智能合约调用的一致性检测方法、装置、设备及存储介质 | |
US10884764B1 (en) | Optimizing managed runtime applications for serverless environments | |
CN101387956A (zh) | 可扩展地实现非功能逻辑的方法和设备及其系统 | |
US10540154B2 (en) | Safe loading of dynamic user-defined code | |
US10902151B2 (en) | Cognitive API policy manager | |
US8244869B2 (en) | System and method for starting server services | |
Ayub et al. | Storage state analysis and extraction of Ethereum blockchain smart contracts | |
US9430196B2 (en) | Message inlining | |
KR20230073230A (ko) | 소프트웨어 플랫폼용 제3자 라이브러리 함수의 상호 호출 방법 및 상호 호출 시스템 | |
CN114782016A (zh) | 基于智能合约的债权数据处理方法、装置及区块链系统 | |
De Boer et al. | Decidability problems for actor systems | |
Greci et al. | A framework for contract-policy matching based on symbolic simulations for securing mobile device application | |
Soleimanifard et al. | Procedure-modular specification and verification of temporal safety properties | |
US20130104151A1 (en) | Interface Profiles for Customizing Application Programming Interface Behavior | |
CN110286913B (zh) | 核对代码包部署方法及装置 | |
CN112148364B (zh) | 一种嵌入式微内核操作系统分区链接方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190510 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20191111 |