KR102654689B1 - 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법 - Google Patents

트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법 Download PDF

Info

Publication number
KR102654689B1
KR102654689B1 KR1020190061176A KR20190061176A KR102654689B1 KR 102654689 B1 KR102654689 B1 KR 102654689B1 KR 1020190061176 A KR1020190061176 A KR 1020190061176A KR 20190061176 A KR20190061176 A KR 20190061176A KR 102654689 B1 KR102654689 B1 KR 102654689B1
Authority
KR
South Korea
Prior art keywords
transaction
batch
batch size
failure
adjusting
Prior art date
Application number
KR1020190061176A
Other languages
English (en)
Other versions
KR20200134944A (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 KR1020190061176A priority Critical patent/KR102654689B1/ko
Priority to US16/727,240 priority patent/US20200372013A1/en
Priority to EP20153650.5A priority patent/EP3742675B1/en
Publication of KR20200134944A publication Critical patent/KR20200134944A/ko
Application granted granted Critical
Publication of KR102654689B1 publication Critical patent/KR102654689B1/ko

Links

Images

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/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4016Transaction verification involving fraud or risk level assessment in transaction processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Environmental & Geological Engineering (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법이 제공된다. 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 장치는 상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻고, 상기 모니터링 정보를 기초로 배치 사이즈(batch size)를 조절하며, 상기 조절된 배치 사이즈를 이용하여 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행할 수 있다. 그렇게 함으로써, 블록체인 기반 시스템의 트랜잭션 처리 성능은 향상되고, 트랜잭션 처리 실패에 따른 리스크는 최소화될 수 있다.

Description

트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법{ACCELERATED PROCESSING APPARATUS FOR TRANSACTION CONSIDERING TRANSACTION FAILURE PROBABILITY AND METHOD THEREOF}
본 개시는 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법에 관한 것이다. 보다 자세하게는, 배치 프로세싱(batch processing) 기반으로 블록체인 트랜잭션에 대한 가속 처리를 수행함에 있어서, 트랜잭션 실패 확률을 고려하여 가속 처리를 수행하는 장치 및 그 장치에서 수행되는 방법에 관한 것이다.
블록체인(blockchain)은 지속적으로 증가하는 데이터를 특정 단위의 블록에 기록하고, P2P(peer-to-peer) 네트워크를 구성하는 각각의 블록체인 노드들이 블록을 체인 형태의 자료 구조로 관리하는 데이터 관리 기술 또는 자료 구조 그 자체를 의미한다. 블록체인 기술은 네트워크에 속한 모든 블록체인 노드가 트랜잭션을 기록하고 검증하는 합의(consensus) 프로세스를 통해 트랜잭션의 무결성 및 보안성을 보장할 수 있다.
그러나, 합의 프로세스는 네트워크의 처리 능력을 단일 노드의 처리 능력으로 제한하기 때문에, 블록체인 기반 시스템의 트랜잭션 처리 성능을 저하시키는 주된 요인이기도 하다. 다시 말하면, 블록체인 기반 시스템에서는, 블록체인 노드의 개수를 늘리더라도 시스템의 성능 향상이 보장될 수 없다. 따라서, 대량의 트랜잭션에 대한 신속한 처리가 요구되는 분야에 블록체인 기술을 도입하는 것은 현실적으로 무리가 있으며, 블록체인 기반 시스템이 레거시 시스템(legacy system)을 대체하는 것은 아직 요원한 실정이다.
결론적으로, 블록체인 기술의 실용화를 앞당기고 활용 범위를 확대시키기 위해서는, 블록체인 기반 시스템의 성능 이슈를 해결하는 것이 무엇보다 급선무이다.
한국공개특허 제10-2018-0014534호 (2018.02.09 공개)
본 개시의 몇몇 실시예를 통해 해결하고자 하는 기술적 과제는, 블록체인 기반 시스템의 트랜잭션 처리 성능을 향상시키기 위해 배치 프로세싱 기반으로 블록체인 트랜잭션에 대한 가속 처리를 수행하는 장치 및 그 장치에서 수행되는 방법을 제공하는 것이다.
본 개시의 몇몇 실시예를 통해 해결하고자 하는 다른 기술적 과제는, 배치 사이즈(batch size)를 블록체인 네트워크의 상황 또는 블록체인 네트워크에 가해지는 트래픽의 양에 따라 조절함으로써, 트랜잭션 실패에 따른 리스크를 최소화하고, 트랜잭션 합의 지연시간을 최소화하며, 트랜잭션 처리 성능은 최대화할 수 있는 장치 및 그 장치에서 수행되는 방법을 제공하는 것이다.
본 개시의 몇몇 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는, 블록체인 네트워크가 혼잡 상태에 있는지 여부를 신속하고 정확하게 판별할 수 있는 장치 및 그 장치에서 수행되는 방법을 제공하는 것이다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 장치는, 하나 이상의 인스트럭션들(instructions)을 저장하는 메모리, 블록체인 네트워크(blockchain network)와 통신하는 통신 인터페이스 및 상기 하나 이상의 인스트럭션들을 실행함으로써, 상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻고, 상기 모니터링 정보를 기초로 배치 사이즈(batch size)를 조절하며, 상기 조절된 배치 사이즈를 이용하여 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 프로세서를 포함할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 블록체인 네트워크가 혼잡 상태에 있다는 판단에 응답하여, 상기 모니터링 정보를 기초로 상기 배치 사이즈를 조절할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 입력 트랜잭션 수를 고려하여 상기 배치 사이즈를 조절할 수 있다. 이 때, 상기 프로세서는, 트랜잭션 처리 요청 단말의 블록 사이즈를 더 고려하여 상기 배치 사이즈를 조절할 수도 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 모니터링 정보를 기초로 트랜잭션의 실패 확률을 결정하고, 상기 결정된 실패 확률을 기초로 상기 배치 사이즈를 조절할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 모니터링 정보를 기초로 상기 실패 확률의 확률 분포를 추정하고, 상기 추정된 확률 분포에 기반하여 상기 실패 확률을 결정할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 결정된 실패 확률을 기초로 복수의 배치 사이즈에 대한 프로세싱 효율성 점수를 산출하고, 상기 산출된 프로세싱 효율성 점수를 기초로 상기 복수의 배치 사이즈 중 특정 배치 사이즈를 선택할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃(timeout)으로 인해 발생된 경우, 상기 결정된 실패 확률을 상향 조정하고, 상기 조정된 실패 확률을 기초로 상기 배치 사이즈를 조절할 수 있다.
몇몇 실시예에서, 개별 트랜잭션은 소정의 분류 기준에 따라 분류되어 대응되는 배치 큐에 삽입되고, 각각의 배치 큐는 대응되는 배치 사이즈를 가지며, 상기 프로세서는 배치 큐에 삽입된 개별 트랜잭션이 상기 배치 큐의 배치 사이즈에 도달한 경우 상기 배치 큐에 삽입된 개별 트랜잭션을 종합하여 배치 트랜잭션을 생성할 수 있다.
몇몇 실시예에서, 상기 프로세서는, 상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃(timeout)으로 인해 발생된 경우, 상기 결정된 실패 확률에 관계없이 상기 배치 사이즈를 감소시키거나 상기 배치 프로세싱 기능을 비활성화할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 방법은, 컴퓨팅 장치에서 블록체인 네트워크(blockchain network)와 연관된 하나 이상의 개별 트랜잭션을 가속 처리하는 방법에 있어서, 상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 단계, 상기 모니터링 정보를 기초로 배치 사이즈(batch size)를 조절하는 단계 및 상기 조절된 배치 사이즈를 이용하여 상기 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 단계를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 개시의 몇몇 실시예에 따른 컴퓨터 프로그램은, 컴퓨팅 장치와 결합되어, 블록체인 네트워크(blockchain network)에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 단계, 상기 모니터링 정보를 기초로 배치 사이즈(batch size)를 조절하는 단계 및 상기 조절된 배치 사이즈를 이용하여 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 단계를 실행시키기 위하여 컴퓨터로 판독 가능한 기록매체에 저장될 수 있다.
도 1은 본 개시의 몇몇 실시예에 따른 블록체인 기반 트랜잭션 처리 시스템을 나타내는 예시적인 구성도이다.
도 2는 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 장치의 배치 프로세싱 동작을 나타내는 예시도이다.
도 3은 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 장치와 블록체인 노드 간의 연동 관계를 설명하기 위한 예시도이다.
도 4는 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 장치를 나타내는 예시적인 블록도이다.
도 5 및 도 6은 본 개시의 몇몇 실시예에 따라 쓰기 타입의 트랜잭션이 처리되는 과정을 설명하기 위한 예시도이다.
도 7은 본 개시의 몇몇 실시예에 따라 읽기 타입의 트랜잭션이 처리되는 과정을 설명하기 위한 예시도이다.
도 8은 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 방법을 나타내는 예시적인 흐름도이다.
도 9는 본 개시의 다양한 실시예에서 참조될 수 있는 트랜잭션 실패 이벤트의 발생 원인을 설명하기 위한 예시도이다.
도 10은 도 8에 도시된 배치 사이즈 조절 단계 S200의 세부 프로세스를 설명하기 위한 예시적인 흐름도이다.
도 11 내지 도 13은 도 10에 도시된 실패 확률 기반 배치 사이즈 조절 단계 S290을 부연 설명하기 위한 도면이다.
도 14는 본 개시의 다양한 실시예에 따른 장치를 구현할 수 있는 예시적인 컴퓨팅 장치를 도시한다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 개시의 기술적 사상을 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
본 개시에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 개시의 몇몇 실시예에 따른 블록체인 기반 트랜잭션 처리 시스템을 나타내는 예시적인 구성도이다.
도 1에 도시된 바와 같이, 상기 트랜잭션 처리 시스템은 트랜잭션 가속 처리 장치(100)와 블록체인 네트워크(300)를 구성하는 복수의 블록체인 노드(200)를 포함할 수 있다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 구성 요소가 추가되거나 삭제될 수 있음은 물론이다. 또한, 도 1에 도시된 각각의 장치들은 기능적으로 구분되는 기능 요소들을 나타낸 것으로서, 적어도 하나의 장치들이 실제 물리적 환경에서는 서로 통합되는 형태로 구현될 수도 있음에 유의한다. 예를 들어, 트랜잭션 가속 처리 장치(100), 클라이언트 단말(400) 및/또는 블록체인 노드(200)는 동일한 물리적 컴퓨팅 장치 내에서 서로 다른 로직(logic)의 형태로 구현될 수도 있다. 즉, 트랜잭션 가속 처리 장치(100)는 블록체인 노드(200)로 동작할 수 있고, 상기 배치 프로세싱 기능은 클라이언트 단말(400) 측에서 구현될 수도 있다.
이하, 참조 번호 "200"은 각각 임의의 블록체인 노드를 지칭하는 의미로 사용하고, 블록체인 노드를 구별하여 지칭하는 경우에는 참조 번호 "200"에 알파벳(e.g. a, b, c)을 병기하도록 한다. 유사하게, 참조 번호 "400"도 임의의 클라이언트 단말을 지칭하는 의미로 사용하고, 클라이언트 단말을 구별하여 지칭하는 경우에는 참조 번호 "400"에 알파벳(e.g. a, b, c)을 병기하도록 한다. 또한, 설명의 편의상, 트랜잭션 가속 처리 장치(100)를 가속기(accelerator)로 약칭하도록 한다.
상기 트랜잭션 처리 시스템에서, 가속기(100)는 배치 프로세싱(batch processing)에 기반하여 트랜잭션에 대한 가속 처리를 수행하는 컴퓨팅 장치이다. 예를 들어, 도 2에 도시된 바와 같이, 가속기(100)는 클라이언트 단말(400)이 요청한 복수의 개별 트랜잭션(11, 13, 15)을 종합하여(aggregating) 배치 트랜잭션(17)을 생성하고, 블록체인 네트워크(300)와 연동하여 배치 트랜잭션(17)을 일괄 처리할 수 있다. 상기 배치 프로세싱에 관한 상세한 내용은 도 4 내지 도 7을 참조하여 후술하도록 한다.
상기 컴퓨팅 장치는, 노트북, 데스크톱(desktop), 랩탑(laptop) 등이 될 수 있으나, 이에 국한되는 것은 아니며 컴퓨팅 기능 및 통신 기능이 구비된 모든 종류의 장치를 포함할 수 있다. 다만, 대량의 트랜잭션 처리가 요청되는 환경이라면, 가속기(100)는 고성능의 서버급 컴퓨팅 장치로 구현되는 것이 바람직할 수 있다. 상기 컴퓨팅 장치의 일 예시는 도 14를 참조하도록 한다.
본 개시의 다양한 실시예에 따르면, 가속기(100)는 트랜잭션 실패 이벤트에 대한 모니터링 정보 및 입력되는 트랜잭션의 개수를 가리키는 부하(load) 정보 중 적어도 하나에 기초하여 배치 사이즈(batch size)를 조절할 수 있다. 상기 배치 사이즈는 배치 트랜잭션에 포함되는 개별 트랜잭션의 개수를 조절하는 값 또는 파라미터(parameter)를 의미할 수 있다.
가속기(100)는 상기 모니터링 정보 및 상기 부하 정보를 얻거나, 배치 프로세싱을 처리하기 위하여 모든 블록체인 노드(200)와 통신하거나, 블록체인 노드(200) 중 특정 기능을 담당하는 특수 노드와 통신할 수 있다. 상기 특수 노드는, 예를 들어 배서 노드(endorsement peer) 또는 앵커 노드(anchor peer)일 수 있다.
또한, 가속기(100)는 가속기의 동작만을 위한 개별적인 컴퓨팅 장치의 형태로 구현(stand-alone type)되는 것이 아니라, 다른 기능도 수행하는 서버 장치에 일부 소프트웨어 모듈로서 구현될 수도 있다. 상기 소프트웨어 모듈은 라이브러리(library)의 형태로 구현되고, 이 때 상기 라이브러리를 호출하는 소프트웨어가 동작함에 따라 본 발명의 몇몇 실시예에 따른 가속기의 기능이 동작하게 될 것이다.
또한, 가속기(100)는 서버 기능을 수행하지 않는 컴퓨팅 장치를 통하여 구현될 수도 있다. 예를 들어, 가속기(100)는 모바일 단말, 태블릿, 노트북, 디지털 티비, 스마트 월패드 및 디지털 도어락 등 컴퓨팅을 수행하기 위한 연산장치가 구비된 모든 형태의 클라이언트 컴퓨팅 장치를 통하여 구현될 수도 있을 것이다. 물론, 상기 클라이언트 컴퓨팅 장치는 네트워크에 연결되는 기능이 구비된 것이어야 할 것이다. 그리고, 상기 클라이언트 컴퓨팅 장치는 블록체인 노드일 수도 있다. 이 때, 상기 클라이언트 컴퓨팅 장치는 배서 노드(endorsement peer) 또는 앵커 노드(anchor peer) 등 특수목적 블록체인 노드일 수도 있으나, 단순히 블록체인 데이터를 분산 저장하는 일반 블록체인 노드일 수도 있다.
본 실시예에 대한 보다 자세한 설명은 도 8 내지 도 13을 참조하여 후술하도록 한다.
가속기(100)의 구성 및 동작에 대한 보다 자세한 설명은 도 4 이하의 도면을 참조하여 상세하게 설명하도록 한다.
도 1은 1대의 가속기(100)가 배치된 것을 예로써 도시하고 있으나, 가속기(100)의 대수와 배치 형태는 실시예에 따라 다양하게 설계되고 선택될 수 있다. 즉, 다른 몇몇 실시예에서는, 복수의 가속기(e.g. 도 3의 100a, 100b)가 배치될 수도 있다. 그렇게 함으로써, 상기 트랜잭션 처리 시스템의 성능, 안정성 및 가용성 등이 더욱 향상될 수 있다. 이때, 가속기(100)와 블록체인 노드(200) 간의 연동 관계는 아래의 실시예와 같이 다양한 형태로 구성될 수 있다.
몇몇 실시예에서, 복수의 가속기(100) 각각은 모든 블록체인 노드(200)와 연동되며, 클라이언트 단말(400)이 요청한 트랜잭션은 복수의 가속기(100)를 통해 분산 처리될 수 있다. 즉, 클라이언트 단말(400)이 요청한 트랜잭션은 어느 하나의 가속기(100)로 분배되고, 가속기(100)는 상기 트랜잭션을 처리하게 된다. 이 때, 각각의 가속기(100)는 상기 모니터링 정보 및 상기 부하 정보를 얻거나, 배치 프로세싱을 처리하기 위하여 모든 블록체인 노드(200)와 통신하거나, 블록체인 노드(200) 중 배서 노드(endorsement peer) 또는 앵커 노드(anchor peer)와 같은 특수 노드와 통신할 수 있다. 또한, 각각의 가속기(100)는 효율적인 배치 프로세싱을 위하여 상기 모니터링 정보 또는 상기 부하 정보를 서로 공유할 수도 있다. 이 때, 각각의 가속기(100)는 P2P(peer-to-peer) 통신을 통하여 정보를 공유하거나, 가속기(100)에게 읽기/쓰기 권한이 부여된 공유 데이터베이스를 매개로 하여 정보를 공유할 수 있다.
다른 몇몇 실시예에서, 도 3에 도시된 바와 같이, 복수의 가속기(100a, 100b) 각각은 일부의 블록체인 노드(201 or 203)와 연동될 수 있다. 예를 들어, 제1 가속기(100a)는 제1 블록체인 노드 그룹(201)과 연동되고, 제2 가속기(100b)는 제2 블록체인 노드 그룹(203)과 연동될 수 있다. 본 실시예에서, 가속기(100a, 100b)는 자신의 전용 블록체인 노드 그룹(201, 203)과 연동하여 요청된 트랜잭션(21 내지 25)을 배치 형태(e.g. 27, 29)로 처리하게 된다. 몇몇 실시예에서는, 제1 블록체인 노드 그룹(201)은 블록체인 네트워크(300)의 제1 채널(channel)에 대응되고, 제2 블록체인 노드 그룹(203)은 블록체인 네트워크(300)의 제2 채널에 대응되는 것일 수 있다. 즉, 블록체인 네트워크(300)의 각 채널 별로 전용의 가속기(e.g. 100a, 100b)가 할당될 수도 있다. 물론, 실시예에 따라, 각 블록체인 노드(200) 별로 전용의 가속기(100)가 할당될 수도 있다.
몇몇 실시예에서는, 소정의 장치(미도시)가 클라이언트 단말(400)로 가속기(e.g. 도 3의 100a, 100b)의 목록을 제공할 수도 있다. 그리고, 상기 장치(미도시)는 각 가속기(e.g. 도 3의 100a, 100b)의 부하(load) 정보를 함께 제공할 수 있다. 상기 부하 정보는 가속기(e.g. 도 3의 100a, 100b)의 부하 정보(e.g. CPU 사용률)와 각 가속기(e.g. 도 3의 100a, 100b)와 연동된 블록체인 노드들(e.g. 201, 203)의 부하 정보를 포함할 수 있다. 본 실시예에서, 클라이언트 단말(400)은 가속기의 목록과 부하 정보에 기초하여 특정 가속기(e.g. 도 3의 100a, 100b)를 선택할 수 있으며, 선택된 가속기(e.g. 도 3의 100a, 100b)를 통해 요청한 트랜잭션이 처리될 수 있다. 상기 장치(미도시)의 기능은 가속기(e.g. 도 3의 100a, 100b)에 구비될 수도 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
상기 트랜잭션 처리 시스템에서, 블록체인 노드(200)는 P2P 구조의 블록체인 네트워크(300)를 구성하고, 블록체인 프로토콜에 따라 동작하는 노드이다. 각 블록체인 노드(200)는 레저(ledger)를 관리할 수 있다. 몇몇 실시예에서, 상기 레저는 트랜잭션 데이터가 기록된 블록체인과 상태 데이터(e.g. 상태 키와 대응되는 상태 값)가 저장된 상태 DB(state database)를 포함할 수 있다. 그러나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다. 블록체인 노드(200)는 블록체인을 통해 각종 스마트 컨트랙트, 트랜잭션 데이터를 공유할 수 있고, 합의 프로세스를 통해 트랜잭션의 무결성 및 보안성을 보장할 수 있다.
본 개시의 다양한 실시예에서, 블록체인 노드(200)는 배치 트랜잭션에 대한 일괄 합의 프로세스를 수행할 수 있다. 구체적으로, 블록체인 노드(200)는 배치 트랜잭션에 포함된 개별 트랜잭션의 스마트 컨트랙트를 실행하고, 스마트 컨트랙트의 실행 결과에 대해 서명을 하며, 서명과 실행 결과를 블록에 기록하고 전파하는 등 일련의 합의 프로세스를 일괄적으로 수행할 수 있다. 상기 합의 프로세스의 구체적인 과정은 블록체인 기반 시스템의 구현 방식에 따라 달라질 수 있을 것이므로, 본 개시의 기술적 범위는 특정 형태의 합의 프로세스에 제한되지 않는다.
본 개시의 다양한 실시예에서, 블록체인 노드(200)는 스마트 컨트랙트 기반의 프로세싱을 통해 배치 트랜잭션의 실행 결과를 개별 트랜잭션 별(또는 상태 데이터 별)로 구분하고, 구분된 실행 결과를 이용하여 레저를 갱신할 수 있다. 이에 대한 보다 자세한 설명은 도 5 내지 도 7을 참조하여 후술하도록 한다.
한편, 본 개시의 몇몇 실시예에 따르면, 복수의 블록체인 노드(200)는 서로 다른 타입의 노드로 구성될 수 있다. 또한, 서로 다른 타입의 블록체인 노드는 적어도 일부는 서로 다른 동작을 수행할 수 있다. 예를 들어, 제1 타입의 블록체인 노드(e.g. 하이퍼레저 패브릭의 “endorsing peer”)는 스마트 컨트랙트를 실행하고, 실행 결과에 대한 서명을 수행할 수 있다. 그리고, 제2 타입의 블록체인 노드(e.g. 하이퍼레저 패브릭의 “orderer”)는 스마트 컨트랙트의 실행 결과에 대한 주요 합의 프로세스를 수행하거나, 블록에 상기 실행 결과를 기록하고 전파하는 동작을 수행할 수 있다. 이하에서는, 상기 제2 타입의 블록체인 노드를 상기 제1 타입의 블록체인 노드와 구별하기 위해 “합의 노드”로 명명하도록 한다. 합의 노드가 존재하는 환경에서 트랜잭션이 처리되는 과정에 대한 설명은 도 6을 참조하도록 한다.
상기 트랜잭션 처리 시스템에서, 클라이언트 단말(400)은 트랜잭션에 대한 처리 서비스를 제공받는 단말이다. 클라이언트 단말(400)은 트랜잭션을 생성하고, 생성된 트랜잭션을 가속기(100) 및/또는 블록체인 네트워크(300)로 전송하며, 가속기(100) 및/또는 블록체인 네트워크(300)로부터 트랜잭션에 대한 처리 결과를 제공받을 수 있다.
본 개시의 다양한 실시예에서, 클라이언트 단말(400), 가속기(100) 및 블록체인 노드(200)는 네트워크를 통해 통신할 수 있다. 상기 네트워크는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 이동 통신망(mobile radio communication network), Wibro(Wireless Broadband Internet) 등과 같은 모든 종류의 유/무선 네트워크로 구현될 수 있다.
지금까지 도 1 내지 도 3을 참조하여 본 개시의 몇몇 실시예에 따른 블록체인 기반 트랜잭션 처리 시스템에 대하여 설명하였다. 이하에서는, 도 4 내지 도 7을 참조하여 본 개시의 몇몇 실시예에 따른 가속기(100)의 구성과 배치 프로세싱 기능에 대하여 상세하게 설명하도록 한다.
도 4는 본 개시의 몇몇 실시예에 따른 가속기(100)를 나타내는 예시적인 블록도이다.
도 4에 도시된 바와 같이, 가속기(100)는 분류기(110), 배치 생성기(130), 핸들러(150), 결과 제공기(170) 및 배치 사이즈 조절기(190)를 포함할 수 있다. 다만, 도 4에는 본 개시의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 개시가 속한 기술분야의 통상의 기술자라면 도 4에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다. 또한, 도 4에 도시된 가속기(100)의 각각의 구성 요소들은 기능적으로 구분되는 기능 요소들을 나타낸 것으로서, 적어도 하나의 구성 요소가 실제 물리적 환경에서는 서로 통합되는 형태로 구현될 수도 있음에 유의한다.
각 구성 요소를 살펴보면, 분류기(110)는 클라이언트 단말(400)이 요청한 개별 트랜잭션을 소정의 분류 기준에 따라 분류한다. 이때, 상기 소정의 분류 기준은 스마트 컨트랙트의 식별자, 채널 식별자 및/또는 트랜잭션의 타입, 트랜잭션의 중요도 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 상기 트랜잭션의 타입은 쓰기 타입과 읽기 타입을 포함할 수 있다. 그러나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니고, 트랜잭션 타입은 다양한 방식으로 정의될 수 있다.
보다 자세하게는, 분류기(110)는 각 개별 트랜잭션을 채널, 스마트 컨트랙트, 트랜잭션 타입, 및/또는 중요도 별로 분류(e.g. 제1 채널의 제1 스마트 컨트랙트를 이용하는 쓰기 타입 트랜잭션으로 분류)하고, 분류 결과를 배치 생성기(130)로 제공할 수 있다.
다음으로, 배치 생성기(130)는 분류기(110)에 의해 분류된 복수의 개별 트랜잭션을 종합하여 배치 트랜잭션을 생성한다. 구체적으로, 배치 생성기(130)는 상기 분류된 개별 트랜잭션 각각을 분류 결과에 대응되는 배치 큐(batch queue)에 삽입한다. 예를 들어, 배치 생성기(130)는 제1 분류 결과로 분류된 제1 개별 트랜잭션을 제1 배치 큐에 삽입하고, 제2 분류 결과로 분류된 제2 개별 트랜잭션을 제2 배치 큐에 삽입할 수 있다. 또한, 배치 생성기(130)는 특정 배치 큐(e.g. 제1 배치 큐 or 제2 배치 큐)가 소정의 배치 생성 조건을 만족한다는 판정에 응답하여 상기 특정 배치 큐에 포함된 개별 트랜잭션을 종합하여 배치 트랜잭션을 생성할 수 있다.
본 개시의 몇몇 실시예에서, 각각의 배치 큐는 모두 동일한 배치 사이즈를 가질 수 있다. 즉, 모든 배치 큐에 일괄 적용되는 전역 배치 사이즈가 본 개시의 몇몇 실시예에서 일부의 배치 큐에 적용되거나, 모든 배치 큐에 적용될 수 있다. 상기 전역 배치 사이즈는 시스템 전체적으로 유입되는 입력 트랜잭션 수 및 블록체인 네트워크의 혼잡 여부에 대한 모니터링 정보 중 적어도 일부를 이용하여 결정될 수 있다.
또한, 일부 배치 큐는 상기 전역 배치 사이즈가 아닌 상기 배치 큐에 특정된(specific) 배치 사이즈를 가질 수 있다. 상기 배치 큐에 특정된 배치 사이즈는 상기 배치 큐에 유입되는 입력 트랜잭션 수를 이용하여 결정되거나, 상기 전역 배치 사이즈가 상기 배치 큐에 유입되는 입력 트랜잭션 수에 기반하여 조정됨으로써 얻어질 수 있다.
상기 배치 큐는 배치 트랜잭션을 생성하기 전까지 트랜잭션을 보관하는 장소를 의미하며, 일종의 트랜잭션 버퍼(buffer) 또는 트랜잭션 풀(pool)의 개념으로 이해될 수 있다. 버퍼 큐의 명칭에서 알 수 있듯이, 상기 배치 큐는 큐 기반의 자료구조로 구현될 수 있을 것이나, 배치 큐의 구현 방식은 다양할 수 있으므로, 본 개시의 기술적 범위가 배치 큐의 구현 방식에 한정되는 것은 아니다.
본 개시의 다양한 실시예에서, 상기 소정의 배치 생성 조건은 배치 타이머 만료 여부, 배치 사이즈(즉, 트랜잭션의 개수), 전체 트랜잭션의 데이터 크기, 트랜잭션 간의 연관성 존재 유무 등에 기초한 조건 중 적어도 하나를 포함할 수 있다. 이하, 이해의 편의를 제공하기 위해, 각 배치 생성 조건에 따라 배치 트랜잭션이 생성되는 과정을 부연 설명하도록 한다.
제1 실시예에서, 배치 생성기(130)는 배치 타이머의 만료 이벤트에 응답하여 특정 배치 큐의 개별 트랜잭션을 종합하여 배치 트랜잭션을 생성할 수 있다. 이때, 배치 타이머는 배치 큐 별로 존재할 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 각 배치 큐의 타이머 주기는 동일할 수도 있고, 상이할 수도 있다. 예를 들어, 우선순위가 높은 배치 큐의 타이머 주기는 상대적으로 짧게 설정되고, 우선순위가 낮은 배치 큐의 타이머 주기는 상대적으로 길게 설정될 수 있다. 이를 통해, 차등적인 트랜잭션 처리 서비스가 제공될 수 있다. 본 실시예에 따르면, 배치 프로세싱에 따른 트랜잭션 대기 시간이 일정 시간(e.g. 배치 타이머 주기) 내로 제한될 수 있다. 따라서, 배치 프로세싱으로 인해 일부 개별 트랜잭션의 처리가 지연되는 문제가 완화될 수 있다.
제2 실시예에서, 배치 생성기(130)는 특정 배치 큐에 포함된 전체 트랜잭션의 데이터 크기가 임계 값 이상이라는 판정에 응답하여 배치 트랜잭션을 생성할 수 있다. 이때, 상기 전체 트랜잭션의 데이터 크기는 개별 트랜잭션의 데이터 크기의 합으로 산출될 수 있고, 상기 개별 트랜잭션의 데이터 크기는 예를 들어 블록체인에 기록되는 트랜잭션 데이터의 크기를 의미하는 것일 수 있다. 그러나, 본 개시의 범위가 이에 한정되는 것은 아니다. 상기 임계 값은 기 설정된 고정 값 또는 상황에 따라 변동되는 변동 값일 수 있다. 예를 들어, 상기 임계 값은 블록의 최대 크기에 기초하여 설정되는 고정 값일 수 있다. 다른 예를 들어, 상기 임계 값은 해당 배치 큐의 우선순위에 기초하여 설정된 고정 값 또는 변동 값일 수 있다. 또 다른 예를 들어, 상기 임계 값은 배치 생성기(130)의 부하가 클수록 더 큰 값으로 설정되는 변동 값일 수 있다. 본 실시예에 따르면, 하나의 배치 트랜잭션에 지나치게 많은 데이터가 포함되는 것이 방지될 수 있는 바, 배치 트랜잭션의 처리 실패 확률이 감소될 수 있다.
제3 실시예에서, 배치 생성기(130)는 특정 배치 큐에 포함된 개별 트랜잭션의 개수가 배치 사이즈를 만족한다는 판정에 응답하여 배치 트랜잭션을 생성할 수 있다. 이때, 상기 배치 사이즈는 가변적으로 조절될 수 있는데, 이에 대한 자세한 설명은 도 8 내지 도 13을 참조하여 후술하도록 한다.
제4 실시예에서, 배치 생성기(130)는 개별 트랜잭션 간의 연관성에 기초하여 배치 트랜잭션을 생성할 수 있다. 구체적으로, 배치 생성기(130)는 특정 트랜잭션의 연관 트랜잭션이 존재하는지 여부를 판정한다. 이때, 상기 연관 트랜잭션은 상기 특정 트랜잭션과 연관성이 존재하는 트랜잭션을 의미하는 것으로, 예를 들어, 상기 특정 트랜잭션과 동일한 상태 데이터의 식별키(즉, 상태 키)를 포함하는 트랜잭션(e.g. MVCC 충돌을 야기하는 트랜잭션)일 수 있다. 즉, 상기 특정 트랜잭션과 동일한 상태 데이터에 접근하는 트랜잭션들은 상기 특정 트랜잭션과 연관성이 존재하는 연관 트랜잭션으로 판정될 수 있다. 연관 트랜잭션이 존재한다고 판정된 경우, 배치 생성기(130)는 다양한 방식으로 배치 프로세싱을 수행할 수 있다. 구체적인 예시는 다음과 같다.
제4-1 실시예에서, 배치 생성기(130)는 연관성이 존재하는 제1 개별 트랜잭션 및 제2 개별 트랜잭션을 서로 다른 배치 트랜잭션으로 생성하여 처리할 수 있다.
제4-2 실시예에서, 배치 생성기(130)는 연관성이 존재하는 제1 개별 트랜잭션 및 제2 개별 트랜잭션을 제외한 나머지 개별 트랜잭션을 기초로 배치 트랜잭션을 생성하고, 상기 제1 개별 트랜잭션 및 상기 제2 개별 트랜잭션을 개별적으로 처리할 수 있다.
제4-3 실시예에서, 배치 생성기(130)는 연관성이 존재하는 제1 개별 트랜잭션 및 제2 개별 트랜잭션 중에서 상기 제1 개별 트랜잭션은 배치 형태로 처리하고, 상기 제2 개별 트랜잭션은 개별적으로 처리할 수 있다. 즉, 배치 생성기(130)는 트랜잭션의 충돌이 일어나지 않는 범위 내에서 연관성이 존재하는 복수의 개별 트랜잭션 중 일부를 배치 형태로 처리할 수 있다.
제4-4 실시예에서, 배치 생성기(130)는 연관성이 존재하는 제1 개별 트랜잭션과 제2 개별 트랜잭션이 결합 가능한지 여부를 판정하고, 결합 가능하다는 판정에 응답하여 상기 제1 개별 트랜잭션과 상기 제2 개별 트랜잭션이 결합된 제3 개별 트랜잭션을 생성할 수 있다. 여기서, 상기 제3 개별 트랜잭션의 실행 결과가 상기 제1 개별 트랜잭션 및 상기 제2 개별 트랜잭션을 실행한 결과와 동일하다면, 상기 제3 개별 트랜잭션을 생성하는 방법은 어떠한 방식으로 수행되더라도 무방하다. 또한, 상기 제3 개별 트랜잭션은 배치 형태로 처리될 수 있고, 개별적으로 처리될 수도 있다.
상술한 실시예들에 따르면, 트랜잭션 간의 연관성을 고려하여 충돌이 일어나지 않는 범위 내에서 배치 프로세싱이 이루어질 수 있다. 이에 따라, 트랜잭션 처리의 안정성이 떨어지는 문제가 완화될 수 있다. 이상의 실시예에서, 이해의 편의를 위해, 2개의 트랜잭션 간에 연관성이 존재하는 경우를 가정하여 설명하였으나, 당해 기술 분야의 통상의 기술자라면 3개 이상 다수의 트랜잭션 사이에 연관성이 존재하는 경우에도 동일 또는 유사한 방식으로 처리될 수 있음을 자명하게 이해할 수 있을 것이다.
제5 실시예에서, 배치 생성기(130)는 전술한 실시예들의 다양한 조합에 기초하여 배치 트랜잭션을 생성할 수 있다. 가령, 배치 생성기(130)는 배치 사이즈뿐만 아니라 배치 타이머를 더 이용하여 배치 트랜잭션을 생성할 수 있다. 구체적으로, 배치 생성기(130)는 특정 배치 큐의 개별 트랜잭션 개수가 배치 사이즈 이상이라는 판정에 응답하여, 배치 트랜잭션을 생성할 수 있다. 또한, 상기 특정 배치 큐의 개별 트랜잭션 개수가 배치 사이즈 미만인 경우라 하더라도, 배치 생성기(130)는 배치 타이머의 만료 이벤트에 응답하여 배치 트랜잭션을 생성할 수 있다. 그렇게 함으로써, 배치 프로세싱에 따른 처리 지연이 최소화됨과 동시에 트랜잭션 처리 성능이 향상될 수 있다.
다음으로, 핸들러(150)는 블록체인 네트워크(300)와 연동하여 개별 트랜잭션 또는 배치 트랜잭션을 일괄 처리한다. 핸들러(150)는 송신 핸들러(151) 및 수신 핸들러(153)를 포함할 수 있다.
송신 핸들러(151)는 배치 트랜잭션 등의 데이터에 대한 전반적인 송신 처리를 수행한다. 구체적으로, 송신 핸들러(151)는 배치 트랜잭션이 생성됨에 응답하여, 상기 생성된 배치 트랜잭션을 블록체인 네트워크(300)로 전달할 수 있다. 또한, 송신 핸들러(151)는 블록체인 노드에 의해 서명된 배치 트랜잭션의 실행 결과(e.g. endorsement 결과)를 합의 노드로 전송하거나, 처리 실패된 배치 트랜잭션을 재시도하는 등의 동작을 더 수행할 수 있다.
수신 핸들러(153)는 배치 트랜잭션의 처리 결과 등과 같이 블록체인 네트워크(300)로부터 수신되는 데이터에 대한 전반적인 처리를 수행한다. 구체적으로, 수신 핸들러(153)는 개별 트랜잭션 또는 배치 트랜잭션에 대한 처리 결과를 수신함에 응답하여 상기 처리 결과를 결과 제공기(170)로 제공한다. 또한, 수신 핸들러(153)는 블록체인 네트워크(300)로부터 서명된 배치 트랜잭션의 처리 결과를 수신하고, 이를 송신 핸들러(151)로 전달하는 등의 동작을 더 수행할 수 있다.
핸들러(150)에 대한 추가적인 설명은 도 5 내지 도 7에 대한 설명 내용을 더 참조하도록 한다.
다음으로, 결과 제공기(170)는 수신 핸들러(153)로부터 개별 트랜잭션 또는 배치 트랜잭션에 대한 처리 결과를 수신하고, 상기 처리 결과를 클라이언트 단말(400)로 제공한다. 보다 자세하게는, 결과 제공기(170)는 배치 트랜잭션에 대한 처리 결과를 개별 트랜잭션 단위로 구분하고, 구분된 처리 결과를 각각의 클라이언트 단말(400)로 제공할 수 있다. 예를 들어, 결과 제공기(170)는 클라이언트 단말(400)의 식별자, 트랜잭션 식별자, 클라이언트 단말(400)의 주소 등으로 구성된 참조 테이블을 생성하고, 상기 참조 테이블을 이용하여 개별 트랜잭션의 처리 결과를 해당 클라이언트 단말(400)로 제공할 수 있다. 다만, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
다음으로, 배치 사이즈 조절기(190)는 블록체인 네트워크(300)가 혼잡 상태에 있는지 여부에 기초하여 배치 사이즈를 조절한다. 또한, 배치 사이즈 조절기(190)는 배치 프로세싱 기능을 활성화하거나 비활성화할 수 있다. 여기서, 배치 프로세싱 기능의 비활성화는 배치 사이즈를 “1”로 설정함으로써 수행될 수 있을 것이나, 얼마든지 다른 방식으로 수행되더라도 무방하다.
중복된 설명을 배제하기 위해, 배치 사이즈 조절기(190)의 동작에 대한 보다 자세한 설명은 도 8의 이하의 도면을 참조하여 상세하게 설명하도록 한다.
도 4에 도시된 각 구성 요소(110 내지 190)는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
한편, 본 개시의 다른 몇몇 실시예에서는, 가속기(100)의 배치 프로세싱 기능이 클라이언트 단말(400) 측에 구현될 수도 있다. 예를 들어, 특정 클라이언트 단말(400)이 복수의 개별 트랜잭션을 생성하면, 직접 상기 복수의 개별 블록체인 트랜잭션을 종합하여 배치 트랜잭션을 생성할 수 있다. 다른 예로써, 특정 클라이언트 단말(400)이 다른 클라이언트 단말로부터 복수의 개별 트랜잭션을 수신하면, 상기 복수의 개별 트랜잭션을 종합하여 배치 트랜잭션을 생성할 수도 있다.
이하에서는, 보다 이해의 편의를 제공하기 위해, 가속기(100)를 통해 쓰기 타입 트랜잭션과 읽기 타입 트랜잭션이 처리되는 과정에 대하여 도 5 내지 도 7을 참조하여 설명하도록 한다. 도 5 내지 도 7은 배치 사이즈가 “3”인 경우를 예로써 도시하고 있다.
도 5는 본 개시의 몇몇 실시예에 따라 쓰기 타입 트랜잭션이 처리되는 과정을 예시한다.
도 5에 도시된 바와 같이, 가속기(100)는 복수의 쓰기 타입 트랜잭션(Txw1, Txw2, Txw3)을 종합하여 배치 트랜잭션(50)을 생성할 수 있다(①, ②). 자세하게는, 분류기(110)의 분류 결과에 따라 배치 생성기(130)가 쓰기 타입 트랜잭션(Txw1, Txw2, Txw3)을 동일한 배치 큐에 삽입하고, 상기 배치 큐에 삽입된 쓰기 타입 트랜잭션(Txw1, Txw2, Txw3)의 개수가 배치 사이즈를 만족한다는 판정에 응답하여 배치 트랜잭션(50)을 생성할 수 있다.
다음으로, 가속기(100)는 블록체인 네트워크(300)로 배치 트랜잭션(50)의 처리를 요청할 수 있다(③). 그러면, 블록체인 네트워크(300)를 구성하는 블록체인 노드(200a, 200b)가 배치 트랜잭션(50)에 대한 합의 프로세스를 수행하고, 배치 트랜잭션(50)의 실행 결과를 레저(230a, 230b) 상에 기록할 수 있다(④).
도 5에 도시된 바와 같이, 각 블록체인 노드(230a, 230b)는 배치 트랜잭션(50)을 처리하기 위한 처리 모듈(210a, 210b)를 포함할 수 있다. 처리 모듈(210a, 210b)은 스마트 컨트랙트를 이용하여 배치 트랜잭션(50)의 실행 결과를 트랜잭션 별(또는 상태 데이터 별)로 구분하고, 구분된 실행 결과를 기초하여 레저(e.g. 블록체인, 상태 DB)를 갱신하는 동작을 수행할 수 있다. 이때, 배치 트랜잭션(50)의 실행 결과는 블록체인 노드의 서명(signature), 개별 트랜잭션의 식별자, 상태 데이터의 식별키(A, B, C)와 값(1, 2, 3) 등을 포함할 수 있다. 따라서, 처리 모듈(210a, 210b)은 식별키(A, B, C) 및/또는 트랜잭션의 식별자를 이용하여 배치 트랜잭션(50)의 실행 결과를 트랜잭션 별(또는 상태 별)로 구분할 수 있다. 이외에도, 처리 모듈(210a, 210b)은 읽기 타입의 트랜잭션을 기초로 생성된 배치 트랜잭션에 대한 처리를 더 수행할 수 있는데, 이에 대한 설명은 도 7을 참조하여 후술하도록 한다.
다음으로, 가속기(100)는 블록체인 네트워크(300)로부터 배치 트랜잭션(50)에 대한 처리 결과를 수신하고, 수신된 처리 결과를 해당 클라이언트 단말(400)로 제공할 수 있다(⑤, ⑥).
이때, 상기 처리 결과가 실패를 가리키는 경우, 가속기(100)의 핸들러(150)는 배치 트랜잭션(50)의 처리를 재시도할 수 있다.
도 6은 하이퍼레저 패브릭과 같이 별도의 합의 노드가 존재하는 블록체인 기반 시스템에서 쓰기 타입의 배치 트랜잭션이 처리되는 과정을 예시하고 있다.
도 6에 도시된 바와 같이, 가속기(100)는 배치 트랜잭션(40)을 생성하고, 생성된 배치 트랜잭션(40)을 블록체인 노드(201)로 전송할 수 있다(②, ③). 또한, 가속기(100)는 블록체인 노드(201)로부터 배치 트랜잭션(40)의 실행 결과를 수신할 수 있다(④-1). 상기 실행 결과는, 전술한 바와 같이, 배치 트랜잭션(40)에 대한 블록체인 노드(201)의 서명, 상태 데이터의 식별키(A, B, C)와 값(1, 2, 3) 등을 포함할 수 있다.
다음으로, 가속기(100)는 상기 수신된 실행 결과를 별도의 합의 노드(205)에게 제출(submit)할 수 있다(④-2). 그러면, 합의 노드(205)는 블록체인 노드(201)의 실행 결과를 토대로 배치 트랜잭션(40)을 검증하고, 상기 실행 결과를 신규 블록에 기록하며, 신규 블록을 블록체인 네트워크(300) 상에 전파할 수 있다(④-3, ④-4). 마지막으로, 신규 블록을 수신한 각 블록체인 노드(201, 203)는 처리 모듈(211)를 통해 배치 트랜잭션(40)의 실행 결과를 트랜잭션(또는 상태 데이터) 별로 구분하고, 구분된 실행 결과를 바탕으로 레저를 갱신할 수 있다(④-5).
도 5 및 도 6을 참조하여 설명한 바와 같이, 가속기(100)를 통해 트랜잭션이 처리되는 경우, 복수의 트랜잭션이 배치 프로세싱을 통해 일괄 처리될 수 있다. 즉, 개별 트랜잭션 단위로 합의 프로세스가 수행되는 것이 아니라, 배치 트랜잭션 단위로 합의 프로세스가 수행됨으로써, 복수의 트랜잭션이 일괄 처리될 수 있다. 이에 따라, 트랜잭션 처리 성능이 크게 향상될 수 있다. 이상적인 환경이라면, 트랜잭션 처리 성능은 배치 사이즈에 비례하여 향상될 수 있을 것이다.
이하에서는, 본 개시의 몇몇 실시예에 따라 읽기 타입 트랜잭션이 처리되는 과정을 도 7을 참조하여 설명하도록 한다.
도 7에 도시된 바와 같이, 가속기(100)는 읽기 타입 트랜잭션(TxR1, TxR2, TxR3)을 종합하여 배치 트랜잭션(50)을 생성하고, 블록체인 네트워크(300)로 배치 트랜잭션(50)의 처리를 요청할 수 있다(①, ②, ③).
상기 요청을 수신한 블록체인 노드(200a)는 처리 모듈(210a)을 통해 배치 트랜잭션(50)을 트랜잭션 별(또는 상태 데이터 별)로 구분하고, 레저에 기록된 상태 데이터(A, B, C)를 조회할 수 있다(④). 상기 구분 과정은 트랜잭션 식별자 및/또는 상태 데이터의 식별키(A, B, C)에 기초하여 스마트 컨트랙트를 통해 수행될 수 있다.
다음으로, 가속기(100)는 블록체인 노드(200a)로부터 배치 트랜잭션(50)의 처리 결과(즉, 조회된 상태 데이터의 값)를 수신하고, 처리 결과를 해당 클라이언트 단말(400)로 제공할 수 있다(⑤, ⑥).
이때, 상기 처리 결과가 실패를 가리키는 경우, 가속기(100)의 핸들러(150)는 배치 트랜잭션(50)의 처리를 재시도할 수 있다.
지금까지 도 7을 참조하여 가속기(100)를 통해 읽기 타입의 트랜잭션이 처리되는 과정에 대하여 설명하였다. 상술한 바에 따르면, 복수의 읽기 타입의 트랜잭션이 배치 형태로 일괄 처리될 수 있는 바, 트랜잭션 처리 성능이 크게 향상될 수 있다.
지금까지 도 5 내지 도 7을 참조하여 본 개시의 몇몇 실시예에 따른 가속기(100)의 구성과 배치 프로세싱 기능에 대하여 설명하였다. 이하에서는, 도 8 내지 도 13을 참조하여 배치 사이즈 조절 기능에 관하여 상세하게 설명하도록 한다.
도 8은 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 방법을 나타내는 예시적인 흐름도이다. 도 8은 도 1에 예시된 시스템에서 트랜잭션 가속 처리 방법이 수행되는 흐름을 예시하고 있다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 8에 도시된 바와 같이, 상기 트랜잭션 가속 처리 방법은 블록체인 네트워크(300)에 대한 모니터링 정보를 획득하는 단계 S100에서 시작된다. 상기 모니터링 정보는 트랜잭션(e.g. 배치 트랜잭션)의 처리 소요 시간(즉, 응답 시간), 트랜잭션 실패 이벤트에 대한 정보 등을 포함할 수 있다. 이외에도, 상기 모니터링 정보는 블록체인 네트워크(300)가 혼잡 상태에 있는지 여부를 판단하기 위한 다양한 정보를 더 포함할 수도 있다.
상기 처리 소요 시간은 개별 트랜잭션이 가속기(100)와 블록체인 네트워크(300)를 통해 처리 완료되는데 소요되는 전체 시간을 의미할 수 있다. 따라서, 상기 처리 소요 시간은 가속기(100)의 배치 큐에서 개별 트랜잭션이 대기한 시간과 배치 트랜잭션이 처리되는데 소요된 시간을 포함할 수 있다.
상기 트랜잭션 실패 이벤트는 블록체인 네트워크(300)에서 트랜잭션의 처리를 실패(e.g. 합의 실패)한 경우에 발생되며, 그 발생 원인은 다양할 수 있다. 예를 들어, 스마트 컨트랙트의 조건 불만족으로 인한 트랜잭션 검증(또는 승인) 실패(e.g. endorsement 실패), MVCC(Multi Version Concurrency Control) 충돌로 인한 합의 실패, 트랜잭션 타임아웃(timeout) 등의 원인으로 인해 트랜잭션 처리가 실패할 수 있다. 이하, 이해의 편의를 제공하기 위해, 트랜잭션 실패 이벤트의 발생 원인에 대하여 간략하게 소개하도록 한다.
트랜잭션 검증 실패로 인해 트랜잭션 실패 이벤트가 발생되는 일 예시는 도 9에 도시되어 있다. 도 9에 도시된 바와 같이, 가속기(100)가 3개의 개별 트랜잭션(61 내지 63)을 종합하여 배치 트랜잭션(64)을 생성하였다고 가정하자(①). 또한, 배치 트랜잭션(64)과 연관된 스마트 컨트랙트(65)에 소정의 조건(e.g. input < 10)이 설정되어 있다고 가정하자(②). 그러면, 블록체인 노드(200)는 스마트 컨트랙트(65)를 실행하여 배치 트랜잭션(64)의 처리를 시도할 수 있다(e.g. 하이퍼레저에서 트랜잭션의 실행 결과를 검증하고 서명하는 endorsement 과정 ③). 이때, 배치 트랜잭션(64)의 내용이 스마트 컨트랙트(65)의 조건을 만족하지 않는 경우가 있을 수 있다(66 참조). 이와 같은 경우, 트랜잭션 검증(또는 승인) 실패로 인해 트랜잭션 실패 이벤트가 발생되고, 블록체인 노드(200)는 상기 트랜잭션 실패 이벤트를 가속기(100)로 통지할 수 있다(④).
다음으로, MVCC 충돌로 인한 합의 실패는 MVCC 충돌을 발생시키는 트랜잭션(e.g. 동일한 상태 데이터의 변경을 야기하는 트랜잭션)들이 동일한 블록에 포함되는 경우에 발생될 수 있다. MVCC는 충돌 문제는 당해 기술 분야의 당업자에게 자명한 사항이므로, 이에 대한 자세한 설명은 생략하도록 한다.
다음으로, 트랜잭션 타임아웃은 블록체인 노드(200)의 장애(failure) 등으로 인해 트랜잭션의 처리 소요 시간이 미리 설정된 시간을 초과하는 경우를 의미할 수 있다. 트랜잭션 타임아웃은 상술한 발생 원인과는 달리 지속적으로 트랜잭션 실패를 야기할 수 있다. 예를 들어, 블록체인 노드(200)에 장애가 발생한 경우, 장애가 회복되기 전까지 해당 블록체인 노드(200)가 담당하는 모든 트랜잭션의 처리는 실패하게 된다. 따라서, 트랜잭션 타임아웃으로 인해 트랜잭션 실패 이벤트가 발생한 경우라면, 실패 리스크 최소화에 더욱 초점을 맞춰 배치 사이즈 조절이 수행될 필요가 있는데, 이에 대해서는 후술하도록 한다.
다시 도 8을 참조하여 설명한다.
단계 S200에서, 모니터링 정보를 기초로 배치 사이즈가 조절된다. 본 단계의 세부 프로세스에 대해서는 도 10 내지 도 13을 참조하여 후술하도록 한다.
단계 S300 내지 단계 S900에서, 조절된 배치 사이즈를 이용하여 클라이언트 단말(400)이 요청한 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱이 수행된다. 배치 프로세싱에 대해서는 도 4 내지 도 7의 설명 내용을 참조하도록 한다.
이하에서는, 도 10을 참조하여 배치 사이즈 조절 단계 S200의 세부 프로세스에 대하여 설명하도록 한다.
도 10은 본 개시의 몇몇 실시예에 따른 배치 사이즈 조절 단계 S200의 세부 프로세스를 나타내는 예시적인 흐름도이다.
도 10에 도시된 바와 같이, 단계 S210에서, 모니터링 정보를 이용하여 블록체인 네트워크(300)가 혼잡 상태인지 여부가 판단된다. 블록체인 네트워크(300)가 혼잡 상태에 있는지 여부를 판단하는 구체적인 방식은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서, 상기 판단은 신규 블록의 생성이 지연되는지 여부에 기초하여 수행될 수 있다. 즉, 신규 블록의 생성이 지연되면, 블록체인 네트워크(300)가 혼잡 상태에 있는 것으로 판단될 수 있고, 반대의 경우에는 정상 상태(즉, 혼잡하지 않은 상태)에 있는 것으로 판단될 수 있다. 신규 블록의 생성이 지연되는지 여부는 기 설정된 블록 생성 대기 시간을 이용하여 판단될 수 있다. 예를 들어, 신규 블록이 생성되는데 걸린 시간이 블록 생성 대기 시간을 초과하면, 신규 블록의 생성이 지연된 것으로 판단될 수 있다. 다른 예를 들어, 트랜잭션 처리 소요 시간이 블록 생성 대기 시간을 초과하면, 신규 블록의 생성이 지연된 것으로 판단될 수 있다. 트랜잭션 처리 소요 시간은 신규 블록이 생성되는데 걸린 시간을 포함하고 있기 때문이다.
상기 블록 생성 대기 시간은 블록체인 네트워크(300)가 블록을 생성하는데 대기하는 최대 시간을 의미할 수 있으며, 트랜잭션 데이터의 크기가 블록 사이즈를 만족하면 블록체인 네트워크(300)는 블록 생성 대기 시간이 만료되기 전에도 신규 블록을 생성할 수 있다.
다른 몇몇 실시예에서, 상기 판단은 트랜잭션 처리 소요 시간의 추세가 전환되는 변곡점에 기초하여 판단될 수 있다. 상기 추세 정보는 블록체인 네트워크(300)에 대한 모니터링 정보를 분석하거나 가공함으로써 획득될 수 있다. 부연 설명하면, 입력 트랜잭션 수가 증가하는 상황에서, 트랜잭션 처리 소요 시간이 감소 추세에서 증가 추세로 전환되는 것은 블록체인 네트워크(300)가 혼잡 상태에 진입하였다는 것을 의미할 수 있다. 트랜잭션 처리 소요 시간이 증가 추세로 전환되었다는 것은, 현재 TPS가 블록체인 네트워크(300)의 한계 트랜잭션 처리량을 넘었다는 것을 의미하기 때문이다. 따라서, 트랜잭션 처리 소요 시간의 추세가 전환되는 변곡점에 기반하여 블록체인 네트워크(300)의 상태가 판단될 수 있다. 상기 입력 트랜잭션 수는, 예를 들어 TPS(Transaction Per Second)가 그 단위로서 예시적으로 사용될 수 있을 것이다.
단계 S230 및 단계 S250에서, 블록체인 네트워크(300)가 혼잡 상태에 있지 않다는 판단에 응답하여, 배치 사이즈가 감소될 수 있다. 또는, 배치 프로세싱 기능이 비활성화될 수 있다.
블록체인 네트워크(300)가 혼잡하지 않은 경우에는, TPS가 증가할수록 트랜잭션 처리 소요 시간은 감소될 수 있다. TPS가 증가하면 블록 사이즈를 빠르게 만족시켜, 블록 생성 대기 시간이 만료되기 전에도 신규 블록이 생성될 수 있기 때문이다. 또한, 블록체인 네트워크(300)가 혼잡하지 않을 때 배치 프로세싱이 수행되면, 트랜잭션 처리 소요 시간은 오히려 증가할 수 있다. 배치 프로세싱 수행 시, 배치 트랜잭션을 생성하는데 걸리는 시간(e.g. 배치 사이즈를 만족시키기 전까지 개별 트랜잭션이 배치 큐에서 대기하는 시간)이 트랜잭션 처리 시간에 더 포함되어야 하기 때문이다. 따라서, 블록체인 네트워크(300)가 혼잡 상태에 있지 않은 경우에는, 배치 사이즈를 감소시키거나 배치 프로세싱 기능을 비활성화하는 것이 빠른 응답을 위해 더 효과적일 수 있다.
단계 S230과, 단계 S270 및 단계 S290에서, 블록체인 네트워크(300)가 혼잡 상태에 있다는 판단에 응답하여, 트랜잭션의 실패 확률이 결정되고, 상기 실패 확률을 기초로 배치 사이즈가 조절된다. 즉, 블록체인 네트워크(300)가 혼잡 상태에 있을 때, 무작정 배치 사이즈를 증가시키는 것이 아니라 트랜잭션의 실패 확률을 고려하여 최적의 배치 사이즈가 결정될 수 있다. 이는, 트랜잭션 실패에 따른 리스크(e.g. 재시도 비용)를 최소화하기 위한 것으로 이해될 수 있다. 이점과 관련하여 부연 설명한다. 배치 사이즈가 커질수록, 하나의 배치에는 더 많은 트랜잭션이 포함되게 된다. 각각의 트랜잭션이 가지고 있는 실패 확률을 감안하면, 배치 사이즈가 커질수록 그 배치의 실패 확률이 더 높아지게 된다. 따라서, 배치 사이즈가 커질수록 트랜잭션 실패에 따른 리스크도 더 커지게 되는 것이다.
단계 S270에서, 트랜잭션의 실패 확률은 트랜잭션 실패 이벤트가 발생될 때마다 지속적으로 업데이트될 수 있다. 또한, 본 단계에서, 트랜잭션 실패 확률을 결정하는 구체적인 방식은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서, 상기 실패 확률은 전체 개별 트랜잭션 개수 대비 실패한 트랜잭션의 개수에 기초하여 산출될 수 있다. 예를 들어, 개별 트랜잭션의 개수가 9개이고, 배치 사이즈가 3이며, 3개의 배치 트랜잭션이 생성되었다고 가정하자. 또한, 3개의 배치 트랜잭션 중 1개의 배치 트랜잭션이 실패했다고 가정하자. 이와 같은 경우, 실패 확률은 3/9으로 결정될 수 있다. 본 실시예에서는, 간이한 방식으로 실패 확률이 산출될 수 있으며, 배치 사이즈가 클수록 실패 확률도 증가할 것이기 때문에, 배치 사이즈를 고려하여 합리적으로 실패 확률이 산출될 수 있다.
다른 몇몇 실시예에서, 트랜잭션 실패의 확률 분포가 추정되고, 추정된 확률 분포에 기초하여 현재 트랜잭션 실패 확률(e.g. 평균 실패 확률)이 결정될 수 있다. 상기 확률 분포는 트랜잭션 실패 이벤트의 발생 빈도, 발생 패턴 등으로부터 추정될 수 있다. 상기 확률 분포는 블록체인 모니터링의 결과로 지금까지 관찰된 트랜잭션 실패 이벤트의 발생 패턴이 모델링 된 것으로 이해될 수 있을 것이다.
예를 들어, 단위 시간 당 발생되는 트랜잭션 실패 이벤트의 개수가 거의 변화가 없는 경우, 상기 확률 분포는 균일 분포(uniform distribution)로 추정될 수 있다. 다른 예로써, 상기 트랜잭션 실패 이벤트의 발생 패턴이 푸아송 분포(Poisson distribution)의 특성을 갖는 경우(e.g. 특정 구간의 실패 확률이 구간의 크기에 비례하는 등), 상기 확률 분포는 푸아송 분포로 추정될 수 있다. 또 다른 예로써, 상기 트랜잭션 실패 이벤트의 발생 패턴이 정규 분포(normal distribution)의 특성을 갖는 경우, 상기 확률 분포는 평균 및 분산으로 정의되는 정규 분포로 추정될 수 있다.
본 실시예에 따르면, 확률 분포를 고려함으로써, 보다 정확하게 트랜잭션 실패 확률이 결정될 수 있다. 예를 들면, 상기 확률 분포에 기반한 시뮬레이션을 통하여 최적의 배치 사이즈가 얻어질 수 있을 것이다.
단계 S290의 세부 프로세스는 도 11에 도시되어 있다. 이하, 도 11을 참조하여 설명한다.
도 11에 도시된 바와 같이, 단계 S291에서, 이전 단계 S270에서 결정된 실패 확률에 대응되는 최적 배치 사이즈(optimal batch size)가 결정된다. 상기 최적 배치 사이즈는 실패 확률을 고려했을 때 배치 프로세싱에 따른 효율성이 최대화될 수 있는 배치 사이즈로, 배치 사이즈 조절의 기준이 되는 값을 의미할 수 있다. 본 단계에서, 상기 최적 배치 사이즈를 결정하는 구체적인 방식은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서, 실패 확률을 변경하며 배치 사이즈에 따른 최적 배치 사이즈를 도출하는 시뮬레이션이 수행될 수 있다. 이하, 설명의 편의상, 시뮬레이션 과정에서 사용되는 실패 확률은 "예상 실패 확률"로 칭하도록 한다. 또한, 각 예상 실패 확률에 대한 복수의 최적 배치 사이즈(즉, 시뮬레이션 결과 값) 중에서, 단계 S270에서 결정된 실패 확률에 대응되는 최적 배치 사이즈가 결정될 수 있다. 상기 시뮬레이션은 사전에 수행되는 것이 바람직할 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니고, 실시간으로 수행될 수도 있을 것이다. 이해의 편의를 제공하기 위해, 상기 시뮬레이션 과정에 대하여 도 12 및 도 13을 참조하여 부연 설명하도록 한다.
도 12에 도시된 바와 같이, 각 예상 실패 확률에 대응되는 최적 배치 사이즈는 프로세싱 효율성 점수에 기초하여 결정될 수 있다. 특히, 도 12의 그래프(70)는 예상 실패 확률이 "10%"인 경우에 산출된 배치 사이즈에 따른 프로세싱 효율성 점수를 예시하고 있다.
상기 프로세싱 효율성 점수는 예를 들어 하기의 수학식 1에 따라 산출될 수 있다. 하기의 수학식 1에서, Efficiency는 프로세싱 효율성 점수를 가리키고, NTX는 처리 대상이 되는 개별 트랜잭션의 총 개수(즉, 트랜잭션의 총량)를 가리키며, CTX는 배치 프로세싱에 따른 처리 비용(즉, 배치 트랜잭션의 총 개수)를 가리킨다. 또한, NFailed는 실패한 배치 트랜잭션에 따른 처리 비용을 가리키는데, 실패한 배치 트랜잭션에 포함된 개별 트랜잭션들을 개별적으로 재시도한다고 할 때, NFailed는 실패한 개별 트랜잭션의 총 개수((즉, 재시도되는 개별 트랜잭션의 총 개수)를 가리킬 수 있다.
프로세싱 효율성 점수를 산출하는 구체적인 예시를 들면 다음과 같다. 개별 트랜잭션의 총 개수가 90개(즉, NTX = 90)이고, 배치 사이즈가 3이며, 예상 실패 확률이 10%라고 가정하자. 그러면, CTX는 30(90/3 = 30)이 된다.
NFailed는 상기 트랜잭션 실패 이벤트의 확률 분포에 기반하여 결정될 수 있다. 예를 들어, 도 12는 상기 트랜잭션 실패 이벤트의 확률 분포가 균일 분포를 가지는 상황을 가정한 것으로, 10개의 트랜잭션 당 균일하게 1개의 트랜잭션이 실패 할 때의 NFailed가 적용된 것이다. 이 경우, 30개의 배치 트랜잭션 중 9개의 배치 트랜잭션이 실패되고, 그 결과 NFailed의 값은(9*3 = 27)로 산출될 수 있다. 따라서, 따라서, 프로세싱 효율성 점수는 90/(30+27) = 약 1.57으로 산출될 수 있다.
상기 트랜잭션 실패 이벤트의 확률 분포가 정규 분포 또는 푸아송 분포를 가지는 경우라면, 개별 트랜잭션의 총 개수가 90개, 배치 사이즈가 3, 예상 실패 확률이 10%인 도 12와 동일한 상황에서, NFailed의 값은 전혀 다르게 산출될 것이다. 이는, 배치 프로세스에 속한 트랜잭션 중 하나만 실패하더라도 그 배치 프로세스에 속한 모든 트랜잭션을 재시도 해야 하는데, 트랜잭션의 실패 이벤트의 확률 분포에 따라 각 트랜잭션의 실패 확률이 고정되어 있더라도 실패하는 배치 트랜잭션의 개수는 다르게 산출되기 때문이다.
예상 실패 확률이 10%일 때, 배치 사이즈를 변경해가면서, 상기 예시와 같이 프로세싱 효율성 점수를 산출하면 도 12에 도시된 바와 같은 그래프(70)가 얻어질 수 있다. 또한, 프로세싱 효율성 점수가 가장 높은 포인트(71)의 배치 사이즈가 해당 예상 실패 확률의 최적 배치 사이즈로 결정될 수 있다.
참고로, 예상 실패 확률이 0%라면, NFailed가 0일 것이므로, 프로세싱 효율성 점수는 하기의 수학식 2에 따라 산출될 수 있고, 프로세싱 효율성 점수는 배치 사이즈가 클수록 더 높은 값으로 산출될 것이다.
개념적으로, 상기 수학식 2의 분자는 처리되어야 하는 개별 트랜잭션의 양을 의미하고, 상기 수학식 1의 분모는 배치 사이즈와 실패 확률이 반영된 트랜잭션 처리 비용을 의미할 수 있다. 즉, 상기 수학식 1은 처리 대상 트랜잭션의 양 대비 소요되는 처리 비용을 수식화한 것으로 이해될 수 있으며, 상술한 개념을 나타내는 범위 내에서 상기 수학식 1은 얼마든지 다른 형태로 변형될 수 있다.
예상 실패 확률을 변경해가며, 각 예상 실패 확률의 최적 배치 사이즈를 구하면 도 13에 예시된 바와 같은 그래프(80)가 얻어질 수 있다. 그래프(80)의 포인트(81)는 예상 실패 확률이 "3%"일 때 최적 배치 사이즈가 "6"이라는 것을 나타낸다. 따라서, 트랜잭션 실패 이벤트의 모니터링 정보에 따라 현재 실패 확률이 "3%"로 결정되고 그래프(80)를 이용하여 배치 사이즈를 조절하는 경우라면, 배치 사이즈는 "6"으로 조절될 수 있다.
다른 몇몇 실시예에서, 예상 실패 확률에 대한 최적 배치 사이즈를 미리 구하지 않고, 단계 S270의 실패 확률을 기초로 곧바로 복수의 배치 사이즈에 대한 프로세싱 효율성 점수가 산출될 수 있다. 또한, 상기 복수의 배치 사이즈 중에서 프로세싱 효율성 점수가 가장 높은 배치 사이즈가 최적 배치 사이즈로 결정될 수 있다.
참고로, 실패 확률이 "0"인 경우라면, 최적 배치 사이즈는 미리 설정된 최대 배치 사이즈가 될 수 있다. 트랜잭션 실패가 발생하지 않는 경우라면, 배치 사이즈가 클수록 배치 프로세싱의 효율성이 증가될 것이기 때문이다.
다시 도 11을 참조하여 설명한다.
단계 S293에서, 결정된 최적 배치 사이즈를 이용하여 현재의 배치 사이즈가 조절된다. 예를 들어, 상기 결정된 최적 배치 사이즈가 현재의 배치 사이즈로 설정될 수 있다.
한편, 본 개시의 다른 몇몇 실시예에서는, 프로세싱 효율성 점수에 따라 최적 배치 사이즈가 결정되는 것이 아니라, 머신 러닝 모델(machine learning model)을 통해 현재 실패 확률에 대응되는 최적 배치 사이즈가 예측될 수도 있다. 상기 머신 러닝 모델은 소정의 특징(feature) 데이터와 최적 배치 사이즈와의 관계를 학습한 모델일 수 있다. 또한, 상기 특징 데이터는 트랜잭션의 실패 확률, 상기 실패 확률의 확률 분포, 트랜잭션 실패 이벤트 발생 패턴 등을 포함할 수 있으나, 이에 한정되지 않으며 다양한 특징들을 더 포함할 수 있다. 본 실시예에서는, 트랜잭션 실패 이벤트에 대한 모니터링 정보로부터 상기 머신 러닝 모델과 연관된 특징 데이터를 추출하고, 추출된 특징 데이터를 상기 머신 러닝 모델에 입력함으로써 예측된 배치 사이즈가 얻어질 수 있다. 또한, 상기 예측 배치 사이즈를 기초로 가속기(100)의 배치 사이즈가 조절될 수 있다.
또한, 본 개시의 몇몇 실시예에 따르면, 트랜잭션 실패 이벤트가 트랜잭션 타임아웃으로 인해 발생된 경우(e.g. 노드 장애로 인해 타임아웃된 경우), 다른 원인들(e.g. MVCC 충돌, 트랜잭션 검증 실패 등)과 적어도 일부는 상이한 방식으로 배치 사이즈가 조절될 수 있다. 앞서 설명한 바와 같이, 타임아웃이 발생되면, 지속적으로 트랜잭션 실패 이벤트가 발생될 가능성이 높기 때문이다.
보다 구체적으로, 상기 다른 원인으로 트랜잭션 실패 이벤트가 발생한 경우에는 도 10 내지 도 13을 참조하여 상술한 바에 따라 배치 사이즈가 조절될 수 있다. 그리고, 트랜잭션 타임아웃의 경우, 다음의 예시들 중 적어도 하나에 기초하여 배치 사이즈가 조절될 수 있다. 일 예시로써, 단계 S270에서 결정된 실패 확률이 상향 조정되고, 조정된 실패 확률을 기초로 배치 사이즈가 조절될 수 있다. 즉, 본 예시에서는, 실패 확률을 상향시킴으로써 배치 사이즈가 더 작은 값으로 조절되도록 하는데, 이는 트랜잭션 실패에 따른 리스크를 충분히 감소시키기 위한 것으로 이해될 수 있다. 다른 예시에서는, 실패 확률에 관계없이 배치 사이즈가 감소되거나 배치 프로세싱 기능이 비활성화될 수 있는데, 이는 지속적인 트랜잭션 실패에 따른 리스크를 최소화하기 위한 것으로 이해될 수 있다.
지금까지 도 8 내지 도 13을 참조하여 본 개시의 몇몇 실시예에 따른 트랜잭션 가속 처리 방법과 트랜잭션 실패 확률을 고려한 배치 사이즈 조절 기능에 관하여 상세하게 설명하였다. 상술한 바에 따르면, 블록체인 네트워크(300)가 혼잡 상태에 있는지 여부에 기초하여 배치 사이즈가 조절됨으로써, 트랜잭션의 처리 속도 및 합의 지연 시간이 전반적으로 향상될 수 있다. 또한, 실패 확률을 고려하여 배치 사이즈를 조절함으로써, 트랜잭션 실패에 따른 리스크가 감소될 수 있다. 특히, 상술한 방법은 별도의 가속기(100)에 의해 수행되기 때문에, 블록체인 기반 시스템의 내부 로직이 수정될 필요가 없다. 따라서, 뛰어난 이식성(portability)이 제공될 수 있으며, 다양한 블록체인 기반 시스템에 폭넓게 활용될 수 있다.
본 개시의 또 다른 몇몇 실시 예에 따르면, 상기 배치 사이즈의 조정이 블록체인 네트워크의 현재 혼잡 상태와 입력 트랜잭션 수를 동시에 반영하여 조정될 수도 있다. 이 경우, 도 8 내지 도 13을 참조하여 참조한 실시예에 기반하여 조정된 배치 사이즈를, 상기 입력 트랜잭션 수를 반영하여 추가로 조정할 수 있을 것이다.
예를 들어, 입력 트랜잭션 수가 트랜잭션 처리 요청 단말의 블록 사이즈에 못 미치는 경우, 배치 사이즈가 추가로 감소되도록 조정될 수 있다. 예를 들어, 트랜잭션 처리 요청 단말의 블록 사이즈가 10인데, 입력 트랜잭션 수(예를 들어 TPS)가 10 미만인 경우, 조정된 배치 사이즈가 추가로 감소되거나, 1으로 조정될 수 있을 것이다. 반대로, 입력 트랜잭션 수가 트랜잭션 처리 요청 단말의 블록 사이즈를 초과하는 경우, 조정된 배치 사이즈가 추가로 증가되도록 더 조정될 수 있을 것이다.
본 개시의 또 다른 몇몇 실시 예에 따르면, 상기 배치 사이즈의 조정이 블록체인 네트워크의 현재 혼잡 상태와 무관하게 단순히 입력 트랜잭션 수 만을 기준으로 수행될 수도 있다. 상기 입력 트랜잭션 수는 예를 들어 TPS(Transaction Per Second) 값으로 판단될 수 있다. 예를 들어, 블록체인 네트워크가 현재 혼잡한 상황이라 하더라도 입력되는 트랜잭션 수가 적으면, 블록체인 네트워크의 상태는 앞으로 점점 혼잡하지 않은 상황으로 바뀔 가능성이 높으므로, 구태여 배치 사이즈를 늘릴 이유가 없다. 즉, 본 실시예는 향후의 혼잡 상태는 유입 트랜잭션 수에 의하여 바뀌는 점을 고려하여, 미래의 상태에 대비하는 방향으로 배치 사이즈를 조정하는 것으로 이해될 수 있을 것이다.
또한, 복수의 가속기가 운용되는 상황에서, 다른 가속기에 유입되는 트랜잭션이 많은 이유로 블록체인 네트워크가 혼잡 상태에 있더라도, 특정 가속기에 유입되는 트랜잭션이 많지 않다면 상기 특정 가속기의 배치 사이즈가 증가될 필요는 없을 것이다. 이러한 이유로, 상기 배치 사이즈의 조정이 블록체인 네트워크의 현재 혼잡 상태와 무관하게 단순히 입력 트랜잭션 수 만을 기준으로 수행될 수 있다. 또한, 복수의 가속기가 운용되는 경우, 상기 배치 사이즈의 조정은 각 가속기 마다 개별적으로 수행될 수 있다.
본 실시예에 따르면, 배치 사이즈가 트랜잭션 처리 요청 단말(orderer)의 블록 사이즈와 유입 트랜잭션 수를 이용하여 결정될 수 있다. 예를 들어, 입력 트랜잭션 수가 트랜잭션 처리 요청 단말의 블록 사이즈에 못 미치는 경우, 배치 사이즈가 감소되도록 조정될 수 있다. 예를 들어, 트랜잭션 처리 요청 단말의 블록 사이즈가 10인데, 입력 트랜잭션 수(예를 들어 TPS)가 10 미만인 경우, 배치 사이즈가 현재 대비 감소되거나, 1으로 조정될 수 있을 것이다. 반대로, 입력 트랜잭션 수가 트랜잭션 처리 요청 단말의 블록 사이즈를 초과하는 경우, 배치 사이즈가 증가되도록 조정될 수 있을 것이다.
이하에서는, 도 14를 참조하여 본 개시의 다양한 실시예에 따른 장치(e.g. 가속기 100)를 구현할 수 있는 예시적인 컴퓨팅 장치(500)에 대하여 설명하도록 한다.
도 14는 컴퓨팅 장치(500)를 나타내는 예시적인 하드웨어 구성도이다.
도 14에 도시된 바와 같이, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510), 버스(550), 통신 인터페이스(570), 프로세서(510)에 의하여 수행되는 컴퓨터 프로그램(591)을 로드(load)하는 메모리(530)와, 컴퓨터 프로그램(591)를 저장하는 스토리지(590)를 포함할 수 있다. 다만, 도 14에는 본 개시의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 개시가 속한 기술분야의 통상의 기술자라면 도 14에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(510)는 컴퓨팅 장치(500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 개시의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(510)는 본 개시의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(530)는 본 개시의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(590)로부터 하나 이상의 프로그램(591)을 로드할 수 있다. 예를 들어, 컴퓨터 프로그램(591)이 메모리(530)에 로드되면, 도 4에 도시된 바와 같은 로직(또는 모듈)이 메모리(530) 상에 구현될 수 있다. 메모리(530)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(550)는 컴퓨팅 장치(500)의 구성 요소 간 통신 기능을 제공한다. 버스(550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(570)는 컴퓨팅 장치(500)의 유무선 인터넷 통신을 지원한다. 통신 인터페이스(570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(570)는 본 개시의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(590)는 하나 이상의 컴퓨터 프로그램(591)을 비임시적으로 저장할 수 있다. 스토리지(590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 개시가 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(591)은 본 개시의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들을 포함할 수 있다. 컴퓨터 프로그램(591)이 메모리(530)에 로드되면, 프로세서(510)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 개시의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
예를 들어, 컴퓨터 프로그램(591)은 상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 동작, 상기 모니터링 정보를 기초로 배치 사이즈(batch size)를 조절하는 동작 및 상기 조절된 배치 사이즈를 이용하여 상기 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 동작을 수행하도록 하는 인스트럭션들을 포함할 수 있다. 이와 같은 경우, 컴퓨팅 장치(500)를 통해 본 개시의 몇몇 실시예에 따른 가속기(100)가 구현될 수 있다.
지금까지 도 1 내지 도 14를 참조하여 본 개시의 기술적 사상에 내포된 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 개시의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
지금까지 도 1 내지 도 14를 참조하여 설명된 본 개시의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 개시의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 개시의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 개시의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 개시의 실시예들을 설명하였지만, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 개시가 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (18)

  1. 하나 이상의 인스트럭션들(instructions)을 저장하는 메모리;
    블록체인 네트워크(blockchain network)와 통신하는 통신 인터페이스; 및
    상기 하나 이상의 인스트럭션들을 실행함으로써,
    상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 동작,
    상기 모니터링 정보를 기초로 트랜잭션의 실패 확률을 결정하고 상기 결정된 실패 확률에 기초하여 배치 사이즈(batch size)를 조절하는 동작 - 상기 배치 사이즈는 배치 트랜잭션에 포함되는 개별 트랜잭션의 개수를 의미함 -,
    상기 조절된 배치 사이즈를 이용하여 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 동작을 수행하는 프로세서를 포함하되,
    상기 배치 사이즈를 조절하는 동작은:
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃(timeout)과 다른 원인으로 인해 발생된 경우, 상기 결정된 실패 확률에 따라 배치 사이즈를 조절하는 동작; 및
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃으로 인해 발생된 경우, 상기 결정된 실패 확률을 상향 조정하고 상기 상향 조정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  2. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작은,
    상기 블록체인 네트워크가 혼잡 상태에 있다는 판단에 응답하여, 상기 결정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  3. 제1 항에 있어서,
    상기 프로세서는,
    상기 블록체인 네트워크가 혼잡 상태에 있지 않다는 판단에 응답하여, 상기 모니터링 정보에 관계없이 상기 배치 사이즈를 감소시키거나 상기 배치 프로세싱 기능을 비활성화하는 동작을 더 수행하는,
    트랜잭션 가속 처리 장치.
  4. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작은,입력 트랜잭션 수에 더 기초하여 상기 배치 사이즈를 조절하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  5. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작은,트랜잭션 처리 요청 단말의 블록 사이즈에 더 기초하여 상기 배치 사이즈를 조절하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  6. 삭제
  7. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 동작은:
    상기 모니터링 정보를 기초로 상기 실패 확률의 확률 분포를 추정하는 동작; 및,
    상기 추정된 확률 분포에 기반하여 상기 실패 확률을 결정하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  8. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 배치 사이즈를 조절하는 동작은:
    상기 트랜잭션의 예상 실패 확률에 대해 미리 구해진 기준 배치 사이즈 정보를 이용하여 상기 결정된 실패 확률에 대응되는 기준 배치 사이즈를 결정하는 동작; 및
    상기 결정된 기준 배치 사이즈를 기초로 상기 배치 사이즈를 조절하는 동작을 포함하되,
    상기 기준 배치 사이즈 정보는 제1 예상 실패 확률에 대응되는 제1 기준 배치 사이즈를 포함하고,
    상기 제1 기준 배치 사이즈는 상기 제1 예상 실패 확률에 대해 산출된 배치 사이즈에 따른 프로세싱 효율성 점수에 기반하여 결정되는 것인,
    트랜잭션 가속 처리 장치.
  9. 제8 항에 있어서,
    상기 프로세싱 효율성 점수는 일정 개수의 개별 트랜잭션을 처리하기 위해 발생된 비용에 기초하여 산출되고,
    상기 비용은 상기 일정 개수의 개별 트랜잭션을 처리하기 위해 발생된 배치 트랜잭션의 개수와 상기 제1 예상 실패 확률에 따른 실패 트랜잭션의 개수에 기초하여 산출되는,
    트랜잭션 가속 처리 장치.
  10. 제1 항에 있어서,
    상기 결정된 실패 확률에 따라 배치 사이즈를 조절하는 동작은:
    상기 결정된 실패 확률에 따라 복수의 배치 사이즈에 대한 프로세싱 효율성 점수를 산출하는 동작; 및,
    상기 산출된 프로세싱 효율성 점수를 기초로 상기 복수의 배치 사이즈 중 특정 배치 사이즈를 선택하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  11. 삭제
  12. 삭제
  13. 제1 항에 있어서,
    상기 프로세서는:
    상기 모니터링 정보로부터 특징(feature) 데이터를 추출하는 동작;
    머신 러닝 모델(machine learning model)을 통해 상기 추출된 특징 데이터로부터 예측 배치 사이즈를 얻는 동작; 및
    상기 예측 배치 사이즈를 기초로 상기 배치 사이즈를 조절하는 동작을 더 수행하는,
    트랜잭션 가속 처리 장치.
  14. 제1 항에 있어서,
    상기 배치 프로세싱을 수행하는 동작은:
    상기 하나 이상의 개별 트랜잭션을 소정의 분류 기준에 따라 분류하는 동작;
    제1 배치 사이즈를 가지는 제1 배치 큐에 대응되는 것으로 분류된 개별 트랜잭션을 상기 제1 배치 큐에 삽입하는 동작;
    제2 배치 사이즈를 가지는 제2 배치 큐에 대응되는 것으로 분류된 개별 트랜잭션을 상기 제2 배치 큐에 삽입하는 동작;
    상기 제1 배치 큐에 삽입된 개별 트랜잭션 개수가 상기 제1 배치 사이즈에 도달한 경우, 상기 제1 배치 큐에 삽입된 개별 트랜잭션을 종합하여 제1 배치 트랜잭션을 생성하는 동작; 및
    상기 제2 배치 큐에 삽입된 개별 트랜잭션 개수가 상기 제2 배치 사이즈에 도달한 경우, 상기 제2 배치 큐에 삽입된 개별 트랜잭션을 종합하여 제2 배치 트랜잭션을 생성하는 동작을 포함하는,
    트랜잭션 가속 처리 장치.
  15. 제14 항에 있어서,
    상기 제1 배치 사이즈는 모든 배치 큐에 일괄 적용되는 전역 배치 사이즈(global batch size)이고, 상기 제2 배치 사이즈는 상기 제2 배치 큐에 삽입되는 입력 트랜잭션 수를 고려하여 연산 된 것인,
    트랜잭션 가속 처리 장치.
  16. 제14 항에 있어서,
    상기 제1 배치 사이즈는 모든 배치 큐에 일괄 적용되는 전역 배치 사이즈(global batch size)이고, 상기 제2 배치 사이즈는 상기 제2 배치 큐에 삽입되는 입력 트랜잭션 수를 고려하여 상기 전역 배치 사이즈가 조정된 것인,
    트랜잭션 가속 처리 장치.
  17. 컴퓨팅 장치에서 블록체인 네트워크(blockchain network)와 연관된 하나 이상의 개별 트랜잭션을 가속 처리하는 방법에 있어서,
    상기 블록체인 네트워크에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 단계;
    상기 모니터링 정보를 기초로 트랜잭션의 실패 확률을 결정하고 상기 결정된 실패 확률에 기초하여 배치 사이즈(batch size)를 조절하는 단계 - 상기 배치 사이즈는 배치 트랜잭션에 포함되는 개별 트랜잭션의 개수를 의미함 -; 및
    상기 조절된 배치 사이즈를 이용하여 상기 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 단계를 포함하되,
    상기 배치 사이즈를 조절하는 단계는,
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃(timeout)과 다른 원인으로 인해 발생된 경우, 상기 결정된 실패 확률에 따라 배치 사이즈를 조절하는 단계; 및
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃으로 인해 발생된 경우, 상기 결정된 실패 확률을 상향 조정하고 상기 상향 조정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 단계를 포함하는,
    트랜잭션 가속 처리 방법.
  18. 컴퓨팅 장치와 결합되어,
    블록체인 네트워크(blockchain network)에서 발생된 트랜잭션 실패 이벤트에 대한 모니터링 정보를 얻는 단계;
    상기 모니터링 정보를 기초로 트랜잭션의 실패 확률을 결정하고 상기 결정된 실패 확률에 기초하여 배치 사이즈(batch size)를 조절하는 단계 - 상기 배치 사이즈는 배치 트랜잭션에 포함되는 개별 트랜잭션의 개수를 의미함 -; 및
    상기 조절된 배치 사이즈를 이용하여 하나 이상의 개별 트랜잭션에 대한 배치 프로세싱을 수행하는 단계를 실행시키기 위하여 컴퓨터로 판독 가능한 기록매체에 저장되되,
    상기 배치 사이즈를 조절하는 단계는,
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃(timeout)과 다른 원인으로 인해 발생된 경우, 상기 결정된 실패 확률에 따라 배치 사이즈를 조절하는 단계; 및
    상기 트랜잭션 실패 이벤트가 트랜잭션 타임아웃으로 인해 발생된 경우, 상기 결정된 실패 확률을 상향 조정하고 상기 상향 조정된 실패 확률에 따라 상기 배치 사이즈를 조절하는 단계를 포함하는,
    컴퓨터 프로그램.
KR1020190061176A 2019-05-24 2019-05-24 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법 KR102654689B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190061176A KR102654689B1 (ko) 2019-05-24 2019-05-24 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법
US16/727,240 US20200372013A1 (en) 2019-05-24 2019-12-26 Accelerated processing apparatus for transaction considering transaction failure probability and method thereof
EP20153650.5A EP3742675B1 (en) 2019-05-24 2020-01-24 Accelerated processing apparatus for transaction considering transaction failure probability and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190061176A KR102654689B1 (ko) 2019-05-24 2019-05-24 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20200134944A KR20200134944A (ko) 2020-12-02
KR102654689B1 true KR102654689B1 (ko) 2024-04-03

Family

ID=69232763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190061176A KR102654689B1 (ko) 2019-05-24 2019-05-24 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법

Country Status (3)

Country Link
US (1) US20200372013A1 (ko)
EP (1) EP3742675B1 (ko)
KR (1) KR102654689B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200139033A (ko) * 2019-06-03 2020-12-11 삼성에스디에스 주식회사 트랜잭션 가속 처리 장치 및 그 방법
US11375009B1 (en) * 2020-12-07 2022-06-28 International Business Machines Corporation Minimizing the impact of malfunctioning peers on blockchain
KR102567091B1 (ko) * 2021-02-15 2023-08-16 포항공과대학교 산학협력단 블록체인 확장성을 위한 예측적 트랜잭션 처리 시스템 및 방법
CN113268328A (zh) * 2021-05-26 2021-08-17 平安国际融资租赁有限公司 批处理方法、装置、计算机设备和存储介质
CN113722330A (zh) * 2021-09-07 2021-11-30 辽宁振兴银行股份有限公司 一种联机交易失败重试的方法及装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055862A1 (en) * 2001-09-18 2003-03-20 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for managing systems using operation objects
US20030149747A1 (en) * 2002-02-01 2003-08-07 Xerox Corporation Method and apparatus for modeling print jobs
US7734768B2 (en) * 2005-07-26 2010-06-08 International Business Machines Corporation System and method for adaptively collecting performance and event information
US20130129068A1 (en) * 2009-03-02 2013-05-23 Twilio, Inc. Method and system for a multitenancy telephone network
US9110745B2 (en) * 2011-06-17 2015-08-18 Oracle International Corporation System and method for flow control in a messaging subsystem based on message-in/out rates
US20140236768A1 (en) * 2012-10-05 2014-08-21 Redfin Corporation Physical references for providing supplemental real estate information
KR101474973B1 (ko) * 2013-02-08 2014-12-22 한국기계연구원 분사형 플라즈마 발생기
WO2014133512A1 (en) * 2013-02-28 2014-09-04 Hewlett-Packard Development Company, L.P. Providing code change job sets of different sizes to validators
US10425348B2 (en) * 2015-07-22 2019-09-24 The Regents Of The University Of Colorado Stateless network functions
US10402367B2 (en) * 2016-01-13 2019-09-03 Salesforce.Com, Inc. Batch job processing using a database system
KR101950912B1 (ko) 2016-08-01 2019-02-21 서강대학교산학협력단 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
US20180121856A1 (en) * 2016-11-03 2018-05-03 Linkedin Corporation Factor-based processing of performance metrics
CN108228659A (zh) * 2016-12-22 2018-06-29 经贸联网科技股份有限公司 动态更新金融数据与/或动态调整电源配置的方法及系统
US10594760B2 (en) * 2017-01-25 2020-03-17 Futurewei Technologies, Inc. Intelligent event streaming
US10102265B1 (en) * 2017-04-12 2018-10-16 Vijay K. Madisetti Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing
EP3718069B1 (en) * 2017-11-30 2024-04-17 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
US20200366495A1 (en) * 2018-01-29 2020-11-19 Ubiquicorp Limited Proof of majority block consensus method for generating and uploading a block to a blockchain
US10592340B2 (en) * 2018-02-28 2020-03-17 International Business Machines Corporation Dynamic authorization batching in a dispersed storage network
US11816094B2 (en) * 2018-05-10 2023-11-14 Cornell University Metastable byzantine agreement
US10862811B1 (en) * 2018-06-08 2020-12-08 West Corporation Message brokering for asynchronous status updates
CN109040029B (zh) * 2018-07-13 2021-03-12 上海点融信息科技有限责任公司 在区块链中执行事务的方法和装置
KR20180121856A (ko) * 2018-11-01 2018-11-09 (주)우리리서치 전자투표 서비스를 제공하는 서버, 방법, 컴퓨터 프로그램 및 컴퓨터 판독 가능한 기록 매체
US10817879B2 (en) * 2019-01-07 2020-10-27 Capital One Services, Llc Fraud detection based on an analysis of messages in a messaging account
US10904938B2 (en) * 2019-03-12 2021-01-26 Ford Global Technologies, Llc Circuit-switched domain response to packet-switched domain failure

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2012-0324000호(2012.12.20.) 1부.*
미국공개특허 제2014-0101235호(2014.04.10.) 1부.*
미국공개특허 제2015-0370554호(2015.12.24.) 1부.*
미국공개특허 제2018-0121856호(2018.05.03.) 1부.*
미국공개특허 제2018-0213018호(2018.07.26.) 1부.*
미국공개특허 제2018-0300382호(2018.10.18.) 1부.*
중국공개특허 제109040029호(2018.12.18.) 1부.*

Also Published As

Publication number Publication date
EP3742675B1 (en) 2023-05-31
EP3742675A1 (en) 2020-11-25
US20200372013A1 (en) 2020-11-26
KR20200134944A (ko) 2020-12-02

Similar Documents

Publication Publication Date Title
KR102654689B1 (ko) 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법
KR102444425B1 (ko) 블록체인 트랜잭션에 대하여 배치 프로세싱을 수행하는 장치 및 그 방법
EP3748914B1 (en) Accelerated processing apparatus for transaction and method thereof
US11769150B2 (en) Transaction scheduling for block space on a blockchain
US11526494B2 (en) Blockchain-based computing system and method for managing transaction thereof
KR102448787B1 (ko) 블록체인 기반 조회 서비스 제공 시스템 및 그 방법
US20130263142A1 (en) Control device, control method, computer readable recording medium in which program is recorded, and distributed processing system
KR20190128814A (ko) 블록체인 기반 트랜잭션 처리 방법, 장치 및 그 시스템
US20210058382A1 (en) Block sequencing method and system based on tree-graph structure, and data processing terminal
WO2024001024A1 (zh) 在区块链系统中执行交易的方法、区块链系统和节点
WO2023231336A1 (zh) 执行交易的方法和区块链节点
US10664458B2 (en) Database rebalancing method
US8938420B1 (en) Systems and methods for natural batching of I/O operations on a replication log
US10848449B2 (en) Token-based message exchange system
EP3539278B1 (en) Method and system for affinity load balancing
US8452936B2 (en) System and method for managing resets in a system using shared storage
CN108182241A (zh) 一种数据交互的优化方法、装置、服务器及存储介质
CN111611068B (zh) 分布式系统中的数据写方法、服务器及客户端
CN112583862A (zh) 数据并发的处理方法、装置、存储介质及设备
JP2013200601A (ja) データベースシステム、データベースシステムにおけるコミット方法、及びプログラム
WO2023066248A1 (zh) 数据处理方法、装置、设备和系统
CN116991882B (zh) 基于业务优先级的查询优化方法、装置和电子设备
CN110636058B (zh) 基于大数据的信息安全系统和方法
Li et al. Accumulating Priority Queue for Charging of Unmanned Aerial Vehicles in Cognitive Radio Networks
CN115022313A (zh) 一种云架构下的数据迁移方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant