KR102494825B1 - Method and system for distributing content id for ipfs - Google Patents
Method and system for distributing content id for ipfs Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000004044 response Effects 0.000 claims abstract description 4
- 238000004422 calculation algorithm Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/108—Transfer of content, software, digital rights or licenses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network 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
Description
본 개시는 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
메인 서버(110)는 IPFS 네트워크(120)에 대한 관제 및 관리를 수행하는 것으로서, 이 때 메인 서버(110)가 피어 리더(Peer Leader) 역할을 수행하는 것이라 할 수 있다. 따라서 IPFS 노드(121, 122, 123, 124) 중 피어 리더의 역할을 수행하는 것이 메인 서버(110)가 될 수 있다. 혹은 별도의 메인 서버(110)를 구비하여 IPFS 노드(121, 122, 123, 124)에 대한 관리 역할을 수행하게 하는 것도 가능하다.The
즉, 메인 서버(110)는 파일 암호화, 분할 처리, 그리고 IPFS 노드(121, 122, 123, 124)로의 분산 저장을 수행하는 주체가 될 수 있으며, IPFS 네트워크(120)를 구성하며 피어 리더의 역할을 수행할 수 있는 것이라면 별도의 제한을 두지 않는다.That is, the
더불어 메인 서버(110)는 IPFS 노드(121, 122, 123, 124)의 운영 상태를 파악하는 능동적 감시 및 데이터의 업로드/다운로드 상태를 모니터링하는 수동적 감시를 통해 IPFS 노드(121, 122, 123, 124) 및 그를 통한 데이터 분산 저장, 데이터의 업로드 및 다운로드에 대한 관제 및 모니터링을 수행하는 것이라 할 수 있다.In addition, the
또한, 도 1에 도시하지는 않았으나 메인 서버(110)는 사용자 단말(130)에 각 사용자 별 고유 코드가 탑재된 애플리케이션(Application)을 배포하고 통신하며, 문서의 검증과 확인 및 복원결과와 처리된 이력을 관리하고, 사용자 단말의 변경 또는 분실에 대비한 재인증을 처리하는 애플리케이션 서버(미도시)를 더 포함할 수 있다.In addition, although not shown in FIG. 1, the
IPFS 노드(121, 122, 123, 124)는 IPFS 네트워크(120)에 있어서 파일이 분할된 데이터 조각에 대한 저장 처리뿐만 아니라 해당 파일의 다운로드 내역 또는 업로드 내역을 포함할 수 있는 트랜잭션(Transaction) 정보가 포함된 블록 및 해당 블록이 쌓인 블록체인에 대한 사본을 저장하는 기능을 수행한다. 블록 및 블록체인에 대하여는 도 3에서 상세히 설명한다.The
IPFS 노드(121, 122, 123, 124)는 콘텐츠 ID(Contents Identification, CID)를 입력으로 받고 콘텐츠 ID의 원본 데이터를 복구할 수 있는 능력을 가진 모든 컴퓨팅 장비를 의미할 수 있다. 또한, IPFS 노드(121, 122, 123, 124)는 중앙 서버, 릴레이 서버, P2P 네트워크, 블록체인 네트워크 등 다양한 통신수단을 통해서 상호간 통신할 수 있다.The
이 때, 콘텐츠 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
인증 수단으로는 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
메인 서버(110)가 공급하는 콘텐츠 ID는 원본 파일의 콘텐츠 ID일 수도 있고 요구사항에 따라 원본을 암호화 한 결과물의 콘텐츠 ID일 수 있다. 이 때, 암호화 규격을 공유하기 위한 별도의 메타데이터를 공유할 수 있다. 메타데이터는 원본이 노출되어도 보안상 취약점이 없는 정보만을 포함할 수 있다. 예컨대, 암호화 알고리즘의 종류, 패딩 방법 및 초기 벡터 값 등이 있다.The content ID supplied by the
공유자 단말(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
IPFS 노드(121, 122, 123, 124)는 콘텐츠 ID의 암호학적 해시 기능을 이용하여 원본 파일의 위변조 가능성을 메인 서버(110)의 도움 없이 검증을 완료할 수 있으며, 콘텐츠 ID의 원본 파일이 IPFS 네트워크(120)의 임의의 장치에 저장되어 있다고 하더라도 이를 자동화된 절차를 통해 탐색 및 데이터를 가져올 수 있다.The
도 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
통신부(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
블록체인(300)에 포함된 각 블록(310, 320, 330)은 각각 고유의 해시 값(311, 321, 331)을 가지며, 블록 헤더(312, 322, 332)와 블록 바디(313, 323, 333)를 포함하도록 구성될 수 있다.Each
블록체인(300)은 연결된 하나 이상의 블록들(310, 320, 330)을 포함할 수 있다. 블록 헤더(312, 322, 332)는 각 블록들(310, 320, 330) 간의 연결 관계를 나타내기 위하여 이전 블록의 해시 값을 포함할 수 있다. 블록 헤더(312, 322, 332)에 포함된 이전 블록의 해시 값은 직전 블록에 대한 해시 값으로 직전 블록에 포함된 현재 해시와 동일한 값이다.
예를 들어, 블록 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
블록들(310, 320, 330)은 각 블록 헤더(312, 322, 332) 내의 이전 블록의 해시 값에 의하여 연쇄적으로 연결된다. 분산형 네트워크에 참여하는 노드들은 블록들(310, 320, 330)에 포함된 이전 블록의 해시 값에 기반하여 블록의 유효성을 검증하므로 악의적인 단일 노드가 이미 생성된 블록의 내용을 위조 또는 변조하는 행위가 불가능하다.The
블록 바디(313, 323, 333)는 블록(310, 320, 330)에 저장되고 관리되는 데이터, 즉 트랜잭션 리스트(미도시)를 포함할 수 있다. 트랜잭션 리스트(미도시)는 블록체인 기반의 거래의 목록이다. 트랜잭션 리스트(미도시)는 트리 형태로 표현될 수 있다.The
블록(310, 320, 330)은 블록 헤더(312, 322, 332)와 블록 바디(313, 323, 333)에 포함된 정보 이외의 기타 정보를 포함할 수 있다.The
이하에서, 다양한 실시예에 따른 동작들은 콘텐츠 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
공표 서버(420)는 IPFS를 활용한 온라인 애플리케이션을 제공하거나, IPFS 서비스를 제공하는 서버에 해당한다. 공표 서버(420)는 상기 애플리케이션 또는 상기 서비스를 제공받는 사용자 단말(410)로부터 파일을 전달받아 사용자 단말(410)의 파일에 대응하는 고유의 콘텐츠 ID를 공표할 수 있다. 즉, 해당 파일이 스토리지 제공 서버(430, 440, 450)에 분산 저장되도록 상기 콘텐츠 ID를 공표할 수 있다.The
파일이 스토리지 제공 서버(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
한편, 사용자 단말(410)이 공표 서버(420)의 IPFS 서비스를 이용하여 특정 파일을 콘텐츠 ID로써 업로드 한다고 하여 자동으로 스토리지 제공 서버(430, 440, 450)에 피닝되는 것은 아니다. 구체적으로, 특정 콘텐츠 ID에 대응하는 파일이 제1 스토리지 제공 서버(430)에 업로드 되면 나머지 제2 스토리지 제공 서버(440) 및 제3 스토리지 제공 서버(450)를 포함한 전 세계의 모든 서버에서 상기 콘텐츠 ID의 파일에 접근할 수 있으나, 이는 상기 콘텐츠 ID의 파일이 전 세계의 모든 서버에 분산 저장된 것을 의미하지 않는다.Meanwhile, when the
위 과정은, 예를 들어 사용자 단말(410)이 제2 스토리지 제공 서버(440)를 통해 상기 콘텐츠 ID에 접근할 때마다 제2 스토리지 제공 서버(440)가 제1 스토리지 제공 서버(430)와의 통신을 통해 파일을 읽어와 사용자 단말(410)에 제공하게 되는 것이다. 따라서 실제 저장된 제1 스토리지 제공 서버(430)가 다운되거나 불안정한 사정 등으로 인해 상기 콘텐츠 ID를 읽어올 수 없는 경우 상기 콘텐츠 ID에 접근할 수 없는 문제점이 있다. 이에 따라 전 세계에 분산된 IPFS 서버, 즉 스토리지 제공 서버에 파일을 피닝하는 것이 중요하게 된다.In the above process, for example, whenever the
그러나 도 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
이하 도 5를 통해, 공표 서버(420)가 사용자 단말(410)이 업로드한 콘텐츠 ID 목록을 HTTP를 통해 공표하고 각 스토리지 제공 서버(430, 440, 450)가 콘텐츠 ID를 각 노드에 어떻게 피닝할지 결정하도록 하여, 콘텐츠 ID를 분배하는 방법에 관하여 상세히 서술한다.Referring to FIG. 5 below, the
도 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
일 실시예에서, 공표 서버(520)의 IPFS 서비스를 이용하는 사용자 단말(510)은 백업 데이터에 대응하는 콘텐츠 ID를 공표 서버(520)에 업로드할 수 있다. 복수 개의 백업 데이터일 경우 각각에 대응하는 고유의 콘텐츠 ID 또한 복수 개에 해당하며, 사용자 단말(510)은 하나 이상의 콘텐츠 ID를 공표 서버(520)에 업로드할 수 있다.In one embodiment, the
이 때, 사용자 단말(510)은 상기 하나 이상의 콘텐츠 ID 각각이 몇 개의 복사본이 필요한지 또는 몇 개의 복사본이 있어야 안전한지를 나타내는 중복성 조건(Redundancy Requirement)을 각 콘텐츠 ID마다 정하여 공표 서버(520)에 콘텐츠 ID와 함께 업로드할 수 있다.At this time, the
또한, 사용자 단말(510)은 백업 데이터 또는 콘텐츠 ID에 대한 소유자 인증(Owner Authentication) 정보를 각 콘텐츠 ID마다, 혹은 특정 공표 서버를 일괄로 지정하여 공표 서버(520)에 콘텐츠 ID와 함께 업로드할 수 있다. 예를 들어, 소유자 인증 정보는 토큰(Token), 전자서명, 분산 신원 증명(Decentralized Identifier, DID) 중 어느 하나 또는 하나 이상에 해당할 수 있다. 인증 정보는 공개키 기반의 방식으로서 그 내용이 공개되어도 소유자의 신원 증명만 가능할 뿐 소유자의 신원을 제3자가 위조하는 것은 불가능하다.In addition, the
일 실시예에서, 공표 서버(520)는 사용자 단말(510)이 업로드 한 콘텐츠 ID를 포함하는 콘텐츠 ID 목록을 웹 서버(521)에 공표할 수 있다. 다른 실시예에서, 공표 서버(520)는 콘텐츠 ID 및 콘텐츠 ID마다 정해진 중복성 조건 및/또는 소유자 인증 정보를 포함하는 콘텐츠 ID 목록을 공표할 수 있다.In one embodiment, the
한편, 웹 서버(521)는 HTTP API 또는 REST API기반의 표준 프로토콜 서버일 수 있다. 독점 프로토콜이 아닌 표준 프로토콜 기반으로 공표함으로써 각 피닝 서버(530)는 독립적으로 콘텐츠 ID 목록을 받아와 피닝을 수행할 수 있으며, 공표 서버(520)는 콘텐츠 ID 목록이 어떤 피닝 서버(530)에 분산 저장되었는지 여부를 알 수 없으므로 사용자 단말(510)의 백업 데이터에 대한 보안 및 공표 서버(520)가 제공하는 IPFS 서비스의 신뢰성을 향상시킬 수 있다.Meanwhile, the
일 실시예에서, 피닝 서버(530)는 사용자 단말(510)의 백업 데이터를 피닝하기 위하여 공표된 콘텐츠 ID 목록을 요청하는 데이터 요청을 웹 서버(521)에 전송할 수 있다. 예를 들어, 피닝 서버(530)는 지정 시간(BeforeAt), 요청 크기(FetchSize), 제1 최신 기본키(Latest Primary Key, LastPK) 및 사용자 인증(User Authentication) 정보 중 적어도 하나 이상에 기초하여 데이터 요청을 전송할 수 있다.In one embodiment, the pinning
이 때, 기본키는 적어도 개별 콘텐츠 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
일 실시예에서, 웹 서버(521)는 피닝 서버(530)의 데이터 요청에 응답하여공표된 콘텐츠 ID 목록에 포함되는 반환 콘텐츠 ID 목록을 피닝 서버(530)에 전송할 수 있다.In one embodiment, the
이 때, 웹 서버(521)가 반환 콘텐츠 ID 목록을 전송함에 있어 피닝 서버(530)가 전송한 최신 기본키(Latest Primary Key, LastPK)가 반환 콘텐츠 ID 목록의 마지막 콘텐츠 ID의 업로드 시점을 나타내는 최신 기본키가 소정의 시간(예를 들어, 1ms 미만)의 오차 범위 이내에 해당하는 경우, 다시 말해, 피닝 서버(530)가 전송한 최신 기본키와 반환 콘텐츠 ID 목록의 최신 기본키가 소정의 시간 단위로 일치하는 경우, 해당 지정 시간 이전에 업로드 된 콘텐츠 ID 목록만을 반환할 수 있다. 이를 통해 초당 수백만개의 데이터가 업로드 되는 분산 저장 시스템에서도 겹치거나 누락되는 콘텐츠 ID가 없이 반환 콘텐츠 ID 목록을 전송할 수 있다.At this time, when the
사용자 인증 정보는 피닝 서버(530)가 사용자 단말(510)의 백업 데이터에 대한 피닝을 수행하기 위하여 별도의 로그인 절차 없이 해당 백업 데이터에 접근할 권한이 있음을 인증하는 정보이다. 이 인증정보를 기반으로 피닝 서버는 사용자와 계약된 저장 공간의 일부를 사용하여 데이터 백업을 수행한다. 사용자 인증 정보는 사전에 사용자 단말(510)로부터 수신하거나 동의를 받아 생성한 것일 수 있다. 예를 들어, 사용자 인증 정보는 토큰(Token), 전자서명, 분산 신원 증명(Decentralized Identifier, DID) 중 어느 하나 또는 하나 이상에 해당할 수 있다.The user authentication information is information for authenticating that the pinning
일 실시예에서, 웹 서버(521)는 피닝 서버(530)가 요청한 콘텐츠 ID 목록 중에서 피닝 서버(530)가 제시한 사용자 인증 정보의 유효성, 피닝 서버(530)의 보안 설정 등의 조건에 따라 더 적은 양의 콘텐츠 ID 목록인 반환 콘텐츠 ID 목록을 전송하거나, 피닝 서버(530)의 데이터 요청에도 불구하고 콘텐츠 ID 목록을 반환하지 않을 수 있다.In one embodiment, the
예를 들어, 웹 서버(521)는 피닝 서버(530)의 사용자 인증 정보에 기초하여 피닝 서버(530)에 공표된 콘텐츠 ID 목록에 접근할 권한이 있는 경우 반환 콘텐츠 ID를 피닝 서버(530)로 전송하고, 피닝 서버(530)에 상기 접근할 권한이 없는 경우 콘텐츠 ID 목록을 전송하지 않을 수 있다. 또는, 웹 서버(521)가 전송하는 반환 콘텐츠 ID 목록은 없음(null)일 수 있다.For example, if the
도 6은 일 실시예에 따른 콘텐츠 ID 목록(610) 및 반환 콘텐츠 ID 목록(620)을 설명하기 위한 예시도이다.6 is an exemplary diagram for explaining a
일 실시예에서, 공표 서버가 공표하는 콘텐츠 ID 목록(610) 또는 웹 서버가 전송하는 반환 콘텐츠 ID 목록(620)에는 하나 이상의 콘텐츠 ID, 하나 이상의 콘텐츠 ID 각각에 대응하는 중복성 조건과 소유자 인증 정보가 포함될 수 있으며, 각 콘텐츠 ID 목록(610, 620)에는 이에 대응하는 최신 기본키가 하나 포함될 수 있다.In one embodiment, the
예를 들어, 피닝 서버로부터 최신 기본키 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
일 실시예에서, 피닝 서버는 복수 개에 해당하고 서버 간 통신하지 않을 수 있다. 예를 들어, 제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
다만 각 피닝 서버가 어떤 콘텐츠 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
일 실시예에서, 피닝 서버의 각 노드는 독립적으로 웹 서버로부터 반환 콘텐츠 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
단계 730에서, 피닝 서버의 각 노드는 해당 콘텐츠 ID를 바이트 배열로 변환할 수 있다. 예를 들어, 피닝 서버의 각 노드는 Bases64, ASC타입 등 다양한 코덱을 이용하여 해당 콘텐츠 ID를 바이트 배열로 변환할 수 있다. 또한, 피닝 서버의 각 노드는 상기 바이트 배열을 다시 2진법으로 표현하여 정수 K를 획득하고, K를 A로 나눈 자연수 R을 구할 수 있다.In
단계 740에서, 피닝 서버의 각 노드는 할당 받은 수 중에 R과 일치하는 수가 있는 경우 해당 콘텐츠 ID를 노드에 피닝하고(750), 할당 받은 수 중에 R과 일치하는 수가 없는 경우 해당 콘텐츠 ID를 노드에 피닝하지 않는다(760).In
단계 750 또는 단계 760 이후, 피닝 서버의 각 노드는 반환 콘텐츠 ID 목록에서 피닝 여부를 판단할 다른 임의의 콘텐츠 ID, 또는 피닝 서버 데이터베이스에 저장된 콘텐츠 ID와 비교하여 필터링한 다른 임의의 콘텐츠 ID에 대하여 상기 단계 720 내지 단계 740을 반복하여 수행할 수 있다.After
위와 같은 중복성 조건 알고리즘을 통해 피닝 서버의 각 노드에 어떻게 피닝할 것인지를 결정함에 따라, 중복성 조건이 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 목록을 웹 서버에 공표하는 상기 공표 서버;
상기 하나 이상의 백업 데이터를 피닝(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.
상기 웹 서버는,
상기 사용자 인증 정보에 기초하여 상기 피닝 서버에 상기 콘텐츠 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.
상기 사용자 인증 정보는,
별도의 로그인 절차 없이 상기 접근할 권한이 있음을 인증할 수 있는 정보로써 토큰, 전자서명 및 분산 신원 증명(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.
상기 콘텐츠 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.
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)
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)
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 |
-
2022
- 2022-09-19 KR KR1020220117966A patent/KR102494825B1/en active IP Right Grant
- 2022-10-07 WO PCT/KR2022/015089 patent/WO2024063191A1/en unknown
-
2023
- 2023-01-27 KR KR1020230011190A patent/KR102592978B1/en active IP Right Grant
- 2023-10-18 KR KR1020230139818A patent/KR20240039604A/en unknown
Patent Citations (2)
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 |