KR20210074148A - 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법 - Google Patents

비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법 Download PDF

Info

Publication number
KR20210074148A
KR20210074148A KR1020190179437A KR20190179437A KR20210074148A KR 20210074148 A KR20210074148 A KR 20210074148A KR 1020190179437 A KR1020190179437 A KR 1020190179437A KR 20190179437 A KR20190179437 A KR 20190179437A KR 20210074148 A KR20210074148 A KR 20210074148A
Authority
KR
South Korea
Prior art keywords
transaction
processing
transaction processing
storage
blockchain network
Prior art date
Application number
KR1020190179437A
Other languages
English (en)
Other versions
KR102319158B1 (ko
Inventor
신혜연
강동주
Original Assignee
두나무 주식회사
람다256 주식회사
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 두나무 주식회사, 람다256 주식회사 filed Critical 두나무 주식회사
Publication of KR20210074148A publication Critical patent/KR20210074148A/ko
Application granted granted Critical
Publication of KR102319158B1 publication Critical patent/KR102319158B1/ko

Links

Images

Classifications

    • 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/382Payment protocols; Details thereof insuring higher security of transaction
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • H04L67/2842
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Abstract

기재된 실시예는 비동기적으로 트랜잭션이 처리되는 아키텍처에서 보다 안정적으로 트랜잭션이 처리되도록 지원하는 장치 및 방법에 관한 것으로서, 사용자 단말로부터 트랜잭션(transaction) 및 상기 트랜잭션의 처리 요청을 수신하는 단계, 상기 트랜잭션을 큐(queue) 구조의 저장소에 저장하는 단계, 상기 저장소에서 상기 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드하는 단계, 및 상기 적어도 하나의 트랜잭션의 상기 저장소 상의 위치의 순서대로 상기 적어도 하나의 트랜잭션을 블록체인(blockchain) 네트워크에 전송하는 단계를 포함하는 트랜잭션 처리 지원 방법이 제공될 수 있다.

Description

비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법 {DEVICE AND METHOD OF SUPPORTING TRANSACTION PROCESSING IN ASYNCHRONOUS TRANSACTION PROCESSING ARCHITECTURE}
기재된 실시예는 비동기적으로 트랜잭션이 처리되는 아키텍처에서 보다 안정적으로 트랜잭션이 처리되도록 지원하는 장치 및 방법에 관한 것이다.
새로운 네트워크 플랫폼의 탄생으로 전 세계는 중앙 집중식 서버의 시대에서 피어투피어(peer to peer) 방식의 분산 네트워크 시대로의 변화를 맞이하고 있다.
블록체인(blockchain)은 관리 대상 데이터를 소규모 데이터들이 피어투피어(peer to peer) 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장함으로써, 데이터의 임의 수정이 어렵고, 데이터의 이력 확인이 용이한 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술을 지칭한다.
블록체인의 메인체인(mainchain)의 노드(node)에 모든 데이터를 저장하는 경우, 노드가 점점 무거워지면서 블록체인의 전체적인 성능 저하 및 다양한 문제점을 야기하는데, 이를 해결하기 위한 하나의 방법으로 블록체인의 메인체인에 붙어서 작동하는 하위체인인 사이드체인(sidechain)이 활용되고 있다. 이를 활용하는 경우, 메인체인에 있는 정보를 사이드체인에 옮겨 트랜잭션을 처리하고 트랜잭션의 처리가 완료되면 중요 정보만을 메인체인에 저장하는 방식으로 메인체인의 부담을 줄일 수 있다.
기재된 실시예에 따라 비동기적으로 트랜잭션이 처리되는 아키텍처에서 트랜잭션이 보다 안정적으로 처리되도록 지원하는 장치 및 방법을 제공하는 것을 목표로 한다.
실시예에 따른 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 방법은 사용자 단말로부터 트랜잭션(transaction) 및 상기 트랜잭션의 처리 요청을 수신하는 단계, 상기 사용자 단말의 사용자가 소유한 사용자 계정에 대응하여 저장된 개인키(private key)를 이용하여 상기 트랜잭션의 서명을 생성하고, 상기 트랜잭션에 상기 서명을 추가하여 서명된 트랜잭션을 생성하는 단계, 상기 서명된 트랜잭션을 큐(queue) 구조의 제1 저장소에 저장하는 단계, 상기 제1 저장소에서 상기 서명된 트랜잭션을 포함하는 적어도 하나의 서명된 트랜잭션을 로드하는 단계, 및 상기 적어도 하나의 서명된 트랜잭션의 상기 제1 저장소 상의 위치의 순서대로 상기 적어도 하나의 서명된 트랜잭션을 블록체인(blockchain) 네트워크에 전송하는 단계를 포함할 수 있다.
다른 실시예에 따른 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 방법은 저장소에 저장된 복수의 트랜잭션들 중 다음 전송 대상을 결정하는 단계, 상기 저장소에서 상기 다음 전송 대상인 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드하는 단계, 상기 적어도 하나의 트랜잭션을 블록체인 네트워크에 전송하는 단계, 상기 트랜잭션이 상기 블록체인 네트워크에 포함된 블록체인에 커밋(commit)되었는지 여부를 확인하는 단계, 및 상기 커밋 여부에 기초하여 상기 트랜잭션을 재전송 대상으로 결정하는 단계를 포함할 수 있다.
또 다른 실시예에 따른 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 방법은
사용자 단말로부터 트랜잭션 및 상기 트랜잭션의 처리 요청을 수신하는 단계, 상기 트랜잭션의 서명을 생성하고, 상기 트랜잭션에 서명을 추가하여 서명된 트랜잭션을 생성하는 단계, 상기 서명된 트랜잭션을 큐 구조의 제1 저장소에 저장하는 단계, 상기 제1 저장소에서 상기 서명된 트랜잭션을 포함하는 적어도 하나의 서명된 트랜잭션을 로드하는 단계, 및 상기 적어도 하나의 서명된 트랜잭션의 상기 제1 저장소 상의 위치의 순서대로 상기 적어도 하나의 서명된 트랜잭션을 블록체인(blockchain) 네트워크에 전송하는 단계를 포함할 수 있다.
기재된 실시예에 따르면 비동기적으로 트랜잭션이 처리되는 아키텍처에서 트랜잭션이 보다 안정적으로 처리되도록 지원하는 장치 및 방법이 제공될 수 있다.
또한, 체인 크롤러 및 영구 저장소를 이용하여 체인에 대한 직접적인 질의 회수를 줄여 체인에 대한 부하를 감소시키는 트랜잭션 처리 지원 장치 및 방법이 제공될 수 있다.
또한, 체인의 트랜잭션 처리 성능보다 더 많은 요청이 수신되는 경우에도 비동기적 트랜잭션 처리를 통해 트랜잭션 처리량을 제어함으로써 사이드체인이 중지되는 것을 방지하는 트랜잭션 처리 지원 장치 및 방법이 제공될 수 있다.
도 1은 실시예에 따른 트랜잭션 처리 지원 장치와 데이터를 송수신하는 다른 주체들 간의 네트워크 관계를 나타내는 도면이다.
도 2는 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
도 3은 다른 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
도 4는 또 다른 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
도 5는 실시예에 따른 비동기적 트랜잭션 처리 아키텍처를 설명하기 위한 참고도이다.
도 6은 실시예에 따른 트랜잭션의 큐잉 구조를 나타내는 참고도이다.
도 7은 실시예에 따른 트랜잭션의 논스 부여 및 서명 수행 방법을 설명하기 위한 참고도이다.
도 8은 실시예에 따른 트랜잭션 전송 방법을 설명하기 위한 참고도이다.
도 9는 실시예에 따른 트랜잭션 전송 결과 검사 및 재전송 방법을 설명하기 위한 참고도이다.
도 10은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 10을 참조하여 실시예에 따른 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법이 상세히 설명된다.
도 1은 실시예에 따른 트랜잭션 처리 지원 장치(120)와 데이터를 송수신하는 다른 주체들 간의 네트워크 관계를 나타내는 도면이다.
실시예에 따른 트랜잭션 처리 지원 장치(120)는 사용자 단말(110), 블록체인 네트워크(130), 트랜잭션 저장소(140) 및 영구 저장소(150)와 데이터를 송수신할 수 있다.
사용자 단말(110)은 트랜잭션 처리 지원 장치(120)에 트랜잭션 및 트랜잭션 처리를 요청하고, 트랜잭션 처리 지원 장치(120)로부터 처리 요청에 대한 응답으로 트랜잭션 식별자를 수신할 수 있고, 트랜잭션이 처리 완료었음을 나타내는 트랜잭션 리시트(receipt)를 수신할 수 있다.
트랜잭션 처리 지원 장치(120)는 사용자 단말(110), 블록체인 네트워크(130), 트랜잭션 저장소(140) 및 영구 저장소(150)와 데이터를 송수신하여 사용자 단말로부터 수신되는 트랜잭션이 블록체인 네트워크에 반영되도록 트랜잭션의 처리를 지원할 수 있다.
트랜잭션은 블록체인의 상태(state)를 변경하기 위한 데이터 집합을 의미하며, 상기 트랜잭션의 처리는 트랜잭션을 블록체인에 전송하고 트랜잭션에 따라 블록체인의 상태 변경이 확정되도록 하는 절차를 의미할 수 있다. 즉, 상기 트랜잭션의 처리는 트랜잭션이 블록체인에 커밋(commit)되도록 하는 절차를 의미할 수 있다.
트랜잭션 저장소(140)는 트랜잭션 처리 지원 장치(120)가 블록체인 네트워크(130)에 트랜잭션을 전송하기 전에 임시적으로 저장하기 위한 저장소일 수 있다.
영구 저장소(150)는 트랜잭션 처리 지원 장치(120)가 블록체인 네트워크(130)에 매번 질의 응답을 수행하는 경우, 블록체인 네트워크의 부하가 가중되므로, 일부 정보가 되도록 하는 역할을 수행하기 위한 저장소일 수 있다.
사용자 단말(110), 트랜잭션 처리 지원 장치(120) 및 블록체인 네트워크(130)는 통신망(미도시)을 통해 상호 연결될 수 있다.
통신망은 사용자 단말(110), 트랜잭션 처리 지원 장치(120) 및 블록체인 네트워크(130) 사이에서 데이터가 송수신되도록 하기 위한 접속 경로를 의미한다. 예를 들어, 통신망은 LANs(Local Area Networks), WANs(Wide Area Networks), MANs(Metropolitan Area Networks), ISDNs(Integrated Service Digital Networks) 등의 유선 네트워크나, 무선 LANs, CDMA, 블루투스, 위성 통신 등의 무선 네트워크를 망라할 수 있으나, 상술한 예시에 한정되는 것은 아니다.
도 2는 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
특히, 도 2는 트랜잭션 처리 지원 장치가 서명된 트랜잭션을 수신하는 경우의 트랜잭션의 큐잉 방법 및 전송 방법을 나타내는 동작 흐름도이다.
실시예에 따른 트랜잭션 처리 지원 방법을 단계별로 설명하면, 먼저, 트랜잭션 처리 지원 장치는 사용자 단말로부터 트랜잭션 및 상기 트랜잭션의 처리 요청을 수신할 수 있다(S210).
트랜잭션 처리 지원 장치는 상기 트랜잭션의 처리 요청을 수신한 뒤, 상기 트랜잭션을 고유하게 식별하기 위한 트랜잭션 식별자를 생성하고, 상기 처리 요청에 대한 응답으로, 상기 트랜잭션 식별자를 상기 사용자 단말에 전송할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 트랜잭션을 큐 구조의 저장소에 저장할 수 있다(S220).
상기 큐 구조는 블록체인 네트워크에 포함된 복수의 사이드체인들 각각에 대응하도록 설정된 분류 식별자들 및 상기 분류 식별자들 각각에 대한 분산 저장을 위한 복수의 파티션(partition)들을 포함하는 구조일 수 있다.
상기 분류 식별자는 아파치 카프카(Apache Kafka) 아키텍처에서의 토픽(topic)에 대응할 수 있다.
상기 저장소는 서명된 트랜잭션들이 저장된 서명된 트랜잭션 큐일 수 있다.
트랜잭션 처리 지원 장치는 상기 사용자 단말의 사용자가 소유한 외부 소유 계정(EOA, External Owned Account)이 사용되는 사이드체인에 대응하는 토픽에 포함된 복수의 파티션들 중 어느 하나에 상기 트랜잭션을 저장할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 상기 저장소에서 상기 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드할 수 있다(S230).
트랜잭션 처리 지원 장치는 트랜잭션 처리 정보(PTI, Processed Transaction Information)를 이용하여 바로 직전에 수신한 상기 다른 트랜잭션이 상기 블록체인 네트워크에 전송되었는지 여부를 판단하고, 상기 트랜잭션을 수신하기 바로 직전에 수신한 다른 트랜잭션이 상기 블록체인 네트워크에 전송된 경우에 그 다음 차례로서 상기 적어도 하나의 트랜잭션을 로드할 수 있다.
상기 트랜잭션 처리 정보는 바로 직전에 처리된 트랜잭션에 대응하는 토픽 식별자, 파티션 식별자 및 파티션 상의 위치 식별자를 포함할 수 있다.
트랜잭션 처리 지원 장치는 상기 트랜잭션이 저장된 파티션 상의 상기 트랜잭션의 위치에서부터 기설정된 수만큼의 상기 적어도 하나의 트랜잭션을 로드할 수 있다. 즉, 트랜잭션 처리 지원 장치는 하나의 트랜잭션 또는 복수의 트랜잭션들을 로드할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 적어도 하나의 트랜잭션의 상기 저장소 상의 위치의 순서대로 상기 적어도 하나의 트랜잭션을 블록체인 네트워크에 전송할 수 있다(S240).
트랜잭션 처리 지원 장치는 상기 적어도 하나의 트랜잭션이 상기 토픽에 대응하는 사이드체인에 커밋(commit)되도록, 상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 포함된 상기 사이드체인에 전송할 수 있다.
트랜잭션 처리 지원 장치는 상기 블록체인 네트워크에 포함된 복수의 사이드체인들 각각의 처리 성능에 따라 상기 사이드체인들 별로 서로 다르게 설정된 전송 주기에 기초하여, 상기 적어도 하나의 트랜잭션을 상기 적어도 하나의 트랜잭션에 대응하는 사이드체인의 전송 주기에 맞추어 전송할 수 있다.
트랜잭션 처리 지원 장치는 상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 상기 적어도 하나의 트랜잭션 중 상기 저장소 상의 위치의 순서가 상대적으로 마지막인 트랜잭션이 바로 직전에 처리된 트랜잭션임을 지시하도록 트랜잭션 처리 정보를 갱신할 수 있다.
트랜잭션 처리 지원 장치는 상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 상기 트랜잭션이 상기 트랜잭션에 대응하는 사이드체인에 커밋(commit)되었는지 여부를 확인하고, 상기 트랜잭션이 상기 사이드체인에 커밋된 경우 상기 트랜잭션에 대해 생성된 트랜잭션 리시트(receipt)를 수신하고, 상기 트랜잭션 리시트를 상기 사용자 단말에 제공할 수 있다.
도 3은 다른 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
특히, 도 3은 트랜잭션의 전송 방법, 전송 결과 검사 방법 및 재전송 방법을 나타내는 동작 흐름도이다.
실시예에 따른 트랜잭션 처리 지원 방법을 단계별로 설명하면, 먼저, 트랜잭션 처리 지원 장치는 저장소에 저장된 복수의 트랜잭션들 중 다음 전송 대상을 결정할 수 있다(S310).
상기 저장소는 서명된 트랜잭션들이 저장된 서명된 트랜잭션 큐일 수 있다.
트랜잭션 처리 지원 장치는 상기 복수의 트랜잭션들 중 재전송 대상인 트랜잭션들을 우선적으로 상기 다음 전송 대상으로서 결정할 수 있다.
트랜잭션 처리 지원 장치는 재전송 대상인 트랜잭션이 존재하지 않는 경우, 상기 트랜잭션 처리 정보를 이용하여 바로 직전에 상기 블록체인 네트워크에 전송한 트랜잭션을 식별하고, 바로 직전에 상기 블록체인 네트워크에 전송한 트랜잭션의 바로 다음에 저장된 트랜잭션을 상기 다음 전송 대상으로 결정할 수 있다.
구체적으로, 트랜잭션 처리 지원 장치는 상기 트랜잭션 처리 정보에 상기 재전송 대상인 트랜잭션의 저장 위치 식별자가 포함되어 있는 경우, 상기 재전송 대상인 트랜잭션을 상기 다음 전송 대상으로 결정하고, 상기 트랜잭션 처리 정보에 상기 재전송 대상인 트랜잭션의 저장 위치 식별자가 포함되어 있지 않은 경우, 상기 복수의 트랜잭션들 중 바로 직전에 상기 블록체인 네트워크에 전송한 트랜잭션의 바로 다음에 저장된 트랜잭션을 상기 다음 전송 대상으로 결정할 수 있다.
트랜잭션 처리 지원 장치는 재전송 대상인 트랜잭션을 다음 전송 대상으로서 결정한 경우, 상기 재전송 대상인 트랜잭션을 블록체인 네트워크에 전송한 다음 상기 재전송 대상인 트랜잭션을 바로 직전에 상기 블록체인 네트워크에 전송한 트랜잭션으로 식별할 수 있다. 즉, 트랜잭션 처리 지원 장치는 바로 직전에 재전송 대상인 트랜잭션을 전송한 경우, 다른 재전송 대상인 트랜잭션이 존재하지 않는다면 상기 재전송 대상인 트랜잭션의 바로 다음에 저장된 트랜잭션을 상기 다음 전송 대상으로 결정할 수 있다. 이에 따라 상기 재전송 대상인 트랜잭션의 다음에 저장된 정상적으로 처리된 트랜잭션이 체인에 중복하여 전송될 수 있다. 이 경우, 체인에서 트랜잭션이 중복하여 전송되었음을 인지하고 해당 트랜잭션이 중복하여 저장되지 않도록 할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 저장소에서 다음 전송 대상인 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드할 수 있다(S320).
다음으로, 트랜잭션 처리 지원 장치는 적어도 하나의 트랜잭션을 블록체인 네트워크에 전송할 수 있다(S330).
트랜잭션 처리 지원 장치는 상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 바로 직전에 상기 블록체인 네트워크에 전송한 트랜잭션의 저장 위치 식별자를 포함하도록 트랜잭션 처리 정보를 갱신할 수 있다.
상기 트랜잭션 처리 정보는 바로 직전에 전송한 트랜잭션의 저장 위치 식별자, 바로 직전에 커밋된 트랜잭션의 저장 위치 식별자 및 재전송 대상인 트랜잭션의 저장 위치 식별자가 기록될 필드(field)들을 포함할 수 있다.
트랜잭션 처리 지원 장치는 상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 상기 적어도 하나의 트랜잭션의 저장 위치 식별자 및 상기 적어도 하나의 트랜잭션의 전송 시각을 매칭한 데이터를 포함하도록 트랜잭션 처리 시간 정보(PTT, Processed Transaction Timetable)를 갱신할 수 있다.
상기 트랜잭션 처리 시간 정보는 바로 직전에 전송한 트랜잭션의 저장 위치 식별자, 상기 트랜잭션을 고유하게 식별하기 위한 트랜잭션 식별자 및 상기 트랜잭션의 전송 시각이 기록될 필드들을 포함할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 트랜잭션이 블록체인 네트워크에 포함된 블록체인에 커밋되었는지 여부를 확인할 수 있다(S340).
트랜잭션 처리 지원 장치는 상기 트랜잭션 처리 시간 정보를 이용하여 상기 전송 시각으로부터 기설정된 시간이 경과한 트랜잭션을 식별하고, 상기 트랜잭션을 상기 블록체인 네트워크에 전송한 시각으로부터 기설정된 시간이 경과한 후에 상기 트랜잭션의 커밋 여부를 확인할 수 있다.
트랜잭션 처리 지원 장치는 상기 블록체인 네트워크에 저장된 데이터들의 요약 데이터를 이용하여 상기 트랜잭션이 상기 블록체인 네트워크에 반영이 되었는지 여부를 확인할 수 있다.
상기 요약 데이터는 체인 크롤러(crawler)가 주기적으로 상기 블록체인 네트워크에 질의한 결과로 획득한 상기 블록체인의 상태(state)에 관한 정보를 이용하여 생성한 데이터일 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 커밋 여부에 기초하여 트랜잭션의 재전송 여부를 결정할 수 있다(S350).
트랜잭션 처리 지원 장치는 상기 트랜잭션이 상기 블록체인에 커밋되지 않은 경우, 상기 트랜잭션을 상기 재전송 대상으로 결정하고, 상기 재전송 대상인 트랜잭션의 저장 위치 식별자를 더 포함하도록 상기 트랜잭션 처리 정보를 갱신할 수 있다.
도 4는 또 다른 일 실시예에 따른 트랜잭션 처리 지원 방법을 나타내는 동작 흐름도이다.
특히, 도 4는 트랜잭션 처리 지원 장치가 서명되지 않은 트랜잭션을 수신하는 경우의 트랜잭션의 큐잉 방법, 논스 부여 방법, 서명 방법 및 전송 방법을 나타내는 동작 흐름도이다.
실시예에 따른 트랜잭션 처리 지원 방법을 단계별로 설명하면, 먼저 트랜잭션 처리 지원 장치는 사용자 단말로부터 서명되지 않은 트랜잭션 및 트랜잭션의 처리 요청을 수신할 수 있다(S410).
트랜잭션 처리 지원 장치는 서명되지 않은 트랜잭션을 트랜잭션 큐에 저장하고, 상기 트랜잭션을 수신하기 바로 직전에 수신한 다른 트랜잭션의 서명된 트랜잭션이 서명된 트랜잭션 큐에 저장된 경우, 상기 트랜잭션 큐에서 상기 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드할 수 있다.
트랜잭션 처리 지원 장치는 상기 트랜잭션 큐에서 로드한 서명되지 않은 트랜잭션에 사용자가 소유한 외부 소유 계정에서 송신된 트랜잭션들의 수를 지시하는 논스(nonce)를 부여할 수 있다.
이를 위해, 트랜잭션 처리 지원 장치는 논스 정보를 이용하여 상기 사용자 계정에서 송신된 트랜잭션들의 수를 식별할 수 있다.
구체적으로, 트랜잭션 처리 지원 장치는 상기 논스 정보에 상기 사용자 계정의 식별자에 대응하는 복수의 논스들이 존재하는 경우, 상기 논스들 중 상기 사용자 계정이 사용되는 사이드체인에 대응하는 논스를 상기 사용자 계정에서 송신된 트랜잭션들의 수로 식별할 수 있다.
트랜잭션 처리 지원 장치는 상기 사용자 계정에 대응하는 논스 정보가 존재하지 않는 경우, 상기 블록체인 네트워크에서 상기 사용자 계정으로부터 송신된 트랜잭션들을 카운트하여 상기 사용자 계정에 대응하는 논스 정보를 생성할 수 있다.
상기 논스 정보는 서명된 트랜잭션 큐에 저장된 트랜잭션을 송신한 외부 소유 계정의 식별자 및 상기 외부 소유 계정에서 송신된 트랜잭션들의 수(논스)를 포함할 수 있다.
트랜잭션 처리 지원 장치는 상기 트랜잭션의 서명을 생성하고, 상기 트랜잭션에 상기 서명을 추가하여 서명된 트랜잭션을 생성할 수 있다(S420).
트랜잭션 처리 지원 장치는 상기 사용자 단말의 사용자가 소유한 외부 소유 계정(EOA, External Owned Account)에 대응하여 저장된 개인키(private key)를 이용하여 상기 트랜잭션의 서명을 생성할 수 있다. 이를 위해, 상기 외부 소유 계정의 개인키는 트랜잭션 처리 지원 장치에 의해 관리될 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 서명된 트랜잭션을 큐 구조의 저장소에 저장할 수 있다(S430).
여기서, 저장소는 서명된 트랜잭션 큐일 수 있다.
트랜잭션 처리 지원 장치는 상기 서명된 트랜잭션을 서명된 트랜잭션 큐에 저장한 후에, 상기 외부 소유 계정에 대응하는 논스 정보를 갱신할 수 있다.
다음으로, 트랜잭션 처리 지원 장치는 저장소에서 서명된 트랜잭션을 포함하는 적어도 하나의 서명된 트랜잭션을 로드할 수 있다(S440).
다음으로, 트랜잭션 처리 지원 장치는 상기 적어도 하나의 서명된 트랜잭션의 상기 저장소 상의 위치의 순서대로 상기 적어도 하나의 서명된 트랜잭션을 블록체인 네트워크에 전송할 수 있다(S450).
상기 서명된 트랜잭션을 로드하는 단계와 블록체인 네트워크에 전송하는 단계에 관한 설명은 상술한 도 2의 트랜잭션을 로드하는 단계와 블록체인 네트워크에 전송하는 단계에 대한 설명과 중복되므로 생략하기로 한다.
도 5는 실시예에 따른 비동기적 트랜잭션 처리 아키텍처를 설명하기 위한 참고도이다.
도 5를 참조하면, 비동기적 트랜잭션 처리 아키텍처는 사용자 단말(110), 트랜잭션 처리 지원 장치(120), 블록체인 네트워크(130), 트랜잭션 저장소(140) 및 영구 저장소(150)를 포함할 수 있다.
사용자 단말(110)은 사이드체인을 이용하며, 이를 기반으로 하는 트랜잭션 처리를 요청하는 주체를 의미할 수 있다.
트랜잭션 처리 지원 장치(120)는 트랜잭션 처리를 지원하기 위한 모듈들을 포함하는 서버 레이어(server layer)로서, 트랜잭션 리시버(121), 논스 워커(122), 지갑 API(123), 트랜잭션 센더(124), 체인 크롤러(125) 및 트랜잭션 체커(126)를 포함할 수 있다.
트랜잭션 리시버(121)는 트랜잭션 응용 프로그램 프로그래밍 인터페이스(API, Application Programming Interface)로서 사용자 단말로부터 트랜잭션 처리 요청을 수신하고, 트랜잭션 처리 결과를 사용자 단말에 전송할 수 있다.
트랜잭션 리시버(121)는 트랜잭션의 비동기적 처리를 위해, 사용자 단말이 트랜잭션 처리 요청 시 트랜잭션을 트랜잭션 저장소(140)에 임시 저장하고, 트랜잭션 처리 요청에 대한 응답으로 트랜잭션에 대응하는 트랜잭션 식별자를 먼저 리턴(return)할 수 있다.
트랜잭션 저장소에 임시 저장된 트랜잭션이 처리되면, 콜백(callback) 함수를 통해 트랜잭션 처리 결과에 대응하는 트랜잭션 리시트를 사용자 단말에 전송하거나, 사용자 단말의 트랜잭션 식별자를 포함하는 트랜잭션 처리 결과 질의 요청에 대한 응답으로 상기 트랜잭션 리시트를 사용자 단말에 전송할 수 있다.
즉, 사용자 단말의 트랜잭션 처리 요청에 대한 응답으로 트랜잭션이 처리 완료될 때까지 대기하지 않고 트랜잭션 식별자를 바로 리턴함으로써 빠르게 응답할 수 있다. 또한, 사용자 단말로부터 체인에서 동시에 처리가능한 트랜잭션 수보다 많은 트랜잭션 처리 요청이 수신되는 경우에도 먼저 트랜잭션 처리 요청들 각각에 대한 응답으로 트랜잭션 식별자를 리턴하고, 실제 트랜잭션의 처리는 체인의 성능에 맞추어 수행함으로써 체인의 과부하를 방지할 수 있다.
트랜잭션 리시버(121)는 트랜잭션의 서명에 사용되는 개인키(private key)를 직접 관리하는 사용자의 사용자 단말로부터 상기 개인키를 이용하여 서명된 트랜잭션을 수신할 수 있으며, 상기 개인키를 트랜잭션 처리 지원 장치가 관리하는 사용자의 사용자 단말로부터 서명되지 않은 트랜잭션을 수신할 수도 있다.
트랜잭션 리시버(121)는 서명되지 않은 트랜잭션을 수신하는 경우 이를 트랜잭션 큐(141)에 저장할 수 있으며, 서명된 트랜잭션을 수신하는 경우 이를 서명된 트랜잭션 큐(142)에 저장할 수 있다.
논스 워커(122)는 트랜잭션 저장소(140)에 저장된 트랜잭션에 대한 논스를 관리하고, 지갑 API(123)를 호출하여 트랜잭션들에 대해 서명을 수행할 수 있다.
특히, 논스 워커(122)는 트랜잭션 큐(141)에 저장된 서명되지 않은 트랜잭션에 논스를 부여하고, 지갑 API(123)를 호출하여 서명을 수행한 뒤, 서명된 트랜잭션을 서명된 트랜잭션 큐(142)에 저장할 수 있다.
지갑 API(123)는 트랜잭션 처리를 위해 지갑 정보가 필요하거나, 서명되지 않은 트랜잭션에 대해 서명을 수행하고, 서명된 트랜잭션을 리턴하기 위한 모듈로서, 논스 워커(122)의 호출에 따라 동작할 수 있다.
논스 워커(122)의 지갑 API(123)의 호출에 따라 병렬적으로 동작하는 인스턴스(instance)들이 생성될 수 있으며, 상기 인스턴스들을 통해 복수의 트랜잭션들에 대해 병렬적으로 서명이 수행될 수 있다.
트랜잭션 센더(124)는 트랜잭션 저장소(140)에 저장된 트랜잭션을 로드하여, 체인에 트랜잭션을 전송할 수 있다.
특히, 트랜잭션 센더(124)는 서명된 트랜잭션 큐(142)에 저장된 서명된 트랜잭션을 로드하고, 이를 블록체인 네트워크(130)에 포함된 체인들 중 어느 하나의 체인에 전송할 수 있다.
트랜잭션 센더(124)는 체인의 처리 성능에 따라 설정된 전송 주기에 맞추어 트랜잭션을 체인에 전송할 수 있다. 이를 통해, 사용자 단말로부터 체인에서 동시에 처리가능한 트랜잭션 수보다 많은 트랜잭션 처리 요청이 수신되는 경우에도 체인의 성능에 맞추어 트랜잭션의 처리 속도를 제어함으로써 체인의 과부하를 방지할 수 있다.
트랜잭션 센더(124) 및 트랜잭션 체커(126)는 공통된 트랜잭션 처리 정보를 이용하며, 트랜잭션 센더(124)는 트랜잭션 체커(126)를 통해 정상적으로 처리되지 않은 것으로 확인된 트랜잭션을 체인에 재전송할 수 있다.
체인 크롤러(125)는 체인에 커밋된 데이터들을 가공하여 영구 저장소에 저장할 수 있다.
상기 영구 저장소에는 사용자 단말로부터 수신된 트랜잭션의 처리 결과에 대응하는 트랜잭션 리시트가 저장될 수 있으며, 트랜잭션 리시버(121)는 상기 영구 저장소에 저장된 상기 트랜잭션 리시트를 콜백 함수 또는 사용자 단말의 질의 요청에 대한 응답으로 사용자 단말에 전송할 수 있다.
트랜잭션 체커(126)는 트랜잭션 센더(124)에 의해 체인에 전송된 트랜잭션이 정상적으로 처리되었는지 트랜잭션 리시트를 질의하고, 트랜잭션 리시트가 기 설정된 시간을 초과하여 발행되지 않을 경우, 해당 트랜잭션이 재전송될 수 있도록 트랜잭션 처리 정보를 관리할 수 있다.
트랜잭션 체커(126)는 트랜잭션 처리 시간 정보 및 트랜잭션 처리 정보를 이용하여 상기 트랜잭션 처리 정보의 리셋 오프셋을 설정하여 재전송 대상을 지시하고, 트랜잭센 센더(124)는 트랜잭션 전송 대상을 결정함에 있어, 트랜잭션 처리 정보의 리셋 오프셋을 우선적으로 확인할 수 있다.
블록체인 네트워크(130)는 사이드체인들이 동작하도록 하기 위한 모듈들을 포함하는 체인 레이어(chain layer)로서, 체인 라우터(chain router, 131) 및 복수의 사이드체인(sidechain, 133)들을 포함할 수 있다.
체인 라우터(131)는 사이드체인과 블록체인 네트워크(130)에 참여한 서버들로서, 노드(node, 132)들의 위치를 추출하고, 그 위치에 대한 최적 경로를 지정하며, 최적 경로를 따라 트랜잭션을 전파할 수 있다.
하나의 사이드체인은 복수의 노드들에 의해 운영되며, 하나의 노드는 복수의 사이드체인들의 운영에 관여할 수 있다. 즉, 사이드체인들과 노드들은 다대다 관계일 수 있다.
트랜잭션 저장소(140)는 트랜잭션 데이터를 담는 큐(queue) 구조의 저장소일 수 있다. 여기서, 큐는 대용량의 실시간 로그 처리에 특화된 아키텍처의 분산 메시징 큐일 수 있다.
트랜잭션 저장소(140)는 블록체인 네트워크에 포함된 복수의 사이드체인들에 일대일 대응하는 복수의 토픽(topic)들로 구성되고, 상기 토픽들 각각은 분산 저장을 위한 복수의 파티션(partition)들을 포함하는 구조를 가질 수 있다.
상기 토픽들 각각의 파티션 수는 토픽들 각각에 대응하는 사이드체인에 대응하는 외부 소유 계정 수에 기초하여 토픽들 별로 다르게 설정될 수 있다. 예컨대, 제1 토픽에 대응하는 사이드체인에 대응하는 외부 소유 계정 수가 제2 토픽에 대응하는 사이드체인에 대응하는 외부 소유 계정 수보다 큰 경우, 상기 제1 토픽의 파티션 수는 상기 제2 토픽의 파티션 수보다 큰 값으로 설정될 수 있다.
트랜잭션 저장소(140)는 트랜잭션 큐(141) 및 서명된 트랜잭션 큐(142)를 포함할 수 있다.
트랜잭션 큐(141)는 아직 서명되지 않은 트랜잭션들이 저장되는 큐이고, 서명된 트랜잭션 큐(142)는 서명된 트랜잭션들이 저장되는 큐일 수 있다.
예컨대, 트랜잭션 큐(141)에는 트랜잭션 리시버(121)에 의해 수신된 서명되지 않은 트랜잭션이 저장될 수 있으며, 서명된 트랜잭션 큐(142)는 트랜잭션 리시버(121)에 의해 수신된 서명된 트랜잭션 또는 논스 워커(122)에 의해 서명이 수행된 트랜잭션이 저장될 수 있다.
영구 저장소(150)는 블록체인 네트워크(130)에 포함된 사이드체인들에 저장된 데이터의 가공된 데이터가 저장되는 저장소일 수 있다.
영구 저장소(150)는 키-값(key-value) 및 문서 데이터 구조를 지원하는 NoSQL 데이터베이스, 키와 값들의 관계를 표 형태로 저장한 관계형 데이터베이스(relational DB)를 포함할 수 있다.
도 6은 실시예에 따른 트랜잭션의 큐잉 구조를 나타내는 참고도이다.
특히, 도 6은 트랜잭션 처리 지원 장치가 서명되지 않은 트랜잭션을 수신하는 경우의 트랜잭션의 큐잉 구조를 나타내는 참고도이다.
도 6을 참조하면, 사용자 단말이 디앱(DApp, Decentralized Application)을 통해 트랜잭션을 전송하는 경우, 트랜잭션 리시버가 이를 트랜잭션 큐에 저장할 수 있다.
트랜잭션 리시버는 수신한 트랜잭션들 각각의 커밋 대상이 되는 사이드체인을 식별하고, 상기 트랜잭션들 각각을 상기 식별된 사이드체인에 대응하는 토픽에 저장할 수 있다.
트랜잭션 큐에 저장된 트랜잭션들은 선입선출 방식으로 논스 워커에 의해 논스가 부여되고 서명이 수행되어 서명된 트랜잭션 큐에 저장될 수 있다.
비록 도 6에는 도시되지 아니하였으나, 트랜잭션 처리 지원 장치가 서명된 트랜잭션을 수신하는 경우 트랜잭션 리시버는 서명된 트랜잭션을 서명된 트랜잭션 큐에 저장할 수 있고, 이 경우 트랜잭션을 트랜잭션 큐에 저장하는 과정, 논스를 부여하는 과정 및 서명을 수행하는 과정은 스킵(skip)될 수 있다.
서명된 트랜잭션 큐에 저장된 트랜잭션들은 선입선출 방식으로 트랜잭션 센더에 의해 로드되고 체인에 전송될 수 있다.
체인에 커밋된 데이터는 체인 크롤러의 주기적인 쿼럼 읽기(read quorum) 수행을 통해 획득되며, 체인 크롤러에 의해 획득된 블록, 트랜잭션 또는 트랜잭션 리시트와 관련된 정보는 영구 저장소에 저장될 수 있다.
도 7은 실시예에 따른 트랜잭션의 논스 부여 및 서명 수행 방법을 설명하기 위한 참고도이다.
특히, 도 7은 트랜잭션 처리 지원 장치가 서명되지 않은 트랜잭션을 수신하는 경우의 논스 부여 및 서명 수행 방법을 설명하기 위한 참고도이다.
도 7을 참조하면, 먼저 논스 워커는 트랜잭션 리시버에 의해 트랜잭션 큐에 저장된 서명되지 않은 트랜잭션을 로드할 수 있다.
논스 워커는 트랜잭션 큐에서 한번에 복수 개의 서명되지 않은 트랜잭션들을 로드할 수 있다. 예컨대, 논스 워커는 트랜잭션 큐에서 3개의 서명되지 않은 트랜잭션들을 로드할 수 있으며, 또한 논스 워커가 한번에 로드할 수 있는 트랜잭션의 수는 3이 아닌 다른 값으로 설정될 수 있다.
도 7에 도시된 트랜잭션 큐 및 서명된 트랜잭션 큐에 포함된 블록은 하나의 트랜잭션에 대응하며, 각 블록들에 표기된 "A0", "A1", "B0" 등의 부호 중 "A", "B"는 서로 다른 외부 소유 계정들 각각에 대응하며, "0", "1"은 각 외부 소유 계정의 트랜잭션들 각각에 대응할 수 있다.
즉, 도 7에 도시된 트랜잭션 큐는 제1 외부 소유 계정의 제1 트랜잭션(A0), 제1 외부 소유 계정의 제2 트랜잭션(A1), 제2 외부 소유 계정의 제1 트랜잭션(B0), 제1 외부 소유 계정의 제3 트랜잭션(A2), 제1 외부 소유 계정의 제1 트랜잭션(A3) 및 제2 외부 소유 계정의 제2 트랜잭션(B1)이 순서대로 저장된 큐에 대응할 수 있다.
큐 상에서의 저장 위치를 나타내는 오프셋(offset)은 0에서부터 시작하여, 큐 상에 데이터가 추가될 때마다 증가하는 값일 수 있다.
다음으로, 논스 워커는 트랜잭션 처리 정보, 논스 정보를 이용하여 로드된 트랜잭션에 부여할 논스 값을 결정할 수 있다.
트랜잭션 처리 정보 및 논스 정보는 논스 워커가 관리하는 데이터를 구조적으로 표현한 것이다.
트랜잭션 처리 정보는 적어도 5개의 필드를 포함할 수 있으며, 상기 5개의 필드는 트랜잭션의 식별 정보(ID), 트랜잭션이 저장된 토픽 식별 정보(chain ID), 트랜잭션을 큐에서 로드한 컨슈머 식별 정보(consumer ID), 트랜잭션이 저장된 파티션 식별 정보(partition) 및 트랜잭션의 큐 상에서의 저장 위치 정보(offset)일 수 있다.
논스 정보는 적어도 3개의 필드를 포함할 수 있으며, 상기 3개의 필드는 트랜잭션의 식별 정보(ref ID), 트랜잭션에 대응하는 외부 소유 계정의 식별 정보(EOA), 외부 소유 계정의 논스 값(nonce)일 수 있다. 상기 트랜잭션의 식별 정보는 트랜잭션 처리 정보에 포함된 트랜잭션의 식별 정보를 참조하는 값일 수 있다. 상기 트랜잭션의 식별 정보는 어느 둘 이상의 체인에 동일한 외부 소유 계정들의 식별 정보가 존재하는 경우에 상기 외부 소유 계정들을 구별하기 위해 사용될 수 있다.
로드된 트랜잭션에 대응하는 외부 소유 계정의 논스 값(또는 논스 정보)이 메모리에 저장되어 있지 않은 경우, 논스 워커는 체인에 상기 위부 소유 계정의 논스 값을 결정하기 위한 질의를 하고, 질의에 대한 응답에 기초하여 논스 값을 결정할 수 있다.
다음으로, 논스 워커는 로드된 트랜잭션에 논스를 부여하고, 논스가 부여된 트랜잭션이 반복 처리되지 않도록 논스가 부여된 트랜잭션의 정보를 트랜잭션 처리 정보에 반영할 수 있다.
다음으로, 논스 워커는 지갑 API를 호출하여 논스가 부여된 트랜잭션에 대해 서명을 수행할 수 있다.
다음으로, 논스 워커는 서명된 트랜잭션을 서명된 트랜잭션 큐에 저장할 수 있다.
도 7에 도시된 서명된 트랜잭션 큐에 포함된 "A0'"가 표기된 블록은 트랜잭션 큐에 포함된 "A0"가 표기된 블록에 대응하는 트랜잭션의 서명된 트랜잭션에 대응할 수 있다.
논스 워커는 한번에 복수 개의 서명된 트랜잭션들을 서명된 트랜잭션 큐에 저장할 수 있다. 예컨대, 논스 워커는 3개의 서명된 트랜잭션들을 저장할 수 있으며, 또한 논스 워커가 한번에 저장할 수 있는 트랜잭션의 수는 3이 아닌 다른 값으로 설정될 수 있다.
다음으로, 논스 워커는 서명된 트랜잭션 큐에 저장한 서명된 트랜잭션의 정보를 논스 정보에 반영할 수 있다.
도 8은 실시예에 따른 트랜잭션 전송 방법을 설명하기 위한 참고도이다.
특히, 도 8은 트랜잭션 처리 지원 장치가 서명된 트랜잭션을 체인에 전송하는 방법을 설명하기 위한 참고도이다
도 8을 참조하면, 먼저 트랜잭션 센더는 트랜잭션 처리 정보를 이용하여 서명된 트랜잭션 큐에서 전송 대상을 결정할 수 있다.
도 8에 도시된 서명된 트랜잭션 큐는 제1 외부 소유 계정의 제1 서명된 트랜잭션(A0'), 제1 외부 소유 계정의 제2 트랜잭션(A1') 및 제2 외부 소유 계정의 제1 트랜잭션(B0')이 순서대로 저장된 큐에 대응할 수 있다.
트랜잭션 처리 정보는 트랜잭션 센더 및 트랜젝션 체커가 공동으로 관리하는 데이터를 구조적으로 표현한 것이다.
여기서, 트랜잭션 센더 및 트랜젝션 체커가 공동으로 관리하는 트랜잭션 처리 정보는 논스 워커가 관리하는 트랜잭션 처리 정보와 서로 다른 데이터를 포함할 수 있다.
트랜잭션 센더 및 트랜젝션 체커가 공동으로 관리하는 트랜잭션 처리 정보는 적어도 7개의 필드를 포함할 수 있으며, 상기 7개의 필드는 트랜잭션의 식별 정보(ID), 트랜잭션이 저장된 토픽 식별 정보(chain ID), 트랜잭션을 큐에서 로드한 컨슈머 식별 정보(consumer ID), 트랜잭션이 저장된 파티션 식별 정보(partition), 트랜잭션의 큐 상에서의 저장 위치 정보(offset), 최종 오프셋(final offset) 및 리셋 오프셋(reset offset)일 수 있다.
즉, 트랜잭션 센더 및 트랜젝션 체커가 공동으로 관리하는 트랜잭션 처리 정보는 논스 워커가 관리하는 트랜잭션 처리 정보에 포함된 적어도 5개의 필드 외에 최종 오프셋(final offset) 및 리셋 오프셋(reset offset)의 두 필드를 더 포함한다.
*최종 오프셋은 바로 직전에 블록에 커밋된 트랜잭션의 상기 서명된 트랜잭션 상의 위치를 나타내는 정보이고, 리셋 오프셋은 트랜잭션이 정상적으로 처리되지 않아 재전송 대상인 트랜잭션의 상기 서명된 트랜잭션 상의 위치를 나타내는 정보일 수 있다. 트랜잭션이 체인에 전송되더라도 해당 트랜잭션이 마이닝(mining)되어 블록에 저장되지 않을 수 있기 때문에, 이와 같이 정상적으로 처리되지 않은 트랜잭션을 리커버링하기 위해 최종 오프셋과 리셋 오프셋이 이용될 수 있다.
트랜잭션 센더는 트랜잭션 처리 정보의 리셋 오프셋 필드에 값이 설정되어 있는 경우 리셋 오프셋에 대응하는 위치의 트랜잭션을 전송 대상으로 결정하고, 리셋 오프셋 필드에 값이 설정되어 있지 않은 경우 오프셋에 대응하는 위치의 트랜잭션을 전송 대상으로 결정할 수 있다.
다음으로, 트랜잭션 센더는 서명된 트랜잭션 큐에 저장된 트랜잭션들에 대하여 상기 전송 대상을 포함하는 적어도 하나의 트랜잭션을 로드할 수 있다.
즉, 트랜잭션 센더는 한번에 복수 개의 서명된 트랜잭션들을 로드할 수 있다. 예컨대, 트랜잭션 센더는 서명된 트랜잭션 큐에서 3개의 서명된 트랜잭션들을 로드할 수 있으며, 또한 트랜잭션 센더가 한번에 로드할 수 있는 서명된 트랜잭션의 수는 3이 아닌 다른 값으로 설정될 수 있다.
다음으로, 트랜잭션 센더는 로드된 서명된 트랜잭션들을 체인에 전송할 수 있다.
리셋 오프셋에 따라 트랜잭션을 로드하여 재전송하는 것은 정상적으로 처리되지 않은 트랜잭션을 재전송하는 리커버링을 수행하는 것을 의미하며, 리커버링 과정에서 정상적으로 처리된 트랜잭션과 동일한 트랜잭션이 체인에 재전송되는 경우, 체인에서 트랜잭션이 중복하여 전송되었음을 인지하고 해당 트랜잭션이 중복하여 저장되지 않도록 할 수 있다.
다음으로, 트랜잭션 센더는 체인에 전송한 서명된 트랜잭션의 정보를 트랜잭션 처리 정보 및 트랜잭션 처리 시간 정보에 반영할 수 있다.
트랜잭션 처리 시간 정보는 트랜잭션 센더 및 트랜젝션 체커가 공동으로 관리하는 데이터를 구조적으로 표현한 것이다.
트랜잭션 처리 시간 정보는 적어도 5개의 필드를 포함할 수 있으며, 상기 5개의 필드는 트랜잭션의 식별 정보(ref ID), 로드된 적어도 하나의 트랜잭션의 시작 지점 오프셋(offset), 로드된 적어도 하나의 트랜잭션의 마지막 항목에 대응하는 오프셋(target offset), 로드된 적어도 하나의 트랜잭션의 해시 값(TX hash), 트랜잭션이 트랜잭션 센더에 의해 전송된 시각(timestamp)일 수 있다.
도 9는 실시예에 따른 트랜잭션 전송 결과 검사 및 재전송 방법을 설명하기 위한 참고도이다.
특히, 도 9는 트랜잭션 처리 지원 장치가 체인에 전송된 트랜잭션이 체인에 정상적으로 반영(커밋)되었는지를 검사하고, 정상적으로 반영되지 않은 트랜잭션을 재전송하는 방법을 설명하기 위한 참고도이다
도 9을 참조하면, 먼저 트랜잭션 체커는 트랜잭션 처리 시간 정보를 이용하여 체인에 전송된 트랜잭션을 식별할 수 있다.
트랜잭션 체커는 트랜잭션 처리 시간 정보에 기록된 트랜잭션들 중 체인에 전송된 시각으로부터 기설정된 시간이 경과한 트랜잭션들을 전송 결과 검사 대상으로 결정할 수 있다.
다음으로, 트랜잭션 체커는 영구 저장소에 트랜잭션 리시트를 질의하고, 트랜잭션 리시트가 발행되었는지 여부에 기초하여 상기 전송 결과 검사 대상에 대응하는 트랜잭션이 체인에 정상적으로 반영되었는지 여부를 판단할 수 있다.
판단 결과, 트랜잭션이 체인에 정상적으로 반영되지 않은 경우, 트랜잭션 체커는 트랜잭션 처리 시간 정보에서 상기 트랜잭션의 트랜잭션 식별 정보(ref ID)와 일치하는 트랜잭션 처리 정보의 트랜잭션 식별 정보(ID)를 포함하는 레코드의 리셋 오프셋을 설정할 수 있다.
도 10은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.
실시예에 따른 트랜잭션 처리 지원 장치(120)는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1100)에서 구현될 수 있다.
컴퓨터 시스템(1100)은 버스(1120)를 통하여 서로 통신하는 하나 이상의 프로세서(1110), 메모리(1130), 사용자 인터페이스 입력 장치(1140), 사용자 인터페이스 출력 장치(1150) 및 스토리지(1160)를 포함할 수 있다. 또한, 컴퓨터 시스템(1100)은 네트워크(1180)에 연결되는 네트워크 인터페이스(1170)를 더 포함할 수 있다. 프로세서(1110)는 중앙 처리 장치 또는 메모리(1130)나 스토리지(1160)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1130) 및 스토리지(1160)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1130)는 ROM(1131)이나 RAM(1132)을 포함할 수 있다.
이상에서 설명된 실시예에 따르면, 사용자 사이에서 비상장주식이 보다 용이하고 안전하게 거래될 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110: 사용자 단말 120: 트랜잭션 처리 지원 장치
130: 블록체인 네트워크 140: 트랜잭션 저장소
150: 영구 저장소

Claims (11)

  1. 사용자 단말로부터 트랜잭션(transaction) 및 상기 트랜잭션의 처리 요청을 수신하는 단계;
    상기 트랜잭션을 큐(queue) 구조의 저장소에 저장하는 단계;
    상기 저장소에서 상기 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드하는 단계; 및
    상기 적어도 하나의 트랜잭션의 상기 저장소 상의 위치의 순서대로 상기 적어도 하나의 트랜잭션을 블록체인(blockchain) 네트워크에 전송하는 단계
    를 포함하는, 트랜잭션 처리 지원 방법.
  2. 제1 항에 있어서,
    상기 로드 하는 단계는
    상기 트랜잭션을 수신하기 바로 직전에 수신한 다른 트랜잭션이 상기 블록체인 네트워크에 전송된 경우에 상기 적어도 하나의 트랜잭션을 로드하는 단계인, 트랜잭션 처리 지원 방법.
  3. 제2 항에 있어서,
    상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 상기 적어도 하나의 트랜잭션 중 상기 저장소 상의 위치의 순서가 상대적으로 마지막인 트랜잭션이 바로 직전에 처리된 트랜잭션임을 지시하도록 트랜잭션 처리 정보(PTI, Processed Transaction Information)를 갱신하는 단계
    를 더 포함하고,
    상기 로드하는 단계는
    상기 트랜잭션 처리 정보를 이용하여 바로 직전에 수신한 상기 다른 트랜잭션이 상기 블록체인 네트워크에 전송되었는지 여부를 판단하는 단계
    를 더 포함하는, 트랜잭션 처리 지원 방법.
  4. 제3 항에 있어서,
    상기 큐 구조는
    상기 블록체인 네트워크에 포함된 복수의 사이드체인(sidechain)들 각각에 대응하도록 설정된 토픽(topic)들 및 상기 토픽들 각각에 대한 분산 저장을 위한 복수의 파티션(partition)들을 포함하는 구조이고,
    상기 트랜잭션 처리 정보는
    바로 직전에 처리된 트랜잭션에 대응하는 토픽 식별자, 파티션 식별자 및 파티션 상의 위치 식별자를 포함하는, 트랜잭션 처리 지원 방법.
  5. 제1 항에 있어서,
    상기 큐 구조는
    상기 블록체인 네트워크에 포함된 복수의 사이드체인들 각각에 대응하도록 설정된 토픽들 및 상기 토픽들 각각에 대한 분산 저장을 위한 복수의 파티션들을 포함하는 구조이고,
    상기 저장하는 단계는
    상기 사용자 단말의 사용자가 소유한 외부 소유 계정(EOA, External Owned Account)이 사용되는 사이드체인에 대응하는 토픽에 포함된 복수의 파티션들 중 어느 하나에 상기 트랜잭션을 저장하는 단계인, 트랜잭션 처리 지원 방법.
  6. 제5 항에 있어서,
    상기 로드하는 단계는
    상기 트랜잭션이 저장된 파티션 상의 상기 트랜잭션의 위치에서부터 기설정된 수만큼의 상기 적어도 하나의 트랜잭션을 로드하는 단계인, 트랜잭션 처리 지원 방법.
  7. 제6 항에 있어서,
    상기 전송하는 단계는
    상기 적어도 하나의 트랜잭션이 상기 토픽에 대응하는 사이드체인에 커밋(commit)되도록, 상기 적어도 하나의 트랜잭션을 상기 사이드체인에 전송하는 단계인, 트랜잭션 처리 지원 방법.
  8. 제7 항에 있어서,
    상기 전송하는 단계는
    상기 블록체인 네트워크에 포함된 복수의 사이드체인들 각각의 처리 성능에 따라 상기 사이드체인들 별로 서로 다르게 설정된 전송 주기에 기초하여, 상기 적어도 하나의 트랜잭션을 상기 사이드체인에 설정된 전송 주기에 맞추어 전송하는 단계인, 트랜잭션 처리 지원 방법.
  9. 제7 항에 있어서,
    상기 적어도 하나의 트랜잭션을 상기 블록체인 네트워크에 전송한 후에, 상기 트랜잭션이 상기 사이드체인에 커밋되었는지 여부를 확인하는 단계; 및
    상기 트랜잭션의 커밋 결과에 대응하는 트랜잭션 리시트(receipt)를 수신하고, 상기 트랜잭션 리시트를 상기 사용자 단말에 제공하는 단계
    를 더 포함하는, 트랜잭션 처리 지원 방법.
  10. 제1 항에 있어서,
    상기 트랜잭션의 처리 요청을 수신한 뒤, 상기 트랜잭션을 고유하게 식별하기 위한 트랜잭션 식별자를 생성하는 단계; 및
    상기 처리 요청에 대한 응답으로, 상기 트랜잭션 식별자를 상기 사용자 단말에 전송하는 단계
    를 더 포함하는, 트랜잭션 처리 지원 방법.
  11. 적어도 하나의 프로그램이 기록된 메모리; 및
    상기 프로그램을 실행하는 프로세서
    를 포함하며,
    상기 프로그램은
    사용자 단말로부터 트랜잭션(transaction) 및 상기 트랜잭션의 처리 요청을 수신하는 단계;
    상기 트랜잭션을 큐(queue) 구조의 저장소에 저장하는 단계;
    상기 저장소에서 상기 트랜잭션을 포함하는 적어도 하나의 트랜잭션을 로드하는 단계; 및
    상기 적어도 하나의 트랜잭션의 상기 저장소 상의 위치의 순서대로 상기 적어도 하나의 트랜잭션을 블록체인(blockchain) 네트워크에 전송하는 단계
    의 수행을 위한 명령어들을 포함하는, 트랜잭션 처리 지원 장치.
KR1020190179437A 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법 KR102319158B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190165093 2019-12-11
KR20190165093 2019-12-11

Publications (2)

Publication Number Publication Date
KR20210074148A true KR20210074148A (ko) 2021-06-21
KR102319158B1 KR102319158B1 (ko) 2021-10-29

Family

ID=76599981

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020190179437A KR102319158B1 (ko) 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법
KR1020190179435A KR102396599B1 (ko) 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법
KR1020190179436A KR102445937B1 (ko) 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020190179435A KR102396599B1 (ko) 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법
KR1020190179436A KR102445937B1 (ko) 2019-12-11 2019-12-31 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법

Country Status (1)

Country Link
KR (3) KR102319158B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071004A (ja) * 2006-09-13 2008-03-27 Fujitsu General Ltd トランザクション処理方法、及びそれを用いたオンラインシステム
KR101701131B1 (ko) 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
KR101849912B1 (ko) * 2017-05-25 2018-04-19 주식회사 코인플러그 스마트 컨트랙트 기반의 인증서 서비스를 제공하는 방법 및 이를 이용한 서버
KR20190108019A (ko) * 2018-03-13 2019-09-23 주식회사 웨이투빗 블록체인을 이용한 트랜잭션 처리 방법 및 이를 이용한 트랜잭션 관리 서버

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101937220B1 (ko) * 2017-02-01 2019-01-11 주식회사 아이콘루프 키 관리가 필요없는 블록체인을 기반한 전자서명 또는 메시지 인증 코드를 생성 및 검증 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071004A (ja) * 2006-09-13 2008-03-27 Fujitsu General Ltd トランザクション処理方法、及びそれを用いたオンラインシステム
KR101701131B1 (ko) 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
KR101849912B1 (ko) * 2017-05-25 2018-04-19 주식회사 코인플러그 스마트 컨트랙트 기반의 인증서 서비스를 제공하는 방법 및 이를 이용한 서버
KR20190108019A (ko) * 2018-03-13 2019-09-23 주식회사 웨이투빗 블록체인을 이용한 트랜잭션 처리 방법 및 이를 이용한 트랜잭션 관리 서버

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
‘이더리움의 Nonce가 무엇이고 왜 필요할까??’, Crocus(2019.10.13. 게재)* *

