KR20240055447A - Blockchain network system based on shared log and method of processing user transaction of blockchain network - Google Patents

Blockchain network system based on shared log and method of processing user transaction of blockchain network Download PDF

Info

Publication number
KR20240055447A
KR20240055447A KR1020220135739A KR20220135739A KR20240055447A KR 20240055447 A KR20240055447 A KR 20240055447A KR 1020220135739 A KR1020220135739 A KR 1020220135739A KR 20220135739 A KR20220135739 A KR 20220135739A KR 20240055447 A KR20240055447 A KR 20240055447A
Authority
KR
South Korea
Prior art keywords
shared log
smart contract
log
shared
user
Prior art date
Application number
KR1020220135739A
Other languages
Korean (ko)
Inventor
박찬익
황제영
Original Assignee
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포항공과대학교 산학협력단 filed Critical 포항공과대학교 산학협력단
Priority to KR1020220135739A priority Critical patent/KR20240055447A/en
Publication of KR20240055447A publication Critical patent/KR20240055447A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

본 발명의 목적을 달성하기 위한 일 실시예에 따른 블록체인 네트워크 시스템은, 사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자로부터 사용자 정보에 기반하여 사용자 트랜잭션을 생성하는 클라이언트 측 소프트웨어 인터페이스를 경유하여 전송되는 사용자 트랜잭션을 수신하고, 사용자 트랜잭션을 실행하는 복수 개의 스마트 컨트랙트 실행 노드들; 및 복수 개의 스마트 컨트랙트 실행 노드들에 의하여 실행되는 사용자 트랜잭션의 실행 결과로 생성된 커밋 레코드를 수신하고, 커밋 레코드를 공유 로그로서 저장하는 적어도 하나 이상의 공유 로그 스토리지를 포함한다. A blockchain network system according to an embodiment to achieve the purpose of the present invention is a service user that provides information necessary for user transaction creation, which is transmitted via a client-side software interface that creates a user transaction based on user information. A plurality of smart contract execution nodes that receive user transactions and execute user transactions; and at least one shared log storage that receives a commit record generated as a result of the execution of a user transaction executed by a plurality of smart contract execution nodes and stores the commit record as a shared log.

Description

공유 로그 기반 블록체인 네트워크 시스템 및 블록체인 네트워크의 사용자 트랜잭션 처리 방법 {BLOCKCHAIN NETWORK SYSTEM BASED ON SHARED LOG AND METHOD OF PROCESSING USER TRANSACTION OF BLOCKCHAIN NETWORK}Shared log-based blockchain network system and user transaction processing method of blockchain network {BLOCKCHAIN NETWORK SYSTEM BASED ON SHARED LOG AND METHOD OF PROCESSING USER TRANSACTION OF BLOCKCHAIN NETWORK}

본 발명은 블록체인 서비스를 제공하는 블록체인 네트워크에서 사용자 트랜잭션을 처리하는 방법에 관한 것으로, 사용자 트랜잭션을 병렬적으로 처리할 수 있는 공유 로그 환경 기반의 블록체인 네트워크 시스템 및 그 블록체인 네트워크의 사용자 트랜잭션 처리 기술에 관한 것이다. The present invention relates to a method of processing user transactions in a blockchain network that provides blockchain services, a blockchain network system based on a shared log environment that can process user transactions in parallel, and user transactions in the blockchain network. It's about processing technology.

블록체인(Blockchain)은 P2P 네트워크를 기반으로 탈중앙화, 무결성, 투명성을 보장하는 분산 원장 시스템이다. 네트워크에 참여하는 사용자는 블록이라고 하는 동일한 데이터 구조에 모든 거래 내역을 포함하여 저장하고 합의 프로토콜에 따라 새로운 블록을 생성한다. 즉, 블록체인은 트랜잭션(Transaction)들의 집합으로 구성된 블록이 이전 블록의 해시(hash)값을 담아 모든 블록을 체인 형식으로 연결하는 데이터 구조로서, 블록체인 네트워크에 참여하는 모든 노드(node)가 상기 데이터 구조를 동일하게 유지한다. 새로운 블록이 블록체인에 반영되기 위해서는 노드 간 합의가 필요하며, 각 블록체인 네트워크에 사용되는 합의 알고리즘(Consensus algorithm)은 상이하다. 블록체인은 특정 노드의 블록 데이터가 임의로 조작되더라도 이전 블록의 해시값을 가지고 있으므로 유효성 검증이 가능하며, 조작된 데이터는 블록체인에 반영되지 않는다. 이처럼 블록체인은 데이터를 임의로 위변조하는 것이 불가능하여 데이터의 무결성 및 투명성을 보장할 수 있다. Blockchain is a distributed ledger system that guarantees decentralization, integrity, and transparency based on a P2P network. Users participating in the network store all transaction details in the same data structure called a block and create new blocks according to the consensus protocol. In other words, blockchain is a data structure in which a block composed of a set of transactions contains the hash value of the previous block and connects all blocks in a chain format, and all nodes participating in the blockchain network are Keep the data structure the same. In order for a new block to be reflected in the blockchain, agreement between nodes is required, and the consensus algorithm used in each blockchain network is different. Even if the block data of a specific node is arbitrarily manipulated, blockchain can be validated because it has the hash value of the previous block, and the manipulated data is not reflected in the blockchain. In this way, blockchain makes it impossible to arbitrarily forge or falsify data, thereby ensuring data integrity and transparency.

블록체인은 비허가형 블록체인(Permissionless blockchain)과 허가형 블록체인(Permissioned blockchain)으로 구분된다. 비허가형 블록체인은 사용자 및 노드가 아무런 제약 없이 블록체인 네트워크에 참여할 수 있는 블록체인이다. 대표적인 비허가형 블록체인으로는 비트코인(Bitcoin) 및 이더리움(Ethereum)이 있다. 허가형 블록체인 혹은 컨소시엄 블록체인은 허가된 사용자 및 노드들만 블록체인 네트워크에 참여할 수 있는, 비즈니스 환경에서 활용하기에 적합한 블록체인이다. 대표적인 허가형 블록체인으로는 하이퍼레저 패브릭(Hyperledger Fabric)이 있다. 하이퍼레저 패브릭은 Execute-Order-Validate (EOV) 실행 모델을 따르는 블록체인으로, 기존 Order-Execute(O-X) 실행 모델을 따르던 블록체인 시스템의 단점을 보완하고자 도입되었다. Blockchain is divided into permissionless blockchain and permissioned blockchain. A permissionless blockchain is a blockchain that allows users and nodes to participate in the blockchain network without any restrictions. Representative permissionless blockchains include Bitcoin and Ethereum. Permissioned blockchain or consortium blockchain is a blockchain suitable for use in a business environment where only authorized users and nodes can participate in the blockchain network. A representative permissioned blockchain is Hyperledger Fabric. Hyperledger Fabric is a blockchain that follows the Execute-Order-Validate (EOV) execution model, and was introduced to complement the shortcomings of the blockchain system that followed the existing Order-Execute (O-X) execution model.

스마트 컨트랙트(smart contract)란 블록체인을 기반으로 공증, 부동산 계약 등 다양한 형태의 계약을 체결하고 이행하는 분산 응용 프로그램을 의미한다. 스마트 컨트랙트는 노드들의 합의로 실행되는 프로그램으로, 이는 노드들이 동일한 상태 하에 정해진 동작을 수행하도록 하여 제 3의 신뢰기관 없이도 거래가 정상적으로 이행되도록 한다. 스마트 컨트랙트를 통해 비즈니스 로직을 구성하여 분산 애플리케이션(distributed application: DApp)을 개발 및 운영할 수 있다.Smart contract refers to a distributed application that concludes and implements various types of contracts, such as notarization and real estate contracts, based on blockchain. A smart contract is a program that is executed through the consensus of nodes, which allows nodes to perform specified operations under the same conditions, allowing transactions to be carried out normally without a third party trust agency. You can develop and operate a distributed application (DApp) by configuring business logic through smart contracts.

상기 선행기술에 의하더라도 블록체인 기반 분산형 애플리케이션이 사용자 요구 트랜잭션을 처리하기 위해서는 복잡한 분산 합의 과정을 거쳐 블록이 원장에 추가되어야 하므로 트랜잭션 처리 지연 시간이 길어지는 문제점이 여전하다.Even with the above prior art, in order for blockchain-based decentralized applications to process user-requested transactions, blocks must be added to the ledger through a complex distributed consensus process, so there is still the problem of long transaction processing delays.

또한 블록체인 시스템은 각 노드가 블록을 수신하고 독립적으로 관리되는 구조로, 공간 오버헤드가 노드 수에 비례적으로 증가하며, 또한 월드 스테이트(World state) 업데이트에 대한 오버헤드가 상당한 문제점이 있다.Additionally, the blockchain system has a structure in which each node receives blocks and is managed independently, so space overhead increases proportionally to the number of nodes, and there is also a significant problem with the overhead for world state updates.

블록체인 기반 분산형 애플리케이션(DApp)의 성능 확장성 요구를 만족하기 위해서 다양한 노력이 시도되고 있다. 특히, 컨소시엄 블록체인 또는 허가형 블록체인 시스템은 기존 비허가형 블록체인 플랫폼의 성능 한계점을 보완하기 위해 도입되었지만, 위에서 설명한 이유로 여전히 실제 응용 프로그램에 적용하기 어려운 성능 제약점이 있다.Various efforts are being attempted to meet the performance scalability requirements of blockchain-based decentralized applications (DApps). In particular, consortium blockchain or permissioned blockchain systems were introduced to complement the performance limitations of existing permissionless blockchain platforms, but there are still performance limitations that make it difficult to apply them to actual applications for the reasons explained above.

상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 분산 환경에서 응용 프로그램 일관성을 유지하는 서비스인 공유 로그를 활용함으로써, 복수 개의 노드에서 스마트 컨트랙트를 병렬적으로 실행하는 새로운 블록체인 네트워크 시스템 및 그 블록체인 네트워크의 사용자 트랜잭션 처리 방법을 제안하는 것이다.The purpose of the present invention to solve the above problems is to develop a new blockchain network system that executes smart contracts in parallel on multiple nodes by utilizing a shared log, a service that maintains application consistency in a distributed environment. It proposes a method for processing user transactions in a blockchain network.

또한 본 발명의 목적은 새로운 블록체인 네트워크 시스템을 통해 성능 확장성을 노드 개수 확장을 통해 지원하며, 공유 로그 서비스에 블록체인 정보를 기록함으로써 저장 공간 오버헤드를 감소시키고, 동시에 상태정보 유지를 효과적으로 지원하는 것이다.In addition, the purpose of the present invention is to support performance scalability through a new blockchain network system by expanding the number of nodes, reduce storage space overhead by recording blockchain information in a shared log service, and effectively support state information maintenance at the same time. It is done.

이때 공유 로그는 기본적으로 append-only 저장 구조를 채택함으로써 복수 개 노드들 간 상태정보 합의를 용이하게 지원할 수 있다.At this time, the shared log can easily support status information agreement between multiple nodes by basically adopting an append-only storage structure.

본 발명의 목적을 달성하기 위한 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템은, 사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자로부터 사용자 정보에 기반하여 사용자 트랜잭션을 생성하는 클라이언트 측 소프트웨어 인터페이스를 경유하여 전송되는 사용자 트랜잭션을 수신하고, 사용자 트랜잭션을 실행하는 복수 개의 스마트 컨트랙트 실행 노드들; 및 복수 개의 스마트 컨트랙트 실행 노드들에 의하여 실행되는 사용자 트랜잭션의 실행(endorsement) 결과로 생성된 커밋 레코드를 수신하고, 커밋 레코드를 공유 로그로서 저장하는 적어도 하나 이상의 공유 로그 스토리지를 포함한다. A shared log-based blockchain network system according to an embodiment to achieve the purpose of the present invention is provided by a service user who provides information necessary for user transaction creation through a client-side software interface that creates a user transaction based on user information. A plurality of smart contract execution nodes that receive user transactions transmitted and execute user transactions; and at least one shared log storage that receives a commit record generated as a result of the execution (endorsement) of a user transaction executed by a plurality of smart contract execution nodes and stores the commit record as a shared log.

복수개의 스마트 컨트랙트 실행 노드들 각각은 복수개의 스마트 컨트랙트 실행 노드들 각각에 할당되는 사용자 트랜잭션을 병렬적으로 처리할 수 있다. Each of the plurality of smart contract execution nodes can process user transactions assigned to each of the plurality of smart contract execution nodes in parallel.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템은, 복수개의 스마트 컨트랙트 실행 노드들로부터 커밋 레코드를 수신하고, 커밋 레코드의 유효성을 검증하고, 커밋 레코드가 유효하다고 판단되는 경우 공유 로그 스토리지 주소 토큰을 생성하여 복수개의 스마트 컨트랙트 실행 노드들로 전송하는 시퀀서 노드를 더 포함할 수 있다. The shared log-based blockchain network system according to an embodiment of the present invention receives commit records from a plurality of smart contract execution nodes, verifies the validity of the commit records, and provides shared log storage if the commit records are determined to be valid. It may further include a sequencer node that generates an address token and transmits it to a plurality of smart contract execution nodes.

시퀀서 노드는 복수개의 스마트 컨트랙트 실행 노드들에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사를 실행할 수 있고, 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 공유 로그 스토리지 주소 토큰을 생성함으로써 복수개의 스마트 컨트랙트 실행 노드들 간의 사용자 트랜잭션 실행 순서에 대한 합의를 지원할 수 있다.The sequencer node can perform validation checks between user transactions executed in parallel by a plurality of smart contract execution nodes, and generates a shared log storage address token containing a writable address to at least one shared log storage, thereby generating a plurality of shared log storage address tokens. It can support agreement on the order of user transaction execution between smart contract execution nodes.

시퀀서 노드는 커밋 레코드의 유효성을 검증하기 위해 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행할 수 있다. To verify the validity of a commit record, the sequencer node compares the key-version pair for each object against the read set in the commit record and the version information of the objects included in the read set. Multi-version conflict check (MVCC) check) can be performed.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템은, 적어도 하나 이상의 공유 로그 스토리지에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스를 통하여 읽어들이고, 로그 데이터를 이용하여 블록을 생성하는 블록 생성 노드를 더 포함할 수 있다. The shared log-based blockchain network system according to an embodiment of the present invention reads log data including user transaction commit records recorded in at least one shared log storage through the shared log interface, and uses the log data to block It may further include a block generation node that generates.

