WO2021020794A2 - 원장의 증명 가능 프루닝 시스템 - Google Patents

원장의 증명 가능 프루닝 시스템 Download PDF

Info

Publication number
WO2021020794A2
WO2021020794A2 PCT/KR2020/009588 KR2020009588W WO2021020794A2 WO 2021020794 A2 WO2021020794 A2 WO 2021020794A2 KR 2020009588 W KR2020009588 W KR 2020009588W WO 2021020794 A2 WO2021020794 A2 WO 2021020794A2
Authority
WO
WIPO (PCT)
Prior art keywords
hash value
merkle tree
ledger
node
root hash
Prior art date
Application number
PCT/KR2020/009588
Other languages
English (en)
French (fr)
Other versions
WO2021020794A3 (ko
Inventor
주영현
Original Assignee
주식회사 블룸테크놀로지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 블룸테크놀로지 filed Critical 주식회사 블룸테크놀로지
Priority to AU2020323807A priority Critical patent/AU2020323807B2/en
Priority to CN202080053082.XA priority patent/CN114144775A/zh
Priority to CA3146179A priority patent/CA3146179A1/en
Priority to US17/627,139 priority patent/US11949801B2/en
Priority to EP20846043.6A priority patent/EP4009579A4/en
Priority to JP2022503829A priority patent/JP7289983B2/ja
Publication of WO2021020794A2 publication Critical patent/WO2021020794A2/ko
Publication of WO2021020794A3 publication Critical patent/WO2021020794A3/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Definitions

  • the present invention relates to a ledger pruning system, and more specifically, to a ledger verifiable pruning system.
  • Distributed ledgers such as existing blockchains and DAGs (directed acyclic graphs) increase the size of the ledgers over time, leading to a significant lack of storage.
  • the size of the distributed ledger created per day is 0.5 kByte/Tx * 4 kTx/sec * 60 sec/min * 60 min/hour * 24 hours/day, which is 172.8 GB/day.
  • pruning is performed to delete data from a few years ago, and each node only retains data from a few years ago.
  • the pruned data is used in a way that the old data is managed separately by the foundation and distributed whenever a request is made.
  • An object of the present invention is to provide a pruning system capable of verifying a ledger.
  • a root hash value R n-1 of the previous subtree is converted into the data block T n according to a linked list method.
  • h(T i ) of the Skew Merkle Tree To sequentially perform hash value calculations to calculate the latest root hash value of the Skud Merkle tree, and compare the calculated latest root hash value with the latest known root hash value R n. It may be configured to further include a node authenticity verification module that verifies whether k is authentic or not.
  • the verifiable pruning system of the ledger includes a root hash value R n-1 of the previous subtree in the data block T n according to a linked list method.
  • the jump link R n-(base ⁇ offset) are summed and hashed to calculate h(h(T n )
  • tree) may be configured to include a hierarchical-skewed merkle tree generation module.
  • the jump link R n-(base ⁇ offset) is a root hash value on a node at a predetermined past point in the h-skew merkle tree, and the base is to allocate jump links at predetermined intervals. It is the shortest distance of the predetermined jump link, and the offset may be configured based on n% of the current node position.
  • the distance (dist) of the jump links may be configured to be calculated as the base offset (base offset) value.
  • the h-skew merkle tree generation module may be configured to allocate the jump link for each node of offset + (base offset ) *k.
  • k may be composed of a positive integer.
  • the node authenticity proof module is configured to prove whether a hash value R y or a data block T y exists in the h-skew Merkle tree according to the following procedure, 1) the latest root hash value R head From the link (node) within a predetermined distance in the past view direction, search for a jump link or link (node) that exists in the most past view among links (nodes) that are the same as the view point of R y or in the future, and 2) the above Based on the link (node) within a predetermined distance in the direction of the past from the jump link or the hash value of the link that exists at the searched past time point, the link (node) that is the same as the time point of R y or exists at the most past time point among links (nodes) in the future Search for a jump link or link (node), 3) repeat the process 2) until it reaches R y , and 4) use the T y to repeat the searched jump link in 2) and 3) or For a set of
  • the predetermined distance may be a base.
  • the ledger structure is configured as a skew merkle tree, and it is configured to store and manage only the latest data and verify the authenticity of transactions submitted by other nodes, thereby minimizing the increase in ledger size. There is an effect that can be maintained.
  • the h-skew Merkle tree is configured to check whether the hash values calculated by two or more computation paths are identical to each other, so that it is possible to check whether a newly added jump link is forged.
  • FIG. 1 is a block diagram of a pruning system capable of verifying a ledger according to an embodiment of the present invention.
  • 2 is a structural diagram of an existing Merkle tree.
  • 3 and 4 are conceptual diagrams of an algorithm for generating a skew merkle tree according to an embodiment of the present invention.
  • 5 to 10 are conceptual diagrams of an h-skew Merkle tree generation algorithm according to an embodiment of the present invention.
  • first, second, A, and B may be used to describe various elements, but the elements should not be limited by the terms. These terms are used only for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element.
  • the term and/or includes a combination of a plurality of related listed items or any of a plurality of related listed items.
  • FIG. 1 is a block diagram of a ledger verifiable pruning system according to an embodiment of the present invention
  • FIG. 2 is a structural diagram of an existing Merkle tree
  • FIGS. 3 and 4 are skew merkle trees according to an embodiment of the present invention.
  • FIGS. 5 to 10 are conceptual diagrams of an h-skew Merkle tree generation algorithm according to an embodiment of the present invention.
  • the certifiable pruning system of a ledger is a skewed merkle tree generation module 110 or a hierarchical-skewed merkle tree. It may be configured to include a generation module 120 and a node authenticity verification module 130.
  • the merkle tree is also called a hash tree, and has a tree data structure composed of cryptographic hash values.
  • the Merkle tree is a hash value (eg, H 6 , H 7 , H 8 , root) for certain data (eg, H 1 , H 2 , H 3 , H 4 , H 5 ) It is used to prove that it was included in the Merkle tree. That is, it is sufficient to calculate and verify the hash value along the path to the root node. If the final calculated value matches the root hash value, it is proven. For example, to verify H 1 , the hash value is calculated along the path using H 2 and H 8 , and the verification result is verified if it matches the root hash value.
  • H 1 the hash value is calculated along the path using H 2 and H 8 , and the verification result is verified if it matches the root hash value.
  • the data size of the hash value (H 6 , H 7 , H 8 , root) is small, but the original data (H 1 , H 2 , H 3 , H 4 , H 5 ) has a relatively large data size.
  • the ledger's verifiable pruning system uses a skew merkle tree structure upgraded from this rather than the conventional Merkle tree structure, and an h-skew merkle tree structure that is more upgraded from the skew merkle tree structure. It is configured to perform pruning to delete and to completely prove the authenticity of old data with only this upgraded Merkle tree structure.
  • each node can verify the authenticity of all data while holding only the latest data, for example, one day of data.
  • the distributed ledger system has a transaction processing speed of 4 kTx/sec per day, only 172.8 GB of data accumulated per day is stored in the node, all previous data is pruned, and the pruned data is It is configured to completely verify the authenticity by using the stored data, that is, the root hash value of the Skew Merkle tree.
  • the h-skew Merkle tree structure has a much shorter proof length for very old data over several years than the skew merkle tree structure.
  • the size of the proof data increases as time goes by, in the present invention, the size of the proof itself can be reduced to reduce the computational burden required for verification and the time taken for verification.
  • the skew merkle tree generation module 110 may be configured to generate a skew merkle tree having a binary merkle tree structure using data blocks. .
  • the skew merkle tree generation module 110 has the form of a binary merkle tree structure in which a data block T n and a root hash value R n-1 of a previous subtree are paired. It can be configured to create a tree.
  • Each node of the Skew Merkle Tree stores an initial data block T 1 and a root hash value R n-1 .
  • the skew merkle tree generation module 110 is configured to expand the skew merkle tree by calculating the root hash value of each node by h(h(T n )
  • the skew merkle tree generation module 110 is first configured to include a root hash value R n-1 of the previous subtree according to a linked list method in a newly created data block T n . I can.
  • R n-1 ) is sequentially stored.
  • a skew merkle tree can be seen as a combination of a linked list and a binary merkle tree.
  • the hash value R 1 is a hashed value by adding the first data block T 1 and the root hash initial value R 0 .
  • the hash value R 2 is the hashed value of the second data block T 2 and the most recent root hash value R 1 . Since T 2 includes the most recent root hash value R 1 by the linked list method, R 2 can be calculated by hashing T 2 and R 1 . In this way, R 2 is added to the T 3 data block and the above process is repeated to expand and generate the Skew Merkle tree.
  • the node authenticity verification module 130 of FIG. 1 may be configured to verify the authenticity of a specific node in the past on the skew merkle tree.
  • R4 included therein is obtained from T 4 , the latest data block of the Skew Merkle Tree.
  • R 1 contained therein is obtained from the given T 2 for verification. And it can be calculated by hashing a T 2 of h (T 2) and combined hash and if the R 1 and h (T 2) calculating the R 2.
  • T 3 hash value h (T 3) is known in advance, it is possible to calculate the R 3 in the same manner, h (T 4) can be calculated also R 4, if know in advance, using the R 3. If R 4 calculated in this way is the same as R 4 obtained above, it can be proved that T 2, which is the target of verification, is a node included in the Skew Merkle Tree.
  • Skude Merkle Tree also has its drawbacks. Since each node of the skew merkle tree holds only the hash value of the previous subtree according to the linked list method, in the verification process, as shown in FIG. 4, it is necessary to calculate and calculate one by one for all nodes. Skew Merkle Tree is advantageous for verifying recent data, but has the disadvantage of increasing the computational load due to the large number of computational steps for hundreds of billions of transactions per year. To compensate for this, an h-skew Merkle tree can be used.
  • the h-skew merkle tree generation module 120 of FIG. 1 is configured to further retain information on the root hash value of a node much earlier than that in addition to each node holding the root hash value of the previous node, as shown in FIG. do.
  • the root hash value of the far earlier node is defined as a jump link as a link referring to the past tree. That is, the jump link is the past root hash value.
  • the jump link has an exponential distance between nodes. It is possible to skip a long operation step for verification and immediately verify a data block of the past jump link. In other words, the size of the proof is reduced and the number of calculation steps is significantly reduced, enabling rapid verification of nodes several years ago.
  • Each node value Rn of the h-skew Merkle tree further holding the jump link of FIG. 5 may be summarized as h(h(T n )
  • R n-(base ⁇ offset) is a jump link that is the hash value of the node at some point in the past.
  • the base is the shortest distance of the jump link predetermined in order to allocate the jump link at predetermined intervals. If the base is 3, jump links are allocated at intervals of 3 nodes.
  • the offset is the remainder of the value obtained by dividing the position n of the current node by the base, that is, n% base.
  • FIG. 5 a jump link with a base of 3 and an offset of 1 is illustrated.
  • the distance of the jump link is 3 as a base offset, that is, 3 1 .
  • R 4 the value of R 4 can be obtained by hashing after summing the hash value of T 4 , the previous hash value R 3, and the jump link R 1 .
  • jump links may not be assigned to nodes other than the above nodes.
  • FIG. 8 shows a state in which the jump link assignment of FIG. 7 is completed.
  • the assignment of the jump link indicates that each offset is repeatedly performed until it reaches the base.
  • the verification of the block may be performed as follows.
  • R head is R 59
  • the link (node) R 58 and R 57 equal to the distance of base 3 are referenced to the appropriate distance from R 59 , that is, the distance of offset 3 from R 57 , that is 3 Among the jump links of 3 , the most past link R 30 in the future rather than R 8 is searched and searched.
  • the link (node) R 29 equal to the appropriate distance, that is, the distance of the base 3 is searched again. Offset distance again from 2 R 29 That is, the query by searching for a jump in the R 11 link 32 link jump R 20 and R 20 of the jump link.
  • the jump link R 11 becomes the oldest link in the future than R 8 among the jump links of offset 2 based on R 29 .
  • the root hash value is calculated in order in the future direction. If the final calculated root hash value coincides with R 59 on the h-skew Merkle tree, it is proved that T 8 exists on the h-skew Merkle tree.
  • 10 is an actual implementation example, and shows an h-skew Merkle tree with a base of 10. Since the jump link is offset by 10, the distance of the jump link increases to 10, 10 2 and 10 3 , and if the distance is 1999, it can be reached with only 28 steps.
  • the ledger's verifiable pruning system can completely verify data with only the hash value even without directly holding all data blocks, the amount of data stored can be significantly reduced. Because the size of the ledger also grows tremendously over time, search and calculation using jump links is urgently needed.

Landscapes

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

Abstract

원장(ledger)의 증명 가능 프루닝(verifiable pruning) 시스템이 개시된다. 링크드 리스트(linked list) 방식에 따라 상기 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 상기 데이터 블록(data block) Tn에 포함시키고, 상기 루트 해쉬값 Rn-1이 포함된 데이터 블록 Tn을 해쉬하여 h(Tn)을 산출하고, 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1을 합산한 후 해쉬하여 h(h(Tn)|Rn-1)을 산출하고, 산출된 h(h(Tn)|Rn-1)을 이진 머클 트리(binary merkle tree) 구조의 각 노드에 순차적으로 추가하여 스큐드 머클 트리(skewed merkle tree)를 확장 생성하는 스큐드 머클 트리 생성 모듈을 구성한다. 상술한 원장의 증명 가능 프루닝 시스템에 의하면, 원장 구조를 스큐드 머클 트리로 구성하여 최신의 데이터만을 저장하여 관리하고 타 노드에서 제출하는 트랜잭션의 진위를 검증하도록 구성됨으로써, 원장 크기의 증가를 최소화하여 유지할 수 있는 효과가 있다. 특히, 스큐드 머클 트리에서 업그레이드된 h-스큐드 머클 트리로 변환하여 분산 원장을 관리하도록 구성됨으로써, 시간이 갈수록 커지는 증명용 데이터(proof)의 크기를 획기적으로 줄일 수 있는 효과가 있다. 프루프의 크기 축소와 함께 수 년 전 이상의 오래된 데이터의 진위 검증을 더 적은 횟수의 연산 스텝으로도 가능하게 하여 검증 속도를 더 높일 수 있는 효과가 있다.

Description

원장의 증명 가능 프루닝 시스템
본 발명은 원장(ledger)의 프루닝(pruning) 시스템에 관한 것으로서, 구체적으로는 원장의 증명 가능 프루닝(verifiable pruning) 시스템에 관한 것이다.
기존의 블록체인(blockchain)이나 DAG(directed acyclic graph)와 같은 분산 원장은 시간이 지날수록 원장 크기가 커지게 되어 스토리지(storage) 부족이 큰 문제로 대두되고 있다.
고속화 기술이 발전할수록 스토리지 용량의 부족 현상은 더욱 큰 문제가 되고 있다.
현재 이더리움(ethereum)의 경우에는 20 트랜잭션(Tx)/초(sec), 비트코인(bitcoin)은 7 Tx/sec의 처리 속도를 갖고 있다. 이더리움의 경우에는 연간 250 GB의 데이터가 축적되고 있다.
차후에는 더 높은 트랜잭션 처리 속도도 가질 수 있다. 예를 들어, 블록체인보다 트랜잭션의 처리 속도가 훨씬 높은 DAG(directed acyclic graph)-AWTC(account-wise transaction chain) 원장 방식에서는 차후에 4 kTx/sec의 목표 설정도 가능하다.
4 kTx/sec의 트랜잭션 처리 속도에서는 하루에 생성되는 분산 원장의 크기가 0.5 kByte/Tx * 4 kTx/sec * 60 sec/min * 60 min/hour * 24 hours/day로서 172.8 GB/day가 된다.
모든 노드에서 매일 172.8 GB의 데이터가 쌓이게 된다면, 시간이 갈수록 무수히 많은 용량의 스토리지가 확보되어야 하는 문제점이 있다.
높은 트랜잭션 처리 속도를 갖는 원장 구조에서는 원장 크기의 누적적 증가에 따른 스토리지 활용도의 문제가 더욱 더 큰 문제로 불거질 수밖에 없다.
처리 속도가 낮은 이더리움(ethereum)의 경우에도 몇 년 전 시점 이전의 데이터를 삭제하는 프루닝(pruning)을 하고 있으며, 각 노드에서는 그 몇 년 전 시점 이후의 데이터만 보유하도록 하고 있다. 프루닝한 데이터는 오래된 데이터는 재단에서 별도로 관리하면서 의뢰가 들어올 때마다 배포하는 방식으로 이용되고 있다.
이에, 단순히 기존의 프루닝(pruning)만으로도 효율적인 원장 관리를 하는 데 한계가 있다고 볼 수 있다.
본 발명의 목적은 원장의 증명 가능 프루닝 시스템을 제공하는 데 있다.
제1 실시예에 따른 원장의 증명 가능 프루닝 시스템은, 링크드 리스트(linked list) 방식에 따라 상기 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 상기 데이터 블록(data block) Tn에 포함시키고, 상기 루트 해쉬값 Rn-1이 포함된 데이터 블록 Tn을 해쉬하여 h(Tn)을 산출하고, 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1을 합산한 후 해쉬하여 h(h(Tn)|Rn-1)을 산출하고, 산출된 h(h(Tn)|Rn-1)을 이진 머클 트리(binary merkle tree) 구조의 각 노드에 순차적으로 추가하여 스큐드 머클 트리(skewed merkle tree)를 확장 생성하는 스큐드 머클 트리 생성 모듈을 포함하도록 구성될 수 있다.
여기서, 과거 소정의 데이터 블록 Tk가 상기 스큐드 머클 트리에 포함되어 있는지 검증하기 위해 상기 Tk와 상기 스큐드 머클 트리의 소정 루트 해쉬값 h(Ti)(여기서, k<i<=n)를 이용하여 순차적으로 해쉬값 연산을 수행하여 상기 스큐드 머클 트리의 최신 루트 해쉬값을 산출하고, 산출된 최신 루트 해쉬값이 미리 알고 있는 최신 루트 해쉬값 Rn과 일치하는지 대비하여 상기 블록 Tk의 진위 여부를 검증하는 노드 진위 증명 모듈을 더 포함하도록 구성될 수 있다.
제2 실시예에 따른 원장의 증명 가능 프루닝 시스템은, 링크드 리스트(linked list) 방식에 따라 상기 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 상기 데이터 블록(data block) Tn에 포함시키고, 상기 루트 해쉬값 Rn-1이 포함된 데이터 블록 Tn을 해쉬하여 h(Tn)을 산출하고, 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1과 점프 링크(jump link) Rn-(베이스^오프셋)을 합산한 후 해쉬하여 h(h(Tn)|Rn-1|Rn-(베이스^오프셋))을 산출하고, 산출된 h(h(Tn)|Rn-1|Rn-(베이스^오프셋))을 이진 머클 트리(binary merkle tree) 구조의 각 노드에 순차적으로 추가하여 h-스큐드 머클 트리(hierarchical-skewed merkle tree)를 확장 생성하는 h-스큐드 머클 트리(hierarchical-skewed merkle tree) 생성 모듈을 포함하도록 구성될 수 있다.
여기서, 상기 점프 링크 Rn-(베이스^오프셋)은, 상기 h-스큐드 머클 트리 상의 소정 과거 시점의 노드 상의 루트 해쉬값이고, 상기 베이스(base)는, 소정 간격마다 점프 링크를 할당하기 위해 미리 정해진 점프 링크의 최단 거리이고, 상기 오프셋(offset)은, 현재 노드의 위치 n%베이스로 구성될 수 있다.
그리고 상기 점프 링크의 거리(dist)는, 베이스오프셋(baseoffset) 값으로 산출되도록 구성될 수 있다.
한편, 상기 h-스큐드 머클 트리 생성 모듈은, 오프셋+(베이스오프셋)*k의 노드마다 상기 점프 링크를 할당하도록 구성될 수 있다.
이때, 상기 k는 양의 정수로 구성될 수 있다.
다른 한편, 과거 소정의 데이터 블록 Tk가 상기 h-스큐드 머클 트리에 포함되어 있는지 검증하기 위해 상기 Tk와 상기 h-스큐드 머클 트리의 소정 루트 해쉬값 h(Ti)(여기서, k<i<=n)를 이용하여 순차적으로 해쉬값 연산을 수행하여 상기 h-스큐드 머클 트리의 최신 루트 해쉬값을 산출하고, 산출된 최신 루트 해쉬값이 미리 알고 있는 최신 루트 해쉬값 Rn과 일치하는지 대비하여 상기 블록 Tk의 진위 여부를 검증하는 노드 진위 증명 모듈을 더 포함하도록 구성될 수 있다.
여기서, 상기 노드 진위 증명 모듈은, 하기의 절차에 따라 상기 h-스큐드 머클 트리에 해쉬값 Ry 또는 데이터 블록 Ty가 존재하는지 여부를 증명하도록 구성되며, 1) 최신의 루트 해쉬값 Rhead로부터 과거 시점 방향의 소정 거리 내 링크(노드)를 기준으로 Ry의 시점과 같거나 미래에 있는 링크(노드) 중 가장 과거 시점에 존재하는 점프 링크 또는 링크(노드)를 검색하고, 2) 상기 검색된 가장 과거 시점에 존재하는 점프 링크 또는 링크의 해쉬값으로부터 과거 시점 방향의 소정 거리 내 링크(노드)를 기준으로 Ry의 시점과 같거나 미래에 있는 링크(노드) 중 가장 과거 시점에 존재하는 점프 링크 또는 링크(노드)를 검색하고, 3) 위 2) 과정을 상기 Ry에 도달할 때까지 반복하고, 4) 상기 Ty를 이용하여 상기 2) 및 3)에서 반복하여 검색된 점프 링크 또는 링크(노드)의 집합에 대해 차례로 미래 방향으로 향하는 루트 해쉬를 계산하고, 5) 최종 산출된 루트 해쉬값이 상기 Rhead와 동일한지 대비하고, 대비 결과 동일하면 상기 해쉬값 Ry 또는 데이터 블록 Ty가 h-스큐드 머클 트리에 존재하는 것으로 증명될 수 있다.
여기서, 상기 소정 거리는 베이스가 될 수 있다.
상술한 원장의 증명 가능 프루닝 시스템에 의하면, 원장 구조를 스큐드 머클 트리로 구성하여 최신의 데이터만을 저장하여 관리하고 타 노드에서 제출하는 트랜잭션의 진위를 검증하도록 구성됨으로써, 원장 크기의 증가를 최소화하여 유지할 수 있는 효과가 있다.
특히, 스큐드 머클 트리에서 업그레이드된 h-스큐드 머클 트리로 변환하여 원장을 관리하도록 구성됨으로써, 시간이 갈수록 커지는 증명용 데이터(proof)의 크기를 획기적으로 줄일 수 있는 효과가 있다. 프루프의 크기 축소와 함께 수 년 전 이상의 오래된 데이터의 진위 검증을 더 적은 횟수의 연산 스텝으로도 가능하게 하여 검증 속도를 더 높일 수 있는 효과가 있다.
아울러 h-스큐드 머클 트리에서는 둘 이상의 연산 경로에 의해 계산된 해쉬값을 상호 대비하여 동일 여부를 확인하도록 구성됨으로써, 새로이 추가되는 점프 링크의 위조 여부를 확인할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 원장의 증명 가능 프루닝 시스템의 블록 구성도이다.
도 2는 기존 머클 트리의 구조도이다.
도 3 및 도 4는 본 발명의 실시예에 따른 스큐드 머클 트리 생성 알고리즘의 개념도이다.
도 5 내지 도 10은 본 발명의 실시예에 따른 h-스큐드 머클 트리 생성 알고리즘의 개념도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 발명을 실시하기 위한 구체적인 내용에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른 원장의 증명 가능 프루닝 시스템의 블록 구성도이고, 도 2는 기존 머클 트리의 구조도이며, 도 3 및 도 4는 본 발명의 실시예에 따른 스큐드 머클 트리 생성 알고리즘의 개념도이고, 도 5 내지 도 10은 본 발명의 실시예에 따른 h-스큐드 머클 트리 생성 알고리즘의 개념도이다.
먼저 도 1을 참조하면, 본 발명의 실시예에 따른 원장의 증명 가능 프루닝 시스템은 스큐드 머클 트리(skewed merkle tree) 생성 모듈(110) 또는 h-스큐드 머클 트리(hierarchical-skewed merkle tree) 생성 모듈(120)과, 노드 진위 증명 모듈(130)을 포함하도록 구성될 수 있다.
일반적으로 머클 트리(merkle tree)는 해쉬 트리(hash tree)라고도 하며 암호학적 해쉬값으로 구성되는 트리 데이터 구조를 갖는다.
도 2에서 보듯이, 머클 트리는 어떤 데이터(예를 들어, H1, H2, H3, H4, H5)에 대한 해쉬값(예를 들어, H6, H7, H8, root)이 머클 트리에 포함되어 있었음을 증명하는 데 사용된다. 즉, 루트 노드(root node)까지의 경로를 따라 해쉬값을 계산하여 검증하면 된다. 최종 계산값이 루트 해쉬값과 일치하면 증명이 된다. 예를 들어, H1을 검증하려면, H2와 H8을 이용하여 경로를 따라 해쉬값을 계산 검증한 결과가 루트 해쉬값과 일치하면 증명이 된다.
그런데, 이러한 머클 트리를 이용한 증명 방식을 이용함에 있어서, 해쉬값(H6, H7, H8, root)의 데이터 크기는 작은 편이지만, 원래의 데이터(H1, H2, H3, H4, H5)는 상대적으로 그 데이터 크기가 매우 클 수밖에 없다.
원장의 증명 가능 프루닝 시스템은 이러한 기존의 일반적인 머클 트리 구조가 아닌 이로부터 업그레이드된 스큐드 머클 트리 구조와, 스큐드 머클 트리 구조에서 더 업그레이드된 h-스큐드 머클 트리 구조를 이용하여 오래된 데이터를 삭제하는 프루닝(pruning)을 하고, 아울러 이러한 업그레이드된 머클 트리 구조만으로도 오래된 데이터의 진위 여부를 완벽하게 증명할 수 있도록 구성된다.
스큐드 머클 트리 구조에서는 각 노드는 최근의 데이터 예를 들어, 하루 정도의 데이터만을 보유한 채로 모든 데이터의 진위 여부를 검증할 수 있다.
분산 원장 시스템이 하루에 4 kTx/sec의 트랜잭션 처리 속도를 갖는다고 가정하면, 하루에 축적되는 데이터인 172.8 GB의 데이터만 노드에 보관하고 나머지 이전의 데이터는 모두 프루닝하고, 프루닝된 데이터는 보관된 데이터 즉, 스큐드 머클 트리의 루트 해쉬값을 이용하여 진위 여부를 완벽하게 검증하도록 구성된다.
이에 더하여, h-스큐드 머클 트리 구조에서는 수 년 이상의 매우 오래된 데이터에 대해 스큐드 머클 트리 구조에서보다 훨씬 짧은 프루프(proof) 길이를 갖게 된다. 이와 같은 증명용 데이터(proof)의 크기는 시간이 갈수록 커지게 되지만, 본 발명에서는 프루프의 크기 자체를 축소시켜 검증에 걸리는 연산 부담을 줄이고 검증에 걸리는 시간도 줄일 수 있다.
다시 도 1 및 도 3을 참조하면, 스큐드 머클 트리 생성 모듈(110)은 데이터 블록(data block)들을 이용하여 이진 머클 트리(binary merkle tree) 구조의 스큐드 머클 트리를 생성하도록 구성될 수 있다.
스큐드 머클 트리 생성 모듈(110)는 데이터 블록(data block) Tn과 이전 서브 트리의 루트 해쉬값 Rn-1이 쌍을 이루는 이진 머클 트리(binary merkle tree) 구조의 형태를 갖는 스큐드 머클 트리를 생성하도록 구성될 수 있다.
스큐드 머클 트리의 각 노드에는 초기의 데이터 블록 T1과 루트 해쉬값 Rn-1이 저장된다.
스큐드 머클 트리 생성 모듈(110)은 각 노드의 루트 해쉬값을 h(h(Tn)|Rn-1)에 의해 산출하여 각 노드에 순차적으로 저장하여 스큐드 머클 트리를 확장 생성하도록 구성될 수 있다.
스큐드 머클 트리 생성 모듈(110)는 먼저 새로이 생성되는 데이터 블록 Tn에 링크드 리스트(linked list) 방식에 따라 그 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 포함시키도록 구성될 수 있다.
그리고 Tn을 해쉬하여 h(Tn)을 산출하고, 그 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1을 합산한 후 다시 해쉬하여 h(h(Tn)|Rn-1)을 산출하도록 구성될 수 있다. 스큐드 머클 트리에는 h(h(Tn)|Rn-1)가 순차적으로 저장된다.
즉, 스큐드 머클 트리는 링크드 리스트와 이진 머클 트리의 결합이라고 볼 수 있다.
도 3에서 해쉬값 R1은 첫번째 데이터 블록인 T1과 루트 해쉬 초기값 R0를 합쳐서 해쉬한 값이다. 그리고 해쉬값 R2는 두번째 데이터 블록인 T2와 가장 최근의 루트 해쉬값 R1을 해쉬한 값이다. T2에는 링크드 리스트 방식에 의해 가장 최근의 루트 해쉬값 R1이 포함되어 있으므로, T2와 R1을 해쉬하여 R2를 산출할 수 있다. 이와 같은 방식으로 T3 데이터 블록에는 R2를 추가하여 위 과정을 반복하여 스큐드 머클 트리를 확장 생성하도록 구성된다.
한편, 도 1의 노드 진위 증명 모듈(130)은 스큐드 머클 트리 상의 과거의 특정 노드에 대해 그 진위 여부를 검증하도록 구성될 수 있다.
도 4에서 T2가 스큐드 머클 트리에 포함되어 있었는지 여부를 검증하기 위해서는 스큐드 머클 트리의 최신 데이터 블록인 T4로부터 이에 포함된 R4를 취득한다. 그리고 검증을 위해 주어진 T2로부터 그 안에 포함된 R1을 취득한다. 그리고 T2를 해쉬하여 h(T2)를 산출하고 그리고 R1과 h(T2)을 합쳐 해쉬하면 R2를 산출할 수 있다.
여기서, 만약 T3의 해쉬값 h(T3)를 미리 알고 있다면, 동일한 방식으로 R3를 계산할 수 있으며, h(T4)도 미리 알고 있다면, R3를 이용하여 R4를 계산할 수 있다. 이와 같이 계산된 R4가 위에서 취득한 R4와 동일하다면 검증 대상인 T2가 스큐드 머클 트리에 포함되어 있는 노드임을 증명할 수 있다.
즉, T2의 검증은 스큐드 머클 트리에서 h(T3)와 h(T4)만 알고 있다면 가능하게 된다.
이를 일반화하여 적용한다면, 노드 진위 증명 모듈(130)은 스큐드 머클 트리에서 특정 노드의 데이터 블록 Tk를 증명하기 위해 최신의 루트 해쉬값 Rn과 중간 단계의 데이터 블록의 해쉬값 h(Ti)(여기서, k<i<=n)만 미리 알고 있다면 Tk의 진위 증명을 할 수 있다 볼 수 있다.
이때, 중간 단계의 다른 데이터 블록을 미리 알고 있을 필요가 없으며, Tk 이전의 어떠한 데이터 블록이나 해쉬값에 대해서는 몰라도 된다.
스큐드 머클 트리 구조에서는 모든 데이터 블록을 각 노드가 직접 전부 보유하지 않아도 몇 개의 작은 해쉬값만으로도 데이터 진위 검증이 가능하다. 이는 네트워크의 부하 감소에도 많은 기여를 하게 된다.
하지만, 스큐드 머클 트리 역시 단점이 있다. 스큐드 머클 트리의 각 노드는 링크드 리스트 방식에 따라 바로 이전의 서브 트리의 해쉬값만 보유하고 있으므로, 검증 프로세스에서는 도 4에서와 같이 모든 노드에 대해 하나씩 계산하여 연산을 해야 한다. 스큐드 머클 트리는 최근의 데이터에 대한 검증에는 유리하지만, 수년 단위의 수천억 트랜잭션에 대해서는 연산 스텝이 많아져 계산 부하가 늘어나는 단점이 있다. 이를 보완하기 위해 h-스큐드 머클 트리가 이용될 수 있다.
도 1의 h-스큐드 머클 트리 생성 모듈(120)은 도 5에서 보듯이 각 노드가 직전의 루트 해쉬값을 보유하는 것에 더하여 그보다 훨씬 이전의 노드의 루트 해쉬값에 대한 정보를 더 보유하도록 구성된다. 훨씬 이전의 노드의 루트 해쉬값을 과거 트리를 참조하는 링크로서 점프 링크(jump link)라고 정의한다. 즉, 점프 링크는 과거의 루트 해쉬값이다.
도 5에서 보듯이 점프 링크는 지수함수적인 노드 간의 거리를 갖게 되는데, 검증에 걸리는 긴 연산 스텝을 생략하고 곧바로 과거 점프 링크의 데이터 블록에 대해 검증을 하는 것을 가능하게 한다. 즉, 프루프의 크기가 줄어들고 연산 스텝의 횟수도 현저하게 줄어들어 수 년 전의 노드에 대해서도 빠르게 검증할 수 있게 한다.
도 5의 점프 링크를 더 보유하는 h-스큐드 머클 트리의 각 노드값 Rn은 h(h(Tn)|Rn-1|Rn-(베이스^오프셋))으로 정리될 수 있다.
여기서, R n-(베이스^오프셋)는 과거 어느 시점의 노드의 해쉬값인 점프 링크이다.
점프 링크에서 베이스(base)는 소정 간격마다 점프 링크를 할당하기 위해 미리 정해진 점프 링크의 최단 거리이다. 베이스가 3이라면 3개의 노드 간격으로 점프 링크가 할당된다.
그리고 오프셋(offset)은 현재 노드의 위치 n을 베이스로 나눈 값의 나머지 값 즉, n%베이스이다.
그리고 현재 노드의 위치 n으로부터 점프 링크까지의 거리(dist)는 베이스오프셋(baseoffset) 값으로 산출될 수 있다.
도 5에서 베이스가 3이고 오프셋이 1인 점프 링크를 예시하고 있다.
도 5를 참조하면, 점프 링크의 거리는 베이스오프셋 즉, 31로서 3이다.
노드 R4를 살펴보면, R4의 값은 T4의 해쉬값과 바로 전의 해쉬값 R3 그리고 점프 링크 R1을 합산한 후 해쉬하여 얻어질 수 있음을 알 수 있다.
도 6은 베이스가 3이고 오프셋이 2인 점프 링크를 예시하고 있다.
도 6에서는 점프 링크의 거리가 32로서 9가 됨을 알 수 있다.
그런데, 오프셋이 2인 모든 노드에 점프 링크를 할당할 필요는 없다. 도 7과 같이 노드 위치 n에서 오프셋+(베이스오프셋)*k의 노드에만 할당할 수 있다. 여기서, k는 양의 정수이다. 위 노드 외의 노드에는 점프 링크를 할당하지 않을 수 있다.
도 7에서 보듯이 베이스가 1이고 오프셋이 1이면 1+31*k가 되어 R19, R13, R10, R7, R4, R1에 점프 링크가 할당되어 있다. 그리고 베이스가 3이고 오프셋이 2이면 2+32*k가 되어 R20, R11, R2에 점프 링크가 할당되어 있다. 베이스가 3이고 오프셋이 3이면, R57, R30, R3에 점프 링크가 할당될 것이다.
도 8은 도 7의 점프 링크의 할당이 완료된 상태를 나타내고 있다. 점프 링크의 할당은 각 오프셋이 베이스에 이를 때까지 반복 수행됨을 나타낸다.
한편, 블록의 검증은 다음과 같이 수행될 수 있다.
h-스큐드 머클 트리에서 루트 해쉬값 Rx를 갖고 있고 어느 중간 해쉬값에 액세스할 수 있는 상황에서, 데이터 블록 Ty 또는 그 상위 노드 Ry가 h-스큐드 머클 트리에 포함되어 있었는지 여부를 검증하기 위해서는 다음의 절차를 따른다.
1) 최신의 루트 해쉬값으로부터 과거 시점 방향의 적절한 거리(예를 들면, 베이스)만큼의 링크(노드)를 기준으로 Ry와 같거나 미래에 있는 가장 과거의 점프 링크 또는 일반 링크를 검색한다.
2) 검색된 과거의 점프 링크 또는 일반 링크의 해쉬값으로부터 다시 과거 시점 방향의 적절한 거리(예를 들면, 베이스)만큼을 링크(노드)를 기준으로 Ry와 같거나 미래에 있는 가장 과거의 점프 링크 혹은 일반 링크를 검색한다. 이 과정을 Ry에 도달할 때까지 반복한다.
3) Ty를 이용하여 위 검색된 링크의 집합에 대해 차례로 미래 방향으로 향하는 루트 해쉬를 계산한다. 만약 최종 계산 결과가 Rhead와 같다면 검증이 완료되어 h-스큐드 머클트리에 존재함이 증명된다.
도 9는 R59에서 시작하여 T8을 검증하기 위해 R8을 찾는 것을 예시하고 있다.
도 9를 참조하면, Rhead는 R59이며, R59에서 적절한 거리 즉, 베이스 3의 거리만큼의 링크(노드) R58, R57을 값을 참조하고, R57로부터 오프셋 3의 거리 즉 33의 점프 링크 중 R8보다는 미래에 있는 가장 과거의 링크 R30을 검색하여 조회한다.
여기서, 다시 적절한 거리 즉, 베이스 3의 거리만큼의 링크(노드) R29를 조회한다. R29에서 다시 오프셋 2의 거리 즉, 32의 점프 링크 R20과 점프 링크 R20의 점프 링크 R11을 검색하여 조회한다. 점프 링크 R11은 R29를 기준으로 오프셋 2의 점프 링크 중에서 R8보다는 미래에 있는 가장 과거의 링크가 된다.
그리고 R11에서 다시 적절한 거리 내의 링크 R10, R9, R8을 각각 검색하여 최종적으로 R8에 이르고 있다.
그리고 위 검증 대상인 T8을 이용하여 다시 미래 방향으로 루트 해쉬값을 차례대로 산출해 나간다. 최종 산출된 루트 해쉬값이 h-스큐드 머클 트리 상의 R59와 일치한다면, T8이 h-스큐드 머클 트리 상에 존재함이 증명된다.
이 과정에서 R8부터 R9, R10, R11, R20, R29, R30, R57, R58, R59에 이르기까지 총 9번의 연산 스텝이 요구된다. 그러나, 점프 링크를 이용하지 않는 경우에는 R8부터 R59까지 모든 노드를 다 연산해야 하므로 총 51 연산 스텝이 요구된다. 현저하게 연산 스텝이 줄어듬을 알 수 있으며, 원장의 크기가 커지면 상당한 연산량과 연산 시간이 감소될 수 있다.
도 10은 실제 구현 사례로서, 베이스가 10인 h-스큐드 머클 트리를 나타낸다. 점프 링크는 10오프셋이므로, 10, 102, 103으로 점프 링크의 거리가 늘어나며, 거리가 1999인 경우 28 스텝만으로도 도달이 가능하다.
이와 같이, 원장의 증명 가능 프루닝 시스템은 모든 데이터 블록을 직접 보유하지 않아도 해쉬값만으로 데이터의 검증이 완벽하게 가능하므로, 데이터의 저장량을 대폭 줄일 수 있다. 원장도 시간이 흐르면 그 크기가 엄청나게 커지기 때문에 점프 링크를 이용한 검색과 연산이 절실하게 필요하게 된다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (7)

  1. 원장의 증명 가능 프루닝(verifiable pruning) 시스템에 있어서,
    링크드 리스트(linked list) 방식에 따라 상기 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 상기 데이터 블록(data block) Tn에 포함시키고, 상기 루트 해쉬값 Rn-1이 포함된 데이터 블록 Tn을 해쉬하여 h(Tn)을 산출하고, 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1을 합산한 후 해쉬하여 h(h(Tn)|Rn-1)을 산출하고, 산출된 h(h(Tn)|Rn-1)을 이진 머클 트리(binary merkle tree) 구조의 각 노드에 순차적으로 추가하여 스큐드 머클 트리(skewed merkle tree)를 확장 생성하는 스큐드 머클 트리 생성 모듈을 포함하는 원장의 증명 가능 프루닝 시스템.
  2. 제1항에 있어서,
    과거 소정의 데이터 블록 Tk가 상기 스큐드 머클 트리에 포함되어 있는지 검증하기 위해 상기 Tk와 상기 스큐드 머클 트리의 소정 루트 해쉬값 h(Ti)(여기서, k<i<=n)를 이용하여 순차적으로 해쉬값 연산을 수행하여 상기 스큐드 머클 트리의 최신 루트 해쉬값을 산출하고, 산출된 최신 루트 해쉬값이 미리 알고 있는 최신 루트 해쉬값 Rn과 일치하는지 대비하여 상기 블록 Tk의 진위 여부를 검증하는 노드 진위 증명 모듈을 더 포함하는 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
  3. 원장의 증명 가능 프루닝(verifiable pruning) 시스템에 있어서,
    링크드 리스트(linked list) 방식에 따라 상기 이전 서브 트리의 루트 해쉬(root hash)값 Rn-1을 상기 데이터 블록(data block) Tn에 포함시키고, 상기 루트 해쉬값 Rn-1이 포함된 데이터 블록 Tn을 해쉬하여 h(Tn)을 산출하고, 산출된 h(Tn)과 이전 서브 트리의 루트 해쉬값 Rn-1과 점프 링크(jump link) Rn-(베이스^오프셋)을 합산한 후 해쉬하여 h(h(Tn)|Rn-1|Rn-(베이스^오프셋))을 산출하고, 산출된 h(h(Tn)|Rn-1|Rn-(베이스^오프셋))을 이진 머클 트리(binary merkle tree) 구조의 각 노드에 순차적으로 추가하여 h-스큐드 머클 트리(hierarchical-skewed merkle tree)를 확장 생성하는 h-스큐드 머클 트리(hierarchical-skewed merkle tree) 생성 모듈을 포함하고,
    상기 점프 링크 Rn-(베이스^오프셋)은,
    상기 h-스큐드 머클 트리 상의 소정 과거 시점의 노드 상의 루트 해쉬값이며,
    상기 베이스(base)는,
    소정 간격마다 점프 링크를 할당하기 위해 미리 정해진 점프 링크의 최단 거리이고,
    상기 오프셋(offset)은,
    현재 노드의 위치 n%베이스이고,
    상기 점프 링크의 거리(dist)는,
    베이스오프셋(baseoffset) 값으로 산출되도록 구성되는 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
  4. 제3항에 있어서, 상기 h-스큐드 머클 트리 생성 모듈은,
    오프셋+(베이스오프셋)*k의 노드마다 상기 점프 링크를 할당하도록 구성되며,
    상기 k는 양의 정수로 구성되는 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
  5. 제3항에 있어서,
    과거 소정의 데이터 블록 Tk가 상기 h-스큐드 머클 트리에 포함되어 있는지 검증하기 위해 상기 Tk와 상기 h-스큐드 머클 트리의 소정 루트 해쉬값 h(Ti)(여기서, k<i<=n)를 이용하여 순차적으로 해쉬값 연산을 수행하여 상기 h-스큐드 머클 트리의 최신 루트 해쉬값을 산출하고, 산출된 최신 루트 해쉬값이 미리 알고 있는 최신 루트 해쉬값 Rn과 일치하는지 대비하여 상기 블록 Tk의 진위 여부를 검증하는 노드 진위 증명 모듈을 더 포함하도록 구성되는 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
  6. 제5항에 있어서, 상기 노드 진위 증명 모듈은,
    하기의 절차에 따라 상기 h-스큐드 머클 트리에 해쉬값 Ry 또는 데이터 블록 Ty가 존재하는지 여부를 증명하도록 구성되며,
    1) 최신의 루트 해쉬값 Rhead로부터 과거 시점 방향의 소정 거리 내 링크(노드)를 기준으로 Ry의 시점과 같거나 미래에 있는 링크(노드) 중 가장 과거 시점에 존재하는 점프 링크 또는 링크(노드)를 검색하고,
    2) 상기 검색된 가장 과거 시점에 존재하는 점프 링크 또는 링크의 해쉬값으로부터 과거 시점 방향의 소정 거리 내 링크(노드)를 기준으로 Ry의 시점과 같거나 미래에 있는 링크(노드) 중 가장 과거 시점에 존재하는 점프 링크 또는 링크(노드)를 검색하고,
    3) 2) 과정을 상기 Ry에 도달할 때까지 반복하고,
    4) 상기 Ty를 이용하여 상기 2) 및 3)에서 반복하여 검색된 점프 링크 또는 링크(노드)의 집합에 대해 차례로 미래 방향으로 향하는 루트 해쉬를 계산한다.
    5) 최종 산출된 루트 해쉬값이 상기 Rhead와 동일한지 대비하고, 대비 결과 동일하면 상기 해쉬값 Ry 또는 데이터 블록 Ty가 h-스큐드 머클 트리에 존재하는 것으로 증명되는 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
  7. 제6항에 있어서, 상기 소정 거리는,
    베이스인 것을 특징으로 하는 원장의 증명 가능 프루닝 시스템.
PCT/KR2020/009588 2019-08-01 2020-07-21 원장의 증명 가능 프루닝 시스템 WO2021020794A2 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
AU2020323807A AU2020323807B2 (en) 2019-08-01 2020-07-21 Ledger verifiable-pruning system
CN202080053082.XA CN114144775A (zh) 2019-08-01 2020-07-21 总账可验证修剪系统
CA3146179A CA3146179A1 (en) 2019-08-01 2020-07-21 Ledger verifiable-pruning system
US17/627,139 US11949801B2 (en) 2019-08-01 2020-07-21 Ledger verifiable-pruning system
EP20846043.6A EP4009579A4 (en) 2019-08-01 2020-07-21 LEDGER VERIFIABLE PRUNING SYSTEM
JP2022503829A JP7289983B2 (ja) 2019-08-01 2020-07-21 元帳の証明可能プルーニングシステム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190093684A KR102218297B1 (ko) 2019-08-01 2019-08-01 원장의 증명 가능 프루닝 시스템
KR10-2019-0093684 2019-08-01

Publications (2)

Publication Number Publication Date
WO2021020794A2 true WO2021020794A2 (ko) 2021-02-04
WO2021020794A3 WO2021020794A3 (ko) 2021-03-25

Family

ID=74230729

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/009588 WO2021020794A2 (ko) 2019-08-01 2020-07-21 원장의 증명 가능 프루닝 시스템

Country Status (8)

Country Link
US (1) US11949801B2 (ko)
EP (1) EP4009579A4 (ko)
JP (1) JP7289983B2 (ko)
KR (1) KR102218297B1 (ko)
CN (1) CN114144775A (ko)
AU (1) AU2020323807B2 (ko)
CA (1) CA3146179A1 (ko)
WO (1) WO2021020794A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220171770A1 (en) * 2020-11-30 2022-06-02 Capital One Services, Llc Methods, media, and systems for multi-party searches

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008026238A1 (ja) 2006-08-28 2010-01-14 三菱電機株式会社 データ処理システム及びデータ処理方法及びプログラム
US9419804B2 (en) 2011-10-14 2016-08-16 Hitachi, Ltd. Data authenticity assurance method, management computer, and storage medium
US20140245020A1 (en) * 2013-02-22 2014-08-28 Guardtime Ip Holdings Limited Verification System and Method with Extra Security for Lower-Entropy Input Records
KR101786006B1 (ko) 2016-01-29 2017-10-17 한국과학기술원 머클 트리 기반 메모리 무결성 검증 방법 및 장치
US20170236123A1 (en) 2016-02-16 2017-08-17 Blockstack Inc. Decentralized processing of global naming systems
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
JP6980769B2 (ja) * 2016-09-21 2021-12-15 アール−ストール インコーポレイテッド データ処理用の分散型台帳を使用するための方法、装置及びコンピュータプログラム
KR101835520B1 (ko) * 2016-12-29 2018-04-19 주식회사 코인플러그 밸런스 데이터베이스를 관리하여 통합 포인트 서비스를 제공하는 방법 및 이를 이용한 지원 서버
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
WO2019032891A1 (en) 2017-08-09 2019-02-14 Visa International Service Association SYSTEM AND METHOD FOR VERIFYING INTERACTIONS
GB201720946D0 (en) * 2017-12-15 2018-01-31 Nchain Holdings Ltd Computer-implemented system and method
KR101937188B1 (ko) 2018-02-06 2019-04-09 주식회사 코인플러그 블록체인 기반의 머클트리를 이용한 정보 관리 방법, 이를 이용한 서버 및 단말

Also Published As

Publication number Publication date
KR102218297B1 (ko) 2021-02-24
WO2021020794A3 (ko) 2021-03-25
EP4009579A2 (en) 2022-06-08
JP7289983B2 (ja) 2023-06-12
CA3146179A1 (en) 2021-02-04
AU2020323807B2 (en) 2023-08-31
KR20210015199A (ko) 2021-02-10
AU2020323807A1 (en) 2022-02-17
JP2022540959A (ja) 2022-09-20
EP4009579A4 (en) 2023-08-16
CN114144775A (zh) 2022-03-04
US11949801B2 (en) 2024-04-02
US20220278858A1 (en) 2022-09-01

Similar Documents

Publication Publication Date Title
WO2018043865A2 (ko) 블록체인을 기반으로 한 파일 관리/검색 시스템 및 파일 관리/검색 방법
US20170300877A1 (en) System and method for providing shared hash engines architecture for a bitcoin block chain
CN109542979B (zh) 一种区块链系统快速同步及简精数据存储的方式
WO2022108015A1 (ko) 지식 증류 기반 신경망 아키텍처 탐색 방법
CN111008201B (zh) 并行修改和读取状态树的方法和装置
WO2021020794A2 (ko) 원장의 증명 가능 프루닝 시스템
WO2020138532A1 (ko) 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법
CN110309173B (zh) 合约数据的记录方法、装置及区块链节点、存储介质
WO2020158973A1 (ko) 가설 수락 프로토콜-2 방식의 블록체인 합의 시스템 및 방법
CN112800065A (zh) 基于改进区块存储结构的高效数据检索方法
WO2023106710A1 (ko) 시계열 3차원 시각화 데이터 생성 방법 및 장치
US20050163122A1 (en) System and methods for packet filtering
WO2022114368A1 (ko) 뉴로 심볼릭 기반 릴레이션 임베딩을 통한 지식완성 방법 및 장치
CN111209341A (zh) 区块链的数据存储方法、装置、设备及介质
Geng et al. Smart markers in smart contracts: Enabling multiway branching and merging in blockchain for decentralized runtime verification
WO2023149660A1 (ko) 그룹 서명 기반 연합학습 방법 및 시스템, 이를 수행하기 위한 기록 매체
CN108365962B (zh) 一种证书吊销列表查询方法及装置
WO2022177201A1 (ko) 키 백업 정보가 분산 저장된 개인키 관리 및 복구 시스템
RU2790181C1 (ru) Система верифицируемого отсечения реестров
WO2019151629A1 (ko) 다중 블록 체인 구조를 포함하는 블록 체인 시스템 및 그 블록 체인 시스템에서의 블록 체인 형성 방법
WO2022203203A1 (ko) 신뢰할 수 있는 노드를 통한 블록체인 액세스 방법, 이를 저장하는 컴퓨터로 판독 가능한 기록매체 및 그 시스템
WO2023277443A1 (ko) 스마트 콘트랙트 기반의 멀티-체인 기법을 이용한 블록체인 네트워크 및 그 병렬 확장 방법
CN111415235A (zh) 一种区块链技术中分布式记账权生成的方法
WO2022010300A1 (ko) 피어 단말기 및 피어 단말기가 블록 데이터를 처리하는 방법
CN114900319B (zh) 一种区块链交易验证方法和系统

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: 20846043

Country of ref document: EP

Kind code of ref document: A2

ENP Entry into the national phase

Ref document number: 3146179

Country of ref document: CA

ENP Entry into the national phase

Ref document number: 2022503829

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020323807

Country of ref document: AU

Date of ref document: 20200721

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020846043

Country of ref document: EP

Effective date: 20220301