JP7253603B2 - イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体 - Google Patents

イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体 Download PDF

Info

Publication number
JP7253603B2
JP7253603B2 JP2021186112A JP2021186112A JP7253603B2 JP 7253603 B2 JP7253603 B2 JP 7253603B2 JP 2021186112 A JP2021186112 A JP 2021186112A JP 2021186112 A JP2021186112 A JP 2021186112A JP 7253603 B2 JP7253603 B2 JP 7253603B2
Authority
JP
Japan
Prior art keywords
contract
data
account
interface
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021186112A
Other languages
English (en)
Other versions
JP2022101477A (ja
Inventor
磊 ▲張▼
冰新 樊
旗 ▲鄭▼
▲偉▼ 肖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2022101477A publication Critical patent/JP2022101477A/ja
Application granted granted Critical
Publication of JP7253603B2 publication Critical patent/JP7253603B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • G06Q20/38215Use of certificates or encrypted proofs of transaction rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/321Cryptographic 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 involving a third party or a trusted authority
    • H04L9/3213Cryptographic 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 involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Human Computer Interaction (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンピュータ技術分野に関し、特に、ブロックチェーン技術に関し、具体的には、イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体に関する。
ブロックチェーンは、分散型データ記憶、ポイント・ツー・ポイント伝送、コンセンサスメカニズム、暗号化アルゴリズムといったコンピュータ技術の新規応用モデルである。ブロックチェーンは、オープン性、透明性、および改ざん不可能性などの特性により、金融、トレーサビリティ、および保険などの分野にますます広く使用されている。
ブロックチェーン技術は、最初のビットコインシステムからイーサリアムまで継続的に開発されており、近年、より優れた技術を使用する多くのブロックチェーンシステム、例えば、Polkadot、CosmosなどのPoSコンセンサスメカニズムに基づく新規ブロックチェーン技術も続々と生まれている。ブロックチェーンアプリケーション分野において、技術は継続的にアップグレードし更新しているが、イーサリアム技術に基づく生態環境は、すでにある程度の規模を有しており、ブロックチェーンアプリケーションの多くがイーサリアムのスマートコントラクトに基づいて構築されたものである。アプリケーションの開発者も使用者もある程度でイーサリアムのスマートコントラクトの使用に慣れている。
しかしながら、技術の発展に伴い、イーサリアムには、例えば、非効率的なコンセンサスアルゴリズムなどの問題により、その取引性能が真の大規模な商用化シナリオをサポートするのに十分でないことになるなど、いくつかの欠陥が露呈した。イーサリアムの生態効果に鑑み、イーサリアムをそのまま放棄することよりも、イーサリアムおよび別のブロックチェーン技術と互換性のあるシステムの登場がさらに期待される。イーサリアムスマートコントラクトは、イーサリアム仮想マシン(Ethereum Virtual Machine、EVM)に基づいて実現されることから、イーサリアムと別のブロックチェーン技術との互換性を実現するためには、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決しなければならない。
本発明は、イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体を提供する。
本発明の一態様によれば、ブロックチェーンノードに適用される、イーサリアム仮想マシンに基づくトランザクション処理方法であって、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得することと、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送することと、
前記インタフェースモジュールが、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックすることと、を含み、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含む、
イーサリアム仮想マシンに基づくトランザクション処理方法を提供する。
本発明の別の態様によれば、ブロックチェーンノードに適用される、イーサリアム仮想マシンに基づくトランザクション処理装置であって、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスによって、処理待ちトランザクション要求を取得するための処理待ちトランザクション要求取得モジュールと、
前記仮想マシンインスタンスによって、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送するためのデータアクセス要求発生/転送モジュールと、
前記インタフェースモジュールによって、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックするためのブロックチェーンアクセス用インタフェース呼出モジュールと、を備え、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含む、
イーサリアム仮想マシンに基づくトランザクション処理装置を提供する。
本発明の別の態様によれば、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続される記憶装置と、を備え、
前記記憶装置に、前記少なくとも1つのプロセッサにより実行可能な命令が記憶され、
前記命令は、例えば前記少なくとも1つのプロセッサが本発明の実施例のいずれか1項に記載のイーサリアム仮想マシンのトランザクション処理方法を実現可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器を提供する。
本発明の一態様によれば、例えば本発明の実施例のいずれか1項に記載のイーサリアム仮想マシンのトランザクション処理方法をコンピュータに実行させるためのコンピュータ命令が記憶されている、非瞬時性コンピュータ可読記憶媒体を提供する。
本発明の別の態様によれば、コンピュータプログラムを含み、
前記コンピュータプログラムは、プロセッサより実行されると、例えば本発明の実施例のいずれか1項に記載のイーサリアム仮想マシンのトランザクション処理方法を実現する、コンピュータプログラム製品を提供する。
本発明の技術は、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと別のブロックチェーン技術との互換性を向上させる。
なお、この部分の説明内容は、本発明の実施例の鍵又は重要な構成を明示することを意図するものではなく、本発明の範囲を限定することを意図するものでもないことを理解すべきである。本発明の別の構成については、以下の明細書を通して容易に理解されるであろう。
図面は、本技術案がよりよく理解されるように提供され、本発明を限定するものではない。
本発明の実施例に係る、イーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。 本発明の実施例に係る、別のイーサリアム仮想マシンに基づくトランザクション処理方法の概略図である。 本発明の実施例に係る、さらなるイーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。 本発明の実施例に係る、イーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。 本発明の実施例に係る、イーサリアム仮想マシンに基づくトランザクション処理装置の模式図である。 本発明の実施例に係る、イーサリアム仮想マシンに基づくトランザクション処理方法を実現するための電子機器のブロック図である。
以下、図面を参照しながら、本発明の例示的な実施例について説明する。この内容には、理解を助けるための本発明の実施例の様々な詳細が含まれているが、単なる例示的なものと見なされるべきである。したがって、当業者なら、本発明の範囲および精神から逸脱することなく、本明細書に記載の実施例に対して様々な変更および修正を実行することができることを認識すべきである。同様に、はっきりとよくわかるように、以下の説明では公知の機能と構造についての説明を省略した。
ブロックチェーンは、分散型データ記憶、ポイント・ツー・ポイント転送、コンセンサスメカニズム、暗号化アルゴリズムなどのコンピュータ技術の新規応用モデルである。最初に登場したブロックチェーン(Blockchain)は、ビットコインの重要な概念として、本質的には分散化されたデータライブラリであり、また、ビットコインの基盤技術として、暗号化形態を使用して関連付けて生成される一連のデータブロックとなって、それぞれのデータブロックに1ロットのビットコインネットワーク上の取引情報が含まれ、その情報の有効性を検証し次のブロックを生成することに用いられる。ブロックチェーンは、オープン性、透明性、および改ざん不可能性などの特性により、金融、トレーサビリティ、および保険などの分野にますます広く使用され、特に、金融分野において、各金融機関間の効率的な協力を実現できる。
ブロックチェーン技術は、ビットコインを代表とするデジタル通貨時代に最初に登場した。ブロックチェーン技術の継続的な発展に伴い、デジタル通貨とスマートコントラクトとを組み合わせるイーサリアムが登場し、ブロックチェーンは従来の「グローバル帳簿」から「グローバルコンピュータ」にアップグレードし、市場全体を分散化させた。イーサリアムは、デジタル通貨とスマートコントラクトとを組み合わせ、金融分野のよりも幅広いシナリオおよびプロセスを最適化したアプリケーションであり、アップグレードされた一番大きなところはスマートコントラクトである。イーサリアムは、アプリケーションプラットフォームに位置付け、このプラットフォームにおいて、スマートコントラクトをアップロードし実行でき、このコントラクトの実行が有効的に保証できる。
真の大規模な商用化シナリオは、いつも効率的なコンセンサスアルゴリズムのサポートが必要であるが、ビットコインおよびイーサリアムなどの早期ブロックチェーン技術のコンセンサスによるその取引性能は、真の大規模な商用化シナリオをサポートするのに十分でない。しかしながら、ブロックチェーンのアプリケーション分野において、イーサリアムの生態系は、最高の地位を独占しており、多くのブロックチェーンアプリケーションはいずれもイーサリアム生態系に依存して存在し、ゲーム分野のクリプトキティ(CryptoKitties)と、金融分野のDeFiプロジェクトDAIとのいずれもイーサリアムのスマートコントラクトに基づいて構築される。
特にイーサリアムのスマートコントラクトの実行に用いられる仮想マシンは、イーサリアム仮想マシン(EVM、Ethereum Virtual Machine)とも呼ばれ、イーサリアムのスマートコントラクトは、solidity、viperなどの言語によりコンパイル可能である。イーサリアムのスマートコントラクトおよびEVMは、ブロックチェーン分野に極めて広く適応され、ブロックチェーンのスマートコントラクト分野のデファクト標準の1つとなった。
イーサリアムに基づくオリジナルコードが変更され、イーサリアムEVMを別のブロックチェーンシステムに使用する場合、イーサリアムEVMと、ブロックチェーンのデータ記憶形態およびアクセス形態との間に固有のバインディングが存在するはずであり、これにより、移植方案は汎用性がなくなり、移植後のEVMとチェーン自体とのバインディングが多くて、別のチェーンのイーサリアム仮想マシンへの移植に用いることが難しい。
本発明は、イーサリアム仮想マシンに基づくトランザクション処理方法を提供し、モジュール化デザインのアイデアを組込み、イーサリアム仮想マシンをモジュールとしてモジュール化したブロックチェーンシステムに移植し、例えば、XuperChain、Cosmosなど、モジュール化デザインのアイデアを導入したブロックチェーンは、ブロックデータおよび実行ロジックを分割する。本発明の実施例に係る方法は、イーサリアム自体の技術生態系および応用生態系を十分に利用できるだけではなく、様々なイーサリアム生態系の自律分散型アプリケーション(Decentralized Applications、DAPP)がアプリケーション移植を実行することを極めて便利にし、別のブロックチェーンシステムの技術の強みを深掘りして発揮できる。
図1は、本発明の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。本実施例は、イーサリアム仮想マシンを別のブロックチェーンシステムに移植してトランザクション処理を行う状況に適用可能であり、これにより、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと非イーサリアムの別のブロックチェーン技術との互換性を向上させる。本実施例で開示されるイーサリアム仮想マシンに基づくトランザクション処理方法は、イーサリアム仮想マシンに基づくトランザクション処理装置により実行可能であり、当該装置は、ソフトウェア及び/又はハードウェアの形態により実現可能であり、コンピューティングおよび記憶機能が具備される電子機器に配置可能であり、当該電子機器はブロックチェーンノードである。ブロックチェーンネットワークは、複数のブロックチェーンノードから構成され、且つ、分散的に稼働するネットワークである。本発明の実施例に係る方法はいずれか1つのブロックチェーンノードにより実行可能である。
図1を参照すると、本実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のS110、S120、およびS130を含む。
S110において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得する。
ここで、ブロックチェーンノードに仮想マシンプログラムが配置され、稼働ニーズがある場合、1つ又は複数の仮想マシンインスタンスを生成し、イーサリアム仮想マシンに基づく命令集合に用いて、スマートコントラクトのコンピューティングロジックを実行できる。
処理待ちトランザクション要求は、ブロックオンチェーンデータに対して動作を行うために、別のブロックチェーンノードから送信されたトランザクション要求、又は、ユーザがローカルノードで提出したトランザクション要求である。本発明の実施例において、トランザクション要求は、ブロックチェーンシステムでサポート可能な任意のトランザクション要求であってもよく、業務トランザクション要求であってもよく、管理トランザクション要求などであってもよい。処理待ちトランザクション要求は、ブロックオンチェーンデータに対するデータ読取要求又はデータ書込要求などであってもよい。
ブロックノードは、処理待ちトランザクション要求を取得した後に、仮想マシンインスタンスを稼働することで、当該処理待ちトランザクション要求を実行する。
S120において、前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送する。前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含む。
本発明の実施例において、仮想マシンを移植する目標ブロックチェーンシステム自体がブロックチェーンデータを読み取る仮想マシン命令をサポートしない場合があることから、仮想マシンインスタンスの命令で表されるデータアクセス要求を解析し変換するためには、ブロックチェーンデータをアクセスできるインタフェースが形成されるように、インタフェースモジュールが設置されている。
もちろん、ブロックチェーンシステムで仮想マシン命令集合をサポート可能であれば、インタフェースモジュールは、仮想マシン命令を直接に実行することで、データアクセス動作を実現できることは、当業者であれば理解されるだろう。
仮想マシンインスタンスは、一般的に、処理待ちトランザクション要求を取得した後および実行を始動する過程において、ブロックチェーンデータに対する読取/書込アクセス要求を発生し得る。ブロックチェーンシステムには、データの記憶に用いられるデータストレージスペースが設置されている。データは、オンチェーンデータと、ローカルデータとに区分され、オンチェーンデータとは、ブロックに追加して各々のノードに記憶させるデータを指す。ローカルデータは、それぞれのノードにおいて、オンチェーンのコンテンツやローカルのインデックスのニーズに応じて、ノードのローカルに記憶させるデータであり、それぞれのノードに記憶されるローカルデータが異なる場合がある。目的アクセスデータとは、処理待ちトランザクション要求に関するデータを指し、オンチェーンデータである場合もあり、ローカルデータである場合もある。データアクセス要求は、目的アクセスデータへのアクセスの要求に用いられる。
データアクセス要求には、データ読取要求及び/又はデータ書込要求が含まれる。データ読取要求とは、ブロックチェーンのデータストレージスペースから目的アクセスデータを読み取ることを指し、データ書込要求とは、目的アクセスデータをブロックチェーンのデータストレージスペースに書き込むことを指す。
イーサリアム仮想マシンインスタンスに設定された命令集合があり、処理待ちトランザクション要求を実行する過程において、データ読取/書込命令を発生させることで、データアクセス要求を表す。
S130において、前記インタフェースモジュールが、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行う。
ここで、インタフェースモジュールは、データアクセス要求に対して命令の解析および変換を行い、データストレージスペースにおけるデータに対する様々な読取/書込機能を実現するために、複数のブロックチェーンアクセス用インタフェースが設置される。実は、インタフェースは、1セグメントのプログラムであり、1回又は複数回のデータの読取/書込、コンピューティング等の処理を実行可能であり、所定のプログラムに従って別のインタフェースを呼び出すこともできる。
仮想マシンインスタンスで発生されるデータアクセス要求は、イーサリアム仮想マシン命令形態であるため、そのままでは、イーサリアムをサポートしないデータ記憶システムによって識別できず、インタフェースモジュールを介してデータアクセス命令の命令変換を行わなければならない。
データアクセス要求に応じて、オンチェーンデータの動作に相違があり、この相違は、データアクセス要求に対応する機能上の相違にて現れ、従って、様々なデータアクセス要求に対応するブロックチェーンアクセス用インタフェースにも相違がある。具体的に、データアクセス要求において、データ読取要求とデータ書込要求とに対応するブロックチェーンアクセス用インタフェースがそれぞれ異なる。
代替的に、前記インタフェースモジュールは、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行う。具体的には、先ず、インタフェースモジュールは、データアクセス要求に応じて命令変換を行い、前記データアクセス要求機能に対応するブロックチェーンアクセス用インタフェースを確定する。次に、インタフェースモジュールは、ブロックチェーンのデータストレージスペースに対して、ブロックチェーンアクセス用インタフェースを呼び出し、目的アクセスデータに対してアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックする。
ここで、先ず、インタフェースモジュールは、データアクセス要求に応じて命令変換を行い、前記データアクセス要求機能に対応するブロックチェーンアクセス用インタフェースを確定することは、以下のステップを含む。
ステップ1において、インタフェースモジュールは、前記データアクセス要求の所属仮想マシンの命令および命令パラメータを識別する。
ここで、仮想マシンの命令および命令パラメータとは、仮想マシンインスタンスが処理待ちトランザクション要求を実行する時に生成されるものを指す。命令パラメータは、即ち、仮想マシン命令に含まれるパラメータ変数である。仮想マシン命令を実行することで、目的アクセスデータへのアクセス動作を実現できる。目的アクセスデータは、アカウントデータと、コントラクトデータとを含む。従って、データアクセス要求は、即ち、アカウントデータとコントラクトデータに対する読取要求及び/又は書込要求である。
イーサリアムスマートコントラクトは、ゲス(Go-Ethereum、Geth)によって開発されるものであることから、Gethは、イーサリアムのgo言語バージョンのクライアントとして、イーサリアムスマートコントラクトの開発に必須のツールである。イーサリアムにおいては、アカウントの管理に、Gethから提供されるアカウント命令の動作命令がよく使用されている。例示的に、データアクセス要求に対応する仮想マシンの命令および命令パラメータは、アカウントリスト命令のgeth account listであってもよく、アカウントアップデート命令のgeth account update又はアカウント作成命令personal.newAccount(「Your Password」)であってもよい。データアクセス要求の所属仮想マシンの命令および命令パラメータの具体的コンテンツについては、実際の状況に応じて確定され、本明細書において限定されるものではない。
ステップ2において、前記インタフェースモジュールは、プリセットされた仮想マシン命令およびインタフェースマッピング関係に基づいて、前記データアクセス要求に対応するブロックチェーンアクセス用インタフェースを確定する。
ここで、インタフェースマッピング関係とは、仮想マシン命令とブロックチェーンアクセス用インタフェースとの対応関係を指す。インタフェースマッピング関係は、ユーザが実際の状況に応じてインタフェースモジュールにプリセットされたものである。
データアクセス要求と仮想マシン命令とは直接関連していることから、インタフェースマッピング関係が既知であれば、仮想マシン命令およびインタフェースマッピング関係に基づいてデータアクセス要求に対応するブロックチェーンアクセス用インタフェースを確定し得る。
冗長なマッピング関係が存在することを回避するために、代替的な実施例において、1つ又は複数の仮想マシン命令と1つのブロックチェーンアクセス用インタフェースとがインタフェースマッピング関係を有する。
即ち、1つのブロックチェーンアクセス用インタフェースは、少なくとも1つの仮想マシン命令に対応する。異なる仮想マシン命令に同一のブロックチェーンアクセス用インタフェースが対応してもよい。仮想マシン命令と1つのブロックチェーンアクセス用インタフェースとのインタフェースマッピング関係は、本質的に、仮想マシン命令に対応する目的アクセスデータとブロックチェーンアクセス用インタフェースに対応するデータストレージスペースにおけるデータとの対応関係である。インタフェースモジュールは、マッピング関係に基づいてデータアクセス要求に対して命令変換を行い、前記データアクセス要求機能に対応するブロックチェーンアクセス用インタフェースを確定することで、ブロックチェーンをオープン化/モジュール化させ、異なるブロックチェーン間のデータ操作の難易度を低減できる。
データアクセス要求に対応するブロックチェーンアクセス用インタフェースを確定した場合、インタフェースモジュールは、ブロックチェーンのデータストレージスペースに対して、ブロックチェーンアクセス用インタフェースを呼び出し、目的アクセスデータに対してアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックする。
ここで、目的アクセスデータは、ブロックチェーンのデータストレージスペース内に存在する。代替的に、データストレージスペースでは、様々なデータ構造をサポート可能であり、データ構造は、ブロックチェーンシステム自体の設置によって決定される。例えば、ブロックチェーンシステムには、一般的に、アカウント、ログ又はトランザクションデータ、スマートコントラクトなどが設置される必要があり、さらに、権限データなどが設置されてもよい。目的アクセスデータは、アクセスためのいずれか1種のデータ構造であってもよい。
代替的に、前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを記憶させるためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを記憶させるためのコントラクトスペースと、を含み、前記目的アクセスデータは、アカウントデータ及び/又はコントラクトデータを含む。
イーサリアムにおいて、典型的には、外部アカウントと、コントラクトアカウントとが設置される。外部アカウントとは、鍵によって制御されるアカウントを指す。コントラクトアカウントとは、コントラクトコードによって制御されるアカウントを指す。2タイプのアカウントとも、1つのアカウントとしての基本的なオンチェーンデータが備えられる。コントラクトアカウントにおけるコントラクトデータとは、スマートコントラクトに関連するデータを指す。外部アカウントには、コントラクトデータが存在しない。イーサリアムにおいて、外部アカウントとコントラクトアカウントとは、両方とも、アカウントタイプのデータ構造で記憶を行う。但し、スマートコントラクトコードが含まれるコントラクトアカウントに対して、移植先のブロックチェーンシステムでサポートしない場合は、異なる2タイプのデータを分離記憶させるために、アカウントスペースとコントラクトスペースを区分して設置することが好ましい。
インタフェースモジュールは、ブロックチェーンアクセス用インタフェースを呼び出すことで、ブロックチェーンアカウントスペースとコントラクトスペースとのデータへのアクセス動作を実現可能であり、即ち、アカウントデータとコントラクトデータに対する読み取り動作及び/又は書き込み動作が実現でき、データに対応するアクセス結果が得られる。インタフェースモジュールは、アクセス結果を仮想マシンインスタンスにフィードバックする。アクセス結果は、具体的に、読み取られたデータであってもよく、アクセス成否に関するアクセスのステータスをフィードバックしてもよい。
もちろん、イーサリアム仮想マシンが異なるブロックチェーンシステムへ移植された場合、様々な異なるブロックチェーンシステムにはそれぞれ異なるデータ記憶構造およびデータ記憶形態が使用されており、それらを組み合わせて、イーサリアム仮想マシンの記憶形態に基づいてブロックチェーンシステムの記憶形態に対して調整し互換を実現できることは、当業者であれば理解されるだろう。
本発明の実施例に係る技術案によれば、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植し、トランザクション処理を行う場合、インタフェースモジュールに介してブロックチェーンアクセス用インタフェースを呼び出し、異機種データストレージスペースへのアクセスを実現する。ブロックチェーンをオープン化/モジュール化させ、従って、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する難易度を低減させる。また、本発明の実施例において、ブロックチェーンは、コントラクトデータとアカウントデータをそれぞれ記憶させることで、様々なタイプのデータ記憶構造を互換可能となり、別のブロックチェーンで様々なデータに対して動作を行うことを容易にする。本発明の実施例は、インタフェースモジュールを構築することと、ブロックチェーンアカウントデータとコントラクトデータをそれぞれ記憶させることと、を組み合わせることで、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと別のブロックチェーン技術との互換性を向上させる。
本実施例は、上記実施例を基礎として提供される代替的な技術案である。具体的には、ブロックチェーンのデータストレージスペース内におけるアカウントデータおよびコントラクトデータに対する記憶方法を細分化したものである。
分かるように、イーサリアムにおいて、典型的には、外部アカウントと、コントラクトアカウントとが設置される。外部アカウントとは、鍵によって制御されるアカウントを指す。コントラクトアカウントとは、コントラクトコードによって制御されるアカウントを指す。2タイプのアカウントとも、1つのアカウントとしての基本的なオンチェーンデータが備えられる。コントラクトアカウントにおけるコントラクトデータとは、スマートコントラクトに関連するデータを指す。外部アカウントにはコントラクトデータが含まれていない。コントラクトアカウントと外部アカウントは、両方とも、ブロックチェーンのデータストレージスペースに記憶される。ここで、前記ブロックチェーンのデータストレージスペースは、少なくとも2タイプのアカウントでのデータ操作にサポートし、各前記アカウントのアカウントデータに利用されるデータ構造は同じである。
仮想マシンインスタンスがトランザクションデータおよび処理待ちトランザクション要求を実行する過程において、ブロックチェーンのデータストレージスペースにおけるデータに対するデータ読取要求及び/又はデータ書込要求を発生する。具体的に、ブロックチェーンのデータストレージスペースにおける外部アカウントと、コントラクトアカウントとのデータに対して、データアクセス動作を行う。データストレージスペースにおける外部アカウントおよびコントラクトアカウントに利用されるデータ構造は同じである。代替的に、外部アカウントと、コントラクトアカウントとは、両方とも、アカウントタイプのデータ構造で記憶を行う。
ここで、前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータと、コントラクトアカウントにおけるアカウントデータとを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含み、前記目的アクセスデータは、アカウントデータ及び/又はコントラクトデータを含む。
イーサリアム仮想マシンを別のブロックチェーンシステムに移植する場合、もし移植先のブロックチェーンシステムにおいてスマートコントラクトコードが含まれるコントラクトアカウントをサポートしない場合、異なる2タイプのデータを分離記憶させるためには、データストレージスペースにおいてアカウントスペースと、コントラクトスペースを区分して設置することが好ましい。
イーサリアムにおいて、外部アカウントと、コントラクトアカウントとは、いずれにもアカウントデータが存在しており、外部アカウントと、コントラクトアカウントとの相違点としては、コントラクトアカウントに、アカウントデータに加えて、コントラクトデータが存在することである。アカウントデータと、コントラクトデータとを分離記憶させるためには、外部アカウントおよびコントラクトアカウントにおけるアカウントデータをアカウントスペースに記憶させ、コントラクトアカウントにおけるコントラクトデータをコントラクト内に別途に記憶させる。
仮想マシンインスタンスは、処理待ちトランザクション要求を実行する過程において、コントラクト内変数へのデータアクセス要求を発生し、当該コントラクト内変数へのデータアクセス要求が、即ち、アカウントスペースにおけるコントラクトスペースにおけるコントラクト内変数へのデータアクセス要求である。
代替的な実施例において、前記アカウントデータには、アカウント識別子と、取引のシーケンス番号と、アカウント公開鍵と、トークンとが含まれる。
例示的に、ブロックチェーンのデータストレージスペースにおいて、以下のデータ構造でコントラクトアカウントおよび外部アカウントにおけるアカウントデータを記憶させてもよい。
type AccountData struct {
Address string
Sequence uint
Pubkey string
Balance uint }
ここで、Addressは、アカウント識別子を表し、Sequenceは取引のシーケンス番号を表し、Pubkeyはアカウント公開鍵を表し、Balanceはトークンを表す。ここで、前記アカウント識別子はアカウントデータのデータ呼出識別子であり、アカウント識別子はアカウントアドレス又はアカウント名称であってもよく、異なるアカウントデータは異なるアカウント識別子を有する。取引のシーケンス番号は、取引済み回数のデータを記録することに用いられる。アカウント公開鍵とは、暗号化アカウントに用いられる公開鍵を指す。トークンとはデジタル形態で存在する権利証を指し、トークンが代表するものは、固有および内在する価値であり、デジタル化可能なあらゆる権利証を代表することができる。例示的に、トークンは、通貨、債券、勘定科目、所有権又は資格などの権利証であってもよい。
アカウントデータに対する管理効率を向上させるとともに、アカウントデータ操作の利便性を向上させるために、代替的な実施例において、前記アカウントデータは、キー値ペアの記憶方式を採用し、前記アカウント識別子がキー値としてキー域に記憶され、前記取引のシーケンス番号と、アカウント公開鍵と、トークンとが値域に記憶される。
アカウント識別子は、鍵情報として、取引のシーケンス番号と、アカウント公開鍵と、トークンとの3タイプの値情報に対応する。キー値とするアカウント識別子は、アカウントデータに対して動作を行う場合、アカウントデータに対するインデックスに用いられ、データアクセス命令に目標アカウントデータのアカウント識別子を追加することで、当該アカウント識別子に基づいて目標アカウントデータの取引のシーケンス番号と、アカウント公開鍵と、トークン情報とを取得できる。
代替的な実施例において、前記コントラクトデータに、アカウント識別子と、コントラクトバイトコードと、コントラクト内変数とが含まれ、当該コントラクトバイトコードは、スマートコントラクトをコンパイルして得られたものとして、実行プログラムと、1シーケンスのオペレーション(Operation、op)コード/データペアから構成されるバイナリファイル(Binary File)と、を含む、中間コードの1種である。コントラクト内変数とは、スマートコントラクトに含まれる変数と、スマートコントラクトの実行過程で転送される当該変数のデータと、及び、スマートコントラクトの実行過程で発生される中間変数と、を指す。
ここで、コントラクトアカウントのアカウント識別子はスマートコントラクトのコントラクト呼出識別子である。異なるスマートコントラクトは異なるアカウント識別子を有する。スマートコントラクトを呼び出す時には、データアクセス要求にコントラクト呼出識別子を追加することで、当該コントラクト呼出識別子に基づいて呼び出そうとするスマートコントラクトを確定できる。
コントラクトデータに対して動作を行うシナリオにおいて、コントラクトデータの位置付けの速度および正確性を向上させるために、代替的な実施例において、前記コントラクトデータは、キー値ペアの記憶方式を採用し、前記アカウント識別子をキー値におけるプレフィックスとして、前記コントラクトバイトコードおよびコントラクト内変数のそれぞれの識別子と組み合わせてキー域に記憶され、前記コントラクトバイトコードと、コントラクト内変数とが値域に記憶される。
キーにはアカウント識別子と、コントラクトバイトコードおよびコントラクト内変数のそれぞれの識別子と、が含まれており、アカウント識別子がキー値におけるプレフィックスとして異なるコントラクトデータを区分可能であり、具体的なコントラクトデータが位置付けられると、キー内のコントラクトバイトコードと、コントラクト内変数との識別子に基づいて、動作しようとするコントラクトデータをより一層正確に確定できる。
アカウント識別子は、鍵情報として、コントラクトバイトコードと、コントラクト内変数との2タイプの値情報に対応する。キー値とするアカウント識別子は、コントラクトデータに対して動作を行う場合、コントラクトデータに対してインデックスを行うことに用いられ、データアクセス命令に目標コントラクトデータのアカウント識別子を追加することで、当該アカウント識別子に基づいて、目標コントラクトデータのコントラクトバイトコードと、コントラクト内変数とを取得できる。
同一コントラクトアカウントに属するアカウントデータと、コントラクトデータとのアカウント識別子は、一致するものであり、アカウントデータと、コントラクトデータとは、一対一に対応する。コントラクトアカウントにおけるアカウントデータと、コントラクトデータとに対して動作を行う場合、両方とも、キーによってインデックスを行う。アカウントデータのキーには、アカウント識別子のみ含まれるが、コントラクトデータのキーは、アカウント識別子をプレフィックスとし、それと、コントラクトバイトコードおよびコントラクト内変数のそれぞれの識別子と、によって共に構成されるものである。したがって、アカウントデータのキー値と、コントラクトデータの識別子とを区分できる。
本願の実施例は、データストレージスペースを、アカウントスペースと、コントラクトスペースとに区分し、外部アカウントおよびコントラクトアカウントにおけるアカウントデータをアカウントスペースに記憶させ、コントラクトアカウントにおけるコントラクトデータをコントラクトスペースに記憶させることで、アカウントデータと、コントラクトデータとを分離して記憶させることを実現し、異なるブロックチェーンシステムに記憶されるデータ構造の互換性を向上させる。コントラクトアカウントにおけるアカウントデータと、外部アカウントにおけるアカウントデータとが同じデータ構造を有することは、ブロックチェーン間のデータ操作の難易度を低減させるとともに、ブロックチェーンへの移植の難易度を低減させる。
本実施例は、上述した実施例を基礎として提供された代替的な方案である。具体的には、上述した実施例に係るブロックチェーンアクセス用インタフェースの種類と機能を紹介する。
前記ブロックチェーンアクセス用インタフェースのタイプには、
アカウントデータへのアクセスに用いられるアカウントアクセス用インタフェースと、
コントラクトアカウントの操作に用いられるコントラクト操作用インタフェースと、
コントラクトデータの更新に用いられる記憶アクセス用インタフェースと、が含まれる。
前記ブロックチェーンアクセス用インタフェースのうちのブロックチェーン読取インタフェースは、
コントラクトデータにおけるコントラクト内変数を読み取るためのコントラクト内変数読取インタフェースと、
アカウントデータにおけるアカウントトークン残額を読み取るためのアカウントトークン残額読取インタフェースと、
コントラクトアカウントにおけるコントラクトバイトコードを読み取るためのコントラクトバイトコード読取インタフェースと、
アカウントデータにおける取引のシーケンス番号を読み取るためのアカウントの取引シーケンス番号読取インタフェースと、
オンチェーン上に記憶されるスマートコントラクトを照会するためのオンチェーンコントラクト照会インタフェースと、
オンチェーン上に記憶されるアカウント情報を照会するためのオンチェーンアカウント照会インタフェースと、
ブロック高によってブロックハッシュ(Hash)を読み取るためのブロック高によるブロックハッシュ読取インタフェースと、のうちの少なくとも1つを含む。
ブロックチェーンは、1つの垂直なスタック(stack)によく見なされ、第1のブロックをスタック底部の初めのブロックとし、次の一つ一つのブロックは、前のブロックの上に放置される。ブロック高は、ブロックと初めのブロックとの距離を表す。ブロック高をブロック識別子として、具体なブロックを確定し得る。ブロックハッシュは、ブロックのマスタ識別子として、SHA256アルゴリズムによってブロックヘッドに対して二次ハッシュコンピューティングを行うことで得られた32バイトのハッシュ値であり、ブロックハッシュ値とも呼ばれ、ブロックのデジタル指紋である。
代替的な実施例において、前記ブロックチェーンアクセス用インタフェースのうちのブロックチェーン書込インタフェースは、
コントラクトスペースにコントラクトアカウントを作成するためのコントラクトアカウント作成インタフェースと、
コントラクトスペースにおけるバイトコードを初期化するためのコントラクトバイトコード初期化インタフェースと、
コントラクトスペースにおけるコントラクトアカウントを削除するためのコントラクトアカウント削除インタフェースと、
コントラクト内変数を格納するためのコントラクト内変数記憶インタフェースと、
アカウント残額を追加するためのアカウント残額追加インタフェースと、
アカウント残額を減少するためのアカウント残額減少インタフェースと、のうちの少なくとも1つを含む。
上記インタフェースにおいて、アカウントアクセス用インタフェースには、
読取インタフェース、即ちアカウントトークン残額読取インタフェース、アカウントの取引のシーケンス番号読取インタフェース、およびオンチェーンアカウント照会インタフェースと、
書込インタフェース、即ちアカウント残額追加インタフェースと、
アカウント残額減少インタフェースと、が含まれ、
コントラクト動作インタフェースには、
読取インタフェース、即ちコントラクトバイトコード読取インタフェース、オンチェーンコントラクト照会インタフェースおよびブロック高によってブロックハッシュを読み取る読取インタフェースと、
書込インタフェース、即ちコントラクトアカウント作成インタフェースと、
コントラクトバイトコード初期化インタフェースと、
コントラクトアカウント削除インタフェースと、が含まれ、
記憶アクセス用インタフェースには、
読取インタフェース、即ちコントラクト内変数読取インタフェースと、
書込インタフェース、即ちコントラクト内変数記憶インタフェースと、が含まれる。
本発明の実施例において、目的アクセスデータブロックチェーンが記憶されているブロックチェーンに様々なタイプの数多くのブロックチェーンアクセス用インタフェースを設置することで、稼働中の仮想マシンインスタンスのブロックチェーンノードがトランザクション要求を処理するために便宜を与え、トランザクション要求の処理にサポートする仮想マシンインスタンスのブロックチェーンノードのカバー範囲を拡大した。
ここで、1つの処理待ちトランザクション要求を処理する過程において、各部分から複数のデータアクセス要求が発生する可能性がある。
例えば、処理待ちトランザクション要求を処理することから発生されるデータアクセス要求は、コントラクトアカウント作成要求と、コントラクトバイトコード初期化要求と、コントラクトアカウント削除要求と、コントラクト内変数記憶要求と、アカウント残額追加要求と、アカウント残額減少要求と、コントラクト内変数読取要求と、アカウントトークン残額読取要求と、コントラクトバイトコード読取要求と、アカウント的取引のシーケンス番号読取要求と、オンチェーンコントラクト照会要求と、オンチェーンアカウント照会要求と、及びブロック高によってブロックハッシュを読み取る読取要求等、のうちの少なくとも1つを含む。
以下、例を挙げながら、1回の一般業務トランザクション要求の処理過程で発生するデータアクセス要求を紹介する。
第1に、データアクセス要求がオンチェーンコントラクト照会要求およびオンチェーンアカウント照会要求である場合、
前記仮想マシンインスタンスは、処理待ちトランザクション要求を取得した後、前記処理待ちトランザクション要求からコントラクトの呼出元の識別子および呼出待ちコントラクトの識別子を取得する。
ここで、コントラクトの呼出元の識別子は、スマートコントラクト呼出元の身分情報を標識することに用いられ、コントラクトの呼出元の識別子はアカウント識別子であってもよい。呼出待ちコントラクトの識別子は、被呼出スマートコントラクトの情報を標識することに用いられる。代替的に、呼出待ちコントラクトの識別子は、コントラクトアドレス又はアカウント識別子であってもよい。
前記仮想マシンインスタンスは、前記コントラクトの呼出元の識別子および呼出待ちコントラクトの識別子に基づいて、呼出元のオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をそれぞれ発生させ、前記インタフェースモジュールに転送する。
処理待ちトランザクション要求の有効性を確定するために、仮想マシンインスタンスは、コントラクトの呼出元の識別子および呼出待ちコントラクトの識別子により標識されたアカウントおよびコントラクトの存否について照会する。したがって、仮想マシンインスタンスは、前記コントラクトの呼出元の識別子および呼出待ちコントラクトの識別子に基づいて、呼出元のオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をそれぞれ発生させ、仮想マシンインスタンスで生成されたオンチェーンアカウント照会要求およびオンチェーンコントラクト照会要求をインタフェースモジュールに転送する。ここで、オンチェーンアカウント照会要求は、コントラクトの呼出元の識別子により標識されるアカウントの存否について照会することに用いられる。したがって、オンチェーンコントラクト照会要求は、呼出待ちコントラクトの識別子により標識されるコントラクトの存否について照会することに用いられる。
前記インタフェースモジュールは、前記データアクセス要求に応じて命令変換を行い、オンチェーンアカウント照会要求に対応するオンチェーンアカウント照会インタフェースと、オンチェーンコントラクト照会要求に対応するオンチェーンコントラクト照会インタフェースと、を確定する。
前記インタフェースモジュールは、オンチェーンにコントラクト呼出元アカウントの存否について照会するために、前記ブロックチェーンのアカウントスペースに対して、前記オンチェーンアカウント照会インタフェースを呼び出す。
前記インタフェースモジュールは、オンチェーンアカウント照会要求を受信した場合、オンチェーンアカウント照会要求内のコントラクトの呼出元の識別子に基づいて、コントラクトの呼出元の識別子に対応するアカウントスペースを確定し、オンチェーンにコントラクト呼出元アカウントの存否について照会するために、前記ブロックチェーンのアカウントスペースに対して、前記オンチェーンアカウント照会インタフェースを呼び出す。
前記インタフェースモジュールは、オンチェーンに呼出待ちコントラクトの存否について照会するために、前記ブロックチェーンのコントラクトスペースに対して、オンチェーンコントラクト照会インタフェースを呼び出す。
前記インタフェースモジュールは、オンチェーンコントラクト照会要求を受信した場合、オンチェーンコントラクト照会要求内の呼出待ちコントラクトの識別子に基づいて、呼出待ちコントラクトの識別子に対応するコントラクトスペースを確定し、オンチェーンに呼出待ちコントラクトの存否について照会するために、前記ブロックチェーンのコントラクトスペースに対して、前記オンチェーンコントラクト照会インタフェースを呼び出す。
前記インタフェースモジュールは、コントラクト呼出元アカウントおよび呼出待ちコントラクトに対する照会結果を前記仮想マシンインスタンスにフィードバックする。
ここで、照会結果には、コントラクト呼出元のアカウントの存否状況、呼出待ちコントラクトの存否状況、および前記両状況の組み合わせが含まれる。インタフェースモジュールは、照会結果を仮想マシンにフィードバックして実施する。照会結果が、コントラクト呼出元アカウントと、呼出待ちコントラクトとのうちの1つが存在しない、又は、いずれも存在しないである場合、仮想マシンインスタンスは、当該処理待ちトランザクション要求に対して、エラー情報をフィードバックする。
第2に、データアクセス要求がコントラクトバイトコード読取要求である場合、
前記仮想マシンインスタンスは、インタフェースモジュールからフィードバックされた照会結果が、オンチェーンアカウントおよびオンチェーンコントラクトが存在することであると、前記呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を発生してインタフェースモジュールに転送する。
ここで、コントラクトバイトコード読取要求とは、コントラクトスペースに記憶されているコントラクトバイトコードを読み取るための要求である。インタフェースモジュールから仮想マシンインスタンスにフィードバックする照会結果が、オンチェーンアカウントおよびオンチェーンコントラクトが存在することであると、処理待ちトランザクション要求が有効であることを表し、仮想マシンは、呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を発生してインタフェースモジュールに転送する。
前記インタフェースモジュールは、前記データアクセス要求に応じて命令変換を行うことで、前記コントラクトバイトコード読取要求に対応するコントラクトバイトコード読取インタフェースを確定する。
前記インタフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対して、コントラクトバイトコード読取インタフェースを呼び出し、呼出待ちコントラクトのコントラクトバイトコードを読み取り、読み取られたコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックする。
前記インタフェースモジュールは、コントラクトバイトコード読取要求を受信した場合、コントラクトバイトコード読取要求に応じて、コントラクトバイトコードが記憶されているコントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対して、コントラクトバイトコード読取インタフェースを呼び出し、呼出待ちコントラクトのコントラクトバイトコードを読み取る。
第3に、データアクセス要求がコントラクト内変数読取要求である場合、
前記仮想マシンインスタンスは、前記インタフェースモジュールからフィードバックされたコントラクトバイトコードと、前記処理待ちトランザクション要求内のコントラクトパラメータおよびトークンとに基づいて、前記処理待ちトランザクション要求を実行し、実行する過程においてコントラクト内変数読取要求を発生して前記インタフェースモジュールに転送する。ここで、コントラクト内変数に、スマートコントラクト稼働過程における変数および変数数値が含まれる。
ここで、コントラクトパラメータおよびトークンは、仮想マシンインスタンスがコントラクトバイトコードを実行する際、仮想マシンインスタンスに入力する変数である。仮想マシンインスタンスが処理待ちトランザクション要求を実行する過程は、即ち、インタフェースモジュールからフィードバックされたコントラクトバイトコードを実行する過程である。仮想マシンインスタンスがコントラクトバイトコードを実行する過程において、コントラクト内変数読取要求を発生してインタフェースモジュールに転送する。
なお、コントラクト内変数は、すべてチェーンにアップロードして記憶させることなく、コントラクト内変数は、コントラクトの実行過程で発生される中間値を含み、これらの中間値は、コントラクトの実行過程において、過程で発生される別の数値によって上書きされる場合があることを留意されたい。例示的に、勘定記録累計機能のある1つのスマートコントラクトには、変数Aおよび変数Bが含まれ、Aは既存金額であり、Bは今回の累計金額である。取引によってAおよびBの数値は異なっており、例えば、ユーザ甲より開始される1回の取引において、Aの10元(人民幣)に加えて、Bの2元(人民幣)を累計する。それでは、上記例において、AおよびBは変数となり、10および2は変数の値となり、A、BおよびAとBに対応する数値10と2はいずれもコントラクト内変数となって、コントラクトスペースに記録すべきである。しかしながら、スマートコントラクトの実行過程において、変数AとBに対応する変数数値に変化が発生する場合があり、過程における変数の数値は、通常のようにチェーンに記憶させることなく、変数AとBおよび両変数に対応する最終の変数数値をチェーンにアップロードし記憶させる。
前記インタフェースモジュールは、前記データアクセス要求に応じて命令変換を行うことで、前記コントラクト内変数読取要求に対応するコントラクト内変数読取インタフェースを確定する。
前記インタフェースモジュールは、コントラクト内変数の数値を読み取り、読み取られた数値を前記仮想マシンインスタンスにフィードバックするために、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数読取インタフェースを呼び出す。
ここで、インタフェースモジュールは、コントラクト内変数読取要求を受信した場合、コントラクト内変数読取要求に応じて、コントラクト内変数が記憶されているコントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数読取インタフェースを呼び出し、呼出待ちコントラクトのコントラクト内変数を読み取り、読み取られたコントラクト内変数を前記仮想マシンインスタンスにフィードバックする。
第4に、データアクセス要求がコントラクト内変数記憶要求である場合、
前記仮想マシンインスタンスは、前記処理待ちトランザクション要求を実行する過程において、コントラクト内変数記憶要求を発生してインタフェースモジュールに転送する。
ここで、コントラクト内変数記憶要求は、コントラクト内変数をコントラクトスペースに記憶させるための要求である。仮想マシンインスタンスは、処理待ちトランザクション要求を実行する過程において、データ処理結果を発生させ、当該データ処理結果をコントラクトスペースに記憶させる必要がある場合、仮想マシンインスタンスは、コントラクト内変数記憶要求を発生してインタフェースモジュールに転送する。
前記インタフェースモジュールは、前記データアクセス要求に応じて命令変換を行い、前記コントラクト内変数記憶要求に対応するコントラクト内変数記憶インタフェースを確定し、
前記インタフェースモジュールは、コントラクト内変数の数値を書き込むために、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数記憶インタフェースを呼び出し、
インタフェースモジュールは、コントラクト内変数記憶要求を受信した場合、コントラクト内変数記憶要求に応じて、コントラクト内変数の目標コントラクトスペースを確定し、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数記憶インタフェースを呼び出し、コントラクト内変数の数値をコントラクトスペースに書き込む。
本発明の実施例において、仮想マシンインスタンスとインタフェースモジュールとを協働させることで、共に処理待ちトランザクション要求を完成し、異なるブロックチェーン間のコントラクト内変数のアクセス動作を実現し、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと別のブロックチェーン技術との互換性を向上させる。
図2は、本発明の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法の概略図であり、本実施例は上記実施例を最適化した好ましい実施例であり、具体的には、処理待ちトランザクション要求を1回実行する全過程を説明する。
図2を参照すると、本実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のステップを含む。
ステップ1において、ブロックチェーンノードで仮想マシンインスタンスを稼働し、処理待ちトランザクション要求を取得する。
代替的に、処理待ちトランザクション要求は1回の取引(Transaction)のトランザクション要求である。取引のトランザクション要求には、コントラクトの呼出元(From)と、被呼出コントラクト(To)と、被呼出コントラクトから転送されるトークン(Token)量(Amout)と、被呼出コントラクト方法の方法署名(Method Signature)及び入力パラメータ(Data)との4つのパラメータが含まれる。ブロックチェーンノードは、取引のトランザクション要求に含まれているFrom、To、AmoutおよびDataを仮想マシンインスタンスに転送し、仮想マシンインスタンスにおいて呼出元(Caller)、被呼出元(Callee)、数値(Value)および入力パラメータ(Input)として存在する。
具体的に、ブロックチェーンノードにおいて実行される仮想マシンインスタンスにおいて、コントラクト呼出元から開始された処理待ちトランザクション要求を取得する。ここで、処理待ちトランザクション要求には、コントラクト呼出元の識別子と、呼出待ちコントラクトの識別子と、コントラクトパラメータと、トークン(Token)とが含まれる。処理待ちトランザクション要求が取引のトランザクション要求である場合、仮想マシン実施例における呼出元(Caller)はコントラクト呼出元の識別子であり、被呼出元(Callee)は呼出待ちコントラクトの識別子であり、数値(Value)はトークンであり、入力パラメータ(Input)はコントラクトパラメータである。
ステップ2において、仮想マシンインスタンスは呼出元(Caller)および被呼出元(Callee)に応じて、インタフェースモジュールにおけるオンチェーンアカウント照会インタフェース(AccExists)およびオンチェーンコントラクト照会インタフェース(ContractExists)を呼び出してブロックチェーンのデータストレージスペースに呼出待ちコントラクトおよびコントラクト呼出元の存否についてそれぞれに照会する。
具体的に、仮想マシンインスタンスが取引のトランザクション要求を受信した場合、仮想マシンインスタンスは、取引のトランザクション要求のうちのコントラクト呼出元の識別子および呼出待ちコントラクトの識別子に基づいて、呼出元のオンチェーンアカウント照会要求とオンチェーンコントラクト照会要求とをそれぞれ発生させ、前記インタフェースモジュールに転送する。ここで、インタフェースモジュールには、仮想マシン実施インタフェースがカプセル化されている。インタフェースモジュールは、オンチェーンアカウント照会要求に応じて、ブロックチェーンのアカウントスペースに対して、オンチェーンアカウント照会インタフェースを呼び出し、オンチェーンにコントラクト呼出元のアカウントの存否について照会する。インタフェースモジュールは、オンチェーンコントラクト照会要求に応じて、ブロックチェーンのコントラクトスペースに対して、オンチェーンコントラクト照会インタフェースを呼び出し、オンチェーンに呼出待ちコントラクトの存否について照会する。インタフェースモジュールは、コントラクト呼出元のアカウントおよび呼出待ちコントラクトに対する照会結果を仮想マシンインスタンスにフィードバックする。
ステップ3において、ブロックチェーンのデータストレージスペースにコントラクト呼出元と呼出待ちコントラクトの両方とも存在する場合、仮想マシンインスタンスは、コントラクトスペース(ContractStore)に格納されているコントラクトバイトコード(Code)を取得するために、インタフェースモジュール内のコントラクトバイトコード読取インタフェース(GetCode)を呼び出す。
具体的に、仮想マシンインスタンスは、インタフェースモジュールからフィードバックされた照会結果が、オンチェーンアカウントおよびオンチェーンコントラクトが存在することであると、呼出待ちコントラクトの識別子に基づいてコントラクトバイトコード読取要求を発生してインタフェースモジュールに転送する、インタフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対して、コントラクトバイトコード読取インタフェースを呼び出し、呼出待ちコントラクトのコントラクトバイトコードを読み取り、読み取られたコントラクトバイトコードを前記仮想マシンインスタンスにフィードバックする。
ステップ4において、仮想マシンインスタンスは、Caller、Value、InputおよびCodeを仮想マシンインスタンス実行モジュール(EVM Execute)に転送する。
ステップ5およびステップ6において、EVM Executeは、Caller、Value、InputおよびCodeに基づいて、取引のトランザクション要求を実行し、取引のトランザクション要求を実行する過程には、コントラクトのステータス変更を実現するために、コントラクト内変数の読み取りや記憶が伴う。
具体的に、仮想マシンインスタンスは、インタフェースモジュールからフィードバックされたコントラクトバイトコードと、処理待ちトランザクション要求内のコントラクトパラメータおよびトークンと、に基づいて、処理待ちトランザクション要求を実行し、実行する過程においてコントラクト内変数読取要求を発生して前記インタフェースモジュールに転送する。ここで、コントラクト内変数に、スマートコントラクトの稼働過程における変数および変数数値が含まれる。インタフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数読取インタフェースを呼び出し、コントラクト内変数の数値を読み取り、読み取られた数値を前記仮想マシンインスタンスにフィードバックする。
仮想マシンインスタンスが処理待ちトランザクション要求を実行する過程において、コントラクト内変数記憶要求を発生してインタフェースモジュールに転送し、インタフェースモジュールは、前記ブロックチェーンのコントラクトスペースに対して、コントラクト内変数記憶インタフェースを呼び出し、コントラクト内変数の数値を書き込む。なお、図2において、接続ラインおよび数字をつけて示しているものは、数字が示しているステップにおけるデータの流れ方向である。
本発明の実施例において、仮想マシンインスタンスが前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送し、前記インタフェースモジュール前記ブロックチェーンのデータストレージスペースに対して、前記ブロックチェーンアクセス用インタフェースを呼び出し、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックする。本発明は、仮想マシンインスタンスとインタフェースモジュールとを協働させ、共に処理待ちトランザクション要求を完成し、異なるブロックチェーン間のコントラクト内変数のアクセス動作を実現し、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと別のブロックチェーン技術との互換性を向上させる。
図3は、本発明の実施例に係るさらなるイーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートである。本実施例は上記実施例を基礎として提供される代替的な技術案である。具体的には、処理待ちトランザクション要求がコントラクトアカウントに基づいたコントラクトアカウント作成要求である場合、当該処理待ちトランザクション要求を実行する過程を細分化したものである。
図3を参照すると、本実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のS310、S320、S330、S340、およびS350を含む。
S310において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスは、処理待ちトランザクション要求を取得する。
S320において、前記仮想マシンインスタンスは、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送する。前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含む。
S330において、前記データアクセス要求がコントラクトアカウント作成要求である場合、前記インタフェースモジュールは、前記コントラクトアカウント作成要求に応じてコントラクトアカウント作成インタフェースを呼び出し、前記アカウントスペースにコントラクトアカウントを作成し、前記コントラクトアカウントのアカウントデータを書き込み、コントラクトスペースを生成する。
ここで、コントラクトアカウントに基づいたコントラクトアカウント作成要求とは、新規コントラクトアカウントを作成するための要求を指す。コントラクトアカウント作成要求には、新規作成したコントラクトアカウントのアカウントデータと、コントラクトデータとを書き込むことが含まれる。コントラクトアカウントに基づいたコントラクトアカウント作成要求には、新規作成したコントラクトアカウントのアカウントデータおよびスマートコントラクトを書き込むことが含まれる。
仮想マシンインスタンスは、コントラクトアカウントに基づいたコントラクトアカウント作成要求を実行し、目標コントラクトアカウントへのデータアクセス要求を発生する。コントラクトアカウントには、コントラクトデータと、アカウントデータとが含まれており、具体的には、コントラクトアカウントに対するアカウントデータ書込要求と、コントラクトデータ書込要求とを発生させる。アカウントデータ書込要求は、コントラクトアカウントのアカウントスペースに対してアカウントデータを書き込むことであり、コントラクトデータ書込要求は、コントラクトアカウントのコントラクトスペースに対してコントラクトデータを書き込むことである。ここで、コントラクトスペースと、アカウントスペースとは、スペース上で分離されている。
インタフェースモジュールは、データアクセス要求を受信した場合、先ず前記データアクセス要求に応じて命令変換を行い、前記コントラクトアカウント作成要求に対応するコントラクトアカウント作成インタフェースを確定する。具体的に、インタフェースモジュールは、当該コントラクトアカウント作成要求の所属仮想マシンの命令および命令パラメータを識別し、プリセットされた仮想マシン命令およびインタフェースマッピング関係に基づいて、コントラクトアカウント作成要求に対応するブロックチェーンアクセス用インタフェースを確定する。
通常の場合、ブロックチェーンには、もれなくアカウントスペースが存在することから、インタフェースモジュールは、コントラクトアカウント作成要求を受信した場合、コントラクトアカウント作成要求に応じて、すぐに目標アカウントスペースを確定でき、ブロックチェーンのアカウントスペースに対して、コントラクトアカウント作成インタフェースを呼び出し、アカウントスペースにコントラクトアカウントを作成し、コントラクトアカウントのアカウントデータを書き込む。しかしながら、コントラクトスペースは、コントラクトデータを格納するためのスペースであり、コントラクトアカウントを作成する時には、コントラクトスペースを生成しなければならない。
S340において、前記インタフェースモジュールは、前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクトバイトコード初期化インタフェースを呼び出し、作成待ちスマートコントラクトをコンパイルし、当該バイトコードをコントラクトスペースのインタフェースに書き込むことに用いられる。
ここで、コントラクトバイトコード初期化インタフェースは、作成待ちスマートコントラクトをコンパイルしてコントラクトバイトコードを得て、当該バイトコードをコントラクトスペースのインタフェースに書き込むことに用いられる。
コントラクトスペースを生成した後に、コントラクトスペースのコントラクトデータに対して初期化する必要があり、インタフェースモジュールは、コントラクトアカウント作成インタフェースを実行する過程において、コントラクトバイトコード初期化インタフェースを呼び出し、スマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込む。
S350において、前記インタフェースモジュールは、前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクト内変数記憶インタフェースを呼び出し、前記コントラクトスペースにおいて前記スマートコントラクトのコントラクト内変数を作成して記憶する。
スマートコントラクトに変数が存在し、スマートコントラクトの実行過程において、これらの変数に対して動作を行う場合があることから、スマートコントラクト内で係る変数および変数数値についてもコントラクトスペースに記憶させるべきである。インタフェースモジュールは、コントラクトアカウント作成インタフェースを実行する過程において、コントラクト内変数記憶インタフェースを呼び出し、コントラクトスペースにおいてスマートコントラクトのコントラクト内変数を作成して記憶する。
本発明の実施例に係る技術案は、仮想マシンインスタンスとインタフェースモジュールとを協動させることで、コントラクトアカウントに基づいたコントラクトアカウント作成方案を提供し、これにより、ユーザが自身のニーズに応じてコントラクトアカウントを作成できるように、アカウントスペースとコントラクトスペースを分離させ、ブロックチェーンの業務上の拡張性を向上させる。
図4は、本発明の実施例に係るさらなるイーサリアム仮想マシンに基づくトランザクション処理方法のフローチャートであり、本実施例は、上記実施例を基礎として提供される代替的な技術案である。具体的に、処理待ちトランザクション要求がコントラクトアカウントに基づいたコントラクトアカウント削除要求である場合、当該処理待ちトランザクション要求を実行する過程を細分化したものである。
図4を参照すると、本実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法は、以下のS410、S420、およびS430を含む。
S410において、ブロックチェーンノードにおいて実行される仮想マシンインスタンスは、処理待ちトランザクション要求を取得する。
S420において、前記仮想マシンインスタンスは、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送する。前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含む。
S430において、前記データアクセス要求がコントラクトアカウント削除要求である場合、前記インタフェースモジュールは、前記コントラクトアカウント削除要求に応じてコントラクトアカウント削除インタフェースを呼び出し、前記アカウントスペースから削除待ちコントラクトアカウントのアカウントデータを削除し、前記コントラクトスペースから前記削除待ちコントラクトアカウントのコントラクトデータを削除する。
ここで、コントラクトアカウント削除要求は、コントラクトアカウントから既存のコントラクトアカウントを削除するための要求を指す。コントラクトアカウント削除要求には、目標コントラクトアカウントのアカウントデータとコントラクトデータとを削除することが含まれる。コントラクトアカウント削除要求には、削除しようとするコントラクトアカウントのアカウント識別子が含まれる。
仮想マシンインスタンスは、コントラクトアカウント削除要求を実行し、目標コントラクトアカウントへのデータアクセス要求を発生する。コントラクトアカウントにコントラクトデータおよびアカウントデータが含まれることから、具体的には、コントラクトアカウントに対するアカウントデータ書込要求とコントラクトデータ書込要求を発生する。アカウントデータ書込要求は、コントラクトアカウントのアカウントスペースに対してアカウントデータを書き込む要求であり、コントラクトデータ書込要求は、コントラクトアカウントのコントラクトスペースに対してコントラクトデータを書き込む要求である。ここで、コントラクトスペースとアカウントスペースとはスペース上で別々に設けられたものである。コントラクトアカウントを削除することは、コントラクトアカウントにおけるコントラクトデータおよびアカウントデータを全部ヌルにしてもよく、コントラクトデータおよびアカウントデータのアカウント識別子フィールドのみをヌルにしてもよく、これにより、当該コントラクトアカウントは、他のユーザによってインデックスされることなく、コントラクトアカウントを削除する目的を達成する。
インタフェースモジュールは、データアクセス要求を受信した場合、先ず、データアクセス要求に応じて命令変換を行うことで、前記データアクセス要求に対応するコントラクトアカウント作成インタフェースを確定する。具体的に、インタフェースモジュールは、当該データアクセス要求の所属仮想マシンの命令および命令パラメータを識別し、プリセットされた仮想マシン命令およびインタフェースマッピング関係に基づいて、コントラクトアカウント削除要求に対応するブロックチェーンアクセス用インタフェースを確定する。
インタフェースモジュールは、前記コントラクトアカウント削除要求に応じて、コントラクトアカウント削除インタフェースを呼び出し、前記アカウントスペースから削除待ちコントラクトアカウントのアカウントデータを削除し、前記コントラクトスペースから前記削除待ちコントラクトアカウントのコントラクトデータを削除する。
コントラクトアカウントにコントラクトデータおよびアカウントデータが含まれ、コントラクトデータおよびアカウントデータはそれぞれにコントラクトスペースおよびアカウントスペースに記憶されていることから、コントラクトアカウントを削除する場合、インタフェースモジュールは、コントラクトアカウント削除要求に応じてコントラクトアカウント削除インタフェースを呼び出して削除待ちコントラクトアカウントのアカウントデータをアカウントスペースから削除し、削除待ちコントラクトアカウントのコントラクトスペース内におけるコントラクトデータを削除する。
本発明の実施例は、仮想マシンインスタンスとインタフェースモジュールとを協働させることで、ユーザが他のユーザにコントラクトアカウントを使用させたくない場合、又は、コントラクトアカウントを廃棄したい場合に、当該コントラクトアカウントを削除できるように、コントラクトアカウントに基づいたコントラクトアカウントの削除方案を提供し、これにより、ブロック記憶リソースが無駄になることを回避するとともに、コントラクトアカウントのプライバシーを向上させることに役立てる。
図5は、本発明の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理装置の概略図であり、図5を参照すると、本発明の実施例は、イーサリアム仮想マシンに基づくトランザクション処理装置500を開示している。当該装置500は、
ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得するための、処理待ちトランザクション要求取得モジュール510と、
前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送するための、データアクセス要求発生/転送モジュール520と、
前記インタフェースモジュールによって、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックするための、ブロックチェーンアクセス用インタフェース呼出モジュール530と、が備えられてもよく、
前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
前記ブロックチェーンのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含む。
本発明の実施例に係る技術案によれば、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植し、トランザクション処理を行う場合、インタフェースモジュールに介してブロックチェーンアクセス用インタフェースを呼び出し、異機種データストレージスペースへのアクセスを実現する。ブロックチェーンをオープン化/モジュール化させ、従って、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する難易度を低減させる。また、本発明の実施例において、ブロックチェーンは、コントラクトデータとアカウントデータをそれぞれ記憶させることで、様々なタイプのデータ記憶構造を互換可能となり、別のブロックチェーンで様々なデータに対して動作を行うことに容易にした。本発明の実施例は、インタフェースモジュールを構築することと、ブロックチェーンアカウントデータとコントラクトデータをそれぞれ記憶させることとを組み合わせることで、イーサリアム仮想マシンを別のブロックチェーンシステムへ移植する課題を解決し、イーサリアムと別のブロックチェーン技術との互換性を向上させる。
代替的に、前記ブロックチェーンのデータストレージスペースは、少なくとも2種のアカウントのデータ操作をサポートすることに用いられ、各前記アカウントのアカウントデータに使用されるデータ構造が同じである。
代替的に、前記アカウントデータに、アカウント識別子と、取引のシーケンス番号と、アカウント公開鍵と、トークンとが含まれる。
代替的に、前記アカウントデータは、キー値ペアの記憶方式を採用し、前記アカウント識別子がキー値としてキー域に記憶され、前記取引のシーケンス番号と、アカウント公開鍵と、トークンとが値域に記憶される。
代替的に、前記コントラクトデータに、アカウント識別子と、コントラクトバイトコードと、コントラクト内変数とが含まれ、ここで、前記アカウント識別子は、スマートコントラクトのコントラクト呼出識別子である。
代替的に、前記コントラクトデータは、キー値ペアの記憶方式を採用し、前記アカウント識別子がキー値におけるプレフィックスとして、前記コントラクトバイトコードおよびコントラクト内変数のそれぞれの識別子と組み合わせてキー域に記憶され、前記コントラクトバイトコードと、コントラクト内変数とが値域に記憶される。
代替的に、前記ブロックチェーンアクセス用インタフェースのタイプに、
前記アカウントアクセス用インタフェースアカウントデータへのアクセスに用いられるアカウントアクセス用インタフェースと、
コントラクトアカウントの操作に用いられるコントラクト操作用インタフェースと、
コントラクトデータの更新に用いられる記憶アクセス用インタフェースと、が含まれる。
代替的に、前記ブロックチェーンアクセス用インタフェースのうちのブロックチェーン読取インタフェースに、
コントラクト内変数読取インタフェースと、
アカウントトークン残額読取インタフェースと、
コントラクトバイトコード読取インタフェースと、
アカウントの取引のシーケンス番号読取インタフェースと、
オンチェーンコントラクト照会インタフェースと、
オンチェーンアカウント照会インタフェースと、
ブロック高によってブロックハッシュを読み取る読取インタフェースと、のうちの少なくとも1項が備えられる。
代替的に、前記ブロックチェーンアクセス用インタフェースにおけるブロックチェーン書込インタフェースに、
コントラクトアカウント作成インタフェースと、
コントラクトバイトコード初期化インタフェースと、
コントラクトアカウント削除インタフェースと、
コントラクト内変数記憶インタフェースと、
アカウント残額追加インタフェースと、
アカウント残額減少インタフェースと、のうちの少なくとも1項が備えられる。
代替的に、ブロックチェーンアクセス用インタフェース呼出モジュール530に、
前記データアクセス要求がコントラクトアカウント作成要求である場合、前記インタフェースモジュールは、前記コントラクトアカウント作成要求に応じてコントラクトアカウント作成インタフェースを呼び出し、前記アカウントスペースにコントラクトアカウントを作成し、前記コントラクトアカウントのアカウントデータを書き込み、コントラクトスペースを生成するための、コントラクトアカウント作成サブモジュールと、
前記インタフェースモジュールが前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクトバイトコード初期化インタフェースを呼び出し、作成待ちスマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込むための、コントラクトバイトコード書込サブモジュールと、
前記インタフェースモジュールが前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクト内変数記憶インタフェースを呼び出し、前記コントラクトスペースにおいて前記スマートコントラクトのコントラクト内変数を作成して記憶するための、コントラクト内変数記憶サブモジュールと、が備えられる。
代替的に、ブロックチェーンアクセス用インタフェース呼出モジュール530は、具体的に、前記データアクセス要求がコントラクトアカウント削除要求である場合、前記インタフェースモジュールが、前記コントラクトアカウント削除要求に応じてコントラクトアカウント削除インタフェースを呼び出し、前記アカウントスペースから削除待ちコントラクトアカウントのアカウントデータを削除し、前記コントラクトスペースから前記削除待ちコントラクトアカウントのコントラクトデータを削除することに用いられる。
本発明の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理装置は、本発明の任意の実施例に係るイーサリアム仮想マシンに基づくトランザクション処理方法を実行可能であり、具備実行イーサリアム仮想マシンに基づくトランザクション処理方法を実行するためのそれぞれの機能モジュールおよび有利な効果が具備されている。
本発明の実施例によれば、本発明は電子機器、可読記憶媒体およびコンピュータプログラム製品をさらに提供する。
図6では、本発明の実施例を実施するための例示的な電子機器600の概略的なブロック図を示している。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータおよびその他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを意図している。電子機器は、パーソナルデジタル処理、携帯電話、スマートフォン、ウェアラブル機器及びその他の類似的なコンピューティング機器などの様々な形態のモバイル機器を表すこともできる。本明細書に記載の構成要素、それらの接続及び関係、ならびに、それらの機能は、単に例示的なものであり、本明細書に記載及び/又は要求される本発明の実現を制限することを意図するものではない。
図6に示すように、機器600には、コンピューティングユニット601が備えられており、当該コンピューティングユニット601は読取専用メモリ(Read-Only Memory、ROM)602に記憶されているコンピュータプログラム又は記憶ユニット608からランダムアクセスメモリ(Random Access Memory、RAM)603にアップロードされるコンピュータプログラムに基づいて、様々な適切な動作及び処理を実行することができる。RAM 603には、機器600の動作に要求される様々なプログラムおよびデータが記憶されていてもよい。コンピューティングユニット601と、ROM 602およびRAM 603はバス604を介して互いに接続される。入力/出力(I/O)インタフェース605もバス604に接続される。
電子機器600内の複数の構成要素はI/Oインタフェース605に接続され、当該I/Oインタフェース605には、キーボード、マウスなどの入力ユニット606と、様々なタイプのディスプレイ、スピーカなどの出力ユニット607と、磁気ディスク、光ディスクなどの記憶ユニット608と、ネットワークカード、モデム、無線通信送受信機などの通信ユニット609と、が備えられている。通信ユニット609は、インターネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを経由して機器600と別の機器との情報およびデータ交換を可能にする。
コンピューティングユニット601は様々な処理およびコンピューティング機能を有する汎用及び/又は特定用途向け処理コンポーネントであってもよい。コンピューティングユニット601のいくつかの例には、中央処理装置(Central Processing Unit、CPU)、グラフィックスプロセッサ(Graphics Processing Unit、GPU)、様々な特定用途向けの人工知能(Artificial Intelligence、AI)コンピューティングチップ、機械学習モデルアルゴリズムを実行する様々なコンピューティングユニット、デジタル信号処理(Digital Signal Processing、DSP)、および、任意の適切なプロセッサ、コントローラ、マイクロコントローラなどが含まれるが、これらに限定されない。コンピューティングユニット601は、上述した様々な方法および処理、例えば、イーサリアム仮想マシンに基づくトランザクション処理方法を実行する。例えば、いくつかの実施例において、イーサリアム仮想マシンに基づくトランザクション処理方法は、記憶ユニット608などの機械可読媒体に有形的に含まれるコンピュータソフトウェアプログラムによって実行可能である。いくつかの実施例において、コンピュータプログラムの一部又は全部は、ROM 602及び/又は通信ユニット609を介して機器600にアップロード及び/又はインストールされ得る。コンピュータプログラムは、RAM 603にアップロードされ、コンピューティングユニット601により実行されることで、上述したイーサリアム仮想マシンに基づくトランザクション処理方法の1つ又は複数のステップを実行できる。代替的に、別の実施例において、コンピューティングユニット601は、他の任意の適切な形態で(例えば、ファームウェアによって)イーサリアム仮想マシンに基づくトランザクション処理方法を実行するように構成される。
本明細書に記載の上記システムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、特定用途向け標準製品(Application Specific Standard Product、ASSP)、組み込みシステムオンチップ(System-On-a-Chip、SOC)、複雑なプログラマブル・ロジック・機器(Complex Programmable Logic Device、CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又は、それらの組み合わせによって実現可能である。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施され、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行及び/又は解釈可能であり、当該プログラマブルプロセッサは、特定用途向け又は汎用プログラマブルプロセッサであってもよく、記憶システムと、少なくとも1つの入力装置と、少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該記憶システムと、当該少なくとも1つの入力装置と、当該少なくとも1つの出力装置に伝送することができる。
本発明の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせでプログラミングできる。これらのプログラムコードは、汎用コンピュータ、特定用途向けコンピュータ、又は、その他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供され、プロセッサ又はコントローラによって実行されることで、フロー図及び/又はブロック図の所定の機能/動作を実行させる。プログラムコードは、全部マシンで実施されてもよく、一部がマシンで実施されてもよく、独立したパッケージソフトウェアとして一部はマシンで実行および一部はリモートマシンで実行、又は、全部リモートマシン又はサーバで実行されてもよい。
本発明の文脈において、機械可読媒体は有形的な媒体であってもよく、当該媒体に、命令実行システム、装置又は機器に利用されるプログラム、又は、命令実行システム、装置又は機器と組み合わせて利用されるプログラムが備えられるか、又は、記憶されていてもよい。機械可読媒体は、機械可読信号媒体であってもよく、又は機械可読記憶媒体でもよい。機械可読媒体は、電子、磁気、光学、電磁気、赤外線、又は半導体システム、装置又は機器、又は上述した内容の任意の適切な組み合わせを含んでもよいが、これに限定されるものではない機械可読記憶媒体のより具体的な例には、1つ又は複数のケーブルに基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブル読取専用メモリ(Erasable Programmable Read Only Memory、EPROM又はフラッシュメモリ)、光ファイバ、コンパクトディスクに読取専用メモリ(Compact Disc Read Only Memory、CD‐ROM)、光学記憶装置、磁気記憶装置、又は、上述した内容の任意の適切な組み合わせが含まれる。
ユーザとの相互作用を提供するために、本明細書に記載のシステム及び技術はコンピュータで実施されてもよく、当該コンピュータは、例えば、ブラウン管(Cathode Ray Tube、CRT)又は液晶ディスプレイ(Liquid Crystal Display、LCD)モニタなどのユーザに情報を表示するための表示装置と、キーボードと、例えば、マウス又はトラックボールなどのポインティング機器(Pointing device)と、を有しており、ユーザは、当該キーボード及び当該ポインティング機器を介してコンピュータに入力を提供してもよい。ユーザとの相互作用を提供するために、その他のタイプの装置を使用してもよく、例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックの任意の形態の感覚フィードバックであってもよく、音声入力又は触覚入力を含む任意の形態でユーザからの入力を受信してもよい。
本明細書に記載のシステムおよび技術は、バックエンド構成要素を含むコンピューティングシステム(例えば、データサーバとして)、又は、ミドルウェア構成要素を含むコンピューティングシステム(例えば、アプリケーションサーバ)、又は、フロントエンド構成要素を含むコンピューティングシステム(例えば、グラフィックスユーザインターフェース、又は、ネットワークブラウザを有するユーザコンピュータであり、ユーザは当該グラフィックスユーザインターフェース又は当該ネットワークブラウザを介して本明細書に記載のシステムおよび技術の実施形態と相互作用してもよい)、又は、これらのバックエンド構成要素、ミドルウェア構成要素、又は、フロントエンド構成要素の任意の組み合わせを含むコンピューティングシステムで実施されてもよい。システムの構成要素は、任意の形態又は媒体によるデジタルデータ通信(例えば、通信ネットワーク)によって相互接続されてもよい。通信ネットワークの例には、ローカルエリアネットワーク(Local Area Network、LAN)、ワイドエリアネットワーク(Wide Area Network、WAN)、ブロックチェーンネットワーク(Blockchain Network)およびインターネットが含まれる。
コンピュータシステムは、クライアントおよびサーバを備えてもよい。クライアントとサーバとは、普通、互いに遠く離れており、通常、通信ネットワークを介して相互作用を実行する。それぞれのコンピュータで稼働し、互いにクライアント‐サーバ関係を有するコンピュータプログラムによってクライアントとサーバの関係を生成する。サーバは、クラウドコンピューティングサーバ又はクラウドホストとも呼ばれるクラウドサーバであってもよく、クラウドコンピューティングサービスシステムにおける1つのホスト製品として、従来の物理ホストとVPSサービスにおける、管理の難易度が高く、業務の拡張性が弱いという欠点を解決する。
なお、上記の様々な形態のプロセスは、ステップを並べ替え、追加又は削除して使用することができる。例えば、本発明に記載の各ステップは、並行的に実行されてもよく、順次的に実行されてもよく、異なる順序で実行されてもよく、本発明に開示される発明が所望の結果を達成できる限り、本明細書によって限定されないことを理解すべきである。
本発明は、上述した実施するための具体的な形態によって保護範囲が限定されるものではない。当業者なら、設計要件およびその他の要因に従って様々な修正、組み合わせ、下位組み合わせ及び代替を実行できることを認識すべきである。本発明の精神と原則の範囲内で行われるいわゆる修正、均等置換および改良等はすべて本発明の保護範囲に含まれるものである。

Claims (15)

  1. ブロックチェーンネットワークのブロックチェーンノードに適用される、イーサリアム仮想マシンに基づくトランザクション処理方法であって、
    ブロックチェーンノードにおいて実行される仮想マシンインスタンスが、処理待ちトランザクション要求を取得すること、
    前記仮想マシンインスタンスが、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送すること、および、
    前記インタフェースモジュールが、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンネットワークのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックすること、を含み、
    前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
    前記ブロックチェーンネットワークのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含む、
    方法。
  2. 前記ブロックチェーンネットワークのデータストレージスペースは、少なくとも2種のアカウントのデータ操作をサポートすることに用いられ、
    各前記アカウントのアカウントデータに使用されるデータ構造が同じである、
    請求項1に記載の方法。
  3. 前記アカウントデータに、アカウント識別子、取引のシーケンス番号、アカウント公開鍵、および、トークンが含まれる、
    請求項1に記載の方法。
  4. 前記アカウントデータは、キー値ペアの記憶方式を採用し、
    前記アカウント識別子が、キー値としてキー域に記憶され、
    前記取引のシーケンス番号、アカウント公開鍵、および、トークンが値域に記憶される、
    請求項3に記載の方法。
  5. 前記コントラクトデータに、アカウント識別子、コントラクトバイトコード、および、コントラクト内変数が含まれ、
    前記アカウント識別子は、スマートコントラクトのコントラクト呼出識別子である、
    請求項1に記載の方法。
  6. 前記コントラクトデータは、キー値ペアの記憶方式を採用し、
    前記アカウント識別子が、キー値におけるプレフィックスとして、前記コントラクトバイトコードおよびコントラクト内変数のそれぞれの識別子と組み合わせてキー域に記憶され、
    前記コントラクトバイトコードと、コントラクト内変数とが値域に記憶される、
    請求項5に記載の方法。
  7. 前記ブロックチェーンアクセス用インタフェースのタイプに、
    アカウントデータへのアクセスに用いられるアカウントアクセス用インタフェース、
    コントラクトアカウントの操作に用いられるコントラクト操作用インタフェース、および、
    コントラクトデータの更新に用いられる記憶アクセス用インタフェース、が含まれる、
    請求項1乃至6のいずれか一項に記載の方法。
  8. 前記ブロックチェーンアクセス用インタフェースのうちのブロックチェーン読取インタフェースに、
    コントラクト内変数読取インタフェース
    アカウントトークン残額読取インタフェース、
    コントラクトバイトコード読取インタフェース、
    アカウントの取引のシーケンス番号読取インタフェース、
    オンチェーンコントラクト照会インタフェース、
    オンチェーンアカウント照会インタフェース、および、
    ブロック高によってブロックハッシュを読み取る読取インタフェース、
    のうちの少なくとも1つを含む、
    請求項7に記載の方法。
  9. 前記ブロックチェーンアクセス用インタフェースにおけるブロックチェーン書込インタフェースは、
    コントラクトアカウント作成インタフェース、
    コントラクトバイトコード初期化インタフェース、
    コントラクトアカウント削除インタフェース、
    コントラクト内変数記憶インタフェース、
    アカウント残額追加インタフェース、および、
    アカウント残額減少インタフェース、
    のうちの少なくとも1つを含む、
    請求項7に記載の方法。
  10. 前記インタフェースモジュールが、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンネットワークのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行うことは、
    前記データアクセス要求がコントラクトアカウント作成要求である場合、前記インタフェースモジュールが、前記コントラクトアカウント作成要求に応じてコントラクトアカウント作成インタフェースを呼び出し、前記アカウントスペースにおいて新規コントラクトアカウントを作成し、作成した前記新規コントラクトアカウントのアカウントデータを書き込むこと、
    前記インタフェースモジュールが、前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクトバイトコード初期化インタフェースを呼び出し、作成待ちスマートコントラクトをコンパイルし、コントラクトバイトコードを形成して前記コントラクトスペースに書き込むこと、および、
    前記インタフェースモジュールが、前記コントラクトアカウント作成インタフェースを実行する過程において、前記コントラクト内変数記憶インタフェースを呼び出し、前記コントラクトスペースにおいて前記スマートコントラクトのコントラクト内変数を作成して記憶すること、
    を含む、
    請求項9に記載の方法。
  11. 前記インタフェースモジュールが、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンネットワークのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行うことは、
    前記データアクセス要求がコントラクトアカウント削除要求である場合、前記インタフェースモジュールが、前記コントラクトアカウント削除要求に応じてコントラクトアカウント削除インタフェースを呼び出し、前記アカウントスペースから削除待ちコントラクトアカウントのアカウントデータを削除し、前記コントラクトスペースから前記削除待ちコントラクトアカウントのコントラクトデータを削除すること、を含む、
    請求項9に記載の方法。
  12. ブロックチェーンネットワークのブロックチェーンノードに適用され、請求項1乃至11のいずれか一項に記載の方法を実行する、イーサリアム仮想マシンに基づくトランザクション処理装置であって、
    ブロックチェーンノードにおいて実行される仮想マシンインスタンスによって、処理待ちトランザクション要求を取得するための処理待ちトランザクション要求取得モジュール、
    前記仮想マシンインスタンスによって、前記処理待ちトランザクション要求を実行する過程において、目的アクセスデータへのデータアクセス要求を発生してインタフェースモジュールに転送するためのデータアクセス要求発生/転送モジュール、および、
    前記インタフェースモジュールによって、前記データアクセス要求に応じてブロックチェーンアクセス用インタフェースを呼び出し、前記ブロックチェーンネットワークのデータストレージスペースに対して、前記目的アクセスデータへのアクセス動作を行い、アクセス結果を前記仮想マシンインスタンスにフィードバックするためのブロックチェーンアクセス用インタフェース呼出モジュール、を備え、
    前記データアクセス要求は、データ読取要求及び/又はデータ書込要求を含み、
    前記ブロックチェーンネットワークのデータストレージスペースは、外部アカウントにおけるアカウントデータおよびコントラクトアカウントにおけるアカウントデータを格納するためのアカウントスペースと、コントラクトアカウントにおけるコントラクトデータを格納するためのコントラクトスペースと、を含む、
    装置。
  13. 前記ブロックチェーンネットワークのデータストレージスペースは、少なくとも2種のアカウントのデータ操作をサポートすることに用いられ、
    各前記アカウントのアカウントデータに使用されるデータ構造が同じである、
    請求項12に記載の装置。
  14. 少なくとも1つのプロセッサ、および、
    前記少なくとも1つのプロセッサに通信接続される記憶装置、を備え
    前記記憶装置に、前記少なくとも1つのプロセッサにより実行可能な命令が記憶され、
    前記命令は、前記少なくとも1つのプロセッサが請求項1~11のいずれか1項に記載の方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
    電子機器。
  15. 複数のコンピュータ命令を含むコンピュータプログラムであって、
    前記コンピュータ命令がプロセッサによって実行されると、請求項1乃至11のいずれか一項に記載の方法をコンピュータに実行させる、
    コンピュータプログラム。
JP2021186112A 2020-12-24 2021-11-16 イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体 Active JP7253603B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011543554.8 2020-12-24
CN202011543554.8A CN112286642B (zh) 2020-12-24 2020-12-24 以太坊虚拟机的事务处理方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
JP2022101477A JP2022101477A (ja) 2022-07-06
JP7253603B2 true JP7253603B2 (ja) 2023-04-06

Family

ID=74426264

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021186112A Active JP7253603B2 (ja) 2020-12-24 2021-11-16 イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体

Country Status (5)

Country Link
US (1) US20210391995A1 (ja)
EP (1) EP3910516B1 (ja)
JP (1) JP7253603B2 (ja)
KR (1) KR20210105317A (ja)
CN (1) CN112286642B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114669389B (zh) * 2022-03-01 2024-01-02 苏州西热节能环保技术有限公司 磨煤机一次风压力控制方法、装置、存储介质和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200005292A1 (en) 2018-06-29 2020-01-02 Arcblock, Inc. Blockchain adapter, protocol, and access layer
US20200167840A1 (en) 2019-07-31 2020-05-28 Alibaba Group Holding Limited Blockchain-based e-bill number application method, apparatus, and electronic device
JP2020525877A (ja) 2019-04-03 2020-08-27 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 信頼できる実行環境下でのブロックチェーンデータの処理および保存

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598490A (zh) * 2016-11-25 2017-04-26 深圳前海微众银行股份有限公司 区块链数据的访问方法和区块链管理系统
CN106951307B (zh) * 2017-03-06 2020-09-22 钱德君 一种智能合约虚拟机实现方法
CN107395674A (zh) * 2017-06-14 2017-11-24 广东网金控股股份有限公司 一种应用系统访问异构区块链平台的方法及装置
US20190058709A1 (en) * 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
WO2019109003A1 (en) * 2017-11-30 2019-06-06 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
CN109034814B (zh) * 2018-09-14 2020-10-16 百度在线网络技术(北京)有限公司 基于以太坊虚拟机的智能合约处理方法和装置
KR20200115902A (ko) * 2019-03-28 2020-10-08 주식회사 비즈모델라인 스마트컨트랙트를 이용한 비밀 보안 처리 제공 방법
US11362807B2 (en) * 2019-08-14 2022-06-14 R3 Llc Sealed distributed ledger system
KR20210023601A (ko) * 2019-08-23 2021-03-04 삼성전자주식회사 블록체인 계좌 정보를 제공하는 전자 장치와 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200005292A1 (en) 2018-06-29 2020-01-02 Arcblock, Inc. Blockchain adapter, protocol, and access layer
JP2020525877A (ja) 2019-04-03 2020-08-27 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 信頼できる実行環境下でのブロックチェーンデータの処理および保存
US20200167840A1 (en) 2019-07-31 2020-05-28 Alibaba Group Holding Limited Blockchain-based e-bill number application method, apparatus, and electronic device

Also Published As

Publication number Publication date
EP3910516A2 (en) 2021-11-17
EP3910516B1 (en) 2023-03-22
EP3910516A3 (en) 2022-03-02
JP2022101477A (ja) 2022-07-06
CN112286642A (zh) 2021-01-29
KR20210105317A (ko) 2021-08-26
CN112286642B (zh) 2021-04-30
US20210391995A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
JP7293314B2 (ja) イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体
US10452363B2 (en) Methods and systems for evaluating bytecode in an on-demand service environment including translation of apex to bytecode
US11360976B2 (en) Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
JP5052568B2 (ja) ネットワーク内の装置を管理するための方法、システム、およびプログラム
US10635420B2 (en) Overriding a migrated method in an updated type
US10303449B2 (en) Compiling non-native constants
JP7291764B2 (ja) イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体
WO2023056946A1 (zh) 一种数据缓存方法、装置和电子设备
JP7253603B2 (ja) イーサリアム仮想マシンのトランザクション処理方法、装置、機器、および媒体
JP7291759B2 (ja) イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体
WO2021243665A1 (zh) 编译方法、编译装置、编译系统、存储介质与电子设备
JP7393404B2 (ja) コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
Royer et al. Trusted Remote Function Interface
CN114185556A (zh) 一种智能合约部署方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230327

R150 Certificate of patent or registration of utility model

Ref document number: 7253603

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150