블록 생성 노드는 블록을 생성함에 있어 기존 블록체인들과 호환되는 새로운 블록을 생성할 수 있고, 블록을 전파할 수 있다. When creating blocks, block generation nodes can create new blocks that are compatible with existing blockchains and can propagate blocks.

블록 생성 노드는 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 블록을 생성할 수 있다. The block generation node can generate blocks using the order already agreed upon during the sequential recording of user transactions related to log data and the execution of smart contracts.

복수개의 스마트 컨트랙트 실행 노드들은 공유 로그 인터페이스를 포함할 수 있다. A plurality of smart contract execution nodes may include a shared log interface.

복수개의 스마트 컨트랙트 실행 노드들에 의하여 생성되는 커밋 레코드를 포함하는 로그 데이터가 공유 로그 인터페이스를 경유하여 적어도 하나 이상의 공유 로그 스토리지로 전송될 수 있다. Log data including commit records generated by a plurality of smart contract execution nodes may be transmitted to at least one shared log storage via a shared log interface.

커밋 레코드를 포함하는 로그 데이터가 적어도 하나 이상의 공유 로그 스토리지에 저장될 수 있다. Log data including commit records may be stored in at least one shared log storage.

복수개의 스마트 컨트랙트 실행 노드들은 사용자 트랜잭션을 실행할 때 커밋 레코드를 생성하기 위하여 필요한 최신 상태정보를 획득하기 위하여 공유 로그 인터페이스를 경유하여 적어도 하나 이상의 공유 로그 스토리지로부터 최신 로그 데이터를 읽어들일 수 있다. A plurality of smart contract execution nodes can read the latest log data from at least one shared log storage via the shared log interface to obtain the latest status information necessary to create a commit record when executing a user transaction.

적어도 하나 이상의 공유 로그 스토리지는 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장할 수 있다. 이때 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함할 수 있다. At least one shared log storage can store log data including commit records as multiple attributes. At this time, the plurality of properties may include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution results.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법은, 사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자로부터 사용자 정보에 기반하여 생성된 사용자 트랜잭션을 클라이언트 측 소프트웨어 인터페이스를 경유하여 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계; 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부가 사용자 트랜잭션을 실행하는 단계; 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부가 사용자 트랜잭션이 실행된 결과로 커밋 레코드를 생성하는 단계; 및 적어도 하나 이상의 공유 로그 스토리지가 커밋 레코드를 공유 로그로서 저장하는 단계를 포함한다. A user transaction processing method in a shared log-based blockchain network according to an embodiment of the present invention involves receiving a user transaction created based on user information from a service user providing the information necessary for user transaction creation through a client-side software interface. Transmitting to at least some of a plurality of smart contract execution nodes; At least some of the plurality of smart contract execution nodes execute a user transaction; At least some of the plurality of smart contract execution nodes generate a commit record as a result of executing a user transaction; and at least one shared log storage storing the commit record as a shared log.

사용자 트랜잭션을 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계는, 클라이언트 측 소프트웨어 인터페이스가 복수개의 사용자 트랜잭션을 복수개의 스마트 컨트랙트 실행 노드들에 할당하는 단계를 포함할 수 있다. Transmitting the user transaction to at least some of the plurality of smart contract execution nodes may include the client-side software interface assigning the plurality of user transactions to the plurality of smart contract execution nodes.

사용자 트랜잭션을 실행하는 단계는, 복수개의 스마트 컨트랙트 실행 노드들 각각이 복수개의 스마트 컨트랙트 실행 노드들 각각에 할당되는 복수개의 사용자 트랜잭션을 병렬적으로 처리할 수 있다. In the step of executing a user transaction, each of the plurality of smart contract execution nodes may process a plurality of user transactions assigned to each of the plurality of smart contract execution nodes in parallel.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법은, 커밋 레코드를 생성하는 단계의 이후 및 커밋 레코드를 공유 로그로서 저장하는 단계의 이전에, 시퀀서 노드가 복수개의 스마트 컨트랙트 실행 노드 중 적어도 일부로부터 커밋 레코드를 수신하는 단계; 시퀀서 노드가 커밋 레코드의 유효성을 검증하는 단계; 커밋 레코드가 유효하다고 판단되는 경우 시퀀서 노드가 공유 로그 스토리지 주소 토큰을 생성하는 단계; 및 시퀀서 노드가 공유 로그 스토리지 주소 토큰을 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계를 더 포함할 수 있다. In the user transaction processing method of a shared log-based blockchain network according to an embodiment of the present invention, after the step of creating a commit record and before the step of storing the commit record as a shared log, the sequencer node executes a plurality of smart contracts. Receiving commit records from at least some of the execution nodes; The sequencer node validates the commit record; If the commit record is determined to be valid, the sequencer node generates a shared log storage address token; and the sequencer node transmitting the shared log storage address token to at least some of the plurality of smart contract execution nodes.

시퀀서 노드가 커밋 레코드의 유효성을 검증하는 단계에서, 복수개의 스마트 컨트랙트 실행 노드들에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사가 실행될 수 있다. At the stage where the sequencer node verifies the validity of the commit record, validation can be performed between user transactions executed in parallel by a plurality of smart contract execution nodes.

공유 로그 스토리지 주소 토큰을 생성하는 단계에서, 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 공유 로그 주소 토큰이 생성됨으로써 복수개의 스마트 컨트랙트 실행 노드들 간의 사용자 트랜잭션 실행 순서에 대한 합의가 지원될 수 있다. In the step of generating a shared log storage address token, a shared log address token containing a writable address in at least one shared log storage is generated, so that consensus on the order of user transaction execution between a plurality of smart contract execution nodes can be supported. there is.

시퀀서 노드가 커밋 레코드의 유효성을 검증하는 단계에서, 시퀀서 노드는 커밋 레코드의 유효성을 검증하기 위해 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행할 수 있다. In the step where the sequencer node verifies the validity of the commit record, the sequencer node collects the key-version pair for each object and the version information of the objects included in the read set for the read set in the commit record to verify the validity of the commit record. You can perform a multi-version conflict check (MVCC) to compare.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법은, 블록 생성 노드가 적어도 하나 이상의 공유 로그 스토리지에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스를 통하여 읽어들이는 단계; 블록 생성 노드가 로그 데이터를 이용하여 기존 블록체인들과 호환되는 새로운 블록을 생성하는 단계; 및 블록을 전파하는 단계를 더 포함할 수 있다. A user transaction processing method in a shared log-based blockchain network according to an embodiment of the present invention involves a block generation node reading log data including user transaction commit records recorded in at least one shared log storage through a shared log interface. step of putting in; A block generation node uses log data to create a new block compatible with existing blockchains; And it may further include propagating the block.

블록 생성 노드가 새로운 블록을 생성하는 단계에서, 블록 생성 노드는 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 블록을 생성할 수 있다. At the stage where the block generation node creates a new block, the block generation node can generate blocks using the order already agreed upon during the sequential recording of user transactions related to log data and the execution of smart contracts.

적어도 하나 이상의 공유 로그 스토리지가 커밋 레코드를 공유 로그로서 저장하는 단계에서, 적어도 하나 이상의 공유 로그 스토리지는 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장할 수 있다. 이때 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함할 수 있다. In the step where at least one shared log storage stores a commit record as a shared log, at least one shared log storage may store log data including the commit record as a plurality of attributes. At this time, the plurality of properties may include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution results.

본 발명의 실시예에 따르면, 공유 로그를 블록체인 시스템에 도입한 환경에서 대용량 사용자 트랜잭션을 처리할 때 사용자 트랜잭션을 복수 개 노드로 분산하여 병렬적으로 스마트 컨트랙트를 실행할 수 있도록 블록체인 네트워크 시스템을 구성함으로써, 블록체인 성능 확장성이 지원될 수 있다. According to an embodiment of the present invention, when processing large amounts of user transactions in an environment where shared logs are introduced into the blockchain system, the blockchain network system is configured to distribute user transactions to a plurality of nodes and execute smart contracts in parallel. By doing so, blockchain performance scalability can be supported.

또한, 본 발명의 실시예에 따르면, 기존 블록체인 시스템과 달리 사용자 트랜잭션이 공유 로그로써 기록되면 처리가 완료되었음을 의미하므로 기존 블록체인 시스템과 비교하여 더 빠른 처리 결정이 지원될 수 있다. Additionally, according to an embodiment of the present invention, unlike existing blockchain systems, when a user transaction is recorded as a shared log, it means that processing has been completed, so faster processing decisions can be supported compared to existing blockchain systems.

도 1은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템을 도시하는 개념도이다.
도 2는 도 1의 스마트 컨트랙트 실행부 노드의 구조를 상세하게 도시하는 개념도이다.
도 3은 도 1의 블록 생성기 노드의 구조를 상세하게 도시하는 개념도이다.
도 4는 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템에서 이용되는 커밋 레코드 속성 구조의 일 예를 도시하는 개념도이다.
도 5는 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법의 개요를 도시하는 동작 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법과 관련되는 공유 로그 작성의 순서 결정 및 로그 기록에 관련된 과정을 도시하는 동작 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템의 스마트 컨트랙트 실행부 노드를 중심으로 수행되는 사용자 트랜잭션 처리 방법의 과정의 일부를 도시하는 개념도이다.
도 8은 블록 생성기 노드를 중심으로 수행되는 사용자 트랜잭션 처리 방법의 과정의 일부를 도시하는 개념도이다.
도 9는 본 발명의 일 실시예에 따른 일반화된 블록체인 네트워크 내의 노드 또는 컴퓨팅 시스템을 도시하는 블록도이다.
Figure 1 is a conceptual diagram illustrating a shared log-based blockchain network system according to an embodiment of the present invention.
FIG. 2 is a conceptual diagram illustrating in detail the structure of the smart contract execution node of FIG. 1.
FIG. 3 is a conceptual diagram illustrating in detail the structure of the block generator node of FIG. 1.
Figure 4 is a conceptual diagram illustrating an example of a commit record attribute structure used in a shared log-based blockchain network system according to an embodiment of the present invention.
Figure 5 is an operational flowchart illustrating an outline of a user transaction processing method in a shared log-based blockchain network according to an embodiment of the present invention.
FIG. 6 is an operation flowchart illustrating a process related to determining the order of creating a shared log and recording a user transaction in a shared log-based blockchain network according to an embodiment of the present invention.
FIG. 7 is a conceptual diagram illustrating part of a process of a user transaction processing method performed around a smart contract execution node of a shared log-based blockchain network system according to an embodiment of the present invention.
FIG. 8 is a conceptual diagram illustrating part of a process of a user transaction processing method performed around a block generator node.
Figure 9 is a block diagram illustrating a node or computing system in a generalized blockchain network according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하여 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. Since the present invention can make various changes and have various embodiments, specific embodiments will be described in detail by illustrating them in the drawings. However, this is not intended to limit the present invention to specific embodiments, and should be understood to include all changes, equivalents, and substitutes included in the spirit and technical scope of the present invention. While describing each drawing, similar reference numerals are used for similar components.

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

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. When a component is said to be "connected" or "connected" to another component, it is understood that it may be directly connected to or connected to the other component, but that other components may exist in between. It should be. On the other hand, when it is mentioned 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 terms used in this application are only used to describe specific embodiments and are not intended to limit the invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as “comprise” or “have” are intended to designate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are not intended to indicate the presence of one or more other features. It should be understood that this does not exclude in advance the possibility of the existence or addition of elements, 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 generally understood by a person of ordinary skill in the technical field to which the present invention pertains. Terms defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and unless explicitly defined in the present application, should not be interpreted in an ideal or excessively formal sense. No.

종래 기술로서 본 발명의 출원일 전에 개시된 사항은 본 발명의 목적에 부합하는 범위 내에서 본 발명의 구성의 일부 또는 전부로서 포함될 수 있다. 당업자라면 종래 기술 문헌들의 내용으로부터 본 발명의 목적 및 구성과의 연관성을 자명하게 유추할 수 있을 것이므로 본 발명의 취지를 흐릴 수 있는 지나치게 자세한 설명은 생략한다. Matters disclosed before the filing date of the present invention as prior art may be included as part or all of the structure of the present invention within the scope that meets the purpose of the present invention. Those skilled in the art will be able to clearly infer the connection between the purpose and configuration of the present invention from the contents of prior art documents, and therefore excessively detailed descriptions that may obscure the purpose of the present invention will be omitted.

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

도 1은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템을 도시하는 개념도이다. Figure 1 is a conceptual diagram illustrating a shared log-based blockchain network system according to an embodiment of the present invention.

도 1에 도시된 바와 같이, 전체 시스템은 서비스 사용자(100), 및 공유 로그 기반 블록체인 네트워크 시스템(300)을 포함한다. As shown in Figure 1, the entire system includes a service user 100 and a shared log-based blockchain network system 300.

서비스 사용자(100)는 공유 로그 기반 블록체인 네트워크 시스템(300)으로부터 서비스를 제공받는 단말을 나타내며 스마트폰, 퍼스널 컴퓨터(PC) 등을 포함할 수 있다. 서비스 사용자(100)는 스마트 컨트랙트 실행(endorsement)을 위해 클라이언트 SDK(200)를 통해 공유 로그 기반 블록체인 네트워크 시스템(300) 내 스마트 컨트랙트 실행부 노드들(310)로 트랜잭션을 전송할 수 있다. The service user 100 represents a terminal that receives services from the shared log-based blockchain network system 300 and may include a smartphone, personal computer (PC), etc. The service user 100 can transmit transactions to the smart contract execution nodes 310 in the shared log-based blockchain network system 300 through the client SDK 200 for smart contract execution (endorsement).

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템(300)은, 사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자(100)로부터 사용자 정보에 기반하여 사용자 트랜잭션을 생성하는 클라이언트 측 소프트웨어 인터페이스/클라이언트 SDK(200)를 경유하여 전송되는 사용자 트랜잭션을 수신하고, 사용자 트랜잭션을 실행하는 복수 개의 스마트 컨트랙트 실행 노드들(310); 및 복수 개의 스마트 컨트랙트 실행 노드들(310)에 의하여 실행되는 사용자 트랜잭션의 실행 결과로 생성된 커밋 레코드를 수신하고, 커밋 레코드를 공유 로그로서 저장하는 적어도 하나 이상의 공유 로그 스토리지(341)를 포함한다. The shared log-based blockchain network system 300 according to an embodiment of the present invention is a client-side software interface that creates a user transaction based on user information from the service user 100, which provides information necessary for user transaction creation. A plurality of smart contract execution nodes 310 that receive user transactions transmitted via the client SDK 200 and execute user transactions; and at least one shared log storage 341 that receives a commit record generated as a result of the execution of a user transaction executed by a plurality of smart contract execution nodes 310 and stores the commit record as a shared log.

복수개의 스마트 컨트랙트 실행 노드들(310) 각각은 복수개의 스마트 컨트랙트 실행 노드들(310) 각각에 할당되는 사용자 트랜잭션을 병렬적으로 처리할 수 있다. Each of the plurality of smart contract execution nodes 310 may process user transactions assigned to each of the plurality of smart contract execution nodes 310 in parallel.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템(300)은, 복수개의 스마트 컨트랙트 실행 노드들(310)로부터 커밋 레코드를 수신하고, 커밋 레코드의 유효성을 검증하고, 커밋 레코드가 유효하다고 판단되는 경우 공유 로그 스토리지 주소 토큰을 생성하여 복수개의 스마트 컨트랙트 실행 노드들(310)로 전송하는 시퀀서 노드(320)를 더 포함할 수 있다. The shared log-based blockchain network system 300 according to an embodiment of the present invention receives a commit record from a plurality of smart contract execution nodes 310, verifies the validity of the commit record, and determines that the commit record is valid. If determined, it may further include a sequencer node 320 that generates a shared log storage address token and transmits it to a plurality of smart contract execution nodes 310.

시퀀서 노드(320)는 복수개의 스마트 컨트랙트 실행 노드들(310)에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사를 실행할 수 있고, 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 공유 로그 스토리지 주소 토큰을 생성함으로써 복수개의 스마트 컨트랙트 실행 노드들(310) 간의 사용자 트랜잭션 실행 순서에 대한 합의를 지원할 수 있다.The sequencer node 320 can perform validation checks between user transactions executed in parallel by a plurality of smart contract execution nodes 310, and has a shared log storage address including a writable address in at least one shared log storage. By generating a token, it is possible to support agreement on the order of user transaction execution between a plurality of smart contract execution nodes 310.

시퀀서 노드(320)는 커밋 레코드의 유효성을 검증하기 위해 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행할 수 있다. To verify the validity of the commit record, the sequencer node 320 performs a multi-version conflict check (MVCC) that compares the key-version pair for each object with the read set in the commit record and the version information of the objects included in the read set. -version conflict check) can be performed.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템(300)은, 적어도 하나 이상의 공유 로그 스토리지(341)에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스/공유 로그 API(333)를 통하여 읽어들이고, 로그 데이터를 이용하여 블록을 생성하는 블록 생성 노드(330)를 더 포함할 수 있다. The shared log-based blockchain network system 300 according to an embodiment of the present invention provides log data including user transaction commit records recorded in at least one shared log storage 341 through a shared log interface/shared log API ( 333) and may further include a block generation node 330 that generates a block using log data.

블록 생성 노드(330)는 블록을 생성함에 있어 기존 블록체인들과 호환되는 새로운 블록을 생성할 수 있고, 블록을 전파할 수 있다. 이때 블록 생성 노드(330)는 새로운 블록을 공유 로그 기반 블록체인 네트워크(300)의 외부로 전달할 수 있다. When creating a block, the block generation node 330 can create a new block that is compatible with existing blockchains and can propagate the block. At this time, the block generation node 330 can deliver the new block to the outside of the shared log-based blockchain network 300.

블록 생성 노드(330)는 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 블록을 생성할 수 있다. The block generation node 330 may generate blocks using an order already agreed upon during sequential recording of user transactions related to log data and execution of smart contracts.

복수개의 스마트 컨트랙트 실행 노드들(310)은 공유 로그 인터페이스/공유 로그 API(314)를 포함할 수 있다. A plurality of smart contract execution nodes 310 may include a shared log interface/shared log API 314.

복수개의 스마트 컨트랙트 실행 노드들(310)에 의하여 생성되는 커밋 레코드를 포함하는 로그 데이터가 공유 로그 인터페이스/공유 로그 API(314)를 경유하여 적어도 하나 이상의 공유 로그 스토리지(341)로 전송될 수 있다. Log data including commit records generated by a plurality of smart contract execution nodes 310 may be transmitted to at least one shared log storage 341 via the shared log interface/shared log API 314.

커밋 레코드를 포함하는 로그 데이터가 적어도 하나 이상의 공유 로그 스토리지(341)에 저장될 수 있다. Log data including commit records may be stored in at least one shared log storage 341.

복수개의 스마트 컨트랙트 실행 노드들(310)은 사용자 트랜잭션을 실행할 때 커밋 레코드를 생성하기 위하여 필요한 최신 상태정보를 획득하기 위하여 공유 로그 인터페이스/공유 로그 API(314)를 경유하여 적어도 하나 이상의 공유 로그 스토리지로(341)부터 최신 로그 데이터를 읽어들일 수 있다. A plurality of smart contract execution nodes 310 connect to at least one shared log storage via the shared log interface/shared log API 314 to obtain the latest status information required to create a commit record when executing a user transaction. The latest log data can be read from (341).

적어도 하나 이상의 공유 로그 스토리지(341)는 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장할 수 있다. 이때 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함할 수 있다. At least one shared log storage 341 may store log data including commit records as a plurality of attributes. At this time, the plurality of properties may include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution results.

공유 로그 기반 블록체인 네트워크 시스템(300)은 스마트 컨트랙트 실행부 노드들(310), 시퀀서 노드(320), 블록 생성기 노드(330), 공유 로그 서비스 실행부 노드(340)를 포함할 수 있다. 스마트 컨트랙트 실행부 노드들(310)은 클라이언트 SDK(200)로부터 수신한 트랜잭션을 사전에 설치된 스마트 컨트랙트(315)를 공유 로그 환경에서 실행(endorsement)함으로써 처리하고, 그 결과를 포함한 커밋 레코드를 생성하고, 커밋 레코드를 이를 공유 로그 형태로 기록할 수 있다. The shared log-based blockchain network system 300 may include smart contract execution nodes 310, a sequencer node 320, a block generator node 330, and a shared log service execution node 340. The smart contract execution nodes 310 process transactions received from the client SDK 200 by executing (endorsement) the pre-installed smart contract 315 in a shared log environment, and generate a commit record including the results. , commit records can be recorded in the form of a shared log.

클라이언트 SDK(200)는 서비스 사용자(100), 즉, 클라이언트 측에 설치되는 소프트웨어일 수 있다. 클라이언트 SDK(200)가 사용자 트랜잭션을 복수개의 스마트 컨트랙트 실행부 노드들(310)에 할당하여 전송할 수 있다. 즉, 클라이언트 SDK(200)는 복수개의 사용자 트랜잭션들을 자동으로 로드 밸런싱하는 역할을 수행할 수 있다. The client SDK 200 may be software installed on the service user 100, that is, the client side. The client SDK 200 may allocate and transmit user transactions to a plurality of smart contract execution nodes 310. In other words, the client SDK 200 can automatically load balance a plurality of user transactions.

스마트 컨트랙트 실행 노드들(310)이 보유하고 있는 스마트 컨트랙트(315)는 동일한 블록체인 응용 서비스를 제공하는 경우 서로 동일할 수 있다. 다만 서로 다른 노드들의 스마트 컨트랙트(315)가 처리하는 사용자 트랜잭션들은 서로 다를 수 있다. 다수의 서비스 사용자(100)가 각각 서로 다른 트랜잭션들을 요청할 때, 이들 트랜잭션들이 복수개의 스마트 컨트랙트 실행 노드들(310)에 분할 할당되어 병렬적으로 사용자 트랜잭션이 처리될 수 있다. 즉, 서로 다른 스마트 컨트랙트 실행 노드들(310) 간에는 서로 다른 사용자의 트랜잭션 및/또는 서로 다른 내용의 트랜잭션이 병렬적으로 실행될 수 있다.The smart contracts 315 held by the smart contract execution nodes 310 may be identical to each other if they provide the same blockchain application service. However, user transactions processed by smart contracts 315 of different nodes may be different. When multiple service users 100 request different transactions, these transactions are divided and allocated to a plurality of smart contract execution nodes 310 so that user transactions can be processed in parallel. That is, transactions of different users and/or transactions with different content may be executed in parallel between different smart contract execution nodes 310.

시퀀서 노드(320)는 복수 개의 스마트 컨트랙트 실행부 노드들(310)에서 동일한 로그 위치에 대해 트랜잭션을 기록할 때 발생하는 충돌을 제어해주기 위해 공유 로그 저장소 주소 토큰을 발행해주는 노드이다. 시퀀서 노드(320)는 공유 로그의 마지막 로그 주소를 저장하는 카운터와 각 개체에 대한 키-버전 쌍을 보유할 수 있다. 이때 키는 개체의 키를 의미하고 버전은 개체를 마지막으로 업데이트한 공유 로그 주소 정보를 의미할 수 있다. 시퀀서 노드(320)는 이 두 가지 데이터 구조를 기반으로 다음의 기능들을 수행한다. 첫째, 시퀀서 노드(320)는 스마트 컨트랙트 실행부 노드들(310)이 제출한 커밋 레코드의 읽기 집합에 대해 MVCC 읽기 충돌 확인(read conflict check)을 수행할 수 있다. 둘째, 읽기 집합에 대해 충돌이 없는 커밋 레코드에 대해 공유 로그 저장소 주소 토큰을 발급할 수 있다. The sequencer node 320 is a node that issues a shared log storage address token to control conflicts that occur when a plurality of smart contract execution nodes 310 record transactions to the same log location. The sequencer node 320 may hold a counter that stores the last log address of the shared log and a key-version pair for each entity. At this time, the key may refer to the key of the object, and the version may refer to the shared log address information where the object was last updated. The sequencer node 320 performs the following functions based on these two data structures. First, the sequencer node 320 can perform an MVCC read conflict check on the read set of commit records submitted by the smart contract execution nodes 310. Second, a shared log storage address token can be issued for commit records that have no conflicts for the read set.

시퀀서 노드(320)는 트랜잭션이 실행된 후 공유 로그에 저장되는 순서를 결정하는 노드이다. 즉, 공유 로그에 트랜잭션 정보 및 실행 결과 데이터가 저장되는 순서가 시퀀서 노드(320)에 의하여 결정될 수 있다. 상황에 따라서는 시퀀서 노드(320)가 구성되지 않더라도, 사용자 트랜잭션 실행이 정상적으로 진행될 수 있으며, 시퀀서 노드(320) 은 트랜잭션 실행 성공율을 높임으로써, 결과적으로 성능을 높이는데 영향을 줄 수 있다. The sequencer node 320 is a node that determines the order in which transactions are stored in the shared log after execution. That is, the order in which transaction information and execution result data are stored in the shared log may be determined by the sequencer node 320. Depending on the situation, user transaction execution may proceed normally even if the sequencer node 320 is not configured, and the sequencer node 320 may increase the transaction execution success rate, ultimately affecting performance.

본 발명의 실시예에 따라서는, 저장되는 데이터(공유 로그)의 integrity check를 시퀀서 노드(320)가 실행할 수도 있다. 이때 시퀀서 노드(320)가 MVCC를 수행함으로써 공유 로그의 integrity check 역할을 수행할 수 있다. According to an embodiment of the present invention, the sequencer node 320 may perform an integrity check of stored data (shared log). At this time, the sequencer node 320 can perform the role of integrity check of the shared log by performing MVCC.

블록 생성기 노드(330)는 공유 로그 서비스 실행부(340)의 공유 로그 저장소 /스토리지(341)에 기록되어 있는 트랜잭션 로그 데이터를 참조하여 이를 포함한 블록을 생성하고 이를 블록체인 형태로 기록할 수 있으며, 블록체인 정보를 외부 노드와 연계할 수 있다.The block generator node 330 can refer to the transaction log data recorded in the shared log storage/storage 341 of the shared log service execution unit 340, generate a block including this, and record it in blockchain form. Blockchain information can be linked to external nodes.

본 발명의 일 실시예에 따른 블록체인 네트워크 시스템(300)은 스마트 컨트랙트(315)의 배포 및 실행, 사용자 트랜잭션의 처리 결과 등이 공유 로그 저장소/스토리지(341)에 실행 순서에 따라 기록되어 있으며, 외부 연계를 위해 블록의 형태로 구성하여 블록체인을 생성함으로써, 일종의 경량 합의 과정을 가지는 고성능 블록체인 네트워크로 간주할 수 있다. In the blockchain network system 300 according to an embodiment of the present invention, the distribution and execution of the smart contract 315, the processing results of user transactions, etc. are recorded in the shared log storage/storage 341 according to the execution order, By creating a blockchain in the form of blocks for external linkage, it can be considered a high-performance blockchain network with a kind of lightweight consensus process.

블록 생성기 노드(330)는 공유 로그(342)를 이용하여 블록을 생성하고 블록체인을 형성할 수 있다. 블록체인으로 형성된 정보는 변경이 어려우며 비합의된 변경 시 발견될 수 있다. The block generator node 330 can use the shared log 342 to generate blocks and form a blockchain. Information formed through blockchain is difficult to change and can be discovered in the event of non-agreed upon changes.

본 발명의 실시예에서는 블록 생성기 노드(330)는 공유 로그 저장소(341)과만 통신할 수 있다. 블록 생성기 노드(330)는 다른 엔티티/개체/노드들과는 독립적으로 동작할 수 있다. In an embodiment of the present invention, block generator node 330 can only communicate with shared log storage 341. Block generator node 330 may operate independently from other entities/objects/nodes.

블록 생성기 노드(330)에서 반드시 블록의 유효성 등에 대한 검사 또는 검증이 이루어질 필요는 없다. There is no need to necessarily check or verify the validity of the block at the block generator node 330.

공유 로그 서비스 실행부(340)의 로그 데이터는 모든 스마트 컨트랙트 실행부 노드들(310)에서 공유될 수 있다. 공유 로그 서비스 실행부(340)에서는 로그의 순서가 정해지므로 트랜잭션 순서의 일관성이 유지될 수 있다. 따라서 스마트 컨트랙트 실행부 노드들(310)에서 실행한 스마트 컨트랙트(315)의 트랜잭션 정보가 로그로서 기록될 수 있다. Log data of the shared log service execution unit 340 may be shared by all smart contract execution unit nodes 310. Since the shared log service executing unit 340 determines the order of logs, consistency of transaction order can be maintained. Therefore, transaction information of the smart contract 315 executed by the smart contract execution nodes 310 can be recorded as a log.

공유 로그 스토리지(341)는 독립적인 서버로 구현될 수도 있고, 클라우드 서버의 형태로 구현될 수도 있다. The shared log storage 341 may be implemented as an independent server or in the form of a cloud server.

공유 로그 스토리지(341)는 하나 또는 그 이상의 서버와 클라우드 서버가 혼재되어 구현될 수도 있다. The shared log storage 341 may be implemented by combining one or more servers and a cloud server.

공유 로그 스토리지(341)에 공유 로그가 저장될 때 데이터 integrity 체크는 이루어진 것으로 볼 수 있다. 데이터 integrity 체크의 역할의 일부를 시퀀서 노드(320)가 분담하여 간접적으로 지원할 수 있다. When the shared log is stored in the shared log storage 341, the data integrity check can be considered to have been performed. The sequencer node 320 may share part of the role of data integrity check and support it indirectly.

공유 로그(342)가 존재하므로, 스마트 컨트랙트(315) 내의 object들의 상태가 변경되더라도 이러한 변경 내용이 공유 로그(342)에 의하여 각각의 스마트 컨트랙트 실행 노드들(310) 간에 공유되고 업데이트될 수 있으며, 동기화될 수 있다. Since the shared log 342 exists, even if the state of objects in the smart contract 315 changes, these changes can be shared and updated between each smart contract execution node 310 by the shared log 342, can be synchronized.

본 발명의 일 실시예에서는 스마트 컨트랙트(315) 자체는 트랜잭션의 처리/실행에 대하여 변동이 없고 object들의 사용 상태가 변경될 수 있다. 이러한 object들의 사용 상태의 변경이 공유 로그(342)를 통하여 여러 노드들에 의하여 공유될 수 있다. In one embodiment of the present invention, the smart contract 315 itself does not change in the processing/execution of the transaction, and the usage status of objects may change. Changes in the usage status of these objects can be shared by multiple nodes through the shared log 342.

본 발명의 다른 일 실시예에서는 스마트 컨트랙트(315) 자체가 트랜잭션의 처리/실행에 의하여 변동될 수도 있다. 이 경우에도 스마트 컨트랙트(315)의 변경 내역이 공유 로그(342)를 통하여 여러 노드들 간에 공유될 수 있다. In another embodiment of the present invention, the smart contract 315 itself may change depending on the processing/execution of the transaction. In this case as well, the change history of the smart contract 315 can be shared between multiple nodes through the shared log 342.

이때 트랜잭션의 실행에 따른 스마트 컨트랙트(315)의 변경이 공유 로그(342)를 통하여 블록체인 네트워크(300) 내의 개체들에게 공유되고 스마트 컨트랙트(315) 자체의 변동 사항이 각 실행 노드들(310)에 의하여 업데이트될 수도 있다. At this time, changes in the smart contract 315 according to the execution of the transaction are shared with entities in the blockchain network 300 through the shared log 342, and changes in the smart contract 315 itself are shared with each execution node 310. It may be updated by .

일반적인 블록체인 시스템의 두가지 주요 과제는 개별적으로 상태를 저장하고 있는 노드들에서 실행되는 분산 응용 프로그램인 Smart contract 실행(endorsement/execution) 결과의 일치와 성능 확장성이 있다. 블록체인 시스템은 종종 애플리케이션 상태(State)를 공유하는 여러 노드로 구성될 수 있다. 그러나 각 노드들이 블록을 통해 업데이트되는 독립적인 스토리지를 유지하는 구조에서는 노드들의 상태를 일관되게 유지하며 성능 확장성을 달성하기에 어려움이 있다. 특히 블록체인 시스템은 사용자 트랜잭션 처리 성능이 중앙 집중식 서비스에 비해 현저히 낮다. 따라서 실제 비즈니스 애플리케이션에 적용하기 위해서 블록체인 시스템도 중앙 집중식 서비스에 준하는 성능 요구사항을 만족할 필요가 있다. The two main challenges of a general blockchain system are consistency of smart contract execution (endorsement/execution) results, which are distributed applications running on nodes that individually store the state, and performance scalability. Blockchain systems can often consist of multiple nodes that share application state. However, in a structure where each node maintains independent storage that is updated through blocks, it is difficult to maintain the state of the nodes consistently and achieve performance scalability. In particular, the user transaction processing performance of blockchain systems is significantly lower than that of centralized services. Therefore, in order to apply it to actual business applications, the blockchain system also needs to meet performance requirements equivalent to centralized services.

탈중앙화 거래소 서비스 뿐 아니라, 최근 메타버스와 대체불가 토큰 NFT 연계, 탈중앙화 금융 (Decentralized Finance DeFi), P2E (Play-to-Earn) 등의 블록체인 게임 등에 대한 사용자들의 관심이 증대됨에 따라, 블록체인 성능 확장성의 중요성은 지속적으로 증가하고 있다. 즉, 블록체인 시스템으로서의 특성 및 장점을 유지하면서도, 블록체인 노드들의 추가로 인한 성능의 확장이 가능하도록 설계된 블록체인 시스템에 대한 수요가 증대되는 상황이다. As user interest in not only decentralized exchange services, but also blockchain games such as Metaverse and non-fungible token NFT linkage, decentralized finance (Decentralized Finance DeFi), and P2E (Play-to-Earn) has increased, Block The importance of chain performance scalability continues to increase. In other words, the demand for a blockchain system designed to allow expansion of performance by adding blockchain nodes while maintaining the characteristics and advantages of a blockchain system is increasing.

본 발명의 실시예에 따르면 공유 로그 기반 고확장성 블록체인 네트워크 시스템 및 그 네트워크 내의 사용자 트랜잭션 처리 방법이 개시된다. 본 발명의 실시예에 따르면 공유 로그 환경에서의 복수 개 노드에 의해 트랜잭션을 병렬적으로 처리함으로써 블록체인 성능 확장성이 지원될 수 있다. According to an embodiment of the present invention, a shared log-based highly scalable blockchain network system and a method for processing user transactions within the network are disclosed. According to an embodiment of the present invention, blockchain performance scalability can be supported by processing transactions in parallel by a plurality of nodes in a shared log environment.

공유 로그(shared log) 방식은 분산 환경에서 응용 프로그램 일관성을 유지하는 한편 높은 장애 허용(fault-tolerant)을 제공하기 위해 분산 데이터 저장소에 사용되었으며 이후 다양한 분산 시스템에서 활용되고 있는 프로토콜이다. 공유 로그 방식은 한 시스템 내에 있는 복수의 클라이언트들이 동시에 로그에 액세스하고 기록할 수 있도록 기능을 제공한다. 어떤 경우에는 공유 로그(342)는 분석 또는 장애 복구를 위해 영구적으로 저장되어야 하며, 시스템이 원활하게 작동되기 위해 공유 로그(342)가 구현되는 방식은 시스템 요구사항에 따라 달라질 수 있다. The shared log method was used in distributed data storage to provide high fault tolerance while maintaining application consistency in a distributed environment, and is a protocol that has since been utilized in various distributed systems. The shared log method provides the ability for multiple clients within one system to access and record logs at the same time. In some cases, the shared log 342 may need to be permanently stored for analysis or disaster recovery, and the way the shared log 342 is implemented to ensure smooth operation of the system may vary depending on system requirements.

공유 로그(342)는 장애 허용 합의(fault-tolerant consensus)를 공유 로그 서비스 실행부(340)에서 내부적으로 처리할 수 있는 API를 제공하여 분산 애플리케이션에 적용될 때 장애 허용 합의 처리에 대한 부담을 줄일 수 있다. The shared log 342 provides an API that can internally process fault-tolerant consensus in the shared log service execution unit 340, which can reduce the burden of fault-tolerant consensus processing when applied to distributed applications. there is.

공유 로그 서비스 실행부(340)는 분산 애플리케이션의 요구 사항에 따라 스토리지 서버를 추가하거나 제거할 수 있으며, 각각의 서버에 저장된 전체 로그에 대하여 순서를 유지할 수 있다. 따라서, 공유 로그 방식은 사용함에 있어 단순하지만 장애 허용 시스템을 효율적으로 구축할 수 있도록 지원해주는 프로토콜이다.The shared log service executing unit 340 can add or remove storage servers according to the requirements of distributed applications and maintain the order of all logs stored in each server. Therefore, the shared log method is simple to use, but is a protocol that supports the efficient construction of a fault-tolerant system.

본 발명의 일 실시예에 따른 공유 로그 기반 고확장성 블록체인 네트워크 시스템(300)의 구조는, 사용자 트랜잭션을 생성하는 서비스 사용자(100), 서비스 사용자(100) 측에서 스마트 컨트랙트 실행부(Smart Contract Executor) 노드들(310)과 통신할 수 있도록 인터페이스를 제공하는 클라이언트 SDK(200), 사용자 트랜잭션을 수신하고 처리하는 스마트 컨트랙트 실행부 노드들(310), 사용자 트랜잭션 처리 결과를 로그 형태로 기록하는 공유 로그 서비스 실행부(Shared-log Service)(340), 그리고 병렬적으로 실행되는 복수 개의 스마트 컨트랙트(315)에 대응하는 복수 개의 스마트 컨트랙트 실행부 노드들(310)에서 접근하는 스마트 컨트랙트(315)의 개체(Object)들에 대한 상태정보 일관성과 트랜잭션 실행 순서에 대한 합의를 수행하는 시퀀서(Sequencer) 노드(320), 그리고 기존 블록체인(예: 이더리움, 하이퍼레저 패브릭 등)과의 호환성을 위해 공유 로그 저장소(341)에 기록된 트랜잭션 정보를 기반으로 블록을 생성하고 전파하는 블록 생성기(Block generator) 노드(330) 등 총 6개 구성요소를 포함할 수 있다. 본 발명의 실시예에 따른 공유 로그 기반 고확장성 블록체인 시스템은 스마트 컨트랙트를 분산 환경에서 병렬로 실행하고 블록을 생성하기 위한 다양한 방법을 포함할 수 있다.The structure of the shared log-based highly scalable blockchain network system 300 according to an embodiment of the present invention includes a service user 100 that generates a user transaction, and a smart contract execution unit (Smart Contract) on the service user 100 side. Client SDK 200 that provides an interface to communicate with Executor nodes 310, smart contract execution nodes 310 that receive and process user transactions, and a share that records user transaction processing results in log form. The log service execution unit (Shared-log Service) 340, and the smart contract 315 accessed from the plurality of smart contract execution node nodes 310 corresponding to the plurality of smart contracts 315 running in parallel. Sequencer node 320, which performs consensus on state information consistency for objects and transaction execution order, and is shared for compatibility with existing blockchains (e.g. Ethereum, Hyperledger Fabric, etc.) It may include a total of six components, including a block generator node 330 that generates and propagates blocks based on transaction information recorded in the log storage 341. The shared log-based highly scalable blockchain system according to an embodiment of the present invention may include various methods for executing smart contracts in parallel and generating blocks in a distributed environment.

또한, 시퀀서(Sequencer) 노드(320)는 복수 개의 스마트 컨트랙트 실행부 노드들(310)에서 동일한 공유 로그 위치에 대해 트랜잭션을 기록할 때 발생하는 충돌을 제어해주기 위해 공유 로그 저장소 주소 토큰을 발행해주는 노드이다. 공유 로그 서비스 실행부(340)는 사용자 트랜잭션 처리 결과를 로그로 기록하고 개체 저장소 역할을 할 수 있다. 더욱 구체적으로는, 독립적인 로컬 상태 저장소를 각각의 스마트 컨트랙트 실행부 노드들(310)이 유지하는 대신 공유 로그(342)를 분산 개체 저장소로 활용하여 모든 스마트 컨트랙트 실행부 노드들(310)에 동일한 개체 상태 뷰(in-memory view)를 제공할 수 있다. 서비스 사용자(100)는 블록체인 서비스를 이용하기 위해 클라이언트 SDK(200)를 통해 스마트 컨트랙트 실행부 노드들(310)과 통신할 수 있다.In addition, the sequencer node 320 is a node that issues a shared log storage address token to control conflicts that occur when a plurality of smart contract execution nodes 310 record transactions to the same shared log location. am. The shared log service execution unit 340 records user transaction processing results in a log and may serve as an object storage. More specifically, instead of maintaining an independent local state storage for each smart contract execution node 310, the shared log 342 is used as a distributed object storage to provide the same state to all smart contract execution nodes 310. An object state view (in-memory view) can be provided. The service user 100 may communicate with the smart contract execution nodes 310 through the client SDK 200 to use the blockchain service.

개체 저장소는 개체의 상태 정보를 저장하는 저장소(스토리지)로서, 개체의 상태 정보는 스마트 컨트랙트와 관련된 개체의 버전, 업데이트 상태 정보를 포함할 수 있다. The object storage is a repository (storage) that stores the state information of an object, and the state information of the object may include the version and update state information of the object related to the smart contract.

본 발명의 일 실시예에 따르면, 서비스 사용자(100)가 전송하는 트랜잭션을 공유 로그로써 기록하여 관리함으로써 성능 확장성을 보장하는 기법이 개시된다. 공유 로그 기반 고확장성 블록체인을 지원하는 방법은, 서비스 사용자(100)가 트랜잭션을 스마트 컨트랙트 실행부 노드들(310)로 전송하는 단계와, 상기 트랜잭션을 스마트 컨트랙트 실행부 노드들(310)이 공유 로그 환경에서 실행하는 단계와, 상기 트랜잭션 실행에 대한 결과를 시퀀서 노드(320)에서 검증하고 토큰을 발행하는 단계와, 상기 트랜잭션 실행에 대한 정보를 공유 로그 서비스 실행부(340)에 기록하는 단계와, 공유 로그 서비스 실행부(340)에 기록된 로그 데이터를 기반으로 블록 생성기 노드(330)에서 블록을 생성하는 단계를 포함할 수 있다.According to an embodiment of the present invention, a technique for ensuring performance scalability is disclosed by recording and managing transactions transmitted by a service user 100 as a shared log. A method of supporting a shared log-based highly scalable blockchain includes the steps of a service user 100 transmitting a transaction to smart contract execution nodes 310, and the smart contract execution nodes 310 transmitting the transaction. Executing in a shared log environment, verifying the results of the transaction execution at the sequencer node 320 and issuing a token, and recording information about the transaction execution in the shared log service execution unit 340. A step of generating a block at the block generator node 330 based on log data recorded in the shared log service execution unit 340 may be included.

또한, 상기 공유 로그로 기록되는 커밋 레코드의 속성으로 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 등을 포함할 수 있다. 다른 실시예에 따르면, 상기 커밋 레코드(commit record)의 속성은 필요에 따라 추가적인 속성이 정의되어 포함될 수 있다. Additionally, the properties of the commit record recorded in the shared log may include transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution results. According to another embodiment, the properties of the commit record may include additional properties defined as needed.

도 2는 도 1의 스마트 컨트랙트 실행부 노드(310)의 구조를 상세하게 도시하는 개념도이다. FIG. 2 is a conceptual diagram illustrating in detail the structure of the smart contract execution unit node 310 of FIG. 1.

도 2에 도시된 바와 같이, 스마트 컨트랙트 실행부 노드(310)는 API 게이트웨이(311)와 스마트 컨트랙트 실행 모듈(312), 스마트 컨트랙트 스터브(313), 공유 로그 API(314), 그리고 스마트 컨트랙트(315)를 포함할 수 있으며, 스마트 컨트랙트(315)가 공유 로그 환경에서 실행되도록 지원할 수 있다. As shown in Figure 2, the smart contract execution node 310 includes an API gateway 311, a smart contract execution module 312, a smart contract stub 313, a shared log API 314, and a smart contract 315. ) and may support the smart contract 315 to run in a shared log environment.

스마트 컨트랙트 실행부 노드(310)는 사용자 트랜잭션을 처리할 수 있다. 스마트 컨트랙트 실행부 노드(310)는 5개의 하위 모듈을 포함할 수 있으며, 5개의 하위 모듈은 서비스 사용자(100)에 단일 엔드 포인트를 제공하고 요청에 따라 적절한 서비스 라우팅하는 API 게이트웨이(API gateway)(311), 스마트 컨트랙트 트랜잭션을 실행하는 스마트 컨트랙트 실행 모듈(312), 응용 프로그램 논리를 포함하고 있는 스마트 컨트랙트(315), 스마트 컨트랙트(315) 측에서 공유 로그 서비스 실행부(340)와 통신할 수 있도록 지원하는 스마트 컨트랙트 스터브(smart contract stub)(313), 스마트 컨트랙트 실행부 노드(310) 내부의 다른 하위 모듈이 공유 로그 서비스 실행부(340)와 통신할 수 있도록 인터페이스를 제공하는 공유 로그 API(shared-log API)(314)를 포함할 수 있다. The smart contract execution node 310 can process user transactions. The smart contract execution node 310 may include five sub-modules, and the five sub-modules provide a single endpoint to the service users 100 and provide an API gateway (API gateway) that routes appropriate services according to requests. 311), a smart contract execution module 312 that executes a smart contract transaction, a smart contract 315 containing application logic, so that the smart contract 315 can communicate with the shared log service execution unit 340 A supported smart contract stub (313), a shared log API (shared -log API) (314).

API 게이트웨이(311)는 서비스 사용자(100)의 트랜잭션 요청을 수신하고 요청에 따라 서비스를 처리할 수 있다. API 게이트웨이(311)는 서비스 사용자(100)에게 단일 엔드포인트를 제공하고 서비스 사용자(100)로부터 요청을 받으면 요청의 유효성을 검사하고 적절한 서비스로 라우팅하고 서비스 사용자(100)에게 요청에 대한 응답을 반환할 수 있다.The API gateway 311 may receive a transaction request from the service user 100 and process the service according to the request. The API gateway 311 provides a single endpoint to the service user 100 and upon receiving a request from the service user 100, validates the request, routes it to the appropriate service, and returns a response to the request to the service user 100. can do.

스마트 컨트랙트 실행 모듈(312)은 API 게이트웨이(311)로부터 요청을 수신하면 서비스 사용자(100)가 요청한 스마트 컨트랙트(315)에 대한 로직을 실행하며, 실행 결과(읽기-쓰기 집합)와 트랜잭션 정보(트랜잭션 ID, 서비스 사용자(100) ID, etc.)를 포함하는 커밋 레코드(로그 엔트리)를 생성하고, 시퀀서 노드(320)로 이를 전송하여 공유 로그 저장소 주소 토큰 발급을 요청할 수 있다. 시퀀서 노드(320)로부터 토큰을 성공적으로 발급받으면 공유 로그 API(314)를 통해 커밋 레코드를 공유 로그 서비스 실행부(340)에 기록할 수 있다.When the smart contract execution module 312 receives a request from the API gateway 311, it executes the logic for the smart contract 315 requested by the service user 100, and executes the execution result (read-write set) and transaction information (transaction You can create a commit record (log entry) including ID, service user (100) ID, etc.) and transmit it to the sequencer node 320 to request issuance of a shared log storage address token. If a token is successfully issued from the sequencer node 320, a commit record can be recorded in the shared log service execution unit 340 through the shared log API 314.

스마트 컨트랙트 스터브(313)는 스마트 컨트랙트(315) 측에서 개체 상태의 액세스 및 업데이트 요청을 지원하는 모듈로, 공유 로그 서비스 실행부(340)와 통신하기 위한 인터페이스를 포함할 수 있다. 스마트 컨트랙트(315)에서 개체 상태 읽기 및 업데이트 작업은 공유 로그 서비스 실행부(340)에서 유지되는 저장소(341)를 통해 지원될 수 있다. 스마트 컨트랙트(315)는 프로그램 코드 내에 로컬 상태를 유지하지 않으며, 공유 로그 서비스 실행부(340)에 저장된 개체 상태만을 참조할 수 있다. 스마트 컨트랙트 스터브(313)는 공유 로그 API(314)를 통해 공유 로그 서비스 실행부(340)의 개체 상태에 액세스할 수 있고 읽기 집합을 생성할 수 있다. 이때 업데이트 요청의 경우 단순히 개체 업데이트를 위한 쓰기 집합이 생성될 수 있다.The smart contract stub 313 is a module that supports access and update requests for object state on the smart contract 315 side, and may include an interface for communicating with the shared log service execution unit 340. In the smart contract 315, object state reading and updating operations can be supported through the storage 341 maintained in the shared log service execution unit 340. The smart contract 315 does not maintain a local state within the program code and can only refer to the entity state stored in the shared log service execution unit 340. The smart contract stub 313 can access the object state of the shared log service execution unit 340 through the shared log API 314 and create a read set. At this time, in the case of an update request, a write set may be created simply for object update.

공유 로그 API(314)는 공유 로그 클라이언트(스마트 컨트랙트 실행부 노드(310))가 공유 로그 서비스 실행부(340)와 통신할 수 있도록 인터페이스를 제공하는 API 집합을 의미할 수 있다. 따라서, 개체 저장소로 공유 로그 서비스 실행부(340)와 상호 작용하기 위해 스마트 컨트랙트 실행부 노드(310)는 공유 로그 API(314)를 로드할 수 있다. 공유 로그 API(314)는 각 스마트 컨트랙트 실행부 노드(310)에게 개체 상태에 대한 메모리 내 로컬 뷰(in-memory local view)를 제공할 수 있으며, 제공된 개체 상태에 대한 메모리 내 로컬 뷰는 공유 로그 서비스 실행부(340)를 통해 복수개의 스마트 컨트랙트 실행부 노드들(310) 간에 동기화될 수 있다.The shared log API 314 may refer to a set of APIs that provide an interface so that a shared log client (smart contract execution unit node 310) can communicate with the shared log service execution unit 340. Accordingly, the smart contract executor node 310 may load the shared log API 314 to interact with the shared log service executor 340 as an object store. The shared log API 314 can provide an in-memory local view of the object state to each smart contract execution node 310, and the provided in-memory local view of the object state is a shared log. It can be synchronized between a plurality of smart contract execution unit nodes 310 through the service execution unit 340.

스마트 컨트랙트(315)는 응용 프로그램 논리를 구현하는 프로그램 코드로서, 모든 비즈니스 로직이 스마트 컨트랙트(315) 내부에 있기 때문에 본 발명의 실시예에 있어서 가장 주요한 구성요소 중 하나이다. 서비스 사용자(100)는 스마트 컨트랙트 실행부 노드(310)를 통해 스마트 컨트랙트(315)와 상호 작용을 할 수 있다. 따라서 트랜잭션을 수행하는 모든 스마트 컨트랙트 실행부 노드(310)에는 동일한 스마트 컨트랙트(315)가 설치되어 있을 것을 전제로 한다. The smart contract 315 is a program code that implements application logic, and is one of the most important components in the embodiment of the present invention because all business logic is inside the smart contract 315. The service user 100 can interact with the smart contract 315 through the smart contract execution node 310. Therefore, it is assumed that the same smart contract 315 is installed in all smart contract execution nodes 310 that perform transactions.

도 3은 도 1의 블록 생성기 노드(330)의 구조를 상세하게 도시하는 개념도이다. FIG. 3 is a conceptual diagram illustrating the structure of the block generator node 330 of FIG. 1 in detail.

또한, 블록 생성기 노드(330)는 3개의 하위 모듈을 포함할 수 있으며, 3개의 하위 모듈은 공유 로그 서비스 실행부(340)에서 트랜잭션 로그를 읽어와 블록에 포함되는 트랜잭션 엔트리 형태로 변환하여 블록 생성 모듈(332)로 전달하는 리더(reader) 모듈(331), 그리고 리더 모듈(331)로부터 수신한 트랜잭션 엔트리들을 블록으로 생성하는 블록 생성(block generation) 모듈(332), 마지막으로 공유 로그 서비스 실행부(340)로부터 공유 로그 데이터를 참조하기 위한 인터페이스인 공유 로그 API(333)을 포함할 수 있다. Additionally, the block generator node 330 may include three sub-modules, and the three sub-modules read the transaction log from the shared log service execution unit 340 and convert it into a transaction entry form included in the block to generate a block. A reader module 331 that transmits the data to the module 332, a block generation module 332 that generates blocks from the transaction entries received from the reader module 331, and finally a shared log service execution unit. It may include a shared log API 333, which is an interface for referencing shared log data from 340.

블록 생성기 노드(330)는 리더(reader) 모듈(331), 블록 생성 모듈(332), 및 공유 로그 API(333) 외에 블록 저장소(334)를 더 포함할 수 있다. 리더 모듈(331)은 공유 로그 서비스 실행부(340)에 기록된 트랜잭션 로그를 읽어와 블록에 포함될 트랜잭션 엔트리 형태로 변환하여 블록 생성 모듈(332)로 전달할 수 있다. 블록 생성 모듈(332)은 리더 모듈(331)로부터 수신한 트랜잭션 엔트리들을 블록으로 생성할 수 있다. 블록 생성 과정에서 공유 로그 서비스 실행부(340)에 기록된 로그 데이터는 스마트 컨트랙트 실행부 노드(310)에서 발생한 트랜잭션을 이미 순차적으로 기록하였기 때문에 순서에 대한 합의는 이루어진 상태로 해석될 수 있다. 블록 생성기 노드(330)는 스마트 컨트랙트(315) 실행에 관여하지 않고 트랜잭션의 실행 결과를 포함하는 로그 데이터만을 필요로 한다. 보다 구체적으로는, 블록 생성기 노드(330)에서 공유 로그 API(333)는 공유 로그 서비스 실행부(340)에 기록된 로그 데이터를 참조하기 위해 필요하다.The block generator node 330 may further include a block storage 334 in addition to a reader module 331, a block creation module 332, and a shared log API 333. The reader module 331 may read the transaction log recorded in the shared log service execution unit 340, convert it into a transaction entry form to be included in a block, and transmit it to the block generation module 332. The block creation module 332 may generate transaction entries received from the leader module 331 into blocks. Since the log data recorded in the shared log service execution unit 340 during the block creation process has already sequentially recorded transactions occurring in the smart contract execution unit node 310, it can be interpreted that an agreement on the order has been reached. The block generator node 330 is not involved in the execution of the smart contract 315 and only requires log data containing the execution results of the transaction. More specifically, the shared log API 333 in the block generator node 330 is required to refer to log data recorded in the shared log service execution unit 340.

도 4는 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템에서 이용되는 커밋 레코드 속성 구조의 일 예를 도시하는 개념도이다. Figure 4 is a conceptual diagram illustrating an example of a commit record attribute structure used in a shared log-based blockchain network system according to an embodiment of the present invention.

커밋 레코드는 한 트랜잭션에서 발생하는 변경 사항을 모두 기록하고 최종적으로 공유 로그 서비스 실행부(340)에 기록되는 로그 엔트리이다. 커밋 레코드는 시스템에서 발생한 트랜잭션들의 순서를 나타내므로 원자성(Atomicity)을 보장해야 하며 이러한 원자성을 제공하기 위해서 커밋 레코드는 트랜잭션의 메타데이터와 실행 결과(읽기-쓰기 집합)를 포함해야 한다. 원자성 외에 일관성(Consistency), 고립성(Isolation), 지속성(Durability)를 포함하여 ACID를 데이터베이스의 트랜잭션이 안전하게 수행되기 위한 필수적인 성질로 간주할 수도 있다. 공유 로그 서비스 실행부(340)의 실시예에 따라서 기본적으로 커밋 레코드에 들어가는 속성들은 상이할 수 있다. 공유 로그 기반 블록체인 네트워크(300)에서 공유 로그 서비스 실행부(340)의 로그 데이터를 참조하여 블록을 생성하기 위해서는 블록 생성에 요구되는 속성들을 커밋 레코드에 기록해야 한다. 따라서, 공유 로그 기반 블록체인 네트워크(300)에서는 커밋 레코드의 속성을 정의할 수 있다. 도 4에 도시된 바와 같이, 커밋 레코드의 속성은 공유 로그 주소, 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 스마트 컨트랙트 이름 및 버전, 스마트 컨트랙트 함수 및 그 인자 정보, 타임스탬프, 및 읽기-쓰기 집합 중 적어도 하나 이상을 포함할 수 있다.A commit record is a log entry that records all changes that occur in one transaction and is ultimately recorded in the shared log service execution unit 340. Since the commit record represents the order of transactions that occurred in the system, atomicity must be guaranteed. To provide this atomicity, the commit record must include transaction metadata and execution results (read-write set). In addition to atomicity, ACID, including consistency, isolation, and durability, can be considered essential properties for database transactions to be performed safely. Depending on the embodiment of the shared log service executing unit 340, the basic properties included in the commit record may be different. In order to create a block by referring to the log data of the shared log service execution unit 340 in the shared log-based blockchain network 300, the properties required for block creation must be recorded in the commit record. Therefore, the shared log-based blockchain network 300 can define the properties of the commit record. As shown in Figure 4, the properties of the commit record include at least a shared log address, transaction type, client ID, transaction ID, smart contract name and version, smart contract function and its argument information, timestamp, and read-write set. It may contain more than one.

도 5는 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크(300)의 사용자 트랜잭션 처리 방법의 개요를 도시하는 동작 흐름도이다. FIG. 5 is an operational flowchart illustrating an outline of a user transaction processing method of the shared log-based blockchain network 300 according to an embodiment of the present invention.

본 발명의 일 실시예에 따른 사용자 트랜잭션 처리 방법은 공유 로그 기반 블록체인 네트워크(300) 내의 각 기능을 분담하는 노드들에 의하여 실행될 수 있다. 각 노드들은 내부의 구성요소와 전자적으로 연결되는 프로세서(processor), 및 명령어를 저장하는 메모리(memory)를 포함하는 컴퓨팅 시스템으로서 구현될 수 있다. 사용자 트랜잭션 처리 방법은 이러한 메모리 및 프로세서를 포함하는 컴퓨팅 시스템에 의하여 실행될 수 있다. The user transaction processing method according to an embodiment of the present invention can be executed by nodes that share each function within the shared log-based blockchain network 300. Each node may be implemented as a computing system that includes a processor that is electronically connected to internal components and a memory that stores instructions. The user transaction processing method may be executed by a computing system including such memory and processor.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크(300)의 사용자 트랜잭션 처리 방법은, 사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자(100)로부터 사용자 정보에 기반하여 생성된 사용자 트랜잭션을 클라이언트 측 소프트웨어 인터페이스를 경유하여 복수개의 스마트 컨트랙트 실행 노드들(310) 중 적어도 일부로 전송하는 단계(S510); 복수개의 스마트 컨트랙트 실행 노드들(310) 중 적어도 일부가 사용자 트랜잭션을 실행하는 단계(S530); 복수개의 스마트 컨트랙트 실행 노드들(310) 중 적어도 일부가 사용자 트랜잭션이 실행된 결과로 커밋 레코드를 생성하는 단계(S550); 및 적어도 하나 이상의 공유 로그 스토리지(341)가 커밋 레코드를 공유 로그(342)로서 저장하는 단계(S570)를 포함한다. The user transaction processing method of the shared log-based blockchain network 300 according to an embodiment of the present invention provides a user transaction generated based on user information from a service user 100 that provides information necessary for user transaction creation to a client. Transmitting to at least some of the plurality of smart contract execution nodes 310 via a side software interface (S510); At least some of the plurality of smart contract execution nodes 310 execute a user transaction (S530); At least some of the plurality of smart contract execution nodes 310 generate a commit record as a result of executing a user transaction (S550); And at least one shared log storage 341 stores the commit record as a shared log 342 (S570).

사용자 트랜잭션을 복수개의 스마트 컨트랙트 실행 노드들(310) 중 적어도 일부로 전송하는 단계(S510)는, 클라이언트 측 소프트웨어 인터페이스가 복수개의 사용자 트랜잭션을 복수개의 스마트 컨트랙트 실행 노드들(310)에 할당하는 단계를 포함할 수 있다. The step of transmitting the user transaction to at least some of the smart contract execution nodes 310 (S510) includes the client-side software interface assigning the plurality of user transactions to the plurality of smart contract execution nodes 310. can do.

사용자 트랜잭션을 실행하는 단계(S530)에서는, 복수개의 스마트 컨트랙트 실행 노드들(310) 각각이 복수개의 스마트 컨트랙트 실행 노드들(310) 각각에 할당되는 복수개의 사용자 트랜잭션을 병렬적으로 처리할 수 있다. In the step of executing a user transaction (S530), each of the plurality of smart contract execution nodes 310 may process a plurality of user transactions assigned to each of the plurality of smart contract execution nodes 310 in parallel.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크(300)의 사용자 트랜잭션 처리 방법은, 커밋 레코드를 생성하는 단계(S550)의 이후 및 커밋 레코드를 공유 로그(342)로서 저장하는 단계(S570)의 이전에, 시퀀서 노드(320)가 복수개의 스마트 컨트랙트 실행 노드(310) 중 적어도 일부로부터 커밋 레코드를 수신하는 단계; 시퀀서 노드(320)가 커밋 레코드의 유효성을 검증하는 단계; 커밋 레코드가 유효하다고 판단되는 경우 시퀀서 노드(320)가 공유 로그 스토리지 주소 토큰을 생성하는 단계; 및 시퀀서 노드(320)가 공유 로그 스토리지 주소 토큰을 복수개의 스마트 컨트랙트 실행 노드들(310) 중 적어도 일부로 전송하는 단계를 더 포함할 수 있다. The user transaction processing method of the shared log-based blockchain network 300 according to an embodiment of the present invention includes the step of generating a commit record (S550) and the step of storing the commit record as a shared log 342 (S570). ), the sequencer node 320 receiving a commit record from at least some of the plurality of smart contract execution nodes 310; The sequencer node 320 verifies the validity of the commit record; If the commit record is determined to be valid, the sequencer node 320 generates a shared log storage address token; And the sequencer node 320 may further include transmitting the shared log storage address token to at least some of the plurality of smart contract execution nodes 310.

시퀀서 노드(320)가 커밋 레코드의 유효성을 검증하는 단계에서, 복수개의 스마트 컨트랙트 실행 노드들(310)에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사가 실행될 수 있다. In the step where the sequencer node 320 verifies the validity of the commit record, validation between user transactions executed in parallel by a plurality of smart contract execution nodes 310 may be performed.

공유 로그 스토리지 주소 토큰을 생성하는 단계에서, 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 공유 로그 주소 토큰이 생성됨으로써 복수개의 스마트 컨트랙트 실행 노드들(310) 간의 사용자 트랜잭션 실행 순서에 대한 합의가 지원될 수 있다. In the step of generating a shared log storage address token, a shared log address token containing a writable address in at least one shared log storage is generated, thereby establishing an agreement on the user transaction execution order among the plurality of smart contract execution nodes 310. Can be supported.

시퀀서 노드(320)가 커밋 레코드의 유효성을 검증하는 단계에서, 시퀀서 노드(320)는 커밋 레코드의 유효성을 검증하기 위해 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행할 수 있다. In the step where the sequencer node 320 verifies the validity of the commit record, the sequencer node 320 includes a key-version pair for each object and a read set in the commit record in the read set to verify the validity of the commit record. You can perform a multi-version conflict check (MVCC) that compares the version information of existing objects.

본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크(300)의 사용자 트랜잭션 처리 방법은, 블록 생성 노드(330)가 적어도 하나 이상의 공유 로그 스토리지(341)에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스(333)를 통하여 읽어들이는 단계; 블록 생성 노드(330)가 로그 데이터를 이용하여 기존 블록체인들과 호환되는 새로운 블록을 생성하는 단계; 및 블록을 전파하는 단계를 더 포함할 수 있다. 이때 블록 생성 노드(330)는 새로운 블록을 공유 로그 기반 블록체인 네트워크(300)의 외부로 전달할 수 있다.The user transaction processing method of the shared log-based blockchain network 300 according to an embodiment of the present invention includes the block generation node 330 including a user transaction commit record recorded in at least one shared log storage 341. Reading log data through the shared log interface 333; A block generation node 330 generating a new block compatible with existing blockchains using log data; And it may further include propagating the block. At this time, the block generation node 330 can deliver the new block to the outside of the shared log-based blockchain network 300.

블록 생성 노드(330)가 새로운 블록을 생성하는 단계에서, 블록 생성 노드(330)는 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 블록을 생성할 수 있다. In the step where the block generation node 330 creates a new block, the block generation node 330 creates blocks using the order already agreed upon during the sequential recording of user transactions related to log data and the execution of smart contracts. You can.

적어도 하나 이상의 공유 로그 스토리지(341)가 커밋 레코드를 공유 로그로서 저장하는 단계에서, 적어도 하나 이상의 공유 로그 스토리지(341)는 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장할 수 있다. 이때 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함할 수 있다. In the step where the at least one shared log storage 341 stores the commit record as a shared log, the at least one shared log storage 341 may store log data including the commit record as a plurality of attributes. At this time, the plurality of properties may include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution results.

도 6은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법과 관련되는 공유 로그 작성의 순서 결정 및 로그 기록에 관련된 과정을 도시하는 동작 흐름도이다. FIG. 6 is an operation flowchart illustrating a process related to determining the order of creating a shared log and recording a user transaction in a shared log-based blockchain network according to an embodiment of the present invention.

스마트 컨트랙트 실행부 노드(310)의 스마트 컨트랙트 실행 모듈(312)에서 스마트 컨트랙트 실행을 마치면 커밋 레코드를 생성할 수 있다(S550). 스마트 컨트랙트 실행 모듈(312)은 상기 커밋 레코드를 시퀀서 노드(320)로 전달하며 공유 로그 토큰 발급을 요청할 수 있다(S610). 시퀀서 노드(320)는 스마트 컨트랙트 실행 모듈(312)로부터 공유 로그 토큰 발급 요청을 수신하면(S610) 커밋 레코드 내 읽기 집합에 대해 MVCC(Multi-version conflict check) 읽기 충돌을 확인/검증할 수 있다(S620). 단계(S620)에서 시퀀서 노드(320)는 각 개체에 대한 키-버전 쌍을 가지고 있어 키-버전 쌍과 읽기 집합에 포함된 개체들의 버전 정보를 비교하여 충돌 여부를 확인/검증할 수 있다. 읽기 집합에 대한 개체 상태 충돌 확인이 완료되면(S620) 시퀀서 노드(320)는 커밋 레코드에 대해 공유 로그 저장소 주소 토큰을 발급할 수 있다(S630). 만일, 충돌이 발생하면 토큰을 발급하지 않고 트랜잭션은 중단될 수 있다. 이와 같은 과정을 거쳐 시퀀스 노드(320)에 의하여 공유 로그(342)가 작성되는 순서가 결정될 수 있다. When smart contract execution is completed in the smart contract execution module 312 of the smart contract execution unit node 310, a commit record can be created (S550). The smart contract execution module 312 may transmit the commit record to the sequencer node 320 and request issuance of a shared log token (S610). When the sequencer node 320 receives a shared log token issuance request from the smart contract execution module 312 (S610), it can check/verify MVCC (Multi-version conflict check) read conflicts for the read set in the commit record ( S620). In step S620, the sequencer node 320 has a key-version pair for each entity and can check/verify whether there is a conflict by comparing the key-version pair with the version information of the entities included in the read set. Once the object state conflict check for the read set is completed (S620), the sequencer node 320 may issue a shared log storage address token for the commit record (S630). If a conflict occurs, the transaction may be aborted without issuing a token. Through this process, the order in which the shared log 342 is created can be determined by the sequence node 320.

마지막으로, 토큰을 발급받은(S630) 스마트 컨트랙트 실행 모듈(312)은 해당 토큰의 공유 로그 위치에 커밋 레코드를 기록하는 요청(S640) 또는 트랜잭션 로그를 추가하는 요청(S642)을 공유 로그 서비스 실행부(340)로 전송할 수 있다. 요청을 받은(S640, S642) 공유 로그 서비스 실행부(340)는 별도의 검증 과정 없이 토큰에 적힌 주소 위치에 커밋 레코드를 기록하거나(S570) 또는 추가되는 트랜잭션 로그를 기록할 수 있다(S572). 커밋 레코드 또는 추가 트랜잭션 로그가 기록 완료되면(S570, S572), 공유 로그 서비스 실행부(340)로부터 스마트 컨트랙트 실행부 노드(310)로 커밋 레코드 기록 완료(S650) 또는 트랜잭션 로그 추가 완료(S652)를 나타내는 응답이 전달될 수 있다. 본 발명의 실시예에 따라서는, 이와 같은 과정을 거쳐 시퀀스 노드(320)에 의하여 결정되는 공유 로그(342)가 작성되는 순서가, 커밋 레코드, 공유 로그(342), 및 트랜잭션 로그 추가의 기록 순서에 영향을 미칠 뿐 아니라, 스마트 컨트랙트(315)의 실행 순서, 및 사용자 트랜잭션의 처리 순서에도 영향을 미칠 수 있다. Finally, the smart contract execution module 312, which has received the token (S630), sends a request to record a commit record (S640) or a request to add a transaction log (S642) to the shared log location of the token to the shared log service execution unit. It can be sent to (340). The shared log service executing unit 340, which has received the request (S640, S642), can record a commit record at the address location written on the token (S570) or record an added transaction log (S572) without a separate verification process. When the commit record or additional transaction log is completed (S570, S572), the commit record record is completed (S650) or the transaction log is added (S652) from the shared log service execution unit 340 to the smart contract execution node 310. The response indicated may be delivered. According to an embodiment of the present invention, the order in which the shared log 342 is created, which is determined by the sequence node 320 through this process, is the recording order of adding the commit record, shared log 342, and transaction log. In addition to affecting, it may also affect the execution order of the smart contract 315 and the processing order of user transactions.

도 7은 본 발명의 일 실시예에 따른 공유 로그 기반 블록체인 네트워크 시스템(300)의 스마트 컨트랙트 실행부 노드(310)를 중심으로 수행되는 사용자 트랜잭션 처리 방법의 과정의 일부를 도시하는 개념도이다. FIG. 7 is a conceptual diagram illustrating a portion of a user transaction processing method performed around the smart contract execution node 310 of the shared log-based blockchain network system 300 according to an embodiment of the present invention.

서비스 사용자(100)는 클라이언트 SDK(200)를 경유하여 트랜잭션을 스마트 컨트랙트 실행부 노드(310)로 요청/제출할 수 있다(S510). 스마트 컨트랙트 실행부 노드(310)에서는 API 게이트웨이(311)가 트랜잭션 요청을 스마트 컨트랙트 실행 모듈(312)로 전달할 수 있다(S710). 스마트 컨트랙트 실행 모듈(312)은 지정된 스마트 컨트랙트(315)를 호출할 수 있고, 공유 로그 서비스 실행부(340)와 연동하여 트랜잭션이 실행되도록 스마트 컨트랙트(315)의 실행을 요청할 수 있다(S720). The service user 100 may request/submit a transaction to the smart contract execution node 310 via the client SDK 200 (S510). In the smart contract execution node 310, the API gateway 311 may transmit a transaction request to the smart contract execution module 312 (S710). The smart contract execution module 312 can call the designated smart contract 315 and request execution of the smart contract 315 to execute a transaction in conjunction with the shared log service execution unit 340 (S720).

스마트 컨트랙트(315)의 실행이 공유 로그 서비스 실행부(340)와 연동되어 이루어지는 과정은, 스마트 컨트랙트 스터브(313)에 의하여 공유 로그 API(314)로 트랜잭션 또는 스마트 컨트랙트(315)와 관련되는 개체의 상태가 요청되고(S730), 공유 로그 스토리지(341)로부터 개체의 상태가 수신되어 공유 로그 API(314)를 경유하여 개체 상태가 스마트 컨트랙트 스터브(313)로 응답됨으로써(S732) 수행될 수 있다. The process in which the execution of the smart contract 315 is performed in conjunction with the shared log service execution unit 340 is performed by the smart contract stub 313 through the shared log API 314 of the transaction or object related to the smart contract 315. This can be performed by requesting the state (S730), receiving the state of the object from the shared log storage 341, and responding with the state of the object to the smart contract stub 313 via the shared log API 314 (S732).

스마트 컨트랙트(315) 실행 결과로 읽기-쓰기 집합이 생성될 수 있으며, 읽기 집합에는 스마트 컨트랙트(315)에서 참조한 모든 개체 상태정보가 포함될 수 있고 쓰기 집합에는 실행 중에 생성된 모든 개체 상태 업데이트 정보가 포함될 수 있다. 스마트 컨트랙트(315) 실행 결과가 스마트 컨트랙트 실행 모듈(312)로 전달될 수 있다(S740).A read-write set may be created as a result of executing the smart contract 315. The read set may include all object state information referenced by the smart contract 315, and the write set may include all object state update information created during execution. You can. The smart contract 315 execution result may be transmitted to the smart contract execution module 312 (S740).

스마트 컨트랙트 실행 모듈(312)은 트랜잭션 정보와 읽기-쓰기 집합이 포함된 커밋 레코드를 생성하고 공유 로그 토큰을 시퀀서 노드(320)로 요청할 수 있다(S610). 이때 커밋 레코드가 시퀀서 노드(320)로 함께 전송될 수도 있다. 시퀀서 노드(320)는 커밋 레코드를 수신하면 읽기 집합에 포함된 개체에 대한 업데이트 여부를 확인하고 이를 제출한 스마트 컨트랙트 실행 모듈(312)로 공유 로그 저장소 주소 토큰을 발행/응답할 수 있다(S630). 토큰을 받은 스마트 컨트랙트 실행 모듈(312)은 토큰에 기록된 주소에 커밋 레코드를 추가할 수 있다. The smart contract execution module 312 may create a commit record containing transaction information and a read-write set and request a shared log token from the sequencer node 320 (S610). At this time, the commit record may be transmitted together to the sequencer node 320. When receiving a commit record, the sequencer node 320 can check whether an object included in the read set has been updated and issue/response a shared log storage address token to the smart contract execution module 312 that submitted it (S630). . The smart contract execution module 312 that receives the token can add a commit record to the address recorded in the token.

토큰에 기록된 주소에 커밋 레코드가 추가되는 과정은, 스마트 컨트랙트 실행 모듈(312)로부터 공유 로그 API(314)로 로그 기록이 요청되고(S750), 공유 로그 API(314)를 경유하여 공유 로그 스토리지(341)로 로그 기록이 요청되고(S640), 공유 로그(342)가 성공적으로 기록/업데이트되면(S570, S572) 공유 로그 스토리지(341)가 로그 기록 완료되었음을 공유 로그 API(314)로 응답할 수 있다(S650). 이때 단계(S640)는 도 6의 단계(S642)를 포함할 수 있고, 단계(S650)는 도 6의 단계(S652)를 포함할 수 있다. The process of adding a commit record to the address recorded in the token is that a log record is requested from the smart contract execution module 312 to the shared log API 314 (S750), and shared log storage is sent via the shared log API 314. When log recording is requested at (341) (S640) and the shared log (342) is successfully recorded/updated (S570, S572), the shared log storage (341) responds to the shared log API (314) that log recording is complete. (S650). At this time, step S640 may include step S642 of FIG. 6, and step S650 may include step S652 of FIG. 6.

공유 로그 API(314)에 의하여 로그 기록/추가 완료되었음이 스마트 컨트랙트 실행 모듈(312)로 응답되면(S752)는 스마트 컨트랙트 실행 모듈(312)는 로그가 성공적으로 기록 또는 추가(업데이트)되었음을 인지할 수 있다. 로그가 성공적으로 기록/추가되었음이 인지되면 스마트 컨트랙트 실행 모듈(312)는 트랜잭션 실행 결과를 API 게이트웨이(311)로 응답하고(S760), 스마트 컨트랙트 실행부 노드(310)는 API 게이트웨이(311)를 경유하여 트랜잭션 실행 결과를 트랜잭션을 요청한 서비스 사용자(100)에게 반환할 수 있다(S762).When the smart contract execution module 312 responds that the log recording/addition has been completed by the shared log API 314 (S752), the smart contract execution module 312 recognizes that the log has been successfully recorded or added (updated). You can. When it is recognized that the log has been successfully recorded/added, the smart contract execution module 312 responds the transaction execution result to the API gateway 311 (S760), and the smart contract execution node 310 sends the API gateway 311. The transaction execution result can be returned to the service user 100 who requested the transaction (S762).

도 8은 블록 생성기 노드(330)를 중심으로 수행되는 사용자 트랜잭션 처리 방법의 과정의 일부를 도시하는 개념도이다. FIG. 8 is a conceptual diagram illustrating part of a process of a user transaction processing method performed around the block generator node 330.

트랜잭션 처리 결과가 서비스 사용자(100)에게 반환된(S762) 이후, 블록 생성기(330)의 리더 모듈(331)은 공유 로그 서비스 실행부(340)에 추가된 트랜잭션 로그를 공유 로그 API(333)를 경유하여 조회 요청하고(S810, S820), 공유 로그 API(333)를 경유하여 응답된(S830, S840) 로그를 읽어들이며 블록 생성에 필요한 데이터를 추출하여 블록에 담기는 트랜잭션 엔트리로 변환할 수 있다. 변환된 트랜잭션 엔트리는 블록 생성 모듈(332)로 전송될 수 있다(S850). 블록 생성 모듈(332)은 트랜잭션들을 블록에 담아 블록을 생성할 수 있다(S860).After the transaction processing result is returned to the service user 100 (S762), the leader module 331 of the block generator 330 sends the transaction log added to the shared log service execution unit 340 through the shared log API 333. By making an inquiry request (S810, S820) and reading the log in response (S830, S840) via the shared log API (333), the data required for block creation can be extracted and converted into a transaction entry contained in the block. . The converted transaction entry may be transmitted to the block creation module 332 (S850). The block generation module 332 can generate a block by storing transactions in a block (S860).

스마트 컨트랙트 실행부 노드(310)가 공유 로그 서비스 실행부(340)와 동기화하여 트랜잭션을 실행하므로 복수개의 스마트 컨트랙트 실행부 노드들(310)은 공유 로그 서비스 실행부(340)에 저장된 개체에 대하여 동일한 상태 정보를 공유할 수 있다. 따라서, 스마트 컨트랙트 실행부 노드(310)는 서로 다른 트랜잭션을 병렬로 실행할 수 있다. 이로 인하여 스마트 컨트랙트 실행부 노드(310)의 확장성이 보장될 수 있으며, 트랜잭션이 로그로 기록되면 완료되었음을 의미하므로 기존 블록체인 시스템과 비교하여 더 빠른 커밋 결정이 허용될 수 있다. Since the smart contract execution unit node 310 executes transactions in synchronization with the shared log service execution unit 340, the plurality of smart contract execution unit nodes 310 perform the same transaction for the objects stored in the shared log service execution unit 340. Status information can be shared. Accordingly, the smart contract execution node 310 can execute different transactions in parallel. This can ensure the scalability of the smart contract execution node 310, and can allow for faster commit decisions compared to existing blockchain systems because once a transaction is recorded in the log, it means it has been completed.

본 발명의 실시예와 대비되는 종래의 허가형/비허가형 블록체인 네트워크 시스템에서는 일반적으로 트랜잭션의 병렬 분산 실행이 어려운 것으로 알려져 있다. In contrast to the embodiment of the present invention, it is generally known that parallel distributed execution of transactions is difficult in the conventional permissioned/unpermissioned blockchain network system.

이에 비하여, 본 발명의 실시예에서는 공유 로그(342)가 완전한 블록체인 대신 경량 합의 과정을 지원하며, 또한 트랜잭션의 처리 내역, 버전 기록 등을 제공할 수 있으므로 기존의 블록체인 시스템보다 신속한 커밋 결정이 가능하다. 또한 시퀀스 노드(320)가 공유 로그(342)의 저장 순서를 결정함으로써 병렬적인 트랜잭션 처리 시 커밋 결과가 순차적으로 공유 로그(342)로서 저장될 수 있도록 보장할 수 있다. In contrast, in the embodiment of the present invention, the shared log 342 supports a lightweight consensus process instead of a complete blockchain, and can also provide transaction processing history, version history, etc., making commit decisions faster than existing blockchain systems. possible. Additionally, by determining the storage order of the shared log 342, the sequence node 320 can ensure that commit results are sequentially stored as the shared log 342 when processing parallel transactions.

도 9는 본 발명의 일 실시예에 따른 일반화된 블록체인 네트워크 내의 노드 또는 컴퓨팅 시스템을 도시하는 블록도이다. 본 발명의 일 실시예에 따른 도 1 내지 도 8의 과정의 적어도 일부를 수행할 수 있는 노드가 컴퓨팅 시스템으로서 구현될 수 있다.Figure 9 is a block diagram illustrating a node or computing system in a generalized blockchain network according to an embodiment of the present invention. A node capable of performing at least part of the processes of FIGS. 1 to 8 according to an embodiment of the present invention may be implemented as a computing system.

도 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 some processes of the blockchain user transaction processing method according to an embodiment of the present invention may be executed by the computing system 1000 of FIG. 9.

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

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

프로세서(1100)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU), 또는 본 발명의 실시예들에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. The processor 1100 may refer to 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 comprised of at least one of a volatile storage medium and a non-volatile storage medium. For example, the memory 1200 may be comprised of at least one of read only memory (ROM) and random access memory (RAM).

또한, 컴퓨팅 시스템(1000)은, 무선 네트워크를 통해 통신을 수행하는 통신 인터페이스(1300)를 포함할 수 있다. Additionally, the computing system 1000 may include a communication interface 1300 that performs communication through 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 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 include a communication capable desktop computer, laptop computer, laptop, smart phone, tablet PC, and mobile phone. (mobile phone), smart watch, smart glass, e-book reader, PMP (portable multimedia player), portable game console, navigation device, digital camera, DMB (digital) It may be a multimedia broadcasting player, digital audio recorder, digital audio player, digital video recorder, digital video player, PDA (Personal Digital Assistant), etc. .

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

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

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

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그래머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그래머블 게이트 어레이(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 functionality 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 with reference to preferred embodiments of the present invention, those skilled in the art may make various modifications and changes to the present invention without departing from the spirit and scope of the present invention as set forth in the claims below. You will understand that it is possible.

Claims (19)

사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자로부터 사용자 정보에 기반하여 사용자 트랜잭션을 생성하는 클라이언트 측 소프트웨어 인터페이스를 경유하여 전송되는 상기 사용자 트랜잭션을 수신하고, 상기 사용자 트랜잭션을 실행하는 복수 개의 스마트 컨트랙트 실행 노드들; 및
상기 복수 개의 스마트 컨트랙트 실행 노드들에 의하여 실행되는 상기 사용자 트랜잭션의 실행 결과로 생성된 커밋 레코드를 수신하고, 상기 커밋 레코드를 공유 로그로서 저장하는 적어도 하나 이상의 공유 로그 스토리지;
를 포함하는 공유 로그 기반 블록체인 네트워크 시스템.
A plurality of smart contract execution nodes that receive user transactions transmitted from service users through a client-side software interface that creates user transactions based on user information, and execute the user transactions. field; and
At least one shared log storage that receives a commit record generated as a result of execution of the user transaction executed by the plurality of smart contract execution nodes and stores the commit record as a shared log;
A shared log-based blockchain network system that includes.
제1항에 있어서,
상기 복수개의 스마트 컨트랙트 실행 노드들 각각은 상기 복수개의 스마트 컨트랙트 실행 노드들 각각에 할당되는 사용자 트랜잭션을 병렬적으로 처리하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
Each of the plurality of smart contract execution nodes processes user transactions assigned to each of the plurality of smart contract execution nodes in parallel,
A shared log-based blockchain network system.
제1항에 있어서,
상기 복수개의 스마트 컨트랙트 실행 노드들로부터 상기 커밋 레코드를 수신하고, 상기 커밋 레코드의 유효성을 검증하고, 상기 커밋 레코드가 유효하다고 판단되는 경우 공유 로그 스토리지 주소 토큰을 생성하여 상기 복수개의 스마트 컨트랙트 실행 노드들로 전송하는 시퀀서 노드;
를 더 포함하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
Receives the commit record from the plurality of smart contract execution nodes, verifies the validity of the commit record, and generates a shared log storage address token when the commit record is determined to be valid to the plurality of smart contract execution nodes. Sequencer node sending to;
Containing more,
A shared log-based blockchain network system.
제3항에 있어서,
상기 시퀀서 노드는 상기 복수개의 스마트 컨트랙트 실행 노드들에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사를 실행하고, 상기 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 상기 공유 로그 스토리지 주소 토큰을 생성함으로써 상기 복수개의 스마트 컨트랙트 실행 노드들 간의 사용자 트랜잭션 실행 순서에 대한 합의를 지원하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 3,
The sequencer node performs validation checks between user transactions executed in parallel by the plurality of smart contract execution nodes, and generates the shared log storage address token including a writable address in the at least one shared log storage. By doing so, it supports agreement on the order of user transaction execution between the plurality of smart contract execution nodes,
A shared log-based blockchain network system.
제3항에 있어서,
상기 시퀀서 노드는 상기 커밋 레코드의 유효성을 검증하기 위해 상기 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 상기 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 3,
The sequencer node compares the key-version pair for each entity with the read set in the commit record and the version information of the entities included in the read set to verify the validity of the commit record. Performing multi-version conflict check,
A shared log-based blockchain network system.
제1항에 있어서,
상기 적어도 하나 이상의 공유 로그 스토리지에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스를 통하여 읽어들이고, 상기 로그 데이터를 이용하여 블록을 생성하는 블록 생성 노드;
를 더 포함하는 공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
a block generation node that reads log data including user transaction commit records recorded in the at least one shared log storage through a shared log interface and generates a block using the log data;
A shared log-based blockchain network system further comprising:
제6항에 있어서,
상기 블록 생성 노드는 상기 블록을 생성함에 있어 기존 블록체인들과 호환되는 새로운 블록을 생성하고, 상기 블록을 전파하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to clause 6,
When generating the block, the block generation node creates a new block compatible with existing blockchains and propagates the block.
A shared log-based blockchain network system.
제6항에 있어서,
상기 블록 생성 노드는 상기 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 상기 블록을 생성하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to clause 6,
The block generation node generates the block using an order already agreed upon during sequential recording of user transactions related to the log data and smart contract execution.
A shared log-based blockchain network system.
제1항에 있어서,
상기 복수개의 스마트 컨트랙트 실행 노드들은 공유 로그 인터페이스를 포함하고,
상기 복수개의 스마트 컨트랙트 실행 노드들에 의하여 생성되는 상기 커밋 레코드를 포함하는 로그 데이터가 상기 공유 로그 인터페이스를 경유하여 상기 적어도 하나 이상의 공유 로그 스토리지로 전송되고,
상기 커밋 레코드를 포함하는 로그 데이터가 상기 적어도 하나 이상의 공유 로그 스토리지에 저장되는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
The plurality of smart contract execution nodes include a shared log interface,
Log data including the commit record generated by the plurality of smart contract execution nodes is transmitted to the at least one shared log storage via the shared log interface,
Log data including the commit record is stored in the at least one shared log storage,
A shared log-based blockchain network system.
제1항에 있어서,
상기 복수개의 스마트 컨트랙트 실행 노드들은 공유 로그 인터페이스를 포함하고,
상기 복수개의 스마트 컨트랙트 실행 노드들은 상기 사용자 트랜잭션을 실행할 때 상기 커밋 레코드를 생성하기 위하여 필요한 최신 상태정보를 획득하기 위하여 상기 공유 로그 인터페이스를 경유하여 상기 적어도 하나 이상의 공유 로그 스토리지로부터 최신 로그 데이터를 읽어들이는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
The plurality of smart contract execution nodes include a shared log interface,
The plurality of smart contract execution nodes read the latest log data from the at least one shared log storage via the shared log interface to obtain the latest status information necessary to create the commit record when executing the user transaction. Is,
A shared log-based blockchain network system.
제1항에 있어서,
상기 적어도 하나 이상의 공유 로그 스토리지는 상기 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장하고, 상기 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함하는,
공유 로그 기반 블록체인 네트워크 시스템.
According to paragraph 1,
The at least one shared log storage stores log data including the commit record as a plurality of properties, and the plurality of properties include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution result. containing one or more,
A shared log-based blockchain network system.
사용자 트랜잭션 생성에 필요한 정보를 제공하는 서비스 사용자로부터 사용자 정보에 기반하여 생성된 사용자 트랜잭션을 클라이언트 측 소프트웨어 인터페이스를 경유하여 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계;
상기 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부가 상기 사용자 트랜잭션을 실행하는 단계;
상기 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부가 상기 사용자 트랜잭션이 실행된 결과로 커밋 레코드를 생성하는 단계; 및
적어도 하나 이상의 공유 로그 스토리지가 상기 커밋 레코드를 공유 로그로서 저장하는 단계;
를 포함하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
Transmitting a user transaction generated based on user information from a service user providing information necessary for creating a user transaction to at least some of a plurality of smart contract execution nodes via a client-side software interface;
At least some of the plurality of smart contract execution nodes executing the user transaction;
generating a commit record as a result of executing the user transaction by at least some of the plurality of smart contract execution nodes; and
at least one shared log storage storing the commit record as a shared log;
Including,
How to process user transactions in a shared log-based blockchain network.
제12항에 있어서,
상기 사용자 트랜잭션을 상기 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계는
상기 클라이언트 측 소프트웨어 인터페이스가 복수개의 상기 사용자 트랜잭션을 상기 복수개의 스마트 컨트랙트 실행 노드들에 할당하는 단계;
를 포함하고,
상기 사용자 트랜잭션을 실행하는 단계는
상기 복수개의 스마트 컨트랙트 실행 노드들 각각이 상기 복수개의 스마트 컨트랙트 실행 노드들 각각에 할당되는 상기 복수개의 상기 사용자 트랜잭션을 병렬적으로 처리하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 12,
The step of transmitting the user transaction to at least some of the plurality of smart contract execution nodes
the client-side software interface assigning the plurality of user transactions to the plurality of smart contract execution nodes;
Including,
The step of executing the user transaction is
Each of the plurality of smart contract execution nodes parallelly processes the plurality of user transactions assigned to each of the plurality of smart contract execution nodes,
How to process user transactions in a shared log-based blockchain network.
제12항에 있어서,
상기 커밋 레코드를 생성하는 단계의 이후 및 상기 커밋 레코드를 상기 공유 로그로서 저장하는 단계의 이전에,
시퀀서 노드가 상기 복수개의 스마트 컨트랙트 실행 노드 중 적어도 일부로부터 상기 커밋 레코드를 수신하는 단계;
상기 시퀀서 노드가 상기 커밋 레코드의 유효성을 검증하는 단계;
상기 커밋 레코드가 유효하다고 판단되는 경우 상기 시퀀서 노드가 공유 로그 스토리지 주소 토큰을 생성하는 단계; 및
상기 시퀀서 노드가 상기 공유 로그 스토리지 주소 토큰을 상기 복수개의 스마트 컨트랙트 실행 노드들 중 적어도 일부로 전송하는 단계;
를 더 포함하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 12,
After the step of creating the commit record and before the step of storing the commit record as the shared log,
A sequencer node receiving the commit record from at least some of the plurality of smart contract execution nodes;
the sequencer node verifying the validity of the commit record;
generating, by the sequencer node, a shared log storage address token when the commit record is determined to be valid; and
the sequencer node transmitting the shared log storage address token to at least some of the plurality of smart contract execution nodes;
Containing more,
How to process user transactions in a shared log-based blockchain network.
제14항에 있어서,
상기 시퀀서 노드가 상기 커밋 레코드의 유효성을 검증하는 단계에서
상기 복수개의 스마트 컨트랙트 실행 노드들에 의하여 병렬적으로 실행되는 사용자 트랜잭션 간 유효성 검사가 실행되고,
상기 공유 로그 스토리지 주소 토큰을 생성하는 단계에서
상기 적어도 하나 이상의 공유 로그 스토리지에 쓰기 가능한 주소를 포함하는 상기 공유 로그 주소 토큰이 생성됨으로써 상기 복수개의 스마트 컨트랙트 실행 노드들 간의 사용자 트랜잭션 실행 순서에 대한 합의가 지원되는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 14,
In the step where the sequencer node verifies the validity of the commit record,
Validation is performed between user transactions executed in parallel by the plurality of smart contract execution nodes,
In the step of generating the shared log storage address token,
By generating the shared log address token containing a writable address in the at least one shared log storage, agreement on the order of user transaction execution between the plurality of smart contract execution nodes is supported,
How to process user transactions in a shared log-based blockchain network.
제14항에 있어서,
상기 시퀀서 노드가 상기 커밋 레코드의 유효성을 검증하는 단계에서
상기 시퀀서 노드는 상기 커밋 레코드의 유효성을 검증하기 위해 상기 커밋 레코드 내 읽기 집합에 대하여 각 개체에 대한 키-버전 쌍과 상기 읽기 집합에 포함된 개체들의 버전 정보를 비교하는 다중 버전 충돌 체크(MVCC, Multi-version conflict check)를 수행하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 14,
In the step where the sequencer node verifies the validity of the commit record,
The sequencer node compares the key-version pair for each entity with the read set in the commit record and the version information of the entities included in the read set to verify the validity of the commit record. Performing multi-version conflict check,
How to process user transactions in a shared log-based blockchain network.
제12항에 있어서,
블록 생성 노드가 상기 적어도 하나 이상의 공유 로그 스토리지에 기록된 사용자 트랜잭션 커밋 레코드를 포함하는 로그 데이터를 공유 로그 인터페이스를 통하여 읽어들이는 단계;
상기 블록 생성 노드가 상기 로그 데이터를 이용하여 기존 블록체인들과 호환되는 새로운 블록을 생성하는 단계; 및
상기 블록을 전파하는 단계;
를 더 포함하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 12,
A block generation node reading log data including user transaction commit records recorded in the at least one shared log storage through a shared log interface;
The block generation node generating a new block compatible with existing blockchains using the log data; and
propagating the block;
Containing more,
How to process user transactions in a shared log-based blockchain network.
제17항에 있어서,
상기 블록 생성 노드가 상기 새로운 블록을 생성하는 단계에서,
상기 블록 생성 노드는 상기 로그 데이터에 관련되는 사용자 트랜잭션들의 순차적인 기록 및 스마트 컨트랙트 실행 과정에서 이미 합의된 순서를 이용하여 상기 블록을 생성하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 17,
In the step where the block generation node generates the new block,
The block generation node generates the block using an order already agreed upon during the sequential recording of user transactions related to the log data and smart contract execution,
How to process user transactions in a shared log-based blockchain network.
제12항에 있어서,
상기 적어도 하나 이상의 공유 로그 스토리지가 상기 커밋 레코드를 공유 로그로서 저장하는 단계에서,
상기 적어도 하나 이상의 공유 로그 스토리지는 상기 커밋 레코드를 포함하는 로그 데이터를 복수개의 속성으로 저장하고, 상기 복수개의 속성은 트랜잭션 타입, 클라이언트 ID, 트랜잭션 ID, 자바 프로그램 정보, 전달 인자, 및 실행 결과 중 적어도 하나 이상을 포함하는,
공유 로그 기반 블록체인 네트워크의 사용자 트랜잭션 처리 방법.
According to clause 12,
In the step of the at least one shared log storage storing the commit record as a shared log,
The at least one shared log storage stores log data including the commit record as a plurality of properties, and the plurality of properties include at least one of transaction type, client ID, transaction ID, Java program information, transfer parameters, and execution result. containing one or more,
How to process user transactions in a shared log-based blockchain network.
KR1020220135739A 2022-10-20 2022-10-20 Blockchain network system based on shared log and method of processing user transaction of blockchain network KR20240055447A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220135739A KR20240055447A (en) 2022-10-20 2022-10-20 Blockchain network system based on shared log and method of processing user transaction of blockchain network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220135739A KR20240055447A (en) 2022-10-20 2022-10-20 Blockchain network system based on shared log and method of processing user transaction of blockchain network

Publications (1)

Publication Number Publication Date
KR20240055447A true KR20240055447A (en) 2024-04-29

Family

ID=90883624

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220135739A KR20240055447A (en) 2022-10-20 2022-10-20 Blockchain network system based on shared log and method of processing user transaction of blockchain network

Country Status (1)

Country Link
KR (1) KR20240055447A (en)

Similar Documents

Publication Publication Date Title
US10585657B2 (en) Setup, management, and packaging of applications accessing centralized and decentralized data
US10901974B2 (en) Hybrid cloud chain management of centralized and decentralized data
EP4254183A1 (en) Transaction processing method and apparatus, computer device, and storage medium
CN111338766B (en) Transaction processing method and device, computer equipment and storage medium
US11558181B2 (en) Method and system for state associated device identification for digital payments using blockchain technology
US20220004539A1 (en) Privacy preserving architecture for permissioned blockchains
US11409795B2 (en) Atomically executed application program interfaces
US11720545B2 (en) Optimization of chaincode statements
CN110874739A (en) Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing
WO2021227706A1 (en) Data processing method and apparatus, computer device, and storage medium
US11687942B2 (en) Method and apparatus for processing account of blockchain network, and storage medium
US20220100498A1 (en) Implementation of object versioning and consistency at scale
Dinh et al. A blueprint for interoperable blockchains
US20220224545A1 (en) Method and apparatus for operating blockchain system, device and storage medium
JP2023027775A (en) Computer-implemented method, computer system and computer program for privacy-preserving auditable accounts (privacy-preserving auditable accounts)
US11978118B2 (en) Event management and validation platform using a recursive hierarchic blockchain
KR102439351B1 (en) Non-mining blockchain network system for ESG and method of operating of server node participating in the system
KR20240055447A (en) Blockchain network system based on shared log and method of processing user transaction of blockchain network
WO2022200891A1 (en) Reducing transaction aborts in execute-order-validate blockchain models
US20220171763A1 (en) Blockchain selective world state database
JP2023538497A (en) editable blockchain
JP2022032116A (en) Data migration method, data migration system, and node
KR102514893B1 (en) Method for operating of server node based on NFT in non-mining blockchain network system for ESG and blockchain network system including the server node
US11755562B2 (en) Score based endorsement in a blockchain network
US20240070166A1 (en) Minimizing read and update conflict errors in blockchains