KR102494825B1 - Method and system for distributing content id for ipfs - Google Patents

Method and system for distributing content id for ipfs Download PDF

Info

Publication number
KR102494825B1
KR102494825B1 KR1020220117966A KR20220117966A KR102494825B1 KR 102494825 B1 KR102494825 B1 KR 102494825B1 KR 1020220117966 A KR1020220117966 A KR 1020220117966A KR 20220117966 A KR20220117966 A KR 20220117966A KR 102494825 B1 KR102494825 B1 KR 102494825B1
Authority
KR
South Korea
Prior art keywords
content
server
pinning
list
ipfs
Prior art date
Application number
KR1020220117966A
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 KR1020220117966A priority Critical patent/KR102494825B1/en
Priority to PCT/KR2022/015089 priority patent/WO2024063191A1/en
Priority to KR1020230011190A priority patent/KR102592978B1/en
Application granted granted Critical
Publication of KR102494825B1 publication Critical patent/KR102494825B1/en
Priority to PCT/KR2023/014206 priority patent/WO2024063519A1/en
Priority to KR1020230139818A priority patent/KR20240039604A/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present disclosure relates to a method and system for distributing content IDs for IPFS. One embodiment of the present disclosure provides a system for distributing content IDs, the system comprising: a user terminal for uploading one or more content IDs corresponding to one or more pieces of backup data; a publishing server that publishes a content ID list including the one or more content IDs; a pinning server that transmits a data request for pinning the one or more pieces of backup data and performs pinning on the one or more pieces of backup data based on a redundancy requirement algorithm; and a web server that transmits a return content ID list included in the content ID list to the pinning server in response to the data request.

Description

IPFS를 위해 콘텐츠 ID를 분배하는 방법 및 시스템{METHOD AND SYSTEM FOR DISTRIBUTING CONTENT ID FOR IPFS}Method and system for distributing content ID for IPFS {METHOD AND SYSTEM FOR DISTRIBUTING CONTENT ID FOR IPFS}

본 개시는 IPFS를 위해 콘텐츠 ID를 분배하는 방법 및 시스템을 제공한다.The present disclosure provides a method and system for distributing content ID for IPFS.

IPFS는 InterPlanetary File System의 약어로 모든 컴퓨터 노드를 연결하고자 하는 분산된 P2P(Peer to Peer) 파일 시스템이다. IPFS는 중앙화 된 서버 없이 노드들의 P2P 통신으로 실현된, 더욱 빠르고 안전하고 개방된 네트워크이다. 중앙화 된 대형 서버의 연결이 차단되면 치명적인 결과를 낳는 종래의 HTTP 웹과는 달리 IPFS에서는 몇몇 노드들이 연결이 끊어지더라도 시스템이 안정적으로 유지될 수 있다.IPFS, short for InterPlanetary File System, is a distributed P2P (Peer to Peer) file system that aims to connect all computer nodes. IPFS is a faster, more secure and open network realized by peer-to-peer communication of nodes without a centralized server. Unlike the conventional HTTP web, which has fatal consequences when a large centralized server is disconnected, in IPFS, the system can be maintained stably even if several nodes are disconnected.

IPFS에서는 각각의 파일이 여러 개의 블록으로 이루어져 있으며, 각각의 블록은 해시로 표현된 고유의 이름이 있다. IPFS는 모든 파일의 이름을 데이터베이스에 저장하며, 동일 파일의 중복을 배제하며, 각 파일의 버전 정보를 트래킹 한다. 각 노드는 본인이 관심있는 파일만 저장소에 보관하며, 인덱싱 정보를 통해 누가 어떤 파일을 저장하고 있는지 알 수 있다. 네트워크 파일을 찾기 위해서는, 파일명을 조회하고 해당 파일을 갖고 있는 노드를 추적하면 된다.In IPFS, each file consists of several blocks, and each block has a unique name expressed as a hash. IPFS stores the names of all files in a database, eliminates duplication of the same file, and tracks the version information of each file. Each node stores only the files it is interested in, and through indexing information, it is possible to know who is storing which files. To find a network file, query the file name and track the node that has the file.

이와 같은 IPFS를 이용하여 파일을 분산 저장하려는 사용자는 IPFS 분산 저장 서비스를 제공하는 서버에 파일을 업로드하게 된다. 그러나, 파일을 IPFS 서비스 제공 서버에 업로드 한다고 해서 자동으로 파일이 분산 저장되는 것은 아니다. 분산된 서버에서 실제 하드 디스크 등에 용량을 할당하여 저장까지 되는 것을 보장하기 위해서는 분산된 서버 각각이 필요한 콘텐츠 ID를 받아와야 한다.A user who wants to distribute and store a file using IPFS uploads the file to a server that provides an IPFS distributed storage service. However, uploading a file to the server providing the IPFS service does not mean that the file is automatically distributed and stored. In order to ensure that the distributed server allocates capacity to the actual hard disk and stores it, each distributed server must obtain the required content ID.

그러나 현재 IPFS 표준은 이에 관한 실제 구현에 대해서는 제시하지 않고 단순한 가이드 라인만 제시하고 있다. IPFS 표준의 제안서는 최종 사용자(예컨대, 고객)가 콘텐츠 ID의 분배에 대한 책임을 진다. 일반적인 SaaS 형태의 서비스에서는 유저가 직접 올리는 파일 외에도 이로 인하여 파생된 다양한 파일이 존재하여, SaaS 형태의 관리형 서비스에서 고객이 직접 본인 소유의 콘텐츠 ID 목록을 확보하고 이를 본인 소유의 피닝 서비스에 직접 등록하는 것은 현실성이 떨어진다. 따라서 IPFS 기반의 파일 분산 저장 서비스를 제공하는 서버 및 분산된 각 노드에서 콘텐츠 ID를 분배 및 저장하는 방법에 있어 효율성과 신뢰성이 보장된 시스템의 구현이 필요하다.However, the current IPFS standard does not suggest actual implementation, but only simple guidelines. The IPFS standard's proposal places end users (eg customers) responsible for the distribution of content IDs. In general SaaS-type services, in addition to files uploaded by users, there are various files derived from these, so in SaaS-type managed services, customers directly obtain their own content ID list and register it directly in their own pinning service. Doing so is unrealistic. Therefore, it is necessary to implement a system that guarantees efficiency and reliability in a server providing IPFS-based file distribution storage service and a method for distributing and storing content IDs in each distributed node.

전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.The foregoing background art is technical information that the inventor possessed for derivation of the present invention or acquired during the derivation process of the present invention, and cannot necessarily be said to be known art disclosed to the general public prior to filing the present invention.

본 개시의 목적은 IPFS를 위해 콘텐츠 ID를 분배하는 방법 및 시스템을 제공하는 데 있다. 본 개시가 해결하고자 하는 과제는 이상에서 언급한 과제에 한정되지 않으며, 언급되지 않은 본 개시의 다른 과제 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 개시의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 개시가 해결하고자 하는 과제 및 장점들은 특허 청구범위에 나타난 수단 및 그 조합에 의해 실현될 수 있음을 알 수 있을 것이다.An object of the present disclosure is to provide a method and system for distributing content ID for IPFS. The problems to be solved by the present disclosure are not limited to the above-mentioned problems, and other problems and advantages of the present disclosure that are not mentioned can be understood by the following description and more clearly understood by the embodiments of the present disclosure. It will be. In addition, it will be appreciated that the problems and advantages to be solved by the present disclosure can be realized by the means and combinations indicated in the claims.

본 개시의 일 실시예에 따른 콘텐츠 ID를 분배하는 시스템은, 하나 이상의 백업 데이터에 대응하는 하나 이상의 콘텐츠 ID를 업로드하는 사용자 단말; 상기 하나 이상의 콘텐츠 ID를 포함하는 콘텐츠 ID 목록을 공표하는 공표 서버; 상기 하나 이상의 백업 데이터를 피닝(Pinning)하기 위한 데이터 요청을 전송하고, 상기 하나 이상의 백업 데이터에 대한 피닝을 수행하는 피닝 서버; 및 상기 데이터 요청에 응답하여 상기 콘텐츠 ID 목록에 포함되는 반환 콘텐츠 ID 목록을 상기 피닝 서버에 전송하는 웹 서버;를 포함할 수 있다.A system for distributing content IDs according to an embodiment of the present disclosure includes: a user terminal uploading one or more content IDs corresponding to one or more backup data; a publishing server that publishes a content ID list including the one or more content IDs; a pinning server that transmits a data request for pinning the one or more backup data and performs pinning on the one or more backup data; and a web server that transmits a return content ID list included in the content ID list to the pinning server in response to the data request.

이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 장치 및 상기 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 더 제공될 수 있다.In addition to this, another method for implementing the present invention, another device, and a computer-readable recording medium recording a program for executing the method may be further provided.

전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허 청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.Other aspects, features and advantages other than those described above will become apparent from the following drawings, claims and detailed description of the invention.

전술한 본 개시의 과제 해결 수단에 의하면, IPFS 기반의 서비스를 제공하는 사업자와, 피닝 서비스만을 제공하는 서드 파티간의 명시적인 협력 과정 없이도, 사용자로부터 위임된 권한을 통해 특정 사용자의 파일을 자동화된 절차로서 전 세계의 IPFS 노드에 안전하게 분산 저장할 수 있다.According to the above-described problem solving means of the present disclosure, an automated procedure for a specific user's file through an authority delegated from the user without an explicit cooperation process between an operator providing an IPFS-based service and a third party providing only a pinning service. can be safely distributed and stored on IPFS nodes around the world.

도 1 은 일 실시예에 따른 IPFS 기반의 파일 분산 저장 시스템의 개략적인 구성을 나타낸 개념도이다.
도 2는 일 실시예에 따른 노드의 구성을 도시한 블록도이다.
도 3는 일 실시예에 따른 블록 및 블록체인을 도시한 개념도이다.
도 4은 IPFS 표준을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 콘텐츠 ID를 분배하는 시스템의 동작을 나타내는 예시도이다.
도 6은 일 실시예에 따른 콘텐츠 ID 목록 및 반환 콘텐츠 ID 목록을 설명하기 위한 예시도이다.
도 7은 일 실시예에 따른 중복성 조건 알고리즘을 설명하기 위한 흐름도이다.
1 is a conceptual diagram showing a schematic configuration of an IPFS-based file distribution storage system according to an embodiment.
2 is a block diagram showing the configuration of a node according to an embodiment.
3 is a conceptual diagram illustrating a block and a block chain according to an embodiment.
4 is a diagram for explaining the IPFS standard.
5 is an exemplary diagram illustrating an operation of a system for distributing content IDs according to an exemplary embodiment.
6 is an exemplary diagram for explaining a content ID list and a return content ID list according to an embodiment.
7 is a flowchart illustrating a redundancy condition algorithm according to an exemplary embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 설명되는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 아래에서 제시되는 실시예들로 한정되는 것이 아니라, 서로 다른 다양한 형태로 구현될 수 있고, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 아래에 제시되는 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.Advantages and features of the present invention, and methods of achieving them, will become clear with reference to the detailed description of the embodiments taken in conjunction with the accompanying drawings. However, it should be understood that the present invention is not limited to the examples presented below, but may be implemented in various different forms, and includes all conversions, equivalents, and substitutes included in the spirit and scope of the present invention. do. The embodiments presented below are provided to complete the disclosure of the present invention and to fully inform those skilled in the art of the scope of the invention to which the present invention belongs. In describing the present invention, if it is determined that a detailed description of related known technologies may obscure the gist of the present invention, the detailed description will be omitted.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 “가지다” 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. Terms used in this application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as "include" or "have" are intended to designate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features It should be understood that the presence or addition of numbers, steps, operations, components, parts, or combinations thereof is not precluded.

본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단" 및 "구성"등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.Some embodiments of the present disclosure may be represented as functional block structures and various processing steps. Some or all of these functional blocks may be implemented as a varying number of hardware and/or software components that perform specific functions. For example, functional blocks of the present disclosure may be implemented by one or more microprocessors or circuit configurations for a predetermined function. Also, for example, the functional blocks of this disclosure may be implemented in various programming or scripting languages. Functional blocks may be implemented as an algorithm running on one or more processors. In addition, the present disclosure may employ prior art for electronic environment setting, signal processing, and/or data processing. Terms such as "mechanism", "element", "means" and "component" may be used broadly and are not limited to mechanical and physical components.

또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.In addition, connecting lines or connecting members between components shown in the drawings are only examples of functional connections and/or physical or circuit connections. In an actual device, connections between components may be represented by various functional connections, physical connections, or circuit connections that can be replaced or added.

이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.Hereinafter, the present disclosure will be described in detail with reference to the accompanying drawings.

도 1 은 일 실시예에 따른 IPFS 기반의 파일 분산 저장 시스템의 개략적인 구성을 나타낸 개념도이다.1 is a conceptual diagram showing a schematic configuration of an IPFS-based file distribution storage system according to an embodiment.

도 1을 참조하면, IPFS 기반의 파일 분산 저장 시스템(100)은 메인 서버(110), IPFS 네트워크(120), 공유자 단말(130) 및 요청자 단말(140)을 포함할 수 있다. 또한, IPFS 네트워크(120)는 IPFS 노드(Node)(121, 122, 123, 124)를 포함할 수 있다.Referring to FIG. 1 , an IPFS-based file distribution storage system 100 may include a main server 110, an IPFS network 120, a sharer device 130, and a requestor device 140. In addition, the IPFS network 120 may include IPFS nodes 121, 122, 123, and 124.

메인 서버(110)는 IPFS 네트워크(120)에 대한 관제 및 관리를 수행하는 것으로서, 이 때 메인 서버(110)가 피어 리더(Peer Leader) 역할을 수행하는 것이라 할 수 있다. 따라서 IPFS 노드(121, 122, 123, 124) 중 피어 리더의 역할을 수행하는 것이 메인 서버(110)가 될 수 있다. 혹은 별도의 메인 서버(110)를 구비하여 IPFS 노드(121, 122, 123, 124)에 대한 관리 역할을 수행하게 하는 것도 가능하다.The main server 110 controls and manages the IPFS network 120, and at this time, the main server 110 can be said to perform the role of a peer leader. Therefore, among the IPFS nodes 121, 122, 123, and 124, the main server 110 may serve as a peer leader. Alternatively, it is also possible to provide a separate main server 110 to perform a management role for the IPFS nodes 121, 122, 123, and 124.

즉, 메인 서버(110)는 파일 암호화, 분할 처리, 그리고 IPFS 노드(121, 122, 123, 124)로의 분산 저장을 수행하는 주체가 될 수 있으며, IPFS 네트워크(120)를 구성하며 피어 리더의 역할을 수행할 수 있는 것이라면 별도의 제한을 두지 않는다.That is, the main server 110 can be a subject that performs file encryption, partition processing, and distributed storage to the IPFS nodes 121, 122, 123, and 124, and constitutes the IPFS network 120 and serves as a peer leader. If it can be performed, there is no separate restriction.

더불어 메인 서버(110)는 IPFS 노드(121, 122, 123, 124)의 운영 상태를 파악하는 능동적 감시 및 데이터의 업로드/다운로드 상태를 모니터링하는 수동적 감시를 통해 IPFS 노드(121, 122, 123, 124) 및 그를 통한 데이터 분산 저장, 데이터의 업로드 및 다운로드에 대한 관제 및 모니터링을 수행하는 것이라 할 수 있다.In addition, the main server 110 monitors the IPFS nodes 121, 122, 123, and 124 through active monitoring to determine the operational status and passive monitoring to monitor data upload/download status. ) and distributed storage of data through it, and control and monitoring of data upload and download.

또한, 도 1에 도시하지는 않았으나 메인 서버(110)는 사용자 단말(130)에 각 사용자 별 고유 코드가 탑재된 애플리케이션(Application)을 배포하고 통신하며, 문서의 검증과 확인 및 복원결과와 처리된 이력을 관리하고, 사용자 단말의 변경 또는 분실에 대비한 재인증을 처리하는 애플리케이션 서버(미도시)를 더 포함할 수 있다.In addition, although not shown in FIG. 1, the main server 110 distributes and communicates an application loaded with a unique code for each user in the user terminal 130, and verifies and confirms documents and restores results and processed history. It may further include an application server (not shown) that manages and processes re-authentication in preparation for change or loss of a user terminal.

IPFS 노드(121, 122, 123, 124)는 IPFS 네트워크(120)에 있어서 파일이 분할된 데이터 조각에 대한 저장 처리뿐만 아니라 해당 파일의 다운로드 내역 또는 업로드 내역을 포함할 수 있는 트랜잭션(Transaction) 정보가 포함된 블록 및 해당 블록이 쌓인 블록체인에 대한 사본을 저장하는 기능을 수행한다. 블록 및 블록체인에 대하여는 도 3에서 상세히 설명한다.The IPFS nodes 121, 122, 123, and 124 store and process data fragments from which files are divided in the IPFS network 120, as well as transaction information that may include download or upload details of the file. It performs the function of storing a copy of the included block and the blockchain on which the block is stacked. Blocks and blockchains are described in detail in FIG. 3 .

IPFS 노드(121, 122, 123, 124)는 콘텐츠 ID(Contents Identification, CID)를 입력으로 받고 콘텐츠 ID의 원본 데이터를 복구할 수 있는 능력을 가진 모든 컴퓨팅 장비를 의미할 수 있다. 또한, IPFS 노드(121, 122, 123, 124)는 중앙 서버, 릴레이 서버, P2P 네트워크, 블록체인 네트워크 등 다양한 통신수단을 통해서 상호간 통신할 수 있다.The IPFS nodes 121, 122, 123, and 124 may refer to all computing equipment capable of receiving a Contents Identification (CID) as an input and restoring original data of the Contents ID. In addition, the IPFS nodes 121, 122, 123, and 124 may communicate with each other through various communication means such as a central server, a relay server, a P2P network, and a blockchain network.

이 때, 콘텐츠 ID란 원본 파일 데이터의 고유한 이름이다. 데이터의 해시 값과 마찬가지로 두 데이터가 “ABC.txt”와 “DEF.txt”와 같이 다른 파일명을 가지더라도 데이터의 내용이 동일하다면 동일한 콘텐츠 ID를 갖게 된다. 콘텐츠 ID는 원본 파일에 비하여 매우 작은 크기를 가지며 암호학적 해시 함수의 연산 결과를 기반으로 생성될 수 있다.In this case, the content ID is a unique name of original file data. Similar to the hash value of data, even if the two data have different file names such as “ABC.txt” and “DEF.txt”, if the contents of the data are the same, they will have the same content ID. The content ID has a very small size compared to the original file and can be generated based on the calculation result of a cryptographic hash function.

한편, IPFS 노드(121, 122, 123, 124)에 콘텐츠 ID를 공급하는 메인 서버(110)는 IPFS 노드(121, 122, 123, 124)와 통신하여 콘텐츠 ID 정보를 공급하는 역할 및 부정 사용을 방지하는 인증 수단을 갖출 수 있다. 메인 서버(110)가 IPFS 노드(121, 122, 123, 124)와 통신함에 있어, 통신 수단 자체가 보안 채널일 필요는 없다.Meanwhile, the main server 110 that supplies content IDs to the IPFS nodes 121, 122, 123, and 124 communicates with the IPFS nodes 121, 122, 123, and 124 to supply content ID information and prevent fraudulent use. It can be equipped with an authentication means to prevent it. When the main server 110 communicates with the IPFS nodes 121, 122, 123, and 124, the communication means itself does not need to be a secure channel.

인증 수단으로는 IP 주소를 제한하는 네트워크적 방법, 암호화 기술을 통한 사용자 인증 방법, 블록체인 네트워크(120)를 통한 사용자 인증 또는 부정 사용자가 임의로 콘텐츠 ID를 IPFS 네트워크(120)에 입력하는 것을 방지하는 모든 방법을 포함할 수 있다.이 때, 부정 사용을 인증 절차를 통해 원천적으로 방지하거나 작업증명(Proof of work) 등을 통해 일정 비율 이상으로 부정 사용이 늘어나는 것을 방지할 수 있다.Authentication means include a network method of restricting IP addresses, a user authentication method through encryption technology, user authentication through a blockchain network 120, or a method to prevent unauthorized users from arbitrarily inputting content IDs into the IPFS network 120. All methods may be included. At this time, fraudulent use can be fundamentally prevented through an authentication procedure, or fraudulent use can be prevented from increasing beyond a certain rate through proof of work.

메인 서버(110)가 공급하는 콘텐츠 ID는 원본 파일의 콘텐츠 ID일 수도 있고 요구사항에 따라 원본을 암호화 한 결과물의 콘텐츠 ID일 수 있다. 이 때, 암호화 규격을 공유하기 위한 별도의 메타데이터를 공유할 수 있다. 메타데이터는 원본이 노출되어도 보안상 취약점이 없는 정보만을 포함할 수 있다. 예컨대, 암호화 알고리즘의 종류, 패딩 방법 및 초기 벡터 값 등이 있다.The content ID supplied by the main server 110 may be the content ID of the original file or the content ID of the result obtained by encrypting the original file according to requirements. In this case, separate metadata for sharing encryption standards may be shared. Metadata may include only information that has no security vulnerability even if the original source is exposed. For example, there are types of encryption algorithms, padding methods, and initial vector values.

공유자 단말(130) 및 요청자 단말(140)은 그 자체로서 IPFS 노드(121, 122, 123, 124)일 수 있고, 또는 릴레이 서버를 통하여 이미 존재하는 IPFS 노드(121, 122, 123, 124)를 이용하는 단말일 수 있다. 여기서 공유자 단말(130) 및 요청자 단말(140)은 파일에 대한 업로드 및 다운로드를 수행하는 단말을 의미하며, 키 조작에 따라 통신망을 경유하여 각종 문서 데이터를 송수신할 수 있는 단말기를 포함할 수 있다. 예를 들어, 공유자 단말(130) 및 요청자 단말(140)은 태블릿(Tablet) 단말, 랩톱(Laptop), 개인용 컴퓨터(PC, Personal Computer), 스마트폰(Smartphone), 개인휴대용 정보단말기(PDA, Personal Digital Assistant) 및 무선 단말기(Wireless Terminal) 등 중 어느 하나일 수 있다.The sharer device 130 and the requestor device 140 may be IPFS nodes 121, 122, 123, and 124 themselves, or may be IPFS nodes 121, 122, 123, and 124 that already exist through a relay server. It may be a terminal in use. Here, the sharer terminal 130 and the requester terminal 140 refer to terminals that upload and download files, and may include terminals capable of transmitting and receiving various document data via a communication network according to key manipulation. For example, the sharer terminal 130 and the requester terminal 140 may include a tablet terminal, a laptop, a personal computer (PC), a smartphone, and a personal portable information terminal (PDA). It may be any one of a digital assistant) and a wireless terminal.

IPFS 노드(121, 122, 123, 124)는 콘텐츠 ID의 암호학적 해시 기능을 이용하여 원본 파일의 위변조 가능성을 메인 서버(110)의 도움 없이 검증을 완료할 수 있으며, 콘텐츠 ID의 원본 파일이 IPFS 네트워크(120)의 임의의 장치에 저장되어 있다고 하더라도 이를 자동화된 절차를 통해 탐색 및 데이터를 가져올 수 있다.The IPFS nodes 121, 122, 123, and 124 can complete verification of the possibility of forgery of the original file without the help of the main server 110 by using the cryptographic hash function of the content ID, and the original file of the content ID is IPFS. Even if it is stored in any device of the network 120, it can be searched for and retrieved through an automated procedure.

도 2는 일 실시예에 따른 블록체인 네트워크의 노드의 구성을 도시한 블록도이다.2 is a block diagram showing the configuration of nodes of a blockchain network according to an embodiment.

도 2를 참조하면, 노드(200)는 통신부(210), 처리부(220) 및 저장부(230)를 포함할 수 있다. 또한, 노드(200)는 도 1의 IPFS 노드(121, 122, 123, 124)와 동일하거나 동일한 기능을 수행하는 것일 수 있다.Referring to FIG. 2 , a node 200 may include a communication unit 210 , a processing unit 220 and a storage unit 230 . In addition, the node 200 may be the same as or perform the same function as the IPFS nodes 121 , 122 , 123 , and 124 of FIG. 1 .

통신부(210)는 블록체인의 내부 또는 외부와 데이터를 송수신하기 위한 인터페이스를 제공할 수 있다.The communication unit 210 may provide an interface for transmitting and receiving data to and from the inside or outside of the block chain.

저장부(230)에는 분산 원장이 저장될 수 있다. 예를 들어, 블록, 스마트 계약, 계좌, 트랜잭션 등이 저장될 수 있다.A distributed ledger may be stored in the storage unit 230 . For example, blocks, smart contracts, accounts, transactions, etc. may be stored.

또한, 처리부(220)는 저장부(230)에 저장된 분산 원장인 블록체인의 블록에 저장되어 있는 트랜잭션의 내용을 처리할 수 있다. 처리부(220)의 구성은 해당 노드의 기능에 따라 달라질 수 있으며, 예를 들어 노드의 기능은 통합 관리 기능, 블록 생성 기능, 블록 검증 기능 등이 있다. 구체적으로, 통합 관리 노드의 처리부(220)는 전체 풀(Pool) 관리, P2P 관리 및 블록 동기화 관리 기능 등을 수행할 수 있고, 블록 생성 노드의 처리부(220)는 블록 생성을 수행할 수 있으며, 블록 검증 노드의 처리부(220)는 블록 검증 및 합의를 수행할 수 있다.In addition, the processing unit 220 may process contents of transactions stored in blocks of a block chain, which is a distributed ledger, stored in the storage unit 230 . The configuration of the processing unit 220 may vary depending on the function of the corresponding node. For example, the function of the node includes an integrated management function, a block generation function, a block verification function, and the like. Specifically, the processing unit 220 of the integrated management node may perform functions such as overall pool management, P2P management, and block synchronization management, and the processing unit 220 of the block generation node may perform block generation, The processing unit 220 of the block verification node may perform block verification and consensus.

본 발명에 따른 IPFS 노드(200)는 전술한 기능 또는 기능들의 조합뿐만 아니라 전술한 기능 이외의 기능을 수행하는 노드에 해당할 수 있다.The IPFS node 200 according to the present invention may correspond to a node that performs functions other than the above functions as well as the above function or combination of functions.

도 3은 일 실시예에 따른 블록 및 블록체인을 도시한 개념도이다.3 is a conceptual diagram illustrating a block and a block chain according to an embodiment.

도 3을 참조하면, 블록체인(300)은 순차적으로 연결된 하나 이상의 블록들(310, 320, 330)의 분산 데이터베이스의 일종이다. 블록체인(300)은 블록체인 시스템 내 사용자의 정보의 추가, 삭제 및 갱신 등(트랜잭션)을 저장하고 관리하기 위해 사용되며, 블록체인 시스템의 네트워크에 참여하는 각 노드가 블록(310, 320, 330)을 생성하여 블록체인(300)에 연결할 수 있다. 도 3에는 제한된 수의 블록들(310, 320, 330)이 도시되어 있으나 블록체인에 포함될 수 있는 블록의 수는 이에 제한되지 아니한다.Referring to FIG. 3, a blockchain 300 is a kind of distributed database of one or more blocks 310, 320, and 330 sequentially connected. The blockchain 300 is used to store and manage the addition, deletion, and update (transaction) of user information in the blockchain system, and each node participating in the network of the blockchain system blocks (310, 320, 330 ) can be created and connected to the blockchain 300. Although a limited number of blocks 310, 320, and 330 are shown in FIG. 3, the number of blocks that can be included in a blockchain is not limited thereto.

블록체인(300)에 포함된 각 블록(310, 320, 330)은 각각 고유의 해시 값(311, 321, 331)을 가지며, 블록 헤더(312, 322, 332)와 블록 바디(313, 323, 333)를 포함하도록 구성될 수 있다.Each block 310, 320, 330 included in the blockchain 300 has a unique hash value 311, 321, 331, and the block header 312, 322, 332 and the block body 313, 323, 333).

블록체인(300)은 연결된 하나 이상의 블록들(310, 320, 330)을 포함할 수 있다. 블록 헤더(312, 322, 332)는 각 블록들(310, 320, 330) 간의 연결 관계를 나타내기 위하여 이전 블록의 해시 값을 포함할 수 있다. 블록 헤더(312, 322, 332)에 포함된 이전 블록의 해시 값은 직전 블록에 대한 해시 값으로 직전 블록에 포함된 현재 해시와 동일한 값이다.Blockchain 300 may include one or more connected blocks 310 , 320 , and 330 . The block headers 312 , 322 , and 332 may include a hash value of a previous block to indicate a connection relationship between the respective blocks 310 , 320 , and 330 . The hash value of the previous block included in the block headers 312, 322, and 332 is a hash value for the previous block and is the same as the current hash included in the previous block.

예를 들어, 블록 N(320)의 블록 헤더(322)는 이전 블록인 블록 N-1(310)과의 연결 관계를 나타내기 위하여 블록 N-1(310)의 해시 값(311)을 포함할 수 있다. 마찬가지로, 블록 N+1(330)의 블록 헤더(332)는 이전 블록인 블록 N(320)과의 연결 관계를 나타내기 위하여 블록 N(320)의 해시 값(321)을 포함할 수 있다. 이와 같이 표현된 블록 헤더(312, 322, 332)내의 연결 관계는 블록체인(300)의 유효성 검증 과정에서 사용될 수 있다.For example, the block header 322 of the block N 320 may include the hash value 311 of the block N-1 310 to indicate a connection relationship with the block N-1 310, which is the previous block. can Similarly, the block header 332 of the block N+1 330 may include the hash value 321 of the block N 320 to indicate a connection relationship with the block N 320 as a previous block. The connection relationship in the block headers 312, 322, and 332 expressed in this way can be used in the validation process of the block chain 300.

블록들(310, 320, 330)은 각 블록 헤더(312, 322, 332) 내의 이전 블록의 해시 값에 의하여 연쇄적으로 연결된다. 분산형 네트워크에 참여하는 노드들은 블록들(310, 320, 330)에 포함된 이전 블록의 해시 값에 기반하여 블록의 유효성을 검증하므로 악의적인 단일 노드가 이미 생성된 블록의 내용을 위조 또는 변조하는 행위가 불가능하다.The blocks 310 , 320 , and 330 are chained by the hash value of the previous block in each block header 312 , 322 , and 332 . Nodes participating in the distributed network verify the validity of the block based on the hash value of the previous block included in the blocks 310, 320, and 330, so that a single malicious node can forge or tamper with the contents of an already created block. action is impossible

블록 바디(313, 323, 333)는 블록(310, 320, 330)에 저장되고 관리되는 데이터, 즉 트랜잭션 리스트(미도시)를 포함할 수 있다. 트랜잭션 리스트(미도시)는 블록체인 기반의 거래의 목록이다. 트랜잭션 리스트(미도시)는 트리 형태로 표현될 수 있다.The block bodies 313, 323, and 333 may include data stored and managed in the blocks 310, 320, and 330, that is, transaction lists (not shown). The transaction list (not shown) is a list of blockchain-based transactions. A transaction list (not shown) may be expressed in a tree form.

블록(310, 320, 330)은 블록 헤더(312, 322, 332)와 블록 바디(313, 323, 333)에 포함된 정보 이외의 기타 정보를 포함할 수 있다.The blocks 310, 320, and 330 may include other information other than the information included in the block headers 312, 322, and 332 and the block bodies 313, 323, and 333.

이하에서, 다양한 실시예에 따른 동작들은 콘텐츠 ID 분배 방법 또는 콘텐츠 ID 분배 시스템에 포함된 프로세서에 의해 수행되는 것으로 이해될 수 있다.Hereinafter, operations according to various embodiments may be understood to be performed by a processor included in a content ID distribution method or a content ID distribution system.

도 4는 IPFS 표준을 설명하기 위한 도면이다.4 is a diagram for explaining the IPFS standard.

도 4를 참조하면, IPFS가 구현되는 환경은 사용자 단말(410), 공표 서버(420) 및 스토리지 제공 서버(430, 440, 450)를 포함할 수 있다. 사용자 단말(410) 및 공표 서버(420)는 각각 도 1의 공유자 단말(130) 및 메인 서버(110)와 동일하거나, 동일한 기능을 수행하는 것일 수 있으며, 스토리지 제공 서버(430, 440, 450)는 도 1의 IPFS 네트워크(120)와 동일하거나, 동일한 기능을 수행하는 것일 수 있다.Referring to FIG. 4 , an environment in which IPFS is implemented may include a user terminal 410 , an announcement server 420 , and storage providing servers 430 , 440 , and 450 . The user terminal 410 and the announcement server 420 may be the same as or perform the same function as the sharer terminal 130 and the main server 110 of FIG. 1, respectively, and the storage providing servers 430, 440 and 450 may be the same as the IPFS network 120 of FIG. 1 or perform the same function.

공표 서버(420)는 IPFS를 활용한 온라인 애플리케이션을 제공하거나, IPFS 서비스를 제공하는 서버에 해당한다. 공표 서버(420)는 상기 애플리케이션 또는 상기 서비스를 제공받는 사용자 단말(410)로부터 파일을 전달받아 사용자 단말(410)의 파일에 대응하는 고유의 콘텐츠 ID를 공표할 수 있다. 즉, 해당 파일이 스토리지 제공 서버(430, 440, 450)에 분산 저장되도록 상기 콘텐츠 ID를 공표할 수 있다.The publishing server 420 corresponds to a server that provides an online application using IPFS or IPFS service. The announcement server 420 may receive a file from the user terminal 410 receiving the application or the service and announce a unique content ID corresponding to the file of the user terminal 410 . That is, the content ID may be announced so that the file is distributed and stored in the storage providing servers 430, 440, and 450.

파일이 스토리지 제공 서버(430, 440, 450)에 콘텐츠 ID로써 저장되고, 실제 스토리지 제공 서버(430, 440, 450)가 물리적 하드디스크에 용량을 할당하는 행위를 피닝(Pinning)이라고 한다. 따라서 스토리지 제공 서버(430, 440, 450)는 피닝 서버 또는 피닝 서비스 제공자(Pinning Service Provider)라고 칭할 수 있다.An act of storing a file as a content ID in the storage providing server 430 , 440 , 450 and assigning capacity to a physical hard disk by the actual storage providing server 430 , 440 , 450 is called pinning. Accordingly, the storage providing servers 430, 440, and 450 may be referred to as pinning servers or pinning service providers.

한편, 사용자 단말(410)이 공표 서버(420)의 IPFS 서비스를 이용하여 특정 파일을 콘텐츠 ID로써 업로드 한다고 하여 자동으로 스토리지 제공 서버(430, 440, 450)에 피닝되는 것은 아니다. 구체적으로, 특정 콘텐츠 ID에 대응하는 파일이 제1 스토리지 제공 서버(430)에 업로드 되면 나머지 제2 스토리지 제공 서버(440) 및 제3 스토리지 제공 서버(450)를 포함한 전 세계의 모든 서버에서 상기 콘텐츠 ID의 파일에 접근할 수 있으나, 이는 상기 콘텐츠 ID의 파일이 전 세계의 모든 서버에 분산 저장된 것을 의미하지 않는다.Meanwhile, when the user terminal 410 uploads a specific file as a content ID using the IPFS service of the publishing server 420, it is not automatically pinned to the storage providing servers 430, 440, and 450. Specifically, when a file corresponding to a specific content ID is uploaded to the first storage providing server 430, all servers around the world including the second storage providing server 440 and the third storage providing server 450 store the content Although the file of the ID can be accessed, this does not mean that the file of the content ID is distributed and stored in all servers around the world.

위 과정은, 예를 들어 사용자 단말(410)이 제2 스토리지 제공 서버(440)를 통해 상기 콘텐츠 ID에 접근할 때마다 제2 스토리지 제공 서버(440)가 제1 스토리지 제공 서버(430)와의 통신을 통해 파일을 읽어와 사용자 단말(410)에 제공하게 되는 것이다. 따라서 실제 저장된 제1 스토리지 제공 서버(430)가 다운되거나 불안정한 사정 등으로 인해 상기 콘텐츠 ID를 읽어올 수 없는 경우 상기 콘텐츠 ID에 접근할 수 없는 문제점이 있다. 이에 따라 전 세계에 분산된 IPFS 서버, 즉 스토리지 제공 서버에 파일을 피닝하는 것이 중요하게 된다.In the above process, for example, whenever the user terminal 410 accesses the content ID through the second storage providing server 440, the second storage providing server 440 communicates with the first storage providing server 430. The file is read through and provided to the user terminal 410 . Therefore, there is a problem in that the content ID cannot be accessed when the actually stored first storage providing server 430 is down or the content ID cannot be read due to unstable circumstances. This makes it important to pin files to globally distributed IPFS servers, i.e. servers providing storage.

그러나 도 4에 따른 IPFS 표준에 의하면 파일의 피닝 여부는 사용자 단말이 파일을 업로드 하는 행위와 별개로 사용자 단말이 직접 개별 피닝 서버에 피닝 요청을 해야 한다. 피닝 서비스가 유료인 경우, 피닝 서비스를 이용하는 사용자 단말이 맞는지 인증하는 과정은 매 피닝 요청마다 일어난다. SaaS 형 서비스에서는 사용자가 직접 올린 파일 외에도 후처리 과정을 통하여 다양한 파일이 생성되고, 이러한 파일들의 콘텐츠 ID는 사용자가 알 수 없다. 따라서 사용자 단말(410)은 공표 서버(420)의 협조 없이 스토리지 제공 서버(430, 440, 450)를 통해 데이터 백업을 할 수 없으며 사용자 단말은 모든 백업 과정을 직접 수행하거나, 혹은 피닝 서비스 사업자와 협의된 인증 정보를 공표 서버에게 공개 하여야만 한다. 또한, 공표 서버(420)는 데이터 피닝을 요청하는 새로운 스토리지 제공 서버가 등장할 때마다 피닝을 위한(Pinning API) 인증 절차를 도입하게 되는 불편함이 존재한다.However, according to the IPFS standard according to FIG. 4, whether or not a file is pinned is determined by a user terminal making a pinning request to an individual pinning server separately from an act of uploading a file by a user terminal. When the pinning service is charged, a process of authenticating whether a user terminal using the pinning service is correct occurs for every pinning request. In SaaS-type services, various files are created through post-processing in addition to the files directly uploaded by the user, and the content ID of these files is unknown to the user. Therefore, the user terminal 410 cannot back up data through the storage providing servers 430, 440, and 450 without the cooperation of the announcement server 420, and the user terminal directly performs all backup processes or negotiates with a pinning service provider. Authenticated authentication information must be disclosed to the publishing server. In addition, the announcement server 420 has an inconvenience of introducing an authentication procedure for pinning (Pinning API) whenever a new storage providing server requesting data pinning appears.

이하 도 5를 통해, 공표 서버(420)가 사용자 단말(410)이 업로드한 콘텐츠 ID 목록을 HTTP를 통해 공표하고 각 스토리지 제공 서버(430, 440, 450)가 콘텐츠 ID를 각 노드에 어떻게 피닝할지 결정하도록 하여, 콘텐츠 ID를 분배하는 방법에 관하여 상세히 서술한다.Referring to FIG. 5 below, the publishing server 420 announces the content ID list uploaded by the user terminal 410 through HTTP, and how each storage providing server 430, 440, 450 pins the content ID to each node. Let's decide, and describe in detail how to distribute the content ID.

도 5는 일 실시예에 따른 콘텐츠 ID를 분배하는 시스템(이하, '시스템')의 동작을 나타내는 예시도이다.5 is an exemplary view illustrating an operation of a system (hereinafter referred to as 'system') for distributing content IDs according to an exemplary embodiment.

도 5를 참조하면, 시스템이 동작하는 환경은 사용자 단말(510), 공표 서버(520), 웹 서버(521), 피닝 서버(530) 및 피닝 서버 데이터베이스(미도시)를 포함할 수 있다. 사용자 단말(510), 공표 서버(520) 및 피닝 서버(530)는 각각 도 4의 사용자 단말(410), 공표 서버(420) 및 스토리지 제공 서버(430, 440, 450) 중 하나와 동일하거나 동일한 기능을 수행하는 것일 수 있다. 설명의 편의를 위하여 피닝 서버(530)는 1개만 도시하였으나, 개수는 제한되지 않는다.Referring to FIG. 5 , an environment in which the system operates may include a user terminal 510, an announcement server 520, a web server 521, a pinning server 530, and a pinning server database (not shown). The user terminal 510, the announcement server 520, and the pinning server 530 are the same as or identical to one of the user terminal 410, the announcement server 420, and the storage provision servers 430, 440, and 450 of FIG. 4, respectively. may be performing a function. For convenience of description, only one pinning server 530 is shown, but the number is not limited.

일 실시예에서, 공표 서버(520)의 IPFS 서비스를 이용하는 사용자 단말(510)은 백업 데이터에 대응하는 콘텐츠 ID를 공표 서버(520)에 업로드할 수 있다. 복수 개의 백업 데이터일 경우 각각에 대응하는 고유의 콘텐츠 ID 또한 복수 개에 해당하며, 사용자 단말(510)은 하나 이상의 콘텐츠 ID를 공표 서버(520)에 업로드할 수 있다.In one embodiment, the user terminal 510 using the IPFS service of the publishing server 520 may upload a content ID corresponding to the backup data to the publishing server 520 . In the case of a plurality of backup data, each unique content ID corresponds to a plurality, and the user terminal 510 may upload one or more content IDs to the publishing server 520 .

이 때, 사용자 단말(510)은 상기 하나 이상의 콘텐츠 ID 각각이 몇 개의 복사본이 필요한지 또는 몇 개의 복사본이 있어야 안전한지를 나타내는 중복성 조건(Redundancy Requirement)을 각 콘텐츠 ID마다 정하여 공표 서버(520)에 콘텐츠 ID와 함께 업로드할 수 있다.At this time, the user terminal 510 sets a redundancy requirement for each content ID indicating how many copies each of the one or more content IDs are required or how many copies are required to be safe, and sends the content ID to the publishing server 520. can be uploaded with

또한, 사용자 단말(510)은 백업 데이터 또는 콘텐츠 ID에 대한 소유자 인증(Owner Authentication) 정보를 각 콘텐츠 ID마다, 혹은 특정 공표 서버를 일괄로 지정하여 공표 서버(520)에 콘텐츠 ID와 함께 업로드할 수 있다. 예를 들어, 소유자 인증 정보는 토큰(Token), 전자서명, 분산 신원 증명(Decentralized Identifier, DID) 중 어느 하나 또는 하나 이상에 해당할 수 있다. 인증 정보는 공개키 기반의 방식으로서 그 내용이 공개되어도 소유자의 신원 증명만 가능할 뿐 소유자의 신원을 제3자가 위조하는 것은 불가능하다.In addition, the user terminal 510 may upload backup data or owner authentication information for the content ID to the publishing server 520 together with the content ID for each content ID or by designating a specific publishing server collectively. there is. For example, the owner authentication information may correspond to any one or more than one of a token, a digital signature, and a decentralized identifier (DID). Authentication information is a public key-based method, and even if its contents are disclosed, it can only prove the owner's identity, and it is impossible for a third party to forge the owner's identity.

일 실시예에서, 공표 서버(520)는 사용자 단말(510)이 업로드 한 콘텐츠 ID를 포함하는 콘텐츠 ID 목록을 웹 서버(521)에 공표할 수 있다. 다른 실시예에서, 공표 서버(520)는 콘텐츠 ID 및 콘텐츠 ID마다 정해진 중복성 조건 및/또는 소유자 인증 정보를 포함하는 콘텐츠 ID 목록을 공표할 수 있다.In one embodiment, the publishing server 520 may publish a list of content IDs including content IDs uploaded by the user terminal 510 to the web server 521 . In another embodiment, the publishing server 520 may publish a list of content IDs including content IDs and redundancy conditions and/or owner authentication information determined for each content ID.

한편, 웹 서버(521)는 HTTP API 또는 REST API기반의 표준 프로토콜 서버일 수 있다. 독점 프로토콜이 아닌 표준 프로토콜 기반으로 공표함으로써 각 피닝 서버(530)는 독립적으로 콘텐츠 ID 목록을 받아와 피닝을 수행할 수 있으며, 공표 서버(520)는 콘텐츠 ID 목록이 어떤 피닝 서버(530)에 분산 저장되었는지 여부를 알 수 없으므로 사용자 단말(510)의 백업 데이터에 대한 보안 및 공표 서버(520)가 제공하는 IPFS 서비스의 신뢰성을 향상시킬 수 있다.Meanwhile, the web server 521 may be a standard protocol server based on HTTP API or REST API. By announcing based on a standard protocol rather than a proprietary protocol, each pinning server 530 can receive the content ID list independently and perform pinning, and the publishing server 520 distributes the content ID list to certain pinning servers 530. Since it is unknown whether it is stored or not, the security of the backup data of the user terminal 510 and the reliability of the IPFS service provided by the public announcement server 520 can be improved.

일 실시예에서, 피닝 서버(530)는 사용자 단말(510)의 백업 데이터를 피닝하기 위하여 공표된 콘텐츠 ID 목록을 요청하는 데이터 요청을 웹 서버(521)에 전송할 수 있다. 예를 들어, 피닝 서버(530)는 지정 시간(BeforeAt), 요청 크기(FetchSize), 제1 최신 기본키(Latest Primary Key, LastPK) 및 사용자 인증(User Authentication) 정보 중 적어도 하나 이상에 기초하여 데이터 요청을 전송할 수 있다.In one embodiment, the pinning server 530 may send a data request requesting a list of published content IDs to the web server 521 to pin the backup data of the user terminal 510 . For example, the pinning server 530 data data based on at least one of a designated time (BeforeAt), a request size (FetchSize), a first latest primary key (LastPK), and user authentication (User Authentication) information. request can be sent.

이 때, 기본키는 적어도 개별 콘텐츠 ID에 대해서 유일해야 하며 콘텐츠 ID 그 자체로 기본키 역할을 수행할 수 있고 소정의 이유로 콘텐츠 ID의 노출을 원하지 않는 경우 콘텐츠 ID를 암호학적 해시 함수를 사용하여 원본 유추를 어렵게 할 수 있다.At this time, the primary key must be at least unique for each content ID, and the content ID itself can serve as a primary key. If you do not want to expose the content ID for some reason, the content ID can be converted to the original content ID using a cryptographic hash function. can make inference difficult.

지정 시간은 공표된 콘텐츠 ID 목록 중에서 특정 시점 이전에 업로드 된 콘텐츠 ID 목록만을 요청하기 위하여 해당 시점을 지정한 시간에 해당할 수 있다. 요청 크기는 반환 받고자 하는 콘텐츠 ID 목록의 크기로, 콘텐츠 ID 목록에 포함된 콘텐츠 ID의 개수를 의미한다. 즉, 피닝 서버(530)가 전송하는 데이터 요청은, 공표된 콘텐츠 ID 목록 중 지정 시간 이전에 업로드 된 콘텐츠 ID 목록을 요청 크기에 해당하는 개수만큼 반환해줄 것을 요청하는 것에 해당할 수 있다.The designated time may correspond to a time when a corresponding point in time is designated in order to request only a list of content IDs uploaded prior to a specific point in time from among published content ID lists. Request size is the size of the content ID list to be returned, and means the number of content IDs included in the content ID list. That is, the data request transmitted by the pinning server 530 may correspond to a request to return a list of content IDs uploaded prior to a specified time among published content ID lists by the number corresponding to the size of the request.

일 실시예에서, 웹 서버(521)는 피닝 서버(530)의 데이터 요청에 응답하여공표된 콘텐츠 ID 목록에 포함되는 반환 콘텐츠 ID 목록을 피닝 서버(530)에 전송할 수 있다.In one embodiment, the web server 521 may transmit a return content ID list included in the published content ID list to the pinning server 530 in response to a data request from the pinning server 530 .

이 때, 웹 서버(521)가 반환 콘텐츠 ID 목록을 전송함에 있어 피닝 서버(530)가 전송한 최신 기본키(Latest Primary Key, LastPK)가 반환 콘텐츠 ID 목록의 마지막 콘텐츠 ID의 업로드 시점을 나타내는 최신 기본키가 소정의 시간(예를 들어, 1ms 미만)의 오차 범위 이내에 해당하는 경우, 다시 말해, 피닝 서버(530)가 전송한 최신 기본키와 반환 콘텐츠 ID 목록의 최신 기본키가 소정의 시간 단위로 일치하는 경우, 해당 지정 시간 이전에 업로드 된 콘텐츠 ID 목록만을 반환할 수 있다. 이를 통해 초당 수백만개의 데이터가 업로드 되는 분산 저장 시스템에서도 겹치거나 누락되는 콘텐츠 ID가 없이 반환 콘텐츠 ID 목록을 전송할 수 있다.At this time, when the web server 521 transmits the returned content ID list, the latest primary key (Latest Primary Key, LastPK) transmitted by the pinning server 530 indicates the upload time of the last content ID in the returned content ID list. If the primary key falls within the error range of a predetermined time (eg, less than 1 ms), that is, the latest primary key transmitted by the pinning server 530 and the latest primary key of the returned content ID list are determined in units of a predetermined time. If matched with , only the list of content IDs uploaded before the specified time can be returned. This makes it possible to transmit a returned content ID list without overlapping or missing content IDs even in a distributed storage system where millions of data are uploaded per second.

사용자 인증 정보는 피닝 서버(530)가 사용자 단말(510)의 백업 데이터에 대한 피닝을 수행하기 위하여 별도의 로그인 절차 없이 해당 백업 데이터에 접근할 권한이 있음을 인증하는 정보이다. 이 인증정보를 기반으로 피닝 서버는 사용자와 계약된 저장 공간의 일부를 사용하여 데이터 백업을 수행한다. 사용자 인증 정보는 사전에 사용자 단말(510)로부터 수신하거나 동의를 받아 생성한 것일 수 있다. 예를 들어, 사용자 인증 정보는 토큰(Token), 전자서명, 분산 신원 증명(Decentralized Identifier, DID) 중 어느 하나 또는 하나 이상에 해당할 수 있다.The user authentication information is information for authenticating that the pinning server 530 has authority to access the backup data without a separate login procedure in order to perform pinning on the backup data of the user terminal 510 . Based on this authentication information, the pinning server performs data backup using a part of the storage space contracted with the user. User authentication information may be received from the user terminal 510 in advance or generated with consent. For example, the user authentication information may correspond to one or more of tokens, digital signatures, and decentralized identifiers (DIDs).

일 실시예에서, 웹 서버(521)는 피닝 서버(530)가 요청한 콘텐츠 ID 목록 중에서 피닝 서버(530)가 제시한 사용자 인증 정보의 유효성, 피닝 서버(530)의 보안 설정 등의 조건에 따라 더 적은 양의 콘텐츠 ID 목록인 반환 콘텐츠 ID 목록을 전송하거나, 피닝 서버(530)의 데이터 요청에도 불구하고 콘텐츠 ID 목록을 반환하지 않을 수 있다.In one embodiment, the web server 521 further determines the validity of the user authentication information presented by the pinning server 530 from among the list of content IDs requested by the pinning server 530, security settings of the pinning server 530, and the like. A returned content ID list, which is a small amount of content ID list, may be transmitted, or the content ID list may not be returned despite a data request from the pinning server 530.

예를 들어, 웹 서버(521)는 피닝 서버(530)의 사용자 인증 정보에 기초하여 피닝 서버(530)에 공표된 콘텐츠 ID 목록에 접근할 권한이 있는 경우 반환 콘텐츠 ID를 피닝 서버(530)로 전송하고, 피닝 서버(530)에 상기 접근할 권한이 없는 경우 콘텐츠 ID 목록을 전송하지 않을 수 있다. 또는, 웹 서버(521)가 전송하는 반환 콘텐츠 ID 목록은 없음(null)일 수 있다.For example, if the web server 521 has authority to access the list of content IDs published in the pinning server 530 based on the user authentication information of the pinning server 530, the returned content ID is sent to the pinning server 530. and if there is no right to access the pinning server 530, the content ID list may not be transmitted. Alternatively, the return content ID list transmitted by the web server 521 may be null.

도 6은 일 실시예에 따른 콘텐츠 ID 목록(610) 및 반환 콘텐츠 ID 목록(620)을 설명하기 위한 예시도이다.6 is an exemplary diagram for explaining a content ID list 610 and a returned content ID list 620 according to an embodiment.

일 실시예에서, 공표 서버가 공표하는 콘텐츠 ID 목록(610) 또는 웹 서버가 전송하는 반환 콘텐츠 ID 목록(620)에는 하나 이상의 콘텐츠 ID, 하나 이상의 콘텐츠 ID 각각에 대응하는 중복성 조건과 소유자 인증 정보가 포함될 수 있으며, 각 콘텐츠 ID 목록(610, 620)에는 이에 대응하는 최신 기본키가 하나 포함될 수 있다.In one embodiment, the content ID list 610 published by the publishing server or the returned content ID list 620 transmitted by the web server includes one or more content IDs, a redundancy condition corresponding to each of the one or more content IDs, and owner authentication information. Each of the content ID lists 610 and 620 may include one latest primary key corresponding thereto.

예를 들어, 피닝 서버로부터 최신 기본키 PK#4'를 포함하는 데이터 요청이 있는 경우 웹 서버는 공표된 콘텐츠 ID 목록(610)의 최신 기본키 PK#4와 비교하여 소정의 시간 단위로 일치하는 경우에 PK#4 이전의 데이터를 반환 콘텐츠 ID 목록(620)으로 하여 피닝 서버에 전송할 수 있다.For example, if there is a request for data including the latest primary key PK#4' from the pinning server, the web server compares the latest primary key PK#4 of the published content ID list 610 and matches it in units of a predetermined time. In this case, data prior to PK#4 may be transmitted to the pinning server as the return content ID list 620 .

일 실시예에서, 피닝 서버는 복수 개에 해당하고 서버 간 통신하지 않을 수 있다. 예를 들어, 제1 피닝 서버 및 제2 피닝 서버가 병렬적으로 존재한다고 가정할 때, 제1 피닝 서버 및 제2 피닝 서버는 서버 간 통신을 하지 않아 각각의 서버가 웹 서버로부터 전송받은 반환 콘텐츠 ID 목록(620) 및 어떤 콘텐츠 ID를 피닝 했는지에 대하여 알 수 없다.In one embodiment, there may be a plurality of pinning servers and there may be no communication between servers. For example, assuming that the first pinning server and the second pinning server exist in parallel, the first pinning server and the second pinning server do not communicate with each other, so that each server returns content received from the web server. The list of IDs 620 and which content IDs were pinned are unknown.

다만 각 피닝 서버가 어떤 콘텐츠 ID를 각 구성 노드에 어떻게 피닝할 것인지 중복성 조건 알고리즘에 따라 정해짐에 따라 피닝 서버를 운영하는 스토리지 제공 사업자는 서버 증설이 간편해져 높은 확장성을 달성할 수 있다. 이하 도 7을 통해 피닝 서버가 중복성 조건 알고리즘에 따라 피닝을 수행하는 방법을 상술한다.However, as each pinning server decides which content ID to pin to each component node and how to pin it according to the redundancy condition algorithm, the storage provider operating the pinning server can easily expand the server and achieve high scalability. A method for the pinning server to perform pinning according to the redundancy condition algorithm will be described in detail with reference to FIG. 7 below.

도 7은 일 실시예에 따른 중복성 조건 알고리즘을 설명하기 위한 흐름도이다.7 is a flowchart illustrating a redundancy condition algorithm according to an exemplary embodiment.

중복성 조건 알고리즘은 피닝 서버를 구성하는 노드의 개수, 반환 콘텐츠 ID 목록에 포함된 중복성 조건 및 피닝 서버 데이터베이스에 기초하여 노드 각각이 상기 중복성 조건을 만족하도록 피닝하는 것을 보장한다. 피닝 서버 데이터베이스는 피닝 서버에 기존에 피닝되어 있던 콘텐츠 ID에 관한 정보를 저장한다.The redundancy condition algorithm ensures that each node is pinned to satisfy the redundancy condition based on the number of nodes constituting the pinning server, the redundancy condition included in the returned content ID list, and the pinning server database. The pinning server database stores information about content IDs previously pinned in the pinning server.

이하 설명하는 중복성 조건 알고리즘은 일 실시예에 불과하며, 이외에도 중복성 조건을 만족하도록 피닝하는 것을 보장하는 다양한 알고리즘이 사용될 수 있다. The redundancy condition algorithm described below is only an example, and various other algorithms that ensure pinning to satisfy the redundancy condition may be used.

단계 710에서, 피닝 서버는 피닝 서버가 X개의 노드로 구성되어 있다고 할 때, X보다 큰 소수(Prime number) N을 임의로 선택하고, 각 노드에 0부터 (N-1)까지의 N개의 수를 최대한 균등하게 할당할 수 있다. '최대한 균등하게'라는 것은 각 노드가 배분 받은 숫자의 차이가 최대 1개에 해당하도록 N개의 수를 할당하는 것을 의미한다. 이 때, N이 X보다 큰 자연수이므로 1개 이상의 수를 할당 받는 노드가 존재할 수 있다.In step 710, the pinning server, assuming that the pinning server is composed of X nodes, randomly selects a prime number N greater than X, and assigns N numbers from 0 to (N-1) to each node. Allocate as evenly as possible. 'As equally as possible' means that N numbers are allocated so that the difference between the numbers each node receives is at most 1. At this time, since N is a natural number greater than X, there may be nodes to which more than one number is assigned.

일 실시예에서, 피닝 서버의 각 노드는 독립적으로 웹 서버로부터 반환 콘텐츠 ID 목록을 획득할 수 있다. 이후 획득한 반환 콘텐츠 ID 목록에 있는 소유자 인증 정보를 피닝 서버 데이터베이스에 저장된 콘텐츠 ID와 비교하여 피닝할 콘텐츠 ID 목록을 필터링할 수 있다. 이에 따라 각 노드는 중복 없이 콘텐츠 ID를 피닝할 수 있다.In one embodiment, each node of the pinning server may independently obtain a returned content ID list from the web server. Thereafter, the list of content IDs to be pinned may be filtered by comparing the owner authentication information in the returned content ID list with the content IDs stored in the pinning server database. Accordingly, each node can pin the content ID without duplication.

단계 720에서, 피닝 서버의 각 노드는 피닝 여부를 판단할 임의의 콘텐츠 ID에 대하여, 반환 콘텐츠 ID 목록에서 해당 콘텐츠 ID의 중복성 조건 M을 추출할 수 있다. 또한, 피닝 서버의 각 노드는 M과의 곱이 N 이하가 되는 가장 큰 자연수 A를 선택할 수 있다. 즉, A*M이 N 이하가 되는 가장 큰 자연수 A를 선택할 수 있다.In step 720, each node of the pinning server may extract the redundancy condition M of the corresponding content ID from the returned content ID list for any content ID to be determined whether or not to pin. In addition, each node of the pinning server may select the largest natural number A whose product with M is equal to or less than N. That is, the largest natural number A such that A*M is equal to or smaller than N can be selected.

단계 730에서, 피닝 서버의 각 노드는 해당 콘텐츠 ID를 바이트 배열로 변환할 수 있다. 예를 들어, 피닝 서버의 각 노드는 Bases64, ASC타입 등 다양한 코덱을 이용하여 해당 콘텐츠 ID를 바이트 배열로 변환할 수 있다. 또한, 피닝 서버의 각 노드는 상기 바이트 배열을 다시 2진법으로 표현하여 정수 K를 획득하고, K를 A로 나눈 자연수 R을 구할 수 있다.In step 730, each node of the pinning server may convert the corresponding content ID into a byte array. For example, each node of the pinning server may convert the corresponding content ID into a byte array using various codecs such as Bases64 and ASC types. In addition, each node of the pinning server obtains an integer K by expressing the byte array again in binary, and obtains a natural number R obtained by dividing K by A.

단계 740에서, 피닝 서버의 각 노드는 할당 받은 수 중에 R과 일치하는 수가 있는 경우 해당 콘텐츠 ID를 노드에 피닝하고(750), 할당 받은 수 중에 R과 일치하는 수가 없는 경우 해당 콘텐츠 ID를 노드에 피닝하지 않는다(760).In step 740, each node of the pinning server pins the corresponding content ID to the node if there is a number matching R among the allocated numbers (750), and pins the corresponding content ID to the node if there is no number matching R among the allocated numbers. Do not pin (760).

단계 750 또는 단계 760 이후, 피닝 서버의 각 노드는 반환 콘텐츠 ID 목록에서 피닝 여부를 판단할 다른 임의의 콘텐츠 ID, 또는 피닝 서버 데이터베이스에 저장된 콘텐츠 ID와 비교하여 필터링한 다른 임의의 콘텐츠 ID에 대하여 상기 단계 720 내지 단계 740을 반복하여 수행할 수 있다.After step 750 or step 760, each node of the pinning server determines whether or not to pin in the list of returned content IDs, or other arbitrary content IDs filtered by comparison with content IDs stored in the pinning server database. Steps 720 to 740 may be repeatedly performed.

위와 같은 중복성 조건 알고리즘을 통해 피닝 서버의 각 노드에 어떻게 피닝할 것인지를 결정함에 따라, 중복성 조건이 M인 임의의 콘텐츠 ID에 대하여 피닝 서버에 최소 M개 이상의 복사본이 존재함을 보장할 수 있다.By determining how to pin each node of the pinning server through the above redundancy condition algorithm, it is possible to guarantee that at least M or more copies exist in the pinning server for any content ID having M redundancy conditions.

한편, 본 발명에 따른 실시예는 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다.Meanwhile, embodiments according to the present invention may be implemented in the form of a computer program that can be executed on a computer through various components, and such a computer program may be recorded on a computer-readable medium. At this time, the medium is a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical recording medium such as a CD-ROM and a DVD, a magneto-optical medium such as a floptical disk, and a ROM hardware devices specially configured to store and execute program instructions, such as RAM, flash memory, and the like.

한편, 상기 컴퓨터 프로그램은 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 프로그램의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함될 수 있다.Meanwhile, the computer program may be specially designed and configured for the present invention, or may be known and usable to those skilled in the art of computer software. An example of a computer program may include not only machine language code generated by a compiler but also high-level language code that can be executed by a computer using an interpreter or the like.

일 실시예에 따르면, 본 개시의 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to one embodiment, the method according to various embodiments of the present disclosure may be included and provided in a computer program product. Computer program products may be traded between sellers and buyers as commodities. A computer program product is distributed in the form of a device-readable storage medium (eg compact disc read only memory (CD-ROM)), or through an application store (eg Play Store™) or between two user devices. It can be distributed (e.g., downloaded or uploaded) directly or online. In the case of online distribution, at least part of the computer program product may be temporarily stored or temporarily created in a device-readable storage medium such as a manufacturer's server, an application store server, or a relay server's memory.

