(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022101478
(43)【公開日】2022-07-06
(54)【発明の名称】イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体
(51)【国際特許分類】
G06F 16/188 20190101AFI20220629BHJP
【FI】
G06F16/188
【審査請求】有
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021186157
(22)【出願日】2021-11-16
(31)【優先権主張番号】202011547864.7
(32)【優先日】2020-12-24
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】▲張▼ 磊
(72)【発明者】
【氏名】樊 冰新
(72)【発明者】
【氏名】▲鄭▼ 旗
(72)【発明者】
【氏名】肖 ▲偉▼
(57)【要約】 (修正有)
【課題】イーサリアム仮想マシンのトランザクション処理方法、装置、記憶媒体及びプログラムを提供する。
【解決手段】ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得し、仮想マシンインスタンスが、処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送し、インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、データアクセス要求に応じて命令変換を行い、目的アクセスデータへのアクセス動作を行うためにブロックチェーンのアカウントスペース及びコントラクトスペースを含むデータストレージスペースに対してブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を仮想マシンインスタンスにフィードバックする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ブロックチェーンノードに用いられる、イーサリアム仮想マシンに基づくトランザクション処理方法であって、
前記ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得すること、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生して、インターフェースモジュールに伝送すること、
前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うこと、および、
前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックすること、を含み、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記目的アクセスデータは、アカウントデータ及び/又はコントラクトデータを含む、
方法。
【請求項2】
前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースとを含む、
請求項1に記載の方法。
【請求項3】
前記ブロックチェーンのデータストレージスペースは、少なくとも2種類のアカウントのデータ操作をサポートすることに用いられ、
各前記アカウントのアカウントデータに使用されるデータ構造が同じである、
請求項2に記載の方法。
【請求項4】
前記アカウントデータは、アカウント識別子、コントラクトバイトコード、および、コントラクト内変数を含み、
前記アカウント識別子は、スマートコントラクトのコントラクト呼出識別子である、
請求項2に記載の方法。
【請求項5】
前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うことは、
前記インターフェースモジュールが、前記データアクセス要求の所属の仮想マシン命令および命令パラメータを認識すること、および、
前記インターフェースモジュールが、予め設定された仮想マシン命令およびインターフェースマッピング関係に基づき、前記データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定すること、
を含む、
請求項1に記載の方法。
【請求項6】
前記ブロックチェーンアクセスインターフェースのタイプは、
アカウントデータへのアクセスに用いられるアカウントアクセスインターフェース、
コントラクトデータの更新に用いられる記憶アクセスインターフェース、および、
コントラクトアカウントの操作に用いられるコントラクト操作インターフェース、
を含む、
請求項2乃至4のいずれか一項に記載の方法。
【請求項7】
前記ブロックチェーンアクセスインターフェースのうちのブロックチェーン読取インターフェースは、
コントラクト内変数読取インターフェース、
アカウントトークン残額読取インターフェース、
コントラクトバイトコード読取インターフェース、
アカウントの取引シーケンス番号読取インターフェース、
オンチェーンコントラクト照会インターフェース、
オンチェーンアカウント照会インターフェース、および、
ブロックの高さによりブロックハッシュを読み取る読取インターフェース、
のうちの少なくとも1つを含む、
請求項6に記載の方法。
【請求項8】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、処理待ちトランザクション要求を取得したときに、前記処理待ちトランザクション要求におけるコントラクト呼出元の識別子および呼出待ちコントラクトの識別子を取得すること、および、
前記仮想マシンインスタンスが、前記コントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づき、呼出元のオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をそれぞれ生成して前記インターフェースモジュールに伝送すること、
を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、チェーンにコントラクト呼出元のアカウントが存在するか否かを照会するために、前記ブロックチェーンのアカウントスペースに対して前記オンチェーンアカウント照会インターフェースを呼び出すこと、
前記インターフェースモジュールが、チェーンに呼出待ちコントラクトが存在するか否かを照会するために、前記ブロックチェーンのコントラクトスペースに対してオンチェーンコントラクト照会インターフェースを呼び出すこと、および、
前記インターフェースモジュールが、コントラクト呼出元のアカウントと呼出待ちコントラクトとの照会結果を前記仮想マシンインスタンスにフィードバックすること、
を含む、
請求項7に記載の方法。
【請求項9】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、オンチェーンアカウントおよびオンチェーンコントラクトが存在するというインターフェースによりフィードバックされた照会結果を取得したときに、前記呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を生成してインターフェースモジュールに伝送すること、を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、呼出待ちコントラクトのコントラクトバイトコードを読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクトバイトコード読取インターフェースを呼び出し、読み取ったコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックすること、を含む、
請求項8に記載の方法。
【請求項10】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、前記インターフェースによりフィードバックされたコントラクトバイトコードと、前記処理待ちトランザクション要求におけるコントラクトパラメータおよびトークンとに基づき、前記処理待ちトランザクション要求を実行し、実行過程でコントラクト内変数読取要求を生成し、前記インターフェースモジュールに伝送すること、を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、コントラクト内変数の数値を読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数読取インターフェースを呼び出し、読み取った数値を前記仮想マシンインスタンスにフィードバックすること、を含む、
請求項9に記載の方法。
【請求項11】
前記ブロックチェーンアクセスインターフェースにおけるブロックチェーン書込インターフェースは、
コントラクトアカウント作成インターフェース、
コントラクトバイトコード初期化インターフェース、
コントラクトアカウント削除インターフェース、
コントラクト内変数記憶インターフェース、
アカウント残額増加インターフェース、および、
アカウント残額減少インターフェース、
のうちの少なくとも1つを含む、
請求項6に記載の方法。
【請求項12】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、コントラクト内変数記憶要求を生成してインターフェースモジュールに伝送すること、を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、コントラクト内変数の数値を書き込むために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数記憶インターフェースを呼び出すこと、を含む、
請求項11に記載の方法。
【請求項13】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント作成要求であると認識したときに、前記インターフェースモジュールに伝送すること、を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、前記コントラクトアカウント作成要求に基づいてコントラクトアカウント作成インターフェースを呼び出し、前記アカウントスペースに新規のコントラクトアカウントを作成して前記新規のコントラクトアカウントのアカウントデータを書き込むこと、
前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、作成待ちスマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込むために、前記コントラクトバイトコード初期化インターフェースを呼び出すこと、および、
前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、前記コントラクト内変数記憶インターフェースを呼び出し、前記コントラクトスペースに前記スマートコントラクトのコントラクト内変数を作成して記憶すること、
を含む、
請求項12に記載の方法。
【請求項14】
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を生成してインターフェースモジュールに伝送することは、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント削除要求であると認識したときに、前記インターフェースモジュールに伝送すること、を含み、
これに対応して、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンにフィードバックすることは、
前記インターフェースモジュールが、前記コントラクトアカウント削除要求に基づいてコントラクトアカウント削除インターフェースを呼び出し、削除待ちコントラクトアカウントのアカウントデータを前記アカウントスペースから削除し、前記コントラクトスペースにおける前記削除待ちコントラクトアカウントのコントラクトデータを削除すること、を含む、
請求項13に記載の方法。
【請求項15】
前記方法は、さらに、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行した後、ブロックチェーンアクセスインターフェースを呼び出し、前記コントラクトスペースにおけるコントラクト内変数に応じてブロックチェーンのオンチェーンデータを更新すること、を含む、
請求項2に記載の方法。
【請求項16】
ブロックチェーンノードに用いられ、請求項1乃至15のいずれか一項に記載の方法を実行するためのイーサリアム仮想マシンに基づくトランザクション処理装置であって、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスによって、処理待ちトランザクション要求を取得するための処理待ちトランザクション要求取得モジュール、
前記仮想マシンインスタンスによって前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送するためのデータアクセス要求発生/伝送モジュール、
前記インターフェースモジュールによって、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うことに用いられる、命令変換モジュール、および、
前記インターフェースモジュールによって、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックするためのブロックチェーンアクセスインターフェース呼出モジュール、を備え、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記目的アクセスデータは、アカウントデータ及び/又はコントラクトデータを含む、
装置。
【請求項17】
少なくとも1つのプロセッサ、および、
前記少なくとも1つのプロセッサに通信接続されたメモリ、を備え、
前記メモリには、前記少なくとも1つのプロセッサにより実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに請求項1乃至15のいずれか一項に記載の方法を実施させる、
電子機器。
【請求項18】
コンピュータ命令が記憶され、 前記コンピュータ命令は、コンピュータに、請求項1乃至15のいずれか一項に記載の方法を実行させる、
非一時的なコンピュータ可読記憶媒体。
【請求項19】
複数のコンピュータ命令を含むコンピュータプログラムであって、
前記コンピュータ命令がプロセッサによって実行されると、請求項1乃至15のいずれか一項に記載の方法をコンピュータに実行させる、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ技術分野、特にブロックチェーン技術に関し、具体的には、イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体に関する。
【背景技術】
【0002】
ブロックチェーンは、分散型データ記憶、ポイント・ツー・ポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムといったコンピュータ技術の新規応用モデルである。ブロックチェーンは、オープン性、透明性、および改ざん不可能性などの特性により、金融、トレーサビリティ、および保険などの分野にますます広く使用されている。
【0003】
ブロックチェーン技術は、最初のビットコインシステムからイーサリアムまで継続的に開発されており、近年、より優れた技術を使用する多くのブロックチェーンシステム、例えば、Polkadot、CosmosなどのPoSコンセンサスメカニズムに基づく新規ブロックチェーン技術も続々と生まれている。ブロックチェーンアプリケーション分野において、技術は継続的にアップグレードし更新しているが、イーサリアム技術に基づく生態環境は、すでにある程度の規模を有しており、ブロックチェーンアプリケーションの多くがイーサリアムのスマートコントラクトに基づいて構築されたものである。アプリケーションの開発者も使用者もある程度でイーサリアムのスマートコントラクトの使用に慣れている。
【0004】
しかしながら、技術の発展に伴い、イーサリアムには、例えば、非効率的なコンセンサスアルゴリズムなどの問題により、その取引性能が真の大規模な商用化シナリオをサポートするのに十分でないことになるなど、いくつかの欠陥が露呈した。イーサリアムの生態効果に鑑み、イーサリアムをそのまま放棄することよりも、イーサリアムおよび別のブロックチェーン技術と互換性のあるシステムの登場がさらに期待される。イーサリアムスマートコントラクトは、イーサリアム仮想マシン(Ethereum Virtual Machine、EVM)に基づいて実現されることから、イーサリアムと別のブロックチェーン技術との互換性を実現するためには、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決しなければならない。
【発明の概要】
【0005】
本発明は、イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体を提供する。
【0006】
本発明の一態様によれば、ブロックチェーンノードに用いられる、イーサリアム仮想マシンに基づくトランザクション処理方法であって、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得することと、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送することと、
前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うことと、
前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックすることと、を含み、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記目的アクセスデータは、アカウントデータおよび/またはコントラクトデータを含む、
イーサリアム仮想マシンに基づくトランザクション処理方法を提供する。
【0007】
本発明の別の態様によれば、ブロックチェーンノードに用いられる、イーサリアム仮想マシンに基づくトランザクション処理装置であって、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスによって、処理待ちトランザクション要求を取得するための処理待ちトランザクション要求取得モジュールと、
前記仮想マシンインスタンスによって前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送するためのデータアクセス要求発生/伝送モジュールと、
前記インターフェースモジュールによって、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うための命令変換モジュールと、
前記インターフェースモジュールによって、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックするためのブロックチェーンアクセスインターフェース呼出モジュールと、を備え、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記目的アクセスデータは、アカウントデータおよび/またはコントラクトデータを含む、
イーサリアム仮想マシンに基づくトランザクション処理装置を提供する。
【0008】
本発明の別の態様によれば、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されたメモリと、を備え、
前記メモリに、前記少なくとも1つのプロセッサにより実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサが本発明のいずれかの実施例に記載のイーサリアム仮想マシンのトランザクション処理方法を実行可能であるように、前記少なくとも1つのプロセッサに実行される、
電子機器を提供する。
【0009】
本発明の一態様によれば、本発明のいずれかの実施例に記載のイーサリアム仮想マシンのトランザクション処理方法をコンピュータに実行させるためのコンピュータ命令が記憶されている、
非一時的なコンピュータ可読記憶媒体を提供する。
【0010】
本発明の別の態様によれば、コンピュータプログラムを含み、
前記コンピュータプログラムは、プロセッサにより実行されると、本発明のいずれかの実施例に記載のイーサリアム仮想マシンのトランザクション処理方法を実現する、
コンピュータプログラム製品を提供する。
【0011】
本発明の技術により、他のブロックチェーンシステムにおけるイーサリアム仮想マシンの移植問題を解決し、イーサリアムと他のブロックチェーン技術との互換性を向上させる。
【0012】
本部分に記載の内容は、必ずしも本発明の実施例の肝心な、または重要な特徴を示すことも意図しなければ、本発明の範囲を制限するためのものでもないことを理解すべきである。本発明の他の特徴は、以下の明細書を通じて理解しやすくなる。
【図面の簡単な説明】
【0013】
図面は、本形態をより良好に理解するためのものであり、本発明を限定するものではない。
【
図1】本発明の実施例によるイーサリアム仮想マシンに基づく、トランザクション処理方法のフローチャートである。
【
図2】本発明の実施例によるイーサリアム仮想マシンに基づく、もう1つのトランザクション処理方法のフローチャートである。
【
図3】本発明の実施例によるイーサリアム仮想マシンに基づく、また1つのトランザクション処理方法の模式図である。
【
図4】本発明の実施例によるイーサリアム仮想マシンに基づく、トランザクション処理方法のフローチャートである。
【
図5】本発明の実施例によるイーサリアム仮想マシンに基づく、また1つのトランザクション処理方法のフローチャートである。
【
図6】本発明の実施例によるイーサリアム仮想マシンに基づく、トランザクション処理装置の模式図である。
【
図7】本発明の実施例によるイーサリアム仮想マシンに基づく、トランザクション処理方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0014】
以下、図面を参照しながら本発明の例示的な実施例について説明し、ここで、理解しやすいように本発明の実施例の様々な詳細内容が含まれるが、それらが例示的なものに過ぎないことが分かるべきである。従って、当業者は、本発明の範囲および精神から逸脱することなく、ここで説明する実施例に対して様々な変更および修正を加えることができることが分かるべきである。それと同様に、明確かつ簡単にするために、以下の説明では、公知の機能および構造の説明を省略する。
【0015】
ブロックチェーンは、分散型データ記憶、ポイント・ツー・ポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムなどのコンピュータ技術の新規応用モデルである。最初に登場したブロックチェーン(Blockchain)は、ビットコインの重要な概念として、本質的には分散化されたデータライブラリであり、また、ビットコインの基盤技術として、暗号化形態を使用して関連付けて生成される一連のデータブロックとなって、それぞれのデータブロックに1ロットのビットコインネットワーク上の取引情報が含まれ、その情報の有効性を検証し次のブロックを生成することに用いられる。ブロックチェーンは、オープン性、透明性、および改ざん不可能性などの特性により、金融、トレーサビリティ、および保険などの分野にますます広く使用され、特に、金融分野において、各金融機関間の効率的な協力を実現できる。
【0016】
ブロックチェーン技術は、ビットコインを代表とするデジタル通貨時代に最初に登場した。ブロックチェーン技術の継続的な発展に伴い、デジタル通貨とスマートコントラクトとを組み合わせるイーサリアムが登場し、ブロックチェーンは従来の「グローバル帳簿」から「グローバルコンピュータ」にアップグレードし、市場全体を分散化させた。イーサリアムは、デジタル通貨とスマートコントラクトとを組み合わせ、金融分野のよりも幅広いシナリオおよびプロセスを最適化したアプリケーションであり、アップグレードされた一番大きなところはスマートコントラクトである。イーサリアムは、アプリケーションプラットフォームに位置づけ、このプラットフォームにおいて、スマートコントラクトをアップロードし実行でき、このコントラクトの実行が有効的に保証できる。
【0017】
実際の大規模な商用化シナリオは、いつも効率的なコンセンサスアルゴリズムのサポートが必要であるが、ビットコインおよびイーサリアムなどの早期ブロックチェーン技術のコンセンサスによるその取引性能は、真の大規模な商用化シナリオをサポートするのに十分でない。しかしながら、ブロックチェーンのアプリケーション分野において、イーサリアムの生態系は、最高の地位を独占しており、多くのブロックチェーンアプリケーションはいずれもイーサリアム生態系に依存して存在し、ゲーム分野のクリプトキティ(CryptoKitties)と、金融分野のDeFiプロジェクトDAIとのいずれもイーサリアムのスマートコントラクトに基づいて構築される。
【0018】
特にイーサリアムのスマートコントラクトの実行に用いられる仮想マシンは、イーサリアム仮想マシン(EVM、Ethereum Virtual Machine)とも呼ばれ、イーサリアムのスマートコントラクトは、solidity、viperなどの言語によりコンパイル可能である。イーサリアムのスマートコントラクトおよびEVMは、ブロックチェーン分野に極めて広く適応され、ブロックチェーンのスマートコントラクト分野のデファクト標準の1つとなった。
【0019】
イーサリアムに基づくオリジナルコードが変更され、イーサリアムEVMを別のブロックチェーンシステムに使用する場合、イーサリアムEVMと、ブロックチェーンのデータ記憶形態およびアクセス形態との間に固有のバインディングが存在するはずであり、これにより、移植方案は汎用性がなくなり、移植後のEVMとチェーン自体とのバインディングが多くて、別のチェーンのイーサリアム仮想マシンへの移植に用いることが難しい。
【0020】
本発明は、イーサリアム仮想マシンに基づくトランザクション処理方法を提供し、モジュール化デザインのアイデアを組込み、イーサリアム仮想マシンをモジュールとしてモジュール化したブロックチェーンシステムに移植し、例えば、XuperChain、Cosmosなど、モジュール化デザインのアイデアを導入したブロックチェーンは、ブロックデータおよび実行ロジックを分割する。本発明の実施例に係る方法は、イーサリアム自体の技術生態系および応用生態系を十分に利用できるだけではなく、様々なイーサリアム生態系の自律分散型アプリケーション(Decentralized Applications、DAPP)がアプリケーション移植を実行することを極めて便利にし、別のブロックチェーンシステムの技術の強みを深掘りして発揮できる。
【0021】
図1は、本発明の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。本実施例は、イーサリアム仮想マシンを別のブロックチェーンシステムに移植してトランザクション処理を行う状況に適用可能であり、これにより、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと非イーサリアムの別のブロックチェーン技術との互換性を向上させる。本実施例で開示されるイーサリアム仮想マシンに基づくトランザクション処理方法は、イーサリアム仮想マシンに基づくトランザクション処理装置により実行可能であり、当該装置は、ソフトウェア及び/又はハードウェアの形態により実現可能であり、コンピューティングおよび記憶機能が具備される電子機器に配置可能であり、当該電子機器はブロックチェーンノードである。ブロックチェーンネットワークは、複数のブロックチェーンノードから構成され、且つ、分散的に稼働するネットワークである。本発明の実施例に係る方法はいずれか1つのブロックチェーンノードにより実行可能である。
【0022】
図1を参照すると、本実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のS110、S120、およびS130を含む。
【0023】
S110において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得する。
【0024】
ここで、ブロックチェーンノードに仮想マシンプログラムが配置され、稼働ニーズがある場合、1つ又は複数の仮想マシンインスタンスを生成し、イーサリアム仮想マシンに基づく命令集合に用いて、スマートコントラクトのコンピューティングロジックを実行できる。
【0025】
処理待ちトランザクション要求は、ブロックオンチェーンデータに対して動作を行うために、別のブロックチェーンノードから送信されたトランザクション要求、又は、ユーザがローカルノードで提出したトランザクション要求である。本発明の実施例において、トランザクション要求は、ブロックチェーンシステムでサポート可能な任意のトランザクション要求であってもよく、業務トランザクション要求であってもよく、管理トランザクション要求などであってもよい。処理待ちトランザクション要求は、ブロックオンチェーンデータに対するデータ読取要求又はデータ書込要求などであってもよい。
【0026】
ブロックノードは、処理待ちトランザクション要求を取得した後に、仮想マシンインスタンスを実行することで、当該処理待ちトランザクション要求を実行する。
【0027】
S120において、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送し、前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含む。
【0028】
本発明の実施例において、仮想マシンを移植する目標ブロックチェーンシステム自体がブロックチェーンデータを読み取る仮想マシン命令をサポートしない場合があることから、仮想マシンインスタンスの命令で表されるデータアクセス要求を解析し変換するためには、ブロックチェーンデータをアクセスできるインターフェースが形成されるように、インターフェースモジュールが設置されている。
【0029】
仮想マシンインスタンスは、一般的に、処理待ちトランザクション要求を取得した後および実行を始動する過程において、ブロックチェーンデータに対する読取/書込アクセス要求を発生し得る。ブロックチェーンシステムには、データの記憶に用いられるデータストレージスペースが設置されている。データは、オンチェーンデータと、ローカルデータとに区分され、オンチェーンデータとは、ブロックに追加して各々のノードに記憶させるデータを指す。ローカルデータは、それぞれのノードにおいて、オンチェーンのコンテンツやローカルのインデックスのニーズに応じて、ノードのローカルに記憶させるデータであり、それぞれのノードに記憶されるローカルデータが異なる場合がある。目的アクセスデータとは、処理待ちトランザクション要求に関するデータを指し、オンチェーンデータである場合もあり、ローカルデータである場合もある。データアクセス要求は、目的アクセスデータへのアクセスの要求に用いられる。
【0030】
データアクセス要求は、データ読取要求および/またはデータ書込要求を含む。データ読取要求とは、ブロックチェーンのデータストレージスペースから目的アクセスデータを読み取ることであり、データ書込要求とは、目的アクセスデータをブロックチェーンのデータストレージスペースに書き込むことである。
【0031】
イーサリアム仮想マシンインスタンスは、設定された命令セットを有し、処理待ちトランザクション要求を実行する過程で、データ読み書きの命令を生成することでデータアクセス要求を表現する。
【0032】
S130においては、前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0033】
ここで、インターフェースモジュールは、データアクセス要求に対して命令の解析および変換を行い、データストレージスペースにおけるデータに対する様々な読取/書込機能を実現するために、複数のブロックチェーンアクセスインターフェースが設置される。実は、インターフェースは、1セグメントのプログラムであり、1回又は複数回のデータの読取/書込、コンピューティング等の処理を実行可能であり、所定のプログラムに従って別のインターフェースを呼び出すこともできる。
【0034】
仮想マシンインスタンスで発生されるデータアクセス要求は、イーサリアム仮想マシン命令形態であるため、そのままでは、イーサリアムをサポートしないデータ記憶システムによって識別できず、インターフェースモジュールを介してデータアクセス命令の命令変換を行わなければならない。
【0035】
データアクセス要求に応じて、オンチェーンデータの動作に相違があり、この相違は、データアクセス要求に対応する機能上の相違にて現れ、従って、様々なデータアクセス要求に対応するブロックチェーンアクセスインターフェースにも相違がある。具体的に、データアクセス要求において、データ読取要求とデータ書込要求とに対応するブロックチェーンアクセスインターフェースがそれぞれ異なる。
【0036】
S140において、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックする。
【0037】
ここで、目的アクセスデータは、ブロックチェーンのデータストレージスペース内に存在する。オプションとして、データストレージスペースでは、異なるデータ構造がサポートされることができ、ブロックチェーンシステム自体の設定によりデータ構造が決定される。例えば、ブロックチェーンシステムには、普通は、アカウント、ログまたはトランザクションデータ記録、スマートコントラクトなどが設けられる必要があるが、権限データなどが設けられてもよい。目的アクセスデータは、アクセスのためにいずれかのデータ構造であってよい。
【0038】
オプションとして、前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースとを含む。
【0039】
オプションとして、前記目的アクセスデータは、アカウントデータおよび/またはコントラクトデータを含む。アカウントデータおよびコントラクトデータは、アカウントスペースおよびコントラクトスペースにそれぞれ記憶され、異なるデータ構造の相互分離を実現できることが好ましい。ただし、イーサリアムのアカウント構造を参照して、ブロックチェーンのデータストレージスペースにデータ構造が異なるアカウントが設けられてもよく、これによって、システムが異なるアカウント設置をそれぞれサポートし、イーサリアムのアカウントと他のブロックチェーンシステムのアカウントとのデータ記憶を両立してサポートすることができる。
【0040】
イーサリアムには、典型的に外部アカウントおよびコントラクトアカウントが設けられている。外部アカウントとは、秘密鍵によって支配されるアカウントであり、コントラクトアカウントとは、コントラクトコードによって支配されるアカウントである。2種類のアカウントは、いずれも1つのアカウントの基本的なオンチェーンデータを含む。コントラクトアカウントにおけるコントラクトデータとは、スマートコントラクトに関するデータである。外部アカウントには、コントラクトデータが存在しない。イーサリアムにおいて、外部アカウントおよびコントラクトアカウントは、いずれもアカウントタイプのデータ構造で記憶される。しかし、仮想マシンが移植される目的ブロックチェーンシステムで、スマートコントラクトコードを含むコントラクトアカウントがサポートされなければ、異なるタイプの2種類のデータを分離して記憶するためにアカウントスペースおよびコントラクトスペースがそれぞれ設けられることが好ましい。
【0041】
インターフェースモジュールは、ブロックチェーンアクセスインターフェースを呼び出すことで、ブロックチェーンのアカウントスペースとコントラクトスペースとの目的アクセスデータに対するアクセス動作を実現することができる。すなわち、アカウントデータとコントラクトデータに対する読み取り動作および/または書き込み動作を実現し、目的アクセスデータに対応するアクセス結果を得ることができる。インターフェースモジュールは、アクセス結果を仮想マシンインスタンスにフィードバックする。アクセス結果は、具体的に読み取ったデータであってもよいし、アクセスが成功したか否かというアクセスの状態をフィードバックしてもよい。
【0042】
本発明の実施例の技術案は、他のブロックチェーンシステムにイーサリアム仮想マシンを移植し、トランザクション処理を行う際に、インターフェースモジュールを構築し、インターフェースモジュールを介してイーサリアム仮想マシンの命令形式のデータアクセス要求を命令変換し、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定し、異性のデータストレージスペースにアクセスできる。そこで、ブロックチェーン開放化やコンポーネント化され、イーサリアム仮想マシンを他のブロックチェーンシステムに移植する難しさが低減される。また、本発明の実施例において、ブロックチェーンは、コントラクトデータとアカウントデータとをそれぞれ記憶することにより、異なるタイプのデータ記憶構造と互換でき、他のブロックチェーンによる異なるデータに対する動作を便利にする。本発明の実施例は、インターフェースモジュールを構築することと、ブロックチェーンのコントラクトデータとアカウントデータをそれぞれ記憶することとを融合することにより、他のブロックチェーンシステムにおけるイーサリアム仮想マシンの移植問題を解決し、イーサリアムと他のブロックチェーン技術との互換性を向上させる。
【0043】
本発明の実施例において、前記仮想マシンインスタンスは、前記処理待ちトランザクション要求の実行を完成した後、ブロックチェーンアクセスインターフェースを呼び出し、前記コントラクトスペースにおけるコントラクト内変数に応じてブロックチェーンのオンチェーンデータを更新することもできる。コントラクトスペースにおけるコントラクト内変数は、スマートコントラクトが実行される過程で更新される変数であり、普通はトランザクション処理過程の中間データおよび最終データである。ブロックチェーンアクセスインターフェースを介して最終データをチェーンストアすることができる。
【0044】
本実施例は、上述した実施例の基で提案されるオプション案である。具体的には、ブロックチェーンのデータストレージスペース内におけるアカウントデータとコントラクトデータとの記憶方法を細分するものである。
【0045】
イーサリアムに典型的には、外部アカウントおよびコントラクトアカウントが設けられていることを知ることができる。外部アカウントとは、秘密鍵によって支配されるアカウントであり、コントラクトアカウントとは、コントラクトコードによって支配されるアカウントである。2種類のアカウントは、いずれも1つのアカウントの基本的なオンチェーンデータを含む。コントラクトアカウントにおけるコントラクトデータとは、スマートコントラクトに関するデータである。外部アカウントには、コントラクトデータが存在しない。コントラクトアカウントおよび外部アカウントは、いずれもブロックチェーンのデータストレージスペースに記憶される。
【0046】
ここで、前記ブロックチェーンのデータストレージスペースは、少なくとも2種類のアカウントのデータ操作をサポートするためのものである。各前記アカウントのアカウントデータが使用するデータ構造は同じである。
【0047】
仮想マシンインスタンスがトランザクションデータの処理待ちトランザクション要求を実行する過程で、ブロックチェーンのデータストレージスペースにおけるデータに対するデータ読取要求および/またはデータ書込要求が生成される。具体的には、ブロックチェーンのデータストレージスペースにおける外部アカウントとコントラクトアカウントとのデータに対してデータアクセス動作が行われる。データストレージスペースにおける外部アカウントとコントラクトアカウントに使用されるデータ構造が同じである。オプションとして、外部アカウントとコントラクトアカウントは、いずれもアカウントタイプのデータ構造により記憶される。
【0048】
ここで、前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースとを含む。前記目的アクセスデータは、アカウントデータおよび/またはコントラクトデータを含む。
【0049】
他のブロックチェーンシステムにイーサリアム仮想マシンを移植する場合には、仮想マシンが移植される目的ブロックチェーンシステムで、スマートコントラクトコードを含むコントラクトアカウントがサポートされなければ、データストレージスペースにアカウントスペースとコントラクトスペースとがそれぞれ設けられ、異なるタイプの2種類のデータが分離して記憶されることが好ましい。
【0050】
外部アカウントおよびコントラクトアカウントのいずれにもアカウントデータが存在し、外部アカウントとコントラクトアカウントとの違いが、コントラクトアカウントに、アカウントデータの他にコントラクトデータが存在することにあるので、アカウントデータとコントラクトデータとが分離して記憶されるように、外部アカウントおよびコントラクトアカウントにおけるアカウントデータはアカウントスペースに記憶され、コントラクトアカウントにおけるコントラクトデータは個別にコントラクトスペースに記憶される。
【0051】
仮想マシンインスタンスが、処理待ちトランザクション要求を実行する過程で、目的アクセスデータに対するデータアクセス要求、すなわち、アカウントスペースにおけるアカウントデータおよび/またはコントラクトスペースにおけるコントラクトデータに対して生成されるデータアクセス要求、が生成される。
【0052】
オプションの実施例において、前記アカウントデータは、アカウント識別子、取引シーケンス番号、アカウント公開鍵、およびトークン(Token)を含む。
【0053】
例示的には、ブロックチェーンのデータストレージスペースにおいて、下記のデータ構造を用いてコントラクトおよび外部アカウントにおけるアカウントデータを格納することができる。
【0054】
type AccountData struct {
Address string
Sequence uint
Pubkey string
Balance uint }
ここで、Addressはアカウント識別子、Sequenceは取引シーケンス番号、Pubkeyはアカウント公開鍵、Balanceはトークンをそれぞれ示す。ここで、前記アカウント識別子はアカウントデータのデータ呼出識別子であり、アカウントアドレスまたはアカウント名称であってよい。異なるアカウントデータは異なるアカウント識別子を有する。取引シーケンス番号とは、取引を行った回数を記録するためのデータである。アカウント公開鍵とは、アカウントを暗号化するための公開鍵である。トークンは、デジタル形式で存在する権益証明のことを示し、固有かつ内在の価値を代表しており、デジタル化可能なあらゆる権益証明を代表することができる。例示的には、トークンは、貨幣、債券、勘定、所有権、または資格などの権益証明であってよい。
【0055】
アカウントに対する管理効率を向上させながら、アカウントデータに対する動作の便利さを向上させるために、オプションの実施例において、前記アカウントデータはキーと値のペア(Key-Value Pair)という記憶形式を採用する。前記アカウント識別子は、キーとしてキー域に記憶される。前記取引シーケンス番号、アカウント公開鍵、およびトークンは、値域に記憶される。
【0056】
アカウント識別子は、キーの情報として取引シーケンス番号、アカウント公開鍵、およびトークンの3種類の値の情報に対応する。キーとしてのアカウント識別子は、アカウントデータを動作する場合に、アカウントデータに対して索引を行うために用いられ、データアクセス命令に目的アカウントデータのアカウント識別子を追加することで、当該アカウント識別子に基づいて目的アカウントデータの取引シーケンス番号と、アカウント公開鍵と、トークンとの情報を取得することができる。
【0057】
オプションの実施例において、前記コントラクトデータは、アカウント識別子と、コントラクトバイトコードと、コントラクト内変数とを含む。コントラクトバイトコードとは、スマートコントラクトをコンパイルした後で得られる、実行プログラムを含む、一連のopコード/データペアからなるバイナリファイルであり、中間コードである。コントラクト内変数とは、スマートコントラクトに含まれる変数およびスマートコントラクトが実行される過程でこの変数に輸入されるデータと、スマートコントラクトが実行される過程で生成される中間変数のことである。
【0058】
ここで、コントラクトアカウントのアカウント識別子は、スマートコントラクトのコントラクト呼出識別子である。異なるスマートコントラクトは異なるアカウント識別子を有する。スマートコントラクトを呼び出すときに、データアクセス要求にコントラクト呼出識別子を追加することで、当該コントラクト呼出識別子に基づいて呼び出す必要なスマートコントラクトを確定することができる。
【0059】
アカウントデータを動作するシーンの下で、コントラクトデータの位置決めの速さおよび正しさを向上させるために、オプションの実施例において、前記コントラクトデータは、キーと値のペアという記憶形式を採用する。前記アカウント識別子は、キーのプレフィックスとして、前記コントラクトバイトコードとコントラクト内変数との各自の識別子と組み合わせられ、キー域に記憶される。前記コントラクトバイトコードおよびコントラクト内変数は、値域に記憶される。
【0060】
キーは、アカウント識別子と、コントラクトバイトコードおよびコントラクト内変数の識別子とを含む。アカウント識別子は、キーのプレフィックスとして異なるコントラクトデータを分別でき、具体的なコントラクトデータに位置を決めた後、キーにおけるコントラクトバイトコードとコントラクト内変数との識別子に基づいて、動作に必要なコントラクトデータをさらに正確に確定する。
【0061】
アカウント識別子は、キー情報としてコントラクトバイトコードとコントラクト内変数との2種類の値の情報に対応する。キーとしてのアカウント識別子は、コントラクトデータを動作する場合に、コントラクトデータに対して索引を行うために用いられ、データアクセス命令に目的コントラクトデータのアカウント識別子を追加することで、当該アカウント識別子に基づいて、目的コントラクトデータのコントラクトバイトコードおよびコントラクト内変数を取得することができる。
【0062】
同じコントラクトアカウントに属するアカウントデータとコントラクトデータとは、アカウント識別子が一致しており、一対一で対応している。コントラクトアカウントにおけるアカウントデータおよびコントラクトデータを動作するときに、すべてキーによって索引が行われる。アカウントデータのキーがアカウント識別子のみを含み、それに対してコントラクトデータのキーが、アカウント識別子をプレフィックスとして、コントラクトバイトコードとコントラクト内変数との各自の識別子と共同に構成されているので、アカウントのキーとコントラクトデータの識別子は分別され得る。
【0063】
本発明の実施例は、データストレージスペースをアカウントスペースとコントラクトスペースとに分けることで、外部アカウントおよびコントラクトアカウントにおけるアカウントデータをアカウントスペースに記憶し、コントラクトアカウントにおけるコントラクトデータをコントラクトスペースに記憶し、アカウントデータとコントラクトデータとを分離して記憶することを実現し、異なるブロックチェーンシステムに記憶されたデータ構造の互換性を向上させる。コントラクトアカウントにおけるアカウントデータおよび外部アカウントにおけるアカウントデータが同じデータ構造を有することは、ブロックチェーン間のデータ操作の難しさを低減し、同時にブロックチェーンの移植の難しさを低減する。
【0064】
図2は、本発明の実施例による、イーサリアム仮想マシンに基づくもう1つのトランザクション処理方法のフローチャートである。本実施例は、上述した実施例の基で提出されるオプション案である。具体的には、前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うことに対する細分である。
【0065】
図2を参照して、本実施例で提供されるイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のステップを含む。
【0066】
S210において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得する。
【0067】
S220において、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送し、前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含む。
【0068】
S230において、前記インターフェースモジュールが、前記データアクセス要求の所属の仮想マシン命令および命令パラメータを認識する。
【0069】
ここで、仮想マシン命令および命令パラメータは、仮想マシンインスタンスが処理待ちトランザクション要求を実行する際に生成するものである。命令パラメータは、仮想マシン命令に含まれるパラメータ変数である。仮想マシン命令が実行されることは、目的アクセスデータに対するアクセス動作を実現することができる。目的アクセスデータは、アカウントデータとコントラクトデータとを含む。したがって、データアクセス要求は、アカウントデータおよびコントラクトデータに対する読取要求および/または書込要求である。
【0070】
イーサリアムのスマートコントラクトが、イーサリアムのgo言語版のクライアント、且つ、イーサリアムのスマートコントラクトの開発に必要なツールであるGethで開発されているので、イーサリアムにおいてアカウントに対する管理は、Gethにより提供されるアカウント動作命令がよく用いられている。例示的には、データアクセス要求に対応する仮想マシン命令および命令パラメータは、アカウントリスト命令であるgeth account list、アカウント更新命令であるgeth account update、または、アカウント作成命令であるpersonal.newAccount(‘Your Password’)であってよい。アカウントアクセス要求の所属の仮想マシン命令および命令パラメータの具体的な内容は、ここで限定されず、実際の場合に応じて確定される。
【0071】
S240において、前記インターフェースが、予め設定された仮想マシン命令およびインターフェースマッピング関係に基づいて、前記データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定する。
【0072】
ここで、インターフェースマッピング関係とは、仮想マシン命令とブロックチェーンアクセスインターフェースとの間の対応関係である。インターフェースマッピング関係は、ユーザにより実際の場合に応じてインターフェースモジュールに予め配置されたものである。
【0073】
データアクセス要求が仮想マシン命令に直接関係しているので、インターフェースマッピング関係が既知のものであることを前提に、仮想マシン命令およびインターフェースマッピング関係に基づいてデータアクセス要求に対応するブロックチェーンアクセスインターフェースを確定することができる。
【0074】
余計なマッピング関係が存在するのを避けるために、オプションの実施例において、1つまたは複数の仮想マシン命令は、1つのブロックチェーンアクセスインターフェースとインターフェースマッピング関係を有する。
【0075】
つまり、1つのブロックチェーンアクセスインターフェースは、少なくとも1つの仮想マシン命令に対応する。異なる仮想マシン命令は、同じブロックチェーンアクセスインターフェースに対応することができる。本質的には、仮想マシン命令と1つのブロックチェーンアクセスインターフェースとのインターフェースマッピング関係は、仮想マシン命令に対応する目的アクセスデータと、ブロックチェーンアクセスインターフェースに対応するデータストレージスペースにおけるデータとの対応関係である。
【0076】
S250において、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックする。
【0077】
アカウントに対する動作には、普通、複数のステップが含まれる必要がある。オプションの実施例において、前記ブロックチェーンアクセスインターフェースは、他のブロックチェーンアクセスインターフェースを呼び出す機能を有する。例示的には、アカウントに対する動作がコントラクトアカウントを作成することである場合に、新しく作成されたコントラクトアカウントを使用するために、普通は新しく作成されたアカウントを初期化する必要があるので、インターフェースモジュールでコントラクトアカウント作成インターフェースが呼び出され、コントラクトアカウントが作成された後、コントラクトアカウント作成インターフェースは、アカウントバイトコード初期化インターフェースを呼び出し、コントラクトスペースにおけるバイトコードを初期化する。
【0078】
本発明の実施例は、インターフェースモジュールを介して、マッピング関係に基づいてデータアクセス要求を命令変換し、前記データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定し、これによって、ブロックチェーンを開放化やコンポーネント化し、そこで、異なるブロックチェーン間のデータ操作の難しさを低減する。
【0079】
本実施例は、上述した実施例の基で提出されるオプション案である。上述した実施例に係るブロックチェーンアクセスインターフェースのタイプおよび機能を詳しく紹介する。
【0080】
前記ブロックチェーンアクセスインターフェースのタイプについて、アカウントデータへのアクセスに用いられるアカウントアクセスインターフェースと、コントラクトデータの更新に用いられる記憶アクセスインターフェースと、コントラクトアカウントの操作に用いられるコントラクト操作インターフェースとが含まれる。
【0081】
前記ブロックチェーンアクセスインターフェースにおけるブロックチェーン読取インターフェースは、コントラクト内変数読取インターフェースと、アカウントトークン残額読取インターフェースと、コントラクトバイトコード読取インターフェースと、アカウントの取引シーケンス番号読取インターフェースと、オンチェーンコントラクト照会インターフェースと、オンチェーンアカウント照会インターフェースと、ブロックの高さによりブロックハッシュを読み取る読取インターフェースと、のうちの少なくとも1つを含む。
【0082】
ここで、コントラクト内変数読取インターフェースは、コントラクトデータにおけるコントラクト内変数を読み取るためのものである。アカウントトークン残額読取インターフェースは、アカウントデータにおけるアカウントトークン残額を読み取るためのものである。コントラクトバイトコード読取インターフェースは、コントラクトアカウントにおけるコントラクトバイトコードを読み取るためのものである。アカウントの取引シーケンス番号読取インターフェースは、アカウントデータにおける取引シーケンス番号を読み取るためのものである。オンチェーンコントラクト照会インターフェースは、チェーンに記憶されたスマートコントラクトを照会するためのものである。オンチェーンアカウント照会インターフェースは、チェーンに記憶されたアカウントの情報を照会するためのものである。ブロックの高さによりブロックハッシュを読み取る読取インターフェースは、ブロックの高さによりハッシュを読み取るためのものである。
【0083】
ブロックチェーンは垂直なスタックとよく見なされており、1番目のブロックがスタック底の初ブロックとされてから、各ブロックがその前のブロックの上に置かれるので、ブロックの高さは、ブロックと初ブロックとの距離を表す。ブロックの高さは、ブロック識別子として具体的なブロックを確定することができる。ブロックハッシュはブロックの主識別子である。ブロックヘッダをSHA256アルゴリズムにより二次ハッシュ算出した32バイトのハッシュ値は、ブロックのデジタル指紋であるブロックハッシュ値と呼ばれている。
【0084】
オプションの実施例において、前記ブロックチェーンアクセスインターフェースにおけるブロックチェーン書込インターフェースは、コントラクトアカウント作成インターフェースと、コントラクトバイトコード初期化インターフェースと、コントラクトアカウント削除インターフェースと、コントラクト内変数記憶インターフェースと、アカウント残額増加インターフェースと、アカウント残額減少インターフェースと、のうちの少なくとも1つを含む。
【0085】
ここで、コントラクトアカウント作成インターフェースは、コントラクトスペースでコントラクトアカウントを作成するためのものである。コントラクトバイトコード初期化インターフェースは、コントラクトスペースにおけるバイトコードを初期化するためのものである。コントラクトアカウント削除インターフェースは、コントラクトスペースのコントラクトアカウントを削除するためのものである。コントラクト内変数記憶インターフェースは、コントラクト内変数を記憶するためのものである。アカウント残額増加インターフェースは、アカウント残額を増やすためのものである。アカウント残額減少インターフェースは、アカウント残額を減らすためのものである。
【0086】
上述したインターフェースのうち、アカウントアクセスインターフェースは、読取インターフェース、すなわち、アカウントトークン残額読取インターフェース、アカウントの取引シーケンス番号読取インターフェース、オンチェーンアカウント照会インターフェースと、書込インターフェース、すなわち、アカウント残額増加インターフェース、アカウント残額減少インターフェースとを含む。コントラクト操作インターフェースは、読取インターフェース、すなわち、コントラクトバイトコード読取インターフェース、オンチェーンコントラクト照会インターフェース、ブロックの高さによりブロックハッシュを読み取る読取インターフェースと、書込インターフェース、すなわち、コントラクトアカウント作成インターフェース、コントラクトバイトコード初期化インターフェース、コントラクトアカウント削除インターフェースとを含む。記憶アクセスインターフェースは、読取インターフェース、すなわち、コントラクト内変数読取インターフェースと、書込インターフェース、すなわち、コントラクト内変数記憶インターフェースとを含む。
【0087】
本発明の実施例は、目的アクセスデータが記憶されたブロックチェーンに、複数のタイプや複数の数のブロックチェーンアクセスインターフェースが設けられることで、仮想マシンインスタンスを実行するブロックチェーンノードがトランザクション要求を処理することを便利にし、仮想マシンインスタンスのブロックチェーンノードにより処理可能なトランザクション要求の範囲を向上させる。
【0088】
ここで、1つの処理待ちトランザクション要求を処理する過程では、各段階において、複数のデータアクセス要求が生成される可能性がある。
【0089】
例えば、処理待ちトランザクション要求を処理することによる生成可能なデータアクセス要求は、コントラクトアカウント作成要求と、コントラクトバイトコード初期化要求と、コントラクトアカウント削除要求と、コントラクト内変数記憶要求と、アカウント残額増加請求と、アカウント残額減少要求と、コントラクト内変数読取要求と、アカウントトークン残額読取要求と、コントラクトバイトコード読取要求と、アカウントの取引シーケンス番号読取要求と、オンチェーンコントラクト照会要求と、オンチェーンアカウント照会要求と、ブロックの高さによりブロックハッシュを読み取る読取要求などのうち、少なくとも1つを含む。
【0090】
以下では、例として、普通の業務トランザクション要求処理の過程で生成されるデータアクセス要求を紹介する。
【0091】
1.データアクセス要求がオンチェーンコントラクト照会要求およびオンチェーンアカウント照会要求であるとき:
前記仮想マシンインスタンスは、処理待ちトランザクション要求を取得したときに、前記処理待ちトランザクション要求におけるコントラクト呼出元の識別子および呼出待ちコントラクトの識別子を取得する。
【0092】
ここで、コントラクト呼出元の識別子は、スマートコントラクトを呼び出す一方のアイデンティティを認識するための情報であり、アカウント識別子であってよい。呼出待ちコントラクトの識別子は、呼び出されるスマートコントラクトを認識するための情報であり、オプションとしてコントラクトアドレスまたはアカウント識別子である。
【0093】
前記仮想マシンインスタンスは、前記コントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づき、呼出元のオンチェーンアカウント照会要求とオンチェーンコントラクト照会要求とをそれぞれ生成して前記インターフェースモジュールに伝送する。
【0094】
処理待ちトランザクション要求の有効性を確定するために、仮想マシンインスタンスは、コントラクト呼出元の識別子および呼出待ちコントラクトの識別子により認識されるアカウントおよびコントラクトが存在するか否かを確定する必要がある。仮想マシンインスタンスは、前記コントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づき、呼出元のオンチェーンアカウント照会要求とオンチェーンコントラクト照会要求とをそれぞれ生成し、仮想マシンインスタンスにより生成されたオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をインターフェースモジュールに伝送する。ここで、オンチェーンアカウント照会要求は、コントラクト呼出元の識別子により認識されるアカウントが存在するか否かを照会するために用いられ、これに対応して、オンチェーンコントラクト照会要求は、呼出待ちコントラクトの識別子により認識されるアカウントが存在するか否かを照会するために用いられる。
【0095】
前記インターフェースモジュールは、オンチェーンアカウント照会要求に対応するオンチェーンアカウント照会インターフェース、およびオンチェーンコントラクト照会要求に対応するオンチェーンコントラクト照会インターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0096】
前記インターフェースモジュールは、チェーンにコントラクト呼出元のアカウントが存在するか否かを照会するために、前記ブロックチェーンのアカウントスペースに対して前記オンチェーンアカウント照会インターフェースを呼び出す。
【0097】
インターフェースモジュールは、オンチェーンアカウント照会要求を受信した後、オンチェーンアカウント要求におけるコントラクト呼出元の識別子に基づき、コントラクト呼出元の識別子に対応するアカウントスペースを確定し、チェーンにコントラクト呼出元のアカウントが存在するか否かを照会するために、前記ブロックチェーンのアカウントスペースに対して前記オンチェーンアカウント照会インターフェースを呼び出す。
【0098】
前記インターフェースモジュールは、チェーンに呼出待ちコントラクトが存在するか否かを照会するために、前記ブロックチェーンのコントラクトスペースに対してオンチェーンコントラクト照会インターフェースを呼び出す。
【0099】
インターフェースモジュールは、オンチェーンコントラクト照会要求を受信した後、オンチェーンコントラクト照会要求における呼出待ちコントラクトの識別子に基づき、呼出待ちコントラクトの識別子に対応するコントラクトスペースを確定し、チェーンに呼出待ちコントラクトが存在するか否かを照会するために、前記ブロックチェーンのコントラクトスペースに対して前記オンチェーンコントラクト照会インターフェースを呼び出す。
【0100】
前記インターフェースモジュールは、コントラクト呼出元のアカウントと呼出待ちコントラクトとの照会結果を前記仮想マシンインスタンスにフィードバックする。
【0101】
ここで、照会結果は、コントラクト呼出元のアカウントが存在するか、または存在しない場合と、呼出待ちコントラクトが存在するか、または存在しない場合と、上述した2つの場合の組み合わせとを含む。インターフェースモジュールは、照会結果を仮想マシンインスタンスにフィードバックする。照会結果がコントラクト呼出元のアカウントまたは呼出待ちコントラクトの1つまたは両方が存在しない場合には、当該トランザクション要求に対してエラーの情報を仮想マシンインスタンスにフィードバックする。
【0102】
2.データアクセス要求がコントラクトバイトコード読取要求であるとき:
前記仮想マシンインスタンスは、オンチェーンアカウントおよびオンチェーンコントラクトが存在するというインターフェースによりフィードバックされた照会結果を取得したときに、前記呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を生成してインターフェースモジュールに伝送する。
【0103】
ここで、コントラクトバイトコード読取要求とは、コントラクトスペースに記憶されたコントラクトバイトコードを読み取るための要求である。インターフェースモジュールが仮想マシンインスタンスにフィードバックした照会結果が、オンチェーンアカウントおよびオンチェーンコントラクトが存在するということであれば、処理待ちトランザクション要求が有効であることが表され、仮想マシンは、呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を生成してインターフェースモジュールに伝送する。
【0104】
前記インターフェースモジュールは、前記コントラクトバイトコード読取要求に対応するコントラクトバイトコード読取インターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0105】
前記インターフェースモジュールは、呼出待ちコントラクトのコントラクトバイトコードを読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクトバイトコード読取インターフェースを呼び出し、読み取ったコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックする。
【0106】
インターフェースモジュールは、コントラクトバイトコード読取要求を受信した後、コントラクトバイトコード読取要求に基づき、コントラクトバイトコードが記憶されたコントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対してコントラクトバイトコード読取インターフェースを呼び出し、呼出待ちコントラクトのコントラクトバイトコードを読み取る。
【0107】
3.データアクセス要求がコントラクト内変数読取要求であるとき:
前記仮想マシンインスタンスは、前記インターフェースによりフィードバックされたコントラクトバイトコードと、前記処理待ちトランザクション要求におけるコントラクトパラメータおよびトークンとに基づき、前記処理待ちトランザクション要求を実行し、実行過程でコントラクト内変数読取要求を生成し、前記インターフェースモジュールに伝送する。ここで、コントラクト内変数は、スマートコントラクトが実行される過程における変数および変数値を含む。
【0108】
ここで、コントラクトパラメータおよびトークンは、仮想マシンインスタンスがコントラクトバイトコードを実行する際に仮想マシンインスタンスに入力が必要なデートである。仮想マシンが処理待ちトランザクション要求を実行する過程は、すなわち、インターフェースによりフィードバックされたコントラクトバイトコードを実行する過程である。仮想マシンインスタンスがコントラクトバイトコードを実行する過程では、コントラクト内変数読取要求が生成されるとともに、インターフェースモジュールに当該コントラクト内変数読取要求が伝送される。
【0109】
注目すべきことに、コントラクト内変数は、必ずしもすべてがチェーンストアされる必要がなく、コントラクトが実行される過程で生成される中間値を含む。コントラクトが実行される過程で、これらの中間値は、その過程で生成される他の数値に上書きされる可能性がある。例示的には、記帳累加機能のスマートコントラクトについて、既存の金額である変数Aと今度の累加金額である変数Bとが含まれる。異なる取引において、AとBとの数値が異なる。例えば、ユーザ甲が取引を始め、Aが10元であることの基でBが2元として累加されたとする。上述した例において、AおよびBは変数であり、10および2は変数の値であり、Aと、Bと、AおよびBに対応する数値である10および2とは、すべでコントラクト内変数であり、コントラクトスペースに記録される必要がある。しかし、スマートコントラクトの実行過程では、変数Aおよび変数Bに対応する変数値が変わる可能性があり、過程中の変数値が普通はチェーンストアされないが、変数Aおよび変数Bと、その2つの変数に対応する最終的な変数値とがチェーンストアされる。
【0110】
前記インターフェースモジュールは、前記コントラクト内変数読取要求に対応するコントラクト内変数読取インターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0111】
前記インターフェースモジュールは、コントラクト内変数の数値を読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数読取インターフェースを呼び出し、読み取った数値を前記仮想マシンインスタンスにフィードバックする。
【0112】
ここで、インターフェースモジュールは、コントラクト内変数読取要求を受信した後、コントラクト内変数読取要求に基づき、コントラクト内変数が記憶されたコントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数読取インターフェースを呼び出し、呼出待ちコントラクトのコントラクト内変数を読み取るとともに、読み取ったコントラクト内変数を前記仮想マシンインスタンスにフィードバックする。
【0113】
4.データアクセス要求がコントラクト内変数記憶要求であるとき:
前記仮想マシンインスタンスは、前記処理待ちトランザクション要求を実行する過程で、コントラクト内変数記憶要求を生成してインターフェースモジュールに伝送する。
【0114】
ここで、コントラクト内変数記憶要求は、コントラクト内変数をコントラクトスペースに記憶するための要求である。仮想マシンインスタンスは、処理待ちトランザクション要求を実行する過程で、データ処理結果を生成し、このデータ処理結果をコントラクトスペースに記憶する必要があれば、コントラクト内変数記憶要求を生成するとともにインターフェースモジュールに伝送する。
【0115】
前記インターフェースモジュールは、前記コントラクト内変数記憶要求に対応するコントラクト内変数記憶インターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0116】
前記インターフェースモジュールは、コントラクト内変数の数値を書き込むために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数記憶インターフェースを呼び出す。
【0117】
インターフェースモジュールは、コントラクト内変数記憶要求を受信した後、コントラクト内変数記憶要求に基づき、コントラクト内変数の目的コントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数記憶インターフェースを呼び出し、コントラクトスペースにコントラクト内変数の数値を書き込む。
【0118】
本発明の実施例は、仮想マシンインスタンスとインターフェースとを合わせることで、処理待ちトランザクション要求を共同に完成し、異なるブロックチェーン間のデータアクセス動作を実現し、他のブロックチェーンにおけるイーサリアム仮想マシンの移植問題を解決し、イーサリアムと他のブロックチェーン技術との互換性を向上させる。
【0119】
図3は、本発明の実施例による、イーサリアム仮想マシンに基づくトランザクション処理方法の模式図である。本実施例は、上述した実施例の最適化であり、好適な実施例であり、具体的には、完全な1回の処理待ちトランザクション要求の実行過程が表現されている。
【0120】
図3を参照して、本実施例で提供されるイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のステップを含む。
【0121】
ステップ1において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスは、処理待ちトランザクション要求を取得する。
【0122】
オプションとして、処理待ちトランザクション要求は1回の取引(Transaction)トランザクション要求である。取引トランザクション要求は、コントラクト呼出元(From)と、呼出待ちコントラクト(To)と、呼出待ちコントラクト輸入のToken(Amount)と、呼出待ちコントラクト方法のメソッドシグネチャおよび入力パラメータ(Data)との4つのパラメータを含む。ブロックチェーンノードは、取引トランザクション要求におけるFrom、To、Amount、およびDataを仮想マシンインスタンスに輸入し、仮想マシンインスタンスにおいて呼出元(Caller)、呼び出される者(Callee)、値(Value)、および入力パラメータ(Input)として存在させる。
【0123】
具体的には、ブロックチェーンで実行される仮想マシンインスタンスは、コントラクト呼出元が始めた処理待ちトランザクション要求を取得する。ここで、処理待ちトランザクション要求には、コントラクト呼出元の識別子と、呼出待ちコントラクトの識別子と、コントラクトパラメータと、トークンとが含まれる。処理待ちトランザクション要求が取引トランザクション要求である場合には、仮想マシンインスタンスにおける呼出元(Caller)がコントラクト呼出元の識別子であり、呼び出される者(Callee)が呼出待ちコントラクトの識別子であり、値(Value)がトークンであり、入力パラメータ(Input)がコントラクトパラメータである。
【0124】
ステップ2において、仮想マシンインスタンスは、呼出元(Caller)および呼び出される者(Callee)に基づき、インターフェースモジュールにおけるオンチェーンアカウント照会インターフェース(Acc Exists)およびオンチェーンコントラクト照会インターフェース(Contract Exists)を呼び出し、ブロックチェーンのデータストレージスペースに呼出待ちコントラクト及びコントラクト呼出元が存在するか否かをそれぞれ照会する。
【0125】
具体的には、仮想マシンインスタンスは、取引トランザクション要求を受信した後、取引トランザクション要求におけるコントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づき、呼出元のオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をそれぞれ生成して前記インターフェースモジュールに伝送する。ここで、インターフェースモジュールには、仮想マシンインスタンスインタ―フェースが包装されている。インターフェースモジュールは、オンチェーンアカウント照会要求に基づき、ブロックチェーンのアカウントスペースに対してオンチェーンアカウント照会インターフェースを呼び出し、チェーンにコントラクト呼出元のアカウントが存在するか否かを照会する。インターフェースモジュールは、オンチェーンコントラクト照会要求に基づき、ブロックチェーンのコントラクトスペースに対してオンチェーンコントラクト照会インターフェースを呼び出し、チェーンに呼出待ちコントラクトが存在するか否かを照会する。インターフェースモジュールは、コントラクト呼出元のアカウントおよび呼出待ちコントラクトの照会結果を仮想マシンインスタンスにフィードバックする。
【0126】
ステップ3において、ブロックチェーンのデータストレージスペースにコントラクト呼出元および呼出待ちコントラクトがすべて存在すると、仮想マシンインスタンスは、コントラクトスペース(ContractStore)に記憶されたコントラクトバイトコード(Code)を取得するために、インターフェースモジュールにおけるコントラクトバイトコード読取インターフェースを呼び出す。
【0127】
具体的には、仮想マシンインスタンスは、オンチェーンアカウントおよびオンチェーンコントラクトが存在するというインターフェースによりフィードバックされた照会結果を取得したときに、呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を生成してインターフェースモジュールに伝送する。インターフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対してコントラクトバイトコード読取インターフェースを呼び出し、呼出待ちコントラクトのコントラクトバイトコードを読み取るとともに、読み取ったコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックする。
【0128】
ステップ4において、仮想マシンインスタンスは、実行される仮想マシンインスタンスモジュール(EVM Execute)が取引トランザクション要求を実行するように、Caller、Value、Input、およびCodeを実行される仮想マシンインスタンスモジュール(EVM Execute)に伝送する。
【0129】
ステップ5およびステップ6において、EVM Executeは、Caller、Value、Input、およびCodeに基づいて取引トランザクション要求を実行する。取引トランザクション要求の実行過程では、コントラクト状態の変更を実現するためのコントラクト内変数の読み取りおよび記憶に関する。
【0130】
具体的には、仮想マシンインスタンスは、インターフェースモジュールによりフィードバックされたコントラクトバイトコードと、処理待ちトランザクション要求におけるコントラクトパラメータおよびトークンとに基づき、処理待ちトランザクション要求を実行し、実行過程でコントラクト内変数読取要求を生成し、前記インターフェースモジュールに伝送する。ここで、コントラクト内変数は、スマートコントラクトが実行される過程における変数および変数値を含む。インターフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数読取インターフェースを呼び出し、コントラクト内変数の数値を読み取るとともに、読み取った数値を前記仮想マシンインスタンスにフィードバックする。
【0131】
仮想マシンインスタンスは、処理待ちトランザクション要求を実行する過程で、コントラクト内変数記憶要求を生成してインターフェースモジュールに伝送する。インターフェースモジュールは、コントラクト内変数の数値を書き込むために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数記憶インターフェースを呼び出す。なお、
図3における接続線および表示数字は、数字で示されたステップにおけるデータ流れを示している。
【0132】
本発明の実施例において、仮想マシンインスタンスは、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータに対するデータアクセス要求を生成してインターフェースモジュールに伝送する。前記インターフェースモジュールは、前記目的アクセスデータへのアクセス動作を行うために、前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックする。本発明の実施例は、仮想マシンインスタンスとインターフェースとを合わせることで、処理待ちトランザクション要求を共同に完成し、異なるブロックチェーン間のデータアクセス動作を実現し、他のブロックチェーンにおけるイーサリアム仮想マシンの移植問題を解決し、イーサリアムと他のブロックチェーン技術との互換性を向上させる。
【0133】
図4は、本発明の実施例による、イーサリアム仮想マシンに基づくまた1つのトランザクション処理方法のフローチャートである。本実施例は、上述した実施例の基で提出されるオプション案である。具体的には、処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント作成要求である場合に、当該処理待ちトランザクション要求が実行される過程の細分である。
【0134】
図4を参照して、本実施例で提供されるイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のステップを含む。
【0135】
S410において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得する。
【0136】
S420において、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント作成要求であると認識したときに、前記インターフェースモジュールに伝送する。
【0137】
ここで、コントラクトアカウントに基づくコントラクトアカウント作成要求とは、新しいコントラクトアカウントを作成するための要求である。コントラクトアカウント作成要求は、新しく作成されたコントラクトアカウントのアカウントデータおよびコントラクトデータを書き込むことを含む。コントラクトアカウントに基づくコントラクトアカウント作成要求には、新しく作成されたコントラクトアカウントのアカウントデータおよびスマートコントラクトを書き込むことが含まれる。
【0138】
仮想マシンインスタンスは、コントラクトアカウントに基づくコントラクトアカウント作成要求を実行し、目的コントラクトアカウントに対するデータアクセス要求を生成する。コントラクトアカウントにコントラクトデータおよびアカウントデータが含まれるので、具体的には、コントラクトアカウントに対するアカウントデータ書込要求およびコントラクトデータ書込要求が生成される。アカウントデータ書込要求は、コントラクトアカウントのアカウントスペースに対してアカウントデータを書き込むことであり、コントラクトデータ書込要求は、コントラクトアカウントのコントラクトスペースに対してコントラクトデータを書き込むことである。ここで、コントラクトスペースとアカウントスペースとは、スペース的に分立している。
【0139】
S430において、前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0140】
インターフェースモジュールは、当該データアクセス要求の所属の仮想マシン命令および命令パラメータを認識し、予め設定された仮想マシン命令およびインターフェースマッピング関係に基づき、データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定する。
【0141】
S440においては、前記インターフェースモジュールが、前記コントラクトアカウント作成要求に基づいてコントラクトアカウント作成インターフェースを呼び出し、前記アカウントスペースにコントラクトアカウントを作成して前記コントラクトアカウントのアカウントデータを書き込み、コントラクトスペースを作成する。
【0142】
普通の場合、ブロックチェーンにアカウントスペースが存在しているので、インターフェースモジュールは、コントラクトアカウント作成要求を受信した後、コントラクトアカウント作成要求に基づいて目的アカウントスペースを確定することができ、ブロックチェーンのアカウントスペースに対してコントラクトアカウント作成インターフェースを呼び出し、アカウントスペースにコントラクトアカウントを作成してコントラクトアカウントのアカウントデータを書き込む。しかし、コントラクトスペースは、コントラクトデータを格納するためのスペースであり、コントラクトアカウントを作成する際にコントラクトスペースを作成する必要がある。
【0143】
S450において、前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、作成待ちスマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込むために、前記コントラクトバイトコード初期化インターフェースを呼び出す。
【0144】
ここで、コントラクトバイトコード初期化インターフェースは、作成待ちスマートコントラクトをコンパイルしてからコントラクトバイトコードを得るとともに、当該バイトコードをコントラクトスペースに書き込むためのインターフェースである。
【0145】
コントラクトスペースが作成された後、コントラクトスペースのコントラクトデータを初期化する必要があり、インターフェースモジュールは、コントラクトアカウント作成インターフェースを実行する過程で、コントラクトアカウント作成インターフェースを呼び出し、スマートコントラクトをコンパイルし、コントラクトバイトコードを形成してコントラクトスペースに書き込む。
【0146】
S460において、前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、前記コントラクト内変数記憶インターフェースを呼び出し、前記コントラクトスペースに前記スマートコントラクトのコントラクト内変数を作成して記憶する。
【0147】
スマートコントラクトに変数が存在し、スマートコントラクトの実行過程でこれらの変数が動作されるので、スマートコントラクトに係る変数および変数値は、コントラクトスペースに記憶される必要もある。インターフェースは、コントラクトアカウント作成インターフェースを実行する過程で、コントラクト内変数記憶インターフェースを呼び出し、コントラクトスペースにスマートコントラクトのコントラクト内変数を作成して記憶する。
【0148】
本発明の実施例の技術案は、仮想マシンインスタンスとインターフェースモジュールとを合わせることで、コントラクトアカウントに基づくコントラクトアカウント作成の案を提供し、アカウントスペースとコントラクトスペースとを分離させることができ、ユーザが自身のニーズによりコントラクトアカウントを作成するようにでき、ブロックチェーンの業務拡張性を向上させる。
【0149】
図5は、本発明の実施例による、イーサリアム仮想マシンに基づくまた1つのトランザクション処理方法のフローチャートである。本実施例は、上述した実施例の基で提出されるオプション案である。具体的には、処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント削除要求である場合に、当該処理待ちトランザクション要求が実行される過程の細分である。
【0150】
図5を参照して、本実施例で提供されるイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のステップを含む。
【0151】
S510において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得する。
【0152】
S520において、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント削除要求であると認識したときに、前記インターフェースモジュールに伝送する。
【0153】
ここで、コントラクトアカウントに基づくコントラクトアカウント削除要求とは、コントラクトアカウントで既存のコントラクトアカウントを削除するための要求である。コントラクトアカウントに基づくコントラクトアカウント削除要求は、目的コントラクトアカウントのアカウントデータおよびコントラクトデータを削除することを含む。コントラクトアカウントに基づくコントラクトアカウント削除要求には、コントラクトアカウントのアカウント識別子を削除する必要があることが含まれる。
【0154】
仮想マシンインスタンスは、コントラクトアカウントに基づくコントラクトアカウント削除要求を実行し、目的コントラクトアカウントに対するデータアクセス要求を生成する。コントラクトアカウントにコントラクトデータとアカウントデータとが含まれるので、具体的には、コントラクトアカウントに対するアカウントデータ書込要求およびコントラクトデータ書込要求が生成される。アカウントデータ書込要求は、コントラクトアカウントのアカウントスペースに対してアカウントデータを書き込むことであり、コントラクトデータ書込要求は、コントラクトアカウントのコントラクトスペースに対してコントラクトデータを書き込むことである。ここで、コントラクトスペースとアカウントスペースとは、スペース的に分立している。コントラクトアカウントを削除することは、コントラクトアカウントにおけるコントラクトデータおよびアカウントデータを全部空っぽにしてもよいし、コントラクトデータとアカウントデータとのアカウント識別子だけを空っぽにしてもよい。これにより、当該コントラクトアカウントが他のユーザに見出されることができなくなり、さらに、コントラクトアカウントを削除するという目的が達成される。
【0155】
S530において、前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行う。
【0156】
インターフェースモジュールは、当該データアクセス要求の所属の仮想マシン命令および命令パラメータを認識し、仮想マシン命令およびインターフェースマッピング関係に基づき、データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定する。
【0157】
S540において、前記インターフェースモジュールが、前記コントラクトアカウント削除要求に基づいてコントラクトアカウント削除インターフェースを呼び出し、削除待ちコントラクトアカウントのアカウントデータを前記アカウントスペースから削除し、前記削除待ちコントラクトアカウントのコントラクトスペースにおけるコントラクトデータを削除する。
【0158】
コントラクトアカウントが、コントラクトデータとアカウントデータとを含み、コントラクトデータおよびアカウントデータが、コントラクトスペースおよびアカウントスペースにそれぞれ記憶されているので、コントラクトアカウントを削除する際に、インターフェースモジュールは、コントラクトアカウント削除要求に基づいてコントラクトアカウント削除インターフェースを呼び出し、削除待ちコントラクトアカウントのアカウントデータをアカウントスペースから削除し、削除待ちコントラクトアカウントのコントラクトスペースにおけるコントラクトデータを削除する。
【0159】
本発明の実施例は、仮想マシンインスタンスとインターフェースモジュールとを合わせることで、コントラクトアカウントに基づくコントラクトアカウント削除の案を提供し、ユーザが、他のユーザにコントラクトアカウントを使用されたがらないときに、またはコントラクトアカウントを廃棄するときに、当該コントラクトアカウントを削除するようにでき、ブロック記憶資源の浪費を避けた同時に、コントラクトアカウントのプライバシー性能を向上させるという役割を果たすことができる。
【0160】
図6は、本発明の実施例による、イーサリアム仮想マシンに基づくトランザクション処理装置の模式図である。
図6を参照して、本発明の実施例は、イーサリアム仮想マシンに基づくトランザクション処理装置600を開示する。この装置600は、処理待ちトランザクション要求取得モジュール610と、データアクセス要求作成および伝送モジュール620と、命令変換モジュール630と、ブロックチェーンアクセスインターフェース呼出モジュール640とを含む。
【0161】
処理待ちトランザクション要求取得モジュール610は、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得することに用いられ、
データアクセス要求作成および伝送モジュール620は、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、目的アクセスデータへのデータアクセス要求を発生してインターフェースモジュールに伝送することに用いられ、
命令変換モジュール630は、前記インターフェースモジュールが、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定するために、前記データアクセス要求に応じて命令変換を行うことに用いられ、
ブロックチェーンアクセスインターフェース呼出モジュール640は、前記インターフェースモジュールが、前記目的アクセスデータへのアクセス動作を行うために前記ブロックチェーンのデータストレージスペースに対して前記ブロックチェーンアクセスインターフェースを呼び出し、アクセス結果を前記仮想マシンインスタンスにフィードバックすることに用いられ、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記目的アクセスデータは、アカウントデータおよび/またはコントラクトデータを含む。
【0162】
アカウントデータおよびコントラクトデータは、イーサリアムアカウントのように、コントラクトアカウントのデータ構造で記憶され得る。しかし、他のブロックチェーンシステムのアカウントデータ構造と互換するために、前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースとを含むことが好ましい。
【0163】
本発明の実施例の技術案は、他のブロックチェーンシステムにイーサリアム仮想マシンを移植してトランザクション処理を行う際に、インターフェースモジュールを構築し、インターフェースモジュールを介してイーサリアム仮想マシンの命令形式のデータアクセス要求を命令変換し、前記データアクセス要求の機能に対応するブロックチェーンアクセスインターフェースを確定し、異性のデータストレージスペースにアクセスできる。そこで、ブロックチェーンが開放化やコンポーネント化され、イーサリアム仮想マシンを他のブロックチェーンシステムに移植する難しさが低減された。また、本発明の実施例において、ブロックチェーンは、コントラクトデータとアカウントデータとをそれぞれ記憶することにより、異なるタイプのデータ記憶構造と互換でき、他のブロックチェーンによる異なるデータに対する動作を便利にする。本発明の実施例は、インターフェースモジュールを構築することと、ブロックチェーンのコントラクトデータとアカウントデータをそれぞれ記憶することとを融合することにより、他のブロックチェーンシステムにおけるイーサリアム仮想マシンの移植問題を解決し、イーサリアムと他のブロックチェーン技術との互換性を向上させる。
【0164】
オプションとして、前記ブロックチェーンのデータストレージスペースは、少なくとも2種類のアカウントのデータ操作をサポートするためのものである。各前記アカウントのアカウントデータが使用するデータ構造は同じである。
【0165】
オプションとして、前記アカウントデータは、アカウント識別子と、取引シーケンス番号と、アカウント公開鍵と、トークンとを含む。
【0166】
オプションとして、前記アカウントデータは、キーと値のペアという記憶形式を採用する。前記アカウント識別子は、キーとしてキー域に記憶される。前記取引シーケンス番号、アカウント公開鍵、およびトークンは、値域に記憶される。
【0167】
オプションとして、前記コントラクトデータは、アカウント識別子と、コントラクトバイトコードと、コントラクト内変数とを含む。ここで、前記アカウント識別子は、スマートコントラクトのコントラクト呼出識別子である。
【0168】
オプションとして、前記コントラクトデータはキーと値のペアという記憶形式を採用する。前記アカウント識別子は、キーのプレフィックスとして、前記コントラクトバイトコードとコントラクト内変数との各自の識別子と組み合わせられ、キー域に記憶される。前記コントラクトバイトコードおよびコントラクト内変数は、値域に記憶される。
【0169】
オプションとして、前記命令変換モジュールは、前記インターフェースが前記データアクセス要求の所属の仮想マシン命令および命令パラメータを認識することに用いられる命令情報認識サブモジュールと、前記インターフェースが、予め設定された仮想マシン命令およびインターフェースマッピング関係に基づき、前記データアクセス要求に対応するブロックチェーンアクセスインターフェースを確定することに用いられるブロックチェーンアクセスインターフェース確定サブモジュールとを含む。
【0170】
オプションとして、1つまたは複数の仮想マシン命令は、1つのブロックチェーンアクセスインターフェースとインターフェースマッピング関係を有する。
【0171】
オプションとして、前記ブロックチェーンアクセスインターフェースは、他のブロックチェーンアクセスインターフェースを呼び出す機能を有する。
【0172】
オプションとして、前記ブロックチェーンアクセスインターフェースのタイプについて、アカウントデータへのアクセスに用いられるアカウントアクセスインターフェースと、コントラクトデータの更新に用いられる記憶アクセスインターフェースと、コントラクトアカウントの操作に用いられるコントラクト操作インターフェースとが含まれる。
【0173】
オプションとして、前記ブロックチェーンアクセスインターフェースにおけるブロックチェーン読取インターフェースは、コントラクト内変数読取インターフェースと、アカウントトークン残額読取インターフェースと、コントラクトバイトコード読取インターフェースと、アカウントの取引シーケンス番号読取インターフェースと、オンチェーンコントラクト照会インターフェースと、オンチェーンアカウント照会インターフェースと、ブロックの高さによりブロックハッシュを読み取る読取インターフェースと、のうちの少なくとも1つを含む。
【0174】
オプションとして、前記データアクセス要求作成および伝送モジュールは、前記仮想マシンインスタンスが、処理待ちトランザクション要求を取得したときに、前記処理待ちトランザクション要求におけるコントラクト呼出元の識別子および呼出待ちコントラクトの識別子を取得することに用いられる識別子情報取得サブモジュールと、前記仮想マシンインスタンスが、前記コントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づき、呼出元のオンチェーンアカウント照会要求とオンチェーンコントラクト照会要求とをそれぞれ生成して前記インターフェースモジュールに伝送することに用いられる照会要求生成サブモジュールとを含む。
【0175】
これに対応して、前記ブロックチェーンアクセスインターフェース呼出モジュールは、前記インターフェースモジュールが、チェーンにコントラクト呼出元のアカウントが存在するか否かを照会するために、前記ブロックチェーンのアカウントスペースに対して前記オンチェーンアカウント照会インターフェースを呼び出すことに用いられるオンチェーンアカウント照会インターフェース呼び出しサブモジュールと、前記インターフェースモジュールが、チェーンに呼出待ちコントラクトが存在するか否かを照会するために、前記ブロックチェーンのコントラクトスペースに対してオンチェーンコントラクト照会インターフェースを呼び出すことに用いられるオンチェーンコントラクト照会インターフェース呼び出しサブモジュールと、前記インターフェースモジュールが、コントラクト呼出元のアカウントと呼出待ちコントラクトとの照会結果を前記仮想マシンインスタンスにフィードバックすることに用いられる照会結果フィードバックサブモジュールとを含む。
【0176】
オプションとして、前記データアクセス要求作成および伝送モジュールは、具体的に、前記仮想マシンインスタンスが、オンチェーンアカウントおよびオンチェーンコントラクトが存在するというインターフェースによりフィードバックされた照会結果を取得したときに、前記呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を生成してインターフェースモジュールに伝送することに用いられる。
【0177】
これに対応して、ブロックチェーンアクセスインターフェース呼出モジュールは、具体的に、前記インターフェースモジュールが、呼出待ちコントラクトのコントラクトバイトコードを読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクトバイトコード読取インターフェースを呼び出し、読み取ったコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックすることに用いられる。
【0178】
オプションとして、データアクセス要求作成および伝送モジュールは、具体的に、前記仮想マシンインスタンスが、前記インターフェースによりフィードバックされたコントラクトバイトコードと、前記処理待ちトランザクション要求におけるコントラクトパラメータおよびトークンとに基づき、前記処理待ちトランザクション要求を実行し、実行過程でコントラクト内変数読取要求を生成し、前記インターフェースモジュールに伝送することに用いられる。
【0179】
これに対応して、ブロックチェーンアクセスインターフェース呼出モジュールは、具体的に、前記インターフェースモジュールが、コントラクト内変数の数値を読み取るために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数読取インターフェースを呼び出し、読み取った数値を前記仮想マシンインスタンスにフィードバックすることに用いられる。
【0180】
オプションとして、前記ブロックチェーンアクセスインターフェースにおけるブロックチェーン書込インターフェースは、コントラクトアカウント作成インターフェースと、コントラクトバイトコード初期化インターフェースと、コントラクトアカウント削除インターフェースと、コントラクト内変数記憶インターフェースと、アカウント残額増加インターフェースと、アカウント残額減少インターフェースと、のうちの少なくとも1つを含む。
【0181】
オプションとして、データアクセス要求作成および伝送モジュールは、具体的に、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程で、コントラクト内変数記憶要求を生成してインターフェースモジュールに伝送することに用いられる。
【0182】
これに対応して、ブロックチェーンアクセスインターフェース呼出モジュールは、具体的に、前記インターフェースモジュールが、コントラクト内変数の数値を書き込むために、前記ブロックチェーンのコントラクトスペースに対してコントラクト内変数記憶インターフェースを呼び出すことに用いられる。
【0183】
オプションとして、データアクセス要求作成および伝送モジュールは、具体的に、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント作成要求であると認識したときに、前記インターフェースモジュールに伝送することに用いられる。
【0184】
これに対応して、ブロックチェーンアクセスインターフェース呼出モジュールは、前記インターフェースモジュールが、前記コントラクトアカウント作成要求に基づいてコントラクトアカウント作成インターフェースを呼び出し、前記アカウントスペースにコントラクトアカウントを作成して前記コントラクトアカウントのアカウントデータを書き込み、コントラクトスペースを作成することに用いられるコントラクトアカウント作成サブモジュールと、前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、作成待ちスマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込むために、前記コントラクトバイトコード初期化インターフェースを呼び出すことに用いられるコントラクトバイトコード書き込みサブモジュールと、前記インターフェースモジュールが、前記コントラクトアカウント作成インターフェースを実行する過程で、前記コントラクト内変数記憶インターフェースを呼び出し、前記コントラクトスペースに前記スマートコントラクトのコントラクト内変数を作成して記憶することに用いられるコントラクト内変数記憶サブモジュールとを含む。
【0185】
オプションとして、データアクセス要求作成および伝送モジュールは、具体的に、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求がコントラクトアカウントに基づくコントラクトアカウント削除要求であると認識したときに、前記インターフェースモジュールに伝送することに用いられる。
【0186】
これに対応して、ブロックチェーンアクセスインターフェース呼出モジュールは、具体的に、前記インターフェースモジュールが、前記コントラクトアカウント削除要求に基づいてコントラクトアカウント削除インターフェースを呼び出し、削除待ちコントラクトアカウントのアカウントデータを前記アカウントスペースから削除し、前記削除待ちコントラクトアカウントのコントラクトスペースにおけるコントラクトデータを削除することに用いられる。
【0187】
オプションとして、前記装置は、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行した後、ブロックチェーンアクセスインターフェースを呼び出し、前記コントラクトスペースにおけるコントラクト内変数に応じてブロックチェーンのオンチェーンデータを更新することに具体的に用いられるオンチェーンデータ更新モジュールをさらに含む。
【0188】
本発明の実施例で提供されるイーサリアム仮想マシンに基づくトランザクション処理装置は、本発明のいずれかの実施例で提供される、イーサリアム仮想マシンに基づくトランザクション処理方法を実行することができ、イーサリアム仮想マシンに基づくトランザクション処理方法を実行することに対応する機能モジュールおよび有益な効果を備える。
【0189】
本発明の実施例により、本発明は、電子機器と、可読記憶媒体と、コンピュータプログラム製品とをさらに提供する。
【0190】
図7は、本発明の実施例を実施することに用いられることができる例である電子機器700の模式的なブロック図を示している。電子機器は、ラップトップ型コンピュータ、デスクトップ型コンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータのような様々な形式のデジタルコンピュータを表すことを目的とする。電子機器は、携帯端末、携帯電話、スマートフォン、ウェアラブル機器および他の類似する計算装置のような様々な形式の移動装置を表すこともできる。本発明に示されたコンポーネント、それらの接続、関係、およびそれらの機能は例示的なものに過ぎず、本発明に記載または要求される本発明の実現を限定するものではない。
【0191】
図7のように、機器700は、算出ユニット701を含み、読み取り専用メモリ(ROM)702に記憶されたコンピュータプログラム、または記憶ユニットからランダムアクセスメモリ(RAM)703にロードされたコンピュータプログラムに基づき、様々な適切な動作および処理を実行することができる。RAM703には、さらに、機器700の動作に必要な様々なプログラムおよびデータが記憶されることもできる。算出ユニット701と、ROM702と、RAM703とは、バス704を介して相互に接続される。入力/出力(I/O)インターフェース705もバス704に接続される。
【0192】
電子機器700における複数の部品は、I/Oインターフェース705に接続され、それは、キーボードやマウスなどの入力ユニット706、様々な種類のディスプレイやスピーカーなどの出力ユニット707、ディスクや光ディスクなどの記憶ユニット708、およびインターネットカード、モデム、無線通信トランシーバなどの通信ユニット709を含む。通信ユニット709は、機器700がインターネットなどのコンピュータネットワークおよび/または様々な通信ネットワークを介して、他の機器と情報/データを交換することを許す。
【0193】
算出ユニット701は、処理および算出能力を有する様々な汎用および/または専用の処理コンポーネントであってよい。算出ユニット701のいくつかの例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用の人工知能(AI)算出チップ、機械学習モデルアルゴリズムを実行する様々な算出ユニット、デジタル信号プロセッサ(DSP)、および任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。算出ユニット701は、上述した様々な方法および処理、例えば、イーサネット仮想マシンに基づくトランザクション処理方法、を実行する。例えば、いくつかの実施において、イーサリアム仮想マシンに基づくトランザクション処理方法は、コンピュータソフトウェアプログラムのように実現されることができ、記憶ユニット708などの機械可読媒体に有形的に含まれる。いくつかの実施例において、コンピュータプログラムの一部または全部は、ROM702および/または通信ユニット709を介して機器700にロードおよび/またはインストールされ得る。コンピュータプログラムがRAM703にロードされて算出ユニット701により実行されるときに、上述したイーサリアム仮想マシンに基づくトランザクション処理方法の1つまたは複数のステップは実行され得る。予備として、他の実施例において、算出ユニット701は、他の任意の適切な方法により(例えば、ファームウェアにより)、イーサリアム仮想マシンに基づくトランザクション処理方法を実行するように配置され得る。
【0194】
本文で上述したシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラム可能ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定分野向け標準品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現できる。これらの様々な実施形態は以下を含んでもよい。1つまたは複数のコンピュータプログラムに実施され、この1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行するおよび/または解釈することができ、当該プログラマブルプロセッサは、特定用途向けまたは汎用プログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該ストレージシステム、当該少なくとも1つの入力装置、および当該少なくとも1つの出力装置に伝送することができる。
【0195】
本発明の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせを用いて作成することができる。これらのプログラムコードは、プロセッサまたはコントローラにより実行されると、フローチャートおよび/またはブロック図に規定された機能/動作が実行されるように、汎用コンピュータ、専用コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供され得る。プログラムコードは、完全に機械で実行されてもよく、一部に機械で実行されてもよく、独立したソフトウェアパッケージとして、一部に機械で実行されるとともに一部にリモート機械で実行されるか、または完全にリモート機械またはサーバで実行されてもよい。
【0196】
本発明の文脈において、機械可読媒体は、有形の媒体であってよく、命令実行システム、装置または機器により使用されるか、または、命令実行システム、装置または機器と融合して使用される、プログラムを含むかまたは記憶することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であってよい。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線的、または半導体的なシステム、装置または機器、または上述した内容の任意の適切な組み合わせを含んでもよいが、これらに限定されない。機械可読記憶媒体におけるより具体的な例は、1つまたは複数の線に基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD‐ROM)、光学記憶機器、磁気記憶機器、または上述した内容の任意の適切な組み合わせを含む。
【0197】
ユーザとの交換を提供するために、ここで説明するシステムおよび技術をコンピュータで実施することができ、当該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがそれにより入力をコンピュータに提供することができるキーボードおよび指向装置(例えば、マウスまたはトラックボール)とを有する。他の種類の装置は、更にユーザとの交換を提供するためのものであってもよく、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、且つ、任意の形式(音入力、音声入力または、触覚入力を含む)でユーザからの入力を受信することができる。
【0198】
ここで説明するシステムおよび技術を、バックグラウンドコンポーネントを含むコンピューティングシステム(例えば、データサーバ)、または中間コンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンドコンポーネントを含むコンピューティングシステム(例えば、ユーザがそれによりここで説明するシステムおよび技術の実施形態と交換できるグラフィカルユーザインターフェースまたはネットワークブラウザを有するユーザコンピュータ)、またはこのようなバックグラウンドコンポーネント、中間コンポーネント、またはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムに実施することができる。任意の形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)により、システムのコンポーネントを互いに接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ブロックチェーンネットワーク、およびインターネットを含む。
【0199】
コンピュータシステムはクライアントおよびサーバを含んでもよい。クライアントとサーバとは、一般的に互いに離れ、且つ、通常、通信ネットワークを介して交換を行う。対応するコンピュータで実行されて互いにクライアント-サーバ関係を持つコンピュータプログラムにより、クライアントとサーバとの関係を生成する。サーバは、クラウドサーバであってよく、クラウドコンピューティングサーバまたはクラウドホストとも呼ばれ、クラウドコンピューティングサービスシステムにおけるホスト製品であり、従来の物理ホストとVPSサービスにおける「管理が難しい、業務拡張性が弱い」という欠陥を解決する。
【0200】
上記に示す様々な形式のフローを用い、ステップを並べ替え、追加または削除することができることを理解すべきである。例えば、本発明に記載された各ステップは、並列に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本発明に開示された技術案の所望する結果を達成できる限り、本発明はここで限定しない。
【0201】
上記具体的な実施形態は、本発明の保護範囲を限定するものではない。当業者は、設計要求および他の要因に基づき、様々な修正、組み合わせ、サブ組み合わせおよび代替が可能であることを理解すべきである。本発明の精神および原則内で行われる任意の修正、均等置換および改良等は、いずれも本発明の保護範囲内に含まれるべきである。