KR102430135B1 - 에러 정정 코드에 기초하는 동적 블록체인 데이터 저장 - Google Patents

에러 정정 코드에 기초하는 동적 블록체인 데이터 저장 Download PDF

Info

Publication number
KR102430135B1
KR102430135B1 KR1020207031495A KR20207031495A KR102430135B1 KR 102430135 B1 KR102430135 B1 KR 102430135B1 KR 1020207031495 A KR1020207031495 A KR 1020207031495A KR 20207031495 A KR20207031495 A KR 20207031495A KR 102430135 B1 KR102430135 B1 KR 102430135B1
Authority
KR
South Korea
Prior art keywords
blockchain
blocks
node
data
nodes
Prior art date
Application number
KR1020207031495A
Other languages
English (en)
Other versions
KR20210058746A (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 KR20210058746A publication Critical patent/KR20210058746A/ko
Application granted granted Critical
Publication of KR102430135B1 publication Critical patent/KR102430135B1/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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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/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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/004Notarisation, Time-Stamp, Date-Stamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/005Network, LAN, Remote Access, Distributed System
    • 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)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

블록체인 데이터를 저장하기 위한 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함하는 방법들, 시스템들 및 장치들이 본 명세서에 개시된다. 방법들 중 하나는 블록체인의 하나 이상의 블록에 대해 에러 정정 코딩(ECC)을 수행하기 위한 요청을 수신하는 단계, 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터에 기초하여 하나 이상의 블록을 획득하는 단계, 및 하나 이상의 블록의 ECC를 수행하여 하나 이상의 인코딩된 블록을 생성하는 단계를 포함하고, 하나 이상의 인코딩된 블록의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 블록체인 네트워크의 블록체인 노드들의 총 수와 동일하다.

Description

에러 정정 코드에 기초하는 동적 블록체인 데이터 저장
본 명세서는 에러 정정 코드에 기초하는 블록체인 데이터 저장에 관한 것이다.
컨센서스 네트워크들 및/또는 블록체인 네트워크들로도 지칭될 수 있는 분산 원장 시스템(DLS)들은 참가 엔티티들이 데이터를 안전하게 그리고 불변적으로 저장할 수 있게 한다. DLS들은 일반적으로 어떠한 특정 사용자 사례도 참조하지 않는 블록체인 네트워크들로서 지칭된다. 블록체인 네트워크들의 유형들의 예들은 공개 블록체인 네트워크들, 비공개 블록체인 네트워크들 및 컨소시엄 블록체인 네트워크들을 포함할 수 있다. 컨소시엄 블록체인 네트워크는 컨센서스 프로세스를 제어하는 엔티티들의 선택 그룹을 위해 제공되고, 액세스 제어 계층을 포함한다.
블록체인 기반 프로그램들은 분산 컴퓨팅 플랫폼에 의해 실행될 수 있다. 예를 들어, 분산 컴퓨팅 플랫폼은 스마트 계약들을 실행하기 위한 런타임 환경을 제공하는 가상 머신을 포함할 수 있다. 블록체인 컴퓨팅 플랫폼은 트랜잭션 기반 상태 머신으로서 간주될 수 있다. 플랫폼에서의 상태 데이터는 세계 상태로 지칭되는 글로벌 공유 상태로 어셈블될 수 있다. 세계 상태는 계정 어드레스들과 계정 상태들 간의 매핑을 포함한다. 세계 상태는 머클 패트리샤 트리(MPT)와 같은 데이터 구조들에 저장될 수 있다.
상태 데이터 외에도, 블록체인 네트워크들은 또한 블록 데이터 및 인덱스 데이터와 같은 다른 유형들의 데이터를 저장할 수 있다. 블록 데이터는 블록 헤더 및 블록 본체를 포함할 수 있다. 블록 헤더는 특정 블록의 아이덴티티 정보를 포함할 수 있고, 블록 본체는 블록으로 확인되는 트랜잭션들을 포함할 수 있다. 트랜잭션들이 점점 더 블록체인에 입력됨에 따라, 상태 데이터 및 블록 데이터는 크기가 매우 커질 수 있다. 일부 DLS들에서, 모든 노드는 블록체인의 전체 사본을 저장하며, 이는 대량의 저장 공간을 차지할 수 있다. 이것은 모든 블록 데이터 및 상태 데이터가 블록체인에 기록된 제1 트랜잭션으로 돌아가 저장되기 때문이다. 일부 DLS들에서, 수개의 공유 노드는 블록체인의 전체 사본을 저장하고, 블록체인 데이터를 다른 블록체인 노드들과 공유하며, 이는 "데이터 불평등"을 생성할 수 있다. 즉, 데이터가 상이한 노드들에 걸쳐 불균일하게 분산될 때, 데이터의 대부분을 저장하는 노드들이 고장날 때 데이터 보안의 위험이 높을 수 있다.
따라서, 데이터 평등 및 데이터 처리 효율을 유지하는 방식으로 이러한 저장을 가능하게 하는 것이 바람직할 것이다. 또한, 필요할 때 원래의 데이터를 복구하고 리트리빙(retrieving)할 수 있으면서, 계산 자원들 또는 메모리의 소비를 감소시키는 방식으로 DLS 내의 노드들 상에 데이터를 저장하는 것을 가능하게 하는 것이 바람직할 것이다. 일부 경우들에서, 새로운 블록체인 노드들이 블록체인 네트워크에 추가될 때, 새로운 블록체인 노드들이 데이터 저장 부담을 공유하는 것을 가능하게 하고; 따라서 기존의 블록체인 노드들의 저장소 소비를 감소시키는 것이 바람직할 것이다.
본 발명의 설명된 실시예들은 하나 이상의 특징을 단독으로 또는 조합하여 포함할 수 있다.
예를 들어, 일 실시예에서, 블록체인 노드에 의해 수행되는 블록체인 데이터 저장을 위한 컴퓨터 구현 방법이 개시된다. 블록체인 노드는 블록체인의 하나 이상의 블록들에 대해 에러 정정 코딩(ECC; error correction coding)을 수행하기 위한 요청을 수신하고, 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터에 기초하여 하나 이상의 블록들을 획득하고, 하나 이상의 인코딩된 블록들을 생성하기 위해 하나 이상의 블록들의 ECC를 수행할 수 있으며, 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 블록체인 네트워크의 블록체인 노드들의 총 수와 동일하다.
일부 실시예들에서, 이러한 일반 및 특정 양태들은 시스템, 방법 또는 컴퓨터 프로그램, 또는 시스템들, 방법들 및 컴퓨터 프로그램들의 임의의 조합을 사용하여 구현될 수 있다. 상기 및 다른 설명된 실시예들은 각각 이하의 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
일부 실시예들에서, 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할된 복수의 데이터세트들이고, 하나 이상의 블록들을 획득하는 단계는 블록체인 노드에 국부적으로 저장되는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할된 하나 이상의 데이터세트들을 식별하는 단계, 및 국부적으로 저장되는 하나 이상의 데이터세트들 및 적어도 하나의 블록체인 노드로부터 수신되는 복수의 데이터세트들에 기초하여 하나 이상의 블록들을 디코딩하는 단계를 더 포함한다.
일부 실시예들에서, 적어도 하나의 블록체인 노드는 적어도 하나의 전체(full) 블록체인 노드이고, 하나 이상의 블록들을 획득하는 단계는 적어도 하나의 전체 블록체인 노드로부터 하나 이상의 블록들을 리트리빙하는 단계를 더 포함한다.
일부 실시예들에서, 하나 이상의 블록들은 제1 하나 이상의 블록들이고, 제1 하나 이상의 블록들을 리트리빙하는 단계는 제1 하나 이상의 블록들의 해시 값들을 적어도 하나의 전체 블록체인 노드에 송신하는 단계, 적어도 하나의 전체 블록체인 노드로부터 제2 하나 이상의 블록들을 수신하는 단계, 및 제2 하나 이상의 블록들의 해시 값들이 제1 하나 이상의 블록들의 해시 값들과 동일한 경우에 제2 하나 이상의 블록들이 진짜인(authentic) 것으로 결정하는 단계를 더 포함한다.
일부 실시예들에서, 요청은 상기 코드 레이트 및 명령어들을 포함하고, 명령어들은 상기 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록을 복수의 데이터세트들로 분할하고 복수의 데이터세트들을 블록체인 네트워크의 블록체인 노드들에 할당하기 위한 것이다.
일부 실시예들에서, 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록에 대해, 블록체인 노드는 인코딩된 블록을 명령어들에 따라 복수의 데이터세트들로 더 분할하고, 명령어들에 따라 블록체인 노드에 할당된 복수의 데이터세트들 중 적어도 하나를 저장할 수 있다.
일부 실시예들에서, 블록체인 노드는 또한, 블록체인 노드에 할당된 복수의 데이터세트들 중 적어도 하나의 데이터세트 이외의 복수의 데이터세트들의 나머지를 해싱하여, 복수의 데이터세트들의 나머지에 대응하는 해시 값들을 생성하고, 해시 값들을 저장하고, 하나 이상의 블록들 및 복수의 데이터세트들의 나머지를 삭제할 수 있다.
일부 실시예들에서, 요청은 제1 요청이고, 하나 이상의 인코딩된 블록들은 제1 하나 이상의 인코딩된 블록들이고, 블록체인 노드는 또한, 하나 이상의 블록들을 저장하는 새로운 블록체인 노드가 블록체인 네트워크에 추가되는 것에 응답하여 블록체인의 하나 이상의 블록들에 대해 ECC를 수행하기 위한 제2 요청을 수신하고, 새로운 블록체인 노드로부터 하나 이상의 블록들을 리트리빙하고, 하나 이상의 블록들의 ECC를 수행하여 제2 하나 이상의 인코딩된 블록들을 생성할 수 있고, 제2 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 새로운 블록체인 노드가 추가된 후의 블록체인 노드들의 총 수와 동일하다.
일부 실시예들에서, 새로운 블록체인 노드들은 블록체인의 사본을 저장하는 완전 노드들이다.
일부 실시예들에서, ECC는 블록체인 노드의 계산 자원의 사용률이 미리 결정된 값 이하일 때 수행된다.
일부 실시예들에서, ECC는 하나 이상의 블록들에 중복 비트들을 추가함으로써 수행되는 소거 코딩이다.
본 명세서에 따른 방법들은 본 명세서에 설명된 양태들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 이해된다. 즉, 본 명세서에 따른 방법들은 본 명세서에서 구체적으로 설명된 양태들 및 특징들의 조합들로 제한되는 것이 아니라, 제공되는 양태들 및 특징들의 임의의 조합도 포함한다.
본 명세서의 하나 이상의 실시예들의 상세들은 첨부 도면들 및 이하의 설명에서 제시된다. 본 명세서의 다른 특징들 및 장점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1은 본 명세서의 실시예들을 실행하는 데 사용될 수 있는 환경의 예를 도시한다.
도 2는 본 명세서의 실시예들에 따른 아키텍처의 예를 도시한다.
도 3은 본 명세서의 실시예들에 따른 블록 데이터 인코딩 및 해싱 프로세스의 예를 도시한다.
도 4는 본 명세서의 실시예들에 따른 데이터 저장 스킴의 예를 도시한다.
도 5는 본 명세서의 실시예들에 따른 블록 데이터 인코딩 및 해싱 프로세스의 다른 예를 도시한다.
도 6은 본 명세서의 실시예들에 따른 블록체인 네트워크에 블록체인 노드들을 추가하는 예를 도시한다.
도 7은 본 명세서의 실시예들에 따른 실행될 수 있는 프로세스의 예를 도시한다.
도 8은 본 명세서의 실시예들에 따른 장치의 모듈들의 예들을 도시한다.
다양한 도면들 내의 유사한 참조 번호들 및 명칭들은 유사한 요소들을 나타낸다.
본 명세서는 에러 정정 코드(ECC)에 기초하여 저장을 위한 블록체인 데이터를 처리하기 위한 기술들을 설명한다. 이러한 기술들은 일반적으로 블록체인의 하나 이상의 블록들에 대해 에러 정정 코딩(ECC)을 수행하기 위한 요청을 수신하는 것, 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터에 기초하여 하나 이상의 블록들을 획득하는 것, 및 하나 이상의 인코딩된 블록들을 생성하기 위해 하나 이상의 블록들의 ECC를 수행하는 것을 수반하고, 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 블록체인 네트워크의 블록체인 노드들의 총 수와 동일하다.
본 명세서에 설명된 바와 같이, 블록체인 네트워크들은 상태 데이터, 블록 데이터, 및 인덱스 데이터와 같은 상이한 유형들의 데이터를 저장할 수 있다. 블록 데이터는 블록체인 네트워크 내의 모든 트랜잭션들을 포함하며, 이는 새로운 블록들이 블록체인에 끊임없이 추가됨에 따라 많은 양의 저장 공간을 차지할 수 있다. 블록체인 노드들이 특히 드물게 액세스되는 블록들(예를 들어, 오래 전에 블록체인에 추가된 블록들)의 데이터에 대해 모든 블록 데이터를 각각 저장하는 것은 비효율적일 수 있다. 따라서, 본 명세서의 실시예들은 각각의 블록체인 노드가 드물게 액세스되는 블록들의 일부를 저장하고, 필요할 때 다른 블록체인 노드들로부터 블록 데이터의 나머지를 리트리빙하여 저장소 소비를 감소시키도록 규정한다. 그러나, 장애 노드들 또는 신뢰할 수 없는 노드들이 블록체인 네트워크에 존재하는 경우, 리트리빙된 데이터는 신뢰될 수 없고 데이터 손실이 발생할 수 있다.
일부 실시예들에서, 블록체인 노드들은 드물게 액세스되는 블록들을 인코딩하기 위해 소거 코딩과 같은 ECC를 수행할 수 있다. 그 다음, ECC 인코딩된 블록들은 복수의 데이터세트들로 분할될 수 있다. 복수의 데이터세트들은 데이터 저장 스킴에 기초하여 저장하기 위해 인덱싱되고 상이한 블록체인 노드들에 할당될 수 있다. 드물게 액세스되는 블록으로부터의 데이터가 블록체인 노드에 의해 스마트 계약을 실행하는 데 필요할 때, 블록체인 노드는 ECC 인코딩된 블록을 형성하고 원래의 블록을 복구하기 위해 인덱스에 기초하여 다른 블록체인 노드들로부터 대응하는 데이터세트들을 리트리빙할 수 있다. ECC 인코딩된 블록들을 공유함으로써, 진짜가 아닌 데이터가 존재하거나 데이터 손실이 발생하더라도, 정직한 블록체인 노드들의 백분율이 ECC의 코드 레이트 이상인 한은 원래의 블록 데이터가 복구될 수 있다.
일부 실시예들에서, 새로운 블록체인 노드들이 블록체인 네트워크에 전체 노드들로서 추가된다. 새롭게 추가된 전체 노드들은 다른 노드들에 의해 공유되지 않는 블록들의 추가 사본들을 저장한다. 블록들의 추가 사본들은 저장에 관하여 블록체인 네트워크에 중복성을 추가할 수 있다. 본 명세서의 실시예들은 저장소 소비를 감소시키기 위해, 블록들에 대해 ECC를 재수행하고 인코딩된 블록들을 다른 블록체인 노드들과 공유하는 기술들을 제공한다. ECC는 또한 계산 자원들을 더 잘 이용하기 위해 CPU 사용이 낮을 때 블록체인 노드에 의해 재수행될 수 있다.
본 명세서에서 설명된 기술들은 여러 기술적 효과들을 생성한다. 예를 들어, 본 발명의 실시예들은 블록체인 네트워크들의 저장 자원들에 대한 부담을 감소시키면서, 블록체인 노드들의 계산 효율 및 데이터 평등을 유지한다. 드물게 액세스되는 블록들(예를 들어, 더 오래된 블록들)에 대해, 블록체인 노드들의 저장 자원들은 각각의 블록체인 노드 상에서 에러 정정 코딩(ECC) 인코딩된 블록들(본 명세서에서 인코딩된 블록들로도 지칭됨)의 일부만을 저장하고, 필요할 때 다른 블록체인 노드들로부터 인코딩된 블록들의 나머지를 리트리빙함으로써 보존될 수 있다.
일부 실시예들에서, ECC 인코딩된 블록은 복수의 데이터세트들로 분할될 수 있다. 블록체인 노드는 복수의 데이터세트의 선택된 부분 및 데이터세트들의 나머지에 대응하는 해시 값들을 저장할 수 있다. 선택은 블록체인 네트워크의 블록체인 노드들에 의해 합의된 데이터 저장 스킴에 기초할 수 있다. 복수의 데이터세트 및 해시 값들은 ECC 인코딩된 블록과 연관된 블록 ID에 의해 인덱싱될 수 있다. 블록으로부터의 데이터가 블록체인 노드에 의해 액세스될 필요가 있을 때, 블록체인 노드는 다른 블록체인 노드들로부터 데이터세트들의 나머지를 리트리빙할 수 있다. 블록체인 노드는 대응하는 해시 값들을 다른 블록체인 노드들에 송신하여, 데이터세트들의 나머지를 리트리빙할 수 있다. 해시 값들은 비가역적이기 때문에, 블록체인 노드는 수신된 데이터를 해싱하고 해싱된 값들을 국부적으로 저장된 해시 값들과 비교함으로써 수신된 데이터가 진짜인지를 검증할 수 있다. 이와 같이, 데이터 보안이 보장될 수 있고 장애 노드들이 식별될 수 있다. 블록체인 노드가 장애 블록체인 노드들로부터 진짜가 안진 데이터를 수신하더라도, 진짜가 아닌 데이터의 백분율이 ECC에 의해 허용된 에러 또는 누락 비트들의 최대 분율 이하인 한, 대응하는 블록이 복구될 수 있다.
일부 경우들에서, 새로운 블록체인 노드들이 블록체인 네트워크에 전체 노드들로서 추가된다. 새롭게 추가된 전체 노드들은 다른 노드들에 의해 공유되지 않는 블록들의 추가 사본들을 저장한다. 블록들의 추가 사본들은 저장의 관점에서 블록체인 네트워크에 중복성을 추가한다. 이러한 경우들에서, ECC는 중복성 및 저장소 소비를 감소시키기 위해 더 높은 코드 레이트로 블록들에 대해 재수행될 수 있다. 계산 자원들을 더 잘 이용하기 위해 CPU 사용이 낮을 때 ECC의 재수행이 실행될 수 있다.
본 명세서의 실시예들에 대한 추가 컨텍스트를 제공하기 위해 그리고 위에 소개된 바와 같이, 컨센서스 네트워크들(예를 들어, 피어-투-피어 노드들로 구성됨) 및 블록체인 네트워크들이라고도 지칭될 수 있는 분산 원장 시스템들(DLS들)은 참가 엔티티들이 안전하게 그리고 불변적으로 트랜잭션들을 수행하고 데이터를 저장하는 것을 가능하게 한다. 용어 블록체인은 일반적으로 특정 네트워크들 및/또는 사용 사례들과 연관되지만, 블록체인은 본 명세서에서 어떠한 특정 사용 사례도 참조하지 않는 DLS를 일반적으로 지칭하는 데 사용된다.
블록체인은 트랜잭션들이 변경 불가능한 방식으로 트랜잭션들을 저장하는 데이터 구조이다. 따라서, 블록체인에 기록된 트랜잭션들은 신뢰성 있고 신뢰할 만하다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각각의 블록은 체인 내의 그의 바로 이전의 블록의 암호 해시를 포함함으로써 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 그 자신의 암호 해시, 및 하나 이상의 트랜잭션을 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 트랜잭션들은 해싱되고, 머클 트리 내로 인코딩된다. 머클 트리는 트리의 리프 노드들에서의 데이터가 해싱되고, 트리의 각각의 브랜치 내의 모든 해시들이 브랜치의 루트에서 연결되는 데이터 구조이다. 이 프로세스는 트리를 따라 전체 트리의 루트까지 계속되며, 이는 트리 내의 모든 데이터를 나타내는 해시를 저장한다. 트리에 저장된 트랜잭션이라는 취지의 해시는 그것이 트리의 구조와 일치하는지를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 분산된 또는 적어도 부분적으로 분산된 데이터 구조인 반면, 블록체인 네트워크는 트랜잭션들을 브로드캐스팅하고, 검증하고, 확인하는 것 등에 의해 하나 이상의 블록체인들을 관리하고, 업데이트하고, 유지하는 컴퓨팅 노드들의 네트워크이다. 위에 소개된 바와 같이, 블록체인 네트워크는 공개 블록체인 네트워크, 비공개 블록체인 네트워크, 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 실시예들은 컨소시엄 블록체인 네트워크를 참조하여 본 명세서에서 더 상세히 설명된다. 그러나, 본 명세서의 실시예들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것이 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참가 엔티티들 사이에서 비공개적이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 컨센서스 노드들로서 지칭될 수 있는 허가된 노드들의 세트에 의해 제어되고, 하나 이상의 컨센서스 노드들은 각각의 엔티티(예를 들어, 기관, 보험 회사)에 의해 운영된다. 예를 들어, 10개의 엔티티(예를 들어, 금융 기관, 보험 회사)의 컨소시엄은 컨소시엄 블록체인 네트워크를 운영할 수 있고, 이들 각각은 컨소시엄 블록체인 네트워크 내의 적어도 하나의 노드를 운영한다.
일부 예들에서, 컨소시엄 블록체인 네트워크 내에서, 글로벌 블록체인은 모든 노드들에 걸쳐 복제되는 블록체인으로서 제공된다. 즉, 모든 컨센서스 노드들은 글로벌 블록체인에 대해 완벽한 상태 컨센서스에 있다. 컨센서스(예를 들어, 블록체인에 대한 블록의 추가에 대한 합의)를 달성하기 위해, 컨센서스 프로토콜이 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는 아래에 더 상세히 설명되는 실용적 비잔틴 장애 허용한계(PBFT) 컨센서스를 구현할 수 있다.
도 1은 본 명세서의 실시예들을 실행하는 데 사용될 수 있는 환경(100)의 예를 예시하는 도면이다. 일부 예들에서, 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참가할 수 있게 한다. 환경(100)은 컴퓨팅 디바이스들(106, 108) 및 네트워크(110)를 포함한다. 일부 예들에서, 네트워크(110)는 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷, 또는 이들의 조합을 포함하고, 웹 사이트들, 사용자 디바이스들(예를 들어, 컴퓨팅 디바이스들), 및 백엔드 시스템들을 연결한다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예들에서, 네트워크(110)는 컨소시엄 블록체인 네트워크(102)과의 그리고 그 안에서의 통신을 가능하게 한다. 일반적으로, 네트워크(110)는 하나 이상의 통신 네트워크를 나타낸다. 일부 경우들에서, 컴퓨팅 디바이스들(106, 108)은 클라우드 컴퓨팅 시스템(도시되지 않음)의 노드들일 수 있거나, 각각의 컴퓨팅 디바이스(106, 108)는 네트워크에 의해 상호 연결되고 분산 처리 시스템으로서 기능하는 다수의 컴퓨터들을 포함하는 별도의 클라우드 컴퓨팅 시스템일 수 있다.
도시된 예에서, 컴퓨팅 시스템들(106, 108) 각각은 컨소시엄 블록체인 네트워크(102) 내의 노드로서의 참가를 가능하게 하는 임의의 적절한 컴퓨팅 시스템을 포함할 수 있다. 컴퓨팅 디바이스들의 예들은 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스, 및 스마트폰을 포함하지만, 이들로 제한되지 않는다. 일부 예들에서, 컴퓨팅 시스템들(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제1 엔티티가 하나 이상의 다른 엔티티들(예를 들어, 다른 사용자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제1 엔티티(예를 들어, 사용자 A)의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제2 엔티티가 하나 이상의 다른 엔티티들(예를 들어, 다른 사용자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제2 엔티티(예를 들어, 사용자 B)의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 도 1의 예에서, 컨소시엄 블록체인 네트워크(102)는 노드들의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 시스템들(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))을 사용하여 그리고/또는 원격 절차 호출(RPC)을 사용하여, 블록체인 네트워크(212)와 또는 그를 통해 통신한다.
노드들(214)은 블록체인 네트워크(212) 내에서 다양한 참가도를 가질 수 있다. 예를 들어, 일부 노드들(214)은 컨센서스 프로세스에 (예를 들어, 블록들을 블록체인(216)에 추가하는 마이너 노드들로서) 참가할 수 있는 반면, 다른 노드들(214)은 컨센서스 프로세스에 참가하지 않는다. 다른 예로서, 일부 노드들(214)은 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드들(214)은 블록체인(216)의 부분들의 사본들만을 저장한다. 예를 들어, 데이터 액세스 특권들은 각각의 참가자가 그의 각각의 시스템 내에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참가자 시스템들(202, 204, 206)은 블록체인(216)의 각각의 완전한 사본들(216', 216", 216''')을 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))는 블록들의 체인으로 구성되고, 각각의 블록은 데이터를 저장한다. 데이터의 예는 둘 이상의 참가자 사이의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 본 명세서에서는 비제한적인 예로서 트랜잭션이 사용되지만, 임의의 적절한 데이터(예를 들어, 문서, 이미지, 비디오, 오디오)가 블록체인에 저장될 수 있는 것이 고려된다. 트랜잭션의 예는 가치(예를 들어, 자산, 제품, 서비스, 통화)의 무언가의 교환을 포함할 수 있지만 이에 제한되지 않는다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해싱된다. 해싱은 (스트링 데이터로서 제공되는) 트랜잭션 데이터를 (스트링 데이터로서 또한 제공되는) 고정 길이 해시 값으로 변환하는 프로세스이다. 해시 값을 언해싱하여 트랜잭션 데이터를 획득하는 것은 불가능하다. 해싱은 심지어 트랜잭션 데이터에서의 약간의 변경이 완전히 상이한 해시 값을 초래하는 것을 보장한다. 또한, 전술한 바와 같이, 해시 값은 고정 길이를 갖는다. 즉, 트랜잭션 데이터의 크기에 관계없이 해시 값의 길이가 고정된다. 해싱은 해시 함수를 통해 트랜잭션 데이터를 처리하여 해시 값을 생성하는 것을 포함한다. 해시 함수의 예는 256 비트 해시 값들을 출력하는 보안 해시 알고리즘(SHA)-256을 포함하지만 이에 제한되지 않는다.
다수의 트랜잭션의 트랜잭션 데이터가 해싱되어 블록에 저장된다. 예를 들어, 2개의 트랜잭션의 해시 값들이 제공되고, 그 자체가 다른 해시를 제공하도록 해싱된다. 블록에 저장될 모든 트랜잭션들에 대해, 단일 해시 값이 제공될 때까지 이 프로세스가 반복된다. 이 해시 값은 머클 루트 해시라고 하며, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 트랜잭션의 변경은 그의 해시 값의 변경, 궁극적으로 머클 루트 해시의 변경을 야기할 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들은 컨센서스 프로토콜에 참가하고, 블록체인에 블록을 추가하기 위한 작업을 수행한다. 이러한 노드들은 컨센서스 노드들로 지칭된다. 전술한 PBFT는 컨센서스 프로토콜의 비제한적인 예로서 사용된다. 컨센서스 노드들은 컨센서스 프로토콜을 실행하여 블록체인에 트랜잭션들을 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세하게는, 컨센서스 노드는 블록 헤더를 생성하고, 블록 내의 모든 트랜잭션을 해싱하고, 해시 값을 쌍으로 결합하여 블록 내의 모든 트랜잭션에 대해 단일 해시 값(머클 루트 해시)이 제공될 때까지 추가 해시 값들을 생성한다. 이 해시는 블록 헤더에 추가된다. 컨센서스 노드는 또한 블록체인 내의 가장 최근의 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 컨센서스 노드는 또한 넌스 값 및 타임스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 장애들(예를 들어, 오동작 노드들, 악의적 노드들)을 허용하는 실용적 비잔틴 상태 머신 복제를 제공한다. 이것은 장애들이 발생할 것으로 가정함으로써(예를 들어, 독립적인 노드 장애들 및/또는 컨센서스 노드들에 의해 송신되는 조작된 메시지들의 존재를 가정하여) PBFT에서 달성된다. PBFT에서, 컨센서스 노드들은 주 컨센서스 노드 및 백업 컨센서스 노드들을 포함하는 시퀀스로 제공된다. 주 컨센서스 노드는 주기적으로 변경된다. 블록체인 네트워크 내의 모든 컨센서스 노드들이 블록체인 네트워크의 세계 상태에 관한 합의에 도달함으로써 블록체인에 트랜잭션들이 추가된다. 이 프로세스에서, 메시지들은 컨센서스 노드들 사이에서 송신되고, 각각의 컨센서스 노드들은 메시지가 지정된 피어 노드로부터 수신되는 것을 증명하고, 메시지가 송신 동안 수정되지 않았음을 검증한다.
PBFT에서, 컨센서스 프로토콜은 모든 컨센서스 노드들이 동일한 상태에서 시작하는 다수의 위상에서 제공된다. 먼저, 클라이언트는 주 컨센서스 노드에 요청을 송신하여 서비스 동작을 호출한다(예를 들어, 블록체인 네트워크 내에서 트랜잭션을 실행한다). 요청을 수신한 것에 응답하여, 주 컨센서스 노드는 요청을 백업 컨센서스 노드들에 멀티캐스팅한다. 백업 컨센서스 노드들은 요청을 실행하고, 각각은 클라이언트에 응답을 송신한다. 클라이언트는 임계 수의 응답들이 수신될 때까지 기다린다. 일부 예들에서, 클라이언트는 f+1개의 응답이 수신되기를 기다리고, 여기서 f는 블록체인 네트워크 내에서 허용될 수 있는 장애 컨센서스 노드들의 최대 수이다. PBFT에서, 장애 컨센서스 노드들의 최대 수는 컨센서스 노드들의 총 수의 1/3보다 작을 필요가 있다. 최종 결과는 충분한 수의 컨센서스 노드들이 블록체인에 추가될 레코드의 순서에 대해 합의하는 것이고, 레코드는 수락되거나 거절된다.
일부 블록체인 네트워크들에서는, 트랜잭션들의 프라이버시를 유지하기 위해 암호화가 구현된다. 예를 들어, 2개의 노드들이 트랜잭션을 비공개로 유지하여 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부사항들을 식별할 수 없기를 원하는 경우, 노드들은 트랜잭션 데이터를 암호화할 수 있다. 암호화의 예는 대칭 암호화 및 비대칭 암호화를 포함하지만, 이에 제한되는 것은 아니다. 대칭 암호화는 (평문으로부터 암호문을 생성하는) 암호화 및 (암호문으로부터 평문을 생성하는) 해독 둘 다에 대해 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 동일한 키가 다수의 노드들에 의해 이용가능하므로, 각각의 노드는 트랜잭션 데이터를 암호화/해독할 수 있다.
비대칭 암호화는 비공개 키 및 공개 키를 각각 포함하는 키 쌍들을 사용하고, 비공개 키는 각각의 노드에만 알려지고, 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려져 있다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있고, 암호화된 데이터는 다른 노드의 비공개 키를 사용하여 해독될 수 있다. 예를 들어, 다시 도 2를 참조하면, 참가자 A는 참가자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에 송신할 수 있다. 참가자 B는 그의 비공개 키를 사용하여, 암호화된 데이터(암호문)를 해독하고 원래의 데이터(평문)를 추출할 수 있다. 노드의 공개 키로 암호화된 메시지들은 오직 노드의 비공개 키를 사용하여 해독될 수 있다.
비대칭 암호화는 디지털 서명들을 제공하는 데 사용되며, 이는 트랜잭션의 참가자들이 트랜잭션의 다른 참가자들뿐만 아니라 트랜잭션의 유효성을 확인할 수 있게 한다. 예를 들어, 노드는 메시지에 디지털 방식으로 서명할 수 있고, 다른 노드는 메시지가 참가자 A의 디지털 서명에 기초하여 노드에 의해 송신되었다는 것을 확인할 수 있다. 디지털 서명들은 또한 메시지들이 송신 중에 변조되지 않는 것을 보장하기 위해 사용될 수 있다. 예를 들어, 도 2를 다시 참조하면, 참가자 A는 참가자 B에게 메시지를 송신하려고 한다. 참가자 A는 메시지의 해시를 생성하고, 이어서 그의 비공개 키를 사용하여 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참가자 A는 디지털 서명을 메시지에 첨부하고, 디지털 서명을 갖는 메시지를 참가자 B에게 송신한다. 참가자 B는 참가자 A의 공개 키를 사용하여 디지털 서명을 해독하고, 해시를 추출한다. 참가자 A는 메시지를 해싱하고 해시들을 비교한다. 해시들이 동일한 경우, 참가자 B는 메시지가 정말로 참가자 A로부터 왔고 변조되지 않았음을 확인할 수 있다.
도 3은 본 명세서의 실시예들에 따른 블록 데이터 인코딩 및 해싱 프로세스(300)의 예를 도시한다. 이 예에서, 블록체인 노드들(302, 304, 306, 308)인 4개의 블록체인 노드의 블록체인 네트워크가 도시된다. 인코딩 및 해싱 프로세스(300)를 예시하기 위해 블록체인 노드(302)를 예로서 사용하면, 블록체인 노드(302)는 블록체인 네트워크의 블록 데이터를 블록(312)의 블록 본체에 저장할 수 있다. 도시된 예에서, 블록 데이터는 블록(100)에 저장된다. 그 후, 블록체인 노드(302)는 다른 블록체인 노드들(304, 306, 308)과의 컨센서스 프로세스에 관여할 수 있다. 컨센서스 프로세스 동안, 블록체인 노드(302)는 블록체인 상에 대응하는 블록을 생성하기 위해 PoW(proof of work) 또는 PoS(proof of stake)와 같은 컨센서스 알고리즘을 수행할 수 있다.
일부 실시예들에서, 블록체인 노드(302)는 하나 이상의 드물게 액세스되는 블록들을 식별할 수 있다. 실제로, 블록이 더 길게 생성될수록, 대응하는 블록 데이터가 스마트 계약들의 실행과 같은 동작들을 위해 필요할 가능성이 더 적다. 블록체인 노드(302)는 국부적으로 저장된 블록들이 미리 결정된 양의 시간 동안 블록체인 상에 생성된 기왕의 블록들일 때 그들이 드물게 액세스되는 것으로 결정할 수 있다. 예를 들어, 미리 결정된 양의 시간은 블록이 생성되는 평균 시간의 1배 또는 2배일 수 있다. 일부 예들에서, 블록은 또한 스마트 계약들을 실행하기 위해 미리 결정된 양의 시간 동안 블록 내의 어떠한 블록 데이터도 리트리빙되지 않을 때 드물게 액세스되는 것으로 결정될 수 있다.
드물게 액세스되는 블록들을 식별한 후에, 블록체인 노드(302)는 드물게 액세스되는 블록들 각각의 블록 본체에서 블록 데이터의 ECC(314)를 수행할 수 있다. ECC는 데이터에 중복 비트들(중복성이라고도 함)을 추가함으로써 신뢰할 수 없는 송신들에 대해 데이터의 에러들 또는 손실들을 제어하기 위해 사용될 수 있다. 중복 비트들은 많은 원래의 정보 비트들의 복합 함수일 수 있다. 중복성은 데이터의 재송신 없이 데이터의 에러들 또는 손실들이 정정되는 것을 허용할 수 있다. 원래의 정보는 인코딩된 출력에서 문자 그대로 나타날 수 있거나 나타나지 않을 수 있다. 인코딩된 출력에서 수정되지 않은 원래의 정보를 포함하는 ECC 코드들은 체계적 ECC 코드들로서 지칭되는 반면, 그렇지 않은 것들은 비체계적 ECC 코드들로서 지칭된다. ECC에 의해 정정될 수 있는 에러들 또는 누락 비트들의 최대 분율들은 ECC 코드의 설계에 의해 결정된다. 따라서, 상이한 에러 정정 코드들이 상이한 조건들에 적합하다. 일반적으로, 더 강한 ECC 코드는 더 많은 중복성을 유도하고, 이는 코드의 저장 소비를 증가시키고, 인코딩된 정보가 송신되어야 하는 경우 통신 효율을 감소시킨다.
하나의 예시적 ECC는 소거 코딩일 수 있다. 소거 코딩을 이용하여, k개의 심볼의 메시지는 n개의 심볼을 갖는 코드워드로 인코딩될 수 있으며, 여기서 k 및 n은 자연수이고, k<n이다. 메시지는 n-심볼 코드워드의 서브세트로부터 복구될 수 있다. 분율 r=k/n은 소거 코드의 코드 레이트이다.
ECC를 사용함으로써, 블록체인 노드들 각각은 인코딩된 블록 데이터의 일부를 저장하고, 필요할 때 다른 블록체인 노드들로부터 인코딩된 블록 데이터의 나머지를 리트리빙할 수 있다. 일부 실시예들에서, ECC는 블록체인 노드(302)의 계산 자원의 사용률이 미리 결정된 값(예를 들어, 40%)보다 낮을 때 수행될 수 있다. 이와 같이, 블록체인 노드(302) 상의 다른 계산 동작들과의 간섭이 감소될 수 있다. 일부 실시예들에서, ECC는 블록체인 노드(302)의 저장 공간의 사용이 미리 결정된 백분율 이상일 때 수행될 수 있으며, 따라서 ECC 후에, 인코딩된 블록 데이터의 일부 부분들이 저장 공간을 자유롭게 하기 위해 삭제될 수 있다.
다시, 블록(100)을 예로서 사용하여, 블록체인 노드(302)가 블록(100)을 드물게 액세스되는 블록으로서 결정하고 ECC(314)를 수행하는 것으로 가정하면, ECC 인코딩된 데이터는 데이터 저장 스킴에 기초하여 복수의 데이터세트로 분할될 수 있다. 데이터 저장 스킴은 데이터가 블록체인 네트워크 내에서 저장되는 장소 및/또는 방법을 정의하는 컴퓨터 실행가능 명령어들의 세트로서 제공될 수 있다. 일부 예들에서, 데이터 저장 스킴은 권한 증명을 갖는 신뢰 노드에 의해 제공되고 블록체인 노드들에 의해 합의될 수 있다. 일부 예들에서, 데이터 저장 스킴은 컨센서스를 통해 블록체인 노드들에 의해 합의될 수 있다. 일반적으로, 데이터 저장 스킴은 블록체인 네트워크 내의 블록체인 노드들의 수에 기초하여 인코딩된 데이터를 복수의 데이터세트들로 분할하기 위한 하나 이상의 미리 결정된 규칙들을 포함할 수 있다. 데이터 저장 스킴은 또한 블록체인 노드들 각각에 의해 저장되거나 해싱될 복수의 데이터세트들 중 하나 이상의 데이터세트들의 할당들을 포함할 수 있다. 데이터 평등을 보장하기 위해, 데이터 저장 스킴은 블록체인 네트워크의 각각의 블록체인 노드에 의해 저장될 적어도 하나의 데이터세트의 할당을 포함할 수 있다.
도 3에 도시된 예에서, 블록(100)의 인코딩된 블록 데이터는 각자가 블록체인 노드들(302, 304, 306, 308) 중 하나에 의해 저장될 Data1, Data2, Data3 및 Vdata1인 4개의 데이터세트들로 분할된다. Vdata1은 에러 정정을 위한 ECC의 중복 비트들을 나타낼 수 있다. Data1은 데이터 저장 스킴에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. Data2, Data3 및 Vdata1은 각각 해시 값 Dhash2, Dhash3 및 Vhash1을 생성하기 위해 개별적으로 해싱(316)되도록 선택된다. 본 명세서의 실시예들에 따르면, 인코딩된 데이터는 블록체인 네트워크가 4개보다 많은 노드를 가질 때 4개보다 많은 데이터세트로 분할될 수 있다. 일부 예들에서, 블록체인 노드들 각각은 하나보다 많은 데이터세트를 저장하고, 다른 노드들에 의해 저장되도록 할당된 데이터세트들의 나머지를 해싱할 수 있다.
이제 도 4를 참조하면, 도 4는 본 명세서의 실시예들에 따른 데이터 저장 스킴(400)의 예를 도시한다. 앞서 논의된 바와 같이, Data1은 데이터 저장 스킴(400)에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. 데이터 저장 스킴(400)에 기초하여, 블록체인 노드(304)는 Data2를 저장하고, 각각 해시 값 Dhash1, Dhash3 및 Vhash1을 생성하기 위해 Data1, Data3 및 Vdata1을 개별적으로 해싱한다. 블록체인 노드(306)는 Data3을 저장하고, 각각 해시 값 Dhash1, Dhash2 및 Vhash1을 생성하기 위해 Data1, Data2 및 Vdata1을 개별적으로 해싱한다. 블록체인 노드(308)는 Vdata1을 저장하고, 각각 해시 값 Dhash1, Dhash2 및 Dhash3을 생성하기 위해 Data1, Data2 및 Vdata3을 개별적으로 해싱한다.
도 3을 다시 참조하면, 해시 값들은 동일한 블록의 인코딩된 데이터세트들에 대응하기 때문에, 이들은 블록의 블록 ID에 의해 인덱싱될 수 있다. 예를 들어, 블록체인 노드(302)는 블록(100)과 연관된 Data1, Dhash1, Dhash2 및 Vhash1을 블록 ID 100으로 인덱싱할 수 있다. 이와 같이, 블록체인 노드(302)는 해시 값들을 그들의 대응하는 블록들에 매핑하기 위해 인덱싱된 블록 ID를 사용할 수 있다. 데이터세트들 및 해시 값들을 인덱싱하는 보다 상세한 예가 도 6의 설명에서 논의된다.
데이터 저장 스킴에 따른 블록체인 노드들(302, 304, 306, 308)에 대해 다른 데이터 저장 스킴들이 이루어질 수 있다는 것을 이해해야 한다. 일부 예들에서, 블록(100)의 인코딩된 블록 데이터는 4개보다 많은 데이터세트로 분할될 수 있다. 데이터 저장 스킴에 따른 블록체인 노드들(502, 504, 506, 508)에 대해 다른 데이터 저장 스킴들이 이루질 수 있다는 것을 이해해야 한다.
Dhash2, Dhash3 및 Vhash1을 생성 및 저장한 후에, 블록체인 노드(302)는 저장 공간을 절약하기 위해 저장소로부터 Data2, Data3 및 Vdata1을 삭제할 수 있다. 이와 같이, 각각의 블록에 대해, 블록체인 노드(302)는 전체 블록 대신에 하나의 ECC 인코딩된 데이터세트(즉, Data1) 및 3개의 해시 값들(즉, Dhash2, Dhash3 및 Vhash1)만을 저장한다. 이와 같이, 저장 공간이 상당히 감소될 수 있다. 블록(100)과 유사하게, 블록체인 노드들(304, 306, 308)에 의해 저장되는 다른 드물게 액세스되는 블록들에 대해 인코딩 및 해싱 프로세스가 수행될 수 있다.
블록체인 노드(302)는 블록(100)의 블록 데이터가 스마트 계약을 실행하기 위해 필요한 것으로 결정할 때, 데이터 저장 스킴에 따라 블록체인 노드들(304, 306, 308) 각각으로부터 Data2, Data3 및 Vdata1을 리트리빙할 수 있다. 다른 블록체인 노드들(304, 306, 308)로부터 데이터세트들을 리트리빙하기 위해, 블록체인 노드(302)는 데이터 저장 스킴에 따라 리트리빙될 데이터세트들에 대응하는 해시 값들을 송신할 수 있다.
예를 들어, Data2를 리트리빙하기 위해, 블록체인 노드(302)는 Dhash2를 블록체인 노드(304)에 송신할 수 있다. 블록체인 노드(304)가 Data2를 저장한 경우, 그는 Dhash2를 수신하는 것에 응답하여 Data2를 블록체인 노드(302)로 다시 송신할 수 있다. 블록체인 노드(304)로부터 Data2를 수신한 후, 블록체인 노드(302)는 수신된 데이터세트를 해싱하고 해시 값을 Dhash2와 비교할 수 있다. 해시 값이 Dhash2와 동일한 경우, 블록체인 노드(302)는 수신된 데이터세트가 진짜인 것으로 결정할 수 있다. 그렇지 않을 경우, 수신된 데이터세트는 진짜가 아닌 것으로 결정된다. 수신된 데이터세트가 진짜가 아닌 것으로 결정될 때, 블록체인 노드(302)는 블록체인 노드(304)를 장애 노드(또는 비잔틴 노드)로서 보고할 수 있다. 블록체인 노드(302)에 의해 수신된 진짜가 아닌 데이터의 백분율이 ECC에 의해 정정될 수 있는 에러 또는 누락 비트들의 최대 분율 이하이면, 블록(100)은 국부적으로 저장되고 수신된 데이터세트들로부터 복구될 수 있다.
전술한 바와 같이, 블록체인 네트워크들은 상태 데이터, 블록 데이터, 및 인덱스 데이터와 같은 상이한 유형들의 데이터를 저장할 수 있다. 상태 데이터는 종종 MPT 또는 고정 깊이 머클 트리(FDMT)와 같은 콘텐츠-어드레싱된 상태 트리로서 저장된다. 콘텐츠-어드레싱된 상태 트리들은 사실상 증분적이다. 즉, 계정 상태들의 변경들은 기존의 상태 트리의 값들만을 업데이트하는 대신에 새로운 트리 구조들을 추가함으로써 반영된다. 따라서, 콘텐츠-어드레싱된 상태 트리들은 블록들이 블록체인에 연속적으로 추가될 때 크기가 매우 커질 수 있다. 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) 파일 또는 다른 유사한 롤-포워드 저널 파일들을 저장할 수 있다. WAL 파일은 블록체인 노드(502)에 의해 커미트되었지만 아직 저장되지 않은 블록 데이터를 기록할 수 있다. WAL 파일을 사용하여, 원래의 블록체인 데이터는 데이터베이스 파일에 보존될 수 있는 반면, 블록체인 데이터의 변경들은 별개의 WAL 파일 내에 기입될 수 있다. 변경들을 갖는 롤-포워드에 대한 커미트는 원래의 블록체인 데이터에 대한 기입 없이도 발생할 수 있다. 이러한 배열은 변경들이 WAL 파일 내로 커미트되는 동안 블록체인 데이터의 계속되는 조작들을 허용한다. 인코딩 및 해싱 프로세스(500)를 통해 행해진 변경들을 저장하기 위해 WAL 파일을 사용함으로써, 블록체인 노드(502)는 적절할 때 배경에서 ECC를 수행하는 동안 그가 컨센서스를 위한 블록 데이터를 갖고 있다는 것을 표시할 수 있다. 이와 같이, ECC는 컨센서스 프로세스의 계산 효율 또는 레이턴시에 대한 영향을 감소시키기 위해, 블록체인 노드(302)의 계산 자원의 사용률이 낮을 때 수행될 수 있다.
일부 실시예들에서, 블록체인 노드(502)는 블록 데이터를 버퍼에 저장할 수 있다. 블록체인 노드(502)는 데이터의 크기가 미리 결정된 임계치보다 클 때 또는 버퍼가 가득 찼을 때 버퍼에 저장된 블록 데이터에 대해 ECC를 수행할 수 있다. ECC를 수행한 후에, 블록체인 노드(502)는 이하의 설명에서 논의되는 바와 같이 인코딩된 블록 데이터 및 해시 값들을 저장하기 위해 인코딩 및 해싱 프로세스(500)를 따를 수 있다.
블록(100)을 다시 예로서 사용하면, ECC를 수행한 후에, 인코딩된 블록 데이터는 데이터 저장 스킴에 기초하여 복수의 데이터세트로 분할될 수 있다. 도 3의 설명에서 논의된 예와 유사하게, 블록(100)의 인코딩된 블록 데이터는 각자가 블록체인 노드들(502, 504, 506, 508) 중 하나에 의해 저장될 Data1, Data2, Data3 및 Vdata1인 4개의 데이터세트로 분할될 수 있다. Vdata1은 ECC의 중복 비트들을 나타낼 수 있다. Data1은 데이터 저장 스킴에 따라 블록체인 노드(502)에 의해 저장되도록 선택된다. 각각 해시 값 Dhash2, Dhash3 및 Vhash1을 생성하기 위해, Data2, Data3 및 Vdata1이 개별적으로 해싱되도록 선택된다.
해시 값들은 해시 값들의 대응하는 블록의 블록 ID에 의해 인덱싱될 수 있다. 예를 들어, 블록체인 노드(502)는 블록(100)과 연관된 Data1, Dhash1, Dhash2 및 Vhash1을 블록 ID 100으로 인덱싱할 수 있다. 이와 같이, 블록체인 노드(502)는 해시 값들을 그들의 대응하는 블록들에 매핑하기 위해 인덱싱된 블록 ID를 사용할 수 있다. 데이터세트들 및 해시 값들을 인덱싱하는 보다 상세한 예가 도 6의 설명에서 논의된다.
데이터 저장 스킴에 따른 하나 이상의 블록체인 노드(502, 504, 506, 508)에 대해 다른 데이터 저장 스킴들이 이루어질 수 있다는 것을 이해해야 한다. 예를 들어, 블록(100)의 인코딩된 블록 데이터는 4개보다 많은 데이터세트로 분할될 수 있다. 블록체인 노드들(502, 504, 506, 508) 각각은 하나보다 많은 데이터세트를 저장하고, 다른 노드들에 의해 저장된 데이터세트들의 나머지를 해싱할 수 있다.
Dhash2, Dhash3 및 Vhash1을 생성한 후에, 블록체인 노드(502)는 Data1, Dhash2, Dhash3 및 Vhash1을 저장하고, 저장 공간을 절약하기 위해 저장소로부터 Data2, Data3 및 Vdata1을 삭제할 수 있다. 이와 같이, 블록체인의 각각의 블록에 대해, 블록체인 노드(502)는 저장 공간을 절약하기 위해 원래의 블록 데이터 대신에 ECC 인코딩된 블록 데이터의 하나의 데이터세트(즉, Data1) 및 3개의 해시 값(즉, Dhash2, Dhash3 및 Vhash1)만을 저장한다. 블록체인 노드(502)는 블록(100)의 블록 데이터가 스마트 계약을 실행하기 위해 필요한 것으로 결정할 때, 데이터 저장 스킴에 따라 블록체인 노드들(504, 506, 508) 각각으로부터 Data2, Data3 및 Vdata1을 리트리빙할 수 있다.
다른 블록체인 노드들(504, 506, 508)로부터 데이터세트들을 리트리빙하기 위해, 블록체인 노드(502)는 데이터 저장 스킴에 따라 리트리빙될 데이터세트들에 대응하는 해시 값들을 송신할 수 있다. 예를 들어, Data2를 리트리빙하기 위해, 블록체인 노드(502)는 Dhash2를 블록체인 노드(504)에 송신할 수 있다. 블록체인 노드(504)가 Data2를 저장하였다면, 그는 Dhash2를 수신하는 것에 응답하여 Data2를 블록체인 노드(502)로 다시 송신할 수 있다. 블록체인 노드(504)로부터 Data2를 수신한 후, 블록체인 노드(502)는 수신된 데이터세트를 해싱하고 해시 값을 Dhash2와 비교할 수 있다. 해시 값이 Dhash2와 동일한 경우, 블록체인 노드(502)는 수신된 데이터세트가 진짜인 것으로 결정할 수 있다. 그렇지 않을 경우, 수신된 데이터세트는 진짜가 아닌 것으로 결정될 수 있다. 수신된 데이터세트가 진짜가 아닌 것으로 결정될 때, 블록체인 노드(502)는 블록체인 노드(504)를 장애 노드(또는 비잔틴 노드)로서 보고할 수 있다. 블록체인 노드(502)에 의해 수신된 진짜가 아닌 데이터의 백분율이 ECC에 의해 정정될 수 있는 에러 또는 누락 비트들의 최대 분율 이하일 경우, 블록(100)은 국부적으로 저장되고 수신된 데이터세트들로부터 복구될 수 있다.
앞서 논의된 바와 같이, 인코딩 및 해싱 프로세스를 수행함으로써, 블록체인 데이터는 ECC 인코딩되고 복수의 데이터세트들로 분할될 수 있다. 저장 공간을 절약하기 위해, 각각의 블록체인 노드는 데이터 저장 스킴에 기초하여 복수의 데이터세트들 중 하나 이상의 데이터세트들 및 나머지 데이터세트들의 해시 값들을 저장할 수 있다. 저장된 데이터세트들 및 해시 값들은 블록체인 노드가 원래의 데이터를 복구하기 위해 다른 노드들로부터 데이터세트들을 리트리빙하도록 블록 ID들로 인덱싱될 수 있다.
도 6은 본 명세서의 실시예들에 따른, 블록체인 노드들을 블록체인 네트워크에 추가하는 예(600)를 도시한다. 앞서 논의된 바와 같이, 블록체인 네트워크의 저장소 소비를 효과적으로 감소시키기 위해 인코딩 및 해싱 프로세스가 수행될 수 있다. PBFT 컨센서스 프로토콜 하에서, 블록체인 노드들의 총 수가 N으로 표시되고, 장애 블록체인 노드들의 수는 f로 표시되는 경우, 블록체인 네트워크가 비잔틴 장애를 허용하기 위해서는 N>3f가 충족되어야 한다. 예를 들어, 4-노드 블록체인 네트워크에서, 블록체인 네트워크에 의해 허용가능한 장애 노드들의 최대 수는 PBFT 컨센서스 프로토콜 하에서 1이다. 이와 같이, 블록체인 노드들이 3/4 이하(즉, 원래의 데이터의 비율이 총 인코딩된 데이터의 3/4 이하임)의 코드 레이트로 원래의 블록체인 데이터(또는 원래의 데이터)에 대해 ECC를 수행하고, 각각이 인코딩된 블록체인 데이터(또는 인코딩됨)의 1/4를 저장하는 경우, 블록체인 노드들 중 하나가 장애 노드인 경우에도 원래의 데이터가 복구될 수 있다. 중복 레이트는 블록체인 네트워크의 블록체인 노드들에 의해 저장된 인코딩된 데이터 및 원래의 데이터의 총 볼륨을 원래의 데이터의 사본의 볼륨으로 나눈 값으로서 정의될 수 있다. 이 예에서, 어떠한 블록체인 노드도 원래의 데이터를 저장하지 않기 때문에, 중복 레이트는 코드 레이트(즉, 원래의 데이터로 나눈 인코딩된 데이터의 볼륨)의 역이며, 이는 4/3이다.
도시된 예(600)에서, 블록 1 내지 100이 생성될 때, 블록체인 네트워크에는 4개의 블록체인 노드인 노드 1, 2, 3 및 4가 존재한다고 가정된다. PBFT 컨센서스 프로토콜 하에서, 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수는 3이다. 도 3 및 도 5의 설명에서 논의된 바와 같이 인코딩 및 해싱 프로세스를 적용하면, 블록 1 내지 100은 각각 3/4의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록들은 각각 4개의 블록체인 노드에 의해 저장되도록 원래의 데이터의 3개의 데이터세트 및 중복 비트들의 하나의 데이터세트로 분할될 수 있다.
블록 101의 생성 동안 전체 노드로서 노드 5가 블록체인 네트워크에 추가된다. 즉, 노드 5는 블록 1 내지 블록 100의 전체 사본을 저장하지만, 블록 101의 생성으로부터 시작하여 4개의 기존의 블록체인 노드와 인코딩 및 해싱 프로세스에 참여한다. 블록체인 네트워크가 블록 101 내지 200의 생성 동안 5개의 블록체인 노드를 갖는다고 가정하면, 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수는 PBFT 컨센서스 프로토콜 하에서 4개이다. 이와 같이, 블록 101 내지 200은 각각 4/5의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록들은 각각 블록체인 네트워크 내의 5개의 블록체인 노드에 의해 저장되도록 원래의 데이터의 4개의 데이터세트 및 중복 비트들의 하나의 데이터세트로 분할될 수 있다.
블록 201의 생성 동안 전체 노드로서 노드 6이 블록체인 네트워크에 추가된다. 즉, 노드 6은 블록 1 내지 200의 전체 사본을 저장하지만, 블록 201의 생성 이후에 블록체인 네트워크의 다른 블록체인 노드들과 인코딩 및 해싱 프로세스에 참여한다. 블록체인 네트워크가 블록 201 내지 300의 생성 동안 6개의 블록체인 노드를 갖는다고 가정하면, 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수는 PBFT 컨센서스 프로토콜 하에서 5개이다. 이와 같이, 블록 201 내지 300은 각각 5/6의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록들은 각각 블록체인 네트워크 내의 6개의 블록체인 노드에 의해 저장되도록 원래의 데이터의 4개의 데이터세트 및 중복 비트들의 2개의 데이터세트로 분할될 수 있다.
블록 301의 생성 동안 전체 노드로서 노드 7이 블록체인 네트워크에 추가된다. 즉, 노드 7은 블록 1 내지 300의 전체 사본을 저장하지만, 블록 301의 생성 이후에 블록체인 네트워크의 다른 블록체인 노드들과 인코딩 및 해싱 프로세스에 참여한다. 블록체인 네트워크가 블록 301 내지 400의 생성 동안 7개의 블록체인 노드를 갖는다고 가정하면, 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수는 PBFT 컨센서스 프로토콜 하에서 5개이다. 이와 같이, 블록 301 내지 400은 각각 5/7의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록들은 각각 블록체인 네트워크 내의 7개의 블록체인 노드에 의해 저장되도록 원래의 데이터의 5개의 데이터세트 및 중복 비트들의 2개의 데이터세트로 분할될 수 있다.
블록 401의 생성 동안 전체 노드로서 노드 8이 블록체인 네트워크에 추가된다. 즉, 노드 8은 블록 1 내지 400의 전체 사본을 저장하지만, 블록 401의 생성 이후에 블록체인 네트워크의 다른 블록체인 노드들과 인코딩 및 해싱 프로세스에 참여한다. 블록체인 네트워크가 블록 401 내지 500의 생성 동안 8개의 블록체인 노드를 갖는다고 가정하면, 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수는 PBFT 컨센서스 프로토콜 하에서 6개이다. 이와 같이, 블록들 401 내지 500은 각각 3/4의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록들은 각각 블록체인 네트워크 내의 8개의 블록체인 노드에 의해 저장되도록 원래의 데이터의 6개의 데이터세트 및 중복 비트들의 2개의 데이터세트로 분할될 수 있다.
블록 501의 생성 동안 전체 노드로서 노드 9가 블록체인 네트워크에 추가된다. 즉, 노드 9는 블록 1 내지 블록 500의 전체 사본을 저장하지만, 블록 501의 생성 이후에 블록체인 네트워크의 다른 블록체인 노드들과 인코딩 및 해싱 프로세스에 참여한다.
블록 ID 중복 레이트 장애 허용한계
1 - 100 5 + (3+1)/3 6/9
101 - 200 4 + (4+1)/4 5/9
201 - 300 3 + (5+1)/5 4/9
301 - 400 2 + (5+2)/5 4/9
401 - 500 1 + (6+2)/6 3/9
표 1은 상기 예(600)에 따른 9개의 블록체인 노드를 갖는 블록체인 네트워크 하에서의 블록 1-500의 중복 레이트 및 장애 허용한계를 나타낸다. 노드 1, 2, 3 및 4는 ECC 인코딩된 블록 1 내지 100으로 분할된 데이터세트들을 저장한다. 노드 5, 6, 7, 8 및 9는 원래의 블록 1 내지 100을 저장한다. 블록 1 내지 100을 인코딩하기 위한 코드 레이트는 3/4이기 때문에, 노드 1, 2, 3 및 4는 원래의 블록들의 4/3개의 사본을 저장한다. 노드 5, 6, 7, 8 및 9 각각은 원래의 블록들의 하나의 사본를 저장한다. 따라서, 블록 1 내지 100을 저장하는 중복 레이트는 5 + 4/3이다. 장애 허용한계는 블록체인 네트워크에 의해 허용될 수 있는 장애 블록체인 노드들의 비율이다. 노드 5, 6, 7, 8 및 9는 원래의 블록 1 내지 100을 저장하기 때문에, 그들 중 어느 하나가 정직한 블록체인 노드인 한, 그는 원래의 블록들을 블록체인 네트워크의 다른 블록체인 노드들에 제공할 수 있다. 노드 5, 6, 7, 8 및 9가 모두 장애 블록체인 노드들인 경우, 데이터세트들을 저장하는 노드 1, 2, 3 및 4 중 3개는 원래의 블록들의 사본을 복구하기 위해 정직한 노드들일 필요가 있다. 따라서, 9개의 블록체인 노드 중 최대 6개는 장애 블록체인 노드들일 수 있다. 장애 허용한계는 2/3이다.
블록 101 내지 200에 대해, 노드 1, 2, 3, 4 및 5는 ECC 인코딩된 블록 101 내지 200로부터 분할된 데이터세트들을 저장한다. 노드 6, 7, 8 및 9는 원래의 블록들을 저장한다. 블록 101 내지 200을 인코딩하기 위한 코드 레이트는 4/5이기 때문에, 노드 1, 2, 3, 4 및 5는 원래의 블록들의 5/4개의 사본을 저장한다. 노드 6, 7, 8 및 9 각각은 원래의 블록들의 하나의 사본를 저장한다. 따라서, 블록 101 내지 200을 저장하는 중복 레이트는 4 + 5/4이다. 9개의 블록체인 노드 중 최대 5개는 장애 블록체인 노드들일 수 있다. 장애 허용한계는 5/9이다.
블록 201 내지 300에 대해, 노드들 1, 2, 3, 4, 5 및 6은 ECC 인코딩된 블록 201 내지 300으로부터 분할된 데이터세트들을 저장한다. 노드 7, 8 및 9는 원래의 블록들을 저장한다. 블록 201 내지 300을 인코딩하기 위한 코드 레이트는 2/3이기 때문에, 노드 1, 2, 3, 4, 5 및 6은 원래의 블록들의 6/5개의 사본을 저장한다. 노드 7, 8 및 9 각각은 원래의 블록들의 하나의 사본을 저장한다. 따라서, 블록 201 내지 300을 저장하는 중복 레이트는 3 + 6/5이다. 9개의 블록체인 노드 중 최대 4개는 장애 블록체인 노드들일 수 있다. 장애 허용한계는 4/9이다.
블록 301 내지 400에 대해, 노드 1, 2, 3, 4, 5, 6 및 7은 ECC 인코딩된 블록 301 내지 400으로 분할된 데이터세트들을 저장한다. 노드 8 및 9는 원래의 블록들을 저장한다. 블록 301 내지 400을 인코딩하기 위한 코드 레이트는 5/7이기 때문에, 노드 1, 2, 3, 4, 5, 6 및 7은 원래의 블록들의 7/5개의 사본을 저장한다. 노드 8 및 9 각각은 원래의 블록들의 하나의 사본을 저장한다. 따라서, 블록 301 내지 400을 저장하는 중복 레이트는 2 + 7/5이다. 9개의 블록체인 노드 중 최대 4개는 장애 블록체인 노드들일 수 있다. 장애 허용한계는 4/9이다.
블록 401 내지 500에 대해, 노드 1, 2, 3, 4, 5, 6, 7 및 8은 ECC 인코딩된 블록 301 내지 400으로 분할된 데이터세트들을 저장한다. 노드 9는 원래의 블록들을 저장한다. 블록 401 내지 500을 인코딩하기 위한 코드 레이트는 3/4이기 때문에, 노드 1, 2, 3, 4, 5, 6, 7 및 8은 원래의 블록들의 4/3개의 사본을 저장한다. 노드 9는 원래의 블록들의 하나의 사본을 저장한다. 따라서, 블록 401 내지 500을 저장하는 중복 레이트는 1 + 7/5이다. 9개의 블록체인 노드 중 최대 3개는 장애 블록체인 노드들일 수 있다. 장애 허용한계는 1/3이다.
블록체인 노드들이 블록 1 내지 500에 대해 ECC 인코딩을 재수행하는 것에 동의하는 경우, 9개의 블록체인 노드의 블록체인 네트워크에 의해 허용가능한 장애 블록체인 노드들의 최대 수는 2이기 때문에, ECC의 최대 코드 레이트는 7/9이다. 인코딩 및 해싱 프로세스를 수행한 후에, 장애 허용한계는 2/9로 감소된다. 한편, 중복 레이트는 프로세스를 재수행하기 전의 중복 레이트보다 상당히 더 낮은 9/7로 감소된다. 따라서, 원래의 블록들이 적어도 하나의 블록체인 노드에 저장될 때 인코딩 및 해싱 프로세스를 재수행하는 것은 시스템의 중복 레이트 및 저장소 소비를 효과적으로 감소시킨다.
일부 경우들에서, 블록체인 노드는 그가 저장하는 블록체인 데이터가 미리 결정된 데이터 볼륨 임계치를 초과하는 것으로 결정할 수 있다. 이러한 경우들에서, 블록체인 노드는 블록체인 네트워크의 중복 레이트를 감소시키기 위해 인코딩 및 해싱 프로세스를 하나 이상의 블록들에 대해 재수행하기 위한 다른 블록체인 노드들에 대한 요청을 개시할 수 있다. 일부 경우들에서, 인코딩 및 해싱 프로세스를 재수행하기 위한 요청은, 예를 들어 블록체인 네트워크의 중복 레이트가 미리 결정된 임계치보다 크다는 결정에 응답하여, 블록체인 네트워크 외부의 신뢰 노드에 의해 개시될 수 있다. 예를 들어, 예 600에 도시된 바와 같은 9개의 블록체인 노드를 갖는 블록체인 네트워크의 경우, PBFT 프로토콜 하의 최소 중복 레이트는 9/7이다. 신뢰 노드는 하나 이상의 블록의 중복 레이트가 2 이상일 때 요청을 개시할 수 있다. 일부 실시예들에서, 블록들은 그들의 중복 레이트에 기초하여 인코딩 및 해싱 프로세스를 재수행하도록 선택될 수 있다. 더 높은 중복 레이트를 갖는 블록들은 저장소에 대한 더 큰 절약으로 인해 더 높은 우선순위로 선택될 수 있다.
인코딩 및 해싱 프로세스를 재수행하기 위한 요청은 허용 가능한 장애 블록체인 노드들의 최대 수(즉, f/(3f+1))를 고려하는 ECC를 수행하기 위한 최대 코드 레이트를 포함할 수 있다. 요청은 또한 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록을 복수의 데이터세트들로 분할하고 복수의 데이터세트들을 블록체인 네트워크의 블록체인 노드들에 할당하는 명령어들을 포함할 수 있다. 예를 들어, 명령어들은 각각의 인코딩된 블록에게 9개의 데이터세트로 분할되도록 명령할 수 있고, 각각의 데이터세트는 9개의 블록체인 노드 중 하나에 할당될 수 있다. 일부 경우들에서, 명령어들은 도 3 내지 5의 설명에서 논의된 바와 같은 데이터 저장 스킴에 의해 제공된다.
요청이 블록체인 노드에 의해 개시되는 경우, 블록체인 네트워크는 요청에 포함된 명령어들에 따라 ECC를 재수행하는 컨센서스에 도달하기 위해 PBFT 알고리즘의 3상 프로세스(사전 준비, 준비 및 커미트 위상들)를 통과할 수 있다. 요청을 개시하는 블록체인 노드는 PBFT 알고리즘을 수행하기 위한 주 블록체인 노드로서 작용할 수 있다. 요청을 수신하는 임의의 블록체인 노드는 주 블록체인 노드로부터 하나 이상의 블록을 식별하고 리트리빙할 수 있다.
블록체인 노드들은 또한 요청이 권한 증명을 갖는 신뢰 노드로부터 수신되는 경우 명령어들에 따라 ECC를 직접 재수행할 수 있다. 이러한 경우에, 요청은 또한 하나 이상의 블록을 저장하는 적어도 하나의 블록체인 노드를 식별하는 식별들을 포함할 수 있다. 다음으로, 요청을 수신하는 블록체인 노드는 요청에 기초하여 하나 이상의 블록들을 저장하는 블록체인 네트워크의 적어도 하나의 블록체인 노드를 식별하고, 적어도 하나의 블록체인 노드 중 하나로부터 하나 이상의 블록들을 리트리빙할 수 있다.
하나 이상의 블록들을 리트리빙하기 위해, 블록체인 노드는 하나 이상의 블록들의 해시 값들을 적어도 하나의 블록체인 노드 중 하나에 송신할 수 있다. 일부 예들에서, 해시 값들은 블록체인의 블록 헤더들에 저장된다. 하나 이상의 블록들을 수신한 후에, 블록체인 노드는 수신된 하나 이상의 블록들의 해시 값들을 그가 송신한 대응하는 해시 값들과 비교함으로써 수신된 하나 이상의 블록들이 인증되었는지를 결정할 수 있다. 해시 값들이 동일하면, 수신된 하나 이상의 블록들은 진짜인 것로서 결정될 수 있다. 그렇지 않으면, 블록체인 노드는 하나 이상의 블록들이 수신되는 블록체인 노드를 장애 노드로서 보고할 수 있다.
다음으로, 블록체인 노드는 하나 이상의 인코딩된 블록들을 생성하기 위해 요청에서 제공된 코드 레이트에 기초하여 하나 이상의 블록들의 ECC를 수행할 수 있다. 도 6에 도시된 예에서, 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록에 대해, 블록체인 노드는 인코딩된 블록을 명령어들에 따라 9개의 데이터세트들로 분할할 수 있고, 명령어들에 따라 블록체인 노드에 할당된 9개의 데이터세트들 중 적어도 하나를 저장할 수 있다. 이어서, 블록체인 노드들은 복수의 데이터세트 중 나머지 8개를 해싱하여, 나머지 8개의 데이터세트에 대응하는 해시 값들을 생성하고, 해시 값들을 저장하고, 하나 이상의 블록을 삭제할 수 있다. 그 후, 하나 이상의 블록에 대한 인코딩 및 해싱 프로세스가 완료된다.
모든 이용가능한 블록들에 대해 인코딩 및 해싱 프로세스가 완료된 후에, 블록체인 네트워크의 중복 레이트가 여전히 미리 결정된 데이터 저장 임계치를 초과하거나 블록체인 노드의 저장소 소비가 미리 결정된 데이터 저장소 임계치보다 큰 경우, 블록체인 노드는 블록체인 네트워크에 추가되는 새로운 블록체인 노드들에 응답하여 인코딩 및 해싱 프로세스의 다른 라운드를 트리거링하도록 다른 블록체인 노드들에게 통지할 수 있다. 예를 들어, 8개의 블록체인 노드들이 노드 9가 추가되기 전에 블록 1 내지 400에 대해 인코딩 및 해싱 프로세스를 수행하고, 블록체인 노드의 저장소 소비가 여전히 노드 8의 저장 용량의 90% 보다 크면, 노드 8은 노드 8이 추가된 후에 생성된 블록들에 대해 인코딩 및 해싱 프로세스의 다른 라운드를 수행하도록 노드 1 내지 7에 통지를 송신할 수 있다.
도 7은 본 명세서의 실시예들에 따른 실행될 수 있는 프로세스(700)의 예를 도시한다. 편의상, 프로세스(700)는 블록체인 노드에 의해 수행되는 것으로 설명될 것이다. 블록체인 노드는 하나 이상의 위치에 위치하고 본 명세서에 따라 적절히 프로그래밍되는 컴퓨터 또는 하나 이상의 컴퓨터의 시스템일 수 있다. 예를 들어, 블록체인 노드는 컴퓨팅 시스템 내의 컴퓨팅 디바이스일 수 있고, 예를 들어 적절하게 프로그래밍된 도 1의 컴퓨팅 시스템(106, 108)은 프로세스(700)를 수행할 수 있다.
702에서, 블록체인 노드는 블록체인의 하나 이상의 블록들에 ECC를 수행하기 위한 요청을 수신한다. 일부 경우들에서, 요청은 코드 레이트 및 명령어들을 포함하며, 명령어들은 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록을 복수의 데이터세트들로 분할하고 복수의 데이터세트들을 블록체인 네트워크의 블록체인 노드들에 할당하기 위한 것이다.
704에서, 블록체인 노드는 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터에 기초하여 하나 이상의 블록들을 획득한다. 일부 경우들에서, 적어도 하나의 블록체인 노드로부터 수신되는 블록체인 데이터는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할되는 복수의 데이터세트들이고, 블록체인 노드는, 블록체인 노드에 국부적으로 저장되는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할되는 하나 이상의 데이터세트들을 식별하고, 국부적으로 저장되는 하나 이상의 데이터세트들 및 적어도 하나의 블록체인 노드로부터 수신되는 복수의 데이터세트들에 기초하여 하나 이상의 블록들을 디코딩함으로써 하나 이상의 블록들을 획득한다.
일부 경우들에서, 적어도 하나의 블록체인 노드는 적어도 하나의 전체 블록체인 노드이고, 블록체인 노드는 적어도 하나의 전체 블록체인 노드로부터 하나 이상의 블록들을 리트리빙함으로써 하나 이상의 블록들을 획득한다.
706에서, 블록체인 노드는 하나 이상의 블록들의 ECC를 수행하여 하나 이상의 인코딩된 블록들을 생성하고, 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 블록체인 네트워크의 블록체인 노드들의 총 수와 동일하다.
일부 경우들에서, 하나 이상의 블록들은 제1 하나 이상의 블록들이고, 제1 하나 이상의 블록들을 리트리빙하는 단계는 제1 하나 이상의 블록들의 해시 값들을 적어도 하나의 전체 블록체인 노드로 송신하는 단계, 적어도 하나의 전체 블록체인 노드로부터 제2 하나 이상의 블록들을 수신하는 단계, 및 제2 하나 이상의 블록들의 해시 값들이 제1 하나 이상의 블록들의 해시 값들과 동일한 경우에 제2 하나 이상의 블록들이 진짜인 것으로 결정하는 단계를 더 포함한다.
일부 경우들에서, 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록에 대해, 블록체인 노드는 또한, 인코딩된 블록을 명령어들에 따라 복수의 데이터세트들로 분할할 수 있고, 명령어들에 따라 블록체인 노드에 할당된 복수의 데이터세트들 중 적어도 하나를 저장할 수 있다.
일부 경우들에서, 블록체인 노드는 또한, 블록체인 노드에 할당된 복수의 데이터세트 중 적어도 하나의 데이터세트 이외의 복수의 데이터세트의 나머지를 해싱하여, 복수의 데이터세트의 나머지에 대응하는 해시 값들을 생성하고, 해시 값들을 저장하고, 하나 이상의 블록 및 복수의 데이터세트의 나머지를 삭제할 수 있다.
일부 경우들에서, 요청은 제1 요청이고 하나 이상의 인코딩된 블록들은 제1 하나 이상의 인코딩된 블록들이고, 블록체인 노드는 또한, 하나 이상의 블록들을 저장하는 새로운 블록체인 노드가 블록체인 네트워크에 추가되는 것에 응답하여 블록체인의 하나 이상의 블록들에 대해 ECC를 수행하기 위한 제2 요청을 수신하고, 새로운 블록체인 노드로부터 하나 이상의 블록들을 리트리빙하고, 하나 이상의 블록들의 ECC를 수행하여 제2 하나 이상의 인코딩된 블록들을 생성할 수 있고, 제2 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 새로운 블록체인 노드가 추가된 후의 블록체인 노드들의 총 수와 동일하다.
일부 경우들에서, 새로운 블록체인 노드들은 블록체인의 사본을 저장하는 전체 노드들이다. 일부 경우들에서, ECC는 블록체인 노드의 계산 자원의 사용률이 미리 결정된 값 이하일 때 수행된다. 일부 경우들에서, ECC는 하나 이상의 블록에 중복 비트들을 추가함으로써 수행되는 소거 코딩이다.
도 8은 본 명세서의 실시예들에 따른 장치(800)의 모듈들의 예의 도면이다. 장치(800)는 블록체인 데이터를 저장하고 처리하도록 구성되는 블록체인 노드의 일 실시예의 예일 수 있다. 장치(800)는 전술한 실시예들에 대응할 수 있고, 장치(800)는 블록체인의 하나 이상의 블록들에 대해 ECC를 수행하기 위한 요청을 수신하는 수신 모듈(802), 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신된 블록체인 데이터에 기초하여 하나 이상의 블록들을 획득하는 획득 모듈(804), 및 하나 이상의 인코딩된 블록들을 생성하기 위해 하나 이상의 블록들의 ECC를 수행하는 인코딩 모듈(806)을 포함하고, 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구된 정직한 블록체인 노드들의 최소 수 및 블록체인 네트워크의 블록체인 노드들의 총 수와 동일하다.
일부 실시예들에서, 적어도 하나의 블록체인 노드로부터 수신되는 블록체인 데이터는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할되는 복수의 데이터세트들이고, 획득 모듈(804)은, 블록체인 노드에 국부적으로 저장되는 하나 이상의 블록들의 ECC 인코딩된 버전으로부터 분할되는 하나 이상의 데이터세트들을 식별하고, 국부적으로 저장되는 하나 이상의 데이터세트들 및 적어도 하나의 블록체인 노드로부터 수신되는 복수의 데이터세트들에 기초하여 하나 이상의 블록들을 디코딩하는 것을 추가로 수행한다.
일부 실시예들에서, 적어도 하나의 블록체인 노드는 적어도 하나의 전체 블록체인 노드이고, 획득 모듈은 적어도 하나의 전체 블록체인 노드로부터 하나 이상의 블록들을 리트리빙하는 것을 추가로 수행한다.
일부 실시예들에서, 하나 이상의 블록들은 제1 하나 이상의 블록들이고, 제1 하나 이상의 블록들을 리트리빙하는 단계는, 제1 하나 이상의 블록들의 해시 값들을 적어도 하나의 전체 블록체인 노드로 송신하는 단계, 적어도 하나의 전체 블록체인 노드로부터 제2 하나 이상의 블록들을 수신하는 단계, 및 제2 하나 이상의 블록들의 해시 값들이 제1 하나 이상의 블록들의 해시 값들과 동일한 경우에 제2 하나 이상의 블록들이 진짜인 것으로 결정하는 단계를 더 포함한다.
일부 실시예들에서, 요청은 코드 레이트 및 명령어들을 포함하고, 명령어들은 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록을 복수의 데이터세트들로 분할하고 복수의 데이터세트들을 블록체인 네트워크의 블록체인 노드들에 할당하기 위한 것이다.
일부 실시예들에서, 하나 이상의 인코딩된 블록들의 각각의 인코딩된 블록에 대해, 장치(800)는, 명령어들에 따라 인코딩된 블록을 복수의 데이터세트들로 분할하기 위한 분할 서브모듈, 및 명령어들에 따라 블록체인 노드에 할당된 복수의 데이터세트들 중 적어도 하나를 저장하기 위한 저장 서브모듈을 더 포함한다.
일부 실시예들에서, 장치(800)는 블록체인 노드에 할당된 복수의 데이터세트 중 적어도 하나 이외의 복수의 데이터세트의 나머지를 해싱하여 복수의 데이터세트 중 나머지에 대응하는 해시 값들을 생성하기 위한 해싱 서브모듈, 해시 값들을 저장하기 위한 저장 서브모듈, 및 하나 이상의 블록들 및 복수의 데이터세트들의 나머지를 삭제하기 위한 삭제 서브모듈을 더 포함한다.
일부 실시예들에서, 요청은 제1 요청이고, 하나 이상의 인코딩된 블록들은 제1 하나 이상의 인코딩된 블록들이고, 수신 서브모듈(802)은 또한, 하나 이상의 블록들을 저장하는 새로운 블록체인 노드가 블록체인 네트워크에 추가되는 것에 응답하여, 블록체인의 하나 이상의 블록들에 대해 ECC를 수행하기 위한 제2 요청을 수신하고, 리트리빙 서브모듈은 또한 새로운 블록체인 노드로부터 하나 이상의 블록들을 리트리빙하고, 인코딩 모듈(806)은 또한, 제2 하나 이상의 인코딩된 블록들을 생성하기 위해 하나 이상의 블록들의 ECC를 수행하며, 제2 하나 이상의 인코딩된 블록들의 코드 레이트는 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드들의 최소 수 및 새로운 블록체인 노드가 추가된 후의 블록체인 노드들의 총 수와 동일하다.
일부 실시예들에서, 새로운 블록체인 노드들은 블록체인의 사본을 저장하는 전체 노드들이다. 일부 실시예들에서, ECC는 블록체인 노드의 계산 자원의 사용률이 미리 결정된 값 이하일 때 수행된다. 일부 실시예들에서, ECC는 하나 이상의 블록에 중복 비트들을 추가함으로써 수행되는 소거 코딩이다.
이전의 실시예들에 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시예 디바이스는 컴퓨터이고, 컴퓨터는 퍼스널 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 개인 휴대 단말기, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 송신 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 이들 디바이스들의 임의의 조합일 수 있다.
장치 내의 각각의 모듈의 기능들 및 역할들의 실시예 프로세스에 대해, 이전의 방법에서의 대응하는 단계들의 실시예 프로세스가 참조될 수 있다. 여기서는 간소화를 위해 상세들이 생략된다.
장치 실시예는 기본적으로 방법 실시예에 대응하기 때문에, 관련 부분들에 대해서는 방법 실시예에서의 관련 설명들이 참조될 수 있다. 이전에 설명된 장치 실시예는 단지 예이다. 개별적인 부분들로서 설명된 모듈들은 물리적으로 분리될 수 있거나 분리되지 않을 수 있고, 모듈들로서 디스플레이된 부분들은 물리적 모듈들일 수 있거나 그렇지 않을 수 있거나, 하나의 위치에 위치될 수 있거나, 다수의 네트워크 모듈들에 분산될 수 있다. 모듈들의 일부 또는 전부는 본 명세서의 해결책들의 목적들을 달성하기 위한 실제 요구들에 기초하여 선택될 수 있다. 본 기술분야의 통상의 기술자는 창의적인 노력 없이도 본 출원의 실시예들을 이해하고 구현할 수 있다.
다시 도 8을 참조하면, 이 도면은 블록체인 노드의 내부 기능 모듈 및 구조를 예시하는 것으로서 해석될 수 있다. 실행 본체는 본질적으로 전자 디바이스일 수 있고, 전자 디바이스는 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행가능한 명령어를 저장하도록 구성된 하나 이상의 컴퓨터 판독가능한 메모리를 포함한다. 일부 실시예들에서, 하나 이상의 컴퓨터 판독가능한 메모리는 하나 이상의 프로세서에 결합되고, 본 명세서에서 설명된 바와 같은 알고리즘, 방법, 기능, 프로세스, 흐름 및 절차를 수행하기 위해 하나 이상의 프로세서에 의해 실행가능한 프로그래밍 명령어들을 저장한다. 본 명세서는 또한 하나 이상의 프로세서에 결합되고, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 본 명세서에 제공된 방법들의 실시예들에 따라 동작들을 수행하게 하는 명령어들을 저장한 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 제공한다.
본 명세서는 또한 본 명세서에 제공된 방법들을 구현하기 위한 시스템을 제공한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 명령어들을 저장한 컴퓨터 판독가능 저장 매체를 포함하고, 명령어들은 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 본 명세서에 제공된 방법들의 실시예들에 따라 동작들을 수행하게 한다.
본 명세서에서 설명된 본 발명의 실시예들, 및 액션들 및 동작들은 디지털 전자 회로에서, 유형적으로 구현되는 컴퓨터 소프트웨어 또는 펌웨어에서, 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 컴퓨터 하드웨어에서, 또는 이들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에서 설명된 본 발명의 실시예들은 데이터 처리 장치에 의한 실행을 위해 또는 그의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어 상에 인코딩된 하나 이상의 컴퓨터 프로그램들, 예를 들어 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 명령어들을 인코딩하거나 저장한 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 자기 광학, 또는 광학 디스크, 고체 상태 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 유형의 매체와 같은 유형적인 비일시적 컴퓨터 판독가능 매체일 수 있다. 대안적으로, 또는 추가적으로, 캐리어는 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위해 정보를 인코딩하기 위해 생성되는 머신 생성 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 이들의 일부일 수 있다. 컴퓨터 저장 매체는 전파 신호가 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트 또는 코드로서 또한 지칭될 수 있거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 해석되는 언어들, 또는 선언 또는 절차 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 독립형 프로그램 또는 모듈, 컴포넌트, 엔진, 서브루틴 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛을 포함하는 임의의 형태로 배치될 수 있고, 환경은 하나 이상의 위치들에서 데이터 통신 네트워크에 의해 상호연결된 하나 이상의 컴퓨터들을 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 그럴 필요는 없다. 컴퓨터 프로그램은 다른 프로그램 또는 데이터, 예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트를 보유하는 파일의 일부에, 해당 프로그램에 전용화된 단일 파일에, 또는 다수의 조정된 파일들, 예를 들어 하나 이상의 모듈, 서브 프로그램 또는 코드의 부분들을 저장하는 파일들에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서들은 예로서 범용 마이크로프로세서 및 특수 목적 마이크로프로세서 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 결합된 비일시적 컴퓨터 판독가능 매체로부터 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어들을 수신할 것이다.
"데이터 처리 장치"라는 용어는 예로서 프로그래밍 가능 프로세서, 컴퓨터 또는 다수의 프로세서 또는 컴퓨터를 포함하는, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 또는 머신을 포함한다. 데이터 처리 장치는 특수 목적 논리 회로, 예를 들어 필드 프로그래머블 게이트 어레이(FPGA), 주문형 집적회로(ASIC), 또는 그래픽 처리 유닛(GPU)을 포함할 수 있다. 장치는 또한, 하드웨어에 부가하여, 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에서 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 동작들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 컴퓨터들 또는 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 논리 회로, 예를 들어 FPGA, ASIC 또는 GPU에 의해, 또는 특수 목적 논리 회로와 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들 또는 양쪽 모두, 또는 임의의 다른 종류의 중앙 처리 유닛에 기초할 수 있다. 일반적으로, 중앙 처리 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하기 위한 중앙 처리 유닛, 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 처리 유닛 및 메모리는 특수 목적 논리 회로에 의해 보완되거나, 그에 통합될 수 있다.
일반적으로, 컴퓨터는 또한, 하나 이상의 저장 디바이스를 포함하거나, 그로부터 데이터를 수신하거나 그에게 데이터를 송신하도록 동작가능하게 결합될 수 있다. 저장 디바이스들은 예를 들어 자기, 자기 광학 또는 광 디스크들, 고체 상태 드라이브들, 또는 임의의 다른 유형의 비일시적인 컴퓨터 판독 가능 매체일 수 있다. 그러나, 컴퓨터는 이러한 디바이스들을 가질 필요는 없다. 따라서, 컴퓨터는 국부적 및/또는 원격적인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 결합될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 통합 컴포넌트인 하나 이상의 국부적 메모리들을 포함할 수 있거나, 컴퓨터는 클라우드 네트워크 내에 있는 하나 이상의 원격 메모리들에 결합될 수 있다. 더욱이, 컴퓨터는, 몇 가지 예를 들면, 다른 디바이스, 예컨대, 모바일 전화, 개인 휴대 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대용 저장 디바이스, 예컨대, 유니버설 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다.
컴포넌트들은 상호적으로, 예를 들어 직접 또는 하나 이상의 중간 컴포넌트들을 통해 서로 전기적으로 또는 광학적으로 연결되는 것에 의해 서로 "결합"될 수 있다. 컴포넌트들 중 하나가 다른 컴포넌트 내에 통합되면 컴포넌트들은 또한 서로 "결합"될 수 있다. 예를 들어, 프로세서에 통합되는 저장 컴포넌트(예를 들어, L2 캐시 컴포넌트)는 프로세서에 "결합"된다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 발명의 실시예들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어 액정 디스플레이(LCD) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있는 입력 디바이스, 예를 들어 키보드 및 포인팅 디바이스, 예를 들어 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현되거나 그와 통신하도록 구성될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들도 사용될 수 있으며, 예를 들면, 사용자에게 제공되는 피드백은 임의 형태의 감지 피드백, 예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있으며, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 송신하고 그로부터 문서들을 수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 사용자의 디바이스 상의 웹 브라우저에 웹 페이지들을 송신함으로써, 또는 사용자 디바이스, 예를 들어 스마트폰 또는 전자 태블릿 상에서 실행 중인 앱과 상호작용함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지들 또는 다른 형태의 메시지를 개인용 디바이스, 예를 들어 메시징 애플리케이션을 실행하고 있는 스마트폰에 송신하고, 답례로 사용자로부터 응답 메시지들을 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치들 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "~ 하도록 구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은 시스템이 동작시에 시스템으로 하여금 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 설치했다는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은 하나 이상의 프로그램이 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수 목적 논리 회로가 특정한 동작들 또는 액션들을 수행하도록 구성된다는 것은 회로가 동작들 또는 액션들을 수행하는 전자 논리를 갖는다는 것을 의미한다.
본 명세서는 많은 구체적인 실시예 상세들을 포함하지만, 이들은 청구항들 자체에 의해 정의되는, 청구되고 있는 것의 범위를 제한하는 것으로 해석될 게 아니라, 오히려 특정 실시예들에 고유할 수 있는 특징들의 설명들로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 명세서에서 설명되는 특정 특징들은 또한 단일 실시예에서 조합하여 실현될 수 있다. 반대로, 단일 실시예들의 맥락에서 설명되는 다양한 특징들은 또한 다수의 실시예들에서 개별적으로 또는 임의의 적절한 하위조합으로 실현될 수 있다. 더욱이, 특징들이 특정 조합들로 작용하는 것으로 위에서 설명될 수 있고, 심지어 초기에는 그와 같이 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우들에서 조합으로부터 삭제될 수 있고, 청구항은 하위조합 또는 하위조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면들에 도시되고 특정 순서로 청구항들에 기재되지만, 이것은 바람직한 결과들을 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적으로 수행되거나 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황들에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 전술한 실시예들의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 그러한 분리를 모든 실시예에서 요구하는 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합될 수 있거나 다수의 소프트웨어 제품들로 패키지화될 수 있는 것으로 이해되어야 한다.
본 발명의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있지만, 여전히 바람직한 결과들을 달성할 수 있다. 일례로서, 첨부 도면들에 도시된 프로세서들은 바람직한 결과들을 달성하기 위해 반드시 도시된 특정 순서 또는 순차적 순서를 요구하지는 않는다. 일부 경우들에서는, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (13)

  1. 블록체인 네트워크의 블록체인 노드에 의해 수행되는 블록체인 데이터를 처리하기 위한 컴퓨터 구현 방법으로서,
    블록체인의 하나 이상의 블록의 중복 레이트(redundancy rate)를 감소시키도록 상기 하나 이상의 블록에 대해 에러 정정 코딩(ECC; error correction coding)을 수행하도록 하기 위한 요청을 수신하는 단계 - 상기 중복 레이트는 상기 블록체인 네트워크의 블록체인 노드들에 의해 저장된 인코딩된 데이터 및 원래의 데이터의 총 볼륨을 상기 원래의 데이터의 볼륨으로 나눈 값이고, 상기 요청은 상기 하나 이상의 블록의 중복 레이트가 미리 결정된 임계치보다 크다고 결정하는 것에 응답하여 개시됨 - ;
    상기 블록체인 네트워크의 적어도 하나의 블록체인 노드로부터 수신되는 블록체인 데이터에 기초하여 상기 하나 이상의 블록을 획득하는 단계; 및
    상기 하나 이상의 블록의 ECC를 수행하여, 하나 이상의 인코딩된 블록을 생성하는 단계 - 상기 하나 이상의 인코딩된 블록의 코드 레이트는, 상기 블록체인 네트워크에 의해 요구되는 정직한(honest) 블록체인 노드의 최소 수와 상기 블록체인 네트워크의 블록체인 노드의 총 수의 분수값(fraction) 이하임 -
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 적어도 하나의 블록체인 노드로부터 수신되는 상기 블록체인 데이터는, 상기 하나 이상의 블록의 ECC 인코딩된 버전으로부터 분할되는 복수의 데이터세트이고, 상기 하나 이상의 블록을 획득하는 단계는,
    상기 블록체인 노드에 국부적으로 저장되는 상기 하나 이상의 블록의 ECC 인코딩된 버전으로부터 분할되는 하나 이상의 데이터세트를 식별하는 단계; 및
    국부적으로 저장되는 상기 하나 이상의 데이터세트 및 상기 적어도 하나의 블록체인 노드로부터 수신되는 상기 복수의 데이터세트에 기초하여 상기 하나 이상의 블록을 디코딩하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 적어도 하나의 블록체인 노드는 적어도 하나의 전체(full) 블록체인 노드이고, 상기 하나 이상의 블록을 획득하는 단계는, 상기 적어도 하나의 전체 블록체인 노드로부터 상기 하나 이상의 블록을 리트리빙(retrieving)하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 하나 이상의 블록은 제1 하나 이상의 블록이고, 상기 제1 하나 이상의 블록을 리트리빙하는 단계는,
    상기 제1 하나 이상의 블록의 해시 값을 상기 적어도 하나의 전체 블록체인 노드에 전송하는 단계;
    상기 적어도 하나의 전체 블록체인 노드로부터 제2 하나 이상의 블록을 수신하는 단계; 및
    상기 제2 하나 이상의 블록의 해시 값이 상기 제1 하나 이상의 블록의 해시 값과 동일한 경우, 상기 제2 하나 이상의 블록이 진짜인(authentic) 것으로 결정하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  5. 제1항에 있어서, 상기 요청은 상기 코드 레이트, 및 상기 하나 이상의 인코딩된 블록 각각을 복수의 데이터세트로 분할하고 상기 복수의 데이터세트를 상기 블록체인 네트워크의 블록체인 노드에 할당하기 위한 명령어를 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 하나 이상의 인코딩된 블록의 각 인코딩된 블록에 대해:
    상기 명령어에 따라 상기 인코딩된 블록을 상기 복수의 데이터세트로 분할하는 단계; 및
    상기 명령어에 따라 상기 블록체인 노드에 할당된 상기 복수의 데이터세트 중 적어도 하나를 저장하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 블록체인 노드에 할당된 상기 복수의 데이터세트 중 상기 적어도 하나 이외의 상기 복수의 데이터세트의 나머지를 해싱하여, 상기 복수의 데이터세트의 나머지에 대응하는 해시 값을 생성하는 단계;
    상기 해시 값을 저장하는 단계; 및
    상기 하나 이상의 블록 및 상기 복수의 데이터세트의 나머지를 삭제하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 요청은 제1 요청이고, 상기 하나 이상의 인코딩된 블록은 제1 하나 이상의 인코딩된 블록이고, 상기 방법은,
    상기 하나 이상의 블록을 저장하는 새로운 블록체인 노드가 상기 블록체인 네트워크에 추가되는 데 응답하여, 블록체인의 상기 하나 이상의 블록에 대해 ECC를 수행하도록 하기 위한 제2 요청을 수신하는 단계;
    상기 새로운 블록체인 노드로부터 상기 하나 이상의 블록을 리트리빙하는 단계; 및
    상기 하나 이상의 블록의 ECC를 수행하여, 제2 하나 이상의 인코딩된 블록을 생성하는 단계 - 상기 제2 하나 이상의 인코딩된 블록의 코드 레이트는, 상기 블록체인 네트워크에 의해 요구되는 정직한 블록체인 노드의 최소 수와 상기 새로운 블록체인 노드가 추가된 후의 블록체인 노드의 총 수의 분수값 이하임 -
    를 더 포함하는, 컴퓨터 구현 방법.
  9. 제8항에 있어서, 상기 새로운 블록체인 노드는, 상기 블록체인의 사본을 저장하는 전체 노드인, 컴퓨터 구현 방법.
  10. 제1항에 있어서, 상기 ECC는 상기 블록체인 노드의 계산 자원의 사용률이 미리 결정된 값 이하일 때 수행되는, 컴퓨터 구현 방법.
  11. 제1항에 있어서, 상기 ECC는, 상기 하나 이상의 블록에 중복 비트를 추가함으로써 수행되는 소거 코딩인, 컴퓨터 구현 방법.
  12. 블록체인 데이터를 처리하기 위한 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고, 제1항 내지 제11항 중 어느 한 항의 방법을 수행하기 위해 상기 하나 이상의 프로세서에 의해 실행가능한 명령어를 저장한 하나 이상의 컴퓨터 판독가능 메모리
    를 포함하는, 블록체인 데이터를 처리하기 위한 시스템.
  13. 블록체인 데이터를 처리하기 위한 장치로서, 제1항 내지 제11항 중 어느 한 항의 방법을 수행하기 위한 복수의 모듈을 포함하는, 블록체인 데이터를 처리하기 위한 장치.
KR1020207031495A 2019-11-13 2019-11-13 에러 정정 코드에 기초하는 동적 블록체인 데이터 저장 KR102430135B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/118180 WO2020035093A2 (en) 2019-11-13 2019-11-13 Dynamic blockchain data storage based on error correction code

Publications (2)

Publication Number Publication Date
KR20210058746A KR20210058746A (ko) 2021-05-24
KR102430135B1 true KR102430135B1 (ko) 2022-08-05

Family

ID=69525953

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031495A KR102430135B1 (ko) 2019-11-13 2019-11-13 에러 정정 코드에 기초하는 동적 블록체인 데이터 저장

Country Status (9)

Country Link
US (1) US11030044B2 (ko)
EP (1) EP3769235B1 (ko)
JP (1) JP7159348B2 (ko)
KR (1) KR102430135B1 (ko)
CN (1) CN111386519B (ko)
AU (1) AU2019321746A1 (ko)
CA (1) CA3098936A1 (ko)
SG (1) SG11202010722RA (ko)
WO (1) WO2020035093A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11606205B2 (en) 2021-05-28 2023-03-14 International Business Machines Corporation Causal total order broadcast protocols using trusted execution environments
US11665067B2 (en) 2021-05-28 2023-05-30 International Business Machines Corporation Managing reconfigurations of distributed computing systems
US11706320B2 (en) * 2021-05-28 2023-07-18 International Business Machines Corporation Scalable leader-based total order broadcast protocol for distributed computing systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN108809517A (zh) 2018-05-22 2018-11-13 泰康保险集团股份有限公司 一种区块链网络中的信息获取方法及装置
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3860037A1 (en) * 2016-02-23 2021-08-04 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
PT3440823T (pt) * 2016-04-05 2020-12-04 Zamna Tech Limited Método e sistema para gestão de informações pessoais dentro de sistemas informáticos independentes e redes digitais
GB201607476D0 (en) * 2016-04-29 2016-06-15 Eitc Holdings Ltd Operating system for blockchain IOT devices
US20170345011A1 (en) * 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10361853B2 (en) * 2016-10-12 2019-07-23 Bank Of America Corporation Automated data authentication and service authorization via cryptographic keys in a private blockchain
US11146535B2 (en) * 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US10554746B2 (en) * 2016-11-14 2020-02-04 International Business Machines Corporation Decentralized immutable storage blockchain configuration
US20180276626A1 (en) * 2017-03-21 2018-09-27 Dappsters, LLC Blockchain systems and methods
US11095432B2 (en) * 2017-04-05 2021-08-17 Samsung Sds Co., Ltd. System for processing data based on blockchain and operating method thereof
CN107592292B (zh) * 2017-07-26 2019-08-09 阿里巴巴集团控股有限公司 一种区块链节点间通信方法及装置
CN111448579A (zh) * 2017-10-04 2020-07-24 丁津泰 量子证明区块链
CN108335106A (zh) * 2018-01-24 2018-07-27 深圳壹账通智能科技有限公司 基于区块链的零知识多账本兑换转账方法、装置及存储介质
CN108418795B (zh) * 2018-01-30 2019-05-28 百度在线网络技术(北京)有限公司 跨区块链的数据访问方法、装置、***及计算机可读介质
US11728995B2 (en) * 2018-04-09 2023-08-15 American Express Travel Related Services Company, Inc. Reward point transfers using blockchain
US11563557B2 (en) * 2018-04-24 2023-01-24 International Business Machines Corporation Document transfer processing for blockchains
US10965673B2 (en) * 2018-05-11 2021-03-30 Civic Technologies, Inc. User ID codes for online verification
TWI661706B (zh) * 2018-05-23 2019-06-01 蔣永和 運用區塊鏈技術之節點系統及其運行方法
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10694032B2 (en) * 2018-08-05 2020-06-23 Michael Francis Byrne Systems and methods for blockchain wireless services in a controlled environment
SG11201906834SA (en) * 2018-12-13 2019-08-27 Alibaba Group Holding Ltd Achieving consensus among network nodes in a distributed system
US20190278765A1 (en) 2018-12-19 2019-09-12 Alibaba Group Holding Limited Shared secret-based blockchain storage
US11481375B2 (en) * 2019-01-31 2022-10-25 Apifiny Group Inc. Point-to-point distributed decentralized system
US11327551B2 (en) * 2019-02-14 2022-05-10 Micron Technology, Inc. Methods and apparatus for characterizing memory devices
US11256778B2 (en) * 2019-02-14 2022-02-22 Micron Technology, Inc. Methods and apparatus for checking the results of characterized memory searches
US10957416B2 (en) * 2019-02-14 2021-03-23 Micron Technology, Inc. Methods and apparatus for maintaining characterized memory devices
KR20200101211A (ko) * 2019-02-19 2020-08-27 삼성전자주식회사 전자 장치 및 이를 이용한 블록 체인의 전자 서명 서비스 방법
US11150978B2 (en) * 2019-04-26 2021-10-19 Bank Of America Corporation Automated system for intelligent error correction within an electronic blockchain ledger
CN110096894B (zh) * 2019-05-10 2023-01-17 东北大学 一种基于区块链的数据匿名共享***及方法
CN110175212B (zh) 2019-05-22 2021-07-06 杭州复杂美科技有限公司 区块链分布式存储方法、数据读取方法、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN108809517A (zh) 2018-05-22 2018-11-13 泰康保险集团股份有限公司 一种区块链网络中的信息获取方法及装置
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CN109871366A (zh) * 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法

Also Published As

Publication number Publication date
CN111386519B (zh) 2022-04-15
WO2020035093A2 (en) 2020-02-20
AU2019321746A1 (en) 2021-05-27
US20210073075A1 (en) 2021-03-11
CN111386519A (zh) 2020-07-07
JP2021528884A (ja) 2021-10-21
KR20210058746A (ko) 2021-05-24
JP7159348B2 (ja) 2022-10-24
SG11202010722RA (en) 2020-11-27
EP3769235B1 (en) 2022-07-06
CA3098936A1 (en) 2020-02-20
WO2020035093A3 (en) 2020-09-03
US11030044B2 (en) 2021-06-08
EP3769235A2 (en) 2021-01-27
EP3769235A4 (en) 2021-05-19

Similar Documents

Publication Publication Date Title
KR102433504B1 (ko) 허가된 블록체인 네트워크를 위한 에러 정정 코드에 기초하는 블록체인 데이터 저장
US11307927B2 (en) Indexing and recovering encoded blockchain data
KR102225196B1 (ko) 에러 정정 코드에 기초하는 공유 블록체인 데이터 저장의 컨센서스
KR102363271B1 (ko) 에러 정정 코드에 기초한 공유 블록체인 데이터 저장의 데이터 보안
US11327833B2 (en) Prioritizing shared blockchain data storage
US10824601B1 (en) Shared blockchain data storage based on error correction code
US11175987B2 (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