본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.The steps constituting the method according to the present invention may be performed in any suitable order unless an order is explicitly stated or stated to the contrary. The present invention is not necessarily limited according to the order of description of the steps. The use of all examples or exemplary terms (eg, etc.) in the present invention is simply to explain the present invention in detail, and the scope of the present invention is limited due to the examples or exemplary terms unless limited by the claims. it is not going to be In addition, those skilled in the art can appreciate that various modifications, combinations and changes can be made according to design conditions and factors within the scope of the appended claims or equivalents thereof.

따라서, 본 발명의 사상은 상기 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the above-described embodiments and should not be determined, and all scopes equivalent to or equivalently changed from the claims as well as the claims described below are within the scope of the spirit of the present invention. will be said to belong to

Claims (5)

하나 이상의 백업 데이터에 대응하는 하나 이상의 콘텐츠 ID를 공표 서버에 업로드하는 사용자 단말;
상기 하나 이상의 콘텐츠 ID를 포함하는 콘텐츠 ID 목록을 웹 서버에 공표하는 상기 공표 서버;
상기 하나 이상의 백업 데이터를 피닝(Pinning)하기 위한 데이터 요청을 상기 웹 서버에 전송하고, 상기 하나 이상의 백업 데이터에 대한 피닝을 수행하는 피닝 서버; 및
상기 데이터 요청에 응답하여 상기 콘텐츠 ID 목록에 포함되는 반환 콘텐츠 ID 목록을 상기 피닝 서버에 전송하는 상기 웹 서버;
를 포함하고,
상기 피닝 서버는,
지정 시간, 요청 크기, 제1 최신 기본키(Primary key) 및 사용자 인증 정보 중 적어도 하나 이상에 기초하여 상기 데이터 요청을 전송하되,
상기 데이터 요청은,
상기 하나 이상의 콘텐츠 ID 중, 상기 지정 시간 이전에 업로드 된 콘텐츠 ID에 대한 콘텐츠 ID 목록을 상기 요청 크기에 해당하는 개수만큼 반환해줄 것을 요청하는 것인, 콘텐츠 ID를 분배하는 시스템.
a user terminal for uploading one or more content IDs corresponding to one or more backup data to a publishing server;
a publishing server that publishes a list of content IDs including the one or more content IDs to a web server;
a pinning server that transmits a data request for pinning the one or more backup data to the web server and performs pinning on the one or more backup data; and
the web server transmitting a return content ID list included in the content ID list to the pinning server in response to the data request;
including,
The pinning server,
Transmitting the data request based on at least one or more of a designated time, a request size, a first latest primary key, and user authentication information;
The data request,
A system for distributing content IDs, wherein a content ID list for content IDs uploaded prior to the specified time among the one or more content IDs is requested to be returned by a number corresponding to the size of the request.
삭제delete 제 1 항에 있어서,
상기 웹 서버는,
상기 사용자 인증 정보에 기초하여 상기 피닝 서버에 상기 콘텐츠 ID 목록에 접근할 권한이 있는 경우 상기 반환 콘텐츠 ID 목록을 전송하고,
상기 피닝 서버에 상기 접근할 권한이 없는 경우 상기 반환 콘텐츠 ID 목록을 전송하지 않는,
콘텐츠 ID를 분배하는 시스템.
According to claim 1,
The web server,
Transmitting the return content ID list when the pinning server has authority to access the content ID list based on the user authentication information;
not transmitting the return content ID list if the pinning server does not have the access authority;
A system for distributing content IDs.
제 3 항에 있어서,
상기 사용자 인증 정보는,
별도의 로그인 절차 없이 상기 접근할 권한이 있음을 인증할 수 있는 정보로써 토큰, 전자서명 및 분산 신원 증명(Decentralized Identifier, DID) 중 적어도 하나에 해당하는,
콘텐츠 ID를 분배하는 시스템.
According to claim 3,
The user authentication information,
Information that can authenticate the access authority without a separate login procedure, corresponding to at least one of a token, digital signature, and decentralized identity (DID),
A system for distributing content IDs.
제 1 항에 있어서,
상기 콘텐츠 ID 목록은,
하나 이상의 소유자 인증 정보를 더 포함하고,
상기 하나 이상의 소유자 인증 정보는,
상기 하나 이상의 콘텐츠 ID에 대하여, 상기 하나 이상의 콘텐츠 ID 각각에 대한 소유자를 인증하는 정보인,
콘텐츠 ID를 분배하는 시스템.
According to claim 1,
The content ID list is
further includes one or more owner authentication information;
The one or more owner authentication information,
For the one or more content IDs, information for authenticating the owner of each of the one or more content IDs,
A system for distributing content IDs.
KR1020220117966A 2022-09-19 2022-09-19 Method and system for distributing content id for ipfs KR102494825B1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020220117966A KR102494825B1 (en) 2022-09-19 2022-09-19 Method and system for distributing content id for ipfs
PCT/KR2022/015089 WO2024063191A1 (en) 2022-09-19 2022-10-07 Method and system for distributing content id for ipfs
KR1020230011190A KR102592978B1 (en) 2022-09-19 2023-01-27 Method and system for distributing content id for ipfs
PCT/KR2023/014206 WO2024063519A1 (en) 2022-09-19 2023-09-19 Method, apparatus and system for managing data based on blockchain
KR1020230139818A KR20240039604A (en) 2022-09-19 2023-10-18 Method and system for distributing content id for ipfs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220117966A KR102494825B1 (en) 2022-09-19 2022-09-19 Method and system for distributing content id for ipfs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020230011190A Division KR102592978B1 (en) 2022-09-19 2023-01-27 Method and system for distributing content id for ipfs

Publications (1)

Publication Number Publication Date
KR102494825B1 true KR102494825B1 (en) 2023-02-06

Family

ID=85224082

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020220117966A KR102494825B1 (en) 2022-09-19 2022-09-19 Method and system for distributing content id for ipfs
KR1020230011190A KR102592978B1 (en) 2022-09-19 2023-01-27 Method and system for distributing content id for ipfs
KR1020230139818A KR20240039604A (en) 2022-09-19 2023-10-18 Method and system for distributing content id for ipfs

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020230011190A KR102592978B1 (en) 2022-09-19 2023-01-27 Method and system for distributing content id for ipfs
KR1020230139818A KR20240039604A (en) 2022-09-19 2023-10-18 Method and system for distributing content id for ipfs

Country Status (2)

Country Link
KR (3) KR102494825B1 (en)
WO (1) WO2024063191A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220028462A (en) * 2020-08-28 2022-03-08 경일대학교산학협력단 The apparatus and method of managing contents using blackchain did
KR102406172B1 (en) * 2021-08-27 2022-06-10 주식회사 라젠 Method and system for providing NFT-based eco-friendly big data distribution platform services

Family Cites Families (3)

* 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
KR20200106311A (en) * 2019-03-04 2020-09-14 주식회사 미디어스토리 Method and system for managing content using block chain
KR102057622B1 (en) * 2019-04-30 2019-12-19 조형기 Contents management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220028462A (en) * 2020-08-28 2022-03-08 경일대학교산학협력단 The apparatus and method of managing contents using blackchain did
KR102406172B1 (en) * 2021-08-27 2022-06-10 주식회사 라젠 Method and system for providing NFT-based eco-friendly big data distribution platform services

Also Published As

Publication number Publication date
KR102592978B1 (en) 2023-10-24
KR20240039604A (en) 2024-03-26
WO2024063191A1 (en) 2024-03-28

Similar Documents

Publication Publication Date Title
US11533321B2 (en) Secure decentralized file sharing systems and methods
KR102065315B1 (en) System and method for keeping and sharing a file based on block chain network
JP6370016B2 (en) Hierarchical network system, node and program used therefor
CN110912707B (en) Block chain-based digital certificate processing method, device, equipment and storage medium
US20200076884A1 (en) Methods and apparatus for performing distributed computing using blockchain
Choi et al. Blockchain-based distributed firmware update architecture for IoT devices
JP6543743B1 (en) Management program
US11121876B2 (en) Distributed access control
CN110119390B (en) Financial information outsourcing management system based on block chain
CN111327426B (en) Data sharing method and related device, equipment and system
Cangir et al. A taxonomy for Blockchain based distributed storage technologies
EP4002786B1 (en) Distributed ledger system
KR102286016B1 (en) System Providing Cloud Service Based on Blockchain
CN111522809A (en) Data processing method, system and equipment
US20230232222A1 (en) User terminal, authentication terminal, registration terminal, management system and program
CN107637016B (en) Authentication device, authentication system, authentication method, and recording medium
CN110910110B (en) Data processing method and device and computer storage medium
JP2019212017A (en) Communication device and communication method
WO2020002366A1 (en) Decentralised data management
KR102494825B1 (en) Method and system for distributing content id for ipfs
Lage et al. Blockchain applications in cybersecurity
WO2023082883A1 (en) Cross-blockchain transaction processing method and apparatus, and computer device, computer storage medium and computer program product
Diarra Choosing a consensus protocol for uses cases in distributed ledger technologies
KR102529277B1 (en) Method and apparatus for encrypting data to realize web3.0
KR102131548B1 (en) Method for generating electronic wallet and cryptocurrency transaction method using the method

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant