[go: up one dir, main page]

KR102835086B1 - System, apparatus, and method for storing byzantine fault tolerant block data utilizing external storage - Google Patents

System, apparatus, and method for storing byzantine fault tolerant block data utilizing external storage

Info

Publication number
KR102835086B1
KR102835086B1 KR1020230084239A KR20230084239A KR102835086B1 KR 102835086 B1 KR102835086 B1 KR 102835086B1 KR 1020230084239 A KR1020230084239 A KR 1020230084239A KR 20230084239 A KR20230084239 A KR 20230084239A KR 102835086 B1 KR102835086 B1 KR 102835086B1
Authority
KR
South Korea
Prior art keywords
block
blockchain
node
consensus
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020230084239A
Other languages
Korean (ko)
Other versions
KR20240002729A (en
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 KR20240002729A publication Critical patent/KR20240002729A/en
Application granted granted Critical
Publication of KR102835086B1 publication Critical patent/KR102835086B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Hardware Redundancy (AREA)

Abstract

외부 저장장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법 및 장치이다. 장치는 블록체인 플랫폼 상 임의의 블록체인 노드로부터 블록 데이터를 읽고, 별도로 구성된 S-node 들 간 합의 메시지를 주고 받음으로써 블록 데이터에 대한 BFT 합의를 진행한다. BFT 합의가 완료된 블록 데이터의 경우 각 S-node가 블록에 대응되는 메타 데이터를 생성하고, 블록 데이터가 S-node에 의해 합의가 완료되었다는 증명 정보로 사용한다. 하나의 대표 primary S-node가 외부 스토리지에 블록과 메타 데이터를 기록하고, 이후 데이터를 수신할 시 메타 데이터를 기준으로 해당 블록에 대한 합의 검증을 진행한다.A method and device for storing Byzantine fault-tolerant block data using an external storage device. The device reads block data from an arbitrary blockchain node on a blockchain platform, and conducts BFT consensus on the block data by exchanging consensus messages between separately configured S-nodes. In the case of block data for which BFT consensus has been completed, each S-node generates metadata corresponding to the block, and uses the metadata as proof information that the block data has been agreed upon by the S-node. A representative primary S-node records the block and metadata in external storage, and when receiving data thereafter, consensus verification for the corresponding block is performed based on the metadata.

Description

외부 저장장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템, 장치 및 방법 {SYSTEM, APPARATUS, AND METHOD FOR STORING BYZANTINE FAULT TOLERANT BLOCK DATA UTILIZING EXTERNAL STORAGE}{SYSTEM, APPARATUS, AND METHOD FOR STORING BYZANTINE FAULT TOLERANT BLOCK DATA UTILIZING EXTERNAL STORAGE}

본 발명은 블록체인 네트웍에서의 블록 데이터 저장 방법 및 장치에 관한 것으로서, 보다 상세하게는 비잔틴 장애 내성을 가진 블록 데이터를 외부 저장장치를 활용하여 저장하는 방법에 관한 것이다. The present invention relates to a method and device for storing block data in a blockchain network, and more specifically, to a method for storing block data having Byzantine fault tolerance using an external storage device.

이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래 기술을 구성하는 것은 아니다.The material described in this section merely provides background information for the present embodiment and does not constitute prior art.

최근 블록체인 기술이 데이터를 신뢰성 있게 저장하는 데에 핵심적인 기술로 떠오르고 있다. 블록체인이란 거래 내역과 같은 데이터를 네트워크에 참여하는 사용자들이 분산하여 저장하고, 처리하는 기술을 의미한다. 블록체인 기술을 실제 적용하고 있는 플랫폼들을 예시로 들자면, Bitcoin, Ethereum, EOS, Algorand, Hedera, Hyperledger Fabric, IOTA 등이 존재한다.Recently, blockchain technology has emerged as a key technology for storing data reliably. Blockchain refers to a technology in which data such as transaction history is distributed and stored and processed by users participating in the network. Examples of platforms that are actually applying blockchain technology include Bitcoin, Ethereum, EOS, Algorand, Hedera, Hyperledger Fabric, and IOTA.

블록체인은 모든 네트워크 참여자들이 서로 다른 데이터를 공유하며 검증 가능하다는 장점을 가지고 있는 반면, 스토리지 측면에서의 문제점도 존재한다. 예컨대, 제한된 스토리지 용량을 가지고 있는 노드의 경우 각자 소유 중인 데이터베이스가 빠르게 포화된다(i.e. storage overhead). 특히 Internet Of Things(IoT) 환경에서 블록체인 플랫폼을 운용하는 경우, 블록체인 플랫폼을 low-level, resource-constrained 기기들과 통합해야 하기 때문에 storage overhead 문제가 더 심해진다.While blockchain has the advantage that all network participants can share and verify different data, it also has problems in terms of storage. For example, in the case of nodes with limited storage capacity, each database they own is quickly saturated (i.e. storage overhead). In particular, when operating a blockchain platform in an Internet Of Things (IoT) environment, the storage overhead problem becomes more severe because the blockchain platform must be integrated with low-level, resource-constrained devices.

Storage overhead를 해결하기 위해서 각 블록체인 플랫폼은 각자 검증 가능한 일부 데이터만을 저장한다. Ethereum의 경우 Full node는 블록체인 트랜잭션을 전송 및 처리 하며, 가장 최신의 128개 블록에 대한 state만을 저장한다. IOTA는 local snapshot 기술을 사용하여 ledger의 resulting state만을 persist 한다. 이미 검증된 transaction을 고른 이후 해당 transaction을 참조하고 있는 모든 transaction 들을 삭제한다. Solana도 snapshot을 이용하여 ledger의 중간 state부터 유지한다.To solve storage overhead, each blockchain platform stores only some verifiable data. In the case of Ethereum, a full node transmits and processes blockchain transactions, and only stores the state for the most recent 128 blocks. IOTA uses local snapshot technology to persist only the resulting state of the ledger. After selecting a transaction that has already been verified, it deletes all transactions referencing that transaction. Solana also uses snapshots to maintain the intermediate state of the ledger.

하지만, 블록 데이터에 대한 플랫폼 별 제도적 규정 기간이 존재하여 모든 데이터가 긴 기간 저장될 필요성이 있다. 일 예로, 결제 관련 데이터의 경우에는 특정 기간 동안 유지되어야 될 필요성이 존재하며, 신원 관련 데이터의 경우 해당 신원이 파기될 때까지 유지되어야 한다는 요구사항이 존재한다.However, there are institutional regulations for block data on each platform, which require that all data be stored for a long period of time. For example, payment-related data must be maintained for a certain period of time, and identity-related data must be maintained until the identity is destroyed.

각 블록체인 플랫폼은 저장 필요성에 따라 새로운 종류의 블록체인 저장 특화 노드를 제시했다. Ethereum의 경우 블록 데이터의 저장 요구사항에 따라 블록체인 트랜잭션을 전송 및 처리하는 full node 이외 genesis block부터 모든 블록 저장 목적으로 archive node를 지원한다. IOTA는 트랜잭션 단위로 저장을 진행하며, Permanode를 통하여 트랜잭션 데이터에 대한 저장을 진행하고, StoreTransaction API를 통하여 필요한 transaction을 선택적으로 저장한다. Solana는 블록체인 노드에 참여하고 있는 모든 노드들이 모든 블록을 저장하고 있다. Solana는 블록 데이터에 대한 분산 저장을 목적으로 archivers 라는 노드를 따로 운영한다.Each blockchain platform has proposed a new type of blockchain storage-specific node according to storage needs. In the case of Ethereum, in addition to the full node that transmits and processes blockchain transactions according to the storage requirements of block data, it supports archive nodes for all block storage purposes starting from the genesis block. IOTA performs storage in transaction units, stores transaction data through Permanode, and selectively stores necessary transactions through the StoreTransaction API. In Solana, all nodes participating in the blockchain node store all blocks. Solana operates a separate node called archivers for the purpose of distributed storage of block data.

하지만, 각 노드나 외부 저장소에 저장된 블록 데이터를 검증하기 위해서는 hash chain property에 따라서 검증하고자 하는 블록 데이터 이전의 데이터들을 전부 받을 것이 요구된다. 블록체인 네트워크의 적어도 일부는 믿을 수 없는(untrusted) 블록체인 노드들로 구성되는 점에서, 블록체인 노드가 비잔틴 장애 (Byzantine fault)를 가질 때에는 각 노드가 스토리지 문제에 적절하게 대응하기 어려운 문제점이 있다. However, in order to verify block data stored in each node or external storage, it is required to receive all data before the block data to be verified according to the hash chain property. Since at least a part of the blockchain network consists of untrusted blockchain nodes, there is a problem that it is difficult for each node to properly respond to storage problems when a blockchain node has a Byzantine fault.

한국공개특허 KR 10-2022-0035823 "블록체인 플랫폼에서 비잔틴 장애 감내 장치 및 방법" (공개일 202년 3월 22일)Korean Patent Publication No. KR 10-2022-0035823 "Byzantine fault tolerance device and method in blockchain platform" (Published on March 22, 202)

Fjl, Iceberg [Online], Available: https://github.com/ethereum/go-ethereum/releases/tag/v1.8.0 (2018년 2월)Fjl, Iceberg [Online], Available: https://github.com/ethereum/go-ethereum/releases/tag/v1.8.0 (February 2018) IOTA (2022) [Online], Available: https://iota.orgIOTA (2022) [Online], Available: https://iota.org Snapshot Verification (2022) [Online], Available: https://docs.solana.com/proposals/snapshot-verificationSnapshot Verification (2022) [Online], Available: https://docs.solana.com/proposals/snapshot-verification Stefano Della Valle, IOTA Permanode As a Service [Online], Available: https://medium.com/things-lab/iota-permanode-as-a-service-b907216c6931 (2020년 4월)Stefano Della Valle, IOTA Permanode As a Service [Online], Available: https://medium.com/things-lab/iota-permanode-as-a-service-b907216c6931 (April 2020)

상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 블록체인 블록 데이터 저장 특화 노드에 의존하지 않고, 기존 블록체인 플랫폼의 데이터 저장에 대한 요구사항을 충족하면서 외부 저장 장치를 활용하여 비잔틴 장애 감내 블록 데이터를 저장하는 방법 및 장치를 제공하는 것이다.The purpose of the present invention to solve the above problems is to provide a method and device for storing Byzantine fault-tolerant block data by utilizing an external storage device while satisfying the requirements for data storage of an existing blockchain platform without relying on a node specialized in blockchain block data storage.

구체적으로는 본 발명은 블록체인 플랫폼 상에서의 스토리지 측면의 문제점에 대한 해결책을 제시하면서도, 플랫폼 상 비잔틴 장애 감내 특성을 제공하는 대규모 트랜잭션 데이터 분산 저장 서비스 (Blockchain Storage Service 이하 BSS)를 제안하는 것을 목적으로 한다. 이때 BSS안에서 적용되는 블록 데이터 비잔틴 장애 감내 보장에 대한 내용을 함께 제안할 수 있다.Specifically, the present invention aims to propose a large-scale transaction data distributed storage service (Blockchain Storage Service, hereinafter referred to as BSS) that provides a solution to problems in terms of storage on a blockchain platform while also providing Byzantine fault tolerance characteristics on the platform. At this time, the contents of the block data Byzantine fault tolerance guarantee applied within the BSS can be proposed together.

본 발명은 블록체인 저장 특화 노드의 신뢰성을 보장하지 않더라도, 블록 데이터 합의가 가능한 S-node 개념을 제안하고, 블록 데이터 검증을 수행할 수 있는 블록 데이터 저장 기법을 제공하는 것을 목적으로 한다.The purpose of the present invention is to propose an S-node concept capable of block data consensus even without guaranteeing the reliability of a blockchain storage specialized node, and to provide a block data storage technique capable of performing block data verification.

본 발명은 특정 블록체인 플랫폼에 의존하지 않고, 블록체인 플랫폼에서 생성되는 블록 데이터만을 가지고 블록 데이터 합의 및 저장이 가능한 블록 데이터 저장 기법을 제공하는 것을 목적으로 한다.The purpose of the present invention is to provide a block data storage technique capable of block data agreement and storage using only block data generated on a blockchain platform without relying on a specific blockchain platform.

본 발명은 특정 스토리지, 클라우드 기술에 의존하지 않고, 최신 분산 스토리지 기술과 연동 가능한 블록 데이터 저장 기법을 제공하는 것을 목적으로 한다.The present invention aims to provide a block data storage technique that can be linked with the latest distributed storage technology without relying on specific storage or cloud technology.

본 발명은 S-node 들 간 교환하는 합의 메시지, S-node 가 저장하는 메타 데이터 개념을 제안하고, 이를 통하여 기존 블록체인 플랫폼에서 나타난 스토리지 오버헤드를 최소화하는 블록 데이터 저장 기법을 제공하는 것을 목적으로 한다.The present invention proposes a concept of consensus messages exchanged between S-nodes and metadata stored by S-nodes, and thereby provides a block data storage technique that minimizes the storage overhead found in existing blockchain platforms.

본 발명은 합의 메시지와 메타 데이터 정보를 확장 가능하도록 설계함으로써, 이후 여러 블록체인 플랫폼 및 스토리지 기술과 호환 가능성을 확보한다. 이에 거래 시스템, 투표 어플리케이션, 공급망 관리(Supply Chain) 시스템 등 노드 간 합의 및 블록 데이터 저장을 필요로 하는 분야에 활용 가능한 블록 데이터 저장 기법을 제공하는 것을 목적으로 한다.The present invention secures compatibility with various blockchain platforms and storage technologies by designing consensus messages and metadata information to be expandable. Accordingly, the purpose is to provide a block data storage technique that can be utilized in fields that require consensus between nodes and block data storage, such as transaction systems, voting applications, and supply chain management systems.

본 발명의 목적을 달성하기 위한 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템은, 블록체인 노드로부터 제1 블록체인 블록을 수신한 후, 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하고, 합의가 수행된 제1 블록체인 블록에 대한 합의 메시지를 수집하여 제1 블록체인 블록 메타데이터를 생성하는 복수의 제1 엔티티들을 포함하는 제1 엔티티 집합; 및 제1 엔티티 집합으로부터 합의가 수행된 제1 블록체인 블록 및 제1 블록체인 블록 메타데이터를 수신하고 저장하는 적어도 하나 이상의 제2 엔티티를 포함한다. According to one embodiment of the present invention, a Byzantine fault-tolerant block data storage system utilizing an external storage device for achieving the purpose of the present invention includes: a first entity set including a plurality of first entities which receive a first blockchain block from a blockchain node, perform Byzantine fault-tolerant (BFT) consensus on block data of the first blockchain block, and collect consensus messages for the first blockchain block on which consensus has been performed to generate first blockchain block metadata; and at least one second entity which receives and stores the first blockchain block on which consensus has been performed and the first blockchain block metadata from the first entity set.

제1 엔티티 집합이 블록체인 노드에게 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공할 수 있다. A first entity set may provide a Blockchain Storage Service (BSS) that transmits agreed-upon block data for the first blockchain block to blockchain nodes.

제1 엔티티 집합은, 블록 데이터에 대한 합의 및 데이터 검증을 위한 메타 데이터를 저장하는 복수의 S-node들을 복수의 제1 엔티티들로서 포함할 수 있다. 제1 엔티티 집합 내에서, 복수의 S-node들 중 하나가 프라이머리 S-node로 선정될 수 있고, 제1 엔티티 집합 내에서 복수의 S-node들 간에 블록 합의 메시지가 송수신됨으로써 블록에 대한 BFT 합의가 수행될 수 있고, 프라이머리 S-node는 복수의 S-node들 간 BFT 합의가 수행된 블록을 적어도 하나 이상의 제2 엔티티에 전파하고, 복수의 S-node들 간 BFT 합의가 수행된 블록에 대한 합의 메시지를 수집하여 생성된 블록 메타 데이터를 적어도 하나 이상의 제2 엔티티에 전파할 수 있다. A first entity set may include a plurality of S-nodes, as the plurality of first entities, storing metadata for consensus on block data and data verification. Within the first entity set, one of the plurality of S-nodes may be selected as a primary S-node, and a BFT consensus on a block may be performed by transmitting and receiving a block consensus message between the plurality of S-nodes within the first entity set, and the primary S-node may propagate a block on which BFT consensus has been performed between the plurality of S-nodes to at least one second entity, and may propagate block metadata generated by collecting consensus messages for the block on which BFT consensus has been performed between the plurality of S-nodes to at least one second entity.

적어도 하나 이상의 제2 엔티티는, 블록 데이터와 메타 데이터를 저장하는 외부 저장소를 포함할 수 있고, 적어도 하나 이상의 제2 엔티티는, 제1 엔티티 집합으로부터 블록 데이터와 메타데이터를 수신하여 메타데이터 정보에 기반해 블록 데이터를 검증하고, 블록 데이터 및 메타데이터를 저장할 수 있다. At least one of the second entities may include an external storage for storing block data and metadata, and the at least one of the second entities may receive block data and metadata from the first entity set, verify the block data based on the metadata information, and store the block data and metadata.

복수의 S-node들 각각은 블록체인 노드로부터 수신한 블록을 임시 저장하는 블록 캐쉬(Block cache); 다른 S-node들과 상호 교환되는 합의 메시지를 임시 저장하는 메시지 캐쉬(Message cache); 합의 메시지를 생성하고 다른 S-node들로 전파하는 생성기(Generator); 다른 S-node들로부터 수신된 합의 메시지에 기반하여 블록에 대한 합의 상태를 결정하는 해석기(Analyzer); 및 블록에 대한 합의가 끝난 이후, 생성된 메타데이터를 저장하는 영구 메타데이터 저장소(Persistent metadata store)를 포함할 수 있다. Each of the plurality of S-nodes may include a block cache that temporarily stores blocks received from blockchain nodes; a message cache that temporarily stores consensus messages exchanged with other S-nodes; a generator that generates consensus messages and propagates them to other S-nodes; an analyzer that determines a consensus state for a block based on consensus messages received from other S-nodes; and a persistent metadata store that stores generated metadata after consensus for a block is completed.

복수의 제1 엔티티 집합 내에서, 복수의 S-node들이 비잔틴 합의 프로토콜, 블록체인 노드 변경 프로토콜(BN change protocol), 및 프라이머리 변경 프로토콜(primary change protocol)이 수행될 수 있다. Within a plurality of first entity sets, a plurality of S-nodes can perform a Byzantine agreement protocol, a blockchain node change protocol (BN change protocol), and a primary change protocol.

비잔틴 합의 프로토콜에 의하여 교환되는 합의 메시지는 블록 높이(h), 블록체인 노드에 의하여 서명된 블록 해시, 블록체인 노드 번호, S-node 식별자(ID), 및 S-node 서명을 포함할 수 있고, 비잔틴 합의 프로토콜에 의하여 교환되는 블록 메타 데이터는 블록 높이(h), 이전 높이 블록 해시, S-node에 의하여 서명된 블록 해시, S-node 식별자, 및 블록에 대한 합의 메시지 리스트를 포함할 수 있다. A consensus message exchanged by a Byzantine agreement protocol may include a block height (h), a block hash signed by a blockchain node, a blockchain node number, an S-node identifier (ID), and an S-node signature, and block metadata exchanged by the Byzantine agreement protocol may include a block height (h), a previous height block hash, a block hash signed by an S-node, an S-node identifier, and a list of consensus messages for the block.

블록체인 노드 변경 프로토콜에 의하여 교환되는 블록체인 노드 변경 메시지는 라운드 번호(r), 가장 최신의 준비된(prepared) 블록 높이(hp), 블록체인 노드에 의하여 서명된 가장 최신의 준비된(prepared) 블록 해시, 가장 최신의 준비된 블록 높이에서의 합의 메시지 집합, 블록체인 노드 번호, hp에서의 블록체인 노드 번호, S-node 식별자, 및 S-node 서명을 포함할 수 있다. 블록체인 노드 변경 프로토콜에 의하여 교환되는 새로운 블록체인 노드 제안 메시지는 라운드 번호(r), 가장 최신의 준비된(prepared) 블록 높이(hp), 블록체인 노드에 의하여 서명된 가장 최신의 준비된(prepared) 블록 해시, 블록체인 노드 번호, hp에서의 블록체인 노드 번호, 가장 낮은 hp부터 가장 높은 hp까지 블록 리스트, S-node 식별자, 및 S-node 서명을 포함할 수 있다. A blockchain node change message exchanged by the blockchain node change protocol may include a round number (r), a most recent prepared block height (hp), a most recent prepared block hash signed by the blockchain node, a set of consensus messages at the most recent prepared block height, a blockchain node number, a blockchain node number at hp, an S-node identifier, and an S-node signature. A new blockchain node proposal message exchanged by the blockchain node change protocol may include a round number (r), a most recent prepared block height (hp), a most recent prepared block hash signed by the blockchain node, a blockchain node number, a blockchain node number at hp, a list of blocks from the lowest hp to the highest hp, an S-node identifier, and an S-node signature.

비잔틴 합의 프로토콜은, 프라이머리 S-node 선정 단계; 블록 데이터 검증 및 합의 메시지 교환 단계; 합의 메시지 검증 및 블록 합의 상태(state) 결정 단계; 및 메타 데이터 및 블록 저장 단계를 포함할 수 있다. The Byzantine consensus protocol may include a primary S-node selection step; a block data verification and consensus message exchange step; a consensus message verification and block consensus state determination step; and a metadata and block storage step.

프라이머리 변경 프로토콜은, 일정 시간이 지나도 합의 메시지가 도달하지 않는 것을 탐지하는 단계; 다른 primary S-node에게 합의 메시지를 전송하는 단계; 및 합의 시간을 두 배로 설정하는 단계를 포함할 수 있다. The primary change protocol may include the steps of: detecting that a consensus message has not arrived after a certain period of time; transmitting the consensus message to another primary S-node; and doubling the consensus time.

블록체인 노드 변경 프로토콜은, 악의적인 블록체인 노드를 탐지하는 단계; 블록체인 노드 변경 메시지를 교환하는 단계; 새로운 블록체인 노드 제안 메시지를 교환하는 단계; 및 블록체인 노드 교체를 위한 합의 메시지를 교환하는 단계를 포함할 수 있다. The blockchain node change protocol may include the steps of: detecting a malicious blockchain node; exchanging a blockchain node change message; exchanging a new blockchain node proposal message; and exchanging a consensus message for blockchain node replacement.

악의적인 블록체인 노드를 탐지하는 단계는, 1) 서로 다른 블록 해시값을 가지는 합의 메시지 쌍을 수신하거나, 2) 프라이머리 S-node가 브로드캐스트한 블록을 기준으로 생성한 해시값이 다르거나, 블록체인 노드로부터 일정 시간이 지나도 블록이 오지 않으면, 블록체인 노드 변경 프로토콜을 시작하는 탐지 과정을 포함할 수 있다. The steps for detecting a malicious blockchain node may include a detection process that starts a blockchain node change protocol when 1) a pair of consensus messages with different block hash values are received, 2) the hash value generated based on the block broadcast by the primary S-node is different, or a block does not arrive from the blockchain node after a certain period of time.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법은, 복수의 제1 엔티티 집합 내 복수의 S-node들에 의하여, 블록체인 노드로부터 제1 블록체인 블록을 수신하는 단계; 복수의 S-node들에 의하여, 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하는 단계; 복수의 제1 엔티티 집합 내의 프라이머리 S-node에 의하여, 합의가 수행된 제1 블록체인 블록에 대한 합의 메시지를 수집하여 제1 블록체인 블록 메타데이터를 생성하는 단계; 및 적어도 하나 이상의 제2 엔티티에 의하여, 제1 엔티티 집합으로부터 합의가 수행된 제1 블록체인 블록 및 제1 블록체인 블록 메타데이터를 수신하고 저장하는 단계를 포함한다.A method for storing Byzantine fault-tolerant block data using an external storage device according to one embodiment of the present invention includes: receiving a first blockchain block from a blockchain node by a plurality of S-nodes in a plurality of first entity sets; performing Byzantine fault-tolerant (BFT) consensus on block data of the first blockchain block by the plurality of S-nodes; collecting consensus messages for the first blockchain block on which consensus has been performed by primary S-nodes in the plurality of first entity sets to generate first blockchain block metadata; and receiving and storing the first blockchain block on which consensus has been performed and the first blockchain block metadata from the first entity set by at least one second entity.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법은, 복수의 S-node들에 의하여 블록체인 노드에게 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는 단계를 더 포함할 수 있다.A method for storing Byzantine fault-tolerant block data utilizing an external storage device according to one embodiment of the present invention may further include a step of providing a Blockchain Storage Service (BSS) that transmits agreed-upon block data for a first blockchain block to a blockchain node by a plurality of S-nodes.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법은, 복수의 S-node들 중 Primary S-node가 선정되는 단계; 프라이머리 S-node가 복수의 S-node들 간 BFT 합의가 수행된 블록을 적어도 하나 이상의 제2 엔티티에 전파하는 단계; 및 프라이머리 S-node가 제1 블록체인 블록 메타 데이터를 적어도 하나 이상의 제2 엔티티에 전파하는 단계를 더 포함할 수 있다.A method for storing Byzantine fault-tolerant block data using an external storage device according to one embodiment of the present invention may further include a step of selecting a primary S-node from among a plurality of S-nodes; a step of the primary S-node propagating a block on which a BFT agreement is performed between the plurality of S-nodes to at least one or more second entities; and a step of the primary S-node propagating first blockchain block metadata to at least one or more second entities.

복수의 S-node들에 의하여, 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하는 단계에서는, 복수의 S-node들이 BFT 합의에 기반하여 비잔틴 합의 프로토콜, 블록체인 노드 변경 프로토콜(BN change protocol), 및 프라이머리 변경 프로토콜(primary change protocol)을 수행할 수 있다. In the step of performing Byzantine fault tolerant (BFT) consensus on block data of the first blockchain block by multiple S-nodes, multiple S-nodes can perform a Byzantine consensus protocol, a blockchain node change protocol (BN change protocol), and a primary change protocol based on the BFT consensus.

적어도 하나 이상의 제2 엔티티에 의하여 제1 블록체인 블록 및 제1 블록체인 블록 메타데이터를 수신하고 저장하는 단계는, 적어도 하나 이상의 제2 엔티티에 의하여 제1 블록체인 블록 메타데이터에 기반하여 제1 블록체인 블록을 검증하는 단계; 및 검증된 제1 블록체인 블록과 제1 블록체인 블록 메타데이터를 적어도 하나 이상의 제2 엔티티에 저장하는 단계를 포함할 수 있다. The step of receiving and storing the first blockchain block and the first blockchain block metadata by at least one or more second entities may include the step of verifying the first blockchain block based on the first blockchain block metadata by the at least one or more second entities; and the step of storing the verified first blockchain block and the first blockchain block metadata in the at least one or more second entities.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치는, 블록체인 노드로부터 제1 블록체인 블록을 수신하고, 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의가 수행되도록 복수의 S-node들과 통신하고, 프라이머리 S-node이면 복수의 S-node들에 의하여 합의가 수행된 제1 블록체인 블록에 대한 합의 메시지를 수집하여 제1 블록체인 블록 메타데이터를 생성하고, 복수의 S-node들에 의하여 합의가 수행된 제1 블록체인 블록 및 제1 블록체인 블록 메타데이터를 외부 저장소로 전파하고, 프라이머리 S-node가 아니면 제1 블록체인 블록에 대한 합의 메시지를 프라이머리 S-node로 전송한다.A Byzantine fault tolerant block data storage device utilizing an external storage device according to one embodiment of the present invention receives a first blockchain block from a blockchain node, communicates with a plurality of S-nodes to perform Byzantine fault tolerant (BFT) consensus on block data of the first blockchain block, collects consensus messages for the first blockchain block on which consensus has been performed by the plurality of S-nodes if the device is a primary S-node, and generates first blockchain block metadata, propagates the first blockchain block on which consensus has been performed by the plurality of S-nodes and the first blockchain block metadata to an external storage, and transmits the consensus message for the first blockchain block to the primary S-node if the device is not a primary S-node.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치는, 블록체인 노드에게 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공할 수 있다.A Byzantine fault tolerant block data storage device utilizing an external storage device according to one embodiment of the present invention can provide a blockchain storage service (BSS) that transmits agreed block data for a first blockchain block to a blockchain node.

본 발명의 일 실시예에 따른 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치는, 블록체인 노드로부터 수신한 블록을 임시 저장하는 블록 캐쉬(Block cache); 다른 S-node들과 상호 교환되는 합의 메시지를 임시 저장하는 메시지 캐쉬(Message cache); 합의 메시지를 생성하고 다른 S-node들로 전파하는 생성기(Generator); 다른 S-node들로부터 수신된 합의 메시지에 기반하여 블록에 대한 합의 상태를 결정하는 해석기(Analyzer); 및 블록에 대한 합의가 끝난 이후, 생성된 메타데이터를 저장하는 영구 메타데이터 저장소(Persistent metadata store)를 포함할 수 있다. A Byzantine fault-tolerant block data storage device utilizing an external storage device according to one embodiment of the present invention may include a block cache that temporarily stores a block received from a blockchain node; a message cache that temporarily stores consensus messages exchanged with other S-nodes; a generator that generates consensus messages and propagates them to other S-nodes; an analyzer that determines an consensus state for a block based on consensus messages received from other S-nodes; and a persistent metadata store that stores generated metadata after consensus for a block is completed.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 블록체인 블록 데이터 저장 특화 노드에 의존하지 않고 기존 블록체인 플랫폼의 데이터 저장 요구사항을 충족할 수 있다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention can satisfy the data storage requirements of an existing blockchain platform without relying on a blockchain block data storage specialized node.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 S-node 들 간의 비잔틴 합의 진행으로, 시스템 비잔틴 장애에 대한 대응이 가능하다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention can respond to a system Byzantine failure by performing a Byzantine agreement between S-nodes.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 블록체인 저장 특화 노드의 신뢰성을 보장하지 않더라도, 블록 데이터 합의 및 블록 데이터 검증을 수행할 수 있다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention can perform block data consensus and block data verification even without guaranteeing the reliability of a blockchain storage specialized node.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 특정 블록체인 플랫폼에 의존하지 않게 설계되어, 블록체인 플랫폼에서 생성되는 블록 데이터만을 가지고 블록 데이터 합의 및 저장이 가능하다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention is designed not to depend on a specific blockchain platform, and thus block data consensus and storage are possible using only block data generated on a blockchain platform.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 특정 스토리지, 클라우드 기술에 의존하지 않게 설계되어, 최신 분산 스토리지 기술과 연동 가능하다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention is designed not to depend on specific storage or cloud technologies, and can be linked with the latest distributed storage technologies.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 S-node 들 간 교환하는 합의 메시지, S-node 가 저장하는 메타 데이터를 이용하여 기존 블록체인 플랫폼에서 나타난 스토리지 오버헤드를 최소화한다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention minimizes storage overhead that appears in existing blockchain platforms by utilizing consensus messages exchanged between S-nodes and metadata stored by S-nodes.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 합의 메시지와 메타 데이터 정보를 확장 가능하도록 설계함으로써, 이후 속성 정보 추가를 통해 여러 블록체인 플랫폼 및 스토리지 기술과 호환 가능하다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention is designed to allow expansion of consensus messages and metadata information, thereby being compatible with various blockchain platforms and storage technologies through subsequent addition of attribute information.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 내성 블록 데이터 저장 기법은 거래 시스템, 투표 어플리케이션, 공급망 관리(Supply Chain) 시스템 등 노드 간 합의 및 블록 데이터 저장을 필요로 하는 분야에 적용 가능하다.A Byzantine-resistant block data storage technique utilizing an external storage device according to one embodiment of the present invention can be applied to fields requiring inter-node consensus and block data storage, such as transaction systems, voting applications, and supply chain management (supply chain) systems.

도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 감내 블록 데이터 저장 방법을 구현하는 블록체인 네트웍 시스템의 개략적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 S-node의 구조와 동작을 도시하는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 합의 메시지 및 블록 메타데이터의 구조의 일 예를 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 BN change 메시지와 New BN Proposal의 구조의 일 예를 도시하는 도면이다.
도 5는 본 발명의 일 실시예에 따른 비잔틴 합의 프로토콜에 따른 메시지 패턴의 일 예를 도시하는 도면이다.
도 6는 본 발명의 일 실시예에 따른 BN change protocol에 따른 메시지 패턴의 일 예를 도시하는 도면이다.
도 7는 본 발명의 일 실시예에 따른 Primary change protocol에 따른 메시지 패턴의 일 예를 도시하는 도면이다.
도 8은 본 발명의 일 실시예에 따른 스토리지 오버헤드를 기존 이더리움 및 블록 공간 분할 기법(ECC)와 대비시켜 도시하는 도면이다.
도 9는 도 1 내지 도 8의 과정의 적어도 일부를 수행할 수 있는 일반화된 블록체인 노드, S-node, 또는 외부 스토리지를 구성하는 컴퓨팅 시스템의 예시를 도시하는 개념도이다.
FIG. 1 is a schematic block diagram of a blockchain network system implementing a Byzantine fault tolerant block data storage method according to one embodiment of the present invention.
FIG. 2 is a block diagram illustrating the structure and operation of an S-node according to one embodiment of the present invention.
FIG. 3 is a diagram illustrating an example of the structure of an agreement message and block metadata according to one embodiment of the present invention.
FIG. 4 is a diagram illustrating an example of the structure of a BN change message and a New BN Proposal according to one embodiment of the present invention.
FIG. 5 is a diagram illustrating an example of a message pattern according to a Byzantine agreement protocol according to one embodiment of the present invention.
FIG. 6 is a diagram illustrating an example of a message pattern according to a BN change protocol according to one embodiment of the present invention.
FIG. 7 is a diagram illustrating an example of a message pattern according to a primary change protocol according to one embodiment of the present invention.
FIG. 8 is a diagram illustrating storage overhead according to one embodiment of the present invention compared to existing Ethereum and block space partitioning techniques (ECC).
FIG. 9 is a conceptual diagram illustrating an example of a computing system that constitutes a generalized blockchain node, S-node, or external storage capable of performing at least a portion of the processes of FIGS. 1 through 8.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.The present invention can have various modifications and various embodiments, and specific embodiments are illustrated in the drawings and described in detail. However, this is not intended to limit the present invention to specific embodiments, but should be understood to include all modifications, equivalents, or substitutes included in the spirit and technical scope of the present invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. '및/또는' 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are only used to distinguish one component from another. For example, without departing from the scope of the present invention, the first component could be referred to as the second component, and similarly, the second component could also be referred to as the first component. The term "and/or" includes any combination of a plurality of related listed items or any item among a plurality of related listed items.

본 출원의 실시예들에서, "A 및 B 중에서 적어도 하나"는 "A 또는 B 중에서 적어도 하나" 또는 "A 및 B 중 하나 이상의 조합들 중에서 적어도 하나"를 의미할 수 있다. 또한, 본 출원의 실시예들에서, "A 및 B 중에서 하나 이상"은 "A 또는 B 중에서 하나 이상" 또는 "A 및 B 중 하나 이상의 조합들 중에서 하나 이상"을 의미할 수 있다.In the embodiments of the present application, “at least one of A and B” can mean “at least one of A or B” or “at least one of combinations of one or more of A and B.” Furthermore, in the embodiments of the present application, “at least one of A and B” can mean “at least one of A or B” or “at least one of combinations of one or more of A and B.”

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When it is said that a component is "connected" or "connected" to another component, it should be understood that it may be directly connected or connected to that other component, but that there may be other components in between. On the other hand, when it is said that a component is "directly connected" or "directly connected" to another component, it should be understood that there are no other components in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is only used to describe specific embodiments and is not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly indicates otherwise. In this application, it should be understood that the terms "comprises" or "has" and the like are intended to specify the presence of a feature, number, step, operation, component, part or combination thereof described in the specification, but do not exclude in advance the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms defined in commonly used dictionaries, such as those defined in common dictionaries, should be interpreted as having a meaning consistent with the meaning they have in the context of the relevant art, and will not be interpreted in an idealized or overly formal sense unless expressly defined in this application.

한편 본 출원일 전에 공지된 기술이라 하더라도 필요 시 본 출원 발명의 구성의 일부로서 포함될 수 있으며, 이에 대해서는 본 발명의 취지를 흐리지 않는 범위 내에서 본 명세서에서 설명한다. 다만 본 출원 발명의 구성을 설명함에 있어, 본 출원일 전에 공지된 기술로서 당업자가 자명하게 이해할 수 있는 사항에 대한 자세한 설명은 본 발명의 취지를 흐릴 수 있으므로, 공지 기술에 대한 지나치게 자세한 사항의 설명은 생략한다. Meanwhile, even if it is a technology known prior to the filing date of this application, it may be included as a part of the composition of the invention of this application if necessary, and this will be described in this specification within the scope that does not obscure the purpose of the invention. However, in explaining the composition of the invention of this application, a detailed description of matters that were known prior to the filing date of this application and could be clearly understood by those skilled in the art may obscure the purpose of the invention, and therefore, an excessively detailed description of the known technology will be omitted.

예를 들어, 비잔틴 장애 감내/허용 (BFT, Byzantine Fault Tolerance) 합의를 구현하는 기술 등은 본 발명의 출원 전 공지 기술을 이용할 수 있으며, 이들 공지 기술들 중 적어도 일부는 본 발명을 실시하는 데에 필요한 요소 기술로서 적용될 수 있다. For example, technologies for implementing Byzantine Fault Tolerance (BFT) consensus can utilize technologies known prior to the filing of the present invention, and at least some of these known technologies can be applied as element technologies necessary for implementing the present invention.

그러나 본 발명의 취지는 이들 공지 기술에 대한 권리를 주장하고자 하는 것이 아니며 공지 기술의 내용은 본 발명의 취지에 벗어나지 않는 범위 내에서 본 발명의 일부로서 포함될 수 있다. However, the purpose of the present invention is not to claim rights to these known technologies, and the contents of the known technologies may be included as part of the present invention within a scope that does not deviate from the purpose of the present invention.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the attached drawings, a preferred embodiment of the present invention will be described in more detail. In order to facilitate an overall understanding in describing the present invention, the same reference numerals are used for the same components in the drawings, and redundant descriptions of the same components are omitted.

본 발명은 블록체인 네트웍에서의 블록 데이터 저장 방법 및 장치에 관한 것으로서, 보다 상세하게는 비잔틴 장애 내성을 가진 블록 데이터를 외부 저장장치를 활용하여 저장하는 방법에 관한 것이다. 특히, 비잔틴 장애 내성을 가지는 블록체인 스토리지 서비스 구조를 제안하고, 블록 데이터를 저장하는 기술에 관한 것이다. The present invention relates to a method and device for storing block data in a blockchain network, and more particularly, to a method for storing block data with Byzantine fault tolerance by utilizing an external storage device. In particular, the present invention proposes a blockchain storage service structure with Byzantine fault tolerance, and relates to a technology for storing block data.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 장애 감내 블록체인 스토리지 서비스는, 블록 데이터에 대한 합의 및 데이터 검증을 위한 메타 데이터를 저장하는 S-node인 제1 엔티티; 및 블록 데이터와 메타 데이터를 저장하는 외부 저장소인 제2 엔티티를 포함한다.A Byzantine fault-tolerant blockchain storage service utilizing an external storage device according to one embodiment of the present invention includes a first entity, which is an S-node that stores metadata for consensus on block data and data verification; and a second entity, which is an external storage that stores block data and metadata.

제1 엔티티는, 한 임의의 블록체인 노드(i.e. BSS client)로부터 블록체인 블록을 받아온 이후, 해당 블록 데이터에 대한 BFT 합의를 진행할 수 있다. 각 S-node 들 간 블록 합의 메시지를 주고받음으로써 BFT 합의를 수행한다. 하나의 블록 데이터에 대한 BFT 합의가 끝난 이후 각 S-node는 합의 메시지를 모아 BFT 블록 메타데이터를 생성한다.The first entity can proceed with BFT consensus on the block data after receiving a blockchain block from an arbitrary blockchain node (i.e. BSS client). BFT consensus is performed by exchanging block consensus messages between each S-node. After BFT consensus on one block data is completed, each S-node collects consensus messages and creates BFT block metadata.

제2 엔티티는, 제1 엔티티로부터 블록 데이터와 메타데이터를 수신하여 메타데이터 정보에 기반해 블록 데이터를 검증하고, 블록 데이터 및 메타데이터를 저장하는 과정을 수행한다.The second entity receives block data and metadata from the first entity, verifies the block data based on the metadata information, and performs a process of storing the block data and metadata.

본 발명의 일 실시예에 따른 외부 저장장치를 활용하는 비잔틴 장애 감내 블록체인 스토리지 서비스는 블록 데이터에 대한 가용성(availability)를 위해 제1 엔티티에 해당하는 S-node의 개수를 충분히 늘릴 수 있다. 본 발명의 일 실시예에 따른 비잔틴 장애 감내 블록체인 스토리지 서비스는 기존 스토리지 서비스와 유사한 수준의 가용성을 제공하도록 설계될 수 있다. 예를 들어 five-nine, 즉, 99.999%의 블록 데이터 가용성이 본 발명의 실시예에 의하여 제공될 수 있다. A Byzantine fault-tolerant blockchain storage service utilizing an external storage device according to an embodiment of the present invention can sufficiently increase the number of S-nodes corresponding to a first entity for availability of block data. A Byzantine fault-tolerant blockchain storage service according to an embodiment of the present invention can be designed to provide a similar level of availability to existing storage services. For example, five-nine, i.e., 99.999% block data availability can be provided by an embodiment of the present invention.

본 발명의 일 실시예에 따른 비잔틴 장애 감내 블록체인 스토리지 서비스에서, S-node의 개수가 증가함에 따라 신뢰성(reliability)이 증가할 수 있다. 신뢰성은 블록체인 블록에 대한 합의에 성공할 확률이 증가할수록 증가할 수 있다.In a Byzantine fault tolerant blockchain storage service according to one embodiment of the present invention, reliability may increase as the number of S-nodes increases. Reliability may increase as the probability of success in reaching an agreement on a blockchain block increases.

블록체인 노드는 블록체인 스토리지 서비스 이용을 통해, 합의된 블록 데이터를 수신 가능하다. Blockchain nodes can receive agreed-upon block data by using blockchain storage services.

도 1은 본 발명의 일 실시예에 따른 비잔틴 장애 감내 블록 데이터 저장 방법을 구현하는 블록체인 네트웍 시스템의 개략적인 블록도이다. 블록체인 네트웍 시스템은 클라이언트로부터의 트랜잭션들을 처리하고 트랜잭션들을 블록 데이터의 형태로 저장한다. 블록체인 네트웍 시스템은 블록체인 서비스의 클라이언트(도시되지 않음), 블록체인 플랫폼(100), 및 블록체인 스토리지 서비스 (BSS: Blockchain Storage Service) 시스템 (200)을 포함한다.FIG. 1 is a schematic block diagram of a blockchain network system implementing a Byzantine fault tolerant block data storage method according to one embodiment of the present invention. The blockchain network system processes transactions from a client and stores the transactions in the form of block data. The blockchain network system includes a blockchain service client (not shown), a blockchain platform (100), and a blockchain storage service (BSS: Blockchain Storage Service) system (200).

클라이언트(도시되지 않음)는 블록체인 플랫폼(100)을 이용하는 사용자이다. 클라이언트가 블록체인 플랫폼(100)에 클라이언트 트랜잭션을 전달하면, 블록체인 플랫폼(100)은 해당 트랜잭션 관련 데이터를 묶어서 블록 데이터 형태로 저장한다. 블록체인 플랫폼(100)은 블록체인 노드(110)를 포함한다. 블록체인 노드(110)는 스마트 컨트랙트 및 블록체인 블록(121)을 포함할 수 있다. 블록체인 블록(121)들이 연결됨으로써 블록체인(120)이 형성될 수 있다. 블록체인 노드(110)들은 클라이언트로부터 전달된 클라이언트 트랜잭션들을 직접 수행하고, 수행 결과를 묶어 블록 데이터 형태로 저장할 수 있다.A client (not shown) is a user who uses a blockchain platform (100). When a client transmits a client transaction to the blockchain platform (100), the blockchain platform (100) bundles data related to the transaction and stores it in the form of block data. The blockchain platform (100) includes a blockchain node (110). The blockchain node (110) may include a smart contract and a blockchain block (121). A blockchain (120) may be formed by connecting blockchain blocks (121). The blockchain nodes (110) may directly perform client transactions transmitted from the client, bundle the results of the performance, and store them in the form of block data.

BSS 시스템(200)는 저장 노드(S-node. 210a, 210b)의 집합(210)과 외부 스토리지(220)를 포함한다. S-node(210a, 210b)는 제1 엔티티, S-node 집합(210)은 제1 엔티티 집합으로 표현될 수 있으며, 외부 스토리지(220)는 제2 엔티티로 표현될 수 있다. 이때 S-node 집합(210)은 내부에서 합의 과정을 도출하는 복수개의 S-node(210a, 210b)를 포함하며, 외부 스토리지(220)는 적어도 하나 이상의 모듈 또는 요소로 구현될 수 있다. The BSS system (200) includes a set (210) of storage nodes (S-nodes. 210a, 210b) and an external storage (220). The S-nodes (210a, 210b) may be expressed as a first entity, the S-node set (210) may be expressed as a first entity set, and the external storage (220) may be expressed as a second entity. At this time, the S-node set (210) includes a plurality of S-nodes (210a, 210b) that derive an agreement process internally, and the external storage (220) may be implemented as at least one module or element.

S-node 집합(210)은 다수의 S-node(210a, 210b)를 포함한다. 각 S-node(210a, 210b)는 하나 이상의 블록체인 노드(110)로부터 블록체인 블록 B (121)를 받아들이고, 다른 S-node(210a, 210b)들과 블록 합의 메시지(αh)를 주고받음으로써 해당 블록(121) 데이터에 대한 합의를 진행한다. 하나의 블록(121) 데이터에 대한 BFT 합의가 끝난 이후 각 S-node(210a, 210b)는 합의 메시지를 모아 블록 메타데이터를 생성할 수 있다. The S-node set (210) includes a plurality of S-nodes (210a, 210b). Each S-node (210a, 210b) receives a blockchain block B (121) from one or more blockchain nodes (110) and proceeds with an agreement on the data of the corresponding block (121) by exchanging a block agreement message (α h ) with other S-nodes (210a, 210b). After the BFT agreement on the data of one block (121) is completed, each S-node (210a, 210b) can collect the agreement messages to generate block metadata.

S-node 집합(210) 내의 S-node들(210a, 210b)은 합의 메시지를 생성하고, 합의 메시지를 상호 교환함으로써 BFT 합의를 수행할 수 있다. 이 점에서 종래 기술들과 본 발명의 구성이 차별화되며, 블록체인 노드(110)들이 수행하던 BFT 합의를 S-node 집합(210) 내에서 수행함으로써 블록체인 노드(110)들의 계산 및 스토리지 부하를 줄일 수 있다.S-nodes (210a, 210b) within the S-node set (210) can perform BFT consensus by generating consensus messages and exchanging consensus messages with each other. In this respect, the configuration of the present invention is differentiated from the conventional technologies, and the computational and storage load of the blockchain nodes (110) can be reduced by performing the BFT consensus performed by the blockchain nodes (110) within the S-node set (210).

S-node 집합(210) 내의 S-node들(210a, 210b)은 블록체인 노드(110)로부터 전파된 블록(121) 데이터 모두와 블록(121)에 대하여 기 생성된 블록 메타 데이터를 검증하며, 이러한 검증은 합의 과정에서 필수적으로 요구될 수 있다. S-nodes (210a, 210b) within the S-node set (210) verify all block (121) data transmitted from the blockchain node (110) and block metadata previously generated for the block (121), and such verification may be essential in the consensus process.

S-node 집합(210) 내의 S-node들(210a, 210b)은 합의 결과에 의하여 새롭게 생성되는 블록 메타 데이터를 저장하고, 블록 데이터 모두와 블록 메타 데이터 모두는 외부 스토리지/외부 저장소(220)에 저장될 수 있다.S-nodes (210a, 210b) within the S-node set (210) store block metadata newly generated based on the consensus result, and all block data and block metadata can be stored in external storage/external storage (220).

S-node 집합(210) 내의 S-node들(210a, 210b)은 역할에 따라 합의 메시지를 수집하여 외부 스토리지(220)로 전파하는 Primary S-node(210a)와, 합의 메시지를 Primary S-node(210a)에 전달하는 일반 S-node(210b)를 포함할 수 있다.S-nodes (210a, 210b) within the S-node set (210) may include a primary S-node (210a) that collects consensus messages according to their roles and transmits them to external storage (220), and a general S-node (210b) that transmits consensus messages to the primary S-node (210a).

합의 과정에는 Primary S-node(210a) 및 일반 S-node(210b)가 모두 참여하며, 예를 들어 도 1에 도시된 바와 같이 Primary S-node(210a) 및 일반 S-node(210b)가 일종의 원형 네트워크를 형성함으로써 구현될 수 있다. 합의에 참여하는 Primary S-node(210a) 및 일반 S-node(210b)는 모두 합의 메시지를 생성할 수 있다. Both the Primary S-node (210a) and the general S-node (210b) participate in the consensus process, and for example, as shown in Fig. 1, the Primary S-node (210a) and the general S-node (210b) can be implemented by forming a kind of circular network. Both the Primary S-node (210a) and the general S-node (210b) participating in the consensus can generate consensus messages.

블록체인 노드(110)에 BSS 서비스를 제공하는 주체는 S-node 집합(210)이고, 이때 블록체인 노드(110)는 사용자에게는 블록체인 서비스의 제공자이면서 S-node 집합(210)과의 관계에서는 BSS 서비스의 클라이언트(client)로 간주될 수 있다. The entity that provides the BSS service to the blockchain node (110) is the S-node set (210), and at this time, the blockchain node (110) can be considered as a provider of the blockchain service to the user and as a client of the BSS service in its relationship with the S-node set (210).

블록체인 노드(110)와의 관계에서는 블록체인 노드(110)의 트랜잭션에 대응하는 것은 S-node 집합(210) 내의 각 S-node(210a, 210b)이므로 블록체인 노드(110)에 BSS 서비스를 제공하는 주체를 S-node 집합(210)으로 해석할 수 있다. 한편 S-node 집합(210)과 외부 스토리지(220)와의 관계에서는 합의 메시지 및 메타 데이터를 Primary S-node(210a)가 수집하여 외부 스토리지(220)로 전파하는, 일종의 허브 역할을 수행할 수 있다.In the relationship with the blockchain node (110), since each S-node (210a, 210b) in the S-node set (210) corresponds to the transaction of the blockchain node (110), the entity that provides the BSS service to the blockchain node (110) can be interpreted as the S-node set (210). Meanwhile, in the relationship between the S-node set (210) and external storage (220), the primary S-node (210a) can collect consensus messages and metadata and transmit them to the external storage (220), thereby performing a kind of hub role.

블록체인 노드(110)와 외부 스토리지(220) 사이에 S-node 집합(210)이 위치하여 외부 스토리지(220)는 S-node 집합(210)을 경유하여 블록체인 노드(110)와 상호작용하며, 블록체인 노드(110)는 외부 스토리지(220)의 존재를 인지하지 못할 수도 있다. An S-node set (210) is positioned between a blockchain node (110) and an external storage (220), so that the external storage (220) interacts with the blockchain node (110) via the S-node set (210), and the blockchain node (110) may not be aware of the existence of the external storage (220).

S-node 집합(210)은 블록체인 노드(110)로부터 전달받은 블록에 대한 합의를 수행한 후, 합의된 블록 데이터를 블록체인 노드(110)로 전달하며, 이를 BSS 서비스를 제공하는 것으로 해석할 수 있다. The S-node set (210) performs an agreement on a block received from a blockchain node (110) and then transmits the agreed block data to the blockchain node (110), which can be interpreted as providing a BSS service.

외부 스토리지(220)는 S-node(210) 집합으로부터 블록(121)과 메타데이터를 받아서 저장하는 외부 저장소이다.External storage (220) is an external storage that receives and stores blocks (121) and metadata from a set of S-nodes (210).

블록체인 노드 (BSS 클라이언트)에게는 두 가지 인터페이스 즉, AddBlock(Bh) 인터페이스와 GetBlockByNumber(h)인터페이스가 지원될 수 있다: AddBlock(Bh) 인터페이스는 블록 Bh를 BSS에 기록한다. AddBlock(Bh)는 BSS로부터 합의 결과를 반환 받는다. GetBlockByNumber(h)는 BSS 상 저장되어 있는 높이 h의 블록 Bh을 읽어들인다. A blockchain node (BSS client) can support two interfaces: the AddBlock(B h ) interface and the GetBlockByNumber (h) interface: The AddBlock(B h ) interface writes a block B h to the BSS. AddBlock(B h ) returns a consensus result from the BSS. GetBlockByNumber(h) reads a block B h with height h stored on the BSS.

각 S-node는 블록 Bh 에 대한 global predicate Ph 를 만족하는지 검증 목적으로 메타데이터 Mh를 생성한다. 본 명세서에서는, Ph 를 "n-f개 이상의 S-node에 의해서 블록에 대한 합의 결과를 도출할 수 있는가"로 설정한다.Each S-node generates metadata M h for the purpose of verifying whether the block B h satisfies the global predicate P h . In this specification, P h is set to "whether a consensus result for the block can be derived by nf or more S-nodes."

이때 n은 S-node들의 개수를 의미하며, f는 비잔틴 허용 오차에 기반하여 결정되는 값일 수 있다. Here, n represents the number of S-nodes, and f can be a value determined based on the Byzantine tolerance.

각 S-node 들은 다섯 가지 연산을 지원할 수 있다: 키 h 는 블록 높이로 정의한다. write()는 블록 와 합의에 사용된 메타데이터 을 external storage에 기록하고, 메타데이터 을 반환한다. valid()은 이 유효한 정보를 가지고 있으면, true를 반환한다. read(는 write()이 선행되었으면, 블록 를 external storage로부터 받는다. read_causal()는 블록 이전 높이의 모든 블록 을 external storage로부터 받는다. 마지막으로 audit(h)은 external storage로부터 와 연관된 메타데이터 를 수신한다.Each S-node can support five operations: The key h is defined as the block height. write( ) is a block Metadata used in agreement with Writes metadata to external storage returns valid( )silver If it has valid information, it returns true. read( is write( ) was preceded by a block is received from external storage. read_causal( ) is a block All blocks of previous height is received from external storage. Finally, audit(h) is received from external storage. Metadata associated with Receive.

이하의 설명에서는, 악의적인 노드 (i.e. replica 혹은 블록체인 노드) 가 일반적인 노드 장애를 가질 수 있다고 가정한다. 다만, 악의적인 노드가 암호학적 기술 (i.e. collision-resistant hashes, signatures)을 위반할 수 없다고 가정한다.In the following description, we assume that malicious nodes (i.e. replica or blockchain nodes) can cause general node failures. However, we assume that malicious nodes cannot violate cryptographic techniques (i.e. collision-resistant hashes, signatures).

본 발명의 시스템은 두 가지 보안 특성을 만족한다. 최대 f 개의 replica 가 악의적인 노드일 때까지 safety와 liveness 특성을 만족한다. 추가로, 우리는 유한한 개수의 블록체인 노드가 악의적임을 가정한다.The system of the present invention satisfies two security properties. It satisfies the safety and liveness properties until at most f replicas are malicious nodes. Additionally, we assume that a finite number of blockchain nodes are malicious.

- Safety: 모든 정상적인 노드는 같은 높이에 대해서 서로 다른 블록을 commit 할 수 없다.- Safety: All normal nodes cannot commit different blocks for the same height.

- Liveness: 특정 높이 상 적어도 한 블록의 합의 결과는 언젠가 반드시 도출된다.- Liveness: At least one block consensus result at a certain height is guaranteed to be reached at some point.

본 발명의 일 실시예에 따른 시스템에서, safety와 liveness 특성은 노드들이 일반적인 노드 장애 (Byzantine fault) (i.e. 메시지를 보내지 않거나, 이상한 (conflicting) 메시지를 보내는 경우)를 가질 수 있는 partially synchronous 한 네트워크를 가정한다. Partially synchronous 네트워크 상 전파되는 메시지의 경우 고정되어 있으나, 알려지지 않은 time bound 안에 최종적으로 전송된다.In a system according to one embodiment of the present invention, the safety and liveness properties assume a partially synchronous network where nodes can have byzantine faults (i.e., not sending messages or sending conflicting messages). In a partially synchronous network, a message propagated therethrough is ultimately transmitted within a fixed but unknown time bound.

이에, BSS는 아래와 같은 추가적인 특성을 만족한다.Accordingly, BSS satisfies the following additional properties:

- Integrity: 정상적인 S-node에 의해서 호출된 서로 다른 두 개의 read() 는, external storage가 정상적이라면, 같은 를 반환한다.- Integrity: Two different reads (called by a normal S-node) ) is the same if the external storage is normal. Returns .

- Block Availability: 정상적인 primary S-node에 의해서 write() 이후 정상적인 S-node로부터 read() 가 호출되면, read() 는 최종적으로 실행되고, external storage가 정상적이라면, 를 반환한다.- Block Availability: write( by a normal primary S-node) ) and then read from a normal S-node ( ) is called, read( ) is finally executed, and if external storage is normal, Returns .

- Containment: read_causal() 로부터 반환된 블록 집합 에 대해서 (), read_causal() 로부터 반환된 ()은 를 만족한다.- Containment: read_causal( ) A set of blocks returned from About ( ), read_causal( ) returned from ( )silver Satisfies .

- Causality: read_causal()는 commit된 에 대한 write() 가 수행되기 이전, 최소 개 honest S-node들에 의해 commit 된 블록을 전부 포함한다.- Causality: read_causal( ) is committed write( about ) before it is performed, at least Contains all blocks committed by honest S-nodes.

- External validity: 만일 정상적인 S-node가 블록 에 대한 합의 결과를 도출하고 메타 데이터 를 생성했다면, 는 참이다.- External validity: If a normal S-node blocks To derive consensus results on metadata If you created it, is true.

위 특성들의 개념 중 적어도 일부는 선행기술 문헌들에서 개시된 바 있다. 예컨대, Danezis, G., Kokoris-Kogias, L., Sonnino, A., & Spiegelman, A. (2022, March). Narwhal and Tusk: a DAG-based mempool and efficient BFT consensus. In Proceedings of the Seventeenth European Conference on Computer Systems (pp. 34-50)는 block availability, containment, causality 특성을 시스템 특성으로 제시했다. 또한, C. Cachin, K. Kursawe, F. Petzold, and V. Shoup. Secure and efficient asynchronous broadcast protocols. In Proc. of the 21st Annual Int. Cryptology Conf. on Advances in Cryptology - CRYPTO'01, 2001은 external validity를 처음 제안하였다. J. Sousa and A. Bessani, "From Byzantine Consensus to BFT State Machine Replication: A Latency-Optimal Transformation," in Ninth European Dependable Computing Conference, 2012, pp. 37-48, doi: 10.1109/EDCC.2012.32.와 S. Duan and H. Zhang, "PACE: Fully Parallelizable BFT from Reproposable Byzantine Agreement." Cryptology ePrint Archive (2022)은 external validity를 그들 시스템의 특성으로 언급하였다. 그렇지만, 본 발명은 위 개념들의 개념을 그대로 사용한 것이 아니고 BSS에 적용 가능하도록 각 특성의 정의를 수정하였다.At least some of the concepts of the above properties have been disclosed in the prior art literature. For example, Danezis, G., Kokoris-Kogias, L., Sonnino, A., & Spiegelman, A. (2022, March). Narwhal and Tusk: a DAG-based mempool and efficient BFT consensus. In Proceedings of the Seventeenth European Conference on Computer Systems (pp. 34-50) presented block availability, containment, and causality properties as system properties. Also, C. Cachin, K. Kursawe, F. Petzold, and V. Shoup. Secure and efficient asynchronous broadcast protocols. In Proc. of the 21st Annual Int. Cryptology Conf. on Advances in Cryptology - CRYPTO'01, 2001 first proposed external validity. J. Sousa and A. Bessani, "From Byzantine Consensus to BFT State Machine Replication: A Latency-Optimal Transformation," in Ninth European Dependable Computing Conference, 2012, pp. 37-48, doi: 10.1109/EDCC.2012.32. and S. Duan and H. Zhang, "PACE: Fully Parallelizable BFT from Reproposable Byzantine Agreement." Cryptology ePrint Archive (2022) mentioned external validity as a characteristic of their system. However, the present invention did not use the above concepts as they are, but modified the definition of each characteristic so that it can be applied to BSS.

도 2는 S-node 집합(210) 내 S-node(210a, 210b) 각각의 구조와 동작을 도시하는 블록도이다. S-node 집합(210) 내의 S-node(210a, 210b)들은 합의 메시지를 생성하고 교환되는 합의 메시지를 수합하여 전파하는 Primary S-node(210a)와, 합의 메시지를 생성하고 생성된 합의 메시지를 Primary S-node(210a)에 전달하는 일반 S-node(210b)를 포함할 수 있다. Figure 2 is a block diagram illustrating the structure and operation of each S-node (210a, 210b) within the S-node set (210). The S-nodes (210a, 210b) within the S-node set (210) may include a Primary S-node (210a) that generates a consensus message and collects and propagates the exchanged consensus messages, and a general S-node (210b) that generates a consensus message and propagates the generated consensus message to the Primary S-node (210a).

설명의 편의상 도 2에서는 일반 S-node(210b)가 block cache(211), message cache(212), generator(213), analyzer(214), 그리고 persistent metadata cache(215)를 포함하는 것으로 도시되었으나, Primary S-node(210a)의 구조도 일반 S-node(210b)와 동일하게 구현될 수 있다. 어떤 S-node가 Primary S-node(210a)이고 어떤 S-node가 일반 S-node(210b)인 지는 처음부터 정해지는 것이 아니고, 상황에 따라 round robin 방식 등으로 순차적으로 Primary S-node(210a)로 지정될 수도 있다. For convenience of explanation, in Fig. 2, a general S-node (210b) is illustrated as including a block cache (211), a message cache (212), a generator (213), an analyzer (214), and a persistent metadata cache (215), but the structure of the primary S-node (210a) can also be implemented in the same manner as the general S-node (210b). Which S-node is the primary S-node (210a) and which S-node is the general S-node (210b) is not determined from the beginning, and depending on the situation, it can be sequentially designated as the primary S-node (210a) using a round robin method, etc.

각 S-node(210a, 210b)는 block cache(211), message cache(212), generator(213), analyzer(214), 그리고 persistent metadata cache(215)를 포함할 수 있다. Block cache(211)는 블록체인 노드(110)로부터 수신한 블록을 임시 저장한다. Message cache(212)는 교환되는 합의 메시지를 임시 저장한다. Generator(213)는 합의 메시지를 생성하고 전파한다. Analyzer(214)는 수신된 합의 메시지를 기준으로 블록에 대한 합의 state를 결정한다. Persistent metadata store(215)는 블록에 대한 합의가 끝난 이후, 생성된 메타데이터를 저장한다.Each S-node (210a, 210b) may include a block cache (211), a message cache (212), a generator (213), an analyzer (214), and a persistent metadata cache (215). The block cache (211) temporarily stores a block received from a blockchain node (110). The message cache (212) temporarily stores an exchanged consensus message. The generator (213) generates and propagates a consensus message. The analyzer (214) determines an consensus state for a block based on the received consensus message. The persistent metadata store (215) stores the generated metadata after an agreement on a block is completed.

각 S-node(210a, 210b)는 아래 동작을 순차적으로 수행할 수 있다. Each S-node (210a, 210b) can sequentially perform the following operations.

먼저 블록체인 노드(110)로부터 블록을 수신한다(S230). 전파된 블록을 block cache(211)에 임시로 저장하고, block cache는 generator(213)에는 블록 수신을 통보하고(S231a), analyzer는 block cache로부터 블록을 pull한다(S231b). 이후, generator(213)는 수신된 블록에 대한 합의 메시지를 primary S-node(210a)에 제출한다(S232a). Primary S-node(210a)는 합의 메시지 집합을 외부 스토리지(220)로 전파한다(S232b). S-node(210a, 210b)는 합의 메시지를 수신하여(S233a), message cache(212)에 임시 저장하고, analyzer(214)에 합의 메시지 수신을 통보한다(S234). Analyzer(214)는 수신한 합의 메시지를 기준으로 합의 state를 결정하고, 메타데이터를 persistent metadata store(215)에 저장한다(S235a). Analyzer(214)는 합의 종료 직후 외부 스토리지(220)에 블록과 메타 데이터를 저장한다(S235b).First, a block is received from a blockchain node (110) (S230). The propagated block is temporarily stored in the block cache (211), and the block cache notifies the generator (213) of the block reception (S231a), and the analyzer pulls the block from the block cache (S231b). Thereafter, the generator (213) submits a consensus message for the received block to the primary S-node (210a) (S232a). The primary S-node (210a) propagates a set of consensus messages to an external storage (220) (S232b). The S-nodes (210a, 210b) receive the consensus message (S233a), temporarily store it in the message cache (212), and notifies the analyzer (214) of the consensus message reception (S234). The analyzer (214) determines the consensus state based on the received consensus message, and stores metadata in a persistent metadata store (215) (S235a). Analyzer (214) stores blocks and metadata in external storage (220) immediately after agreement is concluded (S235b).

도 2에서는 이러한 동작이 일반 S-node(210b) 중심으로 도시되어 있으나, Primary S-node(210a)도 일반 S-node(210b)와 마찬가지로 블록체인 노드(110)로부터 블록을 수신하여(S230) 합의 과정에 참여할 수 있다. 다만 Primary S-node(210a)는 자기 자신에게 합의 메시지를 제출하는 과정(S232a)을 수행하는 대신, 일반 S-node(210b)로부터 합의 메시지를 수집하여(S232a) 합의 메시지 집합을 외부 스토리지(220)로 전파하는(S232b) 과정을 수행하는 점에서 일반 S-node(210b)와 다를 뿐이다. In Fig. 2, this operation is illustrated with a focus on a general S-node (210b), but a primary S-node (210a) can also participate in the consensus process by receiving a block from a blockchain node (110) (S230) just like a general S-node (210b). However, the primary S-node (210a) differs from a general S-node (210b) in that instead of performing a process of submitting a consensus message to itself (S232a), it collects consensus messages from a general S-node (210b) (S232a) and transmits a set of consensus messages to external storage (220) (S232b).

각 S-node(210)는 블록 데이터 합의를 통해서 특정 높이에 대한 블록의 합의 상태(Consensus State)를 세 단계 중 하나로 유지할 수 있다. 높이 h 에 대한 블록 B h 의 합의 상태는 Level-0('None' 상태라고도 할 수 있음), Level-1('Prepared' 상태라고도 할 수 있음), Level-2('Committed' 상태라고도 할 수 있음)의 세 단계로 나뉠 수 있다.Each S-node (210) can maintain the consensus state of a block for a specific height in one of three stages through block data consensus. The consensus state of a block B h for height h can be divided into three stages: Level-0 (also called 'None' state), Level-1 (also called 'Prepared' state), and Level-2 (also called 'Committed' state).

Level-0(None): 블록체인 노드로부터 블록 B h 및 블록체인 노드 BN 이 서명한 블록 해시 를 전달받은 상태이다.Level-0 (None): Block B h from blockchain node and block hash signed by blockchain node BN has been received.

Level-1(Prepared): None 상태에서 S-node가 n-f 개 이상의 합의 메시지 를 수신하였을 때의 상태이다.Level-1 (Prepared): S-node in None state receives nf or more consensus messages This is the status when it is received.

Level-2(Committed): Prepared 상태에서 S-node가 n-f 개 이상의 합의 메시지 를 수신하였을 때의 상태이다.Level-2 (Committed): S-node has nf or more consensus messages in the Prepared state. This is the status when it is received.

도 3은 비잔틴 합의 프로토콜 상 합의 메시지(230)과 블록 메타데이터(240)의 형식의 일 예를 도시한다. 블록체인 플랫폼(100)과 외부 스토리지(220)에 따라서 메시지 속성은 확장 가능하다. S-node(210)들 블록에 대한 합의 상태를 유지하고, 합의를 진행하기 위해서 블록체인 노드(110)로부터 블록을 수신한 이후 audit protocol 내지 비잔틴 합의 프로토콜을 수행한다. audit protocol 내지 비잔틴 합의 프로토콜 상에서는 두 가지 메시지: 1) 합의 메시지(Consensus Message) (330)와 2) 메타데이터(Metadata) (340)가 정의될 수 있다.Fig. 3 illustrates an example of the format of a consensus message (230) and block metadata (240) on the Byzantine agreement protocol. The message properties can be expanded depending on the blockchain platform (100) and the external storage (220). S-nodes (210) maintain the consensus state for a block and perform an audit protocol or Byzantine agreement protocol after receiving a block from a blockchain node (110) to proceed with the consensus. There are two messages on the audit protocol or Byzantine agreement protocol: 1) Consensus Message (330) and 2) Metadata (340) can be defined.

h 는 블록 높이(331, 341), H(B h ) 는 블록체인 노드 BN에 의하여 서명된 블록 해시(332, 343), 는 현재 블록을 수신하는 블록체인에 대한 번호(view number)(333), 는 S-node ID(334, 344), 에 대한 합의 상태를 committed 로 변화시킨 합의 메시지 리스트(345), H prev 는 이전 높이 블록 해시(342), 은 블록체인 노드의 서명(332), 는 S-node 서명(335, 343)을 의미한다. h is the block height (331, 341), H(B h ) is the block hash (332, 343) signed by the blockchain node BN, is the number (view number) (333) for the blockchain receiving the current block, is S-node ID(334, 344), silver A list of consensus messages (345) that changed the consensus state to committed, H prev is the previous height block hash (342), is the signature of the blockchain node (332), means S-node signature (335, 343).

audit protocol 내지 비잔틴 합의 프로토콜에 의해서 블록체인 노드의 악의적인 행동이 발견된 경우, BN(Blockchain Node) change protocol이 시작된다. When malicious behavior of a blockchain node is discovered by an audit protocol or Byzantine agreement protocol, the BN (Blockchain Node) change protocol is initiated.

도 4는 BN change protocol에 따라 교환되는 BN change 메시지(250)와 New BN Proposal(260)의 형식의 일 예를 도시한다. 블록체인 플랫폼(100)과 외부 스토리지(220)에 따라서 메시지 속성은 확장 가능하다. BN change protocol 상에서는 두 가지 메시지: Fig. 4 illustrates an example of the format of a BN change message (250) and a New BN Proposal (260) exchanged according to the BN change protocol. The message properties can be expanded according to the blockchain platform (100) and the external storage (220). There are two messages on the BN change protocol:

(1) BN Change Message , (1) BN Change Message ,

(2) New BN Proposal 가 정의될 수 있다.(2) New BN Proposal can be defined.

r 은 BN change protocol 상 메시지를 수합 및 전파하는 primary 결정 라운드 번호(251, 261), h p 은 가장 높은 prepared 상태의 블록 높이(252, 262), h p 높이의 블록 해시(253, 263), h p 높이의 합의 메시지 집합(254), 는 새로운 블록체인 노드 번호(255, 264), h p 높이에서의 블록체인 노드 번호(256, 265), 는 S-node ID(257, 267), 는 S-node 서명(258, 268), n-f 개 이상의 집합(266)을 의미한다. 는 가장 낮은 hp 부터 가장 높은 hp 까지 블록들을 의미할 수 있다. r is the primary decision round number (251, 261) for collecting and propagating messages in the BN change protocol, h p is the highest prepared block height (252, 262), is h p Block of height Hash(253, 263), is a set of consensus messages (254) of height h p , is a new blockchain node number (255, 264), is the blockchain node number at h p height (256, 265), is S-node ID(257, 267), is an S-node signature (258, 268), is nf or more It means a set (266). can mean blocks from lowest hp to highest hp.

각 S-node(210)는 비잔틴 합의 프로토콜, BN change protocol, Primary change protocol을 수행한다. 각 노드는 블록 합의 및 쓰기 기능을 위해 비잔틴 합의 프로토콜을 수행한다. 2-phase에 걸친 비잔틴 합의 프로토콜 수행 이후, 각 S-node는 블록 에 대한 합의 결과를 도출한다.Each S-node (210) performs the Byzantine agreement protocol, BN change protocol, and Primary change protocol. Each node performs the Byzantine agreement protocol for block agreement and write functions. After performing the Byzantine agreement protocol over two phases, each S-node performs the block To arrive at a consensus on the results.

블록체인 노드, 각 S-node, 그리고 블록체인 스토리지 서브시스템(즉, external storage 서브시스템)은 audit protocol, 그리고 view change protocol을 수행한다. 각 노드는 블록 합의 및 쓰기 기능을 위해 audit protocol(내지 비잔틴 합의 프로토콜)을 수행한다. 2-phase에 걸친 audit protocol 수행 이후, 각 S-node는 블록 에 대한 합의 결과를 도출한다.The blockchain nodes, each S-node, and the blockchain storage subsystem (i.e., the external storage subsystem) perform the audit protocol and the view change protocol. Each node performs the audit protocol (or Byzantine agreement protocol) for block consensus and write functions. After performing the audit protocol over two phases, each S-node To arrive at a consensus on the results.

도 5는 비잔틴 합의 프로토콜에 따른 메시지 패턴의 일 예를 도시한다. Primary S-node(210a)의 역할은 S-node(210b) 들 간 합의된 블록을 외부 스토리지(220)에 쓰고, 합의 메시지(230)를 수집하여 전파하는 과정을 포함한다. 매 합의 라운드마다 round-robin 방식으로 하나의 Primary S-node(210a)가 선정될 수 있다. Fig. 5 illustrates an example of a message pattern according to the Byzantine agreement protocol. The role of the primary S-node (210a) includes the process of writing a block agreed upon between S-nodes (210b) to external storage (220) and collecting and propagating an agreement message (230). One primary S-node (210a) can be selected in a round-robin manner for each agreement round.

각 S-node(210)는 블록체인 노드들 중 하나의 블록체인 노드로부터 블록 와 블록체인 노드(110)가 서명한 블록 해시 를 수신한다.Each S-node (210) receives a block from one of the blockchain nodes. and block hash signed by blockchain node (110). Receive.

각 S-node(210)는 블록 서명 검증 및 해시 체인 검사 이후 각 S-node(210b)는 primary S-node(210a)에게 합의 메시지를 전송한다(230a). Primary S-node(210a)는 합의 메시지를 수합한다(230a). 같은 블록 에 대한 합의 메시지를 n-f 개 이상 수합한 경우, primary S-node(210a)는 합의 메시지 집합을 S-node 들에게 전파한다(230b).Each S-node (210) transmits a consensus message to the primary S-node (210a) after block signature verification and hash chain verification (230a). The primary S-node (210a) collects the consensus messages (230a). Same block When more than nf consensus messages are collected, the primary S-node (210a) propagates the consensus message set to the S-nodes (230b).

단 한 쌍의 합의 메시지라도 같은 높이 블록에 대한 서로 다른 을 가진다면, 해당 합의 메시지 쌍을 S-node 들에게 전파한다. 추가로, primary S-node가 다른 노드들이 제출한 합의 메시지 상 을 기준으로 합의 메시지를 생성하는 것을 방지하기 위하여, primary S-node는 background 상 자신이 받은 를 broadcast한다.Even a single pair of consensus messages for blocks of the same height are different. If it has, it broadcasts the corresponding consensus message pair to the S-nodes. In addition, the primary S-node broadcasts the consensus messages submitted by other nodes. To prevent the generation of consensus messages based on the primary S-node, the primary S-node must be in the background Broadcast.

일정 시간이 지나도 합의 메시지가 도달하지 않는 문제는, (1) primary S-node를 변경하고(도 7 참조), (2) 합의 메시지를 기다리는 시간을 두 배 늘림으로써 해결할 수 있다.The problem of consensus messages not arriving even after a certain amount of time can be solved by (1) changing the primary S-node (see Figure 7) and (2) doubling the time it takes to wait for a consensus message.

도 7는 본 발명의 일 실시예에 따른 Primary change protocol에 따른 메시지 패턴의 일 예를 도시하는 도면이다.FIG. 7 is a diagram illustrating an example of a message pattern according to a primary change protocol according to one embodiment of the present invention.

도 5 및 도 7을 함께 참조하면, 각 S-node(210b)가 primary S-node(210a)로부터 해당 블록 높이에 대한 개 이상의 유효한 합의 메시지를 확인(230b)하면, 자신이 가지고 있는 블록에 대한 합의 상태를 변경한다. 더 높은 높이에 대한 개 이상의 유효한 합의 메시지를 확인하면 해당 높이의 블록 보다 더 낮은 높이의 블록 모두에 대한 합의 상태를 변경한다. 모든 블록이 해시 포인터로 연결되어 있기 때문에, 더 높은 높이의 블록에 대한 합의가 하위 높이 블록의 합의를 보장한다.Referring to FIG. 5 and FIG. 7 together, each S-node (210b) receives a block height from the primary S-node (210a). If you confirm more than one valid consensus message (230b), you change the consensus state for the block you have. For a higher height. If more than one valid consensus message is confirmed, it changes the consensus state for all blocks of lower height than the block of that height. Since all blocks are linked by hash pointers, consensus on a block of a higher height guarantees consensus on blocks of lower heights.

도 6은 BN change protocol에 따른 메시지 패턴의 일 예를 도시한다. 각 S-node(210b)는 (1) 서로 다른 을 가지는 합의 메시지 쌍을 수신하거나, (2) primary S-node(210a)가 broadcast 한 를 기준으로 생성한 이 다르거나, (3) 블록체인 노드(110)로부터 일정 시간이 지나도 블록이 오지 않으면, BN change message(250)를 다른 할당된 Primary S-node(210a)에게 제출한다. Primary S-node(210a)는 자신이 수신한 BN change message(250) 들을 기반으로 가장 큰 h p 을 결정하고, new BN proposal(260)을 생성, 전파한다. 다른 S-node들(210b)은 new BN proposal(260)에 대한 vote를 합의 메시지(230) 교환을 통해 진행한다. S-node(210b)가 n-f 합의 메시지(230)를 모으면, 다음 블록체인 노드로 넘어간다.Figure 6 illustrates an example of a message pattern according to the BN change protocol. Each S-node (210b) (1) has different Receives a pair of consensus messages having (2) a primary S-node (210a) broadcast Created based on and If this is different, or (3) a block does not arrive from the blockchain node (110) for a certain period of time, a BN change message (250) is submitted to another assigned Primary S-node (210a). The Primary S-node (210a) selects the largest h p based on the BN change messages (250) it has received. , and generates and propagates a new BN proposal (260). Other S-nodes (210b) vote for the new BN proposal (260) by exchanging consensus messages (230). When the S-node (210b) collects the nf consensus message (230), it moves on to the next blockchain node.

도 8은 본 발명의 일 실시예에 따른 스토리지 오버헤드를 기존 이더리움 및 블록 공간 분할 기법(ECC)와 대비시켜 도시한다. ECC의 경우 메타데이터를 따로 관리하지 않고, 블록만 자체적으로 분할하여 관리하기 때문에 본 특허보다 이더리움 스토리지 오버헤드가 낮게 계산됨을 확인할 수 있다. 그러나, 블록 데이터를 분할해서 관리하는 ECC 기법의 특성 상 블록 recovery 등 block availability 관점에서 본 발명의 실시예들보다 불리하게 작용할 가능성이 있다. 본 발명의 실시예들에서, block availability는 외부 스토리지의 availability 값에 bound 되는 특성을 가지고 있다.FIG. 8 illustrates the storage overhead according to one embodiment of the present invention in comparison with the existing Ethereum and block space partitioning technique (ECC). In the case of ECC, since metadata is not managed separately and only blocks are partitioned and managed, it can be confirmed that the Ethereum storage overhead is calculated to be lower than that of the present invention. However, due to the characteristics of the ECC technique that partitions and manages block data, it may work more unfavorably than the embodiments of the present invention in terms of block availability such as block recovery. In the embodiments of the present invention, block availability has the characteristic of being bound to the availability value of external storage.

도 9는 도 1 내지 도 8의 과정의 적어도 일부를 수행할 수 있는 일반화된 블록체인 노드, S-node, 또는 외부 스토리지를 구성하는 컴퓨팅 시스템의 예시를 도시하는 개념도이다. FIG. 9 is a conceptual diagram illustrating an example of a computing system that constitutes a generalized blockchain node, S-node, or external storage capable of performing at least a portion of the processes of FIGS. 1 through 8.

도 1 내지 도 8의 실시예에서도 도면 상으로는 생략되었으나 프로세서, 및 메모리가 전자적으로 각 구성 요소와 연결되고, 프로세서에 의하여 각 구성 요소의 동작이 제어되거나 관리될 수 있다. In the embodiments of FIGS. 1 to 8, although omitted in the drawings, a processor and a memory are electronically connected to each component, and the operation of each component can be controlled or managed by the processor.

본 발명의 일 실시예에 따른 방법의 적어도 일부의 과정은 도 9의 컴퓨팅 시스템(1000)에 의하여 실행될 수 있다. At least a portion of the process of the method according to one embodiment of the present invention can be executed by the computing system (1000) of FIG. 9.

도 9를 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1000)은, 프로세서(1100), 메모리(1200), 통신 인터페이스(1300), 저장 장치(1400), 입력 인터페이스(1500), 출력 인터페이스(1600) 및 버스(bus)(1700)를 포함하여 구성될 수 있다.Referring to FIG. 9, a computing system (1000) according to one embodiment of the present invention may be configured to include a processor (1100), a memory (1200), a communication interface (1300), a storage device (1400), an input interface (1500), an output interface (1600), and a bus (1700).

본 발명의 일 실시예에 따른 컴퓨팅 시스템(1000)은, 적어도 하나의 프로세서(processor)(1100) 및 상기 적어도 하나의 프로세서(1100)가 적어도 하나의 단계를 수행하도록 지시하는 명령어들(instructions)을 저장하는 메모리(memory)(1200)를 포함할 수 있다. 본 발명의 일 실시예에 따른 방법의 적어도 일부의 단계는 상기 적어도 하나의 프로세서(1100)가 상기 메모리(1200)로부터 명령어들을 로드하여 실행함으로써 수행될 수 있다. A computing system (1000) according to one embodiment of the present invention may include at least one processor (1100) and a memory (1200) storing instructions that instruct the at least one processor (1100) to perform at least one step. At least some steps of a method according to one embodiment of the present invention may be performed by the at least one processor (1100) loading and executing instructions from the memory (1200).

프로세서(1100)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU), 또는 본 발명의 실시예들에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. The processor (1100) may mean a central processing unit (CPU), a graphics processing unit (GPU), or a dedicated processor on which methods according to embodiments of the present invention are performed.

메모리(1200) 및 저장 장치(1400) 각각은 휘발성 저장 매체 및 비휘발성 저장 매체 중에서 적어도 하나로 구성될 수 있다. 예를 들어, 메모리(1200)는 읽기 전용 메모리(read only memory, ROM) 및 랜덤 액세스 메모리(random access memory, RAM) 중에서 적어도 하나로 구성될 수 있다. Each of the memory (1200) and the storage device (1400) may be configured with at least one of a volatile storage medium and a nonvolatile storage medium. For example, the memory (1200) may be configured with at least one of a read only memory (ROM) and a random access memory (RAM).

또한, 컴퓨팅 시스템(1000)은, 무선 네트워크를 통해 통신을 수행하는 통신 인터페이스(1300)를 포함할 수 있다. Additionally, the computing system (1000) may include a communication interface (1300) that performs communication via a wireless network.

또한, 컴퓨팅 시스템(1000)은, 저장 장치(1400), 입력 인터페이스(1500), 출력 인터페이스(1600) 등을 더 포함할 수 있다.Additionally, the computing system (1000) may further include a storage device (1400), an input interface (1500), an output interface (1600), etc.

또한, 컴퓨팅 시스템(1000)에 포함된 각각의 구성 요소들은 버스(bus)(1700)에 의해 연결되어 서로 통신을 수행할 수 있다.Additionally, each component included in the computing system (1000) may be connected to each other by a bus (1700) and communicate with each other.

본 발명의 컴퓨팅 시스템(1000)의 예를 들면, 통신 가능한 데스크탑 컴퓨터(desktop computer), 랩탑 컴퓨터(laptop computer), 노트북(notebook), 스마트폰(smart phone), 태블릿 PC(tablet PC), 모바일폰(mobile phone), 스마트 워치(smart watch), 스마트 글래스(smart glass), e-book 리더기, PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 디지털 카메라(digital camera), DMB(digital multimedia broadcasting) 재생기, 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), PDA(Personal Digital Assistant) 등일 수 있다.Examples of the computing system (1000) of the present invention may include a desktop computer, a laptop computer, a notebook, a smart phone, a tablet PC, a mobile phone, a smart watch, a smart glass, an e-book reader, a portable multimedia player (PMP), a portable game console, a navigation device, a digital camera, a digital multimedia broadcasting (DMB) player, a digital audio recorder, a digital audio player, a digital video recorder, a digital video player, a PDA (Personal Digital Assistant), etc.

본 발명의 실시예에 따른 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽힐 수 있는 정보가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.The operation of the method according to an embodiment of the present invention can be implemented as a computer-readable program or code on a computer-readable recording medium. The computer-readable recording medium includes all types of recording devices that store information that can be read by a computer system. In addition, the computer-readable recording medium can be distributed over network-connected computer systems so that the computer-readable program or code can be stored and executed in a distributed manner.

또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.Additionally, the computer-readable recording medium may include hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, etc. The program instructions may include not only machine language codes produced by a compiler, but also high-level language codes that can be executed by the computer using an interpreter, etc.

본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시 예에서, 가장 중요한 방법 단계들의 적어도 하나 이상은 이와 같은 장치에 의해 수행될 수 있다.While some aspects of the invention have been described in the context of an apparatus, they may also represent a description of a corresponding method, wherein a block or device corresponds to a method step or a feature of a method step. Similarly, aspects described in the context of a method may also be represented as a feature of a corresponding block or item or a corresponding device. Some or all of the method steps may be performed by (or using) a hardware device, such as, for example, a microprocessor, a programmable computer or an electronic circuit. In some embodiments, at least one or more of the most important method steps may be performed by such a device.

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그래머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그래머블 게이트 어레이(field-programmable gate array)는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서(microprocessor)와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.In embodiments, a programmable logic device (e.g., a field-programmable gate array) may be used to perform some or all of the functions of the methods described herein. In embodiments, a field-programmable gate array may operate in conjunction with a microprocessor to perform one of the methods described herein. In general, the methods are preferably performed by some hardware device.

이상 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the present invention has been described above with reference to preferred embodiments thereof, it will be understood by those skilled in the art that various modifications and changes may be made to the present invention without departing from the spirit and scope of the present invention as set forth in the claims below.

Claims (20)

블록체인 노드로부터 제1 블록체인 블록을 수신한 후, 상기 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하고, 합의가 수행된 상기 제1 블록체인 블록에 대한 합의 메시지를 수집하여 제1 블록체인 블록 메타데이터를 생성하는 복수의 제1 엔티티들을 포함하는 제1 엔티티 집합; 및
상기 제1 엔티티 집합으로부터 합의가 수행된 상기 제1 블록체인 블록 및 상기 제1 블록체인 블록 메타데이터를 수신하고 저장하는 외부 저장 장치로서 기능하는 적어도 하나 이상의 제2 엔티티;
를 포함하고,
상기 제1 엔티티 집합이 상기 블록체인 노드와 상기 외부 저장 장치로서 기능하는 상기 적어도 하나 이상의 제2 엔티티 사이에 위치하며, 상기 적어도 하나 이상의 제2 엔티티는 상기 제1 엔티티 집합을 경유하여 상기 블록체인 노드와 상호작용하고,
상기 제1 엔티티 집합이 상기 블록체인 노드에게 상기 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
A first entity set including a plurality of first entities that receive a first blockchain block from a blockchain node, perform Byzantine fault tolerant (BFT) consensus on block data of the first blockchain block, and collect consensus messages for the first blockchain block on which consensus has been performed to generate first blockchain block metadata; and
At least one second entity functioning as an external storage device that receives and stores the first blockchain block and the first blockchain block metadata on which an agreement has been performed from the first entity set;
Including,
The first entity set is located between the blockchain node and the at least one second entity that functions as the external storage device, and the at least one second entity interacts with the blockchain node via the first entity set,
The above first entity set provides a blockchain storage service (BSS) that transmits agreed block data for the first blockchain block to the blockchain node.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
삭제delete 제1항에 있어서,
상기 제1 엔티티 집합은, 블록 데이터에 대한 합의 및 데이터 검증을 위한 메타 데이터를 저장하는 복수의 S-node들을 상기 복수의 제1 엔티티들로서 포함하고,
상기 제1 엔티티 집합 내에서, 상기 복수의 S-node들 중 하나가 프라이머리 S-node로 선정되고,
상기 제1 엔티티 집합 내에서 상기 복수의 S-node들 간에 블록 합의 메시지가 송수신됨으로써 블록에 대한 BFT 합의가 수행되고,
상기 프라이머리 S-node는 상기 복수의 S-node들 간 BFT 합의가 수행된 블록을 상기 적어도 하나 이상의 제2 엔티티에 전파하고, 상기 복수의 S-node들 간 BFT 합의가 수행된 블록에 대한 합의 메시지를 수집하여 생성된 블록 메타 데이터를 상기 적어도 하나 이상의 제2 엔티티에 전파하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In the first paragraph,
The above first entity set includes a plurality of S-nodes as the plurality of first entities, storing metadata for consensus on block data and data verification,
Within the above first entity set, one of the plurality of S-nodes is selected as the primary S-node,
BFT consensus on a block is performed by transmitting and receiving block consensus messages between the plurality of S-nodes within the first entity set.
The primary S-node propagates a block on which BFT agreement is performed between the plurality of S-nodes to the at least one second entity, and collects consensus messages for the block on which BFT agreement is performed between the plurality of S-nodes and propagates block metadata generated by collecting the consensus messages to the at least one second entity.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제3항에 있어서,
상기 적어도 하나 이상의 제2 엔티티는,
블록 데이터와 메타 데이터를 저장하는 외부 저장소를 포함하고,
상기 적어도 하나 이상의 제2 엔티티는, 상기 제1 엔티티 집합으로부터 블록 데이터와 메타데이터를 수신하여 메타데이터 정보에 기반해 블록 데이터를 검증하고, 블록 데이터 및 메타데이터를 저장하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In the third paragraph,
At least one of the second entities above,
Includes external storage for storing block data and metadata;
The at least one second entity receives block data and metadata from the first entity set, verifies the block data based on metadata information, and stores the block data and metadata.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제3항에 있어서, 상기 복수의 S-node들 각각은
상기 블록체인 노드로부터 수신한 블록을 임시 저장하는 블록 캐쉬(Block cache);
다른 S-node들과 상호 교환되는 합의 메시지를 임시 저장하는 메시지 캐쉬(Message cache);
합의 메시지를 생성하고 다른 S-node들로 전파하는 생성기(Generator);
상기 다른 S-node들로부터 수신된 합의 메시지에 기반하여 블록에 대한 합의 상태를 결정하는 해석기(Analyzer); 및
블록에 대한 합의가 끝난 이후, 생성된 메타데이터를 저장하는 영구 메타데이터 저장소(Persistent metadata store);
를 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In the third paragraph, each of the plurality of S-nodes
Block cache that temporarily stores blocks received from the above blockchain nodes;
Message cache that temporarily stores consensus messages exchanged with other S-nodes;
A generator that generates consensus messages and propagates them to other S-nodes;
An analyzer that determines the consensus status for a block based on consensus messages received from the other S-nodes; and
Persistent metadata store that stores the generated metadata after consensus on the block is reached;
Including,
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제3항에 있어서,
상기 복수의 제1 엔티티 집합 내에서, 상기 복수의 S-node들이 비잔틴 합의 프로토콜, 블록체인 노드 변경 프로토콜(BN change protocol), 및 프라이머리 변경 프로토콜(primary change protocol)을 수행하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In the third paragraph,
Within the above set of multiple first entities, the multiple S-nodes perform a Byzantine agreement protocol, a blockchain node change protocol (BN change protocol), and a primary change protocol.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제6항에 있어서,
상기 비잔틴 합의 프로토콜에 의하여 교환되는 합의 메시지는 블록 높이(h), 블록체인 노드에 의하여 서명된 블록 해시, 블록체인 노드 번호, S-node 식별자(ID), 및 S-node 서명을 포함하고,
상기 비잔틴 합의 프로토콜에 의하여 교환되는 블록 메타 데이터는 블록 높이(h), 이전 높이 블록 해시, S-node에 의하여 서명된 블록 해시, S-node 식별자, 및 블록에 대한 합의 메시지 리스트를 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In Article 6,
The consensus message exchanged by the above Byzantine agreement protocol includes a block height (h), a block hash signed by a blockchain node, a blockchain node number, an S-node identifier (ID), and an S-node signature.
The block metadata exchanged by the above Byzantine agreement protocol includes the block height (h), the previous height block hash, the block hash signed by the S-node, the S-node identifier, and the list of consensus messages for the block.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제6항에 있어서,
상기 블록체인 노드 변경 프로토콜에 의하여 교환되는 블록체인 노드 변경 메시지는 라운드 번호(r), 가장 최신의 준비된(prepared) 블록 높이(hp), 블록체인 노드에 의하여 서명된 가장 최신의 준비된(prepared) 블록 해시, 가장 최신의 준비된 블록 높이에서의 합의 메시지 집합, 블록체인 노드 번호, hp에서의 블록체인 노드 번호, S-node 식별자, 및 S-node 서명을 포함하고,
상기 블록체인 노드 변경 프로토콜에 의하여 교환되는 새로운 블록체인 노드 제안 메시지는 라운드 번호(r), 가장 최신의 준비된(prepared) 블록 높이(hp), 블록체인 노드에 의하여 서명된 가장 최신의 준비된(prepared) 블록 해시, 블록체인 노드 번호, hp에서의 블록체인 노드 번호, 가장 낮은 hp부터 가장 높은 hp까지 블록 리스트, S-node 식별자, 및 S-node 서명을 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In Article 6,
The blockchain node change message exchanged by the above blockchain node change protocol includes a round number (r), the latest prepared block height (h p ), the latest prepared block hash signed by the blockchain node, a set of consensus messages at the latest prepared block height, a blockchain node number, a blockchain node number at h p , an S-node identifier, and an S-node signature.
A new blockchain node proposal message exchanged by the above blockchain node change protocol includes a round number (r), the latest prepared block height (h p ), the latest prepared block hash signed by the blockchain node, the blockchain node number, the blockchain node number in h p , a list of blocks from the lowest h p to the highest h p , an S-node identifier, and an S-node signature.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
제6항에 있어서,
상기 비잔틴 합의 프로토콜은,
프라이머리 S-node 선정 단계;
블록 데이터 검증 및 합의 메시지 교환 단계;
합의 메시지 검증 및 블록 합의 상태(state) 결정 단계; 및
메타 데이터 및 블록 저장 단계;
를 포함하는, 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In Article 6,
The above Byzantine agreement protocol,
Primary S-node selection step;
Block data verification and consensus message exchange phase;
Consensus message verification and block consensus state determination step; and
Metadata and block storage phase;
A byzantine fault tolerant block data storage system utilizing an external storage device, comprising:
제6항에 있어서,
상기 프라이머리 변경 프로토콜은,
일정 시간이 지나도 합의 메시지가 도달하지 않는 것을 탐지하는 단계;
다른 프라이머리 S-node에게 합의 메시지를 전송하는 단계; 및
합의 시간을 두 배로 설정하는 단계;
를 포함하는, 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In Article 6,
The above primary change protocol is,
A step for detecting that a consensus message has not arrived after a certain period of time;
A step of transmitting a consensus message to another primary S-node; and
Step 2: Double the consensus time;
A byzantine fault tolerant block data storage system utilizing an external storage device, comprising:
제6항에 있어서,
상기 블록체인 노드 변경 프로토콜은,
악의적인 블록체인 노드를 탐지하는 단계;
블록체인 노드 변경 메시지를 교환하는 단계;
새로운 블록체인 노드 제안 메시지를 교환하는 단계; 및
블록체인 노드 교체를 위한 합의 메시지를 교환하는 단계
를 포함하는, 외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In Article 6,
The above blockchain node change protocol is:
Steps to detect malicious blockchain nodes;
Steps to exchange blockchain node change messages;
Steps for exchanging new blockchain node proposal messages; and
Steps to exchange consensus messages for replacing blockchain nodes
A byzantine fault tolerant block data storage system utilizing an external storage device, comprising:
제11항에 있어서, 상기 악의적인 블록체인 노드를 탐지하는 단계는,
서로 다른 블록 해시값을 가지는 합의 메시지 쌍을 수신하거나,
상기 프라이머리 S-node가 브로드캐스트한 블록을 기준으로 생성한 해시값이 다르거나, 상기 블록체인 노드로부터 일정 시간이 지나도 블록이 오지 않으면, 블록체인 노드 변경 프로토콜을 시작하는 탐지 과정을 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 시스템.
In the 11th paragraph, the step of detecting the malicious blockchain node is:
Receive a pair of consensus messages with different block hash values, or
Including a detection process for starting a blockchain node change protocol if the hash value generated based on the block broadcasted by the primary S-node is different or if a block does not arrive from the blockchain node after a certain period of time.
A Byzantine fault-tolerant block data storage system utilizing external storage devices.
블록체인 노드와 외부 저장 장치 사이에 위치하며 복수의 제1 엔티티들을 포함하는 제1 엔티티 집합이, 상기 블록체인 노드에게 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는 단계; 및
상기 외부 저장 장치로서 기능하는 적어도 하나 이상의 제2 엔티티에 의하여, 상기 제1 엔티티 집합으로부터 합의가 수행된 상기 제1 블록체인 블록 및 제1 블록체인 블록 메타데이터를 수신하고 저장하는 단계;
를 포함하고,
상기 제1 엔티티 집합이 상기 BSS를 제공하는 단계는,
상기 블록체인 노드와 상기 적어도 하나 이상의 제2 엔티티 간의 상호작용은 상기 제1 엔티티 집합을 경유하여 수행되도록 상기 BSS를 제공하고,
상기 제1 엔티티 집합이 상기 BSS를 제공하는 단계는,
상기 복수의 제1 엔티티 집합 내 복수의 S-node들에 의하여, 상기 블록체인 노드로부터 상기 제1 블록체인 블록을 수신하는 단계;
상기 복수의 S-node들에 의하여, 상기 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하는 단계; 및
상기 복수의 제1 엔티티 집합 내의 프라이머리 S-node에 의하여, 합의가 수행된 상기 제1 블록체인 블록에 대한 합의 메시지를 수집하여 상기 제1 블록체인 블록 메타데이터를 생성하는 단계;
를 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법.
A step of providing a Blockchain Storage Service (BSS) in which a first entity set including a plurality of first entities, which is located between a blockchain node and an external storage device, transmits agreed block data for a first blockchain block to the blockchain node; and
A step of receiving and storing the first blockchain block and the first blockchain block metadata on which an agreement has been performed from the first entity set, by at least one second entity functioning as the external storage device;
Including,
The step of providing the BSS by the first entity set is:
Providing the BSS so that the interaction between the blockchain node and the at least one second entity is performed via the first entity set,
The step of providing the BSS by the first entity set is:
A step of receiving the first blockchain block from the blockchain node by a plurality of S-nodes within the plurality of first entity sets;
A step of performing Byzantine fault tolerant (BFT) consensus on block data of the first blockchain block by the plurality of S-nodes; and
A step of generating first blockchain block metadata by collecting consensus messages for the first blockchain block on which consensus has been performed by the primary S-node within the plurality of first entity sets;
Including,
A method for storing Byzantine fault tolerant block data utilizing external storage devices.
제13항에 있어서,
상기 복수의 S-node들에 의하여 상기 블록체인 노드에게 상기 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는 단계;
를 더 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법.
In Article 13,
A step of providing a blockchain storage service (BSS) that transmits agreed block data for the first blockchain block to the blockchain node by the plurality of S-nodes;
Including more,
A method for storing Byzantine fault tolerant block data utilizing external storage devices.
제13항에 있어서,
상기 복수의 S-node들 중 상기 프라이머리 S-node가 선정되는 단계;
상기 프라이머리 S-node가 상기 복수의 S-node들 간 BFT 합의가 수행된 블록을 상기 적어도 하나 이상의 제2 엔티티에 전파하는 단계; 및
상기 프라이머리 S-node가 상기 제1 블록체인 블록 메타 데이터를 상기 적어도 하나 이상의 제2 엔티티에 전파하는 단계;
를 더 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법.
In Article 13,
A step in which the primary S-node is selected from among the plurality of S-nodes;
The step of the primary S-node transmitting the block on which the BFT agreement between the plurality of S-nodes is performed to at least one second entity; and
A step in which the primary S-node propagates the first blockchain block metadata to at least one second entity;
Including more,
A method for storing Byzantine fault tolerant block data utilizing external storage devices.
제13항에 있어서,
상기 복수의 S-node들에 의하여, 상기 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의를 수행하는 단계에서는,
상기 복수의 S-node들이 BFT 합의에 기반하여 비잔틴 합의 프로토콜, 블록체인 노드 변경 프로토콜(BN change protocol), 및 프라이머리 변경 프로토콜(primary change protocol)을 수행하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법.
In Article 13,
In the step of performing Byzantine fault tolerant (BFT) consensus on the block data of the first blockchain block by the above plurality of S-nodes,
The above multiple S-nodes perform the Byzantine agreement protocol, the blockchain node change protocol (BN change protocol), and the primary change protocol based on the BFT consensus.
A method for storing Byzantine fault tolerant block data utilizing external storage devices.
제13항에 있어서,
상기 적어도 하나 이상의 제2 엔티티에 의하여 상기 제1 블록체인 블록 및 상기 제1 블록체인 블록 메타데이터를 수신하고 저장하는 단계는,
상기 적어도 하나 이상의 제2 엔티티에 의하여 상기 제1 블록체인 블록 메타데이터에 기반하여 상기 제1 블록체인 블록을 검증하는 단계; 및
상기 검증된 제1 블록체인 블록과 상기 제1 블록체인 블록 메타데이터를 상기 적어도 하나 이상의 제2 엔티티에 저장하는 단계;
를 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 방법.
In Article 13,
The step of receiving and storing the first blockchain block and the first blockchain block metadata by at least one second entity,
A step of verifying the first blockchain block based on the first blockchain block metadata by at least one second entity; and
A step of storing the verified first blockchain block and the first blockchain block metadata in at least one second entity;
Including,
A method for storing Byzantine fault tolerant block data utilizing external storage devices.
블록체인 노드와 외부 저장소 사이에 위치하며, 상기 블록체인 노드로부터 제1 블록체인 블록을 수신하고,
상기 제1 블록체인 블록의 블록 데이터에 대한 비잔틴 장애 감내 (BFT) 합의가 수행되도록 복수의 S-node들과 통신하고,
프라이머리 S-node이면 상기 복수의 S-node들에 의하여 합의가 수행된 상기 제1 블록체인 블록에 대한 합의 메시지를 수집하여 제1 블록체인 블록 메타데이터를 생성하고,
상기 복수의 S-node들에 의하여 합의가 수행된 상기 제1 블록체인 블록 및 상기 제1 블록체인 블록 메타데이터를 상기 외부 저장소로 전파하고,
프라이머리 S-node가 아니면 상기 제1 블록체인 블록에 대한 합의 메시지를 프라이머리 S-node로 전송함으로써,
상기 블록체인 노드와 상기 외부 저장소 사이에 위치하며 상기 블록체인 노드와 상기 외부 저장소 사이의 상호작용이 상기 프라이머리 S-node 또는 상기 복수의 S-node들을 경유하여 수행되도록, 집합적으로 상기 블록체인 노드에 상기 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치.
Located between the blockchain node and the external storage, and receives the first blockchain block from the blockchain node,
Communicate with multiple S-nodes to perform Byzantine fault tolerant (BFT) consensus on block data of the first blockchain block;
If it is a primary S-node, it collects consensus messages for the first blockchain block on which consensus has been performed by the plurality of S-nodes and generates first blockchain block metadata.
The first blockchain block and the first blockchain block metadata, on which agreement has been made by the plurality of S-nodes, are transmitted to the external storage,
By sending a consensus message for the first blockchain block to the primary S-node, if it is not the primary S-node,
A blockchain storage service (BSS) is provided between the blockchain node and the external storage, and collectively transmits agreed block data for the first blockchain block to the blockchain node so that interaction between the blockchain node and the external storage is performed via the primary S-node or the plurality of S-nodes.
A Byzantine fault tolerant block data storage device utilizing external storage devices.
제18항에 있어서,
상기 블록체인 노드에게 상기 제1 블록체인 블록에 대한 합의된 블록 데이터를 전달하는 블록체인 스토리지 서비스(BSS, Blockchain Storage Service)를 제공하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치.
In Article 18,
Providing a blockchain storage service (BSS) that transmits agreed block data for the first blockchain block to the blockchain node.
A Byzantine fault tolerant block data storage device utilizing external storage devices.
제18항에 있어서,
상기 블록체인 노드로부터 수신한 블록을 임시 저장하는 블록 캐쉬(Block cache);
다른 S-node들과 상호 교환되는 합의 메시지를 임시 저장하는 메시지 캐쉬(Message cache);
합의 메시지를 생성하고 다른 S-node들로 전파하는 생성기(Generator);
상기 다른 S-node들로부터 수신된 합의 메시지에 기반하여 블록에 대한 합의 상태를 결정하는 해석기(Analyzer); 및
블록에 대한 합의가 끝난 이후, 생성된 메타데이터를 저장하는 영구 메타데이터 저장소(Persistent metadata store);
를 포함하는,
외부 저장 장치를 활용하는 비잔틴 장애 감내 블록 데이터 저장 장치.
In Article 18,
Block cache that temporarily stores blocks received from the above blockchain nodes;
Message cache that temporarily stores consensus messages exchanged with other S-nodes;
A generator that generates consensus messages and propagates them to other S-nodes;
An analyzer that determines the consensus status for a block based on consensus messages received from the other S-nodes; and
Persistent metadata store that stores the generated metadata after consensus on the block is reached;
Including,
A Byzantine fault tolerant block data storage device utilizing external storage devices.
KR1020230084239A 2022-06-29 2023-06-29 System, apparatus, and method for storing byzantine fault tolerant block data utilizing external storage Active KR102835086B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220079364 2022-06-29
KR1020220079364 2022-06-29

Publications (2)

Publication Number Publication Date
KR20240002729A KR20240002729A (en) 2024-01-05
KR102835086B1 true KR102835086B1 (en) 2025-07-17

Family

ID=89541318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230084239A Active KR102835086B1 (en) 2022-06-29 2023-06-29 System, apparatus, and method for storing byzantine fault tolerant block data utilizing external storage

Country Status (1)

Country Link
KR (1) KR102835086B1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102382127B1 (en) * 2017-04-05 2022-04-04 삼성에스디에스 주식회사 System for processing data based on blockchain and Operating method thereof
KR102258722B1 (en) * 2018-11-15 2021-05-31 박성수 Dynamic Blockchain System and Operating Method thereof
KR102285882B1 (en) * 2019-11-19 2021-08-05 한양대학교 산학협력단 Blockchain consensus method based on variable quorum, blockcahin node device and program using the same
KR102485970B1 (en) 2020-09-14 2023-01-09 포항공과대학교 산학협력단 Blockchain system tolerating byzantine faults and operating method for blockchain node in system

Also Published As

Publication number Publication date
KR20240002729A (en) 2024-01-05

Similar Documents

Publication Publication Date Title
Qi et al. A reliable storage partition for permissioned blockchain
AU2019203862B2 (en) System and method for ending view change protocol
EP4332870A1 (en) Transaction data processing method and apparatus, computer device and storage medium
CN110730204A (en) Method for deleting nodes in block chain network and block chain system
CN113064764B (en) Method and apparatus for executing blocks in a blockchain system
JP5801482B2 (en) Method and system for storing and retrieving data from key-value storage
WO2019199768A1 (en) Fork-tolerant consensus protocol
CN113568981B (en) Transaction data processing method, device, equipment and medium
WO2023040364A1 (en) Consensus method and apparatus, and blockchain system
EP4198861A1 (en) Information processing method and apparatus for blockchain network, and device and storage medium
CN105069152B (en) data processing method and device
CN112118107A (en) An Adaptive Execution Method for Realizing Data Credibility
CN113610527A (en) Alliance chain transaction method, device, system, terminal device and storage medium
CN113760519B (en) Distributed transaction processing method, device, system and electronic equipment
CN116977067A (en) Block chain-based data processing method, device, equipment and readable storage medium
CN113157494B (en) Method and device for backing up data in block chain system
KR102835086B1 (en) System, apparatus, and method for storing byzantine fault tolerant block data utilizing external storage
EP3349416B1 (en) Relationship chain processing method and system, and storage medium
Dobre et al. Proofs of writing for robust storage
Liang et al. Online recovery in cluster databases
CN116701452A (en) Data processing method, related device, storage medium and program product
Kim et al. A distributed and cooperative NameNode cluster for a highly-available Hadoop distributed file system
Spenger Using Blockchain for Tamper-Proof Broadcast Protocols
Al-Mamun et al. BAASH: enabling blockchain-as-a-service on high-performance computing systems
CN118760720B (en) Method, device and server for synchronizing business data based on remote multi-active

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601