KR20200083932A - 블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법 - Google Patents

블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200083932A
KR20200083932A KR1020197015103A KR20197015103A KR20200083932A KR 20200083932 A KR20200083932 A KR 20200083932A KR 1020197015103 A KR1020197015103 A KR 1020197015103A KR 20197015103 A KR20197015103 A KR 20197015103A KR 20200083932 A KR20200083932 A KR 20200083932A
Authority
KR
South Korea
Prior art keywords
blockchain
contract
blockchain contract
execute
type
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.)
Granted
Application number
KR1020197015103A
Other languages
English (en)
Other versions
KR102237015B1 (ko
Inventor
허 쑨
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 KR20200083932A publication Critical patent/KR20200083932A/ko
Application granted granted Critical
Publication of KR102237015B1 publication Critical patent/KR102237015B1/ko
Assigned to 앤트체인 테크놀로지 피티이. 엘티디. reassignment 앤트체인 테크놀로지 피티이. 엘티디. 권리의 전부이전등록 Assignors: 어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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 OR CALCULATING; 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/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Marketing (AREA)
  • Finance (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Power Engineering (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Human Computer Interaction (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

블록체인 상에 네이티브(native) 계약을 구현하기 위한 컴퓨터-구현 방법은, 블록체인 계약과 연관된 조합된 바이트코드(bytecode)를 획득하는 단계로서, 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 단계; 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계; 및 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계를 포함한다.

Description

블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법
본 출원은 일반적으로 블록체인 상에서 네이티브 계약을 구현하기 위한 방법 및 디바이스에 관한 것이다.
블록체인 기술은 탈집중화된 방식으로의 데이터 저장을 약속한다. 데이터는 블록의 체인을 형성하는, 서로 간에 선행 관계를 갖는 일련의 데이터 블록에 저장될 수 있다. 블록의 체인은 블록에 데이터를 저장하기 전에 데이터 검증을 또한 담당하는 노드의 네트워크에 의해 유지된다. 노드에 의해 채용되는 암호화 및 합의 기술로, 블록체인에 저장된 데이터는 거의 변하지 않는다. 노드의 네트워크는 또한 블록체인 합의 네트워크(blockchain consensus network)로 칭해진다. 최근, 블록체인 기술이 확장되어 블록체인 계약(또는 스마트 계약으로 칭해짐)의 실행을 위한 프레임워크를 제공한다. 블록체인 계약은 계약의 협상 또는 성과를 디지털 방식으로 촉진, 검증 또는 시행하도록 의도되는 컴퓨터 프로토콜이다. 예를 들어, 블록체인 계약은 제3자 없이 신뢰성 있는 계약의 수행을 허용한다.
현재 스마트 계약은 솔리디티(solidity) 언어로 작성될 필요가 있으므로, 이더리움 가상 머신(Ethereum Virtual Machine: EVM) 상에서 실행되는 대부분 솔리디티 계약이다. 솔리디티 계약은 이더리움(Ethereum) 블록체인 상의 특정 주소에 있는 코드(계약 함수) 및 데이터(계약 상태)의 모음이다. 몇몇 다른 스마트 계약은 네이티브(native) 계약이다. 네이티브 계약은 솔리디티 이외의 언어로 작성될 수 있다. 네이티브 계약은 사전-컴파일링된 계약과 혼동되어서는 안 된다. 사전-컴파일링된 계약은 EVM 외부에서 실행되지만 EVM으로부터 호출될 수 있는 재사용 가능한 함수이다. 예를 들어, SHA256, RIPEMD160 및 ECRECOVER는 사전-컴파일링된 계약으로 구현된다. 네이티브 계약은 프로그래머로 하여금 비결정적이고 무한하게 실행되는 샌드박스 이스케이핑(sandbox escaping) 코드를 작성할 수 있게 한다. 네이티브 계약의 경우, 개발자는 가스(이더리움 상에서 이루어진 모든 동작에 대한 실행 수수료) 및 가스-제한에 의해 제한되지 않으며, 코드는 EVM 상에서보다 상당히 더 빠르게 실행된다. 그러나, 현재의 블록체인 시스템은 계약이 솔리디티로 작성될 것을 필요로 하고, 네이티브 계약을 실행하기 위한 적절한 지원이 부족하다.
본 출원의 다양한 실시형태는 블록체인 상에서 네이티브(native) 계약을 구현하기 위한 시스템, 방법 및 비일시적인 컴퓨터 판독 가능 매체를 포함한다.
일 양태에 따르면, 블록체인 상에 네이티브 계약을 구현하기 위한 컴퓨터-구현 방법은, 블록체인 계약과 연관된 조합된 바이트코드(bytecode)를 획득하는 단계로서, 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 단계; 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계; 및 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계를 포함한다.
일부 실시형태에서, 조합된 바이트코드는 블록체인 계약의 소스 코드로부터 컴파일링된 동적 라이브러리 파일의 바이트코드를 포함한다. 일 예에서, 소스 코드는 c++로 되어 있다.
일부 실시형태에서, 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계는, 블록체인 계약의 유형이 네이티브 계약인지를 결정하는 단계를 포함한다.
일부 실시형태에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 계약을 실행하도록 블록체인 가상 머신을 트리거링하는 단계를 포함한다. 블록체인 계약을 실행하도록 가상 머신을 트리거링하는 단계는, 적어도 표시자에 기초하여 유형에 대응하는 가상 머신을 결정하는 단계; 및 동적 라이브러리 파일을 실행하도록 결정된 가상 머신을 트리거링하는 단계를 포함한다.
일부 실시형태에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 단계를 포함한다. 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 단계는, 실행 가능 파일을 생성하는 단계; 및 동적 라이브러리 파일을 실행하기 위해 실행 가능 파일을 론칭하도록 자녀 프로세스를 생산하는 단계를 포함한다. 자녀 프로세스 및 블록체인 가상 머신은 소켓(socket) 또는 공유 메모리를 통해 통신한다.
일부 실시형태에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 계약을 실행하도록 도커 컨테이너(docker container)를 론칭하는 단계를 포함한다. 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 단계는, 도커 컨테이너를 생성하는 단계; 및 동적 라이브러리 파일을 실행하도록 도커 컨테이너를 론칭하는 단계를 포함한다. 도커 컨테이너 및 블록체인 가상 머신은 소켓을 통해 통신한다.
다른 양태에 따르면, 비일시적 컴퓨터-판독 가능 저장 매체는 하나 이상의 프로세서로 하여금 동작들을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되고, 동작들은, 블록체인 계약과 연관된 조합된 바이트코드를 획득하는 동작으로서, 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 동작; 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계; 및 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 동작을 포함한다.
다른 양태에 따르면, 블록체인 상에 네이티브 계약을 구현하기 위한 시스템은, 하나 이상의 프로세서 및 하나 이상의 프로세서에 커플링되고 시스템으로 하여금 동작들을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독 가능 메모리를 포함하고, 동작들은, 블록체인 계약과 연관된 조합된 바이트코드를 획득하는 동작으로서, 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 동작; 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 동작; 및 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 동작을 포함한다.
본 명세서에 개시된 시스템, 방법 및 비일시적 컴퓨터 판독 가능 매체의 이러한 특징 및 다른 특징뿐만 아니라 구조의 관련 요소의 동작 및 기능의 방법 및 부분의 조합 및 제조의 경제는, 첨부 도면을 참조하여 이하의 설명 및 첨부된 청구항을 고려하면 더욱 명확해질 것이며, 도면 전체는 본 명세서의 일부를 형성하고, 동일한 참조 번호는 다양한 도면에서 동일한 부분을 나타낸다. 그러나, 도면은 단지 예시적이고 설명적인 목적을 위한 것이며, 본 발명의 한계를 정의하는 것으로 의도되지 않았음을 명확하게 이해해야 한다.
본 기술의 다양한 실시형태의 특정 특징은 첨부된 청구항에서 구체적으로 개진된다. 본 기술의 특징 및 이점에 대한 더 나은 이해는, 본 발명의 원리가 이용되는 예시적인 실시형태를 개진하는 다음의 상세한 설명 및 첨부 도면을 참조하여 얻어질 것이다:
도 1a는 다양한 실시형태에 따라 블록체인 상에 네이티브 계약을 구현하기 위한 예시적인 시스템을 나타낸다.
도 1b는 다양한 실시형태에 따라 블록체인 계약을 구현하기 위한 예시적인 프레임워크를 나타낸다.
도 2는 다양한 실시형태에 따라 표시자를 추가하기 위한 예시적인 방법을 나타낸다.
도 3a는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법을 나타낸다.
도 3b는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법을 나타낸다.
도 3c는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법을 나타낸다.
도 4는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법의 흐름도를 나타낸다.
도 5는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 컴퓨터 시스템의 블록도를 나타낸다.
도 6은 본 명세서에 설명되는 임의의 실시형태가 구현될 수 있는 예시적인 컴퓨터 시스템의 블록도를 나타낸다.
블록체인은 피어-투-피어(P2P) 네트워크에서 다양한 노드(예를 들어, 컴퓨팅 디바이스)에 의해 동작이 수행되기 때문에 통상적으로 분산 원장이라고 칭해지는 분산된 데이터베이스로 간주될 수 있다. 임의의 정보가 블록체인에 기재되고 저장되거나 이로부터 판독될 수 있다. 노드는 예를 들어 블록체인 네트워크를 지원하고 이를 원활하게 실행되도록 유지시키는 컴퓨팅 디바이스 또는 대형 컴퓨터 시스템이다. 각 노드는 블록체인의 기능의 일부 또는 전부를 제공할 수 있다. 예를 들어, 합의 검증을 제공하는 노드는 합의-참여 노드(또는 합의 노드)로 칭해질 수 있다.
도 1a는 다양한 실시형태에 따라 다양하게 개시된 단계 및 방법을 수행하기 위한 예시적인 시스템(100)을 나타낸다. 나타낸 바와 같이, 블록체인 네트워크는 복수의 블록체인 노드(예를 들어, 노드 1, 노드 2, 노드 3, 노드 4, 노드 i 등)를 포함할 수 있다. 블록체인 노드는 하나의 블록체인 노드가 다른 노드와 통신하는 네트워크(예를 들어, 피어-투-피어 네트워크)를 형성할 수 있다. 나타낸 바와 같이 블록체인 노드의 순서 및 개수는 단지 예시적인 것이며 예시의 간소화를 위한 것이다. 블록체인 노드는 서버, 컴퓨터 등에 구현될 수 있다. 각각의 블록체인 노드는 TCP/IP와 같은 다양한 유형의 통신 방법을 통해 함께 커플링된 하나 이상의 물리적 하드웨어 디바이스 또는 가상 디바이스에 대응할 수 있다. 분류에 따라, 블록체인 노드는 전체 노드(full node), Geth 노드, 합의 노드 등을 포함할 수 있다.
다양한 실시형태에서, 사용자 A 및 사용자 B는 블록체인 계약(예를 들어, 스마트 계약)에 의해 수행될 수 있는 트랜잭션들을 실행하기 위해 블록체인 노드를 트리거링하는 랩톱 및 모바일 전화와 같은 대응하는 디바이스를 사용할 수 있다. 예를 들어, 사용자 A는 사용자 A의 계정에 있는 일부 자산을 사용자 B의 계정으로 전송하여 사용자 B와 거래하기를 원할 수 있다. 사용자 A 및 사용자 B는 트랜잭션에 대해 적절한 블록체인 소프트웨어(예를 들어, 암호화 지갑)가 설치된 대응 디바이스를 사용할 수 있다. 사용자 A의 디바이스는 수신자 노드 B라고 칭해지는 사용자 B의 디바이스와 트랜잭션을 개시하는 개시자(initiator) 노드 A로 칭해질 수 있다. 노드 A는 노드 1과의 통신을 통해 블록체인에 액세스할 수 있으며 노드 B는 노드 2와의 통신을 통해 블록체인에 액세스할 수 있다. 예를 들어, 노드 A와 노드 B는 노드 1과 노드 2를 통해 트랜잭션을 블록체인에 제출하여 트랜잭션을 블록체인에 추가하도록 요청할 수 있다. 블록체인 외부에서, 노드 A 및 노드 B는 다른 통신 채널(예를 들어, 노드 1 및 2를 통하지 않는 통상적인 인터넷 통신)을 가질 수 있다. 일부 실시형태에서, 노드 A 상의 블록체인 소프트웨어는 블록체인 노드 1의 프론트-엔드로 간주될 수 있고, 블록체인 노드 1은 블록체인 소프트웨어의 백-엔드를 실행한다.
도 1a의 각각의 노드는 프로세서, 및 본 명세서에 설명되는 블록체인 상의 네이티브 계약을 구현하기 위한 다양한 단계를 노드가 수행하도록 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터-판독 가능 저장 매체를 포함할 수 있다. 각각의 노드에는 다른 노드 및/또는 다른 디바이스와 통신하기 위해 소프트웨어(예를 들어, 트랜잭션 프로그램) 및/또는 하드웨어(예를 들어, 유선, 무선 접속)가 설치될 수 있다. 예를 들어, 노드 A 및 노드 B와 같은 사용자 디바이스에는 암호 화폐 지갑과 같은 사용자측 소프트웨어가 설치될 수 있으며, 블록체인 노드에는 블록체인 트랜잭션 프로세싱 소프트웨어가 설치될 수 있다. 노드 하드웨어 및 소프트웨어의 추가적인 상세 사항은 도 5 및 도 6을 참조하여 후술한다.
블록체인 노드는 각각 메모리를 포함할 수 있거나 메모리에 커플링될 수 있다. 일부 실시형태에서, 메모리는 풀(pool) 데이터베이스를 저장할 수 있다. 풀 데이터베이스는 분산 방식으로 복수의 블록체인 노드에 액세스할 수 있다. 예를 들어, 풀 데이터베이스는 각각 블록체인 노드의 메모리에 저장될 수 있다. 풀 데이터베이스는 사용자에 의해 동작되는 노드 A와 같은 하나 이상의 사용자 디바이스에 의해 제출된 복수의 트랜잭션을 저장할 수 있다. 이더리움 시스템에 관한 일부 실시형태에서, 미확인 트랜잭션의 트랜잭션 요청을 수신한 후, 수신자 블록체인 노드는 트랜잭션의 몇몇 예비 검증을 수행할 수 있다. 예를 들어, 도 1a를 참조하면, 노드 1은 노드 A로부터 트랜잭션을 수신한 후에 예비 검증을 수행할 수 있다. 일단 검증되면, 트랜잭션은 수신자 블록체인 노드의 풀 데이터베이스에 저장될 수 있으며, 수신자 블록체인 노드는 또한 트랙잭션을 하나 이상의 다른 블록체인 노드(예를 들어, 노드 3, 노드 4)에 전송할 수 있으며, 다른 블록체인 노드는 수신자 노드에 의해 수행되는 프로세스를 반복한다. 대응하는 풀 데이터베이스의 트랜잭션이 특정 레벨에 일단 도달하면, 블록체인 노드는 합의 규칙 또는 다른 방법에 따라 대응하는 풀 데이터베이스의 트랜잭션의 일괄 처리(batch)를 각각 검증할 수 있다. 트랜잭션이 블록체인 계약을 포함하는 경우, 블록체인 노드는 블록체인 계약을 로컬로 실행할 수 있다. (예를 들어, 합의 규칙에 따라) 트랜잭션의 일괄 처리를 성공적으로 검증하는 특정 블록체인 노드는 트랜잭션을 패킹(packing)하여 블록체인의 로컬 사본에 추가하고, 그 결과를 다른 블록체인 노드에 분산시킬 수 있다. 특정 블록체인 노드는 처음으로 성공적인 검증을 완료하거나, 검증 특권을 얻었거나, 다른 합의 규칙에 따라 결정되는 노드일 수 있다. 다른 블록체인 노드는 트랜잭션을 로컬로 실행할 수 있고, (예를 들어, 해시(hash) 계산을 수행함으로써) 실행 결과를 서로 검증할 수 있고, 블록체인의 사본을 특정 블록체인 노드의 사본과 동기화할 수 있다. 블록체인의 로컬 사본을 갱신함으로써, 블록체인 노드는 이러한 정보를 로컬 메모리에 기재할 수 있다. 일부 포인트에서 검증이 실패한 경우, 트랜잭션은 거부된다.
도 1b는 다양한 실시형태에 따라 블록체인 계약을 구현하기 위한 예시적인 프레임워크를 나타낸다. 아래 제시된 동작은 예시적인 것으로 의도된다. 구현에 따라, 예시적인 단계는 다양한 순서 또는 병렬로 수행되는 추가의, 더 적은 또는 대안적인 단계를 포함할 수 있다.
다양한 실시형태에서, 블록체인 계약을 전개하기 위해, 노드 A는 바이트코드를 반환하는 컴파일러로 블록체인 계약 소스 코드를 컴파일링할 수 있다. 노드 A는 바이트코드를 포함하는 트랜잭션을 구성하고 서명할 수 있다. 예를 들어, 트랜잭션은 논스(nonce), 가스 가격(gasPrice), 가스 제한(gasLimit), 투(to)(예를 들어, 호출될 블록체인 계약 또는 수신자 계정의 주소), 값, 데이터(예를 들어, 바이트코드) 등과 같은 정보를 포함할 수 있다. 노드 A는 원격 절차 호출(remote procedure call: RPC) 인터페이스를 통해 블록체인 노드 1로 트랜잭션을 전송할 수 있다. RPC는 컴퓨터 프로그램이 절차(예를 들어, 서브루틴)로 하여금 (예를 들어, 공유 네트워크 상의 노드 1과 같은 다른 컴퓨터 상의) 다른 주소 공간에서 실행하게 하는 경우, 프로그래머가 원격 상호 작용에 대한 상세 사항을 명시적으로 코딩하지 않고 통상의(로컬) 절차 호출인 것처럼 코딩된다. 노드 1은 서명을 검증함으로써 트랜잭션이 유효한지를 검증할 수 있다. 일단 검증되면, 노드 1은 다양한 다른 블록체인 노드를 포함하는 블록체인 네트워크로 트랜잭션을 브로드캐스팅할 수 있다. 블록체인 노드는 로컬 가상 머신(virtual machine: VM)에 대한 연산을 통해 트랜잭션을 검증하고, 검증된 트랜잭션을 블록체인의 새로운 블록으로 패킹할 수 있다. 새로운 블록은 모든 블록체인 노드와 동기화될 것이다.
이더리움 시스템과 같은 현재의 블록체인 플랫폼은 솔리디티 계약만을 지원한다. 솔리디티는 이더리움 가상 머신(ethereum virtual machine: EVM)에 의해 구현된 블록체인 계약을 기재하기 위한 계약-지향 프로그래밍 언어이다. 이러한 블록체인 시스템은 c++, 자바(java), 파이썬(python) 등과 같은 다른 프로그램 언어의 계약 언어를 지원하지 않는다. 결과적으로, 블록체인 시스템은 네이티브 계약(예를 들어, c++ 또는 다른 논(non)-솔리디티 언어로 기재된 블록체인 계약)을 지원하거나 실행하지 않는다. 기존 기술의 이러한 결함은 개발을 억제하고 블록체인 시스템의 응용을 제한한다.
현재 기술의 결함을 적어도 경감시키고, 전술한 기술적 문제에 대한 기술적 해결책을 제공하며, 컴퓨터 기능성을 향상시키기 위해, 블록체인 상에 네이티브 계약을 구현하기 위한 시스템 및 방법이 개시된다. 네이티브 계약에 대한 지원은 스마트 계약의 어플리케이션을 확장하기 위해 동적 라이브러리를 사용하여 달성될 수 있다. 예로서, 아래의 시스템 및 방법은 c++ 시스템에 기초하여 설명된다. 본 기술 분야의 통상의 기술자는 다양한 다른 컴퓨터 언어 시스템에 대한 개시된 시스템 및 방법의 적용을 이해할 것이다.
도 2는 다양한 실시형태에 따라 표시자를 추가하기 위한 예시적인 방법을 나타낸다. 아래 제시된 동작은 예시적인 것으로 의도된다. 구현에 따라, 예시적인 단계는 다양한 순서 또는 병렬로 수행되는 추가적이거나, 더 적거나 대안적인 단계를 포함할 수 있다. 도 2는 예시적인 프로그래밍 언어로서 c++를 사용하지만, 다양한 다른 프로그래밍 언어가 블록체인 계약을 기재하는 데 사용될 수 있다.
단계 201에서, 사용자는 사용자 디바이스 상에서 블록체인 계약을 c++로 프로그래밍할 수 있다. 예시적인 C++ 소스 코드의 일부가 표시된다. 소스 코드는 컴파일러(예를 들어, c++ 컴파일러)로 전송될 수 있다. 컴파일러는 사용자 디바이스 또는 사용자 디바이스에 커플링된 다른 디바이스 상에 있을 수 있다.
단계 202에서, 컴파일러는 (예를 들어, .cpp 파일의) 소스 코드를 블록체인 계약의 (예를 들어, .so 파일의) 바이트코드로 컴파일링할 수 있다. 일부 실시형태에서, 사용자는 프론트-엔드에서 다양한 프로그래밍 언어(예를 들어, 자바, c++, 파이썬)로 블록체인 계약을 구성할 수 있다. 프론트-엔드 소프트웨어는 사용자 디바이스로 로드될 수 있다. 그 후, 프론트-엔드와 연관된 컴파일러가 블록체인 계약을 바이트코드로 컴파일링할 수 있다. 컴파일러는 하나의 프로그래밍 언어(소스 언어)로 기재된 컴퓨터 코드를 다른 프로그래밍 언어(타겟 언어)로 변환하는 컴퓨터 소프트웨어일 수 있다. 컴파일러는 실행 가능한 프로그램을 생성하기 위해 높은 레벨의 프로그래밍 언어로부터 더 낮은 레벨의 언어(예를 들어, 어셈블리 언어, 객체 코드 또는 머신 코드)로 소스 코드를 트랜슬레이팅할 수 있다. 포터블(portable) 코드 또는 p-코드라고도 칭해지는 바이트코드는 소프트웨어 인터프리터에 의한 효율적인 실행을 위해 설계된 명령어 세트의 형태이다. 블록체인 계약은 사람이 판독할 수 있는 다양한 프로그래밍 언어로 된 소스 코드에 의해 기재될 수 있지만, 바이트코드는 머신 코드 또는 객체 노드로 칭해질 수 있다. 사람이 판독할 수 있는 소스 코드와는 달리, 바이트코드는 프로그램 객체의 유형, 범위 및 네스팅(nesting) 깊이와 같은 것의 시맨틱(semantic) 분석을 파싱(parsing)하고 수행하는 컴파일러의 결과를 인코딩하는 컴팩트 숫자 코드, 상수 및 레퍼런스(예를 들어, 숫자 주소)이다. 이 경우, 바이트코드는 블록체인에 의해 판독되어 블록체인 계약을 실행할 수 있다.
예로서, 컴파일링된 바이트코드의 16진 영역의 처음 2 바이트가 도시된다. 명확성을 위해, 주소 영역 및 아스키(ascii) 영역과 같은 바이트코드의 특정 부분은 나타내지 않고 있다. 바이트코드는 16진수일 수 있다. 본 명세서에서, c++ 바이트코드는 프로그램을 실행하는 c++에 대응하는 가상 머신에 대한 명령어를 포함하는 동적 라이브러리 파일(예를 들어, .so 파일)에 포함될 수 있다. 다양한 실시형태에서, 동적 라이브러리는 실행 가능 파일 또는 어플리케이션 외부에 존재한다. 런타임 동안, 동적 라이브러리와 실행 가능 파일 또는 어플리케이션 간에 링크가 확립된다. 프로그램 실행 중에 특수 기능을 포함하는 동적 라이브러리가 론칭되며, 이는 감소된 메모리 소비를 위해 전체 프로그램 크기를 최소화하고 향상된 어플리케이션 성능을 용이하게 한다.
단계 203에서, 사용자 디바이스(예를 들어, 지갑 소프트웨어)는 블록체인 계약의 컴파일링된 바이트코드에 표시자를 삽입할 수 있다. 본 명세서에 나타낸 예로서, 표시자는 바이트코드의 맨 앞에 추가될 수 있다. 표시자는 블록체인 계약의 유형(예를 들어, 블록체인 계약이 네이티브 계약인지, 블록체인 계약의 프로그래밍 언어인지 등)을 나타내는 1 바이트 데이터를 포함할 수 있다. 이 예에서, 표시자는 네이티브 계약을 가리키고 c++을 나타내는 03이다. 표시자는 또한 16진수일 수 있다. 따라서, 03은 여기서 0x03을 나타낸다. 다른 다양한 표현이 대안적으로 사용될 수 있다. 표시자는 또한 바이트코드 내의 다른 위치에 삽입될 수 있다.
일부 실시형태에서, (예를 들어, 암호 화폐 지갑 또는 다른 블록체인 플랫폼 소프트웨어가 설치된) 사용자 디바이스는 사용자로 하여금 블록체인 계약의 계약 유형(예를 들어, 네이티브 계약, 솔리디티 계약, 자바-기재 계약, C++-기재 계약, 파이썬-기재 계약 등)을 입력, 선택 또는 이와 다르게 식별하도록 촉구할 수 있다. 사용자-제공 정보에 기초하여, 사용자 디바이스는 계약 유형을 나타내는 표시자를 적용할 수 있다. 사용자 디바이스는 대안적으로 계약 유형을 자동-검출하여 계약 유형을 나타내는 표시자를 적용할 수 있다. 예를 들어, "03" 또는 "0x03"은 네이티브 계약을 나타내고 "05" 또는 "0x05"는 솔리디티 계약을 나타낼 수 있다. 다른 예에 있어서, , "01" 또는 "0x01"은 솔리디티 언어의 계약을 나타낼 수 있고, "02" 또는 "0x02"는 자바 언어의 계약을 나타내며, "03" 또는 "0x03"은 C++ 언어의 계약을 나타낼 수 있고, "04" 또는 "0x04"는 파이썬 언어의 계약을 나타낼 수 있는 등이 있다. 표시자는 바이트코드 또는 대안적인 포맷일 수 있다. 16진수 표현이 종종 사용되지만, 표시자는 전술한 표현 예에 한정되지 않을 수 있다. 본 기술 분야의 통상의 기술자는 다양한 유형의 표시자 표현의 사용을 이해할 수 있다. 표시자는 블록체인 계약의 컴파일링된 바이트코드 앞에 또는 다른 위치에 추가될 수 있다. 일 예에서, 표시자는 바이트코드 앞에 추가된다. 표시자는 1 바이트 또는 다른 데이터 단위를 차지할 수 있다.
표시자가 컴파일링된 바이트코드에 추가된 후, 조합된 바이트코드가 획득된다. 단계 203 후에, 사용자 디바이스는 조합된 바이트코드를 블록체인 노드에 전송할 수 있고, 블록체인 네트워크의 블록체인 노드 또는 다른 블록체인 노드는 블록체인 계약을 실행하기 위해 표시자에 기초하여 가상 머신을 트리거링할 수 있다.
일부 실시형태에서, 표시자가 바이트코드에 추가되면, 사용자 디바이스는 블록체인 계약을 하나 이상의 합의 노드에 송신할 수 있다. 합의 노드는 표시자 및 블록체인 계약의 컴파일링된 바이트코드를 포함하는 조합된 바이트코드를 수신할 수 있다. 계약이 전개되었다는 메시지를 수신한 후에, 합의 노드는 조합된 바이트코드의 부분(예를 들어, 조합된 바이트코드의 첫 번째 바이트에서의 표시자)을 얻고, 계약 코드의 얻어진 일부에 기초하여 계약을 실행 및 저장하기 위해 대응하는 가상 머신을 활성화할 수 있다. 다양한 실시형태에서, 가상 머신은 바이트코드를 프로세서에 의해 실행될 수 있는 어셈블리 언어 또는 다른 명령어 세트로 바꿀 수 있다. 예를 들어, 계약 코드가 c++인 경우, GNU 컴파일러 컬렉션(GCC)이 계약을 실행하기 위해 호출될 수 있으며; 계약 코드가 자바인 경우, 자바 가상 머신(JVM)이 계약을 실행하기 위해 호출될 수 있으며; 계약 코드가 솔리디티인 경우, 이더리움 가상 머신(EVM)이 계약을 실행하기 위해 호출될 수 있으며; 계약 코드가 파이썬인 경우, phython 가상 머신(PVM)이 계약을 실행하기 위해 호출될 수 있다. 전술한 가상 머신은 단지 예시적이며, 다른 대안으로 교체될 수 있다.
도 3a 내지 도 3c는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법의 흐름도를 각각 나타낸다. 본 방법은 다양한 소프트웨어 및 하드웨어를 포함하는 블록체인 시스템(예를 들어, 시스템(100))에 의해 구현될 수 있다. 예를 들어, 블록체인 시스템은 임의 선택적 클라이언트를 제1 소프트웨어로서, 가상 머신을 제2 소프트웨어로서 포함할 수 있으며, 소스 코드 파일 apply.cpp에 대한 액세스를 가질 수 있다. 아래 제시된 동작은 예시적인 것으로 의도된다. 구현에 따라, 예시적인 단계는 다양한 순서 또는 병렬로 수행되는 추가적인, 더 적은 또는 대안적인 단계를 포함할 수 있다. 도 3a 내지 도 3c와 관련하여 본 방법은 후술하는 공통적인 단계 1 내지 단계 5를 공유할 수 있다.
일부 실시형태에서, 단계 1에서, 프론트-엔드 소프트웨어는 실행될 블록체인 계약의 유형을 식별하도록 사용자에게 촉구할 수 있다. 프론트-엔드는 블록체인 노드를 통해 또는 블록체인 노드에 커플링된 디바이스(예를 들어, 사용자 디바이스)를 통해 제공될 수 있다. 본 명세서에서, 블록체인 계약의 유형은 블록체인 계약의 카테고리 또는 분류를 나타낼 수 있다. 예를 들어, 유형은 블록체인 계약의 프로그래밍 언어에 기초할 수 있다. 블록체인 계약은 자바, c++, 솔리디티, 파이썬 등으로 기재될 수 있다. 솔리디티로 기재된 블록체인 계약은 솔리디티 계약으로 칭해질 수 있다. 블록체인 시스템과 같은 자바, c++, 파이썬 또는 다른 언어로 기재된 블록체인 계약은 네이티브 계약으로 칭해질 수 있다. 그럼에도 불구하고, 블록체인 계약의 유형은 블록체인 계약의 프로그래밍 언어와 관련이 없는 카테고리 또는 분류를 나타낼 수 있다.
일 예에서, 사용자는 표시자에 의해 표현될 수 있는 계약 유형을 식별하도록 요구될 수 있다. 사용자는 사용자 인터페이스를 통해 계약 유형을 식별할 수 있다. 네이티브 계약이 표시되면, 본 방법의 다음 단계가 수행된다.
일부 실시형태에서, 단계 2에서, c++ 플랫폼에서, 인터페이스(예를 들어, 일반 인터페이스)가 사용자에게 제공되어 블록체인에 액세스하고 네이티브 계약을 실행할 수 있다. 인터페이스는 동적 로딩에 의해 제공될 수 있다. 인터페이스에는 사용자가 네이티브 계약을 구현하기 위해 사전-결정된 입력 및 출력 포맷을 필요로 할 수 있다. 입력 및 출력 포맷은 데이터를 호출하는 방법을 포함할 수 있다. 이러한 요건에 따라, 사용자는 인터페이스에서 네이티브 계약에 대한 소스 코드를 제공할 수 있다.
일부 실시형태에서, 단계 3에서, 컴파일러는 대응하는 동적 라이브러리 파일(예를 들어, .so 파일)을 생성하기 위해 네이티브 계약(예를 들어, c++ 언어의 소스 코드 파일(.cpp))을 컴파일링할 수 있다. 동적 라이브러리 파일은 바이트코드와 같은 머신 코드일 수 있다. 이 단계의 상세 사항은 전술한 도 2를 참조할 수 있다.
일부 실시형태에서, 단계 4에서, 네이티브 계약은 블록체인 시스템에서 전개될 수 있다. 예를 들어, 표시자는 조합된 바이트코드를 얻기 위해 바이트코드에 추가될 수 있다. 즉, 조합된 바이트코드는 표시자 및 동적 라이브러리 파일의 컴파일링된 바이트코드를 포함할 수 있다. 조합된 바이트코드는 블록체인 노드(예를 들어, 백-엔드 소프트웨어)로 전송될 수 있다. 이 단계의 상세 사항은 전술한 도 2를 참조할 수 있다.
일부 실시형태에서, 단계 5에서, 블록체인 노드는, 블록체인 계약이 적어도 표시자에 기초하여 네이티브 계약인지를 결정할 수 있다. 예를 들어, 합의 노드는, 블록체인 계약이 네이티브 계약인지를 결정하기 위해 표시자에 대응하는 바이트코드의 일부를 추출할 수 있다.
일부 실시형태에서, 합의 노드 백-엔드는 3개의 단계 6.1 내지 6.3 중 임의의 단계에 의해 네이티브 계약을 실행할 수 있다. 단계 6.1은 도 3a에 나타내고, 단계 6.2는 도 3b에 나타내며, 단계 6.3은 도 3c에 나타낸다.
단계 6.1에 있어서, 블록체인 노드는 동적 라이브러리 파일(또는 조합된 바이트코드)을 동적으로 링크 및/또는 로드하여 블록체인 시스템의 블록체인 계약을 직접 실행하고 결과를 반환할 수 있다. 예를 들어, 블록체인 노드는 동적 라이브러리 파일을 동적으로 링크 및/또는 로드함으로써 블록체인 계약을 실행하고 결과를 반환하기 위해 블록체인 계약에 대응하는 가상 머신을 트리거링할 수 있다. 임의 선택적으로, 블록체인 노드는 동적 라이브러리 파일을 동적으로 링크 및/또는 로드하기 위해 대응하는 로컬 동적 라이브러리 파일을 확립할 수 있다.
단계 6.2에 있어서, 합의 노드는 동적 라이브러리 파일(또는 조합된 바이트코드)을 실행하기 위해 (예를 들어, 포크(fork) 함수를 통해) 자녀 프로세스를 생성할 수 있다. 예를 들어, 합의 노드는 호출된 논리를 실행 가능 파일(클라이언트)로 컴파일하기 위해 클라이언트를 호출하도록 가상 머신을 트리거링할 수 있다. 실행 가능 파일은 동적 라이브러리 파일을 링크 및/또는 로드하여 동적 라이브러리 파일을 실행하고 실행 결과를 가상 머신에 반환하는 데 사용될 수 있다. 자녀 프로세스 및 블록체인 시스템(예를 들어, 가상 머신 또는 블록체인 시스템의 대안적인 구성 요소)은 소켓 또는 공유 메모리를 통해 통신할 수 있다. 실행 결과를 수신한 후, 블록체인 시스템은 다음 트랜잭션을 계속 실행할 수 있다.
단계 6.3에 있어서, 합의 노드는 실행 논리를 도커(docker)로서 저장할 수 있다. 사용자가 네이티브 계약을 실행하도록 호출하면, 도커가 활성화되어 동적 라이브러리 파일을 호출 및 실행하고 실행 결과를 블록체인 시스템에 반환한다. 실행 결과를 얻은 후, 블록체인 시스템은 다음 트랜잭션을 계속 실행할 수 있다. 도커 및 블록체인 시스템(예를 들어, 가상 머신 또는 블록체인 시스템의 대안적인 구성 요소)은 소켓을 통해 통신할 수 있다.
도커는 경량의, 휴대용의, 자급 자족형 컨테이너로서 어플리케이션을 쉽게 패킹, 배송 및 실행할 수 있게 한다. 호스트 운영 체제가 실행 중인 도커 컨테이너와 그 커널(kernel)을 공유하므로 도커 컨테이너는 운영 체제를 공유하며, 가상 머신 어플리케이션 각각은 게스트 운영 체제를 갖는다. 도커는 라이브 서버와 같은 로컬 개발 환경을 설정하고, 각각 고유 소프트웨어, 운영 체제 및 구성을 갖는 동일 호스트로부터 복수의 개발 환경을 실행하고, 새롭거나 상이한 서버 상에서 프로젝트를 테스트하고, 로컬 호스트 환경에 관계 없이, 정확하게 동일한 설정으로 동일한 프로젝트 상에서 누구든지 작업하는 것을 가능하게 한다. 여기서, 도커는 블록체인 계약을 실행하기 위한 가상 환경을 제공하며, 이는 합의 노드를 실행으로 인한 문제(예를 들어, 시스템 재시작, 버그, 악성 코드 실행 등)로부터 차단할 수 있다.
도 4는 다양한 실시형태에 따라 블록체인 상에서 네이티브 계약을 구현하기 위한 예시적인 방법(450)의 흐름도를 나타낸다. 본 방법(450)은 도 1a의 시스템(100)의 하나 이상의 구성 요소(예를 들어, 노드 1, 노드 2,..., 노드 i, 또는 노드 1과 노드 A의 조합 등)에 의해 구현될 수 있다. 본 방법(450)은 하드웨어 머신(예를 들어, 서버) 및 소프트웨어(예를 들어, 블록체인 소프트웨어)에 대응하는 합의 노드에 의해 구현될 수 있다. 본 방법(450)은 하나 이상의 시스템 또는 디바이스(예를 들어, 컴퓨터, 서버)에 의해 구현될 수 있다. 시스템 또는 디바이스는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 커플링되고 시스템 또는 디바이스(예를 들어, 프로세서)로 하여금 본 방법(450)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독 가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수 있다. 이하 제시되는 방법(450)의 동작은 예시적인 것으로 의도된다. 구현에 따라, 예시적인 방법(450)은 다양한 순서 또는 병렬로 수행되는 추가적인, 더 적은 또는 대안적인 단계를 포함할 수 있다.
블록(451)은 블록체인 계약과 연관된 조합된 바이트코드를 얻는 단계를 포함하며, 여기서 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함한다. 일부 실시형태에서, 조합된 바이트코드는 블록체인 계약의 소스 코드로부터 컴파일링된 동적 라이브러리 파일의 바이트코드를 포함한다. 일 예에서, 소스 코드는 c++이다. "조합된"이라는 단어는, 조합된 바이트코드가 (1) 표시자 및 (2) 소스 코드로부터 컴파일링된 바이트코드를 포함할 수 있기 때문에 표시자의 포함을 나타낼 수 있다. 표시자는 바이트코드 포맷일 수 있거나 아닐 수도 있다.
블록(452)은 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계를 포함한다. 일부 실시형태에서, 적어도 표시자에 기초하여 블록체인 계약의 유형을 결정하는 단계는, 블록체인 계약의 유형이 네이티브 계약인지를 결정하는 단계를 포함한다.
블록(453)은 결정된 블록체인 계약의 유형에 기초하여 블록체인 계약을 실행하는 단계를 포함한다.
일부 실시형태에서, 블록(454)에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 거래를 실행하도록 블록체인 가상 머신을 트리거링하는 단계를 포함한다. 블록체인 계약을 실행하도록 가상 머신을 트리거링하는 단계는, 적어도 표시자에 기초하여 유형에 대응하는 가상 머신을 결정하는 단계; 및 동적 라이브러리 파일을 실행하도록 결정된 가상 머신을 트리거링하는 단계를 포함한다.
일부 실시형태에서, 블록(455)에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 단계를 포함한다. 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 단계는, 실행 가능 파일을 생성하는 단계; 및 동적 라이브러리 파일을 실행하기 위해 실행 가능 파일을 론칭하도록 자녀 프로세스를 생산하는 단계를 포함한다. 자녀 프로세스 및 블록체인 가상 머신은 소켓 또는 공유 메모리를 통해 통신한다.
일부 실시형태에서, 블록(456)에서, 블록체인 계약의 결정된 유형에 기초하여 블록체인 계약을 실행하는 단계는, 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 단계를 포함한다. 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 단계는, 도커 컨테이너를 생성하는 단계; 및 동적 라이브러리 파일을 실행하도록 도커 컨테이너를 론칭하는 단계를 포함한다. 도커 컨테이너 및 블록체인 가상 머신은 소켓을 통해 통신한다.
현재 기술에서, 블록체인 노드의 블록체인 소프트웨어는, 블록체인 노드의 하드웨어 시스템이 (예를 들어, 하드웨어 머신 또는 시스템 구성의 이전 설치로부터) 이러한 가상 시스템에 액세스할 수 있음에도 불구하고, 다양한 유형의 가상 시스템을 통합할 가능성이 없다. 개시된 방법으로, 블록체인 노드는 수신된 계약의 바이트코드에 기초하여 계약 유형(예를 들어, 네이티브 또는 솔리디티 계약인지 여부, 계약의 프로그래밍 언어)을 결정하고 계약을 실행하도록 대응 방법을 트리거링할 수 있다. 동적 라이브러리 파일의 사용으로, 네이티브 계약은 솔리디티 계약으로 변환하지 않고도 실행을 위해 블록체인 시스템에 의해 지원될 수 있다. 따라서, 블록체인 계약이 더 이상 솔리디티 언어로 기재될 필요가 없고 네이티브 계약이 솔리디티 계약과 같이 실행될 수 있으므로, 블록체인 계약 시스템의 적용 범위와 호환성이 확장되었다.
본 명세서에 설명되는 기술은 하나 이상의 특수-목적 컴퓨팅 디바이스에 의해 구현된다. 특수-목적 컴퓨팅 디바이스는 데스크톱 컴퓨터 시스템, 서버 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 휴대용 디바이스, 네트워킹 디바이스 또는 임의의 다른 디바이스 또는 기술을 구현하기 위해 하드-와이어드 및/또는 프로그램 논리를 통합하는 디바이스의 조합일 수 있다. 컴퓨팅 디바이스(들)는 일반적으로 운영 체제 소프트웨어에 의해 제어되고 조정된다. 통상의 운영 체제는 실행을 위해 컴퓨터 프로세스를 제어 및 스케줄링하고, 메모리 관리를 수행하고, 파일 시스템, 네트워킹, I/O 서비스를 제공하며, 그 중에서도 그래픽 사용자 인터페이스("GUI")와 같은 사용자 인터페이스 기능을 제공한다.
도 5는 다양한 실시형태에 따라 블록체인 상에 고유 계약을 구현하기 위한 예시적인 컴퓨터 시스템(550)의 블록도를 나타낸다. 시스템(550)은 도 1a의 시스템(100) 또는 유사한 디바이스의 노드 1의 예시적인 구현, 노드 A와 노드 1, 노드 2,..., 노드 i의 조합일 수 있다. 본 방법(450)은 컴퓨터 시스템(550)에 의해 구현될 수 있다. 컴퓨터 시스템(550)은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 커플링되고 시스템 또는 디바이스(예를 들어, 프로세서)로 하여금 본 방법(450)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독 가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수 있다. 컴퓨터 시스템(550)은 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 유닛/모듈을 포함할 수 있다. 일부 실시형태에서, 컴퓨터 시스템(550)은 블록체인 계약과 연관된 조합된 바이트코드를 획득하도록 구성된 획득 모듈(551)로서, 조합된 바이트코드는 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 획득 모듈; 표시자에 적어도 기초하여 블록체인 계약의 유형을 결정하도록 구성된 결정 모듈(552); 및 결정된 블록체인 계약의 유형에 기초하여 블록체인 계약을 실행하도록 구성된 실행 모듈(553)을 포함할 수 있다.
도 6은 본 명세서에 설명되는 임의의 실시형태가 구현될 수 있는 컴퓨터 시스템(600)을 나타내는 블록도이다. 시스템(600)은 본 명세서에 설명되는 노드들 중 임의의 노드에서 구현될 수 있고 블록체인 상에 네이티브 계약을 구현하기 위한 대응하는 단계를 수행하도록 구성될 수 있다. 컴퓨터 시스템(600)은 정보를 통신하기 위한 버스(602) 또는 다른 통신 메커니즘, 정보를 프로세싱하기 위해 버스(602)와 커플링된 하나 이상의 하드웨어 프로세서(들)(604)를 포함한다. 하드웨어 프로세서(들)(604)는 예를 들어, 하나 이상의 범용 마이크로프로세서일 수 있다.
또한, 컴퓨터 시스템(600)은 프로세서(들)(604)에 의해 실행될 정보 및 명령어를 저장하기 위해 버스(602)에 커플링되는 랜덤 액세스 메모리(RAM), 캐시 및/또는 다른 동적 저장 디바이스와 같은 메인 메모리(606)를 포함한다. 또한, 메인 메모리(606)는 프로세서(들)(604)에 의해 실행될 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하는 데 사용될 수 있다. 이러한 명령어는, 프로세서(들)(604)에 액세스 가능한 저장 매체에 저장될 때, 컴퓨터 시스템(600)을 명령어에 특정된 동업을 수행하도록 맞춤화된 특수-목적 머신으로 렌더링한다. 컴퓨터 시스템(600)은 판독 전용 메모리(ROM)(608) 또는 프로세서(들)(604)에 대해 정적인 정보 및 명령어를 저장하기 위해 버스(602)에 커플링되는 다른 정적인 저장 디바이스를 추가로 포함한다. 자기 디스크, 광 디스크, 또는 USB 썸(thumb) 드라이브(플래시 드라이브) 등과 같은 저장 디바이스(610)가 제공되고, 정보 및 명령어를 저장하기 위해 버스(602)에 커플링된다.
컴퓨터 시스템(600)은 컴퓨터 시스템과 조합하여 컴퓨터 시스템(600)이 특수-목적 머신이 되게 하거나 프로그램하는 맞춤화된 하드-와이어드 논리, 하나 이상의 ASIC 또는 FPGA, 펌웨어 및/또는 프로그램 논리를 사용하여 본 명세서에 설명되는 기술을 구현할 수 있다. 일 실시형태에 따르면, 본 명세서에 설명되는 동작, 방법 및 프로세스는 메인 메모리(606)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 프로세서(들)(604)에 응답하여 컴퓨터 시스템(600)에 의해 수행된다. 이러한 명령은 저장 디바이스(610)와 같은 다른 저장 매체로부터 메인 메모리(606)로 판독될 수 있다. 메인 메모리(606)에 포함된 명령어의 시퀀스들의 실행은 프로세서(들)(604)로 하여금 본 명세서에 설명되는 프로세스 단계를 수행하게 한다. 대안적인 실시형태에서, 하드-와이어드 회로가 소프트웨어 명령 대신 또는 이와 조합하여 사용될 수 있다.
메인 메모리(606), ROM(608) 및/또는 저장소(610)는 비일시적인 저장 매체를 포함할 수 있다. 본 명세서에서 사용되는 용어 "비일시적 매체" 및 이와 유사한 용어는 머신으로 하여금 특정 방식으로 작동하게 하는 데이터 및/또는 명령어를 저장하는 매체를 지칭하며, 그 매체는 일시적인 신호를 배제한다. 이러한 비일시적인 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는 예를 들어, 저장 디바이스(610)와 같은 광 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(606)와 같은 동적 메모리를 포함한다. 통상적인 형태의 비일시적인 매체는 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광 데이터 저장 매체, 구멍 패턴을 갖는 임의의 물리적 매체, RAM, PROM, 및 EPROM, FLASH-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지, 및 이들의 네트워킹된 버전을 포함한다.
또한, 컴퓨터 시스템(600)은 버스(602)에 커플링된 네트워크 인터페이스(618)를 포함한다. 네트워크 인터페이스(618)는 하나 이상의 로컬 네트워크에 접속된 하나 이상의 네트워크 링크에 양방향 데이터 통신 커플링을 제공한다. 예를 들어, 네트워크 인터페이스(618)는 통합 서비스 디지털 네트워크(ISDN) 카드, 케이블 모뎀, 위성 모뎀, 또는 대응하는 유형의 전화선에 데이터 통신 접속을 제공하는 모뎀일 수 있다. 다른 예로서, 네트워크 인터페이스(618)는 호환 가능한 LAN(또는 WAN과 통신하기 위한 WAN 구성 요소)에 데이터 통신 접속을 제공하기 위한 근거리 네트워크(LAN) 카드일 수 있다. 또한, 무선 링크가 구현될 수 있다. 이러한 임의의 구현에서, 네트워크 인터페이스(618)는 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 운반하는 전기, 전자기 또는 광 신호를 전송 및 수신한다.
컴퓨터 시스템(600)은 네트워크(들), 네트워크 링크 및 네트워크 인터페이스(618)를 통해 메시지를 전송하고 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버는 어플리케이션 프로그램에 대한 요청된 코드를 인터넷, ISP, 로컬 네트워크 및 네트워크 인터페이스(618)를 통해 송신할 수 있다.
수신된 코드는 수신될 때 프로세서(들)(604)에 의해 실행되고/실행되거나 장래에 실행하기 위해 저장 디바이스(610) 또는 다른 비휘발성 저장소에 저장될 수 있다.
전술한 섹션에서 설명된 프로세스, 방법 및 알고리즘 각각은 하나 이상의 컴퓨터 시스템 또는 컴퓨터 하드웨어를 포함하는 컴퓨터 프로세서에 의해 실행되는 코드 모듈에 구현될 수 있고, 이에 의해 완전히 또는 부분적으로 자동화될 수 있다. 프로세스 및 알고리즘은 어플리케이션-특정 회로에서 부분적으로 또는 전체적으로 구현될 수 있다.
전술한 다양한 특징 및 프로세스는 서로 독립적으로 사용될 수 있거나, 다양한 방식으로 조합될 수 있다. 모든 가능한 조합 및 부조합은 본 명세서의 범위 내에 속하는 것으로 의도된다. 또한, 일부 구현에서 특정 방법 또는 프로세스 블록이 생략될 수 있다. 또한, 본 명세서에 설명된 방법 및 프로세스는 임의의 특정 시퀀스로 제한되지 않으며, 이에 관련된 블록 또는 상태는 적절한 다른 시퀀스에서 수행될 수 있다. 예를 들어, 설명된 블록 또는 상태는 구체적으로 개시된 것 이외의 순서로 수행될 수 있거나, 복수의 블록 또는 상태가 단일 블록 또는 상태로 조합될 수 있다. 예시적인 블록 또는 상태는 직렬, 병렬 또는 몇몇 다른 방식으로 수행될 수 있다. 블록 또는 상태가 개시된 예시적인 실시형태에 추가되거나 이로부터 제거될 수 있다. 본 명세서에 설명된 예시적인 시스템 및 구성 요소는 설명된 것과 다르게 구성될 수 있다. 예를 들어, 요소는 개시된 예시적인 실시형태와 비교하여 추가, 제거 또는 재배치될 수 있다.
본 명세서에 설명된 예시적인 방법의 다양한 동작은 적어도 부분적으로 알고리즘에 의해 수행될 수 있다. 알고리즘은 메모리(예를 들어, 전술한 비일시적 컴퓨터-판독 가능 저장 매체)에 저장된 프로그램 코드 또는 명령어로 구성될 수 있다. 이러한 알고리즘은 머신 학습 알고리즘을 포함할 수 있다. 일부 실시형태에서, 머신 학습 알고리즘은 기능을 수행하도록 컴퓨터를 명시적으로 프로그래밍하지 않을 수 있지만, 기능을 수행하는 예측 모델을 만들기 위해 트레이닝 데이터로부터 학습할 수 있다.
본 명세서에서 설명된 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되어 있든지 간에, 이러한 프로세서는 본 명세서에 설명된 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서-구현 엔진을 구성할 수 있다.
유사하게, 본 명세서에 설명된 방법은 하드웨어의 일례인 특정 프로세서 또는 프로세서들로 적어도 부분적으로 프로세서-구현될 수 있다. 예를 들어, 방법의 동작 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서-구현 엔진에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어"(SaaS)로서 관련 동작의 수행을 지원하도록 또한 동작할 수 있다. 예를 들어, 적어도 일부 동작은 (프로세서를 포함하는 머신의 예로서) 컴퓨터의 그룹에 의해 수행될 수 있으며, 이러한 동작은 네트워크(예를 들어, 인터넷) 및 하나 이상의 적절한 인터페이스(예를 들어, 응용 프로그램 인터페이스(API))를 통해 액세스 가능하다.
특정 동작의 수행은 단일 머신 내에 있을 뿐만 아니라 다수의 머신에 걸쳐 배치되어, 프로세서들 간에 분산될 수 있다. 일부 예시적인 실시형태에서, 프로세서 또는 프로세서-구현 엔진은 단일 지리적 위치(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내)에 위치될 수 있다. 다른 예시적인 실시형태에서, 프로세서 또는 프로세서-구현 엔진은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
본 명세서 전체에서, 복수의 인스턴스는 단일 인스턴스로 설명되는 구성 요소, 동작 또는 구조를 구현할 수 있다. 하나 이상의 방법의 개별적인 동작이 별개의 동작으로 예시되고 설명되었지만, 하나 이상의 개별적인 동작은 동시에 수행될 수 있고, 동작이 예시된 순서대로 수행될 필요는 없다. 예시적인 구성에서 별개의 구성 요소로서 제시된 구조 및 기능은 조합된 구조 또는 구성 요소로서 구현될 수 있다. 유사하게, 단일 구성 요소로서 제시된 구조 및 기능은 별개 구성 요소로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본원의 주제의 범위 내에 속한다.
본 주제의 개요가 특정의 예시적인 실시형태를 참조하여 설명되었지만, 본 명세서의 실시형태의 더 넓은 범위를 벗어나지 않으면서 이들 실시형태에 대한 다양한 수정 및 변경이 이루어질 수 있다. 본 주제의 이러한 실시형태는 편의상 그리고 실제로 하나 초과의 개시 또는 개념이 되었다면, 본 출원의 범위를 임의의 단일 개시 또는 개념으로 자발적으로 한정하는 것으로 의도하지 않으면서 개별적으로 또는 총괄적으로 "발명"이라는 용어로 칭해질 수 있다. 상세한 설명은 한정적인 의미로 이해되어서는 안되며, 다양한 실시형태의 범위는 그러한 청구항들이 부여받는 등가물의 전체 범위와 함께 첨부된 청구항들에 의해서만 정의된다.

Claims (23)

  1. 블록체인 상에 네이티브(native) 계약을 구현하기 위한 컴퓨터-구현 방법으로서,
    블록체인 계약과 연관된 조합된 바이트코드(bytecode)를 획득하는 단계로서, 상기 조합된 바이트코드는 상기 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 단계;
    적어도 상기 표시자에 기초하여 상기 블록체인 계약의 상기 유형을 결정하는 단계; 및
    상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 단계를 포함하는, 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 조합된 바이트코드는 상기 블록체인 계약의 소스 코드로부터 컴파일링된 동적 라이브러리 파일의 바이트코드를 포함하는, 컴퓨터-구현 방법.
  3. 제2항에 있어서, 적어도 상기 표시자에 기초하여 상기 블록체인 계약의 상기 유형을 결정하는 단계는,
    상기 블록체인 계약의 상기 유형이 네이티브 계약인지를 결정하는 단계를 포함하는, 컴퓨터-구현 방법.
  4. 제3항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 단계는,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 블록체인 가상 머신을 트리거링하는 단계를 포함하는, 컴퓨터-구현 방법.
  5. 제4항에 있어서, 상기 블록체인 계약을 실행하도록 상기 가상 머신을 트리거링하는 단계는,
    적어도 상기 표시자에 기초하여 상기 유형에 대응하는 상기 가상 머신을 결정하는 단계; 및
    상기 동적 라이브러리 파일을 실행하도록 상기 결정된 가상 머신을 트리거링하는 단계를 포함하는, 컴퓨터-구현 방법.
  6. 제3항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 단계는,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 단계를 포함하는, 컴퓨터-구현 방법.
  7. 제6항에 있어서, 상기 블록체인 계약을 실행하도록 상기 자녀 프로세스를 생성하는 단계는,
    실행 가능 파일을 생성하는 단계; 및
    상기 동적 라이브러리 파일을 실행하기 위해 상기 실행 가능 파일을 론칭하도록 상기 자녀 프로세스를 생산하는 단계를 포함하는, 컴퓨터-구현 방법.
  8. 제6항에 있어서,
    상기 자녀 프로세스 및 블록체인 가상 머신은 소켓(socket) 또는 공유 메모리를 통해 통신하는, 컴퓨터-구현 방법.
  9. 제3항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 단계는,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 도커 컨테이너(docker container)를 론칭하는 단계를 포함하는, 컴퓨터-구현 방법.
  10. 제9항에 있어서, 상기 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 단계는,
    상기 도커 컨테이너를 생성하는 단계; 및
    상기 동적 라이브러리 파일을 실행하도록 상기 도커 컨테이너를 론칭하는 단계를 포함하는, 컴퓨터-구현 방법.
  11. 제9항에 있어서,
    상기 도커 컨테이너 및 블록체인 가상 머신은 소켓을 통해 통신하는, 컴퓨터-구현 방법.
  12. 하나 이상의 프로세서로 하여금 동작들을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 비일시적 컴퓨터-판독 가능 저장 매체로서, 상기 동작들은,
    블록체인 계약과 연관된 조합된 바이트코드를 획득하는 동작으로서, 상기 조합된 바이트코드는 상기 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 상기 조합된 바이트코드를 획득하는 동작;
    적어도 상기 표시자에 기초하여 상기 블록체인 계약의 상기 유형을 결정하는 동작; 및
    상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 동작을 포함하는, 저장 매체.
  13. 제12항에 있어서,
    상기 조합된 바이트코드는 상기 블록체인 계약의 소스 코드로부터 컴파일링된 동적 라이브러리 파일의 바이트코드를 포함하는, 저장 매체.
  14. 제13항에 있어서, 적어도 상기 표시자에 기초하여 상기 블록체인 계약의 상기 유형을 결정하는 동작은,
    상기 블록체인 계약의 상기 유형이 네이티브 계약인지를 결정하는 것을 포함하는, 저장 매체.
  15. 제14항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 것은,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 블록체인 가상 머신을 트리거링하는 것을 포함하는, 저장 매체.
  16. 제15항에 있어서, 상기 블록체인 계약을 실행하도록 상기 가상 머신을 트리거링하는 것은,
    적어도 상기 표시자에 기초하여 상기 유형에 대응하는 상기 가상 머신을 결정하는 것; 및
    상기 동적 라이브러리 파일을 실행하도록 상기 결정된 가상 머신을 트리거링하는 것을 포함하는, 저장 매체.
  17. 제14항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 동작은,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 자녀 프로세스를 생성하는 것을 포함하는, 저장 매체.
  18. 제17항에 있어서, 상기 블록체인 계약을 실행하도록 상기 자녀 프로세스를 생성하는 것은,
    실행 가능 파일을 생성하는 것; 및
    상기 동적 라이브러리 파일을 실행하기 위해 상기 실행 가능 파일을 론칭하도록 상기 자녀 프로세스를 생산하는 것을 포함하는, 저장 매체.
  19. 제17항에 있어서,
    상기 자녀 프로세스 및 블록체인 가상 머신은 소켓 또는 공유 메모리를 통해 통신하는, 저장 매체.
  20. 제14항에 있어서, 상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 동작은,
    상기 블록체인 계약이 네이티브 계약인 것으로 결정한 것에 응답하여, 상기 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 것을 포함하는, 저장 매체.
  21. 제20항에 있어서, 상기 블록체인 계약을 실행하도록 도커 컨테이너를 론칭하는 것은,
    상기 도커 컨테이너를 생성하는 것; 및
    상기 동적 라이브러리 파일을 실행하도록 상기 도커 컨테이너를 론칭하는 것을 포함하는, 저장 매체.
  22. 제20항에 있어서,
    상기 도커 컨테이너 및 블록체인 가상 머신은 소켓을 통해 통신하는, 저장 매체.
  23. 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 커플링되고 시스템으로 하여금 동작들을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독 가능 메모리를 포함하는, 블록체인 상에 네이티브 계약을 구현하기 위한 시스템으로서, 상기 동작들은,
    블록체인 계약과 연관된 조합된 바이트코드를 획득하는 동작으로서, 상기 조합된 바이트코드는 상기 블록체인 계약의 유형을 나타내는 표시자를 포함하는, 조합된 바이트코드를 획득하는 동작;
    적어도 상기 표시자에 기초하여 상기 블록체인 계약의 상기 유형을 결정하는 동작; 및
    상기 블록체인 계약의 상기 결정된 유형에 기초하여 상기 블록체인 계약을 실행하는 동작을 포함하는, 블록체인 상에 네이티브 계약을 구현하기 위한 시스템.
KR1020197015103A 2018-12-29 2018-12-29 블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법 Active KR102237015B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/125623 WO2019072310A2 (en) 2018-12-29 2018-12-29 SYSTEM AND METHOD FOR IMPLEMENTING NATIVE CONTRACT ON BLOCK CHAIN

Publications (2)

Publication Number Publication Date
KR20200083932A true KR20200083932A (ko) 2020-07-09
KR102237015B1 KR102237015B1 (ko) 2021-04-07

Family

ID=66100137

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015103A Active KR102237015B1 (ko) 2018-12-29 2018-12-29 블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US11086847B2 (ko)
EP (1) EP3542494B1 (ko)
JP (1) JP6856749B2 (ko)
KR (1) KR102237015B1 (ko)
CN (1) CN110249307B (ko)
ES (1) ES2864179T3 (ko)
MY (1) MY199310A (ko)
PH (1) PH12019501153A1 (ko)
PL (1) PL3542494T3 (ko)
WO (1) WO2019072310A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220142209A (ko) * 2021-04-14 2022-10-21 아주대학교산학협력단 블록체인을 이용한 미래 이벤트에 대한 스마트컨트랙트 처리 방법 및 노드 장치
US11960579B2 (en) 2022-02-17 2024-04-16 Bank Of America Corporation Smart glass and blockchain digital signature implementation

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733152B2 (en) 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for implementing native contract on blockchain
CN110249307B (zh) 2018-12-29 2022-05-31 创新先进技术有限公司 用于在区块链上执行原生合约的系统和方法
US10866823B2 (en) 2019-03-26 2020-12-15 Advanced New Technologies Co., Ltd. System and method for implementing different types of blockchain contracts
EP3673617B1 (en) * 2019-03-27 2021-11-17 Advanced New Technologies Co., Ltd. Retrieving public data for blockchain networks using trusted execution environments
AU2019204708B2 (en) 2019-03-27 2020-08-20 Advanced New Technologies Co., Ltd. Retrieving public data for blockchain networks using highly available trusted execution environments
SG11201908983WA (en) 2019-03-29 2019-10-30 Alibaba Group Holding Ltd Retrieving access data for blockchain networks using highly available trusted execution environments
JP7221799B2 (ja) * 2019-05-31 2023-02-14 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
WO2019170175A2 (en) * 2019-06-28 2019-09-12 Alibaba Group Holding Limited System and method for executing different types of blockchain contracts
CN110392052B (zh) * 2019-07-22 2021-05-25 中国工商银行股份有限公司 一种区块链智能合约处理系统及方法
WO2021032115A1 (zh) * 2019-08-19 2021-02-25 杭州趣链科技有限公司 智能合约并行执行的方法、装置、设备和介质
CN110543407B (zh) * 2019-08-21 2021-11-05 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法
CN110659907B (zh) * 2019-09-24 2021-11-12 北京海益同展信息科技有限公司 用于执行智能合约的方法和装置
CN112491887B (zh) * 2019-09-25 2023-06-30 支付宝(杭州)信息技术有限公司 基于fpga实现虚拟机运算的方法及装置
CN110855688B (zh) * 2019-11-18 2021-06-25 腾讯科技(深圳)有限公司 一种区块链信息处理方法及相关设备
WO2021102616A1 (zh) * 2019-11-25 2021-06-03 深圳市网心科技有限公司 一种智能合约开发方法、装置及电子设备和存储介质
CN111026461B (zh) * 2019-12-06 2022-04-22 联想(北京)有限公司 用于区块链系统的数据处理方法、装置和电子设备
CN111240830A (zh) * 2019-12-31 2020-06-05 陕西医链区块链集团有限公司 一种公链合约资源分配方法、装置、电子设备、存储介质
CN111179086B (zh) * 2019-12-31 2024-01-02 杭州趣链科技有限公司 一种基于WebAssembly的智能合约虚拟机
CN111258714B (zh) * 2020-01-13 2023-03-10 电子科技大学 一种区块链智能合约执行方法
CN111324396B (zh) * 2020-03-19 2023-09-15 深圳市迅雷网络技术有限公司 一种区块链智能合约执行方法、装置及设备
CN111338616A (zh) * 2020-03-24 2020-06-26 北京自如信息科技有限公司 协议解析代码的生成方法、装置及电子设备
CN112835975B (zh) * 2020-06-05 2023-09-29 支付宝(杭州)信息技术有限公司 一种在区块链中部署、更新、调用智能合约的方法
CN111752850B (zh) * 2020-07-13 2021-08-20 腾讯科技(深圳)有限公司 区块链系统的测试方法及相关设备
CN111562969B (zh) * 2020-07-15 2020-10-20 百度在线网络技术(北京)有限公司 一种区块链的智能合约实现方法、装置、设备和介质
CN111815310B (zh) * 2020-08-31 2021-08-17 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770206B (zh) 2020-08-31 2020-12-29 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN111770205B (zh) * 2020-08-31 2020-12-04 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、系统和存储介质
CN112363804B (zh) * 2020-11-16 2024-01-26 北京差旅天下网络科技有限责任公司 区块链jvm应用方法、设备和存储介质
CN112286643B (zh) * 2020-12-24 2021-04-20 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112306645B (zh) * 2020-12-24 2021-05-04 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112651753B (zh) * 2020-12-30 2024-09-24 杭州趣链科技有限公司 基于区块链的智能合约生成方法、系统及电子设备
CN112686672B (zh) * 2021-01-08 2024-08-16 新晨科技股份有限公司 区块链上背书签名压缩方法、电子设备及存储介质
CN113312429B (zh) * 2021-06-22 2023-01-17 工银科技有限公司 区块链中的智能合约管理系统、方法、介质和产品
CN113256296B (zh) * 2021-07-01 2021-10-08 支付宝(杭州)信息技术有限公司 智能合约执行方法、系统、装置和存储介质
CN117917059A (zh) * 2021-07-07 2024-04-19 摩根大通国家银行 用于分布式账本网络中的上下文消息传递和信息路由的系统和方法
CN113360893B (zh) * 2021-08-11 2021-11-30 北京微芯感知科技有限公司 基于容器的智能合约执行方法、装置及存储介质
CN113360251B (zh) * 2021-08-11 2021-12-21 北京微芯感知科技有限公司 智能合约执行与跨合约调用方法、装置及存储介质
GB2618105A (en) * 2022-04-27 2023-11-01 Nchain Licensing Ag Protocol for communicating compact scripts
CN114936116B (zh) * 2022-05-30 2026-04-21 蚂蚁区块链科技(上海)有限公司 一种区块链服务管理方法和区块链节点
CN115495092B (zh) * 2022-09-30 2025-11-28 上海摩联信息技术有限公司 一种智能合约访问方法及装置
US11928438B1 (en) * 2023-07-07 2024-03-12 Northern Trust Corporation Computing technologies for large language models

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598579A (zh) * 2016-12-06 2017-04-26 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN106598549A (zh) * 2016-12-08 2017-04-26 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
CN107392619A (zh) * 2017-07-31 2017-11-24 众安信息技术服务有限公司 智能合约处理方法及装置
CN107833060A (zh) * 2017-11-13 2018-03-23 中国银行股份有限公司 一种区块链中智能合约交易的验证方法以及系统

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092147A (en) 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
DE602006004049D1 (de) 2006-09-07 2009-01-15 Research In Motion Ltd Vermittelte Registrierung von Kundenanwendungen und Dienstanbietern mit einem Push-Inhaltsbereitstellungssystem
US20080115125A1 (en) 2006-11-13 2008-05-15 Cingular Wireless Ii, Llc Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network
US9164749B2 (en) 2008-08-29 2015-10-20 Red Hat, Inc. Differential software provisioning on virtual machines having different configurations
US9274919B2 (en) 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9942250B2 (en) 2014-08-06 2018-04-10 Norse Networks, Inc. Network appliance for dynamic protection from risky network activities
US11159599B2 (en) 2014-10-10 2021-10-26 Dynatrace Llc Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities
US9967334B2 (en) 2015-03-02 2018-05-08 Dell Products Lp Computing device configuration and management using a secure decentralized transaction ledger
US10168678B2 (en) 2015-09-17 2019-01-01 Laundry 2.0, LLC Interfacing with laundry services and facilities
US10437585B2 (en) * 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US20170230285A1 (en) 2015-10-28 2017-08-10 Fractal Industries, Inc. Regulation based switching system for electronic message routing
US11130042B2 (en) 2016-02-02 2021-09-28 Bao Tran Smart device
US11170371B2 (en) 2016-03-03 2021-11-09 Nec Corporation Method for managing data in a network of nodes
EP3437002A4 (en) 2016-03-31 2019-08-21 Clause, Inc. SYSTEM AND METHOD FOR THE PRODUCTION AND EXECUTION OF DATA-CONTROLLED LEGAL AGREEMENTS
US10521775B2 (en) * 2016-04-18 2019-12-31 R3 Ltd. Secure processing of electronic transactions by a decentralized, distributed ledger system
US20170345011A1 (en) 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
US11829998B2 (en) 2016-06-07 2023-11-28 Cornell University Authenticated data feed for blockchains
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10755327B2 (en) 2016-07-18 2020-08-25 Royal Bank Of Canada Distributed ledger platform for vehicle records
CN109691015B (zh) 2016-08-30 2022-02-01 联邦科学和工业研究组织 一种区块链上的动态访问控制方法及系统
AU2017329089A1 (en) 2016-09-19 2019-04-04 Financial & Risk Organisation Limited Systems and methods for interception of smart contracts
WO2018094297A2 (en) 2016-11-19 2018-05-24 COSTANZ, Mario A System and method for interaction object reconciliation in a public ledger blockchain environment
US11349666B2 (en) 2017-01-27 2022-05-31 Meta Platforms, Inc. Electronically signing and distributing identification data as a service that provides proof of identity, integrity, validity and origin of data for non-repudiation and ID validation methods
US10243731B2 (en) 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
EP3355225B1 (en) 2017-01-31 2022-07-27 Sony Group Corporation Apparatus and method for providing a ethereum virtual device
US20180365201A1 (en) * 2017-06-14 2018-12-20 Clause, Inc. System and method for compound data-driven contracts and documentation
WO2019023286A1 (en) 2017-07-24 2019-01-31 Martino William SYSTEMS, METHODS AND APPARATUS BASED ON BLOCK CHAIN TO SECURE ACCESS TO INFORMATION STORES
US20190050831A1 (en) 2017-08-03 2019-02-14 Liquineq AG System and method for multi-tiered distributed network transactional database
US11146380B2 (en) 2017-08-03 2021-10-12 Parity Technologies Ltd. Methods and systems for a heterogeneous multi-chain framework
US10552556B2 (en) 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
US20190066101A1 (en) 2017-08-22 2019-02-28 Sap Se Transaction Platform Providing Unified View on Multiple Heterogeneous Blockchains
CN109426949B (zh) 2017-08-29 2021-02-09 华为技术有限公司 一种跨链交易方法及装置
US10938567B2 (en) 2017-09-12 2021-03-02 Kadena Llc Parallel-chain architecture for blockchain systems
US20190102163A1 (en) 2017-10-04 2019-04-04 Dispatch Labs, LLC System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System
US20190108576A1 (en) 2017-10-11 2019-04-11 Capital One Services, Llc Blockchain systems and methods for procurement
US11568505B2 (en) 2017-10-18 2023-01-31 Docusign, Inc. System and method for a computing environment for verifiable execution of data-driven contracts
US20210174360A1 (en) 2017-11-06 2021-06-10 Velo Holdings Limited Blockchain system
US11182780B2 (en) 2017-11-13 2021-11-23 American Express Travel Related Services Company, Inc. Secured account provisioning and payments for NFC-enabled devices
WO2019109003A1 (en) 2017-11-30 2019-06-06 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
WO2019113495A1 (en) 2017-12-08 2019-06-13 Solana Labs, Inc. Systems and methods for cryptographic provision of synchronized clocks in distributed systems
GB201720767D0 (en) 2017-12-13 2018-01-24 Barker Trevor Computer-implemented system and method
US11544708B2 (en) 2017-12-29 2023-01-03 Ebay Inc. User controlled storage and sharing of personal user information on a blockchain
CN108833460B (zh) * 2018-04-10 2021-05-25 平安科技(深圳)有限公司 基于区块链的音乐发布方法、装置及终端设备
US10833865B2 (en) 2018-04-30 2020-11-10 Dell Products L.P. Blockchain-based method and system for immutable resource allocation in a cloud computing environment
CN108664650B (zh) * 2018-05-17 2020-05-22 百度在线网络技术(北京)有限公司 一种区块链网络的事务处理方法、装置、设备及存储介质
CN108765158B (zh) * 2018-05-31 2020-11-24 杭州溪塔科技有限公司 一种基于区块链的智能合约引擎系统及其合约执行方法
CN108830720B (zh) * 2018-06-21 2021-04-30 北京京东尚科信息技术有限公司 智能合约运行方法、装置、系统和计算机可读存储介质
US10896195B2 (en) 2018-07-29 2021-01-19 International Business Machines Corporation Automatic generation of smart contracts
US11182379B2 (en) * 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN109493042A (zh) 2018-10-24 2019-03-19 南京邮电大学 一种拥有访问控制功能的智能合约可信存证方法和系统
CN110249307B (zh) 2018-12-29 2022-05-31 创新先进技术有限公司 用于在区块链上执行原生合约的系统和方法
US10866823B2 (en) 2019-03-26 2020-12-15 Advanced New Technologies Co., Ltd. System and method for implementing different types of blockchain contracts

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598579A (zh) * 2016-12-06 2017-04-26 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN106598549A (zh) * 2016-12-08 2017-04-26 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
CN107392619A (zh) * 2017-07-31 2017-11-24 众安信息技术服务有限公司 智能合约处理方法及装置
CN107833060A (zh) * 2017-11-13 2018-03-23 中国银行股份有限公司 一种区块链中智能合约交易的验证方法以及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220142209A (ko) * 2021-04-14 2022-10-21 아주대학교산학협력단 블록체인을 이용한 미래 이벤트에 대한 스마트컨트랙트 처리 방법 및 노드 장치
US11960579B2 (en) 2022-02-17 2024-04-16 Bank Of America Corporation Smart glass and blockchain digital signature implementation

Also Published As

Publication number Publication date
US20200311050A1 (en) 2020-10-01
PH12019501153A1 (en) 2019-12-11
WO2019072310A3 (en) 2019-10-24
WO2019072310A2 (en) 2019-04-18
US11086847B2 (en) 2021-08-10
EP3542494A2 (en) 2019-09-25
CN110249307A (zh) 2019-09-17
PL3542494T3 (pl) 2021-08-23
MY199310A (en) 2023-10-24
JP2020509443A (ja) 2020-03-26
ES2864179T3 (es) 2021-10-13
EP3542494A4 (en) 2020-02-26
EP3542494B1 (en) 2021-02-17
KR102237015B1 (ko) 2021-04-07
JP6856749B2 (ja) 2021-04-14
CN110249307B (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
KR102237015B1 (ko) 블록체인 상의 네이티브 계약을 구현하기 위한 시스템 및 방법
US10733152B2 (en) System and method for implementing native contract on blockchain
CN111033468B (zh) 实施不同类型的区块链合约的系统和方法
US10942756B2 (en) System and method for executing different types of blockchain contracts
US9183007B2 (en) Dynamic determination of application server runtime classloading
CN111095198B (zh) 用于数据处理的系统和方法
WO2022148390A1 (zh) 一种在区块链中部署、更新、调用智能合约的方法
US11893367B2 (en) Source code conversion from application program interface to policy document
CN111179086A (zh) 一种基于WebAssembly的智能合约虚拟机
HK40014708A (en) System and method for implementing native contract on blockchain
HK40014708B (zh) 用於在区块链上执行原生合约的系统和方法

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R11-asn-PN2301

R19-X000 Request for party data change rejected

St.27 status event code: A-3-3-R10-R19-oth-X000

N231 Notification of change of applicant
PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R13-asn-PN2301

St.27 status event code: A-3-3-R10-R11-asn-PN2301

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R14-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 6