KR20190076197A - Apparatus and method for storing data based on blockchain - Google Patents
Apparatus and method for storing data based on blockchain Download PDFInfo
- Publication number
- KR20190076197A KR20190076197A KR1020170177801A KR20170177801A KR20190076197A KR 20190076197 A KR20190076197 A KR 20190076197A KR 1020170177801 A KR1020170177801 A KR 1020170177801A KR 20170177801 A KR20170177801 A KR 20170177801A KR 20190076197 A KR20190076197 A KR 20190076197A
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- data
- data file
- chunk
- block chain
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- 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/10—Protocols 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
본 발명은 블록체인 기반의 데이터 저장 장치 및 방법에 관한 것으로서, 더욱 상세하게는, 데이터 파일을 블록체인에 분산하여 저장하는 블록체인 기반의 데이터 저장 장치 및 방법에 관한 것이다.The present invention relates to a block-chain-based data storage apparatus and method, and more particularly, to a block-chain-based data storage apparatus and method for distributing and storing data files in a block chain.
일반적으로, 블록체인(blockchain) 기술은 특정 데이터나 디지털 거래 장부 등을 중앙 집중형 서버가 아닌 다수의 블록체인 노드에 분산 저장하여 공동으로 관리하는 기술을 말한다. 즉, 블록체인 기술은 정보로의 접근을 차단하는 방식이 아닌 정보를 공유하고 분산 저장하는 방식으로 해당 정보의 위·변조를 방지하는 기술이다.Generally, a blockchain technique refers to a technique of distributing and storing specific data or digital transaction books in a plurality of block chain nodes instead of a centralized server. That is, the block-chain technology is a technique for preventing information from being altered by sharing information and distributing the information instead of blocking access to information.
그러나, 비트코인(Bitcoin)이나 이더리움(Ethereum) 등에서 사용되는 기존의 블록체인 기술은, 가상 화폐 거래 시의 해킹을 방지하기 위한 것으로서, 블록체인에 저장되는 데이터의 크기가 2016년 발표된 0.12 버전의 비트코인의 경우 83바이트에 불과하고, 이더리움의 경우에도 64KB에 불과할 정도로 제한적이어서, 대용량 데이터 파일의 저장에 적용될 수 없다는 문제가 있다.However, the existing block chain technology used in Bitcoin or Ethereum is to prevent hacking in the virtual currency transaction, and the size of the data stored in the block chain is 0.12 version There is a problem in that it can not be applied to the storage of a large-capacity data file since it is limited to only 83 bytes in the case of the bit coin and in the case of the etherium is limited to only 64 KB.
또한, 한국 등록특허 제10-1132672호 등에 개시된 바와 같이, 데이터 파일을 단일한 중앙 서버에 저장하여 관리하는 기존 기술들은, 악의적인 공격에 의한 데이터 파일의 위·변조가 용이하고, 저장된 데이터의 손실 발생시 데이터 복구가 어렵다는 문제가 있다. 또한, 이러한 기존 기술들은 중앙 서버가 전체 시스템의 단일 장애 지점(SPOF:Single Point of Failure)에 해당하기 때문에, 데이터 파일을 저장한 중앙 서버에 장애가 발생하면 시스템 전체가 중단되어 데이터 파일의 다운로드나 출력 등이 불가능하다는 문제가 있다.In addition, as disclosed in Korean Patent No. 10-1132672, existing technologies for storing and managing data files in a single central server are not limited to the conventional techniques for easily modifying and modifying data files due to malicious attack, There is a problem that it is difficult to recover the data when it occurs. In addition, since the central server corresponds to a single point of failure (SPOF) of the entire system, if the central server storing the data file fails, the whole system is interrupted and the download or output of the data file And so on.
본 발명이 해결하고자 하는 기술적 과제는, 데이터 파일의 보안성과 무결성을 보장하고 악의적인 공격이나 시스템 장애로 인한 피해를 방지함은 물론, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있는 블록체인 기반의 데이터 저장 장치 및 방법을 제공하는 것이다.SUMMARY OF THE INVENTION It is an object of the present invention to provide an apparatus and method for protecting a data file by ensuring security and integrity of a data file and preventing damages caused by malicious attacks or system failures, And to provide a block-chain-based data storage apparatus and method capable of storing a large-capacity data file in a block chain.
본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치는, 블록체인에 저장하고자 하는 데이터 파일을 저장하고 있는 저장 유닛; 블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 통신 유닛; 및 상기 데이터 파일을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 제어 유닛을 포함하고, 상기 제어 유닛은, 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 데이터 파일 분할부; 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 트랜잭션 생성부; 및 상기 생성된 트랜잭션을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 트랜잭션 송수신부를 포함하고, 상기 트랜잭션 생성부는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킨다.A block-chain-based data storage device according to an embodiment of the present invention includes a storage unit storing a data file to be stored in a block chain; A communication unit for performing wired communication or wireless communication with a block chain node of a block-chain network; And a control unit for transmitting the data file to the block chain node via the communication unit and storing the data file in a block chain, wherein the control unit divides the data file into predetermined data chunk units according to data order Data file partitioning; A transaction generating unit for sequentially generating a transaction including a corresponding data chunk for each data chunk divided in the data file; And a transaction transceiver for transmitting the generated transaction to the block chain node through the communication unit and storing the generated transaction in a block chain, wherein the transaction generating unit is configured to generate the transaction data by dividing the data file into a plurality of data chunks , The transaction identifier of the immediately preceding transaction including the chief data chunk is included in the transaction including the next data chunk following the chunk of the preceding data.
일 실시예에 있어서, 상기 데이터 파일 분할부는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않고, 상기 트랜잭션 생성부는, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성할 수 있다.In one embodiment, the data file division unit does not divide the data file when the size of the data file is not larger than the predetermined size of the data chunk, Can be generated.
일 실시예에 있어서, 상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다.In one embodiment, the transaction generating unit may include a value of 0 as a transaction identifier value of a previous transaction in a transaction including the initial data chunk when the chunk of data divided in the data file is the first data chunk.
일 실시예에 있어서, 상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다.In one embodiment, the transaction generating unit may further include file identification information for identifying the data file in the transaction including the final data chunk when the divided data chunk in the data file is the final data chunk .
일 실시예에 있어서, 상기 제어 유닛은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 트랜잭션 ID 저장부를 더 포함할 수 있다.In one embodiment, the control unit may further include a transaction ID storage unit storing a transaction identifier of the final transaction when a final transaction including a final data chunk of the data file is generated and transmitted.
일 실시예에 있어서, 상기 트랜잭션 송수신부는, 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하고, 상기 트랜잭션 송수신부가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복할 수 있다.In one embodiment, the transaction transceiver transmits a transaction identifier of a final transaction including a final data chunk of the data file to an arbitrary block chain node according to a data file download command of the user, Receiving a transaction corresponding to the transmitted transaction identifier, and if the transaction received by the transaction transmitting and receiving unit includes a transaction identifier of a previous transaction, transmitting the transaction identifier of the immediately preceding transaction to a block-chain node, The process of receiving the transaction corresponding to the transaction identifier of the immediately preceding transaction can be repeated.
일 실시예에 있어서, 상기 제어 유닛은, 상기 트랜잭션 송수신부가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 상기 트랜잭션 송수신부로 전달하는 트랜잭션 데이터 획득부; 및 상기 트랜잭션 데이터 획득부에 의해 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 데이터 파일 생성부를 더 포함할 수 있다.In one embodiment, the control unit obtains the transaction identifier of the immediately preceding transaction and the data chunk in the transaction received by the transaction sending and receiving unit, temporarily stores the obtained data chunk, and stores the transaction identifier of the obtained immediately preceding transaction A transaction data acquiring unit for transferring the transaction data to the transaction transmitting and receiving unit; And a data file generation unit for generating a data file by combining the data chunks temporarily stored by the transaction data acquisition unit.
본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법은, 블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 클라이언트가 데이터 파일을 블록체인에 저장하는 방법으로서, 상기 클라이언트가 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 (a) 단계; 상기 클라이언트가 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 (b) 단계; 및 상기 클라이언트가 상기 생성된 트랜잭션을 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 (c) 단계를 포함하고, 상기 (b) 단계는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키는 단계를 포함할 수 있다.A block chain-based data storage method according to an embodiment of the present invention is a method for storing a data file in a block chain by a client performing wire communication or wireless communication with a block chain node of a block chain network, (A) dividing a data file into predetermined data chunk units according to data order; (B) sequentially generating a transaction including a corresponding data chunk for each data chunk divided by the client in the data file; And (c) causing the client to transmit the generated transaction to the block-chain node to be stored in a block chain, and wherein the step (b) includes the step of, when the data file includes a plurality of data chunks And if so, including the transaction identifier of the immediately preceding transaction including the chunk of the primary data in the transaction including the next chunk of data following the chunk of the primary data.
일 실시예에 있어서, 상기 (a) 단계는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않는 단계를 포함하고, 상기 (b) 단계는, 상기 데이터 파일이 분할되지 않는 경우, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 단계를 포함할 수 있다.In one embodiment, the step (a) may include not dividing the data file if the size of the data file is not larger than a predetermined size of the data chunk, and the step (b) And if the data file is not partitioned, creating a transaction that includes the entire data file.
일 실시예에 있어서, 상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 단계를 포함할 수 있다.In one embodiment, the step (b) includes the step of, when the data chunk divided in the data file is the first data chunk, including a zero value as a transaction identifier value of a previous transaction in the transaction including the initial data chunk . ≪ / RTI >
일 실시예에 있어서, 상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 단계를 포함할 수 있다.In one embodiment, the step (b) may further include, when the divided data chunk in the data file is the final data chunk, further including file identification information for identifying the data file in the transaction including the final data chunk Step < / RTI >
일 실시예에 있어서, 상기 방법은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 클라이언트가 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 (d) 단계를 더 포함할 수 있다.In one embodiment, the method may further comprise the step (d) of: if the client has generated and transmitted a final transaction comprising a final chunk of the data file, storing the transaction identifier of the final transaction have.
일 실시예에 있어서, 상기 방법은, 상기 클라이언트가 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 (e) 단계; 및 상기 클라이언트가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 클라이언트가 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 (f) 단계를 더 포함할 수 있다.In one embodiment, the method further comprises transmitting the transaction identifier of the last transaction, which the client has transmitted including the last data chunk of the data file, to a block-chain node according to the user's data file download command, (E) receiving a transaction corresponding to the transmitted transaction identifier from a chain node; And if the transaction received by the client includes the transaction identifier of the immediately preceding transaction, the client transmits the transaction identifier of the immediately preceding transaction to the arbitrary block chain node and transmits the transaction identifier of the immediately preceding transaction And (f) repeating the process of receiving the corresponding transaction.
일 실시예에 있어서, 상기 (f) 단계는, 상기 클라이언트가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하는 단계를 포함하고, 상기 방법은, 상기 (f) 단계에서 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 (g) 단계를 더 포함할 수 있다.In one embodiment, the step (f) includes: acquiring a transaction identifier of a data chunk and a previous transaction in a transaction received by the client, temporarily storing the obtained data chunk, and acquiring a transaction identifier of the obtained previous transaction (G) combining data chunks stored temporarily in step (f) to generate a data file. ≪ RTI ID = 0.0 > (g) < / RTI >
본 발명에 따른 실시예들은, 상술한 동작 또는 방법을 컴퓨터 시스템을 통해 실행하는 컴퓨터 프로그램으로서 기록매체에 기록되는 컴퓨터 프로그램을 이용하여 구현될 수 있다.The embodiments according to the present invention can be implemented using a computer program recorded on a recording medium as a computer program for executing the above-described operations or methods through a computer system.
본 발명에 따르면, 데이터의 위조 및 변조가 불가한 블록체인 기술을 이용하여 사용자의 데이터 파일을 다수의 노드에 분산 저장하여 관리함으로써, 데이터 파일의 보안성과 무결성을 보장하고, 악의적인 공격이나 시스템 장애로 인한 피해를 방지할 수 있다.According to the present invention, a data file of a user is distributedly stored and managed in a plurality of nodes by using a block chain technique in which data can not be falsified or tampered, thereby ensuring the security and integrity of the data file, It is possible to prevent damage caused by
또한, 저장 대상 데이터 파일을 데이터 다수의 데이터 청크들로 분할하고, 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션들을 순차적으로 생성하여 블록체인 노드로 전송함으로써, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있으며, 데이터 저장 시스템 구축 비용을 절감할 수 있다.In addition, by dividing the data file to be stored into a plurality of data chunks, sequentially generating transactions including the corresponding data chunks for each data chunk, and transmitting them to the block chain node, the existing block chain technology The data file of a large capacity can be stored in the block chain and the cost of constructing the data storage system can be reduced.
나아가, 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자라면, 본 발명에 따른 다양한 실시예들이 상기 언급되지 않은 여러 기술적 과제들을 해결할 수 있음을 이하의 설명으로부터 자명하게 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various embodiments of the present invention can be accomplished without departing from the spirit and scope of the present invention.
도 1은 본 발명이 적용되는 블록체인 네트워크 환경의 일례를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치를 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따라 생성되는 데이터 청크 저장용 트랜잭션의 데이터 포맷을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 저장 프로세스를 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 다운로드 프로세스를 나타낸 흐름도이다.1 is a diagram illustrating an example of a block-chain network environment to which the present invention is applied.
2 is a block diagram illustrating a block-chain-based data storage device according to an embodiment of the present invention.
3 illustrates a data format of a transaction for storing data chunks generated according to an embodiment of the present invention.
4 is a flowchart illustrating a data file storing process of a block-chain-based data storing method according to an embodiment of the present invention.
5 is a flowchart illustrating a data file download process of a block chain-based data storage method according to an embodiment of the present invention.
이하, 본 발명의 기술적 과제에 대한 해결 방안을 명확화하기 위해 첨부도면을 참조하여 본 발명의 실시예들을 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서 관련 공지기술에 관한 설명이 오히려 본 발명의 요지를 불명료하게 하는 경우 그에 관한 설명은 생략하기로 한다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 설계자, 제조자 등의 의도 또는 관례 등에 따라 달라질 수 있을 것이다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings in order to clarify solutions for technical problems of the present invention. In the following description of the present invention, however, the description of related arts will be omitted if the gist of the present invention becomes obscure. In addition, the terms described below are defined in consideration of the functions of the present invention, and may be changed depending on the intention or custom of the designer, the manufacturer, and the like. Therefore, the definition should be based on the contents throughout this specification.
도 1에는 본 발명이 적용되는 블록체인 네트워크 환경의 일례가 도시되어 있다.FIG. 1 shows an example of a block-chain network environment to which the present invention is applied.
도 1에 도시된 바와 같이, 블록체인 네트워크는 사용자의 클라이언트(10)와 다수의 블록체인 노드(20)로 구성될 수 있다. 사용자의 클라이언트(10)는 데이터 파일의 전송과 저장 요청, 저장된 파일의 삭제나 다운로드 요청 등을 수행할 수 있다. 이러한 클라이언트(10)는 서버(server)나 PC(Personal Computer) 등과 같은 고정 단말로 구성되거나, 핸드폰 등과 같은 모바일 단말로 구성될 수 있다.As shown in FIG. 1, a block-chain network may consist of a user's
블록체인 노드(20)는 블록체인에 데이터 파일을 저장하는데 사용되는 트랜잭션(transaction)의 승인, 블록체인을 이용한 트랜잭션 내역 보관, 다른 노드들과의 주기적인 블록 분산 합의 등을 수행할 수 있다. 이러한 블록체인 노드(20)는 서버나 PC 등과 같은 컴퓨터 시스템으로 구성될 수 있으며, 비트코인(Bitcoin)이나 이더리움(Ethereum) 등과 같은 블록체인 프로그램이 설치되어 실행될 수 있다. 또한, 다수의 블록체인 노드(20)를 포함하는 블록체인 노드 그룹은 누구나 접근할 수 있는 퍼블릭 체인(public chain)으로 구성되거나, 특정 사용자들의 클라이언트만 접근할 수 있는 프라이빗 체인(private chain)으로 구성될 수 있다.The
본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는, 이러한 블록체인 네트워크 환경에 적용되어, 블록체인 노드들과 유선 통신 또는 무선 통신을 수행하며 블록체인 노드(20)의 블록체인에 사용자의 데이터 파일을 분산 저장할 수 있다. 이를 위해, 본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는 도 1과 같이 클라이언트(10)에 포함되는 장치로 구성될 수 있다.The block-chain-based
실시예에 따라, 본 발명에 따른 블록체인 기반의 데이터 저장 장치(100)는 클라이언트(10)와 연동하는 별개의 장치로 구성될 수도 있다. 이 경우, 데이터 저장 장치(100)는 통신 인터페이스 또는 I/O 인터페이스를 통해 클라이언트(10)와 연결되어 클라이언트(10)의 입·출력 유닛이나 통신 유닛을 사용하도록 구성될 수 있다.According to an embodiment, the block-chain-based
도 2에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치(100)가 블록도로 도시되어 있다.FIG. 2 is a block diagram of a block-based
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 장치(100)는 저장 유닛(110) 및 제어 유닛(120)을 포함하며, 실시예에 따라 입력 유닛(130), 출력 유닛(140), 통신 유닛(150) 등을 더 포함할 수 있다.2, a block-chain-based
저장 유닛(110)은, 블록체인에 저장하고자 하는 사용자의 데이터 파일을 저장하고 있다. 아래에서 다시 설명하겠지만, 저장 유닛(110)은 미리 결정된 데이터 청크의 크기 값 등을 더 저장할 수 있다. 이러한 저장 유닛(120)은 데이터를 기록하고 삭제할 수 있는 다양한 종류와 형태의 저장 매체로 구성될 수 있다. 예컨대, 저장 유닛(120)은 RAM, ROM, EEPROM, 레지스터, 플래시 메모리, 하드디스크, 광기록 매체 또는 자기기록 매체 등으로 구성될 수 있다.The
또한, 저장 유닛(110)은 제어 유닛(120)의 접근이 가능하도록, 예컨대 데이터 버스 등을 통해 제어 유닛(120)과 전기적으로 연결될 수 있다. 이러한 연결을 통해, 저장 유닛(110)은 제어 유닛(120)이 수행하는 각종 제어 로직을 포함하는 프로그램 및/또는 제어 로직이 실행될 때 발생하는 데이터를, 저장 및/또는 갱신 및/또는 소거 및/또는 전송할 수 있다. 이러한 저장 유닛(110)은 논리적으로 2개 이상으로 분할되어, 그 일부 또는 전부가 제어 유닛(120)에 포함되도록 구성될 수도 있다.In addition, the
입력 유닛(130)은, 사용자의 명령을 입력받아 제어 유닛(120)으로 전달한다. 이를 위해, 입력 유닛(130)은 제어 유닛(120)과 전기적으로 연결될 수 있다. 입력 유닛(130)은 사용자의 명령을 입력받을 수 있는 다양한 종류와 형태의 장치로 구성될 수 있다. 예컨대, 입력 유닛(130)은 키보드, 마우스, 또는 터치패드 등으로 구성될 수 있다.The
출력 유닛(140)은, 제어 유닛(120)의 제어 신호에 따라 UI(User Interface) 등과 같은 시각적 정보를 출력한다. 출력 유닛(130)은 제어 유닛(120)의 제어 신호를 수신할 수 있도록 제어 유닛(120)과 전기적으로 연결될 수 있다. 출력 유닛(130)은 시각적 정보를 출력할 수 있는 다양한 종류와 형태의 장치로 구성될 수 있다. 예컨대, 출력 유닛(140)은 이미지를 표시하는 모니터나 터치스크린 등의 디스플레이 장치로 구성될 수 있다.The
통신 유닛(150)은, 제어 유닛(120)의 제어 신호에 따라 블록체인 네트워크를 구성하는 블록체인 노드들과 유선 통신 또는 무선 통신을 수행한다. 통신 유닛(150)은 제어 유닛(120)의 제어 신호와 데이터를 전달받아 블록체인 노드(20)로 전송하거나, 블록체인 노드(20)로부터 수신된 데이터를 제어 유닛(120)에 전달할 수 있도록 제어 유닛(120)과 전기적으로 연결될 수 있다. 통신 유닛(140)은 외부 통신 장치와 데이터 통신하는 다양한 종류와 형태의 통신 모듈로 구성될 수 있다. 예컨대, 통신 유닛(150)은 통신 회선이 접속되는 모뎀(MODEM), AP(Access Point)를 통해 무선 통신을 수행하는 WiFi 통신 모듈, 또는 기지국을 통해 무선 통신을 수행하는 LTE(Long Term Evolution) 통신 모듈 등으로 구성될 수 있다.The
한편, 제어 유닛(120)은, 저장 유닛(110)에 저장된 데이터 파일을 통신 유닛(150)을 통해 블록체인 노드(20)로 전송하여 블록체인에 저장되도록 한다. 이를 위해, 제어 유닛(120)은 데이터 파일 분할부(122), 트랜잭션 생성부(123) 및 트랜잭션 송수신부(125)를 포함하며, 실시예에 따라 사용자 명령 수신부(121), 트랜잭션 ID 저장부(124), 트랜잭션 데이터 획득부(126), 데이터 파일 생성부(127) 등을 더 포함할 수 있다.On the other hand, the
상기 데이터 파일 분할부(122)는, 저장 유닛(110)에 저장된 데이터 파일을 읽어들여 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할한다. 예컨대, 사용자 명령 수신부(121)가 저장 유닛(110)에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 저장 명령을 입력받으면, 데이터 파일 분할부(122)는 저장 유닛(110)에서 해당 데이터 파일을 읽어들여 미리 결정된 데이터 청크 단위로 분할할 수 있다.The data file
예컨대, 미리 결정된 데이터 청크의 크기가 50KB이고, 저장 대상 데이터 파일의 크기가 200KB인 경우, 분할되는 데이터 청크의 갯수는 4개로 결정되며, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 데이터 순서에 따라 4개의 데이터 청크로 분할할 수 있다. 반면, 미리 결정된 데이터 청크의 크기가 40KB이고, 저장 대상 데이터 파일의 크기가 200KB인 경우, 분할되는 데이터 청크의 갯수는 5개로 결정되며, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 데이터 순서에 따라 5개의 데이터 청크로 분할할 수 있다. 이 경우, 데이터 파일 분할 단위가 되는 데이터 청크의 크기는 저장 유닛(110)에 미리 저장될 수 있다.For example, when the size of the predetermined data chunk is 50 KB and the size of the data file to be stored is 200 KB, the number of data chunks to be divided is determined to be four, and the data file dividing
일 실시예에 있어서, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 분할하기 전에 암호화 또는 압축하거나, 압축하여 암호화할 수도 있다.In one embodiment, the data
상기 트랜잭션 생성부(123)는, 저장 대상 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성한다. 저장 대상 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 트랜잭션 생성부(123)는 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킬 수 있다.The
또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 최초 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다.In addition, when the divided data chunk in the storage object data file is the first data chunk, the
또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 최종 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다. 이 경우, 파일 식별 정보는 저장 대상 데이터 파일의 파일명 정보와 파일명 길이 정보를 포함할 수 있다.The
트랜잭션 송수신부(125)는 트랜잭션 생성부(123)에 의해 순차적으로 생성되는 트랜잭션을 통신 유닛(150)을 통해 블록체인 노드(20)드로 전송하여 블록체인에 저장되도록 한다.The
한편, 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 데이터 파일 분할부(122)는 해당 데이터 파일을 분할하지 않고 트랜잭션 생성부(123)로 전달한다. 그러면, 트랜잭션 생성부(123)는 해당 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성하고, 트랜잭션 송수신부(125)는 생성된 트랜잭션을 블록체인 노드(20)로 전송한다.On the other hand, if the size of the data file to be stored is not larger than the predetermined size of the data chunk, the data
도 3에는 본 발명의 일 실시예에 따라 생성되는 데이터 청크 저장용 트랜잭션의 데이터 포맷이 도시되어 있다.FIG. 3 illustrates a data format of a transaction for storing data chunks generated according to an embodiment of the present invention.
도 3에 도시된 바와 같이, 트랜잭션 생성부(123)에 의해 생성되는 데이터 청크 저장용 트랜잭션(300)은 헤더 필드(310)와 데이터 필드(320)를 가질 수 있다.3, the
블록체인에 저장하고자 하는 데이터 파일에서 분할된 데이터 청크는, 트랜잭션(300)의 데이터 필드(320)에 포함된다.The data chunks partitioned in the data file to be stored in the block chain are included in the data field 320 of the
트랜잭션(300)의 헤더 필드(310)는 파일명 길이 필드(311), 청크 수 필드(312), 청크 크기 필드(313), 파일명 필드(314) 및 직전 트랜잭션 ID 필드(315) 등을 포함할 수 있다.The header field 310 of the
파일명 길이 필드(311)는, 저장 대상 데이터 파일을 식별하는 파일명의 길이 정보를 포함한다. 파일명 길이 필드(311)는 해당 트랜잭션이 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 경우에만 파일명 길이 정보를 포함하고, 해당 트랜잭션이 최종 데이터 청크 이외의 데이터 청크, 예컨대 최초 데이터 청크나 중간 데이터 청크를 포함하는 경우에는 ‘0’ 값을 포함하도록 구성될 수 있다. 아래에서 다시 설명하겠지만, 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 파일명 길이 필드(311)에 포함된 파일명 길이 정보는 트랜잭션의 헤더에서 파일명 정보를 발견하는 참조값이 된다.The file
청크 수 필드(312)는, 저장 대상 데이터 파일이 미리 결정된 데이터 청크 단위로 분할될 경우, 분할되어 나오는 데이터 청크들의 갯수 정보를 포함한다. 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 작아서 분할이 필요없는 경우에는 청크 수 필드(312)는 ‘1’ 값을 포함하도록 구성될 수 있다.The number of
청크 크기 필드(313)는, 분할 단위가 되는 데이터 청크의 크기 정보를 포함한다. 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 작아서 청크 수 필드(312)에 1 값이 포함되는 경우, 청크 크기 필드(313)의 정보는 생략될 수 있다.The
파일명 필드(314)는 저장 대상 데이터 파일을 식별하는 파일명 정보를 포함한다. 이 경우, 파일명 정보는 파일명과 파일명의 확장자를 포함하는 정보로 구성될 수 있다. 파일명 필드(314)는, 저장 대상 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 최종 데이터 청크를 포함하는 최종 트랜잭션에서만 파일명 정보를 포함하도록 구성될 수 있다. 앞서 언급한 바와 같이, 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서, 파일명 필드(314)의 파일명 정보는 파일명 길이 필드(311)의 파일명 길이 정보를 참조값으로 하여 발견될 수 있다. 이러한 파일명 정보를 통해, 다운로드 되는 데이터 파일의 파일명이 지정될 수 있다.The
직전 트랜잭션 ID 필드(315)는, 데이터 필드(320)에 포함되는 데이터 청크 직전에 분할된 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자 정보를 포함한다. 아래에서 다시 설명하겠지만, 직전 트랜잭션의 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다운로드 받는 과정에서, 선순위 데이터 청크를 불러오는 용도로 사용될 수 있다. 데이터 순서에 따라 분할된 데이터 청크들 중 최초 데이터 청크를 포함하는 최초 트랜잭션의 경우에는 직전 트랜잭션이 존재하지 않으므로, 직전 트랜잭션 ID 필드(315)는 ‘0’ 값을 포함하도록 구성될 수 있다.The immediately preceding
예컨대, 저장 대상 데이터 파일이 데이터 순서에 따라 3개의 데이터 청크로 분할되는 경우, 최초 데이터 청크를 포함하는 제1 트랜잭션의 직전 트랜잭션 ID 필드에는 ‘0x000…’(32byte)이 포함되고, 두 번째 데이터 청크를 포함하는 제2 트랜잭션의 직전 트랜잭션 ID 필드에는 제1 트랜잭션의 트랜잭션 식별자가 포함되고, 최종 데이터 청크를 포함하는 제3 트랜잭션의 직전 트랜잭션 ID 필드에는 제2 트랜잭션의 트랜잭션 식별자가 포함될 수 있다.For example, when the data file to be stored is divided into three data chunks according to the data order, '0x000 ...' is stored in the immediately preceding transaction ID field of the first transaction including the first data chunk. (32 bytes), the immediately preceding transaction ID field of the second transaction including the second data chunk contains the transaction identifier of the first transaction, and the immediately preceding transaction ID field of the third transaction including the final data chunk contains 2 transaction identifier of the transaction.
도 3에는 도시되지 않았으나, 트랜잭션 생성부(123)에서 생성되는 모든 트랜잭션들은 기본적으로 자신의 트랜잭션 식별자를 포함할 수 있다.Although not shown in FIG. 3, all the transactions generated in the
다시 도 2를 참조하면, 트랜잭션 ID 저장부(124)는 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 또는 저장 대상 데이터 파일의 크기가 데이터 청크의 크기보다 작아서 저장 대상 데이터 파일 전체를 포함하는 트랜잭션이 생성되어 전송된 경우, 해당 트랜잭션의 트랜잭션 식별자를 자체 저장하거나 저장 유닛(110)에 저장할 수 있다. 이와 같이 저장된 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 사용될 수 있다.Referring again to FIG. 2, the transaction
예컨대, 사용자 명령 수신부(121)가 블록체인에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 다운로드 명령을 입력받으면, 트랜잭션 송수신부(125)는 다운로드 대상 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 트랜잭션 ID 저장부(124) 또는 저장 유닛(110)에서 독출하여 임의의 블록체인 노드(20)로 전송하고, 해당 블록체인 노드(20)로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신할 수 있다.For example, after the user
또한, 트랜잭션 송수신부(125)는, 수신된 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드(20)로 전송하여 해당 블록체인 노드(20)로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신하는 과정을 반복하여, 다운로드 대상 데이터 파일의 데이터 청크를 포함한 모든 트랜잭션들을 수신할 수 있다.If the received transaction includes the transaction identifier of the immediately preceding transaction, the
이 경우, 트랜잭션 데이터 획득부(126)는 상기 트랜잭션 송수신부(125)가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다.In this case, the transaction
예컨대, 트랜잭션 데이터 획득부(126)는 수신된 트랜잭션의 청크 수 필드 값을 확인하여 해당 값이 1인 경우, 해당 트랜잭션의 데이터 필드에 포함된 데이터를 획득하여 다운로드 대상 데이터 파일로서 저장 유닛(110)에 저장할 수 있다.For example, the transaction
반면, 트랜잭션 데이터 획득부(126)는 수신된 트랜잭션의 청크 수 필드 값을 확인하여 해당 값이 1이 아닌 경우, 해당 트랜잭션의 데이터 필드에 포함된 데이터를 획득하여 다운로드 대상 데이터 파일의 데이터 청크로서 저장 유닛(110)에 임시 저장하고, 직전 트랜잭션 ID 필드에 포함된 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 트랜잭션 송수신부(125)로 전달할 수 있다. 상기 트랜잭션 데이터 획득부(126)는 트랜잭션 송수신부(125)를 통해 수신되는 트랜잭션의 직전 트랜잭션 ID 필드 값이 ‘0x000…’(32byte)으로 나올 때까지 상술한 과정을 반복한다.On the other hand, if the value of the chunk number field of the received transaction is not 1, the transaction
데이터 파일 생성부(127)는, 다운로드 대상 데이터 파일의 데이터 청크들을 포함하는 모든 트랜잭션들이 수신된 후, 상기 트랜잭션 데이터 획득부(126)에 의해 임시 저장된 데이터 청크들을 해당 트랜잭션들이 수신된 순서의 역순으로 결합함으로써 완전한 데이터 파일을 생성할 수 있다. 즉, 최초 수신된 트랜잭션에 포함된 데이터 청크가 데이터 파일의 최종 데이터 청크가 되고, 최종 수신된 트랜잭션에 포함된 데이터 청크가 데이터 파일의 최초 데이터 청크가 된다. 데이터 청크들이 결합되어 생성되는 데이터 파일의 파일명은, 최초 수신된 트랜잭션의 파일명 필드에 포함된 파일명 정보를 기초로 정해진다. 이와 같이, 생성된 데이터 파일은 저장 유닛(110)에 저장될 수 있다.After all the transactions including the data chunks of the download object data file are received, the data file
이러한 제어 유닛(120)은 상술한 제어 로직들을 실행하기 위해 당 업계에 알려진 프로세서, ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로, 레지스터, 통신 모뎀, 데이터 처리 장치 등을 선택적으로 포함할 수 있다. 또한, 상기 제어 로직들이 소프트웨어로 구현될 때, 제어 유닛(120)은 프로그램 모듈의 집합으로 구현될 수 있다. 또한, 프로그램 모듈들은 메모리에 저장되고, 프로세서에 의해 실행될 수 있다. 상기 메모리는 디바이스의 종류에 상관없이 정보가 저장되는 디바이스를 총칭하는 것으로서 특정 메모리 디바이스를 지칭하는 것은 아니다. 상기 메모리는 제어 유닛(120)을 구성하는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 컴퓨터 부품으로 구성되어 프로세서와 연결될 수 있다. 또한, 상기 메모리는 본 발명의 저장 유닛(110)에 포함될 수 있다.This
즉, 제어 유닛(120)의 구성요소들(121 내지 127)은 제어 유닛(120)에 의해 실행되는 프로그램 모듈들로 구성될 수 있다. 이러한 프로그램 모듈들은 저장 유닛(110)에 미리 저장된 후 제어 유닛(120)에 의해 실행될 수 있다. 또한, 제어 유닛(120)에 포함된 구성요소들(121 내지 127)은 서로 통합되거나, 2개 이상의 서브 구성요소로 분리될 수 있다. 또한, 하나의 구성요소에 의해 생성된 데이터는 별도의 언급이 없더라도 저장 유닛(110)에 저장된 후 다른 구성요소에 의해 사용될 수 있다. That is, the
도 4에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 저장 프로세스가 흐름도로 도시되어 있다. 이하, 도 4를 참조하여 데이터 저장 장치(100)의 세부 동작들을 시계열적으로 설명한다.FIG. 4 is a flowchart illustrating a data file storing process of a block-chain-based data storing method according to an embodiment of the present invention. Hereinafter, detailed operations of the
도 4에 도시된 바와 같이, 상기 데이터 저장 장치(100)의 제어 유닛(120)은 저장 유닛(110)에 저장된 데이터 파일을 사용자의 저장 명령에 따라 블록체인 노드(20)로 전송하여 블록체인에 저장되도록 한다.4, the
우선, 제어 유닛(120)의 사용자 명령 수신부(121)는, 저장 유닛(110)에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 데이터 파일 저장 명령을 입력받을 수 있다(S400).First, the user
그 다음, 제어 유닛(120)의 데이터 파일 분할부(122)는, 사용자의 데이터 파일 저장 명령에 따라, 저장 유닛(110)에 저장된 데이터 파일을 읽어들여 해당 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할한다(S402, S404). 이 경우, 데이터 파일 분할부(122)는 저장 대상 데이터 파일을 분할하기 전에 암호화 또는 압축하거나, 암호화하여 압축할 수도 있다.Next, the data
그 다음, 제어 유닛(120)의 트랜잭션 생성부(123)는, 저장 대상 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성한다(S406). 이 경우, 트랜잭션 생성부(123)는 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킨다.Then, the
예컨대, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 첫 번째로 분할된 최초 데이터 청크인 경우(S408), 상기 최초 데이터 청크를 포함하는 최초 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시킬 수 있다(S410).For example, when the divided data chunks in the storage object data file are the first chunks of the first divided data chunks (S408), the
반면, 트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크가 아닌 경우(S408), 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시킬 수 있다(S412). 예컨대, 트랜잭션 생성부(123)는 최초 데이터 청크를 포함한 제1 트랜잭션의 트랜잭션 식별자를, 두 번째 데이터 청크를 포함하는 제2 트랜잭션에 포함시킬 수 있다.On the other hand, when the divided data chunk in the storage object data file is not the first data chunk (S408), the
한편, 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우(S402), 데이터 파일 분할부(122)는 해당 데이터 파일을 분할하지 않고 트랜잭션 생성부(123)로 전달하고, 트랜잭션 생성부(123)는 해당 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성할 수 있다(S418).On the other hand, if the size of the data file to be stored is not larger than the predetermined size of the data chunk (S402), the data
트랜잭션 생성부(123)는 저장 대상 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우(S414), 상기 최종 데이터 청크를 포함하는 최종 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 더 포함시킬 수 있다(S420). 또한, 트랜잭션 생성부(123)는 저장 대상 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않아서 데이터 파일 전체를 포함하는 단일의 트랜잭션을 생성하는 경우에도(S418), 해당 트랜잭션에 저장 대상 데이터 파일을 식별하는 파일 식별 정보를 포함시킬 수 있다(S420). 상기 파일 식별 정보는 저장 대상 데이터 파일의 파일명 정보와 파일명 길이 정보를 포함할 수 있다.If the divided data chunk in the storage object data file is the final data chunk (S414), the
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는 트랜잭션 생성부(123)에 의해 생성되는 트랜잭션을 통신 유닛(150)을 통해 블록체인 노드(20)드로 전송하여 블록체인에 저장되도록 한다(S416, S422).The transaction transmitting / receiving
이 경우, 제어 유닛(120)의 트랜잭션 ID 저장부(124)는, 저장 대상 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 또는 저장 대상 데이터 파일 전체를 포함하는 트랜잭션이 생성되어 전송된 경우, 해당 트랜잭션의 트랜잭션 식별자를 자체 저장하거나 저장 유닛(110)에 저장한다(S424).In this case, the transaction
이와 같이 저장된 트랜잭션 식별자는 블록체인에 저장된 데이터 파일을 다시 다운로드 받는 과정에서 사용될 수 있다.The stored transaction identifier can be used in the process of downloading the data file stored in the block chain again.
도 5에는 본 발명의 일 실시예에 따른 블록체인 기반의 데이터 저장 방법의 데이터 파일 다운로드 프로세스가 흐름도로 도시되어 있다. 이하, 도 5를 참조하여, 데이터 저장 장치(100)의 세부 동작들을 시계열적으로 설명한다.FIG. 5 is a flowchart illustrating a data file download process of a block-chain-based data storage method according to an embodiment of the present invention. Hereinafter, with reference to FIG. 5, detailed operations of the
도 5에 도시된 바와 같이, 우선 제어 유닛(120)의 사용자 명령 수신부(121)는, 블록체인에 저장된 데이터 파일들을 표시한 파일 리스트를 출력 유닛(140)을 통해 출력한 후, 입력 유닛(130)을 통해 특정 데이터 파일에 대한 사용자의 데이터 파일 다운로드 명령을 입력받을 수 있다(S500).5, the user
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는, 다운로드 대상 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 트랜잭션 ID 저장부(124) 또는 저장 유닛(110)에서 독출하여 임의의 블록체인 노드(20)로 전송함하고(S502), 해당 블록체인 노드(20)로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신할 수 있다(S504).Then, the transaction transmitting / receiving
그 다음, 제어 유닛(120)의 트랜잭션 송수신부(125)는, 수신된 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드(20)로 전송하여 해당 블록체인 노드(20)로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신하는 과정을 반복하여, 다운로드 대상 데이터 파일의 데이터 청크를 포함한 모든 트랜잭션들을 수신할 수 있다(S506 내지 S516).Then, if the received transaction includes the transaction identifier of the immediately preceding transaction, the
이 경우, 제어 유닛(120)의 트랜잭션 데이터 획득부(126)는 상기 트랜잭션 송수신부(125)가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다.In this case, the transaction
즉, 트랜잭션 데이터 획득부(126)는, 수신된 트랜잭션의 청크 수 필드 값이 1인 경우(S506), 해당 트랜잭션의 데이터 필드에 포함된 데이터를 다운로드 대상 데이터 파일로서 획득하여, 저장 유닛(110)에 저장할 수 있다(S520).That is, when the chunk number field value of the received transaction is 1 (S506), the transaction
반면, 트랜잭션 데이터 획득부(126)는, 수신된 트랜잭션의 청크 수 필드 값이 1이 아닌 경우(S506), 해당 트랜잭션의 데이터 필드에 포함된 데이터 청크와, 해당 트랜잭션의 직전 트랜잭션 ID 필드에 포함된 직전 트랜잭션의 트랜잭션 식별자를 획득하여(S510), 획득된 데이터 청크를 저장 유닛(110)에 임시 저장하는 한편, 획득된 트랜잭션 식별자를 트랜잭션 송수신부(125)로 전달할 수 있다(S512).On the other hand, if the value of the chunk number field of the received transaction is not 1 (S506), the transaction
트랜잭션 송수신부(125)는, 전달된 트랜잭션 식별자를 블록체인 노드(20)로 전송하여 해당 트랜잭션 식별자에 대응하는 트랜잭션을 더 수신할 수 있다(S514, S516).The
상기 트랜잭션 송수신부(125)와 트랜잭션 데이터 획득부(126)는, 현재 수신된 트랜잭션의 직전 트랜잭션 ID 필드 값이 ‘0x000…’(32byte)으로 나올 때까지 상술한 과정을 반복한다(S514).The transaction transmission /
제어 유닛(120)의 데이터 파일 생성부(127)는, 다운로드 대상 데이터 파일의 데이터 청크들을 포함하는 모든 트랜잭션들이 수신된 후, 상기 트랜잭션 데이터 획득부(126)에 의해 임시 저장된 데이터 청크들을 해당 트랜잭션들이 수신된 순서의 역순으로 결합함으로써 완전한 데이터 파일을 생성할 수 있다(S518). 데이터 청크들이 결합되어 생성되는 데이터 파일의 파일명은, 최초 수신된 트랜잭션의 파일명 필드에 포함된 파일명 정보를 기초로 정해진다.The data file
데이터 파일 생성부(127)는, 이와 같이 생성된 데이터 파일을 저장 유닛(110)에 저장할 수 있다(S520).The data file
한편, 본 발명에 따른 실시예들은 컴퓨터 시스템과 이러한 컴퓨터 시스템을 구동하는 컴퓨터 프로그램으로 구현될 수 있다. 본 발명의 실시예들이 컴퓨터 프로그램으로 구현되는 경우, 본 발명의 구성요소들은 해당 컴퓨터 시스템을 통해 해당 동작이나 작업을 실행하는 프로그램 세그먼트들이다. 이러한 컴퓨터 프로그램 내지 프로그램 세그먼트들은 컴퓨터로 판독 가능한 다양한 기록매체에 저장될 수 있다. 컴퓨터로 판독 가능한 기록매체에는 컴퓨터 시스템이 읽어들일 수 있는 데이터를 기록하는 모든 종류의 매체가 포함된다. 예컨대, 컴퓨터로 판독 가능한 기록매체에는 ROM, RAM, EEPROM, 레지스터, 플래시 메모리, CD-ROM, 자기 테이프, 하드 디스크, 플로피디스크, 또는 광 데이터 기록장치 등이 포함될 수 있다. 또한, 이러한 기록매체는 다양한 네트워크로 연결된 컴퓨터 시스템들에 분산 배치되어 프로그램 코드들을 분산 방식으로 저장하거나 실행시킬 수 있다.Meanwhile, the embodiments according to the present invention can be implemented by a computer system and a computer program for driving such a computer system. When embodiments of the present invention are implemented as a computer program, the elements of the present invention are program segments that execute corresponding operations or tasks through the computer system. Such computer programs and program segments may be stored in various computer-readable media. A computer-readable recording medium includes all kinds of media for recording data that can be read by a computer system. For example, a computer-readable recording medium may include a ROM, a RAM, an EEPROM, a register, a flash memory, a CD-ROM, a magnetic tape, a hard disk, a floppy disk, In addition, the recording medium may be distributed to computer systems connected by various networks, and may store and execute program codes in a distributed manner.
상술한 바와 같이, 본 발명에 따르면, 데이터의 위조 및 변조가 불가한 블록체인 기술을 이용하여 사용자의 데이터 파일을 다수의 노드에 분산 저장하여 관리함으로써, 데이터 파일의 보안성과 무결성을 보장하고, 악의적인 공격이나 시스템 장애로 인한 피해를 방지할 수 있다. 또한, 저장 대상 데이터 파일을 데이터 다수의 데이터 청크들로 분할하고, 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션들을 순차적으로 생성하여 블록체인 노드로 전송함으로써, 데이터 저장 용량이 제한적인 기존의 블록체인 기술을 그대로 이용하는 경우에도 대용량의 데이터 파일을 블록체인에 저장할 수 있으며, 데이터 저장 시스템 구축 비용을 절감할 수 있다. 나아가, 본 발명에 따른 실시예들은, 당해 기술 분야는 물론 관련 기술 분야에서 본 명세서에 언급된 내용 이외의 다른 여러 기술적 과제들을 해결할 수 있음은 물론이다.As described above, according to the present invention, security and integrity of a data file can be guaranteed by distributing and managing a user's data file in a plurality of nodes by using a block chain technique in which data can not be falsified and modulated, It is possible to prevent damage caused by an attack or system failure. In addition, by dividing the data file to be stored into a plurality of data chunks, sequentially generating transactions including the corresponding data chunks for each data chunk, and transmitting them to the block chain node, the existing block chain technology The data file of a large capacity can be stored in the block chain and the cost of constructing the data storage system can be reduced. Furthermore, it should be understood that the embodiments according to the present invention can solve various technical problems other than those mentioned in the specification in the related technical field as well as the related art.
본 발명의 다양한 실시예들을 설명함에 있어서, '~부' 또는 '~유닛'이라고 명명된 구성 요소들은 물리적으로 구분되는 요소들이라고 하기보다 기능적으로 구분되는 요소들로 이해되어야 한다. 따라서 각각의 구성요소는 다른 구성요소와 선택적으로 통합되거나 각각의 구성요소가 제어 로직(들)의 효율적인 실행을 위해 서브 구성요소들로 분할될 수 있다. 구성요소들이 통합 또는 분할되더라도 기능의 동일성이 인정될 수 있다면 통합 또는 분할된 구성요소들도 본 발명의 범위 내에 있다고 해석되어야 함은 당업자에게 자명하다.In describing the various embodiments of the present invention, components labeled 'to' or 'unit' should be understood to be functionally distinct elements rather than physically distinct elements. Thus, each component may be selectively integrated with another component, or each component may be divided into sub-components for efficient execution of the control logic (s). It will be apparent to those skilled in the art that, even if the components are integrated or partitioned, if the identity of the functions can be recognized, integrated or divided components are also to be construed as being within the scope of the present invention.
지금까지 본 발명에 대해 구체적인 실시예들을 참고하여 설명하였다. 그러나 당업자라면 본 발명의 기술적 범위에서 다양한 변형 실시예들이 구현될 수 있음을 명확하게 이해할 수 있을 것이다. 그러므로 앞서 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 할 것이다. 즉, 본 발명의 진정한 기술적 사상의 범위는 청구범위에 나타나 있으며, 그와 균등범위 내에 있는 모든 차이점은 본 발명에 포함되는 것으로 해석되어야 할 것이다.The present invention has been described with reference to specific embodiments. It will be apparent, however, to one skilled in the art that various modifications may be practiced within the technical scope of the invention. Therefore, the above-described embodiments should be considered from an illustrative point of view, not from a restrictive viewpoint. That is, the scope of the true technical idea of the present invention is shown in the claims, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.
100 : 데이터 저장 장치 110 : 저장 유닛
120 : 제어 유닛 121 : 사용자 명령 수신부
122 : 데이터 파일 분할부 123 : 트랜잭션 생성부
124 : 트랜잭션 ID 저장부 125 : 트랜잭션 송수신부
126 : 트랜잭션 데이터 획득부 127 : 데이터 파일 생성부
130 : 입력 유닛 140 : 출력 유닛
150 : 통신 유닛100: data storage device 110: storage unit
120: control unit 121: user command receiver
122: Data file partitioning unit 123: Transaction generating unit
124: Transaction ID storage unit 125: Transaction Transmission /
126: Transaction data acquisition unit 127: Data file generation unit
130: input unit 140: output unit
150: communication unit
Claims (15)
블록체인 네트워크의 블록체인 노드와 유선 통신 또는 무선 통신을 수행하는 통신 유닛; 및
상기 데이터 파일을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 제어 유닛을 포함하고,
상기 제어 유닛은,
상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 데이터 파일 분할부;
상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 트랜잭션 생성부; 및
상기 생성된 트랜잭션을 상기 통신 유닛을 통해 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 트랜잭션 송수신부를 포함하고,
상기 트랜잭션 생성부는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키는 블록체인 기반의 데이터 저장 장치.A storage unit storing a data file to be stored in a block chain;
A communication unit for performing wired communication or wireless communication with a block chain node of a block-chain network; And
And a control unit for transmitting the data file to the block-chain node through the communication unit and storing the data file in a block chain,
Wherein the control unit comprises:
A data file dividing unit dividing the data file into predetermined data chunk units according to a data order;
A transaction generating unit for sequentially generating a transaction including a corresponding data chunk for each data chunk divided in the data file; And
And a transaction transceiver for transmitting the generated transaction to the block chain node through the communication unit and storing the transaction in a block chain,
Wherein the transaction generating unit includes a transaction identifier of a previous transaction including a chunk of the primary data in a transaction including a chronological data chunk following the chunk of the primary data when the data file is divided into a plurality of data chunks in accordance with the data order Block chain based data storage device.
상기 데이터 파일 분할부는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않고,
상기 트랜잭션 생성부는, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 1,
Wherein the data file dividing unit does not divide the data file when the size of the data file is not larger than a predetermined size of the data chunk,
Wherein the transaction generating unit generates a transaction including the entire data file.
상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 1,
Wherein the transaction generating unit includes a value of 0 as a transaction identifier value of a previous transaction in a transaction including the initial data chunk when the divided data chunk in the data file is the first data chunk, Storage device.
상기 트랜잭션 생성부는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 1,
Wherein the transaction generating unit further includes file identification information for identifying the data file in a transaction including the final data chunk when the divided data chunk in the data file is the final data chunk. Data storage device.
상기 제어 유닛은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 트랜잭션 ID 저장부를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 1,
Wherein the control unit further comprises a transaction ID storage unit for storing a transaction identifier of the final transaction when a final transaction including a final data chunk of the data file is generated and transmitted. Device.
상기 트랜잭션 송수신부는, 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하고, 상기 트랜잭션 송수신부가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 1,
The transaction transceiver transmits a transaction identifier of a final transaction including a final data chunk of the data file to an arbitrary block chain node according to a data file download command of the user, If the transaction received by the transaction sender / receiver includes a transaction identifier of a previous transaction, the transaction identifier of the previous transaction is transferred to a block-chain node, And receiving a transaction corresponding to the transaction identifier, and repeats the process of receiving the transaction corresponding to the transaction identifier.
상기 제어 유닛은,
상기 트랜잭션 송수신부가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 상기 트랜잭션 송수신부로 전달하는 트랜잭션 데이터 획득부; 및
상기 트랜잭션 데이터 획득부에 의해 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 데이터 파일 생성부를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 장치.The method according to claim 6,
Wherein the control unit comprises:
A transaction data acquiring unit for acquiring a transaction identifier of a data chunk and a previous transaction in a transaction received by the transaction transmitting and receiving unit, temporarily storing the acquired data chunk, and transmitting the transaction identifier of the acquired previous transaction to the transaction transmitting and receiving unit; And
And a data file generation unit for generating a data file by combining the data chunks temporarily stored by the transaction data acquisition unit.
상기 클라이언트가 상기 데이터 파일을 데이터 순서에 따라 미리 결정된 데이터 청크 단위로 분할하는 (a) 단계;
상기 클라이언트가 상기 데이터 파일에서 분할되는 데이터 청크별로 해당 데이터 청크를 포함하는 트랜잭션을 순차적으로 생성하는 (b) 단계; 및
상기 클라이언트가 상기 생성된 트랜잭션을 상기 블록체인 노드로 전송하여 블록체인에 저장되도록 하는 (c) 단계를 포함하고,
상기 (b) 단계는, 상기 데이터 파일이 데이터 순서에 따라 복수의 데이터 청크로 분할되는 경우, 선순위 데이터 청크를 포함하는 직전 트랜잭션의 트랜잭션 식별자를, 상기 선순위 데이터 청크 다음의 차순위 데이터 청크를 포함하는 트랜잭션에 포함시키는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.1. A block-chain-based data storage method for storing a data file in a block chain by a client performing wire communication or wireless communication with a block chain node of a block-chain network,
(A) dividing the data file into predetermined data chunk units according to data order;
(B) sequentially generating a transaction including a corresponding data chunk for each data chunk divided by the client in the data file; And
(C) causing the client to transmit the generated transaction to the block-chain node to be stored in a block chain,
Wherein the step (b) includes the step of, when the data file is divided into a plurality of data chunks according to the data order, replacing the transaction identifier of the immediately preceding transaction including the chunk of the primary data with the transaction identifier including the chronological data chunk after the chronological data chunk And storing the data in the block chain.
상기 (a) 단계는, 상기 데이터 파일의 크기가 미리 결정된 데이터 청크의 크기보다 크지 않은 경우, 상기 데이터 파일을 분할하지 않는 단계를 포함하고,
상기 (b) 단계는, 상기 데이터 파일이 분할되지 않는 경우, 상기 데이터 파일 전체를 포함하는 트랜잭션을 생성하는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.9. The method of claim 8,
Wherein the step (a) includes not dividing the data file if the size of the data file is not larger than a predetermined size of the data chunk,
Wherein the step (b) comprises generating a transaction including the entire data file if the data file is not divided.
상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최초 데이터 청크인 경우, 상기 최초 데이터 청크를 포함하는 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자 값으로서 0 값을 포함시키는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.9. The method of claim 8,
Wherein the step (b) includes the step of including a value of 0 as a transaction identifier value of a previous transaction in a transaction including the initial data chunk when the data chunk divided in the data file is the first data chunk. A block chain based data storage method.
상기 (b) 단계는, 상기 데이터 파일에서 분할된 데이터 청크가 최종 데이터 청크인 경우, 상기 최종 데이터 청크를 포함하는 트랜잭션에 상기 데이터 파일을 식별하는 파일 식별 정보를 더 포함시키는 단계를 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.9. The method of claim 8,
The step (b) may further include the step of, when the data chunk divided in the data file is the final data chunk, further including file identification information for identifying the data file in the transaction including the final data chunk Wherein the data is stored in a block chain.
상기 방법은, 상기 데이터 파일의 최종 데이터 청크를 포함하는 최종 트랜잭션이 생성되어 전송된 경우, 상기 클라이언트가 상기 최종 트랜잭션의 트랜잭션 식별자를 저장하는 (d) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.9. The method of claim 8,
The method further comprises: (d) when the client has created and transmitted a final transaction that includes a chunk of the final data of the data file, storing the transaction identifier of the final transaction / RTI >
상기 방법은,
상기 클라이언트가 상기 데이터 파일의 최종 데이터 청크를 포함시켜 전송한 최종 트랜잭션의 트랜잭션 식별자를, 사용자의 데이터 파일 다운로드 명령에 따라 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 (e) 단계; 및
상기 클라이언트가 수신한 트랜잭션에 직전 트랜잭션의 트랜잭션 식별자가 포함된 경우, 상기 클라이언트가 상기 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하여 해당 블록체인 노드로부터 상기 전송된 직전 트랜잭션의 트랜잭션 식별자에 대응하는 트랜잭션을 수신하는 과정을 반복하는 (f) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.9. The method of claim 8,
The method comprises:
The client transmits the transaction identifier of the last transaction including the last data chunk of the data file to an arbitrary block chain node according to the data file download command of the user so as to correspond to the transferred transaction identifier (E) receiving a transaction to be performed; And
If the transaction received by the client includes the transaction identifier of the immediately preceding transaction, the client transmits the transaction identifier of the immediately preceding transaction to the arbitrary block chain node and corresponds to the transaction identifier of the transferred transaction from the corresponding block chain node And (f) repeating the process of receiving a transaction to be performed based on the block chain.
상기 (f) 단계는, 상기 클라이언트가 수신한 트랜잭션에서 데이터 청크와 직전 트랜잭션의 트랜잭션 식별자를 획득하여 상기 획득된 데이터 청크를 임시 저장하고, 상기 획득된 직전 트랜잭션의 트랜잭션 식별자를 임의의 블록체인 노드로 전송하는 단계를 포함하고,
상기 방법은, 상기 (f) 단계에서 임시 저장된 데이터 청크들을 결합하여 데이터 파일을 생성하는 (g) 단계를 더 포함하는 것을 특징으로 하는 블록체인 기반의 데이터 저장 방법.14. The method of claim 13,
The step (f) includes: acquiring a transaction identifier of a data chunk and a previous transaction in a transaction received by the client, temporarily storing the obtained data chunk, and transferring the transaction identifier of the obtained previous transaction to an arbitrary block chain node Comprising:
The method of claim 1, further comprising: (g) combining data chunks stored temporarily in step (f) to generate a data file.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170177801A KR102288521B1 (en) | 2017-12-22 | 2017-12-22 | Apparatus and method for storing data based on blockchain |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170177801A KR102288521B1 (en) | 2017-12-22 | 2017-12-22 | Apparatus and method for storing data based on blockchain |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190076197A true KR20190076197A (en) | 2019-07-02 |
KR102288521B1 KR102288521B1 (en) | 2021-08-09 |
Family
ID=67257976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170177801A KR102288521B1 (en) | 2017-12-22 | 2017-12-22 | Apparatus and method for storing data based on blockchain |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102288521B1 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102203617B1 (en) * | 2019-07-19 | 2021-01-14 | 한전케이디엔주식회사 | Method for Preventing Forgery and Falsification of Prediction Modeling |
WO2021048665A1 (en) * | 2019-09-12 | 2021-03-18 | nChain Holdings Limited | Storing a program on a blockchain |
KR20210040569A (en) | 2019-10-04 | 2021-04-14 | 삼성에스디에스 주식회사 | Blockchain based data management system and method thereof |
KR20210050959A (en) * | 2019-10-29 | 2021-05-10 | 삼성에스디에스 주식회사 | Blockchain based file management system and method thereof |
KR20210079053A (en) * | 2019-12-19 | 2021-06-29 | 한전케이디엔주식회사 | Apparatus for interfacing communication between legacy system for recruiting and platform of block_chain |
KR20210142823A (en) | 2020-05-19 | 2021-11-26 | 삼성에스디에스 주식회사 | Method and apparatus for managing data based on blockchain |
KR20220037054A (en) | 2020-09-17 | 2022-03-24 | 주식회사 세수 | Disposable Blockchain Ledger System and Blockchain Operation Method Using the same |
WO2023128283A1 (en) * | 2021-12-27 | 2023-07-06 | 엘에스웨어(주) | Ledger information access system having plurality of storage spaces, and performance method |
WO2023128273A1 (en) * | 2021-12-27 | 2023-07-06 | 엘에스웨어(주) | System and method for accessing ledger information by using common keyset information |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170010787A (en) * | 2014-05-13 | 2017-02-01 | 클라우드 크라우딩 코포레이션 | Distributed secure data storage and transmission of streaming media content |
KR101727525B1 (en) * | 2016-09-05 | 2017-04-17 | 주식회사 스케일체인 | Block chain based distributed storage method and device thereof |
KR20170075092A (en) * | 2015-12-22 | 2017-07-03 | 주식회사 와이즈넛 | MANAGEMENT METHOD FOR DATA STABILITY OF NoSQL ON DISTRIBUTED FILE SYSTEM |
-
2017
- 2017-12-22 KR KR1020170177801A patent/KR102288521B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170010787A (en) * | 2014-05-13 | 2017-02-01 | 클라우드 크라우딩 코포레이션 | Distributed secure data storage and transmission of streaming media content |
KR20170075092A (en) * | 2015-12-22 | 2017-07-03 | 주식회사 와이즈넛 | MANAGEMENT METHOD FOR DATA STABILITY OF NoSQL ON DISTRIBUTED FILE SYSTEM |
KR101727525B1 (en) * | 2016-09-05 | 2017-04-17 | 주식회사 스케일체인 | Block chain based distributed storage method and device thereof |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102203617B1 (en) * | 2019-07-19 | 2021-01-14 | 한전케이디엔주식회사 | Method for Preventing Forgery and Falsification of Prediction Modeling |
WO2021048665A1 (en) * | 2019-09-12 | 2021-03-18 | nChain Holdings Limited | Storing a program on a blockchain |
KR20210040569A (en) | 2019-10-04 | 2021-04-14 | 삼성에스디에스 주식회사 | Blockchain based data management system and method thereof |
US11334562B2 (en) | 2019-10-04 | 2022-05-17 | Samsung Sds Co., Ltd. | Blockchain based data management system and method thereof |
KR20210050959A (en) * | 2019-10-29 | 2021-05-10 | 삼성에스디에스 주식회사 | Blockchain based file management system and method thereof |
US11128440B2 (en) * | 2019-10-29 | 2021-09-21 | Samsung Sds Co., Ltd. | Blockchain based file management system and method thereof |
KR20210079053A (en) * | 2019-12-19 | 2021-06-29 | 한전케이디엔주식회사 | Apparatus for interfacing communication between legacy system for recruiting and platform of block_chain |
KR20210142823A (en) | 2020-05-19 | 2021-11-26 | 삼성에스디에스 주식회사 | Method and apparatus for managing data based on blockchain |
US11625385B2 (en) | 2020-05-19 | 2023-04-11 | Samsung Sds Co., Ltd. | Method and apparatus for managing data based on blockchain |
KR20220037054A (en) | 2020-09-17 | 2022-03-24 | 주식회사 세수 | Disposable Blockchain Ledger System and Blockchain Operation Method Using the same |
WO2023128283A1 (en) * | 2021-12-27 | 2023-07-06 | 엘에스웨어(주) | Ledger information access system having plurality of storage spaces, and performance method |
WO2023128273A1 (en) * | 2021-12-27 | 2023-07-06 | 엘에스웨어(주) | System and method for accessing ledger information by using common keyset information |
Also Published As
Publication number | Publication date |
---|---|
KR102288521B1 (en) | 2021-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190076197A (en) | Apparatus and method for storing data based on blockchain | |
US10440111B2 (en) | Application execution program, application execution method, and information processing terminal device that executes application | |
CN109656873B (en) | Block chain-based data archiving method and device and terminal equipment | |
US20190227713A1 (en) | System and method for managing object store | |
EP3582110A1 (en) | Bidirectional dynamic offloading of tasks between a host and a mobile device | |
CN109656886B (en) | Key value pair-based file system implementation method, device, equipment and storage medium | |
KR20180005542A (en) | Apparatus and method for verifing data integrity | |
CN111597567A (en) | Data processing method, data processing device, node equipment and storage medium | |
CN109376126B (en) | File or folder processing method, mobile terminal and storage medium | |
CN111464513A (en) | Data detection method, device, server and storage medium | |
CN111367923A (en) | Data processing method, data processing device, node equipment and storage medium | |
CN112000382A (en) | Linux system starting method and device and readable storage medium | |
US11496304B2 (en) | Information processing device, information processing method, and storage medium | |
CN109617713A (en) | The implementation method and server of resource dissemination | |
CN111182050B (en) | Method and equipment for realizing communication between application and server | |
KR101419275B1 (en) | Data synchronizing and servicing apparatus and method based on cloud storage | |
US11838207B2 (en) | Systems for session-based routing | |
CN109144520B (en) | Information interaction method, device, equipment and storage medium among different objects in Android | |
US20210382872A1 (en) | Blockchain-based Data Storage Method, Related Device and Storage Medium | |
US20200081812A1 (en) | Intelligent configuration management of user devices | |
CN113556333A (en) | Computer network data secure transmission method and device | |
KR20170006960A (en) | Application Providing System using Cloud Virtual File, Cloud Server and Application Providing Method, Service Server and Service Method, Mobile and Application Practicing Method | |
CN113342275B (en) | Method, apparatus and computer readable storage medium for accessing data at block link points | |
CN117642740A (en) | Proxy service for secure upload of file system tree structures | |
JP2008250864A (en) | Data storing method, data storing system and information processor |
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 |