KR102116373B1 - 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법 - Google Patents

가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법 Download PDF

Info

Publication number
KR102116373B1
KR102116373B1 KR1020180102391A KR20180102391A KR102116373B1 KR 102116373 B1 KR102116373 B1 KR 102116373B1 KR 1020180102391 A KR1020180102391 A KR 1020180102391A KR 20180102391 A KR20180102391 A KR 20180102391A KR 102116373 B1 KR102116373 B1 KR 102116373B1
Authority
KR
South Korea
Prior art keywords
smart contract
connection unit
program interpreter
transaction
blockchain
Prior art date
Application number
KR1020180102391A
Other languages
English (en)
Other versions
KR20200026366A (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 에이치닥 테크놀로지 아게
Priority to KR1020180102391A priority Critical patent/KR102116373B1/ko
Priority to PCT/KR2019/008810 priority patent/WO2020045823A1/ko
Publication of KR20200026366A publication Critical patent/KR20200026366A/ko
Application granted granted Critical
Publication of KR102116373B1 publication Critical patent/KR102116373B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • 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
    • 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
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명은 가상기계 환경에서 하나 이상의 블록체인, 하나 이상의 해석기, 하나 이상의 디바이스 제어기를 통합하여 동적으로 구성하는 스마트 컨트랙트 시스템 및 그 처리 방법에 관한 것으로, 본 발명에 의한 스마트 컨트랙트 시스템은, 플러그인 방식의 블록체인 연결부와 플러그인 방식의 프로그램 해석기 연결부를 구비하고 가상기계로 이루어진 스마트 컨트랙트 관리자; 블록체인 연결부에 기반하여 구성되고, 각각 대응하는 블록체인 시스템에 연결된 하나 이상의 SPV 노드; 및 프로그램 해석기 연결부에 기반하여 구성된 하나 이상의 프로그램 해석기;를 포함하고, 하나 이상의 SPV 노드 중 특정 SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 스마트 컨트랙트 관리자는 도착된 트랜잭션의 데이터 영역에서 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하고, 특정 프로그램 해석기에 스마트 컨트랙트의 프로그램 해석을 요청하고, 해석된 결과를 특정 SPV 노드가 연결된 블록체인 시스템으로 전송하는 것을 특징으로 한다.

Description

가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법{Smart Contract System in a virtual environment and processing method thereof}
본 발명은 블록체인 상에서 계약을 관리할 수 있는 스마트 컨트랙트 시스템에 관한 것으로, 보다 상세하게는 가상기계 환경에서 하나 이상의 블록체인, 하나 이상의 해석기, 하나 이상의 디바이스 제어기를 통합하여 동적으로 구성하는 스마트 컨트랙트 시스템 및 그 처리 방법에 관한 것이다.
스마트 컨트랙트는 블록체인 기반으로 금융거래, 부동산 계약, 공증 등 다양한 형태의 계약을 체결하고 이행하는 것이다.
기존의 이더리움(ethereum) 블록체인에서 사용되는 스마트 컨트랙트는 해당 블록체인과 밀접하게 결합이 되어 있다. 즉, 스마트 컨트랙트를 사용하려면 반드시 특정한 블록체인을 사용해야 하는 제약점이 있다. 또한, 이더리움 스마트 컨트랙트는 특정한 언어만을 지원하므로 사용자는 특정한 언어를 배워야만 스마트 컨트랙트를 활용할 수 있다. 따라서 스마트 컨트랙트를 분리해서 다른 블록체인에 이식하거나, 다른 언어로 스마트 컨트랙트를 구성하는 작업은 매우 어렵다고 할 수 있다.
등록특허공보 10-1816653호 (2018.02.21) 공개특허공보 10-2018-0068888호 (2018.06.22) 등록특허공보 10-1849912호 (2018.04.19)
본 발명은 가상기계 환경에서 하나 이상의 블록체인, 하나 이상의 해석기, 하나 이상의 디바이스 제어기를 통합하여 동적으로 구성하는 스마트 컨트랙트 시스템 및 그 처리 방법을 제공함을 그 목적으로 한다.
상기의 목적을 달성하기 위하여, 본 발명에 일 측면에 의한 스마트 컨트랙트 시스템은, 플러그인 방식의 블록체인 연결부와 플러그인 방식의 프로그램 해석기 연결부를 구비하고 가상기계로 이루어진 스마트 컨트랙트 관리자; 상기 블록체인 연결부에 기반하여 구성되고, 각각 대응하는 블록체인 시스템에 연결된 하나 이상의 SPV 노드; 및 상기 프로그램 해석기 연결부에 기반하여 구성된 하나 이상의 프로그램 해석기;를 포함하고, 하나 이상의 SPV 노드 중 특정 SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 상기 스마트 컨트랙트 관리자는 도착된 트랜잭션의 데이터 영역에서 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하고, 상기 특정 프로그램 해석기에 스마트 컨트랙트의 프로그램 해석을 요청하고, 해석된 결과를 상기 특정 SPV 노드가 연결된 블록체인 시스템으로 전송하는 것을 특징으로 한다.
상기 스마트 컨트랙트 시스템에 있어서, 상기 스마트 컨트랙트 관리자는 플러그인 방식의 디바이스 제어기 연결부를 더 구비하고, 상기 디바이스 제어기 연결부에 기반하여 구성된 하나 이상의 디바이스 제어기를 더 포함하는 것을 특징으로 한다.
상기 스마트 컨트랙트 시스템에 있어서, 상기 스마트 컨트랙트 관리자가 상기 특정 프로그램 해석기로부터 디바이스 제어 명령을 받아 특정 디바이스 제어기로 전달하고, 제어된 결과를 상기 특정 프로그램 해석기로 전달하는 것을 특징으로 한다.
상기 스마트 컨트랙트 시스템에 있어서, 상기 블록체인 연결부, 상기 프로그램 해석기 연결부 및 디바이스 제어기 연결부는 각각 JSON-RPC에 의해 데이터를 전달하도록 하는 것을 특징으로 한다.
상기 스마트 컨트랙트 시스템에 있어서, 상기 스마트 컨트랙트 관리자는 상기 스마트 컨트랙트가 포함된 트랜잭션을보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하는 것을 특징으로 한다.
상기의 다른 목적을 달성하기 위하여, 본 발명에 일 측면에 의한 스마트 컨트랙트 처리방법은, (a) SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 스마트 컨트랙트 관리자가 블록체인 연결부를 통해 상기 트랜잭션을 전달받고, 상기 트랜잭션의 데이터 영역에서 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하는 단계; (b) 스마트 컨트랙트 관리자가 상기 트랜잭션 또는 상기 트랜잭션에서 추출된 스마트 컨트랙트를 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로 전달하여 스마트 컨트랙트의 프로그램 해석을 요청하는 단계; 및 (c) 스마트 컨트랙트 관리자가 해석된 결과를 상기 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로부터 전달받아 상기 블록체인 연결부를 통해 상기 SPV 노드로 전달하면, 상기 SPV 노드가 상기 해석된 결과를 포함하는 트랜잭션을 생성하여 상기 SPV 노드가 연결된 블록체인 시스템으로 전송하는 단계;를 포함하여 구성된다.
상기 스마트 컨트랙트 처리방법에 있어서, (b1) 상기 스마트 컨트랙트 관리자가 상기 특정 프로그램 해석기로부터 디바이스 제어 명령을 받아 디바이스 제어기 연결부를 통해 특정 디바이스 제어기로 전달하고, 제어된 결과를 상기 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로 전달하는 단계;를 더 포함하는 것을 특징으로 한다.
상기 스마트 컨트랙트 처리방법에 있어서, 상기 블록체인 연결부, 상기 프로그램 해석기 연결부 및 디바이스 제어기 연결부는 각각 JSON-RPC에 의해 데이터를 전달하도록 하는 것을 특징으로 한다.
상기 스마트 컨트랙트 처리방법에 있어서, 상기 스마트 컨트랙트 관리자가 상기 트랜잭션을 보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하는 단계;를 더 포함하는 것을 특징으로 한다.
상기 스마트 컨트랙트 처리방법에 있어서, 커스톰 토큰(Custom Token)을 사용하여 추가적으로 인증하는 것을 특징으로 한다.
상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 컴퓨터로 읽을 수 있는 기록 매체는 상기의 스마트 컨트랙트 처리방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한다.
본 발명에 의하면 하나 이상의 블록체인과 하나 이상의 스마트 컨트랙트 프로그램 해석기가 가상기계(VM) 상에서 연결되어 작동될 수 있다. 선택적으로 VM에 하나 이상의 디바이스 제어기가 연동될 수도 있다. 이 방식은 기존의 스마트 컨트랙트가 가진 특정한 블록체인 종속성, 특정한 컨트랙트 언어 종속성에 제한되지 않는다. 즉, 대부분의 블록체인에서 공통으로 제공되는 RPC를 통해서 플러그인 방식의 API로 결합되기 때문에, 블록체인의 기본 명령어 구조만 호환되면 용이하게 다른 블록체인에도 적용이 가능하다. 또한 범용적인 RPC 방식을 사용하면 스마트 컨트랙트 프로그램 해석기도 간편하게 구성할 수 있다. 즉, 다양한 언어로 스마트 컨트랙트를 해석할 수 있는 모듈이나 기능을 추가만 하면 해석기로 작동할 수 있게 된다. 이 뿐만 아니라 스마트 컨트랙트 프로그램 해석기에서 필요한 경우 다수의 디바이스 제어기를 통해 특정한 디바이스를 제어할 수 있으며, 이것도 VM을 경유하여 RPC로 연결될 수 있다.
도 1은 본 발명에 의한 스마트 컨트랙트 시스템의 구성을 도시한 것이다.
도 2는 도 1의 스마트 컨트랙트 시스템에 의한 스마트 컨트랙트 처리 방법을 도시한 것이다.
도 1에 의하면, 본 발명에 의한 스마트 컨트랙트 시스템(1)의 바람직한 일실시예는 스마트 컨트랙트 관리자(10), 하나 이상의 SPV 노드(20,21,22), 하나 이상의 프로그램 해석기(30,31,32) 및 하나 이상의 디바이스 제어기(40,41,42)를 포함하여 구성된다. 도 1에서는 각각 3개의 SPV 노드(20,21,22), 프로그램 해석기(30,31,32) 및 디바이스 제어기(40,41,42)를 도시하고 있지만, 이는 하나의 예시일 뿐이고, 그 개수는 필요에 따라 유연하게 채택될 수 있음은 당연하다.
스마트 컨트랙트 관리자(10)는 플러그인 방식의 블록체인 연결부(12)와 플러그인 방식의 프로그램 해석기 연결부(13)와 플러그인 방식의 디바이스 제어기 연결부(14)를 구비하고 가상기계(Virtual Machine:VM)로 이루어진다. 플러그인 블록체인 연결부(12)에는 SPV 노드 1(20) 또는 SPV 노드 2(21) 또는 SPV 노드 3(22)이 연결될 수 있고, 플러그인 프로그램 해석기 연결부(13)에는 프로그램 해석기 1(30) 또는 프로그램 해석기 2(31) 또는 프로그램 해석기 3(32)이 연결되고, 플러그인 디바이스 제어기 연결부(14)에는 디바이스 제어기 1(40) 또는 디바이스 제어기 2(41) 또는 디바이스 제어기 3(42)가 연결될 수 있다. 디바이스 제어기(40,41,42)는 스마트 컨트랙트 관리자(10)에서 구분 가능한 유일한 식별자를 가지고 있어야 한다. 이 식별자는 프로그램 해석기(30,31,32)에서 다수의 디바이스 제어부(40,41,42) 중 하나로 보내는 제어 명령을 전달할 때 구분자로 사용될 수 있다.
여기서 플러그인 방식의 블록체인 연결부(12)에는 다수의 블록체인 시스템의 SPV 노드를 수용하기 위한 공통의 API(Application Programming Interface)가 제공된다. 특히, 블록체인 연결부(12)에는 데이터 전달을 위해 JSON-RPC 또는 Secure JSON-RPC와 같은 API를 포함한다. JSON-RPC는 JSON(Javascript Object Notation)으로 인코딩된 원격 프로시저 호출(Remote Procedure Call:RPC)이다.
대부분의 블록체인 시스템에는 RPC 명령을 처리할 수 있는 체계가 완비되어 있다. 하지만, 블록체인 사이의 명령어는 완벽하게 호환이 되지 않기 때문에 블록체인 연결부(12)에 포함된 API에서는 각 블록체인에서 공통적으로 사용되는 트랜잭션 I/O에 대한 API를 제공한다. 즉 트랜잭션 전송, 수신, 조회와 관련된 기본적인 API를 제공한다. 각 트랜잭션의 데이터 부분에는 스마트 컨트랙트 및 추가적인 정보를 JSON 형태로 인코딩하여 첨부할 수 있다.
SPV(Simple Payment Verification) 노드(20,21,22)는 블록체인 시스템을 구성하는 노드들 중 하나로, 라우팅, 블록체인 데이터베이스, 채굴, 지갑 서비스 등의 기능을 모두 가지고 가장 최신의 전체 블록체인 복사본을 가지고 있어 외부의 참조 없이도 거래검증이 가능한 노드인 풀노드(Full Node)와는 달리 실시간 트랜잭션 처리가 가능한 노드이면서 자신의 지갑 주소와 관련된 내용 외에는 스토리지에 블록을 저장하지 않고, 풀노드와 같이 RPC 커맨트 인터페이스와 같은 복잡한 구조가 없기 때문에 상대적으로 단순한 노드이다. 본 발명에 의한 스마트 컨트랙트 시스템(1)에서의 SPV 노드(20,21,22)는 각각의 블록체인 시스템에 대응하는 노드로, 블록체인 연결부(12)에 기반하여 구성된다.
SPV 노드(20,21,22)에서 사용하는 개인키와 공개키는 보안 문제를 해결하기 위해서 씨드(seed) 값만 암호화해서 디스크에 저장할 수도 있다. 이 경우 매번 SPV 노드(20,21,22)는 별도의 계산 과정을 거쳐서 서명에 사용할 개인키와 공개키를 생성할 수 있다. 사용된 개인키와 공개키는 메모리 상에서 즉시 초기화되어 메모리에 장기 보관하지 않음으로써 개인키가 유출되는 문제를 보완할 수 있다.
마찬가지로 플러그인 방식의 프로그램 해석기 연결부(13)에도 다수의 프로그램 해석기(예를 들어, Python, PHP, Javascript 등을 해석할 수 있는 모듈)를 수용하기 위한 공통의 API가 제공된다. 또한, 프로그램 해석기 연결부(13)에는 데이터 전달을 위해 JSON-RPC 또는 Secure JSON-RPC와 같은 API를 포함한다. 본 발명에 의한 스마트 컨트랙트 시스템(1)에서의 프로그램 해석기(30,31,32)는 스마트 컨트랙트를 해석하여 수행하는 것으로, 프로그램 해석기 연결부(13)에 기반하여 구성된다.
JSON-RPC API를 사용함으로써 프로그램 해석기(30,31,32)는 매우 효과적으로 스마트 컨트랙트 시스템(1) 상에서 특정한 블록체인 노드에 접근할 수도 있다. 즉, JSON-RPC를 이용하여 스마트 컨트랙트 시스템(1) 상에서 블록체인에 직접 접근이 가능할 수도 있기 때문에 스마트 컨트랙트 관리자(VM)(10)를 거쳐서 명령을 전달하지 않고도 빠르게 블록체인 상의 정보에 접근이 가능하고 활용할 수 있다.
마찬가지로 플러그인 방식의 디바이스 제어기 연결부(14)에도 다수의 디바이스 제어기를 수용하기 위한 공통의 API가 제공된다. 또한, 프로그램 해석기 연결부(13)에는 데이터 전달을 위해 JSON-RPC 또는 Secure JSON-RPC와 같은 API를 포함한다. 본 발명에 의한 스마트 컨트랙트 시스템(1)에서의 디바이스 제어기(40,41,42)는 프로그램 해석기(30,31,32)로부터의 디바이스 제어명령을 수행하는 것으로, 디바이스 제어기 연결부(14)에 기반하여 구성된다.
특정한 디바이스 제어부를 제어하기 위해서, 디바이스 제어기 연결부(14)에는 최초에 해당 디바이스 제어기에 맞는 적절한 JSON-RPC 명령어 집합을 구현할 수도 있다. 일반적으로는 디바이스를 제어하기 위한 온도값, 습도값, 동작 범위, 전압값, 전류값, ON/OFF 등의 공통적인 항목에 대해서는 기본적으로 명령어 집합을 제공할 수 있다.
스마트 컨트랙트 관리자(VM)(10)는 각각의 플러그인 방식의 블록체인 연결부(12)와 플러그인 방식의 프로그램 해석기 연결부(13)와 플러그인 방식의 디바이스 제어기 연결부(14) 사이의 정보를 전달해 주는 라우터 역할을 한다. 실제로 구현될 때는, 각 플러그인마다 스레드(thread)가 생성이 되는데, 스마트 컨트랙트 관리자(VM)(10)에서는 새로운 스마트 컨트랙트가 오면, 새로운 스레드(thread)를 만들어서 수행하게 된다.
스마트 컨트랙트 관리자(VM)(10)는 하나 이상의 SPV 노드 중 특정 SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 도착된 트랜잭션의 데이터 영역에서 스마트 컨트랙트를 추출한 다음, 추출된 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하고, 확인된 특정 프로그램 해석기를 실행하기 위해 쓰레드를 생성하여 스마트 컨트랙트의 프로그램 해석을 요청한다.
이후, 스마트 컨트랙트 관리자(VM)(10)가 프로그램 해석기로부터 스마트 컨트랙트가 해석된 결과를 받아 특정 SPV 노드로 전달하면, 특정 SPV 노드는 결과를 전송할 노드로 가는 트랜잭션을 생성하고, 생성된 트랜잭션에 특정 SPV 노드의 개인키로 서명을 한 다음 특정 SPV 노드가 연결된 블록체인 시스템으로 전송한다.
블록체인(50)의 관리자는 스마트 컨트랙트를 사용하기 전에 블록체인 상의 인증을 위한 권한 부여 기능(grant)과 스마트 컨트랙트 실행에 필요한 토큰을 생성하여 두어야 한다. 권한 부여 명령은 블록체인에 따라서 약간 상이할 수 있으나, 특정한 주소에게만 권한을 부여하는 기능이다. 이 기능은 스마트 컨트랙트를 발송할 수 있는 권한, 스마트 컨트랙트를 실행할 수 있는 권한 등의 부여에 사용할 수도 있다. 권한 검사를 위해서 블록체인 상에 특정한 권한을 포함한 트랜잭션이 사전에 저장되어 있어야 하며, 권한 내용은 hash db에 인덱싱이 되어서 즉시 확인이 가능해야 한다.
만약 블록체인에서 권한 부여(grant) 기능이 제공되지 않는 경우, 씨드 노드와 같은 특정한 주소가 서명한 트랜잭션의 데이터 영역에 권한 내용을 JSON 형태로 저장해 두고, 이를 조회함으로써 권한 부여 기능을 구현할 수도 있다.
하나 이상의 SPV 노드(20,21,22) 중 어느 하나에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 스마트 컨트랙트 관리자(VM)(10)는 이를 실시간으로 감지하고 해당 트랜잭션을 보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하여 인증한다. 이때, SPV 노드(20,21,22)의 개인키는 블록체인 상에서 트랜잭션의 송수신시 서명과 검증을 하고, 또한 스마트 컨트랙트를 수행하기 위한 토큰을 받기 위한 목적으로 사용할 수도 있다.
스마트 홈에서 스마트 컨트랙트로 가정 내의 기기(전등, 출입문, 가스 밸브 등)를 제어한다고 가정한다. 또한, 101호에 사는 사람은 A, B, C이고, 이들은 모두 101호의 가전기기에 대한 제어권이 있으며, 외부에서 휴대폰으로 제어하고자 한다고 가정한다. 이 경우, 102호에 사는 X라는 사람이 있고, 이 사람이 101호의 가전기기를 제어해서는 안된다.
이것 때문에 기본적으로 사용자 인증이 필요하다. 즉, 해당 스마트 컨트랙트를 보낼 수 있는 권한, 수신할 수 있는 권한, 실행할 수 있는 권한 등이 사람에 따라서 구분되어야 하기 때문이다. 이를 위해 블록체인 관리자는 기본적으로 A, B, C라는 사람은 101호에 접근할 수 있다는 권한을 블록체인 상에 기록을 해 두어야 한다.
그리고 스마트 컨트랙트에 사용하는 토큰은 커스톰 토큰(Custom Token)을 사용한다. 즉, 101호에는 101호에서만 사용 가능한 토큰을 사용해서 스마트 컨트랙트를 보낼 수 있다. 이렇게 하는 이유는, 보안상의 장벽을 만들기 위한 것이다. 위에서 인증을 받기는 하지만, 혹시나 인증이 잘못 부여되는 경우에도 101호에서 사용할 수 있는 토큰이 있어야만 스마트 컨트랙트를 보낼 수 있고, 실행할 수 있다. 당연히 이 커스톰 토큰은 아무나 생성할 수는 없고, 블록체인 관리자가 한정된 수량만 생성해서 101호 사람들(또는 대표)에게 전송해 준다.
이하에서, 도 1,2를 참조하여, 본 발명에 의한 스마트 컨트랙트 시스템(1)에 의한 스마트 컨트랙트 처리 과정을 상세히 설명하기로 한다.
특정한 블록체인의 SPV 노드(SPV 노드 1(20))에서 개인키 및 공개키를 생성한 다음, 해당 블록체인(블록체인 1(50))에 주소를 등록하고, 스마트 컨트랙트를 받을 수 있는 권한을 부여 받는다.
사용자는 블록체인 1(50) 상에서 실행할 수 있는 스마트 컨트랙트를 준비한다(S10). 여기서 사용자가 스마트 컨트랙트를 작성하기 위해 사용한 프로그램 언어는 프로그램 해석기(30,31,32) 중에서 프로그램 해석기 1(30)에 의해 해석될 수 있는 것으로 가정한다.
준비된 스마트 컨트랙트는 블록체인 트랜잭션의 데이터 영역에 인코딩해서 첨부한 후, 개인키로 서명을 한 다음 블록체인 1(50)로 전송한다. 이때 트랜잭션의 수신 주소는 스마트 컨트랙트 시스템(1) 상에 존재하는 블록체인 1(50)의 SPV 노드 1(20)이다. 즉, 블록체인 1(50)의 노드 상에서 SPV 노드 1(20)의 주소로 스마트 컨트랙트가 포함된 트랜잭션에 서명을 한 다음, 블록체인 1(50) 상에 트랜잭션을 전송한다. 이때 트랜잭션을 전송하는 노드가 SPV 노드 1(20)으로 스마트 컨트랙트를 전송할 수 있다는 권한이 블록체인 1(50) 상에 기록되어 있어야 한다. 블록체인 1(50)에서는 스마트 컨트랙트 권한이 없는 경우, 전송을 중지하고 그 트랜잭션을 발송한 노드에 오류를 통보한다. 블록체인 1(50) 상에서 정상적인 트랜잭션으로 판정되면 블록체인 1(50) 상에 트랜잭션을 확산시킨다.
스마트 컨트랙트가 포함된 블록체인 트랜잭션이 SPV 노드 1(20)에 도착하면, 스마트 컨트랙트 관리자(VM)(10)는 즉시 플러그인 블록체인 연결부(12)를 통해 해당 트랜잭션을 전달받는다(S20). 이때 스마트 컨트랙트 관리자(VM)(10)는 새로운 쓰레드를 생성해서 해당 트랜잭션을 처리할 수 있다. 이 과정은 TCP/IP(Transmission Control Protocol/Internet Protocol) 등을 통해서 정해진 프로토콜로 전달이 되는데, 통상 이 프로토콜은 JSON-RPC로 간편하게 구현할 수 있다.
이후, 스마트 컨트랙트 관리자(VM)(10)는 스마트 컨트랙트가 포함된 트랜잭션을 보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하여 인증한다. 이 과정은 블록체인 1(50)에 JSON-RPC 명령을 보내서 권한 부여한 내용을 비교함으로써 검사할 수 있다. 또한, 커스톰 토큰(Custom Token)을 사용한 추가적인 인증도 JSON-RPC 명령으로 가능하다.
스마트 컨트랙트 관리자(VM)(10)는 해당 트랜잭션의 데이터 영역을 디코딩하여 스마트 컨트랙트를 추출하고, 추출된 스마트 컨트랙트의 선언부에 기재된 프로그램 해석기의 종류 및 버전을 확인할 수 있다(S30).
또한, 스마트 컨트랙트 관리자(VM)(10)는 스마트 컨트랙트를 JSON-RPC를 사용하여 플러그인 프로그램 해석기 연결부(13)를 통해 상기한 바와 같이 확인된 프로그램 해석기 1(30)로 전달하여 프로그램 해석을 요청한다(S40).
이후, 프로그램 해석기 1(30)는 해당 JSON을 해석해서 스마트 컨트랙트를 추출해서 해석하여 수행한다(S50). 프로그램의 해석은 인터프리터 또는 컴파일 후 바이너리 코드 수행 또는 해당 기기에서 수행되는 바이너리 코드를 사용해서 수행하는 등의 여러 가지 방식으로 처리할 수 있다. 프로그램 해석기의 사용은 해당 블록체인의 특성에 따라서 또는 사용자의 선호도에 따라서 변동될 수 있다.
프로그램 해석기 1(30)에서 프로그램을 수행하면서, 특정한 디바이스를 제어해야 하는 경우, 스마트 컨트랙트 관리자(VM)(10)를 통해서 디바이스 제어기 1(40)로 디바이스 제어 명령을 보낸다. 이때 디바이스 제어 명령에 포함된 디바이스 제어기의 식별자를 확인함으로써 어떤 디바이스 제어기로 제어 명령을 전달할지 확인할 수 있다. 명령의 전달 방식은 공유 메모리나 RPC를 통해서 이루어질 수 있다. 하나 이상의 프로그램 해석기(30,31,32)와 하나 이상의 디바이스 제어기(40,41,42) 사이의 연동은, 스마트 컨트랙트 관리자(VM)(10) 상의 공유 메모리를 통해서 이루어질 수 있다.
디바이스 제어기 1(40)는 제어 명령을 수행해서 해당 디바이스(45)를 제어하거나, 상태 신호를 알아낸다(S55). 제어 명령을 처리한 결과는 다시 프로그램 해석기 1(30)로 전달된다.
프로그램 해석기 1(30)는 수행하면서 상태 정보를 제공하거나 수행이 완료된 경우, 정보 또는 처리 결과를 프로그램 해석기 연결부(13)를 통해 스마트 컨트랙트 관리자(VM)(10)로 전송한다. 스마트 컨트랙트 관리자(VM)(10)는 프로그램 해석기 1(30)에 의해 해석된 결과를 블록체인 연결부(12)를 통해 SPV 노드 1(20)로 전달한다. 그러면, SPV 노드 1(20)은 프로그램 해석기 1(30)에 의해 해석된 결과를 포함하는 트랜잭션을 생성하여 SPV 노드 1(20)의 개인키로 해당 트랜잭션에 서명을 한 후, 블록체인 1(50)으로 전송한다(S60). 여기에서 수신 주소는 스마트 컨트랙트를 발송한 사용자의 주소가 되며, 필요에 따라 스마트 컨트랙트의 선언부에 명시된 별도의 주소로 보낼 수도 있다.
스마트 컨트랙트 관리자(VM)(10)가 전송한 트랜잭션은 최종적으로 사용자가 수신해서 결과를 확인하게 된다.
한편, 상술한 본 발명의 실시예는 개인용 컴퓨터를 포함한 범용 컴퓨터에서 사용되는 매체에 기록될 수 있다. 상기 매체는 마그네틱 기록매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독매체(예를 들면, 씨디롬, 디브이디 등) 및 전기적 기록매체(예를 들면, 플레쉬 메모리, 메모리 스틱 등)와 같은 기록매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (11)

  1. 플러그인 방식의 블록체인 연결부, 플러그인 방식의 프로그램 해석기 연결부 및 플러그인 방식의 디바이스 제어기 연결부를 구비하고 가상기계로 이루어진 스마트 컨트랙트 관리자;
    상기 블록체인 연결부에 기반하여 구성되고, 각각 대응하는 블록체인 시스템에 연결된 하나 이상의 SPV 노드;
    상기 프로그램 해석기 연결부에 기반하여 구성된 하나 이상의 프로그램 해석기; 및
    상기 디바이스 제어기 연결부에 기반하여 구성된 하나 이상의 디바이스 제어기;를 포함하고,
    하나 이상의 SPV 노드 중 특정 SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 상기 스마트 컨트랙트 관리자는 도착된 트랜잭션의 데이터 영역에서 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하고, 상기 특정 프로그램 해석기에 스마트 컨트랙트의 프로그램 해석을 요청하고, 해석된 결과를 상기 특정 SPV 노드가 연결된 블록체인 시스템으로 전송하는 것을 특징으로 하는 스마트 컨트랙트 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 스마트 컨트랙트 관리자가 상기 특정 프로그램 해석기로부터 디바이스 제어 명령을 받아 특정 디바이스 제어기로 전달하고, 제어된 결과를 상기 특정 프로그램 해석기로 전달하는 것을 특징으로 하는 스마트 컨트랙트 시스템.
  4. 제1항에 있어서,
    상기 블록체인 연결부, 상기 프로그램 해석기 연결부 및 디바이스 제어기 연결부는 각각 JSON-RPC 또는 Secure JSON-RPC에 의해 데이터를 전달하도록 하는 것을 특징으로 하는 스마트 컨트랙트 시스템.
  5. 제1항에 있어서,
    상기 스마트 컨트랙트 관리자는 상기 스마트 컨트랙트가 포함된 트랜잭션을보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하는 것을 특징으로 하는 스마트 컨트랙트 시스템.
  6. (a) SPV 노드에 스마트 컨트랙트가 포함된 트랜잭션이 도착하면, 스마트 컨트랙트 관리자가 블록체인 연결부를 통해 상기 트랜잭션을 전달받고, 상기 트랜잭션의 데이터 영역에서 스마트 컨트랙트의 선언부에 기재된 특정 프로그램 해석기를 확인하는 단계;
    (b) 스마트 컨트랙트 관리자가 상기 트랜잭션 또는 상기 트랜잭션에서 추출된 스마트 컨트랙트를 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로 전달하여 스마트 컨트랙트의 프로그램 해석을 요청하는 단계; 및
    (c) 스마트 컨트랙트 관리자가 해석된 결과를 상기 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로부터 전달받아 상기 블록체인 연결부를 통해 상기 SPV 노드로 전달하면, 상기 SPV 노드가 상기 해석된 결과를 포함하는 트랜잭션을 생성하여 상기 SPV 노드가 연결된 블록체인 시스템으로 전송하는 단계;를 포함하는 것을 특징으로 하는 스마트 컨트랙트 처리방법.
  7. 제6항에 있어서,
    (b1) 상기 스마트 컨트랙트 관리자가 상기 특정 프로그램 해석기로부터 디바이스 제어 명령을 받아 디바이스 제어기 연결부를 통해 특정 디바이스 제어기로 전달하고, 제어된 결과를 상기 프로그램 해석기 연결부를 통해 상기 특정 프로그램 해석기로 전달하는 단계;를 더 포함하는 것을 특징으로 하는 스마트 컨트랙트 처리방법.
  8. 제7항에 있어서,
    상기 블록체인 연결부, 상기 프로그램 해석기 연결부 및 디바이스 제어기 연결부는 각각 JSON-RPC 또는 Secure JSON-RPC에 의해 데이터를 전달하도록 하는 것을 특징으로 하는 스마트 컨트랙트 처리방법.
  9. 제6항에 있어서,
    (a1) 상기 스마트 컨트랙트 관리자가 상기 트랜잭션을 보낸 주소에 대하여, 발송 권한이 있는지와 수신 주소에 대한 실행 권한이 있는지를 검사하는 단계;를 더 포함하는 것을 특징으로 하는 스마트 컨트랙트 처리방법.
  10. 제9항에 있어서,
    커스톰 토큰(Custom Token)을 사용하여 추가적으로 인증하는 것을 특징으로 하는 스마트 컨트랙트 처리방법.
  11. 삭제
KR1020180102391A 2018-08-30 2018-08-30 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법 KR102116373B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180102391A KR102116373B1 (ko) 2018-08-30 2018-08-30 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법
PCT/KR2019/008810 WO2020045823A1 (ko) 2018-08-30 2019-07-17 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180102391A KR102116373B1 (ko) 2018-08-30 2018-08-30 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법

Publications (2)

Publication Number Publication Date
KR20200026366A KR20200026366A (ko) 2020-03-11
KR102116373B1 true KR102116373B1 (ko) 2020-06-03

Family

ID=69642977

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180102391A KR102116373B1 (ko) 2018-08-30 2018-08-30 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법

Country Status (2)

Country Link
KR (1) KR102116373B1 (ko)
WO (1) WO2020045823A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102288161B1 (ko) * 2020-07-29 2021-08-10 이현석 트랜잭션을 비동기로 분산 처리하는 블록체인 시스템
CN112287034B (zh) * 2020-12-24 2021-04-02 腾讯科技(深圳)有限公司 一种数据同步方法、设备以及计算机可读存储介质
KR102526406B1 (ko) * 2021-12-03 2023-04-27 에이치닥 테크놀로지 아게 Nft의 대상이 되는 원본 콘텐츠 데이터에 대한 액세스를 관리하는 액세스 관리 시스템 장치 및 그 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017145021A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Method and system for efficient transfer of cryptocurrency associated with a payroll on a blockchain that leads to An Automated payroll method and system based on smart contracts
JP2017204707A (ja) 2016-05-10 2017-11-16 日本電信電話株式会社 コンテンツ流通システム、コンテンツ流通方法、コンテンツ生成装置及びコンテンツ生成プログラム
US20180082256A1 (en) 2016-09-19 2018-03-22 Sap Se Decentralized credentials verification network
WO2018073564A1 (en) * 2016-10-17 2018-04-26 Arm Ltd Blockchain mining using trusted nodes
JP2018128723A (ja) * 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180068888A (ko) 2016-12-14 2018-06-22 성신여자대학교 산학협력단 스마트 컨트랙트를 이용한 게임 아이템 구매 방법 및 장치
KR102026225B1 (ko) * 2017-01-19 2019-09-27 주식회사 케이티 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법
KR101816653B1 (ko) 2017-02-14 2018-02-21 주식회사 코인플러그 스마트 컨트랙트 및 블록체인 데이터베이스를 사용하여 서비스 제공 서버에 의하여 제공되는 서비스를 이용하기 위한 사용자의 로그인 요청에 대하여 pki 기반의 인증을 통해 로그인을 대행하는 방법 및 이를 이용한 서버
KR101849912B1 (ko) 2017-05-25 2018-04-19 주식회사 코인플러그 스마트 컨트랙트 기반의 인증서 서비스를 제공하는 방법 및 이를 이용한 서버

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017145021A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Method and system for efficient transfer of cryptocurrency associated with a payroll on a blockchain that leads to An Automated payroll method and system based on smart contracts
JP2017204707A (ja) 2016-05-10 2017-11-16 日本電信電話株式会社 コンテンツ流通システム、コンテンツ流通方法、コンテンツ生成装置及びコンテンツ生成プログラム
US20180082256A1 (en) 2016-09-19 2018-03-22 Sap Se Decentralized credentials verification network
WO2018073564A1 (en) * 2016-10-17 2018-04-26 Arm Ltd Blockchain mining using trusted nodes
JP2018128723A (ja) * 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Also Published As

Publication number Publication date
WO2020045823A1 (ko) 2020-03-05
KR20200026366A (ko) 2020-03-11

Similar Documents

Publication Publication Date Title
US11336635B2 (en) Systems and methods for authenticating device through IoT cloud using hardware security module
KR102116373B1 (ko) 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법
KR101720160B1 (ko) 인간의 개입이 없는 어플리케이션들을 위한 인증 데이터베이스 커넥티비티
US9306954B2 (en) Apparatus, systems and method for virtual desktop access and management
US20140101734A1 (en) Credential authentication methods and systems
US20150046971A1 (en) Method and system for access control in cloud computing service
CN109446259B (zh) 数据处理方法及装置、处理机及存储介质
WO2021013033A1 (zh) 文件操作方法、装置、设备、系统及计算机可读存储介质
CN102281311A (zh) 一种基于开放应用编程接口实现网络业务的方法、系统及装置
CN111433797A (zh) 基于复合密钥的区块链设备控制系统和方法
CN107257337A (zh) 一种多端共享的权限控制方法及其系统
CN104025544A (zh) 机密信息泄露防止系统、机密信息泄露防止方法和计算机可读记录介质
CN103561006A (zh) 基于安卓系统的应用认证方法和装置及应用认证服务器
US10248795B2 (en) Implementing method for JavaCard application function expansion
CN110069909A (zh) 一种免密登录第三方系统的方法及装置
CN110070360B (zh) 一种事务请求处理方法、装置、设备及存储介质
WO2021061497A1 (en) Dynamic generation of device identifiers
US20150286815A1 (en) Access control management apparatus and method for open service components
US20170026366A1 (en) Providing a virtual connection for transmitting application data units
KR102202737B1 (ko) 블록 체인 기반의 접근 권한 제어 장치 및 방법
KR101545897B1 (ko) 주기적인 스마트카드 인증을 통한 서버 접근 통제 시스템
JPWO2013111490A1 (ja) 情報処理装置、情報処理方法およびコンピュータプログラム
Bindel et al. To attest or not to attest, this is the question–Provable attestation in FIDO2
CN105868603A (zh) 基于配置数据的用于访问资源的指纹
Horalek et al. Cybersecurity analysis of IoT networks

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right