WO2020004756A1 - 분산 데이터 시스템 및 데이터 분산 저장 방법 - Google Patents
분산 데이터 시스템 및 데이터 분산 저장 방법 Download PDFInfo
- Publication number
- WO2020004756A1 WO2020004756A1 PCT/KR2019/000425 KR2019000425W WO2020004756A1 WO 2020004756 A1 WO2020004756 A1 WO 2020004756A1 KR 2019000425 W KR2019000425 W KR 2019000425W WO 2020004756 A1 WO2020004756 A1 WO 2020004756A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- node
- event block
- event
- generated
- value
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- 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
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
Definitions
- the present disclosure relates to distributed data systems and methods and apparatus for data distributed storage.
- the conventional centralized data system is a system in which a server collects and stores data about networked nodes. Although the data is easy to manage, there is a risk that the data of the entire system may be lost if a security problem occurs in the server. there was.
- a distributed data system refers to a system in which all nodes connected to a peer-to-peer network are the subjects of data generation and have the same data record.
- a distributed data system manages a kind of distributed ledger (distributed database) that stores data records sequentially, and is attracting attention as a system that can provide new solutions in various fields such as virtual currency, IoT, logistics management, customer management, and financial system. have.
- a distributed byzantine fault tolerance (pBFT) consensus algorithm may be applied to a distributed data system.
- the pBFT consensus algorithm refers to an algorithm that guarantees that the correct value is reached without affecting the wrong value in the entire distributed data system even if a specific node delivers the wrong value to other nodes in the network.
- the pBFT consensus algorithm is an algorithm that can achieve consensus so that the reliability of the distributed data system does not have a problem even when some nodes are unreliable between the consensus nodes.
- the pBFT consensus algorithm is a consensus algorithm for a permissioned distributed data system in which participating nodes are limited, and assumes an asynchronous network environment.
- Typical pBFT consensus algorithms include Tangle and Hashgraph, but new algorithms for overcoming the fact that it takes a lot of time to reach consensus and that each node has to perform a complex operation to derive consensus. Research is ongoing.
- the technical problem to be achieved by the present embodiment is not limited to the technical problems as described above, and further technical problems can be inferred from the following embodiments.
- a method of storing data distributed at a first node includes determining at least one reference event block for generating a first event block, based on time information corresponding to the at least one reference event block. Determining time information of the first event block, generating a first event block based on the determined time information, and determining an event block as a root of a current frame based on information corresponding to the generated first event block.
- the method may include updating a flag table including information on an event block reachable in the first event block.
- a node in a distributed data system including two or more nodes according to another aspect, includes a communication unit for transmitting and receiving data to and from another node, a memory for storing instructions, and a processor for processing instructions, and the processor includes data according to one aspect.
- the steps of the distributed storage method can be performed.
- a computer readable recording medium having recorded thereon a program for executing the method on a computer.
- the distributed data system can secure the reliability of the agreed data, and can reduce the time required for nodes included in the distributed data system to derive the agreement and the amount of computation of the nodes.
- the data distributed storage method may perform a method of deleting unnecessary data, thereby reducing the amount of data stored in the node.
- FIG. 1 is a diagram illustrating an event block chain according to an exemplary embodiment.
- FIG. 2 is a diagram for describing a data structure of an event block, according to an exemplary embodiment.
- FIG. 3 is a diagram illustrating a ramport timestamp algorithm according to an exemplary embodiment.
- FIG. 4 is a diagram for describing an event block chain according to another exemplary embodiment.
- FIG. 5 is a diagram for describing a hierarchical sum order according to an embodiment.
- FIG. 6 is a diagram for describing data stored in a node, according to an exemplary embodiment.
- FIG. 7 is a diagram for describing a method of storing data by each node when generating an event block according to an exemplary embodiment.
- FIG. 8 is a diagram for describing a method of determining, by a node, a route using a flag table, according to an exemplary embodiment.
- FIG. 9 is a diagram for describing a method of determining, by a node, a cloto using a cloto check list according to an embodiment.
- FIG. 10 is a diagram for describing a method of storing, by a node, a root in a new frame item according to an embodiment.
- FIG. 11 is a diagram for describing a method of determining a cloto by a node according to an exemplary embodiment.
- 12A to 12C are diagrams for describing a method of determining, by a node, a minimum time value, according to an exemplary embodiment.
- 13A to 13C are diagrams for describing a method of determining, by a node, an agreed time value according to an embodiment.
- 14A and 14B are diagrams for describing a method in which a node performs reselection of a minimum time value, according to an exemplary embodiment.
- FIG. 15 is a diagram for describing a method of determining an order between event blocks that have reached an agreement, according to an exemplary embodiment.
- 16 is a diagram for describing a method of determining, by a node, a reference event block using a flag table according to an embodiment.
- 17 is a diagram for describing a method of determining, by a node, a reference event block by using a height vector and an entry order vector.
- 18A to 18D are diagrams for describing a method in which a node transmits and receives data with another node, according to an exemplary embodiment.
- 19A and 19B illustrate a consensus algorithm according to an embodiment.
- 20 is a flowchart illustrating a data distribution storage method, according to an exemplary embodiment.
- 21 is a block diagram illustrating a structure of a node included in a distributed data system according to an embodiment.
- a method of storing data distributed at a first node includes determining at least one reference event block for generating a first event block, based on time information corresponding to the at least one reference event block. Determining time information of the first event block, generating a first event block based on the determined time information, and determining an event block as a root of a current frame based on information corresponding to the generated first event block.
- the method may include updating a flag table including information on an event block reachable in the first event block.
- a part when a part is connected to another part, it includes not only a case where the part is directly connected, but also an electric part connected between other components in between. .
- a part when a part includes a certain component, this means that the component may further include other components, not to exclude other components unless specifically stated otherwise.
- the terms "... unit”, “... module” described in the embodiments means a unit for processing at least one function or operation, which is implemented in hardware or software, or a combination of hardware and software. Can be implemented.
- the components and ' ⁇ ' may be implemented to play one or more CPUs in the device or secure multimedia card.
- each step of the flowchart for describing the embodiments and combinations of steps can be performed by computer program instructions. Since these computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, those instructions executed through the processor of the computer or other programmable data processing equipment may be described in flow chart block (s). It creates a means to perform the functions. These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, and thus the computer usable or computer readable memory. It is also possible for the instructions stored in to produce an article of manufacture containing instruction means for performing the functions described in the flowchart block (s).
- Computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operating steps may be performed on the computer or other programmable data processing equipment to create a computer-implemented process to create a computer or other programmable data. Instructions for performing the processing equipment may also provide steps for performing the functions described in the flowchart block (s).
- each block may represent a portion of a module, segment, or code that includes one or more executable instructions for executing a specified logical function (s).
- logical function e.g., a module, segment, or code that includes one or more executable instructions for executing a specified logical function (s).
- the functions noted in the blocks may occur out of order.
- the two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the corresponding function.
- FIG. 1 is a diagram illustrating an event block chain according to an exemplary embodiment.
- the node is an apparatus for generating an event block by a user and communicating with other nodes to derive an agreement time value between the event blocks.
- the node is a smart phone, a tablet PC, a mobile phone, a personal digital assistant (PDA), A computing device including at least one of a laptop and other mobile computing devices, and may include an electronic device capable of performing operations and communicating with other nodes in addition to the above-mentioned devices.
- a circle is an event block
- the event block may include a plurality of transaction information, and means a unit of data for which an agreement time value is determined through an agreement algorithm.
- Lowercase letters written in each circle of FIG. 1 indicate a node that generated the corresponding event block, and numbers are assigned based on the order in which the event blocks generated by the node are generated. The number is known.
- the circle marked 'c1' in FIG. 1 means the first event block generated by the C node.
- each node may refer to at least one of an event block previously generated by itself or another node when generating an event block.
- each node may refer to two or more event blocks including the most recent event block among the event blocks generated by each node.
- the number of event blocks referred to may vary depending on the system.
- the number of event blocks referred to may be fixed and may vary for each event block.
- the node determines a procedure for determining the number of event blocks to refer to when creating a new event block. It can also be done in addition.
- the referenced event blocks may be connected by an arrow.
- a node C may generate c2 in the third time slot, and if the number of event blocks referred to is three, then the reference event block of c2 is the event most recently generated by the node C itself. It may be the most recent event blocks a2 and d1 among the block c1 and the event blocks generated by the A and D nodes.
- the C node may select event blocks generated by other nodes in addition to the event block most recently generated by the node C as the reference event block, where the reference event block may be selected through various embodiments of the present disclosure. have.
- each node asynchronously generates event blocks, and the event block chain may be displayed as a graph based on a directed acyclic graph (DAG).
- DAG directed acyclic graph
- FIG. 2 is a diagram for describing a data structure of an event block, according to an exemplary embodiment.
- an event block may be a unit of data for which an agreement time value is determined, and may include at least one of signature information, time stamp, transaction information, and a hash vector.
- the signature information may include information about a node that generates the corresponding event block, and different event blocks generated by one node may include the same signature information.
- the time stamp includes information indicating when an event block is generated.
- a sum of time values may be derived based on the time stamp.
- the time stamp may include at least one of a logical time value and a physical time value.
- the logical time value refers to time information that is used to determine a partial order based on a generated-before relation between some event blocks included in the event block chain.
- One embodiment of the present disclosure uses a Lambport timestamp algorithm to obtain a logical time value. According to an embodiment, when generating a new event block, a value increased by one than the largest value among the logical time values of the reference event block of the generated event block may correspond to the logical time value.
- the physical time value means the actual time information of the node at the time of generation of the event block.
- Such a time physical time value may be stored as a time value or in the form of a hash value.
- Transaction information includes the actual transaction history information performed by each node, the size of the transaction information is variable, but may be limited depending on the performance of the node and distributed data system.
- the hash vector includes hash information about reference event blocks of the corresponding event block. Since the number of reference event blocks may vary, the size of the hash vector may be variable.
- FIG. 3 is a diagram illustrating a ramport timestamp algorithm according to an exemplary embodiment.
- An event block generated by nodes A through E is disclosed.
- An event block according to an embodiment of the present disclosure may utilize a ramport timestamp value as a logical time value, and the ramport timestamp value of each event block may be determined according to the ramport timestamp algorithm below.
- the ramport timestamp value of the first event block generated by each node is determined to be 1. Thereafter, the ramport timestamp value of each event block may be determined according to the ramport timestamp value of the reference event block. In detail, the ramport timestamp value of the event block is determined to be one greater than the maximum value among the ramport timestamp values of the reference event blocks. According to an embodiment, the timestamp value of the first event block generated by each node may start from zero.
- Each circle represents an event block
- the lowercase letters in the circle represent the node that generated the event block
- the number represents the order in which the event blocks generated by the node are created.
- numbers in parentheses indicate ramport timestamp values.
- event blocks generated by the same node may be displayed in the same column.
- the ramport timestamp value of the event block 310 most recently generated by the node C is the ramport timestamp value 4, 2, or 3 of the event blocks 320 referenced by the event block 310. It can be determined as 5, which is one greater than the maximum value of four.
- the ramport timestamp value of the event block determined in this manner may be used to determine the procedural relationship at the time when the event block is generated.
- FIG. 3 illustrates the data 330 stored in the event block 310 most recently generated by the node C.
- the event block 310 most recently generated by the node C may store the signature information of the node C, a ramp time stamp value 5, the transaction information, and a hash vector of the reference event blocks 320.
- each event block may have a data value corresponding to the event convex, and each node may store a data value corresponding to the event block generated by the node.
- FIG. 4 is a diagram for describing an event block chain according to another exemplary embodiment.
- Each event block first generated by nodes A through E may be defined as a leaf event block 410, and a ramport timestamp value of the elementary event block 410 is defined as 1.
- Each node may generate event blocks asynchronously after generating the underlying event block.
- the node C may generate a second event block c2 with reference to the elementary event block c1 generated by the node C, the elementary event block b1 of the node B, and the elementary event block d1 of the node D. Can be.
- the ramport timestamp value of c2 is determined by the ramport timestamp algorithm, and the time stamp values of the event block referred to by c2 are all 1, and the ramport timestamp value of c2 is 2.
- event blocks may be classified according to certain conditions.
- the node may determine some event blocks as 'root' among event blocks included in the event block chain. Routes mean (1) event blocks that can reach more than two-thirds of the total number of nodes in the elementary event block of each node or (2) the routes included in the frame to which the event block belongs. do.
- the event block corresponding to the determined route may be included in a new frame.
- 'b event block may reach a event block' means that the b event block is generated by directly or indirectly referring to the a event block.
- the b event block and the a event block may be directly connected, or the b event block may be expressed as the a event block connected through several event blocks.
- d2 is not only an event block reachable to c2, but also an event block reachable to e1.
- d2 is an event block that can reach b1, c1, and d1 referred to by c2.
- the node may determine whether the corresponding event block is a root using a flag table.
- each node may determine whether an event block generated by another node is also a root within a specific frame based on the obtained information.
- Routes may be classified into frames in the data distribution storage method according to an embodiment.
- the elementary event blocks of each node are determined as routes, and the first routes of each node can be determined as routes belonging to the first frame f1.
- the second routes formed by the nodes may be routes belonging to the second frame f2.
- the event blocks included between the routes belonging to the second frame f2 and the routes belonging to the first frame f1 may be event blocks belonging to the first frame f1.
- a2 and c2 are event blocks belonging to the first frame f1.
- each node may determine a portion of routes that satisfy certain conditions as 'Clotho'. In other words, some of the event blocks determined as root may be determined as cloto.
- a node can determine that event block as cloto when it is guaranteed that the information of the previously generated event block has been shared with more than two thirds of the nodes.
- a node may determine cloto using a cloto check list stored in each node.
- Each node may calculate a minimum time value for the event blocks determined as cloto. Cloto's minimum time value can be used to determine the final result of the consensus algorithm, 'Atropos's time value'.
- terms such as cloto and atheros may be replaced with other terms as terms for describing a corresponding feature, and a corresponding event block may be determined within a relationship with another event block.
- each node may determine that the agreement is completed among the cloto as 'Atophos'.
- some of the event blocks determined as cloto may be determined as atheros.
- an event block chain composed of atheros may be defined as a main chain.
- the reference event blocks of Atheros have the same 'consensus time value of atheros', and the order between each event block is determined using the 'consensus time value of atheros'.
- the data distribution storage method may classify the event blocks into roots, clotos, and atheros, and determine the minimum time value and atheroscleros of the clotos in order to determine the order in which the event blocks are generated according to the hierarchical consensus order. You can define the time value of the sum of.
- the hierarchical consensus order will be described in FIG. 5 and related paragraphs.
- FIG. 5 is a diagram for describing a hierarchical sum order according to an embodiment.
- the data distribution storage method may determine an order between a plurality of event blocks according to a hierarchical consensus ordering consisting of three steps.
- a procedure for determining the order of consensus may be performed at each node.
- operation S510 it may be determined whether the consensus time values of the atropos of each event block are the same. As a result of the determination, if the agreed time value of the atheros of each event block is different, it may be determined in S515 that the event block with the earlier agreed time value of the atheros force is the event block generated earlier.
- the consensus time values of the atropos of each event block are the same, it may be determined whether the rampport timestamp value of each event block is the same in S520. As a result of the determination, if the ramport timestamp value of each event block is different, it may be determined in S525 that the event block having the smaller ramport timestamp value is the event block generated first.
- the hash value of each event block is compared to determine that the event block with the early hash value is the event block generated earlier. Can be.
- the hash value may be generated based on at least one of physical time information value and transaction information of the event block.
- FIG. 6 is a diagram for describing data stored in a node, according to an exemplary embodiment.
- a node generates specific data in order to generate an event block and to obtain an agreement regarding an order of event blocks generated by other nodes and generated time points of the event blocks generated by the node. You can save them.
- the node may store at least one of a height vector corresponding to each node, an entry order vector assigned to each node, frame information, cloto check list, main chain information, minimum time information, event block chain information, and a flag table. Data stored in the node is not limited to this. Some of the data may not be stored in the node according to the embodiment.
- at least some of the stored information may be delivered to the communicating node.
- the frame information may include information of routes belonging to each frame known to the current node. More specifically, in an embodiment, the root event block of each frame known to the node A may be included in the frame information.
- the cloto check list is a list indicating whether routes belonging to each frame correspond to a clotho Candidate (CC) and a cloto, and include a cloto candidate flag and a cloto flag. After generating a new event block, the node may determine the cloto through the cloto check list.
- CC clotho Candidate
- the main chain information refers to an event block chain composed of atheros known to the node.
- the main chain information may be stored by associating the hash vector of the atheros with the time value of the sum.
- the event block chain information means an event block chain composed of event blocks known to the current node, and may be stored in a graph form.
- the graph form may be a graph form based on DAG, but is not limited thereto.
- the flag table refers to a table in which reachable routes among routes of the current frame are stored for each node.
- the flag table may include information about a set of routes reachable by each node known to node A.
- the flag table may be updated based on information received in the process of exchanging information with another node to generate an event block.
- Each node may update a cloto check list using a flag table, and a detailed method thereof will be described with reference to FIG. 9 and related paragraphs.
- each node may determine a reference event block using a flag table when generating an event block, and a detailed method thereof will be described with reference to FIG. 16 and related paragraphs.
- the minimum time information refers to a calculated time information value corresponding to each cloto after the event block is determined as cloto, and is used to determine a final time value of the consensus algorithm, 'Atophos consensus time value'. Specific methods for obtaining the minimum time value will be described in FIGS. 12A-12C and related paragraphs.
- each node may further store a height vector and an entry order vector.
- the height vector means the number of event blocks generated by each node
- the entry order vector means the number of event blocks referencing the most recent event blocks generated by each node.
- the magnitude of the height vector and the entry order vector may correspond to the number of nodes participating in the consensus algorithm.
- Each node participating in the consensus algorithm may determine a reference event block based on at least one of a height vector and an entry order vector value when generating an event block. A method of determining the reference event block using the height vector and the entry order vector value will be described in FIG. 17 and related paragraphs.
- FIG. 7 is a diagram for describing a method of storing data by a node, according to an exemplary embodiment.
- A2 which is the most recently generated event block of node A, refers to a1, b1, and c1, and its contents may be stored in the event block chain of node A.
- a set of reachable routes may be stored for the event blocks most recently generated by nodes A to E at the time of a2 generation. ⁇ a1, b1, c1 ⁇ may be stored.
- node A since the basic event block is known to all nodes, node A has ⁇ d1 ⁇ and ⁇ e1 ⁇ as event blocks of node D and node E even though the node A does not refer to the event blocks generated by node D and node E. It can be seen.
- the node A can know all the root information included in the f1 frame as the frame information.
- the most recently generated event block of node C refers to b1, c1, and d1
- its contents are stored in the event block chain of node C
- ⁇ b1 is stored in an item corresponding to node C in the flag table.
- c1, d1 ⁇ may be stored.
- node C does not refer to the event block of node A
- ⁇ a1 ⁇ is stored in the item corresponding to the node A of the flag table.
- FIG. 8 is a diagram for describing a method of determining, by a node, a route using a flag table, according to an exemplary embodiment.
- the elementary event block may be determined as a route. However, in order for the generated event block to be determined as a route, it must be a reachable event block that can reach more than two-thirds of the routes included in the frame to which the event block belongs.
- each node may determine whether the corresponding event block is a root using a flag table. Specifically, when the number of nodes included in the distributed data system is n, the flag table includes n items, and each item is a route that can be reached among routes belonging to the same frame with the latest event block generated by the corresponding node. Will store a set of them. In this case, if the number of elements of the set stored in the item corresponding to the node of the flag table is 2n / 3 or more, the event block generated by the node may be determined as the root.
- the data 810 stored in the node B is shown.
- the item 815 corresponding to the node B in the flag table stored in the node B may store ⁇ a1, b1, c1, d1 ⁇ which are reachable from b2.
- node B can determine b2 as the new route. In this way, each node can create event blocks asynchronously and use its flag table to determine whether the event block it created is the root.
- the elementary event blocks may be stored in the f1 item, and since the b1, which is the root of the B node, is already stored in the f1 item, the new root b2 may be stored in the new frame f2 item.
- the B node since the B node updates information about a2 and c2 referred to by b2, information about the event block referred to by a2 and c2 may be stored in the information about the event block chain.
- FIG. 9 is a diagram for describing a method of determining, by a node, a cloto using a cloto check list according to an embodiment.
- the event block can be determined to be cloto, and each node is to be cloned.
- Toe check lists can be used to determine cloto.
- the cloto check list may be updated based on the root of each frame.
- FIG. 9 shows data 910 stored in node A, assuming node A has created a new event block a3 with reference to a2, c2, d2. Items corresponding to node A in the flag table stored in node A may store ⁇ a1, b1, c1, d1, e1 ⁇ which are routes reachable from a3. At this time, since the total number of routes stored in the item corresponding to node A is five, a3 may be determined as a new route. Also, the node A may store ⁇ a3, d2 ⁇ which is a root list corresponding to the frame in the new frame f2 item 920.
- the node A may determine whether routes known to the roots included in the previous frame f1 correspond to the cloto candidate CC. In more detail, node A may add a cloto candidate flag for routes that are reachable in both a2 and d1 belonging to item f2 920.
- the cloto candidate CC is information included in the cloto check list, and according to an embodiment, the cloto candidate CC may be determined based on the flag table.
- the node A selects items among the items of the flag table stored in the node A, which store more than two-thirds of the number n of the total nodes.
- the items ⁇ a1, b1, c1, d1, e1 ⁇ corresponding to the node A containing 3.33 or more elements and the node D correspond to each other. Items ⁇ b1, c1, d1, e1 ⁇ are selected.
- node A determines the cloto candidate (CC) as the cloto check list among the elements included in the two sets and the elements included in at least one-third of the total number (n) of nodes, and adds a flag to the cloto check list.
- CC cloto candidate
- ⁇ b1, c1, d1, e1 ⁇ are included in both of the items corresponding to the node A and the node D in the flag table, so that ⁇ b1, c1, d1, e1 ⁇ is included in each of the two items.
- a flag of ⁇ b1, c1, d1, e1 ⁇ can be added to the f1 item of the cloto check list.
- node A since node A updates the information about c2 and d2 referenced by a3, the information about the event block referenced by c2 and d2 may be stored in the information about the event block chain.
- the numerical value for determining the root and the numerical value for determining the cloto candidate are for description of the specification, which is a value determined according to an example of a ratio capable of securing the reliability of information between nodes. If the figures correspond to the ratios secured to allow each node to share reliable information, such figures may be modified somewhat. For example, the numbers of 2/3 and 1/3 are numbers suggested as an example to solve the Byzantine general problem, and it is obvious that such numbers can be adjusted through some modifications.
- the criteria for determining the route and the criteria for determining the cloto candidate may be referred to as the first and second criteria determined based on the total number of nodes identified by the node that generated the event block. have.
- FIG. 10 is a diagram for describing a method of storing, by a node, a root in a new frame item according to an embodiment.
- FIG. 10 shows data 1010 stored in node B, assuming node B has created a new event block b3 with reference to a3, b2, c3.
- An item corresponding to the node B in the flag table stored in the node B may correspond to the frame f2 and store ⁇ a3, b2, c3, d2 ⁇ which are reachable from b3.
- node B can determine b3 as the new route.
- the new root b3 may be stored in the new frame f3 item.
- node B may calculate a cloto candidate flag by performing a union operation on the cloto candidate flags stored in nodes A through D, which are nodes that generate ⁇ a3, b2, c3, d2 ⁇ belonging to f2. have.
- the root belonging to f2 is ⁇ a3, d2 ⁇ , and the candidate cloto flag added to node A is ⁇ b1, c1, d1, e1 ⁇ . do.
- the root of f2 is ⁇ a3, c3, d2 ⁇ in the frame information stored in the node C at the time of c3 generation, and ⁇ a1, b1, c1, d1, e1 ⁇ is stored in the C node of the flag table.
- elements belonging to an item equal to or greater than 1/3 (i.e., 1.67) of the number n of total nodes are ⁇ a1, b1 , c1, d1, e1 ⁇ , ⁇ a1, b1, c1, d1, e1 ⁇ is added as a cloto candidate flag by the C node at the time of c3 generation.
- the node B is assigned to ⁇ a1, b1, c1, d1, e1 ⁇ , which is a union of the cloto candidate flags stored in nodes A through D, which are nodes that generate ⁇ a3, b2, c3, d2 ⁇ . Add a cloto candidate flag for the. More specifically, at the time of generating a3, node A may check ⁇ b1, c1, d1, e1 ⁇ , which are roots belonging to all f1 except a1, as CC. At the time of c3 generation, the C node may check ⁇ a1, b1, c1, d1, e1 ⁇ which are all routes of f1 including a1 as CC.
- the list of CCs at a3 generation time and c3 generation time can be received.
- Node B can perform a union operation on the list of CCs in a3 and c3 when b3 is created and a3 and c3 are concatenated. Accordingly, the node B may check the CC item for all roots ⁇ a1, b1, c1, d1, e1 ⁇ of f1 at the time of b3 generation.
- the union operation is performed because all event blocks reachable to a3 and c3 can be reached in b3. That is, b3 may arrive including all arrival information of a3 and c3.
- the CC item may be checked in the same manner.
- the routes belonging to the n th frame may be checked in the event block corresponding to the route belonging to the n + 1 th frame with respect to the CC list. Therefore, in the embodiments of FIGS. 9 and 10, the CC list may be checked based on the number of common arrivals of routes belonging to f2 with respect to routes belonging to f1.
- the CC list for a new frame in a specific node may be performed in the form of adding the CC list for the n-th frame at the time when the root of the n + 1-th frame is generated. For example, in FIG. 10, b3 becomes a root belonging to f3, and a node B may add a CC list for f2 corresponding to a time point when b3 is generated.
- the B node since the B node updates information about a3 and c3 referred to by b3, information about the event block referred to by a3 and c3 may be stored in the information about the event block chain.
- the node when each node generates an event block, the node may check information about the cloto based on it by exchanging information about the cloto check list with another node.
- the cloto check list may be updated based on the flag table information.
- FIG. 11 is a diagram for describing a method of determining a cloto by a node according to an exemplary embodiment.
- the node may determine whether the node is cloto for routes belonging to a frame before three frames. Referring to FIG. 4, when routes belonging to f4 having a frame number of 4 are generated, it may be determined whether routes 410 corresponding to f1, which are three frames before, are cloto.
- FIG. 11 shows data 1110 stored in node A, assuming node A has created a new event block a6 with reference to a5, c5, d4.
- An item corresponding to the node A in the flag table stored in the node A may correspond to the frame f3 and store ⁇ a4, b3, c4, d3, e3 ⁇ which are reachable from a6.
- the node A may determine whether routes belonging to f1 that are three frames before f4 are cloto based on the cloto candidate information of the cloto check list. Referring to FIG. 11, since the cloto candidate flags of a1, b1, c1, d1, and e1, which are routes belonging to f1, are added, the node A may determine that a1, b1, c1, d1, and e1 are clotos. Since the data distribution storage method according to an embodiment determines the cloto based on the cloto check list, the amount of calculation may be greatly reduced.
- 12A to 12C are diagrams for describing a method of determining, by a node, a minimum time value, according to an exemplary embodiment.
- the node may determine the event block as Cloto, and then calculate a minimum time value of Cloto based on determining an agreed time value of the event block.
- the minimum time value of the cloto can be calculated when creating a new route one frame later than the event block that the node created at the time of determining the cloto.
- the timestamp value of the event block refers to a logical time value that is a ramport timestamp value calculated according to a ramport timestamp algorithm.
- 12A is a flowchart illustrating a method of determining a minimum time value.
- the node arrives from a route newly created one frame after the event block generated at the time of determining the cloto, among routes belonging to the same frame as the event block generated at the time of determining the cloto. You can check if there is a possible route.
- the node may check time stamp values of the confirmed routes.
- the node may check the timestamp value of the highest frequency among the identified timestamp values.
- the node may determine a time stamp value having the lowest value among the plurality of time stamp values as the minimum time value. If one timestamp value of the highest frequency is one, S1240 may be omitted.
- the node may update the minimum time information with the determined minimum time value.
- FIG. 12B illustrates data 1250 stored in node B, assuming that node B generates a new event block b6 with reference to a6, b5, and c6 after the event block chain of FIG. 11 is generated.
- the root ⁇ a1, b1, c1, d1, e1 ⁇ belonging to f1 is determined to be cloto by node A, and node B refers to a6.
- the node B may update the cloto check list by unioning (closing) the cloto check list stored from the node and the cloto check list received from another node. Accordingly, the node B knows that ⁇ a1, b1, c1, d1, e1 ⁇ is an event block determined as cloto. The B node can then calculate the minimum time value.
- the node B checks time stamp values of routes reachable from b6 among other routes of f4 to which an event block generated at the time of determining a cloto is included. For example, referring to FIG. 12B, node B can reach ⁇ a6, b5, c5, d4 ⁇ routes belonging to f4 after generating b6, so node B has a timestamp of ⁇ a6, b5, c5, d4 ⁇ . Check each value. Thereafter, the B node can check the most frequent timestamp value among the timestamp values. If there are multiple timestamps with the highest frequency, the smallest timestamp value may be determined as the minimum time value.
- the timestamp value 10 may be determined as the timestamp value of the highest frequency. Accordingly, as shown in FIG. 12B, the node B may determine the minimum time value of f1 as 10.
- 13A to 13C are diagrams for describing a method of determining, by a node, an agreed time value according to an embodiment.
- 13A is a flowchart illustrating a method of determining a sum time value.
- the node determines whether there is a reachable route among routes belonging to the same frame as the event block generated at the time of determining the minimum time value, from the route newly created one frame after the event block at the time of determining the minimum time value. You can check it.
- the node may check the minimum time values calculated at the time when the nodes that generated the identified routes generate the identified routes.
- the node may determine a minimum time value having a frequency number of more than 2n / 3 among the identified minimum time values as the agreed time value.
- N is the number of nodes included in the distributed data system.
- the node may update the main chain information based on the determined agreement time value.
- FIG. 13B illustrates an event block chain at the point in time when an E node generates a new event block e6 with reference to c8, d5, and e5 after each node generates a plurality of event blocks after the event block chain of FIG. 12a is generated.
- e6 may be determined as a root belonging to a new frame f6.
- Each node at the time of generating a route ⁇ a7, c8, d5, e5 ⁇ belonging to f5 may calculate a minimum time value of f1 according to the method of FIGS. 12A to 12C.
- the node E may determine an agreed time value.
- the event block whose value is determined is referred to as atheros.
- FIG. 13C is a diagram for describing a method of determining an agreed time value by the node E of FIG. 13B, based on FIG. 13B.
- node E checks the minimum time value calculated when generating reachable routes among routes belonging to f5.
- the E node since the E node can reach the ⁇ b6, c8, d5, e5 ⁇ routes belonging to f5, the E node has a minimum time value of 10 calculated at the time of ⁇ b6, c8, d5, e5 ⁇ generation, respectively. Check that it is.
- Node E then checks if there is a minimum time value with a frequency number greater than 2n / 3 relative to the total number of minimum time values.
- the minimum time values calculated at the time of generating ⁇ b6, c8, d5, and e5 ⁇ are all 10, the sum of time values may be determined as 10.
- the sum time value of ⁇ a1, b1, c1, d1, e1 ⁇ determined as cloto is determined to be 10
- the ⁇ a1, b1, c1, d1, e1 ⁇ determined as the summed time value is It becomes Atropos.
- 14A and 14B are diagrams for describing a method in which a node performs reselection of a minimum time value, according to an exemplary embodiment.
- the node when the node determines the cloto and cannot determine the atropos after two frames, the node may determine the sum time value by reselecting the minimum time value in the next frame. For example, when creating a route belonging to f4 as shown in FIG. 11, if it is determined whether f1 is cloto, when the atheros cannot be determined at f6 after two frames from f4, the minimum time value is reselected at f6. To determine the agreed time value.
- the time value of the sum may be determined after generating e6 belonging to f6, but unlike FIG. 13B, there may not be a minimum time value having a frequency greater than 2n / 3. This makes it impossible to determine the sum time value at f6. If the consensus time value cannot be determined at the time of generating routes belonging to f6, the node may reselect the minimum value among the time stamp values of reachable routes among the routes belonging to f5 as the minimum time value.
- timestamps of routes belonging to f5 stored in node E are disclosed.
- node E When generating e6 belonging to f6, when it is not possible to determine the consensus time value, node E will be able to determine if ⁇ e5, b6, c8, d5 ⁇ among the routes belonging to f5, the reachable routes of e6 are ⁇ e5, b6, c8; , d5 ⁇ , the minimum value of 9 timestamps is reselected as the minimum time value of f1.
- the minimum time value is reselected, when the route belonging to f7 is generated, it may be checked whether the frequency number of the minimum time values of reachable routes among the routes belonging to f6 exceeds 2n / 3. If no agreement is reached at f7, the same process can be repeated at f8. This way, one minimum time value can be determined as the sum of time values.
- timestamps of routes belonging to f6 stored in node A are disclosed.
- node A creates a12 belonging to f7, if the routes a12 reachable among the routes belonging to f6 are ⁇ a10, b9, c11, d8 ⁇ , node A restarts at the time of ⁇ a10, b9, c11, d8 ⁇ .
- the minimum time value of the selected f1 can be checked.
- the node A may then determine a minimum time value having a frequency number greater than 2n / 3 among the identified minimum time values as the agreed time, and determine an event block for which the agreed time value is determined as atheros.
- FIG. 15 is a diagram for describing a method of determining an order between event blocks that have reached an agreement, according to an exemplary embodiment.
- the event blocks directly or indirectly referenced by the event block determined by the atro force have the same sum time value. If a plurality of atheroscs directly or indirectly refer to an event block, the agreed time value of the corresponding event block is determined as the agreed time value of the atheros with the earlier agreed time value among the two atheros.
- a number in each event block denotes a ramport timestamp value
- the event blocks 1510 to 1550 located at the far right in each closed curve represent an event block determined by atheros.
- event blocks belonging to the same closed curve mean event blocks having the same sum time value.
- the event block 1560 referred to by both the first atheros 1510 and the second atheros 1520 of FIG. 15 has the same sum time value as that of the first atheros 1510. Accordingly, event blocks directly or indirectly referenced by the first atheros 1510 and the first atheros 1510 are generated at an earlier time than the event blocks that are directly or indirectly referenced by the second atheros 1520 and the second atheros 1520. It can be seen that it has been agreed to.
- an event block having an early ramport timestamp value is compared by comparing ramport timestamp values of two event blocks.
- the generated event block may be determined. Referring to FIG. 15, the event block 1560 located in the same closed curve as the first atheros 1510 will have the same sum time value, but since the ramport timestamp value of the event block 1560 is 1, the first atheros force It has a smaller value than the ramport timestamp value 3 of 1510. Accordingly, it can be seen that the event block 1560 is an event block generated earlier than the first atheros 1510.
- an event block having a higher hash value may be determined as an event block generated first.
- 16 is a diagram for describing a method of determining, by a node, a reference event block using a flag table according to an embodiment.
- the node may determine a reference event block using a flag table. If k is the number of reference event blocks, the node should refer to the most recently generated event block and thus can determine k-1 reference event blocks. In the examples below, it is assumed that k is 3, but k may vary depending on performance and requirements of a distributed data system.
- 16 shows a flag table 1610 stored at node A before node A selects the reference event block of new event block a3.
- the most recently generated event block at node A is a2, and since a2 does not refer to the routes created at node D and node E, the entry corresponding to node D and node E in the flag table of node A is the base event. Only information regarding blocks d1 and e1 is stored.
- node A may determine the roots (d1, e1) generated by node D and node E as reference event blocks to quickly update information on other nodes and allow as many nodes to participate in the consensus algorithm as possible. .
- the node may select k-1 reference event blocks arbitrarily from among the non-referenced nodes. For example, assuming that k is 2, referring to FIG. 16, the number of unreferenced nodes is 2, which is greater than k-1. Accordingly, node A may select any one of d1 and e1 as the reference event block of a3.
- the node first determines the route generated by the non-referenced node as the reference event block, and then the remaining reference event blocks can be determined as any event blocks generated by other nodes. have. For example, assuming k is 4, referring to FIG. 16, the number of nodes not referred to is 2, which is smaller than k-1. Accordingly, node A may select d1 and e1 as the reference event block of a3, and then further select any one of b1 and c1 as the reference event block.
- a node Since a node according to an embodiment of the present disclosure does not need other information and can determine a reference event block by using a flag table, the load of the node can be reduced. In addition, as many nodes as possible can participate in the consensus algorithm, thereby reducing the time to reach consensus.
- 17 is a diagram for describing a method of determining, by a node, a reference event block by using a height vector and an entry order vector.
- FIG. 17 illustrates the height vector 1710 and the entry order vector 1720 stored in the A node when the A node generates the a3 event block.
- the nodes having the lowest cost function values are nodes D and E, so node A is the reference event block of a3.
- e1 can be determined.
- the most recent event block generated by node D is d2.
- node A does not know d2, it is assumed that there is only a base event block d1.
- the method of determining the reference event block based on the above-described cost function has the effect of accurately determining the reference event block.
- the reference event block may be determined through various methods in addition to the above-described reference event determination method, and the reference event determination method is not limited thereto.
- 18A to 18D are diagrams for describing a method in which a node transmits and receives data with another node, according to an exemplary embodiment.
- the node In order for nodes included in the distributed data system to have the same data, the node according to an embodiment updates data stored in the node A based on data received from the node that generated the reference event block.
- FIG. 18A is a diagram illustrating a procedure for transmitting and receiving data between nodes when node A generates a new event block with reference to an event block of node B.
- FIG. 18A is a diagram illustrating a procedure for transmitting and receiving data between nodes when node A generates a new event block with reference to an event block of node B.
- the node A may request data from the node B.
- node A may request data from node B when it wants to reference an event block generated from node B while creating a new event block.
- node A may transmit at least some of its own data to node B along with the data request.
- the Node B may transmit data to the Node A in response to the data request.
- node B may deliver all stored data to node A.
- the B node compares its data with the data received from the A node, and forwards only different data to the A node. In this case, the amount of data transmitted and received between the A node and the B node can be reduced.
- the data delivered from node B to node A may include at least one of the information described with reference to FIG. 6.
- the node A may update its data based on the data received from the node B.
- 18B to 18C are diagrams for explaining a data procedure when node A generates a new event block a4 with reference to b3 and c2.
- Node A may perform the procedure described in FIG. 18A with node B and node C, respectively, and then update data of node A using data received from node B and node C.
- FIG. 18A may perform the procedure described in FIG. 18A with node B and node C, respectively, and then update data of node A using data received from node B and node C.
- node B is the most recently generated event block, but node A does not know the existence of b3, so node A cannot transfer information about node b3 to node B.
- node B After node B receives information about event blocks 1850 referenced by b2 and b2 from node A, node B receives the event blocks referred to by b3 and b3, which are the most recently generated event blocks of node B. Information may be passed to node A.
- FIG. 18C illustrates event blocks 1860 referenced by b3 and b3 that node B delivers to node A.
- FIG. After receiving data from B, node A can update event block chain information, frame information, flag information, and the like stored in node A.
- FIG. 18D shows an event block chain 1870 delivered by node C in response to a data request from node A.
- FIG. Node A along with the data request, conveys to Node C information about the event block chain 1850 described in FIG. 18B.
- the C node may transmit information about the event blocks 1870 referred to by c2 and c2, which are the most recent event blocks generated by the C node, to the A node.
- node A since the event block chain 1850 delivered by node A to node C and the event block chain 1870 delivered by node C to node A are the same, node A may not update data stored in node A. .
- 19A and 19B are diagrams for describing a method of pruning some data by a node, according to an exemplary embodiment.
- the node may prun data that satisfies a predetermined condition in order to reduce the amount of stored data. For example, the node may prun the frame information about the route determined to be cloto. The node may also prune the Cloto check list information about the route determined by Atheros.
- FIG. 19A illustrates data 1110 stored in node A under the same conditions as those of FIG. 11.
- node A may determine that al to e1 are cloto while generating a6 based on the flag table, frame information, and the cloto check list. If al to e1 are determined to be cloto, the f1 item 1915 to which al to e1 of the frame information belongs is no longer needed. Accordingly, the node A may delete the f1 item 1915 of the frame information to which al to e1 belong.
- FIG. 19B shows data 1920 stored in the E node on the same event block chain as in FIG. 13A.
- the node E determines that the routes belonging to f1 as well as the routes belonging to f2 are cloto, the frame information about f1 and f2 may be in a valuable state.
- the E node may determine that a1 to e1 are atheroscles after generating e6. If al to e1 are determined to be atheros, the Cloto check list 1925 and the minimum time information 1935 for al to e1 are no longer needed. Accordingly, the node E may delete the cloto check list 1925 and the minimum time information 1935 to which al to e1 belong.
- the consensus algorithm of the present disclosure in addition to the above-described data pruning method, it is possible to reduce the amount of data stored in the node through various methods, and the data pruning method is not limited thereto.
- 20 is a flowchart illustrating a data distribution storage method, according to an exemplary embodiment.
- the first node may determine at least one reference event block for generating the first event block. If the reference event block of the first event block is an event block generated by two or more other nodes and an event block generated by the first node before the first event block is generated, the first node is added to the flag table. Based on the set stored in the item corresponding to one node, the event blocks generated by two or more other nodes may be determined as the reference event block of the first event block. Further, the first node calculates a cost function based on the height vector and the entry order vector, and based on the calculation result of the cost function, event blocks generated by two or more other nodes are referred to as reference event blocks of the first event block. Can be determined.
- the first node may determine time information of the first event block based on time information corresponding to the at least one reference event block.
- the time information of the first event block includes a timestamp value of the first event block
- S2020 determines that the first event block has a value greater than 1 from the maximum timestamp value of the reference event block of the first event block. Determining to be a timestamp value of.
- a timestamp value of each event block first generated by all nodes included in the distributed data system is 1, and an event block having a timestamp value of 1 may be determined as a root.
- the first node may generate a first event block based on the determined time information.
- the first node may update a flag table including information on the event block reachable from the first event block among the event blocks determined as the root of the current frame based on the information corresponding to the generated first event block. .
- the first event block May be determined as the root of a new frame, and the frame information corresponding to the first node may be updated based on the determined root of the new frame.
- the first criterion may be 2n / 3.
- the first node may determine, as the cloto, event blocks determined as the cloto candidates from routes before three frames.
- the second criterion may be n / 3.
- the first node checks whether there are reachable routes among routes belonging to the same frame as the event block created at the time of determining the cloto in the newly created route one frame after the event block generated at the time of determining the cloto.
- the timestamp values of the identified routes can be checked. Thereafter, the first node may determine a timestamp value having the highest frequency among the checked timestamp values as the minimum time value of the cloto, and update the minimum time information of the first node with the determined minimum time value. If there are a plurality of timestamps with the highest frequency, the minimum value may be determined as the minimum time value among the highest frequency timestamps. In this case, after determining the cloto, the first node may delete frame information about the frame to which the cloto belongs.
- the minimum time value having a frequency exceeding the third criterion determined based on the number of nodes checked by the first node among the minimum time values checked may be determined as the agreed time value, and based on the determined agreed time value
- the node may update the main chain information of the first node.
- the third criterion determined based on the number of nodes identified by the first node may be 2n / 3.
- the first node may reselect the minimum time value to determine the agreed time value.
- the first node may determine that an event block having an earlier agreed time value is an event block generated earlier by comparing the agreed time values of two event blocks. If the sum of time values of two event blocks is the same, time stamp values of two event blocks may be compared to determine that an event block having an earlier time stamp value is an event block generated earlier. However, when the sum of time values and the timestamp value of the two event blocks are the same, the physical time values of the two event blocks are compared to determine that the event block having the earlier physical time value is the event block generated earlier. Can be.
- the first node may delete the cloto check list and the minimum time information about the frame including the event block for which the agreed time value is determined.
- the first event block may include signature information of the first node, determined time information, a physical time value at which the first node is generated, transaction information, and a hash value of the reference event block of the first node.
- 21 is a block diagram illustrating a structure of a node included in a distributed data system according to an embodiment.
- the distributed data system may include two or more nodes 2100, and the node 2100 may include a communication unit 2110, a memory 2120, and a processor 2130.
- the communication unit 2110 may exchange data with another node, and the memory 2120 may store instructions and data processed by the processor 2130.
- the processor 2130 may determine at least one reference event block for generating the first event block based on the information about the other node received by the communication unit 2110.
- time information of the first event block may be determined based on time information corresponding to the at least one reference event block.
- the first event block is generated based on the determined time information, and the information of the event block reachable from the first event block among the event blocks determined as the root of the current frame based on the information corresponding to the generated first event block.
- the flag table including the can be updated.
- each node may further perform an operation of checking the number n of nodes included in the distributed data system before performing a necessary operation.
- the n may be a fixed value, but may be added or decreased according to the system design.
- Each node may check n and then perform related operations based on the identified n value.
- n may be included in information received from a node corresponding to the referenced event block.
- Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer readable media may include both computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Communication media typically includes computer readable instructions, data structures, program modules, or other transport mechanisms, and includes any information delivery media.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 개시에 따른 제1 노드에서의 데이터 분산 저장 방법은 제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정하는 단계, 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 제1 이벤트 블록의 시간 정보를 결정하는 단계, 결정된 시간 정보를 기반으로 제1 이벤트 블록을 생성하는 단계 및 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트하는 단계를 포함한다.
Description
본 개시는 분산 데이터 시스템 및 데이터 분산 저장을 위한 방법 및 장치에 관한 것이다.
종래의 중앙화된 데이터 시스템은 서버가 네트워크로 연결된 노드들에 관한 데이터를 수집하여 저장하는 방식의 시스템으로, 데이터의 관리는 용이하였으나 서버에 보안 상 문제가 생기는 경우 시스템 전체의 데이터가 손실될 우려가 있었다.
이러한 문제를 해결하고자 분산 데이터 시스템이 개발되었다. 분산 데이터 시스템은 P2P(peer-to-peer) 네트워크로 연결된 모든 노드가 데이터를 발생시키는 주체인 동시에 동일한 데이터 기록을 가지는 시스템을 의미한다. 분산 데이터 시스템은 데이터 기록을 순차적으로 저장하는 일종의 분산 장부(분산 데이터베이스)를 관리하며, 가상화폐, IoT, 물류관리, 고객관리, 금융 시스템 등 다양한 분야에서 새로운 솔루션을 제공할 수 있는 시스템으로 관심 받고 있다.
한편 분산 데이터 시스템은 특정 노드가 잘못된 값을 전달하여 전체 분산 데이터 시스템에 잘못된 값이 공유될 가능성이 존재하기 때문에, 종래의 중앙화된 데이터 시스템과 비교하여 데이터의 신뢰성이 문제가 될 수 있다. 따라서, 분산 데이터 시스템은 신뢰성을 보장하기 위해 pBFT(Practical Byzantine Fault Tolerance) 합의 알고리즘이 적용될 수 있다. pBFT 합의 알고리즘이란 네크워크 내에서 특정 노드가 잘못된 값을 다른 노드들에게 전달하여도 전체 분산 데이터 시스템에는 잘못된 값으로 인한 영향 없이 정확한 값이 합의에 이른다는 것을 보장하는 알고리즘을 의미한다. 다시 말해, pBFT 합의 알고리즘은 합의를 이루는 노드 사이에 일부의 노드가 신뢰할 수 없는 경우에도 분산 데이터 시스템의 신뢰성에는 문제가 없도록 합의를 이뤄낼 수 있는 알고리즘이다.
pBFT 합의 알고리즘은 참여하는 노드가 제한된 허가형(permissioned) 분산 데이터 시스템을 위한 합의 알고리즘이며, 비동기 네트워크(Asynchronous Network) 환경을 전제로 한다. pBFT 합의 알고리즘으로는 대표적으로 Tangle, Hashgraph 등이 있으나, 합의에 도달하기 위해 많은 시간이 소요되는 점 및 각 노드가 합의를 도출하기 위해 복잡한 연산을 수행해야 한다는 점 등을 극복하기 위한 새로운 알고리즘에 대한 연구가 진행되고 있다.
분산 데이터 시스템 및 데이터 분산 저장 방법 및 이를 이용한 장치를 제공하는 데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른, 본 개시에 따른 제1 노드에서의 데이터 분산 저장 방법은 제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정하는 단계, 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 제1 이벤트 블록의 시간 정보를 결정하는 단계, 결정된 시간 정보를 기반으로 제1 이벤트 블록을 생성하는 단계 및 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트하는 단계를 포함할 수 있다.
다른 일 측면에 따른 2 개 이상의 노드가 포함된 분산 데이터 시스템에서 노드는 다른 노드와 데이터를 송수신하는 통신부, 인트럭션을 저장하는 메모리 및 인스트럭션을 처리하는 프로세서를 포함하고, 프로세서는 일 측면에 따른 데이터 분산 저장 방법의 단계들을 수행할 수 있다.
또 다른 측면에 따르면, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상기된 바에 따르면, 분산 데이터 시스템은 합의된 데이터의 신뢰성을 보장하면서, 분산 데이터 시스템에 포함된 노드들이 합의를 도출하는 데 소요되는 시간과 노드들의 연산량을 줄이는 효과를 얻을 수 있다.
또한, 데이터 분산 저장 방법은 불필요한 데이터를 삭제하는 방법을 수행할 수 있으므로, 노드에 저장되는 데이터의 양을 줄이는 효과를 얻을 수 있다.
도 1은 일 실시예에 따른 이벤트 블록 체인을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 이벤트 블록의 데이터 구조를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 램포트 타임스탬프 알고리즘을 설명하기 위한 도면이다.
도 4는 다른 일 실시예에 따른 이벤트 블록 체인을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 계층적 합의 순서를 설명하기 위한 도면이다.
도 6은 일 실시예에 따라 노드에 저장된 데이터를 설명하기 위한 도면이다.
도 7은 일 실시예에 따라 이벤트 블록을 생성할 때 각 노드가 데이터를 저장하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 노드가 플래그 테이블을 이용하여 루트를 결정하는 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 노드가 클로토 체크 목록을 이용하여 클로토를 결정하는 방법을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 노드가 새로운 프레임 항목에 루트를 저장하는 방법을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 노드가 클로토를 결정하는 방법을 설명하기 위한 도면이다.
도 12a 내지 도 12c는 일 실시예에 따른 노드가 최소 시간 값을 결정하는 방법을 설명하기 위한 도면이다.
도 13a 내지 도 13c는 일 실시예에 따른 노드가 합의 시간 값을 결정하는 방법을 설명하기 위한 도면이다.
도 14a 및 도 14b는 일 실시예에 따른 노드가 최소 시간 값의 재선택을 수행하는 방법을 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 합의에 도달한 이벤트 블록들 간의 순서를 결정하는 방법을 설명하기 위한 도면이다.
도 16은 일 실시예에 따른 노드가 플래그 테이블을 이용하여 참조 이벤트 블록을 결정하는 방법을 설명하기 위한 도면이다.
도 17은 일 실시예에 따른 노드가 높이 벡터 및 진입 차수 벡터를 이용하여 참조 이벤트 블록을 결정하는 방법을 설명하기 위한 도면이다.
도 18a 내지 도 18d는 일 실시예에 따른 노드가 다른 노드와 데이터를 송수신하는 방법을 설명하기 위한 도면이다.
도 19a 및 도 19b는 일 실시예에 따른 합의 알고리즘을 설명하기 위한 도면이다.
도 20은 일 실시예에 따른 데이터 분산 저장 방법을 설명하기 위한 흐름도이다.
도 21은 일 실시예에 따른 분산 데이터 시스템에 포함된 노드의 구조를 설명하기 위한 블록도이다.
일 측면에 따른, 본 개시에 따른 제1 노드에서의 데이터 분산 저장 방법은 제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정하는 단계, 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 제1 이벤트 블록의 시간 정보를 결정하는 단계, 결정된 시간 정보를 기반으로 제1 이벤트 블록을 생성하는 단계 및 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트하는 단계를 포함할 수 있다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 실시예들에 기재된 "...부", "...모듈"의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한 실시 예를 설명하기 위한 순서도의 각 단계와 이 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 이벤트 블록 체인을 설명하기 위한 도면이다.
도 1은 A 노드 내지 D 노드가 생성한 복수의 이벤트들로 구성된 이벤트 블록 체인을 나타낸다. 여기서 노드는 사용자에 의해 이벤트 블록을 생성하고, 다른 노드들과 통신하여 이벤트 블록 간의 합의 시간 값을 도출하는 장치로서, 실시 예 에서 노드는 스마트폰, 태블릿 PC, 휴대폰, PDA(personal digital assistant), 랩톱 및 기타 모바일 컴퓨팅 장치 중 적어도 하나를 포함하는 연산 장치이며, 위에서 언급한 장치 이외에도 연산을 수행하고 다른 노드와 통신을 수행할 수 있는 전자 장치를 포함할 수 있다.
도 1에서 원은 하나의 이벤트 블록으로, 상기 이벤트 블록은 복수의 거래 정보를 포함할 수 있으며, 합의 알고리즘을 통해 합의 시간 값이 결정되는 데이터의 단위를 의미한다. 도 1의 각 원에 작성된 영문 소문자는 해당 이벤트 블록을 생성한 노드를 나타내며, 숫자는 해당 노드가 생성한 이벤트 블록이 생성된 순서를 기반으로 부여되며, 이를 기반으로 해당 노드가 생성한 이벤트 블록의 수를 알 수 있다. 예를 들어, 도 1에서 'c1'으로 표시된 원은 C 노드가 첫 번째로 생성한 이벤트 블록을 의미한다.
또한 각 노드는 이벤트 블록을 생성할 때, 자신 혹은 다른 노드가 이전에 생성된 이벤트 블록 중 적어도 하나를 참조할 수 있다. 일 예로 각 노드는 자신이 생성한 이벤트 블록들 중에서 가장 최신의 이벤트 블록을 포함하여 둘 이상의 이벤트 블록을 참조할 수 있다. 여기서, 참조되는 이벤트 블록의 수는 시스템에 따라 변경될 수 있다. 또한 참조되는 이벤트 블록의 수는 고정될 수 있고, 각 이벤트 블록마다 달라질 수 있다. 그러나 본 개시의 실시 예에서는 설명의 편의를 위해, 참조하는 이벤트 블록의 수는 고정된 것으로 가정하나, 실시 예에 따라서 노드는 새로운 이벤트 블록을 생성할 때 참조할 이벤트 블록의 개수를 판단하는 절차를 추가로 수행할 수도 있다.
도 1을 참고하면, 참조되는 이벤트 블록들은 화살표로 연결될 수 있다. 예를 들어, C 노드는 세 번째 타임 슬롯에 c2 를 생성할 수 있고, 이 때 참조하는 이벤트 블록의 개수를 3개라고 하면, 이때 c2 의 참조 이벤트 블록은 C 노드 자신이 가장 최근에 생성한 이벤트 블록(c1)과 A 노드와 D 노드가 생성한 이벤트 블록 중 가장 최신의 이벤트 블록(a2 및 d1)일 수 있다. 이때 C 노드는 c2 의 참조 이벤트 블록으로서 자신이 가장 최근에 생성한 이벤트 블록 외에 다른 노드들에 의해 생성된 이벤트 블록들을 선택할 수 있는데, 여기서 참조 이벤트 블록은 본 개시의 다양한 실시예를 통해 선택될 수 있다.
한편 도 1과 같은 이벤트 블록 체인에서 가장 오른쪽에 표시되는 이벤트 블록은 가장 최근에 생성된 이벤트 블록을 의미하고, 가장 왼쪽에 표시되는 이벤트 블록은 가장 먼저 생성된 이벤트 블록을 의미한다. 도 1에 도시된 바와 같이, 일 실시예에 따른 각 노드들은 비동기적으로 이벤트 블록들을 생성하며, 이벤트 블록 체인은 DAG(Directed acyclic graph, 방향성 비순환 그래프) 기반의 그래프로 표시될 수 있다.
도 2는 일 실시예에 따른 이벤트 블록의 데이터 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 일 실시예에 따른 이벤트 블록은 합의 시간 값이 결정되는 데이터의 단위로서, 서명 정보, 타임스탬프, 거래 정보 및 해시 벡터 중 적어도 하나를 포함할 수 있다.
실시 예에서 서명 정보는 해당 이벤트 블록을 생성한 노드에 관한 정보를 포함하며, 하나의 노드가 생성한 서로 다른 이벤트 블록들은 동일한 서명 정보를 포함할 수 있다.
타임스탬프는 이벤트 블록이 생성된 시점을 나타내는 정보를 포함한다. 상기 타임스탬프를 기반으로 합의 시간 값을 도출할 수 있다. 실시 예에서 타임 스탬프는 논리적 시간 값 및 물리적 시간 값 중 적어도 하나를 포함할 수 있다. 논리적 시간 값은 이벤트 블록 체인에 포함된 일부 이벤트 블록들 간의 발생 전후 관계(happened-before relation)에 기초하여, 부분적인 순서를 결정하기 위해 활용되는 시간 정보를 의미한다. 본 개시의 일 실시예는 논리적 시간 값을 획득하기 위해, 램포트 타임스탬프(Lamport timestamp) 알고리즘을 이용한다. 일 실시 예에 따르면 새로운 이벤트 블록을 생성할 때 상기 생성되는 이벤트 블록의 참조 이벤트 블록의 논리적 시간 값들 중 가장 큰 값 보다 하나 증가된 값이 논리적 시간 값에 대응할 수 있다.
한편, 물리적 시간 값은 이벤트 블록의 생성 당시 노드의 실제 시간 정보를 의미한다. 이와 같은 시간 물리적 시간 값은 시간 값 그대로 저장되거나 해시 값 형태로 저장될 수 있다.
거래 정보(transaction information)는 각 노드에 의해 수행된 실제 거래 이력 정보를 포함하며, 거래 정보의 크기는 가변적이나 노드 및 분산 데이터 시스템의 성능에 따라 제한될 수 있다.
해시 벡터(hash vector)는 해당 이벤트 블록의 참조 이벤트 블록들에 관한 해시 정보를 포함한다. 여기서 참조 이벤트 블록의 수는 달라질 수 있으므로, 해시 벡터의 크기는 가변적일 수 있다.
도 3은 일 실시예에 따른 램포트 타임스탬프 알고리즘을 설명하기 위한 도면이다.
도 3을 참조하면, 노드 A 내지 노드 E가 생성한 이벤트 블록이 개시된다. 본 개시의 일 실시예에 따른 이벤트 블록은 논리적 시간 값으로서 램포트 타임스탬프 값을 활용할 수 있으며, 각 이벤트 블록의 램포트 타임스탬프 값은 아래의 램포트 타임스탬프 알고리즘에 따라 결정될 수 있다.
먼저, 각 노드가 첫 번째로 생성한 이벤트 블록의 램포트 타임스탬프 값은 1로 결정된다. 이후, 각 이벤트 블록의 램포트 타임스탬프 값은 참조 이벤트 블록의 램포트 타임스탬프 값에 따라 결정될 수 있다. 구체적으로, 이벤트 블록의 램포트 타임스탬프 값은 참조 이벤트 블록들의 램포트 타임스탬프 값 중 최대값보다 1이 큰 값으로 결정된다. 실시 예에 따라 각 노드가 첫 번째로 생성한 이벤트 블록의 타임스탬프 값은 0 부터 시작할 수도 있다.
각 원은 이벤트 블록을 나타내고, 원 안의 영문 소문자는 해당 이벤트 블록을 생성한 노드를 나타내며, 숫자는 해당 노드가 생성한 이벤트 블록이 생성된 순서를 의미한다. 또한, 괄호 안에 기재된 숫자는 램포트 타임스탬프 값을 나타낸다. 또한, 동일한 노드에 의해 생성된 이벤트 블록은 같은 열에 표시될 수 있다.
일 예에서, C 노드가 가장 최근에 생성한 이벤트 블록(310)의 램포트 타임스탬프 값은 해당 이벤트 블록(310)이 참조하는 이벤트 블록들(320)의 램포트 타임스탬프 값 4, 2, 3 중 최대값인 4 보다 1이 큰 5로 결정될 수 있다. 이러한 방식으로 결정된 이벤트 블록의 램포트 타임스탬프 값은 이벤트 블록이 생성된 시점의 선후 관계를 결정하는 데 활용될 수 있다.
한편, 도 3은 C 노드가 가장 최근에 생성한 이벤트 블록(310)에 저장된 데이터(330)를 함께 나타낸다. C 노드가 가장 최근에 생성한 이벤트 블록(310)에는 C 노드의 서명 정보, 램포트 타임스탬프 값(5), 거래 정보 및 참조 이벤트 블록들(320)의 해시 벡터가 저장될 수 있다. 이와 같이 각 이벤트 블록은 해당 이벤트 볼록에 대응하는 데이터 값을 가질 수 있으며, 각 노드는 해당 노드가 생성한 이벤트 블록에 대응하는 데이터 값을 저장할 수 있다.
도 4는 다른 일 실시예에 따른 이벤트 블록 체인을 설명하기 위한 도면이다.
도 4를 참조하면 총 5개의 노드(A 노드 내지 E 노드)로 이루어진 분산 데이터 시스템의 이벤트 블록 체인의 일 예시를 나타낸다. A 노드 내지 E 노드가 처음 생성한 각각의 이벤트 블록은 기초 이벤트 블록(leaf event block)(410)으로 정의될 수 있으며, 기초 이벤트 블록(410)의 램포트 타임스탬프 값은 1로 정의된다. 각 노드는 기초 이벤트 블록을 생성한 이후 비동기적으로 이벤트 블록들을 생성할 수 있다. 예를 들어, C 노드는 자신이 생성한 기초 이벤트 블록(c1), B 노드의 기초 이벤트 블록(b1) 및 D 노드의 기초 이벤트 블록(d1)을 참조하여 두 번째 이벤트 블록(c2)을 생성할 수 있다. 이때, c2 의 램포트 타임스탬프 값은 램포트 타임스탬프 알고리즘에 의해 결정되며, c2가 참조하는 이벤트 블록의 타임스템프 값이 모두 1인바, c2 의 램포트 타임스탬프 값은 2가 된다.
합의 시간 값을 도출하기 위해, 이벤트 블록들은 일정 조건에 따라 분류될 수 있다. 일 실시예에 따르는 노드는 이벤트 블록 체인에 포함된 이벤트 블록들 중에서 일부 이벤트 블록들을 '루트(root)'로 결정할 수 있다. 루트는 (1) 각 노드들의 기초 이벤트 블록이거나 (2) 이벤트 블록이 속한 프레임에 포함된 루트들 중 전체 노드의 개수의 2/3 보다 많은 루트들에 도달할 수 있는(reachable) 이벤트 블록들을 의미한다. 또한 이와 같이 결정된 루트에 해당하는 이벤트 블록은 새로은 프레임에 포함될 수 있다. 여기서 'b 이벤트 블록이 a 이벤트 블록에 도달할 수 있다'는 것은 b 이벤트 블록이 a 이벤트 블록을 직간접적으로 참조하여 생성되었다는 것을 의미한다. 이를 도식화하면, b 이벤트 블록과 a 이벤트 블록이 직접 연결되어 있거나, b 이벤트 블록이 여러 이벤트 블록들을 통해서 a 이벤트 블록이 연결된 것으로 표현할 수 있다. 도 4에서 d2 는 c2 에 도달 가능한 이벤트 블록일 뿐 아니라, e1 에 도달 가능한 이벤트 블록이다. 또한 d2는 c2가 참조하는 b1, c1 및 d1에도 도달할 수 있는 이벤트 블록이다. 일 실시예에 따른 노드는 이벤트 블록을 생성한 후, 플래그 테이블을 이용하여 해당 이벤트 블록이 루트인지 판단할 수 있다. 실시 예에서 각 노드는 획득한 정보를 기반으로 다른 노드가 생성한 이벤트 블록 역시 특정 프레임 내에서 루트인지 여부를 판단할 수 있다.
일 실시예에 따른 데이터 분산 저장 방법에서 루트들을 프레임으로 분류될 수 있다. 각 노드의 기초 이벤트 블록들은 루트로 결정되며, 각 노드들의 첫 번째 루트들은 제1 프레임(f1)에 속한 루트들로 결정될 수 있다. 이후 각 노드들에 의해 두 번째로 형성되는 루트들은 제2 프레임(f2)에 속한 루트들이 될 수 있다. 또한, 제2 프레임(f2)에 속한 루트들과 제1 프레임(f1)에 속한 루트들 사이에 포함되는 이벤트 블록들은 제1 프레임(f1)에 속한 이벤트 블록일 수 있다. 도 4를 참고하면, a2와 c2는 제1 프레임(f1)에 속한 이벤트 블록들이다.
또한 일 실시예에 따른 각 노드는 루트들 중에서 일정 조건을 만족하는 일부 루트를 '클로토(Clotho)'로 결정할 수 있다. 다시 말해, 루트로 결정된 이벤트 블록들 중 일부가 클로토로 결정될 수 있다. 노드는 이전에 생성되었던 이벤트 블록의 정보가 전체 노드 중 2/3 보다 많은 노드들에게 공유되었다는 것이 확실하게 보장될 때, 해당 이벤트 블록을 클로토로 결정할 수 있다. 일 실시예에 따른 노드는 각 노드에 저장된 클로토 체크 목록을 이용하여 클로토를 결정할 수 있다. 각 노드는 클로토로 결정된 이벤트 블록들에 대하여 최소 시간 값을 계산할 수 있다. 클로토의 최소 시간 값은 합의 알고리즘의 최종 결과 값인 '아트로포스(Atropos)의 합의 시간 값'을 결정하는 데 사용될 수 있다. 실시 예에서 클로토 및 아트로포스와 같은 용어는 해당 특징을 설명하기 위한 용어로 다른 용어로 대체될 수 있으며, 대응되는 이벤트 블록은 다른 이벤트 블록과의 관계 안에서 결정될 수 있다.
한편 일 실시예에 따른 각 노드는 클로토들 중에서 합의가 완료된 클로토를 '아트로포스'로 결정할 수 있다. 다시 말해, 클로토로 결정된 이벤트 블록들 중 일부가 아트로포스로 결정될 수 있다. 이때 아트로포스로 구성된 이벤트 블록 체인은 메인 체인으로 정의될 수 있다. 또한, 아트로포스의 참조 이벤트 블록들은 동일한 '아트로포스의 합의 시간 값'을 갖게 되며, '아트로포스의 합의 시간 값'을 이용하여 각 이벤트 블록들 간의 순서를 결정하게 된다.
즉, 일 실시예에 따른 데이터 분산 저장 방법은 계층적 합의 순서에 따라 각 이벤트 블록이 생성된 순서를 결정하기 위해, 이벤트 블록을 루트, 클로토 및 아트로포스로 분류하고, 클로토의 최소 시간 값 및 아트로포스의 합의 시간 값을 정의할 수 있다. 계층적 합의 순서에 관해서는 도 5 및 관련 단락에서 설명하기로 한다.
도 5는 일 실시예에 따른 계층적 합의 순서를 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예 따른 데이터 분산 저장 방법은 3 단계로 이루어진 계층적 합의 순서(topological consensus ordering)에 따라 복수의 이벤트 블록들 간의 순서를 결정할 수 있다. 실시 예에서 합의 순서를 결정하는 절차는 각 노드에서 수행될 수 있다.
S510에서 각 이벤트 블록이 가진 아트로포스의 합의 시간 값이 동일한지 판단할 수 있다. 판단 결과, 각 이벤트 블록의 아트로포스의 합의 시간 값이 다르다면, S515에서 아트로포스의 합의 시간 값이 이른 이벤트 블록이 더 먼저 생성된 이벤트 블록인 것으로 결정할 수 있다.
만약 각 이벤트 블록이 가진 아트로포스의 합의 시간 값이 동일한 경우, S520에서 각 이벤트 블록의 램포트 타임스탬프 값이 동일한지 판단할 수 있다. 판단 결과, 각 이벤트 블록의 램포트 타임스탬프 값이 다르다면, S525에서 램포트 타임스탬프 값이 작은 이벤트 블록이 먼저 생성된 이벤트 블록인 것으로 결정할 수 있다.
만약, 각 이벤트 블록이 가진 아트로포스의 합의 시간 값과 램포트 타임스탬프 값이 동일한 경우, S530에서 각 이벤트 블록의 해시 값을 비교하여, 해시 값이 이른 이벤트 블록이 더 먼저 생성된 이벤트 블록인 것으로 결정할 수 있다. 여기서 해시 값은 이벤트 블록의 물리적 시간 정보 값 및 거래 정보 중 적어도 하나에 기초하여 생성될 수 있다.
도 6은 일 실시예에 따라 노드에 저장된 데이터를 설명하기 위한 도면이다.
도 6을 참조하면, 일 실시예에 따른 노드는 이벤트 블록을 생성하고 다른 노드들에 의해 생성된 이벤트 블록들과 자신이 생성한 이벤트 블록들의 생성된 시점의 순서에 관하여 합의를 도출하기 위해 특정 데이터들을 저장할 수 있다. 노드는 각 노드에 대응하는 높이 벡터, 각 노드에 대입하는 진입 차수 벡터, 프레임 정보, 클로토 체크 목록, 메인 체인 정보, 최소 시간 정보, 이벤트 블록 체인 정보 및 플래그 테이블 중 적어도 하나를 저장할 수 있으나, 노드에 저장되는 데이터는 이에 제한되지 않는다. 상기 데이터 중 일부 데이터는 실시 예에 따라 노드에 저장되지 않을 수도 있다. 또한 실시 예에서 새로운 이벤트 블록을 생성하기 위해서 참조되는 다른 이벤트 블록에 대응하는 노드와 통신할 때 상기 저장된 정보 중 적어도 일부를 상기 통신하는 노드에 전달할 수도 있다.
프레임 정보는 현재 노드가 알고 있는 각 프레임에 속한 루트들의 정보를 포함할 수 있다. 보다 구체적으로 실시 예에서 A 노드가 알고 있는 각 프레임의 루트 이벤트 블록이 프레임 정보에 포함될 수 있다.
클로토 체크 목록은 각 프레임에 속한 루트들이 클로토 후보(CC; Clotho Candidate) 및 클로토에 해당되는지 여부를 나타내는 목록으로, 클로토 후보 플래그 및 클로토 플래그를 포함한다. 일 실시예에 따른 노드는 새로운 이벤트 블록을 생성하고 난 후, 클로토 체크 목록을 통해 클로토를 결정할 수 있다.
메인 체인 정보는 현재 노드가 알고 있는 아트로포스들로 이루어진 이벤트 블록 체인을 의미한다. 메인 체인 정보는 아트로포스의 해시 벡터와 합의 시간 값을 대응시켜 저장할 수 있다.
이벤트 블록 체인 정보는 현재 노드가 알고 있는 이벤트 블록들로 이루어진 이벤트 블록 체인을 의미하며, 그래프 형태로 저장될 수 있다. 예를 들어, 그래프 형태는 DAG 기반의 그래프 형태일 수 있으나, 이에 제한되지 않는다.
플래그 테이블은 현재 프레임의 루트들 중 도달 가능한 루트들을 각 노드 별로 저장한 테이블을 의미한다. 실시 예에서 플래그 테이블은 A노드가 알고 있는 각 노드가 도달 가능한 루트들의 집합에 관한 정보를 포함할 수 있다. 플래그 테이블은 이벤트 블록을 생성하기 위해 다른 노드와 정보를 교환하는 과정에서 수신된 정보를 기반으로 업데이트 될 수 있다.
일 실시예에 따른 각 노드는 플래그 테이블을 이용하여 클로토 체크 목록을 업데이트할 수 있으며, 이에 대한 구체적인 방법은 도 9 및 관련 단락에서 설명하기로 한다. 또한, 각 노드는 이벤트 블록을 생성할 때, 플래그 테이블을 이용하여 참조 이벤트 블록을 결정할 수 있으며, 이에 대한 구체적인 방법은 도 16 및 관련 단락에서 설명하기로 한다.
최소 시간 정보는 이벤트 블록이 클로토로 결정되고 난 후, 각 클로토에 대응하는 계산되는 시간 정보 값을 의미하며 합의 알고리즘의 최종 결과 값인 '아트로포스의 합의 시간 값'을 결정하는 데 사용되는 값이다. 최소 시간 값을 구하는 구체적인 방법은 도 12a 내지 도 12c 및 관련 단락에서 설명하기로 한다.
이외에도 각 노드는 높이 벡터 및 진입 차수 벡터를 더 저장할 수 있다. 여기서 높이 벡터는 각 노드가 생성한 이벤트 블록의 수를 의미하며, 진입 차수 벡터는 각 노드가 생성한 가장 최근의 이벤트 블록들을 참조하는 이벤트 블록의 수를 의미한다. 높이 벡터 및 진입 차수 벡터의 크기는 합의 알고리즘에 참여하는 노드의 수에 대응될 수 있다. 다른 일 실시예에 따르는 합의 알고리즘에 참여하는 각 노드는 이벤트 블록을 생성할 때, 높이 벡터 및 진입 차수 벡터 값 중 적어도 하나에 기초하여, 참조 이벤트 블록을 결정할 수 있다. 높이 벡터 및 진입 차수 벡터 값을 이용하여 참조 이벤트 블록을 결정하는 방법은 도 17 및 관련 단락에서 설명하기로 한다.
도 7은 일 실시예에 따른 노드가 데이터를 저장하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, A 노드 내지 E 노드가 모두 기초 이벤트 블록을 생성하고, A 노드 및 C 노드가 각각 두 번째 이벤트 블록(a2, c2)을 생성하였다고 가정했을 때, 각 이벤트 블록의 참조 관계, A 노드에 저장된 데이터(710) 및 C 노드에 저장된 데이터(720)가 도시된다.
A 노드가 가장 최근에 생성한 이벤트 블록인 a2는 a1, b1, c1를 참조하고 있으며, A 노드의 이벤트 블록 체인에는 해당 내용이 저장될 수 있다. 또한 A 노드의 플래그 테이블에는 a2 의 생성 시점에 A 노드 내지 E 노드가 가장 최근에 생성한 이벤트 블록들에 대하여, 도달 가능한 루트의 집합이 저장될 수 있으므로, 플래그 테이블의 A 노드에 대응하는 항목에는 {a1, b1, c1}가 저장될 수 있다. 한편, 기초 이벤트 블록은 모든 노드들이 알고 있으므로, A 노드는 D 노드 및 E 노드가 생성한 이벤트 블록을 참조하지 않았어도, D 노드 및 E 노드의 이벤트 블록으로 각각 {d1}, {e1}이 존재함을 알 수 있다. 또한, A 노드는 프레임 정보로서 f1 프레임에 포함된 모든 루트 정보를 알 수 있다.
또한, C 노드가 가장 최근에 생성한 이벤트 블록인 c2는 b1, c1, d1를 참조하고 있으므로, C 노드의 이벤트 블록 체인에는 해당 내용이 저장되고, 플래그 테이블의 C 노드에 대응하는 항목에는 {b1, c1, d1}가 저장될 수 있다. 그러나 C 노드는 A 노드의 이벤트 블록을 참조하지 않았으므로, A 노드가 가장 최근에 생성한 이벤트 블록은 a2가 아닌 a1 인 것으로 알고 있다. 따라서, 플래그 테이블의 A 노드에 대응하는 항목에는 {a1}가 저장된다.
도 8은 일 실시예에 따른 노드가 플래그 테이블을 이용하여 루트를 결정하는 방법을 설명하기 위한 도면이다.
도 4에서 설명한 바와 같이, 기초 이벤트 블록은 루트로 결정될 수 있다. 그러나 그 이후 생성된 이벤트 블록이 루트로 결정되기 위해서는, 이벤트 블록이 속한 프레임에 포함된 루트들 중 2/3 보다 많은 루트들에 도달할 수 있는(reachable) 이벤트 블록이어야 한다. 일 실시예에 따른 각 노드는 이벤트 블록을 생성한 후, 플래그 테이블을 이용하여 해당 이벤트 블록이 루트인지 여부를 결정할 수 있다. 구체적으로, 분산 데이터 시스템에 포함된 노드의 수가 n 일 때, 플래그 테이블은 n 개의 항목을 구비하고, 각 항목에는 대응되는 노드에 의해 생성된 최신 이벤트 블록이 같은 프레임에 속한 루트들 중에서 도달 가능한 루트들의 집합을 저장하게 된다. 이때 플래그 테이블의 해당 노드에 대응하는 항목에 저장된 집합의 원소의 수가 2n/3 개 이상이면, 해당 노드가 생성한 이벤트 블록을 루트로 결정할 수 있다.
실시 예에서 B 노드가 a2, b1, c2을 참조하여 새로운 이벤트 블록 b2을 생성한 것을 가정할 때, B 노드에 저장된 데이터(810)를 나타낸다. B 노드에 저장된 플래그 테이블에서 B 노드에 대응하는 항목(815)에는 b2로부터 도달 가능한 루트들인 {a1, b1, c1, d1}가 저장될 수 있다. 이때 플래그 테이블의 B 노드에 대응하는 항목(815)에 저장된 루트들의 수는 총 4 개로, 분산 데이터 시스템에 포함된 노드 수(n=5)의 2/3 보다 큰 값이다(4 > 3.33). 따라서, B 노드는 b2를 새로운 루트로 결정할 수 있다. 이러한 방식으로 각 노드는 비동기적으로 이벤트 블록을 생성하면서 각자 플래그 테이블을 이용해 자신이 생성한 이벤트 블록이 루트인지 여부를 결정할 수 있다.
B 노드의 프레임 정보에는 기초 이벤트 블록들이 f1 항목에 저장될 수 있고, f1 항목에 이미 B 노드의 루트인 b1이 저장되어 있으므로, 새로운 루트 b2는 새로운 프레임 f2 항목에 저장될 수 있다.
한편, B 노드는 b2가 참조하는 a2 및 c2에 관한 정보를 업데이트하기 때문에, 이벤트 블록 체인에 관한 정보에 a2 및 c2가 참조하는 이벤트 블록에 관한 정보가 저장될 수 있다.
도 9는 일 실시예에 따른 노드가 클로토 체크 목록을 이용하여 클로토를 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 이전에 생성되었던 이벤트 블록의 정보가 전체 노드 중 2/3 보다 많은 노드들에게 공유되었다는 것이 확실하게 보장될 때, 해당 이벤트 블록은 클로토로 결정될 수 있으며, 각 노드는 클로토 체크 목록을 이용하여 클로토를 결정할 수 있다. 실시 예에서 클로토 체크 목록은 각 프레임의 루트를 기준으로 업데이트 될 수 있다.
도 9는 A 노드가 a2, c2, d2를 참조하여 새로운 이벤트 블록 a3 를 생성한 것을 가정할 때, A 노드에 저장된 데이터(910)를 나타낸다. A 노드에 저장된 플래그 테이블에서 A 노드에 대응하는 항목에는 a3로부터 도달 가능한 루트들인 {a1, b1, c1, d1, e1}이 저장될 수 있다. 이때, A 노드에 대응하는 항목에 저장된 루트들의 수는 총 5 개이므로, a3는 새로운 루트로 결정될 수 있다. 또한, A 노드는 새로운 프레임 f2 항목(920)에 해당 프레임에 해당하는 루트 목록인 {a3, d2}를 저장할 수 있다. 이때, f2 항목(920)에 저장된 루트들의 수는 총 2 개로, 분산 데이터 시스템에 포함된 노드 수(n=5)의 1/3 보다 큰 값이다(2 > 1.67). 따라서, A 노드는 이전 프레임 f1에 포함된 루트들 중 자신이 알고 있는 루트들이 클로토 후보(CC)에 해당되는지 여부를 결정할 수 있다. 구체적으로 A 노드는 f2 항목(920)에 속한 a2와 d1 모두 도달 가능한 루트들에 대해 클로토 후보 플래그를 추가할 수 있다. 여기서 클로토 후보(CC)는 클로토 체크 목록에 포함된 정보로서, 일 실시예에 따른 클로토 후보(CC)는 플래그 테이블에 기초하여 결정될 수 있다.
구체적으로 A 노드는 A 노드에 저장된 플래그 테이블의 항목들 중에서, 전체 노드의 수(n)의 2/3 보다 많은 루트들을 저장하고 있는 항목은 선택한다. 도 9를 참고하면, 전체 노드의 수는 5 (n=5)이므로, 3.33 개 이상의 원소를 포함하고 있는 A 노드에 대응하는 항목{a1, b1, c1, d1, e1}과 D 노드에 대응하는 항목{b1, c1, d1, e1}이 선택된다. 이후 A 노드는 두 집합에 포함된 각 원소들 중에서 전체 노드의 수(n)의 1/3 개 이상의 항목에 포함된 원소들을 클로토 후보(CC)로 결정하고, 클로토 체크 목록에 플래그를 추가할 수 있다. 다시 말해서, 플래그 테이블의 A 노드에 대응하는 항목과 D 노드에 대응하는 항목 중 {b1, c1, d1, e1}는 각각 2 개의 항목에 모두 포함되어 있으므로, {b1, c1, d1, e1}를 클로포 후보로 결정하고, 클로토 체크 목록의 f1 항목에 {b1, c1, d1, e1}의 플래그를 추가할 수 있다.
한편, A 노드는 a3가 참조하는 c2 및 d2에 관한 정보를 업데이트하기 때문에, 이벤트 블록 체인에 관한 정보에 c2 및 d2가 참조하는 이벤트 블록에 관한 정보가 저장될 수 있다.
실시 예에서 루트를 판단하기 위한 수치 및 클로토 후보를 판단하기 위한 수치는 명세서의 설명을 위한 것으로 이는 노드 사이의 정보의 신뢰성을 확보할 수 있는 비율의 일 예시에 따라 결정된 값이다. 상기 수치들이 각 노드들이 신뢰성 있는 정보를 공유할 수 있도록 확보되는 비율에 해당할 경우 이와 같은 수치는 다소 변형되어 적용될 수 있다. 일 예로 현재 2/3 및 1/3의 수치는 비잔틴 장군 문제를 해결하기 위해 일 예시로 제안된 숫자이며, 이와 같은 숫자는 일부 변형을 통해 조절될 수 있음이 자명하다. 또한 실시 예 전반에서 루트를 판단하기 위한 기준 및 클로토 후보를 판단하기 위한 기준은 각각 이벤트 블록을 생성한 노드에서 확인한 전체 노드의 개수를 기반으로 결정되는 제1기준 및 제2기준으로 언급될 수도 있다.
도 10은 일 실시예에 따른 노드가 새로운 프레임 항목에 루트를 저장하는 방법을 설명하기 위한 도면이다.
도 10은 B 노드가 a3, b2, c3를 참조하여 새로운 이벤트 블록 b3 를 생성한 것을 가정할 때, B 노드에 저장된 데이터(1010)를 나타낸다. B 노드에 저장된 플래그 테이블에서 B 노드에 대응하는 항목에는 프레임 f2에 해당되면서, b3로부터 도달 가능한 루트들인 {a3, b2, c3, d2}가 저장될 수 있다. 이때 플래그 테이블의 B 노드에 대응하는 항목에 저장된 루트들의 수는 총 4 개로, 분산 데이터 시스템에 포함된 노드 수(n=5)의 2/3 보다 큰 값이다(4 > 3.33). 따라서, B 노드는 b3를 새로운 루트로 결정할 수 있다.
또한 B 노드의 프레임 정보 중 f2 항목에는 이미 B 노드의 루트인 b2이 저장되어 있으므로, 새로운 루트 b3은 새로운 프레임 f3 항목에 저장될 수 있다.
한편 B 노드는 f2에 속한 {a3, b2, c3, d2}들을 생성한 노드인 A 노드 내지 D 노드에 저장된 클로토 후보 플래그의 합집합 연산(union 연산)을 수행하여, 클로토 후보 플래그를 계산할 수 있다.
예를 들어 도 9를 참고하면 a3 생성 당시 A 노드에 저장된 프레임 정보에는 f2에 속한 루트는 {a3, d2}이고, A 노드에 추가하는 클로토 후보 플래그는 {b1, c1, d1, e1}가 된다. 이에 추가하여, c3 생성 당시 C 노드에 저장된 프레임 정보에는 f2에 속한 루트는 {a3, c3, d2}이고, 플래그 테이블의 C 노드에는 {a1, b1, c1, d1, e1}이 저장된다. 따라서, 플래그 테이블의 A 노드, C 노드 및 D 노드에 대응하는 항목에 포함된 원소들 중에서 전체 노드의 수(n)의 1/3 개 (즉, 1.67) 이상의 항목에 속하는 원소는 {a1, b1, c1, d1, e1}이 되므로, {a1, b1, c1, d1, e1}가 c3 생성 당시 C 노드에 의해 클로토 후보 플래그로 추가된다.
이후 도 10을 참고하면, B 노드는 {a3, b2, c3, d2}들을 생성한 노드인 A 노드 내지 D 노드에 저장된 클로토 후보 플래그의 합집합인 {a1, b1, c1, d1, e1}에 대하여 클로토 후보 플래그를 추가한다. 보다 구체적으로 a3 생성 시점에서 A 노드는 a1을 제외한 모든 f1에 속한 루트들인 {b1, c1, d1, e1}를 CC로 체크할 수 있다. 그리고 c3 생성 시점에서 C 노드는 a1을 포함한 f1의 모든 루트들인 {a1, b1, c1, d1, e1}를 CC로 체크할 수 있다. 한편, b3는 A 노드의 a3와 C 노드의 c3를 참조하기 때문에 a3 생성 시점과 c3 생성 시점의 CC 목록을 전달 받을 수 있다. B 노드는 b3를 만들고 a3와 c3를 연결한 시점에 a3와 c3의 CC 목록에 대해 유니온 연산을 수행할 수 있다. 이에 따라 B 노드는 b3 생성 시점에서 f1의 모든 루트인 {a1, b1, c1, d1, e1} 에 대해 CC 항목으로 체크할 수 있다. 실시 예에서 유니온 연산을 하는 이유는 b3에서는 a3와 c3에 도달 가능한 모든 이벤트 블록에 도달할 수 있기 때문이다. 즉, b3는 a3와 c3의 모든 도달 정보를 포함하여 도달할 수 있다. 이외의 실시 예에서도 이와 같은 방식으로 CC 항목에 대한 체크를 수행할 수 있다.
또한 실시 예에서 CC 목록과 관련해서 n+1번째 프레임에 속한 루트에 대응하는 이벤트 블록에서 n번째 프레임에 속하는 루트들을 체크할 수 있다. 따라서 도 9 및 10의 실시 예에서 f1에 속한 루트들에 대해 f2에 속한 루트들의 공통도달 수를 기반으로 CC 목록이 체크될 수 있다. 또한 특정 노드에서 새로운 프레임에 대한 CC리스트는 n+1번째 프레임의 루트가 생성되는 시점에 n번째 프레임에 대한 CC 리스트를 추가하는 형식으로 수행될 수 있다. 일 예로 도 10에서 b3는 f3에 속하는 루트가 되고, b3가 생성되는 시점에 대응하여 B 노드는 f2에 대한 CC 목록을 추가할 수 있다.
한편, B 노드는 b3가 참조하는 a3 및 c3에 관한 정보를 업데이트하기 때문에, 이벤트 블록 체인에 관한 정보에 a3 및 c3가 참조하는 이벤트 블록에 관한 정보가 저장될 수 있다.
실시 예에서 각 노드가 이벤트 블록을 생성할 때 다른 노드와 클로토 체크 목록에 대한 정보를 교환하여 이를 기반으로 클로토 여부를 체크할 수도 있다. 또한 위에서 설명한 바와 같이 플래그 테이블 정보를 기반으로 클로토 체크 목록을 업데이트 할 수도 있다.
도 11은 일 실시예에 따른 노드가 클로토를 결정하는 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 노드가 도 7 내지 도 10에 설명된 방법에 따라 프레임 f4에 해당하는 이벤트 블록을 생성한 경우의 이벤트 블록 체인을 나타낸다. 일 실시예에 따른 노드는 3 프레임 이전의 프레임에 속하는 루트들에 대하여 클로토 인지 여부를 결정할 수 있다. 도 4를 참고하면, 프레임 번호가 4인 f4에 속하는 루트들이 생성될 때, 3 프레임 이전인 f1에 해당하는 루트들(410)이 클로토인지 여부를 결정할 수 있다.
도 11은 A 노드가 a5, c5, d4를 참조하여 새로운 이벤트 블록 a6을 생성한 것을 가정할 때, A 노드에 저장된 데이터(1110)를 나타낸다. A 노드에 저장된 플래그 테이블에서 A 노드에 대응하는 항목에는 프레임 f3에 해당되면서, a6로부터 도달 가능한 루트들인 {a4, b3, c4, d3, e3}가 저장될 수 있다. 이때 플래그 테이블의 A 노드에 대응하는 항목에 저장된 루트들의 수는 총 5 개로, 분산 데이터 시스템에 포함된 노드 수(n=5)의 2/3 보다 큰 값이다(5 > 3.33). 따라서, A 노드는 a6를 새로운 루트로 결정할 수 있으며, f3 항목에는 이미 A 노드의 루트인 a4가 저장되어 있으므로, 새로운 루트 a6은 새로운 프레임 f4 항목에 저장될 수 있다.
이때, A 노드는 클로토 체크 목록의 클로토 후보 정보에 기초하여, f4 보다 3 프레임 이전인 f1 에 속한 루트들이 클로토인지 여부를 결정할 수 있다. 도 11을 참고하면, f1 에 속한 루트들인 a1, b1, c1, d1 및 e1의 클로토 후보 플래그가 추가되어 있으므로, A 노드는 a1, b1, c1, d1 및 e1가 클로토인 것으로 결정할 수 있다. 일 실시예에 따른 데이터 분산 저장 방법은 클로토 체크 목록에 기초하여 클로토를 결정하기 때문에, 연산량이 크게 감소될 수 있다.
도 12a 내지 도 12c는 일 실시예에 따른 노드가 최소 시간 값을 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 이벤트 블록을 클로토로 결정하고 난 후, 이벤트 블록의 합의 시간 값을 결정하는 데 기초가 되는 클로토의 최소 시간 값을 계산할 수 있다. 클로토의 최소 시간 값은, 노드가 클로토를 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로운 루트를 생성할 때 계산될 수 있다. 이하에서 이벤트 블록의 타임스탬프 값은 램포트 타임스탬프 알고리즘에 따라 계산된 램포트 타임스탬프 값인 논리적 시간 값을 의미한다.
도 12a는 최소 시간 값을 결정하는 방법을 나타내는 흐름도이다.
도 12a를 참조하면, S1210에서, 노드는 클로토를 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서, 클로토를 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중에서 도달 가능한 루트가 있는지 확인할 수 있다.
S1220에서, 노드는 확인된 루트들의 타임스탬프 값을 확인할 수 있다.
S1230에서, 노드는 확인된 타임스탬프 값들 중에서 가장 높은 빈도 수의 타임스탬프 값을 확인할 수 있다.
S1240에서, 노드는 가장 높은 빈도 수의 타임스탬프 값이 다수일 때, 상기 다수의 타임 스탬프 값 중 가장 낮은 값의 타임스탬프 값을 최소 시간 값으로 결정할 수 있다. 만약, 가장 높은 빈도 수의 타임스탬프 값이 하나라면, S1240는 생략할 수 있다.
S1250에서, 노드는 결정된 최소 시간 값으로 최소 시간 정보를 업데이트할 수 있다.
도 12b는 도 11의 이벤트 블록 체인이 생성되고 나서 B 노드가 a6, b5, c6를 참조하여 새로운 이벤트 블록 b6을 생성한 것을 가정할 때, B 노드에 저장된 데이터(1250)를 나타낸다. 도 11에서 A 노드에 의해 f1 에 속한 루트 {a1, b1, c1, d1, e1}가 클로토로 결정되고, B 노드는 a6를 참조하므로 A 노드의 클로토 체크 목록에 기초하여 자신이 저장하고 있던 클로토 체크 목록을 업데이트할 수 있다. 이때 B 노드는 자신이 저장하고 있던 클로토 체크 목록과 다른 노드로부터 전달받은 클로토 체크 목록을 유니온 연산(합집합)하여 클로토 체크 목록을 업데이트할 수 있다. 따라서 B 노드는 {a1, b1, c1, d1, e1}가 클로토로 결정된 이벤트 블록임을 알게 된다. 이후, B 노드는 최소 시간 값을 계산할 수 있다.
도 12c를 참조하면, B 노드는 최소 시간 값을 계산하기 위해, 먼저 클로토를 결정한 시점에 생성했던 이벤트 블록이 속한 f4의 다른 루트들 중에서, b6으로부터 도달 가능한 루트들의 타임스탬프 값을 확인한다. 예를 들어 도 12b를 참고하면, B 노드는 b6 생성하고 나서 f4에 속한 {a6, b5, c5, d4} 루트들에 도달 가능하므로, B 노드는 {a6, b5, c5, d4}의 타임스탬프 값을 각각 확인한다. 이후 B 노드는 타임스탬프 값들 중에서 가장 빈도 수가 많은 타임스탬프 값을 확인할 수 있다. 만약, 가장 빈도 수가 많은 타임스탬프 값이 다수이면, 그 중에서 가장 작은 타임스탬프 값을 최소 시간 값으로 결정할 수 있다. 실시 예에서 {a6, b5, c5, d4}의 타임스탬프 값이 각각 {9, 10, 10, 11}일 때, 타임스탬프 값 10이 가장 높은 빈도 수의 타임스탬프 값으로 결정될 수 있다. 따라서, 도 12b와 같이 B 노드는 f1의 최소 시간 값을 10으로 결정할 수 있다.
도 13a 내지 도 13c는 일 실시예에 따른 노드가 합의 시간 값을 결정하는 방법을 설명하기 위한 도면이다.
도 13a는 합의 시간 값을 결정하는 방법을 나타내는 흐름도이다.
S1310에서, 노드는 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서, 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중에서 도달 가능한 루트가 있는지 확인할 수 있다.
S1320에서, 노드는 확인된 루트들을 생성한 노드들이 확인된 루트들을 생성한 시점에 계산한 최소 시간 값들을 확인할 수 있다.
S1330에서, 노드는 확인된 최소 시간 값들 중에서 2n/3 초과의 빈도 수를 갖는 최소 시간 값을 합의 시간 값으로 결정할 수 있다. 여기서 n은 분산 데이터 시스템에 포함된 노드의 수를 의미한다.
S1340에서, 노드는 결정된 합의 시간 값에 기초하여 메인 체인 정보를 업데이트할 수 있다.
도 13b은 도 12a의 이벤트 블록 체인이 생성되고 나서 각 노드가 다수 이벤트 블록을 생성하고 난 후, E 노드가 c8, d5, e5를 참조하여 새로운 이벤트 블록 e6을 생성할 시점의 이벤트 블록 체인을 나타낸다. 도 13b를 참고하면, e6는 새로운 프레임인 f6에 속하는 루트로 결정될 수 있다. f5에 속한 루트{a7, c8, d5, e5}을 생성할 시점의 각 노드들은 도 12a 내지 도 12c의 방법에 따라 f1의 최소 시간 값을 계산할 수 있다. 여기서, 루트{a7, c8, d5, e5}를 생성할 당시 계산된 f1의 최소 시간 값이 모두 10이라 가정하면, E 노드는 e6을 생성하고 난 후, 합의 시간 값을 결정할 수 있는데, 합의 시간 값이 결정된 이벤트 블록은 아트로포스로 지칭된다.
도 13c는 도 13b에 기초하여, 도 13b의 E 노드가 합의 시간 값을 결정하는 방법을 설명하기 위한 도면이다.
먼저 E 노드는 f5에 속한 루트들 중에서 도달 가능한 루트들을 생성할 당시 계산된 최소 시간 값을 확인한다. 도 13c를 참고하면, E 노드는 f5에 속한 {b6, c8, d5, e5} 루트들에 도달 가능하므로, E 노드는 {b6, c8, d5, e5} 생성 당시 계산된 최소 시간 값이 각각 10 인 것을 확인한다. 이후 E 노드는 전체 최소 시간 값의 개수에 대해 2n/3 초과의 빈도 수를 갖는 최소 시간 값이 있는지 확인한다. 도 13c를 참고하면 {b6, c8, d5, e5} 생성 당시 계산된 최소 시간 값이 모두 10이므로, 합의 시간 값은 10으로 결정될 수 있다. 다시 말해, f1에 속한 루트들 중에서 클로토로 결정된 {a1, b1, c1, d1, e1}들의 합의 시간 값은 10으로 결정되고, 합의 시간 값이 결정된 {a1, b1, c1, d1, e1}은 아트로포스가 된다.
도 14a 및 도 14b는 일 실시예에 따른 노드가 최소 시간 값의 재선택을 수행하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 클로토를 결정하고 2 프레임이 지난 상태에서 아트로포스를 결정할 수 없을 때, 그 다음 프레임에서 최소 시간 값을 재선택하여 합의 시간 값을 결정할 수 있다. 예를 들어, 도 11에서와 같이 f4에 속한 루트를 생성할 때, f1이 클로토인지 여부를 결정하였다면 f4로부터 2 프레임이 지난 f6 에서 아트로포스를 결정할 수 없을 때, f6에서 최소 시간 값을 재선택하여 합의 시간 값을 결정할 수 있다.
도 13b의 경우 f6에 속한 e6를 생성하고 나서 합의 시간 값이 결정될 수 있었으나, 도 13b와 달리 2n/3 초과의 빈도 수를 갖는 최소 시간 값이 존재하지 않을 수 있다. 이렇게 되면, f6에서는 합의 시간 값을 결정할 수 없게 된다. 만약 f6에 속한 루트들을 생성하는 시점에서 합의 시간 값을 결정하지 못한다면, 노드는 f5에 속한 루트들 중에서 도달 가능한 루트들의 타임스탬프 값 중 최소값을 최소 시간 값으로 재선택할 수 있다.
예를 들어, 도 14a를 참조하면, E노드에서 저장하고 있는 f5에 속한 루트들의 타임스탬프가 개시된다. f6에 속한 e6를 생성할 때, 합의 시간 값을 결정할 수 없을 때, E 노드는 f5에 속한 루트들 중에서 e6이 도달 가능한 루트들이 {e5, b6, c8, d5}라면, {e5, b6, c8, d5}의 타임스탬프 값 중 최소값인 9가 f1의 최소 시간 값으로 재선택된다.
만약 최소 시간 값이 재선택되는 경우, f7에 속하는 루트가 생성될 때 f6에 속한 루트들 중에서 도달 가능한 루트들의 최소 시간 값 중 빈도 수가 2n/3을 초과하는지 확인할 수 있다. 만약, f7에서도 합의에 도달하지 않는다면, 동일한 과정을 f8에서 반복할 수 있다. 이렇게 되면, 하나의 최소 시간 값이 합의 시간 값으로 결정될 수 있다.
도 14b를 참조하면, A노드에서 저장하고 있는 f6에 속한 루트들의 타임스탬프가 개시된다. A 노드가 f7에 속한 a12를 생성할 때, f6에 속한 루트들 중에서 a12가 도달 가능한 루트들이 {a10, b9, c11, d8}이면, A 노드는 {a10, b9, c11, d8} 생성 당시 재선택되었던 f1의 최소 시간 값을 확인할 수 있다. 이후 A 노드는 확인된 최소 시간 값들 중에서 2n/3 초과의 빈도 수를 갖는 최소 시간 값을 합의 시간으로 결정하고, 합의 시간 값이 결정된 이벤트 블록을 아트로포스로 결정할 수 있다.
도 15는 일 실시예에 따른 합의에 도달한 이벤트 블록들 간의 순서를 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 데이터 분산 저장 방법에서, 아트로포스로 결정된 이벤트 블록이 직간접적으로 참조하는 이벤트 블록들은 동일한 합의 시간 값을 갖는다. 만약 다수의 아트로포스가 하나의 이벤트 블록을 직간접적으로 참조하는 경우, 해당 이벤트 블록의 합의 시간 값은 두 아트로포스 중에서 합의 시간 값이 이른 아트로포스의 합의 시간 값으로 결정된다.
도 15를 참조하면, 각 이벤트 블록 내 숫자는 램포트 타임스탬프 값을 의미하며, 각 폐곡선 내의 가장 오른쪽에 위치한 이벤트 블록들(1510 내지 1550)은 아트로포스로 결정된 이벤트 블록을 나타낸다. 또한, 동일한 폐곡선에 속한 이벤트 블록들은 동일한 합의 시간 값을 갖는 이벤트 블록들을 의미한다. 한편, 도 15의 제1 아트로포스(1510)와 제2 아트로포스(1520) 모두가 참조하는 이벤트 블록(1560)이 제1 아트로포스(1510)와 동일한 합의 시간 값을 가지는 것을 나타낸다. 따라서, 제1 아트로포스(1510)와 제1 아트로포스(1510)가 직간접적으로 참조하는 이벤트 블록들은 제2 아트로포스(1520) 및 제2 아트로포스(1520)가 직간접적으로 참조하는 이벤트 블록보다 이른 시간에 생성된 것으로 합의된 것임을 알 수 있다.
만약, 동일한 합의 시간 값을 같는 두 이벤트 블록들 간 순서를 결정해야 하는 경우, 도 5에 설명된 바와 같이 두 이벤트 블록들의 램포트 타임스탬프 값을 비교하여 이른 램포트 타임스탬프 값을 갖는 이벤트 블록이 먼저 생성된 이벤트 블록으로 결정될 수 있다. 도 15를 참고하면, 제1 아트로포스(1510)와 동일한 폐곡선 내에 위치하는 이벤트 블록(1560)은 동일한 합의 시간 값을 가지게 되지만, 이벤트 블록(1560)의 램포트 타임스탬프 값이 1이므로, 제1 아트로포스(1510)의 램포트 타임스탬프 값(3)보다 더 작은 값을 가진다. 따라서, 이벤트 블록(1560)이 제1 아트로포스(1510)보다 더 이른 시간에 생성된 이벤트 블록임을 알 수 있다.
또한 두 이벤트 블록들의 램포트 타임스탬프 값이 동일하다면, 해시 값이 이른 이벤트 블록이 먼저 생성된 이벤트 블록으로 결정될 수 있다.
도 16은 일 실시예에 따른 노드가 플래그 테이블을 이용하여 참조 이벤트 블록을 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 이벤트 블록을 생성할 때, 플래그 테이블을 이용하여 참조 이벤트 블록을 결정할 수 있다. 만약 참조 이벤트 블록의 수를 k라 할 때, 노드는 가장 최근에 자신이 생성한 이벤트 블록은 참조해야 하고 따라서 k-1 개의 참조 이벤트 블록을 결정할 수 있다. 아래 예시들에서 k가 3인 것을 가정하였으나, k 는 분산 데이터 시스템의 성능 및 요구조건 등에 따라 달라질 수 있다.
도 16은 A 노드가 새로운 이벤트 블록 a3의 참조 이벤트 블록을 선택하기 이전에 A 노드에 저장된 플래그 테이블(1610)을 나타낸다. 여기서 A 노드에서 가장 최근에 생성된 이벤트 블록은 a2이고, a2는 D 노드 및 E 노드에서 생성한 루트를 참조하지 않기 때문에, A 노드의 플래그 테이블의 D 노드 및 E 노드에 대응하는 항목에는 기초 이벤트 블록(d1, e1)에 관한 정보만 저장되어 있다. 이때, A 노드는 D 노드 및 E 노드에서 생성한 루트(d1, e1)를 참조 이벤트 블록으로 결정함으로써 다른 노드들에 대한 정보를 빠르게 업데이트하고, 최대한 많은 노드들이 합의 알고리즘에 참여할 수 있게 할 수 있다.
만약 참조하지 않는 노드의 수가 k-1 보다 많은 경우, 노드는 참조하지 않는 노드들 중에서 임의로 참조 이벤트 블록을 k-1개 선택할 수 있다. 예를 들어, k가 2라고 가정할 때 도 16을 참고하면 참조하지 않는 노드의 수는 2로, k-1 보다 크다. 따라서, A 노드는 a3의 참조 이벤트 블록으로 d1 및 e1 중 임의로 하나를 선택할 수 있다.
반대로 참조하지 않는 노드의 수가 k-1보다 작은 경우, 노드는 먼저 참조 이벤트 블록으로서 참조하지 않는 노드가 생성한 루트를 결정한 후, 나머지 참조 이벤트 블록은 다른 노드들이 생성한 임의의 이벤트 블록으로 결정할 수 있다. 예를 들어, k가 4라고 가정할 때, 도 16을 참고하면 참조하지 않는 노드의 수는 2로, k-1 보다 작다. 따라서, A 노드는 a3의 참조 이벤트 블록으로 d1 및 e1를 선택하고 나서, b1 및 c1 중 임의로 하나를 참조 이벤트 블록으로 더 선택할 수 있다.
본 개시의 일 실시예에 따른 노드는 다른 정보를 필요로 하지 않고, 플래그 테이블을 활용하여 참조 이벤트 블록을 결정할 수 있기 때문에, 노드의 부하를 감소시킬 수 있다. 또한, 최대한 많은 노드들이 합의 알고리즘에 참여할 수 있게 하여, 합의에 도달하는 시간을 단축시킬 수 있다.
도 17은 일 실시예에 따른 노드가 높이 벡터 및 진입 차수 벡터를 이용하여 참조 이벤트 블록을 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 이벤트 블록을 생성할 때, 높이 벡터 및 진입 차수 벡터 값에 기초하여, 참조 이벤트 블록을 결정할 수 있다. 구체적으로, 노드는 비용함수(Cf)를 계산할 수 있으며, Cf는 진입 차수 벡터를 높이 벡터로 나눈 값으로 정의된다(Cf=I/H).
도 17은 A 노드가 a3 이벤트 블록을 생성할 때, A 노드에 저장되는 높이 벡터(1710)와 진입 차수 벡터(1720)를 나타낸다. 높이 벡터(1710)와 진입 차수 벡터(1720)를 기초하여 계산된 비용함수(1730)에 따르면, 비용함수 값이 가장 낮은 노드는 D 노드 및 E 노드이므로, A 노드는 a3의 참조 이벤트 블록으로 d2와 e1을 결정할 수 있다. 여기서 D 노드가 가장 최근에 생성한 이벤트 블록은 d2이지만, A 노드는 d2를 알 수 없으므로, 기초 이벤트 블록인 d1만 있다고 가정하여, D 노드의 높이 벡터 값을 1로 한다. 상술한 비용함수에 기초로 한 참조 이벤트 블록을 결정하는 방법은 정밀하게 참조 이벤트 블록을 결정할 수 있는 효과가 있다.
본 개시의 합의 알고리즘에 따르면, 상술된 참조 이벤트 결정 방법 이외에도 다양한 방법을 통해 참조 이벤트 블록이 결정될 수 있으며, 참조 이벤트 결정 방법은 이에 제한되지 않는다.
도 18a 내지 도 18d는 일 실시예에 따른 노드가 다른 노드와 데이터를 송수신하는 방법을 설명하기 위한 도면이다.
분산 데이터 시스템에 포함된 노드들이 동일한 데이터를 가질 수 있도록 하기 위해, 일 실시예에 따른 노드는 참조 이벤트 블록을 생성한 노드로부터 수신된 데이터에 기초하여, A 노드에 저장된 데이터들을 업데이트한다.
도 18a는 A 노드가 B 노드의 이벤트 블록을 참조하여 새로운 이벤트 블록을 생성할 때, 노드 간에 데이터를 송수신하는 절차를 나타내는 도면이다.
먼저 S1810에서, A 노드는 B 노드에게 데이터를 요청할 수 있다. 예를 들어, A 노드는 새로운 이벤트 블록을 생성하면서 B 노드로부터 생성된 이벤트 블록을 참조하고자 할 때 B 노드에게 데이터를 요청할 수 있다. 이때, A 노드는 자신이 가진 데이터 중 적어도 일부를 데이터 요청과 함께 B 노드에 전달할 수 있다.
이후 S1820에서 B 노드는 데이터 요청에 응답하여, A 노드에게 데이터를 전달할 수 있다. 실시 예에서 B 노드는 저장된 데이터 모두를 A 노드에 전달할 수 있다. 또 다른 실시 예에서 B 노드는 A 노드로부터 수신된 데이터와 자신의 데이터를 비교하여, 상이한 데이터만 A 노드에 전달할 수 있다. 이러한 경우, A 노드와 B 노드 간 송수신되는 데이터의 양이 감소되는 효과를 얻을 수 있다. 실시 예에서 B 노드가 A 노드에 전달하는 데이터는 도 6에서 설명한 정보 중 적어도 하나가 포함될 수 있다.
S1830에서, A 노드는 B 노드로부터 수신된 데이터에 기초하여 자신의 데이터를 업데이트할 수 있다.
도 18b 내지 도 18c는 A 노드가 b3 및 c2를 참조하여 새로운 이벤트 블록 a4를 생성할 때 데이터 절차를 설명하기 위한 도면이다. A 노드는 도 18a에 기재된 절차를 B 노드 및 C 노드와 각각 수행한 후, B 노드 및 C 노드로부터 수신된 데이터를 이용하여 A 노드의 데이터를 업데이트할 수 있다.
도 18b를 참고하면, A 노드가 B 노드에게 데이터 요청과 함께 a4를 생성할 당시 A 노드가 알고 있는 이벤트 블록 체인(1840)에 관한 정보 중에서, B 노드가 가장 최근에 생성한 b2와 b2가 참조하는 이벤트 블록들(1850)에 관한 정보를 B 노드에 전달할 수 있다. 여기서, B 노드가 가장 최근에 생성한 이벤트 블록은 b3이지만 A 노드는 b3의 존재를 알지 못하기 때문에, A 노드는 b3에 관한 정보를 B 노드에게 전달할 수 없다.
B 노드는 A 노드로부터 b2와 b2가 참조하는 이벤트 블록들(1850)에 관한 정보를 수신한 후, B 노드는 B 노드가 가장 최근에 생성한 이벤트 블록인 b3 및 b3가 참조하는 이벤트 블록들에 관한 정보를 A 노드에게 전달할 수 있다.
도 18c는 B 노드가 A 노드에게 전달하는 b3 및 b3가 참조하는 이벤트 블록들(1860)을 나타낸다. A 노드는 B 로부터 데이터를 수신한 후, A 노드에 저장되어 있던 이벤트 블록 체인 정보, 프레임 정보, 플래그 정보 등을 업데이트할 수 있다.
한편 도 18d은 C 노드가 A 노드의 데이터 요청에 응답하여 전달하는 이벤트 블록 체인(1870)을 나타낸다. A 노드는 데이터 요청과 함께, 도 18b에 기재된 이벤트 블록 체인(1850)에 관한 정보를 C 노드에게 전달한다. 이후, C 노드는 C 노드가 가장 최근에 생성한 이벤트 블록인 c2 및 c2가 참조하는 이벤트 블록들(1870)에 관한 정보를 A 노드에게 전달할 수 있다. 이때, A 노드가 C 노드로 전달한 이벤트 블록 체인(1850)과 C 노드가 A 노드에 전달한 이벤트 블록 체인(1870)은 서로 동일하므로, A 노드는 A 노드에 저장되어 있던 데이터를 업데이트하지 않을 수 있다.
도 19a 및 도 19b는 일 실시예에 따른 노드가 일부 데이터를 가지치기(pruning)하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 노드는 저장된 데이터 양을 줄이기 위하여, 일정 조건이 만족하는 데이터는 가지치기(pruning)를 할 수 있다. 예를 들어, 노드는 클로토로 결정된 루트에 관한 프레임 정보를 가지치기할 수 있다. 또한, 노드는 아트로포스로 결정된 루트에 관한 클로토 체크 목록 정보를 가지치기할 수 있다.
도 19a는 도 11과 동일한 조건에서 A 노드에 저장된 데이터(1110)를 나타낸다. 다시 말해 A 노드는 플래그 테이블, 프레임 정보 및 클로토 체크 목록에 기초하여 a6를 생성하면서 al 내지 e1이 클로토 임을 결정할 수 있다. al 내지 e1이 클로토로 결정되면, 프레임 정보의 al 내지 e1이 속한 f1 항목(1915)은 더 이상 필요가 없게 된다. 따라서, A 노드는 al 내지 e1이 속한 프레임 정보의 f1 항목(1915)을 삭제할 수 있다.
한편, 도 19b는 도 13a와 동일한 이벤트 블록 체인 상에서 E 노드에 저장된 데이터(1920)를 나타낸다. 여기서 E 노드는 이미 f1에 속한 루트뿐 아니라, f2에 속한 루트들이 클로토인 것으로 결정하였으므로, f1 및 f2에 관한 프레임 정보는 가치지기된 상태일 수 있다. 또한, E 노드는 e6를 생성하고 나서 a1 내지 e1이 아트로포스 임을 결정할 수 있다. al 내지 e1이 아트로포스로 결정되면, al 내지 e1에 관한 클로토 체크 목록(1925)과 최소 시간 정보(1935)는 더 이상 필요가 없게 된다. 따라서, E 노드는 al 내지 e1이 속한 클로토 체크 목록(1925)과 최소 시간 정보(1935)를 삭제할 수 있다.
본 개시의 합의 알고리즘에 따르면, 상술된 데이터 가지치기 방법 이외에도 다양한 방법을 통해 노드에 저장되는 데이터 양을 감소시킬 수 있으며, 데이터 가지치기 방법은 이에 제한되지 않는다.
도 20은 일 실시예에 따른 데이터 분산 저장 방법을 설명하기 위한 흐름도이다.
도 20을 참고하면, S2010에서 제1 노드는 제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정할 수 있다. 만약, 제1 이벤트 블록의 참조 이벤트 블록이 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들과 제1 노드가 제1 이벤트 블록 생성 이전에 생성한 이벤트 블록일 때, 제1 노드는 플래그 테이블에서 제1 노드에 대응하는 항목에 저장된 집합에 기초하여, 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들을 제1 이벤트 블록의 참조 이벤트 블록으로 결정할 수 있다. 또한, 제1 노드는 높이 벡터 및 진입 차수 벡터에 기초하여 비용함수를 계산하고, 비용함수의 계산 결과에 기초하여, 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들을 제1 이벤트 블록의 참조 이벤트 블록으로 결정할 수 있다. S2020에서, 제1 노드는 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 제1 이벤트 블록의 시간 정보를 결정할 수 있다. 여기서, 제1 이벤트 블록의 시간 정보는 제1 이벤트 블록의 타임스탬프 값을 포함할 때 S2020은 제1 이벤트 블록의 참조 이벤트 블록의 타임스탬프 값 중에서 최대값 보다 1이 더 큰 값을 제1 이벤트 블록의 타임스탬프 값인 것으로 결정하는 단계일 수 있다. 또한, 분산 데이터 시스템에 포함된 모든 노드들에 의해 첫 번째로 생성된 이벤트 블록 각각의 타임스탬프 값은 1이고, 타임스탬프 값이 1인 이벤트 블록은 루트로 결정될 수 있다.
S2030에서, 제1 노드는 결정된 시간 정보를 기반으로 제1 이벤트 블록을 생성할 수 있다.
S2040에서, 제1 노드는 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트할 수 있다. 또한, 플래그 테이블을 기반으로 생성된 제1 이벤트 블록에서 도달 가능한 현재 프레임의 루트로 결정된 이벤트 블록의 수가 제1 노드에서 확인한 전체 노드의 개수를 기반으로 결정된 제1 기준보다 많을 때, 제1 이벤트 블록을 새로운 프레임의 루트로 결정하고, 결정된 새로운 프레임의 루트에 기초하여, 제1 노드에 대응하는 프레임 정보를 업데이트할 수 있다. 일 실시예에서, 분산 데이터 시스템에 포함된 노드의 수가 n일 때 제1 기준은 2n/3 일 수 있다.
또한, 프레임 정보에 포함된 루트의 제1 노드에서 확인한 전체 노드의 개수를 기반으로 결정된 제2 기준보다 많을 때, 플래그 테이블에 저장된 각 노드에 대응하는 루트의 개수가 제1 기준보다 많은 루트들의 집합을 기반으로 클로토 후보로 결정할 수 있다. 여기서 제1 노드는 3 개 프레임 이전의 루트들 중에서 클로토 후보로 결정된 이벤트 블록들을 클로토로 결정할 수 있다. 일 실시예에서, 분산 데이터 시스템에 포함된 노드의 수가 n일 때 제2 기준은 n/3 일 수 있다.
또한, 제1 노드가 클로토를 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서 클로토를 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중 도달 가능한 루트가 있는지 확인하고, 확인된 루트들의 타임스탬프 값을 확인할 수 있다. 이후 제1 노드는 확인된 타임스탬프 값들 중에서 가장 높은 빈도 수의 타임스탬프 값을 클로토의 최소 시간 값으로 결정하고, 결정된 최소 시간 값으로 제1 노드의 최소 시간 정보를 업데이트할 수 있다. 만약 가장 높은 빈도 수의 타임스탬프 값이 다수 개이면, 가장 높은 빈도 수의 타임스탬프 값 중에서 최소값을 최소 시간 값으로 결정할 수 있다. 이때 제1 노드는 클로토를 결정하고 난 후, 클로토가 속한 프레임에 관한 프레임 정보를 삭제할 수 있다.
또한, 제1 노드가 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중 도달 가능한 루트가 있는지 확인할 수 있다. 그리고 나서 확인된 루트들을 생성한 노드들이 확인된 루트들을 생성한 시점에 계산한 최소 시간 값을 확인할 수 있다. 이후 확인된 최소 시간 값 중에서 제1 노드에서 확인한 노드의 개수를 기반으로 결정된 제3 기준을 초과하는 빈도 수를 갖는 최소 시간 값이 합의 시간 값으로 결정될 수 있고, 결정된 합의 시간 값에 기초하여 제1 노드는 제1 노드의 메인 체인 정보를 업데이트할 수 있다. 일 실시예에서, 분산 데이터 시스템에 포함된 노드의 수가 n일 때, 제1 노드에서 확인한 노드의 개수를 기반으로 결정된 제3 기준은 2n/3 일 수 있다.
한편, 제1 노드는 클로토를 결정하고 2 프레임이 지난 후에도 합의 시간 값을 결정할 수 없을 때, 최소 시간 값을 재선택하여 합의 시간 값을 결정할 수 있다.
또한, 제1 노드는 두 이벤트 블록의 합의 시간 값을 비교하여 더 이른 합의 시간 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단할 수 있다. 만약 두 이벤트 블록의 합의 시간 값이 동일한 경우, 두 이벤트 블록의 타임스탬프 값을 비교하여, 더 이른 타임스탬프 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단할 수 있다. 그러나, 두 이벤트 블록의 합의 시간 값과 타임스탬프 값이 동일한 경우, 두 이벤트 블록의 물리적 시간 값을 비교하여, 더 이른 물리적 시간 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단할 수 있다.
또한, 제1 노드는 합의 시간 값을 결정하고 난 후, 합의 시간 값이 결정된 이벤트 블록이 포함된 프레임에 관한 클로토 체크 목록 및 최소 시간 정보를 삭제할 수 있다.
한편, 제1 이벤트 블록은 제1 노드의 서명 정보, 결정된 시간 정보, 제1 노드가 생성된 물리적인 시간 값, 거래 정보 및 제1 노드의 참조 이벤트 블록의 해시 값을 포함할 수 있다.
도 21은 일 실시예에 따른 분산 데이터 시스템에 포함된 노드의 구조를 설명하기 위한 블록도이다.
일 실시예에 따른 분산 데이터 시스템은 2개 이상의 노드(2100)를 포함하며, 노드(2100)는 통신부(2110), 메모리(2120) 및 프로세서(2130)를 포함할 수 있다.
통신부(2110)는 다른 노드와 데이터를 송수신할 수 있고, 메모리(2120)는 프로세서(2130)에 의해 처리되는 인스트럭션 및 데이터들을 저장할 수 있다.
프로세서(2130)는 통신부(2110)에 의해 수신된 다른 노드에 관한 정보에 기초하여, 제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정할 수 있다. 또한, 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 제1 이벤트 블록의 시간 정보를 결정할 수 있다. 그리고 나서, 결정된 시간 정보를 기반으로 제1 이벤트 블록을 생성하고, 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트할 수 있다.
실시 예 전반에서 각 노드는 필요한 연산을 수행하기 이전에 분산 데이터 시스템에 포함된 노드의 수 n을 확인하는 동작을 추가로 수행할 수 있다. 상기 n은 고정된 값일 수 있으나, 시스템 설계에 따라 추가 또는 감소할 수 있는 바, 각 노드는 n을 확인하고, 이후 확인된 n 값을 기반으로 관련된 연산을 수행할 수 있다. 일 실시 예에서 n은 참조되는 이벤트 블록에 대응하는 노드로부터 수신하는 정보에 포함될 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.
Claims (15)
- 제1 노드에서 데이터 분산 저장 방법에 있어서,제1 이벤트 블록 생성을 위한 적어도 하나의 참조 이벤트 블록을 결정하는 단계;상기 적어도 하나의 참조 이벤트 블록에 대응하는 시간 정보에 기초하여 상기 제1 이벤트 블록의 시간 정보를 결정하는 단계;상기 결정된 시간 정보를 기반으로 상기 제1 이벤트 블록을 생성하는 단계; 및상기 생성된 제1 이벤트 블록에 대응하는 정보를 기반으로 현재 프레임의 루트로 결정된 이벤트 블록 중 상기 제1 이벤트 블록에서 도달 가능한 이벤트 블록의 정보를 포함하는 플래그 테이블을 업데이트하는 단계를 포함하는 데이터 분산 저장 방법.
- 제1항에 있어서,상기 플래그 테이블을 기반으로 상기 생성된 제1 이벤트 블록에서 도달 가능한 현재 프레임의 루트로 결정된 이벤트 블록의 수가 상기 제1 노드에서 확인한 전체 노드의 개수를 기반으로 결정된 제1 기준보다 많을 때, 상기 제1 이벤트 블록을 새로운 프레임의 루트로 결정하는 단계; 및상기 결정된 새로운 프레임의 루트에 기초하여, 상기 제1 노드에 대응하는 프레임 정보를 업데이트 하는 단계를 더 포함하는 데이터 분산 저장 방법.
- 제2항에 있어서,상기 프레임 정보에 포함된 루트의 수가 상기 제1 노드에서 확인한 전체 노드의 개수를 기반으로 결정된 제2 기준보다 많을 때, 상기 플래그 테이블에 저장된 각 노드에 대응하는 루트의 개수가 상기 제1 기준보다 많은 루트들의 집합을 기반으로 클로토 후보로 결정하는 단계; 및현재 프레임에서 3 개 프레임 이전의 루트들 중에서 상기 클로토 후보로 결정된 이벤트 블록들을 클로토로 결정하는 단계를 더 포함하는, 데이터 분산 저장 방법.
- 제3항에 있어서,상기 클로토를 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서 상기 클로토를 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중 도달 가능한 루트가 있는지 확인하는 단계;상기 확인된 루트들의 타임스탬프 값을 확인하는 단계;상기 확인된 타임스탬프 값들 중에서 가장 높은 빈도 수의 타임스탬프 값을 상기 클로토의 최소 시간 값으로 결정하는 단계; 및상기 결정된 최소 시간 값으로 상기 제1 노드의 해당 프레임에 대한 최소 시간 정보를 업데이트하는 단계를 더 포함하고,상기 가장 높은 빈도 수의 타임스탬프 값이 다수 개이면, 상기 가장 높은 빈도 수의 타임스탬프 값 중에서 최소값을 최소 시간 값으로 결정하는 것인, 데이터 분산 저장 방법.
- 제3항에 있어서,상기 제1 노드는 상기 클로토 결정에 대응하여 상기 클로토가 속한 프레임에 관한 프레임 정보를 삭제하는 단계를 더 포함하는, 데이터 분산 저장 방법.
- 제4항에 있어서,상기 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록보다 1 프레임 뒤에서 새로 생성한 루트에서 상기 최소 시간 값을 결정한 시점에 생성했던 이벤트 블록과 동일한 프레임에 속한 루트들 중 도달 가능한 루트가 있는지 확인하는 단계;상기 확인된 루트들을 생성한 노드들이, 상기 확인된 루트들을 생성한 시점에 계산한 상기 최소 시간 값을 확인하는 단계;상기 확인된 최소 시간 값 중에서 상기 제1 노드에서 확인한 노드의 개수를 기반으로 결정된 제3 기준을 초과하는 빈도 수를 갖는 최소 시간 값을 합의 시간 값으로 결정하는 단계; 및상기 결정된 합의 시간 값에 기초하여 상기 제1 노드의 메인 체인 정보를 업데이트하는 단계를 더 포함하는, 데이터 분산 저장 방법.
- 제6항에 있어서,상기 클로토를 결정하고 2 프레임이 지난 후에도 합의 시간 값을 결정할 수 없을 때, 최소 시간 값을 재선택하여 합의 시간 값을 결정하는 것인, 데이터 분산 저장 방법.
- 제6항에 있어서,두 이벤트 블록의 합의 시간 값을 비교하여 더 이른 합의 시간 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단하는 단계;상기 두 이벤트 블록의 합의 시간 값이 동일한 경우, 상기 두 이벤트 블록의 타임스탬프 값을 비교하여, 더 이른 타임스탬프 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단하는 단계; 및상기 두 이벤트 블록의 합의 시간 값과 타임스탬프 값이 동일한 경우, 상기 두 이벤트 블록의 물리적 시간 값을 비교하여, 더 이른 물리적 시간 값을 갖는 이벤트 블록이 더 이른 시점에 생성된 이벤트 블록인 것으로 판단하는 단계를 더 포함하는, 데이터 분산 저장 방법.
- 제6항에 있어서,상기 제1 노드는 상기 합의 시간 값을 결정하고 난 후, 상기 합의 시간 값이 결정된 이벤트 블록이 포함된 프레임에 관한 클로토 체크 목록 및 최소 시간 정보를 삭제하는 단계를 더 포함하는, 데이터 분산 저장 방법.
- 제1항에 있어서,상기 제1 이벤트 블록은 제1 노드에 의해 생성된 것이고,상기 제1 이벤트 블록의 참조 이벤트 블록은 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들과 상기 제1 노드가 상기 제1 이벤트 블록 생성 이전에 생성한 이벤트 블록이 되고,상기 제1 이벤트 블록의 참조 이벤트 블록을 결정하는 단계는,상기 플래그 테이블에서 상기 제1 노드에 대응하는 항목에 저장된 집합에 기초하여, 상기 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들을 상기 제1 이벤트 블록의 참조 이벤트 블록으로 결정하는 단계를 포함하는, 데이터 분산 저장 방법.
- 제1항에 있어서,상기 제1 이벤트 블록은 제1 노드에 의해 생성된 것이고,상기 제1 이벤트 블록의 참조 이벤트 블록은 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들과 상기 제1 노드가 상기 제1 이벤트 블록의 생성 이전에 생성한 이벤트 블록이 되고,상기 제1 이벤트 블록의 참조 이벤트 블록을 결정하는 단계는,높이 벡터 및 진입 차수 벡터에 기초하여 비용함수를 계산하는 단계; 및상기 비용함수의 계산 결과에 기초하여, 상기 2개 이상의 다른 노드에 의해 생성된 이벤트 블록들을 상기 제1 이벤트 블록의 참조 이벤트 블록으로 결정하는 단계를 포함하는, 데이터 분산 저장 방법.
- 제1항에 있어서,상기 제1 이벤트 블록의 시간 정보는 상기 제1 이벤트 블록의 타임스탬프 값을 포함하고,상기 제1 이벤트 블록의 시간 정보를 결정하는 단계는,상기 제1 이벤트 블록의 참조 이벤트 블록의 타임스탬프 값 중에서 최대값 보다 1이 더 큰 값을 상기 제1 이벤트 블록의 타임스탬프 값인 것으로 결정하는 단계인, 데이터 분산 저장 방법.
- 제1항에 있어서,분산 데이터 시스템에 포함된 모든 노드들에 의해 첫 번째로 생성된 이벤트 블록 각각의 타임스탬프 값은 1이고, 타임스탬프 값이 1인 이벤트 블록은 루트로 결정되는 것인, 데이터 분산 저장 방법.
- 제1항에 있어서,상기 제1 이벤트 블록은 상기 제1 노드의 서명 정보, 상기 결정된 시간 정보, 상기 제1 노드가 생성된 물리적인 시간 값, 거래 정보 및 상기 제1 노드의 참조 이벤트 블록의 해시 값을 포함하는 것인, 데이터 분산 저장 방법.
- 2 개 이상의 노드가 포함된 분산 데이터 시스템에 있어서, 상기 노드는다른 노드와 데이터를 송수신하는 통신부;인스트럭션을 저장하는 메모리; 및상기 인스트럭션을 처리하는 프로세서를 포함하고,상기 프로세서는 제1항에 따른 방법의 단계들을 수행하는 것인, 분산 데이터 시스템.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR20180073882 | 2018-06-27 | ||
| KR10-2018-0073882 | 2018-06-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020004756A1 true WO2020004756A1 (ko) | 2020-01-02 |
Family
ID=68985055
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2019/000425 Ceased WO2020004756A1 (ko) | 2018-06-27 | 2019-01-11 | 분산 데이터 시스템 및 데이터 분산 저장 방법 |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2020004756A1 (ko) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170366353A1 (en) * | 2015-06-02 | 2017-12-21 | ALTR Solutions, Inc. | Generation of hash values within a blockchain |
-
2019
- 2019-01-11 WO PCT/KR2019/000425 patent/WO2020004756A1/ko not_active Ceased
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170366353A1 (en) * | 2015-06-02 | 2017-12-21 | ALTR Solutions, Inc. | Generation of hash values within a blockchain |
Non-Patent Citations (4)
| Title |
|---|
| ALEXANDRA TRAN: "An Introduction to the blockDAG Paradigm", DAGLABS, 23 May 2018 (2018-05-23), XP055667659 * |
| JANNO SIIM: "DAG-Based Distributed Ledgers", RESEARCH SEMINAR IN CRYPTOLOGY, 1 June 2018 (2018-06-01) * |
| YONATAN SOMPOLINSKY: "Inclusive Block Chain Protocols", 22 February 2016 (2016-02-22), XP047314786 * |
| YONATAN SOMPOLINSKY: "PHANTOM: A Scalable BlockDAG Protocol", IACR CRYPTOLOGY EPRINT ARCHIVE, 29 May 2018 (2018-05-29), XP061025438 * |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2020022599A1 (ko) | 블록체인 네트워크 상에서 그룹키 기반의 이중 서명 트랜잭션 구조를 구성하는 노드 그룹 관리 장치 및 컴퓨팅 장치 | |
| WO2020130331A1 (ko) | 블록체인에서 노드들간 블록 및 전자 문서를 공유 및 검증하는 방법 | |
| WO2021060609A1 (ko) | 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 모델 제공 방법 | |
| WO2018076865A1 (zh) | 数据分享方法、装置、存储介质及电子设备 | |
| WO2020242090A1 (en) | Apparatus for deep representation learning and method thereof | |
| WO2014040501A1 (zh) | 一种动态口令的生成及认证方法与系统 | |
| WO2017071363A1 (zh) | 密码的共享方法、密码的共享系统及终端设备 | |
| EP3017395A1 (en) | Method and apparatus of data authentication | |
| WO2016171401A1 (ko) | 공동 편집 문서를 공유하는 방법 및 장치 | |
| WO2020153552A1 (ko) | 기록된 거래의 수정이 가능한 블록체인을 위한 방법 및 장치 | |
| WO2018207974A1 (ko) | 블록체인 시스템 및 블록체인을 이용한 데이터 관리 방법 | |
| WO2018076840A1 (zh) | 数据分享方法、装置、存储介质及服务器 | |
| WO2018101640A1 (ko) | 데이터베이스 이중화 무중단 정합성 복구 기법 | |
| WO2017028573A1 (zh) | 一种基于移动终端的图片信息处理的方法及系统 | |
| WO2012165709A1 (ko) | 인스턴스 경로 탐색 및 시각화 방법 및 장치 | |
| WO2020189800A1 (ko) | 블록체인에서 생성된 데이터를 인증하는 방법 및 시스템 | |
| WO2020189993A1 (ko) | 암호화폐 분실 방지 방법 및 시스템 | |
| WO2023171973A1 (en) | Apparatus and method of managing non-fungible tokens based on blockchain | |
| WO2022164000A1 (ko) | 배송업체들의 서비스 품질 점수를 기반으로 사용자에게 적절한 배송업체를 추천해주는 배송업체 정보 제공 장치 및 그 동작 방법 | |
| WO2011068315A4 (ko) | 최대 개념강도 인지기법을 이용한 최적의 데이터베이스 선택장치 및 그 방법 | |
| WO2019245247A1 (en) | Method for object management using trace identifier, apparatus for the same, computer program for the same, and recording medium storing computer program thereof | |
| WO2018191889A1 (zh) | 照片处理方法、装置及计算机设备 | |
| WO2019216602A1 (ko) | 암호화폐 거래소에서 암호화폐를 보관하는 서버 및 방법 | |
| WO2017020620A1 (zh) | 标签页同步方法、电子设备及存储介质 | |
| WO2020091194A1 (ko) | 클라우드 기반의 버추얼 스마트폰 시스템 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19826607 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 19826607 Country of ref document: EP Kind code of ref document: A1 |