KR102340881B1 - 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 - Google Patents
블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 Download PDFInfo
- Publication number
- KR102340881B1 KR102340881B1 KR1020200067247A KR20200067247A KR102340881B1 KR 102340881 B1 KR102340881 B1 KR 102340881B1 KR 1020200067247 A KR1020200067247 A KR 1020200067247A KR 20200067247 A KR20200067247 A KR 20200067247A KR 102340881 B1 KR102340881 B1 KR 102340881B1
- Authority
- KR
- South Korea
- Prior art keywords
- iot service
- iot
- state values
- blockchain
- smart contract
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000006870 function Effects 0.000 claims description 54
- 238000013515 script Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- H04L67/2804—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Tourism & Hospitality (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Marketing (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
IoT 기기를 통해 획득되는 각종 데이터에 기반한 서비스를 손쉽게 저작하고 수행할 수 있는 플랫폼을 제공할 수 있는 방법 및 시스템이 제공된다. 본 발명의 일 측면에 따르면, 블록체인 기반 IoT 서비스 플랫폼 제공 방법으로서, 저작 시스템이, 복수의 IoT 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계 및 상기 복수의 IoT 기기 및 블록체인 네트워크를 중계하는 중계 시스템이, 상기 IoT 서비스의 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 단계를 포함하되, 저작 시스템이, 복수의 IoT 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계는, 상기 IoT 서비스의 저작자 단말로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받는 단계, 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 상기 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 단계, 생성된 상기 스마트 컨트랙트를 상기 블록체인에 등록하고, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 획득하는 단계, 상기 데이터 필드 정의 데이터에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API를 생성하는 단계 및 상기 Rest API를 상기 저작자 단말에 제공하는 단계를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법이 제공된다.
Description
본 발명은 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템에 관한 것이다. 보다 상세하게는 IoT 기기를 통해 획득되는 각종 데이터에 기반한 서비스를 손쉽게 저작하고 수행할 수 있는 플랫폼을 제공할 수 있는 방법 및 시스템에 관한 것이다.
각종 디바이스들이 네트워크를 통해 서로 연결된 사물 인터넷(Internet of Things)이 발달함에 따라, 다양한 사물 인터넷 디바이스가 출시되고 있으며 사물 인터넷을 이용한 다양한 서비스가 출시되고 있다. 종래에 사용자에 의해 수동적으로 운용되거나 또는 네트워크와의 연결 없이 디바이스들이 자체적인 윤용 시스템에 의해 관리되었던 반면, 네트워크와 연결된 사물 인터넷 기술의 적용으로 인하여, 사용자는 보다 편리하게 디바이스를 제어할 수 있고, 각 사물 인터넷 디바이스로부터 획득된 정보를 이용하여 새로운 다양한 서비스를 제공하는 것이 가능해진 것이다.
한편, 블록체인(Blockchain)은 공공 거래 장부라고도 부르며 가상 화폐로 거래할 때 발생할 수 있는 해킹을 막는 기술이다. 기존 금융 회사의 경우 중앙 집중형 서버에 거래 기록을 보관하는 반면, 블록체인은 거래에 참여하는 모든 사용자에게 거래 내역을 보내 주며 거래 때마다 이를 대조해 데이터 위조를 막는 방식을 사용하는 탈 중앙화적 특징을 갖는다. 블록체인은 다수의 거래내역을 묶어 블록을 구성하고, 해시를 이용하여 여러 블록들을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 기술로서, 블록체인 기술을 이용하면 데이터의 위변조가 불가능하여 권위 있는 중개기관이 없더라도 신뢰할 수 있는 안전한 거래와 데이터 처리를 할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 블록체인 기술과 IoT 기술이 융합된 서비스를 손쉽게 저작할 수 있으며, 저작한 블록체인 기반의 IoT 서비스를 수행할 수 있는 플랫폼을 제공하는 방법 및 시스템을 제공하는 것이다.
본 발명의 일 측면에 따르면, 블록체인 기반 IoT 서비스 플랫폼 제공 방법으로서, 저작 시스템이, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계; 및 상기 복수의 IoT 기기 및 블록체인 네트워크를 중계하는 중계 시스템이, 상기 IoT 서비스의 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 단계를 포함하되, 저작 시스템이, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계는, 상기 IoT 서비스의 저작자 단말로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받는 단계; 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 상기 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 단계; 생성된 상기 스마트 컨트랙트를 상기 블록체인에 등록하고, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 획득하는 단계; 상기 데이터 필드 정의 데이터에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API(REpresentational State Transfer Application Programming Interface)를 생성하는 단계; 및 상기 Rest API를 상기 저작자 단말에 제공하는 단계를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법이 제공된다.
일 실시예에서, 상기 중계 시스템이, 상기 IoT 서비스의 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 단계는, 상기 복수의 IoT 기기 중 어느 하나가 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여, 업데이트할 상태 값을 상기 블록체인 네트워크에 쓰기 위한 함수를 실행하는 단계; 및 상기 IoT 서비스의 사용자 단말이 상기 복수의 상태 값 중 적어도 하나를 상기 사용자 단말로 전달하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여 상기 사용자 단말로 전달할 상태 값을 상기 블록체인 네트워크로부터 읽기 위한 함수를 실행하고, 상기 블록체인 네트워크로부터 획득한 상태 값을 상기 사용자 단말로 전달하는 단계를 포함할 수 있다.
일 실시예에서, 상기 Rest API는, 상기 복수의 IoT 기기가 상기 중계 시스템에 호출하여, 상기 중계 시스템이 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하기 위한 POST Rest API, 및 상기 IoT 서비스의 사용자 단말이 상기 중계 시스템에 호출하여, 상기 중계시스템이 상기 블록체인 네트워크로부터 획득한 상기 복수의 상태 값 중 적어도 하나를 전달하도록 요청하기 위한 GET Rest API를 포함할 수 있다.
일 실시예에서, 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 단계는, 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 스마트 컨트랙트에 상응하는 스크립트를 생성하는 단계; 및 생성된 상기 스크립트를 컴파일하여 ABI(Application Binary Interface) 파일 및 오브젝트 파일을 생성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 저작 시스템이, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계는, 상기 스마트 컨트랙트의 접근 주소 및 상기 Rest API를 포함하는 메타 데이터를 생성하여 상기 블록체인에 등록하는 단계; 및 상기 블록체인 네트워크에 등록된 상기 메타 데이터에 대한 접근 수단을 상기 중계 시스템에 저장하는 단계를 더 포함할 수 있다.
본 발명의 다른 일 측면에 따르면, 데이터 처리장치에 설치되며 상술한 방법을 수행하기 위한 컴퓨터 판독 가능한 매체에 기록된 컴퓨터 프로그램이 제공된다.
본 발명의 다른 일 측면에 따르면, 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로서, 프로세서; 및 컴퓨터 프로그램을 저장하는 메모리를 포함하되, 상기 컴퓨터 프로그램은, 상기 프로세서에 의해 실행되는 경우 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로 하여금 상술한 방법을 수행하도록 하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템이 제공된다.
본 발명의 다른 일 측면에 따르면, 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로서, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 저작 시스템; 및 상기 복수의 IoT 기기 및 블록체인 네트워크를 중계하며, 상기 IoT 서비스의 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 중계 시스템을 포함하되, 상기 저작 시스템은, 상기 IoT 서비스의 저작자 단말로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받는 필드정보 입력모듈; 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 상기 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 스마트 컨트랙트 생성모듈; 생성된 상기 스마트 컨트랙트를 상기 블록체인 네트워크에 등록하고, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 획득하는 스마트 컨트랙트 등록모듈; 상기 데이터 필드 정의 데이터에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API를 생성하는 Rest API 생성모듈; 및 상기 Rest API를 상기 저작자 단말에 제공하는 제공모듈을 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템이 제공된다.
일 실시예에서, 상기 중계 시스템은, 상기 복수의 IoT 기기 중 어느 하나가 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여, 업데이트할 상태 값을 상기 블록체인 네트워크에 쓰기 위한 함수를 실행하고, 상기 IoT 서비스의 사용자 단말이 상기 복수의 상태 값 중 적어도 하나를 상기 사용자 단말로 전달하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여 상기 사용자 단말로 전달할 상태 값을 상기 블록체인 네트워크로부터 읽기 위한 함수를 실행하고, 상기 블록체인 네트워크로부터 획득한 상태 값을 상기 사용자 단말로 전달할 수 있다.
일 실시예에서, 상기 Rest API는, 상기 복수의 IoT 기기가 상기 중계 시스템에 호출하여, 상기 중계 시스템이 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하기 위한 POST Rest API, 및 상기 IoT 서비스의 사용자 단말이 상기 중계 시스템에 호출하여, 상기 중계시스템이 상기 블록체인 네트워크로부터 획득한 상기 복수의 상태 값 중 적어도 하나를 전달하도록 요청하기 위한 GET Rest API를 포함할 수 있다.
일 실시예에서, 상기 스마트 컨트랙트 생성모듈은, 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 스마트 컨트랙트에 상응하는 스크립트를 생성하고, 생성된 상기 스크립트를 컴파일하여 ABI(Application Binary Interface) 파일 및 오브젝트 파일을 생성할 수 있다.
일 실시예에서, 상기 저작 시스템은, 상기 스마트 컨트랙트의 접근 주소 및 상기 Rest API를 포함하는 메타 데이터를 생성하여 상기 블록체인 네트워크에 등록하고, 상기 블록체인 네트워크에 등록된 상기 메타 데이터에 대한 접근 수단을 상기 중계 시스템에 저장하는 메타 데이터 등록모듈을 더 포함할 수 있다.
본 발명의 일 실시예에 의하면, 블록체인 기술과 IoT 기술이 융합된 서비스를 손쉽게 저작할 수 있으며, 저작한 블록체인 기반의 IoT 서비스를 수행할 수 있는 플랫폼을 제공하는 방법 및 시스템을 제공할 수 있다.
또한 IoT로부터 획득한 각종 정보를 블록체인 네트워크에 저장하고, 저장된 정보를 획득하는 기능을 수행하는 서비스 저작도구를 자동으로 생성함으로써, 블록체인 기반의 IoT 서비스를 손쉽게 저작할 수 있는 방법 및 시스템을 제공할 수 있다.
또한 IoT 서비스에 관한 각종 메타 정보를 포함하는 메타 데이터를 상기 블록체인 네트워크에 등록함으로써, 하나의 접근 수단만을 관리하면 되는 편의성이 확보될 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 블록체인 기반 IoT 서비스 플랫폼 제공 시스템의 동작 환경을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 저작 시스템의 구성을 개략적으로 도시한 블록도이다.
도 3은 필드정보 입력모듈이 저작자 단말로 제공하는 필드정보 입력 UI의 일 예를 도시한 도면이다.
도 4는 IoT 기기의 상태 값이 블록체인 네트워크에 저장되는 과정을 도시한 도면이다.
도 5는 블록체인 네트워크에 저장된 IoT 기기의 상태 값을 조회하는 과정을 도시한 도면이다.
도 1은 본 발명의 일 실시예에 따른 블록체인 기반 IoT 서비스 플랫폼 제공 시스템의 동작 환경을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 저작 시스템의 구성을 개략적으로 도시한 블록도이다.
도 3은 필드정보 입력모듈이 저작자 단말로 제공하는 필드정보 입력 UI의 일 예를 도시한 도면이다.
도 4는 IoT 기기의 상태 값이 블록체인 네트워크에 저장되는 과정을 도시한 도면이다.
도 5는 블록체인 네트워크에 저장된 IoT 기기의 상태 값을 조회하는 과정을 도시한 도면이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 명세서에 있어서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다. 반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예들을 중심으로 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)의 동작 환경을 나타내는 도면이다.
상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 본 발명의 기술적 사상을 구현하기 위해 필요한 하드웨어 리소스(resource) 및/또는 소프트웨어를 구비할 수 있으며, 반드시 하나의 물리적인 구성요소를 의미하거나 하나의 장치를 의미하는 것은 아니다. 즉, 상기 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 본 발명의 기술적 사상을 구현하기 위해 구비되는 하드웨어 및/또는 소프트웨어의 논리적인 결합을 의미할 수 있으며, 필요한 경우에는 서로 이격된 장치에 설치되어 각각의 기능을 수행함으로써 본 발명의 기술적 사상을 구현하기 위한 논리적인 구성들의 집합으로 구현될 수도 있다. 또한, 상기 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 본 발명의 기술적 사상을 구현하기 위한 각각의 기능 또는 역할별로 별도로 구현되는 구성들의 집합을 의미할 수도 있다.
도 1을 참조하면 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 저작 시스템(200) 및 중계 시스템(300)을 포함할 수 있다.
본 발명의 기술적 사상에 따른 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 블록체인 기반 IoT 서비스 플랫폼 제공 방법을 수행할 수 있다. 상기 블록체인 기반 IoT 서비스 플랫폼 제공 방법은 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하기 위한 저작도구 생성과정과 상기 저작도구 생성과정을 통해 생성된 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 단계를 수행할 수 있다.
한편, 상기 저작 시스템(200)은 소정의 IoT 서비스의 저작 도구를 생성할 수 있다. 이를 위하여, 상기 저작 시스템(200)은 상기 IoT 서비스의 저작자 단말(10)과 유무선 네트워크를 통해 통신하며 본 발명의 기술적 사상을 구현하는데 필요한 각종 데이터를 송수신할 수 있다. 저작자는 저작자 단말(10)을 통해 상기 IoT 서비스를 구현하는데 필요한 각종 정보를 저작 시스템(200)에 입력할 수 있으며, 상기 저작 시스템(200)은 입력된 정보에 기초하여 IoT 서비스를 저작하는데 필요한 저작 도구를 자동 생성할 수 있다.
상기 중계 시스템(300)은 상기 IoT 서비스에 종속되는 복수의 IoT 기기(20-1 내지 20-N; 20) 및 블록체인 네트워크(30)를 중계할 수 있다. 즉, 상기 중계 시스템(300)은 상기 복수의 IoT 기기(20-1 내지 20-N; 20)와 통신망(예를 들어, 인터넷 또는 IoT 망)을 통해 연결될 수 있으며, 블록체인 네트워크(30)를 구성하는 블록체인 노드 중 어느 하나(예를 들어 31)과 연결되어 상기 IoT 서비스에 종속되는 복수의 IoT 기기(20-1 내지 20-N; 20) 및 블록체인 네트워크(30)를 중계할 수 있다.
또한 상기 중계 시스템(300)은 상기 저작 시스템(200)에 의해 생성된 저작 도구를 통해 저작된 상기 IoT 서비스를 수행할 수 있다.
상기 중계 시스템(300)은 상기 IoT 서비스의 사용자 단말(40)과 유무선 네트워크를 통해 통신하며 본 발명의 기술적 사상을 구현하는데 필요한 각종 데이터를 송수신할 수 있다. 상기 사용자 단말(40)은 상기 IoT 서비스를 사용하는 사용자의 단말 또는 상기 IoT 서비스의 활동 전반을 확인하는데 사용되는 관리자의 단말일 수 있다.
상기 IoT 서비스는 복수의 IoT 기기(20-1 내지 20-N; 20)로부터 수신한 센싱 데이터에 기반하여 제공되는 서비스일 수 있다. 상기 복수의 IoT 기기(20-1 내지 20-N; 20)로부터 수신한 센싱 데이터는 P2P 기반의 블록체인 네트워크(30) 에 저장될 수 있다. 상기 블록체인 네트워크(30)는 복수의 블록체인 노드(예를 들어 31)을 포함할 수 있으며, 위조나 변조가 불가능한 분산 저장소일 수 있다. 한편 상기 블록체인 네트워크(30)는 스마트 컨트랙트가 구현된 블록체인 기술이 적용된 블록체인 네트워크(예를 들어, Ethereum, Quorum 등)일 수 있다.
IoT는 각종 사물에 센서와 무선 통신 기능을 내장하여 인터넷에 연결하는 기술일 수 있으며, IoT 서비스는 인터넷으로 연결된 사물들에 내장된 센서에 의해 센싱되는 센싱 데이터를 분석하거나 상기 센싱 데이터로 학습한 정보를 사용자에게 제공하거나 사용자가 사물을 원격 조정할 수 있도록 하는 서비스일 수 있다.
상기 IoT 기기(20)는 상기 IoT 서비스에 종속된 활동을 수행하는 기기일 수 있으며, 가전제품, 모바일 장비, 웨어러블 디바이스, 차량용 제어장치를 비롯하여 다양한 임베디드 시스템을 포함할 수 있다.
상기 IoT 기기(20)에는 서비스 저작자가 제작한 애플리케이션이 내장될 수 있다. 상기 IoT 서비스의 저작자는 상기 저작 시스템(200)에 의해 생성된 저작 도구를 통해 상기 IoT 기기(20)에 내장되는 애플리케이션을 제작할 수 있다.
상기 저작 시스템(200)에 의해 자동 생성되는 서비스 저작 도구는 상기 IoT 서비스에 종속된 IoT 기기에서 상기 중계 시스템(300)으로 호출할 수 있는 Rest API일 수 있다.
상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 네트워크 통신 기능을 구비한 정보처리장치일 수 있다. 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 데스크탑 컴퓨터나 랩탑 컴퓨터, 서버와 같은 프로세싱 시스템일 수 있다.
상기 저작자 단말 단말(10) 및 사용자 단말(40)은 네트워크 통신 기능을 구비한 정보처리장치일 수 있다. 예를 들어, 상기 단말(10, 40)은 데스크탑 컴퓨터나 랩탑 컴퓨터, 또는 휴대전화, 위성전화, 무선전화, SIP(Session Initiation Protocol), WLL(Wireless Local Loop) 스테이션, 스마트폰, 타블렛 PC, PDA(Personal Digital Assistant) 등의 핸드헬드 장치를 포함하는 프로세싱 장치일 수도 있다.
한편, 도 1에 도시된 바와 같이, 상기 저작 시스템(200) 및 중계 시스템(300)은 하나의 물리적 서버에 포함되는 서브 시스템일 수도 있으나, 실시 예에 따라서 상기 상기 저작 시스템(200) 및 중계 시스템(300)은 각각 독립된 물리적 서버로 구성되며 네트워크를 통해 통신하는 형태로 구현될 수도 있다.
한편, 도 1에서는 복수의 IoT 기기(20-1 내지 20-N) 각각이 중계 시스템과 통신을 수행하는 형태의 실시 예를 도시하고 있으나, 실시예에 따라서는 각각의 IoT 기기(20-1 내지 20-N) 각각에 중계 시스템(300) 및 이와 연결된 블록체인 노드가 내장되어 있으며, 각 IoT 기기(20-1 내지 20-N)에 내장된 블록체인 노드가 블록체인 네트워크(30)에 참여하는 형태로 구현될 수도 있다.
도 2는 본 발명의 일 실시예에 따른 저작 시스템(200)의 구성을 개략적으로 도시한 블록도이다.
도 2를 참조하면, 상기 저작 시스템(200)은 필드정보 입력모듈(210), 스마트 컨트랙트 생성모듈(220), 스마트 컨트랙트 등록모듈(230), Rest API 생성모듈(240), 제공모듈(250), 메타 데이터 등록모듈(260)을 포함할 수 있다. 실시예에 따라서, 상기 저작 시스템(200)은 이보다 많은 구성을 포함할 수도 있다. 예를 들면, 저작 시스템(200)은 네트워크를 통해 외부 시스템(예를 들면, 31, 20)와 통신할 수 있는 적어도 하나의 통신모듈이나 상기 저작 시스템(200)에 포함된 다른 구성요소의 기능 및/또는 리소스를 제어하고 할 수 있는 제어모듈, 각종 정보를 저장할 수 있는 저장모듈, 사용자와 인터페이싱할 수 있는 입출력모듈 등을 더 포함할 수 있다.
본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예를 들면, 상기 모듈은 특정된 코드와 상기 특정된 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아님은 본 발명의 기술분야의 평균적 전문가에게는 용이하게 추론될 수 있다.
상기 저작자 단말(10)로부터 신규 IoT 서비스의 생성이 요청되면, 상기 필드정보 입력모듈(210)은 요청된 신규 IoT 서비스에 상응하는 고유식별정보(ServiceID)를 발급할 수 있다.
이후, 상기 필드정보 입력모듈(210)은 상기 IoT 서비스의 저작자 단말(10)로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받을 수 있다.
상기 복수의 상태 값은 상기 IoT 기기(20) 내의 센서들이 획득하는 센싱 데이터, 상기 IoT 기기(20) 내의 각종 설정 값, 혹은 상기 IoT 서비스의 내부 로직에서 이용되는 내부 변수 값을 포함할 수 있다.
각각의 상태 값에 대응되는 상기 필드 정보는 타이틀, 이름, 타입, 공통 필드 여부, 읽기/쓰기 권한, 최소값, 최대값을 포함할 수 있다. 타이틀은 개별 IoT 기기의 센서 모니터링 시 UI에 출력되는 이름을 의미할 수 있다. 이름은 스마트 컨트랙트 및 Rest API에서 사용되는 변수명을 의미할 수 있다. 타입은 필드의 타입일 수 있다. 공통 필드 여부는 해당 필드가 IoT 서비스 내에서 공통으로 적용되는 필드일 경우 true 값을 가지며, 기기 별 센서 필드일 경우 false 값을 가질 수 있다. 읽기/쓰기 권한은 읽기 권한 및/또는 쓰기 권한이 있는 자에 관한 정보일 수 있다.
아래 [표 1]는 필드 타입의 일 예를 나타낸다.
타입 | 설명 | 예시 |
int | 정수 | -40 |
uint | 0 또는 자연수 | 25 |
float | 소수점이 존재하는 수 | 3.2 |
string | 문자열 | "abc" |
bool | true 또는 false | true |
User | 사용자 ID. 내부에서는 문자열로 처리함. 해당 필드에 대해서는 ID에 대응하는 사용자가 존재하는지 여부를 자동으로 확인함. |
user01 |
Time | 시간. 내부에서는 uint로 처리함. | 1587007626 |
Temperature | 온도. 내부에서는 float로 처리함. | 15.3 |
Location | 위치 정보(위도, 경도, 고도) | (30.223, 115.111, 10,020) |
Acceleration | 가속도 센서 정보(X축, Y축, Z축) | (30.223, 115.111, 10,020) |
아래 [표 2]는 일기/쓰기 권한의 일 예를 나타낸다.
권한 | 설명 |
user | 별다른 권한이 없어도 직접 읽기/쓰기가 가능한 필드 |
manager | 서비스 관리자의 권한이 있어야만 직접 읽기/쓰기가 가능한 필드 |
system | 별도 로직을 통해서만 읽기/쓰기가 가능한 필드 (추후 지원 예정) |
■ system의 경우 get 또는 set 메서드를 지원하지 않음으로써 외부에서의 수정을 원천 차단함
■ manager의 경우 해당 서비스 매니저의 계정으로 로그인 과정을 수행한 세션에 대해서만 get 또는 set 실행을 허용함
저작자는 필드정보 입력모듈(210)이 상기 저작자 단말(10)로 제공하는 필드정보 입력 UI를 통해 IoT 기기(20)의 각 상태 값에 상응하는 필드 정보를 입력할 수 있다. 도 3은 필드정보 입력모듈(210)이 상기 저작자 단말(10)로 제공하는 필드정보 입력 UI의 일 예를 도시한 도면이다.
도 3의 예에서, 각 IoT 기기(20)는 메시지/현재 사용자/현재 가속도/현재 온도/현재 위치라는 상태 값을 가질 수 있으며, 저작자는 도 3의 UI를 통해 각각의 상태 값에 상응하는 필드 정보를 입력할 수 있다.
그러면, 각 상태 값에 상응하는 필드 정보를 아래와 같이 JSON 형식으로 저장할 수 있다.
[ { "title": "메시지", "name": "message", "type": "string", "global": true, "write": "manager", "read": "user", "min": null, "max": null }, { "title": "현재 사용자", "name": "user", "type": "User", "global": false, "write": "user", "read": "user", "min": null, "max": null }, { "title": "현재 가속도", "name": "accel", "type": "Acceleration", "global": false, "write": "user", "read": "user", "min": "-80", "max": "80" }, { "title": "현재 온도", "name": "temperature", "type": "Temperature", "global": false, "write": "user", "read": "user", "min": "-30", "max": "60" }, { "title": "현재 위치", "name": "loc", "type": "Location", "global": false, "write": "user", "read": "user", "min": null, "max": null } ] |
한편, 상기 필드정보 입력모듈(210)은 입력된 각 상태값에 상응하는 필드가 블록체인 네트워크(30)에 저장될지 로컬 저장소(예를 들면, 상기 중계 시스템(300)에 구비된 저장장치)에 저장될지 여부를 더 입력받을 수 있다. 블록체인 네트워크(30)에 저장되는 데이터의 업데이트가 너무 빈번하게 일어나는 경우, 과도한 오버헤드가 발생할 수 있기 때문에 IoT 서비스를 설계하는 저작자가 각 상태 값의 성격에 따라 이를 블록체인 네트워크(30)에 저장될지 로컬 저장소에 저장할지 여부를 결정할 수 있도록 할 수 있다.
다시 도 2를 참조하면, 상기 스마트 컨트랙트 생성모듈(220)은 상기 복수의 상태 값 각각을 정의하는 필드 정보(예를 들어, 위와 같은 JSON 파일)에 기초하여, 상기 복수의 상태 값 각각을 블록 체인에 쓰기 위한 set 함수 및 상기 블록 체인에 저장된 상기 복수의 상태 값 각각을 읽기 위한 get 함수를 포함하는 스마트 컨트랙트를 생성할 수 있다.
보다 상세하게는, 상기 스마트 컨트랙트 생성모듈(220)은 상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 스마트 컨트랙트에 상응하는 스크립트를 생성할 수 있다. 상기 스마트 컨트랙트 생성모듈(220)은 각각의 상태 값 별로 get/set 함수를 자동 생성할 수 있으며(단, 권한이 system인 필드에 대해서는 get 또는 set을 생성하지 않을 수 있음), 개별 IoT 기기의 센서 정보를 일괄적으로 get/set 할 수 있도록 getDevice, setDevice 함수를 자동 생성할 수도 있다.
아래 코드는 상기 스마트 컨트랙트 생성모듈(220)이 생성하는 스크립트 중의 일부를 도시하고 있다.
pragma solidity ^0.6.4; pragma experimental ABIEncoderV2; contract __Contract { modifier deviceCheck(string memory deviceID) { // check device available _; } modifier userCheck(string memory user) { // check user available _; } struct Location { string latitude; string longitude; string altitude; } struct Acceleration { string x; string y; string z; } bool internal _available; string internal _message; struct __Struct { bool available; string message; bool isused; string user; uint256 time; Acceleration accel; string temperature; Location loc; } string internal serviceID = "service01"; mapping(string => __Struct) internal IDtoObject; function getDevice(string memory deviceID) public view returns (__Struct memory) { __Struct memory device = IDtoObject[deviceID]; device.available = _available; device.message = _message; return device; } function setDevice(string memory deviceID, bool _isused, string memory _user, uint256 _time, Acceleration memory _accel, string memory _temperature, Location memory _loc) deviceCheck(deviceID) userCheck(_user) public { IDtoObject[deviceID].isused = _isused; IDtoObject[deviceID].user = _user; IDtoObject[deviceID].time = _time; IDtoObject[deviceID].accel = _accel; IDtoObject[deviceID].temperature = _temperature; IDtoObject[deviceID].loc = _loc; } function getAvailable() public view returns (bool available) { return _available; } function getMessage() public view returns (string memory message) { return _message; } function getIsused(string memory deviceID) public view returns (bool isused) { return IDtoObject[deviceID].isused; } function getUser(string memory deviceID) public view returns (string memory user) { return IDtoObject[deviceID].user; } function getTime(string memory deviceID) public view returns (uint256 time) { return IDtoObject[deviceID].time; } function getAccel(string memory deviceID) public view returns (Acceleration memory accel) { return IDtoObject[deviceID].accel; } function getTemperature(string memory deviceID) public view returns (string memory temperature) { return IDtoObject[deviceID].temperature; } function getLoc(string memory deviceID) public view returns (Location memory loc) { return IDtoObject[deviceID].loc; } function setAvailable(bool __available) public { _available = __available; } function setMessage(string memory __message) public { _message = __message; } function setIsused(string memory deviceID, bool _isused) deviceCheck(deviceID) public { IDtoObject[deviceID].isused = _isused; } function setUser(string memory deviceID, string memory _user) deviceCheck(deviceID) userCheck(_user) public { IDtoObject[deviceID].user = _user; } function setTime(string memory deviceID, uint256 _time) deviceCheck(deviceID) public { IDtoObject[deviceID].time = _time; } function setAccel(string memory deviceID, Acceleration memory _accel) deviceCheck(deviceID) public { IDtoObject[deviceID].accel = _accel; } function setTemperature(string memory deviceID, string memory _temperature) deviceCheck(deviceID) public { IDtoObject[deviceID].temperature = _temperature; } function setLoc(string memory deviceID, Location memory _loc) deviceCheck(deviceID) public { IDtoObject[deviceID].loc = _loc; } } |
이후 상기 스마트 컨트랙트 생성모듈(220)은 생성된 상기 스크립트를 컴파일하여 ABI(Application Binary Interface) 파일 및 오브젝트 파일을 생성할 수 있다. ABI 파일에는 스마트 컨트랙트의 인터페이스 정보가 기록되며, 이는 스마트 컨트랙트에 정의된 함수(함수)를 호출하기 위해 필요한 정보이다.
한편, 상기 스마트 컨트랙트 등록모듈(230)은 생성된 상기 스마트 컨트랙트를 상기 블록체인 네트워크(30)에 등록할 수 있다. 그러면, 상기 블록체인 네트워크(30)는 등록된 스마트 컨트랙트에 접근하기 위한 접근 주소를 반환할 수 있으며, 상기 스마트 컨트랙트 등록모듈(230)은 상기 블록체인 네트워크(30)에 의해 반환된 상기 스마트 컨트랙트의 접근 주소를 획득할 수 있다.
상기 Rest API 생성모듈(240)은 상기 데이터 필드 정의 데이터에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API를 생성할 수 있다.
상기 Rest API 생성모듈(240)이 생성하는 Rest API는 추후 IoT 서비스가 수행되는 중에 호출될 수 있다.
일 실시예에서, 상기 Rest API는, 상기 복수의 IoT 기기(20)가 상기 중계 시스템(300)에 호출하여, 상기 중계 시스템(300)이 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크(30)에서 업데이트하도록 요청하기 위한 POST Rest API, 및 상기 IoT 서비스의 사용자 단말(40)이 상기 중계 시스템(30)에 호출하여, 상기 중계 시스템(300)이 상기 블록체인 네트워크(30)로부터 획득한 상기 복수의 상태 값 중 적어도 하나를 전달하도록 요청하기 위한 GET Rest API를 포함할 수 있다.
각각의 필드에 대한 GET/POST Rest API는 기본적으로 /service/{serviceID}/call?method={methodName}&device={device-id} 의 형태로 되어 있다.
상기 사용자 단말(40)은 다음과 같이 GET Rest API를 호출할 수 있다.
그러면 상기 중계 시스템(300)은 서비스 ID가 svc01인 IoT 서비스에 종속된 IoT 기기 중 device ID가 device01인 기기의 상태 값들을 블록체인 네트워크(30)로부터 획득하여 상기 사용자 단말(40)로 전달할 수 있다.
한편, 서비스 ID가 svc01인 IoT 서비스에 종속된 IoT 기기 중 device ID가 device01인 기기는 자신의 상태를 업데이트하기 위하여 다음과 같이 POST Rest API를 호출할 수 있다.
그러면, 상기 중계 시스템(300)은 서비스 ID가 svc01인 IoT 서비스에 종속된 IoT 기기 중 device ID가 device01인 기기의 상태 값을 위의 body 부분과 같이 블록체인 네트워크(30)에 등록할 수 있다.
상기 제공모듈(250)은 상기 Rest API를 상기 저작자 단말(10)에 제공할 수 있다. 일 실시예에서 상기 제공모듈(250)은 상기 저작자 단말(10)로 네트워크를 통해 상기 Rest API를 출력하거나 상기 저작자 단말(10)이 확인 가능한 파일의 형태로 상기 Rest API를 상기 저작자 단말(10)에 제공할 수 있다.
상기 메타 데이터 등록모듈(260)은 상기 스마트 컨트랙트의 접근 주소 및 상기 Rest API를 포함하는 메타 데이터를 생성하여 상기 블록체인 네트워크(30)에 등록하고, 상기 블록체인 네트워크(30)에 등록된 상기 메타 데이터에 대한 접근 수단(예를 들어, 접근 주소)을 상기 중계 시스템(300)에 저장할 수 있다. 실시예에 따라 상기 메타 데이터는 상기 ABI 파일 및/또는 상기 필드 정보를 더 포함할 수도 있다. 이와 같이 상기 IoT 서비스에 관한 각종 메타 정보를 포함하는 메타 데이터를 상기 블록체인 네트워크(30)에 등록함으로써, 하나의 접근 주소만을 관리하면 되는 편의성이 확보될 수 있다.
한편 상술한 바와 같이, 저작자는 상기 저작 시스템(200)에 의해 생성된 저작 도구로 IoT 서비스를 저작할 수 있으며, 상기 중계 시스템(300)은 저작된 IoT 서비스를 실행할 수 있다. IoT 서비스가 실행되는 중에 상기 중계 시스템(300)은 IoT 기기(20)의 상태 값을 블록체인 네트워크(30)에 저장하거나 블록체인 네트워크(30)에 저장된 상태 값을 조회할 수 있는데, 이하에서 이에 관하여 도 4 및 도 5를 참조하여 설명하기로 한다.
도 4는 IoT 기기(20)의 상태 값이 블록체인 네트워크(30)에 저장되는 과정을 도시한 도면이다.
상기 IoT 기기(20)는 중계 시스템(300)으로 Post Rest API를 호출하여, 자신의 상태 값 중 적어도 일부를 저장하라는 요청을 전달할 수 있다(S100).
상기 중계 시스템(300)은 별도로 관리하고 있던 상기 IoT 서비스의 메타 데이터의 접근 수단(예를 들어, 해당 메타 데이터의 블록체인 네트워크 접근 주소)을 통하여 상기 IoT 서비스의 메타 데이터를 요청할 수 있으며(S110), 블록체인 네트워크(30)는 메타 데이터를 반환할 수 있다(S120). 상기 중계 시스템(300)은 메타 데이터로부터 해당 IoT 서비스의 스마트 컨트랙트 주소 및 ABI 정보를 획득할 수 있다.
한편 상기 IoT 기기(20)가 JSON 형식 등으로 상태 값을 표현하며 저장을 요청한 경우, 상기 중계 시스템(300)은 이를 로우 데이터로 변환하는 마샬링 과정을 수행할 수 있다(S130). 이러한 마샬링 과정에서 필드 정보가 이용될 수 있다.
이후 상기 중계 시스템(300)은 상기 IoT 서비스의 스마트 컨트랙트 주소 및 ABI 정보에 기초하여 상기 블록체인 네크워크(30)에 등록되어 있는 스마트 컨트랙트에 포함된 쓰기 함수를 호출함으로써, 상기 블록체인 네트워크(30)에 상태 값을 업데이트할 수 있다(S140).
도 5는 블록체인 네트워크(30)에 저장된 IoT 기기의 상태 값을 조회하는 과정을 도시한 도면이다.
상기 사용자 단말(40)은 중계 시스템(300)으로 Get Rest API를 호출하여, Iot 기기(20)의 상태 값 중 적어도 일부를 조회하라는 요청을 전달할 수 있다(S200).
상기 중계 시스템(300)은 별도로 관리하고 있던 상기 IoT 서비스의 메타 데이터의 접근 수단(예를 들어, 해당 메타 데이터의 블록체인 네트워크 접근 주소)을 통하여 상기 IoT 서비스의 메타 데이터를 요청할 수 있으며(S210), 블록체인 네트워크(30)는 메타 데이터를 반환할 수 있다(S220). 상기 중계 시스템(300)은 메타 데이터로부터 해당 IoT 서비스의 스마트 컨트랙트 주소 및 ABI 정보를 획득할 수 있다.
이후 상기 중계 시스템(300)은 상기 IoT 서비스의 스마트 컨트랙트 주소 및 ABI 정보에 기초하여 상기 블록체인 네크워크(30)에 등록되어 있는 스마트 컨트랙트에 포함된 읽기 함수를 호출함으로써(S230), 상기 블록체인 네트워크(30)로부터 상태 값을 획득할 수 있다(S240).
한편 상기 블록체인 네트워크(30)로부터 반환되는 값은 사용자가 이해하기 어려운 로우 데이터의 형태로 되어 있으므로 상기 중계 시스템(300)은 이를 JSON 포맷 등 사용자가 이해할 수 있는 형태로 변환하는 언마샬링 과정을 수행할 수 있다(S250). 이러한 언마샬링 과정에서 필드 정보가 이용될 수 있다.
이후 상기 중계 시스템(300)은 획득한 정보를 상기 사용자 단말(40)로 전달할 수 있다(S260).
한편, 구현 예에 따라서, 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템(100)은 프로세서 및 상기 프로세서에 의해 실행되는 프로그램을 저장하는 메모리를 포함할 수 있다. 상기 프로세서는 싱글 코어 CPU혹은 멀티 코어 CPU를 포함할 수 있다. 메모리는 고속 랜덤 액세스 메모리를 포함할 수 있고 하나 이상의 자기 디스크 저장 장치, 플래시 메모리 장치, 또는 기타 비휘발성 고체상태 메모리 장치와 같은 비휘발성 메모리를 포함할 수도 있다. 프로세서 및 기타 구성 요소에 의한 메모리로의 액세스는 메모리 컨트롤러에 의해 제어될 수 있다.
한편, 본 발명의 실시예에 따른 방법은 컴퓨터가 읽을 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 읽을 수 있는 기록 매체에 저장될 수 있으며, 본 발명의 실시예에 따른 제어 프로그램 및 대상 프로그램도 컴퓨터로 판독 가능한 기록 매체에 저장될 수 있다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
기록 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터로 읽을 수 있는 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 전자적으로 정보를 처리하는 장치, 예를 들어, 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타나며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Claims (12)
- 블록체인 기반 IoT 서비스 플랫폼 제공 방법으로서,
저작 시스템이, 저작자 단말로부터 소정의 IoT 서비스의 생성이 요청되면, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 상기 IoT 서비스의 저작 도구를 생성하는 단계; 및
상기 복수의 IoT 기기 및 블록체인 네트워크를 중계하는 중계 시스템이, 상기 IoT 서비스의 저작 도구를 통해 상기 저작자 단말에서 저작된 상기 IoT 서비스를 수행하는 단계를 포함하되,
상기 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 상기 IoT 서비스의 저작 도구를 생성하는 단계는,
상기 저작자 단말로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받는 단계;
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 상기 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 단계;
생성된 상기 스마트 컨트랙트를 상기 블록체인에 등록하고, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 획득하는 단계;
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API(REpresentational State Transfer Application Programming Interface)를 생성하는 단계; 및
상기 저작자 단말에서 상기 IoT 서비스가 저작될 수 있도록, 상기 Rest API를 상기 저작자 단말에 제공하는 단계를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법.
- 제1항에 있어서,
상기 중계 시스템이, 상기 IoT 서비스의 저작 도구를 통해 저작된 상기 IoT 서비스를 수행하는 단계는,
상기 복수의 IoT 기기 중 어느 하나가 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여, 업데이트할 상태 값을 상기 블록체인 네트워크에 쓰기 위한 함수를 실행하는 단계; 및
상기 IoT 서비스의 사용자 단말이 상기 복수의 상태 값 중 적어도 하나를 상기 사용자 단말로 전달하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여 상기 사용자 단말로 전달할 상태 값을 상기 블록체인 네트워크로부터 읽기 위한 함수를 실행하고, 상기 블록체인 네트워크로부터 획득한 상태 값을 상기 사용자 단말로 전달하는 단계를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법.
- 제1항에 있어서,
상기 Rest API는,
상기 복수의 IoT 기기가 상기 중계 시스템에 호출하여, 상기 중계 시스템이 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하기 위한 POST Rest API, 및
상기 IoT 서비스의 사용자 단말이 상기 중계 시스템에 호출하여, 상기 중계시스템이 상기 블록체인 네트워크로부터 획득한 상기 복수의 상태 값 중 적어도 하나를 전달하도록 요청하기 위한 GET Rest API를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법.
- 제1항에 있어서,
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 단계는,
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 스마트 컨트랙트에 상응하는 스크립트를 생성하는 단계; 및
생성된 상기 스크립트를 컴파일하여 ABI(Application Binary Interface) 파일 및 오브젝트 파일을 생성하는 단계를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법.
- 제1항에 있어서,
상기 저작 시스템이, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 소정의 IoT 서비스의 저작 도구를 생성하는 단계는,
상기 스마트 컨트랙트의 접근 주소 및 상기 Rest API를 포함하는 메타 데이터를 생성하여 상기 블록체인에 등록하는 단계; 및
상기 블록체인 네트워크에 등록된 상기 메타 데이터에 대한 접근 수단을 상기 중계 시스템에 저장하는 단계를 더 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 방법.
- 데이터 처리장치에 설치되며 제1항 내지 제5항 중 어느 한 항에 기재된 방법을 수행하기 위한 컴퓨터 판독 가능한 매체에 기록된 컴퓨터 프로그램.
- 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로서,
프로세서; 및 컴퓨터 프로그램을 저장하는 메모리를 포함하되,
상기 컴퓨터 프로그램은, 상기 프로세서에 의해 실행되는 경우 상기 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로 하여금 제1항 내지 제5항 중 어느 한 항에 기재된 방법을 수행하도록 하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
- 블록체인 기반 IoT 서비스 플랫폼 제공 시스템으로서,
저작자 단말로부터 소정의 IoT 서비스의 생성이 요청되면, 복수의 IoT(Internet of Things) 기기로부터 수신한 센싱 데이터에 기반하여 서비스되는 상기 IoT 서비스의 저작 도구를 생성하는 저작 시스템; 및
상기 복수의 IoT 기기 및 블록체인 네트워크를 중계하며, 상기 IoT 서비스의 저작 도구를 통해 상기 저작자 단말에서 저작된 상기 IoT 서비스를 수행하는 중계 시스템을 포함하되,
상기 저작 시스템은,
상기 저작자 단말로부터 상기 IoT 서비스에서 이용될 복수의 상태 값 각각을 정의하는 필드 정보를 입력받는 필드정보 입력모듈;
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 상태 값 각각을 상기 블록체인 네트워크에 쓰기 위한 함수 및 상기 블록체인 네트워크에 저장된 상기 복수의 상태 값 각각을 읽기 위한 함수를 포함하는 스마트 컨트랙트를 생성하는 스마트 컨트랙트 생성모듈;
생성된 상기 스마트 컨트랙트를 상기 블록체인 네트워크에 등록하고, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 획득하는 스마트 컨트랙트 등록모듈;
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 복수의 IoT 기기의 상태 값에 접근하기 위한 Rest API를 생성하는 Rest API 생성모듈; 및
상기 저작자 단말에서 상기 IoT 서비스가 저작될 수 있도록, 상기 Rest API를 상기 저작자 단말에 제공하는 제공모듈을 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
- 제8항에 있어서,
상기 중계 시스템은,
상기 복수의 IoT 기기 중 어느 하나가 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여, 업데이트할 상태 값을 상기 블록체인 네트워크에 쓰기 위한 함수를 실행하고,
상기 IoT 서비스의 사용자 단말이 상기 복수의 상태 값 중 적어도 하나를 상기 사용자 단말로 전달하도록 요청하는 경우, 상기 중계 시스템이, 상기 블록체인 네트워크에 등록된 상기 스마트 컨트랙트의 접근 주소를 통하여 상기 사용자 단말로 전달할 상태 값을 상기 블록체인 네트워크로부터 읽기 위한 함수를 실행하고, 상기 블록체인 네트워크로부터 획득한 상태 값을 상기 사용자 단말로 전달하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
- 제8항에 있어서,
상기 Rest API는,
상기 복수의 IoT 기기가 상기 중계 시스템에 호출하여, 상기 중계 시스템이 상기 복수의 상태 값 중 적어도 하나를 상기 블록체인 네트워크에서 업데이트하도록 요청하기 위한 POST Rest API, 및
상기 IoT 서비스의 사용자 단말이 상기 중계 시스템에 호출하여, 상기 중계시스템이 상기 블록체인 네트워크로부터 획득한 상기 복수의 상태 값 중 적어도 하나를 전달하도록 요청하기 위한 GET Rest API를 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
- 제8항에 있어서,
상기 스마트 컨트랙트 생성모듈은,
상기 복수의 상태 값 각각을 정의하는 필드 정보에 기초하여, 상기 스마트 컨트랙트에 상응하는 스크립트를 생성하고,
생성된 상기 스크립트를 컴파일하여 ABI(Application Binary Interface) 파일 및 오브젝트 파일을 생성하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
- 제8항에 있어서,
상기 저작 시스템은,
상기 스마트 컨트랙트의 접근 주소 및 상기 Rest API를 포함하는 메타 데이터를 생성하여 상기 블록체인 네트워크에 등록하고, 상기 블록체인 네트워크에 등록된 상기 메타 데이터에 대한 접근 수단을 상기 중계 시스템에 저장하는 메타 데이터 등록모듈을 더 포함하는 블록체인 기반 IoT 서비스 플랫폼 제공 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200067247A KR102340881B1 (ko) | 2020-06-03 | 2020-06-03 | 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200067247A KR102340881B1 (ko) | 2020-06-03 | 2020-06-03 | 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210150197A KR20210150197A (ko) | 2021-12-10 |
KR102340881B1 true KR102340881B1 (ko) | 2021-12-20 |
Family
ID=78865534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200067247A KR102340881B1 (ko) | 2020-06-03 | 2020-06-03 | 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102340881B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102674141B1 (ko) * | 2022-02-22 | 2024-06-11 | 백석대학교산학협력단 | 포인트 클라우드를 이용한 블록체인 기반 설명 가능한 인공지능 시스템 |
KR102680575B1 (ko) * | 2022-07-29 | 2024-07-03 | 명지대학교 산학협력단 | 미디어 사물 인터넷 기반의 스마트 컨트랙트를 생성하기 위한 장치 및 이를 위한 방법 |
KR102508781B1 (ko) * | 2022-11-29 | 2023-03-10 | 주식회사 스마트엠투엠 | 스마트 컨트랙트 호출을 위한 api 게이트웨이 생성 방법 및 시스템 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101778768B1 (ko) | 2017-04-21 | 2017-09-18 | (주)케이사인 | IoT 기기 제어 방법 및 시스템 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9977415B2 (en) * | 2015-07-03 | 2018-05-22 | Afero, Inc. | System and method for virtual internet of things (IOT) devices and hubs |
KR102288045B1 (ko) * | 2018-05-21 | 2021-08-10 | 성신여자대학교 연구 산학협력단 | 블록 체인 기반 대상 데이터 관리 방법 및 장치 |
KR102081274B1 (ko) * | 2018-07-25 | 2020-02-25 | (주)유비벨록스모바일 | 블록체인망을 이용한 iot 가전 상태 관제 시스템 |
KR101979586B1 (ko) | 2018-12-19 | 2019-05-17 | 주식회사 마크애니 | 블록 체인 기반으로 관리되는 사물 인터넷 디바이스 및 그 시스템 및 방법 |
-
2020
- 2020-06-03 KR KR1020200067247A patent/KR102340881B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101778768B1 (ko) | 2017-04-21 | 2017-09-18 | (주)케이사인 | IoT 기기 제어 방법 및 시스템 |
Non-Patent Citations (1)
Title |
---|
비특허문헌 1 (진재환 외 2, Asia-pacific Journal of Multimedia Services Convergent with Art, 2019.08.31) |
Also Published As
Publication number | Publication date |
---|---|
KR20210150197A (ko) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102340881B1 (ko) | 블록체인 기반 IoT 서비스 플랫폼 제공 방법 및 시스템 | |
CN110995473B (zh) | 一种业务节点的控制方法及相关设备 | |
KR102238954B1 (ko) | 로직 맵을 통한 스마트 계약 데이터베이스의 트래버싱 | |
US20160077901A1 (en) | Dynamic Determination of Local and Remote API Calls | |
US11128627B2 (en) | Triggering and controlling workflows across applications and services used in cloud computing systems | |
US9652206B2 (en) | Rule engine system controlling devices of disparate types and protocols | |
CN108737176B (zh) | 一种数据网关控制方法、电子设备、存储介质及架构 | |
CN108287708B (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
JP2015501021A (ja) | OAuthフレームワーク | |
US9697042B2 (en) | Extensibility of business process and application logic | |
US10803413B1 (en) | Workflow service with translator | |
US20140282630A1 (en) | Backend custom code extensibility | |
US9128886B2 (en) | Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium | |
CN101542435B (zh) | 管理非同时用户界面模块的增强型用户界面管理器及方法 | |
CN111368330A (zh) | 一种基于区块链的以太坊智能合约审计系统及方法 | |
CN111371851B (zh) | 一种连接方法、装置及电子设备和存储介质 | |
CN108287894A (zh) | 数据处理方法、装置、计算设备及存储介质 | |
CN109729121B (zh) | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 | |
JP2007183968A (ja) | 分離されている実行コンテキスト間でのデータ転送方法及び装置 | |
TW202139668A (zh) | 用於與區塊鏈相關聯之多個服務之平台 | |
CN111582824A (zh) | 云资源同步方法、装置、设备及存储介质 | |
CN102136045B (zh) | 访问权限管理方法、访问权限管理装置及数据处理系统 | |
JP2006072904A (ja) | 情報処理装置、情報処理方法、ならびにプログラム、記憶媒体 | |
CN117632395A (zh) | 工作流处理方法、装置、设备、存储介质和程序产品 | |
CN102843411A (zh) | 在分布式网络中定位并执行对象 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |