KR102396737B1 - 공유 블록체인 데이터 저장 우선 순위화 - Google Patents

공유 블록체인 데이터 저장 우선 순위화 Download PDF

Info

Publication number
KR102396737B1
KR102396737B1 KR1020207031348A KR20207031348A KR102396737B1 KR 102396737 B1 KR102396737 B1 KR 102396737B1 KR 1020207031348 A KR1020207031348 A KR 1020207031348A KR 20207031348 A KR20207031348 A KR 20207031348A KR 102396737 B1 KR102396737 B1 KR 102396737B1
Authority
KR
South Korea
Prior art keywords
blockchain
blocks
data
node
nodes
Prior art date
Application number
KR1020207031348A
Other languages
English (en)
Other versions
KR20210055632A (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 KR20210055632A publication Critical patent/KR20210055632A/ko
Application granted granted Critical
Publication of KR102396737B1 publication Critical patent/KR102396737B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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/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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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
    • 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/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/3247Cryptographic 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 involving digital signatures
    • 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
    • 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/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting
    • 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/56Financial cryptography, e.g. electronic payment or e-cash
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing 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)

Abstract

블록체인 데이터를 저장하기 위해 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 본원에 개시된다. 본 방법 중 하나는 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신하는 단계; 복수의 블록 각각에 대해: 블록의 오류 정정 코딩(ECC: error correction coding)으로 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드들의 제1 수 및 블록의 ECC로 인코딩된 버전으로부터 분할된 리던던트(redundant) 비트들로 구성된 데이터 세트를 저장하는 블록체인 노드들의 제2 수를 결정하는 단계; 제1 수 및 제2 수에 기초하여 블록의 우선 순위 값을 계산하는 단계; 및 우선 순위 값에 기초하여 복수의 인코딩된 블록을 생성하기 위해 ECC를 사용하여 복수의 블록 중 적어도 일부를 인코딩하는 단계를 포함한다.

Description

공유 블록체인 데이터 저장 우선 순위화
본 명세서는 오류 정정 코드에 기초하여 블록체인 데이터의 공유 저장을 우선 순위화하는 것에 관한 것이다.
합의 네트워크 및/또는 블록체인 네트워크라고도 칭할 수 있는 분산 원장 시스템(DLS: Distributed ledger system)은 참여 엔티티가 데이터를 안전하고 불변적으로 저장할 수 있게 한다. DLS는 통상적으로 임의의 특정 사용자 사례를 참조하지 않고 블록체인 네트워크라고 칭해진다. 블록체인 네트워크 유형의 예는 공개형 블록체인 네트워크, 비공개(private) 블록체인 네트워크 및 컨소시엄 블록체인 네트워크를 포함할 수 있다. 컨소시엄 블록체인 네트워크는 합의 프로세스를 제어하는 엔티티의 그룹을 선택하기 위해 제공되며, 액세스 제어 계층을 포함한다.
블록체인-기반 프로그램은 분산 컴퓨팅 플랫폼에 의해 실행될 수 있다. 예를 들어, 분산 컴퓨팅 플랫폼은 스마트 계약을 실행하기 위한 런타임 환경을 제공하는 가상 머신을 포함할 수 있다. 블록체인 컴퓨팅 플랫폼은 트랜잭션-기반 상태 머신으로 보여질 수 있다. 플랫폼의 상태 데이터는 월드 스테이트(world state)라고 칭하는 글로벌 공유-상태로 조립될 수 있다. 월드 스테이트는 계정 주소와 계정 상태 간의 매핑을 포함한다. 월드 스테이트는 머클 패트리샤 트리(MPT: Merkle Patricia tree)와 동일한 데이터 구조에 저장될 수 있다.
상태 데이터 외에, 블록체인 네트워크는 또한 블록 데이터 및 인덱스 데이터와 같은 다른 유형의 데이터를 저장할 수 있다. 블록 데이터에는 블록 헤더와 블록 바디를 포함할 수 있다. 블록 헤더는 특정 블록의 아이덴티티 정보를 포함할 수 있으며, 블록 바디는 블록으로 확인된 트랜잭션을 포함할 수 있다. 트랜잭션이 블록체인에 점점 더 많이 입력됨에 따라, 상태 데이터와 블록 데이터의 크기가 매우 커질 수 있다. 일부 DLS에서, 모든 노드는 블록체인의 전체 사본을 저장하며, 이는 많은 양의 저장 공간을 차지할 수 있다. 이는 모든 블록 데이터와 상태 데이터가 블록체인에 기록된 제1 트랜잭션으로 돌아가 저장되기 때문이다. 일부 DLS에서, 일부 공유 노드가 블록체인의 전체 사본을 저장하고 블록체인 데이터를 다른 블록체인 노드와 공유하며, 이는 "데이터 불평등"을 일으킬 수 있다. 즉, 데이터가 상이한 노드에 걸쳐 불균등하게 분산되는 경우, 대부분의 데이터를 저장하는 노드에 결함이 있으면 데이터 보안 위험이 높아질 수 있다.
따라서, 결함 노드의 존재를 허용하면서 데이터 평등성과 무결성을 유지하는 데이터 저장 스킴을 가능하게 하는 것이 바람직할 것이다. 또한, 데이터 저장 스킴이 블록체인 네트워크에 이루어진 변화에 따라 조정 가능하고 최대한의 저장 절약으로 귀결될 수 있는 데이터 프로세싱 방식을 나타내는 것이 바람직할 것이다.
본 주제의 설명된 실시예는 하나 이상의 특징을 단독으로 또는 조합하여 포함할 수 있다.
예를 들어, 일 실시예에서, 컴퓨팅 디바이스에 의해 수행되는 신뢰 실행 환경(TEE: trusted execution environment)에서 블록체인 데이터를 프로세싱하기 위한 컴퓨터-구현 방법이 개시된다. 컴퓨팅 디바이스는 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신한다. 복수의 블록 각각에 대해, 컴퓨팅 디바이스는 블록의 오류 정정 코딩(ECC: error correction coding)으로 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드의 제1 수 및 블록의 ECC로 인코딩된 버전으로부터 분할된 리던던트(redundant) 비트로 구성된 데이터 세트를 저장하는 블록체인 노드의 제2 수를 결정하고, 제1 수 및 제2 수에 기초하여 블록의 우선 순위 값을 계산하고, 복수의 인코딩된 블록을 생성하기 위해 ECC를 사용하여 복수의 블록 중 적어도 일부를 인코딩하며, 여기서 복수의 블록 중 적어도 일부는 복수의 블록 중 적어도 일부 이외의 복수의 블록의 나머지보다 더 작은 우선 순위 값을 갖고, 복수의 인코딩된 블록 중 적어도 일부의 코드 레이트는 블록체인 네트워크에 의해 요구되는 선의(honest) 블록체인 노드의 최소 수를 블록체인 네트워크의 블록체인 노드의 총 수로 나눈 것과 같다.
일부 실시예에서, 이러한 일반적이고 구체적인 양태는 시스템, 방법 또는 컴퓨터 프로그램, 또는 시스템, 방법 및 컴퓨터 프로그램의 임의의 조합을 사용하여 구현될 수 있다. 상술한 실시예 및 다른 설명되는 실시예는 각각 선택적으로 이하의 특징 중 하나 이상을 포함할 수 있다:
일부 실시예에서, 복수의 블록 중 적어도 일부를 인코딩한 후, 컴퓨팅 디바이스는 블록체인 네트워크에 의해 허용될 수 있는 결함 노드의 최대 수 및 블록체인 노드의 총 수에 기초하여 복수의 블록의 업데이트된 우선 순위 값을 계산하며, 여기서 요구되는 선의 블록체인 노드의 최소 수 및 허용될 수 있는 결함 블록체인 노드의 최대 수는 총 수에 합산된다.
일부 실시예에서, 컴퓨팅 디바이스는 복수의 블록의 블록 식별자(ID)와 복수의 블록의 우선 순위 값 사이의 대응을 제공하는 인덱스를 생성하고, 복수의 블록 중 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트한다.
일부 실시예에서, 컴퓨팅 디바이스는 복수의 인코딩된 블록 각각을 복수의 데이터 세트로 분할하고, 복수의 데이터 세트의 해시 값을 계산하고, 복수의 데이터 세트, 해시 값, 및 복수의 데이터 세트와 해시 값 사이의 대응을 제공하는 인덱스 중 적어도 하나를 블록체인 노드 각각으로 전송한다.
일부 실시예에서, 복수의 블록 중 적어도 일부는 복수의 블록 중 제1의 적어도 일부이고, 컴퓨팅 디바이스는 추가로 컴퓨팅 디바이스에 의해 전송된 복수의 데이터 세트 중 적어도 하나를 저장하고 복수의 블록 중 제1의 적어도 일부를 삭제한 후, 블록체인 노드 상에 저장된 블록체인 데이터가 사전 결정된 데이터 저장 임계값을 초과하는 크기를 갖는다는 통지를 수신하고, ECC를 사용하여 복수의 블록 중 제2의 적어도 일부를 인코딩하고, 여기서 복수의 블록 중 제2의 적어도 일부의 우선 순위 값은 복수의 블록 중 제1의 적어도 일부의 우선 순위 값보다 크고, 복수의 블록 중 제1 및 제2의 적어도 일부 이외의 복수의 블록의 나머지보다 작고, 복수의 블록 중 제2의 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트한다.
일부 실시예에서, ECC는 컴퓨팅 디바이스의 컴퓨팅 자원의 이용률이 사전 결정된 값 이하일 때 수행된다.
일부 실시예에서, ECC는 복수의 블록에 리던던트 비트를 추가함으로써 수행되는 소거(erasure) 코딩이다.
일부 실시예에서, 우선 순위 값은 제1 수에서 제1 수와 제2 수 사이의 차이에 의해 제1 수를 나눈 수를 뺀 값으로서 계산된다.
일부 실시예에서, 블록체인 노드는 블록체인의 사본을 저장하는 풀(full) 노드이다.
일부 실시예에서, 요구되는 선의 블록체인 노드의 최소 수는 실용적 비잔틴 결함 허용(PBFT: practical Byzantine fault tolerance) 합의 프로토콜에 기초하여 결정된다.
본 명세서에 따른 방법은 본원에 설명된 양태 및 특징의 임의의 조합을 포함할 수 있다는 것이 이해된다. 즉, 본 명세서에 따른 방법은 본원에 구체적으로 설명된 양태 및 특징의 조합으로 제한되지 않고, 제공된 양태 및 특징의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 실시예의 상세 사항은 첨부 도면 및 이하의 설명에서 개진된다. 본 명세서의 다른 특징 및 이점은 설명 및 도면, 그리고 청구항으로부터 명백해질 것이다.
도 1은 본 명세서의 실시예를 실행하는 데 사용될 수 있는 환경의 예를 도시한다.
도 2는 본 명세서의 실시예에 따른 아키텍처의 예를 도시한다.
도 3은 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스의 예를 도시한다.
도 4는 본 명세서의 실시예에 따른 데이터 저장 스킴의 예를 도시한다.
도 5는 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스의 다른 예를 도시한다.
도 6은 본 명세서의 실시예에 따른 신뢰 실행 환경(TEE)에 기초한 공유 블록체인 데이터 저장의 프로세스의 예를 도시한다.
도 7은 본 명세서의 실시예에 따라 블록체인 네트워크에 블록체인 노드를 추가하는 예를 도시한다.
도 8은 본 명세서의 실시예에 따른 합의 프로세스의 예를 도시한다.
도 9는 본 명세서의 실시예에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 10은 본 명세서의 실시예에 따른 장치의 모듈의 예를 도시한다.
다양한 도면에서 동일한 참조 번호 및 지정은 동일한 요소를 나타낸다.
본 명세서는 신뢰 실행 환경(TEE)에서 블록체인 데이터를 프로세싱하기 위한 기술을 설명한다. 이러한 기술은 일반적으로 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신하는 단계; 복수의 블록 각각에 대해: 블록의 오류 정정 코딩(ECC)으로 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드의 제1 수 및 블록의 ECC로 인코딩된 버전으로부터 분할된 리던던트 비트로 구성된 데이터 세트를 저장하는 블록체인 노드의 제2 수를 결정하는 단계; 제1 수 및 제2 수에 기초하여 블록의 우선 순위 값을 계산하는 단계; 및 복수의 인코딩된 블록을 생성하기 위해 ECC를 사용하여 복수의 블록 중 적어도 일부를 인코딩하는 단계를 포함하고, 여기서 복수의 블록 중 적어도 일부는 복수의 블록 중 적어도 일부 이외의 복수의 블록의 나머지보다 더 작은 우선 순위 값을 갖고, 복수의 인코딩된 블록 중 적어도 일부의 코드 레이트는 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수를 블록체인 네트워크의 블록체인 노드의 총 수로 나눈 것과 같다.
본원에 설명되는 바와 같이, 블록체인 네트워크는 상태 데이터, 블록 데이터 및 인덱스 데이터와 같은 상이한 유형의 데이터를 저장할 수 있다. 블록 데이터는 블록체인 네트워크의 모든 트랜잭션을 포함하며, 이는 새로운 블록이 블록체인에 지속적으로 추가됨에 따라 많은 저장 공간을 차지할 수 있다. 특히 빈번하지 않게 액세스되는 블록(예를 들어, 오래 전에 블록체인에 추가된 블록)의 데이터의 경우, 블록체인 노드가 모든 블록 데이터를 각각 저장하는 것은 비효율적일 수 있다. 따라서, 본 명세서의 실시예는 저장 소비를 감소시키기 위해 각각의 블록체인 노드가 빈번하지 않게 액세스되는 블록의 일부를 저장하고 필요할 때 다른 블록체인 노드로부터 블록 데이터의 나머지를 검색하도록 제공한다. 그러나, 블록체인 네트워크에 결함 노드나 비신뢰 노드가 존재하면, 검색된 데이터는 신뢰될 수 없으며 데이터 손실이 발생할 수 있다.
일부 실시예에서, 블록체인 노드는 빈번하지 않게 액세스되는 블록을 인코딩하기 위해 소거 코딩과 같은 ECC를 수행할 수 있다. 그 후, ECC로 인코딩된 블록은 복수의 데이터 세트로 분할될 수 있다. 복수의 데이터 세트는 데이터 저장 스킴에 기초하여 저장할 상이한 블록체인 노드에 인덱싱되고 할당될 수 있다. 블록체인 노드에 의해 스마트 계약을 실행하기 위해 빈번하지 않게 액세스되는 블록의 데이터가 필요한 경우, 블록체인 노드는 인덱스에 기초하여 다른 블록체인 노드로부터 대응하는 데이터 세트를 검색하여 ECC 인코딩된 블록을 형성하고 원래 블록을 복원할 수 있다. ECC로 인코딩된 블록을 공유함으로써, 진위 불명 데이터가 존재하거나 데이터 손실이 발생하더라도, 선의 블록체인 노드의 퍼센티지가 ECC의 코드 레이트 이상인 한 원래 블록 데이터가 복원될 수 있다.
일부 실시예에서, 각각의 블록체인 노드 상에서 ECC를 수행하는 대신, ECC는 신뢰 노드와 연관된 TEE 하에서 수행될 수 있다. TEE 기술을 사용함으로써, 신뢰 노드는 검증 가능한 인코딩된 블록을 생성하고, 인코딩된 블록을 데이터 세트로 분할하고, 데이터 세트와 데이터 저장 스킴을 저장을 위해 각각의 블록체인 노드로 전송할 수 있다. TEE 하에서 생성된 데이터 세트는 블록체인 노드에 의해 검증될 수 있다. 그 후, 각각의 블록체인 노드는 데이터 저장 스킴에 기초하여 데이터 세트의 일부를 저장하여 저장 공간을 절약할 수 있다. TEE 활성화된 신뢰 노드를 가짐으로써, ECC는 각각의 블록체인 노드에 의해 개별적으로 수행하는 대신 단지 한 번만 수행하면 된다. 이와 같이, 블록체인 네트워크의 전체 컴퓨팅 자원 소비가 상당히 감소될 수 있다.
일부 실시예에서, 새로운 블록체인 노드는 블록체인 네트워크에 풀 노드로서 추가된다. 새로 추가된 풀 노드는 다른 노드에 의해 공유되지 않는 추가 블록 사본을 저장한다. 블록의 추가 사본은 저장 측면에서 블록체인 네트워크에 리던던시를 추가할 수 있다. 신뢰 노드는 풀 노드에 저장된 사본을 갖는 블록에 대해 ECC를 재수행하고 ECC로 인코딩된 블록으로부터 분할된 데이터 세트를 블록체인 노드로 전송하여 원래 블록체인 데이터를 대체할 수 있다. 리던던트 사본의 수는 상이한 블록에 대해 상이할 수 있으므로, ECC 재수행(재(re)-ECC)은 상이한 저장 절약으로 귀결될 수 있다. 따라서, 그 리던던시에 기초하여 각각의 블록에 대해 재-ECC 우선 순위가 결정될 수 있어, 재-ECC 동작이 더 높은 재-ECC 우선 순위를 갖는 블록에 대해 수행되어 더 큰 저장 절약을 달성할 수 있다.
일부 실시예에서, 블록체인 노드가 블록체인 네트워크로부터 삭제된다. 신뢰 노드는 데이터 보안을 보장하기 위해 선의 블록체인 노드의 퍼센티지가 ECC의 코드 레이트 이상일 수 있도록 ECC를 재수행할 수 있다. 본 명세서의 실시예는 안전하게 재-ECC하도록 채용될 수 있는 최대 코드 레이트를 결정하는 방법을 제공한다.
재-ECC가 수행된 후, 신뢰 노드는 블록체인 노드와의 합의 프로세스를 개시하여 재-ECC에 기초한 새로운 데이터 저장 스킴에 대한 동의에 도달할 수 있다. 합의에 도달한 후, 블록체인 노드는 원래 데이터를 안전하게 제거하고, 블록체인 데이터 저장 및 복원을 위한 새로운 데이터 저장 스킴을 따를 수 있다.
본 명세서에 설명되는 기술은 몇몇 기술적 효과를 생성한다. 예를 들어, 본 주제의 실시예는 블록체인 노드의 컴퓨팅 효율성과 데이터 평등성을 유지하면서 블록체인 네트워크의 저장 자원에 대한 부담을 감소시킨다. 빈번하지 않게 액세스되는 블록(예를 들어, 오래된 블록)의 경우, 블록체인 노드의 저장 자원은 각각의 블록체인 노드 상에 ECC로 인코딩된 블록(또한 본원에서 인코딩된 블록으로 칭함)의 일부만을 저장하고 필요할 때 인코딩된 블록의 나머지를 다른 블록체인 노드로부터 검색함으로써 절감될 수 있다.
일부 실시예에서, 새로운 블록체인 노드는 블록체인 네트워크에 풀 노드로서 추가된다. 새로 추가된 풀 노드는 다른 노드에 의해 공유되지 않는 블록의 추가 사본을 저장한다. 블록의 추가 사본은 저장의 측면에서 블록체인 네트워크에 리던던시를 추가한다. 본 명세서의 실시예는 블록의 재-ECC 및 ECC로 인코딩된 블록으로부터 분할된 데이터 세트를 다른 블록체인 노드와 공유하여 저장 소비를 감소시키는 기술을 제공한다. 본 기술은 저장 자원이 제한된 블록체인 네트워크에 특히 적합하다. ECC는 또한 컴퓨팅 자원을 더 잘 활용하기 위해 CPU 사용량이 낮을 때 블록체인 노드에 의해 재수행될 수 있다.
일부 실시예에서, 신뢰 노드와 연관된 TEE에서 수행함으로써, 신뢰 노드는 인코딩된 블록을 생성하고, 인코딩된 블록을 데이터 세트로 분할하고, 저장을 위해 데이터 세트와 데이터 저장 스킴을 각각의 블록체인 노드로 전송할 수 있다. TEE 하에서 생성된 데이터 세트는 데이터 진위성을 보장하기 위해 블록체인 노드에 의해 검증될 수 있다. 그 후, 각각의 블록체인 노드는 전체 블록 대신 데이터 저장 스킴에 기초하여 데이터 세트의 일부를 저장하여 저장 공간을 절약할 수 있다. TEE 활성화된 신뢰 노드를 가짐으로써, ECC는 각각의 블록체인 노드에 의해 개별적으로 수행하는 대신 단지 한 번만 수행하면 된다. 이와 같이, 블록체인 네트워크의 전체 컴퓨팅 자원 소비가 감소될 수 있다.
일부 실시예에서, ECC는 풀 블록체인 노드가 블록체인 네트워크에 추가된 후에 재수행될 수 있다. ECC는 블록체인 네트워크에 의해 허용될 수 있는 결함 블록체인 노드의 최대 수에 기초하여 더 높은 코드 레이트로 수행되어 저장 효율성을 향상시킬 수 있다. 그러나, 블록체인의 모든 블록에 대한 재-ECC는 많은 양의 컴퓨팅 자원을 소비할 수 있으며, re-ECC의 저장 절약에 기초하여 각각의 블록에 대해 재-ECC 우선 순위가 결정될 수 있다. 이와 같이, 재-ECC는 더 높은 재-ECC 우선 순위를 가진 블록에 우선 순위화될 수 있어 컴퓨팅 자원 소비를 낮게 유지하면서 더 큰 저장 절약을 달성할 수 있다.
일부 실시예에서, 블록체인 노드는 블록체인 네트워크로부터 삭제될 수 있다. ECC는 데이터 보안을 보장하기 위해 선의 블록체인 노드의 퍼센티지가 여전히 ECC의 코드 레이트 이상일 수 있도록 재수행될 수 있다. 본 명세서의 실시예는 효율적인 블록체인 데이터 저장의 합의에 도달하기 위해 재-ECC 및 효율적인 프로세스를 위해 안전하게 채용될 수 있는 코드 레이트를 결정하는 방법을 제공한다.
본 명세서의 실시예에 대한 추가 컨텍스트를 제공하기 위해, 그리고 위에서 소개한 바와 같이, 합의 네트워크(예를 들어, 피어-투-피어 노드로 구성됨)라고도 칭해질 수 있는 분산 원장 시스템(DLS) 및 블록체인 네트워크는 참여 엔티티가 단전하고 불변적으로 트랜잭션을 수행하고 데이터를 저장할 수 있게 한다. 블록체인이라는 용어는 일반적으로 특정 네트워크 및/또는 사용 사례와 연관되지만, 본원에서 블록체인은 일반적으로 임의의 특정 사용 사례를 참조하지 않고 DLS를 지칭하는 데 사용된다.
블록체인은 트랜잭션이 불변인 방식으로 트랜잭션을 저장하는 데이터 구조이다. 따라서, 블록체인에 기록된 트랜잭션은 신뢰성 있고 믿을 수 있다. 블록체인은 하나 이상의 블록을 포함한다. 체인의 각각의 블록은 이전 블록의 암호화 해시를 포함함으로써 체인에서 그 직전의 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 그 자체의 암호화 해시 및 하나 이상의 트랜잭션을 포함한다. 블록체인 네트워크의 노드에 의해 이미 검증된 트랜잭션은 해싱되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프(leaf) 노드에 있는 데이터가 해싱되고 트리의 각각의 브랜치(branch)에 있는 모든 해시가 브랜치의 루트(root)에서 연결되는 데이터 구조이다. 이러한 프로세스는 트리의 모든 데이터를 나타내는 해시를 저장하는 전체 트리의 루트까지 트리를 지속시킨다. 트리에 저장된 트랜잭션으로 추정되는 해시는 트리 구조와 일치하는지를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션을 저장하기 위한 탈집중형 또는 적어도 부분적으로 탈집중화된 데이터 구조인 반면, 블록체인 네트워크는 트랜잭션을 브로드캐스팅, 검증 및 인증하는 등에 의해 하나 이상의 블록체인을 관리, 업데이트 및 유지하는 컴퓨팅 노드의 네트워크이다. 위에서 소개한 바와 같이, 블록체인 네트워크는 공개형 블록체인 네트워크, 비공개 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 본 명세서의 실시예는 컨소시엄 블록체인 네트워크를 참조하여 본원에서 더욱 상세히 설명된다. 그러나, 본 명세서의 실시예는 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참여 엔티티 사이에서 비공개(private)이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는 합의 노드로 칭해질 수 있는 허가된 노드의 세트에 의해 제어되며, 하나 이상의 합의 노드는 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 운영된다. 예를 들어, 열(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: hypertext transfer protocol secure)) 및/또는 원격 프로시저 호출(RPC: remote procedure call)을 사용하여 블록체인 네트워크(212)와 통신하거나 이를 통해 통신한다.
노드(214)는 블록체인 네트워크(212) 내에서 다양한 정도의 참여를 가질 수 있다. 예를 들어, 일부 노드(214)는 (예를 들어, 블록체인(216)에 블록을 추가하는 마이너 노드로서) 합의 프로세스에 참여할 수 있는 반면, 다른 노드(214)는 합의 프로세스에 참여하지 않는다. 다른 예로서, 일부 노드(214)는 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드(214)는 블록체인(216)의 일부의 사본만을 저장한다. 예를 들어, 데이터 액세스 특권은 각각의 참여자가 그 각각의 시스템 내에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참여자 시스템(202, 204 및 206)은 블록체인(216)의 각각의 완전한 사본(216', 216'', 216''')을 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 데이터의 예는 둘 이상의 참여자 간의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 본원에서는 트랜잭션이 비한정적인 예의 방식으로 사용되지만, 임의의 적절한 데이터가 블록체인에 저장될 수 있는 것으로 고려된다(예를 들어, 문서, 이미지, 비디오, 오디오). 트랜잭션의 예는 가치 있는 무언가(예를 들어, 자산, 제품, 서비스, 통화)의 교환이 제한 없이 포함할 수 있다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해싱된다. 해싱은 트랜잭션 데이터(스트링 데이터로서 제공됨)를 고정-길이 해시 값(또한 스트링 데이터로서 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 얻기 위해 해시 값을 언해싱(unhashing)할 수 없다. 해싱은 트랜잭션 데이터에서의 약간의 변화도 완전히 다른 해시 값으로 귀결되도록 보장한다. 또한, 위에서 언급한 바와 같이, 해시 값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이, 해시 값의 길이는 고정된다. 해싱은 해시 값을 생성하기 위해 해시 함수를 통해 트랜잭션 데이터를 프로세싱하는 것을 포함한다. 해시 함수의 예는 256-비트 해시 값을 출력하는 보안 해시 알고리즘(SHA:Secure Hash Algorithm)-256을 제한 없이 포함한다.
복수의 트랜잭션의 트랜잭션 데이터가 해싱되어 블록에 저장된다. 예를 들어, 2개의 트랜잭션의 해시 값이 제공되고, 다른 해시를 제공하기 위해 자체로 해싱된다. 이러한 프로세스는 블록에 저장될 모든 트랜잭션에 대해 단일 해시 값이 제공될 때까지 반복된다. 이러한 해시 값이 머클 루트 해시(Merkle root hash)라고 칭해지며, 블록의 헤더에 저장된다. 임의의 트랜잭션에서의 변화는 그 해시 값에서의 변화로 귀결되며, 궁극적으로 머클 루트 해시에서의 변화로 귀결된다.
블록은 합의 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 복수의 노드가 합의 프로토콜에 참여하고, 블록을 블록체인에 추가하는 작업을 수행한다. 이러한 노드가 합의 노드라고 칭해진다. 위에서 소개한 PBFT가 합의 프로토콜의 비제한적인 예로서 사용된다. 합의 노드는 합의 프로토콜을 실행하여 블록체인에 트랜잭션을 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더욱 상세하게는, 합의 노드는 블록 헤더를 생성하고, 블록의 모든 트랜잭션을 해싱하고, 블록의 모든 트랜잭션에 대해 단일 해시 값이 제공될 때까지 추가의 해시 값을 생성하기 위해 해시 값을 쌍으로 결합시킨다(머클 루트 해시). 이러한 해시가 블록 헤더에 추가된다. 합의 노드는 또한 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 합의 노드는 또한 논스(nonce) 값과 타임스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 결함(예를 들어, 오작동 노드, 악성 노드)을 허용하는 실용적 비잔틴 상태 머신 복제를 제공한다. 이는 PBFT에서 결함이 발생할 것이라고 가정함으로써 달성된다(예를 들어, 독립 노드 고장 및/또는 합의 노드에 의해 전송된 조작된 메시지의 존재를 가정). PBFT에서, 합의 노드는 프라이머리 합의 노드 및 백업 합의 노드를 포함하는 시퀀스에서 제공된다. 프라이머리 합의 노드는 주기적으로 변경된다. 블록체인 네트워크의 월드 스테이트에 대한 동의에 도달하는 블록체인 네트워크 내의 모든 합의 노드에 의해 블록체인에 트랜잭션이 추가된다. 이러한 프로세스에서, 합의 노드 간에 메시지가 송신되고, 각각의 합의 노드는 특정된 피어 노드로부터 메시지가 수신되었음을 증명하고, 송신 중에 메시지가 변조되지 않았음을 검증한다.
PBFT에서, 합의 프로토콜은 모든 합의 노드가 동일한 상태에서 시작하는 복수의 단계에서 제공된다. 시작하기 위해, 클라이언트는 서비스 동작(예를 들어, 블록체인 네트워크 내에서 트랜잭션을 실행)을 호출하기 위해 프라이머리 합의 노드에 요청을 보냅니다. 요청 수신에 응답하여, 프라이머리 합의 노드는 백업 합의 노드에 요청을 멀티캐스팅한다. 백업 합의 노드는 요청을 실행하고, 각각의 노드는 클라이언트에 응답을 전송한다. 클라이언트는 응답의 임계 수가 수신될 때까지 기다린다. 일부 예에서, 클라이언트는 f + 1 응답이 수신될 때까지 기다리며, 여기서 f는 블록체인 네트워크 내에서 허용될 수 있는 결함 합의 노드의 최대 수이다. PBFT에서, 결함 합의 노드의 최대 수는 총 합의 노드 총 수의 1/3 미만일 필요가 있다. 최종 결과는 충분한 수의 합의 노드가 블록체인에 추가될 기록의 순서에 대한 동의에 도달하고 기록이 수용되거나 거부된다는 것이다.
일부 블록체인 네트워크에서, 트랜잭션의 프라이버시를 유지하기 위해 암호화가 구현된다. 예를 들어, 2개의 노드가 트랜잭션을 비공개(private)로 유지하여 블록체인 네트워크의 다른 노드가 트랜잭션의 상세 사항을 식별할 수 없기를 원하는 경우, 노드는 트랜잭션 데이터를 암호화할 수 있다. 암호화의 예는 제한 없이, 대칭 암호화 및 비대칭 암호화를 포함한다. 대칭 암호화는 암호화(일반 텍스트에서 암호문 생성)와 복호화(암호문으로부터 일반 텍스트 생성) 모두에 대해 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 복수의 노드에 대해 동일한 키가 이용될 수 있으므로, 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 각각 개인 키와 공개 키를 포함하는 키 쌍을 사용하며, 개인 키는 각각의 노드에만 알려져 있고 공개 키는 블록체인 네트워크의 임의 또는 다른 모든 노드에 알려져 있다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있으며, 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 다시 도 5를 참조하면, 참여자 A는 참여자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참여자 B에게 전송할 수 있다. 참여자 B는 그 개인 키를 사용하여 암호화된 데이터(암호문)를 복호화하고, 원래 데이터(일반 텍스트)를 추출할 수 있다. 노드의 공개 키로 암호화된 메시지는 노드의 개인 키를 사용해서만 복호화될 수 있다.
비대칭 암호화는 디지털 서명을 제공하는 데 사용되며, 이는 트랜잭션의 참여자가 트랜잭션의 다른 참여자뿐만 아니라 트랜잭션의 유효성을 확인할 수 있도록 한다. 예를 들어, 노드는 메시지에 디지털 서명을 할 수 있고, 다른 노드는 참여자 A의 디지털 서명에 기초하여 노드에 의해 메시지가 전송되었음을 확인할 수 있다. 디지털 서명은 또한 메시지가 전송 중에 변조되지 않았음을 보장하기 위해 사용될 수 있다. 예를 들어, 다시 도 2를 참조하면, 참여자 A는 참여자 B에게 메시지를 전송한다. 참여자 A는 메시지의 해시를 생성한 다음, 그 개인 키를 사용하여, 디지털 서명을 암호화된 해시로서 제공하기 위해 해시를 암호화한다. 참여자 A는 메시지에 디지털 서명을 첨부하여, 디지털 서명을 갖는 메시지를 참여자 B에게 전송한다. 참여자 B는 참여자 A의 공개 키를 사용하여 디지털 서명을 복호화하고 해시를 추출한다. 참여자 B는 메시지를 해싱하고 해시를 비교한다. 해시가 동일하면, 참여자 B는 메시지가 실제로 참여자 A로부터 온 것이고 변조되지 않았음을 확인할 수 있다.
일부 실시예에서, 블록체인 네트워크의 노드, 및/또는 블록체인 네트워크와 통신하는 노드는 TEE를 사용하여 동작할 수 있다. 하이-레벨에서, TEE는 하드웨어의 운영 환경(예를 들어, 운영 체제(OS), 기본 입력/출력 시스템(BIOS))으로부터 격리된 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰되는 환경이다. 더욱 상세하게는, TEE는 코드 실행의 기밀성, 무결성을 보장하는 프로세서 및 메인 프로세서 내에 로딩된 데이터의 별도의 보안 영역이다. 프로세서 내에서, TEE는 OS와 병렬로 실행된다. 소위 신뢰 어플리케이션(TA: trusted application) 중 적어도 일부는 TEE 내에서 실행되며, 프로세서 및 메모리에 대한 액세스를 갖는다. TEE를 통해, TA는 메인 OS에서 실행되는 다른 어플리케이션으로부터 보호된다. 또한, TEE는 TEE 내부에서 TA를 다른 것과 암호화 방식으로 격리한다.
TEE의 예는 미국 캘리포니아주, 산타 클라라의 Intel Corporation에 의해 제공되는 소프트웨어 가드 익스텐션즈(SGX: Software Guard Extensions)를 포함한다. SGX가 본원에서 예시의 방식으로 논의되지만, 본 명세서의 실시예는 임의의 적절한 TEE를 사용하여 실현될 수 있는 것으로 고려된다.
SGX는 하드웨어-기반 TEE를 제공한다. SGX에서, 신뢰 하드웨어는 중앙 처리 장치(CPU)의 다이이며, 물리적 메모리의 일부가 격리되어 선택된 코드와 데이터를 보호한다. 메모리의 격리된 부분을 인클레이브(enclave)라고 칭한다. 더욱 구체적으로, 인클레이브는 메모리에서 인클레이브 페이지 캐시(EPC: enclave page cache)로서 제공되며, 어플리케이션 어드레스 공간에 매핑된다. 메모리(예를 들어, DRAM)는 SGX용 보존 랜덤 메모리(PRM: preserved random memory)를 포함한다. PRM은 가장 낮은 BIOS 레벨에서의 지속적인 메모리 공간이며 임의의 소프트웨어에 의해 액세스될 수 없다. 각각의 EPC는 PRM에서 어플리케이션 데이터 및 코드를 로딩하기 위해 OS에 의해 할당되는 메모리 세트(예를 들어, 4 KB)이다. EPC 메타데이터(EPCM)는 각 EPC에 대한 엔트리 어드레스이며, 각각의 EPC가 하나의 인클레이브에 의해서만 공유될 수 있도록 보장한다. 즉, 단일 인클레이브가 복수의 EPC를 사용할 수 있는 반면, EPC는 단일 인클레이브에 대해 전용이다.
TA의 실행 중에, 프로세서는 인클레이브에 저장된 데이터에 액세스할 때 소위 인클레이브 모드에서 동작한다. 인클레이브 모드에서의 동작은 각각의 메모리 액세스에 대한 추가 하드웨어 검사를 시행한다. SGX에서, TA는 신뢰되는 부분과 신뢰되지 않는 부분으로 컴파일링된다. 신뢰되는 부분은 예를 들어, OS, BIOS, 특권 시스템 코드, 가상 머신 관리자(VMM: virtual machine manager), 시스템 관리 모드(SMM: system management mode) 등에 의해 액세스될 수 없다. 동작 중에, TA는 메모리의 PRM 내에 인클레이브를 실행하고 생성한다. 인클레이브 내의 신뢰되는 부분에 의해 실행되는 신뢰되는 함수는 신뢰되지 않는 부분에 의해 호출되고, 인클레이브 내에서 실행되는 코드는 데이터를 일반 텍스트 데이터(암호화되지 않음)로 간주하고, 데이터에 대한 외부 액세스가 거부된다. 신뢰되는 부분은 호출에 대해 암호화된 응답을 제공하고, TA는 계속 실행된다.
예측 코드(예를 들어, TA의 신뢰되는 부분)가 SGX-제공 TEE 내에서 안전하게 실행되고 있는지를 검증하기 위해 증명 프로세스가 수행될 수 있다. 일반적으로, 증명 프로세스는 챌린저(예를 들어, 블록체인 네트워크의 다른 노드, 블록체인 네트워크의 키 관리 시스템(KMS: key management system))로부터 증명 요청을 수신하는 TA를 포함한다. 응답으로, TA는 그 인클레이브가 코트(quote)라고도 칭하는 원격-증명을 생성하도록 요청한다. 원격-증명을 생성하는 것은 로컬-증명이 인클레이브로부터 소위 코팅(quoting) 인클레이브로 전송되는 것을 포함하며, 이는 로컬-증명을 검증하고, 비대칭 증명 키를 사용하여 로컬-증명에 서명함으로써 로컬-증명을 원격-증명으로 변환한다. 원격 증명(코트)은 챌린저(예를 들어, 블록체인 네트워크의 KMS)에게 제공된다.
챌린저는 원격-증명을 검증하기 위해 증명 검증 서비스를 사용한다. SGX의 경우, Intel은 챌린저로부터 원격-증명을 수신하고 원격-증명을 검증하는 Intel 증명 서비스(IAS: Intel Attestation Service)를 제공한다. 더욱 구체적으로, IAS는 원격-증명을 프로세싱하고, 원격-증명이 검증되었는지를 나타내는 보고서(예를 들어, 증명 검증 보고서(AVR: attestation verification report))를 제공한다. 검증되지 않은 경우, 오류가 표시될 수 있다. 검증된 경우(예를 들어, 예측 코드가 TEE에서 안전하게 실행되는 경우), 챌린저는 TA와의 상호 작용을 개시하거나 지속할 수 있다. 예를 들어, 검증에 응답하여, (챌린저로서의) KMS는 (예를 들어, 타원 곡선 디피-헬만(ECDH: elliptical curve Diffie-Hellman)과 같은 키 교환 프로세스를 통해) TEE를 실행하는 노드에 비대칭 암호화 키(예를 들어, 공개-키 및 개인-키 쌍)를 발급하여 노드가 다른 노드 및/또는 클라이언트와 안전하게 통신할 수 있게 할 수 있다.
도 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는 소거(erasure) 코딩일 수 있다. 소거 코딩을 사용하여, k 심볼의 메시지가 n 심볼을 갖는 코드워드로 인코딩될 수 있으며, 여기서 k 및 n은 자연수이고, k < n이다. 메시지는 n-심볼 코드워드의 서브세트로부터 복원될 수 있다. 비율 r = k/n은 소거 코드의 코드 레이트이다.
ECC를 사용함으로써, 각각의 블록체인 노드는 인코딩된 블록 데이터의 일부를 저장하고, 필요할 때 다른 블록체인 노드로부터 인코딩된 블록 데이터의 나머지를 검색할 수 있다. 일부 실시예에서, ECC는 블록체인 노드(302)의 컴퓨팅 자원의 이용률이 사전 결정된 값(예를 들어, 40%) 미만일 때 수행될 수 있다. 이와 같이, 블록체인 노드(302)에 대한 다른 컴퓨팅 동작과의 간섭이 감소될 수 있다. 일부 실시예에서, 블록체인 노드(302)의 저장 공간의 사용이 사전 결정된 퍼센티지 이상일 때 ECC가 수행될 수 있으며, ECC 후에 인코딩된 블록 데이터의 일부가 삭제되어 저장 공간을 확보할 수 있다.
다시, 블록(100)을 예로 사용하여, 블록체인 노드(302)가 블록(100)을 빈번하지 않게 액세스되는 블록으로 결정하고 ECC(314)를 수행한다고 가정하면, ECC 인코딩된 데이터는 데이터 저장 스킴에 기초하여 복수의 데이터 세트로 분할될 수 있다. 데이터 저장 스킴은 블록체인 네트워크 내에 데이터가 저장되는 위치 및/또는 방식을 규정하는 컴퓨터-실행 가능 명령의 세트로서 제공될 수 있다. 일부 예에서, 데이터 저장 스킴은 권한 증명을 가진 신뢰 노드에 의해 제공되고 블록체인 노드에 의해 동의될 수 있다. 일부 예에서, 데이터 저장 스킴은 합의를 통해 블록체인 노드에 의해 동의될 수 있다. 일반적으로, 데이터 저장 스킴은 블록체인 네트워크에서 블록체인 노드의 수에 기초하여 인코딩된 데이터를 복수의 데이터 세트로 분할하기 위한 하나 이상의 사전 결정된 규칙을 포함할 수 있다. 데이터 저장 스킴은 또한 각각의 블록체인 노드에 의해 저장되거나 해싱될 복수의 데이터 세트의 하나 이상의 데이터 세트의 할당을 포함할 수 있다. 데이터 평등성을 보장하기 위해, 데이터 저장 스킴은 블록체인 네트워크의 각각의 블록체인 노드에 의해 저장될 적어도 하나의 데이터 세트의 할당을 포함할 수 있다.
도 3에 나타낸 예에서, 블록(100)의 인코딩된 블록 데이터는 데이터1, 데이터2, 데이터3 및 V데이터1인 4개의 데이터 세트로 분할되며, 각각 블록체인 노드(302, 304, 306 및 308) 중 하나에 의해 저장된다. V데이터1은 오류 정정을 위한 ECC의 리던던트 비트를 나타낼 수 있다. 데이터1은 데이터 저장 스킴에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. 데이터2, 데이터3 및 V데이터1은 각각 해시 값 D해시2, D해시3 및 V해시1을 생성하기 위해 개별적으로 해싱되도록 선택된다(316). 본 명세서의 실시예에 따르면, 블록체인 네트워크가 4개 초과의 노드를 갖는 경우, 인코딩된 데이터는 4개 초과의 데이터 세트로 분할될 수 있다. 일부 예에서, 각각의 블록체인 노드는 하나 초과의 데이터 세트를 저장할 수 있으며 다른 노드에 의해 저장되도록 할당된 데이터 세트의 나머지를 해싱할 수 있다.
이제 도 4를 참조하면, 도 4는 본 명세서의 실시예에 따른 데이터 저장 스킴(400)의 예를 도시한다. 앞서 논의한 바와 같이, 데이터1은 데이터 저장 스킴(400)에 따라 블록체인 노드(302)에 의해 저장되도록 선택된다. 데이터 저장 스킴(400)에 기초하여, 블록체인 노드(304)는 데이터2를 저장하고, 데이터1, 데이터3 및 V데이터1을 별도로 해싱하여 해시 값 D해시1, D해시3 및 V해시1을 각각 생성한다. 블록체인 노드(306)는 데이터3을 저장하고, 데이터1, 데이터2 및 V데이터1을 개별적으로 해싱하여 해시 값 D해시1, D해시2 및 V해시1을 각각 생성한다. 블록체인 노드(308)는 V데이터1을 저장하고, 데이터1, 데이터2 및 V데이터3을 개별적으로 해싱하여 해시 값 D해시1, D해시2 및 D해시3을 각각 생성한다.
다시 도 3을 참조하면, 해시 값은 동일한 블록의 인코딩된 데이터 세트에 대응하므로, 이는 블록의 블록 ID에 의해 인덱싱될 수 있다. 예를 들어, 블록체인 노드(302)는 블록 ID(100)로 블록(100)과 연관된 데이터1, D해시1, D해시2 및 V해시1을 인덱싱할 수 있다. 이와 같이, 블록체인 노드(302)는 인덱싱된 블록 ID를 사용하여 해시 값을 그 대응하는 블록에 매핑할 수 있다. 데이터 세트 및 해시 값을 인덱싱하는 보다 상세한 예가 도 6의 설명에서 논의된다.
데이터 저장 스킴에 따라 블록체인 노드(302, 304, 306 및 308)에 대해 다른 데이터 저장 스킴이 만들어질 수 있음을 이해해야 한다. 일부 예에서, 블록(100)의 인코딩된 블록 데이터는 4개 초과의 데이터 세트로 분할될 수 있다. 데이터 저장 스킴에 따라 블록체인 노드(502, 504, 506 및 508)에 대해 다른 데이터 저장 스킴이 만들어질 수 있음을 이해해야 한다.
D해시2, D해시3 및 V해시1을 생성 및 저장한 후, 블록체인 노드(302)는 저장 공간을 절약하기 위해 저장으로부터 데이터2, 데이터3 및 V데이터1을 삭제할 수 있다. 이와 같이, 각각의 블록에 대해, 블록체인 노드(302)는 전체 블록 대신 하나의 ECC 인코딩된 데이터 세트(즉, 데이터1) 및 3개의 해시 값(즉, D해시2, D해시3 및 V해시1)만을 저장한다. 이와 같이, 저장 공간이 상당히 감소될 수 있다. 블록(100)과 유사하게, 인코딩 및 해싱 프로세스는 블록체인 노드(304, 306 및 308)에 의해 저장되는 다른 빈번하지 않게 액세스되는 블록에 대해 수행될 수 있다.
블록체인 노드(302)가 스마트 계약을 실행하기 위해 블록(100)의 블록 데이터가 필요하다고 결정하는 경우, 데이터 저장 스킴에 따라 블록체인 노드(304, 306 및 308)로부터 데이터2, 데이터3 및 V데이터1을 각각 검색할 수 있다. 다른 블록체인 노드(304, 306 및 308)로부터 데이터 세트를 검색하기 위해, 블록체인 노드(302)는 데이터 저장 스킴에 따라 검색될 데이터 세트에 대응하는 해시 값을 전송할 수 있다.
예를 들어, 데이터2를 검색하기 위해, 블록체인 노드(302)는 D해시2를 블록체인 노드(304)로 전송할 수 있다. 블록체인 노드(304)에 저장된 데이터2를 갖는 경우, D해시2 수신에 응답하여 데이터2를 블록체인 노드(302)로 다시 전송할 수 있다. 블록체인 노드(304)로부터 데이터2를 수신한 후, 블록체인 노드(302)는 수신된 데이터 세트를 해싱하고 해시 값을 D해시2와 비교할 수 있다. 해시 값이 D해시2와 동일한 경우, 블록체인 노드(302)는 수신된 데이터 세트가 진본인 것으로 결정할 수 있다. 그렇지 않은 경우, 수신된 데이터 세트는 진본이 아닌 것으로 결정된다. 수신된 데이터 세트가 진본이 아닌 것으로 결정되면, 블록체인 노드(302)는 블록체인 노드(304)를 결함 노드(또는 비잔틴 노드)로서 보고할 수 있다. 블록체인 노드(302)에 의해 수신된 진본이 아닌 데이터의 퍼센티지가 ECC에 의해 정정될 수 있는 오류 또는 누락 비트의 최대 비율 이하이면, 블록(100)은 로컬로 저장되고 수신된 데이터 세트로부터 복원될 수 있다.
전술한 바와 같이, 블록체인 네트워크는 상태 데이터, 블록 데이터 및 인덱스 데이터와 같은 상이한 유형의 데이터를 저장할 수 있다. 상태 데이터는 종종 MPT 또는 고정 깊이 머클 트리(FDMT: fixed depth Merkle tree)와 같이 컨텐츠-어드레싱된 상태 트리로 저장된다. 컨텐츠-어드레싱된 상태 트리는 본질적으로 점진적이다. 즉, 기존 상태 트리의 값만을 업데이트하는 대신 새로운 트리 구조를 추가하여 계정 상태의 변화가 반영된다. 따라서, 컨텐츠-어드레싱된 상태 트리는 블록이 블록체인에 지속적으로 추가될 때 크기가 매우 커질 수 있다. FDMT 저장 스킴 하에서, 상태 데이터는 현재 블록과 연관된 현재 상태 데이터와 블록체인의 모든 블록과 연관된 이력 상태 데이터로 분리될 수 있다. FDMT의 대부분의 데이터는 빈번하지 않게 사용되는 이력 상태 데이터이다. 모든 합의 노드에 모든 이력 상태 데이터를 저장하는 것은 저장 자원 사용의 측면에서 매우 비효율적일 수 있다.
일부 실시예에서, 블록 데이터를 인코딩 및 공유하는 것과 유사하게, 소거 코딩과 같은 ECC가 이력 상태 데이터를 인코딩하는 데 사용될 수 있다. 블록체인 네트워크의 각각의 합의 노드는 저장 소비를 감소시키기 위해 이력 상태 데이터의 일부만을 저장하고 다른 노드로부터 이력 상태 데이터의 나머지를 검색한다. 원래 이력 상태 데이터 대신 ECC로 인코딩된 이력 상태 데이터를 공유함으로써, 진본이 아닌 데이터가 존재하거나 데이터 손실이 발생하더라도, 진본이 아닌 데이터 또는 데이터 손실의 퍼센티지가 ECC에 의해 정정될 수 있는 오류 또는 누락 비트의 최대 비율 이하인 한, 원래 이력 상태 데이터가 복원돌 수 있다.
도 5는 본 명세서의 실시예에 따른 블록 데이터 인코딩 및 해싱 프로세스(500)의 다른 예를 도시한다. 이 예에서, 블록체인 노드(502, 504, 506 및 508)인 4개의 블록체인 노드의 블록체인 네트워크가 도시된다. 블록체인 노드(502)를 예로 사용하여 인코딩 및 해싱 프로세스(500)를 설명하면, 새로운 블록 데이터가 블록(512)에 추가될 때, 블록체인 노드(502)는 블록 데이터를 인코딩하기 위해 ECC(514)를 수행할 수 있다. 도 3의 설명에서 논의된 인코딩 및 해싱 프로세스(300)와 비교하면, 블록체인 노드(502)는 블록에 기입된 블록 데이터에 대해 ECC를 수행한다. 이와 같이, 블록체인 노드(502)는 전체 블록을 저장할 필요가 없으며, 대신 데이터 저장 스킴에 기초하여 인코딩된 블록 데이터의 나머지에 대응하는 ECC 인코딩된 블록 데이터 및 해시 값의 선택된 부분을 저장할 수 있다. 이러한 인코딩 및 해싱 프로세스(500)는 블록체인 노드(502)가 낮은 디스크 공간을 갖는 시나리오에 특히 적합할 수 있다.
일부 실시예에서, 블록으로서 데이터를 저장하는 대신, 블록체인 노드(502)는 로그 선행 기입(WAL: write-ahead log) 파일 또는 다른 유사한 롤-포워드 저널(roll-forward journal) 파일을 저장할 수 있다. WAL 파일은 블록체인 노드(502)에 의해 커미팅(commiting)되었지만 아직 저장되지 않은 블록 데이터를 기록할 수 있다. WAL 파일을 사용하여, 원래 블록체인 데이터가 데이터베이스 파일에 보존될 수 있으며, 블록체인 데이터의 변화는 별도의 WAL 파일에 기입될 수 있다. 원래 블록체인 데이터에 기입하지 않고도 변경을 갖는 롤-포워드에 대한 커밋(commit)이 발생할 수 있다. 이러한 구성은 변경이 WAL 파일에 커미팅되는 동안 블록체인 데이터의 지속적인 동작을 허용한다. 인코딩 및 해싱 프로세스(500)를 통해 이루어진 변경을 저장하기 위해 WAL 파일을 사용함으로써, 블록체인 노드(502)는 적절할 때 백그라운드에서 ECC를 수행하면서 합의를 위한 블록 데이터를 갖고 있음을 나타낼 수 있다. 이와 같이, ECC는 합의 프로세스의 컴퓨팅 효율성 또는 지연에 대한 영향을 감소시키기 위해 블록체인 노드(302)의 컴퓨팅 자원 활용률이 낮을 때 수행될 수 있다.
일부 실시예에서, 블록체인 노드(502)는 버퍼에 블록 데이터를 저장할 수 있다. 블록체인 노드(502)는 데이터의 크기가 사전 결정된 임계값보다 크거나 버퍼가 가득찬 경우 버퍼에 저장된 블록 데이터에 대해 ECC를 수행할 수 있다. ECC를 수행한 후, 블록체인 노드(502)는 아래 설명에서 논의되는 바와 같이, 인코딩 및 해싱 프로세스(500)를 따라 인코딩된 블록 데이터 및 해시 값을 저장할 수 있다.
다시 블록(100)을 예로 들어 사용하면, ECC를 수행한 후, 인코딩된 블록 데이터는 데이터 저장 스킴에 기초하여 복수의 데이터 세트로 분할될 수 있다. 도 3의 설명에서 논의된 예와 유사하게, 블록(100)의 인코딩된 블록 데이터는 데이터1, 데이터2, 데이터3 및 V데이터1인 4개의 데이터 세트로 분할될 수 있으며, 각각은 블록체인 노드(502, 504, 506 및 508) 중 하나에 의해 저장된다. V데이터1은 ECC의 리던던트 비트를 나타낼 수 있다. 데이터1은 데이터 저장 스킴에 따라 블록체인 노드(502)에 의해 저장되도록 선택된다. 데이터2, 데이터3 및 V데이터1은 각각 해시 값 D해시2, D해시3 및 V해시1을 생성하기 위해 별도로 해싱되도록 선택된다(516).
해시 값은 해시 값 중 대응 블록의 블록 ID에 의해 인덱싱될 수 있다. 예를 들어, 블록체인 노드(502)는 블록 ID(100)로 블록(100)과 연관된 데이터1, D해시1, D해시2 및 V해시1을 인덱싱할 수 있다. 이와 같이, 블록체인 노드(502)는 인덱싱된 블록 ID를 사용하여 해시 값을 그 대응하는 블록에 매핑할 수 있다. 데이터 세트 및 해시 값을 인덱싱하는 보다 상세한 예가 도 6의 설명에서 논의된다.
데이터 저장 스킴에 따라, 하나 이상의 블록체인 노드(502, 504, 506 및 508)에 대해 다른 데이터 저장 스킴이 만들어질 수 있음을 이해해야 한다. 예를 들어, 블록(100)의 인코딩된 블록 데이터는 4개 초과의 데이터 세트로 분할될 수 있다. 각각의 블록체인 노드(502, 504, 506 및 508)는 하나 이상의 데이터 세트를 저장할 수 있고 다른 노드에 의해 저장된 데이터 세트의 나머지를 해싱할 수 있다.
D해시2, D해시3 및 V해시1을 생성한 후, 블록체인 노드(502)는 데이터1, D해시2, D해시3 및 V해시1을 저장하고, 저장 공간을 절약하기 위해 저장으로부터 데이터2, 데이터3 및 V데이터1을 삭제할 수 있다. 이와 같이, 블록체인의 각각의 블록에 대해, 블록체인 노드(502)는 원래 블록 데이터 대신 ECC 인코딩된 블록 데이터의 하나의 데이터 세트(즉, 데이터1) 및 3개의 해시 값(즉, D해시2, D해시3 및 V해시1)만을 저장하여 저장 공간을 절약한다. 블록체인 노드(502)가 스마트 계약을 실행하기 위해 블록(100)의 블록 데이터가 필요하다고 결정하면, 데이터 저장 스킴에 따라 블록체인 노드(504, 506 및 508)로부터 각각 데이터2, 데이터3 및 V데이터1을 검색할 수 있다.
다른 블록체인 노드(504, 506 및 508)로부터 데이터 세트를 검색하기 위해, 블록체인 노드(502)는 데이터 저장 스킴에 따라 검색될 데이터 세트에 대응하는 해시 값을 전송할 수 있다. 예를 들어, 데이터2를 검색하기 위해, 블록체인 노드(502)는 D해시2를 블록체인 노드(504)로 전송할 수 있다. 블록체인 노드(504)가 저장된 데이터2를 갖는 경우, D해시2 수신에 응답하여 데이터2를 블록체인 노드(502)로 다시 전송할 수 있다. 블록체인 노드(504)로부터 데이터2를 수신한 후, 블록체인 노드(502)는 수신된 데이터 세트를 해싱하고 해시 값을 D해시2와 비교할 수 있다. 해시 값이 D해시2와 동일한 경우, 블록체인 노드(502)는 수신된 데이터 세트가 진본인 것으로 결정할 수 있다. 그렇지 않다면, 수신된 데이터 세트는 진본이 아닌 것으로 결정될 수 있다. 수신된 데이터 세트가 진본이 아닌 것으로 결정되면, 블록체인 노드(502)는 블록체인 노드(504)를 결함 노드(또는 비잔틴 노드)로서 보고할 수 있다. 블록체인 노드(502)에 의해 수신된 진본이 아닌 데이터의 퍼센티지가 ECC에 의해 정정될 수 있는 오류 또는 누락 비트의 최대 비율 이하이면, 블록(100)은 로컬로 저장되고 수신된 데이터 세트로부터 복원될 수 있다.
앞서 논의된 바와 같이, 인코딩 및 해싱 프로세스를 수행함으로써, 블록체인 데이터는 ECC 인코딩되고 복수의 데이터 세트로 분할될 수 있다. 저장 공간을 절약하기 위해, 각각의 블록체인 노드는 데이터 저장 스킴에 기초하여 하나 이상의 복수의 데이터 세트와 데이터 세트의 나머지의 해시 값을 저장할 수 있다. 저장된 데이터 세트와 해시 값은 블록체인 노드가 원래 데이터를 복원하기 위해 다른 노드로부터 데이터 세트를 검색하기 위하여 블록 ID로 인덱싱될 수 있다.
도 6은 본 명세서의 실시예에 따른 TEE에 기초한 공유 블록체인 데이터 저장의 프로세스(600)의 예를 도시한다. 이 예에서, 블록체인 네트워크(610)는 블록체인 노드(630a-d)인 4개의 블록체인 노드를 포함하는 것으로 가정한다. 블록체인 네트워크(610)는 또한 TEE를 호스팅하는 신뢰 노드(620)를 포함하거나 이와 통신한다. 신뢰 노드(620)는 컴퓨팅 디바이스, 컴퓨팅 시스템 또는 클라우드 컴퓨팅 시스템일 수 있다. 앞서 논의된 바와 같이, TEE는 하나 이상의 데이터 프로세서의 운영 체제로부터 격리된 신뢰 노드(620)의 하나 이상의 데이터 프로세서에 의해 호스팅될 수 있으며, 하나 이상의 데이터 프로세서 내에서 코드 실행 및 데이터 로딩의 향상된 기밀성 및 무결성을 제공하도록 구성된다.
일부 실시예에서, 신뢰 노드(620)는 권한 증명(POA: proof of authority )을 갖는 노드일 수 있다. 일부 예에서, POA는 신뢰 노드(620)의 상태에 기초하여 제공될 수 있다. 예를 들어, 신뢰 노드(620)는 블록체인 네트워크(610)의 배치자에 의해 관리되는 노드일 수 있다. 이러한 경우, 신뢰 노드(620)는 블록체인 네트워크(610)의 일부일 수 있거나 블록체인 네트워크(610) 외부에 있을 수 있다. 일부 예에서, POA는 투표를 통해 얻을 수 있다. 예를 들어, 블록체인 네트워크가 3f + 1개의 노드를 포함하는 것으로 가정하면(신뢰 노드(620)가 블록체인 네트워크(620)의 합의에 참여할 때 도 6에 도시된 예에서 f = 1), 허용될 수 있는 최대 결함 합의 노드 또는 비잔틴 노드(즉, 작용할 수 없거나 악의적으로 작용하는 노드)는 PBFT 합의 프로토콜 하에서 f이다. 이와 같이, 2f + 1 노드가 신뢰 노드(620)를 선택하기 위해 투표하면(각각의 디지털 서명에 의해 보증됨), 수신된 2f + 1 투표는 신뢰 노드(620)의 POA로서 사용될 수 있다.
앞서 논의된 바와 같이, SGX 활성화 어플리케이션과 같은 TA는 신뢰 구성 요소(또는 인클레이브 구성 요소) 및 비신뢰 구성 요소(어플리케이션 구성 요소)를 포함할 수 있다. 어플리케이션 구성 요소는 TEE 외부에 위치되며, 인클레이브 인터페이스 기능을 통해 TEE의 TCB에 액세스할 수 있다. 일부 실시예에서, 이러한 인클레이브 인터페이스 기능은 어플리케이션 구성 요소에 의해 사용되는 어플리케이션 프로그래밍 인터페이스(API: application programming interface)이다. 어플리케이션 구성 요소는 API를 사용하여 스마트 계약을 실행하기 위해 TEE에서 가상 머신을 호출하는 "이콜즈(ecalls)”를 만들 수 있다. 가상 머신은 특정 프로그래밍 언어 또는 비트스트림과 같은 바이너리 포맷으로 인코딩된 프로그램 명령을 실행하는 소프트웨어 프로그램일 수 있다. 일부 예에서, 가상 머신은 가상 머신을 실행하는 컴퓨팅 디바이스의 기본 하드웨어와 프로그램 명령 사이에 추상화 계층을 제공할 수 있다. 이러한 구성은 상이한 하드웨어를 갖는 상이한 컴퓨팅 디바이스에 걸쳐 동일한 프로그램 명령이 동일한 방식으로 실행될 수 있게 할 수 있다.
일부 실시예에서, 도 3 및 도 5의 설명에서 논의된 바와 같이, 인코딩 및 해싱 프로세스(300 및 500)에 따라 하나 이상의 소프트웨어 명령을 실행하기 위해 스마트 계약을 실행하는 어플리케이션 구성 요소에 의해 이콜(ecall)이 이루어질 수 있다. 그 후, TEE는 프로세스(300, 500)의 복수의 단계에 걸쳐 발생하는 복수의 이벤트 동안 데이터 프로세싱을 수행할 수 있다. 프로세스(300, 500)의 복수의 단계와 연관된 이벤트로부터 도출된 데이터의 검증된 기록은 프로세스(300, 500)의 최종 결과만에 기초한 기록보다 더욱 신뢰할 수 있다. 즉, TEE 기술을 사용하여, 검증될 필요가 있는 각각의 데이터 단편에 대해, 데이터 단편 자체가 검증될 뿐만 아니라, 데이터 단편을 생성하는 복수의 단계를 포함하는 프로세스가 또한 검증된다. 이는 프로세스의 모든 단계가 부정하게 변조되었을 확률이 낮기 때문에 최종 데이터 단편이 신뢰성이 높은 것을 보장한다. 이와 같이, 인코딩 및 해싱 프로세스(300, 500)는 TEE(620) 하에서 수행되는 경우 한 번에 수행될 수 있다. 컴퓨팅 결과는 프로세스(300, 500)의 단계에 기초하여 검증될 수 있으며, 블록체인 노드(630a-d)에 의해 신뢰되고 사용될 수 있다. 이에 비해, TEE가 없으면, 각각의 블록체인 노드는 인코딩 및 해싱 프로세스(300 또는 500)를 개별적으로 수행할 필요가 있으며, 이는 전체 블록체인 네트워크의 컴퓨팅 자원 소비를 상당히 증가시킬 수 있다.
일부 실시예에서, 하나 이상의 블록체인 노드(603a-d)는 블록체인 데이터를 신뢰 노드(620)로 전송할 수 있다. 블록체인 데이터는 도 3의 설명에서 논의된 바와 같이, 빈번하지 않게 액세스되는 블록을 포함할 수 있다. 신뢰 노드(620)는 데이터 저장 스킴에 기초하여 하나 이상의 소프트웨어 명령을 실행하기 위하여 TEE의 인클레이브 구성 요소를 호출할 수 있다. 예를 들어, 데이터 저장 스킴은 도 4의 설명에서 논의된 배열(400)일 수 있다. 빈번하지 않게 액세스되는 블록의 각각을 인코딩한 후 ECC 인코딩된 블록을 생성한다. 각각의 ECC 인코딩된 블록은 데이터 저장 스킴에 기초하여 4개의 데이터 세트로 분할될 수 있다. 데이터 세트는 데이터1, 데이터2, 데이터3 및 V데이터1로 표현될 수 있으며, 각각은 블록체인 노드(630a-d) 중 하나에 의해 유지된다. V데이터1은 오류 정정을 위한 ECC의 리던던트 비트를 나타낼 수 있다. 일부 실시예에서, 신뢰 노드(620)는 또한 TEE 하에서, 각각 D해시1, D해시2, D해시3 및 V해시1로 표현되는 데이터1, 데이터2, 데이터3 및 V데이터1의 해시 값을 계산할 수 있다.
일부 실시예에서, 데이터 세트 및 해시 값은 대응하는 블록 ID에 의해 인덱싱될 수 있다. 예를 들어, 블록체인 노드(630a)는 블록(100)과 연관된 데이터1, D해시1, D해시2 및 V해시1을 블록 ID(100)로 인덱싱할 수 있다. 이와 같이, 블록체인 노드(630a-d)는 데이터 복원을 위해 인덱싱된 블록 ID를 사용하여 해시 값을 그 대응 블록에 매핑할 수 있다.
인코딩된 블록 각각을 데이터 세트 데이터1, 데이터2, 데이터3 및 V데이터1로 분할한 후, 신뢰 노드(620)는 데이터 세트 및 데이터 저장 스킴을 각각의 블록체인 노드(630a-d)로 전송할 수 있다. 데이터 세트를 수신한 후, 각각의 블록체인 노드는 하나 이상의 데이터 세트를 저장하고 데이터 저장 스킴에 기초하여 데이터 세트의 나머지를 해싱할 수 있다. 예를 들어, 블록체인 노드(630a)는 데이터1을 저장하고 데이터2, 데이터3 및 V데이터1을 해싱하여 D해시2, D해시3 및 V해시1을 생성할 수 있다. 하나 이상의 데이터 세트와 해시 값이 저장된 후, 대응 블록과 데이터 세트의 나머지가 삭제되어 블록체인 노드의 저장 공간을 절약할 수 있다. 예를 들어, 블록(100)과 연관된 데이터1, D해시2, D해시3 및 V해시1이 저장된 후, 블록체인 노드로부터 데이터2, 데이터3, V데이터1 및 블록(100)이 삭제될 수 있다.
일부 실시예에서, 신뢰 노드(620)는 블록체인 데이터에 기초하여 도출된 검사합(checksum)을 생성할 수 있다. 검사합은 또한 데이터 무결성을 보장하도록 오류 검출을 위해 블록체인 노드(630a-d)로 전송될 수 있다. 블록체인 노드(630a)가 스마트 계약을 실행하기 위해 블록(100)의 블록체인 데이터가 필요하다고 결정하면, 신뢰 노드로부터 데이터2, 데이터3 및 V데이터1을 검색하거나 대응하는 해시 값을 전송하여 블록체인 노드(630b, 630c 및 630d)로부터 데이터 세트를 검색할 수 있다. 그 후, 검색된 데이터 세트는 데이터1과 결합하여 대응 블록을 복원할 수 있다.
본원에 설명된 바와 같이, 프로세싱을 위해 데이터를 TEE에 로딩함으로써, 데이터의 기밀성 및 무결성이 보호될 수 있다. 신뢰 노드(620)는 검증 가능한 인코딩된 블록을 생성하고, 인코딩된 블록을 데이터 세트로 분할하고, 데이터 세트 및 데이터 저장 스킴을 저장을 위해 각각의 블록체인 노드로 전송하도록 신뢰될 수 있다. 그 후, 각각의 블록체인 노드는 데이터 저장 스킴에 따라 데이터 세트의 일부를 저장하여 저장 공간을 절약할 수 있다. TEE가 활성화된 신뢰 노드를 가짐으로써, ECC는 각각의 블록체인 노드에 의해 개별적으로 수행되는 대신 신뢰 노드에 의해 한 번만 수행되면 된다. 이와 같이, 블록체인 네트워크의 전체 컴퓨팅 자원 소비가 상당히 감소될 수 있다.
도 7은 본 명세서의 실시예에 따라 블록체인 네트워크에 블록체인 노드를 추가하는 예(700)를 도시한다. 앞서 논의된 바와 같이, 인코딩 및 해싱 프로세스가 수행되어 블록체인 네트워크의 저장 소비를 효과적으로 감소시킬 수 있다. PBFT 합의 프로토콜 하에서, 블록체인 노드의 총 수가 N으로 표기되고, 결함 블록체인 노드의 수가 f로 표기되면, 블록체인 네트워크가 비잔틴 결함 허용이 되도록 N > 3f가 충족되어야 한다. 예를 들어, 4-노드 블록체인 네트워크에서, 블록체인 네트워크에 의해 허용될 수 있는 결함 노드의 최대 수는 PBFT 합의 프로토콜 하에서 1이다. 즉, 블록체인 네트워크에 의해 요구되는 선의(honest) 블록체인 노드의 최소 수는 3이다. 이와 같이, 블록체인 노드가 3/4 이하의 코드 레이트를 갖는(즉, 원래 데이터의 비율이 총 인코딩된 데이터의 3/4 이하) 원래 블록체인 데이터(또는 원래 데이터)에 대해 ECC를 수행하고, 각각 인코딩된 블록체인 데이터의(또는 인코딩된) 1/4을 저장하는 경우, 블록체인 노드 중 하나가 결함 노드이더라도 원래 데이터가 복원될 수 있다. 리던던시 레이트는 블록체인 네트워크의 블록체인 노드에 의해 저장된 인코딩 데이터와 원래 데이터의 총 볼륨을 원래 데이터의 사본의 볼륨으로 나눈 것으로 규정될 수 있다. 이 예에서, 블록체인 노드가 원래 데이터를 저장하지 않으므로, 리던던시 레이트는 코드 레이트의 역(즉, 인코딩된 데이터의 볼륨을 원래 데이터로 나눈 것)인 4/3이다.
도시된 예(700)에서, 블록 1 내지 100이 생성될 때, 블록체인 네트워크에 4개의 블록체인 노드, 노드 1, 2, 3, 4가 있는 것으로 가정한다. PBFT 합의 프로토콜 하에서, 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수는 3이다. 도 3 및 도 5의 설명에서 논의된 바와 같이, 인코딩 및 해싱 프로세스를 적용하여, 블록 1 내지 100은 각각 최대 코드 레이트 3/4로 인코딩될 수 있다. 인코딩된 블록은 각각 원래 데이터의 3개의 데이터 세트와 4개의 블록체인 노드에 의해 저장될 리던던트 비트의 1개의 데이터 세트로 분할될 수 있다.
노드(5)는 블록(101)의 생성 중에 블록체인 네트워크에 풀 노드로서 추가된다. 즉, 노드(5)는 블록 1 내지 100의 전체 사본을 저장하지만, 블록(101)의 생성으로부터 시작하는 4개의 기존 블록체인 노드로 인코딩 및 해싱 프로세스에 참여한다. 블록 101 내지 200의 생성 중에 블록체인 네트워크가 5개의 블록체인 노드를 갖는 것으로 가정하면, 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜 하에서 4이다. 이와 같이, 블록 101 내지 200은 각각 4/5의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록은 각각 원래 데이터의 4개의 데이터 세트와 블록체인 네트워크의 5개의 블록체인 노드에 의해 저장될 리던던트 비트의 1개의 데이터 세트로 분할될 수 있다.
노드(6)는 블록(201)의 생성 중에 블록체인 네트워크에 풀 노드로서 추가된다. 즉, 노드(6)는 블록 1 내지 200의 전체 사본을 저장하지만, 블록(201)의 생성 이후 블록체인 네트워크의 다른 블록체인 노드로 인코딩 및 해싱 프로세스에 참여한다. 블록 201 내지 300의 생성 중에 블록체인 네트워크가 6개의 블록체인 노드를 갖는 것으로 가정하면, 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜 하에서 5이다. 이와 같이, 블록 201 내지 300은 각각 5/6의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록은 각각 원래 데이터의 4개의 데이터 세트와 블록체인 네트워크의 6개의 블록체인 노드에 의해 저장될 리던던트 비트의 2개의 데이터 세트로 분할될 수 있다.
노드(7)는 블록(301)의 생성 중에 블록체인 네트워크에 풀 노드로서 추가된다. 즉, 노드(7)는 블록 1 내지 300의 전체 사본을 저장하지만, 블록(301)의 생성 이후 블록체인 네트워크의 다른 블록체인 노드로 인코딩 및 해싱 프로세스에 참여한다. 블록 301 내지 400의 생성 중에 블록체인 네트워크가 7개의 블록체인 노드를 갖는 것으로 가정하면, 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜 하에서 5이다. 이와 같이, 블록 301 내지 400은 각각 5/7의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록은 각각 원래 데이터의 5개의 데이터 세트와 블록체인 네트워크의 7개의 블록체인 노드에 의해 저장될 리던던트 비트의 2개의 데이터 세트로 분할될 수 있다.
노드(8)는 블록(401)의 생성 중에 블록체인 네트워크에 풀 노드로서 추가된다. 즉, 노드(8)는 블록 1 내지 400의 전체 사본을 저장하지만, 블록(401)의 생성 이후 블록체인 네트워크의 다른 블록체인 노드로 인코딩 및 해싱 프로세스에 참여한다. 블록 401 내지 500의 생성 중에 블록체인 네트워크가 8개의 블록체인 노드를 갖는 것으로 가정하면, 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜 하에서 6이다. 이와 같이, 블록 401 내지 500은 각각 3/4의 최대 코드 레이트로 인코딩될 수 있다. 인코딩된 블록은 각각 원래 데이터의 6개의 데이터 세트와 블록체인 네트워크의 8개의 블록체인 노드에 의해 저장될 리던던트 비트의 2개의 데이터 세트로 분할될 수 있다.
노드(9)는 블록(501)의 생성 중에 블록체인 네트워크에 풀 노드로서 추가된다. 즉, 노드(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은 위의 예(700)에 따라 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이다.
각각의 블록체인 노드가 하나의 데이터 세트를 저장하는 것으로 가정하면, ECC 인코딩된 블록으로부터 분할된 데이터 세트의 수가 E인 경우, 원래 블록을 저장하는 블록체인 노드의 수는 N - E로 계산될 수 있다. 위의 분석에 기초하여, m개의 블록체인 노드가 리던던트 비트의 데이터 세트를 저장하는 경우, 최대로 허용 가능한 결함 블록체인 노드, DF는 DF = m + N - E로 표현될 수 있다. DF가 f 이상이므로, E - m ≤ N -F인 것으로 추론될 수 있다. 즉, E - m ≤ N - F(E > 0)인 경우, ECC의 코드 레이트, E - m/E는 N개의 결함 노드 중 F를 허용하고 데이터 복원의 안전을 보장하기에 충분히 낮다. 리던던시 레이트, r은 r = N - E + E/(E - m)으로 표현될 수 있다.
블록 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로 감소되며, 이는 프로세스를 재수행하기 전의 리던던시 레이트보다 상당히 낮다. 따라서, 원래 블록이 적어도 하나의 블록체인 노드에 저장될 때 인코딩 및 해싱 프로세스를 재수행하는 것은 시스템의 리던던시 레이트 및 저장 소비를 효과적으로 감소시킨다.
일부 경우에, 블록체인 노드는 저장하는 블록체인 데이터가 사전 결정된 데이터 볼륨 임계값을 초과하는 것으로 결정할 수 있다. 이러한 경우, 블록체인 노드는 블록체인 네트워크의 리던던시 레이트를 감소시키기 위해 하나 이상의 블록에 대해 인코딩 및 해싱 프로세스를 재수행하기 위해 다른 블록체인 노드에 대한 요청을 개시할 수 있다. 일부 경우에, 블록체인 네트워크의 리던던시 레이트가 사전 결정된 임계값보다 큰 것으로 결정하는 것에 대한 응답과 같이, 인코딩 및 해싱 프로세스를 재수행하기 위한 요청이 블록체인 네트워크 외부의 신뢰 노드에 의해 개시될 수 있다. 예를 들어, 예(700)에 도시된 바와 같이, 9개의 블록체인 노드를 갖는 블록체인 네트워크의 경우, PBFT 프로토콜 하에서의 최소 리던던시 레이트는 9/7이다. 신뢰 노드는 하나 이상의 블록의 리던던시 레이트가 2를 초과할 때 요청을 개시할 수 있다. 일부 실시예에서, 블록은 리던던시 레이트에 기초하여 인코딩 및 해싱 프로세스를 재수행하도록 선택될 수 있다. 더 높은 리던던시 레이트를 갖는 블록은 저장에 대한 더 큰 절약으로 인해 더 높은 우선 순위를 갖도록 선택될 수 있다.
인코딩 및 해싱 프로세스를 재수행하기 위한 요청은 허용 가능한 결함 블록체인 노드의 최대 수(즉, f/(3f + 1))에 상당하는 ECC를 수행하기 위한 최대 코드 레이트를 포함할 수 있다. 요청은 또한 하나 이상의 코딩된 블록의 각각의 코딩된 블록을 복수의 데이터 세트로 분할하고 복수의 데이터 세트를 블록체인 네트워크의 블록체인 노드에 할당하는 명령을 포함할 수 있다. 예를 들어, 명령은 각각의 인코딩된 블록을 9개의 데이터 세트로 나누어지도록 명령할 수 있으며, 각각의 데이터 세트는 9개의 블록체인 노드 중 하나에 할당된다. 일부 경우에, 명령은 도 3 내지 도 5의 설명에서 논의된 바와 같이, 데이터 저장 스킴에 의해 제공된다.
요청이 블록체인 노드에 의해 개시되면, 블록체인 네트워크는 PBFT 알고리즘의 3-단계 프로세스(사전-준비, 준비 및 커밋 단계)를 거쳐 요청에 포함된 명령에 따라 재(re)-ECC의 합의에 도달할 수 있다. 요청을 개시하는 블록체인 노드는 PBFT 알고리즘을 수행하기 위한 프라이머리 블록체인 노드로서의 역할을 할 수 있다. 요청을 수신하는 임의의 블록체인 노드는 프라이머리 블록체인 노드로부터 하나 이상의 블록을 식별 및 검색할 수 있다.
블록체인 노드는 또한 권한 증명과 함께 신뢰 노드로부터 요청이 수신되면 명령에 따라 ECC를 직접 재수행할 수 있다. 이러한 경우에, 요청은 또한 하나 이상의 블록을 저장하는 적어도 하나의 블록체인 노드를 식별하는 식별을 포함할 수 있다. 그 후, 요청을 수신하는 블록체인 노드는 요청에 기초하여 하나 이상의 블록을 저장하는 블록체인 네트워크의 적어도 하나의 블록체인 노드를 식별하고, 적어도 하나의 블록체인 노드 중 하나로부터 하나 이상의 블록을 검색할 수 있다.
하나 이상의 블록을 검색하기 위해, 블록체인 노드는 하나 이상의 블록의 해시 값을 적어도 하나의 블록체인 노드 중 하나로 전송할 수 있다. 일부 예에서, 해시 값은 블록체인의 블록 헤더에 저장된다. 하나 이상의 블록을 수신한 후, 블록체인 노드는 수신된 하나 이상의 블록의 해시 값을 전송한 대응 해시 값과 비교하여 수신된 하나 이상의 블록이 진본인지를 결정할 수 있다. 해시 값이 동일하면, 수신된 하나 이상의 블록은 진본인 것으로 결정될 수 있다. 그렇지 않으면, 블록체인 노드는 하나 이상의 블록이 결함 노드로부터 수신된 블록체인 노드를 보고할 수 있다.
그 후, 블록체인 노드는 하나 이상의 코딩된 블록을 생성하라는 요청에 제공된 코드 레이트에 기초하여 하나 이상의 블록의 ECC를 수행할 수 있다. 도 6에 나타낸 예에서, 하나 이상의 코딩된 블록의 각각의 코딩된 블록에 대해, 블록체인 노드는 명령에 따라 코딩된 블록을 9개의 데이터 세트로 분할하고 명령에 따라 블록체인 노드에 할당된 9개의 데이터 세트 중 적어도 하나를 저장할 수 있다. 그 후, 블록체인 노드는 복수의 데이터 세트 중 나머지 8개를 해싱하여 나머지 8개 데이터 세트에 대응하는 해시 값을 생성하고, 해시 값을 저장하고, 하나 이상의 블록을 삭제할 수 있다. 그 후, 하나 이상의 블록에 대한 인코딩 및 해싱 프로세스가 완료된다.
이용 가능한 모든 블록에 대한 인코딩 및 해싱 프로세스가 완료된 후, 블록체인 네트워크의 리던던시 레이트가 여전히 사전 결정된 데이터 저장 임계값을 초과하거나 블록체인 노드의 저장 소비가 사전 결정된 데이터 저장 임계값보다 큰 경우, 블록체인은 노드는 블록체인 네트워크에 추가된 새로운 블록체인 노드에 대한 응답으로 다른 블록체인 노드에 인코딩 및 해싱 프로세스의 또 다른 라운드를 트리거링하도록 통지할 수 있다. 예를 들어, 8개의 블록체인 노드가 노드 9가 추가되기 전에 블록 1 내지 400에 대한 인코딩 및 해싱 프로세스를 수행하고 블록체인 노드의 저장 소비가 노드 8의 저장 용량의 90%보다 여전히 큰 경우, 노드 8은 노드 8이 추가된 후 생성된 블록에 대한 인코딩 및 해싱 프로세스의 또 다른 라운드를 수행하도록 노드 1 내지 7에 통지를 전송할 수 있다.
도 8은 본 명세서의 실시예에 따른 합의 프로세스(800)의 예를 도시한다. 이러한 예에서, 합의 프로세스(800)는 블록체인 네트워크의 신뢰 노드(810) 및 4개의 블록체인 노드(802, 804, 806 및 808)에 의해 수행된다. 도 7의 설명에서 논의된 바와 같이, 새로운 풀 블록체인 노드가 블록체인 네트워크에 추가되면, 풀 노드가 인코딩 및 해싱 프로세스에 참여하지 않았기 때문에, ECC 인코딩 블록으로부터 분할된 데이터 세트 대신 원래 블록을 저장한다. 풀 노드에 의해 저장된 블록의 리던던시 레이트는 더 높은 코드 레이트를 갖는 블록의 재-ECC에 의해 감소될 수 있다.
그러나, 각각의 블록체인 노드에 대한 재-ECC 수행은 블록체인 네트워크의 컴퓨팅 부담을 상당히 증가시킬 수 있다. 도 6의 설명에서 논의된 바와 같이, 블록체인 데이터는 신뢰 노드(810)의 TEE에 로딩될 수 있다. 신뢰 노드(810)는 검증 가능한 인코딩된 블록을 생성하고, 인코딩된 블록을 데이터 세트로 분할하고, 데이터 세트 및 데이터 저장 스킴을 저장을 위해 각각의 블록체인 노드로 전송할 수 있다. TEE 활성화된 신뢰 노드를 가짐으로써, ECC는 각각의 블록체인 노드에 의해 개별적으로 수행되는 대신 한 번만 수행되면 된다. 블록체인 네트워크의 전체 컴퓨팅 자원이 감소될 수 있다.
일부 실시예에서, 블록체인 노드는 하나 이상의 블록에 대한 인코딩 및 해싱 프로세스를 재수행하라는 요청을 신뢰 노드(810)로 전송할 수 있다. 요청을 수신한 후, 신뢰 노드(810)는 하나 이상의 블록을 저장하는 블록체인 네트워크의 블록체인 노드(802, 804, 806 또는 808)를 식별할 수 있다. 블록체인 노드는 요청을 전송한 동일한 노드일 수 있거나, 하나 이상의 블록을 저장하는 상이한 블록체인 노드일 수 있다. 신뢰 노드(810)가 블록체인 노드(802)가 하나 이상의 블록을 저장하는 것을 식별하는 것으로 가정하면, 신뢰 노드(810)는 블록체인 노드(802)로부터 하나 이상의 블록을 검색할 수 있다. 하나 이상의 블록을 검색하기 위해, 신뢰 노드(810)는 하나 이상의 블록에 대응하는 해시 값을 블록체인 노드(802)로 전송할 수 있다. 블록체인 노드(802)는 해시 값에 대응하는 하나 이상의 블록을 식별하고 이를 신뢰 노드(810)로 전송할 수 있다.
새로운 블록체인 노드가 블록체인 네트워크에 추가될 때, 신뢰 노드(810)는 저장 최적화를 위해 블록체인 네트워크에 새로운 데이터 저장 스킴을 시행할 수 있다. 예를 들어, 도 4의 설명에서 논의된 바와 같이, 데이터 저장 스킴을 채용하는 4-노드 블록체인 네트워크의 경우, 최대 ECC 코드 레이트는 3/4이다. 새로운 풀 노드가 블록체인에 추가될 때, 신뢰 노드(810)는 5개의 블록체인 노드 모두를 포함하는 새로운 데이터 저장 스킴을 시행할 수 있다. 5-노드 블록체인 네트워크는 단지 하나의 결함 블록체인 노드를 허용할 수 있으므로, 최대 ECC 코드 레이트는 4/5로 증가되어 저장 효율성을 향상시킬 수 있다.
따라서, 새로운 데이터 저장 스킴에 기초하여, 신뢰 노드(810)는 더 높은 코드 레이트를 갖는 ECC를 사용하여 하나 이상의 블록을 인코딩할 수 있다. 하나 이상의 블록 각각에 대해, 신뢰 노드(810)는 블록을 복수의 데이터 세트로 분할하고 복수의 데이터 세트의 해시 값을 계산할 수 있다.
새로운 데이터 저장 스킴을 시행하기 위해, 신뢰 노드(810)는 합의 프로세스(800)에서 블록체인 노드(802, 804, 806 및 808)에 관여할 수 있다. 합의 프로세스(800)는 저장 공간을 절약하기 위해 새로운 데이터 저장 스킴 하의 데이터 세트가 블록체인 노드(802, 804, 806 및 808)에 의해 저장된 기존 데이터를 대체하는 데 사용될 수 있도록 신뢰 노드(810)가 블록체인 노드가 새로운 데이터 저장 스킴에 동의하는 것을 확인할 수 있도록 수행된다.
합의 프로세스(800)는 요청 단계(812), 응답 단계(814) 및 커밋 단계(816)를 포함하는 3-단계 프로세스일 수 있다. 합의 프로세스(800) 후에, 새로운 데이터 저장 스킴이 신뢰 노드(810)에 의해 활성화되고 블록체인 노드(802, 804, 806 및 808)에 의해 채용될 수 있다. 그 후, 블록체인 노드(802, 804, 806 및 808)는 새로운 데이터 저장 스킴에 기초하여 블록체인 데이터를 저장하거나 복원할 수 있다. PBFT 합의 프로토콜은 합의 프로세스(800)를 설명하기 위해 본원에서 사용된다. 작업 증명(PoW), 지분 증명(PoS) 및 위임 지분 증명(DPoS: Delegated Proof of Stake)과 같은 다른 합의 프로토콜이 본 명세서의 실시예에 따라 합의에 도달하는 데 추가적으로 또는 대안적으로 사용될 수 있다.
요청 단계(812)에서, 신뢰 노드(810)는 각각의 블록체인 노드(802, 804, 806 및 808)에 요청을 전송할 수 있다. 일부 실시예에서, 요청은 각각의 블록체인에 의해 저장되도록 할당된 데이터를 포함할 수 있다. 할당된 데이터는 복수의 데이터 세트, 해시 값, 또는 복수의 데이터 세트와 각각의 블록체인 노드 사이의 대응을 제공하는 인덱스 중 적어도 하나를 포함할 수 있다. 할당된 데이터는 저장 공간을 절약하기 위해 블록체인 노드에 의해 현재 저장되어 있는 하나 이상의 블록과 연관된 데이터를 대체하기 위한 것이다. 일부 예에서, 인덱스는 도 4에 도시된 데이터 관리 스킴(400)에 따른 대응과 같이, 복수의 데이터 세트와 블록체인 노드(802, 804, 806 및 808) 사이의 대응을 나타낼 수 있다. 인덱스는 블록체인 노드(802)가 데이터1을 저장하고, 블록체인 노드(804)가 데이터2를 저장하고, 블록체인 노드(806)가 데이터3을 저장하고, 블록체인 노드(808)가 V데이터1을 저장하도록 제공할 수 있다. 일부 예에서, 요청은 또한 수신자가 신뢰 노드(810)의 아이덴티티를 검증하기 위한 신뢰 노드(810)의 디지털 서명을 포함할 수 있다.
블록체인 노드(802, 804, 806 및 808)가 요청을 수신한 후, 이들 각각은 응답 단계(814)에서 요청에 개별적으로 응답할 수 있다. 응답 메시지는 각각의 블록체인 노드가 새로운 데이터 저장 스킴을 수신하고 수용했다는 표시를 포함할 수 있다. 일부 실시예에서, 응답 메시지는 신뢰 노드(810)에 의해 동기되어 수신되지 않을 수 있다. 예를 들어, 블록체인 노드 중 일부는 블록체인 네트워크에 결함이 있거나, 사용 중이거나, 접속 해제될 수 있으며, 이는 응답 메시지가 지연되거나 사용할 수 없게 할 수 있다. 따라서, 블록체인 노드(802, 804, 806 및 808)는 신뢰 노드(810)로부터 합의에 도달하기에 충분한 응답 메시지가 수신되었다는 확인을 수신하기 전에, 기존 데이터를 삭제하지 않고 할당된 데이터 세트, 해시 값 및 인덱스를 저장할 수 있다. 더 빠른 동기화를 달성하기 위해, 각각의 블록체인 노드는 개인 키를 사용하여 응답 메시지에 디지털 서명할 수 있다. 이와 같이, 각각의 응답 메시지는 전송 노드의 디지털 서명을 갖는다. 전송 노드가 접속 해제되거나 이와 달리 사용할 수 없는 경우에도, 신뢰 노드(810)는 응답 메시지를 검증하고 추가 지연 없이 합의 프로세스(800)를 진행할 수 있다.
합의 프로세스(800)는 신뢰 노드(810)가 블록체인 노드로부터 N - DF = E - m 응답 메시지를 수신하면 커밋 단계(816)에 진입할 수 있다. E - m 응답 메시지를 수신함으로써, 신뢰 노드(810)는 블록체인 노드(802, 804, 806 및 808)가 신뢰 노드(810)에 의해 제공된 새로운 데이터 저장 스킴을 채용하는 합의에 도달한 것으로 결정할 수 있다. 따라서, 신뢰 노드(810)는 각각의 블록체인 노드(802, 804, 806 및 808)에 커밋 메시지를 전송하여 새로운 데이터 저장 스킴을 활성화시킬 수 있다. 커밋 메시지를 수신한 후, 블록체인 노드(802, 804, 806 및 808)는 일부 실시예에서 블록에 대응하는 기존 데이터를 삭제하여 저장 소비를 감소시킬 수 있다.
일부 실시예에서, 신뢰 노드(810)는 블록체인 노드가 블록체인 네트워크로부터 탈락하거나 삭제되는 것에 응답하여 ECC 및 합의 프로세스(800)를 재수행한다. 예를 들어, 복수의 블록 각각에 대해, 신뢰 노드(810)는 ECC 인코딩된 블록 중 적어도 일부를 저장하는 블록체인 노드의 수, E, 및 ECC 인코딩된 블록의 리던던트 비트의 적어도 일부를 저장하는 블록체인 노드의 수, m을 결정할 수 있다. 신뢰 노드(810)는 또한 블록체인 네트워크의 블록체인 노드의 총 수, N, 및 블록체인 네트워크에 의해 허용 가능한 결함 블록체인 노드의 최대 수, f를 결정할 수 있다. 그 후, 신뢰 노드(810)는 E - m > N - F라고 결정하면 (N - f)/N 코드 레이트에 기초하여 복수의 블록을 재-ECC할 수 있다.
일부 실시예에서, 신뢰 노드(810)는 컴퓨팅 자원의 이용률이 사전 결정된 값 이하일 때 ECC를 수행할 수 있다. 예를 들어, 신뢰 노드(810)의 CPU 사용량이 50% 미만일 때 ECC가 수행될 수 있다.
일부 실시예에서, 블록체인 네트워크가 복수의 풀 노드를 포함하는 경우, 풀 노드가 ECC 인코딩된 블록으로부터 분할된 데이터 세트의 저장을 공유하지 않았기 때문에 풀 노드에 의해 저장된 블록의 리던던시 레이트는 상대적으로 높을 수 있다. 일부 경우에, 모든 블록의 재-ECC가 컴퓨팅 자원을 요구할 수 있다. 이러한 경우, 블록의 우선 순위 값을 결정하고 더 큰 저장 절약으로 귀결될 수 있는 블록에 대해 재-ECC를 우선 순위화하는 것이 유리할 수 있다.
전술한 바와 같이, N- 노드 블록체인 네트워크에 저장된 블록의 리던던시 레이트는 r = N - E + E/(E - m)으로 표현될 수 있다. 블록의 우선 순위 값은 N - r = E - E/(E - m)으로 규정될 수 있다. 우선 순위 값이 낮을수록, 블록의 재-ECC 우선 순위가 높아진다. 즉, 더 낮은 우선 순위 값을 갖는 블록은 재-ECC 동작이 블록에 대해 수행된 후 더 높은 리던던시 레이트 공제를 가질 수 있다. 따라서, 블록체인 네트워크는 최저 우선 순위 값을 갖는 블록에 대해 재-ECC를 우선 순위화할 수 있다. 재-ECC는 최대 허용 가능 코드 레이트 (N - f)/N에 기초하여 가장 큰 저장 절약을 달성할 수 있다.
일부 실시예에서, 신뢰 노드(810)는 우선 순위 인덱스에서 우선 순위 값을 유지할 수 있다. 우선 순위 인덱스는 각각의 블록의 블록 ID와 대응하는 우선 순위 값 사이의 대응을 제공할 수 있다. 블록의 재-ECC 후에, 재-ECC 코드 레이트에 기초하여 계산된 새로운 우선 순위 값에 기초하여 우선 순위 인덱스가 업데이트될 수 있다.
재-ECC 및 ECC 인코딩된 블록의 저장을 공유한 후, 블록체인 노드가 저장하는 블록체인 데이터가 여전히 사전 결정된 데이터 저장 임계값을 초과하는 크기를 가지고 있는 것으로 결정하면, 추가 블록을 재-ECC에 추가하라는 통지를 신뢰 노드(810)에 전송할 수 있다. 통지를 수신한 후, 신뢰 노드(810)는 우선 순위 인덱스의 우선 순위 값에 기초하여 재-ECC를 할 추가 블록을 선택할 수 있다.
도 9는 본 명세서의 실시예에 따라 실행될 수 있는 프로세스(900)의 예를 도시한다. 편의상, 프로세스(900)는 본 명세서에 따라 하나 이상의 위치에 위치되고 적절하게 프로그래밍된 컴퓨팅 디바이스 또는 하나 이상의 컴퓨터의 시스템의 TEE에서 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 컴퓨팅 시스템, 예를 들어, 도 1의 컴퓨팅 시스템(106, 108)의 컴퓨팅 디바이스가 프로세스(900)를 수행할 수 있다.
902에서, 컴퓨팅 디바이스는 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신한다. 일부 경우에, 블록체인 노드는 블록체인의 사본을 저장하는 풀 노드이다.
904에서, 복수의 블록 각각에 대해, 컴퓨팅 디바이스는 블록의 ECC 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드의 제1 수 및 블록의 ECC 인코딩 버전으로부터 분할된 리던던트 비트로 구성된 데이터 세트를 저장하는 블록체인 노드의 제2 수를 결정한다.
906에서, 컴퓨팅 디바이스는 제1 수 및 제2 수에 기초하여 블록의 우선 순위 값을 계산한다. 908에서, 컴퓨팅 디바이스는 ECC를 사용하여 복수의 블록 중 적어도 일부를 인코딩하여 복수의 인코딩된 블록을 생성하고, 여기서 복수의 블록 중 적어도 일부는 복수의 블록 중 적어도 일부 외의 복수의 블록의 나머지보다 더 작은 우선 순위 값을 갖고, 복수의 인코딩된 블록 중 적어도 일부의 코드 레이트는 블록체인 네트워크에 의해 요구되는 선의 블록체인 노드의 최소 수를 블록체인 네트워크의 블록체인 노드의 총 수로 나눈 것과 같다. 일부 경우에, 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜에 기초하여 결정된다.
일부 경우에, 복수의 블록 중 적어도 일부를 인코딩한 후, 컴퓨팅 디바이스는 블록체인 네트워크에 의해 허용될 수 있는 결함 노드의 최대 수 및 블록체인 노드의 총 수에 기초하여 복수의 블록의 업데이트된 우선 순위 값을 계산하며, 요구되는 선의 블록체인 노드의 최소 수 및 허용될 수 있는 결함 블록체인 노드의 최대 수는 총 수에 합산된다.
일부 경우에, 컴퓨팅 디바이스는 복수의 블록의 블록 ID와 복수의 블록의 우선 순위 값 사이의 대응을 제공하는 인덱스를 추가로 생성하고; 복수의 블록 중 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트한다.
일부 경우에, 컴퓨팅 디바이스는 복수의 인코딩된 블록 각각을 복수의 데이터 세트로 분할하고; 복수의 데이터 세트의 해시 값을 계산하고; 복수의 데이터 세트, 해시 값, 및 복수의 데이터 세트와 해시 값 사이의 대응을 제공하는 인덱스 중 적어도 하나를 블록체인 노드 각각으로 전송한다.
일부 경우에, 복수의 블록 중 적어도 일부는 복수의 블록 중 제1의 적어도 일부이고, 컴퓨팅 디바이스는 추가로 컴퓨팅 디바이스에 의해 전송된 복수의 데이터 세트 중 적어도 하나를 저장하고 복수의 블록 중 제1의 적어도 일부를 삭제한 후, 블록체인 노드 상에 저장된 블록체인 데이터가 사전 결정된 데이터 저장 임계값을 초과하는 크기를 갖는다는 통지를 수신하고; ECC를 사용하여 복수의 블록 중 제2의 적어도 일부를 인코딩하고, 여기서 복수의 블록 중 제2의 적어도 일부의 우선 순위 값은 복수의 블록 중 제1의 적어도 일부의 우선 순위 값보다 크고, 복수의 블록 중 제1 및 제2의 적어도 일부 이외의 복수의 블록의 나머지보다 작고; 복수의 블록 중 제2의 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트한다.
일부 경우에, 우선 순위 값은 제1 수에서 제1 수와 제2 수 사이의 차이에 의해 제1 수를 나눈 수를 뺀 값으로서 계산된다.
일부 경우에, 컴퓨팅 디바이스의 컴퓨팅 자원의 이용률이 사전 결정된 값 이하일 때 ECC가 수행된다. 일부 경우에, ECC는 복수의 블록에 리던던트 비트를 추가함으로써 수행되는 소거 코딩이다.
도 10은 본 명세서의 실시예에 따른 장치(1000)의 모듈의 예의 도면이다. 장치(1000)는 블록체인 데이터를 프로세싱하도록 구성된 TEE를 호스팅하는 컴퓨팅 디바이스의 실시예의 예일 수 있다. 장치(1000)는 상술한 실시예에 대응할 수 있고, 장치(1000)는: 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신하는 수신 모듈(1002); 복수의 블록 각각에 대해: 블록의 ECC 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드의 제1 수 및 블록의 ECC 인코딩된 버전으로부터 분할된 리던던트 비트로 구성된 데이터 세트를 저장하는 블록체인 노드의 제2 수를 결정하는 결정 모듈(1004); 제1 수 및 제2 수에 기초하여 블록의 우선 순위 값을 계산하는 계산 모듈(1006); 및 복수의 인코딩된 블록을 생성하기 위해 ECC를 사용하여 복수의 블록 중 적어도 일부를 인코딩하는 인코딩 모듈(1008)을 포함하며, 여기서 복수의 블록 중 적어도 일부는 복수의 블록 중 적어도 일부 이외의 복수의 블록의 나머지보다 더 작은 우선 순위 값을 갖고, 복수의 인코딩된 블록 중 적어도 일부의 코드 레이트는 블록체인 네트워크에 의해 요구되는 선의(honest) 블록체인 노드의 최소 수를 블록체인 네트워크의 블록체인 노드의 총 수로 나눈 것과 같다.
일부 실시예에서, 복수의 블록 중 적어도 일부를 인코딩한 후, 계산 모듈(1006)은 추가로 블록체인 네트워크에 의해 허용될 수 있는 결함 노드의 최대 수 및 블록체인 노드의 총 수에 기초하여 복수의 블록의 업데이트된 우선 순위 값을 계산하며, 여기서 요구되는 선의 블록체인 노드의 최소 수 및 허용될 수 있는 결함 블록체인 노드의 최대 수는 총 수에 합산된다.
일부 실시예에서, 장치(1000)는, 복수의 블록의 블록 ID와 복수의 블록의 우선 순위 값 사이의 대응을 제공하는 인덱스를 생성하는 생성 서브모듈; 및 복수의 블록 중 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트하는 업데이팅 서브모듈을 더 포함한다.
일부 실시예에서, 장치(1000)는, 복수의 인코딩된 블록 각각을 복수의 데이터 세트로 분할하는 분할 서브모듈; 추가로 복수의 데이터 세트의 해시 값을 계산하는 계산 모듈(1006); 및 복수의 데이터 세트, 해시 값, 및 복수의 데이터 세트와 해시 값 사이의 대응을 제공하는 인덱스 중 적어도 하나를 블록체인 노드 각각으로 전송하는 전송 모듈을 더 포함한다.
일부 실시예에서, 복수의 블록 중 적어도 일부는 복수의 블록 중 제1의 적어도 일부이고, 수신 모듈(1002)은 추가로 컴퓨팅 디바이스에 의해 전송된 복수의 데이터 세트 중 적어도 하나를 저장하고 복수의 블록 중 제1의 적어도 일부를 삭제한 후, 블록체인 노드 상에 저장된 블록체인 데이터가 사전 결정된 데이터 저장 임계값을 초과하는 크기를 갖는다는 통지를 수신하고; 인코딩 모듈(1008)은 ECC를 사용하여 복수의 블록 중 제2의 적어도 일부를 추가로 인코딩하고, 여기서 복수의 블록 중 제2의 적어도 일부의 우선 순위 값은 복수의 블록 중 제1의 적어도 일부의 우선 순위 값보다 크고, 복수의 블록 중 제1 및 제2의 적어도 일부 이외의 복수의 블록의 나머지보다 작고, 복수의 블록 중 제2의 적어도 일부의 우선 순위 값을 업데이트된 우선 순위 값으로 업데이트한다.
일부 실시예에서, ECC는 컴퓨팅 디바이스의 컴퓨팅 자원의 이용률이 사전 결정된 값 이하일 때 수행된다.
일부 실시예에서, ECC는 복수의 블록에 리던던트 비트를 추가함으로써 수행되는 소거 코딩이다.
일부 실시예에서, 우선 순위 값은 제1 수에서 제1 수와 제2 수 사이의 차이에 의해 제1 수를 나눈 수를 뺀 값으로서 계산된다.
일부 실시예에서, 블록체인 노드는 블록체인의 사본을 저장하는 풀 노드이다.
일부 실시예에서, 요구되는 선의 블록체인 노드의 최소 수는 PBFT 합의 프로토콜에 기초하여 결정된다.
상술한 실시예에서 나타낸 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현할 수도 있거나, 특정 기능을 가진 제품을 사용하여 구현될 수 있다. 통상적인 실시예의 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 퍼스널 디지털 어시스턴트, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이러한 디바이스의 임의의 조합일 수 있다.
장치 내의 각각의 모듈의 기능 및 역할에 대한 실시예의 프로세스에 대해, 이전 방법에서 대응하는 단계의 실시예의 프로세스를 참조할 수 있다. 단순화를 위해 여기서 상세 사항은 생략된다.
장치 실시예는 기본적으로 방법 실시예에 대응하므로, 관련 부분에 대해, 방법 실시예의 관련 설명을 참조할 수 있다. 상술한 장치 실시예는 단지 예일 뿐이다. 별도의 부분으로 설명된 모듈은 물리적으로 분리될 수 있거나 그렇지 않을 수도 있으며, 모듈로서 표시되는 부분은 물리적 모듈일 수도 있거나 아닐 수도 있고, 한 위치에 있을 수 있거나, 다수의 네트워크 모듈 상에 분산되어 있을 수도 있다. 본 명세서의 해결책의 목적을 달성하기 위해 실제 요구 사항에 기초하여 일부 또는 모든 모듈이 선택될 수 있다. 본 기술 분야의 통상의 기술자는 창의적인 노력 없이도 본 출원의 실시예를 이해하고 구현할 수 있다.
다시 도 10을 참조하면, 내부 기능 모듈과 블록체인 노드의 구조를 나타내는 것으로 해석될 수 있다. 본질적으로 실행 몸체는 전자 디바이스일 수 있으며, 전자 디바이스는 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행 가능한 명령을 저장하도록 구성된 하나 이상의 컴퓨터-판독 가능 메모리를 포함한다. 일부 실시예에서, 하나 이상의 컴퓨터-판독 가능 메모리는 하나 이상의 프로세서에 커플링되고, 본 명세서에서 설명된 바와 같은 알고리즘, 방법, 기능, 프로세스, 흐름 및 절차를 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 저장된 프로그래밍 명령을 갖는다. 본 명세서는 또한 하나 이상의 프로세서에 커플링되고, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 본원에 제공되는 방법의 실시예에 따른 동작을 수행하게 하는 명령을 저장한 하나 이상의 비일시적 컴퓨터-판독 가능 저장 매체를 제공한다.
본 명세서는 본원에 제공된 방법을 구현하기 위한 시스템을 추가로 제공한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서로 하여금 본원에 제공된 실시예에 따른 동작을 수행하게 하는 명령을 저장한, 하나 이상의 프로세서에 커플링된 컴퓨터-판독 가능 저장 매체를 포함한다.
본 명세서에 설명된 주제 및 액션 및 동작의 실시예는 디지털 전자 회로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 하드웨어, 또는 이들 중 하나 이상의 조합에서 구현될 수 있다. 본 명세서에 설명된 주제의 실시예는 하나 이상의 컴퓨터 프로그램, 예를 들어, 데이터 프로세싱 장치에 의해 또는 그 동작을 제어하기 위한 실행을 위해 컴퓨터 프로그램 캐리어 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 명령이 인코딩되거나 저장된 하나 이상의 컴퓨터-판독 가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 자기 광, 또는 광 디스크, 솔리드 스테이트 드라이브, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM) 또는 다른 유형의 매체와 동일한 유형의 비일시적 컴퓨터-판독 가능 매체일 수 있다. 대안적으로 또는 추가적으로, 캐리어는 인공적으로 생성된 전파된 신호, 예를 들어, 데이터 프로세싱 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 생성되는 머신-생성 전기, 광 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신-판독 가능 저장 디바이스, 머신-판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합이거나 그 일부일 수 있다. 컴퓨터 저장 매체는 전파된 신호가 아니다.
프로그램, 소프트웨어, 소프트웨어 어플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트 또는 코드로도 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어 또는 선언적 또는 절차적 언어를 포함하여 임의의 형태의 프로그래밍 언어로 작성될 수 있으며; 독립형 프로그램 또는 모듈, 구성 요소, 엔진, 서브루틴 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛을 포함하여 임의의 형태로 배포될 수 있으며, 이러한 환경은 하나 이상의 위치에서 데이터 통신 네트워크에 의해 상호 접속된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그런 것은 아니다. 컴퓨터 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일의 일부, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트, 해당 프로그램에 전용인 단일 파일 또는 복수의 조정된 파일, 예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드의 일부를 저장하는 파일에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서는 예시의 방식으로, 범용 및 특수 목적의 마이크로 프로세서 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서 모두를 포함한다. 일반적으로, 프로세서는 프로세서에 커플링된 비일시적 컴퓨터-판독 가능 매체로부터 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령을 수신할 것이다.
"데이터 프로세싱 장치"라는 용어는 예시의 방식으로 프로그래머블 프로세서, 컴퓨터 또는 복수의 프로세서 또는 컴퓨터를 포함하여, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스 및 머신을 포함한다. 데이터 프로세싱 장치는 특수-목적 논리 회로, 예를 들어, FPGA(필드 프로그래머블 게이트 어레이), ASIC(어플리케이션 특정 집적 회로) 또는 GPU(그래픽 처리 장치)를 포함할 수 있다. 장치는 또한 하드웨어에 추가하여 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 동작을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 예를 들어, FPGA, ASIC 또는 GPU와 같은 특수-목적 논리 회로 또는 특수-목적 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 일반 또는 특수-목적 마이크로 프로세서 또는 둘 모두 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 요소는 명령을 실행하기 위한 중앙 처리 장치 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수-목적 논리 회로에 의해 보완되거나 이에 통합될 수 있다.
일반적으로, 컴퓨터는 또한 하나 이상의 저장 디바이스를 포함하거나, 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 이로 데이터를 전달하도록 동작 가능하게 커플링될 것이다. 저장 디바이스는 예를 들어, 자기, 자기 광 또는 광 디스크, 솔리드 스테이트 드라이브 또는 임의의 다른 유형의 비일시적 컴퓨터-판독 가능 매체일 수 있다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요가 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 커플링될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 필수 구성 요소인 하나 이상의 로컬 메모리를 포함할 수 있거나, 컴퓨터는 클라우드 네트워크에 있는 하나 이상의 원격 메모리에 커플링될 수 있다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화, 퍼스널 디지털 어시스턴트(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기 또는 휴대용 저장 디바이스, 몇몇을 예로 들자면, 범용 직렬 버스(USB)에 내장될 수 있다.
구성 요소는 직접적으로 또는 하나 이상의 중간 구성 요소를 통해, 전기적으로 또는 광학적으로 서로 접속되는 것과 같이, 통신 가능하게 서로 "커플링"될 수 있다. 구성 요소 중 하나가 다른 구성 요소에 통합되어 있는 경우, 구성 요소는 또한 서로 "커플링"될 수 있다. 예를 들어, 프로세서에 통합된 저장 구성 요소(예를 들어, L2 캐시 구성 요소)는 프로세서에 "커플링"된다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 설명된 주제의 실시예는 정보를 사용자에게 표시하기 위한 디스플레이 디바이스, 예를 들어, LCD(액정 디스플레이) 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는 입력 디바이스, 예를 들어, 키보드 및 포인팅 디바이스, 예를 들어, 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현될 수 있거나 이와 통신하도록 구성될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 디바이스도 사용될 수도 있으며; 예를 들어, 사용자에게 제공되는 피드백은 예를 들어, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하여 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서를 주고 받음으로써, 예를 들어, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자 디바이스 상의 웹 브라우저로 웹 페이지를 전송하거나, 예를 들어, 스마트폰 또는 전자 태블릿과 같은 사용자 디바이스 상에서 실행되는 앱과 상호 작용함으로써 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 예를 들어, 메시징 어플리케이션을 실행하고 있는 스마트폰과 같은 개인 디바이스로 전송하고, 리턴으로 사용자로부터 응답 메시지를 수신함으로서 사용자와 상호 작용할 수 있다.
본 명세서는 시스템, 장치 및 컴퓨터 프로그램 구성 요소와 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작 또는 액션을 수행하도록 구성된다는 것은 동작에서 시스템으로 하여금 동작 또는 액션을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 시스템이 설치했음을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작 또는 액션을 수행하도록 구성된다는 것은 하나 이상의 프로그램이 데이터 프로세싱 장치에 의해 실행될 때 장치로 하여금 동작 또는 액션을 수행하게 하는 명령을 포함한다는 것을 의미한다. 특수-목적 논리 회로가 특정 동작 또는 액션을 수행하도록 구성된다는 것은 회로가 동작 또는 액션을 수행하는 전자 논리를 갖고 있음을 의미한다.
본 명세서는 많은 특정 실시예의 상세 사항을 포함하지만, 이는 청구 범위 자체에 의해 규정되는 청구물의 범위에 대한 제한으로 해석되어서는 안되며, 오히려 특정 실시예에 특정적일 수 있는 특징의 설명으로 해석되어야 한다. 별개의 실시예의 맥락에서 본 명세서에 설명된 특정의 특징은 또한 단일 실시예에서 조합하여 실현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 복수의 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 실현될 수 있다. 또한, 특징이 특정의 조합으로 작용하는 것으로 상술될 수 있고, 심지어 처음에 이와 같이 주장될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합으로부터 잘려질 수 있고, 청구는 하위 조합 또는 하위 조합의 변형에 대한 것일 수 있다.
마찬가지로, 동작이 도면에 도시되고 청구 범위에 특정 순서로 인용되지만, 이는 이러한 동작이 바람직한 결과를 달성하기 위해 나타낸 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작이 수행되어야 한다는 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시예에서 다양한 시스템 모듈 및 구성 요소의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합될 수 있거나, 복수의 소프트웨어 제품으로 패키징될 수 있다는 것이 이해되어야 한다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 이하의 청구항의 범위 내에 있다. 예를 들어, 청구항에 언급된 액션은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 일례로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 나타낸 특정 순서 또는 순차적인 순서를 반드시 필요로 하지 않는다. 일부 경우에는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (12)

  1. 블록체인 네트워크에 통신 가능하게 커플링된 컴퓨팅 디바이스 상에서 실행되는 신뢰 실행 환경(TEE: trusted execution environment)에서 블록체인 데이터를 프로세싱하기 위한 컴퓨터-구현 방법으로서,
    상기 블록체인 네트워크의 블록체인 노드로부터 복수의 블록을 수신하는 단계;
    상기 복수의 블록 각각에 대해:
    상기 블록의 오류 정정 코딩(ECC: error correction coding)으로 인코딩된 버전으로부터 분할된 데이터 세트를 저장하는 블록체인 노드들의 제1 수 및 상기 블록의 상기 ECC로 인코딩된 버전으로부터 분할된 리던던트(redundant) 비트들로 구성된 데이터 세트를 저장하는 블록체인 노드들의 제2 수를 결정하는 단계;
    상기 제1 수 및 상기 제2 수에 기초하여 상기 블록의 우선 순위 값을 계산하는 단계; 및
    복수의 인코딩된 블록을 생성하기 위해 상기 ECC를 사용하여 상기 복수의 블록 중 적어도 일부를 인코딩하는 단계
    를 포함하고,
    상기 복수의 블록 중 상기 적어도 일부는 상기 복수의 블록 중 상기 적어도 일부 이외의 상기 복수의 블록의 나머지보다 더 작은 우선 순위 값들을 갖고, 상기 복수의 인코딩된 블록 중 상기 적어도 일부의 코드 레이트는 상기 블록체인 네트워크에 의해 요구되는 선의(honest) 블록체인 노드들의 최소 수를 상기 블록체인 네트워크의 블록체인 노드들의 총 수로 나눈 것과 동일한 것인 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 복수의 블록 중 상기 적어도 일부를 인코딩한 후, 상기 블록체인 네트워크에 의해 허용될 수 있는 결함 노드들의 최대 수 및 상기 블록체인 노드들의 총 수에 기초하여 상기 복수의 블록의 업데이트된 우선 순위 값을 계산하는 단계를 더 포함하고, 상기 요구되는 선의 블록체인 노드들의 상기 최소 수 및 상기 허용될 수 있는 결함 블록체인 노드들의 상기 최대 수는 상기 총 수에 합산되는 것인 컴퓨터-구현 방법.
  3. 제2항에 있어서,
    상기 복수의 블록의 블록 식별자들(ID들)과 상기 복수의 블록의 우선 순위 값들 사이의 대응을 제공하는 인덱스를 생성하는 단계; 및
    상기 복수의 블록 중 상기 적어도 일부의 우선 순위 값들을 상기 업데이트된 우선 순위 값들로 업데이트하는 단계를 더 포함하는 컴퓨터-구현 방법.
  4. 제1항에 있어서,
    상기 복수의 인코딩된 블록 각각을 복수의 데이터 세트로 분할하는 단계;
    상기 복수의 데이터 세트의 해시 값들을 계산하는 단계; 및
    상기 복수의 데이터 세트, 상기 해시 값들, 및 상기 복수의 데이터 세트와 상기 해시 값들 사이의 대응을 제공하는 인덱스 중 적어도 하나를 상기 블록체인 노드들 각각으로 전송하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  5. 제1항에 있어서,
    상기 복수의 블록 중 상기 적어도 일부는 상기 복수의 블록 중 제1의 적어도 일부이고, 상기 방법은,
    상기 컴퓨팅 디바이스에 의해 전송된 상기 복수의 데이터 세트 중 적어도 하나를 저장하고 상기 복수의 블록 중 상기 제1의 적어도 일부를 삭제한 후, 상기 블록체인 노드 상에 저장된 블록체인 데이터가 사전 결정된 데이터 저장 임계값을 초과하는 크기를 갖는다는 통지를 수신하는 단계;
    상기 ECC를 사용하여 상기 복수의 블록 중 제2의 적어도 일부를 인코딩하는 단계 - 상기 복수의 블록 중 상기 제2의 적어도 일부의 우선 순위 값들은, 상기 복수의 블록 중 상기 제1의 적어도 일부의 우선 순위 값들보다 크고, 상기 복수의 블록 중 상기 제1의 적어도 일부 및 상기 복수의 블록 중 상기 제2의 적어도 일부 이외의 상기 복수의 블록의 나머지보다 작음 -; 및
    상기 복수의 블록 중 상기 제2의 적어도 일부의 상기 우선 순위 값들을 업데이트된 우선 순위 값들로 업데이트하는 단계를 더 포함하는 컴퓨터-구현 방법.
  6. 제1항 또는 제5항에 있어서,
    상기 ECC는 상기 컴퓨팅 디바이스의 컴퓨팅 자원의 이용률이 사전 결정된 값 이하일 때 수행되는 것인 컴퓨터-구현 방법.
  7. 제1항 또는 제5항에 있어서,
    상기 ECC는 상기 복수의 블록에 리던던트 비트들을 추가함으로써 수행되는 소거(erasure) 코딩인 것인 컴퓨터-구현 방법.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 우선 순위 값은 상기 제1 수에서, 상기 제1 수와 상기 제2 수 사이의 차이에 의해 상기 제1 수를 나눈 수를 뺀 값으로서 계산되는 것인 컴퓨터-구현 방법.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 블록체인 노드는 상기 블록체인의 사본을 저장하는 풀(full) 노드인 것인 컴퓨터-구현 방법.
  10. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 요구되는 선의 블록체인 노드들의 상기 최소 수는 실용적 비잔틴 결함 허용(PBFT: practical Byzantine fault tolerance) 합의 프로토콜에 기초하여 결정되는 것인 컴퓨터-구현 방법.
  11. 공유 블록체인 데이터를 통신하는 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 커플링되고 제1항 내지 제5항 중 어느 한 항의 방법을 수행하기 위해 상기 하나 이상의 프로세서에 의해 실행 가능한 명령들이 저장된 하나 이상의 컴퓨터-판독 가능 메모리를 포함하는, 공유 블록체인 데이터를 통신하는 시스템.
  12. 공유 블록체인 데이터를 통신하기 위한 장치로서,
    제1항 내지 제5항 중 어느 한 항의 방법을 수행하기 위한 복수의 모듈을 포함하는, 공유 블록체인 데이터를 통신하기 위한 장치.
KR1020207031348A 2019-11-06 2019-11-06 공유 블록체인 데이터 저장 우선 순위화 KR102396737B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/115902 WO2020035088A2 (en) 2019-11-06 2019-11-06 Prioritizing shared blockchain data storage

Publications (2)

Publication Number Publication Date
KR20210055632A KR20210055632A (ko) 2021-05-17
KR102396737B1 true KR102396737B1 (ko) 2022-05-10

Family

ID=69525957

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031348A KR102396737B1 (ko) 2019-11-06 2019-11-06 공유 블록체인 데이터 저장 우선 순위화

Country Status (10)

Country Link
US (2) US11023314B2 (ko)
EP (1) EP3769217B1 (ko)
JP (1) JP7050955B2 (ko)
KR (1) KR102396737B1 (ko)
CN (1) CN111417930B (ko)
AU (1) AU2019321745B2 (ko)
CA (1) CA3098645A1 (ko)
SG (1) SG11202010169PA (ko)
TW (1) TWI740575B (ko)
WO (1) WO2020035088A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2019321745B2 (en) 2019-11-06 2022-01-27 Alipay (Hangzhou) Information Technology Co., Ltd. Prioritizing shared blockchain data storage
KR102433504B1 (ko) * 2019-11-13 2022-08-18 알리페이 (항저우) 인포메이션 테크놀로지 씨오., 엘티디. 허가된 블록체인 네트워크를 위한 에러 정정 코드에 기초하는 블록체인 데이터 저장
CN111339089B (zh) * 2020-02-21 2023-09-22 联动优势科技有限公司 一种应用于区块链的数据存储与获取方法及装置
CN111311263B (zh) * 2020-03-18 2021-07-16 广州知弘科技有限公司 区块链节点本地安全记账方法
CN111526219B (zh) 2020-07-03 2021-02-09 支付宝(杭州)信息技术有限公司 一种联盟链的共识方法及联盟链系统
CN111984735A (zh) * 2020-09-03 2020-11-24 深圳壹账通智能科技有限公司 一种数据归档方法、装置、电子设备和存储介质
CN112257078B (zh) * 2020-12-21 2021-04-20 江苏荣泽信息科技股份有限公司 一种基于tee技术的区块链加解密服务安全可信系统
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
CN117076725B (zh) * 2023-09-12 2024-02-09 北京云枢创新软件技术有限公司 基于底层数据查找树节点的方法、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018211382A1 (en) 2017-05-15 2018-11-22 nChain Holdings Limited Secure off-chain blockchain transactions
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
WO2019072294A2 (en) 2018-12-13 2019-04-18 Alibaba Group Holding Limited PROVIDING CONSENSUS BETWEEN NETWORK NODES IN A DISTRIBUTED SYSTEM
CN109871366A (zh) 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617541A (en) * 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
US8713405B2 (en) * 2011-11-22 2014-04-29 Simplivity Corporation Method and apparatus for allocating erasure coded data to disk storage
WO2013164228A1 (en) * 2012-05-04 2013-11-07 Thomson Licensing Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
EP3440823B1 (en) * 2016-04-05 2020-09-02 Zamna Technologies Limited Method and system for managing personal information within independent computer systems and digital networks
US10554746B2 (en) * 2016-11-14 2020-02-04 International Business Machines Corporation Decentralized immutable storage blockchain configuration
CN107277781B (zh) 2017-05-03 2019-03-22 上海点融信息科技有限责任公司 移动宽带网络下的区块链多播网络、区块链设备及其通信方法
US10749668B2 (en) * 2017-05-03 2020-08-18 International Business Machines Corporation Reduction in storage usage in blockchain
US10924265B2 (en) * 2017-11-22 2021-02-16 International Business Machines Corporation Blockchain technology
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
CN108900364B (zh) * 2018-08-22 2021-11-26 泰康保险集团股份有限公司 区块链网络的管理方法、装置、介质及电子设备
CN109274717B (zh) * 2018-08-22 2021-08-24 泰康保险集团股份有限公司 基于区块链的共享存储方法、装置、介质及电子设备
US20190278765A1 (en) 2018-12-19 2019-09-12 Alibaba Group Holding Limited Shared secret-based blockchain storage
CN110612700B (zh) * 2019-03-15 2021-06-22 创新先进技术有限公司 基于恢复的公钥进行认证
CN110096894B (zh) * 2019-05-10 2023-01-17 东北大学 一种基于区块链的数据匿名共享系统及方法
CN110175212B (zh) 2019-05-22 2021-07-06 杭州复杂美科技有限公司 区块链分布式存储方法、数据读取方法、设备和存储介质
CN110400218B (zh) * 2019-06-05 2023-03-24 西安电子科技大学 基于陪审团制度的分层共识方法、区块链数据处理系统
WO2019228550A2 (en) * 2019-08-20 2019-12-05 Alibaba Group Holding Limited Blockchain data storage based on shared nodes and error correction code
AU2019321745B2 (en) 2019-11-06 2022-01-27 Alipay (Hangzhou) Information Technology Co., Ltd. Prioritizing shared blockchain data storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018211382A1 (en) 2017-05-15 2018-11-22 nChain Holdings Limited Secure off-chain blockchain transactions
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
WO2019072294A2 (en) 2018-12-13 2019-04-18 Alibaba Group Holding Limited PROVIDING CONSENSUS BETWEEN NETWORK NODES IN A DISTRIBUTED SYSTEM
CN109871366A (zh) 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문1(2018.05.31)

Also Published As

Publication number Publication date
US20210049066A1 (en) 2021-02-18
SG11202010169PA (en) 2020-11-27
CN111417930A (zh) 2020-07-14
CN111417930B (zh) 2022-04-15
KR20210055632A (ko) 2021-05-17
WO2020035088A3 (en) 2020-09-03
AU2019321745B2 (en) 2022-01-27
CA3098645A1 (en) 2020-02-20
JP7050955B2 (ja) 2022-04-08
US11327833B2 (en) 2022-05-10
TW202119243A (zh) 2021-05-16
JP2021528882A (ja) 2021-10-21
EP3769217B1 (en) 2022-06-01
WO2020035088A2 (en) 2020-02-20
US20210286669A1 (en) 2021-09-16
AU2019321745A1 (en) 2021-05-20
EP3769217A4 (en) 2021-04-21
US11023314B2 (en) 2021-06-01
EP3769217A2 (en) 2021-01-27
TWI740575B (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
KR102396737B1 (ko) 공유 블록체인 데이터 저장 우선 순위화
US11025410B2 (en) Shared blockchain data storage based on error correction coding in trusted execution environments
KR102225196B1 (ko) 에러 정정 코드에 기초하는 공유 블록체인 데이터 저장의 컨센서스
EP3695331B1 (en) Shared blockchain data storage based on error correction coding in trusted execution environments
KR102363271B1 (ko) 에러 정정 코드에 기초한 공유 블록체인 데이터 저장의 데이터 보안
KR20210058746A (ko) 에러 정정 코드에 기초하는 동적 블록체인 데이터 저장

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant