KR20210061241A - Method for supporting parallel execution of transaction, blockcahin node device and program using the same - Google Patents

Method for supporting parallel execution of transaction, blockcahin node device and program using the same Download PDF

Info

Publication number
KR20210061241A
KR20210061241A KR1020200039921A KR20200039921A KR20210061241A KR 20210061241 A KR20210061241 A KR 20210061241A KR 1020200039921 A KR1020200039921 A KR 1020200039921A KR 20200039921 A KR20200039921 A KR 20200039921A KR 20210061241 A KR20210061241 A KR 20210061241A
Authority
KR
South Korea
Prior art keywords
transaction
parallel
execution
chain
blockchain
Prior art date
Application number
KR1020200039921A
Other languages
Korean (ko)
Other versions
KR102342788B1 (en
Inventor
고유미
유민수
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Publication of KR20210061241A publication Critical patent/KR20210061241A/en
Application granted granted Critical
Publication of KR102342788B1 publication Critical patent/KR102342788B1/en

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Abstract

According to an embodiment of the present invention, a method for supporting parallel execution of transaction in a blockchain includes the steps of: determining whether a node receiving a block including an opening transaction is an issuer of the opening transaction; recruiting participating nodes on an off-chain to participate in the execution of parallel tasks constituting one transaction if the node is the issuer of the opening transaction according to a determination result; and issuing a closing transaction including the execution results of parallel tasks by the recruited participating nodes.

Description

트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램{METHOD FOR SUPPORTING PARALLEL EXECUTION OF TRANSACTION, BLOCKCAHIN NODE DEVICE AND PROGRAM USING THE SAME}A method of supporting parallel execution of transactions, blockchain nodes and programs using them {METHOD FOR SUPPORTING PARALLEL EXECUTION OF TRANSACTION, BLOCKCAHIN NODE DEVICE AND PROGRAM USING THE SAME}

본 발명은 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것으로, 보다 상세하게는 하나의 트랜잭션을 구성하는 병렬 태스크들을 오프 체인 상의 참여 노드들을 모집하여 병렬적으로 수행할 수 있는 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램에 관한 것이다.The present invention relates to a method of supporting parallel execution of transactions, and to a block chain node and program using the same. More specifically, parallel tasks constituting one transaction are recruited to participate in off-chain nodes to perform parallel tasks. It relates to a method of supporting parallel execution of possible transactions, and a block chain node and program using the same.

블록체인이란 익명성과 무결성이 보장되면서도 모든 데이터가 암호화되어 블록이라는 구조체에 기록되어 데이터의 신뢰성을 확보할 수 있는 분산 플랫폼이다.Blockchain is a distributed platform that guarantees anonymity and integrity while ensuring the reliability of data by encrypting all data and recording it in a structure called a block.

기본의 블록체인에서는 하나의 트랜잭션에 대하여 병렬 실행 자체를 지원하지 않거나, 독립적인 트랜잭션들에 대해서만 병렬 실행을 지원하는 점에서, 대용량의 연산이 요구되는 트랜잭션을 처리하는 데에는 한계가 있었다.In the basic blockchain, parallel execution itself is not supported for one transaction, or parallel execution is supported only for independent transactions, so there is a limit to processing transactions that require a large amount of computation.

본 발명의 기술적 사상이 이루고자 하는 과제는 하나의 트랜잭션을 구성하는 병렬 태스크들을 오프 체인 상의 참여 노드들을 모집하여 병렬적으로 수행할 수 있는 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램을 제공하는 것이다.A problem to be achieved by the technical idea of the present invention is a method of supporting parallel execution of transactions that can be performed in parallel by recruiting participating nodes on an off-chain for parallel tasks constituting a single transaction, a blockchain node using the same, and It is to provide a program.

본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법은 오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계, 판단 결과에 따라 상기 오프닝 트랜잭션의 발행자인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 단계 및 모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 단계를 포함할 수 있다.A method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention includes determining whether a node receiving a block containing an opening transaction is the issuer of the opening transaction, and a result of the determination. In the case of the issuer of the opening transaction, recruiting participating nodes on an off-chain to participate in the execution of parallel tasks constituting one transaction, and the execution results of parallel tasks by the recruited participating nodes. It may include issuing a closing transaction.

실시 예에 따라, 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계는, 상기 오프닝 트랜잭션에 포함된 트랜잭션 발행자 주소를 이용하여 상기 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단할 수 있다.According to an embodiment, the determining whether the node is the issuer of the opening transaction may include determining whether the node is the issuer of the opening transaction by using a transaction issuer address included in the opening transaction.

실시 예에 따라, 상기 병렬 태스크들은, 상기 병렬 태스크들 간에 공유하는 변수가 같거나, 상기 병렬 태스크들의 처리 순서에 선후관계가 있을 수 있다.Depending on the embodiment, the parallel tasks may have the same variable shared between the parallel tasks, or may have a precedence relationship to the processing order of the parallel tasks.

실시 예에 따라, 상기 오프닝 트랜잭션은, 상기 병렬 태스크들의 코드 해시를 포함하며, 상기 병렬 태스크들의 코드는 별도의 저장소에 저장될 수 있다.According to an embodiment, the opening transaction includes code hashes of the parallel tasks, and codes of the parallel tasks may be stored in a separate storage.

실시 예에 따라, 상기 참여 노드들을 모집하는 단계는, 상기 오프 체인 상의 참여 노드들로부터 조인 트랜잭션(join transaction)을 수신하는 단계 및 수신된 조인 트랜잭션에 기초하여 상기 병렬 태스크들을 실행할 오프체인 상의 실행 네트워크에 대한 정보를 포함하는 억셉트 트랜잭션(accept transaction)을 발행하는 단계를 포함할 수 있다.According to an embodiment, the step of recruiting the participating nodes includes receiving a join transaction from the participating nodes on the off-chain and an off-chain execution network to execute the parallel tasks based on the received join transaction. It may include issuing an accept transaction including information about the.

실시 예에 따라, 상기 조인 트랜잭션은, 상기 참여 노드들이 희망하는 역할에 대한 데이터를 포함할 수 있다.According to an embodiment, the join transaction may include data on roles desired by the participating nodes.

실시 예에 따라, 상기 희망하는 역할은, 상기 병렬 태스크들을 실행할 워커 노드(worker node)의 역할, 또는 상기 워커 노드로 상기 병렬 태스크들을 분배하고 파라미터 변수를 제어하는 파라미터 서버 노드(parameter server node)의 역할일 수 있다.According to an embodiment, the desired role is a role of a worker node to execute the parallel tasks, or of a parameter server node that distributes the parallel tasks to the worker nodes and controls parameter variables. It can be a role.

실시 예에 따라, 상기 파라미터 변수는, 상기 병렬 태스크들 간에 공유되는 변수일 수 있다.According to an embodiment, the parameter variable may be a variable shared between the parallel tasks.

실시 예에 따라, 상기 파라미터 서버 노드는, 상기 오프닝 트랜잭션에 포함된 상기 코드 해시를 이용하여 상기 별도의 저장소에 저장된 상기 병렬 태스크들의 코드를 획득하고, 획득한 코드와 상기 코드 해시의 비교를 통한 위변조 여부를 확인할 수 있다.According to an embodiment, the parameter server node acquires codes of the parallel tasks stored in the separate storage by using the code hash included in the opening transaction, and forgery by comparing the obtained code with the code hash You can check whether or not.

실시 예에 따라, 수집된 상기 병렬 태스크들의 코드의 실행 결과는, 상기 클로징 트랜잭션에 저장될 수 있다.According to an embodiment, the execution result of the collected parallel tasks code may be stored in the closing transaction.

실시 예에 따라, 상기 오프닝 트랜잭션 및 상기 클로징 트랜잭션은 온 체인(on chain)에만 기록되며, 상기 조인 트랜잭션 및 상기 억셉트 트랜잭션은 상기 온 체인과 상기 오프 체인에 함께 기록될 수 있다.According to an embodiment, the opening transaction and the closing transaction are recorded only on-chain, and the join transaction and the accept transaction may be recorded in the on-chain and off-chain together.

실시 예에 따라, 온 체인에서 실행되는 트랜잭션과, 상기 병렬 태스크들로 구성되어 오프 체인에서 실행되는 상기 하나의 트랜잭션은 서로 병렬적으로 실행될 수 있다.According to an embodiment, a transaction executed on-chain and the single transaction composed of the parallel tasks and executed off-chain may be executed in parallel with each other.

실시 예에 따라, 상기 병렬 태스크들로 구성되어 상기 오프 체인에서 실행되는 상기 하나의 트랜잭션은, 상기 온 체인에서 실행되는 트랜잭션에 비하여 요구되는 연산량이 상대적으로 클 수 있다.According to an embodiment, the single transaction composed of the parallel tasks and executed in the off-chain may have a relatively large amount of computation required compared to the transaction executed in the on-chain.

본 발명의 실시 예에 따른 블록체인 노드는 오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 트랜잭션 병렬처리 개시 모듈, 판단 결과에 따라 상기 오프닝 트랜잭션의 발행자인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 참여 노드 모집 모듈 및 모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 결과 처리 모듈을 포함할 수 있다.Blockchain node according to an embodiment of the present invention is a transaction parallel processing initiation module that determines whether the node receiving the block containing the opening transaction is the issuer of the opening transaction. In the case of an issuer, a participating node recruitment module that recruits off-chain participating nodes to participate in the execution of parallel tasks constituting one transaction, and a closing transaction containing the execution results of parallel tasks by the recruited participating nodes. It may include a result processing module that issues (closing transaction).

본 발명의 실시 예에 따른 프로세서(processor)와 결합되어 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법을 수행하기 위한 매체에 저장된 프로그램은 오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계, 판단 결과에 따라 자신이 발행한 오프닝 트랜잭션인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 단계 및 모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 단계를 수행할 수 있다.A program stored in a medium for performing a method that is combined with a processor according to an embodiment of the present invention to support parallel execution of transactions in a blockchain is a node that has received a block containing an opening transaction. Determining whether the issuer of the opening transaction is the issuer, in the case of an opening transaction issued by the user according to the determination result, recruiting off-chain participating nodes to participate in the execution of parallel tasks constituting one transaction And issuing a closing transaction including execution results of parallel tasks by the recruited participating nodes.

본 발명의 실시 예에 따른 방법과 장치는 하나의 트랜잭션을 구성하는 병렬 태스크들을 오프 체인 상의 참여 노드들을 모집하여 병렬적으로 수행함으로써, 대용량의 연산량을 가지는 트랜잭션도 신속하고, 효과적으로 처리할 수 있다.The method and apparatus according to an embodiment of the present invention can perform parallel tasks constituting one transaction in parallel by recruiting participating nodes on an off-chain, so that a transaction having a large amount of computation can be processed quickly and effectively.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 과정을 나타내기 위한 개념도이다.
도 2는 도 1에 도시된 블록체인 네트워크에 포함된 노드들 중에서 어느 하나의 노드의 일 실시 예에 따른 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법의 플로우차트이다.
도 4는 도 3에 도시된 방법에 따라 트랜잭션을 구성하는 병렬 태스크들을 수행하는 과정을 개략적으로 나타낸 도면이다.
도 5 내지 도 8은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법에서 사용되는 트랜잭션 종류별 자료구조이다.
도 9는 본 발명의 실시 예에 따른 방법에 따른 연산, 처리 시간을 비고 예와 비교한 표이다.
A brief description of each drawing is provided in order to more fully understand the drawings cited in the detailed description of the present invention.
1 is a conceptual diagram illustrating a process of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention.
FIG. 2 is a block diagram of any one node among nodes included in the block chain network shown in FIG. 1 according to an embodiment.
3 is a flowchart of a method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention.
FIG. 4 is a diagram schematically illustrating a process of performing parallel tasks constituting a transaction according to the method illustrated in FIG. 3.
5 to 8 are data structures for each transaction type used in a method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention.
9 is a table comparing operation and processing time according to a method according to an embodiment of the present invention with a remark example.

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

본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.In describing the technical idea of the present invention, if it is determined that a detailed description of a related known technology may unnecessarily obscure the subject matter of the present invention, a detailed description thereof will be omitted. In addition, numbers (eg, first, second, etc.) used in the description of the present specification are merely identification symbols for distinguishing one component from other components.

또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.In addition, in the present specification, when one component is referred to as "connected" or "connected" to another component, the one component may be directly connected or directly connected to the other component, but specially It should be understood that as long as there is no opposite substrate, it may be connected or may be connected via another component in the middle.

또한, 본 명세서에 기재된 "~부", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 프로세서(Processor), 마이크로 프로세서(Micro Processer), 마이크로 컨트롤러(Micro Controller), CPU(Central Processing Unit), GPU(Graphics Processing Unit), APU(Accelerate Processor Unit), DSP(Drive Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 등과 같은 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있으며, 적어도 하나의 기능이나 동작의 처리에 필요한 데이터를 저장하는 메모리(memory)와 결합되는 형태로 구현될 수도 있다. In addition, terms such as "~ unit", "~ group", "~ character", and "~ module" described in the present specification mean a unit that processes at least one function or operation, which is a processor or a microcomputer. Processor (Micro Processer), Micro Controller, CPU (Central Processing Unit), GPU (Graphics Processing Unit), APU (Accelerate Processor Unit), DSP (Drive Signal Processor), ASIC (Application Specific Integrated Circuit), FPGA It may be implemented in hardware or software such as (Field Programmable Gate Array), or a combination of hardware and software, and may be implemented in a form combined with a memory that stores data necessary for processing at least one function or operation. .

그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.In addition, it is intended to clarify that the division of the constituent parts in the present specification is merely divided by the main function that each constituent part is responsible for. That is, two or more constituent parts to be described below may be combined into one constituent part, or one constituent part may be divided into two or more for each more subdivided function. In addition, each of the constituent units to be described below may additionally perform some or all of the functions of other constituent units in addition to its own main function, and some of the main functions of each constituent unit are different. It goes without saying that it can also be performed exclusively by.

이하, 본 발명의 기술적 사상에 따른 실시 예들을 차례로 상세히 설명한다.Hereinafter, embodiments according to the technical idea of the present invention will be described in detail in order.

도 1은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 과정을 나타내기 위한 개념도이다.1 is a conceptual diagram illustrating a process of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 실시 예에 따른 방법에서, 오프닝 트랜잭션 발행자에 상응하는 노드들(PB_OT1~PB_OT3)은 하나의 트랜잭션을 구성하는 병렬 태스크들의 병렬 실행을 위한 정보들을 포함하는 오프닝 트랜잭션(opening transaction)을 발행할 수 있다.Referring to FIG. 1, in a method according to an embodiment of the present invention, nodes PB_OT1 to PB_OT3 corresponding to an issuer of an opening transaction are an opening transaction including information for parallel execution of parallel tasks constituting one transaction ( opening transaction) can be issued.

블록 생성자(block publisher, BP)는 발행된 오프닝 트랜잭션이 포함된 블록을 생성할 수 있다.A block publisher (BP) can create a block containing an issued opening transaction.

오프닝 트랜잭션을 발행한 발행자에 상응하는 노드들(PB_OT1~PB_OT3) 각각은 해당 노드(PB_OT1~PB_OT3)가 발행한 오프닝 트랜잭션이 포함된 블록을 수신하는 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들(W, PS)을 모집할 수 있다.When each of the nodes (PB_OT1~PB_OT3) corresponding to the issuer that issued the opening transaction receives the block containing the opening transaction issued by the corresponding node (PB_OT1~PB_OT3), Participating nodes (W, PS) on the off-chain to participate can be recruited.

모집된 참여 노드들(W,PC)은 해당 트랜잭션을 구성하는 병렬 태스크들의 수행을 위하여 각각의 실행 네트워크(NET_EX1~NET_EX3)를 형성할 수 있다.The recruited participating nodes (W, PC) may form respective execution networks (NET_EX1 to NET_EX3) to perform parallel tasks constituting a corresponding transaction.

형성된 실행 네트워크(NET_EX1~NET_EX3)에 포함된 참여 노드들(W,PS)은 병렬 태스크들을 병렬 실행시킬 수 있다.Participating nodes W and PS included in the formed execution networks NET_EX1 to NET_EX3 may execute parallel tasks in parallel.

실시 예에 따라, 참여 노드들(W,PS)의 역할은 병렬 태스크들을 실행할 워커 노드(worker node, W)의 역할 또는 워커 노드(W)로 병렬 태스크들을 분배하고 파라미터 변수를 제어하는 파라미터 서버 노드(parameter server node, PS)의 역할로 구분될 수 있다. 예컨대, 파라미터 변수는 병렬 태스크들 간에 공유되는 변수일 수 있다.Depending on the embodiment, the role of the participating nodes (W, PS) is the role of a worker node (W) to execute parallel tasks or a parameter server node that distributes parallel tasks to worker nodes (W) and controls parameter variables. It can be classified by the role of (parameter server node, PS). For example, the parameter variable may be a variable shared between parallel tasks.

실시 예에 따라, 병렬 태스크들은 하나의 트랜잭션을 구성하며, 상호 의존성을 가질 수 있다. 병렬 태스크들이 상호 의존성을 가지는 경우는 병렬 태스크들 간에 서로 공유하는 변수가 같거나, 병렬 태스크들의 처리 순서에 선후 관계가 있는 경우 등을 포함할 수 있다.Depending on the embodiment, parallel tasks constitute one transaction and may have interdependencies. The case where the parallel tasks have interdependence may include a case in which variables shared with each other among parallel tasks are the same, or there is a precedent relationship to the processing order of the parallel tasks.

본 명세서에서 "노드(node)"는 네트워크의 적어도 일부를 구성하는 장치를 의미할 수 있으며, "노드 장치"라고 일컬어질 수도 있다.In the present specification, a "node" may mean a device constituting at least a part of a network, and may also be referred to as a "node device".

본 명세서에서 "트랜잭션(transaction)"은 데이터의 상태를 변경하는 작업의 단위를 폭 넓게 의미할 수 있다. 예컨대, "트랜잭션"은 다자간의 계약의 체결과 이행에 따른 데이터 상태의 변화를 포함할 수 있다.In the present specification, "transaction" may broadly mean a unit of work that changes the state of data. For example, a "transaction" may include a change in data state according to the conclusion and execution of a multilateral contract.

실시 예에 따라, 트랜잭션은 스마트 컨트랙트(smart contract) 트랜잭션일 수 있다.Depending on the embodiment, the transaction may be a smart contract transaction.

도 1에서는 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인 상의 참여 노드들(W, PS)을 모집하고, 모집된 참여 노드들(W,PC)에 의하여 병렬 태스크들이 실행되는 경우만을 도시하였으나, 본 발명의 실시 예에 따라 온 체인 상에서의 트랜잭션의 실행과 병렬 태스크들로 구성되어 오프 체인 상의 참여 노드들에 의해 실행되는 트랜잭션의 실행도 서로 병렬적으로 수행될 수 있다. 이 때, 오프 체인에서 실행되는 트랜잭션은 온 체인 상에서 실행되는 트랜잭션에 비하여 요구되는 연산량이 상대적으로 클 수 있다.In FIG. 1, only the case where participating nodes (W, PS) on the off-chain to participate in the execution of parallel tasks constituting one transaction are recruited, and parallel tasks are executed by the recruited participating nodes (W, PC). However, according to an exemplary embodiment of the present invention, execution of a transaction on the on-chain and execution of a transaction executed by participating nodes on the off-chain, composed of parallel tasks, may also be performed in parallel with each other. In this case, a transaction executed in an off-chain may have a relatively large amount of computation required compared to a transaction executed in an on-chain.

도 2는 도 1에 도시된 블록체인 네트워크에 포함된 노드들 중에서 어느 하나의 노드의 일 실시 예에 따른 블록도이다. 도 3은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법의 플로우차트이다. 도 4는 도 3에 도시된 방법에 따라 트랜잭션을 구성하는 병렬 태스크들을 수행하는 과정을 개략적으로 나타낸 도면이다. 도 5 내지 도 8은 본 발명의 일 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법에서 사용되는 트랜잭션 종류별 자료구조이다.FIG. 2 is a block diagram of any one node among nodes included in the block chain network shown in FIG. 1 according to an embodiment. 3 is a flowchart of a method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention. FIG. 4 is a diagram schematically illustrating a process of performing parallel tasks constituting a transaction according to the method illustrated in FIG. 3. 5 to 8 are data structures for each transaction type used in a method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention.

도 2에는 블록체인 네트워크에 포함된 노드들 중에서 어느 하나의 블록체인 노드(예컨대, PB_OT1~PB_OT3)의 예시적인 블록도가 도시된다.FIG. 2 shows an exemplary block diagram of any one of the nodes included in the blockchain network (eg, PB_OT1 to PB_OT3).

도 1 내지 도 3을 참조하면, 블록체인 노드(100)는 통신 인터페이스(110), 메모리(120), 및 프로세서(130)를 포함할 수 있다.1 to 3, the block chain node 100 may include a communication interface 110, a memory 120, and a processor 130.

통신 인터페이스(110)는 블록체인 노드(100)와 다른 노드들(예컨대, 오프 체인 상의 노드들(W, PS))과의 통신을 인터페이싱할 수 있으며, 인터페이싱 과정에서 송수신되는 데이터 또는 신호를 처리할 수 있다.The communication interface 110 can interface communication between the blockchain node 100 and other nodes (eg, nodes on the off-chain (W, PS)), and can process data or signals transmitted and received during the interfacing process. I can.

메모리(120)는 블록체인 노드(100)가 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법을 수행하는 데에 필요한 데이터와 프로세서(130)의 처리 과정에서 필요한 데이터, 프로세서(130)의 처리 과정 중 또는 처리 완료 후에 생성된 데이터를 저장할 수 있다.The memory 120 includes data required for the blockchain node 100 to perform a method of supporting parallel execution of transactions in the blockchain, data required during the processing of the processor 130, and the processing of the processor 130. Data generated during or after processing can be saved.

실시 예에 따라, 메모리(120)는 본 발명의 실시 예에 따른 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법을 수행하기 위한 프로그램을 저장할 수 있으며, 메모리(120)는 프로세서(130)와 결합되어 상기 프로그램을 실행시킬 수 있다.Depending on the embodiment, the memory 120 may store a program for performing a method of supporting parallel execution of transactions in a block chain according to an embodiment of the present invention, and the memory 120 is combined with the processor 130 So that the program can be executed.

프로세서(130)는 트랜잭션 병렬처리 개시 모듈(132), 참여 노드 모집 모듈(134), 및 결과 처리 모듈(136)을 포함할 수 있다.The processor 130 may include a transaction parallel processing initiation module 132, a participating node recruitment module 134, and a result processing module 136.

도 3을 함께 참조하면, 트랜잭션 병렬처리 개시 모듈(132)은 수신된 블록에 포함된 오프닝 트랜잭션이 자신이 발행한 것인지 여부, 즉 오프닝 트랜잭션이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단할 수 있다(S310).3, the transaction parallel processing initiation module 132 determines whether the opening transaction included in the received block is issued by itself, that is, whether the node receiving the block including the opening transaction is the issuer of the opening transaction. Whether or not it can be determined (S310).

실시 예에 따라, 트랜잭션 병렬처리 개시 모듈(132)은 오프닝 트랜잭션에 포함된 트랜잭션의 발행자 주소를 이용하여 블록체인 노드(100)가 해당 오프닝 트랜잭션의 발행자인지 여부를 판단할 수 있다.According to an embodiment, the transaction parallel processing initiation module 132 may determine whether the blockchain node 100 is an issuer of the corresponding opening transaction by using the issuer address of the transaction included in the opening transaction.

도 4 내지 도 9을 함께 참조하면, 블록체인에 포함되는 블록들은 도 5에 도시된 오프닝 트랜잭션(opening transaction), 도 6에 도시된 조인 트랜잭션(join transaction), 도 7에 도시된 억셉트 트랜잭션(accept transaction), 도 8에 도시된 클로징 트랜잭션(closing transaction)을 포함할 수 있다.Referring to FIGS. 4 to 9 together, blocks included in the block chain include an opening transaction shown in FIG. 5, a join transaction shown in FIG. 6, and an accept transaction shown in FIG. 7 ( accept transaction), may include a closing transaction shown in FIG. 8.

도 5를 참조하면, 오프닝 트랜잭션은 하나의 트랜잭션을 구성하는 병렬 태스크들을 실행할 오프체인 상의 노드들의 모집을 시작하기 위한 트랜잭션을 의미할 수 있다.Referring to FIG. 5, an opening transaction may mean a transaction for starting recruitment of nodes on an off-chain to execute parallel tasks constituting one transaction.

실시 예에 따라, 오프닝 트랜잭션은 트랜잭션 주소, 트랜잭션 발행자 주소, 코드 해시, 실행 데드라인에 관한 데이터를 포함할 수 있다.Depending on the embodiment, the opening transaction may include data on a transaction address, a transaction issuer address, a code hash, and an execution deadline.

트랜잭션 주소는 해당 오프닝 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The transaction address may include information on the address of the corresponding opening transaction.

트랜잭션 발행자 주소는 해당 오프닝 트랜잭션을 발행한 발행자의 주소에 관한 정보를 포함할 수 있다.The transaction issuer address may include information on the address of the issuer who issued the corresponding opening transaction.

코드 해시는 실행 대상 트랜잭션을 구성하는 병렬 태스크들의 코드 해시를 의미할 수 있다. 실시 예에 따라, 병렬 태스크들의 코드는 별도의 저장소에 저장될 수 있다.The code hash may mean a code hash of parallel tasks constituting a transaction to be executed. According to an embodiment, codes of parallel tasks may be stored in a separate storage.

실행 데드라인은 실행 대상 트랜잭션을 실행 완료하기로 약속된 시간에 관한 정보를 포함할 수 있다.The execution deadline may include information about a promised time to complete execution of a transaction to be executed.

도 6을 참조하면, 조인 트랜잭션은 실행 대상 트랜잭션을 구성하는 병렬 태스크들의 병렬 실행을 지원하기 위하여 오프 체인 상의 참여 노드들이 발행하는 트랜잭션을 의미할 수 있다.Referring to FIG. 6, a join transaction may mean a transaction issued by participating nodes on an off-chain in order to support parallel execution of parallel tasks constituting an execution target transaction.

실시 예에 따라, 조인 트랜잭션은 트랜잭션 주소, 트랜잭션 발행자 주소, OT 주소, 희망하는 역할, 및 암호화를 위한 공개키를 포함할 수 있다.Depending on the embodiment, the join transaction may include a transaction address, a transaction issuer address, an OT address, a desired role, and a public key for encryption.

트랜잭션 주소는 해당 조인 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The transaction address may include information about the address of the join transaction.

트랜잭션 발행자 주소는 해당 조인 트랜잭션을 발행한 발행자의 주소에 관한 정보를 포함할 수 있다.The transaction issuer address may include information about the address of the issuer who issued the join transaction.

OT 주소는 해당 조인 트랜잭션에 연관된 오프닝 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The OT address may include information about the address of an opening transaction related to the corresponding join transaction.

희망하는 역할은 해당 참여 노드가 병렬 태스크들의 병렬 실행의 지원에 있어서 수행하기를 원하는 역할에 관한 정보를 포함할 수 있다.The desired role may include information about the role the participating node wants to play in supporting parallel execution of parallel tasks.

실시 예에 따라, 희망하는 역할은 병렬 태스크들을 실행할 워커 노드(worker node, W)의 역할 또는 워커 노드(W)로 병렬 태스크들을 분배하고 파라미터 변수를 제어하는 파라미터 서버 노드(parameter server node, PS)의 역할로 구분될 수 있다.Depending on the embodiment, the desired role is a role of a worker node (W) to execute parallel tasks or a parameter server node (PS) that distributes parallel tasks to worker nodes (W) and controls parameter variables. It can be divided into the role of.

암호화를 위한 공개키는 후술될 억셉트 트랜잭션에 포함된 네트워크 정보의 암호화에 사용되는 암호화 키일 수 있다.The public key for encryption may be an encryption key used for encryption of network information included in an accept transaction to be described later.

도 7을 참조하면, 억셉트 트랜잭션은 오프닝 트랜잭션의 발행자(예컨대, 도 1의 PB_OT1~PB_OT3)가 모집이 완료된 참여 노드들과 네트워크의 정보를 담아 발행하는 트랜잭션을 의미할 수 있다.Referring to FIG. 7, an accept transaction may refer to a transaction issued by an issuer of an opening transaction (eg, PB_OT1 to PB_OT3 in FIG. 1) containing information on participating nodes and networks for which recruitment has been completed.

실시 예에 따라, 억셉트 트랜잭션은 트랜잭션 주소, 트랜잭션 발행자 주소, OT 주소, 역할 테이블, 및 네트워크 정보를 포함할 수 있다.According to an embodiment, the accept transaction may include a transaction address, a transaction issuer address, an OT address, a role table, and network information.

트랜잭션 주소는 해당 억셉트 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The transaction address may include information about the address of a corresponding accept transaction.

트랜잭션 발행자 주소는 해당 억셉트 트랜잭션을 발행한 발행자의 주소에 관한 정보를 포함할 수 있다.The transaction issuer address may include information about the address of the issuer who issued the accept transaction.

OT 주소는 해당 억셉트 트랜잭션에 연관된 오프닝 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The OT address may include information about the address of an opening transaction related to the accept transaction.

역할 테이블은 병렬 태스크들의 병렬 실행에 참여한 참여 노드와 해당 참여 노드의 역할을 매핑한 테이블에 관한 정보를 포함할 수 있다.The role table may include information about a table that maps a participating node participating in parallel execution of parallel tasks and a role of the participating node.

네트워크 정보는 참여 노드들이 형성한 실행 네트워크(예컨대, NET_EX1~ NET_EX3)에 관한 정보, 예컨대 구성 노드들에 관한 정보 등을 포함할 수 있다.The network information may include information on an execution network (eg, NET_EX1 to NET_EX3) formed by participating nodes, such as information on configuration nodes.

실시 예에 따라, 네트워크 정보는 조인 트랜잭션에 포함된 암호화를 위한 공개키에 의하여 암호화된 상태로 억셉트 트랜잭션에 저장될 수 있다.According to an embodiment, the network information may be stored in an accept transaction in an encrypted state by using a public key for encryption included in a join transaction.

도 8을 참조하면, 클로징 트랜잭션은 병렬 태스크들을 포함하는 트랜잭션의 실행 결과를 기록하는 트랜잭션을 의미할 수 있다.Referring to FIG. 8, a closing transaction may mean a transaction that records an execution result of a transaction including parallel tasks.

실시 예에 따라, 클로징 트랜잭션은 트랜잭션 주소, 트랜잭션 발행자 주소, OT 주소, 및 실행 결과를 포함할 수 있다.According to an embodiment, the closing transaction may include a transaction address, a transaction issuer address, an OT address, and an execution result.

트랜잭션 주소는 해당 클로징 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The transaction address may include information on the address of a corresponding closing transaction.

트랜잭션 발행자 주소는 해당 클로징 트랜잭션을 발행한 발행자의 주소에 관한 정보를 포함할 수 있다.The transaction issuer address may include information on the address of the issuer who issued the closing transaction.

OT 주소는 해당 클로징 트랜잭션에 연관된 오프닝 트랜잭션의 주소에 관한 정보를 포함할 수 있다.The OT address may include information on an address of an opening transaction related to a corresponding closing transaction.

실행 결과는 참여 노드들에 의해 실행된 병렬 태스크들의 실행 결과에 관한 데이터가 포함될 수 있다.The execution result may include data on the execution result of parallel tasks executed by participating nodes.

도 4로 돌아와서, 제1블록(Block 1000)에 포함된 오프닝 트랜잭션(OTi)을 통하여 트랜잭션을 구성하는 병렬 태스크들을 수행할 참여 노드들의 모집이 시작될 수 있다.Returning to FIG. 4, recruitment of participating nodes to perform parallel tasks constituting a transaction may be started through an opening transaction OTI included in the first block Block 1000.

제2블록(Block 1001)과 제3블록(Block 1002)에 포함된 조인 트랜잭션(JTi~JTk)과 억셉트 트랜잭션(ATn)에 따라 참여 노드들이 모집되며, 모집된 참여 노드들에 의하여 병렬 태스크들이 실행될 수 있다.Participating nodes are recruited according to the join transaction (JTi~JTk) and accept transaction (ATn) included in the second block (Block 1001) and the third block (Block 1002), and parallel tasks are performed by the recruited participating nodes. Can be implemented.

제4블록(Block 1003)에 포함된 클로징 트랜잭션(CTi)에는 실행 대상 트랜잭션을 구성하는 병렬 태스크들의 실행결과가 포함될 수 있다.The closing transaction CTi included in the fourth block 1003 may include execution results of parallel tasks constituting the execution target transaction.

실시 예에 따라, 오프닝 트랜잭션 및 클로징 트랜잭션은 온 체인에만 기록되며, 조인 트랜잭션 및 억셉트 트랜잭션은 온 체인과 오프 체인에 함께 기록될 수 있다.According to an embodiment, an opening transaction and a closing transaction are recorded only on-chain, and a join transaction and an accept transaction may be recorded on-chain and off-chain together.

도 3으로 돌아와서, S310 단계에서의 판단 결과에 따라 참여 노드 모집 모듈(134)은 블록체인 노드(100)가 수신한 블록에 포함된 오프닝 트랜잭션의 발행자인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인 상의 참여 노드들을 모집할 수 있다(S320).Returning to FIG. 3, according to the determination result in step S310, the participating node recruitment module 134 is the issuer of the opening transaction included in the block received by the blockchain node 100, the parallel tasks constituting one transaction. Participating nodes on the off-chain to participate in the execution may be recruited (S320).

도 1을 함께 참조하면, 오프닝 트랜잭션의 발행자(예컨대, PB_OT1)는 수신된 블록에 포함된 오프닝 트랜잭션이 자신이 발행한 것인 경우에, 오프 체인 상의 참여 노드들(예컨대, W, PS)을 모집하여 실행 네트워크(예컨대, NET_EX1)를 형성할 수 있다.1, the issuer of the opening transaction (e.g., PB_OT1) recruits participating nodes (e.g., W, PS) on the off-chain when the opening transaction included in the received block is issued by it. Thus, an execution network (eg, NET_EX1) can be formed.

실시 예에 따라, 참여 노드 모집 모듈(134)은 S320 단계의 수행 과정에서 참여 노드들에 의하여 발행된 조인 트랜잭션을 수신하고, 요구되는 수준의 참여 노드들이 모집된 경우 모집된 참여 노드들과 형성된 실행 네트워크에 대한 억셉트 트랜잭션을 발행할 수 있다.Depending on the embodiment, the participating node recruitment module 134 receives the join transaction issued by the participating nodes in the process of performing step S320, and when participating nodes of the required level are recruited, execution formed with the recruited participating nodes You can issue an accept transaction to the network.

도 3으로 돌아와서, S320 단계에서 모집된 참여 노드들 중에서 파라미터 서버 노드(PS)의 역할을 수행하는 참여 노드는 워커 노드(W)의 역할을 수행하는 참여 노드들에 병렬 태스크들을 분배할 수 있다(S330). Returning to FIG. 3, among the participating nodes recruited in step S320, the participating node performing the role of the parameter server node PS may distribute parallel tasks to the participating nodes performing the role of the worker node W ( S330).

실시 예에 따라, 파라미터 서버 노드(PS)는 워크 노드들(W)에 병렬 태스크들만 분배하고, 실제 실행 시에는 병렬 태스크들에 대한 코드가 저장된 별도의 저장소로부터 코드를 가지고 와서 코드 해시의 비교를 통한 위변조 여부를 확인한 후에 코드를 실행시킬 수 있다.According to an embodiment, the parameter server node (PS) distributes only parallel tasks to the work nodes (W), and when actually executed, it retrieves the code from a separate storage where the code for the parallel tasks is stored, and compares the code hashes. The code can be executed after checking for forgery or alteration through.

파라미터 서버(PS)의 역할을 수행하는 참여 노드는 참여 노드들(예컨대, 워커 노드들(W))의 병렬 태스크 실행 결과를 수집할 수 있다(S340).The participating node performing the role of the parameter server PS may collect the parallel task execution results of the participating nodes (eg, worker nodes W) (S340).

파라미터 서버(PS)의 역할을 수행하는 참여 노드는 수집된 병렬 태스크 실형 결과를 오프닝 트랜잭션을 발행한 발행자 노드들(PB_OT1~PB_OT3)로 전달할 수 있다.The participating node performing the role of the parameter server PS may transmit the collected parallel task execution result to the issuer nodes PB_OT1 to PB_OT3 that issued the opening transaction.

오프닝 트랜잭션을 발행한 발행자 노드들(PB_OT1~PB_OT3)은 S340 단계에서 수집된 실행 결과를 담은 클로징 트랜잭션을 발행할 수 있다(S350).Issuer nodes PB_OT1 to PB_OT3 that have issued the opening transaction may issue a closing transaction including the execution result collected in step S340 (S350).

도 9는 본 발명의 실시 예에 따른 방법에 따른 연산, 처리 시간을 비고 예와 비교한 표이다.9 is a table comparing operation and processing time according to a method according to an embodiment of the present invention with a remark example.

도 9를 참조하면, 본 발명의 실시 예에 따라 하나의 트랜잭션을 구성하는 병렬 태스크들을 오프체인을 활용하여 병렬적 실행을 지원한 경우, 워커의 개수에 따라 연산시간, 결과 블록 처리시간, 초당 처리 태스크가 현저히 빨라지는 것을 확인할 수 있다.Referring to FIG. 9, when parallel tasks constituting one transaction are supported in parallel using off-chain according to an embodiment of the present invention, operation time, result block processing time, and processing per second according to the number of workers You can see that the task is significantly faster.

또한, 본 발명의 실시 예에 따라 하나의 트랜잭션을 구성하는 병렬 태스크들을 오프체인을 활용하여 병렬적 실행을 지원한 경우, 이더리움에서 동일한 트랜잭션을 처리할 때에 비하여 연산시간, 결과 블록 처리시간, 초당 처리 태스크가 현저히 빨라지는 것을 확인할 수 있다.In addition, when parallel tasks constituting one transaction according to an embodiment of the present invention are supported for parallel execution by using off-chain, operation time, result block processing time, and per second are compared with the case of processing the same transaction in Ethereum. You can see that the processing task is significantly faster.

이상, 본 발명의 기술적 사상을 다양한 실시 예들을 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시 예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.In the above, the technical idea of the present invention has been described in detail with reference to various embodiments, but the technical idea of the present invention is not limited to the above embodiments, and those of ordinary skill in the art within the scope of the technical idea of the present invention Various modifications and changes are possible by this.

100 : 블록체인 노드
110 : 통신 인터페이스
120 : 메모리
130: 프로세서
100: Blockchain node
110: communication interface
120: memory
130: processor

Claims (15)

오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계;
판단 결과에 따라 상기 오프닝 트랜잭션의 발행자인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 단계; 및
모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 단계를 포함하는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
Determining whether a node receiving a block including an opening transaction is an issuer of the opening transaction;
In the case of an issuer of the opening transaction according to the determination result, recruiting participating nodes on an off-chain to participate in the execution of parallel tasks constituting one transaction; And
A method of supporting parallel execution of transactions in a blockchain, comprising issuing a closing transaction containing execution results of parallel tasks by the recruited participating nodes.
제1항에 있어서,
상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계는,
상기 오프닝 트랜잭션에 포함된 트랜잭션 발행자 주소를 이용하여 상기 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 1,
The step of determining whether or not the issuer of the opening transaction is,
A method of supporting parallel execution of transactions in a blockchain by determining whether the node is an issuer of the opening transaction by using the transaction issuer address included in the opening transaction.
제1항에 있어서,
상기 병렬 태스크들은,
상기 병렬 태스크들 간에 공유하는 변수가 같거나, 상기 병렬 태스크들의 처리 순서에 선후관계가 있는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 1,
The parallel tasks,
A method of supporting parallel execution of a transaction in a blockchain, wherein the variables shared between the parallel tasks are the same or have a precedence relationship to the processing order of the parallel tasks.
제1항에 있어서,
상기 오프닝 트랜잭션은,
상기 병렬 태스크들의 코드 해시를 포함하며, 상기 병렬 태스크들의 코드는 별도의 저장소에 저장되는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 1,
The opening transaction,
A method of supporting parallel execution of a transaction in a blockchain, including a code hash of the parallel tasks, wherein the code of the parallel tasks is stored in a separate storage.
제4항에 있어서,
상기 참여 노드들을 모집하는 단계는,
상기 오프 체인 상의 참여 노드들로부터 조인 트랜잭션(join transaction)을 수신하는 단계; 및
수신된 조인 트랜잭션에 기초하여 상기 병렬 태스크들을 실행할 오프체인 상의 실행 네트워크에 대한 정보를 포함하는 억셉트 트랜잭션(accept transaction)을 발행하는 단계를 포함하는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 4,
The step of recruiting the participating nodes,
Receiving a join transaction from participating nodes on the off-chain; And
A method for supporting parallel execution of transactions in a blockchain, comprising issuing an accept transaction including information on an execution network on an off-chain to execute the parallel tasks based on a received join transaction .
제5항에 있어서,
상기 조인 트랜잭션은,
상기 참여 노드들이 희망하는 역할에 대한 데이터를 포함하는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 5,
The join transaction,
A method of supporting parallel execution of transactions in a blockchain, including data on the roles desired by the participating nodes.
제6항에 있어서,
상기 희망하는 역할은,
상기 병렬 태스크들을 실행할 워커 노드(worker node)의 역할, 또는 상기 워커 노드로 상기 병렬 태스크들을 분배하고 파라미터 변수를 제어하는 파라미터 서버 노드(parameter server node)의 역할인, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 6,
The desired role above is,
Parallel execution of transactions in the blockchain, which is the role of a worker node to execute the parallel tasks, or a role of a parameter server node that distributes the parallel tasks to the worker nodes and controls parameter variables. How to support it.
제7항에 있어서,
상기 파라미터 변수는,
상기 병렬 태스크들 간에 공유되는 변수인, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 7,
The parameter variable is
A method of supporting parallel execution of transactions in a blockchain, which is a variable shared among the parallel tasks.
제8항에 있어서,
상기 파라미터 서버 노드는,
상기 오프닝 트랜잭션에 포함된 상기 코드 해시를 이용하여 상기 별도의 저장소에 저장된 상기 병렬 태스크들의 코드를 획득하고, 획득한 코드와 상기 코드 해시의 비교를 통한 위변조 여부를 확인하는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 8,
The parameter server node,
Parallel transaction in the blockchain to obtain codes of the parallel tasks stored in the separate storage using the code hash included in the opening transaction, and to check whether forgery or alteration by comparing the obtained code with the code hash How to support enemy execution.
제9항에 있어서,
수집된 상기 병렬 태스크들의 코드의 실행 결과는,
상기 클로징 트랜잭션에 저장되는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 9,
The result of executing the code of the collected parallel tasks,
A method that supports parallel execution of transactions in a blockchain, stored in the closing transaction.
제5항에 있어서,
상기 오프닝 트랜잭션 및 상기 클로징 트랜잭션은 온 체인(on chain)에만 기록되며,
상기 조인 트랜잭션 및 상기 억셉트 트랜잭션은 상기 온 체인과 상기 오프 체인에 함께 기록되는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 5,
The opening transaction and the closing transaction are recorded only on-chain,
The join transaction and the accept transaction are recorded together in the on-chain and in the off-chain, a method of supporting parallel execution of a transaction in a blockchain.
제1항에 있어서,
온 체인에서 실행되는 트랜잭션과, 상기 병렬 태스크들로 구성되어 오프 체인에서 실행되는 상기 하나의 트랜잭션은 서로 병렬적으로 실행되는, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 1,
A method of supporting parallel execution of transactions in a blockchain, wherein a transaction executed on-chain and the one transaction composed of the parallel tasks and executed off-chain are executed in parallel with each other.
제12항에 있어서,
상기 병렬 태스크들로 구성되어 상기 오프 체인에서 실행되는 상기 하나의 트랜잭션은, 상기 온 체인에서 실행되는 트랜잭션에 비하여 요구되는 연산량이 상대적으로 큰, 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법.
The method of claim 12,
The one transaction composed of the parallel tasks and executed in the off-chain, a method of supporting parallel execution of a transaction in a blockchain, in which a required amount of computation is relatively large compared to a transaction executed in the on-chain.
오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 트랜잭션 병렬처리 개시 모듈;
판단 결과에 따라 상기 오프닝 트랜잭션의 발행자인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 참여 노드 모집 모듈; 및
모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 결과 처리 모듈을 포함하는, 블록체인 노드.
A transaction parallel processing initiation module that determines whether a node receiving a block including an opening transaction is an issuer of the opening transaction;
A participating node recruitment module for recruiting participating nodes on an off-chain to participate in the execution of parallel tasks constituting one transaction, if the issuer of the opening transaction according to the determination result; And
A blockchain node comprising a result processing module for issuing a closing transaction containing execution results of parallel tasks by the recruited participating nodes.
프로세서(processor)와 결합되어 블록체인에서 트랜잭션의 병렬적 실행을 지원하는 방법을 수행하기 위한 매체에 저장된 프로그램으로서,
오프닝 트랜잭션(opening transaction)이 포함된 블록을 수신한 노드가 상기 오프닝 트랜잭션의 발행자인지 여부를 판단하는 단계;
판단 결과에 따라 자신이 발행한 오프닝 트랜잭션인 경우, 하나의 트랜잭션을 구성하는 병렬 태스크들의 수행에 참여할 오프 체인(off chain) 상의 참여 노드들을 모집하는 단계; 및
모집된 상기 참여 노드들에 의한 병렬 태스크들의 실행 결과를 담은 클로징 트랜잭션(closing transaction)을 발행하는 단계를 수행하는, 프로그램.
As a program stored in a medium to perform a method combined with a processor to support parallel execution of transactions in a blockchain,
Determining whether a node receiving a block including an opening transaction is an issuer of the opening transaction;
In the case of an opening transaction issued by the user according to the determination result, recruiting participating nodes on an off-chain to participate in the execution of parallel tasks constituting one transaction; And
A program that performs the step of issuing a closing transaction containing execution results of parallel tasks by the recruited participating nodes.
KR1020200039921A 2019-11-19 2020-04-01 Method for supporting parallel execution of transaction, blockcahin node device and program using the same KR102342788B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190149135 2019-11-19
KR20190149135 2019-11-19

Publications (2)

Publication Number Publication Date
KR20210061241A true KR20210061241A (en) 2021-05-27
KR102342788B1 KR102342788B1 (en) 2021-12-24

Family

ID=76135812

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200039921A KR102342788B1 (en) 2019-11-19 2020-04-01 Method for supporting parallel execution of transaction, blockcahin node device and program using the same

Country Status (1)

Country Link
KR (1) KR102342788B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) * 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN108564470A (en) * 2018-04-17 2018-09-21 北京天德科技有限公司 The transaction distribution method of block is built in a kind of block chain parallel
WO2019072305A2 (en) * 2018-12-28 2019-04-18 Alibaba Group Holding Limited Parallel execution of transactions in a blockchain network based on smart contract whitelists
US20190287101A1 (en) * 2018-12-28 2019-09-19 Alibaba Group Holding Limited Parallel execution of transactions in a blockchain network
KR102118178B1 (en) * 2019-04-24 2020-06-02 주식회사 데이터젠 Multiple transaction parallel processing method and system for blockchain

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) * 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN108564470A (en) * 2018-04-17 2018-09-21 北京天德科技有限公司 The transaction distribution method of block is built in a kind of block chain parallel
WO2019072305A2 (en) * 2018-12-28 2019-04-18 Alibaba Group Holding Limited Parallel execution of transactions in a blockchain network based on smart contract whitelists
US20190287101A1 (en) * 2018-12-28 2019-09-19 Alibaba Group Holding Limited Parallel execution of transactions in a blockchain network
KR102118178B1 (en) * 2019-04-24 2020-06-02 주식회사 데이터젠 Multiple transaction parallel processing method and system for blockchain

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Mu Li 외 8명. Scaling Distributed Machine Learning with the Parameter Server. 2014년 *

