KR102288521B1 - 블록체인 기반의 데이터 저장 장치 및 방법 - Google Patents

블록체인 기반의 데이터 저장 장치 및 방법 Download PDF

Info

Publication number
KR102288521B1
KR102288521B1 KR1020170177801A KR20170177801A KR102288521B1 KR 102288521 B1 KR102288521 B1 KR 102288521B1 KR 1020170177801 A KR1020170177801 A KR 1020170177801A KR 20170177801 A KR20170177801 A KR 20170177801A KR 102288521 B1 KR102288521 B1 KR 102288521B1
Authority
KR
South Korea
Prior art keywords
transaction
data
data file
chunk
block chain
Prior art date
Application number
KR1020170177801A
Other languages
English (en)
Other versions
KR20190076197A (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 KR1020170177801A priority Critical patent/KR102288521B1/ko
Publication of KR20190076197A publication Critical patent/KR20190076197A/ko
Application granted granted Critical
Publication of KR102288521B1 publication Critical patent/KR102288521B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

블록체인 기반의 데이터 저장 장치 및 방법이 개시된다.
본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치는, 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 데이터 파일 분할부; 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 트랜잭션 생성부; 및 상기 생성된 트랜잭션을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 트랜잭션 송수신부를 포함하고, 상기 트랜잭션 생성부는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키도록 구성됨으로써, 데이터 파일의 보안성과 무결성을 보장하고 악의적인 공격이나 시스템 장애로 인한 피해를 방지함은 물론, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있도록 한다.

Description

블록체인 기반의 데이터 저장 장치 및 방법{Apparatus and method for storing data based on blockchain}
본 발명은 블록체인 기반의 데이터 저장 장치 및 방법에 관한 것으로서, 더욱 상세하게는, 데이터 파일을 블록체인에 분산하여 저장하는 블록체인 기반의 데이터 저장 장치 및 방법에 관한 것이다.
일반적으로, 블록체인(blockchain) 기술은 특정 데이터나 디지털 거래 장부 등을 중앙 집중형 서버가 아닌 다수의 블록체인 노드에 분산 저장하여 공동으로 관리하는 기술을 말한다. 즉, 블록체인 기술은 정보로의 접근을 차단하는 방식이 아닌 정보를 공유하고 분산 저장하는 방식으로 해당 정보의 위·변조를 방지하는 기술이다.
그러나, 비트코인(Bitcoin)이나 이더리움(Ethereum) 등에서 사용되는 기존의 블록체인 기술은, 가상 화폐 거래 시의 해킹을 방지하기 위한 것으로서, 블록체인에 저장되는 데이터의 크기가 2016년 발표된 0.12 버전의 비트코인의 경우 83바이트에 불과하고, 이더리움의 경우에도 64KB에 불과할 정도로 제한적이어서, 대용량 데이터 파일의 저장에 적용될 수 없다는 문제가 있다.
또한, 한국 등록특허 제10-1132672호 등에 개시된 바와 같이, 데이터 파일을 단일한 중앙 서버에 저장하여 관리하는 기존 기술들은, 악의적인 공격에 의한 데이터 파일의 위·변조가 용이하고, 저장된 데이터의 손실 발생시 데이터 복구가 어렵다는 문제가 있다. 또한, 이러한 기존 기술들은 중앙 서버가 전체 시스템의 단일 장애 지점(SPOF:Single Point of Failure)에 해당하기 때문에, 데이터 파일을 저장한 중앙 서버에 장애가 발생하면 시스템 전체가 중단되어 데이터 파일의 다운로드나 출력 등이 불가능하다는 문제가 있다.
본 발명이 해결하고자 하는 기술적 과제는, 데이터 파일의 보안성과 무결성을 보장하고 악의적인 공격이나 시스템 장애로 인한 피해를 방지함은 물론, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있는 블록체인 기반의 데이터 저장 장치 및 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치는, 블록체인에 저장하고자 하는 데이터 파일을 저장하고 있는 저장 유닛; 블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 통신 유닛; 및 상기 데이터 파일을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 데이터 파일 분할부; 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 트랜잭션 생성부; 및 상기 생성된 트랜잭션을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 트랜잭션 송수신부를 포함하고, 상기 트랜잭션 생성부는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킨다.
일 실시예에 있어서, 상기 데이터 파일 분할부는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않고, 상기 트랜잭션 생성부는, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성할 수 있다.
일 실시예에 있어서, 상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다.
일 실시예에 있어서, 상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다.
일 실시예에 있어서, 상기 제어 유닛은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 트랜잭션 ID 저장부를 더 포함할 수 있다.
일 실시예에 있어서, 상기 트랜잭션 송수신부는, 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하고, 상기 트랜잭션 송수신부가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복할 수 있다.
일 실시예에 있어서, 상기 제어 유닛은, 상기 트랜잭션 송수신부가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 상기 트랜잭션 송수신부로 전달하는 트랜잭션 데이터 획득부; 및 상기 트랜잭션 데이터 획득부에 의해 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 데이터 파일 생성부를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법은, 블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 클라이언트가 데이터 파일을 블록체인에 저장하는 방법으로서, 상기 클라이언트가 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 (a) 단계; 상기 클라이언트가 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 (b) 단계; 및 상기 클라이언트가 상기 생성된 트랜잭션을 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 (c) 단계를 포함하고, 상기 (b) 단계는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 (a) 단계는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않는 단계를 포함하고, 상기 (b) 단계는, 상기 데이터 파일이 분할되지 않는 경우, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 방법은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 클라이언트가 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 (d) 단계를 더 포함할 수 있다.
일 실시예에 있어서, 상기 방법은, 상기 클라이언트가 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 (e) 단계; 및 상기 클라이언트가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 클라이언트가 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 (f) 단계를 더 포함할 수 있다.
일 실시예에 있어서, 상기 (f) 단계는, 상기 클라이언트가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하는 단계를 포함하고, 상기 방법은, 상기 (f) 단계에서 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 (g) 단계를 더 포함할 수 있다.
본 발명에 따른 실시예들은, 상술한 동작 또는 방법을 컴퓨터 시스템을 통해 실행하는 컴퓨터 프로그램으로서 기록매체에 기록되는 컴퓨터 프로그램을 이용하여 구현될 수 있다.
본 발명에 따르면, 데이터의 위조 및 변조가 불가한 블록체인 기술을 이용하여 사용자의 데이터 파일을 다수의 노드에 분산 저장하여 관리함으로써, 데이터 파일의 보안성과 무결성을 보장하고, 악의적인 공격이나 시스템 장애로 인한 피해를 방지할 수 있다.
또한, 저장 대상 데이터 파일을 데이터 다수의 데이터 청크들로 분할하고, 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션들을 순차적으로 생성하여 블록체인 노드로 전송함으로써, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있으며, 데이터 저장 시스템 구축 비용을 절감할 수 있다.
나아가, 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자라면, 본 발명에 따른 다양한 실시예들이 상기 언급되지 않은 여러 기술적 과제들을 해결할 수 있음을 이하의 설명으로부터 자명하게 이해할 수 있을 것이다.
도 1은 본 발명이 적용되는 블록체인 네트워크 환경의 일례를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치를 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따라 생성되는 데이터 청크 저장용 트랜잭션의 데이터 포맷을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 저장 프로세스를 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 다운로드 프로세스를 나타낸 흐름도이다.
이하, 본 발명의 기술적 과제에 대한 해결 방안을 명확화하기 위해 첨부도면을 참조하여 본 발명의 실시예들을 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서 관련 공지기술에 관한 설명이 오히려 본 발명의 요지를 불명료하게 하는 경우 그에 관한 설명은 생략하기로 한다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 설계자, 제조자 등의 의도 또는 관례 등에 따라 달라질 수 있을 것이다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1에는 본 발명이 적용되는 블록체인 네트워크 환경의 일례가 도시되어 있다.
도 1에 도시된 바와 같이, 블록체인 네트워크는 사용자의 클라이언트(10)와 다수의 블록체인 노드(20)로 구성될 수 있다. 사용자의 클라이언트(10)는 데이터 파일의 전송과 저장 요청, 저장된 파일의 삭제나 다운로드 요청 등을 수행할 수 있다. 이러한 클라이언트(10)는 서버(server)나 PC(Personal Computer) 등과 같은 고정 단말로 구성되거나, 핸드폰 등과 같은 모바일 단말로 구성될 수 있다.
블록체인 노드(20)는 블록체인에 데이터 파일을 저장하는데 사용되는 트랜잭션(transaction)의 승인, 블록체인을 이용한 트랜잭션 내역 보관, 다른 노드들과의 주기적인 블록 분산 합의 등을 수행할 수 있다. 이러한 블록체인 노드(20)는 서버나 PC 등과 같은 컴퓨터 시스템으로 구성될 수 있으며, 비트코인(Bitcoin)이나 이더리움(Ethereum) 등과 같은 블록체인 프로그램이 설치되어 실행될 수 있다. 또한, 다수의 블록체인 노드(20)를 포함하는 블록체인 노드 그룹은 누구나 접근할 수 있는 퍼블릭 체인(public chain)으로 구성되거나, 특정 사용자들의 클라이언트만 접근할 수 있는 프라이빗 체인(private chain)으로 구성될 수 있다.
본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는, 이러한 블록체인 네트워크 환경에 적용되어, 블록체인 노드들과 유선 통신 또는 무선 통신을 수행하며 블록체인 노드(20)의 블록체인에 사용자의 데이터 파일을 분산 저장할 수 있다. 이를 위해, 본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는 도 1과 같이 클라이언트(10)에 포함되는 장치로 구성될 수 있다.
실시예에 따라, 본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는 클라이언트(10)와 연동하는 별개의 장치로 구성될 수도 있다. 이 경우, 데이터 저장 장치(100)는 통신 인터페이스 또는 I/O 인터페이스를 통해 클라이언트(10)와 연결되어 클라이언트(10)의 입·출력 유닛이나 통신 유닛을 사용하도록 구성될 수 있다.
도 2에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치(100)가 블록도로 도시되어 있다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치(100)는 저장 유닛(110) 및 제어 유닛(120)을 포함하며, 실시예에 따라 입력 유닛(130), 출력 유닛(140), 통신 유닛(150) 등을 더 포함할 수 있다.
저장 유닛(110)은, 블록체인에 저장하고자 하는 사용자의 데이터 파일을 저장하고 있다. 아래에서 다시 설명하겠지만, 저장 유닛(110)은 미리 결정된 데이터 청크의 크기 값 등을 더 저장할 수 있다. 이러한 저장 유닛(120)은 데이터를 기록하고 삭제할 수 있는 다양한 종류와 형태의 저장 매체로 구성될 수 있다. 예컨대, 저장 유닛(120)은 RAM, ROM, EEPROM, 레지스터, 플래시 메모리, 하드디스크, 광기록 매체 또는 자기기록 매체 등으로 구성될 수 있다.
또한, 저장 유닛(110)은 제어 유닛(120)의 접근이 가능하도록, 예컨대 데이터 버스 등을 통해 제어 유닛(120)과 전기적으로 연결될 수 있다. 이러한 연결을 통해, 저장 유닛(110)은 제어 유닛(120)이 수행하는 각종 제어 로직을 포함하는 프로그램 및/또는 제어 로직이 실행될 때 발생하는 데이터를, 저장 및/또는 갱신 및/또는 소거 및/또는 전송할 수 있다. 이러한 저장 유닛(110)은 논리적으로 2개 이상으로 분할되어, 그 일부 또는 전부가 제어 유닛(120)에 포함되도록 구성될 수도 있다.
입력 유닛(130)은, 사용자의 명령을 입력받아 제어 유닛(120)으로 전달한다. 이를 위해, 입력 유닛(130)은 제어 유닛(120)과 전기적으로 연결될 수 있다. 입력 유닛(130)은 사용자의 명령을 입력받을 수 있는 다양한 종류와 형태의 장치로 구성될 수 있다. 예컨대, 입력 유닛(130)은 키보드, 마우스, 또는 터치패드 등으로 구성될 수 있다.
출력 유닛(140)은, 제어 유닛(120)의 제어 신호에 따라 UI(User Interface) 등과 같은 시각적 정보를 출력한다. 출력 유닛(130)은 제어 유닛(120)의 제어 신호를 수신할 수 있도록 제어 유닛(120)과 전기적으로 연결될 수 있다. 출력 유닛(130)은 시각적 정보를 출력할 수 있는 다양한 종류와 형태의 장치로 구성될 수 있다. 예컨대, 출력 유닛(140)은 이미지를 표시하는 모니터나 터치스크린 등의 디스플레이 장치로 구성될 수 있다.
통신 유닛(150)은, 제어 유닛(120)의 제어 신호에 따라 블록체인 네트워크를 구성하는 블록체인 노드들과 유선 통신 또는 무선 통신을 수행한다. 통신 유닛(150)은 제어 유닛(120)의 제어 신호와 데이터를 전달받아 블록체인 노드(20)로 전송하거나, 블록체인 노드(20)로부터 수신된 데이터를 제어 유닛(120)에 전달할 수 있도록 제어 유닛(120)과 전기적으로 연결될 수 있다. 통신 유닛(140)은 외부 통신 장치와 데이터 통신하는 다양한 종류와 형태의 통신 모듈로 구성될 수 있다. 예컨대, 통신 유닛(150)은 통신 회선이 접속되는 모뎀(MODEM), AP(Access Point)를 통해 무선 통신을 수행하는 WiFi 통신 모듈, 또는 기지국을 통해 무선 통신을 수행하는 LTE(Long Term Evolution) 통신 모듈 등으로 구성될 수 있다.
한편, 제어 유닛(120)은, 저장 유닛(110)에 저장된 데이터 파일을 통신 유닛(150)을 통해 블록체인 노드(20)로 전송하여 블록체인에 저장되도록 한다. 이를 위해, 제어 유닛(120)은 데이터 파일 분할부(122), 트랜잭션 생성부(123) 및 트랜잭션 송수신부(125)를 포함하며, 실시예에 따라 사용자 명령 수신부(121), 트랜잭션 ID 저장부(124), 트랜잭션 데이터 획득부(126), 데이터 파일 생성부(127) 등을 더 포함할 수 있다.
상기 데이터 파일 분할부(122)는, 저장 유닛(110)에 저장된 데이터 파일을 읽어들여 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할한다. 예컨대, 사용자 명령 수신부(121)가 저장 유닛(110)에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 저장 명령을 입력받으면, 데이터 파일 분할부(122)는 저장 유닛(110)에서 해당 데이터 파일을 읽어들여 미리 결정된 데이터 청크 단위로 분할할 수 있다.
예컨대, 미리 결정된 데이터 청크의 크기가 50KB이고, 저장 대상 데이터 파일의 크기가 200KB인 경우, 분할되는 데이터 청크의 갯수는 4개로 결정되며, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 데이터 순서에 따라 4개의 데이터 청크로 분할할 수 있다. 반면, 미리 결정된 데이터 청크의 크기가 40KB이고, 저장 대상 데이터 파일의 크기가 200KB인 경우, 분할되는 데이터 청크의 갯수는 5개로 결정되며, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 데이터 순서에 따라 5개의 데이터 청크로 분할할 수 있다. 이 경우, 데이터 파일 분할 단위가 되는 데이터 청크의 크기는 저장 유닛(110)에 미리 저장될 수 있다.
일 실시예에 있어서, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 분할하기 전에 암호화 또는 압축하거나, 압축하여 암호화할 수도 있다.
상기 트랜잭션 생성부(123)는, 저장 대상 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성한다. 저장 대상 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 트랜잭션 생성부(123)는 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킬 수 있다.
또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 최초 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다.
또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 최종 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다. 이 경우, 파일 식별 정보는 저장 대상 데이터 파일의 파일명 정보와 파일명 길이 정보를 포함할 수 있다.
트랜잭션 송수신부(125)는 트랜잭션 생성부(123)에 의해 순차적으로 생성되는 트랜잭션을 통신 유닛(150)을 통해 블록체인 노드(20)드로 전송하여 블록체인에 저장되도록 한다.
한편, 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 데이터 파일 분할부(122)는 해당 데이터 파일을 분할하지 않고 트랜잭션 생성부(123)로 전달한다. 그러면, 트랜잭션 생성부(123)는 해당 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성하고, 트랜잭션 송수신부(125)는 생성된 트랜잭션을 블록체인 노드(20)로 전송한다.
도 3에는 본 발명의 일 실시예에 따라 생성되는 데이터 청크 저장용 트랜잭션의 데이터 포맷이 도시되어 있다.
도 3에 도시된 바와 같이, 트랜잭션 생성부(123)에 의해 생성되는 데이터 청크 저장용 트랜잭션(300)은 헤더 필드(310)와 데이터 필드(320)를 가질 수 있다.
블록체인에 저장하고자 하는 데이터 파일에서 분할된 데이터 청크는, 트랜잭션(300)의 데이터 필드(320)에 포함된다.
트랜잭션(300)의 헤더 필드(310)는 파일명 길이 필드(311), 청크 수 필드(312), 청크 크기 필드(313), 파일명 필드(314) 및 직전 트랜잭션 ID 필드(315) 등을 포함할 수 있다.
파일명 길이 필드(311)는, 저장 대상 데이터 파일을 식별하는 파일명의 길이 정보를 포함한다. 파일명 길이 필드(311)는 해당 트랜잭션이 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 경우에만 파일명 길이 정보를 포함하고, 해당 트랜잭션이 최종 데이터 청크 이외의 데이터 청크, 예컨대 최초 데이터 청크나 중간 데이터 청크를 포함하는 경우에는 ‘0’ 값을 포함하도록 구성될 수 있다. 아래에서 다시 설명하겠지만, 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 파일명 길이 필드(311)에 포함된 파일명 길이 정보는 트랜잭션의 헤더에서 파일명 정보를 발견하는 참조값이 된다.
청크 수 필드(312)는, 저장 대상 데이터 파일이 미리 결정된 데이터 청크 단위로 분할될 경우, 분할되어 나오는 데이터 청크들의 갯수 정보를 포함한다. 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 작아서 분할이 필요없는 경우에는 청크 수 필드(312)는 ‘1’ 값을 포함하도록 구성될 수 있다.
청크 크기 필드(313)는, 분할 단위가 되는 데이터 청크의 크기 정보를 포함한다. 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 작아서 청크 수 필드(312)에 1 값이 포함되는 경우, 청크 크기 필드(313)의 정보는 생략될 수 있다.
파일명 필드(314)는 저장 대상 데이터 파일을 식별하는 파일명 정보를 포함한다. 이 경우, 파일명 정보는 파일명과 파일명의 확장자를 포함하는 정보로 구성될 수 있다. 파일명 필드(314)는, 저장 대상 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 최종 데이터 청크를 포함하는 최종 트랜잭션에서만 파일명 정보를 포함하도록 구성될 수 있다. 앞서 언급한 바와 같이, 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서, 파일명 필드(314)의 파일명 정보는 파일명 길이 필드(311)의 파일명 길이 정보를 참조값으로 하여 발견될 수 있다. 이러한 파일명 정보를 통해, 다운로드 되는 데이터 파일의 파일명이 지정될 수 있다.
직전 트랜잭션 ID 필드(315)는, 데이터 필드(320)에 포함되는 데이터 청크 직전에 분할된 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자 정보를 포함한다. 아래에서 다시 설명하겠지만, 직전 트랜잭션의 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다운로드 받는 과정에서, 선순위 데이터 청크를 불러오는 용도로 사용될 수 있다. 데이터 순서에 따라 분할된 데이터 청크들 중 최초 데이터 청크를 포함하는 최초 트랜잭션의 경우에는 직전 트랜잭션이 존재하지 않으므로, 직전 트랜잭션 ID 필드(315)는 ‘0’ 값을 포함하도록 구성될 수 있다.
예컨대, 저장 대상 데이터 파일이 데이터 순서에 따라 3개의 데이터 청크로 분할되는 경우, 최초 데이터 청크를 포함하는 제1 트랜잭션의 직전 트랜잭션 ID 필드에는 ‘0x000…’(32byte)이 포함되고, 두 번째 데이터 청크를 포함하는 제2 트랜잭션의 직전 트랜잭션 ID 필드에는 제1 트랜잭션의 트랜잭션 식별자가 포함되고, 최종 데이터 청크를 포함하는 제3 트랜잭션의 직전 트랜잭션 ID 필드에는 제2 트랜잭션의 트랜잭션 식별자가 포함될 수 있다.
도 3에는 도시되지 않았으나, 트랜잭션 생성부(123)에서 생성되는 모든 트랜잭션들은 기본적으로 자신의 트랜잭션 식별자를 포함할 수 있다.
다시 도 2를 참조하면, 트랜잭션 ID 저장부(124)는 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 또는 저장 대상 데이터 파일의 크기가 데이터 청크의 크기보다 작아서 저장 대상 데이터 파일 전체를 포함하는 트랜잭션이 생성되어 전송된 경우, 해당 트랜잭션의 트랜잭션 식별자를 자체 저장하거나 저장 유닛(110)에 저장할 수 있다. 이와 같이 저장된 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 사용될 수 있다.
예컨대, 사용자 명령 수신부(121)가 블록체인에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 다운로드 명령을 입력받으면, 트랜잭션 송수신부(125)는 다운로드 대상 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 트랜잭션 ID 저장부(124) 또는 저장 유닛(110)에서 독출하여 임의의 블록체인 노드(20)로 전송하고, 해당 블록체인 노드(20)로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신할 수 있다.
또한, 트랜잭션 송수신부(125)는, 수신된 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드(20)로 전송하여 해당 블록체인 노드(20)로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신하는 과정을 반복하여, 다운로드 대상 데이터 파일의 데이터 청크를 포함한 모든 트랜잭션들을 수신할 수 있다.
이 경우, 트랜잭션 데이터 획득부(126)는 상기 트랜잭션 송수신부(125)가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다.
예컨대, 트랜잭션 데이터 획득부(126)는 수신된 트랜잭션의 청크 수 필드 값을 확인하여 해당 값이 1인 경우, 해당 트랜잭션의 데이터 필드에 포함된 데이터를 획득하여 다운로드 대상 데이터 파일로서 저장 유닛(110)에 저장할 수 있다.
반면, 트랜잭션 데이터 획득부(126)는 수신된 트랜잭션의 청크 수 필드 값을 확인하여 해당 값이 1이 아닌 경우, 해당 트랜잭션의 데이터 필드에 포함된 데이터를 획득하여 다운로드 대상 데이터 파일의 데이터 청크로서 저장 유닛(110)에 임시 저장하고, 직전 트랜잭션 ID 필드에 포함된 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 트랜잭션 송수신부(125)로 전달할 수 있다. 상기 트랜잭션 데이터 획득부(126)는 트랜잭션 송수신부(125)를 통해 수신되는 트랜잭션의 직전 트랜잭션 ID 필드 값이 ‘0x000…’(32byte)으로 나올 때까지 상술한 과정을 반복한다.
데이터 파일 생성부(127)는, 다운로드 대상 데이터 파일의 데이터 청크들을 포함하는 모든 트랜잭션들이 수신된 후, 상기 트랜잭션 데이터 획득부(126)에 의해 임시 저장된 데이터 청크들을 해당 트랜잭션들이 수신된 순서의 역순으로 결합함으로써 완전한 데이터 파일을 생성할 수 있다. 즉, 최초 수신된 트랜잭션에 포함된 데이터 청크가 데이터 파일의 최종 데이터 청크가 되고, 최종 수신된 트랜잭션에 포함된 데이터 청크가 데이터 파일의 최초 데이터 청크가 된다. 데이터 청크들이 결합되어 생성되는 데이터 파일의 파일명은, 최초 수신된 트랜잭션의 파일명 필드에 포함된 파일명 정보를 기초로 정해진다. 이와 같이, 생성된 데이터 파일은 저장 유닛(110)에 저장될 수 있다.
이러한 제어 유닛(120)은 상술한 제어 로직들을 실행하기 위해 당 업계에 알려진 프로세서, ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로, 레지스터, 통신 모뎀, 데이터 처리 장치 등을 선택적으로 포함할 수 있다. 또한, 상기 제어 로직들이 소프트웨어로 구현될 때, 제어 유닛(120)은 프로그램 모듈의 집합으로 구현될 수 있다. 또한, 프로그램 모듈들은 메모리에 저장되고, 프로세서에 의해 실행될 수 있다. 상기 메모리는 디바이스의 종류에 상관없이 정보가 저장되는 디바이스를 총칭하는 것으로서 특정 메모리 디바이스를 지칭하는 것은 아니다. 상기 메모리는 제어 유닛(120)을 구성하는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 컴퓨터 부품으로 구성되어 프로세서와 연결될 수 있다. 또한, 상기 메모리는 본 발명의 저장 유닛(110)에 포함될 수 있다.
즉, 제어 유닛(120)의 구성요소들(121 내지 127)은 제어 유닛(120)에 의해 실행되는 프로그램 모듈들로 구성될 수 있다. 이러한 프로그램 모듈들은 저장 유닛(110)에 미리 저장된 후 제어 유닛(120)에 의해 실행될 수 있다. 또한, 제어 유닛(120)에 포함된 구성요소들(121 내지 127)은 서로 통합되거나, 2개 이상의 서브 구성요소로 분리될 수 있다. 또한, 하나의 구성요소에 의해 생성된 데이터는 별도의 언급이 없더라도 저장 유닛(110)에 저장된 후 다른 구성요소에 의해 사용될 수 있다.
도 4에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 저장 프로세스가 흐름도로 도시되어 있다. 이하, 도 4를 참조하여 데이터 저장 장치(100)의 세부 동작들을 시계열적으로 설명한다.
도 4에 도시된 바와 같이, 상기 데이터 저장 장치(100)의 제어 유닛(120)은 저장 유닛(110)에 저장된 데이터 파일을 사용자의 저장 명령에 따라 블록체인 노드(20)로 전송하여 블록체인에 저장되도록 한다.
우선, 제어 유닛(120)의 사용자 명령 수신부(121)는, 저장 유닛(110)에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 데이터 파일 저장 명령을 입력받을 수 있다(S400).
그 다음, 제어 유닛(120)의 데이터 파일 분할부(122)는, 사용자의 데이터 파일 저장 명령에 따라, 저장 유닛(110)에 저장된 데이터 파일을 읽어들여 해당 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할한다(S402, S404). 이 경우, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 분할하기 전에 암호화 또는 압축하거나, 암호화하여 압축할 수도 있다.
그 다음, 제어 유닛(120)의 트랜잭션 생성부(123)는, 저장 대상 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성한다(S406). 이 경우, 트랜잭션 생성부(123)는 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킨다.
예컨대, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 첫 번째로 분할된 최초 데이터 청크인 경우(S408), 상기 최초 데이터 청크를 포함하는 최초 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다(S410).
반면, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크가 아닌 경우(S408), 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킬 수 있다(S412). 예컨대, 트랜잭션 생성부(123)는 최초 데이터 청크를 포함한 제1 트랜잭션의 트랜잭션 식별자를, 두 번째 데이터 청크를 포함하는 제2 트랜잭션에 포함시킬 수 있다.
한편, 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우(S402), 데이터 파일 분할부(122)는 해당 데이터 파일을 분할하지 않고 트랜잭션 생성부(123)로 전달하고, 트랜잭션 생성부(123)는 해당 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성할 수 있다(S418).
트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우(S414), 상기 최종 데이터 청크를 포함하는 최종 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다(S420). 또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않아서 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성하는 경우에도(S418), 해당 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 포함시킬 수 있다(S420). 상기 파일 식별 정보는 저장 대상 데이터 파일의 파일명 정보와 파일명 길이 정보를 포함할 수 있다.
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는 트랜잭션 생성부(123)에 의해 생성되는 트랜잭션을 통신 유닛(150)을 통해 블록체인 노드(20)드로 전송하여 블록체인에 저장되도록 한다(S416, S422).
이 경우, 제어 유닛(120)의 트랜잭션 ID 저장부(124)는, 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 또는 저장 대상 데이터 파일 전체를 포함하는 트랜잭션이 생성되어 전송된 경우, 해당 트랜잭션의 트랜잭션 식별자를 자체 저장하거나 저장 유닛(110)에 저장한다(S424).
이와 같이 저장된 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 사용될 수 있다.
도 5에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 다운로드 프로세스가 흐름도로 도시되어 있다. 이하, 도 5를 참조하여, 데이터 저장 장치(100)의 세부 동작들을 시계열적으로 설명한다.
도 5에 도시된 바와 같이, 우선 제어 유닛(120)의 사용자 명령 수신부(121)는, 블록체인에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 데이터 파일 다운로드 명령을 입력받을 수 있다(S500).
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는, 다운로드 대상 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 트랜잭션 ID 저장부(124) 또는 저장 유닛(110)에서 독출하여 임의의 블록체인 노드(20)로 전송함하고(S502), 해당 블록체인 노드(20)로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신할 수 있다(S504).
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는, 수신된 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드(20)로 전송하여 해당 블록체인 노드(20)로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신하는 과정을 반복하여, 다운로드 대상 데이터 파일의 데이터 청크를 포함한 모든 트랜잭션들을 수신할 수 있다(S506 내지 S516).
이 경우, 제어 유닛(120)의 트랜잭션 데이터 획득부(126)는 상기 트랜잭션 송수신부(125)가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다.
즉, 트랜잭션 데이터 획득부(126)는, 수신된 트랜잭션의 청크 수 필드 값이 1인 경우(S506), 해당 트랜잭션의 데이터 필드에 포함된 데이터를 다운로드 대상 데이터 파일로서 획득하여, 저장 유닛(110)에 저장할 수 있다(S520).
반면, 트랜잭션 데이터 획득부(126)는, 수신된 트랜잭션의 청크 수 필드 값이 1이 아닌 경우(S506), 해당 트랜잭션의 데이터 필드에 포함된 데이터 청크와, 해당 트랜잭션의 직전 트랜잭션 ID 필드에 포함된 직전 트랜잭션의 트랜잭션 식별자를 획득하여(S510), 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하는 한편, 획득된 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다(S512).
트랜잭션 송수신부(125)는, 전달된 트랜잭션 식별자를 블록체인 노드(20)로 전송하여 해당 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신할 수 있다(S514, S516).
상기 트랜잭션 송수신부(125)와 트랜잭션 데이터 획득부(126)는, 현재 수신된 트랜잭션의 직전 트랜잭션 ID 필드 값이 ‘0x000…’(32byte)으로 나올 때까지 상술한 과정을 반복한다(S514).
제어 유닛(120)의 데이터 파일 생성부(127)는, 다운로드 대상 데이터 파일의 데이터 청크들을 포함하는 모든 트랜잭션들이 수신된 후, 상기 트랜잭션 데이터 획득부(126)에 의해 임시 저장된 데이터 청크들을 해당 트랜잭션들이 수신된 순서의 역순으로 결합함으로써 완전한 데이터 파일을 생성할 수 있다(S518). 데이터 청크들이 결합되어 생성되는 데이터 파일의 파일명은, 최초 수신된 트랜잭션의 파일명 필드에 포함된 파일명 정보를 기초로 정해진다.
데이터 파일 생성부(127)는, 이와 같이 생성된 데이터 파일을 저장 유닛(110)에 저장할 수 있다(S520).
한편, 본 발명에 따른 실시예들은 컴퓨터 시스템과 이러한 컴퓨터 시스템을 구동하는 컴퓨터 프로그램으로 구현될 수 있다. 본 발명의 실시예들이 컴퓨터 프로그램으로 구현되는 경우, 본 발명의 구성요소들은 해당 컴퓨터 시스템을 통해 해당 동작이나 작업을 실행하는 프로그램 세그먼트들이다. 이러한 컴퓨터 프로그램 내지 프로그램 세그먼트들은 컴퓨터로 판독 가능한 다양한 기록매체에 저장될 수 있다. 컴퓨터로 판독 가능한 기록매체에는 컴퓨터 시스템이 읽어들일 수 있는 데이터를 기록하는 모든 종류의 매체가 포함된다. 예컨대, 컴퓨터로 판독 가능한 기록매체에는 ROM, RAM, EEPROM, 레지스터, 플래시 메모리, CD-ROM, 자기 테이프, 하드 디스크, 플로피디스크, 또는 광 데이터 기록장치 등이 포함될 수 있다. 또한, 이러한 기록매체는 다양한 네트워크로 연결된 컴퓨터 시스템들에 분산 배치되어 프로그램 코드들을 분산 방식으로 저장하거나 실행시킬 수 있다.
상술한 바와 같이, 본 발명에 따르면, 데이터의 위조 및 변조가 불가한 블록체인 기술을 이용하여 사용자의 데이터 파일을 다수의 노드에 분산 저장하여 관리함으로써, 데이터 파일의 보안성과 무결성을 보장하고, 악의적인 공격이나 시스템 장애로 인한 피해를 방지할 수 있다. 또한, 저장 대상 데이터 파일을 데이터 다수의 데이터 청크들로 분할하고, 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션들을 순차적으로 생성하여 블록체인 노드로 전송함으로써, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있으며, 데이터 저장 시스템 구축 비용을 절감할 수 있다. 나아가, 본 발명에 따른 실시예들은, 당해 기술 분야는 물론 관련 기술 분야에서 본 명세서에 언급된 내용 이외의 다른 여러 기술적 과제들을 해결할 수 있음은 물론이다.
본 발명의 다양한 실시예들을 설명함에 있어서, '~부' 또는 '~유닛'이라고 명명된 구성 요소들은 물리적으로 구분되는 요소들이라고 하기보다 기능적으로 구분되는 요소들로 이해되어야 한다. 따라서 각각의 구성요소는 다른 구성요소와 선택적으로 통합되거나 각각의 구성요소가 제어 로직(들)의 효율적인 실행을 위해 서브 구성요소들로 분할될 수 있다. 구성요소들이 통합 또는 분할되더라도 기능의 동일성이 인정될 수 있다면 통합 또는 분할된 구성요소들도 본 발명의 범위 내에 있다고 해석되어야 함은 당업자에게 자명하다.
지금까지 본 발명에 대해 구체적인 실시예들을 참고하여 설명하였다. 그러나 당업자라면 본 발명의 기술적 범위에서 다양한 변형 실시예들이 구현될 수 있음을 명확하게 이해할 수 있을 것이다. 그러므로 앞서 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 할 것이다. 즉, 본 발명의 진정한 기술적 사상의 범위는 청구범위에 나타나 있으며, 그와 균등범위 내에 있는 모든 차이점은 본 발명에 포함되는 것으로 해석되어야 할 것이다.
100 : 데이터 저장 장치 110 : 저장 유닛
120 : 제어 유닛 121 : 사용자 명령 수신부
122 : 데이터 파일 분할부 123 : 트랜잭션 생성부
124 : 트랜잭션 ID 저장부 125 : 트랜잭션 송수신부
126 : 트랜잭션 데이터 획득부 127 : 데이터 파일 생성부
130 : 입력 유닛 140 : 출력 유닛
150 : 통신 유닛

Claims (15)

  1. 블록체인에 저장하고자 하는 데이터 파일을 저장하고 있는 저장 유닛;
    블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 통신 유닛; 및
    상기 데이터 파일을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 제어 유닛을 포함하고,
    상기 제어 유닛은,
    상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 데이터 파일 분할부;
    상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 트랜잭션 생성부; 및
    상기 생성된 트랜잭션을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 트랜잭션 송수신부를 포함하고,
    상기 트랜잭션 생성부는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키고,
    상기 제어 유닛은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 트랜잭션 ID 저장부를 더 포함하는 블록체인 기반의 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 데이터 파일 분할부는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않고,
    상기 트랜잭션 생성부는, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 트랜잭션 송수신부는, 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하고, 상기 트랜잭션 송수신부가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 제어 유닛은,
    상기 트랜잭션 송수신부가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 상기 트랜잭션 송수신부로 전달하는 트랜잭션 데이터 획득부; 및
    상기 트랜잭션 데이터 획득부에 의해 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 데이터 파일 생성부를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.
  8. 블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 클라이언트가 데이터 파일을 블록체인에 저장하는 블록체인 기반의 데이터 저장 방법에 있어서,
    상기 클라이언트가 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 (a) 단계;
    상기 클라이언트가 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 (b) 단계; 및
    상기 클라이언트가 상기 생성된 트랜잭션을 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 (c) 단계를 포함하고,
    상기 (b) 단계는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키는 단계를 포함하고,
    상기 방법은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 클라이언트가 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 (d) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  9. 제8항에 있어서,
    상기 (a) 단계는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않는 단계를 포함하고,
    상기 (b) 단계는, 상기 데이터 파일이 분할되지 않는 경우, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  10. 제8항에 있어서,
    상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  11. 제8항에 있어서,
    상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  12. 삭제
  13. 제8항에 있어서,
    상기 방법은,
    상기 클라이언트가 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 (e) 단계; 및
    상기 클라이언트가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 클라이언트가 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 (f) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  14. 제13항에 있어서,
    상기 (f) 단계는, 상기 클라이언트가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하는 단계를 포함하고,
    상기 방법은, 상기 (f) 단계에서 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 (g) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.
  15. 제8항 내지 제11항, 제13항, 또는 제14항 중 어느 한 항에 따른 방법을 컴퓨터 시스템을 통해 실행하는 컴퓨터 프로그램으로서 기록매체에 기록된 컴퓨터 프로그램.
KR1020170177801A 2017-12-22 2017-12-22 블록체인 기반의 데이터 저장 장치 및 방법 KR102288521B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170177801A KR102288521B1 (ko) 2017-12-22 2017-12-22 블록체인 기반의 데이터 저장 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170177801A KR102288521B1 (ko) 2017-12-22 2017-12-22 블록체인 기반의 데이터 저장 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20190076197A KR20190076197A (ko) 2019-07-02
KR102288521B1 true KR102288521B1 (ko) 2021-08-09

Family

ID=67257976

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170177801A KR102288521B1 (ko) 2017-12-22 2017-12-22 블록체인 기반의 데이터 저장 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102288521B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102203617B1 (ko) * 2019-07-19 2021-01-14 한전케이디엔주식회사 예측 모델링 위변조 방지를 위한 방법
GB2587190B (en) * 2019-09-12 2021-12-01 Nchain Holdings Ltd Storing a program on a blockchain
KR20210040569A (ko) 2019-10-04 2021-04-14 삼성에스디에스 주식회사 블록체인 기반 데이터 관리 시스템 및 그 방법
KR102628057B1 (ko) * 2019-10-29 2024-01-22 삼성에스디에스 주식회사 블록체인 기반 파일 송신 방법 및 그 시스템
KR102298566B1 (ko) * 2019-12-19 2021-09-03 한전케이디엔주식회사 레거시 인사채용 시스템과 블록체인 플랫폼간의 통신 인터페이스 장치
KR20210142823A (ko) 2020-05-19 2021-11-26 삼성에스디에스 주식회사 블록체인 기반의 데이터 관리 방법 및 장치
KR102572475B1 (ko) 2020-09-17 2023-08-30 주식회사 세수 폐기 가능 블록체인 원장 시스템 및 이를 이용하는 블록체인 운용 방법
KR20230099011A (ko) * 2021-12-27 2023-07-04 엘에스웨어(주) 공통 키셋정보를 이용한 원장정보 액세스 시스템 및 방법
KR20230099012A (ko) * 2021-12-27 2023-07-04 엘에스웨어(주) 복수의 저장공간을 갖는 원장정보 액세스 시스템 및 수행방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6296316B2 (ja) * 2014-05-13 2018-03-20 クロード クラウディング コーポレイション 分散型セキュリティ保護データストレージ、およびストリーミングメディアコンテンツの送信
KR20170075092A (ko) * 2015-12-22 2017-07-03 주식회사 와이즈넛 분산파일시스템 기반 NoSQL 데이터베이스의 데이터 안정성을 향상시키기 위한 트랜잭션 관리방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101727525B1 (ko) * 2016-09-05 2017-04-17 주식회사 스케일체인 블록체인 기반 분산 저장 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
KR20190076197A (ko) 2019-07-02

Similar Documents

Publication Publication Date Title
KR102288521B1 (ko) 블록체인 기반의 데이터 저장 장치 및 방법
WO2019184727A1 (zh) 一种服务升级管理的方法、装置及存储介质
EP3582110B1 (en) Bidirectional dynamic offloading of tasks between a host and a mobile device
US10521116B2 (en) System and method for managing object store
CN110266763B (zh) 跨网段互连的区块链网络实现方法、系统及存储介质
CN103095544A (zh) 虚拟交换机的可扩展性
CN110875850B (zh) 一种固件升级方法、系统、可读存储介质及终端设备
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
US20200133558A1 (en) Method, device and computer program product for data backup
CN105453058A (zh) 目录服务发现和/或学习
CN111325552A (zh) 数据处理方法及装置、电子设备、存储介质
CN111507694A (zh) 区块链跨链交互方法及系统
WO2021197579A1 (en) Method for deploying application software in cloud environments
CN102880478A (zh) 软件更新方法
CN110019040B (zh) 一种文件夹处理方法、移动终端及存储介质
US11838207B2 (en) Systems for session-based routing
CN109144520A (zh) Android中不同对象间的信息交互方法、装置、设备和存储介质
CN112380411B (zh) 敏感词处理方法、装置、电子设备、系统及存储介质
CN112631623A (zh) 链码部署方法、系统、装置、设备和存储介质
CN113556333A (zh) 一种计算机网络数据安全传输方法、装置
US9184996B2 (en) Thin client system, management server, client environment management method and program
CN111309592B (zh) 一种权限检查方法、装置、存储介质及终端
CN112541756B (zh) 区块链合约升级方法、装置、计算机设备及可读存储介质
JP6750929B2 (ja) ネットワークサービスをデプロイするための方法及び装置
US12001400B2 (en) Method and apparatus for synchronizing file

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant