KR20210105317A - 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체 - Google Patents

이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체 Download PDF

Info

Publication number
KR20210105317A
KR20210105317A KR1020210103343A KR20210103343A KR20210105317A KR 20210105317 A KR20210105317 A KR 20210105317A KR 1020210103343 A KR1020210103343 A KR 1020210103343A KR 20210103343 A KR20210103343 A KR 20210103343A KR 20210105317 A KR20210105317 A KR 20210105317A
Authority
KR
South Korea
Prior art keywords
contract
account
data
interface
request
Prior art date
Application number
KR1020210103343A
Other languages
English (en)
Inventor
레이 장
빙씬 빤
치 쩡
웨이 쌰오
웨이 ›X오
Original Assignee
베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
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 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210105317A publication Critical patent/KR20210105317A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (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)

Abstract

본 출원은 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비 및 매체를 개시하였고, 컴퓨터 기술분야에 관한 것으로서, 특히 블록체인 기술에 관한 것이며, 클라우드 컴퓨팅 분야에 사용될 수 있다. 구체적인 구현방안은, 블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하고; 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하며; 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함하며; 상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하며, 본 출원은 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.

Description

이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체{A TRANSACTION PROCESSING METHOD, A DEVICE, AN EQUIPMENT, A PROGRAM AND A MEDIUM OF ETHEREUM VIRTUAL MACHINE}
본 출원은 컴퓨터 기술분야, 특히 블록체인 기술에 관한 것으로서, 구체적으로 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비 및 매체에 관한 것이다.
블록체인은 분포식 데이터 저장, 포인트 투 포인트 전송, 합의 메커니즘, 암호화 알고리즘 등 컴퓨터 기술의 신형 응용 모드이다. 블록체인은 공개적이고 투명하며 변조(tamper)가 불가능한 특징으로 인해, 금융, 추적, 보험 등 분야에서 점점 널리 응용되고 있다.
블록체인 기술은 최초의 비트코인 시스템에서 이더리움에 이르기까지 지속적으로 발전하고 있으며, 근래에는 예를 들어 Polkadot, Cosmos 등 지분 증명(Proof of Stake, PoS) 합의 메커니즘에 기반한 신형 블록체인 기술과 같이 보다 우수한 기술을 사용한 블록체인 시스템들이 줄줄이 생성되었다. 블록체인 응용분야에서, 기술은 지속적으로 업그레이드 및 업데이트되고 있으나, 이더리움 기술에 기반한 생태 환경은 이미 일정한 규모를 구비하며, 많은 블록체인 응용은 모두 이더리움의 스마트 계약에 기반하여 구축되었다. 응용의 개발자와 사용자는 모두 이더리움의 스마트 계약을 사용하는 것에 어느 정도 익숙하다.
그러나, 기술이 발전함에 따라, 예를 들어 저효율의 합의 알고리즘 등과 같은 이더리움의 일부 결함이 노출되어, 이더리움의 거래 성능이 진정한 대규모 상업 응용 시나리오를 지원하기에 부족하게 된다. 이더리움의 생태 효과를 감안하면, 이더리움을 직접 포기할 수 없으며, 이더리움과 기타 블록체인 기술을 호환할 수 있는 시스템이 더 많이 요구되고 있다. 이더리움 스마트 계약은 이더리움 가상머신(EVM)에 기반하여 구현되므로, 이더리움과 기타 블록체인 기술을 호환하려면 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결하여야 한다.
본 개시는 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비 및 매체를 제공한다.
본 개시의 일 측면에 따라, 블록체인 노드에 응용되는 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 제공하며, 상기 방법은,
블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하는 단계;
상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하는 단계-여기서, 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함함-;
상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하는 단계; 를 포함하고,
여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장한다.
본 개시의 다른 측면에 따라, 블록체인 노드에 응용되는 이더리움 가상머신에 기반한 트랜잭션 처리 장치를 제공하며, 상기 장치는,
블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하는데 사용되는 처리될 트랜잭션 요청 획득 모듈;
상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하는데 사용되는 데이터 액세스 요청 생성 및 전송 모듈-여기서, 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함함-;
상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하는데 사용되는 블록체인 액세스 인터페이스 호출 모듈; 을 포함하고,
여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장한다.
본 개시의 다른 측면에 따라, 전자 설비를 제공하며, 해당 전자 설비는,
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서와 통신적으로 연결되는 메모리; 를 포함하되, 여기서,
상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되어 있으며, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 본 개시의 실시예의 어느 하나에 따른 이더리움 가상머신의 트랜잭션 처리 방법을 수행할 수 있도록 한다.
본 개시의 일 측면에 따라, 컴퓨터 명령이 저장되어 있는 비 일시적 컴퓨터 판독 가능 저장매체를 제공하며, 상기 컴퓨터 명령은 상기 컴퓨터가 본 개시의 실시예의 어느 하나에 따른 이더리움 가상머신의 트랜잭션 처리 방법을 수행하도록 한다.
본 개시의 다른 측면에 따라, 컴퓨터 프로그램 제품을 제공하며, 해당 제품은 컴퓨터 프로그램을 포함하며, 상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우, 본 개시의 실시예의 어느 하나에 따른 이더리움 가상머신의 트랜잭션 처리 방법을 구현한다.
본 개시의 기술에 따라, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.
해당 부분에서 설명된 내용은 본 개시의 실시예의 핵심적인 특징 또는 중요한 특징을 식별하기 위한 것이 아니며, 본 개시의 범위를 한정하려는 의도가 아님을 이해하여야 한다. 본 개시의 기타 특징은 하기 명세서를 통해 쉽게 이해될 수 있다.
도면은 본 방안을 더 잘 이해하기 위한 것이며, 본 출원을 한정하려는 것이 아니다. 여기서,
도 1은 본 개시의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이다.
도 2는 본 개시의 실시예에 따른 다른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이다.
도 3은 본 개시의 실시예에 따른 또 다른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이다.
도 4는 본 개시의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이다.
도 5는 본 개시의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 장치의 개략도이다.
도 6은 본 개시의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 구현하기 위한 전자 설비의 블록도이다.
이하 도면을 결합하여 본 출원의 예시적인 실시예를 설명하도록 한다. 여기서 본 출원의 실시예를 포함하는 각종 상세한 설명은 이해를 돕기 위한 것이며, 이들을 예시적인 것으로 간주하여야 한다. 따라서, 본 분야의 당업자는 본 출원의 범위 및 요지를 벗어나지 않고 여기서 설명된 실시예에 대하여 다양한 변경 및 수정이 가능함을 이해할 것이다. 마찬가지로, 명확하고 간결하게 하기 위해, 이하의 설명에서는 공지된 기능 및 구조에 대한 설명을 생략하도록 한다.
블록체인은 분포식 데이터 저장, 포인트 투 포인트 전송, 합의 메커니즘, 암호화 알고리즘 등 컴퓨터 기술의 신형 응용 모드이다. 최초로 등장한 블록체인(Blockchain)은 비트코인의 중요한 개념이며, 이는 본질적으로 하나의 탈중앙화 데이터 베이스이며, 아울러, 비트코인의 기초 기술로서, 블록체인은 암호화 방법을 사용하여 서로 연관되게 생성된 일련의 데이터 블록이며, 각각의 데이터 블록은 한 배치의 비트코인 네트워크 거래의 정보를 포함하고, 그 정보의 유효성을 검증하고 다음 블록을 생성하기 위한 것이다. 블록체인은 공개적이고 투명하며 변조가 불가능한 특징으로 인해, 금융, 추적, 보험 등 분야에서 점점 널리 응용되고 있으며, 특히, 금융 분야에서 각 금융 기구 간의 고효율 협력을 구현할 수 있다.
블록체인 기술은 가장 초기에 비트코인을 대표로 하는 디지털 화폐 시대에 등장하였다. 블록체인 기술이 지속적으로 발전함에 따라, 디지털 화폐와 스마트 계약이 서로 결합된 이더리움이 등장하고, 블록체인은 원래의 "글로벌 원장(global ledger)"에서 "글로벌 컴퓨터"로 업그레이드되며, 이는 전체 시장에 대한 탈중앙화이다. 이더리움은 디지털 화폐와 스마트 계약을 결합하여, 금융 분야에서의 보다 넓은 시나리오와 프로세스를 최적화하는 애플리케이션으로서, 가장 큰 업그레이드는 스마트 계약을 구비하는 것이다. 이더리움은 애플리케이션 플랫폼에 위치하고, 해당 플랫폼에서 스마트 계약을 업로드 및 수행할 수 있으며, 계약의 수행은 효과적으로 보장될 수 있다.
진정한 대규모 상업 응용 시나리오에서는 항상 고효율적인 합의 알고리즘의 지원을 필요로 하지만, 비트코인 및 이더리움 등 초기 블록체인 기술의 합의로 인해 그 거래 성능이 이러한 시나리오를 지원하기에 부족하게 된다. 그러나, 블록체인 응용분야에서, 이더리움 생태는 가장 중요하기 때문에, 많은 블록체인 응용은 이더리움 생태 존재에 의존하며, 게임 분야의 크립토키티즈(CryptoKitties) 및 금융 분야의 DeFi 프로젝트 DAI는 모두 이더리움 스마트 계약에 기반하여 구축된다.
이더리움 스마트 계약을 전문적으로 실행하기 위한 가상머신을 이더리움 가상머신(Ethereum Virtual Machine, EVM)이라고 칭하고, 이더리움 스마트 계약은 solidity, viper 등 언어로 작성된다. 이더리움 스마트 계약 및 EVM는 블록체인 분야에서 널리 응용되며, 이미 블록체인 스마트 계약 분야의 사실적인 표준 중 하나가 되었다.
이더리움 소스 코드 수정에 기반하여, 이더리움 EVM을 기타 블록체인 시스템에 응용하는 경우, 이더리움 EVM는 블록체인 데이터 저장 방식 및 액세스 방식과 고유적으로 바인딩되므로, 이전 방안이 범용성을 구비하지 못하게 되고, 이전 후의 EVM과 체인 자체가 바인딩되는 경우가 많아져, 이더리움 가상머신에 대한 기타 체인의 이전에 적용되기 어렵다.
본 출원은 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 제공하며, 모듈화 설계 사상을 융합하여, 이더리움 가상머신을 모듈로서 모듈화 블록체인 시스템, 예를 들어, XuperChain, Cosmos 등 모듈화 설계 사상을 도입한 블록체인에 이전함으로써, 블록 데이터와 수행 로직을 분할한다. 본 출원의 실시예에 따른 방법은 이더리움 자체의 기술 생태 및 응용 생태를 충분히 이용할 수 있어, 각종 이더리움 생태의 DAPP가 애플리케이션 이전을 수행하는데 매우 편리하며; 기타 블록체인 시스템의 기술적 이점도 잘 발휘할 수 있다.
도 1은 본 출원의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이다. 본 실시예는 이더리움 가상머신을 기타 블록체인 시스템에 이전하여 트랜잭션 처리를 수행하는 경우에 적용되어, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 비이더리움의 기타 블록체인 기술의 호환성을 향상시킬 수 있다. 본 실시예에서 개시한 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 이더리움 가상머신에 기반한 트랜잭션 처리 장치에 의해 수행될 수 있고, 해당 장치는 소프트웨어 및/또는 하드웨어의 방식에 의해 구현되고, 컴퓨팅 및 저장 기능을 구비하는 전자 설비에 배치될 수 있으며, 해당 전자 설비는 블록체인 노드이다. 블록체인 네트워크는 복수 개의 블록체인 노드로 구성되어 분포식으로 실행되는 네트워크이다. 본 출원의 실시예에서 제공하는 방법은 임의의 블록체인 노드에 의해 수행될 수 있다.
도 1을 참조하면, 본 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 다음의 단계를 포함한다.
단계(S110), 블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득한다.
여기서, 블록체인 노드에는 가상머신 프로그램이 배치되며, 실행 수요가 있을 경우, 이더리움 가상머신의 명령 세트에 기반하여 스마트 계약의 컴퓨팅 로직을 수행하기 위한 하나 또는 복수 개의 가상머신 인스턴스를 생성할 수 있다.
처리될 트랜잭션 요청은 기타 블록체인 노드에 의해 송신되거나, 사용자가 본 머신 노드에서 제출한 블록체인 상의 데이터를 조작하기 위한 트랜잭션 요청을 의미한다. 본 출원의 실시예에서, 트랜잭션 요청은 블록체인 시스템에서 지원하는 임의의 트랜잭션 요청일 수 있고, 비즈니스 트랜잭션 요청일 수도 있으며, 관리 트랜잭션 요청 등일 수도 있다. 처리될 트랜잭션 요청은 블록체인 상의 데이터에 대한 데이터 판독 요청 또는 데이터 기입 요청 등일 수 있다.
블록체인 노드는 처리될 트랜잭션 요청을 획득한 후, 가상머신 인스턴스를 실행하여 해당 처리될 트랜잭션 요청을 수행한다.
단계(S120), 상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하며; 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함한다.
본 출원의 실시예에서, 가상머신이 이전되는 타겟 블록체인 시스템 자체가 블록체인 데이터에 대한 가상머신 명령의 판독 및 기입을 지원하지 않을 수 있기 때문에, 인터페이스 모듈을 설치하여, 가상머신 인스턴스가 명령으로 표현한 데이터 액세스 요청을 파싱 및 전환함으로써, 블록체인 데이터를 액세스할 수 있는 인터페이스를 형성한다.
물론, 본 분야의 당업자는 블록체인 시스템이 가상머신 명령 세트를 지원할 수 있으면 인터페이스 모듈이 가상머신 명령을 직접 실행하여 데이터 액세스 조작을 구현할 수 있음을 이해할 수 있을 것이다.
가상머신 인스턴스는 처리될 트랜잭션 요청을 획득하고 수행을 가동하는 과정에서, 일반적으로 블록체인 데이터에 대한 판독 및 기입 액세스 수요가 생기게 된다. 블록체인 시스템에는 데이터를 저장하기 위한 데이터 저장 공간이 설치된다. 데이터는 온체인 데이터와 로컬 데이터로 나뉘고, 온체인 데이터는 블록에 추가되고 각 노드에 모두 저장되는 데이터를 의미한다. 로컬 데이터는 각 노드가 온체인 데이터의 콘텐츠 및 로컬 인덱스 수요에 따라, 노드 로컬에 저장하는 데이터이며, 각 노드에 저장된 로컬 데이터는 상이할 수 있다. 타겟 액세스 데이터는 처리될 트랜잭션 요청에 관한 데이터이며, 온체인 데이터 또는 로컬 데이터일 수 있다. 데이터 액세스 요청은 타겟 액세스 데이터를 액세스하기 위한 요청이다.
데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함한다. 데이터 판독 요청은 블록체인의 데이터 저장 공간에서 타겟 액세스 데이터를 판독하는 것을 의미하며, 데이터 기입 요청은 타겟 액세스 데이터를 블록체인의 데이터 저장 공간에 기입하는 것을 의미한다.
이더리움 가상머신 인스턴스는 설정된 명령 세트를 구비하며, 처리될 트랜잭션 요청을 수행하는 과정에서, 데이터를 판독 및 기입하는 명령을 생성하여, 데이터 액서스 요청을 표현한다.
단계(S130), 상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행한다.
여기서, 인터페이스 모듈은 데이터 액세스 요청에 대한 명령을 파싱 및 전환하며, 인터페이스 모듈에는 복수 개의 블록체인 액세스 인터페이스가 설치되어, 데이터 저장 공간 중의 데이터에 대한 각종 판독 및 기입 기능을 구현하게 된다. 인터페이스는 실질상 한 번 또는 여러 번의 데이터 판독, 기입, 컴퓨팅 등 처리를 수행할 수 있는 하나의 프로그램이며, 설정된 프로그램에 따라 기타 인터페이스를 호출할 수도 있다.
가상머신 인스턴스가 생성한 데이터 액세스 요청은 이더리움 가상머신 명령 형태이므로, 이더리움을 지원하지 않는 데이터 저장 시스템에 의해 직접 식별될 수 없기 때문에, 인터페이스 모듈이 데이터 액세스 명령에 대한 명령 전환을 수행하여야 한다.
상이한 데이터 액세스 요청은 온체인 데이터에 대한 조작 측면에서 차이가 존재하며, 데이터 액세스 요청에 대응되는 기능에 차이가 존재하는 점에서 표현된다. 따라서, 상이한 데이터 액세스 요청에 대응되는 블록체인 액세스 인터페이스도 상이하다. 구체적으로, 데이터 액세스 요청은 데이터 판독 요청 및 데이터 기입 요청인 경우, 각각 상이한 블록체인 액세스 인터페이스에 대응된다.
선택적으로, 상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행한다. 구체적으로, 인터페이스 모듈은 우선 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 데이터 액세스 요청의 기능에 대응되는 블록체인 액세스 인터페이스를 결정한다. 다음, 인터페이스 모듈은 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백한다.
여기서, 인터페이스 모듈은 우선 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 데이터 액세스 요청의 기능에 대응되는 블록체인 액세스 인터페이스를 결정하는 것은 다음의 단계를 포함한다.
단계 1, 인터페이스 모듈은 상기 데이터 액세스 요청이 속하는 가상머신 명령 및 명령 파라미터를 식별한다.
여기서, 가상머신 명령 및 명령 파라미터는 가상머신 인스턴스가 처리될 트랜잭션 요청을 수행할 때 생성된다. 명령 파라미터는 가상머신 명령에 포함된 파라미터 변수이다. 가상머신 명령을 실행함으로써, 타겟 액세스 데이터에 대한 액세스 조작을 구현할 수 있다. 타겟 액세스 데이터는 계정 데이터 및 계약 데이터를 포함한다. 따라서, 데이터 액세스 요청은 계정 데이터와 계약 데이터에 대한 판독 요청 및/또는 기입 요청이다.
이더리움 스마트 계약은 Geth를 통해 개발되고, Geth는 이더리움의 go 언어 버전 클라이언트이고, 이더리움 스마트 계약 개발의 필수 수단이다. 따라서, 이더리움에서 계정을 관리할 때 Geth에서 제공하는 명령 계정 조작 명령을 자주 사용한다. 예시적으로, 데이터 액세스 요청에 대응되는 가상머신 명령 및 명령 파라미터는 계정 리스트 명령(geth account list), 계정 업데이트 명령(geth account update), 또는 계정 생성 명령(personal.newAccount('Your Password'))일 수 있다. 데이터 액세스 요청이 속하는 가상머신 명령과 명령 파라미터의 구체적인 내용은 여기서 한정하지 않으며, 실제 상황에 따라 결정된다.
단계 2, 상기 인터페이스 모듈은 가상머신 명령과 인터페이스 사이의 기설정된 매핑 관계에 따라, 상기 데이터 액세스 요청에 대응되는 블록체인 액세스 인터페이스를 결정한다.
여기서, 인터페이스 매핑 관계는 가상머신 명령과 블록체인 액세스 인터페이스 간의 대응 관계를 의미한다. 인터페이스 매핑 관계는 사용자가 실제 상황에 따라 인터페이스 모듈에 미리 구성한 것이다.
데이터 액세스 요청은 가상머신 명령과 직접 관련되므로, 인터페이스 매핑 관계를 이미 알고 있는 전제하에, 가상머신 명령과 인터페이스 사이의 매핑 관계에 따라 데이터 액세스 요청에 대응되는 블록체인 액세스 인터페이스를 결정할 수 있다.
리던던트(redundant) 매핑 관계가 존재하는 것을 방지하기 위해, 하나의 선택적인 실시예에서, 하나 또는 복수 개의 가상머신 명령과 하나의 블록체인 액세스 인터페이스는 인터페이스 매핑 관계를 갖는다.
즉, 하나의 블록체인 액세스 인터페이스는 적어도 하나의 가상머신 명령에 대응된다. 상이한 가상머신 명령은 동일한 블록체인 액세스 인터페이스에 대응될 수 있다. 가상머신 명령과 하나의 블록체인 액세스 인터페이스의 인터페이스 매핑 관계는 본질적으로 가상머신 명령에 대응되는 타겟 액세스 데이터와 블록체인 액세스 인터페이스에 대응되는 데이터 저장 공간 중의 데이터 간의 대응 관계이다. 인터페이스 모듈을 통해, 매핑 관계에 기반하여 데이터 액세스 요청에 대해 명령 전환을 수행하여, 상기 데이터 액세스 요청의 기능에 대응되는 블록체인 액세스 인터페이스를 결정하기 때문에, 블록체인의 개방화, 컴포넌트화를 구현함으로써, 상이한 블록체인 간의 데이터 조작 난이도를 감소시킬 수 있다.
데이터 액세스 요청에 대응되는 블록체인 액세스 인터페이스를 결정한 후, 인터페이스 모듈은 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백한다.
여기서, 타겟 액세스 데이터는 블록체인의 데이터 저장 공간 내에 존재한다. 선택적으로, 데이터 저장 공간에서 상이한 데이터 구조를 지원할 수 있으며, 블록체인 시스템 자체의 설정에 의해 데이터 구조가 결정된다. 예를 들어, 블록체인 시스템에서는 일반적으로 계정, 로그 또는 트랜잭션 데이터 기록, 스마트 계약 등을 설정해야 하며, 권한 데이터 등도 설정할 수 있다. 타겟 액세스 데이터는 액세스를 위한 임의의 하나의 데이터 구조일 수 있다.
선택적으로, 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장하며; 상기 타겟 액세스 데이터는 계정 데이터 및/또는 계약 데이터를 포함한다.
이더리움에는 전형적으로 외부 계정 및 계약 계정이 설정되어 있다. 외부 계정은 키(key)에 의해 제어되는 계정을 의미한다. 계약 계정은 계약 코드에 의해 제어되는 계정을 의미한다. 두 가지 유형의 계정은 각각 하나의 계정의 기본 온체인 데이터를 포함한다. 계약 계정 중의 계약 데이터는 스마트 계약과 관련된 데이터를 의미한다. 외부 계정에는 계약 데이터가 존재하지 않는다. 이더리움에서, 외부 계정과 계약 계정은 모두 계정 유형의 데이터 구조를 통해 저장된다. 그러나, 이전한 타겟 블록체인 시스템에서 스마트 계약 코드를 포함하는 계약 계정을 지원하지 않으면, 계정 공간과 계약 공간을 각각 설정하여, 두 가지 상이한 유형의 데이터를 격리하여 저장하는 것이 바람직하다.
인터페이스 모듈은 블록체인 액세스 인터페이스를 호출하여, 블록체인 계정 공간과 계약 공간의 타겟 액세스 데이터에 대한 액세스 조작을 구현할 수 있으며, 즉, 계정 데이터 및 계약 데이터에 대한 판독 조작 및/또는 기입 조작을 구현하며, 타겟 액세스 데이터에 대응되는 액세스 결과를 획득한다. 인터페이스 모듈은 액세스 결과를 가상머신 인스턴스에 피드백한다. 액세스 결과는 구체적으로 판독되는 데이터일 수 있으며, 액세스 성공 여부의 액세스 상태를 피드백할 수도 있다.
물론, 본 분야의 당업자는 이더리움 가상머신이 상이한 블록체인 시스템에 이전되는 경우, 각종 상이한 블록체인 시스템이 자신이 사용하는 상이한 데이터 저장 구조 및 데이터 저장 방식을 구비하며, 이더리움 가상머신의 저장 방식에 기반하여, 블록체인 시스템의 저장 방식을 조정함으로써 호환성을 구현할 수 있음을 이해할 수 있을 것이다.
본 출원의 실시예의 기술방안은, 이더리움 가상머신을 기타 블록체인 시스템에 이전하여 트랜잭션 처리를 수행할 때, 인터페이스 모듈을 통해 블록체인 액세스 인터페이스를 호출함으로써, 이종(heterogeneous) 데이터 저장 공간을 액세스한다. 블록체인의 개방화, 컴포넌트화를 구현함으로써, 이더리움 가상머신이 기타 블록체인 시스템에 이전되는 난이도를 감소시킨다. 이외, 본 출원의 실시예는, 블록체인이 계약 데이터와 계정 데이터를 각각 저장하여, 상이한 유형의 데이터 저장 구조를 호환할 수 있어, 기타 블록체인이 상이한 데이터를 조작하는데 편리하도록 한다. 본 출원의 실시예는 인터페이스 모듈을 구축하고 블록체인 계정 데이터와 계약 데이터를 각각 저장하여, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.
본 실시예는 상기 실시예의 기초상에서 제공한 하나의 선택적인 방안이며, 구체적으로, 블록체인의 데이터 저장 공간 내의 계정 데이터 및 계약 데이터의 저장 방법을 세분화한 것이다.
이더리움에는 전형적으로 외부 계정 및 계약 계정이 설정되어 있음을 알 수 있다. 외부 계정은 키에 의해 제어되는 계정을 의미한다. 계약 계정은 계약 코드에 의해 제어되는 계정을 의미한다. 두 가지 유형의 계정은 각각 하나의 계정의 기본 온체인 데이터를 포함한다. 계약 계정 중의 계약 데이터는 스마트 계약과 관련된 데이터를 의미한다. 외부 계정에는 계약 데이터가 존재하지 않는다. 계약 계정과 외부 계정은 각각 블록체인의 데이터 저장 공간에 저장된다.
여기서, 상기 블록체인의 데이터 저장 공간은 적어도 두 가지 계정의 데이터 조작을 지원하고, 각각의 상기 계정의 계정 데이터는 동일한 데이터 구조를 사용한다.
가상머신 인스턴스가 트랜잭션 데이터에 대한 처리될 트랜잭션 요청을 수행하는 과정에서, 블록체인의 데이터 저장 공간 중의 데이터에 대한 데이터 판독 요청 및/또는 데이터 기입 요청을 생성한다. 구체적으로, 블록체인의 데이터 저장 공간 중의 외부 계정과 계약 계정 중의 데이터에 대해 데이터 액세스 조작을 수행한다. 데이터 저장 공간에서 외부 계정과 계약 계정은 동일한 데이터 구조를 사용한다. 선택적으로, 외부 계정과 계약 계정은 모두 계정 유형의 데이터 구조를 통해 저장된다.
여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장하며; 상기 타겟 액세스 데이터는 계정 데이터 및/또는 계약 데이터를 포함한다.
이더리움 가상머신을 기타 블록체인 시스템에 이전시키는 경우, 이전한 타겟 블록체인 시스템에서 스마트 계약 코드를 포함하는 계약 계정을 지원하지 않으면, 데이터 저장 공간에 계정 공간과 계약 공간을 각각 설정하여, 두 가지 상이한 유형의 데이터를 격리하여 저장하는 것이 바람직하다.
이더리움에서 외부 계정과 계약 계정에 각각 계정 데이터가 존재하며, 외부 계정은 계약 계정에 계정 데이터 외에도 계약 데이터가 더 존재하는 점에서 계약 계정과 상이하다. 계정 데이터와 계약 데이터를 격리하여 저장하기 위해, 외부 계정과 계약 계정 중의 계정 데이터를 계정 공간에 저장하고, 계약 계정 중의 계약 데이터를 계약 공간에 단독으로 저장한다.
가상머신 인스턴스가 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하며, 즉, 해당 데이터 액세스 요청은 계정 공간 중의 계정 데이터 및/또는 계약 공간 중의 계약 데이터에 대하여 생성된 데이터 액세스 요청이다.
하나의 선택적인 실시예에서, 상기 계정 데이터는 계정 식별자, 거래 시퀀스 넘버, 계정 공개키 및 토큰(token)을 포함한다.
예시적으로, 블록체인의 데이터 저장 공간에서, 다음과 같은 데이터 구조를 사용하여 계약 계정과 외부 계정 중의 계정 데이터를 저장할 수 있다.
type AccountData struct {
Address string
Sequence uint
Pubkey string
Balance uint }
여기서, Address는 계정 식별자를 표시하고, Sequence는 거래 시퀀스 넘버를 표시하며, Pubkey는 계정 공개키를 표시하고, Balance는 토큰을 표시한다. 여기서, 상기 계정 식별자는 계정 데이터의 데이터 호출 식별자이고, 계정 식별자는 계정 주소 또는 계정 명칭일 수 있으며, 상이한 계정 데이터는 상이한 계정 식별자를 구비한다. 거래 시퀀스 넘버는 이미 거래가 이루어진 횟수를 기록하기 위한 데이터를 의미한다. 계정 공개키는 계정을 암호화하기 위한 공개키를 의미한다. 토큰은 디지털 형식으로 존재하는 권익 인증서(certificate)를 의미하며, 토큰은 고유적 가치 및 내재적 가치를 대표하고, 디지털화가 가능한 모든 권익 증명을 대표할 수 있다. 예시적으로, 토큰은 화폐, 채권, 계정 아이템(account item), 소유권 또는 자격 등 권익 증명일 수 있다.
계정 데이터에 대한 관리 효율을 향상시키고, 아울러 계정 데이터에 대한 조작의 편의성을 향상시키기 위해, 하나의 선택적인 실시예에서, 상기 계정 데이터는 키-밸류 쌍(key-value pair) 저장 형식을 사용하고, 상기 계정 식별자는 키 밸류로서 키 필드에 저장되고, 상기 거래 시퀀스 넘버, 계정 공개키 및 토큰은 밸류 필드에 저장된다.
계정 식별자는 키 정보로서 거래 시퀀스 넘버, 계정 공개키 및 토큰 등 세 가지 밸류 정보에 대응된다. 키 밸류인 계정 식별자는 계정 데이터를 조작하는 경우, 계정 데이터를 인덱스싱하며, 데이터 액세스 명령에 타겟 계정 데이터의 계정 식별자를 추가하고, 해당 계정 식별자에 따라 타겟 계정 데이터의 거래 시퀀스 넘버, 계정 공개키 및 토큰 정보를 획득할 수 있다.
하나의 선택적인 실시예에서, 상기 계약 데이터는 계정 식별자, 계약 바이트코드 및 계약 내 변수를 포함하며; 계약 바이트코드는 스마트 계약을 컴파일하여 획득되고, 실행 프로그램을 포함하며, 일련의 op 코드/데이터 쌍으로 구성된 이진 파일(binary file)을 의미하며, 하나의 중간 코드이다. 계약 내 변수는 스마트 계약에 포함된 변수, 스마트 계약을 수행하는 과정에서 해당 변수를 입력한 데이터 및 스마트 계약을 수행하는 과정에서 생성되는 중간 변수를 의미한다.
여기서, 계약 계정의 계정 식별자는 스마트 계약의 계약 호출 식별자이다. 상이한 스마트 계약은 상이한 계정 식별자를 구비한다. 스마트 계약을 호출하는 경우, 데이터 액세스 요청에 계약 호출 식별자를 추가하고, 해당 계약 호출 식별자에 따라 호출할 스마트 계약을 결정할 수 있다.
계약 데이터를 조작하는 시나리오에서, 계약 데이터 포지셔닝의 속도 및 정확성을 향상시키기 위해, 하나의 선택적인 실시예에서, 상기 계약 데이터는 키-밸류 쌍 저장 형식을 사용하며, 상기 계정 식별자는 키 밸류의 프리픽스(prefix)로서, 상기 계약 바이트코드 및 계약 내 변수 각각의 식별자와 조합되어, 키 필드에 저장되며; 상기 계약 바이트코드 및 계약 내 변수는 밸류 필드에 저장된다.
키 밸류는 계정 식별자, 계약 바이트코드 및 계약 내 변수 각각의 식별자를 포함하며, 계정 식별자는 키 밸류의 프리픽스로서 상이한 계약 데이터를 구분할 수 있으며, 구체적인 계약 데이터를 포지셔닝한 후, 키 밸류 중의 계약 바이트코드와 계약 내 변수의 식별자에 따라, 조작이 필요한 계약 데이터를 보다 정확하게 결정한다.
계정 식별자는 키 정보로서 계약 바이트코드와 계약 내 변수 등 두 가지 밸류 정보에 대응된다. 키 밸류인 계정 식별자는 계약 데이터를 조작하는 경우, 계약 데이터를 인덱스싱하며, 데이터 액세스 명령에 타겟 계약 데이터의 계정 식별자를 추가하고, 해당 계정 식별자에 따라 타겟 계약 데이터의 계약 바이트코드 및 계약 내 변수를 획득할 수 있다.
하나의 계약 계정에 속하는 계정 데이터와 계약 데이터의 계정 식별자는 일치하며, 계정 데이터와 계약 데이터는 일일이 대응된다. 계약 계정 중의 계정 데이터 및 계약 데이터를 조작하는 경우, 모두 키 밸류를 통해 인덱싱한다. 계정 데이터의 키 밸류는 단지 계정 식별자만을 포함하고, 계약 데이터의 키 밸류는 계정 식별자를 프리픽스로 하여 계약 바이트코드 및 계약 내 변수 각각의 식별자와 공동으로 구성된다. 따라서, 계정 데이터의 키 밸류와 계약 데이터의 식별자를 구분할 수 있다.
본 출원의 실시예는 데이터 저장 공간을 계정 공간과 계약 공간으로 구획하여, 외부 계정과 계약 계정 중의 계정 데이터를 계정 공간에 저장하고, 계약 계정 중의 계약 데이터를 계약 공간에 저장하여, 계정 데이터와 계약 데이터를 격리하여 저장함으로써, 상이한 블록체인 시스템에 저장되는 데이터 구조의 호환성을 향상시킨다. 계약 계정 중의 계정 데이터와 외부 계정의 계정 데이터는 동일한 데이터 구조를 구비하므로, 블록체인 간의 데이터 조작 난이도를 감소시키고, 아울러, 블록체인의 이전 난이도를 감소시킨다.
본 실시예는 상기 실시예의 기초상에서 제공한 하나의 선택적인 방안이다. 상기 실시예에서 언급한 블록체인 액세스 인터페이스의 종류 및 기능에 대해 구체적으로 설명하도록 한다.
상기 블록체인 액세스 인터페이스의 유형은 계정 액세스 인터페이스, 저장 액세스 인터페이스 및 계약 조작 인터페이스를 포함하며; 여기서, 상기 계정 액세스 인터페이스는 계정 데이터를 액세스하는데 사용되고, 상기 계약 조작 인터페이스는 계약 계정을 조작하는데 사용되며, 상기 저장 액세스 인터페이스는 계약 데이터를 업데이트하는데 사용된다.
상기 블록체인 액세스 인터페이스 중의 블록체인 판독 인터페이스는, 계약 내 변수 판독 인터페이스; 계정 토큰 잔액 판독 인터페이스; 계약 바이트코드 판독 인터페이스; 계정의 거래 시퀀스 넘버 판독 인터페이스; 온체인 계약 조회 인터페이스; 온체인 계정 조회 인터페이스; 블록의 높이에 따라 블록의 해시를 판독하는 판독 인터페이스; 중 적어도 하나를 포함한다.
여기서, 계약 내 변수 판독 인터페이스는 계약 데이터 중의 계약 내 변수를 판독하는데 사용되고; 계정 토큰 잔액 판독 인터페이스는 계정 데이터 중의 계정 토큰 잔액을 판독하는데 사용되며; 계약 바이트코드 판독 인터페이스는 계약 계정 중의 계약 바이트코드를 판독하는데 사용되고; 계정의 거래 시퀀스 넘버 판독 인터페이스는 계정 데이터 중의 거래 시퀀스 넘버를 판독하는데 사용되며; 온체인 계약 조회 인터페이스는 체인에 저장된 스마트 계약을 조회하는데 사용되고; 온체인 계정 조회 인터페이스는 체인에 저장된 계정 정보를 조회하는데 사용되며; 블록의 높이에 따라 블록의 해시를 판독하는 판독 인터페이스는 블록의 높이에 따라 블록의 해시를 판독하는데 사용된다.
블록체인은 일반적으로 하나의 수직되는 스택으로 간주되므로, 첫 번째 블록을 스택 바텀의 프라이머리 블록으로 하고, 다음 각 블록은 모두 이전의 블록 위에 배치된다. 블록의 높이는 블록과 프라이머리 블록 간의 거리를 나타낸다. 블록의 높이는 블록 식별자로서 구체적인 블록을 결정할 수 있다. 블록의 해시는 블록의 메인 식별자이며, 보안 해시 알고리즘(SHA256)을 통해 블록 헤드에 대한 2차 해시 계산을 수행함으로써 얻은 32바이트 해시값을 블록 해시값으로 칭하며, 이는 블록의 디지털 지문이다.
하나의 선택적인 실시예에서, 상기 블록체인 액세스 인터페이스 중의 블록체인 기입 인터페이스는, 계약 계정 생성 인터페이스; 계약 바이트코드 초기화 인터페이스; 계약 계정 삭제 인터페이스; 계약 내 변수 저장 인터페이스; 계정 잔액 증가 인터페이스; 계정 잔액 감소 인터페이스; 중 적어도 하나를 포함한다.
여기서, 계약 계정 생성 인터페이스는 계약 공간에서 계약 계정을 생성하는데 사용되고; 계약 바이트코드 초기화 인터페이스는 계약 공간 중의 바이트코드를 초기화하는데 사용되며; 계약 계정 삭제 인터페이스는 계약 공간의 계약 계정을 삭제하는데 사용되고; 계약 내 변수 저장 인터페이스는 계약 내 변수를 저장하는데 사용되며; 계정 잔액 증가 인터페이스는 계정 잔액을 증가시키는데 사용되고; 계정 잔액 감소 인터페이스는 계정 잔액을 감소시키는데 사용된다.
상기 인터페이스에서, 계정 액세스 인터페이스는, 판독 인터페이스, 즉, 계정 토큰 잔액 판독 인터페이스, 계정의 거래 시퀀스 넘버 판독 인터페이스, 온체인 계정 조회 인터페이스; 기입 인터페이스, 즉, 계정 잔액 증가 인터페이스, 계정 잔액 감소 인터페이스를 포함한다. 계약 조작 인터페이스는, 판독 인터페이스, 즉, 계약 바이트코드 판독 인터페이스, 온체인 계약 조회 인터페이스, 블록의 높이에 따라 블록의 해시를 판독하는 판독 인터페이스; 기입 인터페이스, 즉, 계약 계정 생성 인터페이스; 계약 바이트코드 초기화 인터페이스; 계약 계정 삭제 인터페이스를 포함한다. 저장 액세스 인터페이스는, 판독 인터페이스, 즉, 계약 내 변수 판독 인터페이스; 기입 인터페이스, 즉, 계약 내 변수 저장 인터페이스를 포함한다.
본 출원의 실시예는 타겟 액세스 데이터가 저장되어 있는 블록체인에 다양한 유형의 복수 개의 블록체인 액세스 인터페이스를 설치하여, 가상머신 인스턴스가 실행되는 블록체인 노드의 트랜잭션 요청 처리에 편리함을 제공함으로써, 가상머신 인스턴스의 블록체인 노드가 처리할 수 있는 트랜잭션 요청의 커버리지를 향상시킨다.
여기서, 하나의 처리될 트랜잭션 요청을 처리하는 과정에서는, 각 링크(link)에서 복수 개의 데이터 액세스 요청이 생성될 수 있다.
예를 들어, 처리될 트랜잭션 요청을 처리할 때 생성될 수 있는 데이터 액세스 요청은, 계약 계정 생성 요청, 계약 바이트코드 초기화 요청, 계약 계정 삭제 요청, 계약 내 변수 저장 요청, 계정 잔액 증가 요청, 계정 잔액 감소 요청, 계약 내 변수 판독 요청, 계정 토큰 잔액 판독 요청, 계약 바이트코드 판독 요청, 계정의 거래 시퀀스 넘버 판독 요청, 온체인 계약 조회 요청, 온체인 계정 조회 요청, 블록의 높이에 따라 블록의 해시를 판독하는 판독 요청 중 적어도 하나를 포함한다.
이하, 비지니스 트랜잭션 요청을 처리하는 일반적인 과정에서 생성되는 데이터 액세스 요청을 예시적으로 설명하도록 한다.
1. 데이터 액세스 요청이 온체인 계약 조회 요청 및 온체인 계정 조회 요청인 경우, 상기 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득할 때, 상기 처리될 트랜잭션 요청 중의 계약 호출자 식별자 및 호출될 계약 식별자를 획득한다.
여기서, 계약 호출자 식별자는 스마트 계약을 호출하는 당사자의 신원을 식별하기 위한 정보이고, 계약 호출자 식별자는 계정 식별자일 수 있다. 호출될 계약 식별자는 호출되는 스마트 계약을 식별하기 위한 정보이고, 선택적으로, 호출될 계약 식별자는 계약 주소 또는 계정 식별자이다.
상기 가상머신 인스턴스는 상기 계약 호출자 식별자 및 호출될 계약 식별자에 따라 호출자의 온체인 계정 조회 요청 및 온체인 계약 조회 요청을 각각 생성하여, 상기 인터페이스 모듈에 전송한다.
처리될 트랜잭션 요청의 유효성을 결정하기 위해, 가상머신 인스턴스는 계약 호출자 식별자 및 호출될 계약 식별자에 의해 식별되는 계정 및 계약의 존재 여부를 결정해야 한다. 가상머신 인스턴스는 상기 계약 호출자 식별자 및 호출될 계약 식별자에 따라 호출자의 온체인 계정 조회 요청 및 온체인 계약 조회 요청을 각각 생성하며, 가상머신 인스턴스는 생성된 온체인 계정 조회 요청 및 온체인 계약 조회 요청을 인터페이스 모듈에 전송한다. 여기서, 온체인 계정 조회 요청은 계약 호출자 식별자에 의해 식별되는 계정의 존재 여부를 조회하는데 사용되고, 상응하게, 온체인 계약 조회 요청은 호출될 계약 식별자에 의해 식별되는 계약의 존재 여부를 조회하는데 사용된다.
상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 명령 전환을 수행하여, 온체인 계정 조회 요청에 대응되는 온체인 계정 조회 인터페이스 및 온체인 계약 조회 요청에 대응되는 온체인 계약 조회 인터페이스를 결정한다.
상기 인터페이스 모듈은 상기 블록체인의 계정 공간에 대해 상기 온체인 계정 조회 인터페이스를 호출하여, 체인에 계약 호출자 계정이 존재하는지 여부를 조회한다.
인터페이스 모듈은 온체인 계정 조회 요청을 수신한 후, 온체인 계정 조회 요청 중의 계약 호출자 식별자에 따라, 계약 호출자 식별자에 대응되는 계정 공간을 결정하며, 상기 블록체인의 계정 공간에 대해 상기 온체인 계정 조회 인터페이스를 호출하여, 체인에 계약 호출자 계정이 존재하는지 여부를 조회한다.
상기 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해 온체인 계약 조회 인터페이스를 호출하여, 체인에 호출될 계약이 존재하는지 여부를 조회한다.
인터페이스 모듈은 온체인 계약 조회 요청을 수신한 후, 온체인 계약 조회 요청 중의 호출될 계약 식별자에 따라, 호출될 계약 식별자에 대응되는 계약 공간을 결정하며, 상기 블록체인의 계약 공간에 대해, 상기 온체인 계약 조회 인터페이스를 호출하여, 체인에 호출될 계약이 존재하는지 여부를 조회한다.
상기 인터페이스 모듈은 계약 호출자 계정 및 호출될 계약의 조회 결과를 상기 가상머신 인스턴스에 피드백한다.
여기서, 조회 결과는 계약 호출자 계정이 존재 또는 존재하지 않는 경우, 호출될 계약이 존재 또는 존재하지 않는 경우 및 상기 두 가지 경우의 조합을 포함한다. 인터페이스 모듈은 조회 결과를 가상머신 인스턴스에 피드백한다. 조회 결과가 계약 호출자 계정 또는 호출될 계약 중 하나 또는 전부가 존재하지 않는 경우이면, 가상머신 인스턴스는 해당 처리될 트랜잭션 요청에 대해 오류 정보를 피드백한다.
2. 데이터 액세스 요청이 계약 바이트코드 판독 요청인 경우,
상기 가상머신 인스턴스는 인터페이스 모듈이 피드백한 온체인 계정과 온체인 계약이 존재하는 조회 결과를 획득하게 되면, 상기 호출될 계약 식별자에 따라 계약 바이트코드 판독 요청을 생성하여, 인터페이스 모듈에 전송한다.
여기서, 계약 바이트코드 판독 요청은 계약 공간에 저장된 계약 바이트코드를 판독하는데 사용되는 요청을 의미한다. 인터페이스 모듈이 가상머신 인스턴스에 피드백한 조회 결과가 온체인 계정과 온체인 계약이 존재하는 것이면, 처리될 트랜잭션 요청이 유효함을 나타내며, 가상머신 인스턴스는 호출될 계약 식별자에 따라 계약 바이트코드 판독 요청을 생성하여, 인터페이스 모듈에 전송한다.
상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 계약 바이트코드 판독 요청에 대응되는 계약 바이트코드 판독 인터페이스를 결정한다.
상기 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해 계약 바이트코드 판독 인터페이스를 호출하여, 호출될 계약의 계약 바이트코드를 판독하며, 판독한 계약 바이트코드를 상기 가상머신 인스턴스에 피드백한다.
인터페이스 모듈은 계약 바이트코드 판독 요청을 수신한 후, 계약 바이트코드 판독 요청에 따라, 계약 바이트코드가 저장된 계약 공간을 결정하며, 상기 블록체인의 계약 공간에 대해, 계약 바이트코드 판독 인터페이스를 호출하여, 호출될 계약의 계약 바이트코드를 판독한다.
3. 데이터 액세스 요청이 계약 내 변수 판독 요청인 경우,
상기 가상머신 인스턴스는 상기 인터페이스 모듈이 피드백한 계약 바이트코드 및 상기 처리될 트랜잭션 요청 중의 계약 파라미터와 토큰에 따라, 상기 처리될 트랜잭션 요청을 수행하며, 수행 과정에서 계약 내 변수 판독 요청을 생성하여, 상기 인터페이스 모듈에 전송하며; 여기서, 계약 내 변수는 스마트 계약 실행 과정 중의 변수 및 변수값을 포함한다.
여기서, 계약 파라미터와 토큰은 가상머신 인스턴스가 계약 바이트코드를 실행할 때 가상머신 인스턴스에 입력해야 하는 변수이다. 가상머신 인스턴스가 처리될 트랜잭션 요청을 수행하는 과정은 인터페이스 모듈이 피드백한 계약 바이트코드를 실행하는 과정이다. 가상머신 인스턴스가 계약 바이트코드를 실행하는 과정에서 계약 내 변수 판독 요청을 생성하며, 해당 계약 내 변수 판독 요청을 인터페이스 모듈에 전송한다.
주의해야 할 점은, 모든 계약 내 변수가 체인에 저장될 필요는 없으며, 계약 내 변수는 계약 수행 과정에서 생성된 중간값을 포함하고, 이러한 중간값은 계약 수행 과정에서 생성된 기타 값에 의해 커버될 수 있다. 예시적으로, 하나의 빌링 누적(billing accumulation) 기능을 구비한 스마트 계약은 변수 A 및 B를 포함하며, A는 기존 액수이고, B는 금번의 누적 액수이다. 상이한 거래에서, A와 B의 값은 상이하며, 예를 들어, 사용자 갑은 A(10원)의 기초상에서, B(2원)를 누적하는 하나의 거래를 시작한다. 상기 예시에서, A와 B는 변수이고, 10과 2는 변수의 값이며, A, B 및 A와 B에 대응되는 값인 10과 2는 모두 계약 내 변수로서, 계약 공간에 기록되어야 한다. 그러나, 스마트 계약의 수행 과정에서, 변수 A와 B에 대응되는 변수값은 변화될 수 있는데, 과정 중의 변수값은 일반적으로 체인에 저장되지 않고, 변수 A와 B 및 두 개의 변수에 대응되는 최종 변수값이 체인에 저장된다.
상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 계약 내 변수 판독 요청에 대응되는 계약 내 변수 판독 인터페이스를 결정한다.
상기 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해 계약 내 변수 판독 인터페이스를 호출하여, 계약 내 변수의 값을 판독하며, 판독한 값을 상기 가상머신 인스턴스에 피드백한다.
여기서, 인터페이스 모듈은 계약 내 변수 판독 요청을 수신한 후, 계약 내 변수 판독 요청에 따라, 계약 내 변수가 저장된 계약 공간을 결정하며, 상기 블록체인의 계약 공간에 대해, 계약 내 변수 판독 인터페이스를 호출하여, 호출될 계약의 계약 내 변수를 판독하며, 판독한 계약 내 변수를 상기 가상머신 인스턴스에 피드백한다.
4. 데이터 액세스 요청이 계약 내 변수 저장 요청인 경우,
상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 계약 내 변수 저장 요청을 생성하여, 인터페이스 모듈에 전송한다.
여기서, 계약 내 변수 저장 요청은 계약 내 변수를 계약 공간에 저장하기 위한 요청이다. 가상머신 인스턴스는 처리될 트랜잭션 요청을 수행하는 과정에서, 데이터 처리 결과를 생성하며, 해당 데이터 처리 결과를 계약 공간에 저장해야 하는 경우, 가상머신 인스턴스는 계약 내 변수 저장 요청을 생성하며, 계약 내 변수 저장 요청을 인터페이스 모듈에 전송한다.
상기 인터페이스 모듈은 상기 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 계약 내 변수 저장 요청에 대응되는 계약 내 변수 저장 인터페이스를 결정하며;
상기 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해 계약 내 변수 저장 인터페이스를 호출하여, 계약 내 변수의 값을 기입한다.
인터페이스 모듈은 계약 내 변수 저장 요청을 수신한 후, 계약 내 변수 저장 요청에 따라, 계약 내 변수의 타겟 계약 공간을 결정하며, 상기 블록체인의 계약 공간에 대해, 계약 내 변수 저장 인터페이스를 호출하여, 계약 내 변수의 값을 계약 공간에 기입한다.
본 출원의 실시예는 가상머신 인스턴스와 인터페이스 모듈을 결합하여, 처리될 트랜잭션 요청을 공동으로 완성하여, 상이한 블록체인 간의 데이터 액세스 조작을 구현하기 때문에, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.
도 2은 본 출원의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이며, 본 실시예는 상기 실시예를 최적화한 것으로서, 하나의 바람직한 실시예이며, 구체적으로 한 번의 완전한 처리될 트랜잭션 요청의 수행 과정을 설명한 것이다.
도 2를 참조하면, 본 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 다음의 단계를 포함한다.
단계 1, 블록체인 노드에서 가상머신 인스턴스를 실행하여, 처리될 트랜잭션 요청을 획득한다.
선택적으로, 처리될 트랜잭션 요청은 한 번의 거래 트랜잭션 요청이다. 거래 트랜잭션 요청은 계약 호출자(From), 호출되는 계약(To), 호출 계약으로부터 입력되는 토큰(Amout) 및 계약 호출 방법의 방법 서명과 인커밍 파라미터(Data) 등 네 개의 파라미터를 포함한다. 블록체인 노드는 거래 트랜잭션 요청 중의 From, To, Amout 및 Data를 가상머신 인스턴스에 입력함으로써, 가상머신 인스턴스에서 호출자(Caller), 피호출자(Callee), 값(Value) 및 입력 파라미터(Input)로 존재하게 한다.
구체적으로, 블록체인 노드에서 실행되는 가상머신 인스턴스는 계약 호출자에 의해 시작되는 처리될 트랜잭션 요청을 획득한다. 여기서, 처리될 트랜잭션 요청은, 계약 호출자 식별자, 호출될 계약 식별자, 계약 파라미터 및 토큰을 포함한다. 처리될 트랜잭션 요청이 거래 트랜잭션 요청인 경우, 가상머신 인스턴스 중의 호출자(Caller)는 계약 호출자 식별자이고; 피호출자(Callee)는 호출될 계약 식별자이며; 값(Value)은 토큰이고; 입력 파라미터(Input)는 계약 파라미터이다.
단계 2, 가상머신 인스턴스는 호출자(Caller) 및 피호출자(Callee)에 따라, 인터페이스 모듈 중의 온체인 계정 조회 인터페이스(Acc Exists)와 온체인 계약 조회 인터페이스(Contract Exists)를 호출하여, 블록체인의 데이터 저장 공간에 호출될 계약과 계약 호출자가 존재하는지 여부를 각각 조회한다.
구체적으로, 가상머신 인스턴스가 거래 트랜잭션 요청을 수신한 후, 가상머신 인스턴스는 거래 트랜잭션 요청 중의 계약 호출자 식별자 및 호출될 계약 식별자에 따라 호출자의 온체인 계정 조회 요청 및 온체인 계약 조회 요청을 각각 생성하여, 상기 인터페이스 모듈에 전송한다. 여기서, 인터페이스 모듈에는 가상머신 인스턴스의 인터페이스가 캡슐화된다. 인터페이스 모듈은 온체인 계정 조회 요청에 따라, 블록체인의 계정 공간에 대해, 온체인 계정 조회 인터페이스를 호출하여, 체인에 계약 호출자 계정이 존재하는지 여부를 조회하며; 인터페이스 모듈은 온체인 계약 조회 요청에 따라, 블록체인의 계약 공간에 대해, 온체인 계약 조회 인터페이스를 호출하여, 체인에 호출될 계약이 존재하는지 여부를 조회한다. 인터페이스 모듈은 계약 호출자 계정과 호출될 계약의 조회 결과를 가상머신 인스턴스에 피드백한다.
단계 3, 계약 호출자와 호출될 계약이 모두 블록체인의 데이터 저장 공간에 존재하는 경우, 가상머신 인스턴스는 인터페이스 모듈 중의 계약 바이트코드 판독 인터페이스(Get Code)를 호출하여, 계약 공간(Contract Store)에 저장된 계약 바이트코드(Code)를 획득한다.
구체적으로, 가상머신 인스턴스는 인터페이스 모듈이 피드백한 온체인 계정과 온체인 계약이 존재하는 조회 결과를 획득하게 되면, 호출될 계약 식별자에 따라 계약 바이트코드 판독 요청을 생성하여, 인터페이스 모듈에 전송하며, 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해, 계약 바이트코드 판독 인터페이스를 호출하여, 호출될 계약의 계약 바이트코드를 판독하며, 판독한 계약 바이트코드를 상기 가상머신 인스턴스에 피드백한다.
단계 4, 가상머신 인스턴스는 Caller, Value, Input 및 Code를 가상머신 인스턴스 수행모듈(EVM Execute)에 전송하여, EVM Execute가 거래 트랜잭션 요청을 수행하도록 한다.
단계 5 및 단계 6, EVM Execute는 Caller, Value, Input 및 Code에 따라 거래 트랜잭션 요청을 수행하며, 거래 트랜잭션 요청의 수행 과정에서 계약 내 변수의 판독 및 저장을 수행하여, 계약 상태를 변경한다.
구체적으로, 가상머신 인스턴스는 인터페이스 모듈이 피드백한 계약 바이트코드 및 처리될 트랜잭션 요청 중의 계약 파라미터와 토큰에 따라, 처리될 트랜잭션 요청을 수행하며, 수행 과정에서 계약 내 변수 판독 요청을 생성하여, 상기 인터페이스 모듈에 전송하며; 여기서, 계약 내 변수는 스마트 계약 실행 과정 중의 변수 및 변수값을 포함한다. 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해, 계약 내 변수 판독 인터페이스를 호출하여, 계약 내 변수의 값을 판독하며, 판독한 값을 상기 가상머신 인스턴스에 피드백한다.
가상머신 인스턴스가 처리될 트랜잭션 요청을 수행하는 과정에서, 계약 내 변수 저장 요청을 생성하여, 인터페이스 모듈에 전송하며; 인터페이스 모듈은 상기 블록체인의 계약 공간에 대해 계약 내 변수 저장 인터페이스를 호출하여, 계약 내 변수의 값을 기입한다. 설명해야 할 것은, 도 3의 연결선과 표기된 숫자는 숫자가 표시하는 단계에서의 데이터 플로우를 나타낸다.
본 출원의 실시예에서, 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하며, 상기 인터페이스 모듈은 상기 블록체인의 데이터 저장 공간에 대해, 상기 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백한다. 본 출원은 가상머신 인스턴스와 인터페이스 모듈을 결합하여, 처리될 트랜잭션 요청을 공동으로 완성하여, 상이한 블록체인 간의 데이터 액세스 조작을 구현하기 때문에, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.
도 3은 본 출원의 실시예에 따른 또 다른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이며; 본 실시예는 상기 실시예의 기초상에서 제공한 하나의 선택적인 방안이다. 구체적으로, 처리될 트랜잭션 요청이 계약 계정에 기반한 계약 계정 생성 요청인 경우, 해당 처리될 트랜잭션 요청을 수행하는 과정을 세분화한 것이다.
도 3을 참조하면, 본 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 다음의 단계를 포함한다.
단계(S310), 블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득한다.
단계(S320), 상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하며; 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함한다.
단계(S330), 상기 데이터 액세스 요청이 계약 계정 생성 요청이면, 상기 인터페이스 모듈은 상기 계약 계정 생성 요청에 따라 계약 계정 생성 인터페이스를 호출하여, 상기 계정 공간에 계약 계정을 생성하고 상기 계약 계정의 계정 데이터를 기입하며, 계약 공간을 생성한다.
여기서, 계약 계정에 기반한 계약 계정 생성 요청은 새로운 계약 계정을 생성하기 위한 요청이다. 계약 계정 생성 요청은 새로 생성된 계약 계정의 계정 데이터와 계약 데이터를 기입하는 것을 포함한다. 계약 계정에 기반한 계약 계정 생성 요청은 새로 생성된 계약 계정의 계정 데이터 및 스마트 계약을 기입하는 것을 포함한다.
가상머신 인스턴스는 계약 계정에 기반한 계약 계정 생성 요청을 수행하여, 타겟 계약 계정에 대한 데이터 액세스 요청을 생성한다. 계약 계정에는 계약 데이터 및 계정 데이터가 포함되므로, 구체적으로, 계약 계정에 대한 계정 데이터 기입 요청과 계약 데이터 기입 요청을 생성한다. 계정 데이터 기입 요청은 계약 계정의 계정 공간에 계정 데이터를 기입하는 것이며; 계약 데이터 기입 요청은 계약 계정의 계약 공간에 계약 데이터를 기입하는 것이다. 여기서, 계약 공간과 계정 공간은 공간에서 분리된다.
인터페이스 모듈은 데이터 액세스 요청을 수신한 후, 우선 상기 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 계약 계정 생성 요청에 대응되는 계약 계정 생성 인터페이스를 결정한다. 구체적으로, 인터페이스 모듈은 해당 계약 계정 생성 요청이 속하는 가상머신 명령 및 명령 파라미터를 식별하고, 가상머신 명령과 인터페이스 사이의 기설정된 매핑 관계에 따라, 계약 계정 생성 요청에 대응되는 블록체인 액세스 인터페이스를 결정한다.
일반적인 경우, 블록체인에는 계정 공간이 존재하기 때문에, 인터페이스 모듈은 계약 계정 생성 요청을 수신한 후, 계약 계정 생성 요청에 따라 타겟 계정 공간을 결정할 수 있으며, 블록체인의 계정 공간에 대해 계약 계정 생성 인터페이스를 호출하여, 계정 공간에 계약 계정을 생성하고 계약 계정의 계정 데이터를 기입한다. 그러나, 계약 공간은 계약 데이터를 저장하기 위한 공간으로서, 계약 계정을 생성할 때 계약 공간을 생성해야 한다.
단계(S340), 상기 인터페이스 모듈은 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 바이트코드 초기화 인터페이스를 호출하여, 생성될 스마트 계약을 컴파일하고, 계약 바이트코드를 형성하여 상기 계약 공간에 기입한다. 여기서, 계약 바이트코드 초기화 인터페이스는 생성될 스마트 계약을 컴파일하여 계약 바이트코드를 획득하며, 해당 바이트코드를 계약 공간에 기입하기 위한 인터페이스이다.
계약 공간을 생성한 후, 계약 공간의 계약 데이터를 초기화해야 하며, 인터페이스 모듈은 계약 계정 생성 인터페이스를 수행하는 과정에서, 계약 바이트코드 초기화 인터페이스를 호출하여, 스마트 계약을 컴파일하고, 계약 바이트코드를 형성하여 상기 계약 공간에 기입한다.
단계(S350), 상기 인터페이스 모듈은 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 내 변수 저장 인터페이스를 호출하여, 상기 계약 공간에 상기 스마트 계약의 계약 내 변수를 생성하여 저장한다.
스마트 계약에는 변수가 존재하고, 스마트 계약의 수행 과정에서 이러한 변수를 조작하기 때문에, 스마트 계약 내의 변수 및 변수값도 계약 공간 내에 저장되어야 한다. 인터페이스 모듈은 계약 계정 생성 인터페이스를 수행하는 과정에서, 계약 내 변수 저장 인터페이스를 호출하여, 계약 공간에 스마트 계약의 계약 내 변수를 생성하여 저장한다.
본 출원의 실시예의 기술방안은, 가상머신 인스턴스 및 인터페이스 모듈을 결합하여, 계약 계정에 기반한 계약 계정 생성 방안을 제공하므로, 계정 공간과 계약 공간을 격리할 수 있어, 사용자가 자신의 수요에 따라 계약 계정을 생성할 수 있도록 함으로써, 블록체인의 비즈니스 확장성을 향상시킨다.
도 4는 본 출원의 실시예에 따른 또 다른 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 개략도이며; 본 실시예는 상기 실시예의 기초상에서 제공한 하나의 선택적인 방안이다. 구체적으로, 처리될 트랜잭션 요청이 계약 계정에 기반한 계약 계정 삭제 요청인 경우, 해당 처리될 트랜잭션 요청을 수행하는 과정을 세분화한 것이다.
도 4를 참조하면, 본 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 다음의 단계를 포함한다.
단계(S410), 블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득한다.
단계(S420), 상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하며; 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함한다.
단계(S430), 상기 데이터 액세스 요청이 계약 계정 삭제 요청이면, 상기 인터페이스 모듈은 상기 계약 계정 삭제 요청에 따라 계약 계정 삭제 인터페이스를 호출하여, 상기 계정 공간에서 삭제될 계약 계정의 계정 데이터를 삭제하며, 계약 공간 중의 상기 삭제될 계약 계정의 계약 데이터를 삭제한다.
여기서, 계약 계정 삭제 요청은 계약 계정에서 이미 존재하는 계약 계정을 삭제하기 위한 요청이다. 계약 계정 삭제 요청은 타겟 계약 계정의 계정 데이터와 계약 데이터를 삭제하는 것을 포함한다. 계약 계정 삭제 요청에는 삭제할 계약 계정의 계정 식별자가 포함된다.
가상머신 인스턴스는 계약 계정 삭제 요청을 수행하여, 타겟 계약 계정에 대한 데이터 액세스 요청을 생성한다. 계약 계정에는 계약 데이터 및 계정 데이터가 포함되므로, 구체적으로, 계약 계정에 대한 계정 데이터 기입 요청과 계약 데이터 기입 요청을 생성한다. 계정 데이터 기입 요청은 계약 계정의 계정 공간에 계정 데이터를 기입하는 것이며; 계약 데이터 기입 요청은 계약 계정의 계약 공간에 계약 데이터를 기입하는 것이다. 여기서, 계약 공간과 계정 공간은 공간에서 분리된다. 계약 계정 삭제는 계약 계정 중의 계약 데이터와 계정 데이터가 모두 비워지도록 하는 것일 수 있고, 단지 계약 데이터와 계정 데이터의 계정 식별자 필드만이 비워지도록 하는 것일 수도 있기 때문에, 기타 사용자가 해당 계약 계정을 인덱싱할 수 없도록 하므로, 계약 계정을 삭제하는 목적을 달성하게 된다.
인터페이스 모듈은 데이터 액세스 요청을 수신한 후, 우선 데이터 액세스 요청에 따라 명령 전환을 수행하여, 상기 데이터 액세스 요청에 대응되는 계약 계정 생성 인터페이스를 결정한다. 구체적으로, 인터페이스 모듈은 해당 데이터 액세스 요청이 속하는 가상머신 명령 및 명령 파라미터를 식별하고, 가상머신 명령과 인터페이스 사이의 기설정된 매핑 관계에 따라, 계약 계정 삭제 요청에 대응되는 블록체인 액세스 인터페이스를 결정한다.
인터페이스 모듈은 상기 계약 계정 삭제 요청에 따라 계약 계정 삭제 인터페이스를 호출하여, 상기 계정 공간에서 삭제될 계약 계정의 계정 데이터를 삭제하며, 계약 공간 중의 상기 삭제될 계약 계정의 계약 데이터를 삭제한다.
계약 계정은 계약 데이터 및 계정 데이터를 포함하고, 계약 데이터와 계정 데이터는 계약 공간과 계정 공간에 각각 저장되므로, 계약 계정을 삭제하는 경우, 인터페이스 모듈은 계약 계정 삭제 요청에 따라 계약 계정 삭제 인터페이스를 호출하여, 계정 공간에서 삭제될 계약 계정의 계정 데이터를 삭제하며, 계약 공간 중의 삭제될 계약 계정의 계약 데이터를 삭제한다.
본 출원의 실시예는, 가상머신 인스턴스 및 인터페이스 모듈을 결합하여, 계약 계정에 기반한 계약 계정 삭제 방안을 제공하므로, 사용자는 계약 계정이 기타 사용자에 의해 사용되는 것을 원하지 않을 때, 또는 계약 계정이 폐기될 때, 해당 계약 계정을 삭제할 수 있어, 블록 저장 자원의 낭비를 방지하고, 동시에 계약 계정의 프라이버시성을 향상시키는 작용을 할 수 있다.
도 5는 본 출원의 실시예에 따른 이더리움 가상머신에 기반한 트랜잭션 처리 장치의 개략도이고; 도 5를 참조하면, 본 출원의 실시예는 이더리움 가상머신에 기반한 트랜잭션 처리 장치(500)를 개시하며, 해당 장치(500)는 처리될 트랜잭션 요청 획득 모듈(510), 데이터 액세스 요청 생성 및 전송 모듈(520) 및 블록체인 액세스 인터페이스 호출 모듈(530)을 포함할 수 있다.
처리될 트랜잭션 요청 획득 모듈(510)은 블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하는데 사용된다.
데이터 액세스 요청 생성 및 전송 모듈(520)은 상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하는데 사용되며; 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함한다.
블록체인 액세스 인터페이스 호출 모듈(530)은 상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하는데 사용된다.
여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장한다.
본 출원의 실시예의 기술방안은, 이더리움 가상머신을 기타 블록체인 시스템에 이전하여 트랜잭션 처리를 수행할 때, 인터페이스 모듈을 통해 블록체인 액세스 인터페이스를 호출함으로써, 이종 데이터 저장 공간을 액세스한다. 블록체인의 개방화, 컴포넌트화를 구현함으로써, 이더리움 가상머신이 기타 블록체인 시스템에 이전되는 난이도를 감소시킨다. 이외, 본 출원의 실시예는, 블록체인이 계약 데이터와 계정 데이터를 각각 저장하여, 상이한 유형의 데이터 저장 구조를 호환할 수 있어, 기타 블록체인이 상이한 데이터를 조작하는데 편리하도록 한다. 본 출원의 실시예는 인터페이스 모듈을 구축하고 블록체인 계정 데이터와 계약 데이터를 각각 저장하여, 기타 블록체인 시스템에서의 이더리움 가상머신의 이전 문제를 해결함으로써, 이더리움과 기타 블록체인 기술의 호환성을 향상시킨다.
선택적으로, 상기 블록체인의 데이터 저장 공간은 적어도 두 가지 계정의 데이터 조작을 지원하고, 각각의 상기 계정의 계정 데이터는 동일한 데이터 구조를 사용한다.
선택적으로, 상기 계정 데이터는 계정 식별자, 거래 시퀀스 넘버, 계정 공개키 및 토큰을 포함한다.
선택적으로, 상기 계정 데이터는 키-밸류 쌍 저장 형식을 사용하고, 상기 계정 식별자는 키 밸류로서 키 필드에 저장되고, 상기 거래 시퀀스 넘버, 계정 공개키 및 토큰은 밸류 필드에 저장된다.
선택적으로, 상기 계약 데이터는 계정 식별자, 계약 바이트코드 및 계약 내 변수를 포함하며; 여기서, 상기 계정 식별자는 스마트 계약의 계약 호출 식별자이다.
선택적으로, 상기 계약 데이터는 키-밸류 쌍 저장 형식을 사용하며, 상기 계정 식별자는 키 밸류의 프리픽스로서, 상기 계약 바이트코드 및 계약 내 변수 각각의 식별자와 조합되어, 키 필드에 저장되며; 상기 계약 바이트코드 및 계약 내 변수는 밸류 필드에 저장된다.
선택적으로, 상기 블록체인 액세스 인터페이스의 유형은 계정 액세스 인터페이스, 저장 액세스 인터페이스 및 계약 조작 인터페이스를 포함하며;
여기서, 상기 계정 액세스 인터페이스는 계정 데이터를 액세스하는데 사용되고, 상기 계약 조작 인터페이스는 계약 계정을 조작하는데 사용되며, 상기 저장 액세스 인터페이스는 계약 데이터를 업데이트하는데 사용된다.
선택적으로, 상기 블록체인 액세스 인터페이스 중의 블록체인 판독 인터페이스는,
계약 내 변수 판독 인터페이스;
계정 토큰 잔액 판독 인터페이스;
계약 바이트코드 판독 인터페이스;
계정의 거래 시퀀스 넘버 판독 인터페이스;
온체인 계약 조회 인터페이스;
온체인 계정 조회 인터페이스;
블록의 높이에 따라 블록의 해시를 판독하는 판독 인터페이스; 중 적어도 하나를 포함한다.
선택적으로, 상기 블록체인 액세스 인터페이스 중의 블록체인 기입 인터페이스는,
계약 계정 생성 인터페이스;
계약 바이트코드 초기화 인터페이스;
계약 계정 삭제 인터페이스;
계약 내 변수 저장 인터페이스;
계정 잔액 증가 인터페이스;
계정 잔액 감소 인터페이스; 중 적어도 하나를 포함한다.
선택적으로, 블록체인 액세스 인터페이스 호출 모듈(530)은,
상기 데이터 액세스 요청이 계약 계정 생성 요청이면, 상기 인터페이스 모듈이 상기 계약 계정 생성 요청에 따라 계약 계정 생성 인터페이스를 호출하여, 상기 계정 공간에 계약 계정을 생성하고 상기 계약 계정의 계정 데이터를 기입하며, 계약 공간을 생성하는데 사용되는 계약 계정 생성 서브 모듈;
상기 인터페이스 모듈이 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 바이트코드 초기화 인터페이스를 호출하여, 생성될 스마트 계약을 컴파일하고, 계약 바이트코드를 형성하여 상기 계약 공간에 기입하는데 사용되는 계약 바이트코드 기입 서브 모듈;
상기 인터페이스 모듈이 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 내 변수 저장 인터페이스를 호출하여, 상기 계약 공간에 상기 스마트 계약의 계약 내 변수를 생성하여 저장하는데 사용되는 계약 내 변수 저장 서브 모듈; 을 포함한다.
선택적으로, 블록체인 액세스 인터페이스 호출 모듈(530)은 구체적으로 상기 데이터 액세스 요청이 계약 계정 삭제 요청이면, 상기 인터페이스 모듈이 상기 계약 계정 삭제 요청에 따라 계약 계정 삭제 인터페이스를 호출하여, 상기 계정 공간에서 삭제될 계약 계정의 계정 데이터를 삭제하며, 계약 공간 중의 상기 삭제될 계약 계정의 계약 데이터를 삭제하는데 사용된다.
본 출원의 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 장치는 본 출원의 임의의 실시예에서 제공하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 수행할 수 있으며, 수행되는 이더리움 가상머신에 기반한 트랜잭션 처리 방법에 대응되는 기능 모듈 및 유리한 효과를 구비한다.
본 출원의 실시예에 따르면, 본 출원은 전자 설비, 판독 가능 저장매체 및 컴퓨터 프로그램 제품을 더 제공한다.
도 6은 본 출원의 실시예를 구현하기 위한 예시적인 전자 설비(600)의 개략적인 블록도이다. 전자 설비는 각종 형태의 디지털 컴퓨터, 예를 들어, 랩탑 컴퓨터, 데스크톱 컴퓨터, 워크테이블, 개인용 정보 단말기, 서버, 블레이드 서버, 대형 컴퓨터 및 기타 적합한 컴퓨터를 의미한다. 전자 설비는 각종 형태의 모바일 장치, 예를 들어, 개인 디지털 처리, 휴대 전화기, 스마트폰, 웨어러블 설비 및 기타 유사한 컴퓨팅 장치를 나타낼 수도 있다. 본 문에서 설명된 컨포넌트, 이들의 연결과 관계 및 이들의 기능은 단지 예시적인 것일 뿐, 본 문에서 기술 및/또는 요구한 본 개시의 구현을 한정하지 않는다.
도 6에 도시된 바와 같이, 설비(600)는 컴퓨팅 유닛(601)을 포함하되, 이는 판독전용 메모리(ROM)(602)에 저장된 컴퓨터 프로그램 또는 저장 유닛(608)으로부터 랜덤 액세스 메모리(RAM)(603)에 로딩되는 컴퓨터 프로그램에 따라, 각종 적합한 동작 및 처리를 수행할 수 있다. RAM(603)에는 설비(600) 조작에 필요한 각종 프로그램 및 데이터가 저장될 수도 있다. 컴퓨팅 유닛(601), ROM(602) 및 RAM(603)은 버스(604)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(605)도 버스(604)에 연결된다.
전자 설비(600) 중의 복수 개의 컨포넌트는 I/O 인터페이스(605)에 연결되고, 해당 컨포넌트는 예를 들어 키패드, 마우스 등과 같은 입력 유닛(606); 예를 들어 각종 유형의 표시장치, 스피커 등과 같은 출력 유닛(607); 예를 들어 자기디스크, 광디스크 등과 같은 저장 유닛(608); 및 예를 들어 네크워크 카드, 모뎀, 무선통신 트랜시버 등과 같은 통신 유닛(609)을 포함한다. 통신 유닛(609)은 설비(600)가 인터넷과 같은 컴퓨터 네트워크 및/또는 각종 전기 통신망을 통해 기타 설비와 정보/데이터를 교환하는 것을 허용한다.
컴퓨팅 유닛(601)은 처리 및 컴퓨팅 능력을 갖는 범용 및/또는 전용 처리 컴포넌트일 수 있다. 컴퓨팅 유닛(601)의 일부 예시는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 각종 전용 인공지능(AI) 컴퓨팅 칩, 기계 러닝 모델 알고리즘을 수행하는 각종 컴퓨팅 유닛, 디지털 신호 프로세서(DSP) 및 임의의 적합한 프로세서, 컨트롤러, 마이크로 컨트롤러 등을 포함하지만, 이에 한정되지 않는다. 컴퓨팅 유닛(601)은 위에서 설명한 각각의 방법 및 처리를 수행하며, 예를 들어, 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 수행한다. 예를 들어, 일부 실시예에서, 이더리움 가상머신에 기반한 트랜잭션 처리 방법은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있고, 이는 저장 유닛(608)과 같은 기계 판독 가능 매체에 유형적으로 포함된다. 일부 실시예에서, 컴퓨터 프로그램의 일부 또는 전체는 ROM(602) 및/또는 통신 유닛(609)에 의해 설비(600)에 로딩 및/또는 장착될 수 있다. 컴퓨터 프로그램이 RAM(603)에 로딩되어 컴퓨팅 유닛(601)에 의해 실행되는 경우, 위에서 설명한 이더리움 가상머신에 기반한 트랜잭션 처리 방법의 하나 또는 복수 개의 단계를 수행할 수 있다. 대안적으로, 기타 실시예에서, 컴퓨팅 유닛(601)은 기타 임의의 적합한 방식(예를 들어, 펌웨어를 통해)을 통해 이더리움 가상머신에 기반한 트랜잭션 처리 방법을 수행하도록 구성될 수 있다.
본 문에서 상술한 시스템 및 기술의 각종 실시형태는 디지털 전자회로 시스템, 집적 회로 시스템, 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 특정 용도 표준 제품(ASSP), 시스템온칩(SOC), 복합 프로그램 가능 로직 설비(CPLD), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 구현될 수 있다. 이러한 각종 실시형태는 하나 또는 복수 개의 컴퓨터 프로그램에서 실시되는 것을 포함할 수 있고, 해당 하나 또는 복수 개의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능한 프로세서를 포함하는 프로그램 가능한 시스템에서 실행 및/또는 해석(interpretating)될 수 있으며, 해당 프로그램 가능한 프로세서는 전용 또는 범용 프로그램 가능한 프로세서일 수 있고, 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신할 수 있으며, 데이터 및 명령을 해당 저장 시스템, 해당 적어도 하나의 입력 장치 및 해당 적어도 하나의 출력 장치로 전송한다.
본 개시의 방법을 실시하기 위한 프로그램 코드는 하나 또는 복수 개의 프로그래밍 언어의 임의의 조합을 사용하여 작성될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 장치의 프로세서 또는 컨트롤러에 제공되어, 프로그램 코드가 프로세서 또는 컨트롤러에 의해 실행되면, 흐름도 및/또는 블록도에 규정된 기능/조작이 실시될 수 있도록 한다. 프로그램 코드는 전체가 기계에서 실행되거나, 일부가 기계에서 실행되며, 독립적인 소프트웨어 패키지로서 일부가 기계에서 실행되고 일부가 원격 기계에서 실행되거나, 전부가 원격 기계 또는 서버에서 실행될 수 있다.
본 개시의 전문에서, 기계 판독 가능 매체는 유형 매체(tangible medium)일 수 있으며, 이는 명령 실행 시스템, 장치 또는 설비에 의해 사용되거나, 명령 실행 시스템, 장치 또는 설비와 결합하여 사용되는 프로그램을 포함하거나 저장할 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호매체 또는 기계 판독 가능 저장매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 설비, 또는 상기 내용의 임의의 적합한 조합일 수 있지만 이에 한정되지 않는다. 기계 판독 가능 저장매체의 보다 구체적인 예시는 하나 또는 복수 개의 와이어에 기반한 전기적 연결, 휴대용 컴퓨터 디스크, 하드디스크, 랜덤 액세스 메모리(RAM), 판독전용 메모리(ROM), 소거 및 프로그램 가능한 판독전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독전용 메모리(CD-ROM), 광학 저장 설비, 자기 저장 설비 또는 상기 내용의 임의의 적합한 조합을 포함한다.
사용자와의 인터랙션을 제공하기 위하여, 컴퓨터에서 여기서 설명된 시스템 및 기술을 실시할 수 있으며, 해당 컴퓨터는 사용자에게 정보를 표시하기 위한 표시장치(예를 들어, CRT(음극선관) 또는 LCD(액정표시장치)모니터), 키보드 및 방향지시 장치(예를 들어, 마우스 또는 트랙볼)를 구비하며, 사용자는 해당 키보드 및 해당 방향지시 장치를 통해 컴퓨터에 입력을 제공할 수 있다. 기타 유형의 장치는 사용자와의 인터랙션을 제공할 수도 있으며; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 센싱 피드백(예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백)일 수 있으며; 임의의 형태(사운드 입력, 음성 입력 또는 촉각 입력)로 사용자로부터의 입력을 수신한다.
여기서 설명된 시스템 및 기술은 백엔드 컨포넌트를 포함하는 컴퓨팅 시스템(예를 들어, 데이터 서버), 또는 미들웨어 컨포넌트를 포함하는 컴퓨팅 시스템(예를 들어, 애플리케이션 서버), 또는 프런트엔드 컨포넌트를 포함하는 컴퓨팅 시스템(예를 들어, 그래픽 사용자 인터페이스 또는 웹브라우저를 구비하는 사용자 컴퓨터, 사용자는 해당 그래픽 사용자 인터페이스 또는 해당 웹브라우저를 통해 여기서 설명된 시스템 및 기술의 실시형태와 인터랙션함), 또는 이러한 백엔드 컨포넌트, 미들웨어 컨포넌트, 또는 프런트엔드 컨포넌트를 포함하는 임의의 조합의 컴퓨팅 시스템에서 실시할 수 있다. 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)으로 시스템의 컨포넌트를 서로 연결할 수 있다. 통신 네트워크의 예시는 근거리 통신망(LAN), 광역 네트워크(WAN), 블록체인 네트워크 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 떨어져 있으며 통상적으로 통신 네트워크를 통해 인터랙팅한다. 클라이언트와 서버의 관계는 상응하는 컴퓨터에서 작동되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생된다. 서버는 클라우드 컴퓨팅 서버라고도 칭하는 클라우드 서버 또는 클라우드 컴퓨팅 서비스 체계 중의 호스트 제품인 클라우드 호스트일 수 있고, 종래의 물리적 호스트와 VPS 서버에 존재하는 관리 난이도가 크고, 비즈니스 확장성이 약한 결함을 해결한다.
상술한 각종 형태의 프로세스를 사용하여, 단계의 순서재배정, 추가 또는 삭제를 수행할 수 있음을 이해해야 한다. 예를 들어, 본 개시에 기재된 각 단계는 병렬로 수행될 수 있거나 순차적으로 수행될 수도 있거나 서로 다른 순서로 수행될 수도 있으며, 본 개시에서 개시한 기술방안이 희망하는 결과를 달성하기만 하면 되기 때문에, 본 문에서는 이에 대해 한정하지 않는다.
상기 구체적인 실시형태는 본 개시의 보호범위를 한정하지 않는다. 본 분야의 당업자는 설계 요구 및 기타 요소에 따라 다양한 수정, 조합, 부분 조합 및 대체가 가능함을 이해할 수 있을 것이다. 본 개시의 사상 및 원칙 내에서 이루어진 수정, 등가적 대체 및 개선 등은 모두 본 개시의 보호범위 내에 포함되어야 한다.

Claims (15)

  1. 블록체인 노드에 응용되는 이더리움 가상머신에 기반한 트랜잭션 처리 방법에 있어서,
    블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하는 단계;
    상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하는 단계-여기서, 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함함-;
    상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하는 단계; 를 포함하고,
    여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  2. 제 1 항에 있어서,
    상기 블록체인의 데이터 저장 공간은 적어도 두 가지 계정의 데이터 조작을 지원하고, 각각의 상기 계정의 계정 데이터는 동일한 데이터 구조를 사용하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  3. 제 1 항에 있어서,
    상기 계정 데이터는 계정 식별자, 거래 시퀀스 넘버, 계정 공개키 및 토큰을 포함하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  4. 제 3 항에 있어서,
    상기 계정 데이터는 키-밸류 쌍 저장 형식을 사용하고, 상기 계정 식별자는 키 밸류로서 키 필드에 저장되고, 상기 거래 시퀀스 넘버, 계정 공개키 및 토큰은 밸류 필드에 저장되는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  5. 제 1 항에 있어서,
    상기 계약 데이터는 계정 식별자, 계약 바이트코드 및 계약 내 변수를 포함하며; 여기서, 상기 계정 식별자는 스마트 계약의 계약 호출 식별자인 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  6. 제 5 항에 있어서,
    상기 계약 데이터는 키-밸류 쌍 저장 형식을 사용하며, 상기 계정 식별자는 키 밸류의 프리픽스로서, 상기 계약 바이트코드 및 계약 내 변수 각각의 식별자와 조합되어, 키 필드에 저장되며; 상기 계약 바이트코드 및 계약 내 변수는 밸류 필드에 저장되는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 블록체인 액세스 인터페이스의 유형은 계정 액세스 인터페이스, 저장 액세스 인터페이스 및 계약 조작 인터페이스를 포함하며;
    여기서, 상기 계정 액세스 인터페이스는 계정 데이터를 액세스하는데 사용되고, 상기 계약 조작 인터페이스는 계약 계정을 조작하는데 사용되며, 상기 저장 액세스 인터페이스는 계약 데이터를 업데이트하는데 사용되는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  8. 제 7 항에 있어서,
    상기 블록체인 액세스 인터페이스 중의 블록체인 판독 인터페이스는,
    계약 내 변수 판독 인터페이스;
    계정 토큰 잔액 판독 인터페이스;
    계약 바이트코드 판독 인터페이스;
    계정의 거래 시퀀스 넘버 판독 인터페이스;
    온체인 계약 조회 인터페이스;
    온체인 계정 조회 인터페이스;
    블록의 높이에 따라 블록의 해시를 판독하는 판독 인터페이스; 중 적어도 하나를 포함하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  9. 제 7 항에 있어서,
    상기 블록체인 액세스 인터페이스 중의 블록체인 기입 인터페이스는,
    계약 계정 생성 인터페이스;
    계약 바이트코드 초기화 인터페이스;
    계약 계정 삭제 인터페이스;
    계약 내 변수 저장 인터페이스;
    계정 잔액 증가 인터페이스;
    계정 잔액 감소 인터페이스; 중 적어도 하나를 포함하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  10. 제 9 항에 있어서,
    상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하는 단계는,
    상기 데이터 액세스 요청이 계약 계정 생성 요청이면, 상기 인터페이스 모듈은 상기 계약 계정 생성 요청에 따라 계약 계정 생성 인터페이스를 호출하여, 상기 계정 공간에 새로운 계약 계정을 생성하고 새로 생성된 상기 계약 계정의 계정 데이터를 기입하는 단계;
    상기 인터페이스 모듈은 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 바이트코드 초기화 인터페이스를 호출하여, 생성될 스마트 계약을 컴파일하고, 계약 바이트코드를 형성하여 상기 계약 공간에 기입하는 단계;
    상기 인터페이스 모듈은 상기 계약 계정 생성 인터페이스를 수행하는 과정에서, 상기 계약 내 변수 저장 인터페이스를 호출하여, 상기 계약 공간에 상기 스마트 계약의 계약 내 변수를 생성하여 저장하는 단계; 를 포함하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  11. 제 9 항에 있어서,
    상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하는 단계는,
    상기 데이터 액세스 요청이 계약 계정 삭제 요청이면, 상기 인터페이스 모듈은 상기 계약 계정 삭제 요청에 따라 계약 계정 삭제 인터페이스를 호출하여, 상기 계정 공간에서 삭제될 계약 계정의 계정 데이터를 삭제하며, 상기 계약 공간 중의 상기 삭제될 계약 계정의 계약 데이터를 삭제하는 단계를 포함하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 방법.
  12. 블록체인 노드에 응용되는 이더리움 가상머신에 기반한 트랜잭션 처리 장치에 있어서,
    제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 구현하는데 사용되고,
    블록체인 노드에서 실행되는 가상머신 인스턴스가 처리될 트랜잭션 요청을 획득하는데 사용되는 처리될 트랜잭션 요청 획득 모듈;
    상기 가상머신 인스턴스가 상기 처리될 트랜잭션 요청을 수행하는 과정에서, 타겟 액세스 데이터에 대한 데이터 액세스 요청을 생성하여, 인터페이스 모듈에 전송하는데 사용되는 데이터 액세스 요청 생성 및 전송 모듈-여기서, 상기 데이터 액세스 요청은 데이터 판독 요청 및/또는 데이터 기입 요청을 포함함-;
    상기 인터페이스 모듈이 상기 데이터 액세스 요청에 따라 상기 블록체인의 데이터 저장 공간에 대해 블록체인 액세스 인터페이스를 호출하여, 상기 타겟 액세스 데이터에 대해 액세스 조작을 수행하며, 액세스 결과를 상기 가상머신 인스턴스에 피드백하는데 사용되는 블록체인 액세스 인터페이스 호출 모듈; 을 포함하고,
    여기서 상기 블록체인의 데이터 저장 공간은 계정 공간 및 계약 공간을 포함하며, 상기 계정 공간은 외부 계정 중의 계정 데이터와 계약 계정 중의 계정 데이터를 저장하고, 상기 계약 공간은 계약 계정 중의 계약 데이터를 저장하는 것을 특징으로 하는 이더리움 가상머신에 기반한 트랜잭션 처리 장치.
  13. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서와 통신적으로 연결되는 메모리; 를 포함하되, 여기서,
    상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령이 저장되어 있으며, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 수행하도록 하는 것을 특징으로 하는 전자 설비.
  14. 컴퓨터 명령이 저장되어 있는 비 일시적 컴퓨터 판독 가능 저장매체에 있어서,
    상기 컴퓨터 명령은 상기 컴퓨터가 제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 수행하도록 하는 것을 특징으로 하는 비 일시적 컴퓨터 판독 가능 저장매체.
  15. 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램 중의 컴퓨터 명령이 프로세서에 의해 실행될 경우, 제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 구현하는 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램.
KR1020210103343A 2020-12-24 2021-08-05 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체 KR20210105317A (ko)

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 (1)

Publication Number Publication Date
KR20210105317A true KR20210105317A (ko) 2021-08-26

Family

ID=74426264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210103343A KR20210105317A (ko) 2020-12-24 2021-08-05 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체

Country Status (5)

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

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 苏州西热节能环保技术有限公司 磨煤机一次风压力控制方法、装置、存储介质和电子设备

Family Cites Families (12)

* 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
US11257077B2 (en) * 2017-11-30 2022-02-22 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
US11676139B2 (en) * 2018-06-29 2023-06-13 Arcblock, Inc. Blockchain adapter, protocol, and access layer
CN109034814B (zh) * 2018-09-14 2020-10-16 百度在线网络技术(北京)有限公司 基于以太坊虚拟机的智能合约处理方法和装置
KR20200115902A (ko) * 2019-03-28 2020-10-08 주식회사 비즈모델라인 스마트컨트랙트를 이용한 비밀 보안 처리 제공 방법
JP6779389B2 (ja) 2019-04-03 2020-11-04 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 信頼できる実行環境下でのブロックチェーンデータの処理および保存
US10846765B2 (en) * 2019-07-31 2020-11-24 Advanced New Technologies Co., Ltd. Blockchain-based e-bill number application method, apparatus, and electronic device
US11362807B2 (en) * 2019-08-14 2022-06-14 R3 Llc Sealed distributed ledger system
KR20210023601A (ko) * 2019-08-23 2021-03-04 삼성전자주식회사 블록체인 계좌 정보를 제공하는 전자 장치와 이의 동작 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102684495B1 (ko) 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체
KR102686247B1 (ko) 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체
KR102676402B1 (ko) 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체
CN110737425B (zh) 一种计费平台系统的应用程序的建立方法及装置
WO2023056946A1 (zh) 一种数据缓存方法、装置和电子设备
KR20210105317A (ko) 이더리움 가상머신의 트랜잭션 처리 방법, 장치, 설비, 프로그램 및 매체
US11558207B2 (en) Method and apparatus for starting up blockchain system, and non-transitory computer-readable storage medium
US20170364293A1 (en) Method and apparatus for data processing
WO2024030113A1 (en) System and method for bulk update of resource data for view parameters
US10387554B1 (en) Applying matching data transformation information based on a user's editing of data within a document
US11682014B2 (en) Method and apparatus for operating blockchain system, device and storage medium
US20240086378A1 (en) Serverless schema propagation
US20230362659A1 (en) Microwave design tool
CN111915304B (zh) 数字元素的数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application