Also Published As

Publication number Publication date
KR102342788B1 (en) 2021-12-24

Similar Documents

Publication Publication Date Title
CN110428257B (en) Password cracking task processing method, equipment and storage medium
CN108335207B (en) Asset management method and device and electronic equipment
TWI795374B (en) Method and system for directing an exchange associated with an anonymously held token on a blockchain
CN108335206B (en) Asset management method and device and electronic equipment
Monrat et al. Performance evaluation of permissioned blockchain platforms
US20180121909A1 (en) System and method to dynamically setup a private sub-blockchain based on agility of transaction processing
US20190386834A1 (en) Blockchain management apparatus, blockchain management method, and program
EP3376455A1 (en) Block chain generation device, block chain generation method, block chain verification device, block chain verification method and program
CN108416675A (en) Assets management method and device, electronic equipment
CN108959621A (en) A kind of implementation method, device, equipment and the storage medium of block chain network
CN110995473B (en) Service node control method and related equipment
WO2020203349A1 (en) Blockchain system, approval terminal, user terminal, history management method, and history management program
KR20200012705A (en) Apparatus for managing group of nodes which comprises transaction of dual signature based on group key on blockchain network and computing apparatus
CN110809876B (en) Method and equipment for executing out-of-chain test on intelligent contract
US10091123B2 (en) System and user interface for coordinating distributed workflow between multiple computing systems
CN110474820B (en) Flow playback method and device and electronic equipment
US9946555B2 (en) Enhanced configuration and property management system
CN109447636A (en) A kind of assets transfer method and device
TW202040460A (en) Block chain-based data processing method and device, and block chain node
CN110781200B (en) Processing method, device, equipment and medium for block chain abnormal data
US6868434B1 (en) System and method for testing server latencies using multiple concurrent users in a computer system
JP7181455B2 (en) Blockchain system, approval terminal, user terminal, history management method, and history management program
KR102342788B1 (en) Method for supporting parallel execution of transaction, blockcahin node device and program using the same
US20230050048A1 (en) Isolating And Reinstating Nodes In A Distributed Ledger Using Proof Of Innocence
CN116521509A (en) Intelligent contract testing method, device, equipment, storage medium and product

Legal Events

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