KR102456903B1 - System for managing electronic document using ethereum and IPFS and method thereof - Google Patents

System for managing electronic document using ethereum and IPFS and method thereof Download PDF

Info

Publication number
KR102456903B1
KR102456903B1 KR1020220009306A KR20220009306A KR102456903B1 KR 102456903 B1 KR102456903 B1 KR 102456903B1 KR 1020220009306 A KR1020220009306 A KR 1020220009306A KR 20220009306 A KR20220009306 A KR 20220009306A KR 102456903 B1 KR102456903 B1 KR 102456903B1
Authority
KR
South Korea
Prior art keywords
terminal
file
client server
ipfs
hash value
Prior art date
Application number
KR1020220009306A
Other languages
Korean (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 KR1020220009306A priority Critical patent/KR102456903B1/en
Application granted granted Critical
Publication of KR102456903B1 publication Critical patent/KR102456903B1/en

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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

The present invention discloses a system for managing an electronic document using Ethereum and IPFS and a method therefor. That is, the present invention distribute-manages a file to be uploaded from a terminal through IPFS, provides reliability for the original file by storing a hash value of the relevant file distribute-managed through the IPFS in a block of Ethereum, and enables a problem of attacking or deleting for the original file to be solved through a private IPFS. Therefore, the present invention is capable of having an effect of improving operational efficiency.

Description

이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법{System for managing electronic document using ethereum and IPFS and method thereof}Electronic document management system using ethereum and IPFS and method thereof

본 발명은 이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법에 관한 것으로서, 특히 단말에서 업로드하고자 하는 파일을 IPFS를 통해 분산 관리하고, IPFS를 통해 분산 관리되는 해당 파일의 해시값을 이더리움의 블록에 저장하는 이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법을 제공하는 데 있다.The present invention relates to an electronic document management system and method using Ethereum and IPFS, and in particular, distributed management of a file to be uploaded from a terminal through IPFS, and a hash value of the file distributed and managed through IPFS, Ethereum It is to provide an electronic document management system and method using Ethereum and IPFS that are stored in blocks of

전자 문서 관리 시스템은 업무의 효율화 따위를 위해, 다양한 형태의 문서와 자료를 일관성 있게 전자적으로 통합하고 관리하는 시스템으로, 각종 전자 문서의 등록, 저장, 관리, 송수신, 조회 따위를 지원한다.The electronic document management system is a system that electronically integrates and manages various types of documents and data in a consistent manner for efficient work, and supports registration, storage, management, transmission and reception, and inquiry of various electronic documents.

블록체인(blockchain)은 관리 대상 데이터를 분산 관리하기 위하여 데이터를 블록으로 구분하고, 각 블록을 고리 형태로 서로 연결하는 형식의 데이터 목록이다.A blockchain is a data list in the form of dividing data into blocks and linking each block to each other in a loop to manage data to be managed in a distributed manner.

이러한 블록체인을 적용한 전자 문서 관리 시스템이 연구되고 있으나, 이러한 블록체인이 적용된 전자 문서 관리 시스템은 원본 파일은 별도의 데이터베이스에 저장하고, 해당 파일의 정보만 블록체인으로 관리하는 형태로 구성되어, 원본 파일이 데이터베이스에 존재함으로써 이 역시 데이터 자체의 중앙 집중형 관리라는 틀에서 자유로울 수 없으며, 원본 파일이 디도스 공격 등에 의해 무력화될 경우에는 파일 정보를 블록체인으로 관리하고 있더라도 시스템이 정상 작동될 수 없다.Although an electronic document management system applying such a block chain is being studied, the electronic document management system to which such block chain is applied stores the original file in a separate database and manages only the information of the file with block chain. As the file exists in the database, it cannot be freed from the framework of centralized management of the data itself, and if the original file is incapacitated by a DDoS attack, the system cannot operate normally even if the file information is managed with a block chain. .

또한, 원본 파일을 직접 블록화시켜 보관하고자 할 경우, 블록에 파일을 담게 되면 블록체인의 특성상 지속적으로 블록이 생성됨에 따라 저장용량이 기하급수적으로 증가하며, 속도 또한 느려지고, 이에 따른 비용과 물리적 한계로 그 유지가 힘들다.In addition, if you want to block and store the original file directly, if you put the file in a block, the storage capacity increases exponentially as blocks are continuously created due to the nature of the block chain, and the speed is also slowed down, resulting in cost and physical limitations. It is difficult to maintain

한국등록특허 제10-1868029호 [제목: 블록체인 기반의 파일 공유 방법 및 시스템]Korean Patent Registration No. 10-1868029 [Title: Blockchain-based file sharing method and system]

본 발명의 목적은 단말에서 업로드하고자 하는 파일을 IPFS를 통해 분산 관리하고, IPFS를 통해 분산 관리되는 해당 파일의 해시값을 이더리움의 블록에 저장하는 이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법을 제공하는 데 있다.An object of the present invention is an electronic document management system using Ethereum and IPFS that distributes and manages files to be uploaded from a terminal through IPFS, and stores the hash value of the file that is distributed and managed through IPFS in a block of Ethereum, and It's about providing a way.

본 발명의 다른 목적은 단말로부터 파일과 관련한 해시값이 입력되는 경우, IPFS를 통해 분산 관리 중인 해당 해시값과 관련한 파일을 불러와서 해당 파일의 내용을 확인 가능하도록 제공하는 이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법을 제공하는 데 있다.Another object of the present invention is to use Ethereum and IPFS, which provide a file related to the hash value that is being distributed and managed through IPFS, so that the contents of the file can be checked when a hash value related to the file is input from the terminal. An object of the present invention is to provide an electronic document management system and a method therefor.

본 발명의 또 다른 목적은 단말에서 원본 파일과 관련한 해시값 및 파일의 진위 여부 확인을 위한 파일을 업로드하는 경우, POA 합의 알고리즘 또는 POW 합의 알고리즘을 통해 원본 파일과 업로드된 파일 간의 비교를 통해 진위 여부를 제공하는 이더리움과 IPFS를 활용한 전자문서 관리 시스템 및 그 방법을 제공하는 데 있다.Another object of the present invention is when the terminal uploads a file for checking the authenticity of a hash value related to an original file and a file, whether the file is authentic by comparing the original file and the uploaded file through a POA consensus algorithm or a POW consensus algorithm It is to provide an electronic document management system and method using Ethereum and IPFS that provide

본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 시스템은 메타마스크(MetaMask)를 통해 클라이언트 서버에 접속하고, 상기 클라이언트 서버에서 제공하는 초기 화면을 표시하고, 상기 표시되는 초기화면 중에서, 사용자 입력에 따라 상기 초기화면 내의 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목이 선택되고, 상기 초기 화면에 포함된 파일 선택 메뉴에 따라 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 초기 화면에 포함된 미리 설정된 업로드 메뉴가 선택될 때 상기 선택된 유형 정보, 상기 선택된 파일, 파일 업로드 요청 정보 및 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 상기 단말; 복수의 IPFS 중에서 랜덤하게 선택되는 특정 IPFS에 상기 유형 정보, 상기 파일 및 상기 단말의 식별 정보를 전송하는 상기 클라이언트 서버; 및 상기 클라이언트 서버로부터 전송되는 상기 유형 정보 및 상기 파일을 근거로 해시값을 생성하고, 상기 생성된 해시값을 상기 클라이언트 서버를 경유하여 상기 단말에 전송하는 상기 특정 IPFS를 포함할 수 있다.The electronic document management system using Ethereum and IPFS according to an embodiment of the present invention accesses a client server through MetaMask, displays an initial screen provided by the client server, and among the displayed initial screens , any one of a plurality of items included in the type selection menu in the initial screen is selected according to a user input, and any one of the one or more files stored in the terminal according to the file selection menu included in the initial screen is selected After being selected, when a preset upload menu included in the initial screen is selected, the terminal transmits the selected type information, the selected file, file upload request information, and identification information of the terminal to the client server; the client server transmitting the type information, the file, and identification information of the terminal to a specific IPFS randomly selected from among a plurality of IPFSs; and the specific IPFS for generating a hash value based on the type information and the file transmitted from the client server, and transmitting the generated hash value to the terminal via the client server.

본 발명과 관련된 일 예로서 이더리움 서버를 더 포함하며, 상기 단말은, 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하고, 상기 단말의 초기 화면의 일측에 표시되는 미리 설정된 제출 메뉴가 선택될 때 상기 수신된 복수의 입력값, 블록 저장 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하며, 상기 클라이언트 서버는, 상기 단말로부터 전송되는 복수의 입력값 및 상기 단말의 식별 정보를 상기 이더리움 서버에 전송하며, 상기 이더리움 서버는, 상기 클라이언트 서버로부터 전송되는 복수의 입력값을 이더리움 블록에 저장하고, 트랜잭션 처리 결과를 상기 클라이언트 서버에 전송하며, 상기 클라이언트 서버는, 상기 트랜잭션 처리 결과를 상기 단말에 전송하며, 상기 단말은, 상기 클라이언트 서버로부터 전송되는 트랜잭션 처리 결과를 표시할 수 있다.An example related to the present invention further includes an Ethereum server, wherein the terminal includes a plurality of input items included in the additional information input menu in the initial screen according to a user input of the terminal among the initial screens displayed on the terminal. Receive a plurality of input values corresponding to , and when a preset submission menu displayed on one side of the initial screen of the terminal is selected, the received plurality of input values, block storage request information, and identification information of the terminal to the client transmitting to a server, wherein the client server transmits a plurality of input values transmitted from the terminal and identification information of the terminal to the Ethereum server, wherein the Ethereum server includes a plurality of input values transmitted from the client server stores in the Ethereum block, and transmits the transaction processing result to the client server, the client server transmits the transaction processing result to the terminal, and the terminal displays the transaction processing result transmitted from the client server can do.

본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 방법은 단말에 의해, 메타마스크를 통해 클라이언트 서버에 접속하고, 상기 클라이언트 서버에서 제공하는 초기 화면을 표시하는 단계; 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목이 선택되고, 상기 초기 화면에 포함된 파일 선택 메뉴에 따라 상기 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 초기 화면에 포함된 미리 설정된 업로드 메뉴가 선택될 때, 상기 단말에 의해, 상기 선택된 유형 정보, 상기 선택된 파일, 파일 업로드 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 복수의 IPFS 중에서 랜덤하게 선택되는 특정 IPFS에 상기 유형 정보, 상기 파일 및 상기 단말의 식별 정보를 전송하는 단계; 상기 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 상기 유형 정보 및 상기 파일을 근거로 해시값을 생성하고, 상기 생성된 해시값을 상기 클라이언트 서버를 경유하여 상기 단말에 전송하는 단계; 및 상기 단말에 의해, 상기 전송된 파일 업로드 요청 정보에 응답하여 전송되는 해시값을 표시하는 단계를 포함할 수 있다.An electronic document management method using Ethereum and IPFS according to an embodiment of the present invention includes the steps of connecting to a client server through a metamask by a terminal, and displaying an initial screen provided by the client server; Among the initial screens displayed on the terminal, any one of a plurality of items included in the type selection menu in the initial screen is selected according to a user input of the terminal, and according to the file selection menu included in the initial screen, the After any one of the one or more files stored in the terminal is selected, when a preset upload menu included in the initial screen is selected, by the terminal, the selected type information, the selected file, the file upload request information and the transmitting identification information of the terminal to the client server; transmitting, by the client server, the type information, the file, and identification information of the terminal to a specific IPFS randomly selected from among a plurality of IPFSs; generating a hash value based on the file and the type information transmitted from the client server by the specific IPFS, and transmitting the generated hash value to the terminal via the client server; and displaying, by the terminal, a hash value transmitted in response to the transmitted file upload request information.

본 발명과 관련된 일 예로서 상기 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 유형 정보 및 파일을 근거로 상기 복수의 IPFS 중에서 상기 특정 IPFS를 제외한 나머지 IPFS와 연동하여, 상기 파일을 분산 저장하는 단계를 더 포함할 수 있다.As an example related to the present invention, based on the type information and the file transmitted from the client server by the specific IPFS, interworking with the remaining IPFS except for the specific IPFS among the plurality of IPFS, and distributing and storing the file may include more.

본 발명과 관련된 일 예로서 상기 해시값을 표시하는 단계는, 상기 초기화면 내의 추가 정보 입력 메뉴와 관련한 해시값 입력 항목에 상기 해시값을 자동 입력하여 표시할 수 있다.As an example related to the present invention, the displaying of the hash value may include automatically inputting the hash value into a hash value input item related to an additional information input menu in the initial screen and displaying the hash value.

본 발명과 관련된 일 예로서 상기 단말에 의해, 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하는 단계; 상기 단말의 초기 화면의 일측에 표시되는 미리 설정된 제출 메뉴가 선택될 때, 상기 단말에 의해, 상기 수신된 복수의 입력값, 블록 저장 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 상기 단말로부터 전송되는 복수의 입력값 및 상기 단말의 식별 정보를 이더리움 서버에 전송하는 단계; 상기 이더리움 서버에 의해, 상기 클라이언트 서버로부터 전송되는 복수의 입력값을 이더리움 블록에 저장하는 단계; 상기 이더리움 서버에 의해, 트랜잭션 처리 결과를 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 상기 트랜잭션 처리 결과를 상기 단말에 전송하는 단계; 및 상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 트랜잭션 처리 결과를 표시하는 단계를 더 포함할 수 있다.As an example related to the present invention, among the initial screen displayed on the terminal by the terminal, a plurality of input values corresponding to a plurality of input items included in the additional information input menu in the initial screen according to a user input of the terminal receiving; When a preset submission menu displayed on one side of the initial screen of the terminal is selected, transmitting, by the terminal, the received plurality of input values, block storage request information, and identification information of the terminal to the client server ; transmitting, by the client server, a plurality of input values transmitted from the terminal and identification information of the terminal to an Ethereum server; storing, by the Ethereum server, a plurality of input values transmitted from the client server in an Ethereum block; transmitting, by the Ethereum server, a transaction processing result to the client server; transmitting, by the client server, the transaction processing result to the terminal; and displaying, by the terminal, a transaction processing result transmitted from the client server.

본 발명과 관련된 일 예로서 상기 복수의 입력값을 이더리움 블록에 저장하는 단계는, 상기 복수의 입력값에 미리 설정된 합의 알고리즘 방식인 POA(Proof of Authority) 및 스마트 컨트랙트(smart contract)를 적용하여 상기 이더리움 블록에 저장할 수 있다.As an example related to the present invention, the step of storing the plurality of input values in an Ethereum block may include applying a POA (Proof of Authority) and a smart contract, which are preset consensus algorithm methods, to the plurality of input values. It can be stored in the Ethereum block.

본 발명과 관련된 일 예로서 상기 단말에 의해, 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 해시값 입력 메뉴에 포함된 해시값 입력 항목에 대응하는 사용자 입력 해시값을 수신하는 단계; 상기 초기 화면의 일측에 표시되는 미리 설정된 파일보기 메뉴가 선택될 때, 상기 단말에 의해, 상기 사용자 입력 해시값, 파일 검색 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 상기 복수의 IPFS와 연동하여, 상기 사용자 입력 해시값과 관련해서 하나 이상의 IPFS에 분산 저장된 복수의 서브 파일을 수집하는 단계; 상기 클라이언트 서버에 의해, 상기 수집된 복수의 서브 파일을 조합하여, 상기 사용자 입력 해시값에 대응하는 하나의 원본 파일을 생성하는 단계; 상기 클라이언트 서버에 의해, 상기 생성된 원본 파일을 상기 단말에 전송하는 단계; 및 상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 원본 파일을 표시하거나 다운로드하는 단계를 더 포함할 수 있다.As an example related to the present invention, from among the initial screens displayed on the terminal by the terminal, a user input hash value corresponding to a hash value input item included in the hash value input menu in the initial screen according to a user input of the terminal receiving; transmitting, by the terminal, the user input hash value, file search request information, and identification information of the terminal to the client server when a preset file view menu displayed on one side of the initial screen is selected; collecting, by the client server, a plurality of sub-files distributed and stored in one or more IPFSs in association with the user input hash value in association with the plurality of IPFS; generating, by the client server, a single original file corresponding to the user input hash value by combining the plurality of collected sub files; transmitting, by the client server, the generated original file to the terminal; and displaying or downloading, by the terminal, the original file transmitted from the client server.

본 발명과 관련된 일 예로서 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 다른 해시값 입력 메뉴에 포함된 다른 해시값 입력 항목에 대응하는 다른 해시값을 수신하고, 상기 초기화면 내의 추가 파일 선택 메뉴에 따라 상기 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 특정 파일이 선택된 후, 상기 초기화면 내의 파일 진위 여부 확인 메뉴가 선택될 때, 상기 단말에 의해, 상기 수신된 다른 해시값, 상기 선택된 특정 파일, 진위 여부 확인 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 복수의 IPFS 중에서 랜덤하게 선택되는 다른 특정 IPFS에 상기 특정 파일 및 상기 단말의 식별 정보를 전송하는 단계; 상기 다른 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 상기 특정 파일을 근거로 또 다른 해시값을 생성하고, 상기 생성된 또 다른 해시값을 상기 클라이언트 서버에 전송하는 단계; 상기 클라이언트 서버에 의해, 상기 다른 특정 IPFS로부터 전송되는 또 다른 해시값을 수신하는 단계; 상기 클라이언트 서버에 의해, 상기 단말로부터 전송된 다른 해시값과 상기 다른 특정 IPFS로부터 전송된 또 다른 해시값이 일치하는지 여부를 판단하는 단계; 상기 클라이언트 서버에 의해, 상기 판단 결과에 따라 특정 파일의 진위 여부에 대한 정보를 생성하고, 상기 생성된 특정 파일의 진위 여부에 대한 정보를 상기 단말에 전송하는 단계; 및 상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 특정 파일의 진위 여부에 대한 정보를 표시하는 단계를 더 포함할 수 있다.As an example related to the present invention, among the initial screen displayed on the terminal, according to a user input of the terminal, another hash value corresponding to another hash value input item included in another hash value input menu in the initial screen is received, After any one specific file is selected from one or more files stored in the terminal according to the additional file selection menu in the initial screen, when the file authenticity check menu in the initial screen is selected, by the terminal, the received other transmitting a hash value, the selected specific file, authenticity check request information, and identification information of the terminal to the client server; transmitting, by the client server, the specific file and identification information of the terminal to another specific IPFS randomly selected from among a plurality of IPFSs; generating another hash value based on the specific file transmitted from the client server by the other specific IPFS, and transmitting the generated another hash value to the client server; receiving, by the client server, another hash value transmitted from the other specific IPFS; determining, by the client server, whether another hash value transmitted from the terminal matches another hash value transmitted from the other specific IPFS; generating, by the client server, information on whether a specific file is authentic or not according to the determination result, and transmitting information on whether the generated specific file is authentic or not to the terminal; and displaying, by the terminal, information on whether the specific file transmitted from the client server is authentic or not.

본 발명과 관련된 일 예로서 상기 특정 파일의 진위 여부에 대한 정보는, 상기 특정 파일과 관련한 또 다른 해시값과, 상기 특정 파일이 상기 다른 해시값에 대응하는 감정 대상 파일과 일치하지 않음을 나타내는 정보 또는 상기 특정 파일이 감정 대상 파일과 일치함을 나타내는 정보를 포함할 수 있다.As an example related to the present invention, the information on whether the specific file is authentic or not is information indicating that another hash value related to the specific file and the specific file do not match the analysis target file corresponding to the other hash value Alternatively, it may include information indicating that the specific file matches the analysis target file.

본 발명은 단말에서 업로드하고자 하는 파일을 IPFS를 통해 분산 관리하고, IPFS를 통해 분산 관리되는 해당 파일의 해시값을 이더리움의 블록에 저장함으로써, 원본 파일에 대한 신뢰성을 제공하고, 원본 파일에 대한 공격 또는 삭제의 문제는 프라이빗 IPFS를 통해 해결할 수 있는 효과가 있다.The present invention distributes management of files to be uploaded from the terminal through IPFS, and stores the hash value of the file that is distributed and managed through IPFS in a block of Ethereum, thereby providing reliability for the original file, and providing reliability for the original file. The problem of attack or deletion has an effect that can be solved through private IPFS.

또한, 본 발명은 단말로부터 파일과 관련한 해시값이 입력되는 경우, IPFS를 통해 분산 관리 중인 해당 해시값과 관련한 파일을 불러와서 해당 파일의 내용을 확인 가능하도록 제공함으로써, 전체 시스템의 운영 효율을 향상시킬 수 있는 효과가 있다.In addition, in the present invention, when a hash value related to a file is input from the terminal, the file related to the hash value that is being distributed and managed through IPFS is called and the contents of the file are provided so that the contents of the file can be checked, thereby improving the operational efficiency of the entire system There is an effect that can make it happen.

또한, 본 발명은 단말에서 원본 파일과 관련한 해시값 및 파일의 진위 여부 확인을 위한 파일을 업로드하는 경우, POA 합의 알고리즘 또는 POW 합의 알고리즘을 통해 원본 파일과 업로드된 파일 간의 비교를 통해 진위 여부를 제공함으로써, 유지 관리가 용이하고, 네트워크의 안정성을 제공할 수 있는 효과가 있다.In addition, the present invention provides the authenticity or not through comparison between the original file and the uploaded file through the POA consensus algorithm or the POW consensus algorithm when the terminal uploads a hash value related to the original file and a file for checking the authenticity of the file. By doing so, there is an effect that maintenance is easy and network stability can be provided.

도 1은 본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 시스템의 구성을 나타낸 블록도이다.
도 2는 본 발명의 실시예에 따른 POW 알고리즘을 이용한 이더리움 네트워크의 노드 개수에 따른 트랜잭션 완료까지의 속도 차이를 측정한 그래프이다.
도 3은 본 발명의 실시예에 따른 POA 알고리즘을 이용한 이더리움 네트워크의 노드 개수에 따른 트랜잭션 완료까지의 속도 차이를 측정한 그래프이다.
도 4는 본 발명의 실시예에 따른 60시간 경과 후 노드 3개의 POW와 POA의 트랜잭션 완료시까지의 시간을 측정한 그래프이다.
도 5 및 도 6은 본 발명의 실시예에 따른 퍼블릭 IPFS와 프라이빗 IPFS에서 파일 용량을 10MB에서 90MB까지 각각 10MB씩 사이즈를 증가시켜 업로드 속도와 다운로드 속도를 비교한 그래프이다.
도 7 및 도 8은 본 발명의 실시예에 따른 파일 용량별로 1ms당 업로드 바이트 및 다운로드 바이트로 환산한 그래프이다.
도 9 내지 도 11은 본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 방법을 나타낸 흐름도이다.
도 12 내지 도 16은 본 발명의 실시예에 따른 단말의 화면 예를 나타낸 도이다.
1 is a block diagram showing the configuration of an electronic document management system utilizing Ethereum and IPFS according to an embodiment of the present invention.
2 is a graph measuring the difference in speed until transaction completion according to the number of nodes in the Ethereum network using the POW algorithm according to an embodiment of the present invention.
3 is a graph measuring the difference in speed until transaction completion according to the number of nodes in the Ethereum network using the POA algorithm according to an embodiment of the present invention.
4 is a graph of measuring the time until transaction completion of POW and POA of three nodes after 60 hours have elapsed according to an embodiment of the present invention.
5 and 6 are graphs comparing upload speed and download speed by increasing the file size by 10 MB from 10 MB to 90 MB, respectively, in public IPFS and private IPFS according to an embodiment of the present invention.
7 and 8 are graphs converted into upload bytes and download bytes per 1 ms for each file size according to an embodiment of the present invention.
9 to 11 are flowcharts illustrating an electronic document management method using Ethereum and IPFS according to an embodiment of the present invention.
12 to 16 are diagrams showing examples of screens of a terminal according to an embodiment of the present invention.

본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.It should be noted that the technical terms used in the present invention are only used to describe specific embodiments, and are not intended to limit the present invention. In addition, the technical terms used in the present invention should be interpreted as meanings generally understood by those of ordinary skill in the art to which the present invention belongs, unless otherwise defined in the present invention, and excessively comprehensive It should not be construed as a human meaning or in an excessively reduced meaning. In addition, when the technical term used in the present invention is an incorrect technical term that does not accurately express the spirit of the present invention, it should be understood by being replaced with a technical term that can be correctly understood by those skilled in the art. In addition, general terms used in the present invention should be interpreted as defined in advance or according to the context before and after, and should not be interpreted in an excessively reduced meaning.

또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.Also, the singular expression used in the present invention includes the plural expression unless the context clearly dictates otherwise. In the present invention, terms such as "consisting of" or "comprising" should not be construed as necessarily including all of the various components or various steps described in the invention, and some components or some steps may not be included. It should be construed that it may further include additional components or steps.

또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.Also, terms including ordinal numbers such as first, second, etc. used in the present invention may be used to describe the components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component.

이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, a preferred embodiment according to the present invention will be described in detail with reference to the accompanying drawings, but the same or similar components are given the same reference numerals regardless of the reference numerals, and the redundant description thereof will be omitted.

또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.In addition, in the description of the present invention, if it is determined that a detailed description of a related known technology may obscure the gist of the present invention, the detailed description thereof will be omitted. In addition, it should be noted that the accompanying drawings are only for easy understanding of the spirit of the present invention, and should not be construed as limiting the spirit of the present invention by the accompanying drawings.

도 1은 본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)의 구성을 나타낸 블록도이다.1 is a block diagram showing the configuration of an electronic document management system 10 utilizing Ethereum and IPFS according to an embodiment of the present invention.

도 1에 도시한 바와 같이, 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 단말(100), 클라이언트 서버(200), 복수의 IPFS(300) 및 이더리움 서버(400)로 구성된다. 도 1에 도시된 전자문서 관리 시스템(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1에 도시된 구성 요소보다 많은 구성 요소에 의해 전자문서 관리 시스템(10)이 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 전자문서 관리 시스템(10)이 구현될 수도 있다.As shown in FIG. 1 , the electronic document management system 10 using Ethereum and IPFS consists of a terminal 100 , a client server 200 , a plurality of IPFS 300 and an Ethereum server 400 . . Not all of the components of the electronic document management system 10 shown in FIG. 1 are essential components, and the electronic document management system 10 may be implemented by more components than the components shown in FIG. The electronic document management system 10 may be implemented with fewer components.

상기 단말(100)은 스마트폰(Smart Phone), 휴대 단말기(Portable Terminal), 이동 단말기(Mobile Terminal), 폴더블 단말기(Foldable Terminal), 개인 정보 단말기(Personal Digital Assistant: PDA), PMP(Portable Multimedia Player) 단말기, 텔레매틱스(Telematics) 단말기, 내비게이션(Navigation) 단말기, 개인용 컴퓨터(Personal Computer), 노트북 컴퓨터, 슬레이트 PC(Slate PC), 태블릿 PC(Tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(Wearable Device, 예를 들어, 워치형 단말기(Smartwatch), 글래스형 단말기(Smart Glass), HMD(Head Mounted Display) 등 포함), 와이브로(Wibro) 단말기, IPTV(Internet Protocol Television) 단말기, 스마트 TV, 디지털방송용 단말기, AVN(Audio Video Navigation) 단말기, A/V(Audio/Video) 시스템, 플렉시블 단말기(Flexible Terminal), 디지털 사이니지 장치 등과 같은 다양한 단말기에 적용될 수 있다.The terminal 100 includes a smart phone, a portable terminal, a mobile terminal, a foldable terminal, a personal digital assistant (PDA), and a portable multimedia (PMP). Player) terminal, telematics terminal, navigation terminal, personal computer, notebook computer, slate PC, tablet PC, ultrabook, wearable device Device, for example, watch-type terminal (Smartwatch), glass-type terminal (Smart Glass), HMD (Head Mounted Display), etc.), Wibro (Wibro) terminal, IPTV (Internet Protocol Television) terminal, smart TV, for digital broadcasting It can be applied to various terminals such as a terminal, an audio video navigation (AVN) terminal, an audio/video (A/V) system, a flexible terminal, and a digital signage device.

상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400)는 웹 서버, 데이터베이스 서버, 프록시 서버 등의 형태로 구현될 수 있다. 또한, 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400)에는 네트워크 부하 분산 메커니즘, 내지 해당 상기 클라이언트 서버(200), 해당 복수의 IPFS(300) 및 해당 이더리움 서버(400)가 인터넷 또는 다른 네트워크상에서 동작할 수 있도록 하는 다양한 소프트웨어 중 하나 이상이 설치될 수 있으며, 이를 통해 컴퓨터화된 시스템으로 구현될 수 있다. 또한, 네트워크는 http 네트워크일 수 있으며, 전용 회선(private line), 인트라넷 또는 임의의 다른 네트워크일 수 있다. 나아가, 상기 단말(100), 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400) 간의 연결은 데이터가 임의의 해커 또는 다른 제3자에 의한 공격을 받지 않도록 보안 네트워크로 연결될 수 있다. 또한, 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400)는 복수의 데이터베이스 서버를 포함할 수 있으며, 이러한 데이터베이스 서버가 분산 데이터베이스 서버 아키텍처를 비롯한 임의의 유형의 네트워크 연결을 통해 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400)와 별도로 연결되는 방식으로 구현될 수 있다.The client server 200, the plurality of IPFS 300, and the Ethereum server 400 may be implemented in the form of a web server, a database server, a proxy server, and the like. In addition, the client server 200, the plurality of IPFS 300 and the Ethereum server 400 have a network load balancing mechanism, or the corresponding client server 200, the plurality of IPFS 300 and the corresponding Ethereum. One or more of various software that enables the server 400 to operate on the Internet or other networks may be installed, and may be implemented as a computerized system through this. Also, the network may be an http network, and may be a private line, an intranet, or any other network. Furthermore, the connection between the terminal 100, the client server 200, the plurality of IPFS 300 and the Ethereum server 400 is secured so that data is not attacked by any hacker or other third party. It can be connected to a network. In addition, the client server 200 , the plurality of IPFS 300 , and the Ethereum server 400 may include a plurality of database servers, and these database servers are connected to any type of network including a distributed database server architecture. It may be implemented in such a way that it is separately connected to the client server 200 , the plurality of IPFS 300 , and the Ethereum server 400 through connection.

상기 단말(100), 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 및 상기 이더리움 서버(400) 각각은 다른 단말들과의 통신 기능을 수행하기 위한 통신부(미도시), 다양한 정보 및 프로그램(또는 애플리케이션)을 저장하기 위한 저장부(미도시), 다양한 정보 및 프로그램 실행 결과를 표시하기 위한 표시부(미도시), 상기 다양한 정보 및 프로그램 실행 결과에 대응하는 음성 정보를 출력하기 위한 음성 출력부(미도시), 각 단말의 다양한 구성 요소 및 기능을 제어하기 위한 제어부(미도시) 등을 포함할 수 있다.Each of the terminal 100, the client server 200, the plurality of IPFS 300 and the Ethereum server 400 includes a communication unit (not shown) for performing a communication function with other terminals, various information and A storage unit (not shown) for storing a program (or application), a display unit (not shown) for displaying various information and program execution results, and an audio output for outputting voice information corresponding to the various information and program execution results It may include a unit (not shown) and a controller (not shown) for controlling various components and functions of each terminal.

상기 단말(100)은 상기 클라이언트 서버(200), 상기 복수의 IPFS(300), 상기 이더리움 서버(400) 등과 통신한다. 이때, 상기 단말(100)은 해당 단말(100)에서 저장 중인 파일을 IPFS(300)를 통해 분산 저장하거나, 이더리움 서버(400)를 통해 해시값과 추가 정보를 이더리움 블록에 저장하거나, 해시값을 이용해서 IPFS(300)에 저장된 파일을 확인 또는 다운로드하거나, 해시값을 이용해서 특정 파일에 대한 진위 여부를 확인하고자 하는 사용자가 소지한 단말일 수 있다.The terminal 100 communicates with the client server 200 , the plurality of IPFS 300 , the Ethereum server 400 , and the like. At this time, the terminal 100 stores the file being stored in the terminal 100 distributedly through the IPFS 300 , or stores the hash value and additional information in the Ethereum block through the Ethereum server 400 , or It may be a terminal possessed by a user who wants to check or download a file stored in the IPFS 300 using a value or check the authenticity of a specific file using a hash value.

또한, 상기 단말(100)은 상기 클라이언트 서버(200)와의 연동에 의해, 상기 게임 서버(200)에서 제공하는 전용 앱 및/또는 웹 사이트를 통해 파일 업로드 기능, 해시값, 추가 정보 등의 이더리움 블록 저장 기능, 해시값에 대응하는 파일 확인/다운로드 기능, 특정 파일의 진위여부 확인 기능 등을 제공받기 위한 일반 사용자로 회원 가입하며, 개인 정보 등을 상기 클라이언트 서버(200)에 등록한다. 이때, 상기 개인 정보는 아이디, 이메일 주소, 패스워드(또는 비밀번호), 이름, 성별, 생년월일, 연락처, 주소지(또는 주소정보/거주지역) 등을 포함한다.In addition, the terminal 100, by interworking with the client server 200, a file upload function, hash value, additional information, etc. through a dedicated app and/or website provided by the game server 200 Ethereum Register as a member as a general user to receive a block storage function, a file check/download function corresponding to a hash value, and a function to check the authenticity of a specific file, and register personal information in the client server 200 . In this case, the personal information includes ID, email address, password (or password), name, gender, date of birth, contact information, address (or address information/residence area), and the like.

또한, 상기 단말(100)은 해당 단말(100)의 사용자가 가입한 SNS 계정 정보 또는 타사이트 계정 정보를 이용하여 상기 클라이언트 서버(200)에 사용자로 회원 가입할 수도 있다. 여기서, 상기 SNS 계정은 페이스북, 트위터, 인스타그램, 카카오 스토리, 네이버 블로그 등과 관련한 정보일 수 있다. 또한, 상기 타사이트 계정은 유튜브, 카카오, 네이버 등과 관련한 정보일 수 있다.In addition, the terminal 100 may sign up as a user to the client server 200 by using the SNS account information or account information of a third-party site registered by the user of the terminal 100 . Here, the SNS account may be information related to Facebook, Twitter, Instagram, Kakao Story, Naver blog, and the like. In addition, the third-party account may be information related to YouTube, Kakao, Naver, and the like.

또한, 회원 가입 절차 수행 시, 상기 단말(100)은 본인 인증 수단(예를 들어 이동 전화, 신용카드, 아이핀 등 포함)을 통한 인증 기능을 완료해야 상기 클라이언트 서버(200)에 대한 회원 가입 절차를 정상적으로 완료할 수 있다.In addition, when performing the membership registration procedure, the terminal 100 must complete the authentication function through a self-authentication means (eg, including a mobile phone, credit card, i-PIN, etc.) to perform the membership registration procedure for the client server 200 can be completed normally.

또한, 회원 가입이 완료된 후, 상기 단말(100)은 상기 클라이언트 서버(200)에서 제공하는 서비스를 이용하기 위해서, 상기 클라이언트 서버(200)로부터 제공되는 전용 앱(또는 애플리케이션/응용 프로그램/특정 앱)을 해당 단말(100)에 설치한다. 이때, 상기 전용 앱은 파일 업로드 기능, 해시값, 추가 정보 등의 이더리움 블록 저장 기능, 해시값에 대응하는 파일 확인/다운로드 기능, 특정 파일의 진위여부 확인 기능 등을 수행하기 위한 앱일 수 있다.In addition, after membership registration is completed, the terminal 100 is a dedicated app (or application/application program/specific app) provided from the client server 200 in order to use the service provided by the client server 200 . is installed in the corresponding terminal 100 . In this case, the dedicated app may be an app for performing a file upload function, a hash value, an Ethereum block storage function such as additional information, a file check/download function corresponding to the hash value, a function to check the authenticity of a specific file, and the like.

또한, 상기 단말(100)은 상기 이더리움 서버(400)와의 연동에 의해, 이더리움 블록에 정보 저장을 위해서 일반 사용자로 회원 가입하며, 개인 정보 등을 상기 이더리움 서버(400)에 등록한다. 이때, 상기 개인 정보는 아이디, 이메일 주소, 패스워드(또는 비밀번호), 이름, 성별, 생년월일, 연락처, 주소지(또는 주소정보/거주지역) 등을 포함한다.In addition, the terminal 100 joins as a general user to store information in the Ethereum block by interworking with the Ethereum server 400 , and registers personal information and the like in the Ethereum server 400 . In this case, the personal information includes ID, email address, password (or password), name, gender, date of birth, contact information, address (or address information/residence area), and the like.

또한, 상기 단말(100)은 해당 단말(100)의 사용자가 가입한 SNS 계정 정보 또는 타사이트 계정 정보를 이용하여 상기 이더리움 서버(400)에 사용자로 회원 가입할 수도 있다. 여기서, 상기 SNS 계정은 페이스북, 트위터, 인스타그램, 카카오 스토리, 네이버 블로그 등과 관련한 정보일 수 있다. 또한, 상기 타사이트 계정은 유튜브, 카카오, 네이버 등과 관련한 정보일 수 있다.In addition, the terminal 100 may sign up as a user to the Ethereum server 400 by using the SNS account information or account information of a third-party site registered by the user of the terminal 100 as a user. Here, the SNS account may be information related to Facebook, Twitter, Instagram, Kakao Story, Naver blog, and the like. In addition, the third-party account may be information related to YouTube, Kakao, Naver, and the like.

또한, 회원 가입 절차 수행 시, 상기 단말(100)은 본인 인증 수단(예를 들어 이동 전화, 신용카드, 아이핀 등 포함)을 통한 인증 기능을 완료해야 상기 이더리움 서버(400)에 대한 회원 가입 절차를 정상적으로 완료할 수 있다.In addition, when performing the membership registration procedure, the terminal 100 must complete the authentication function through a self-authentication means (eg, mobile phone, credit card, i-Pin, etc.) to complete the membership registration procedure for the Ethereum server 400 can be completed normally.

또한, 회원 가입이 완료된 후, 상기 단말(100)은 상기 이더리움 서버(400)에서 제공하는 서비스를 이용하기 위해서, 상기 이더리움 서버(400)로부터 발급되는 전자지갑(또는 전자지갑과 관련한 계정 정보)을 해당 단말(100)에 설치(또는 등록/저장)한다.In addition, after membership registration is completed, the terminal 100 uses an electronic wallet (or electronic wallet related account information) issued from the Ethereum server 400 in order to use the service provided by the Ethereum server 400 . ) is installed (or registered/stored) in the corresponding terminal 100 .

또한, 상기 단말(100)은 메타마스크(MetaMask)를 통해 상기 클라이언트 서버(200)에 접속하고, 상기 클라이언트 서버(200)에서 제공하는 초기 화면을 표시(또는 출력)한다. 여기서, 상기 초기화면은 IPFS(300)에 업로드할 파일과 관련해서 IPFS의 유형인 퍼블릭(public) 또는 프라이빗(private)을 선택하기 위한 유형 선택 메뉴(또는 유형 선택 항목/버튼), IPFS(300)에 업로드하고자 하는 파일을 선택하기 위한 파일 선택 메뉴, IPFS(300)에 파일을 업로드하기 위한 업로드 메뉴, 파일 업로드에 따른 해시값을 표시하기 위한 업로드 결과 표시 메뉴(또는 업로드 결과/해시값 표시 영역), 파일 업로드에 따른 해시값, 파일과 관련한 추가 정보 등을 입력하기 위한 추가 정보 입력 메뉴, 상기 추가 정보 입력 메뉴를 통해 입력된 정보들을 이더리움 블록에 저장하기 위한 제출 메뉴, 트랜잭션 처리 결과를 표시하기 위한 트랜잭션 결과 표시 메뉴(또는 트랜잭션 결과 표시 영역), 단말(100)의 사용자 입력에 따른 해시값과 관련한 파일을 확인하거나 다운로드하기 위한 해시값 입력 메뉴, 상기 해시값 입력 메뉴를 통해 입력된 해시값과 관련한 파일을 검색하기 위한 파일보기 메뉴, 해당 해시값과 관련한 파일 검색에 따라 검색된 파일을 다운로드하기 위한 다운로드 메뉴, 단말(100)의 사용자 입력에 따른 특정 파일의 진위 여부를 확인하기 위한 확인 대상 파일과 관련한 확인 대상 해시값을 입력하기 위한 다른 해시값 입력 메뉴, 진위 여부를 확인하고자 하는 특정 파일을 선택하기 위한 추가 파일 선택 메뉴, 단말(100)의 사용자 입력에 따른 특정 파일의 진위여부를 확인하기 위한 파일 진위 여부 확인 메뉴, 파일 진위 여부 결과를 표시하기 위한 진위 여부 결과 표시 메뉴(또는 진위 여부 결과 표시 영역) 등을 포함한다.In addition, the terminal 100 accesses the client server 200 through a metamask and displays (or outputs) an initial screen provided by the client server 200 . Here, the initial screen is a type selection menu (or type selection item/button) for selecting the type of IPFS, which is public or private, in relation to the file to be uploaded to the IPFS 300 , IPFS 300 . File selection menu to select a file to be uploaded to IPFS (300), Upload menu to upload a file to IPFS 300 , an additional information input menu for entering hash values according to file upload, additional information related to files, etc., a submission menu for storing information entered through the additional information input menu in the Ethereum block, and display of transaction processing results a transaction result display menu (or transaction result display area) for A file view menu for searching a related file, a download menu for downloading a file searched according to a file search related to a corresponding hash value, a verification target file for checking the authenticity of a specific file according to a user input of the terminal 100, and Another hash value input menu for inputting a related verification target hash value, an additional file selection menu for selecting a specific file for which authenticity is to be checked, and for checking the authenticity of a specific file according to a user input of the terminal 100 and a file authenticity check menu, a fidelity result display menu (or a fidelity result display area) for displaying a file authenticity result result, and the like.

본 발명의 실시예에서, 상기 초기화면 내에 상기 IPFS(300)로의 파일을 업로드하기 위한 메뉴, 이더리움 블록에 정보를 저장하기 위한 메뉴, 해시값에 대응하는 파일을 검색 및 다운로드하기 위한 메뉴, 특정 파일의 진위 여부를 확인하기 위한 메뉴 등을 한 번에 표시하도록 구성하고 있으나, 이에 한정되는 것은 아니며, 설계자의 설계에 따라, 상기 초기화면은 복수의 탭(tap)을 통해 기능별로(예를 들어 업로드 탭, 파일보기 탭, 파일 진위 여부 확인 탭 등 포함) 해당 메뉴들을 분리하여 사용자 인터페이스를 구성할 수도 있다.In an embodiment of the present invention, a menu for uploading a file to the IPFS 300 in the initial screen, a menu for storing information in an Ethereum block, a menu for searching and downloading a file corresponding to a hash value, a specific Although it is configured to display a menu for checking the authenticity of a file at a time, it is not limited thereto, and according to a designer's design, the initial screen is displayed by function (for example, through a plurality of taps). Upload tab, file view tab, file authenticity check tab, etc.) The user interface can also be configured by separating the corresponding menus.

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 해당 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목(예를 들어 퍼블릭, 프라이빗 등 포함)이 선택되고, 상기 파일 선택 메뉴에 따라 해당 단말(100)에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 미리 설정된 업로드 메뉴가 선택되는 경우, 상기 단말(100)은 상기 선택된 유형 정보(예를 들어 퍼블릭, 프라이빗 등 포함), 상기 선택된 파일, 파일 업로드 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 여기서, 상기 단말(100)의 식별 정보는 MDN(Mobile Directory Number), 모바일 IP, 모바일 MAC, Sim(subscriber identity module: 가입자 식별 모듈) 카드 고유정보, 시리얼번호 등을 포함한다. 이때, 상기 업로드 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 유형 정보 및 상기 파일이 선택된 경우에 활성화될 수 있다.In addition, among the initial screen displayed on the terminal 100, according to a user input (or user selection/touch/control) of the corresponding terminal 100, any one item (eg, For example, public, private, etc.) is selected, any one of the one or more files stored in the terminal 100 is selected according to the file selection menu, and then the preset upload menu is selected, the terminal ( 100) transmits the selected type information (including, for example, public, private, etc.), the selected file, file upload request information, identification information of the terminal 100, and the like to the client server 200 . Here, the identification information of the terminal 100 includes a mobile directory number (MDN), mobile IP, mobile MAC, subscriber identity module (Sim) card unique information, serial number, and the like. In this case, the upload menu may be activated when the type information and the file are selected in the terminal 100 while maintaining an inactive state by default.

본 발명의 실시예에서는, 상기 단말(100)에서 해당 단말(100)에 저장 중인 파일을 상기 클라이언트 서버(200)로 전송하는 것을 주로 설명하고 있으나, 이에 한정되는 것은 아니며, 상기 단말(100)은 해당 단말(100)에 저장 중인 하나 이상의 전자 문서 중에서 해당 단말(100)의 사용자 선택에 따른 특정 전자 문서를 상기 클라이언트 서버(200)로 전송할 수도 있다. 여기서, 상기 전자 문서는 컴퓨터를 이용하여 자료를 분류, 정리, 선택, 연산하여 처리한 시스템에 의하여 전자적 형태로 작성되어 송신 또는 수신되거나 저장된 정보를 나타낸다.In the embodiment of the present invention, it is mainly described that the terminal 100 transmits the file stored in the terminal 100 to the client server 200, but is not limited thereto, and the terminal 100 A specific electronic document according to a user selection of the corresponding terminal 100 among one or more electronic documents stored in the corresponding terminal 100 may be transmitted to the client server 200 . Here, the electronic document represents information that is created, transmitted, received, or stored in an electronic form by a system that classifies, organizes, selects, calculates and processes data using a computer.

또한, 상기 단말(100)은 앞서 전송된 상기 유형 정보, 상기 파일, 상기 파일 업로드 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해시값 등을 수신한다.In addition, the terminal 100 receives the hash value transmitted from the client server 200 in response to the previously transmitted type information, the file, the file upload request information, and the like.

또한, 상기 단말(100)은 상기 수신된 해시값을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 추가 정보 입력 메뉴와 관련한 해시값 입력 항목에 상기 수신된 해시값을 자동 입력하여 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) the received hash value. In this case, the terminal 100 may automatically input and display the received hash value in the hash value input item related to the additional information input menu in the initial screen.

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신한다. 여기서, 상기 복수의 입력값은 해시값, 추가 정보(예를 들어 작성자명, 회사명, 부서명/팀명, 날짜 등 포함) 등을 포함한다.In addition, among the initial screen displayed on the terminal 100 , a plurality of input items corresponding to a plurality of input items included in the additional information input menu according to a user input (or user selection/touch/control) of the terminal 100 are provided. receive input. Here, the plurality of input values include hash values and additional information (eg, author name, company name, department/team name, date, etc.).

또한, 상기 단말(100)의 초기 화면의 일측에 표시되는 상기 미리 설정된 제출 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 복수의 입력값, 블록 저장 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 제출 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하는 경우에 활성화될 수 있다.In addition, when the preset submission menu displayed on one side of the initial screen of the terminal 100 is selected, the terminal 100 receives the plurality of input values, block storage request information, and It transmits identification information and the like to the client server 200 . In this case, the submission menu may be activated when a plurality of input values corresponding to a plurality of input items included in the additional information input menu are received from the terminal 100 while maintaining an inactive state by default.

또한, 상기 단말(100)은 앞서 전송된 상기 복수의 입력값, 상기 블록 저장 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 트랜잭션 처리 결과 등을 수신한다.In addition, the terminal 100 receives the transaction processing result transmitted from the client server 200 in response to the plurality of input values and the block storage request information transmitted previously.

또한, 상기 단말(100)은 상기 수신된 트랜잭션 처리 결과 등을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 트랜잭션 결과 표시 메뉴에 상기 수신된 트랜잭션 처리 결과 등을 자동으로 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) the received transaction processing result and the like. In this case, the terminal 100 may automatically display the received transaction processing result, etc. on the transaction result display menu in the initial screen.

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 해시값 입력 메뉴에 포함된 해시값 입력 항목에 대응하는 사용자 입력 해시값을 수신한다. 여기서, 상기 사용자 입력 해시값은 해당 단말(100)의 사용자가 특정 해시값에 대응하는 파일 내용을 확인하거나 또는 해당 특정 해시값에 대응하는 파일을 다운로드하기 위한 해시값일 수 있다.In addition, among the initial screen displayed on the terminal 100, a user input corresponding to a hash value input item included in the hash value input menu according to a user input (or user selection/touch/control) of the terminal 100 Receive a hash value. Here, the user input hash value may be a hash value for the user of the terminal 100 to check the contents of a file corresponding to a specific hash value or to download a file corresponding to the specific hash value.

또한, 상기 단말(100)의 초기 화면의 일측에 표시되는 상기 미리 설정된 파일보기 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 사용자 입력 해시값, 파일 검색 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 파일보기 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 해시값 입력 메뉴에 포함된 하나 이상의 항목에 대응하는 입력값(예를 들어 상기 사용자 입력 해시값 등 포함)을 수신하는 경우에 활성화될 수 있다.In addition, when the preset file view menu displayed on one side of the initial screen of the terminal 100 is selected, the terminal 100 displays the received user input hash value, file search request information, and the terminal 100 . and transmits the identification information of the client server 200 to the client server 200 . At this time, the file view menu maintains an inactive state by default and receives an input value (eg, including the user input hash value, etc.) corresponding to one or more items included in the hash value input menu in the terminal 100 . It can be activated if

또한, 상기 단말(100)은 앞서 전송된 사용자 입력 해시값, 파일 검색 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 원본 파일을 수신한다.In addition, the terminal 100 receives the original file transmitted from the client server 200 in response to the previously transmitted user input hash value, file search request information, and the like.

또한, 상기 단말(100)은 상기 수신된 원본 파일을 표시(또는 출력)한다. 여기서, 상기 단말(100)은 상기 수신된 원본 파일을 해당 단말(100)에 다운로드(또는 저장)할 수도 있다.In addition, the terminal 100 displays (or outputs) the received original file. Here, the terminal 100 may download (or store) the received original file to the corresponding terminal 100 .

이때, 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않은 경우, 상기 단말(100)은 앞서 전송된 사용자 입력 해시값, 파일 검색 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 수신하고, 상기 수신된 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 표시(또는 출력)할 수도 있다.At this time, if the file related to the corresponding user input hash value does not exist in the IPFS 300 , the terminal 100 receives the previously transmitted user input hash value, file search request information, etc. from the client server 200 . Receives information indicating that the transmitted file related to the corresponding user input hash value does not exist in the IPFS 300, and acknowledges that the file related to the received user input hash value does not exist in the IPFS 300 It is also possible to display (or output) the indicated information or the like.

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 다른 해시값 입력 메뉴에 포함된 다른 해시값 입력 항목에 대응하는 다른 해시값을 수신하고, 상기 추가 파일 선택 메뉴에 따라 해당 단말(100)에 저장된 하나 이상의 파일 중에서 어느 하나의 특정 파일이 선택된 후, 상기 미리 설정된 파일 진위 여부 확인 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 다른 해시값, 상기 선택된 특정 파일, 진위 여부 확인 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 파일 진위 여부 확인 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 다른 해시값을 수신하고 상기 특정 파일이 선택된 경우에 활성화될 수 있다.In addition, among the initial screen displayed on the terminal 100, according to a user input (or user selection/touch/control) of the terminal 100, the other hash value input items included in the other hash value input menu correspond to After receiving another hash value and selecting any one specific file from among one or more files stored in the terminal 100 according to the additional file selection menu, if the preset file authenticity check menu is selected, the terminal ( 100) transmits the received other hash value, the selected specific file, authenticity check request information, identification information of the terminal 100, and the like to the client server 200 . In this case, the file authenticity check menu may be activated when the specific file is selected after receiving the other hash value from the terminal 100 while maintaining the inactive state by default.

또한, 상기 단말(100)은 앞서 전송된 상기 다른 해시값, 상기 특정 파일, 상기 진위 여부 확인 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해당 특정 파일의 진위 여부에 대한 정보 등을 수신한다.In addition, the terminal 100 receives information on the authenticity of the specific file transmitted from the client server 200 in response to the previously transmitted other hash value, the specific file, the authenticity check request information, etc. do.

또한, 상기 단말(100)은 상기 수신된 해당 특정 파일의 진위 여부에 대한 정보 등을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 진위 여부 결과 표시 메뉴에 상기 수신된 해당 특정 파일의 진위 여부에 대한 정보 등을 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) information on whether the received specific file is authentic or not. In this case, the terminal 100 may display information on whether the received specific file is authentic or not in the authenticity result display menu in the initial screen.

본 발명의 실시예에서는 상기 단말(100)에서 전용 앱 형태 또는 웹 사이트 형태로 상기 클라이언트 서버(200)에서 제공하는 다양한 기능(예를 들어 파일 업로드 기능, 해시값, 추가 정보 등의 이더리움 블록 저장 기능, 해시값에 대응하는 파일 확인/다운로드 기능, 특정 파일의 진위여부 확인 기능 등 포함)을 수행할 수 있다.In an embodiment of the present invention, various functions (eg, file upload function, hash value, additional information, etc.) provided by the client server 200 in the form of a dedicated app or website in the terminal 100 are stored function, file check/download function corresponding to hash value, authenticity check function of a specific file, etc.) can be performed.

상기 클라이언트 서버(200)는 상기 단말(100), 상기 복수의 IPFS(300), 상기 이더리움 서버(400) 등과 통신한다.The client server 200 communicates with the terminal 100 , the plurality of IPFSs 300 , the Ethereum server 400 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 단말(100) 등의 사용자에 대한 회원 가입 절차 등을 수행한다.In addition, the client server 200 performs a membership registration procedure for a user such as the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 단말(100) 등의 사용자와 관련한 개인 정보를 등록한다. 이때, 상기 클라이언트 서버(200)는 해당 개인 정보 등을 DB 서버(미도시)에 등록(또는 관리)할 수 있다.In addition, the client server 200 registers personal information related to a user of the terminal 100 and the like. In this case, the client server 200 may register (or manage) the corresponding personal information in a DB server (not shown).

또한, 상기 클라이언트 서버(200)는 상기 단말(100) 등의 사용자에 대한 회원 관리 기능을 수행한다.In addition, the client server 200 performs a member management function for a user such as the terminal 100 .

또한, 상기 클라이언트 서버(200)는 파일 업로드 기능, 해시값, 추가 정보 등의 이더리움 블록 저장 기능, 해시값에 대응하는 파일 확인/다운로드 기능, 특정 파일의 진위여부 확인 기능 등을 제공하는 전용 앱 및/또는 웹 사이트를 상기 단말(100) 등에 제공한다.In addition, the client server 200 is a dedicated app that provides a file upload function, a hash value, an Ethereum block storage function such as additional information, a file check/download function corresponding to the hash value, a function to check the authenticity of a specific file, etc. and/or provides a web site to the terminal 100 or the like.

또한, 상기 클라이언트 서버(200)는 공지사항, 이벤트 등을 위한 게시판 기능을 제공한다.In addition, the client server 200 provides a bulletin board function for announcements and events.

또한, 상기 단말(100)은 메타마스크(MetaMask)를 통해 상기 클라이언트 서버(200)에 접속하는 경우, 상기 클라이언트 서버(200)는 상기 초기 화면을 상기 단말(100)에 제공한다.Also, when the terminal 100 accesses the client server 200 through a metamask, the client server 200 provides the initial screen to the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 유형 정보(예를 들어 퍼블릭, 프라이빗 등 포함), 상기 파일, 상기 파일 업로드 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives type information (eg, including public, private, etc.) transmitted from the terminal 100 , the file, the file upload request information, identification information of the terminal 100 , and the like. do.

또한, 상기 클라이언트 서버(200)는 복수의 IPFS(300) 중에서 랜덤하게 선택되는 특정 IPFS(300)에 상기 수신된 유형 정보, 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received type information, file, identification information of the terminal 100, etc. to a specific IPFS 300 randomly selected from among a plurality of IPFS 300 .

즉, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 복수의 IPFS(300) 중에서 랜덤하게 또는 미리 설정된 방식으로 상기 특정 IPFS(300)를 선택한다.That is, the client server 200 selects the specific IPFS 300 randomly or in a preset manner from among a plurality of IPFS 300 interworking with the corresponding client server 200 .

또한, 상기 클라이언트 서버(200)는 상기 선택된 특정 IPFS(300)로 상기 수신된 유형 정보, 상기 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received type information, the file, and identification information of the terminal 100 to the selected specific IPFS 300 .

또한, 상기 클라이언트 서버(200)는 상기 특정 IPFS(300)로부터 전송되는 해시값(또는 상기 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives a hash value (or a hash value related to the file) transmitted from the specific IPFS 300 , identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 해당 단말(100)의 식별 정보에 대응하는 상기 단말(100)로 상기 수신된 해시값 등을 전송한다.In addition, the client server 200 transmits the received hash value, etc. to the terminal 100 corresponding to the identification information of the corresponding terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 복수의 입력값, 상기 블록 저장 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives the plurality of input values transmitted from the terminal 100 , the block storage request information, identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 수신된 복수의 입력값, 상기 단말(100)의 식별 정보 등을 이더리움 서버(400)에 전송한다.In addition, the client server 200 transmits the received plurality of input values, identification information of the terminal 100, and the like to the Ethereum server 400 .

또한, 상기 클라이언트 서버(200)는 상기 이더리움 서버(400)로부터 전송되는 상기 트랜잭션 처리 결과, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives the transaction processing result transmitted from the Ethereum server 400 , identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 단말(100)의 식별 정보에 대응하는 상기 단말(100)로 상기 수신된 트랜잭션 처리 결과 등을 전송한다.In addition, the client server 200 transmits the received transaction processing result, etc. to the terminal 100 corresponding to the identification information of the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 사용자 입력 해시값, 상기 파일 검색 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives the user input hash value transmitted from the terminal 100 , the file search request information, identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 복수의 IPFS(300)와 연동하여, 상기 사용자 입력 해시값과 관련해서 하나 이상의 IPFS(300)에 분산 저장된 복수의 서브 파일을 수집한다. 여기서, 상기 서브 파일은 원본 파일이 복수로 분할된 경우, 상기 복수로 분할된 개별 파일을 나타낸다.In addition, the client server 200 cooperates with the plurality of IPFS 300 to collect a plurality of sub files distributed and stored in one or more IPFS 300 in relation to the user input hash value. Here, when the original file is divided into plural, the sub-file indicates the individual file divided into plural.

또한, 상기 클라이언트 서버(200)는 상기 수집된 복수의 서브 파일을 조합하여, 상기 사용자 입력 해시값에 대응하는 하나의 원본 파일을 생성한다.In addition, the client server 200 generates one original file corresponding to the user input hash value by combining the plurality of collected sub files.

또한, 상기 클라이언트 서버(200)는 상기 생성된 원본 파일(또는 상기 사용자 입력 해시값에 대응하는 파일/원본 파일)을 상기 단말(100)에 전송한다.Also, the client server 200 transmits the generated original file (or a file/original file corresponding to the user input hash value) to the terminal 100 .

이때, 상기 클라이언트 서버(200)와 상기 복수의 IPFS(300) 간의 연동에 의해서 상기 사용자 입력 해시값과 관련한 복수의 서브 파일이 수집되지 않는 경우, 상기 클라이언트 서버(200)는 상기 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 상기 단말(100)에 전송할 수도 있다.At this time, when the plurality of sub files related to the user input hash value are not collected due to the interworking between the client server 200 and the plurality of IPFS 300 , the client server 200 receives the user input hash value and Information indicating that a related file does not exist in the IPFS 300 may be transmitted to the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 다른 해시값, 상기 특정 파일, 상기 진위 여부 확인 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives the other hash value, the specific file, the authenticity check request information, the identification information of the terminal 100, and the like transmitted from the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 복수의 IPFS(300) 중에서 랜덤하게 선택되는 다른 특정 IPFS(300)에 상기 수신된 특정 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received specific file and identification information of the terminal 100 to another specific IPFS 300 randomly selected from among the plurality of IPFS 300 .

즉, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 복수의 IPFS(300) 중에서 랜덤하게 또는 미리 설정된 방식으로 상기 다른 특정 IPFS(300)선택한다.That is, the client server 200 selects the other specific IPFS 300 randomly or in a preset manner from among a plurality of IPFS 300 interworking with the corresponding client server 200 .

또한, 상기 클라이언트 서버(200)는 상기 선택된 다른 특정 IPFS(300)로 상기 수신된 특정 파일, 상기 단말(100)의 식별 정보 등을 전송한다. 이때, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 정보들에 유형 정보가 포함되어 있지 않은 상태인 경우에, 디폴트로 미리 설정된 다른 유형 정보(예를 들어 프라이빗 항목 등 포함)를 상기 특정 파일, 상기 단말(100)의 식별 정보 등과 함께 상기 다른 특정 IPFS(300)에 전송할 수도 있다.In addition, the client server 200 transmits the received specific file and identification information of the terminal 100 to the other selected specific IPFS 300 . At this time, when the type information is not included in the information transmitted from the terminal 100, the client server 200 provides other type information (eg, including a private item) preset by default. It may be transmitted to the other specific IPFS 300 together with a specific file, identification information of the terminal 100, and the like.

또한, 상기 클라이언트 서버(200)는 상기 다른 특정 IPFS(300)로부터 전송되는 또 다른 해시값(또는 상기 특정 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the client server 200 receives another hash value (or a hash value related to the specific file) transmitted from the other specific IPFS 300 , identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 수신된 해당 특정 파일과 관련한 또 다른 해시값과 앞서 수신된 다른 해시값이 일치하는지 여부를 판단(또는 확인)한다.Also, the client server 200 determines (or confirms) whether another hash value related to the received specific file matches another hash value previously received.

또한, 상기 클라이언트 서버(200)는 상기 판단 결과(또는 상기 확인 결과)에 따라, 해당 특정 파일의 진위 여부에 대한 정보를 생성하고, 상기 생성된 해당 특정 파일의 진위 여부에 대한 정보를 상기 단말(100)에 전송한다. 여기서, 상기 특정 파일의 진위 여부에 대한 정보는 해당 특정 파일이 감정 대상 파일(또는 상기 다른 해시값에 대응하는 감정 대상 파일)과 일치하지 않음을 나타내는 정보, 해당 특정 파일이 감정 대상 파일과 일치함을 나타내는 정보, 해당 특정 파일과 관련한 또 다른 해시값 등을 포함한다.In addition, the client server 200 generates information on whether the specific file is authentic or not according to the determination result (or the verification result), and transmits information on whether the generated specific file is authentic or not to the terminal ( 100) to the Here, the information on the authenticity of the specific file is information indicating that the specific file does not match the analysis target file (or the analysis target file corresponding to the other hash value), and the specific file matches the analysis target file , and another hash value associated with that particular file.

상기 IPFS(Inter Planetary File System: 분산형 파일 시스템)(300)는 상기 단말(100), 상기 클라이언트 서버(200), 상기 이더리움 서버(400) 등과 통신한다. 이때, 상기 IPFS(300)는 복수로 구성되며, 상기 복수의 IPFS(300)는 서로 연동하도록 구성한다. 여기서, 상기 IPFS(300)는 냅스터나 토렌트 등의 P2P(peer-to-peer) 방식으로 대용량 파일이나 데이터를 공유하기 위한 프로토콜로서, 분산 파일 시스템에서 데이터를 공유하고 저장하기 위한 네트워크이다.The Inter Planetary File System (IPFS) 300 communicates with the terminal 100 , the client server 200 , the Ethereum server 400 , and the like. In this case, the IPFS 300 is configured in plurality, and the plurality of IPFS 300 is configured to interwork with each other. Here, the IPFS 300 is a protocol for sharing large files or data in a peer-to-peer (P2P) manner such as Napster or Torrent, and is a network for sharing and storing data in a distributed file system.

또한, 상기 IPFS(300)는 콘텐트-주소(content-address)를 이용해 모든 컴퓨터 기기들(미도시)을 연결하는 글로벌 네임스페이스(global namespace)에서 각각의 파일들을 식별한다.Also, the IPFS 300 identifies each file in a global namespace that connects all computer devices (not shown) using a content-address.

즉, 상기 IPFS(300)는 하나의 비트토렌트 스웜(BitTorrent Swarm)처럼 깃 레포지토리(Git repository) 안의 객체를 교환하는 방식이다.That is, the IPFS 300 is a method of exchanging objects in a Git repository like a single BitTorrent Swarm.

또한, 상기 IPFS(300)는 분산 해시테이블을 이용하며, 자체 인증 네임스페이스(self certifying namespace)와 인센티브 블록 교환(incentivized block exchange) 방식을 결합하며, SPOF(Single Point of Failure: 단일장애점)가 없으므로, 그로 인해 노드 간의 신뢰를 필요로 하지 않는다.In addition, the IPFS 300 uses a distributed hash table, combines a self certifying namespace and an incentive block exchange method, and SPOF (Single Point of Failure) is Therefore, there is no need for trust between nodes as a result.

또한, 상기 IPFS(300)는 데이터의 내용에 따라 고유의 해시값이 다르며, 이 해시값을 이용해서 상기 복수의 IPFS(300)에 분산 저장되어 있는 콘텐츠(또는 파일/서브 파일)를 찾고, 해당 데이터를 잘게 나눠서 빠른 속도로 가져온 두, 다시 하나로 합쳐서 제공할 수 있다. 이때, 해시 테이블은 한 쌍(key, value)으로 저장하는데, 분산화된 많은 노드들이 이 정보를 저장하기 때문에 사용자는 HTTP 방식에 비해 더 빠른 속도로 데이터를 저장하고 가져올 수 있다.In addition, the IPFS 300 has a unique hash value that differs depending on the content of the data, and the content (or file/sub-file) distributed and stored in the plurality of IPFS 300 is found using this hash value, and the corresponding It can be provided by breaking the data into small pieces, fetching them at high speed, and merging them back into one. At this time, the hash table is stored as a pair (key, value), and since many distributed nodes store this information, the user can store and retrieve data at a faster speed than the HTTP method.

또한, 상기 클라이언트 서버(200)로부터 선택된 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 상기 유형 정보, 상기 파일, 상기 단말(100)의 식별 정보 등을 수신한다.Also, the IPFS 300 selected from the client server 200 receives the type information, the file, and identification information of the terminal 100 transmitted from the client server 200 .

또한, 상기 특정 IPFS(300)는 상기 수신된 유형 정보, 상기 파일 등을 근거로 해시값을 생성한다.In addition, the specific IPFS 300 generates a hash value based on the received type information, the file, and the like.

또한, 상기 특정 IPFS(300)는 상기 생성된 해시값(또는 상기 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the specific IPFS 300 transmits the generated hash value (or a hash value related to the file), identification information of the terminal 100, and the like to the client server 200 .

또한, 상기 특정 IPFS(300)는 다른 복수의 IPFS(300)(또는 상기 복수의 IPFS(300) 중에서 상기 특정 IPFS(300)를 제외한 나머지 IPFS(300))와 연동하여, 상기 파일을 분산 저장(또는 관리)한다.In addition, the specific IPFS 300 interworks with a plurality of other IPFS 300 (or the remaining IPFS 300 excluding the specific IPFS 300 among the plurality of IPFS 300) to distribute and store the file ( or management).

또한, 상기 복수의 IPFS(300)는 상기 클라이언트 서버(200)와 연동하여, 상기 사용자 입력 해시값과 관련해서 하나 이상의 IPFS(300)에 분산 저장된 복수의 서브 파일을 상기 클라이언트 서버(200)에 각각 제공(또는 전송)한다.In addition, the plurality of IPFS 300 cooperates with the client server 200 to provide a plurality of sub files distributed and stored in one or more IPFS 300 in relation to the user input hash value to the client server 200, respectively. Provide (or transmit).

또한, 상기 클라이언트 서버(200)로부터 선택된 다른 특정 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 상기 특정 파일, 상기 다른 유형 정보, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, another specific IPFS 300 selected from the client server 200 receives the specific file, the other type information, and identification information of the terminal 100 transmitted from the client server 200 .

또한, 상기 다른 특정 IPFS(300)는 상기 수신된 상기 특정 파일, 상기 다른 유형 정보 등을 근거로 또 다른 해시값을 생성한다. 이때, 상기 다른 특정 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 정보들 중에서 유형 정보가 포함되지 않은 상태인 경우에, 디폴트로 미리 설정된 다른 유형 정보(예를 들어 프라이빗 항목 등 포함)와 상기 수신된 특정 파일 등을 근거로 상기 또 다른 해시값을 생성할 수도 있다.In addition, the other specific IPFS 300 generates another hash value based on the received specific file, the other type information, and the like. At this time, when the other specific IPFS 300 does not include type information among the information transmitted from the client server 200, other type information preset by default (eg, including a private item) and The other hash value may be generated based on the received specific file or the like.

또한, 상기 다른 특정 IPFS(300)는 상기 생성된 또 다른 해시값(또는 상기 특정 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the other specific IPFS 300 transmits the other generated hash value (or a hash value related to the specific file), identification information of the terminal 100, and the like to the client server 200 .

또한, 상기 다른 특정 IPFS(300)는 또 다른 복수의 IPFS(300)(또는 상기 복수의 IPFS(300) 중에서 상기 다른 특정 IPFS(300)를 제외한 나머지 IPFS(300))와 연동하여, 상기 특정 파일을 분산 저장(또는 관리)한다.In addition, the other specific IPFS 300 interworks with another plurality of IPFS 300 (or the other IPFS 300 excluding the other specific IPFS 300 among the plurality of IPFS 300), and the specific file distributed storage (or management).

상기 이더리움 서버(Ethereum Server)(400)는 상기 단말(100), 상기 클라이언트 서버(200), 상기 복수의 IPFS(300) 등과 통신한다. 이때, 상기 이더리움 서버(400)는 이더리움 블록(또는 이더리움 블록체인)을 제공하는 서버일 수 있다. 여기서, 상기 이더리움은 퍼블릭 블록체인을 기반으로 한 분산 컴퓨팅 환경이며, 스마트 컨트랙트로 애플리케이션을 구축할 수 있는 오픈 소스 소프트웨어일 수 있다.The Ethereum server (Ethereum Server) 400 communicates with the terminal 100 , the client server 200 , the plurality of IPFSs 300 , and the like. In this case, the Ethereum server 400 may be a server that provides an Ethereum block (or an Ethereum block chain). Here, the Ethereum is a distributed computing environment based on a public block chain, and may be open source software that can build applications with smart contracts.

본 발명의 실시예에서 상기 이더리움 서버(400)는 퍼블릭 블록체인 및/또는 프라이빗 블록체인으로 구성할 수 있으며, 주요 특징 구현을 위해서, 프라이빗 이더리움 블록체인 네트워크로 구성할 수 있다.In an embodiment of the present invention, the Ethereum server 400 may be configured as a public block chain and/or a private block chain, and may be configured as a private Ethereum block chain network to implement key features.

또한, 상기 이더리움 서버(400)는 상기 클라이언트 서버(200)로부터 전송되는 상기 복수의 입력값, 상기 단말(100)의 식별 정보 등을 수신한다.In addition, the Ethereum server 400 receives the plurality of input values transmitted from the client server 200 , identification information of the terminal 100 , and the like.

또한, 상기 이더리움 서버(400)는 상기 수신된 복수의 입력값을 이더리움 블록에 저장한다. 이때, 상기 이더리움 서버(400)는 상기 복수의 입력값에 미리 설정된 합의 알고리즘 방식(예를 들어 POA(Proof of Authority: 권한 증명), POW(Proof of Work: 작업 증명) 등 포함), 스마트 컨트랙트(smart contract) 등을 적용하여, 상기 수신된 복수의 입력값을 상기 이더리움 블록에 저장할 수도 있다. 여기서, 상기 POA는 확정된 관리주체가 순서대로 돌아가며 블록을 생성(또는 등록된 계정들이 순차로 블록을 생성)함으로써, 자원의 소모와 블록 생성 소요 시간이 상기 POW에 비하여 적다. 이때, 상기 이더리움 서버(400)는 속도와 기밀성의 유지를 위해서 프라이빗 네트워크로 구성할 수 있다. 또한, 상기 스마트 컨트랙트는 블록체인 위에 올려놓은 약속으로, 특정 조건을 만족하면 특정 행동을 취하라는 코드를 거래에 추가하는 것이다.In addition, the Ethereum server 400 stores the received plurality of input values in an Ethereum block. At this time, the Ethereum server 400 includes a consensus algorithm method preset to the plurality of input values (for example, POA (Proof of Authority), POW (Proof of Work: Proof of Work), etc.), smart contract (smart contract) may be applied, and the received plurality of input values may be stored in the Ethereum block. Here, in the POA, as the determined management entity takes turns generating blocks (or registered accounts sequentially generate blocks), resource consumption and block generation time are shorter than those of the POW. At this time, the Ethereum server 400 may be configured as a private network to maintain speed and confidentiality. In addition, the smart contract is a promise placed on the block chain, and a code to take a specific action when a specific condition is satisfied is added to the transaction.

또한, 상기 이더리움 서버(400)는 트랜잭션 처리 결과, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 여기서, 상기 트랜잭션 처리 결과(또는 이더리움 블록 저장 결과)는 블록 해시값(block hash), 블록 번호(blocknumber), 수신자 정보(to), 트랜잭션 해시값(transaction hash) 등을 포함한다.In addition, the Ethereum server 400 transmits the transaction processing result, identification information of the terminal 100, and the like to the client server 200 . Here, the transaction processing result (or Ethereum block storage result) includes a block hash value, a block number, receiver information (to), a transaction hash value, and the like.

또한, 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 성능 테스트를 위해서, 동일한 AWS EC2AWS (Amazon Web Services Elastic Compute Cloud) 사양인 Ubuntu Server 20.04 LTS, 인스턴스 유형 t2.xlarge(vCPUs 4개, 메모리 16GB), SSD 60Gb의 환경에서 geth를 이용해 직접 프라이빗 이더리움 네트워크를 설치하여 운영하였다.In addition, for the performance test, the electronic document management system 10 using Ethereum and IPFS is the same AWS EC2AWS (Amazon Web Services Elastic Compute Cloud) specification Ubuntu Server 20.04 LTS, instance type t2.xlarge (4 vCPUs) , memory 16GB), and SSD 60Gb, directly installed and operated a private Ethereum network using geth.

본 발명의 실시예에 따른 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 이더리움 프라이빗 네트워크 구축 시 POW와 POA 중 어떠한 합의 알고리즘이 더욱 속도가 빠른지에 대해서 성능 평가를 수행하였다.The electronic document management system 10 using Ethereum and IPFS according to an embodiment of the present invention performed performance evaluation on which consensus algorithm among POW and POA is faster when constructing an Ethereum private network.

즉, 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 이더리움 프라이빗 네트워크 구축 시 POW와 POA의 성능 비교를 위해 트랜잭션 요청 시부터 트랜잭션 완료 시점까지의 실제 시간 차이를 콘솔 로그(console log)로 출력하도록 하여 측정한다. 이때, 노드의 숫자에 따른 유의적인 성능 차이가 있는지 확인하기 위해서, 상기 POW와 상기 POA 모두 노드 1개, 3개, 6개로 각각 측정한다.That is, the electronic document management system 10 using Ethereum and IPFS records the actual time difference from the time of the transaction request to the completion of the transaction in order to compare the performance of POW and POA when constructing the Ethereum private network. ) to output and measure. At this time, in order to check whether there is a significant performance difference according to the number of nodes, the POW and the POA are measured with 1 node, 3 nodes, and 6 nodes, respectively.

또한, 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 프라이빗 네트워크의 안정성을 측정하기 위해서, 약 60시간 이후 재측정한다. 이때, 각 30회씩 측정하되, 평균 1분마다 측정하기 위하여 푸아송 분포(Poisson distribution)를 이용한다.In addition, the electronic document management system 10 using Ethereum and IPFS is re-measured after about 60 hours to measure the stability of the private network. At this time, each measurement is performed 30 times, and a Poisson distribution is used to measure the average every 1 minute.

측정 결과, 다음의 [표 1]과 같이, 프라이빗 네트워크를 막 구동한 시점에는 POW와 POA의 경우, 큰 차이 없이 유사한 속도가 측정되었으며, 노드 1개일 경우에는 상기 POW가 14.59초, 상기 POA는 15.10초로 측정되었고, 노드 3개일 경우에는 상기 POW가 14.73초, 상기 POA는 15.19초로 측정되었고, 노드 6개일 경우에는 상기 POW가 15.36초, 상기 POA는 15.85초로, 3가지 경우 모두 상기 POW가 좀 더 나은 결과가 나왔다. 또한, 노드의 개수가 증가함에 따라 속도가 조금씩 느려짐을 확인할 수 있다.As a result of the measurement, as shown in the following [Table 1], similar speeds were measured for POW and POA when the private network was just started. In case of one node, the POW was 14.59 seconds and the POA was 15.10. Second, the POW is 14.73 seconds and the POA is 15.19 seconds when there are 3 nodes, and when there are 6 nodes, the POW is 15.36 seconds and the POA is 15.85 seconds. In all three cases, the POW is better The results came out. Also, it can be seen that the speed gradually slows down as the number of nodes increases.


노드 개수

number of nodes
알고리즘algorithm
POWPOW POAPOA 1노드 - 평균 시간(ms)/tx1 node - average time (ms)/tx 14,59014,590 15,10215,102 3노드 - 평균 시간(ms)/tx3 nodes - average time (ms)/tx 14,73014,730 15,19915,199 6노드 - 평균 시간(ms)/tx6 nodes - average time (ms)/tx 15,36415,364 15,85715,857 전체 - 평균 시간(ms)/txTotal - Average Time (ms)/tx 14,89514,895 15,38615,386

도 2는 POW 알고리즘을 이용한 이더리움 네트워크의 노드 개수에 따른 트랜잭션 완료까지의 속도 차이를 측정한 그래프로, 각각의 편차는 다르나 평균 트랜잭션 속도는 느려짐을 확인할 수 있다.2 is a graph measuring the difference in speed until transaction completion according to the number of nodes in the Ethereum network using the POW algorithm, and it can be seen that the average transaction speed is slow although each deviation is different.

또한, 도 3은 POA 알고리즘을 이용한 이더리움 네트워크의 노드 개수에 따른 트랜잭션 완료까지의 속도 차이를 측정한 그래프로, 상대적으로 POW보다 일정한 트랜잭션 속도를 보이며, 노드 개수의 증가에 따라 역시 평균 트랜잭션 속도가 느려짐을 확인할 수 있다.3 is a graph measuring the difference in speed until transaction completion according to the number of nodes in the Ethereum network using the POA algorithm. You can see the slowness.

또한, 이더리움 네트워크 가동 후, 약 60시간 이후 측정한 결과에서는 [표 2]와 같이, POA가 POW에 비해 훨씬 뛰어난 성능을 나타냈다.In addition, as shown in [Table 2], POA showed much superior performance compared to POW in the results measured after about 60 hours after the Ethereum network was operated.

즉, 노드 3개의 경우, POW의 평균 트랜잭션 완료시까지 걸리는 시간이 26.38초로 처음에 비해 그 성능이 확연히 떨어진 데 비하여, POA는 17.16초로 성능이 다소 떨어지긴 했으나, POW에 비하면 안정적임을 확인할 수 있다.That is, in the case of three nodes, the average POW time to complete a transaction was 26.38 seconds, which was significantly lower than the initial performance, whereas the POA performance was 17.16 seconds, which was slightly lower, but it can be confirmed that it is more stable than POW.


노드 개수

number of nodes
알고리즘algorithm
POWPOW POAPOA 3 노드 -평균 시간(ms)/tx3 nodes - average time (ms)/tx 26,38626,386 17,16117,161

도 4는 60시간 경과 후 노드 3개의 POW와 POA의 트랜잭션 완료시까지의 시간을 측정한 그래프로, 각각 10,000개 이상씩 블록이 생성된 후, 확인 결과 POW는 난이도 및 속도의 편차가 커서 트랜잭션 완료시까지의 시간이 불규칙적인데 비하여 POA는 규칙적인 상태로 확인할 수 있다.4 is a graph measuring the time until transaction completion of POW and POA of three nodes after 60 hours. After 10,000 or more blocks are created, respectively, the POW has a large deviation in difficulty and speed, so that the transaction is completed until the completion of the transaction. While the time of POA is irregular, it can be confirmed that POA is in a regular state.

이는, 모니터링에 따라, 작업 증명 과정 중에 마이닝(mining) 난이도의 변화, 블록 생성 시간의 불규칙성 등으로 인해, 블록 생성 평균 속도가 POA가 최초 설정 상태인 5초(약 5.09초)를 유지한 것에 비해, POW는 평균 12.58초까지 늘어났기 때문이다. 그러므로 네트워크의 안정성이라는 측면에서 볼 때, 정해진 노드들끼리 블록체인 프라이빗 네트워크를 구축할 때는, POW보다 POA가 더욱 적합하다고 판단할 수 있다.According to monitoring, due to changes in mining difficulty during the proof-of-work process, irregularity in block generation time, etc., the average speed of block generation was 5 seconds (about 5.09 seconds), which was initially set by POA. , because the POW increased to an average of 12.58 seconds. Therefore, from the point of view of network stability, it can be judged that POA is more suitable than POW when establishing a blockchain private network between fixed nodes.

또한, 본 발명의 실시예에 따른 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 퍼블릭 IPFS와 프라이빗 IPFS의 성능을 비교 측정하였다.In addition, the electronic document management system 10 using the Ethereum and IPFS according to an embodiment of the present invention compared and measured the performance of the public IPFS and the private IPFS.

즉, 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 IPFS의 성능 측정을 위해서 퍼블릭 IPFS의 업로드 용량 제한이 100MB이므로, 10MB ~ 90MB까지 10MB 단위로 9개 텍스트 더미 파일을 만들어, 각각 10회씩 업로드와 다운로드 시간을 측정하였고, 평균 1분마다 측정하기 위하여 푸아송 분포를 이용하였다. 이때, 프라이빗 IPFS는 2개의 AWS에 직접 별도 노드를 설치하여 구성하였다.That is, in the electronic document management system 10 using Ethereum and IPFS, the upload capacity limit of the public IPFS is 100 MB for IPFS performance measurement, so 9 text dummy files from 10 MB to 90 MB are created in 10 MB units, each Upload and download times were measured 10 times, and Poisson distribution was used to measure the average every minute. At this time, the private IPFS was configured by directly installing a separate node in two AWS.

측정 결과, 업로드와 다운로드 모두 프라이빗 IPFS가 퍼블릭 IPFS에 비하여 훨씬 우수한 성능을 나타냈다.As a result of measurement, private IPFS performed much better than public IPFS for both upload and download.

다음의 [표 3]과 같이, 1ms당 업로드 바이트(byte) 수치를 비교 시, 퍼블릭 IPFS는 420 바이트, 프라이빗 IPFS는 17,167 바이트로, 프라이빗 IPFS가 40.85배만큼 더 뛰어났다.As shown in [Table 3] below, when comparing the upload bytes per 1ms, the public IPFS is 420 bytes and the private IPFS is 17,167 bytes, which is 40.85 times better than the private IPFS.

또한, 1ms당 다운로드 바이트 수치를 비교 시, 퍼블릭 IPFS는 1,749 바이트, 프라이빗 IPFS는 45,155 바이트로, 프라이빗 IPFS가 25.81배만큼 더 뛰어났다.Also, when comparing download bytes per 1ms, public IPFS is 1,749 bytes and private IPFS is 45,155 bytes, which is 25.81 times better than private IPFS.

Upload ByteUpload Byte Download ByteDownload Byte Public IPFSPublic IPFS 420420 1,7491,749 Private IPFSPrivate IPFS 17,16717,167 45,15545,155

또한, 이를 1MB당 업로드 속도(ms) 및 다운로드 속도(ms)로 표현하여 비교해보면, 다음의 [표 4]와 같이, 업로드의 경우 퍼블릭 IPFS는 평균 124.53초, 프라이빗 IPFS는 평균 2.98초가 소요되었으며, 다운로드의 경우 퍼블릭 IPFS는 평균 28.73초, 프라이빗 IPFS는 평균 1.13초가 소요되었다.In addition, when expressing this in terms of upload speed (ms) and download speed (ms) per 1MB, as shown in the following [Table 4], in the case of upload, it took an average of 124.53 seconds for public IPFS and 2.98 seconds for private IPFS, For download, it took an average of 28.73 seconds for public IPFS and 1.13 seconds for private IPFS.

Upload Speed(ms)Upload Speed(ms) Download Speed(ms)Download Speed(ms) Public IPFSPublic IPFS 124,539124,539 28,73928,739 Private IPFSPrivate IPFS 2,9882,988 1,1391,139

도 5 및 도 6은 퍼블릭 IPFS와 프라이빗 IPFS에서 파일 용량을 10MB에서 90MB까지 각각 10MB씩 사이즈를 증가시켜 업로드 속도와 다운로드 속도를 비교한 그래프이다.5 and 6 are graphs comparing upload speed and download speed in public IPFS and private IPFS by increasing the file size by 10 MB from 10 MB to 90 MB, respectively.

상기 도 5 내지 도 6에 도시된 바와 같이, 퍼블릭 IPFS와 프라이빗 IPFS 모두 파일 용량이 커짐에 따라 업로드 및 다운로드에 걸리는 시간은 유의적으로 증가하였다.As shown in FIGS. 5 to 6, upload and download times significantly increased as the file size of both public IPFS and private IPFS increased.

도 7 및 도 8은 상기 도 5 및 상기 도 6의 내용을 파일 용량별로 1ms당 업로드 바이트 및 다운로드 바이트로 환산한 그래프로, 각각의 경우 모두 프라이빗 IPFS의 성능이 우수함을 확인할 수 있다.7 and 8 are graphs in which the contents of FIGS. 5 and 6 are converted into upload bytes and download bytes per 1 ms for each file size, and in each case, it can be confirmed that the performance of the private IPFS is excellent.

이처럼 IPFS는 퍼블릭 IPFS에 비해서 프라이빗 IPFS가 더욱 뛰어난 성능을 나타냄을 확인할 수 있다.As such, it can be seen that private IPFS shows better performance than public IPFS.

이와 같이, 본 발명의 실시예에 따른 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 공공기관 등을 포함한 일반 사용기관에서 블록생성 속도가 일정한 POA를 이용하여 정보들을 저장하도록 구성할 수 있다.As such, the electronic document management system 10 using Ethereum and IPFS according to an embodiment of the present invention is configured to store information using a POA with a constant block generation rate in general user organizations including public institutions. can

또한, 상기 이더리움과 IPFS를 활용한 전자문서 관리 시스템(10)은 문서의 보안성과 성능 차이를 고려할 경우, 프라이빗 IPFS를 이용해서 정보(또는 파일)를 분산 저장하도록 구성할 수 있다.In addition, the electronic document management system 10 using Ethereum and IPFS can be configured to distribute and store information (or files) using private IPFS when considering the difference in document security and performance.

또한, 해당 복수의 IPFS(300)에 분산 저장된 특정 파일을 삭제(또는 파쇄)하고자 하는 경우, 상기 클라이언트 서버(200)는 상기 복수의 IPFS(300)와 연동하여, 동시에 상기 복수의 IPFS(300)에 분산 저장된 특정 파일(또는 해당 특정 파일과 관련한 복수의 서브 파일)을 동시에 삭제 처리함으로써, 공공기관 등에서 특정 파일에 대해서 생애주기가 설정된 경우, 해당 특정 파일을 영구 삭제하도록 구성할 수도 있다.In addition, when it is desired to delete (or shred) a specific file distributed and stored in the plurality of IPFS 300 , the client server 200 interworks with the plurality of IPFS 300 , and simultaneously the plurality of IPFS 300 . By simultaneously deleting a specific file (or a plurality of sub-files related to the specific file) distributed and stored in the , when a life cycle is set for a specific file in a public institution, it may be configured to permanently delete the specific file.

이와 같이, 단말에서 업로드하고자 하는 파일을 IPFS를 통해 분산 관리하고, IPFS를 통해 분산 관리되는 해당 파일의 해시값을 이더리움의 블록에 저장할 수 있다.In this way, the file to be uploaded from the terminal can be managed distributedly through IPFS, and the hash value of the file that is distributed and managed through IPFS can be stored in a block of Ethereum.

또한, 이와 같이, 단말로부터 파일과 관련한 해시값이 입력되는 경우, IPFS를 통해 분산 관리 중인 해당 해시값과 관련한 파일을 불러와서 해당 파일의 내용을 확인 가능하도록 제공할 수 있다.In addition, when a hash value related to a file is inputted from the terminal as described above, a file related to the hash value being distributed and managed through IPFS can be called and the contents of the file can be checked.

또한, 이와 같이, 단말에서 원본 파일과 관련한 해시값 및 파일의 진위 여부 확인을 위한 파일을 업로드하는 경우, POA 합의 알고리즘 또는 POW 합의 알고리즘을 통해 원본 파일과 업로드된 파일 간의 비교를 통해 진위 여부를 제공할 수 있다.In addition, when uploading a file for checking the authenticity of the hash value related to the original file and the file in the terminal as described above, the authenticity is provided through comparison between the original file and the uploaded file through the POA consensus algorithm or the POW consensus algorithm. can do.

이하에서는, 본 발명에 따른 이더리움과 IPFS를 활용한 전자문서 관리 방법을 도 1 내지 도 16을 참조하여 상세히 설명한다.Hereinafter, an electronic document management method using Ethereum and IPFS according to the present invention will be described in detail with reference to FIGS. 1 to 16 .

도 9 내지 도 11은 본 발명의 실시예에 따른 이더리움과 IPFS를 활용한 전자문서 관리 방법을 나타낸 흐름도이다.9 to 11 are flowcharts illustrating an electronic document management method using Ethereum and IPFS according to an embodiment of the present invention.

먼저, 단말(100)은 메타마스크(MetaMask)를 통해 클라이언트 서버(200)에 접속하고, 상기 클라이언트 서버(200)에서 제공하는 초기 화면을 표시(또는 출력)한다. 여기서, 상기 초기화면은 IPFS(300)에 업로드할 파일과 관련해서 IPFS의 유형인 퍼블릭(public) 또는 프라이빗(private)을 선택하기 위한 유형 선택 메뉴(또는 유형 선택 항목/버튼), IPFS(300)에 업로드하고자 하는 파일을 선택하기 위한 파일 선택 메뉴, IPFS(300)에 파일을 업로드하기 위한 업로드 메뉴, 파일 업로드에 따른 해시값을 표시하기 위한 업로드 결과 표시 메뉴(또는 업로드 결과/해시값 표시 영역), 파일 업로드에 따른 해시값, 파일과 관련한 추가 정보 등을 입력하기 위한 추가 정보 입력 메뉴, 상기 추가 정보 입력 메뉴를 통해 입력된 정보들을 이더리움 블록에 저장하기 위한 제출 메뉴, 트랜잭션 처리 결과를 표시하기 위한 트랜잭션 결과 표시 메뉴(또는 트랜잭션 결과 표시 영역), 단말(100)의 사용자 입력에 따른 해시값과 관련한 파일을 확인하거나 다운로드하기 위한 해시값 입력 메뉴, 상기 해시값 입력 메뉴를 통해 입력된 해시값과 관련한 파일을 검색하기 위한 파일보기 메뉴, 해당 해시값과 관련한 파일 검색에 따라 검색된 파일을 다운로드하기 위한 다운로드 메뉴, 단말(100)의 사용자 입력에 따른 특정 파일의 진위 여부를 확인하기 위한 확인 대상 파일과 관련한 확인 대상 해시값을 입력하기 위한 다른 해시값 입력 메뉴, 진위 여부를 확인하고자 하는 특정 파일을 선택하기 위한 추가 파일 선택 메뉴, 단말(100)의 사용자 입력에 따른 특정 파일의 진위여부를 확인하기 위한 파일 진위 여부 확인 메뉴, 파일 진위 여부 결과를 표시하기 위한 진위 여부 결과 표시 메뉴(또는 진위 여부 결과 표시 영역) 등을 포함한다.First, the terminal 100 accesses the client server 200 through a metamask, and displays (or outputs) an initial screen provided by the client server 200 . Here, the initial screen is a type selection menu (or type selection item/button) for selecting the type of IPFS, which is public or private, in relation to the file to be uploaded to the IPFS 300 , IPFS 300 . File selection menu to select a file to be uploaded to IPFS (300), Upload menu to upload a file to IPFS 300 , an additional information input menu for entering hash values according to file upload, additional information related to files, etc., a submission menu for storing information entered through the additional information input menu in the Ethereum block, and display of transaction processing results a transaction result display menu (or transaction result display area) for A file view menu for searching a related file, a download menu for downloading a file searched according to a file search related to a corresponding hash value, a verification target file for checking the authenticity of a specific file according to a user input of the terminal 100, and Another hash value input menu for inputting a related verification target hash value, an additional file selection menu for selecting a specific file for which authenticity is to be checked, and for checking the authenticity of a specific file according to a user input of the terminal 100 and a file authenticity check menu, a fidelity result display menu (or a fidelity result display area) for displaying a file authenticity result result, and the like.

일 예로, 제 1 단말(100)은 이더리움 호환 자바스크립트 API(Ethereum Compatible JavaScript API)인 web3.js를 이용하여 상기 메타마스크를 통해 이더리움 네트워크(또는 블록체인 네트워크)를 제공하는 상기 클라이언트 서버(200)에 접속하고, 도 12에 도시된 바와 같이, 상기 클라이언트 서버(200)로부터 제공되는 상기 초기 화면(1200)을 표시한다(S910).As an example, the first terminal 100 provides an Ethereum network (or a block chain network) through the metamask using web3.js, which is an Ethereum Compatible JavaScript API, the client server ( 200), and as shown in FIG. 12, the initial screen 1200 provided from the client server 200 is displayed (S910).

이후, 상기 단말(100)에 표시되는 초기화면 중에서, 해당 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목(예를 들어 퍼블릭, 프라이빗 등 포함)이 선택되고, 상기 파일 선택 메뉴에 따라 해당 단말(100)에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 미리 설정된 업로드 메뉴가 선택되는 경우, 상기 단말(100)은 상기 선택된 유형 정보(예를 들어 퍼블릭, 프라이빗 등 포함), 상기 선택된 파일, 파일 업로드 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 여기서, 상기 단말(100)의 식별 정보는 MDN, 모바일 IP, 모바일 MAC, Sim(가입자 식별 모듈) 카드 고유정보, 시리얼번호 등을 포함한다. 이때, 상기 업로드 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 유형 정보 및 상기 파일이 선택된 경우에 활성화될 수 있다.Thereafter, among the initial screen displayed on the terminal 100, according to a user input (or user selection/touch/control) of the corresponding terminal 100, any one item (eg, For example, public, private, etc.) is selected, any one of the one or more files stored in the terminal 100 is selected according to the file selection menu, and then the preset upload menu is selected, the terminal ( 100) transmits the selected type information (including, for example, public, private, etc.), the selected file, file upload request information, identification information of the terminal 100, and the like to the client server 200 . Here, the identification information of the terminal 100 includes MDN, mobile IP, mobile MAC, Sim (subscriber identification module) card unique information, serial number, and the like. In this case, the upload menu may be activated when the type information and the file are selected in the terminal 100 while maintaining an inactive state by default.

일 예로, 상기 제 1 단말에 표시되는 초기 화면(1200)에서 상기 제 1 단말의 사용자 선택에 따라 상기 유형 선택 메뉴 중에서 프라이빗 항목이 선택되고, 상기 파일 선택 메뉴에 따라 상기 제 1 단말에 저장된 복수의 파일 중에서 제 1 파일(예를 들어 jpg 형태의 이미지 파일인 5KBytes의 img001.jpg)이 선택된 후, 상기 초기 화면(1200)의 일측에 표시되는 업로드 메뉴(1210)가 선택될 때, 상기 제 1 단말은 상기 선택된 프라이빗 항목을 포함하는 제 1 유형 정보, 상기 선택된 제 1 파일(예를 들어 5KBytes의 img001.jpg), 제 1 파일 업로드 요청 정보, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다(S920).For example, on the initial screen 1200 displayed on the first terminal, a private item is selected from the type selection menu according to a user selection of the first terminal, and a plurality of files stored in the first terminal according to the file selection menu are selected. When the upload menu 1210 displayed on one side of the initial screen 1200 is selected after the first file (eg, img001.jpg of 5KBytes, which is a jpg image file) is selected from among the files, the first terminal transmits first type information including the selected private item, the selected first file (eg, img001.jpg of 5KBytes), first file upload request information, identification information of the first terminal, etc. to the client server 200 ) to (S920).

이후, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 유형 정보(예를 들어 퍼블릭, 프라이빗 등 포함), 상기 파일, 상기 파일 업로드 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives type information (eg, including public, private, etc.) transmitted from the terminal 100 , the file, the file upload request information, identification information of the terminal 100 , and the like. do.

또한, 상기 클라이언트 서버(200)는 복수의 IPFS(300) 중에서 랜덤하게 선택되는 특정 IPFS(300)에 상기 수신된 유형 정보, 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received type information, file, identification information of the terminal 100, etc. to a specific IPFS 300 randomly selected from among a plurality of IPFS 300 .

즉, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 복수의 IPFS(300) 중에서 랜덤하게 또는 미리 설정된 방식으로 상기 특정 IPFS(300)를 선택한다.That is, the client server 200 selects the specific IPFS 300 randomly or in a preset manner from among a plurality of IPFS 300 interworking with the corresponding client server 200 .

또한, 상기 클라이언트 서버(200)는 상기 선택된 특정 IPFS(300)로 상기 수신된 유형 정보, 상기 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received type information, the file, and identification information of the terminal 100 to the selected specific IPFS 300 .

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 단말로부터 전송되는 제 1 유형 정보(예를 들어 프라이빗 항목 등 포함), 상기 제 1 파일(예를 들어 5KBytes의 img001.jpg), 상기 제 1 파일 업로드 요청 정보, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 includes first type information (eg, including a private item, etc.) transmitted from the first terminal, the first file (eg, img001.jpg of 5KBytes), and the first file Receive upload request information, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 제 1 IPFS(300) 내지 제 10 IPFS(300) 중에서 랜덤하게 상기 제 1 IPFS를 선택하고, 상기 선택된 제 1 IPFS로 상기 제 1 유형 정보, 상기 제 1 파일, 상기 제 1 단말의 식별 정보 등을 전송한다(S930).In addition, the client server 200 randomly selects the first IPFS from among the first IPFS 300 to the tenth IPFS 300 interworking with the corresponding client server 200, and uses the selected first IPFS as the first IPFS. Type 1 information, the first file, identification information of the first terminal, and the like are transmitted (S930).

이후, 상기 특정 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 상기 유형 정보, 상기 파일, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the specific IPFS 300 receives the type information, the file, and identification information of the terminal 100 transmitted from the client server 200 .

또한, 상기 특정 IPFS(300)는 상기 수신된 유형 정보, 상기 파일 등을 근거로 해시값을 생성한다.In addition, the specific IPFS 300 generates a hash value based on the received type information, the file, and the like.

또한, 상기 특정 IPFS(300)는 상기 생성된 해시값(또는 상기 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the specific IPFS 300 transmits the generated hash value (or a hash value related to the file), identification information of the terminal 100, and the like to the client server 200 .

또한, 상기 특정 IPFS(300)는 다른 복수의 IPFS(300)(또는 상기 복수의 IPFS(300) 중에서 상기 특정 IPFS(300)를 제외한 나머지 IPFS(300))와 연동하여, 상기 파일을 분산 저장(또는 관리)한다.In addition, the specific IPFS 300 interworks with a plurality of other IPFS 300 (or the remaining IPFS 300 excluding the specific IPFS 300 among the plurality of IPFS 300) to distribute and store the file ( or management).

일 예로, 상기 제 1 IPFS는 상기 클라이언트 서버(200)로부터 전송되는 상기 제 1 유형 정보, 상기 제 1 파일, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the first IPFS receives the first type information, the first file, and identification information of the first terminal transmitted from the client server 200 .

또한, 상기 제 1 IPFS는 상기 수신된 제 1 유형 정보, 상기 제 1 파일 등을 근거로 제 1 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An)을 생성한다.In addition, the first IPFS generates a first hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) based on the received first type information and the first file.

또한, 상기 제 1 IPFS는 상기 생성된 제 1 해시값, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the first IPFS transmits the generated first hash value, identification information of the first terminal, and the like to the client server 200 .

또한, 상기 제 1 IPFS는 상기 제 2 IPFS 내지 상기 제 10 IPFS와 연동하여, 상기 제 1 파일(예를 들어 5KBytes의 001.jpg)을 분산 저장한다(S940).In addition, the first IPFS interworks with the second IPFS to the tenth IPFS, and distributes and stores the first file (eg, 001.jpg of 5KBytes) ( S940 ).

이후, 상기 클라이언트 서버(200)는 상기 특정 IPFS(300)로부터 전송되는 해시값(또는 상기 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives a hash value (or a hash value related to the file) transmitted from the specific IPFS 300 , identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 해당 단말(100)의 식별 정보에 대응하는 상기 단말(100)로 상기 수신된 해시값 등을 전송한다.In addition, the client server 200 transmits the received hash value, etc. to the terminal 100 corresponding to the identification information of the corresponding terminal 100 .

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 IPFS로부터 전송되는 제 1 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An), 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 receives a first hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) transmitted from the first IPFS, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 상기 수신된 제 1 단말의 식별 정보에 대응하는 상기 제 1 단말로 상기 제 1 해시값 등을 전송한다(S950).In addition, the client server 200 transmits the first hash value, etc. to the first terminal corresponding to the received identification information of the first terminal (S950).

이후, 상기 단말(100)은 앞서 전송된 상기 유형 정보, 상기 파일, 상기 파일 업로드 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해시값 등을 수신한다.Thereafter, the terminal 100 receives the hash value transmitted from the client server 200 in response to the previously transmitted type information, the file, and the file upload request information.

또한, 상기 단말(100)은 상기 수신된 해시값을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 추가 정보 입력 메뉴와 관련한 해시값 입력 항목에 상기 수신된 해시값을 자동 입력하여 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) the received hash value. In this case, the terminal 100 may automatically input and display the received hash value in the hash value input item related to the additional information input menu in the initial screen.

일 예로, 상기 제 1 단말은 앞서 전송된 제 1 유형 정보, 상기 제 1 파일 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 제 1 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An)을 수신한다.For example, the first terminal receives a first hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) transmitted from the client server 200 in response to the first type information and the first file transmitted earlier.

또한, 도 13에 도시된 바와 같이, 상기 제 1 단말은 상기 초기화면 내의 추가 정보 입력 메뉴 내의 해시값 입력 항목에 상기 수신된 제 1 해시값을 자동 입력하여 표시(1310)한다(S960).In addition, as shown in FIG. 13 , the first terminal automatically inputs and displays the received first hash value in the hash value input item in the additional information input menu in the initial screen ( 1310 ) ( S960 ).

이후, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신한다. 여기서, 상기 복수의 입력값은 해시값, 추가 정보(예를 들어 작성자명, 회사명, 부서명/팀명, 날짜 등 포함) 등을 포함한다.Thereafter, among the initial screen displayed on the terminal 100 , a plurality of input items corresponding to a plurality of input items included in the additional information input menu according to a user input (or user selection/touch/control) of the terminal 100 are provided. receive input. Here, the plurality of input values include hash values and additional information (eg, author name, company name, department/team name, date, etc.).

또한, 상기 단말(100)의 초기 화면의 일측에 표시되는 상기 미리 설정된 제출 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 복수의 입력값, 블록 저장 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 제출 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하는 경우에 활성화될 수 있다.In addition, when the preset submission menu displayed on one side of the initial screen of the terminal 100 is selected, the terminal 100 receives the plurality of input values, block storage request information, and It transmits identification information and the like to the client server 200 . In this case, the submission menu may be activated when a plurality of input values corresponding to a plurality of input items included in the additional information input menu are received from the terminal 100 while maintaining an inactive state by default.

일 예로, 상기 제 1 단말에 표시되는 초기 화면(1300) 중에서 상기 제 1 단말의 사용자 선택에 따라 상기 제 1 해시값, 제 1 추가 정보(예를 들어 작성자인 woo dong ho, 소속회사인 ABCDE co. 등 포함) 등을 포함하는 제 1 입력값을 수신한다.For example, according to the user's selection of the first terminal among the initial screen 1300 displayed on the first terminal, the first hash value and the first additional information (for example, the author woo dong ho, the affiliated company ABCDE co ., etc.) receives a first input value including

또한, 상기 초기 화면(1300)의 일측에 표시되는 제출 메뉴(1320)가 선택될 때, 상기 제 1 단말은 상기 제 1 입력값(예를 들어 상기 제 1 해시값, 상기 제 1 추가 정보 등 포함), 제 1 블록 저장 요청 정보, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다(S970).In addition, when the submission menu 1320 displayed on one side of the initial screen 1300 is selected, the first terminal includes the first input value (eg, the first hash value, the first additional information, etc.) ), first block storage request information, identification information of the first terminal, and the like are transmitted to the client server 200 (S970).

이후, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 복수의 입력값, 상기 블록 저장 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives the plurality of input values transmitted from the terminal 100 , the block storage request information, identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 수신된 복수의 입력값, 상기 단말(100)의 식별 정보 등을 이더리움 서버(400)에 전송한다.In addition, the client server 200 transmits the received plurality of input values, identification information of the terminal 100, and the like to the Ethereum server 400 .

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 단말로부터 전송되는 상기 제 1 입력값, 상기 제 1 블록 저장 요청 정보, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 receives the first input value transmitted from the first terminal, the first block storage request information, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 상기 이더리움 서버(400)에 상기 제 1 입력값, 상기 제 1 단말의 식별 정보 등을 전송한다(S980).In addition, the client server 200 transmits the first input value, identification information of the first terminal, etc. to the Ethereum server 400 interworking with the corresponding client server 200 (S980).

이후, 상기 이더리움 서버(400)는 상기 클라이언트 서버(200)로부터 전송되는 상기 복수의 입력값, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the Ethereum server 400 receives the plurality of input values transmitted from the client server 200 , identification information of the terminal 100 , and the like.

또한, 상기 이더리움 서버(400)는 상기 수신된 복수의 입력값을 이더리움 블록에 저장한다. 이때, 상기 이더리움 서버(400)는 상기 복수의 입력값에 미리 설정된 합의 알고리즘 방식(예를 들어 POA, POW 등 포함), 스마트 컨트랙트 등을 적용하여, 상기 수신된 복수의 입력값을 상기 이더리움 블록에 저장할 수도 있다.In addition, the Ethereum server 400 stores the received plurality of input values in the Ethereum block. At this time, the Ethereum server 400 applies a preset consensus algorithm method (including, for example, POA, POW, etc.), a smart contract, etc. to the plurality of input values to convert the received plurality of input values to the Ethereum. It can also be stored in blocks.

또한, 상기 이더리움 서버(400)는 트랜잭션 처리 결과, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 여기서, 상기 트랜잭션 처리 결과(또는 이더리움 블록 저장 결과)는 블록 해시값, 블록 번호, 수신자 정보, 트랜잭션 해시값 등을 포함한다.In addition, the Ethereum server 400 transmits the transaction processing result, identification information of the terminal 100, and the like to the client server 200 . Here, the transaction processing result (or Ethereum block storage result) includes a block hash value, a block number, recipient information, a transaction hash value, and the like.

일 예로, 상기 이더리움 서버(400)는 상기 클라이언트 서버(200)로부터 전송되는 상기 제 1 입력값, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the Ethereum server 400 receives the first input value transmitted from the client server 200, identification information of the first terminal, and the like.

또한, 상기 이더리움 서버(400)는 상기 수신된 제 1 입력값을 이더리움 블록에 저장하고, 상기 제 1 입력값의 저장에 따른 제 1 블록 해시값(예를 들어 0x6ac532144b0dbb041903b9e9b48e50d84c6c59d0f726ac81d2c45afc8994d9d1), 제 1 블록 번호(예를 들어 18259), 제 1 수신자 정보(예를 들어 0xe9f0a99c65924cd33798005c6283bac8f881d199), 제 1 트랜잭션 해시값(예를 들어 0xdb029e3a7d521c8bf75c041f18550a75e9a18209e91043f4ea70b7d1fa2628d3) 등을 포함하는 제 1 트랜잭션 처리 결과를 생성하고, 상기 생성된 제 1 트랜잭션 처리 결과, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다(S990).In addition, the Ethereum server 400 stores the received first input value in an Ethereum block, and a first block hash value according to the storage of the first input value (for example, 0x6ac532144b0dbb041903b9e9b48e50d84c6c59d0f726ac81d2c45afc8994d9d1), the first block number (for example, 18259), first recipient information (for example, 0xe9f0a99c65924cd33798005c6283bac8f881d199), a first transaction hash value (for example, 0xdb029e3a7d521c8bf75c041f18550a75e9a18209e91043f4ea70b7d1), a first transaction processing result including a result of processing and generating a first transaction processing result, etc. , and transmits the identification information of the first terminal and the like to the client server 200 (S990).

이후, 상기 클라이언트 서버(200)는 상기 이더리움 서버(400)로부터 전송되는 상기 트랜잭션 처리 결과, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives the transaction processing result transmitted from the Ethereum server 400 , identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 단말(100)의 식별 정보에 대응하는 상기 단말(100)로 상기 수신된 트랜잭션 처리 결과 등을 전송한다.In addition, the client server 200 transmits the received transaction processing result, etc. to the terminal 100 corresponding to the identification information of the terminal 100 .

일 예로, 상기 클라이언트 서버(200)는 상기 이더리움 서버(400)로부터 전송되는 상기 제 1 트랜잭션 처리 결과, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 receives the first transaction processing result transmitted from the Ethereum server 400, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 상기 수신된 제 1 단말의 식별 정보에 대응하는 상기 제 1 단말로 상기 제 1 트랜잭션 처리 결과 등을 전송한다(S1000).In addition, the client server 200 transmits the first transaction processing result, etc. to the first terminal corresponding to the received identification information of the first terminal (S1000).

이후, 상기 단말(100)은 앞서 전송된 상기 복수의 입력값, 상기 블록 저장 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 트랜잭션 처리 결과 등을 수신한다.Thereafter, the terminal 100 receives the transaction processing result transmitted from the client server 200 in response to the previously transmitted plurality of input values and the block storage request information.

또한, 상기 단말(100)은 상기 수신된 트랜잭션 처리 결과 등을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 트랜잭션 결과 표시 메뉴에 상기 수신된 트랜잭션 처리 결과 등을 자동으로 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) the received transaction processing result and the like. In this case, the terminal 100 may automatically display the received transaction processing result, etc. on the transaction result display menu in the initial screen.

일 예로, 상기 제 1 단말은 앞서 전송된 상기 제 1 입력값, 상기 제 1 블록 저장 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 제 1 블록 해시값(예를 들어 0x6ac532144b0dbb041903b9e9b48e50d84c6c59d0f726ac81d2c45afc8994d9d1), 제 1 블록 번호(예를 들어 18259), 제 1 수신자 정보(예를 들어 0xe9f0a99c65924cd33798005c6283bac8f881d199), 제 1 트랜잭션 해시값(예를 들어 0xdb029e3a7d521c8bf75c041f18550a75e9a18209e91043f4ea70b7d1fa2628d3) 등을 포함하는 제 1 트랜잭션 처리 결과를 수신한다.For example, the first terminal transmits a first block hash value (eg, 0x6ac532144b0dbb041903b9e9b48e50d84c6c59d0f726ac81d2c45afc8994d9d1) transmitted from the client server 200 in response to the previously transmitted first input value and the first block storage request information, etc.; Receive 1st transaction result including block number (eg 18259), first recipient information (eg 0xe9f0a99c65924cd33798005c6283bac8f881d199), first transaction hash value (eg 0xdb029e3a7d521c8bf75c041f18550a75e9a18209e91043f4ea70b3), etc.

또한, 도 14에 도시된 바와 같이, 상기 제 1 단말은 상기 초기화면 내의 트랜잭션 결과 표시 메뉴에 상기 수신된 제 1 트랜잭션 처리 결과(1400)를 표시한다(S1010).Also, as shown in FIG. 14 , the first terminal displays the received first transaction processing result 1400 on the transaction result display menu in the initial screen (S1010).

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 해시값 입력 메뉴에 포함된 해시값 입력 항목에 대응하는 사용자 입력 해시값을 수신한다. 여기서, 상기 사용자 입력 해시값은 해당 단말(100)의 사용자가 특정 해시값에 대응하는 파일 내용을 확인하거나 또는 해당 특정 해시값에 대응하는 파일을 다운로드하기 위한 해시값일 수 있다.In addition, among the initial screen displayed on the terminal 100, a user input corresponding to a hash value input item included in the hash value input menu according to a user input (or user selection/touch/control) of the terminal 100 Receive a hash value. Here, the user input hash value may be a hash value for the user of the terminal 100 to check the contents of a file corresponding to a specific hash value or to download a file corresponding to the specific hash value.

또한, 상기 단말(100)의 초기 화면의 일측에 표시되는 상기 미리 설정된 파일보기 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 사용자 입력 해시값, 파일 검색 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 파일보기 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 해시값 입력 메뉴에 포함된 하나 이상의 항목에 대응하는 입력값(예를 들어 상기 사용자 입력 해시값 등 포함)을 수신하는 경우에 활성화될 수 있다.In addition, when the preset file view menu displayed on one side of the initial screen of the terminal 100 is selected, the terminal 100 displays the received user input hash value, file search request information, and the terminal 100 . and transmits the identification information of the client server 200 to the client server 200 . At this time, the file view menu maintains an inactive state by default and receives an input value (eg, including the user input hash value, etc.) corresponding to one or more items included in the hash value input menu in the terminal 100 . It can be activated if

일 예로, 상기 제 1 단말에 표시되는 초기 화면(1200) 중에서 상기 제 1 단말의 사용자 선택에 따라 제 1 사용자 입력 해시값(예를 들어 QmXETN6mzhivT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A)을 수신한다.For example, a first user input hash value (eg, QmXETN6mzhivT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A) is received according to the user selection of the first terminal among the initial screen 1200 displayed on the first terminal.

또한, 상기 초기 화면(1200)의 일측에 표시되는 파일보기 메뉴(1220)가 선택될 때, 상기 제 1 단말은 상기 제 1 사용자 입력 해시값(예를 들어 QmXETN6mzhivT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A), 제 1 파일 검색 요청 정보, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다(S1020).In addition, when the file view menu 1220 displayed on one side of the initial screen 1200 is selected, the first terminal provides the first user input hash value (eg QmXETN6mzhivT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A), first file search request information, The identification information of the first terminal is transmitted to the client server 200 (S1020).

이후, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 사용자 입력 해시값, 상기 파일 검색 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives the user input hash value transmitted from the terminal 100 , the file search request information, identification information of the terminal 100 , and the like.

또한, 상기 클라이언트 서버(200)는 상기 복수의 IPFS(300)와 연동하여, 상기 사용자 입력 해시값과 관련해서 하나 이상의 IPFS(300)에 분산 저장된 복수의 서브 파일을 수집한다. 여기서, 상기 서브 파일은 원본 파일이 복수로 분할된 경우, 상기 복수로 분할된 개별 파일을 나타낸다.In addition, the client server 200 cooperates with the plurality of IPFS 300 to collect a plurality of sub files distributed and stored in one or more IPFS 300 in relation to the user input hash value. Here, when the original file is divided into plural, the sub-file indicates the individual file divided into plural.

또한, 상기 클라이언트 서버(200)는 상기 수집된 복수의 서브 파일을 조합하여, 상기 사용자 입력 해시값에 대응하는 하나의 원본 파일을 생성한다.In addition, the client server 200 generates one original file corresponding to the user input hash value by combining the plurality of collected sub files.

또한, 상기 클라이언트 서버(200)는 상기 생성된 원본 파일(또는 상기 사용자 입력 해시값에 대응하는 파일/원본 파일)을 상기 단말(100)에 전송한다.Also, the client server 200 transmits the generated original file (or a file/original file corresponding to the user input hash value) to the terminal 100 .

이때, 상기 클라이언트 서버(200)와 상기 복수의 IPFS(300) 간의 연동에 의해서 상기 사용자 입력 해시값과 관련한 복수의 서브 파일이 수집되지 않는 경우, 상기 클라이언트 서버(200)는 상기 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 상기 단말(100)에 전송할 수도 있다.At this time, when the plurality of sub files related to the user input hash value are not collected due to the interworking between the client server 200 and the plurality of IPFS 300 , the client server 200 receives the user input hash value and Information indicating that a related file does not exist in the IPFS 300 may be transmitted to the terminal 100 .

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 단말로부터 전송되는 상기 제 1 사용자 입력 해시값, 상기 제 1 파일 검색 요청 정보, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 receives the first user input hash value transmitted from the first terminal, the first file search request information, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 상기 제 1 IPFS 내지 상기 제 10 IPFS와 연동하여, 상기 제 1 사용자 입력 해시값과 관련해서 제 1 서브 파일 내지 제 10 서브 파일을 수집하고, 상기 수집된 제 1 서브 파일 내지 제 10 서브 파일을 조합하여 원본 파일인 제 2 파일(예를 들어 kookmin.png)을 생성한다.In addition, the client server 200 cooperates with the first IPFS to the tenth IPFS to collect the first sub-file to the tenth sub-file in relation to the first user input hash value, and the collected first A second file (eg, kookmin.png), which is an original file, is generated by combining the sub-files to the tenth sub-files.

또한, 상기 클라이언트 서버(200)는 상기 생성된 제 2 파일(예를 들어 kookmin.png)을 상기 제 1 단말에 전송한다(S1030).Also, the client server 200 transmits the generated second file (eg, kookmin.png) to the first terminal (S1030).

이후, 상기 단말(100)은 앞서 전송된 사용자 입력 해시값, 파일 검색 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 원본 파일을 수신한다.Thereafter, the terminal 100 receives the original file transmitted from the client server 200 in response to the previously transmitted user input hash value, file search request information, and the like.

또한, 상기 단말(100)은 상기 수신된 원본 파일을 표시(또는 출력)한다. 여기서, 상기 단말(100)은 상기 수신된 원본 파일을 해당 단말(100)에 다운로드(또는 저장)할 수도 있다.In addition, the terminal 100 displays (or outputs) the received original file. Here, the terminal 100 may download (or store) the received original file to the corresponding terminal 100 .

이때, 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않은 경우, 상기 단말(100)은 앞서 전송된 사용자 입력 해시값, 파일 검색 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 수신하고, 상기 수신된 해당 사용자 입력 해시값과 관련한 파일이 상기 IPFS(300)에 존재하지 않음을 나타내는 정보 등을 표시(또는 출력)할 수도 있다.At this time, if the file related to the corresponding user input hash value does not exist in the IPFS 300 , the terminal 100 receives the previously transmitted user input hash value, file search request information, etc. from the client server 200 . Receives information indicating that the transmitted file related to the corresponding user input hash value does not exist in the IPFS 300, and acknowledges that the file related to the received user input hash value does not exist in the IPFS 300 It is also possible to display (or output) the indicated information or the like.

일 예로, 상기 제 1 단말은 앞서 전송된 상기 제 1 사용자 입력 해시값, 상기 제 1 파일 검색 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 제 2 파일(예를 들어 kookmin.png)을 수신한다.For example, the first terminal transmits a second file (eg, kookmin.png) transmitted from the client server 200 in response to the previously transmitted first user input hash value, the first file search request information, etc. receive

또한, 도 15에 도시된 바와 같이, 상기 제 1 단말은 상기 수신된 제 2 파일(1500)을 표시한다(S1040).Also, as shown in FIG. 15 , the first terminal displays the received second file 1500 ( S1040 ).

또한, 상기 단말(100)에 표시되는 초기화면 중에서, 상기 단말(100)의 사용자 입력(또는 사용자 선택/터치/제어)에 따라 상기 다른 해시값 입력 메뉴에 포함된 다른 해시값 입력 항목에 대응하는 다른 해시값을 수신하고, 상기 추가 파일 선택 메뉴에 따라 해당 단말(100)에 저장된 하나 이상의 파일 중에서 어느 하나의 특정 파일이 선택된 후, 상기 미리 설정된 파일 진위 여부 확인 메뉴가 선택되는 경우, 상기 단말(100)은 상기 수신된 다른 해시값, 상기 선택된 특정 파일, 진위 여부 확인 요청 정보, 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다. 이때, 상기 파일 진위 여부 확인 메뉴는 디폴트로 비활성화 상태를 유지하다가 상기 단말(100)에서 상기 다른 해시값을 수신하고 상기 특정 파일이 선택된 경우에 활성화될 수 있다.In addition, among the initial screen displayed on the terminal 100, according to a user input (or user selection/touch/control) of the terminal 100, the other hash value input items included in the other hash value input menu correspond to After receiving another hash value and selecting any one specific file from among one or more files stored in the terminal 100 according to the additional file selection menu, if the preset file authenticity check menu is selected, the terminal ( 100) transmits the received other hash value, the selected specific file, authenticity check request information, identification information of the terminal 100, and the like to the client server 200 . In this case, the file authenticity check menu may be activated when the specific file is selected after receiving the other hash value from the terminal 100 while maintaining the inactive state by default.

일 예로, 상기 제 1 단말에 표시되는 초기 화면(1200)에서 상기 제 1 단말의 사용자 선택에 따라 상기 다른 해시값 입력 메뉴에 포함된 다른 해시값 입력 항목에 대응하는 제 2 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An)을 수신하고, 상기 추가 파일 선택 메뉴에 따라 상기 제 1 단말에 저장된 복수의 파일 중에서 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png)이 선택된 후, 상기 초기 화면(1200)의 일측에 표시되는 파일 진위 여부 확인 메뉴(1230)가 선택될 때, 상기 제 1 단말은 상기 수신된 제 2 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An), 상기 선택된 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png), 제 3 진위 여부 확인 요청 정보, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다(S1050).For example, in the initial screen 1200 displayed on the first terminal, a second hash value corresponding to another hash value input item included in the other hash value input menu according to a user selection of the first terminal (for example QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) is received, and a third file (eg, Kookmin University.png, which is an image file in a png format) is selected from among a plurality of files stored in the first terminal according to the additional file selection menu, and then the initial screen 1200 ), when the file authenticity check menu 1230 displayed on one side is selected, the first terminal transmits the received second hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An), the selected third file (eg, in the form of png The image file (Kookmin University.png), the third authenticity check request information, and the identification information of the first terminal are transmitted to the client server 200 (S1050).

이후, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 상기 다른 해시값, 상기 특정 파일, 상기 진위 여부 확인 요청 정보, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives the other hash value, the specific file, the authenticity check request information, the identification information of the terminal 100, and the like transmitted from the terminal 100 .

또한, 상기 클라이언트 서버(200)는 상기 복수의 IPFS(300) 중에서 랜덤하게 선택되는 다른 특정 IPFS(300)에 상기 수신된 특정 파일, 상기 단말(100)의 식별 정보 등을 전송한다.In addition, the client server 200 transmits the received specific file and identification information of the terminal 100 to another specific IPFS 300 randomly selected from among the plurality of IPFS 300 .

즉, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 복수의 IPFS(300) 중에서 랜덤하게 또는 미리 설정된 방식으로 상기 다른 특정 IPFS(300)선택한다.That is, the client server 200 selects the other specific IPFS 300 randomly or in a preset manner from among a plurality of IPFS 300 interworking with the corresponding client server 200 .

또한, 상기 클라이언트 서버(200)는 상기 선택된 다른 특정 IPFS(300)로 상기 수신된 특정 파일, 상기 단말(100)의 식별 정보 등을 전송한다. 이때, 상기 클라이언트 서버(200)는 상기 단말(100)로부터 전송되는 정보들에 유형 정보가 포함되어 있지 않은 상태인 경우에, 디폴트로 미리 설정된 다른 유형 정보(예를 들어 프라이빗 항목 등 포함)를 상기 특정 파일, 상기 단말(100)의 식별 정보 등과 함께 상기 다른 특정 IPFS(300)에 전송할 수도 있다.In addition, the client server 200 transmits the received specific file and identification information of the terminal 100 to the other selected specific IPFS 300 . At this time, when the type information is not included in the information transmitted from the terminal 100, the client server 200 provides other type information (eg, including a private item) preset by default. It may be transmitted to the other specific IPFS 300 together with a specific file, identification information of the terminal 100, and the like.

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 단말로부터 전송되는 상기 제 2 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An), 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png), 상기 제 3 진위 여부 확인 요청 정보, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the client server 200 includes the second hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) transmitted from the first terminal, the third file (eg, Kookmin University.png which is an image file in the form of png), the Receives third authenticity confirmation request information, identification information of the first terminal, and the like.

또한, 상기 클라이언트 서버(200)는 해당 클라이언트 서버(200)와 연동하는 상기 제 1 IPFS 내지 상기 제 10 IPFS 중에서 랜덤하게 상기 제 10 IPFS를 선택하고, 상기 선택된 제 10 IPFS로 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png), 디폴트인 제 3 유형 정보(예를 들어 프라이빗 항목 등 포함), 상기 제 1 단말의 식별 정보 등을 전송한다(S1060).In addition, the client server 200 randomly selects the tenth IPFS from among the first IPFS to the tenth IPFS interworking with the corresponding client server 200, and uses the selected tenth IPFS to use the third file (eg, For example, a png image file, Kookmin University.png), default third type information (eg, including a private item), and identification information of the first terminal are transmitted ( S1060 ).

이후, 상기 다른 특정 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 상기 특정 파일, 상기 다른 유형 정보, 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the other specific IPFS 300 receives the specific file, the other type information, and identification information of the terminal 100 transmitted from the client server 200 .

또한, 상기 다른 특정 IPFS(300)는 상기 수신된 상기 특정 파일, 상기 다른 유형 정보 등을 근거로 또 다른 해시값을 생성한다. 이때, 상기 다른 특정 IPFS(300)는 상기 클라이언트 서버(200)로부터 전송되는 정보들 중에서 유형 정보가 포함되지 않은 상태인 경우에, 디폴트로 미리 설정된 다른 유형 정보(예를 들어 프라이빗 항목 등 포함)와 상기 수신된 특정 파일 등을 근거로 상기 또 다른 해시값을 생성할 수도 있다.In addition, the other specific IPFS 300 generates another hash value based on the received specific file, the other type information, and the like. At this time, when the other specific IPFS 300 does not include type information among the information transmitted from the client server 200, other type information preset by default (eg, including a private item) and The other hash value may be generated based on the received specific file or the like.

또한, 상기 다른 특정 IPFS(300)는 상기 생성된 또 다른 해시값(또는 상기 특정 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the other specific IPFS 300 transmits the other generated hash value (or a hash value related to the specific file), identification information of the terminal 100, and the like to the client server 200 .

또한, 상기 다른 특정 IPFS(300)는 또 다른 복수의 IPFS(300)(또는 상기 복수의 IPFS(300) 중에서 상기 다른 특정 IPFS(300)를 제외한 나머지 IPFS(300))와 연동하여, 상기 특정 파일을 분산 저장(또는 관리)한다.In addition, the other specific IPFS 300 interworks with another plurality of IPFS 300 (or the other IPFS 300 excluding the other specific IPFS 300 among the plurality of IPFS 300), and the specific file distributed storage (or management).

일 예로, 상기 제 10 IPFS는 상기 클라이언트 서버(200)로부터 전송되는 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png), 상기 제 3 유형 정보, 상기 제 1 단말의 식별 정보 등을 수신한다.For example, the 10th IPFS includes the third file (eg, Kookmin University.png which is an image file in png format) transmitted from the client server 200 , the third type information, and identification information of the first terminal receive etc.

또한, 상기 제 10 IPFS는 상기 수신된 상기 제 3 파일, 상기 제 3 유형 정보 등을 근거로 제 3 해시값(예를 들어 QmXETN6mzhivfT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A)을 생성한다.In addition, the tenth IPFS generates a third hash value (eg, QmXETN6mzhivfT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A) based on the received third file and the third type information.

또한, 상기 제 10 IPFS는 상기 생성된 제 3 해시값, 상기 제 1 단말의 식별 정보 등을 상기 클라이언트 서버(200)에 전송한다.In addition, the 10th IPFS transmits the generated third hash value, identification information of the first terminal, and the like to the client server 200 .

또한, 상기 제 10 IPFS는 상기 제 1 IPFS 내지 상기 제 9 IPFS와 연동하여, 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png)을 분산 저장한다(S1070).In addition, the tenth IPFS interworks with the first IPFS to the ninth IPFS to distribute and store the third file (eg, Kookmin University.png, which is an image file in a png format) (S1070).

이후, 상기 클라이언트 서버(200)는 상기 다른 특정 IPFS(300)로부터 전송되는 또 다른 해시값(또는 상기 특정 파일과 관련한 해시값), 상기 단말(100)의 식별 정보 등을 수신한다.Thereafter, the client server 200 receives another hash value (or a hash value related to the specific file) transmitted from the other specific IPFS 300 , identification information of the terminal 100 , and the like.

일 예로, 상기 클라이언트 서버(200)는 상기 제 10 IPFS로부터 전송되는 상기 제 3 해시값(예를 들어 QmXETN6mzhivfT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A), 상기 제 1 단말의 식별 정보 등을 수신한다(S1080).For example, the client server 200 receives the third hash value (eg, QmXETN6mzhivfT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A) transmitted from the 10th IPFS, identification information of the first terminal, and the like (S1080).

이후, 상기 클라이언트 서버(200)는 상기 수신된 해당 특정 파일과 관련한 또 다른 해시값과 앞서 수신된 다른 해시값이 일치하는지 여부를 판단(또는 확인)한다.Thereafter, the client server 200 determines (or confirms) whether another hash value related to the received specific file matches another hash value previously received.

또한, 상기 클라이언트 서버(200)는 상기 판단 결과(또는 상기 확인 결과)에 따라, 해당 특정 파일의 진위 여부에 대한 정보를 생성하고, 상기 생성된 해당 특정 파일의 진위 여부에 대한 정보를 상기 단말(100)에 전송한다. 여기서, 상기 특정 파일의 진위 여부에 대한 정보는 해당 특정 파일이 감정 대상 파일(또는 상기 다른 해시값에 대응하는 감정 대상 파일)과 일치하지 않음을 나타내는 정보, 해당 특정 파일이 감정 대상 파일과 일치함을 나타내는 정보, 해당 특정 파일과 관련한 또 다른 해시값 등을 포함한다.In addition, the client server 200 generates information on whether the specific file is authentic or not according to the determination result (or the verification result), and transmits information on whether the generated specific file is authentic or not to the terminal ( 100) to the Here, the information on the authenticity of the specific file is information indicating that the specific file does not match the analysis target file (or the analysis target file corresponding to the other hash value), and the specific file matches the analysis target file , and another hash value associated with that particular file.

일 예로, 상기 클라이언트 서버(200)는 상기 제 1 단말로부터 수신된 제 2 해시값(예를 들어 QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An)과 상기 제 10 IPFS로부터 수신된 제 3 해시값(예를 들어 QmXETN6mzhivfT5UgEC4B5HjYCGMZnnhzdzac1bW99pu2A)이 일치하는지 여부를 판단한다.For example, the client server 200 determines whether the second hash value (eg, QmVoxPe97q7SQFeJK9CnxjknJRLZR1BtsYZTpAnxBE32An) received from the first terminal and the third hash value (eg, QmXETN6mzhivfT5UgEC4) matched from the 10th IPFS match. judge

상기 판단 결과, 상기 제 2 해시값과 상기 제 3 해시값이 일치하지 않을 때, 상기 클라이언트 서버(200)는 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png)이 상기 제 2 해시값에 대응하는 파일과 일치하지 않음을 나타내는 정보(예를 들어 원본 문서와 일치하지 않습니다), 상기 제 3 해시값 등을 상기 제 1 단말에 전송한다(S1090).As a result of the determination, when the second hash value and the third hash value do not match, the client server 200 transmits the third file (eg, Kookmin University.png, which is an image file in png format) to the second hash value. Information indicating that the file corresponding to the second hash value does not match (eg, does not match the original document) and the third hash value are transmitted to the first terminal (S1090).

이후, 상기 단말(100)은 앞서 전송된 상기 다른 해시값, 상기 특정 파일, 상기 진위 여부 확인 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 해당 특정 파일의 진위 여부에 대한 정보 등을 수신한다.Thereafter, the terminal 100 receives information on the authenticity of the specific file transmitted from the client server 200 in response to the previously transmitted other hash value, the specific file, the authenticity check request information, etc. do.

또한, 상기 단말(100)은 상기 수신된 해당 특정 파일의 진위 여부에 대한 정보 등을 표시(또는 출력)한다. 이때, 상기 단말(100)은 상기 초기화면 내의 진위 여부 결과 표시 메뉴에 상기 수신된 해당 특정 파일의 진위 여부에 대한 정보 등을 표시할 수도 있다.In addition, the terminal 100 displays (or outputs) information on whether the received specific file is authentic or not. In this case, the terminal 100 may display information on whether the received specific file is authentic or not in the authenticity result display menu in the initial screen.

일 예로, 상기 제 1 단말은 앞서 전송된 상기 제 2 해시값, 상기 제 3 파일(예를 들어 png 형태의 이미지 파일인 국민대학교.png), 상기 제 3 진위 여부 확인 요청 정보 등에 응답하여 상기 클라이언트 서버(200)로부터 전송되는 상기 제 3 파일이 상기 제 2 해시값에 대응하는 파일과 일치하지 않음을 나타내는 정보(예를 들어 원본 문서와 일치하지 않습니다), 상기 제 3 해시값 등을 수신한다.For example, the first terminal responds to the previously transmitted second hash value, the third file (eg, Kookmin University.png, which is an image file in png format), and the third authenticity check request information, etc., to the client Information indicating that the third file transmitted from the server 200 does not match the file corresponding to the second hash value (eg, does not match the original document), the third hash value, and the like are received.

또한, 도 16에 도시된 바와 같이, 상기 제 1 단말은 상기 초기화면 내의 진위 여부 결과 표시 메뉴에 상기 수신된 상기 제 2 파일이 상기 제 2 해시값에 대응하는 파일과 일치하지 않음을 나타내는 정보(예를 들어 원본 문서와 일치하지 않습니다), 상기 제 3 해시값 등을(1600) 표시한다(S1100).In addition, as shown in FIG. 16, the first terminal displays information indicating that the received second file does not match the file corresponding to the second hash value in the authenticity result display menu in the initial screen ( For example, it does not match the original document), the third hash value, etc. (1600) is displayed (S1100).

본 발명의 실시예는 앞서 설명된 바와 같이, 단말에서 업로드하고자 하는 파일을 IPFS를 통해 분산 관리하고, IPFS를 통해 분산 관리되는 해당 파일의 해시값을 이더리움의 블록에 저장하여, 원본 파일에 대한 신뢰성을 제공하고, 원본 파일에 대한 공격 또는 삭제의 문제는 프라이빗 IPFS를 통해 해결할 수 있다.As described above, the embodiment of the present invention distributes and manages the file to be uploaded from the terminal through IPFS, and stores the hash value of the file that is distributed and managed through IPFS in a block of Ethereum, It provides reliability, and the problem of attack or deletion of the original file can be solved through private IPFS.

또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 단말로부터 파일과 관련한 해시값이 입력되는 경우, IPFS를 통해 분산 관리 중인 해당 해시값과 관련한 파일을 불러와서 해당 파일의 내용을 확인 가능하도록 제공하여, 전체 시스템의 운영 효율을 향상시킬 수 있다.In addition, as described above, in the embodiment of the present invention, when a hash value related to a file is input from the terminal, a file related to the hash value being distributed and managed through IPFS is called and the contents of the file are checked. Thus, it is possible to improve the operating efficiency of the entire system.

또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 단말에서 원본 파일과 관련한 해시값 및 파일의 진위 여부 확인을 위한 파일을 업로드하는 경우, POA 합의 알고리즘 또는 POW 합의 알고리즘을 통해 원본 파일과 업로드된 파일 간의 비교를 통해 진위 여부를 제공하여, 유지 관리가 용이하고, 네트워크의 안정성을 제공할 수 있다.In addition, as described above, in the embodiment of the present invention, when uploading a file for checking the authenticity of a hash value related to an original file and a file in the terminal, the file is uploaded with the original file through the POA consensus algorithm or the POW consensus algorithm. By providing authenticity through comparison between files, maintenance is easy and network stability can be provided.

전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.Those of ordinary skill in the art to which the present invention pertains may modify and modify the above-described contents without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are not intended to limit the technical spirit of the present invention, but to illustrate, and the scope of the technical spirit of the present invention is not limited by these embodiments. The protection scope of the present invention should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be construed as being included in the scope of the present invention.

10: 전자문서 관리 시스템 100: 단말
200: 클라이언트 서버 300: 복수의 IPFS
400: 이더리움 서버
10: electronic document management system 100: terminal
200: client server 300: multiple IPFS
400: Ethereum Server

Claims (10)

메타마스크(MetaMask)를 통해 클라이언트 서버에 접속하고, 상기 클라이언트 서버에서 제공하는 초기 화면을 표시하고, 상기 표시되는 초기화면 중에서, 사용자 입력에 따라 상기 초기화면 내의 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목이 선택되고, 상기 초기 화면에 포함된 파일 선택 메뉴에 따라 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 초기 화면에 포함된 미리 설정된 업로드 메뉴가 선택될 때 상기 선택된 유형 정보, 상기 선택된 파일, 파일 업로드 요청 정보 및 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 상기 단말;
복수의 IPFS 중에서 랜덤하게 선택되는 특정 IPFS에 상기 유형 정보, 상기 파일 및 상기 단말의 식별 정보를 전송하는 상기 클라이언트 서버;
상기 클라이언트 서버로부터 전송되는 상기 유형 정보 및 상기 파일을 근거로 해시값을 생성하고, 상기 생성된 해시값을 상기 클라이언트 서버를 경유하여 상기 단말에 전송하는 상기 특정 IPFS; 및
이더리움 서버를 포함하며,
상기 단말은,
상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하고, 상기 단말의 초기 화면의 일측에 표시되는 미리 설정된 제출 메뉴가 선택될 때 상기 수신된 복수의 입력값, 블록 저장 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하며,
상기 클라이언트 서버는,
상기 단말로부터 전송되는 복수의 입력값 및 상기 단말의 식별 정보를 상기 이더리움 서버에 전송하며,
상기 이더리움 서버는,
상기 클라이언트 서버로부터 전송되는 복수의 입력값을 이더리움 블록에 저장하고, 트랜잭션 처리 결과를 상기 클라이언트 서버에 전송하며,
상기 클라이언트 서버는,
상기 트랜잭션 처리 결과를 상기 단말에 전송하며,
상기 단말은,
상기 클라이언트 서버로부터 전송되는 트랜잭션 처리 결과를 표시하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 시스템.
Accessing the client server through MetaMask, displaying the initial screen provided by the client server, among the displayed initial screens, from among a plurality of items included in the type selection menu in the initial screen according to a user input After any one item is selected and any one of the one or more files stored in the terminal is selected according to the file selection menu included in the initial screen, when a preset upload menu included in the initial screen is selected, the selected the terminal for transmitting type information, the selected file, file upload request information, and identification information of the terminal to the client server;
the client server transmitting the type information, the file, and identification information of the terminal to a specific IPFS randomly selected from among a plurality of IPFSs;
the specific IPFS for generating a hash value based on the type information and the file transmitted from the client server, and transmitting the generated hash value to the terminal via the client server; and
It includes an Ethereum server,
The terminal is
Among the initial screens displayed on the terminal, a plurality of input values corresponding to a plurality of input items included in the additional information input menu in the initial screen are received according to a user input of the terminal, and on one side of the initial screen of the terminal When the displayed preset submission menu is selected, the received plurality of input values, block storage request information, and identification information of the terminal are transmitted to the client server,
The client server is
Transmitting a plurality of input values transmitted from the terminal and identification information of the terminal to the Ethereum server,
The Ethereum server is
Storing a plurality of input values transmitted from the client server in an Ethereum block, and transmitting the transaction processing result to the client server,
The client server is
Transmitting the transaction processing result to the terminal,
The terminal is
An electronic document management system using Ethereum and IPFS, characterized in that it displays the transaction processing result transmitted from the client server.
삭제delete 단말에 의해, 메타마스크를 통해 클라이언트 서버에 접속하고, 상기 클라이언트 서버에서 제공하는 초기 화면을 표시하는 단계;
상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 유형 선택 메뉴에 포함된 복수의 항목 중에서 어느 하나의 항목이 선택되고, 상기 초기 화면에 포함된 파일 선택 메뉴에 따라 상기 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 파일이 선택된 후, 상기 초기 화면에 포함된 미리 설정된 업로드 메뉴가 선택될 때, 상기 단말에 의해, 상기 선택된 유형 정보, 상기 선택된 파일, 파일 업로드 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 복수의 IPFS 중에서 랜덤하게 선택되는 특정 IPFS에 상기 유형 정보, 상기 파일 및 상기 단말의 식별 정보를 전송하는 단계;
상기 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 상기 유형 정보 및 상기 파일을 근거로 해시값을 생성하고, 상기 생성된 해시값을 상기 클라이언트 서버를 경유하여 상기 단말에 전송하는 단계;
상기 단말에 의해, 상기 전송된 파일 업로드 요청 정보에 응답하여 전송되는 해시값을 표시하는 단계; 및
상기 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 유형 정보 및 파일을 근거로 상기 복수의 IPFS 중에서 상기 특정 IPFS를 제외한 나머지 IPFS와 연동하여, 상기 파일을 분산 저장하는 단계를 더 포함하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
accessing, by a terminal, a client server through a metamask, and displaying an initial screen provided by the client server;
Among the initial screens displayed on the terminal, any one of a plurality of items included in the type selection menu in the initial screen is selected according to a user input of the terminal, and according to the file selection menu included in the initial screen, the After any one of the one or more files stored in the terminal is selected, when a preset upload menu included in the initial screen is selected, by the terminal, the selected type information, the selected file, the file upload request information and the transmitting identification information of the terminal to the client server;
transmitting, by the client server, the type information, the file, and identification information of the terminal to a specific IPFS randomly selected from among a plurality of IPFSs;
generating a hash value based on the file and the type information transmitted from the client server by the specific IPFS, and transmitting the generated hash value to the terminal via the client server;
displaying, by the terminal, a hash value transmitted in response to the transmitted file upload request information; and
Based on the type information and the file transmitted from the client server by the specific IPFS, the method further comprises the step of interworking with the remaining IPFS except for the specific IPFS from among the plurality of IPFS, and distributing and storing the file. Electronic document management method using Ethereum and IPFS.
삭제delete 제 3 항에 있어서,
상기 해시값을 표시하는 단계는,
상기 초기화면 내의 추가 정보 입력 메뉴와 관련한 해시값 입력 항목에 상기 해시값을 자동 입력하여 표시하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
4. The method of claim 3,
Displaying the hash value comprises:
An electronic document management method using Ethereum and IPFS, characterized in that the hash value is automatically input and displayed in a hash value input item related to the additional information input menu in the initial screen.
제 3 항에 있어서,
상기 단말에 의해, 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 추가 정보 입력 메뉴에 포함된 복수의 입력 항목에 대응하는 복수의 입력값을 수신하는 단계;
상기 단말의 초기 화면의 일측에 표시되는 미리 설정된 제출 메뉴가 선택될 때, 상기 단말에 의해, 상기 수신된 복수의 입력값, 블록 저장 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 상기 단말로부터 전송되는 복수의 입력값 및 상기 단말의 식별 정보를 이더리움 서버에 전송하는 단계;
상기 이더리움 서버에 의해, 상기 클라이언트 서버로부터 전송되는 복수의 입력값을 이더리움 블록에 저장하는 단계;
상기 이더리움 서버에 의해, 트랜잭션 처리 결과를 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 상기 트랜잭션 처리 결과를 상기 단말에 전송하는 단계; 및
상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 트랜잭션 처리 결과를 표시하는 단계를 더 포함하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
4. The method of claim 3,
receiving, by the terminal, a plurality of input values corresponding to a plurality of input items included in an additional information input menu in the initial screen according to a user input of the terminal, from among the initial screens displayed on the terminal;
When a preset submission menu displayed on one side of the initial screen of the terminal is selected, transmitting, by the terminal, the received plurality of input values, block storage request information, and identification information of the terminal to the client server ;
transmitting, by the client server, a plurality of input values transmitted from the terminal and identification information of the terminal to an Ethereum server;
storing, by the Ethereum server, a plurality of input values transmitted from the client server in an Ethereum block;
transmitting, by the Ethereum server, a transaction processing result to the client server;
transmitting, by the client server, the transaction processing result to the terminal; and
The electronic document management method using Ethereum and IPFS, characterized in that it further comprises the step of displaying, by the terminal, the transaction processing result transmitted from the client server.
제 6 항에 있어서,
상기 복수의 입력값을 이더리움 블록에 저장하는 단계는,
상기 복수의 입력값에 미리 설정된 합의 알고리즘 방식인 POA(Proof of Authority) 및 스마트 컨트랙트(smart contract)를 적용하여 상기 이더리움 블록에 저장하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
7. The method of claim 6,
Storing the plurality of input values in the Ethereum block comprises:
Electronic document management method using Ethereum and IPFS, characterized in that the plurality of input values are stored in the Ethereum block by applying POA (Proof of Authority) and smart contract, which are preset consensus algorithm methods .
제 3 항에 있어서,
상기 단말에 의해, 상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 해시값 입력 메뉴에 포함된 해시값 입력 항목에 대응하는 사용자 입력 해시값을 수신하는 단계;
상기 초기 화면의 일측에 표시되는 미리 설정된 파일보기 메뉴가 선택될 때, 상기 단말에 의해, 상기 사용자 입력 해시값, 파일 검색 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 상기 복수의 IPFS와 연동하여, 상기 사용자 입력 해시값과 관련해서 하나 이상의 IPFS에 분산 저장된 복수의 서브 파일을 수집하는 단계;
상기 클라이언트 서버에 의해, 상기 수집된 복수의 서브 파일을 조합하여, 상기 사용자 입력 해시값에 대응하는 하나의 원본 파일을 생성하는 단계;
상기 클라이언트 서버에 의해, 상기 생성된 원본 파일을 상기 단말에 전송하는 단계; 및
상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 원본 파일을 표시하거나 다운로드하는 단계를 더 포함하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
4. The method of claim 3,
receiving, by the terminal, a user input hash value corresponding to a hash value input item included in a hash value input menu in the initial screen according to a user input of the terminal from among the initial screen displayed on the terminal;
transmitting, by the terminal, the user input hash value, file search request information, and identification information of the terminal to the client server when a preset file view menu displayed on one side of the initial screen is selected;
collecting, by the client server, a plurality of sub-files distributed and stored in one or more IPFSs in association with the user input hash value in association with the plurality of IPFS;
generating, by the client server, a single original file corresponding to the user input hash value by combining the plurality of collected sub files;
transmitting, by the client server, the generated original file to the terminal; and
The electronic document management method using Ethereum and IPFS, characterized in that it further comprises, by the terminal, displaying or downloading the original file transmitted from the client server.
제 3 항에 있어서,
상기 단말에 표시되는 초기화면 중에서, 상기 단말의 사용자 입력에 따라 상기 초기화면 내의 다른 해시값 입력 메뉴에 포함된 다른 해시값 입력 항목에 대응하는 다른 해시값을 수신하고, 상기 초기화면 내의 추가 파일 선택 메뉴에 따라 상기 단말에 저장된 하나 이상의 파일 중에서 어느 하나의 특정 파일이 선택된 후, 상기 초기화면 내의 파일 진위 여부 확인 메뉴가 선택될 때, 상기 단말에 의해, 상기 수신된 다른 해시값, 상기 선택된 특정 파일, 진위 여부 확인 요청 정보 및 상기 단말의 식별 정보를 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 복수의 IPFS 중에서 랜덤하게 선택되는 다른 특정 IPFS에 상기 특정 파일 및 상기 단말의 식별 정보를 전송하는 단계;
상기 다른 특정 IPFS에 의해, 상기 클라이언트 서버로부터 전송되는 상기 특정 파일을 근거로 또 다른 해시값을 생성하고, 상기 생성된 또 다른 해시값을 상기 클라이언트 서버에 전송하는 단계;
상기 클라이언트 서버에 의해, 상기 다른 특정 IPFS로부터 전송되는 또 다른 해시값을 수신하는 단계;
상기 클라이언트 서버에 의해, 상기 단말로부터 전송된 다른 해시값과 상기 다른 특정 IPFS로부터 전송된 또 다른 해시값이 일치하는지 여부를 판단하는 단계;
상기 클라이언트 서버에 의해, 상기 판단 결과에 따라 특정 파일의 진위 여부에 대한 정보를 생성하고, 상기 생성된 특정 파일의 진위 여부에 대한 정보를 상기 단말에 전송하는 단계; 및
상기 단말에 의해, 상기 클라이언트 서버로부터 전송되는 특정 파일의 진위 여부에 대한 정보를 표시하는 단계를 더 포함하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
4. The method of claim 3,
Among the initial screens displayed on the terminal, according to a user input of the terminal, a different hash value corresponding to another hash value input item included in another hash value input menu in the initial screen is received, and an additional file in the initial screen is selected After selecting any one specific file from among one or more files stored in the terminal according to the menu, when the file authenticity check menu in the initial screen is selected, the other hash value received by the terminal, the selected specific file , transmitting authenticity confirmation request information and identification information of the terminal to the client server;
transmitting, by the client server, the specific file and identification information of the terminal to another specific IPFS randomly selected from among a plurality of IPFSs;
generating another hash value based on the specific file transmitted from the client server by the other specific IPFS, and transmitting the generated another hash value to the client server;
receiving, by the client server, another hash value transmitted from the other specific IPFS;
determining, by the client server, whether another hash value transmitted from the terminal matches another hash value transmitted from the other specific IPFS;
generating, by the client server, information on whether a specific file is authentic or not according to the determination result, and transmitting information on whether the generated specific file is authentic or not to the terminal; and
The electronic document management method using Ethereum and IPFS, characterized in that it further comprises the step of displaying, by the terminal, information on the authenticity of the specific file transmitted from the client server.
제 9 항에 있어서,
상기 특정 파일의 진위 여부에 대한 정보는,
상기 특정 파일과 관련한 또 다른 해시값과, 상기 특정 파일이 상기 다른 해시값에 대응하는 감정 대상 파일과 일치하지 않음을 나타내는 정보 또는 상기 특정 파일이 감정 대상 파일과 일치함을 나타내는 정보를 포함하는 것을 특징으로 하는 이더리움과 IPFS를 활용한 전자문서 관리 방법.
10. The method of claim 9,
Information about the authenticity of the specific file,
Another hash value related to the specific file and information indicating that the specific file does not match the analysis target file corresponding to the other hash value or information indicating that the specific file matches the analysis target file E-document management method using Ethereum and IPFS.
KR1020220009306A 2022-01-21 2022-01-21 System for managing electronic document using ethereum and IPFS and method thereof KR102456903B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220009306A KR102456903B1 (en) 2022-01-21 2022-01-21 System for managing electronic document using ethereum and IPFS and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220009306A KR102456903B1 (en) 2022-01-21 2022-01-21 System for managing electronic document using ethereum and IPFS and method thereof

Publications (1)

Publication Number Publication Date
KR102456903B1 true KR102456903B1 (en) 2022-10-21

Family

ID=83805577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220009306A KR102456903B1 (en) 2022-01-21 2022-01-21 System for managing electronic document using ethereum and IPFS and method thereof

Country Status (1)

Country Link
KR (1) KR102456903B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468612A (en) * 2021-06-30 2021-10-01 上海特高信息技术有限公司 File auditing system and method based on block chain and IPFS

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101868029B1 (en) 2017-03-10 2018-06-18 현대카드 주식회사 Method and system for sharing file based on blockchain
KR102065315B1 (en) * 2019-10-04 2020-01-13 주식회사 도우테크 System and method for keeping and sharing a file based on block chain network
KR20200101512A (en) * 2019-01-30 2020-08-28 펜타시큐리티시스템 주식회사 Method and apparatus for sharing big data using block chain
KR20210072265A (en) * 2019-12-09 2021-06-17 한국전자통신연구원 Method and apparatus for distributed processing of services using blockchain
KR102269812B1 (en) * 2020-11-12 2021-06-28 (주)아이디엔디 System for providing blockchain based drawing transaction service

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101868029B1 (en) 2017-03-10 2018-06-18 현대카드 주식회사 Method and system for sharing file based on blockchain
KR20200101512A (en) * 2019-01-30 2020-08-28 펜타시큐리티시스템 주식회사 Method and apparatus for sharing big data using block chain
KR102065315B1 (en) * 2019-10-04 2020-01-13 주식회사 도우테크 System and method for keeping and sharing a file based on block chain network
KR20210072265A (en) * 2019-12-09 2021-06-17 한국전자통신연구원 Method and apparatus for distributed processing of services using blockchain
KR102269812B1 (en) * 2020-11-12 2021-06-28 (주)아이디엔디 System for providing blockchain based drawing transaction service

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468612A (en) * 2021-06-30 2021-10-01 上海特高信息技术有限公司 File auditing system and method based on block chain and IPFS
CN113468612B (en) * 2021-06-30 2023-08-22 上海特高信息技术有限公司 File auditing system and method based on block chain and IPFS

Similar Documents

Publication Publication Date Title
US11902450B2 (en) Blockchain generation method and system, and related device
US11405368B2 (en) Systems, methods, and media for a cloud based social media network
US10673988B2 (en) Creation, publication and display of content on a social media network
CN109522330B (en) Cloud platform data processing method, device, equipment and medium based on block chain
CN110545190B (en) Signature processing method, related device and equipment
KR20210133289A (en) Data extraction from blockchain networks
KR20200083934A (en) Visual blockchain browser
CN102306256A (en) The file that obtains is carried out the prestige inspection
CN109521956B (en) Cloud storage method, device, equipment and storage medium based on block chain
CN111291394B (en) False information management method, false information management device and storage medium
CN110266872B (en) Address book data management and control method and device, cloud address book system, computer equipment and computer readable storage medium
CN111476572A (en) Data processing method and device based on block chain, storage medium and equipment
CN109565518A (en) Interchangeable content retrieval
CN112035897A (en) Block chain evidence storage method and related device
CN110266505A (en) A kind of method and apparatus managing session group
KR102447797B1 (en) System for managing document based on IPFS and method thereof
KR102456903B1 (en) System for managing electronic document using ethereum and IPFS and method thereof
CN110807209B (en) Data processing method, device and storage medium
US8959248B2 (en) Personal computing environment with virtual computing device
WO2022057525A1 (en) Method and device for data retrieval, electronic device, and storage medium
CN110705985A (en) Method and apparatus for storing information
US10762287B2 (en) Edoc utility using non-structured-query-language databases
CN113890753B (en) Digital identity management method, device, system, computer equipment and storage medium
CN111259452A (en) Data management method based on block chain and related device
CN111476562A (en) Virtual resource transfer method, device, electronic equipment and storage medium

Legal Events

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