(57)【要約】  本発明の一実施例は、スマート・コントラクト処理方法及び装置を開示する。この処理方法は、呼び出されるスマート・コントラクトに対応するクラスファイルに基づいて前記呼び出されるスマート・コントラクトを実行するステップを含む。前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。本発明の実施例が提供する技術案を採用することによって、Ｊａｖａ言語でスマート・コントラクトを開発するのがサポートされ、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にＪａｖａ言語の全ての機能が保持され、簡単にアクセスすることができる。
2019536153.tif 000002
【特許請求の範囲】
【請求項１】
マルチノードシステムにおいてスマート・コントラクトを処理する方法であって、
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するステップと、
前記クラスファイルに基づいて前記スマート・コントラクトを実行するステップと、を含み、
前記クラスファイルは、前記スマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる、ことを特徴とする方法。
【請求項２】
前記クラスファイルは、命令と、前記命令に対応する計数器とを含み、
前記クラスファイルに基づいて前記スマート・コントラクトを実行する前記ステップは、
前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられ、
前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる、ことを特徴とする請求項１又は２に記載の方法。
【請求項４】
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前記ステップは、
前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップを含む、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記呼び出し要求に基づいて、クラスファイルライブラリで呼び出される前記スマート・コントラクトに対応するクラスファイルを検索する前記ステップは、
前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得するステップと、
前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップとを含む、ことを特徴とする請求項４に記載の方法。
【請求項６】
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記呼び出されるスマート・コントラクトに対応するクラスファイルを確定する前記ステップは、
前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するステップを含む、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項７】
前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、
前記クラスファイルをインスタンス化し、前記呼び出し要求における関数及びパラメータを確定するステップと、
インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記スマート・コントラクトを実行するステップとを含む、ことを特徴とする請求項１〜６のいずれか一項に記載の方法。
【請求項８】
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、
前記呼び出し要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記呼び出し要求の妥当性を確定する前記ステップは、
前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記クラスファイルを前記マルチノードシステムに予めデプロイするステップを含み、
前記クラスファイルのデプロイメントプロセスは、
デプロイされる前記クラスファイルをクラスローダーによってロードするステップと、
前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするステップとを含む、ことを特徴とする請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記クラスファイルのデプロイメントプロセスは、
前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、
前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記クラスファイルをデプロイする前に、
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項１０又は１１に記載の方法。
【請求項１３】
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、
前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するステップを含む、ことを特徴とする請求項１２に記載の方法。
【請求項１４】
マルチノードシステムにおいてスマート・コントラクトを処理する装置であって、
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュールと、
前記クラスファイルに基づいて前記呼び出されるスマート・コントラクトを実行するように構成された実行モジュールと、を含み、
前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる、ことを特徴とする装置。
【請求項１５】
前記クラスファイルは、命令と、前記命令に対応する計数器とを含み、
前記実行モジュールは、さらに、
前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するように構成される、ことを特徴とする請求項１４に記載の装置。
【請求項１６】
前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられ、
前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる、ことを特徴とする請求項１５に記載の装置。
【請求項１７】
前記確定モジュールは、さらに、
前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される、ことを特徴とする請求項１４〜１６のいずれか一項に記載の装置。
【請求項１８】
前記確定モジュールは、さらに、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される、ことを特徴とする請求項１７に記載の装置。
【請求項１９】
前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するように構成された生成モジュールを更に含む、ことを特徴とする請求項１４〜１８のいずれか一項に記載の装置。
【請求項２０】
前記実行モジュールは、さらに、前記クラスファイルをインスタンス化し、前記スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記呼び出し要求によって呼び出された前記スマート・コントラクトを実行するように構成される、ことを特徴とする請求項１４〜１９のいずれか一項に記載の装置。
【請求項２１】
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、前記スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第１検証モジュールを更に含む、ことを特徴とする請求項１４〜２０のいずれか一項に記載の装置。
【請求項２２】
前記第１検証モジュールは、さらに、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される、ことを特徴とする請求項２１に記載の装置。
【請求項２３】
デプロイされる前記クラスファイルをクラスローダーによってロードし、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするように構成されたデプロイメントモジュールを更に含む、ことを特徴とする請求項１４〜２２のいずれか一項に記載の装置。
【請求項２４】
前記デプロイメントモジュールは、さらに、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項２３に記載の装置。
【請求項２５】
前記デプロイメントモジュールは、さらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される、ことを特徴とする請求項２３又は２４に記載の装置。
【請求項２６】
前記デプロイメントモジュールによって前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第２検証モジュールを更に含む、ことを特徴とする請求項２３〜２５のいずれか一項に記載の装置。
【請求項２７】
前記第２検証モジュールは、さらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するように構成される、ことを特徴とする請求項２６に記載の装置。
【請求項２８】
マルチノードシステムにおいてスマート・コントラクトをデプロイする方法であって、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するステップと、
前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするステップとを含む、ことを特徴とする方法。
【請求項２９】
前記クラスファイルのデプロイメントプロセスは、
前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記クラスファイルを、ローカルノードにデプロイするか、又は前記ローカルノードに通信接続された記憶装置にデプロイして、クラスファイルライブラリを形成する、ことを特徴とする請求項２８又は２９に記載の方法。
【請求項３１】
前記クラスファイルをデプロイする前に、
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む、ことを特徴とする請求項２８〜３０のいずれか一項に記載の方法。
【請求項３２】
前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するステップを含む、ことを特徴とする請求項３１に記載の方法。
【請求項３３】
マルチノードシステムにおいてスマート・コントラクトをデプロイする装置であって、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュールと、
前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするように構成されたデプロイメント実行モジュールとを含む、ことを特徴とする装置。
【請求項３４】
前記デプロイメント実行モジュールは、さらに、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される、ことを特徴とする請求項３３に記載の装置。
【請求項３５】
前記デプロイメント実行モジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される、ことを特徴とする請求項３３又は３４に記載の装置。
【請求項３６】
第３検証モジュールが、前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成される、ことを特徴とする請求項３３〜３５のいずれか一項に記載の装置。
【請求項３７】
前記第３検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記デプロイメント要求が妥当であることを確定するように構成される、ことを特徴とする請求項３６に記載の装置。
【請求項３８】
コンピュータ装置であって、メモリと、プロセッサと、前記メモリに記憶され前記プロセッサによって実行されるコンピュータプログラムとを含み、前記プロセッサによって前記コンピュータプログラムが実行されると、請求項１〜１３及び２８〜３２のいずれか一項に記載の方法のステップが実現される、ことを特徴とするコンピュータ装置。
【請求項３９】
コンピュータプログラムを記憶しているコンピュータ読取可能な記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項１〜１３及び２８〜３２のいずれか一項に記載の方法のステップが実現される、ことを特徴とするコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１７年０７月３１日に出願された中国特許出願第２０１７１０６３８４２３．Ｘ号の優先権を主張し、その内容全体を参照により本願に援用する。
本発明は、コンピュータデータ処理の分野に関し、特にスマート・コントラクト処理方法及び装置に関する。
【背景技術】
【０００２】
スマート・コントラクトは、デジタルの形で定義された承諾であり、コントラクトの参加者は、コントラクトにおいてこれらの承諾の協議を実行することができる。スマート・コントラクト自体及びコントラクト実行の過程は観察されることが可能で、コントラクト実行の過程と判決も検証されることができる。スマート・コントラクト自体及びコントラクトに関連する情報は、関連するコントラクトの当事者によってのみ接触されることが可能であり、衝突が発生した場合だけに第三者に関連する情報が開示され、審査に付される。
【０００３】
ブロックチェーン技術は、分散されたピアツーピアネットワークに基づき、暗号法の原理とコンセンサスのメカニズムを組み合わせることによって、各分散型ノードのデータの一貫性及び継続性を保証し、情報の即時検証、トレーサビリティ、改ざんの難しさ、及びブロック不可能を実現する。それにより、プライベート、効率的且つ安全な共通価値システムが構築される。スマート・コントラクトとは、ブロックチェーン技術による、複雑な機能を実現する分散応用技術である。スマート・コントラクトは、高級言語で書かれ、対応するコンパイラによってコンパイルされた後に、ブロックチェーンが識別し実行できるコードを生成し、ブロックチェーンにデプロイし、対応する機能を提供する。
【０００４】
スマート・コントラクトを実行するシステム又はモジュールは、一般的に、スマート・コントラクトの実行エンジンと称される。既存のスマート・コントラクト実行エンジンは、主にスクリプト言語及びそのインタープリターを作成することにより実現されるが、以下のような問題点がある。（１）学習コストが高く、開発者はそのようなブロックチェーンを使用するために、それに対応するスクリプト言語を学ぶ必要がある。（２）普遍性がなく、一般に、１種類のスクリプト言語は特定のブロックチェーンプラットフォームでのみ使用できる。（３）機能が限られているため、この種類のスクリプト言語は、簡単な計算しかサポートできず、商業的使用やエンジニアリングレベルのニーズを満たすことが困難である。
【０００５】
従って、上記の欠点を克服することができるスマート・コントラクト処理方法及び対応する装置が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記問題に対して、スマート・コントラクト処理方法及び装置を提案する。
【０００７】
本発明の一態様によれば、マルチノードシステムにおいてスマート・コントラクトを処理するための方法が提供される。この方法は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するステップと、前記クラスファイルに基づいて前記スマート・コントラクトを実行するステップと、を含む。前記クラスファイルは、前記スマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
【０００８】
本発明の一実施例では、前記クラスファイルは、命令と、前記命令に対応する計数器とを含む。前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するステップを含む。
【０００９】
本発明の一実施例では、前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられる。前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる。
【００１０】
本発明の一実施例では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前記ステップは、前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップを含む。
【００１１】
本発明の一実施例では、前記呼び出し要求に基づいて、クラスファイルライブラリで呼び出される前記スマート・コントラクトに対応するクラスファイルを検索する前記ステップは、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得するステップと、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するステップとを含む。
【００１２】
本発明の一実施例では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記呼び出されるスマート・コントラクトに対応するクラスファイルを確定する前記ステップは、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するステップを含む。
【００１３】
本発明の一実施例では、前記クラスファイルに基づいて、前記スマート・コントラクトを実行する前記ステップは、前記クラスファイルをインスタンス化し、前記呼び出し要求における関数及びパラメータを確定するステップと、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記スマート・コントラクトを実行するステップとを含む。
【００１４】
呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定する前に、マルチノードシステムにおいてスマート・コントラクトを処理するための前記方法は、前記呼び出し要求の妥当性を確定するステップを更に含む。
【００１５】
本発明の一実施例では、前記呼び出し要求の妥当性を確定する前記ステップは、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
【００１６】
本発明の一実施例では、前記クラスファイルを前記マルチノードシステムに予めデプロイする。前記クラスファイルのデプロイメントプロセスは、デプロイされる前記クラスファイルをクラスローダーによってロードするステップと、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするステップとを含む。
【００１７】
本発明の一実施例では、前記クラスファイルのデプロイメントプロセスは、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
【００１８】
本発明の一実施例では、前記クラスファイルをデプロイする前に、マルチノードシステムにおいてスマート・コントラクトを処理するための前記方法は、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む。
【００１９】
本発明の一実施例では、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
【００２０】
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトを処理するための装置が更に提供される。この装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュールと、呼び出されるスマート・コントラクトに対応するクラスファイルに基づいて、前記呼び出されるスマート・コントラクトを実行するように構成された実行モジュールとを含む。前記クラスファイルは、前記呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
【００２１】
本発明の一実施例では、前記クラスファイルは、命令と、前記命令に対応する計数器とを含む。前記実行モジュールはさらに、前記計数器を用いて前記命令の実行回数を計数し、前記実行回数が予め設定された回数を超えた場合、前記命令の実行を停止するように構成される。
【００２２】
本発明の一実施例では、前記クラスファイルは複数の前記命令を含み、各前記命令には対応する重みが設けられる。前記重みの値が大きいほど、前記重みに対応する前記命令の前記予め設定された回数が少なくなる。
【００２３】
本発明の一実施例では、前記確定モジュールはさらに、前記呼び出し要求に基づいて、クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される。
【００２４】
本発明の一実施例では、前記確定モジュールはさらに、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、前記識別情報に基づいて、前記クラスファイルライブラリで前記スマート・コントラクトに対応するクラスファイルを検索するように構成される。
【００２５】
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、前記呼び出し要求における前記スマート・コントラクトを指示するための識別情報に基づいて、前記呼び出し要求を満たす前記クラスファイルを生成するように構成された生成モジュールを更に含む。
【００２６】
本発明の一実施例では、前記実行モジュールはさらに、前記クラスファイルをインスタンス化し、前記スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化された前記クラスファイル、前記関数及びパラメータに基づいて、前記呼び出し要求によって呼び出された前記スマート・コントラクトを実行するように構成される。
【００２７】
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて前記スマート・コントラクトに対応するクラスファイルを確定する前に、前記スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第１検証モジュールを更に含む。
【００２８】
本発明の一実施例では、前記第１検証モジュールはさらに、前記呼び出し要求のフォーマットについて合意して、全てのノードが前記呼び出し要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
【００２９】
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための前記装置は、デプロイされる前記クラスファイルをクラスローダーによってロードしており、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために前記クラスファイルをデプロイするように構成されたデプロイメントモジュールを更に含む。
【００３０】
本発明の一実施例では、前記デプロイメントモジュールはさらに、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
【００３１】
本発明の一実施例では、前記デプロイメントモジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
【００３２】
本発明の一実施例では、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、前記デプロイメントモジュールによって前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第２検証モジュールを更に含む。
【００３３】
本発明の一実施例では、前記第２検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
【００３４】
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトをデプロイする方法が更に提供される。この方法は、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するステップと、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするステップとを含む。
【００３５】
本発明の一実施例では、前記クラスファイルのデプロイメントプロセスは、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるステップを更に含み、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
【００３６】
本発明の一実施例では、前記クラスファイルを、ローカルノードにデプロイするか、又は前記ローカルノードに通信接続された記憶装置にデプロイして、クラスファイルライブラリを形成する。
【００３７】
本発明の一実施例では、前記クラスファイルをデプロイする前に、マルチノードシステムにおいてスマート・コントラクトをデプロイする前記方法は、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するステップを更に含む。
【００３８】
本発明の一実施例では、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定する前記ステップは、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するステップを含む。
【００３９】
本発明の別の態様によれば、マルチノードシステムにおいてスマート・コントラクトをデプロイする装置が更に提供される。この装置は、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュールと、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルを前記マルチノードシステムにデプロイするように構成されたデプロイメント実行モジュールとを含む。
【００４０】
本発明の一実施例では、前記デプロイメント実行モジュールはさらに、前記クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、前記クラスファイルにおいて命令に対応する計数器を設けるように構成され、前記計数器は前記スマート・コントラクトの実行中に前記命令の実行回数を計数するために使用される。
【００４１】
本発明の一実施例では、前記デプロイメント実行モジュールはさらに、ローカルノードに、又は前記ローカルノードに通信接続された記憶装置に前記クラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
【００４２】
本発明の一実施例では、第３検証モジュールが、前記クラスファイルをデプロイする前に、前記クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成される。
【００４３】
本発明の一実施例では、前記第３検証モジュールはさらに、前記デプロイメント要求のフォーマットについて合意して、全てのノードが前記デプロイメント要求のフォーマットを妥当と見なすと、前記呼び出し要求が妥当であることを確定するように構成される。
【００４４】
本発明の別の態様によれば、コンピュータ装置が更に提供される。このコンピュータ装置は、メモリと、プロセッサと、前記メモリに記憶され前記プロセッサによって実行されるコンピュータプログラムとを含む。前記コンピュータプログラムの特徴は、前記プロセッサによって前記コンピュータプログラムが実行されると、マルチノードシステムにおいてスマート・コントラクトを処理するためのいずれかの前記方法のステップ、又はマルチノードシステムにおいてスマート・コントラクトをデプロイするいずれかの前記方法のステップが実現されることである。
【００４５】
本発明の別の態様によれば、コンピュータプログラムを記憶しているコンピュータ読取可能な記憶媒体が更に提供される。前記コンピュータプログラムの特徴は、前記コンピュータプログラムがプロセッサによって実行されると、マルチノードシステムにおいてスマート・コントラクトを処理するためのいずれかの前記方法のステップ、又はマルチノードシステムにおいてスマート・コントラクトをデプロイするいずれかの前記方法のステップが実現されることである。
【００４６】
本発明の技術案を実行することによって、Ｊａｖａ(登録商標)言語に基づいてスマート・コントラクトを開発することができるとともに、決定性計算、有限計算の特徴があり、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にＪａｖａ言語の全ての機能が保持され、アクセスしやすく、普及に適する。
【図面の簡単な説明】
【００４７】
実施例は、添付の図面を参照して示され、説明される。これらの図面は、基本原理を明確にするために使用され、基本原理を理解するのに必要な面のみを示す。これらの図面は、縮尺通りではない。図面において、同じ参照符号は類似的な特徴を示す。
【図１】本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
【図２】本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法で呼び出されるスマート・コントラクトを実行するフローの模式図を示す。
【図３】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
【図４】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
【図５】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。
【図６】発明の一実施例によるスマート・コントラクトの呼び出し方法のフローチャートである。
【図７】本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
【図８】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
【図９】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
【図１０】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。
【図１１】本発明の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置のアーキテクチャの模式図を示す。
【図１２】本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
【図１３】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
【図１４】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。
【図１５ａ】本発明の一実施例によるスマート・コントラクトのデプロイメント方法のフローチャートである。
【図１５ｂ】本発明の一実施例によるクラスファイルの構造模式図である。
【図１６】本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。
【図１７】本発明の別の実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。
【発明を実施するための形態】
【００４８】
以下の好ましい実施例の詳細な説明において、本発明の一部を構成する添付の図面を参照する。添付の図面は、本発明を実現することができる特定の実施例を例示する。例示的な実施例は、本発明による全ての実施例を網羅するものではない。本発明の範囲から逸脱することなく他の実施例を利用することができ、構造的又は論理的修正を行うこともできることを理解されたい。従って、以下の詳細な説明は限定されるものではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【００４９】
関連分野の当業者に知られている技術、方法及び装置については詳細に論じないが、適切な場合には、その技術、方法及び装置は本明細書の一部として考えられるべきである。図面中の各ユニットの間の接続線は、単に説明の便宜上のものであり、少なくとも接続線の両端のユニットが互いに通信していることを示し、接続されていないユニットが互いに通信できないように制限するものではない。
【００５０】
まず、本発明に係る名詞及び関連技術について説明する。Ｊａｖａ言語は、高級プログラミング言語である。クラスファイル（Ｃｌａｓｓ  ｆｉｌｅ）は、Ｊａｖａソースコードがコンパイルされてなるものであり、具体的なプログラムロジックを担持する。Ｊａｖａプログラムを実行する環境は、Ｊａｖａ仮想マシン（ＪＶＭ）と呼ばれる。Ｊａｖａ仮想マシンは、クラスローディング（Ｃｌａｓｓ  Ｌｏａｄｉｎｇ）メカニズムを提供する。このメカニズムにより、Ｊａｖａ実行中のクラスファイルを管理することができる。このメカニズムの機能を実現するモジュールはクラスローダー（Ｃｌａｓｓ  Ｌｏａｄｅｒ）と呼ばれる。決定性関数は、特定の入力値セットによって呼び出されるたびに、常に同じ値を返すことを意味する。それに対応して、異なる結果が返された場合、その関数は非決定性関数である。
【００５１】
図１は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する方法のフローの模式図を示す。図１に示されるように、この方法はステップ１０１〜ステップ１０２を含む。
ステップ１０１では、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、前記スマート・コントラクトに対応するクラスファイル（Ｃｌａｓｓ  ｆｉｌｅ）を確定する。そのクラスファイルは、呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされる。
ステップ１０２では、そのクラスファイルに基づいて、呼び出されるスマート・コントラクトを実行する。具体的な実行プロセスは、まず、クラスファイルをインスタンス化し、スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、次に、インスタンス化されたクラスファイル、関数及びパラメータに基づいて、呼び出し要求によって呼び出されたスマート・コントラクトを実行することを含む。
【００５２】
本発明の実施例は、実際に、Ｊａｖａ仮想マシンに基づくスマート・コントラクト実行システム（実行エンジン）並びにこのシステムに対応するフロー及びアルゴリズムを提供することが分かる。この実行システムを用いるブロックチェーンプラットフォームは、Ｊａｖａ言語を使用してスマート・コントラクトを開発するのをサポートすることができる。さらに、Ｓｃａｌａ、Ｇｒｏｏｖｙ、Ｊｙｔｈｏｎなどを含むＪａｖａ仮想マシンに実行される全ての言語（ＪＶＭ言語とも呼ばれる）をサポートすることができる。スマート・コントラクトのプログラムロジックはＪａｖａ言語に基づいて実現されるクラスファイルにコンパイルされるので、コンパイラ及びインタープリターの追加開発の必要がなく、Ｊａｖａ言語に基づいてスマート・コントラクトを開発することが実現される。開発者は、Ｊａｖａ言語の機能を使用すればブロックチェーン技術の開発及び使用を実現することができ、エンジニアリングレベルの使用を満たすためにアクセスがしやすく、商業的に使いやすく、マーケティングに適する。
【００５３】
クラスファイルはスマート・コントラクトに基づいてコンパイルされるものであるので、クラスファイルの内容は実際にスマート・コントラクトのプログラムロジック内容を含む。そのため、以下の幾つかの実施例の説明では、クラスファイルの概念とスマート・コントラクトの概念とを厳密に論理的に区別しない。例えば、スマート・コントラクトに対する呼び出し、実行及びデプロイメントを実現しようとするとき、実際には、クラスファイルに対する呼び出し、実行及びデプロイメントを実行している。
【００５４】
本発明の一実施例では、発明者が研究を通じて以下のことを発見した。即ち、ブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるとき、スマート・コントラクトは、計算が有限であり、無限ループ及び無限再帰がないはずであるという要件を満たす必要がある。そのため、クラスファイルは、命令と、命令に対応する計数器とを含んでもよい。この場合、図２に示されるように、呼び出されるスマート・コントラクトを実行するとき、以下のステップ１０２１〜ステップ１０２２が含まれてもよい。
ステップ１０２１では、その計数器を用いて命令の実行回数を計数する。
ステップ１０２２では、実行回数が予め設定された回数を超えた場合、命令の実行を停止する。
【００５５】
例えば、呼び出されるスマート・コントラクトに対応するクラスファイルは命令１及び命令２を含み、命令１の実行回数は１であり、命令２の実行回数は３であると仮定する。命令２が呼び出される命令であると仮定すると、命令２が実行されるたびに、命令２の計数器の計数は１回増加する。このようにして、命令２の予め設定された回数が４に設定されると、そのクラスファイルは完全に実行され得る。逆に、命令２の予め設定された回数が２に設定されると、そのクラスファイルは、完全に実行されないか、又はエラーを示す結果を出力する。
【００５６】
一実施形態では、異なる「重み」を異なる命令に割り当てることもできる。重みの値が大きいほど、重みに対応する命令の予め設定された回数が少なくなる。対応する命令の重みを調整することによって、命令の実行回数に対して対応する限定を行うことができる。例えば、命令２の重みを増加させることによって、許可される命令２の実行回数が更に減少する。同様に、命令２の重みを低減することによって、許可される命令２の実行回数が増加する。
【００５７】
従って、命令を計数することによって、あるユーザ／ノードが意図的に又は障害によって命令に対する多数の重複の呼び出しが生成されることが防止され、ブロックチェーンの有限計算の特徴が保証される。例えば、入札システムでは、入札の取り下げに対応する命令に計数器を追加することにより、ユーザが不正に入札を繰り返して取り下げるのを防止することができ、あるユーザの操作により入札システム全体がダウンするか又は正常に動作できなくなることを防止する。理解されるように、計数器は、具体的な用途に応じて異なる位置に配置されることができる。
【００５８】
本発明の一実施例では、発明者は研究を通じて以下のことを発見した。即ち、ブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるとき、スマート・コントラクトは、異なるノードで、異なる時間に、同じ入力によって同じ出力を取得できる（又は、決定性計算と呼ばれる）という要件を満たす必要がある。そのため、マルチノードシステムにクラスファイルを予めデプロイするとき、非決定性クラス及び／又は非決定性関数を含むクラスファイルを除去することによって、実行可能なクラスファイルが全て決定性計算が実現できるのを保証することができる。具体的には、クラスファイルのデプロイメントプロセスは、例えばクラスローダーによってデプロイされるクラスファイルをロードして、そのクラスファイルが非決定性関数を使用したか否かを判断するステップを含む。そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される。そのスマート・コントラクトのクラスファイルが非決定性関数を使用していないと判断すると、クラスファイルがデプロイされる。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗した結果をユーザに返して、ユーザが提出したスマート・コントラクトをブロックチェーンにデプロイできないことを通知する（例えば、ユーザが見ることができるインターフェイスを介して）。
【００５９】
本発明の一実施例では、スマート・コントラクトの決定性計算要件と有限計算要件との両方を満たすと考える場合、クラスファイルをデプロイするとき、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定した後に、クラスファイルに命令に対応する計数器を設けてもよい。具体的には、クラスローダー及びバイトコードエンハンサーに基づいてスマート・コントラクトのクラスファイルを処理することができる。クラスローダーは、ロードされるクラスファイルが非決定性関数を含むか否かを判断して、その能力に基づいて、非決定性関数を含むクラスのロードを拒否するために使用される。バイトコードエンハンサーは、クラスファイルを分析及び修正するために使用され、クラスファイルの実行中にクラスファイルにおける呼び出される各命令を計数する。書かれたスマート・コントラクトがコンパイルされた後、Ｐ２Ｐ又は他の伝送方法によってマルチノードシステム（例えば、ブロックチェーン）に広げられ、各ノードはそのスマート・コントラクトのクラスファイルを受信する。ブロックチェーンにおけるノード（例えば、検証ノード）は、指定されたルールに従って受信したクラスファイルについて合意するか、又は、受信したコントラクトをメモリに保存し、新たな合意時間になってからそのコントラクトに対する合意及び処理を引き起こす。理解されるように、本発明における合意は、１つ又は複数のクラスファイルを対象とすることができる。
【００６０】
本発明の一実施例では、クラスファイルのデプロイメント操作の信頼性を向上させるために、クラスファイルをデプロイする前に、そのクラスファイルをデプロイするデプロイメント要求の妥当性を確定する必要がある。具体的には、そのデプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行うことができる。妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求か否かを判断し、例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
【００６１】
さらなる実施例では、ブロックチェーンについて、上記妥当性検査は合意のメカニズムによって実行することができる。具体的には、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、デプロイメント要求が妥当であることを確定する。ＰｏＷ、ＰｏＳ、ＰＢＦＴ又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。合意の結果に基づいて、異なる操作が生じる。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない（例えば、デプロイメント要求のフォーマットが要件を満たしていない）ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である（例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど）ことを示す場合、後続のクラスファイルデプロイメント操作が実行される。
【００６２】
本発明の一実施例では、図３に示されるように、クラスファイルがクラスファイルライブラリに予めデプロイされる（例えば、ローカルノードにデプロイされるか、又はローカルノードに通信接続された記憶装置にデプロイされる）場合、呼び出し要求に基づいてクラスファイルライブラリで呼び出されるスマート・コントラクトに対応するクラスファイルを検索して（ステップ１０１’）、検索されたクラスファイルに基づいてスマート・コントラクトを実行する。
【００６３】
さらなる実施例では、図４に示されるように、スマート・コントラクトを呼び出す呼び出し要求にスマート・コントラクトを指示するための識別情報が含まれている場合、まず、呼び出し要求における識別情報を取得し（ステップ４０１）、次に、識別情報を基づいてクラスファイルライブラリで呼び出されるスマート・コントラクトに対応するクラスファイルを検索する（ステップ４０２）。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけられない場合、呼び出しを停止し、呼び出しの失敗を提示する（ステップ４０３）。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけることができる場合、後続のスマート・コントラクトの実行操作を行う。
【００６４】
本発明の別の実施例では、呼び出されるスマート・コントラクトに対応するクラスファイルは、呼び出し要求を受信したときにデプロイされてもよい。具体的には、スマート・コントラクトを呼び出す呼び出し要求には、プログラムロジック内容が含まれていてもよく、この場合、呼び出し要求における識別情報に基づいて呼び出し要求を満たすクラスファイルを生成する必要がある。
【００６５】
本発明の一実施例では、図５に示されるように、スマート・コントラクトを呼び出す操作の信頼性を向上させるために、クラスファイルに基づいてスマート・コントラクトを実行する前、スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定することができる（ステップ５０１）。具体的には、呼び出し要求を受信したノードは、その呼び出し要求の妥当性を検査する。ノードは、その呼び出し要求のフォーマット又は他のパラメータを検査して、呼び出し要求が妥当な呼び出し要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。
【００６６】
さらなる実施例では、スマート・コントラクトに対する呼び出し要求の妥当性検査は、合意メカニズムによって実行されてもよい。呼び出し要求のフォーマットについて合意して、全てのノードが呼び出し要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定する。例えば、ＰｏＷ、ＰｏＳ、ＰＢＦＴ又は他の合意アルゴリズムによって、その呼び出し要求を受信した複数のノードは、呼び出し要求の妥当性を検査して、現在のブロックチェーンに対してその呼び出し要求が妥当な呼び出し要求であるか否かを確定することができる。妥当性検査の判断結果に基づいて、対応する操作が生成される。具体的には、呼び出し要求が妥当な呼び出し要求でない場合、スマート・コントラクトの呼び出しは中止される。例えば、失敗した呼び出しの結果がユーザに返され、呼び出されるスマート・コントラクトが欠落しているか、又は呼び出せないことがユーザの見ることができるインターフェイスに通知される。呼び出し要求が妥当な呼び出し要求である（例えば、呼び出し要求のフォーマットがブロックチェーンの呼び出し要求に対するフォーマット要件を満たしているなど）場合、後続のスマート・コントラクトの実行操作が実行される。
【００６７】
図６は、発明の一実施例によるスマート・コントラクトの呼び出し方法のフローチャートである。図６に示されるように、この方法はステップＳ６０１〜ステップＳ６０８を含む。
ステップＳ６０１では、スマート・コントラクトの呼び出し要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトの呼び出し要求を受信する。この実施例では、呼び出し要求は特定のフォーマットを有する。理解されるように、呼び出し要求は、まずあるノードにより受信されて、その後、該ノードによってＰ２Ｐでブロックチェーンにおける多くのノードに送信することができる。
【００６８】
ステップＳ６０２では、呼び出し要求が妥当性を有するか否かを判断する。
このステップでは、呼び出し要求を受信したノードは、その呼び出し要求の妥当性を検査する。この実施例では、上記ノードは、その呼び出し要求のフォーマット又は他のパラメータを検査して、呼び出し要求が妥当な呼び出し要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。
【００６９】
ステップＳ６０２は、合意のメカニズムによって実行することができる。例えば、ＰｏＷ、ＰｏＳ、ＰＢＦＴ又は他の合意アルゴリズムによって、その呼び出し要求を受信した複数のノードは、呼び出し要求の妥当性を検査して、現在のブロックチェーンに対してその呼び出し要求が妥当な呼び出し要求であるか否かを確定することができる。
【００７０】
ステップＳ６０２の判断の結果に基づいて、対応する操作が生成される。具体的には、呼び出し要求が妥当な呼び出し要求でない場合、スマート・コントラクトの呼び出しが終了され、ステップＳ６０９の操作が実行されて、スマート・コントラクトの呼び出しが失敗したことが提示される。例えば、失敗した呼び出しの結果がユーザに返され、呼び出されるスマート・コントラクトが欠落しているか、又は呼び出せないことがユーザの見ることができるインターフェイスに通知される。呼び出し要求が妥当な呼び出し要求である（例えば、呼び出し要求のフォーマットがブロックチェーンの呼び出し要求に対するフォーマット要件を満たしているなど）場合、ステップＳ６０３の操作が実行される。
【００７１】
ステップＳ６０３では、呼び出し要求に対応するスマート・コントラクトの識別情報を確定する。
本実施例では、呼び出し要求は特定のフォーマットを有し、呼び出されるスマート・コントラクトの識別情報並びに対応する関数及びパラメータを含む。このステップでは、妥当な呼び出し要求を分析して、妥当な呼び出し要求中に含まれた、スマート・コントラクトを指示するための識別情報を確定する。理解されるように、このステップでは、呼び出し要求に含まれている関数及びパラメータを確定することができる。
【００７２】
ステップＳ６０４では、呼び出し要求に対応するスマート・コントラクトのクラスファイルがあるか否かを判断する。
このステップでは、呼び出し要求内の識別情報に基づいて、クラスファイルライブラリ（即ち、デプロイされたスマート・コントラクトのセット）で検索して、検索の結果に基づいて対応する操作を確定する。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけられない場合、呼び出しを停止し、呼び出しの失敗を提示する（ステップ６０９）。クラスファイルライブラリで識別情報によって指示されるクラスファイルを見つけることができる場合、後続の操作を行う。
【００７３】
理解されるように、１つの実施形態では、呼び出し要求に基づいて対応するクラスファイルを生成することもできる。例えば、呼び出し要求に含まれる識別情報が取得された後、例えば図１に示されるデプロイメント方法又はそのデプロイメント方法の一部によって、呼び出し要求を満たすクラスファイルが生成される。
【００７４】
ステップＳ６０５では、スマート・コントラクトをインスタンス化する。
このステップでは、ステップＳ２０４で見つけたクラスファイルに基づいて、スマート・コントラクトのインスタンス化を行う。
【００７５】
ステップＳ６０６では、呼び出し要求における関数及びパラメータを確定する。
このステップでは、呼び出し要求を分析することによって呼び出し要求における関数及びパラメータを確定する。理解されるように、ステップＳ６０３の結果に基づいて呼び出し要求における関数及びパラメータを確定することもできる。
【００７６】
ステップＳ６０７では、スマート・コントラクトを実行する。
このステップでは、ステップＳ６０５及びＳ６０６の操作結果を組み合わせて、スマート・コントラクトを呼び出す。具体的には、インスタンス化されたクラスファイル並びに妥当な呼び出し要求における関数及びパラメータに基づいて、この妥当な呼び出し要求に対応するスマート・コントラクトを実行して、スマート・コントラクトの結果を出力する（ステップＳ６０８）。
【００７７】
上記のステップは連続番号を使用するが、当業者であれば、上記のステップの中の幾つかのステップの順序を変えることができることを理解するであろう。例えば、スマート・コントラクトのインスタンス化（ステップＳ６０５）を先に実行した後、呼び出し要求における関数及びパラメータの確定（ステップＳ６０６）を実行することができる。まずステップＳ６０６を実行し、その後ステップＳ６０５を実行することもできる。
【００７８】
図７は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置の構造模式図を示す。図７に示されるように、この装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、スマート・コントラクトに対応するクラスファイルを確定するように構成された確定モジュール７０１と、クラスファイルに基づいて呼び出されるスマート・コントラクトを実行するように構成された実行モジュール７０２と、を含む。クラスファイルは、呼び出されるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされるものである。
【００７９】
本発明の一実施例では、クラスファイルは、命令と、命令に対応する計数器とを含む。実行モジュール７０２はさらに、計数器を用いて命令の実行回数を計数し、実行回数が予め設定された回数を超えた場合、命令の実行を停止するように構成される。
【００８０】
本発明の一実施例では、クラスファイルは複数の命令を含み、各命令には対応する重みが設けられる。重みの値が大きいほど、重みに対応する命令の予め設定された回数が少なくなる。
【００８１】
本発明の一実施例では、確定モジュール７０１はさらに、呼び出し要求に基づいて、クラスファイルライブラリでスマート・コントラクトに対応するクラスファイルを検索するように構成される。
【００８２】
本発明の一実施例では、確定モジュール７０１はさらに、呼び出し要求における前記スマート・コントラクトを指示するための識別情報を取得しており、識別情報に基づいて、クラスファイルライブラリでスマート・コントラクトに対応するクラスファイルを検索するように構成される。
【００８３】
本発明の一実施例では、図８に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、呼び出し要求におけるスマート・コントラクトを指示するための識別情報に基づいて、呼び出し要求を満たすクラスファイルを生成するように構成された生成モジュール７０３を更に含む。
【００８４】
本発明の一実施例では、実行モジュール７０２はさらに、クラスファイルをインスタンス化し、スマート・コントラクトを呼び出す呼び出し要求における関数及びパラメータを確定しており、インスタンス化されたクラスファイル、関数及びパラメータに基づいて、呼び出し要求によって呼び出されたスマート・コントラクトを実行するように構成される。
【００８５】
本発明の一実施例では、図９に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、呼び出されるスマート・コントラクトに対する呼び出し要求に基づいて、スマート・コントラクトに対応するクラスファイルを確定する前に、スマート・コントラクトを呼び出す呼び出し要求の妥当性を確定するように構成された第１検証モジュール７０４を更に含む。
【００８６】
本発明の一実施例では、第１検証モジュール７０４はさらに、呼び出し要求のフォーマットについて合意して、全てのノードが呼び出し要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
【００８７】
本発明の一実施例では、図１０に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、デプロイされる前記クラスファイルをクラスローダーによってロードしており、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルライブラリを形成するために、クラスファイルをデプロイするように構成されたデプロイメントモジュール７０５を更に含む。
【００８８】
本発明の一実施例では、デプロイメントモジュール７０５はさらに、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるように構成され、計数器はスマート・コントラクトの実行中に命令の実行回数を計数するために使用される。
【００８９】
本発明の一実施例では、デプロイメントモジュール７０５はさらに、ローカルノードに、又はローカルノードに通信接続された記憶装置にクラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
【００９０】
本発明の一実施例では、図１０に示されるように、マルチノードシステムにおいてスマート・コントラクトを処理するための装置は、デプロイメントモジュールによってクラスファイルをデプロイする前に、クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第２検証モジュール７０６を更に含む。
【００９１】
本発明の一実施例では、第２検証モジュール７０６はさらに、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
【００９２】
上記実施例によるマルチノードシステムにおいてスマート・コントラクトを処理するための装置に記載されたモジュールの各々は、マルチノードシステムにおいてスマート・コントラクトを処理するための上記方法中の１つの方法ステップに対応することを理解されたい。したがって、上記方法ステップで説明された操作及び特徴は、装置及びそこに含まれる対応するモジュールに等しく適用可能であり、重複する内容はここで再び説明しない。
【００９３】
図１１は、本発明の実施例によるマルチノードシステムにおいてスマート・コントラクトを処理する装置のアーキテクチャの模式図を示す。図１１に示されるように、処理装置３００は、呼び出し要求受信ユニット３０１、呼び出し要求分析ユニット３０２、クラスファイル選択ユニット３０３及び実行ユニット３０４を含む。具体的には、呼び出し要求受信ユニット３０１は、スマート・コントラクトに対する呼び出し要求を受信し、妥当な呼び出し要求を確定するために前記呼び出し要求に対して妥当性検査を行うように構成される。呼び出し要求分析ユニット３０２は、呼び出し要求受信ユニット３０１に通信接続され、前記妥当な呼び出し要求を分析して、前記妥当な呼び出し要求内の対応するスマート・コントラクトを指示するための識別情報を取得するように構成される。クラスファイル選択ユニット３０３は、前記識別情報に基づいて、前記妥当な呼び出し要求に対応するスマート・コントラクトのクラスファイルを確定するように構成される。この識別情報に基づいて、クラスファイル選択ユニット３０３は、この識別情報をクラスファイルライブラリにおける各クラスファイルの識別情報と比較して、該妥当な呼び出し要求に対応するクラスファイルを選択する。実行ユニット３０４は、クラスファイル選択ユニット３０３によって確定されたクラスファイル及び呼び出し要求に基づいて、対応するスマート・コントラクトを実行するように構成される。具体的には、実行ユニット３０４は、クラスファイルをインスタンス化し、呼び出し要求における関数及びパラメータを組み合わせて、前記妥当な呼び出し要求に対応するスマート・コントラクトを実行する。
【００９４】
図１２は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする方法のフローの模式図を示す。図１２に示されるように、この方法はステップ１２０１〜ステップ１２０２を含む。
ステップ１２０１では、デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得する。
ステップ１２０２では、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイする。例えば、クラスファイルライブラリを形成するために、クラスファイルを、ローカルノードにデプロイするか、又はローカルノードに通信接続された記憶装置にデプロイする。
【００９５】
そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される。そのスマート・コントラクトのクラスファイルが非決定性関数を使用していないと判断すると、クラスファイルがデプロイされる。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗したとの結果がユーザに返され、ユーザにより提出されたスマート・コントラクトをブロックチェーンにデプロイできないことが（例えば、ユーザが見ることができるインターフェイスを介して）通知される。
【００９６】
従って、このようにクラスファイルをデプロイすることによって、マルチノードシステムにおいてクラスファイルを予めデプロイするとき、非決定性クラス及び／又は非決定性関数を含むクラスファイルを除去して、全ての実行可能なクラスファイルについて決定性計算を実現できることが保証され、異なるノードで異なる時間に同じ入力によって同じ出力を取得できるというブロックチェーン技術と組み合わされてスマート・コントラクトが実現されるときの要件が満たされる。
【００９７】
本発明の一実施例では、図１３に示されるように、スマート・コントラクトの決定性計算要件と有限計算要件との両方を満たすと考える場合、マルチノードシステムにおいてスマート・コントラクトをデプロイする方法は、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるステップ（ステップ１３０１）を更に含むことができる。計数器はスマート・コントラクトの実行中に命令の実行回数を計数する。具体的には、クラスローダー及びバイトコードエンハンサーに基づいてスマート・コントラクトのクラスファイルを処理することができる。クラスローダーは、ロードされるクラスファイルが非決定性関数を含むか否かを判断して、その能力に基づいて、非決定性関数を含むクラスのロードを拒否するために使用される。バイトコードエンハンサーは、クラスファイルを分析及び修正するために使用され、クラスファイルの実行中にクラスファイルにおける呼び出される各命令を計数する。書かれたスマート・コントラクトがコンパイルされた後、Ｐ２Ｐ又は他の伝送方法によってマルチノードシステム（例えば、ブロックチェーン）に広げられ、各ノードはそのスマート・コントラクトのクラスファイルを受信する。ブロックチェーンにおけるノード（例えば、検証ノード）は、指定されたルールに従って受信したクラスファイルについて合意するか、又は、受信したコントラクトをメモリに保存し、新たな合意時間になってからそのコントラクトに対する合意及び処理を引き起こす。理解されるように、本発明における合意は、１つ又は複数のクラスファイルを対象とすることができる。
【００９８】
本発明の一実施例では、図１４に示されるように、クラスファイルのデプロイメント操作の信頼性を向上させるために、クラスファイルをデプロイする前に、そのクラスファイルをデプロイするデプロイメント要求の妥当性を確定する必要がある（ステップ１４０１）。具体的には、そのデプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行うことができる。妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求であるか否かを判断する。例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
【００９９】
さらなる実施例では、ブロックチェーンについて、上記妥当性検査は合意のメカニズムによって実行することができる。具体的には、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、デプロイメント要求が妥当であることを確定する。ＰｏＷ、ＰｏＳ、ＰＢＦＴ又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。合意の結果に基づいて、異なる操作が生成される。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない（例えば、デプロイメント要求のフォーマットが要件を満たしていない）ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である（例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど）ことを示す場合、後続のクラスファイルデプロイメント操作が実行される。
【０１００】
図１５ａは、本発明の一実施例によるスマート・コントラクトのデプロイメント方法のフローチャートである。図１５に示されるように、スマート・コントラクトをデプロイする方法は、以下のステップＳ１５０１〜ステップＳ１５０７を含む。
ステップＳ１５０１では、スマート・コントラクトのデプロイメント要求を取得する。
このステップでは、ブロックチェーンにおける多くのノードは、スマート・コントラクトのデプロイメント要求を受信する。この実施例では、デプロイメント要求は特定のフォーマットを有し、スマート・コントラクトのクラスファイル（即ち、デプロイされるクラスファイル）を含む。理解されるように、デプロイメント要求は、まずあるノードにより受信されて、その後、該ノードによってＰ２Ｐでブロックチェーンにおける多くのノードに送信することができる。
【０１０１】
ステップＳ１５０２では、デプロイメント要求が妥当性を有するか否かを判断する。
このステップでは、デプロイメント要求を受信したノードは、妥当なデプロイメント要求を確定するために、そのデプロイメント要求に対して妥当性検査を行う。本実施例では、妥当性検査は、そのデプロイメント要求の形式に対して検査し、即ち、上記ノードは、そのデプロイメント要求のフォーマット又は他のパラメータを検査して、デプロイメント要求が妥当なデプロイメント要求であるか否かを判断し、例えば、その要求のフォーマットが現在のブロックチェーンに適用するか否かを判断する。他の判断ルールの妥当性検査も適用されることが理解できる。
【０１０２】
ブロックチェーンについて、ステップＳ１５０２は、合意のメカニズムによって実行することができる。具体的には、ＰｏＷ、ＰｏＳ、ＰＢＦＴ又は他の合意アルゴリズムによって、そのデプロイメント要求を受信した複数のノードは、デプロイメント要求の妥当性を検査して、現在のブロックチェーンに対してそのデプロイメント要求が妥当なデプロイメント要求であるか否かを確定する。
【０１０３】
ステップＳ１５０２の合意の結果に基づいて、異なる操作が生じる。具体的には、合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求でない（例えば、デプロイメント要求のフォーマットが要件を満たしていない）ことを示す場合、そのスマート・コントラクトのデプロイメントは中止される。合意の結果は、そのデプロイメント要求が妥当なデプロイメント要求である（例えば、デプロイメント要求のフォーマットがブロックチェーンのデプロイメント要求に対するフォーマット要件を満たしているなど）ことを示す場合、ステップＳ１５０３の操作が実行される。
【０１０４】
ステップＳ１５０３では、デプロイメント要求に非決定性があるか否かを判断する。
以上のことから分かるように、デプロイメント要求は特定のフォーマットを有し、デプロイされるクラスファイルを含む。そのため、例えばクラスローダーによって、デプロイされるクラスファイルが非決定性関数を使用しているか否かを判断することができる。そのクラスファイルにおけるいずれかのクラスが非決定性関数に対する呼び出しを生成すると、スマート・コントラクトのデプロイメントが停止され、更にデプロイメントの失敗が提示される（ステップＳ１５０７）。クラスローダーがスマート・コントラクトのクラスファイルに非決定性関数が使用されていない（即ち、クラスファイルに非決定性クラスが含まれていない）と判定すると、ステップＳ１５０４の操作が実行される。当業者であれば、異なる用途において、異なる提示の方法があることを理解するであろう。例えば、デプロイメントが失敗したとの結果をユーザに返して、（例えば、ユーザが見ることができるインターフェイスを介して）ユーザが提出したスマート・コントラクトをブロックチェーンにデプロイできないことを通知する。
【０１０５】
ステップＳ１５０４では、計数器を追加する。
このステップでは、指定された命令の後に計数器を設けて、呼び出される命令に対する計数を実現することができる。以下、図１５ｂを参照して、計数器が追加された後のクラスファイルの実行について説明する。
【０１０６】
図１５ｂに示されるように、クラスファイル４００は、実行中に命令１を実行する回数が１、命令２を実行する回数が３である。上述のように、命令２が指定された命令であると仮定すると、命令２が実行されるたびに、計数器は１回増加する。このようにして、命令２の実行回数の閾値が４以上に設定されると、クラスファイル４００は完全に実行され得る。逆に、命令２の実行回数の閾値が２に設定されると、クラスファイル４００は、一部しか実行されないか、又はエラーを示す結果を出力する。
【０１０７】
一実施形態では、異なる「重み」を異なる命令に割り当てることもできる。図１４ｂに示される命令を例にすると、対応する命令の重みを調整することによって、命令の実行回数に対して対応する指定を行うことができる。例えば、命令２の重みを増加させることによって、命令２の実行が許可される回数は更に減少する。同様に、命令２の重みを低減することによって、命令２の実行が許可される回数は増加する。
【０１０８】
従って、命令を計数することによって、あるユーザ／ノードが意図的に又は障害によって命令に対する多数の重複の呼び出しが生成されることが防止され、ブロックチェーンの有限計算の特徴が保証される。例えば、入札システムでは、入札の取り下げに対応する命令に計数器を追加することにより、ユーザが不正に入札を繰り返して取り下げるのを防止することができ、あるユーザの操作により入札システム全体がダウンするか又は正常に動作できなくなることを防止する。理解されるように、計数器は、具体的な用途に応じて異なる位置に配置されることができる。
【０１０９】
ステップ１５０５では、修正されたクラスファイルを記憶する。
前のステップから分かるように、デプロイされる未修正のクラスファイルは計数器を含んでいない。本実施例では、クラスファイルは、バイトコードエンハンスメント技術によって修正され、指定された命令の後に計数器が追加される。修正されたデプロイされるクラスファイルは、指定された場所に記憶され（例えば、ブロックチェーンのノードに記憶されるか、又はノードに通信接続された記憶装置に記憶される）、それによって、デプロイされるクラスファイルはクラスファイルライブラリにデプロイされて、クラスファイルライブラリが構築される。
【０１１０】
上記の記憶ステップが完了した後、デプロイメントの成功を提示するステップＳ１５０６が実行される。例えば、デプロイメント成功したとの結果がユーザに返されて、ユーザにより提出されたスマート・コントラクトをブロックチェーンにデプロイしたことは、ユーザが見ることができるインターフェイスに通知される。
【０１１１】
上記のステップによって、スマート・コントラクトのクラスファイルに対するデプロイメントが実現され、ブロックチェーンにおけるクラスファイルがすべて決定性及び有限性を有し、それにより、ネットワークの安定性が向上する。具体的には、デプロイされるクラスファイルは、クラスファイルに非決定性クラス及び／又は非決定性関数又は非決定性クラスが含まれるか否かに基づいて選別され、それにより、選別後に残っているクラスファイルはすべて決定性を有する。また、修正されたクラスファイルの指定された命令の後に計数器が設けられるので、その命令の呼び出し回数に対して閾値が設定されるとき、計数器の出力値と呼び出し回数の閾値とを比較することによって命令の呼び出し回数を制限することができ、さらに、呼び出されるときにクラスファイルが有限計算の特徴を有する。
【０１１２】
図１６は、本発明の一実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイする装置の構造模式図を示す。図１６に示されるように、この装置は、
デプロイされるスマート・コントラクトのプログラムロジックに基づいて予めコンパイルされたクラスファイルを含むデプロイメント要求を取得するように構成された取得モジュール１６０１と、
クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルをマルチノードシステムにデプロイするように構成されたデプロイメント実行モジュール１６０２とを含む。
【０１１３】
本発明の一実施例では、デプロイメント実行モジュール１６０２はさらに、クラスファイルに非決定性クラス及び／又は非決定性関数が含まれていないことを確定すると、クラスファイルにおいて命令に対応する計数器を設けるように構成され、計数器はスマート・コントラクトの実行中に命令の実行回数を計数するために使用される。
【０１１４】
本発明の一実施例では、デプロイメント実行モジュール１６０２はさらに、ローカルノードに、又はローカルノードに通信接続された記憶装置にクラスファイルをデプロイして、クラスファイルライブラリを形成するように構成される。
【０１１５】
本発明の一実施例では、図１７に示されるように、マルチノードシステムにおいてスマート・コントラクトをデプロイする装置は、クラスファイルをデプロイする前に、クラスファイルをデプロイするデプロイメント要求の妥当性を確定するように構成された第３検証モジュール１６０３を更に含む。
【０１１６】
本発明の一実施例では、第３検証モジュール１６０３はさらに、デプロイメント要求のフォーマットについて合意して、全てのノードがデプロイメント要求のフォーマットを妥当と見なすと、呼び出し要求が妥当であることを確定するように構成される。
【０１１７】
上記実施例によるマルチノードシステムにおいてスマート・コントラクトをデプロイするための装置に記載されたモジュールの各々は、マルチノードシステムにおいてスマート・コントラクトをデプロイするための上記方法中の１つの方法ステップに対応することを理解されたい。したがって、上記方法ステップで説明された操作及び特徴は、装置及びそこに含まれる対応するモジュールに等しく適用可能であり、重複する内容はここで再び説明しない。
【０１１８】
前述の方法のいずれかのフローは、プロセッサによって実行されるプログラムを含む機械可読命令として実現されてもよいことを理解されたい。このプログラムは、ＣＤ−ＲＯＭ、フロッピーディスク、ハードディスク、デジタル多用途ディスク（ＤＶＤ）、ブルーレイディスク又は他の形態のメモリなどの有形のコンピュータ可読媒体に記憶されたソフトウェアで実体化されることができる。あるいは、前述の方法のいずれかのステップの一部又は全部は、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルロジックデバイス（ＥＰＬＤ）、ディスクリートロジック、ハードウェア、ファームウェアなどの任意の組み合わせによって実現することができる。さらに、前述の方法のいずれかに対応するフローチャートはデータ処理方法を説明しているが、処理方法のステップは変更、削除、又はマージされてもよい。
【０１１９】
上述したように、コード化された命令（コンピュータ可読命令など）によって、前述の方法のいずれかのプロセスを実現することができる。プログラミング命令は、ハードディスク、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、光ディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、高速バッファ、ランダムアクセスメモリ（ＲＡＭ）及び／又は任意の他の記憶媒体などの有形のコンピュータ可読媒体に記憶される。情報は、記憶媒体に任意の時間形式で（例えば、長時間、恒久的、短い時間、一時的なバッファリング、及び／又は情報のキャッシング）記憶されることができる。本明細書で使用される有形のコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読記憶信号を含むように明らかに定義される。追加的又は代替的に、コード化された命令（コンピュータ可読命令など）によって、前述の方法のいずれかの例示的なプロセスを実現することができる。コード化された命令は、ハードディスク、フラッシュメモリ、読み出し専用メモリ、光ディスク、デジタル多用途ディスク、高速バッファ、ランダムアクセスメモリ及び／又は任意の他の記憶媒体などの非一時的なコンピュータ可読媒体に記憶される。情報は、記憶媒体に任意の時間形式で（例えば、長時間、恒久的、短い時間、一時的なバッファリング、及び／又は情報のキャッシング）記憶されることができる。
【０１２０】
本発明は、Ｊａｖａ言語に基づいてスマート・コントラクトを開発するのをサポートするとともに、決定性計算、有限計算の特徴があり、コンパイラ及びインタープリターの追加開発の必要がなく、基本的にＪａｖａ言語の全ての機能が保持され、アクセスしやすい。
【０１２１】
例示的なものに過ぎず、本発明を制限するものではない具体的な例を参照して本発明を説明したが、本発明の趣旨及び保護範囲から逸脱することなく、開示された実施例の変更、追加又は削除が可能であることは、当業者には明らかであろう。
【図１】
2019536153.tif 000003
【図２】
2019536153.tif 000004
【図３】
2019536153.tif 000005
【図４】
2019536153.tif 000006
【図５】
2019536153.tif 000007
【図６】
2019536153.tif 000008
【図７】
2019536153.tif 000009
【図８】
2019536153.tif 000010
【図９】
2019536153.tif 000011
【図１０】
2019536153.tif 000012
【図１１】
2019536153.tif 000013
【図１２】
2019536153.tif 000014
【図１３】
2019536153.tif 000015
【図１４】
2019536153.tif 000016
【図１５ａ】
2019536153.tif 000017
【図１５ｂ】
2019536153.tif 000018
【図１６】
2019536153.tif 000019
【図１７】
2019536153.tif 000020
【国際調査報告】
2019536153.tif 000021
2019536153.tif 000022
2019536153.tif 000023
2019536153.tif 000024