Also Published As

Publication number Publication date
KR20210074146A (ko) 2021-06-21
KR102445937B1 (ko) 2022-09-22
KR20210074147A (ko) 2021-06-21
KR102319158B1 (ko) 2021-10-29
KR102396599B1 (ko) 2022-05-12

Similar Documents

Publication Publication Date Title
US5802062A (en) Preventing conflicts in distributed systems
KR20110000737A (ko) 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선
US20120011100A1 (en) Snapshot acquisition processing technique
JP2020524434A (ja) ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
CN112583811B (zh) 钱包找回方法、设备和存储介质
US20230052935A1 (en) Asynchronous accounting method and apparatus for blockchain, medium and electronic device
WO2021098139A1 (zh) 跨链交易的状态数据的存储方法、装置及存储介质
US9407715B2 (en) Method and system for information exchange utilizing an asynchronous persistent store protocol
CN114327799B (zh) 分布式事务处理方法及装置、电子设备、存储介质
CN113409047B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN111651284A (zh) 一种处理业务数据的方法、装置、系统及存储介质
CN115829731A (zh) 一种交易信息处理方法及装置
KR102319158B1 (ko) 비동기적 트랜잭션 처리 아키텍처에서의 트랜잭션 처리 지원 장치 및 방법
WO2021052237A1 (zh) 事务处理方法、装置、设备、存储介质、数据库
CN112001800B (zh) 在区块链系统中进行业务处理的方法和装置
US9871698B2 (en) Information processing device
US20100082762A1 (en) Message tying processing method and apparatus
Ren et al. Improving the performance of blockchain sharding protocols with collaborative transaction verification
Qi et al. Latency-first smart contract: Overclock the blockchain for a while
CN104881479A (zh) 一种限制用户最小操作间隔的方法及装置
Kumar et al. An efficient algorithm for mutual exclusion using queue migration in computer networks
Zhou et al. The design and evaluation of a token-based independent update protocol
CN100517245C (zh) 主动复制容错系统非阻塞消息全序化方法
US20220222655A1 (en) Method for block consensus and method for managing transaction state
CN112150286A (zh) 基于区块链的交易处理方法、装置、电子设备及存储介质

Legal Events

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