KR102412024B1 - 인코딩된 블록체인 데이터의 인덱싱 및 복구 - Google Patents

인코딩된 블록체인 데이터의 인덱싱 및 복구 Download PDF

Info

Publication number
KR102412024B1
KR102412024B1 KR1020207030759A KR20207030759A KR102412024B1 KR 102412024 B1 KR102412024 B1 KR 102412024B1 KR 1020207030759 A KR1020207030759 A KR 1020207030759A KR 20207030759 A KR20207030759 A KR 20207030759A KR 102412024 B1 KR102412024 B1 KR 102412024B1
Authority
KR
South Korea
Prior art keywords
blockchain
dataset
data
block
node
Prior art date
Application number
KR1020207030759A
Other languages
English (en)
Other versions
KR20210045353A (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 알리페이 (항저우) 인포메이션 테크놀로지 씨오., 엘티디.
Publication of KR20210045353A publication Critical patent/KR20210045353A/ko
Application granted granted Critical
Publication of KR102412024B1 publication Critical patent/KR102412024B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

저장을 위해 블록체인 데이터를 인덱싱하기 위해 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 여기에 개시된다. 해당 방법들 중 하나는, 블록체인의 복수의 블록에 대해 오류 정정 코딩(ECC: Error Correction Coding)을 수행하는 것에 기초하여 복수의 인코딩된 블록을 생성하는 단계; 복수의 인코딩된 블록의 각각의 인코딩된 블록에 대하여, 복수의 블록과 연관된 데이터 저장 방식에 기초하여 인코딩된 블록을 복수의 데이터세트로 분할하는 단계 - 데이터 저장 방식은 복수의 블록체인 노드에의 복수의 데이터세트의 할당을 제공함 - ; 데이터 저장 방식에서 제공되는 할당에 기초하여 복수의 데이터세트 중 적어도 하나를 저장하는 단계; 및 각각의 데이터세트가 저장된 복수의 블록체인 노드의 각각에 복수의 데이터세트의 각각을 인덱싱하는 인덱스를 제공하는 단계를 포함한다.

Description

인코딩된 블록체인 데이터의 인덱싱 및 복구
본 출원은 오류 수정 코딩에 기초하여 인코딩된 블록체인 데이터를 인덱싱 및 복구하는 것에 관한 것이다.
합의 네트워크 및/또는 블록체인 네트워크로도 지칭될 수 있는 분산 원장 시스템(DLS: Distributed Ledger System)은 참여 엔티티가 데이터를 안전하고 불변적으로 저장할 수 있게 한다. DLS는 특정 사용자 사례를 참조하지 않고 통상 블록체인 네트워크라고 지칭된다. 블록체인 네트워크 유형의 예로는 공용 블록체인 네트워크, 비공개 블록체인 네트워크 및 컨소시엄 블록체인 네트워크가 있다. 컨소시엄 블록체인 네트워크는, 합의 과정을 제어하고 액세스 제어층을 포함하는 엔티티의 선택 그룹에 제공된다.
블록체인 기반 프로그램은 분산 컴퓨팅 플랫폼에 의해 실행될 수 있다. 예를 들어, 분산 컴퓨팅 플랫폼에는 스마트 계약(smart contact)을 실행하기 위한 런타임 환경을 제공하는 가상 머신이 포함될 수 있다. 블록체인 컴퓨팅 플랫폼은 트랜잭션 기반 상태 머신으로 볼 수 있다. 플랫폼의 상태 데이터는 월드 상태(world state)로 지칭되는 글로벌 공유 상태(global shared-state)로 어셈블될 수 있다. 월드 상태는 계정 주소와 계정 상태 간의 매핑을 포함한다. 월드 상태는 MPT(Merkle Patricia tree)와 같은 데이터 구조에 저장될 수 있다.
상태 데이터 외에도, 블록체인 네트워크는 블록 데이터 및 인덱스 데이터와 같은 다른 유형의 데이터도 저장할 수 있다. 블록 데이터에는 블록 헤더와 블록 바디가 포함될 수 있다. 블록 헤더는 특정 블록의 아이덴티티 정보를 포함할 수 있고, 블록 바디는 블록과 함께 확인된 트랜잭션을 포함할 수 있다. 트랜잭션이 블록체인에 점점 더 많이 입력됨에 따라, 상태 데이터와 블록 데이터는 매우 큰 규모로 커질 수 있다. 일부 DLS에서, 모든 노드는 블록체인의 전체 사본을 저장하기 때문에 큰 저장 공간을 차지할 수 있다. 이는 모든 블록 데이터와 상태 데이터가 블록체인에 기록된 제 1 트랜잭션으로 되돌아가 저장되기 때문이다. 일부 DLS에서, 일부 공유 노드가 블록체인의 전체 사본을 저장하고 다른 블록체인 노드와 블록체인 데이터를 공유하여 "데이터 불균등(data inequality)"을 일으킬 수 있다. 즉, 데이터가 서로 다른 노드에 불균일하게 분산되어 있을 때, 대부분의 데이터를 저장하는 노드에 결함이 있으면, 데이터 보안의 위험이 높을 수 있다.
따라서, 데이터 균등성과 데이터 처리 효율성을 유지하는 방식으로 이러한 저장을 가능하게 하는 것이 바람직할 것이다. 필요할 때, 원래 데이터를 효율적으로 복구하고 리트리빙(retrieving)할 수 있으면서 계산 자원이나 메모리의 소비를 감소시키는 방식으로 DLS 내의 노드에 데이터를 저장할 수 있게 하는 것이 바람직할 수도 있다.
설명된 요지의 실시예들은 하나 이상의 특징을 단독으로 또는 조합으로 포함할 수 있다.
예를 들어, 저장을 위해 블록체인 데이터를 인덱싱하기 위한 컴퓨터 구현 방법이 제공된다. 이 방법은 블록체인의 복수의 블록에 대해 오류 정정 코딩(ECC: Error Correction Coding)을 수행하는 것에 기초하여 복수의 인코딩된 블록을 생성하는 단계; 복수의 인코딩된 블록의 각각에 대하여, 복수의 블록과 연관된 데이터 저장 방식식(data storage scheme)에 기초하여 인코딩된 블록을 복수의 데이터세트로 분할하는 단계 - 데이터 저장 방식은 복수의 블록체인 노드에의 복수의 데이터세트의 할당을 제공함 - ; 데이터 저장 방식에서 제공되는 할당에 기초하여 복수의 데이터세트 중 적어도 하나의 데이터세트를 저장하는 단계; 및 각각의 데이터세트가 저장된 복수의 블록체인 노드의 각각에, 복수의 데이터세트의 각각을 인덱싱하는 인덱스를 제공하는 단계를 포함한다.
일부 실시예에서, 이들 일반적이고 구체적인 양태는 시스템, 방법 또는 컴퓨터 프로그램, 또는 시스템, 방법 및 컴퓨터 프로그램의 임의의 조합을 사용하여 구현될 수 있다. 전술한 내용 및 이외의 설명되는 실시예들은 각각 선택적으로 이하의 특징들 중 하나 이상을 포함할 수 있다.
다음 특징 중 임의의 것과 결합할 수 있는 제 1 특징은, 인덱스가 데이터세트의 데이터세트 식별자(ID)와 데이터세트가 저장되는 블록체인 노드의 노드 ID 간의 대응관계를 제공하는 것을 특정한다.
이전 또는 다음 특징 중 임의의 것과 결합할 수 있는 제 2 특징은, 인덱스가 데이터 저장 방식이 연관된 복수의 블록에 대응하는 복수의 블록 ID를 제공하는 것을 특정한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 3 특징은: 복수의 데이터세트 중 적어도 하나의 데이터세트 이외의 복수의 데이터세트의 나머지를 해싱하여 복수의 데이터세트의 나머지에 대응하는 해시값을 생성하는 단계; 해당 해시값을 저장하는 단계; 및 하나 이상의 블록을 삭제하는 단계를 더 포함한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 4 특징은: 컴퓨팅 디바이스로부터 블록체인 데이터에 대한 요청을 수신하는 단계; 블록체인 데이터가 하나 이상의 블록에 포함되어 있는지 결정하는 단계; 및 인덱스에 기초하여, 블록체인 네트워크의 나머지 블록체인 노드에 해시값을 전송하여 복수의 데이터세트의 나머지를 리트리빙하는 단계를 더 포함한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 5 특징은: 블록체인 노드의 나머지의 각각으로부터 적어도 하나의 데이터세트를 수신하는 단계; 적어도 하나의 데이터세트를 해싱하여 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값을 생성하는 단계; 및 적어도 하나의 해시값이 블록체인 노드에 저장되는지 여부를 결정하는 단계를 더 포함한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 6 특징은: 적어도 하나의 해시값이 블록체인 노드에 저장되지 않는다는 결정에 응답하여, 적어도 하나의 해시값에 대응하는 적어도 하나의 데이터세트가 발신된 블록체인 노드를 결정하는 단계; 및 블록체인 노드를 결함 노드로 보고하는 단계를 더 포함한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 7 특징은: 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값이 블록체인 노드에 저장된다는 결정에 응답하여, 블록체인 노드에 저장된 복수의 데이터세트 중 적어도 하나의 데이터세트 및 나머지 블록체인 노드의 각각으로부터 수신된 적어도 하나의 데이터세트에 기초하여 하나 이상의 블록을 디코딩하는 단계를 더 포함한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 8 특징은, 하나 이상의 블록이 사전 결정된 시간 동안 생성된 이력 블록(historical block)임을 특정한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 9 특징은, 블록체인 노드의 계산 자원 사용률이 사전 결정된 값 이하이거나 블록체인 노드의 저장 공간 사용량이 사전 결정된 백분율 이상일 때, ECC가 수행되는 것을 특정한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 10 특징은, ECC가 복수의 블록에 중복 비트(redundant bit)를 추가하여 수행되는 이레이저 코딩(erasure coding)임을 특정한다.
이전 또는 다음 특징들 중 임의의 것과 결합할 수 있는 제 11 특징은 복수의 블록이 사전 결정된 시간 동안 블록체인에 추가되는 간할적으로 액세스되는 블록임을 특정한다.
본 명세서에 따른 방법은 여기에 설명된 양태 및 특징의 임의의 조합이 포함될 수 있는 것으로 이해된다. 즉, 본 명세서에 따른 방법은 여기에 구체적으로 설명된 양태 및 특징의 조합으로 한정되지 않으며, 제공된 양태 및 특징의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 실시예의 상세는 첨부 도면 및 이하의 상세한 설명에서 개진된다. 본 명세서의 다른 특징 및 장점은 상세한 설명과 도면 및 특허 청구 범위로부터 명백해질 것이다.
도 1은 본 명세서의 실시예를 실행하기 위해 사용될 수 있는 환경의 예를 나타낸다.
도 2는 본 명세서의 실시예에 따른 아키텍처의 일 예를 나타낸다.
도 3은 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스의 일 예를 나타낸다.
도 4는 본 명세서의 실시예에 따른 데이터 저장 방식의 일 예를 나타낸다.
도 5는 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스의 일 예를 나타낸다.
도 6은 본 명세서의 실시예에 따라, 인코딩된 데이터세트를 인덱싱하는 프로세스의 일 예를 나타낸다.
도 7은 본 명세서의 실시예에 따른 데이터 리트리빙 및 복구를 위한 프로세스의 일 예를 나타낸다.
도 8은 본 명세서의 실시예에 따라 실행될 수 있는 프로세스의 일 예를 나타낸다.
도 9는 본 명세서의 실시예에 따른 장치 모듈의 예를 도시한다.
다양한 도면에서의 유사한 참조 번호와 명칭은 유사한 요소를 나타낸다.
본 명세서는 저장을 위해 블록체인 데이터를 인덱싱하기 위한 기술을 설명한다. 이들 기술은 일반적으로 블록체인의 하나 이상의 블록에서 오류 정정 코딩(ECC: Error Correction Coding)을 실행하여 하나 이상의 인코딩된 블록을 생성하고, 하나 이상의 인코딩된 블록의 각각을 복수의 데이터세트로 분할하며, 하나 이상의 블록에 대한 인덱스를 제공하는 것을 포함하며, 인덱스는 각각의 데이터세트가 저장되는 블록체인 노드에 복수의 데이터세트의 각각을 인덱싱한다.
본 명세서에 설명된 바와 같이, 블록체인 네트워크는 상태 데이터, 블록 데이터 및 인덱스 데이터와 같은 상이한 유형의 데이터를 저장할 수 있다. 블록 데이터에는 블록체인 네트워크의 모든 트랜잭션이 포함되며, 새로운 블록이 블록체인에 지속적으로 추가됨에 따라 대용량의 저장 공간을 차지할 수 있다. 블록체인 노드가 블록 데이터의 전체 사본을 각각 저장하는 것은 비효율적일 수 있으며, 특히, 간헐적으로 액세스되는 블록의 데이터(예컨대, 오래 전에 블록체인에 추가된 블록)의 경우에는 비효율적일 수 있다. 따라서, 본 명세서의 실시예는 스토리지 소비를 줄이기 위해 각 블록체인 노드가 간헐적으로 액세스되는 블록의 일부를 저장하고, 필요할 때, 다른 블록체인 노드로부터 나머지 블록 데이터를 리트리빙하는 것을 제공한다. 그러나, 블록체인 네트워크에 결함 노드나 신뢰할 수 없는 노드가 존재하면, 리트리빙된 데이터를 신뢰할 수 없으며 데이터 손실이 발생할 수 있다.
일부 실시예에서, 블록체인 노드는 간헐적으로 액세스되는 블록을 인코딩하기 위해 이레이저 코딩과 같은 ECC를 수행할 수 있다. 그런 다음 ECC 인코딩된 블록을 복수의 데이터세트로 분할할 수 있다. 복수의 데이터세트는 데이터 저장 방식에 기초하여 저장하기 위해 서로 다른 블록체인 노드에 인덱싱 및 할당될 수 있다. 블록체인 노드에서 스마트 계약을 실행하기 위해 간헐적으로 액세스되는 블록의 데이터가 필요한 경우, 블록체인 노드는 인덱스에 기초하여 다른 블록체인 노드로부터 대응하는 데이터세트를 리트리빙하여, ECC 인코딩된 블록을 형성하고 원래 블록을 복구할 수 있다. ECC 인코딩된 블록을 공유함으로써, 미인증 데이터가 존재하거나 데이터 손실이 발생하더라도, 올바른 블록체인 노드의 백분율이 ECC 코드 비율보다 크거나 같으면, 원래 블록 데이터는 복구될 수 있다.
본 명세서에 설명된 기술은 몇 가지 기술적 효과를 산출한다. 예를 들어, 본원의 실시예는 블록체인 노드의 컴퓨팅 효율성과 데이터 동등성을 유지하면서 블록체인 노드의 저장 자원에 대한 부담을 감소시킨다. 일부 블록은 간헐적으로 액세스되기 때문에(예컨대, 오래된 블록), 블록체인 노드의 저장 자원은 각 블록체인 노드에 ECC 인코딩된 블록(여기서는 인코딩된 블록이라고도 함)의 일부만 저장하고 나머지 데이터를 다른 블록체인 노드와 함께 공유함으로써 보존된다.
일부 실시예에서, ECC 인코딩된 블록은 복수의 데이터세트로 분할될 수 있다. 블록체인 노드는 복수의 데이터세트 중 선택된 부분과 나머지 데이터세트에 대응하는 해시값을 저장할 수 있다. 선택은 블록체인 네트워크의 블록체인 노드가 동의한 데이터 저장 방식에 기초할 수 있다. 복수의 데이터세트 및 해시값은 ECC 인코딩된 블록과 연관된 블록 ID와, 각각의 데이터세트와 해시값이 저장되는 블록체인 노드와 연관된 노드 ID로 인덱싱될 수 있다. 인덱스는 블록체인 네트워크의 블록체인 노드에 공유될 수 있다. 블록체인 노드에서 원래 블록체인 데이터를 복구해야 하는 경우, 블록체인 노드는 인덱스를 참조하여 데이터세트가 저장된 위치를 빠르게 찾고, 데이터세트를 리트리빙하며, 해당 데이터세트에 기초하여 블록체인 데이터가 포함된 원래 블록을 디코딩할 수 있다.
데이터세트를 리트리빙하기 위해, 블록체인 노드는 대응하는 데이터세트를 저장하는 다른 블록체인 노드에 데이터세트의 해시값을 전송할 수 있다. 해시값은 되돌릴 수 없기 때문에, 수신된 데이터세트를 해싱하고 해싱된 값을 로컬로(locally) 저장된 해시값과 비교함으로써, 블록체인 노드는 리트리빙된 데이터세트가 인증되었는지 여부를 검증할 수 있다. 따라서 데이터 보안이 보장되고 결함 노드를 식별할 수 있다.
전술한 바와 같이, 그리고 본 명세서의 실시예에 대한 추가 컨텍스트를 제공하기 위해, 합의 네트워크(예컨대, 피어 투 피어 노드(peer-to-peer nodes)로 구성됨) 및 블록체인 네트워크로 지칭될 수 있는 분산 원장 시스템(DLS: Distributed Ledger System)은 참여 엔티티가 트랜잭션을 안전하게 불변적으로 수행하고 데이터를 저장할 수 있게 한다. 일반적으로 블록체인이라는 용어는 특정 네트워크 및/또는 사용 사례와 연관되어 있지만, 블록체인은 일반적으로 특정 사용 사례와 관계없이 DLS를 지칭하는데 사용된다.
블록체인은 트랜잭션을 변경할 수 없는 방식으로 저장하는 데이터 구조이다. 따라서 블록체인에 기록된 트랜잭션은 믿을 수 있고 신뢰할 수 있다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각 블록은 이전 블록의 암호화 해시를 포함시켜 체인 내의 각 블록의 바로 앞에 있는 이전 블록에 링크된다. 각 블록에는 타임 스탬프, 자체 암호화 해시 및 하나 이상의 트랜잭션도 포함된다. 블록체인 네트워크의 노드에 의해 이미 검증된 트랜잭션은 해시되어 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드(leaf node)에서 데이터가 해시되고, 트리의 각 분기 내의 모든 해시가 분기의 루트에 연결되는 데이터 구조이다. 이 프로세스는 트리 내의 모든 데이터를 대표하는 해시를 저장하는 트리의 전체 루트까지 계속된다. 트리 내에 저장된 트랜잭션으로 간주되는 해시는 트리 구조와 일치하는 지 여부를 판단하여 신속하게 검증할 수 있다.
블록체인은 트랜잭션을 저장하기 위한 (적어도 부분적으로) 분산된 데이터 구조인 반면, 블록체인 네트워크는 브로드캐스트, 트랜잭션 확인 및 유효성 검사 등을 통해 하나 이상의 블록체인을 관리, 업데이트 및 유지 관리하는 컴퓨팅 노드의 네트워크이다. 전술한 바와 같이, 블록체인 네트워크는 공용 블록체인 네트워크, 비공개 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로 제공될 수 있다. 본 명세서의 실시예는 컨소시엄 블록체인 네트워크를 참조하여 여기에서 더 상세히 설명된다. 그러나 본 명세서의 실시예는 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 생각된다.
일반적으로 컨소시엄 블록체인 네트워크는 참여 엔티티들 간에 비공개이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는 각각의 엔티티(예컨대, 금융 기관, 보험 회사)가 운영하는 하나 이상의 합의 노드라고 지칭될 수 있는 승인된 노드 세트에 의해 제어된다. 예를 들어, 10개의 엔티티(예컨대, 금융 기관, 보험 회사)로 구성된 컨소시엄은 컨소시엄 블록체인 네트워크를 운영할 수 있고, 각각의 컨소시엄은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 운영할 수 있다.
일부 예에서, 컨소시엄 블록체인 네트워크 내에서, 글로벌 블록체인은 모든 노드에 걸쳐 복제되는 블록체인으로 제공된다. 즉, 모든 합의 노드는 글로벌 블록체인과 관련하여 완벽한 합의 상태에 있다. 합의(예컨대, 블록체인에의 블록 추가에 대한 합의)를 달성하기 위해, 합의 프로토콜은 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는, 이하에 더 상세하게 설명된 바와 같이, PBFT(Practical Byzantine Fault Tolerance) 합의를 구현할 수 있다.
도 1은 본 명세서의 실시예를 실행하기 위해 사용될 수 있는 환경(100)의 예를 나타내는 도면이다. 일부 예에서, 환경(100)은 엔티티가 컨소시엄 블록체인 네트워크(102)에 참여할 수 있게 한다. 환경(100)은 컴퓨팅 시스템(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 LAN(Local Area Network), WAN(Wide Area Network), 인터넷 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스(예컨대, 컴퓨팅 디바이스) 및 백엔드 시스템(back-end system)을 연결한다. 일부 예에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예에서, 네트워크(110)는 컨소시엄 블록체인 네트워크(102)와의 통신 및 컨소시엄 블록체인 네트워크 내에서의 통신을 가능하게 한다. 일반적으로 네트워크(110)는 하나 이상의 통신 네트워크를 나타낸다. 몇몇 경우에, 컴퓨팅 시스템(106, 108)은 클라우드 컴퓨팅 시스템(도시하지 않음)의 노드일 수 있거나, 또는 컴퓨팅 시스템(106, 108)의 각각은 네트워크에 의해 상호 연결되어 분산 처리 시스템으로서 기능하는 다수의 컴퓨터를 포함하는 별도의 클라우드 컴퓨팅 시스템일 수 있다.
도시된 예에서, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102) 내의 노드로서 참여할 수 있는 임의의 적절한 컴퓨팅 디바이스를 각각 포함할 수 있다. 컴퓨팅 디바이스의 예는 서버, 데스크탑 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트 폰을 포함하지만, 이것으로 한정되는 것은 아니다. 일부 예에서, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호 작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제 1 엔티티(예컨대, 사용자 A)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 1 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제 2 엔티티(예컨대, 사용자 B)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 2 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 도 1의 예에서, 컨소시엄 블록체인 네트워크(102)는 노드의 피어 투 피어 네트워크(peer-to-peer network)로 표현되고, 컴퓨팅 시스템(106, 108)은, 각각, 컨소시엄 블록체인 네트워크(102)에 참여하는 제 1 엔티티 및 제 2 엔티티의 노드를 제공한다.
도 2는 본 명세서의 실시예에 따른 아키텍처(200)의 일 예를 나타낸다. 예시적인 개념적 아키텍처(200)는 참가자 A, 참가자 B 및 참가자 C에 각각 대응하는 참가자 시스템(202, 204, 206)을 포함한다. 각 참가자(예컨대, 사용자, 기업)는 복수의 노드(214)를 포함하는 피어-투-피어 네트워크로서 제공되는 블록체인 네트워크(212)에 참여하며, 이들 중 적어도 일부는 블록체인(216)에 정보를 변경할 수 없게 기록한다. 단일 블록체인(216)이 블록체인 네트워크(212) 내에 개략적으로 도시되어 있지만, 여기에 상세하게 설명된 바와 같이, 블록체인(216)의 복수의 사본이 제공되고, 블록체인 네트워크(212) 전체에 걸쳐 유지된다.
도시된 예에서, 각 참가자 시스템(202, 204, 206)은 각각 참가자 A, 참가자 B 및 참가자 C에 의해 또는 이들을 대신하여 제공되고 블록체인 네트워크 내에서 각각의 노드(214)로서 기능한다. 본 명세서에서 사용되는 바와 같이, 노드는 일반적으로 블록체인 네트워크(212)에 연결된 개별 시스템(예컨대, 컴퓨터, 서버)을 지칭하며, 각 참가자가 블록체인 네트워크에 참여할 수 있게 한다. 도 2의 예에서, 참가자는 각 노드(214)에 대응한다. 그러나, 참가자는 블록체인 네트워크(212) 내에서 복수의 노드(214)를 운영할 수 있고/있거나 복수의 참가자가 노드(214)를 공유할 수 있다는 점이 고려된다. 일부 예에서, 참가자 시스템(202, 204, 206)은 프로토콜(예컨대, HTTPS(Hypertext Transfer Protocol Secure))을 사용하고/사용하거나 원격 프로시저 호출(RPC: Remote Procedure Call)을 사용하여 블록체인 네트워크(212)와 통신하거나 이들을 통해 통신한다.
노드(214)는 블록체인 네트워크(212) 내에서 다양한 참여도(degree of participation)를 가질 수 있다. 예를 들어, 일부 노드(214)는 (예컨대, 블록체인(216)에 블록을 추가하는 채굴 노드로서) 합의 프로세스에 참여할 수 있는 반면, 다른 노드(214)는 합의 프로세스에 참여하지 않는다. 다른 예로서, 일부 노드(214)는 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드(214)는 블록체인(216)의 일부의 사본만을 저장한다. 예를 들어, 데이터 액세스 권한은 각 참가자가 해당 시스템에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참가자 시스템(202, 204, 206)은 블록체인(216)의 완전한 사본(216', 216'', 216''')의 각각을 저장한다.
블록체인(예컨대, 도 2의 블록체인(216))은 블록의 체인으로 구성되며, 각 블록은 데이터를 저장한다. 데이터의 예로는 둘 이상의 참가자 간의 트랜잭션을 나타내는 트랜잭션 데이터가 있다. 본 명세서에서 비제한적인 예로서 트랜잭션이 사용되지만, 임의의 적절한 데이터가 블록체인(예컨대, 문서, 이미지, 비디오, 오디오)에 저장될 수 있는 것으로 고려된다. 트랜잭션의 예로는 가치있는 것(예컨대: 자산, 제품, 서비스, 통화)의 교환이 제한없이 포함될 수 있다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해시된다. 해싱은 트랜잭션 데이터(문자열 데이터로 제공됨)를 고정 길이 해시값(문자열 데이터로도 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시값을 해제하는(unhash) 것은 불가능하다. 해싱은 트랜잭션 데이터를 약간만 변경해도 완전히 다른 해시값이 생성된다. 또한, 전술한 바와 같이, 해시값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이 해시값의 길이는 고정되어 있다. 해싱은 해시 함수를 통해 트랜잭션 데이터를 처리하여 해시값을 생성는 것을 포함한다. 해시 함수의 예는 256비트 해시값을 출력하는 보안 해시 알고리즘(SHA)-256이 있지만, 이것으로 한정되는 것은 아니다.
복수의 트랜잭션의 트랜잭션 데이터는 해시되어 블록에 저장된다. 예를 들어, 2개의 트랜잭션의 해시값이 제공되며, 그들은 또 다른 해시를 제공하기 위해 해싱된다. 블록에 저장되는 모든 트랜잭션에 대해, 단일 해시값이 제공될 때까지 이 프로세스가 반복된다. 이 해시값은 머클 루트 해시(Merkle root hash)라고 지칭되며 블록의 헤더에 저장된다. 임의의 트랜잭션이 변경되면, 그 해시값이 변경되고 결과적으로 머클 루트 해시가 변경된다.
블록은 합의 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 여러 노드는 합의 프로토콜에 참여하고, 블록체인에 블록을 추가하기 위한 작업을 수행한다. 이러한 노드를 합의 노드라고 한다. 위에서 소개된 PBFT는 합의 프로토콜의 비제한적인 예로서 사용된다. 합의 노드는 합의 프로토콜을 실행하여, 트랜잭션을 블록체인에 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세히 설명하면, 합의 노드는 블록 헤더를 생성하고, 블록의 모든 트랜잭션을 해싱하고, 해시값을 쌍으로 결합하여, 블록의 모든 트랜잭션에 대해 단일 해시값이 제공될 때까지, 추가 해시값을 생성한다(머클 루트 해시). 이 해시는 블록 헤더에 추가된다. 합의 노드는, 또한, 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시값을 결정한다. 합의 노드는, 또한, 임시값(nonce value)과 타임 스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 오류(Byzantine fault)(예컨대, 오작동 노드, 악성 노드)를 허용하는 실용적인 비잔틴 상태 머신 복제를 제공한다. 이는 오류가 발생할 것으로 가정하여(예컨대, 독립적인 노드 오류의 존재 및/또는 합의 노드에 의해 전송된 조작 메시지를 가정하여) PBFT에서 달성된다. PBFT에서, 합의 노드는 기본 합의 노드와 백업 합의 노드를 포함하는 시퀀스로 제공된다. 기본 합의 노드는 주기적으로 변경된다. 블록체인 네트워크의 월드 상태(world state)에 대해 블록체인 네트워크 내의 모든 합의 노드가 합의에 도달함으로써 트랜잭션이 블록체인에 추가된다. 이 프로세스에서, 메시지는 합의 노드 간에 전송되며, 각 합의 노드는 특정 피어 노드(peer node)로부터 메시지가 수신되었음을 증명하고, 전송 중에 메시지가 수정되지 않았음을 확인한다.
PBFT에서, 합의 프로토콜은 모든 합의 노드가 동일한 상태에서 시작하여 여러 단계로 제공된다. 시작을 위해, 클라이언트는 (예컨대, 블록체인 네트워크 내에서 트랜잭션을 실행하는) 서비스 동작을 호출하는 요청을 기본 합의 노드로 전송한다. 요청을 수신하는 것에 응답하여, 기본 합의 노드는 요청을 백업 합의 노드로 멀티캐스팅한다. 백업 합의 노드가 요청을 실행하고, 각각은 클라이언트에 응답을 전송한다. 클라이언트는 임계 응답 개수가 수신될 때까지 대기한다. 일부 예에서, 클라이언트는 f+1번째 응답이 수신되기를 기다리고, 여기서, f는 블록체인 네트워크 내에서 허용될 수 있는 결함 합의 노드의 최대 수이다. 최종 결과는 충분한 수의 합의 노드가 블록체인에 추가될 기록의 순서에 대한 합의에 도달하여, 기록이 승인되거나 거부되는 것이다.
일부 블록체인 네트워크에서, 암호화는 트랜잭션의 프라이버시를 유지하기 위해 구현된다. 예를 들어, 블록체인 네트워크 내의 다른 노드가 트랜잭션의 상세를 알 수 없도록, 두 노드가 트랜잭션을 비공개로 유지하고자 하는 경우, 노드는 트랜잭션 데이터를 암호화할 수 있다. 암호화의 예로는 대칭 암호화 및 비대칭 암호화를 들 수 있고, 이것으로 한정되는 것은 아니다. 대칭 암호화는 암호화(평문에서 암호문 생성)와 복호화(암호문에서 평문 생성) 양쪽에 대해 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 복수의 노드에서 동일한 키를 사용할 수 있으므로, 각 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 각각 비공개키와 공개키를 포함하는 키 쌍을 사용하고, 여기서, 비공개키는 각각의 노드에만 알려져 있고, 공개키는 블록체인 네트워크 내의 임의 또는 모든 다른 노드에 알려져 있다. 노드는 다른 노드의 공개키를 사용하여 데이터를 암호화할 수 있고, 암호화된 데이터는 다른 노드의 비공개키를 사용하여 복호화될 수 있다. 예를 들어, 다시 도 2를 참조하면, 참가자 A는 참가자 B의 공개키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에게 전송할 수 있다. 참가자 B는 비공개키를 사용하여 암호화된 데이터(암호문)를 복호화하여 원본 데이터(평문)를 추출할 수 있다. 노드의 공개키로 암호화된 메시지는 노드의 비공개키를 통해서만 복호화될 수 있다.
비대칭 암호화는 트랜잭션의 참가자가 트랜잭션의 다른 참가자를 확인할 수 있는 디지털 서명뿐만 아니라, 트랜잭션의 유효성을 제공하는데 사용된다. 예를 들어, 노드는 메시지에 디지털 서명을 할 수 있고, 다른 노드는 참가자 A의 디지털 서명에 기초하여 노드에 의해 메시지가 전송되었음을 확인할 수 있다. 디지털 서명은 메시지가 전송 중에 변조되지 않도록 하기 위해 사용될 수도 있다. 예를 들어, 다시 도 2를 참조하면, 참가자 A는 참가자 B에게 메시지를 전송하는 것이다. 참가자 A는 메시지의 해시를 생성한 다음, 그것의 비공개키를 사용해 해시를 암호화하여 디지털 서명을 암호화된 해시로서 제공한다. 참가자 A는 메시지에 디지털 서명을 추가하고, 디지털 서명된 메시지를 참가자 B에게 전송한다. 참가자 B는 참가자 A의 공개키를 사용하여 디지털 서명을 복호화하고 해시를 추출한다. 참가자 B는 메시지를 해싱하고 그 해시값을 비교한다. 해시가 동일하면, 참가자 B는 메시지가 실제로 참가자 A로부터 왔으며, 그 메시지가 변조되지 않았음을 확인할 수 있다.
도 3은 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스(300)의 일 예를 나타낸다. 이 예에서는, 블록체인 노드(302, 304, 306, 308)인 4개의 블록체인 노드로 구성된 블록체인 네트워크를 도시한다. 블록체인 노드(302)를 예시로 사용하여 인코딩 및 해싱 프로세스(300)를 설명하면, 블록체인 노드(302)는 블록의 블록 바디에 블록체인 네트워크의 블록 데이터를 저장할 수 있다(312). 도시된 예에서, 블록 데이터는 Block100에 저장된다. 그 후, 블록체인 노드(302)는 다른 블록체인 노드(304, 306, 308)와 합의 프로세스를 진행할 수 있다. 합의 프로세스 동안, 블록체인 노드(302)는 블록체인 상에 대응하는 블록을 생성하기 위해 작업 증명(PoW, proof of work)이나 지분 증명(PoS, proof of stake)과 같은 합의 알고리즘을 수행할 수 있다.
일부 실시예에서, 블록체인 노드(302)는 하나 이상의 간헐적으로 액세스되는 블록을 식별할 수 있다. 실제로, 블록이 생성된 시간이 오래될수록, 스마트 계약 실행과 같은 작업에 해당 블록 데이터가 필요할 가능성이 감소한다. 블록체인 노드(302)는, 사전 결정된 시간 동안 블록체인 상에 생성되어 있던 이력 블록인 경우, 로컬로 저장된 블록이 간헐적으로 액세스되는 것을 결정할 수 있다. 예를 들어, 사전 결정된 시간은 블록이 생성되는 평균 시간의 1배 또는 2배일 수 있다. 일부 예에서, 스마트 계약을 실행하기 위해 사전 결정된 시간 동안 블록 내의 블록 데이터가 리트리빙되지 않을 때, 블록이 간헐적으로 액세스되지 않는 것으로서 결정될 수도 있다.
간헐적으로 액세스되는 블록을 식별한 후, 블록체인 노드(302)는 간헐적으로 액세스되는 블록 각각의 블록 바디 내의 블록 데이터의 ECC(314)를 수행할 수 있다. ECC는 데이터에 중복 비트(redundant bit)(리던던시라고도 함)를 추가하여 신뢰할 수 없는 전송에 대한 데이터 손실이나 오류를 제어하는데 사용할 수 있다. 중복 비트는 다수의 원래 정보 비트의 복잡한 함수(function)일 수 있다. 리던던시는 데이터의 재전송없이 데이터의 오류나 손실을 수정하게 할 수 있다. 원래 정보는 인코딩된 출력에 문자 그대로 표시되거나 표시되지 않을 수 있다. 인코딩된 출력에 수정되지 않은 원래 정보를 포함하는 ECC 코드는 체계적인 ECC 코드라고 하며, 그렇지 않은 것은 비체계적인 ECC 코드라고 한다. ECC로 수정할 수 있는 오류 또는 누락된 비트의 최대 비율은 ECC 코드의 설계에 따라 결정된다. 따라서 서로 다른 오류 수정 코드가 서로 다른 조건에 대해 적합하다. 일반적으로 더 강력한 ECC 코드는 더 많은 리던던시를 유도하여, 인코딩된 정보가 전송될 경우, 코드의 스토리지 소비가 증가하고 통신 효율성이 저하된다.
ECC의 한 예는 이레이저 코딩일 수 있다. 이레이저 코딩을 사용하면, k개 심벌의 메시지는 n개 심벌을 포함하는 코드워드(codeword)로 인코딩될 수 있다(여기서, k와 n은 자연수, k<n). 메시지는 n개 심벌 코드워드의 서브세트로부터 복구될 수 있다. 분수 r=k/n은 이레이저 코드의 코드 비율(code rate)이다.
ECC를 사용하여 각 블록체인 노드는 인코딩된 블록 데이터의 일부를 저장하고, 필요할 때, 다른 블록체인 노드에서 인코딩된 블록 데이터의 나머지 부분을 리트리빙할 수 있다. 일부 실시예에서, ECC는 블록체인 노드(302)의 계산 자원의 사용률이 사전 결정된 값(예컨대, 40%)보다 낮을 때 수행될 수 있다. 이와 같이, 블록체인 노드(302)에 대한 다른 계산 작업과의 간섭을 감소시킬 수 있다. 일부 실시예에서, 블록체인 노드(302)의 저장 공간의 사용률이 사전 결정된 백분율 이상일 때, ECC를 수행할 수 있는 데, ECC 후에 인코딩된 블록 데이터의 일부를 삭제하여 저장 공간을 확보할 수 있다.
또, Block100을 일 예로 사용하여, 블록체인 노드(302)가 Block100을 간헐적으로 액세스되는 블록으로 결정하고 ECC(314)를 수행한다고 가정하면, ECC 인코딩된 데이터는 데이터 저장 방식에 기초하여 복수의 데이터세트로 분할될 수 있다. 데이터 저장 방식은 블록체인 네트워크 내에서 데이터가 저장되는 위치 및/또는 방법을 정의하는 컴퓨터 실행 가능 명령어의 세트로 제공될 수 있다. 일부 예에서, 데이터 저장 방식은 권한 증명(proof of authority)이 있는 신뢰할 수 있는 노드에 의해 제공되고 블록체인 노드에 의해 동의될 수 있다. 일부 예에서, 데이터 저장 방식은 합의를 통해 블록체인 노드에 의해 동의될 수 있다. 일반적으로, 데이터 저장 방식은 블록체인 네트워크 내의 블록체인 노드의 수에 기초하여 인코딩된 데이터를 복수의 데이터세트로 분할하기 위한 하나 이상의 사전 결정된 규칙을 포함할 수 있다. 데이터 저장 방식은 또한 각각의 블록체인 노드에 의해 저장되거나 해싱될 복수의 데이터세트 중 하나 이상의 데이터세트의 할당을 포함할 수 있다. 데이터 균등을 보장하기 위해, 데이터 저장 방식은 블록체인 네트워크의 각 블록체인 노드에 의해 저장될 적어도 하나의 데이터세트의 할당을 포함할 수 있다.
도 3에 도시된 예에서, Block100의 인코딩된 블록 데이터는 4개의 데이터세트(Data1, Data2, Data3, Vdata)로 분할되며, 각각은 블록체인 노드(302, 304, 306, 308) 중 하나에 의해 저장된다. Vdata1은 오류 수정을 위해 ECC의 중복 비트를 나타낼 수 있다. Data1은 데이터 저장 방식에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. Data2, Data3 및 Vdata1은 각각 해시값 Dhash2, Dhash3 및 Vhash1을 생성하기 위해 별도로 해싱되도록 선택된다(316). 본 명세서의 실시예들에 따르면, 블록체인 네트워크에 4개 초과의 노드가 있는 경우, 인코딩된 데이터는 4개 초과의 데이터세트로 분할될 수 있다. 일부 예에서, 각 블록체인 노드는 하나 초과의 데이터세트를 저장할 수 있으며, 다른 노드에 의해 저장되도록 할당된 나머지 데이터세트를 해싱할 수 있다.
이제 도 4를 참조하면, 도 4는 본 명세서의 실시예에 따른 데이터 저장 방식(400)의 일 예를 나타낸다. 앞서 설명한 바와 같이, Data1은 데이터 저장 방식(400)에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. 데이터 저장 방식(400)에 기초하여, 블록체인 노드(304)는 Data2를 저장하고, Data1, Data3 및 Vdata1을 개별적으로 해시하여 해시값 Dhash1, Dhash3 및 Vhash1을 각각 생성한다. 블록체인 노드(306)는 Data3을 저장하고 Data1, Data2 및 Vdata1을 개별적으로 해시하여 해시값 Dhash1, Dhash2 및 Vhash1을 각각 생성한다. 블록체인 노드(308)는 Vdata1을 저장하고 Data1, Data2 및 Data3을 개별적으로 해시하여 해시값 Dhash1, Dhash2 및 Dhash3을 각각 생성한다.
다시 도 3을 참조하면, 해시값이 동일한 블록의 인코딩된 데이터세트에 대응하므로, 블록의 블록 ID로 인덱싱될 수 있다. 예를 들어, 블록체인 노드(302)는 블록 ID100으로 Block100과 연관된 Data1, Dhash1, Dhash2 및 Vhash1을 인덱싱할 수 있다. 이와 같이, 블록체인 노드(302)는 인덱싱된 블록 ID를 사용하여 해시값을 대응하는 블록에 매핑할 수 있다. 데이터세트 및 해시값을 인덱싱하는 더 상세한 예는 도 6의 상세한 설명에 설명된다.
데이터 저장 방식에 따라, 블록체인 노드(302, 304, 306, 308)에 대해 다른 데이터 저장 방식을 구성할 수 있음을 이해해야 한다. 일부 예에서, Block100의 인코딩된 블록 데이터는 4개 초과의 데이터세트로 분할될 수 있다. 데이터 저장 방식에 따라, 블록체인 노드(502, 504, 506, 508)에 대해 다른 데이터 저장 방식을 구성할 수 있음을 이해해야 한다.
Dhash2, Dhash3, Vhash1을 생성하고 저장한 후, 블록체인 노드(302)는 저장 공간을 절약하기 위해 스토리지로부터 Data2, Data3, Vdata1을 삭제할 수 있다. 이와 같이, 각 블록에 대해, 블록체인 노드(302)는 전체 블록 대신 하나의 ECC 인코딩된 데이터세트(즉, Data1) 및 3개의 해시값(즉, Dhash2, Dhash3 및 Vhash1)만을 저장한다. 따라서, 저장 공간을 상당히 줄일 수 있다. Block100과 마찬가지로, 인코딩 및 해싱 프로세스는 블록체인 노드(304, 306, 308)에 의해 저장되는 간헐적으로 액세스되는 다른 블록에 대해서도 수행될 수 있다.
블록체인 노드(302)가 스마트 계약을 실행하기 위해 Block100의 블록 데이터가 필요하다고 결정하면, 데이터 저장 방식에 따라 블록체인 노드(304, 306, 308)로부터 각각 Data2, Data3 및 Vdata1을 리트리빙할 수 있다. 다른 블록체인 노드(304, 306, 308)로부터 데이터세트를 리트리빙하기 위해, 블록체인 노드(302)는 데이터 저장 방식에 따라 리트리빙될 데이터세트에 대응하는 해시값을 전송할 수 있다.
예를 들어, Data2를 리트리빙하기 위해, 블록체인 노드(302)는 Dhash2를 블록체인 노드(304)로 보낼 수 있다. Data2가 블록체인 노드(304)에 저장된 경우, Dhash2 수신에 응답하여 Data2를 블록체인 노드(302)로 반송할 수 있다. 블록체인 노드(304)로부터 Data2를 수신한 후, 블록체인 노드(302)는 수신된 데이터세트를 해싱하고 그 해시값을 Dhash2와 비교할 수 있다. 해시값이 Dhash2와 동일한 경우, 블록체인 노드(302)는 수신된 데이터세트가 인증된 것으로 결정할 수 있다. 그렇지 않으면, 수신된 데이터세트가 인증되지 않은 것으로 결정된다. 수신된 데이터세트가 인증되지 않은 것으로 결정되면, 블록체인 노드(302)는 블록체인 노드(304)를 결함 노드(또는 비잔틴 노드(Byzantine node))로 보고할 수 있다. 블록체인 노드(302)에 의해 수신된 미인증 데이터의 백분율이 ECC에 의해 수정될 수 있는 오류나 누락된 비트의 최대 비율 이하이면, Block100은 로컬로 저장되고 수신된 데이터세트로부터 복구될 수 있다.
전술한 바와 같이, 블록체인 네트워크는 상태 데이터, 블록 데이터 및 인덱스 데이터와 같은 상이한 유형의 데이터를 저장할 수 있다. 상태 데이터는 종종 MPT나 FDMT(Fixed Depth Merkle Tree)와 같이 콘텐츠 지정 상태 트리(content-addressed state tree)로서 저장된다. 콘텐츠 지정 상태 트리는 본질적으로 점증적이다. 즉, 기존 상태 트리의 값만 업데이팅하는 대신 새 트리 구조를 추가하여 계정 상태의 변경 사항을 반영한다. 따라서 콘텐츠 지정 상태 트리는, 블록이 블록체인에 지속적으로 추가될 때, 그 크기가 매우 커질 수 있다. FDMT 저장 방식 하에서, 상태 데이터는 현재 블록과 연관된 현재 상태 데이터와 블록체인의 모든 블록과 연관된 이력 상태 데이터로 분리될 수 있다. FDMT의 대부분의 데이터는 간헐적으로 사용되는 이력 상태 데이터이다. 모든 합의 노드 내의 모든 이력 상태 데이터를 저장하는 것은 저장 자원 사용 측면에서 매우 비효율적일 수 있다.
일부 실시예에서, 블록 데이터를 인코딩 및 공유하는 것과 마찬가지로, 이력 상태 데이터를 인코딩하기 위해 이레이저 코딩과 같은 ECC가 사용될 수 있다. 블록체인 네트워크의 각 합의 노드는 이력 상태 데이터의 일부만 저장하고, 다른 노드에서 나머지 이력 상태 데이터를 리트리빙하여 스토리지 소비를 감소시킨다. 원래 이력 상태 데이터 대신 ECC 인코딩된 이력 상태 데이터를 공유함으로써, 미인증 데이터가 존재하거나 데이터 손실이 발생하더라도, 미인증 데이터의 백분율이나 데이터 손실이 ECC에 의해 수정될 수 있는 오류나 누락된 비트의 최대 비율 이하인 한, 원래 이력 상태 데이터를 복구할 수 있다.
도 5는 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스(500)의 일 예를 나타낸다. 이 예에서는, 블록체인 노드(502, 504, 506, 508)인 4개의 블록체인 노드로 구성된 블록체인 네트워크를 도시한다. 인코딩 및 해싱 프로세스(500)를 설명하기 위한 예로서 블록체인 노드(502)를 사용하면, 블록(512)에 새로운 블록 데이터가 추가될 때, 블록체인 노드(502)는 블록 데이터를 인코딩하기 위해 ECC(514)를 수행할 수 있다. 도 3의 상세한 설명에 설명된 인코딩 및 해싱 프로세스(300)와 비교하여, 블록체인 노드(502)는 블록 데이터가 블록에 기록될 때 블록 데이터에 대해 ECC를 수행한다. 이와 같이, 블록체인 노드(502)는 전체 블록을 저장할 필요가 없지만, 그 대신 데이터 저장 방식에 기초하여 인코딩된 블록 데이터의 나머지에 대응하는 ECC 인코딩된 블록 데이터 및 해시값의 선택된 부분을 저장할 수 있다. 이 인코딩 및 해싱 프로세스(500)는 블록체인 노드(502)의 디스크 공간이 적은 시나리오에 특히 적합할 수 있다.
일부 실시예에서, 블록으로 데이터를 저장하는 대신, 블록체인 노드(502)는 WAL(Write-Ahead Log) 파일이나 다른 유사한 롤 포워드 저널 파일(roll-forward journal file)을 저장할 수 있다. WAL 파일은 커밋(commit)되었지만 블록체인 노드(502)에 의해 아직 저장되지 않은 블록 데이터를 기록할 수 있다. WAL 파일을 사용하면, 원래 블록체인 데이터를 데이터베이스 파일에 보존할 수 있고, 블록체인 데이터의 변경 사항을 별도의 WAL 파일에 기록할 수 있다. 변경 사항이 있는 롤 포워드에 대한 커밋은 원래의 블록체인 데이터에 기록하지 않고도 발생할 수 있다. 이 구성은, 변경 사항이 WAL 파일에 커밋되는 동안, 블록체인 데이터의 지속적인 동작을 가능하게 한다. 인코딩 및 해싱 프로세스(500)를 통해 이루어진 변경 사항을 저장하기 위해 WAL 파일을 사용함으로써, 블록체인 노드(502)는 적절한 경우 백그라운드에서 ECC를 수행하면서 합의를 위한 블록 데이터가 있음을 나타낼 수 있다. 이와 같이, ECC는, 블록체인 노드(302)의 계산 자원 활용률이 낮을 때, 합의 프로세스의 계산 효율성이나 대기 시간에 대한 영향을 감소시키기 위해 수행될 수 있다.
일부 실시예에서, 블록체인 노드(502)는 버퍼에 블록 데이터를 저장할 수 있다. 블록체인 노드(502)는, 데이터의 크기가 사전 결정된 임계값보다 크거나 버퍼가 가득 찬 경우, 버퍼에 저장된 블록 데이터에 대해 ECC를 수행할 수 있다. ECC를 수행한 후, 블록체인 노드(502)는, 이하의 상세한 설명에 설명하는 바와 같이, 인코딩 및 해싱 프로세스(500)를 따라 인코딩된 블록 데이터 및 해시값을 저장할 수 있다.
다시 일 예로 Block100을 사용하면, ECC를 수행한 후, 인코딩된 블록 데이터는 데이터 저장 방식에 기초하여 복수의 데이터세트로 분할될 수 있다. 도 3의 상세한 설명에서 설명한 예와 마찬가지로, Block100의 인코딩된 블록 데이터는 4개의 데이터세트(Data1, Data2, Data3, Vdata)로 분할되며, 각각은 블록체인 노드(502, 504, 506, 508) 중 하나에 의해 저장될 수 있다. Vdata1은 ECC의 중복 비트를 나타낼 수 있다. Data1은 데이터 저장 방식에 따라 블록체인 노드(502)에 의해 저장되도록 선택된다. Data2, Data3 및 Vdata1은 각각 해시값 Dhash2, Dhash3 및 Vhash1을 생성하기 위해 별도로 해싱되도록 선택된다(516).
해시값은 해시값의 대응하는 블록의 블록 ID로 인덱싱될 수 있다. 예를 들어, 블록체인 노드(502)는 블록 ID100으로 Block100과 연관된 Data1, Dhash1, Dhash2 및 Vhash1을 인덱싱할 수 있다. 이와 같이, 블록체인 노드(502)는 인덱싱된 블록 ID를 사용하여 해시값을 대응하는 블록에 매핑할 수 있다. 데이터세트 및 해시값을 인덱싱하는 더 상세한 예는 도 6의 상세한 설명에 설명된다.
데이터 저장 방식에 따라, 하나 이상의 블록체인 노드(502, 504, 506, 508)에 대해 다른 데이터 저장 방식을 구성할 수 있음을 이해해야 한다. 예를 들어, Block100의 인코딩된 블록 데이터는 4개 초과의 데이터세트로 분할될 수 있다. 각각의 블록체인 노드(502, 504, 506, 508)는 하나 초과의 데이터세트를 저장할 수 있고, 다른 노드에 의해 저장된 나머지 데이터세트를 해싱할 수 있다.
Dhash2, Dhash3 및 Vhash1을 생성한 후, 블록체인 노드(502)는 Data1, Dhash2, Dhash3 및 Vhash1을 저장하고, 저장 공간을 절약하기 위해 스토리지로부터 Data2, Data3 및 Vdata1을 삭제할 수 있다. 이와 같이, 블록체인의 각 블록에 대해, 블록체인 노드(502)는 저장 공간을 절약하기 위해 원래 블록 데이터 대신 ECC 인코딩된 블록 데이터 중 하나의 데이터세트(즉, Data1)와 3개의 해시값(즉, Dhash2, Dhash3 및 Vhash1)만을 저장한다. 블록체인 노드(502)가 스마트 계약을 실행하기 위해 Block100의 블록 데이터가 필요하다고 결정하면, 데이터 저장 방식에 따라 블록체인 노드(504, 506, 508)로부터 각각 Data2, Data3 및 Vdata1을 리트리빙할 수 있다.
다른 블록체인 노드(504, 506, 508)로부터 데이터세트를 리트리빙하기 위해, 블록체인 노드(502)는 데이터 저장 방식에 따라 리트리빙될 데이터세트에 대응하는 해시값을 전송할 수 있다. 예를 들어, Data2를 리트리빙하기 위해, 블록체인 노드(502)는 Dhash2를 블록체인 노드(504)로 보낼 수 있다. Data2가 블록체인 노드(504)에 저장된 경우, Dhash2 수신에 응답하여 Data2를 블록체인 노드(502)로 반송할 수 있다. 블록체인 노드(504)로부터 Data2를 수신한 후, 블록체인 노드(502)는 수신된 데이터세트를 해시하고 그 해시값을 Dhash2와 비교할 수 있다. 해시값이 Dhash2와 동일한 경우, 블록체인 노드(502)는 수신된 데이터세트가 인증된 것으로 결정할 수 있다. 그렇지 않으면, 수신된 데이터세트가 인증되지 않은 것으로 결정될 수 있다. 수신된 데이터세트가 인증되지 않은 것으로 결정되면, 블록체인 노드(502)는 블록체인 노드(504)를 결함 노드(또는 비잔틴 노드(Byzantine node))로 보고할 수 있다. 블록체인 노드(502)에 의해 수신된 미인증 데이터의 백분율이 ECC에 의해 수정될 수 있는 오류나 누락된 비트의 최대 비율 이하이면, Block100은 로컬로 저장되고 수신된 데이터세트로부터 복구될 수 있다.
앞서 설명한 바와 같이, 인코딩 및 해싱 프로세스를 수행함으로써, 블록체인 데이터를 복수의 데이터세트로 ECC 인코딩하고 분할할 수 있다. 저장 공간을 절약하기 위해, 각 블록체인 노드는 데이터 저장 방식에 기초하여 복수의 데이터세트의 하나 이상과 나머지 데이터세트의 해시값을 저장할 수 있다. 저장된 데이터세트와 해시값은 블록 ID로 인덱싱되어 블록체인 노드가 원래 데이터를 복구하기 위해 다른 노드에서 데이터세트를 리트리빙할 수 있다.
도 6은 본 명세서의 실시예에 따라, 인코딩된 데이터세트를 인덱싱하기 위한 프로세스(600)의 일 예를 나타낸다. 프로세스(600)는 블록체인 네트워크의 블록체인 노드에 의해 수행될 수 있다. 블록체인 네트워크는 Node1, Node2, Node3 및 Node4로 표시되는 4개의 블록체인 노드를 포함할 수 있다. 도시된 예에서, Block91 내지 Block100은 ECC 인코딩된 데이터세트를 인덱싱하기 위한 프로세스(600)를 설명하기 위해 사용된다. Block91 내지 Block100은, 도 3의 상세한 설명에 설명된 바와 같이, 간헐적으로 액세스되는 블록일 수 있다. 일부 경우에, Block91 내지 Block100은 Block91 내지 Block100에 대응하는 FDMT 구조 하에서 이력 상태 데이터를 나타낼 수도 있다. 그러한 경우에, 인코딩된 이력 상태 데이터로부터 분할된 데이터세트를 인덱싱하기 위해 프로세스(600)가 수행될 수 있다.
일부 실시예에서, 블록체인 노드는 ECC 인코딩된 블록(602)을 생성하기 위해 Block91 내지 Block100의 각각에 대해 ECC(604)를 수행할 수 있다. 그런 다음, 블록체인 노드는 ECC 인코딩된 블록(602)의 각각을 Data1, Data2, Data3 및 Vdata1의 4개의 데이터세트(608)로 분할할 수 있으며, 여기서, Vdata1은 오류 정정을 위한 중복 비트에 대응한다. ECC 인코딩된 블록(602) 각각의 분할은, 도 3 및 도 4의 상세한 설명에서 설명한 바와 같이, 데이터 저장 방식에 기초하여 수행될 수 있다. 데이터 저장 방식은 ECC 인코딩된 블록(602)을 데이터세트로 분할하는 방법을 제공할 수 있다. 데이터 저장 방식은 블록체인 노드에의 데이터세트의 할당을 제공할 수도 있다.
데이터세트(608)가 Block91 내지 Block100의 각각에 대해 생성된 후, 블록체인 노드는 인덱스 테이블(610)을 생성함으로써 데이터세트(608)의 인덱싱(606)을 수행할 수 있다. 인덱스 테이블(610)은 블록체인 네트워크의 블록체인 노드가 동의한 데이터 저장 방식에 기초하여 생성될 수 있다.
인덱스 테이블은 데이터 저장 방식에 따른 블록의 블록 ID와 블록체인 노드의 각각에 의해 저장될 데이터세트(들)를 포함할 수 있다. 예를 들어, 인덱스 테이블(610)은 Block91 내지 Block100의 데이터 저장 방식을 나타낼 수 있다. ECC 인코딩된 데이터는 Data1, Data2, Data3 및 Vdata1을 포함하는 4개의 데이터세트로 분할된다. Block91 내지 Block100의 각각에 대해, Node1은 Data1을 저장하고, Node2는 Data2를 저장하고, Node3은 Data3을 저장하며, Node4는 Vdata1을 저장한다. 따라서, 전체 블록을 저장하는 대신 각 블록체인 노드는 인덱스 테이블(610)에 따라 각각의 인코딩된 블록의 데이터세트를 하나만 저장한다.
도 7은 본 명세서의 실시예에 따른 데이터 리트리빙 및 복구를 위한 프로세스(700)의 일 예를 나타낸다. 클라이언트 디바이스(710)가 스마트 계약을 실행하기 위해 블록 데이터나 상태 데이터를 가져와야 하는 경우, 블록 데이터나 상태 데이터를 블록체인으로부터 가져오기 위해 블록체인 노드(예컨대, Node1(720a))에 요청을 보낼 수 있다. 요청을 수신하면, Node1은 요청된 데이터를 포함하는 하나 이상의 블록을 식별할 수 있다. 요청된 데이터가 Block100에 포함되어 있다고 가정하면, Node1(720a)은 Block91 내지 Block100에 대한 데이터 저장 방식을 나타내는 인덱스 테이블(714)을 판독할 수 있다. 인덱스 테이블(714)에 따르면, Node1은 Data1과 Vhash1을 저장한다. Node2(720b)는 Data2를 저장하고, Node3(720c)은 Data3을 저장하며, Node4(720d)는 Vdata1을 저장한다. 그런 다음, 전체 ECC 인코딩된 Block100을 수집하기 위해, Node1은 Node2(720b)로부터 Data2를, Node3(720c)로부터 Data3을, 그리고 Node4(720d)로부터 Vdata1을 얻을 수 있다. Data2, Data3 및 Vdata1을 얻기 위해, Node1(720a)은 데이터세트의 해시값을 포함하는 요청을 대응하는 블록체인 노드로 보낼 수 있다. 예를 들어, Node1(720a)로부터 Data2의 해시값을 수신함으로써, Node2(720b)는 Data2가 요청되었다고 결정하고 이를 Node1(720a)로 반환할 수 있다.
Node2(720b), Node3(720c) 및 Node4(720d)로부터 데이터세트를 수신한 후, Node1(720a)은 수신된 데이터세트의 해시값을 생성하여 수신된 데이터세트를 검증하고 이를 해시 테이블(716)에 저장된 해시값과 비교할 수 있다. 해시 테이블(716)은 데이터세트와 그들의 해시값, 즉, Data2와 그의 해시값 Dhash2, Data3과 그의 해시값 Dhash3, 및 Vdata1과 그의 해시값 Vhash1 간의 매핑 관계를 나타낸다. Node2(720b)로부터 수신된 데이터세트의 해시값이 Dhash2와 매칭되고, Node3(720c)로부터 수신된 데이터세트의 해시값이 Dhash3과 매칭되며, Node4로부터 수신된 데이터세트의 해시값이 Vhash1과 매칭되면, Node1(720a)은 수신된 데이터가 인증된 것으로 결정할 수 있다. Node1(720a)은 수신된 데이터(즉, Data2, Data3 및 Vdata1)를 Data1과 결합할 수 있고, ECC 인코딩된 Block100을 형성하기 위해 이것을 저장한다. 그러면, Node1(720a)은 Block100을 복구하기 위해 ECC 인코딩된 블록을 디코딩할 수 있다. 해시값 중 어느 하나라도 매칭되지 않으면, Node1(720a)은 데이터세트를 보내는 대응 블록체인 노드가 결함 노드라고 보고할 수 있다. Block100이 복구된 후, Node1(720a)은 Block100의 요청 블록이나 상태 데이터를 클라이언트 디바이스(710)로 반환할 수 있다.
도 8은 블록체인 데이터를 통신하고 공유하기 위한 프로세스(800)의 예의 흐름도이다. 편의상, 프로세스(800)는 블록체인 노드에 의해 수행되는 것으로 설명될 것이다. 블록체인 노드는 하나 이상의 위치에 위치하고 본 명세서에 따라 적절하게 프로그래밍된 컴퓨터나 하나 이상의 컴퓨터 시스템일 수 있다. 예를 들어, 적절하게 프로그래밍된 컴퓨팅 시스템(예컨대, 도 1의 컴퓨팅 시스템(106, 108)) 내의 컴퓨팅 디바이스는 프로세스(800)를 수행하는 블록체인 노드일 수 있다.
단계 802에서, 블록체인 노드는 블록체인의 복수 블록에 대해 ECC를 수행하는 것에 기초하여 복수의 인코딩된 블록을 생성한다. 일부 예에서, 하나 이상의 블록은 사전 결정된 시간 동안 블록체인에 추가된 간헐적으로 액세스되는 블록이다. 일부 예에서, 블록체인 노드의 계산 자원 사용률이 사전 결정된 값 이하이거나 블록체인 노드의 저장 공간 사용량이 사전 결정된 백분율 이상일 때, ECC가 수행된다. 일부 예에서, ECC는 하나 이상의 블록에 중복 비트를 추가함으로써 수행된다. 일부 예에서, ECC는 이레이저 코딩이다.
단계 804에서, 복수의 인코딩된 블록 중 인코딩된 블록의 각각에 대해, 블록체인 노드는 복수 블록과 연관된 데이터 저장 방식에 기초하여 인코딩된 블록을 복수의 데이터세트로 분할하고, 여기서, 데이터 저장 방식은 복수의 블록체인 노드에의 복수의 데이터세트의 할당을 제공한다.
단계 806에서, 블록체인 노드는 데이터 저장 방식에서 제공되는 할당에 기초하여 복수의 데이터세트 중 적어도 하나의 데이터세트를 저장한다.
단계 808에서, 블록체인 노드는 각각의 데이터세트가 저장되는 복수의 블록체인 노드 각각에 대해 복수의 데이터세트의 각각을 인덱싱하는 인덱스를 제공한다. 일부 예에서, 인덱스는 데이터세트의 데이터세트 ID와 데이터세트가 저장된 블록체인 노드의 노드 ID 간의 대응관계를 제공한다. 일부 예에서, 인덱스는 데이터 저장 방식이 연관된 복수의 블록에 대응하는 복수의 블록 ID를 제공한다.
일부 예에서, 프로세스(800)는: 복수의 데이터세트 중 적어도 하나의 데이터세트를 제외한 나머지의 복수의 데이터세트를 해싱하여 복수의 데이터세트의 나머지에 대응하는 해시값을 생성하는 단계; 해당 해시값을 저장하는 단계; 및 하나 이상의 블록을 삭제하는 단계를 더 포함한다.
일부 예에서, 프로세스(800)는: 컴퓨팅 디바이스로부터 블록체인 데이터에 대한 요청을 수신하는 단계; 블록체인 데이터가 하나 이상의 블록에 포함되어 있는지 결정하는 단계; 및 인덱스에 기초하여, 블록체인 네트워크의 나머지 블록체인 노드에 해시값을 전송하여 복수의 데이터세트의 나머지를 리트리빙하는 단계를 더 포함한다.
일부 예에서, 프로세스(800)는: 나머지 블록체인 노드의 각각으로부터 적어도 하나의 데이터세트를 수신하는 단계; 적어도 하나의 데이터세트를 해싱하여 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값을 생성하는 단계; 및 적어도 하나의 해시값이 블록체인 노드에 저장되는지 여부를 결정하는 단계를 더 포함한다.
일부 예에서, 프로세스(800)는: 적어도 하나의 해시값이 블록체인 노드에 저장되지 않는다는 결정에 응답하여, 적어도 하나의 해시값에 대응하는 적어도 하나의 데이터세트가 발신된 블록체인 노드를 결정하는 단계; 및 블록체인 노드를 결함 노드로 보고하는 단계를 더 포함한다.
일부 예에서, 프로세스(800)는: 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값이 블록체인 노드에 저장된다는 결정에 응답하여, 블록체인 노드에 저장된 복수의 데이터세트 중 적어도 하나의 데이터세트 및 나머지 블록체인 노드의 각각으로부터 수신된 적어도 하나의 데이터세트에 기초하여 하나 이상의 블록을 디코딩하는 단계를 더 포함한다.
도 9는 본 명세서의 실시예에 따른 장치(900)의 모듈의 일 예를 나타내는 도면이다.
장치(900)는 블록체인 데이터를 통신하고 공유하도록 구성된 블록체인 노드의 실시예의 일 예일 수 있다. 장치(900)는 위에서 설명된 실시예들에 대응할 수 있고, 장치(900)는: 블록체인의 하나 이상의 블록에 대해 ECC를 실행함으로써 하나 이상의 인코딩된 블록을 생성하는 생성 모듈(902); 인코딩된 블록을 복수의 블록과 연관된 데이터 저장 방식에 기초하여 복수의 데이터세트로 분할하는 분할 모듈(904) - 데이터 저장 방식은 복수의 블록체인 노드에의 복수의 데이터세트의 할당을 제공함 - ; 데이터 저장 방식에서 제공되는 할당에 기초하여 복수의 데이터세트 중 적어도 하나의 데이터세트를 저장하는 저장 모듈(906); 및 하나 이상의 블록에 대한 인덱스를 제공하는 인덱싱 모듈(908) - 인덱스는 각각의 데이터세트가 저장된 블록체인 노드에 복수의 데이터세트의 각각을 인덱싱함 - 을 포함한다.
선택적 실시예에서, 인덱스는 데이터세트의 데이터세트 ID와 데이터세트가 저장된 블록체인 노드의 노드 ID 간의 대응관계를 제공한다.
선택적 실시예에서, 인덱스는 데이터 저장 방식이 연관된 복수의 블록에 대응하는 복수의 블록 ID를 제공한다.
선택적 실시예에서, 장치(900)는: 복수의 데이터세트 중 적어도 하나의 데이터세트를 제외한 나머지의 복수의 데이터세트를 해싱하여 복수의 데이터세트의 나머지에 대응하는 해시값을 생성하는 것; 해당 해시값을 저장하는 것; 및 하나 이상의 블록을 삭제하는 것을 더 포함한다.
선택적 실시예에서, 장치(900)는: 컴퓨팅 디바이스로부터 블록체인 데이터에 대한 요청을 수신하는 것; 블록체인 데이터가 하나 이상의 블록에 포함되어 있는지 결정하는 것; 및 인덱스에 기초하여, 블록체인 네트워크의 나머지 블록체인 노드에 해시값을 전송하여 복수의 데이터세트의 나머지를 리트리빙하는 것을 더 포함한다.
선택적 실시예에서, 장치(900)는: 나머지 블록체인 노드의 각각으로부터 적어도 하나의 데이터세트를 수신하는 것; 적어도 하나의 데이터세트를 해싱하여 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값을 생성하는 것; 및 적어도 하나의 해시값이 블록체인 노드에 저장되는지 여부를 결정하는 것을 더 포함한다.
선택적 실시예에서, 장치(900)는: 적어도 하나의 해시값이 블록체인 노드에 저장되지 않는다는 결정에 응답하여, 적어도 하나의 해시값에 대응하는 적어도 하나의 데이터세트가 발신된 블록체인 노드를 결정하는 것; 및 블록체인 노드를 결함 노드로 보고하는 것을 더 포함한다.
선택적 실시예에서, 장치(900)는: 블록체인 노드의 나머지의 각각에 대응하는 적어도 하나의 해시값이 블록체인 노드에 저장된다는 결정에 응답하여, 블록체인 노드에 저장된 복수의 데이터세트 중 적어도 하나의 데이터세트 및 나머지 블록체인 노드의 각각으로부터 수신된 적어도 하나의 데이터세트에 기초하여 하나 이상의 블록을 디코딩하는 것을 더 포함한다.
선택적 실시예에서, 하나 이상의 블록은 사전 결정된 시간 동안 생성된 이력 블록이다.
선택적 실시예에서, 블록체인 노드의 계산 자원 사용률이 사전 결정된 값 이하이거나 블록체인 노드의 저장 공간 사용량이 사전 결정된 백분율 이상일 때, ECC가 수행된다.
선택적 실시예에서, ECC는 중복 비트를 복수의 블록에 추가함으로써 이레이저 코딩이 수행된다.
선택적 실시예에서, 복수의 블록은 사전 결정된 시간 동안 블록체인에 추가되는 간헐적으로 액세스되는 블록이다.
이전 실시예들에서 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시예의 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 휴대폰, 카메라 폰, 스마트 폰, PDA(Personal Digital Assistant), 미디어 플레이어, 내비게이션 디바이스, 이메일 송수신 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이들 디바이스의 조합일 수 있다.
장치에서 각 모듈의 기능 및 역할의 실시 프로세스에 대해, 이전 방법에서의 대응하는 단계의 실시 프로세스가 참조될 수 있다. 간략화를 위해 여기에서는 상세한 설명을 생략한다.
장치 실시예는 기본적으로 방법 실시예에 대응하기 때문에, 관련 부분에 대해서는 방법 실시예의 관련 설명을 참조할 수 있다. 이전에 설명된 장치의 실시예는 단지 일 예일 뿐이다. 별개의 부분으로 기술된 모듈들은 물리적으로 분리될 수도 있거나 그렇지 않을 수도 있고, 모듈로서 디스플레이된 부분들은 물리적 모듈일 수도 있거나 그렇지 않을 수도 있으며, 한 위치에 위치할 수 있거나 또는 다수의 네트워크 모듈 상에 분포될 수도 있다. 모듈의 일부 또는 전부는 본 명세서의 솔루션의 목적을 달성하기 위한 실제 요구에 기초하여 선택될 수 있다. 당업자라면 창조적 노력없이 본 출원의 실시예를 이해하고 구현할 수 있다.
다시 도 9를 참조하면, 내부 기능 모듈과 블록체인 노드의 구조를 설명하는 것으로 해석될 수 있다. 본질적으로 작동체는 전자 디바이스일 수 있으며, 전자 디바이스는: 하나 이상의 프로세서; 및 하나 이상의 프로세서가 실행 가능한 명령어를 저장하도록 구성된 하나 이상의 컴퓨터 판독 가능 메모리를 포함한다. 일부 실시예에서, 하나 이상의 컴퓨터 판독 가능 메모리는, 본 명세서에서 설명된 바와 같이, 하나 이상의 프로세서에 결합되고, 알고리즘, 방법, 기능, 프로세스, 플로우 및 절차를 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 프로그램 명령어가 저장된다. 본 명세서는 또한 하나 이상의 프로세서에 결합되어, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 여기에 제공된 방법의 실시예에 따라 작동을 수행하게 하는 명령어를 저장하는 하나 이상의 비일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 명세서는 여기에 제공된 방법을 구현하기 위한 시스템을 추가로 제공한다. 시스템은 하나 이상의 프로세서와, 하나 이상의 프로세서에 결합되어 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 여기에 제공된 방법의 실시예에 따라 작동을 수행하게 하는 명령어를 저장하는 컴퓨터 판독 가능 저장 매체를 포함한다.
본 명세서에서 설명된 요지, 동작 및 작동의 실시예들은 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함하는, 디지털 전자 회로로, 유형적으로(tangibly) 실시되는 컴퓨터 소프트웨어 혹은 펌웨어로, 컴퓨터로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 요지의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의한 실행을 위해 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어 상에 인코딩된 컴퓨터 프로그램 명령어들 중 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 인코딩되거나 거기에 저장된 명령어를 갖는 하나 이상의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 광자기 또는 광 디스크, 솔리드 스테이트 드라이브, RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 유형의 매체와 같은 유형의 비일시적 컴퓨터 판독 가능 매체일 수 있다. 대안적으로 또는 부가적으로, 캐리어는 인위적으로 생성된 전파형(propagated) 신호, 예컨대, 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 머신-생성형 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 디바이스, 또는 그들의 하나 이상의 조합이거나, 그 일부일 수 있다. 컴퓨터 저장 매체는 전파된 신호가 없다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트 또는 코드로도 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 해석된 언어, 또는 선언적이거나 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 독립형 프로그램 또는 컴퓨팅 환경에서 실행하기에 적합한 모듈, 구성 요소, 엔진, 서브 루틴 또는 다른 유닛을 포함하는 임의 형태로 전개될 수 있으며, 이러한 환경은 하나 이상의 위치에서 데이터 통신 네트워크로 상호 연결된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템에서의 파일에 대응할 수 있지만, 반드시 필수적인 것은 아니다. 컴퓨터 프로그램은 다른 프로그램들이나 데이터, 예컨대, 마크업(markup) 언어 문서에 저장된 하나 이상의 스크립트를 유지하는 파일의 일부에, 문제의 프로그램에 전용되는 단일 파일에, 또는 다수의 조정형(coordinated) 파일들, 예컨대, 하나 이상의 모듈, 서브 프로그램 또는 코드의 일부를 저장한 파일들에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서는, 예를 들어, 범용 마이크로프로세서 및 특수 목적용 마이크로프로세서 및 임의 종류의 디지털 컴퓨터의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 결합된 비일시적 컴퓨터 판독 가능 매체로부터의 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어를 수신할 것이다.
용어 "데이터 처리 장치"는, 예를 들어, 프로그램 가능 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 머신을 포함한다. 데이터 처리 장치는 특수 목적용 논리 회로, 예컨대, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 또는 GPU(Graphics Processing Unit)를 포함할 수 있다. 장치는 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 그들의 하나 이상의 조합을 구성하는 코드를 하드웨어에 추가적으로 포함할 수도 있다.
설명된 처리 및 로직 흐름은 입력 데이터를 동작시키고 출력을 생성함으로써 동작을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 처리 및 로직 흐름은, 또한, 특수 목적용 논리 회로, 예컨대, FPGA, ASIC 또는 GPU, 또는 특수 목적용 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램 실행에 적합한 컴퓨터는 일반 또는 특수 목적용 마이크로프로세서나 양쪽 모두 또는 임의의 다른 유형의 CPU(Central Processing Unit)에 기초할 수 있다. 일반적으로, CPU는 ROM이나 RAM 또는 양쪽 모두로부터 명령어 및 데이터를 수신할 것이다. 컴퓨터의 요소는, 명령어를 실행하기 위한 CPU와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. CPU 및 메모리는 특수 목적용 논리 회로에 의해 보완되거나 거기에 통합될 수 있다.
일반적으로, 컴퓨터는, 또한, 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 하나 이상의 저장 디바이스로 데이터를 전송하도록 포함되거나 또는 동작적으로 연결될 것이다. 저장 디바이스는, 예를 들어, 자기, 광자기 또는 광 디스크, 솔리드 스테이트 드라이브, 또는 임의의 다른 유형의 비일시적 컴퓨터 판독 가능 매체일 수 있다. 하지만, 컴퓨터는 이러한 디바이스들을 가질 필요는 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 연결될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 필수 구성 요소인 하나 이상의 로컬 메모리를 포함할 수 있거나, 클라우드 네트워크 내에 있는 하나 이상의 원격 메모리에 연결될 수 있다. 게다가, 컴퓨터는 다른 디바이스, 몇 가지만 언급하면, 예컨대, 모바일 전화, PDA(Personal Digital Assistant), 모바일 오디오나 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 USB(Universal Serial Bus) 플래시 드라이브와 같은 휴대용 저장 디바이스 내에 내장될 수 있다.
구성 요소는 직접 또는 하나 이상의 중간 구성 요소를 통해, 전기적으로 또는 광학적으로 서로 연결되는 것과 같이 상호적으로(commutatively) 서로 "연결"될 수 있다. 구성 요소 중 하나가 다른 구성 요소에 통합되어 있으면, 구성 요소를 서로 "연결"할 수도 있다. 예를 들어, 프로세서(예컨대, L2 캐시 구성 요소)에 통합된 저장 구성 요소는 프로세서에 "연결"된다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 요지의 실시예는 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예컨대, LCD 모니터와, 사용자가 컴퓨터에 입력할 수 있는 입력 디바이스, 예컨대, 키보드와, 포인팅 디바이스(예컨대, 마우스, 트랙볼 또는 터치 패드)를 구비하는 컴퓨터에 구현하거나, 그 컴퓨터와 통신하도록 구성할 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백, 예컨대, 시각 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 문서들을 사용자에 의해 사용되는 디바이스와 송수신을 행함으로써, 예컨대, 웹 브라우저로부터 수신된 요청들에 응답하여 사용자 디바이스 상의 웹 브라우저에 웹 페이지들을 전송하거나, 스마트폰이나 전자 태블릿과 같은 사용자 디바이스에서 실행되는 앱과 상호 작용함으로써, 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스, 예컨대, 메시징 애플리케이션을 실행하고 있는 스마트 폰에 보내고, 그에 대한 응답 메시지를 사용자로부터 수신함으로써 사용자와 상호 작용할 수 있다.
본 명세서는 시스템, 장치 및 컴퓨터 프로그램 구성 요소와 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터가 특정 작업이나 동작을 수행하도록 구성된 시스템에 대해서는, 그 시스템이 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합을 설치하여 시스템이 작업 또는 동작을 수행하도록 하는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 작업이나 동작을 수행하도록 구성되는 경우, 하나 이상의 프로그램이 데이터 처리 장치에 의해 실행될 때, 장치가 작업이나 동작을 수행하게 하는 명령어를 포함하고 있음을 의미한다. 특수 목적용 논리 회로가 특정 작업이나 동작을 수행하도록 구성되는 경우, 회로가 작업이나 동작을 수행하는 전자적인 로직을 갖는 것을 의미한다.
본 명세서는 많은 특정 실시예의 상세를 포함할 수 있지만, 이들은 청구범위 자체에 의해 정의되는 청구 대상의 범주에 대한 제한으로 해석되지 않고, 오히려 특정 실시예로 특정될 수 있는 특징에 대한 설명으로 해석되어야 한다. 별개의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 반대로, 단일 실시예와 관련하여 설명된 다양한 특징은 다수의 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 실현될 수도 있다. 더욱이, 위에서 특정 조합에 작용하는 특징으로 설명될 수 있고, 심지어 최초에 그렇게 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은, 일부 예에서는, 조합으로부터 제외될 수 있으며, 청구 범위는 하위 조합이나 하위 조합의 변형으로 유도될 수 있다.
유사하게, 작업은 도면에 도시되고 특정 순서로 청구 범위에 인용되고 있지만, 이는, 바람직한 결과를 달성하기 위해, 이러한 작업이 도시된 특정 순서로 또는 순차적 수순으로 수행되거나 도시된 모든 작업이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 전술한 실시예에서 다양한 시스템 모듈 및 구성 요소의 분리는 모든 실시예에서 그러한 분리를 필요로 하는 것으로 이해되지는 않아야 하고, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 또는 다수의 소프트웨어 제품으로 패키징될 수 있음이 이해되어야 한다.
요지의 특정 실시예가 설명되었다. 다른 실시예는 다음의 청구범위의 범주 내에 있다. 예를 들어, 청구범위에서 언급되는 동작은 다른 순서로 수행될 수 있고 여전히 바람직한 결과를 달성할 수 있다. 일 예로서, 첨부 도면에 도시된 처리는 바람직한 결과를 달성하기 위해 도시된 특정 순서나 순차적 순서를 반드시 요구할 필요는 없다. 일부 예에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (14)

  1. 저장을 위해 블록체인 데이터를 인덱싱하기 위한 컴퓨터 구현 방법으로서,
    블록체인의 제1 블록체인 노드에 의해, 상기 블록체인의 블록에 대해 ECC(error correction coding)를 실행하여 인코딩된 블록을 생성하는 단계;
    상기 인코딩된 블록을 복수의 데이터세트로 분할하는 단계;
    상기 제1 블록체인 노드에서, 상기 복수의 데이터세트 중 제1 데이터세트를 저장하는 단계 - 상기 복수의 데이터세트 중 하나 이상의 다른 데이터세트는 상기 제1 블록체인 노드에 저장되지 않음 - ;
    상기 인코딩된 블록에 대한 인덱스를 저장하는 단계 - 상기 인덱스는 상기 복수의 데이터세트 중의 각 데이터세트와 그 데이터세트가 저장되는 각각의 블록체인 노드 간의 대응관계를 저장함 - ;
    상기 제1 블록체인 노드에서, 또 다른 컴퓨팅 디바이스로부터, 블록체인 데이터에 대한 요청을 수신하는 단계;
    상기 블록체인의 상기 블록에 상기 블록체인 데이터가 포함되어 있음을 결정하는 단계;
    상기 인덱스에 기초하여, 제2 데이터세트가 저장되어 있는 제2 블록체인 노드를 식별하는 단계 - 상기 제2 데이터세트는 상기 하나 이상의 다른 데이터세트 중 하나임 - ;
    상기 제2 데이터세트에 대한 요청을 상기 제2 블록체인 노드에 전송하는 단계; 및
    상기 제1 블록체인 노드에서, 상기 제2 블록체인 노드로부터 상기 제2 데이터세트를 수신하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 인덱스는, 상기 복수의 데이터세트 중의 각 데이터세트의 데이터세트 식별자(ID)와 상기 각 데이터세트가 저장되는 각각의 블록체인 노드 간의 대응관계를 제공하는, 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 인덱스는, 상기 인코딩된 블록에 대응하는 블록 ID를 식별하는, 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 하나 이상의 다른 데이터세트를 해싱하여, 상기 하나 이상의 다른 데이터세트에 대응하는 각각의 해시값을 생성하는 단계; 및
    상기 각각의 해시값을 저장하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  5. 제 4 항에 있어서,
    상기 제2 데이터세트에 대한 요청은, 상기 제2 데이터세트에 대응하는 해시값을 포함하는 것인, 컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    상기 제2 데이터세트를 수신하는 단계에 후속하여, 상기 제2 데이터세트를 해싱하여 제2 해시값을 생성하는 단계; 및
    상기 제2 해시값을 상기 제2 데이터세트에 대응하는 저장된 해시값과 비교하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    상기 제2 해시값이 상기 제2 데이터세트에 대응하는 저장된 해시값과 매칭되지 않음을 결정하는 단계; 및
    상기 제2 해시값이 상기 제2 데이터세트에 대응하는 저장된 해시값과 매칭되지 않는다고 결정하는 것에 응답하여, 상기 제2 블록체인 노드를 결함(faulty) 노드로 보고하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  8. 제 6 항에 있어서,
    상기 하나 이상의 다른 데이터세트 중에서 상기 제2 데이터세트에 더해 각각의 다른 데이터세트를, 대응하는 다른 블록체인 노드로부터 수신하는 단계;
    상기 제1 데이터세트 및 상기 하나 이상의 다른 데이터세트를 결합하여, 상기 인코딩된 블록을 형성된 인코딩된 블록으로서 형성하는 단계; 및
    상기 형성된 인코딩된 블록을 디코딩하여 상기 블록체인의 상기 블록을 생성하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    상기 블록체인의 상기 블록이 사전 결정된 양의 시간 동안 저장되어 있었음에 기초하여, 인코딩을 위해 상기 블록체인의 상기 블록을 선택하는 단계를 포함하는 컴퓨터 구현 방법.
  10. 제 1 항에 있어서,
    상기 ECC는, 상기 제1 블록체인 노드의 계산 자원 사용률이 사전 결정된 값 이하이거나 상기 제1 블록체인 노드의 저장 공간 사용량이 사전 결정된 백분율 이상일 때, 수행되는, 컴퓨터 구현 방법.
  11. 제 1 항에 있어서,
    상기 제1 블록체인 노드에서 제1 데이터세트를 저장하는 단계에 후속하여, 상기 하나 이상의 데이터세트를 삭제하는 단계를 더 포함하는 컴퓨터 구현 방법.
  12. 공유 블록체인 데이터를 통신하는 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고, 제 1 항 내지 제 11 항 중 어느 한 항의 방법을 수행하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어가 저장되어 있는 하나 이상의 컴퓨터 판독 가능 메모리
    를 포함하는 시스템.
  13. 공유 블록체인 데이터를 통신하기 위한 장치로서,
    제 1 항 내지 제 11 항 중 어느 한 항의 방법을 수행하기 위한 복수의 모듈을 포함하는 장치.
  14. 하나 이상의 명령어를 저장한 비일시적인(non-transitory) 컴퓨터 판독가능 저장 매체로서, 상기 명령어는 컴퓨터 시스템에 의해 실행될 때 상기 컴퓨터 시스템으로 하여금 제 1 항 내지 제 11 항 중 어느 한 항의 방법을 수행하게 하는, 비일시적인 컴퓨터 판독가능 저장 매체.
KR1020207030759A 2019-10-15 2019-10-15 인코딩된 블록체인 데이터의 인덱싱 및 복구 KR102412024B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/111316 WO2020011287A2 (en) 2019-10-15 2019-10-15 Indexing and recovering encoded blockchain data

Publications (2)

Publication Number Publication Date
KR20210045353A KR20210045353A (ko) 2021-04-26
KR102412024B1 true KR102412024B1 (ko) 2022-06-22

Family

ID=69143329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207030759A KR102412024B1 (ko) 2019-10-15 2019-10-15 인코딩된 블록체인 데이터의 인덱싱 및 복구

Country Status (9)

Country Link
US (2) US10977114B2 (ko)
EP (1) EP3769499B1 (ko)
JP (1) JP7047133B2 (ko)
KR (1) KR102412024B1 (ko)
CN (1) CN111373693A (ko)
AU (1) AU2019302939B2 (ko)
CA (1) CA3098766A1 (ko)
SG (1) SG11202010203QA (ko)
WO (1) WO2020011287A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11202002912XA (en) * 2019-08-01 2021-03-30 Advanced New Technologies Co Ltd Shared blockchain data storage based on error correction code
SG11202001978YA (en) 2019-09-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage based on error correction coding in trusted execution environments
WO2020011287A2 (en) 2019-10-15 2020-01-16 Alipay (Hangzhou) Information Technology Co., Ltd. Indexing and recovering encoded blockchain data
CA3098932C (en) * 2019-11-06 2021-09-28 Alipay (Hangzhou) Information Technology Co., Ltd. Data security of shared blockchain data storage based on error correction code
CN111770149B (zh) * 2020-06-23 2023-02-14 江苏荣泽信息科技股份有限公司 基于分布式存储的新型联盟链系统
CN111526219B (zh) 2020-07-03 2021-02-09 支付宝(杭州)信息技术有限公司 一种联盟链的共识方法及联盟链系统
CN112732835A (zh) * 2021-01-12 2021-04-30 宁波云麟信息科技有限公司 基于区块链的异构数据存储方法和电子设备
KR102669489B1 (ko) * 2021-09-29 2024-05-29 계명대학교 산학협력단 블랙박스 영상 공유 시스템 및 방법
KR102628501B1 (ko) * 2021-12-23 2024-01-24 주식회사 크립티드 블록체인 데이터 분산 저장 방법 및 블록체인 데이터 분산 저장 장치
US20230214392A1 (en) * 2021-12-31 2023-07-06 Verizon Patent And Licensing Inc. Systems and methods for scalable off-chain storage of blockchain-secured data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212836A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Coordinating cache memory updates in a dispersed storage network
CN108062202A (zh) 2017-12-15 2018-05-22 中链科技有限公司 一种文件分块存储方法及系统
CN109522270A (zh) 2018-10-19 2019-03-26 平安科技(深圳)有限公司 基于区块链的文件存读方法、电子装置及可读存储介质
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
CN109889589A (zh) 2019-02-18 2019-06-14 闪联信息技术工程中心有限公司 一种基于区块链实现嵌入式硬件ota升级系统及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977194B2 (en) * 2011-11-28 2021-04-13 Pure Storage, Inc. Securely storing random keys in a dispersed storage network
US8935256B2 (en) * 2012-03-02 2015-01-13 Cleversafe, Inc. Expanding a hierarchical dispersed storage index
US20190005261A1 (en) * 2013-04-01 2019-01-03 International Business Machines Corporation Secure shared vault with encrypted private indices
WO2018031940A1 (en) 2016-08-12 2018-02-15 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10698675B2 (en) * 2016-12-19 2020-06-30 International Business Machines Corporation Decentralized automated software updates via blockchain
US10447480B2 (en) * 2016-12-30 2019-10-15 Guardtime Sa Event verification receipt system and methods
US10613935B2 (en) * 2017-01-31 2020-04-07 Acronis International Gmbh System and method for supporting integrity of data storage with erasure coding
CN107273410B (zh) * 2017-05-03 2020-07-07 上海点融信息科技有限责任公司 基于区块链的分布式存储
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CN109491968B (zh) * 2018-11-13 2021-01-22 恒生电子股份有限公司 一种文件处理方法、装置、设备及计算机可读存储介质
CN109302495A (zh) 2018-11-20 2019-02-01 北京邮电大学 一种数据存储方法及装置
US11334856B2 (en) * 2018-11-21 2022-05-17 Capital One Services, Llc Check tampering prevention using blockchain
US20190278765A1 (en) 2018-12-19 2019-09-12 Alibaba Group Holding Limited Shared secret-based blockchain storage
CN110018924A (zh) 2019-02-21 2019-07-16 同方股份有限公司 一种基于区块链和纠删码的文件防破坏方法
CN110046894B (zh) 2019-04-19 2021-11-09 电子科技大学 一种基于纠删码的分组可重构区块链建立方法
CN110175212B (zh) * 2019-05-22 2021-07-06 杭州复杂美科技有限公司 区块链分布式存储方法、数据读取方法、设备和存储介质
WO2021016998A1 (en) * 2019-08-01 2021-02-04 Advanced New Technologies Co., Ltd. Shared blockchain data storage based on error correction code
SG11202002912XA (en) * 2019-08-01 2021-03-30 Advanced New Technologies Co Ltd Shared blockchain data storage based on error correction code
WO2020011287A2 (en) 2019-10-15 2020-01-16 Alipay (Hangzhou) Information Technology Co., Ltd. Indexing and recovering encoded blockchain data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212836A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Coordinating cache memory updates in a dispersed storage network
CN108062202A (zh) 2017-12-15 2018-05-22 中链科技有限公司 一种文件分块存储方法及系统
CN109522270A (zh) 2018-10-19 2019-03-26 平安科技(深圳)有限公司 基于区块链的文件存读方法、电子装置及可读存储介质
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
CN109889589A (zh) 2019-02-18 2019-06-14 闪联信息技术工程中心有限公司 一种基于区块链实现嵌入式硬件ota升级系统及方法

Also Published As

Publication number Publication date
EP3769499A2 (en) 2021-01-27
WO2020011287A2 (en) 2020-01-16
CA3098766A1 (en) 2020-01-16
US20200210275A1 (en) 2020-07-02
SG11202010203QA (en) 2020-11-27
US10977114B2 (en) 2021-04-13
WO2020011287A3 (en) 2020-08-20
AU2019302939B2 (en) 2021-12-16
JP7047133B2 (ja) 2022-04-04
KR20210045353A (ko) 2021-04-26
CN111373693A (zh) 2020-07-03
AU2019302939A1 (en) 2021-04-29
EP3769499B1 (en) 2023-02-15
US11307927B2 (en) 2022-04-19
JP2021528883A (ja) 2021-10-21
EP3769499A4 (en) 2021-01-27
US20210232453A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
KR102412024B1 (ko) 인코딩된 블록체인 데이터의 인덱싱 및 복구
WO2019228550A2 (en) Blockchain data storage based on shared nodes and error correction code
EP3769252B1 (en) Blockchain data storage based on error correction code for permissioned blockchain network
EP3794770B1 (en) Shared blockchain data storage based on error correction code
CN111095218B (zh) 基于纠错编码存储共享的区块链数据的方法、系统及装置
EP3794532B1 (en) Shared blockchain data storage based on error correction code
US11030044B2 (en) Dynamic blockchain data storage based on error correction code

Legal Events

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