[go: up one dir, main page]

KR102172751B1 - Method and system for exchanging cryptocurrency - Google Patents

Method and system for exchanging cryptocurrency Download PDF

Info

Publication number
KR102172751B1
KR102172751B1 KR1020180124730A KR20180124730A KR102172751B1 KR 102172751 B1 KR102172751 B1 KR 102172751B1 KR 1020180124730 A KR1020180124730 A KR 1020180124730A KR 20180124730 A KR20180124730 A KR 20180124730A KR 102172751 B1 KR102172751 B1 KR 102172751B1
Authority
KR
South Korea
Prior art keywords
server
order
transaction
matching server
matching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020180124730A
Other languages
Korean (ko)
Other versions
KR20200033080A (en
Inventor
문대경
Original Assignee
(주) 아이펀팩토리
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주) 아이펀팩토리 filed Critical (주) 아이펀팩토리
Priority to US16/564,088 priority Critical patent/US11386494B2/en
Priority to EP19197498.9A priority patent/EP3627351A1/en
Priority to JP2019168235A priority patent/JP6989147B2/en
Publication of KR20200033080A publication Critical patent/KR20200033080A/en
Application granted granted Critical
Publication of KR102172751B1 publication Critical patent/KR102172751B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

가상화폐 거래 시스템 및 방법을 제시하며, 일 실시예에 따르면, 가상화폐 거래를 위한 시스템은 가상화폐 거래를 요청하는 주문의 처리를 위해 상기 주문과 함께 체결될 타주문을 매칭하여 거래쌍을 생성하는 제1매칭서버, 및 상기 제1매칭서버를 상기 거래 시스템에 추가시킨 코디네이션 장치를 포함하며, 상기 코디네이션 장치는, 상기 제1매칭서버의 장애 시 제2매칭서버를 등록하여 상기 주문을 처리한다.A virtual currency trading system and method are presented, and according to an embodiment, a system for virtual currency trading generates a trading pair by matching other orders to be concluded with the order for processing an order requesting a virtual currency transaction. A first matching server, and a coordination device in which the first matching server is added to the transaction system, wherein the coordination device registers a second matching server when the first matching server fails to process the order.

Description

가상화폐 거래 방법 및 시스템{METHOD AND SYSTEM FOR EXCHANGING CRYPTOCURRENCY}Virtual currency trading method and system {METHOD AND SYSTEM FOR EXCHANGING CRYPTOCURRENCY}

본 명세서에서 개시되는 실시예들은 가상화폐를 거래하는 방법 및 시스템에 관한 것으로, 보다 상세하게는 순차적으로 체결이 이루어져야 하는 가상화폐 거래에 있어 장애 발생에 유연하게 대처하여 안전하게 거래가 체결되도록 하는 가상화폐 거래 방법 및 시스템에 관한 것이다.The embodiments disclosed in this specification relate to a method and system for trading virtual currency, and more specifically, a virtual currency transaction that enables a secure transaction by flexibly responding to failures in virtual currency transactions that must be executed in sequence. It relates to a method and system.

최근 들어, 비트코인, 이더리움과 같은 가상화폐가 화폐로서의 신용과 가치를 갖게 됨에 따라 그 거래가 활발해지고 있다. 예를 들어, 실물화폐로 가상화폐를 매수할 수 있고, 가상화폐로 실물화폐를 매수할 수 있다. 또한 가상화폐 자체가 가치를 지님에 따라 다른 가상화폐와 교환의 대상이 되기도 한다. In recent years, as cryptocurrencies such as Bitcoin and Ethereum have credibility and value as currency, the transaction has become active. For example, you can buy virtual currency with real money, and you can buy real money with virtual currency. Also, depending on the value of the virtual currency itself, it is also subject to exchange with other virtual currency.

가상화폐의 거래가 활발해짐에 따라 가상화폐를 안전하게 거래하면서 빠르게 처리할 수 있는 시스템의 니즈가 커지고 있다. 또한 가상화폐량이 유동적이기 때문에 가상화폐 거래 요청이 갑자기 증가하였을 때에도 증가량에 대해 유연하게 대처할 수 있는 시스템이 필요하다. 다만 오늘날 가상화폐의 거래를 중개하는 시스템들은 거래를 수행하는데 그칠 뿐, 거래를 빠르게 체결시키거나, 시스템 내 장애가 발생하였을 때 상기 장애에 대한 대응책이 미흡하다.As the cryptocurrency transaction becomes more active, the need for a system that can process cryptocurrency safely while transacting quickly is increasing. In addition, since the amount of cryptocurrency is flexible, a system that can flexibly respond to the increase in cryptocurrency transaction requests is required. However, today's systems that mediate cryptocurrency transactions only perform transactions, and when a transaction is concluded quickly or an error occurs in the system, countermeasures for the above-described failure are insufficient.

관련하여 한국특허공개문헌 제10-2018-0107037호는 구매자는 가상 화폐의 시세에 따라 현금화하여 사용할 수 있고, 판매자는 일반 결제와 동일하게 대금을 요청하고 현금 또는 가상화폐로 지불 받을 수 있는 결제 시스템에 대해 제안할 뿐 상술된 니즈를 만족하고 있지 못하다. In relation to Korean Patent Publication No. 10-2018-0107037, a payment system in which a buyer can use it by converting it into cash according to the market price of virtual currency, and a seller can request a payment in the same way as a general payment and receive payment in cash or virtual currency. It only proposes for and does not satisfy the above-described needs.

따라서 상술된 니즈를 충족하기 위한 기술이 필요하게 되었다.Therefore, there is a need for a technology to meet the needs described above.

한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.On the other hand, the above-described background technology is technical information that the inventor possessed for derivation of the present invention or acquired during the derivation process of the present invention, and is not necessarily known to be publicly known before filing the present invention. .

본 명세서에서 개시되는 실시예들은, 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. Embodiments disclosed herein are aimed at presenting a virtual currency trading system and method.

본 명세서에서 개시되는 실시예들은, 초당 처리 가능한 주문 처리 건수를 높일 수 있어 효율적으로 주문을 처리할 수 있는 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. The embodiments disclosed in the present specification aim to provide a cryptocurrency trading system and method capable of efficiently processing orders by increasing the number of orders processed per second.

본 명세서에서 개시되는 실시예들은, 가상화폐 거래 서비스를 용이하게 확장시킬 수 있는 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. The embodiments disclosed in the present specification aim to provide a virtual currency trading system and method that can easily expand a virtual currency trading service.

본 명세서에서 개시되는 실시예들은, 거래 시스템에서 발생될 수 있는 장애에 대해 능동적으로 대처 가능한 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. The embodiments disclosed in the present specification aim to provide a virtual currency trading system and method capable of actively coping with a failure that may occur in a trading system.

본 명세서에서 개시되는 실시예들은, 데이터베이스에 가해지는 부하를 최소화시킬 수 있는 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. The embodiments disclosed in this specification aim to provide a virtual currency trading system and method capable of minimizing the load on a database.

본 명세서에서 개시되는 실시예들은, 유저데이터를 안전하게 이용할 수 있는 가상화폐 거래 시스템 및 방법을 제시하는 데 목적이 있다. The embodiments disclosed in the present specification aim to provide a cryptocurrency trading system and method that can safely use user data.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 가상화폐 거래를 위한 시스템으로서, 가상화폐 거래를 요청하는 주문의 처리를 위해 상기 주문과 함께 체결될 타주문을 매칭하여 거래쌍을 생성하는 제1매칭서버, 및 상기 제1매칭서버를 상기 거래 시스템에 추가시킨 코디네이션 장치를 포함하며, 상기 코디네이션 장치는, 상기 제1매칭서버의 장애 시 제2매칭서버를 등록하여 상기 주문을 처리한다.As a technical means for achieving the above-described technical problem, according to an embodiment, as a system for virtual currency transaction, a transaction pair by matching other orders to be concluded with the order to process an order requesting a virtual currency transaction A first matching server for generating a, and a coordination device in which the first matching server is added to the transaction system, wherein the coordination device registers a second matching server when the first matching server fails to place the order. Process.

다른 실시예에 따르면, 가상화폐 거래를 요청하는 주문의 처리를 위해 상기 주문과 함께 체결될 타주문을 매칭하여 거래쌍을 생성하는 제1매칭서버를 포함하는 가상화폐 거래 시스템이, 가상화폐를 거래하는 방법으로서, 상기 제1매칭서버의 장애 시 제2매칭서버를 등록하여 상기 주문을 처리하는 단계를 포함한다.According to another embodiment, a cryptocurrency trading system including a first matching server for generating a trading pair by matching other orders to be concluded with the order for processing an order requesting a cryptocurrency transaction, transacts cryptocurrency As a method of doing so, it includes the step of registering a second matching server to process the order when the first matching server fails.

또 다른 실시예에 따르면, 가상화폐 거래 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서, 상기 가상화폐 거래방법은, 제1매칭서버의 장애 시 제2매칭서버를 등록하여 주문을 처리하는 단계를 포함한다.According to another embodiment, as a computer-readable recording medium in which a program for performing a virtual currency transaction method is recorded, the virtual currency transaction method includes registering a second matching server to process an order when the first matching server fails. Includes steps.

또 다른 실시예에 따르면, 가상화폐 거래 시스템에 의해 수행되며, 가상화폐 거래방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램으로서 상기 가상화폐 거래방법은, 제1매칭서버의 장애 시 제2매칭서버를 등록하여 주문을 처리하는 단계를 포함한다.According to another embodiment, as a computer program performed by a virtual currency trading system and stored in a medium to perform a virtual currency trading method, the virtual currency trading method registers a second matching server when the first matching server fails. And processing the order.

전술한 과제 해결 수단 중 어느 하나에 의하면, 가상화폐 거래 시스템 및 방법을 제시할 수 있다. According to any one of the above-described problem solving means, it is possible to propose a virtual currency trading system and method.

전술한 과제 해결 수단 중 어느 하나에 의하면, 초당 처리 가능한 주문 처리 건수를 높일 수 있어 효율적으로 주문을 처리할 수 있는 가상화폐 거래 시스템 및 방법을 제시할 수 있다.According to any one of the above-described problem solving means, it is possible to provide a virtual currency trading system and method capable of efficiently processing orders by increasing the number of orders processed per second.

전술한 과제 해결 수단 중 어느 하나에 의하면, 가상화폐 거래 서비스를 용이하게 확장시킬 수 있는 가상화폐 거래 시스템 및 방법을 제시할 수 있다. 즉 주문량이 증가하거나 주문의 처리에 따른 거래량이 증가하더라도 시스템을 스케일아웃(scale-out)함으로써 서비스를 확장시킬 수 있다.According to any one of the above-described problem solving means, a virtual currency trading system and method capable of easily expanding a virtual currency trading service can be provided. That is, even if the order volume increases or the transaction volume according to order processing increases, the service can be expanded by scaling out the system.

전술한 과제 해결 수단 중 어느 하나에 의하면, 거래 시스템에서 발생될 수 있는 장애에 대해 능동적으로 대처 가능한 가상화폐 거래 시스템 및 방법을 제시할 수 있다. 이에 가상화폐 거래 서비스 제공 시, 서비스의 중단 없이 가상화폐의 거래가 가능하도록 한다.According to any one of the above-described problem solving means, a virtual currency trading system and method capable of actively coping with a failure that may occur in a trading system can be provided. Therefore, when providing a virtual currency transaction service, it is possible to trade virtual currency without interruption of the service.

전술한 과제 해결 수단 중 어느 하나에 의하면, 데이터베이스에 가해지는 부하를 최소화시킬 수 있는 가상화폐 거래 시스템 및 방법을 제시할 수 있다. 거래 시스템을 구성하는 주문을 획득하는 어드미션서버가, 주문을 처리하는 매칭서버로 주문을 큐잉함으로써 매칭서버가 주문을 데이터베이스로부터 긁어오지 않아도 되며 그 결과 데이터베이스에 가해지는 부하를 최소화시킬 수 있다.According to any one of the above-described problem solving means, a virtual currency trading system and method capable of minimizing the load on the database can be provided. By queuing the order to the matching server that processes the order by the admission server that obtains the order constituting the transaction system, the matching server does not have to pick up the order from the database, and as a result, the load on the database can be minimized.

전술한 과제 해결 수단 중 어느 하나에 의하면, 유저데이터를 안전하게 이용할 수 있는 가상화폐 거래 시스템 및 방법을 제시할 수 있다. 즉, 유저데이터를 리스(lease) 요청함으로써, 어드미션서버 또는 커밋서버가 캐시서버를 이용할 때 발생될 수 있는 데이터 경합을 방지할 수 있다. According to any one of the above-described problem solving means, it is possible to propose a virtual currency trading system and method that can safely use user data. That is, by requesting a lease of user data, data contention that may occur when the admission server or the commit server uses the cache server can be prevented.

개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects that can be obtained in the disclosed embodiments are not limited to the above-mentioned effects, and other effects not mentioned are obvious to those of ordinary skill in the art to which the embodiments disclosed from the following description belong. Can be understood.

도 1 내지 도 3은 일 실시예에 따른 가상화폐 거래 시스템을 도시한 구성도이다.
도 4 내지 도 6은 일 실시예에 따른 가상화폐 거래 방법을 설명하기 위한 순서도이다.
1 to 3 are configuration diagrams illustrating a virtual currency trading system according to an embodiment.
4 to 6 are flowcharts illustrating a method of trading virtual currency according to an embodiment.

아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings. The embodiments described below may be modified and implemented in various different forms. In order to more clearly describe the features of the embodiments, detailed descriptions of matters widely known to those of ordinary skill in the art to which the following embodiments belong are omitted. In addition, parts not related to the description of the embodiments are omitted in the drawings, and similar reference numerals are attached to similar parts throughout the specification.

명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 ‘직접적으로 연결’되어 있는 경우뿐 아니라, ‘그 중간에 다른 구성을 사이에 두고 연결’되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.Throughout the specification, when a component is said to be "connected" with another component, this includes not only the case where it is'directly connected', but also the case where it is'connected with another element in the middle.' In addition, when a certain configuration "includes" a certain configuration, this means that other configurations may be further included rather than excluding other configurations, unless otherwise specified.

이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.Hereinafter, exemplary embodiments will be described in detail with reference to the accompanying drawings.

도 1 내지 도 3은 일 실시예에 따른 가상화폐 거래 시스템의 구성을 도시한 도면이다. 1 to 3 are diagrams showing the configuration of a virtual currency trading system according to an embodiment.

관련하여 ‘가상화폐’란 컴퓨터 등에 정보 형태로 남아 실물 없이 사이버 상으로 거래되는 전자화폐의 일종으로 암호화폐라고 칭하기도 한다. In relation to this,'virtual currency' is a kind of electronic money that remains in the form of information on computers, etc., and is traded in the cyber world, and is sometimes called cryptocurrency.

가상화폐 거래 시스템(설명의 편의상, 이하에서는 거래 시스템이라 함)(100)은 유저로부터 가상화폐의 거래(예를 들어 가상화폐의 매도, 가상화폐의 매수 등)를 요청 받으면 상기 거래를 주문으로 인식하고 주문을 처리하여 거래가 완료되도록 한다.The virtual currency transaction system (for convenience of explanation, hereinafter referred to as a transaction system) 100 recognizes the transaction as an order when a user requests a transaction for virtual currency (for example, selling virtual currency, buying virtual currency, etc.) And process the order to complete the transaction.

도 1을 참조하면, 일 실시예에 따른 거래 시스템(100)은 매칭서버(120)를 포함한다.Referring to FIG. 1, a transaction system 100 according to an embodiment includes a matching server 120.

또한 일 실시예에 따른 어드미션서버(110), 커밋서버(130), 캐시서버(140) 및 데이터베이스(150)를 포함할 수 있다. In addition, it may include an admission server 110, a commit server 130, a cache server 140, and a database 150 according to an embodiment.

일 실시예에 따른 어드미션서버(admission server; 110)는 거래 시스템(100)의 외부 시스템(미도시)과 통신하며 외부 시스템(미도시)으로부터 유저의 가상화폐 매도 요청 또는 매수 요청을 받는다. The admission server 110 according to an embodiment communicates with an external system (not shown) of the transaction system 100 and receives a user's request to sell or purchase a virtual currency from an external system (not shown).

어드미션서버(110)는 외부 시스템으로부터 수신된 상기 매도/매수의 요청을 ‘주문’으로 처리할 수 있다. 예를 들어, 어드미션서버(110)는 비트코인 1개를 100원의 가격으로 매수할 것을 요청하는 주문을 획득할 수 있다. 이때 주문은 다른 주문과 구별할 수 있는 식별자를 가지며, 상기 식별자는 각 주문을 유일하게 인식할 수 있도록 한다.The admission server 110 may process the sell/buy request received from an external system as a'order'. For example, the admission server 110 may obtain an order requesting to buy one bitcoin at a price of 100 won. At this time, the order has an identifier that can be distinguished from other orders, and the identifier allows each order to be uniquely recognized.

이때, 어드미션서버(110)는 주문의 종류를 구별할 수 있다. 주문은 예를 들어, 정해진 금액으로만 매수 또는 매도하도록 하는 ‘지정가 거래’, 요청된 시점에 시장에서 거래가 체결되고 있는 금액으로 매수 또는 매도하도록 하는 ‘시장가 거래’, 및 특정 조건이 만족될 때 또는 특정 조건이 만족될 때까지만 매수/매도하도록 하는 ‘스탑 거래’가 있을 수 있다. 어드미션서버(110)는 주문의 종류를 구별하고 요청된 주문 중 적어도 일부가 체결되도록 할 수 있다.At this time, the admission server 110 may distinguish the type of order. An order can be, for example, a'limit price transaction' that allows you to buy or sell only at a fixed amount, a'market price transaction' that allows you to buy or sell at the amount that the transaction is being concluded on the market at the time requested, and when certain conditions are satisfied, or There may be a'stop trading' that allows you to buy/sell only until certain conditions are satisfied. The admission server 110 may distinguish types of orders and allow at least some of the requested orders to be concluded.

어드미션서버(110)는 획득된 주문의 종류를 구별하여, 주문이 ‘지정가 거래’ 또는 ‘시장가 거래’라 판단되면 상기 주문을 매칭서버(120)로 전달할 수 있다. 또한 주문이 ‘스탑 거래’라 판단되면 후술할 스탑오더서버(160)로 상기 주문을 전달할 수 있다. 이때 ‘스탑 거래’는 스탑오더서버(160)를 거쳐 ‘지정가 거래’ 또는 ‘시장가 거래’로 재획득될 수 있고, 재획득된 주문을 매칭서버(120)로 전달할 수 있다.The admission server 110 may distinguish the types of the acquired orders and, when it is determined that the order is a'limited price transaction' or a'market price transaction', may transmit the order to the matching server 120. In addition, when it is determined that the order is “stop transaction”, the order may be delivered to a stop order server 160 to be described later. In this case, the'stop transaction' may be reacquired as a'designated price transaction' or a'market price transaction' through the stop order server 160, and the reacquired order may be transmitted to the matching server 120.

어드미션서버(110)는 주문을 획득하면 캐시서버(140)에 요청하여 유저데이터를 획득할 수 있다. When the admission server 110 obtains an order, the admission server 110 may request the cache server 140 to obtain user data.

이때 ‘유저데이터’는 가상화폐의 거래에 필요한 정보로서 유저에 관한 제반 정보를 포함하며, 예를 들어, 유저의 잔고에 관한 정보 등을 포함할 수 있다. 또한 예를 들어 유저데이터는, 요청된 주문을 기록하거나 주문 처리 완료에 따른 주문 삭제를 기록하는 오더북(order book) 등을 포함할 수 있다. In this case, the “user data” is information necessary for the transaction of virtual currency and includes all information about the user, and may include, for example, information about the user's balance. In addition, for example, the user data may include an order book that records a requested order or deletes an order upon completion of order processing.

유저데이터의 획득을 위해 일 실시예에 따르면, 어드미션서버(110)는 유저데이터에 대해 캐시서버(140)로 리스(lease) 요청할 수 있으나 유저데이터를 획득하기 위한 방법은 상술된 예에 제한되는 것은 아니며 예를 들어 어드미션서버(110)는 유저데이터에 대해 락(lock) 요청을 할 수 있다. For acquiring user data, according to an embodiment, the admission server 110 may request a lease from the cache server 140 for user data, but the method for acquiring user data is limited to the above-described example. Not, for example, the admission server 110 may request a lock on user data.

상기 유저데이터를 획득한 어드미션서버(110)는 유저데이터를 참조하여 주문을 요청한 유저가 상기 주문을 처리하기 위한 잔고를 갖는지 확인할 수 있다. The admission server 110 that has obtained the user data may check whether the user requesting the order has a balance for processing the order by referring to the user data.

그리고 잔고가 있다고 판단되면 어드미션서버(110)는 리스 요청한 데이터를 캐시서버(140)에 반환하면서 주문에 관한 정보도 함께 전달할 수 있다. 이하에서 보다 상세히 서술될 캐시서버(140)는 상기 주문 정보를 획득하면서, 데이터베이스(150)에 저장된 유저의 오더북에 주문을 기록할 수 있다. 또한 어드미션서버(110)는 주문 정보를 캐시서버(140)로 전달하면서 자신의 식별자(예를 들어 서버 아이디)도 함께 전달하여 서버의 식별자가 데이터베이스(150)에 저장되도록 할 수 있다.In addition, when it is determined that there is a balance, the admission server 110 may return the lease-requested data to the cache server 140 and transmit information about the order together. The cache server 140, which will be described in more detail below, may record the order in the user's order book stored in the database 150 while acquiring the order information. In addition, the admission server 110 may transmit order information to the cache server 140 and transmit its own identifier (for example, a server ID) as well, so that the server identifier is stored in the database 150.

그리고 어드미션서버(110)는 외부 시스템(미도시)에 주문에 관한 결과값을 전달할 수 있다.In addition, the admission server 110 may transmit a result value of the order to an external system (not shown).

또한 어드미션서버(110)는 주문을 매칭서버(120)로 큐잉(queuing)할 수 있다. Also, the admission server 110 may queue the order to the matching server 120.

상술된 어드미션서버(110)는 하나 이상의 인스턴스(instance)로 구현할 수 있으며 인스턴스를 증가시키면서 스케일아웃(scale-out)될 수 있다.The above-described admission server 110 may be implemented as one or more instances and may be scaled out while increasing instances.

일 실시예에 따른 매칭서버(120)는 큐잉된 주문들을 매칭하여 거래쌍을 생성한다.The matching server 120 according to an embodiment creates a transaction pair by matching the queued orders.

즉 매칭서버(120)는 어드미션서버(110)로부터 주문을 획득할 수 있으며, 획득된 주문들을 서로 매칭하여 거래가 체결될 수 있다고 판단되면 체결 가능한 주문의 쌍을 거래쌍으로 커밋서버(130)로 전달할 수 있다. 후술될 커밋서버(130)는 거래쌍에 관한 정보를 데이터베이스(150)에 기록할 수 있다. 이를 통해 매칭서버(120)가 직접 체결될 거래쌍을 처리하기 위해 데이터베이스(150)에 액세스하지 않아도 되며 이는 매칭서버(120)에서 발생될 수 있는 I/O 병목을 최소화시킨다.That is, the matching server 120 can obtain an order from the admission server 110, and when it is determined that a transaction can be concluded by matching the obtained orders with each other, the pair of orders that can be executed is transmitted to the commit server 130 as a transaction pair. I can. The commit server 130 to be described later may record information on a transaction pair in the database 150. Through this, the matching server 120 does not need to access the database 150 to process the transaction pair to be directly concluded, and this minimizes the I/O bottleneck that may occur in the matching server 120.

매칭서버(120)는 거래쌍을 생성하면 상기 거래쌍에 포함된 주문을 큐에서 삭제할 수 있다.When the matching server 120 creates a transaction pair, the order included in the transaction pair may be deleted from the queue.

또한 매칭서버(120)는 거래쌍이 체결되었음에 관한 정보인 체결 정보를 스탑오더서버(160)로 전달할 수 있다. 이때 체결 정보는 커밋서버(130)로부터 수신될 수 있으며, 커밋서버(130)는 매칭서버(120)로부터 전달된 체결 요청에 응답하여 체결 정보를 매칭서버(120)로 전달할 수 있다.In addition, the matching server 120 may transmit execution information, which is information regarding a transaction pair, to the stop order server 160. In this case, the execution information may be received from the commit server 130, and the commit server 130 may transmit the execution information to the matching server 120 in response to the execution request transmitted from the matching server 120.

한편 매칭서버(120)는 어드미션서버(110)에 장애가 있음을 감지할 수 있고 어드미션서버(110)에 장애가 있다고 판단하면, 데이터베이스(150)의 오더북에서 어드미션서버(110)의 서버 식별자를 갖는 주문 중 자신이 모르는 주문을 어드미션서버(110)가 전달한 것처럼 처리하기 위해 큐잉시킬 수 있다.On the other hand, the matching server 120 can detect that there is a failure in the admission server 110, and if it is determined that there is a failure in the admission server 110, the order with the server identifier of the admission server 110 in the order book of the database 150 Among them, an order that is unknown to them may be queued in order to be processed as if the admission server 110 delivered it.

또한 매칭서버(120)는 커밋서버(130)에 장애가 있음을 감지할 수 있고, 커밋서버(130)에 장애가 있다고 판단하면 커밋서버(130)로부터 애크를 받지 못한 주문들에 대해 데이터베이스(150) 상의 오더북과 트랜잭션 이력을 참고하여 데이터베이스(150) 상에 처리가 완료되었는지 여부를 판단하고 완료되지 않았다면 다른 커밋서버로 상기 주문을 처리하도록 요청할 수 있다.In addition, the matching server 120 can detect that there is a failure in the commit server 130, and if it is determined that there is a failure in the commit server 130, the database 150 for orders that have not received an ACK from the commit server 130 It is determined whether or not processing has been completed on the database 150 by referring to the order book and transaction history, and if not, a request for processing the order to another commit server may be performed.

상술된 매칭서버(120)는 하나 이상의 인스턴스로 구현될 수 있으며, 하나 이상의 인스턴스 중 하나의 인스턴스를 마스터(master)로 선정하여 어드미션서버(110)로부터 주문을 큐잉받아 커밋서버(120)와 통신하면서 주문을 처리하도록 할 수 있다. The above-described matching server 120 may be implemented as one or more instances, and by selecting one of the one or more instances as a master, receiving orders from the admission server 110 and communicating with the commit server 120 You can have your order fulfilled.

이때 인스턴스가 복수 개이면 상기 복수의 인스턴스는 물리적으로 구분된 서버마다 설치되거나 하나의 물리적 서버에 설치될 수 있다. 따라서 인스턴스가 마스터 인스턴스로 선정되면 상기 인스턴스에 대응되는 물리적인 서버가 매칭서버로 동작하며 상기 물리적인 서버는 장애가 발생된 서버와 상이하거나 동일한 서버일 수 있다. 바람직하게는 장애에 유연하게 대응하기 위해 인스턴스 별로 상이한 물리 서버에 위치할 수 있다.In this case, if there are a plurality of instances, the plurality of instances may be installed for each physically separated server or on one physical server. Therefore, when an instance is selected as a master instance, a physical server corresponding to the instance operates as a matching server, and the physical server may be different from or the same as the server in which the failure occurred. Preferably, in order to flexibly respond to failure, it may be located on a different physical server for each instance.

한편 마스터로 선정된 인스턴스 이외의 인스턴스는 슬레이브(slave)로 설정할 수 있으며, 이때 마스터 인스턴스가 장애가 생겨 매칭서버(120)로서 동작하지 못한다면, 슬레이브 인스턴스 중 하나가 마스터 인스턴스가 될 수 있다. 가상화폐 거래의 특성상 거래의 체결이 순차적으로 이루어짐을 고려하면 하나의 매칭서버만이 동작해야 하나, 매칭서버에 발생될 수 있는 장애에 대한 대처를 위해 복수의 인스턴스 중 하나의 인스턴스만이 매칭서버로 동작하도록 할 수 있다.Meanwhile, an instance other than the instance selected as the master may be set as a slave. In this case, if the master instance fails to operate as the matching server 120 due to a failure, one of the slave instances may become the master instance. Considering that transactions are executed sequentially due to the nature of cryptocurrency transactions, only one matching server should be operated, but only one of the plurality of instances is used as a matching server to cope with possible failures in the matching server. You can make it work.

이때 하나 이상의 인스턴스 중 마스터 인스턴스를 선정하는 방법은 다양할 수 있다.At this time, a method of selecting a master instance among one or more instances may be various.

일 실시예에 따르면 슬레이브 인스턴스 중 랜덤하게 선택된 슬레이브 인스턴스가 마스터 인스턴스가 될 수 있다.According to an embodiment, a slave instance randomly selected among slave instances may become the master instance.

또 다른 실시예에 따르면 슬레이브 인스턴스 중 가장 먼저 매칭서버로서 등록된 슬레이브 인스턴스가 마스터 인스턴스가 될 수 있다.According to another embodiment, a slave instance registered as the first matching server among slave instances may be the master instance.

관련하여 도 3에서 도시된 바와 같이 거래 시스템(100)은 코디네이션 장치(170)를 추가로 더 포함할 수 있는데, 코디네이션 장치(170)은 분산형 구성 서비스, 동기화 서비스 및 네이밍 레지스트리(naming registry) 중 적어도 하나를 제공하며, 거래 시스템을 구성하는 서버들 간의 정보 공유, 서버의 상태 체크 또는 서버들 간의 동기화를 수행할 수 있다. 따라서 시스템에서 새롭게 등록되고자 하는 서버는 코디네이션 장치(170)가 감지할 수 있고, 코디네이션 장치(미도시)는 서버를 등록할 수 있다. 이와 같은 코디네이션 장치(미도시)는 예를 들어, 아파치 주키퍼(apache zookeeper)로 구현될 수 있으며 또는 아파치 주키퍼와 치환 가능한 임의의 솔루션으로도 구현 가능하다. Relatedly, as shown in FIG. 3, the transaction system 100 may further include a coordination device 170, and the coordination device 170 is among a distributed configuration service, a synchronization service, and a naming registry. At least one is provided, and information sharing between servers constituting a transaction system, status check of servers, or synchronization between servers may be performed. Accordingly, the server to be newly registered in the system can be detected by the coordination device 170, and the coordination device (not shown) can register the server. Such a coordination device (not shown) may be implemented with, for example, an Apache zookeeper, or may be implemented with an arbitrary solution that can be replaced with Apache Zookeeper.

따라서 예를 들어, 슬레이브 인스턴스 중 먼저 코디네이션 장치(미도시)에 매칭서버로 등록한 인스턴스가 마스터 인스턴스가 될 수 있다.Therefore, for example, an instance registered as a matching server in a coordination device (not shown) among the slave instances may become the master instance.

상술된 예에 따라 마스터 인스턴스가 변경되면, 새롭게 마스터가 되는 매칭서버는 커밋서버(130)에게 직전의 마스터 인스턴스로부터 체결 요청을 받았으나 체결되지 못한 상태의 거래쌍이 있다면 상기 거래쌍을 체결하고 응답하기를 요청할 수 있다. 상기 요청에 따라 커밋서버(130)는 미체결된 거래쌍을 체결하고 새로운 마스터 인스턴스로 응답할 수 있다. 그 후 새로운 마스터 인스턴스는 데이터베이스(150) 상의 오더북에 기록된 주문을 참조하여 이전 마스터 인스턴스가 처리하지 못한 주문을 복구할 수 있다. 복구하는 동안 새로운 마스터 인스턴스는 어드미션서버(110)로부터 새로운 주문을 수신할 수 있으며 새로운 주문은 펜딩되고 있다가 처리하지 못한 주문이 복구 완료된 이후, 복구된 주문과 중복되지 않는다면 큐잉될 수 있다. When the master instance is changed according to the above-described example, the matching server, which becomes the new master, receives a request for execution from the previous master instance from the commit server 130, but asks the commit server 130 to sign the transaction pair and respond if there is a transaction pair in a state that has not been concluded. Can be requested. According to the request, the commit server 130 may conclude an unsigned transaction pair and respond with a new master instance. Thereafter, the new master instance may recover an order that was not processed by the previous master instance by referring to the order recorded in the order book on the database 150. During restoration, the new master instance may receive a new order from the admission server 110, and the new order may be pending and queued as long as the order that has not been processed is not duplicated with the restored order after restoration is completed.

한편 일 실시예에 따른 커밋서버(130)는 매칭서버(120)로부터 획득된 거래쌍에 대해 체결 처리를 한다.Meanwhile, the commit server 130 according to an embodiment performs execution processing on the transaction pair obtained from the matching server 120.

즉 커멋서버(130)는 매칭서버(120)로부터 거래쌍을 수신하여 체결 처리하면서 체결 결과에 따라 갱신된 데이터를 캐시서버(140)를 통해 데이터베이스(150)에 기록할 수 있다. That is, the commut server 130 may receive and process the transaction pair from the matching server 120 and record the updated data in the database 150 through the cache server 140 according to the conclusion result.

커멋서버(130)는 거래쌍 체결을 위한 유저데이터에 대해, 캐시서버(140)에 리스 요청함으로써 획득할 수 있다. 획득한 유저데이터를 이용하여 커밋서버(130)는 거래쌍에 포함된 주문에 대응되는 유저가 상기 주문을 처리하기 위한 잔고를 갖고 있는지 확인할 수 있다. 이와 같이 처리함으로써 어드미션서버(110)의 확인 이후 변경되었을 수도 있는 유저의 잔고를 다시 확인 가능하다. The commut server 130 may obtain user data for signing a transaction pair by requesting a lease from the cache server 140. Using the acquired user data, the commit server 130 may check whether a user corresponding to an order included in the transaction pair has a balance for processing the order. By processing in this way, it is possible to check the balance of the user, which may have changed after the confirmation of the admission server 110.

그리고 잔고가 있다고 판단되면 커밋서버(130)는 리스 요청한 데이터를 캐시서버(140)에 반환하면서, 캐시서버(140)를 통해 데이터베이스(150)에 저장된 유저의 오더북에 기록된 주문 정보를 삭제하고 잔고에 관한 정보를 변경할 수 있다. And when it is determined that there is a balance, the commit server 130 returns the lease requested data to the cache server 140, and deletes the order information recorded in the user's order book stored in the database 150 through the cache server 140. You can change information about your balance.

커밋서버(130)는 체결 처리가 성공하면 체결 정보를 매칭서버(120)로 전달할 수 있다.The commit server 130 may transmit the execution information to the matching server 120 when the execution process is successful.

커밋서버(130)는 매칭서버(120)와의 통신을 통해, 거래쌍의 체결 요청을 수신하거나 체결 처리의 성공을 애크하면서 응답할 수 있는데, 이에 매칭서버(120)가 커밋서버(130)의 장애를 감지할 수 있다. 예를 들어, 매칭서버(120)가 거래쌍에 관한 체결 요청을 전달하였으나 상기 요청에 대한 애크를 받지 못하면 커밋서버(130)에 장애가 발생되었음을 감지할 수 있다. 커밋서버(130)에 장애가 발생됨을 감지하면 매칭서버(120)는 애크를 받지 못한 주문들에 대해 데이터베이스(150) 상의 오더북과 트랜잭션 이력을 참고하여 데이터베이스(150) 상에 처리가 완료되었는지 여부를 판단하고 완료되지 않았다면 다른 커밋서버로 상기 주문의 처리를 요청할 수 있다. Through communication with the matching server 120, the commit server 130 may respond by receiving a request for execution of a transaction pair or acknowledging the success of the execution process, whereby the matching server 120 is a failure of the commit server 130 Can be detected. For example, if the matching server 120 transmits a request for execution of a transaction pair, but does not receive an acknowledgment for the request, it may be detected that a failure has occurred in the commit server 130. When it detects that a failure has occurred in the commit server 130, the matching server 120 checks whether processing has been completed on the database 150 by referring to the order book and transaction history in the database 150 for orders that have not received an ACK. If it is determined and not completed, it can request processing of the order to another commit server.

커밋서버(130)는 매칭서버(120)와 비동기 방식으로 통신할 수 있으며, 또한 하나 이상의 인스턴스로 구현할 수 있어 인스턴스를 증가시키면서 스케일아웃(scale-out)될 수 있다.The commit server 130 may communicate with the matching server 120 in an asynchronous manner, and may also be implemented as one or more instances, and thus may be scaled out while increasing instances.

한편 일 실시예에 따른 캐시서버(cache server; 140)는, 어드미션서버(110), 매칭서버(120), 커밋서버(130) 또는 스탑오더서버(160)와, 데이터베이스(150) 사이에 위치하여 어드미션서버(110), 매칭서버(120), 커밋서버(130) 또는 스탑오더서버(160)가 데이터베이스(150)에 직접 액세스하지 않도록 한다. Meanwhile, the cache server 140 according to an embodiment is located between the admission server 110, the matching server 120, the commit server 130 or the stop order server 160, and the database 150. The admission server 110, the matching server 120, the commit server 130, or the stop order server 160 does not directly access the database 150.

캐시서버(140)는 유저데이터를 요청 받았을 때, 상기 유저데이터를 캐싱하고 있지 않다면 상기 유저데이터를 데이터베이스(150)로부터 획득하여 캐싱할 수 있다.When the user data is requested, the cache server 140 acquires the user data from the database 150 and caches the user data if the user data is not being cached.

캐시서버(140)는 어드미션서버(110) 또는 커밋서버(130)가 오더북에 기록/삭제의 요청을 하거나, 유저데이터를 갱신하거나 요청할 때, 캐싱된 데이터를 갱신하거나 데이터베이스(150)의 데이터를 갱신할 수 있다.When the admission server 110 or the commit server 130 requests to record/delete the order book, or update or request user data, the cache server 140 updates cached data or data in the database 150. Can be updated.

캐시서버(140)는 데이터베이스(150)에 반영이 완료된 데이터에 대해서는 트랜잭션 이력에 추가함으로써 관리할 수 있으며, 바람직하게는 데이터 갱신과 어토믹(atomic)하게 트랜잭션 이력을 관리할 수 있다.The cache server 140 can manage the data that has been reflected in the database 150 by adding it to the transaction history, and preferably manages the transaction history in a data update and atomic manner.

캐시서버(140)는 데이터에 대해 리스 요청 받을 수 있다. 예를 들어, 어드미션서버(110), 커밋서버(130) 또는 스탑오더서버(160)로부터 리스 요청 받을 수 있다. 다만 캐시서버(140)는 데이터에 대해 락 요청을 받을 수도 있다.The cache server 140 may receive a lease request for data. For example, a lease request may be received from the admission server 110, the commit server 130, or the stop order server 160. However, the cache server 140 may receive a lock request for data.

캐시서버(140)는 리스 요청된 데이터를 관리할 수 있다. 따라서 캐시서버(140)에 장애가 발생할 때 어드미션서버(110)는 주문의 식별자에 대응되는 데이터가 오더북에 있는지를 확인하고, 커밋서버(130)는 트랜잭션 이력을 참조하여 주문이 존재하는지 확인한다. 확인 이후 어드미션서버(110) 또는 커밋서버(130)는 다시 리스 요청을 함에 따라 장애가 복구된 캐시서버(140)가 상기 요청에 따라 동작할 수 있다.The cache server 140 may manage lease-requested data. Therefore, when a failure occurs in the cache server 140, the admission server 110 checks whether data corresponding to the identifier of the order is in the order book, and the commit server 130 checks whether the order exists by referring to the transaction history. After confirmation, as the admission server 110 or the commit server 130 makes a lease request again, the cache server 140 from which the failure has been recovered may operate according to the request.

캐시서버(140)는 I/O로 인한 병목현상을 없애기 위해 샤딩(sharding)을 지원할 수 있다.The cache server 140 may support sharding to eliminate a bottleneck caused by I/O.

또한 캐시서버(140)는 갱신될 데이터의 유실을 방지하기 위해 동시 기록(write-through) 방식으로 동작할 수 있다.In addition, the cache server 140 may operate in a write-through method to prevent loss of data to be updated.

일 실시예에 따른 데이터베이스(150)는 거래 시스템(100)의 동작에 필요한 데이터를 저장한다.The database 150 according to an embodiment stores data necessary for the operation of the transaction system 100.

예를 들어 데이터베이스(150)는 유저데이터를 저장할 수 있는데, 예를 들어, 유저의 잔고에 관한 정보, 유저의 오더북 등을 저장할 수 있다. For example, the database 150 may store user data. For example, the database 150 may store information on a user's balance, a user's order book, and the like.

한편 도 2를 참조하면, 일 실시예에 따른 거래 시스템(100)은, 추가적으로 스탑오더서버(160)를 더 포함할 수 있다. Meanwhile, referring to FIG. 2, the transaction system 100 according to an exemplary embodiment may further include a stop order server 160.

일 실시예에 따른 스탑오더서버(160)는 ‘스탑 거래’의 주문을 받았을 때 동작할 수 있다. The stop order server 160 according to an embodiment may operate when receiving an order for “stop transaction”.

어드미션서버(110)가 획득한 주문이 ‘스탑 거래’인 경우 스탑오더서버(160)는 어드미션서버(110)로부터 주문을 수신할 수 있다.When the order acquired by the admission server 110 is a “stop transaction”, the stop order server 160 may receive an order from the admission server 110.

스탑오더서버(160)는 주문을 저장하고 있으면서 상기 주문을 데이터베이스에 기록할 수 있다. The stop order server 160 may record the order in a database while storing the order.

또한 스탑오더서버(160)는 주문이 거래로 처리될 수 있는 조건이 만족되면 상기 주문을 ‘지정가 거래’ 주문 또는 ‘시장가 거래’ 주문으로 변경하여 어드미션서버(110)로 전달할 수 있다.In addition, the stop order server 160 may change the order to a'limited price transaction' order or a'market price transaction' order and transfer the order to the admission server 110 when a condition in which an order can be processed as a transaction is satisfied.

즉 스탑오더서버(160)는 주문을 획득하면 주문에 매칭되는 유저의 유저데이터를 캐시서버(140)에 리스 요청함으로써 획득할 수 있고, 획득한 유저데이터를 이용하여 주문에 대응되는 유저가 상기 주문을 처리하기 위한 잔고를 갖고 있는지 확인할 수 있다. 잔고가 있다고 판단되면 스탑오더서버(160)는 주문의 처리가 가능하다고 판단할 수 있고, 어드미션서버(110)로 응답을 보내며, 리스 요청한 데이터를 캐시서버(140)에 반환하면서, 데이터베이스(150)에 저장된 유저의 오더북에 주문 정보를 기록할 수 있다. 또한 스탑오더서버(160)는 매칭서버(120)로부터 체결 정보를 획득하여 특정 조건이 만족되었는지를 판단할 수 있다. 특정 조건이 만족되었다고 판단되면 스탑오더서버(160)는 ‘스탑 거래’의 주문을 ‘지정가거래’ 또는 ‘시장가거래’의 주문으로 변경하여 어드미션서버(110)로 전달할 수 있다. That is, when the stop order server 160 obtains an order, the user data of the user matching the order can be obtained by requesting a lease from the cache server 140, and the user corresponding to the order using the obtained user data You can check to see if you have the balance to deal with. If it is determined that there is a balance, the stop order server 160 may determine that the order can be processed, sends a response to the admission server 110, and returns the lease requested data to the cache server 140, while the database 150 Order information can be recorded in the user's order book stored in. In addition, the stop order server 160 may obtain the conclusion information from the matching server 120 to determine whether a specific condition is satisfied. If it is determined that a specific condition is satisfied, the stop order server 160 may change the order of the "stop transaction" to an order of "limited price transaction" or "market price transaction" and transmit it to the admission server 110.

상술된 스탑오더서버(160)는 하나 이상의 인스턴스로 구현될 수 있으며, 하나 이상의 인스턴스 중 하나의 인스턴스를 마스터로 선정하여 어드미션서버(110)로부터 주문을 전달받아 처리되도록 할 수 있다. The above-described stop order server 160 may be implemented as one or more instances, and one of the one or more instances may be selected as a master to receive and process an order from the admission server 110.

따라서 마스터로 선정되지 못한 인스턴스는 슬레이브로 설정되며, 이때 마스터 인스턴스가 장애가 생겨 스탑오더서버(160)로서 동작하지 못한다면, 슬레이브 인스턴스 중 하나가 마스터 인스턴스가 될 수 있다. Therefore, an instance that has not been selected as a master is set as a slave, and if the master instance fails to operate as the stop order server 160 due to a failure, one of the slave instances may become the master instance.

이때 하나 이상의 인스턴스 중 마스터 인스턴스를 선정하는 방법은 다양할 수 있는데, 슬레이브 인스턴스 중 랜덤하게 선택된 슬레이브 인스턴스가 마스터 인스턴스가 되거나, 슬레이브 인스턴스 중 가장 먼저 스탑오더서버로서 등록된 인스턴스가 마스터 인스턴스가 될 수 있다.At this time, there may be various methods of selecting a master instance among one or more instances, and a slave instance randomly selected among the slave instances may become the master instance, or the instance registered as the first stop order server among the slave instances may become the master instance. .

상술된 어드미션서버(110), 매칭서버(120), 커밋서버(130), 캐시서버(140) 및 스탑오더서버(160) 각각은 제어부(미도시), 통신부(미도시) 및 메모리(미도시)를 포함할 수 있다. Each of the above-described admission server 110, matching server 120, commit server 130, cache server 140, and stop order server 160 is a control unit (not shown), communication unit (not shown), and memory (not shown). ) Can be included.

제어부(미도시)는 장치의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 예를 들어, 제어부(미도시)는 메모리(미도시)에 저장된 프로그램을 실행시키거나, 메모리(미도시)에 저장된 데이터를 읽어오거나, 새로운 데이터를 메모리에 저장할 수도 있다.The controller (not shown) controls the overall operation of the device, and may include a processor such as a CPU. For example, the controller (not shown) may execute a program stored in a memory (not shown), read data stored in a memory (not shown), or store new data in the memory.

통신부(미도시)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(미도시)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.The communication unit (not shown) may perform wired or wireless communication with other devices or networks. To this end, the communication unit (not shown) may include a communication module that supports at least one of various wired and wireless communication methods. For example, the communication module may be implemented in the form of a chipset.

통신부(미도시)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.Wireless communication supported by the communication unit (not shown) may be, for example, Wireless Fidelity (Wi-Fi), Wi-Fi Direct, Bluetooth, Ultra Wide Band (UWB), or Near Field Communication (NFC). In addition, wired communication supported by the communication unit 130 may be, for example, USB or HDMI (High Definition Multimedia Interface).

통신부(미도시)는 유무선 통신 방법을 통해 RPC(remote procedure call) 통신할 수 있으며 RPC정보는 코디네이션 장치(170)에 저장될 수 있다. 코디네이션 장치(170)는 새로운 서버 등록 시 RPC정보를 획득하여 RPC채널을 생성함으로써 시스템 내의 다른 서버가 새로운 서버의 등록을 인지하도록 할 수 있고, RPC 채널이 끊기는 것으로 서버에 장애가 있음을 판단하도록 할 수 있다.The communication unit (not shown) may perform remote procedure call (RPC) communication through a wired or wireless communication method, and the RPC information may be stored in the coordination device 170. When registering a new server, the coordination device 170 acquires RPC information when registering a new server and creates an RPC channel so that other servers in the system can recognize the registration of the new server, and determine that the server has a failure as the RPC channel is disconnected. have.

메모리(미도시)에는 파일, 어플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 제어부(미도시)는 메모리(미도시)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(미도시)에 저장할 수도 있다. 또한, 제어부(미도시)는 메모리(140)에 설치된 프로그램을 실행할 수도 있다. 예를 들어, 메모리(미도시)에는 가상화폐 거래 방법을 수행하기 위한 프로그램이 설치될 수 있다.Various types of data such as files, applications, and programs may be installed and stored in a memory (not shown). The controller (not shown) may access and use data stored in the memory (not shown), or may store new data in the memory (not shown). In addition, the control unit (not shown) may execute a program installed in the memory 140. For example, a program for performing a virtual currency transaction method may be installed in a memory (not shown).

한편 거래 시스템(100)은 추가적으로 거래 시스템(100)의 동작을 모니터링할 수 있는 대시보드서버(미도시)를 더 포함할 수 있다. Meanwhile, the transaction system 100 may further include a dashboard server (not shown) capable of additionally monitoring the operation of the transaction system 100.

또한, 거래 시스템(100)은 추가적으로 거래 시스템(100)을 관리하는 관리서버(미도시)를 더 포함할 수 있다. 관리서버(미도시)는 관리용 API를 처리할 수 있으며, 예를 들어, 거래소 시스템의 동작을 중지시키거나, 새로운 화폐의 추가, 기존 화폐의 삭제, 교환 가능 대상 화폐의 추가(비트코인을 구매하고자 할 때 비트코인을 구매할 수 있는 화폐의 종류를 추가하는 것) 등의 동작을 수행할 때 타서버들을 제어할 수 있다. 대시보드서버 또는 관리서버 각각은 시스템을 구성하는 타서버와 통신할 수 있다.In addition, the transaction system 100 may further include a management server (not shown) that additionally manages the transaction system 100. The management server (not shown) can process the management API, for example, stopping the operation of the exchange system, adding a new currency, deleting an existing currency, and adding an exchangeable currency (purchase of bitcoins). When you want to, you can control other servers when performing operations such as adding the type of currency that can purchase bitcoins). Each of the dashboard server or the management server can communicate with other servers constituting the system.

한편 도 4 내지 도 6은 일 실시예에 따른 가상화폐 거래 방법을 설명하기 위한 순서도이다. Meanwhile, FIGS. 4 to 6 are flowcharts illustrating a method of trading virtual currency according to an exemplary embodiment.

도 4 내지 도 6에 도시된 실시예에 따른 거래 방법은 도 1 내지 도 3에 도시된 거래 시스템(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 3에 도시된 거래 시스템(100)에 관하여 이상에서 기술한 내용은 도 4 내지 도 6에 도시된 실시예에 따른 거래 방법에도 적용될 수 있다.The transaction method according to the embodiment illustrated in FIGS. 4 to 6 includes steps processed in a time series in the transaction system 100 illustrated in FIGS. 1 to 3. Accordingly, even if the contents are omitted below, the contents described above with respect to the transaction system 100 illustrated in FIGS. 1 to 3 may also be applied to the transaction method according to the embodiment illustrated in FIGS. 4 to 6.

도 4에 도시된 바와 같이, 어드미션서버(110)는 외부 시스템(미도시)로부터 주문을 획득할 수 있으며, 상기 주문의 종류를 구분할 수 있다(S401). 주문의 종류를 구분한 어드미션서버(110)는 주문이 ‘시장가 거래’ 또는 ‘지정가 거래’라면 상기 주문을 위한 유저의 잔고 정도를 확인하기 위해 캐시서버(140)에 유저데이터를 리스 요청할 수 있다(S402). 유저에게 잔고가 있어 주문이 처리될 수 있음이 확인되면(S403), 어드미션서버(110)는 리스 요청한 데이터를 캐시서버(140)에 반환하면서 주문에 관한 정보도 함께 전달할 수 있다(S404). 주문정보를 수신한 캐시서버(140)는 자신이 캐싱한 유저데이터를 갱신하면서, 데이터베이스(150)에 저장된 유저의 오더북에 주문을 기록할 수 있다(S405). 이후 어드미션서버(110)는 외부 시스템(미도시)에 주문에 관한 결과값을 전달할 수 있다(S406). 따라서 만약 어드미션서버(110)에 장애가 발생되면 외부 시스템은 주문에 관한 결과값을 획득할 수 없으므로 외부 시스템은 어드미션서버(110)의 장애 발생을 감지하고 주문을 재요청할 수 있다. As shown in FIG. 4, the admission server 110 may obtain an order from an external system (not shown) and may classify the order type (S401). If the order type is classified, the admission server 110 may request to lease user data from the cache server 140 in order to check the level of the user's balance for the order if the order is'market price transaction' or'designated price transaction' ( S402). When it is confirmed that the user has a balance and that the order can be processed (S403), the admission server 110 may return the lease request data to the cache server 140 and deliver information about the order together (S404). The cache server 140 receiving the order information may record the order in the user's order book stored in the database 150 while updating the user data cached by itself (S405). Thereafter, the admission server 110 may transmit a result value of the order to an external system (not shown) (S406). Therefore, if a failure occurs in the admission server 110, the external system cannot obtain a result value related to the order, and thus the external system may detect the occurrence of the failure in the admission server 110 and request the order again.

이후 어드미션서버(110)는 주문을 매칭서버(120)로 큐잉할 수 있다(S407). 만약 어드미션서버(110)의 장애가 발생하면 상기 장애를 매칭서버(120)는 RPC로 감지할 수 있고, 데이터베이스(150)에 저장된 주문 정보를 읽어와 주문이 처리되도록 할 수 있다.Thereafter, the admission server 110 may queue the order to the matching server 120 (S407). If a failure of the admission server 110 occurs, the matching server 120 may detect the failure as an RPC, and may read order information stored in the database 150 so that the order is processed.

한편 매칭서버(120)는 큐잉된 주문들을 매칭하여 거래쌍을 생성하며(S408), 거래쌍을 커밋서버(130)로 전달할 수 있다(S409). 커밋서버(130)는 매칭서버(120)로부터 획득된 거래쌍에 대해 체결 처리를 수행하며 이를 위해 캐시서버(140)에 유저데이터를 리스 요청할 수 있다(S410). 커멋서버(130)는 거래쌍 처리를 위한 잔고가 있다고 판단되면(S411) 리스 요청한 데이터를 캐시서버(140)에 반환하면서, 캐시서버(140)에 캐싱된 주문 정보를 삭제하고 잔고에 관한 정보를 변경함으로써 유저데이터를 갱신할 수 있다(S412). 그리고 캐시서버(140) 또한 데이터베이스(150)에 저장된 유저의 오더북에 기록된 주문 정보를 삭제하고 유저데이터를 갱신하며, 트랜잭션 이력에 거래쌍 처리에 관한 정보를 추가할 수 있다(S413). Meanwhile, the matching server 120 generates a transaction pair by matching the queued orders (S408), and transmits the transaction pair to the commit server 130 (S409). The commit server 130 may perform execution processing on the transaction pair obtained from the matching server 120 and may request a lease of user data from the cache server 140 for this (S410). When it is determined that there is a balance for processing a transaction pair (S411), the Kermot server 130 deletes the order information cached in the cache server 140 and returns information about the balance while returning the lease request data to the cache server 140. User data can be updated by changing (S412). In addition, the cache server 140 may also delete order information recorded in the user's order book stored in the database 150, update user data, and add information on transaction pair processing to the transaction history (S413).

한편 단계 S401에서 어드미션서버(110)가 외부 시스템(미도시)으로부터 주문을 획득하였을 때 상기 주문이 ‘스탑 거래’라면 도 5에서 각 단계를 수행한 이후 도 4의 단계 S402로 넘어갈 수 있다.On the other hand, when the admission server 110 obtains an order from an external system (not shown) in step S401 and the order is “stop transaction”, it may proceed to step S402 of FIG. 4 after performing each step in FIG. 5.

즉, 어드미션서버(110)는 스탑 거래인 주문을 스탑오더서버(160)로 전달할 수 있다(S501). 주문을 수신한 스탑오더서버(160)는 상기 주문을 위한 유저의 잔고 정도를 확인하기 위해 캐시서버(140)에 유저데이터를 리스 요청할 수 있다(S502). 유저에게 잔고가 있어 주문이 처리될 수 있음이 확인되면(S503), 스탑오더서버(160)는 캐시서버(140)를 통해(S504), 데이터베이스(150)에 주문을 기록할 수 있다(S505). 그리고 스탑오더서버(160)는 어드미션서버(110)로 주문 요청에 대한 응답을 전달할 수 있다(S506). That is, the admission server 110 may transmit an order that is a stop transaction to the stop order server 160 (S501). The stop order server 160 receiving the order may request to lease user data from the cache server 140 in order to check the level of the user's balance for the order (S502). When it is confirmed that the user has a balance and that the order can be processed (S503), the stop order server 160 may record the order in the database 150 through the cache server 140 (S504) (S505). . In addition, the stop order server 160 may transmit a response to the order request to the admission server 110 (S506).

이후 스탑오더서버(160)는 매칭서버(120)로부터 체결 정보를 실시간으로 전달받을 수 있고(S507), 체결 정보에 기초하여 스탑 거래의 특정 조건이 만족됨을 판단하면(S508), 스탑 거래를 지정가 거래 또는 시장가 거래 중 적어도 하나로 변환하여 어드미션서버(110)로 전달할 수 있다(S509). 상기 변환된 주문은 어드미션서버(110)로 전달되고, 거래 시스템(100)은 단계 402 내지 단계 413의 각 단계를 수행할 수 있다.Thereafter, the stop order server 160 can receive the execution information from the matching server 120 in real time (S507), and when it is determined that a specific condition of the stop transaction is satisfied based on the execution information (S508), the stop transaction is designated. It may be converted into at least one of a transaction or a market price transaction and transmitted to the admission server 110 (S509). The converted order is transmitted to the admission server 110, and the transaction system 100 may perform each step of steps 402 to 413.

한편 거래 시스템(100)은 코디네이션 장치(170)를 더 포함하며, 매칭서버(120)의 장애를 감지하면 코디네이션 장치(170)로 하여금 새로운 매칭서버(120)가 동작하도록 하여 순차적으로 처리되어야 하는 가상화폐 거래를 정확하게 처리할 수 있도록 한다.Meanwhile, the transaction system 100 further includes a coordination device 170, and when a failure of the matching server 120 is detected, the coordination device 170 causes the new matching server 120 to operate and Make it possible to accurately process currency transactions.

즉, 도 6에서 도시된 바와 같이 거래 시스템(100)은 슬레이브 인스턴스 하나 이상을 띄울 수 있다. 따라서 거래 시스템(100)이 매칭서버의 장애를 감지하면(S610), 하나 이상의 슬레이브 인스턴스 중 하나를 선택할 수 있다(S620). 이때 선택되는 인스턴스는, 가장 먼저 등록을 요청한 인스턴스이거나, 랜덤하게 선택된 인스턴스일 수 있다. 거래 시스템(100)은 선택된 인스턴스를 마스터 인스턴스로 하여 새로운 매칭서버로 동작하도록 할 수 있고, 장애가 발생된 기존의 마스터 서버는 동작을 중단시킬 수 있다(S630).That is, as shown in FIG. 6, the transaction system 100 may open one or more slave instances. Accordingly, when the transaction system 100 detects a failure of the matching server (S610), one or more slave instances may be selected (S620). In this case, the selected instance may be an instance for which registration is requested first or may be a randomly selected instance. The transaction system 100 may use the selected instance as a master instance to operate as a new matching server, and the existing master server in which a failure has occurred may stop the operation (S630).

상술된 바와 같이 새로운 매칭서버가 거래 시스템(100)에 등록되면, 신규 등록된 매칭서버는 장애가 발생된 장애 매칭서버에 의해 과거 요청되었던 체결 요청에 대한 응답을 커밋서버(130)로부터 획득함으로써 요청되었던 체결 요청의 처리가 완료된 것을 확인할 수 있다. 이후 신규 매칭서버는 장애 매칭서버가 큐잉 또는 거래쌍을 생성하였으나 처리되지 못한 주문을 데이터베이스(150)로부터 복구할 수 있다. 커밋서버(130)로부터 체결 요청에 대한 응답을 수신하거나 데이터베이스(150)로부터 주문을 복구하는 동안 신규 매칭서버는 어드미션서버(110)로부터의 주문을 펜딩하고, 장애 매칭서버에 의해 처리되지 못했던 주문을 데이터베이스로부터 복구하는 것을 완료하면 펜딩된 주문을 큐잉할 수 있다. As described above, when a new matching server is registered in the transaction system 100, the newly registered matching server obtains a response to the execution request that was previously requested by the failure matching server in which a failure has occurred from the commit server 130. It can be confirmed that the processing of the execution request has been completed. Thereafter, the new matching server may recover from the database 150 an order that has not been processed even though the failure matching server has created a queuing or transaction pair. While receiving a response to the execution request from the commit server 130 or recovering the order from the database 150, the new matching server pending the order from the admission server 110 and places the order that was not processed by the failure matching server. Once you have finished recovering from the database, you can queue pending orders.

이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.The term'~ unit' used in the above embodiments refers to software or hardware components such as field programmable gate array (FPGA) or ASIC, and the'~ unit' performs certain roles. However,'~ part' is not limited to software or hardware. The'~ unit' may be configured to be in an addressable storage medium, or may be configured to reproduce one or more processors. Thus, as an example,'~ unit' refers to components such as software components, object-oriented software components, class components and task components, processes, functions, properties, and procedures. , Subroutines, segments of program patent code, drivers, firmware, microcode, circuitry, data, database, data structures, tables, arrays, and variables.

구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.The components and functions provided in the'~ units' may be combined into a smaller number of elements and'~ units' or separated from the additional elements and'~ units'.

뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.In addition, components and'~ units' may be implemented to play one or more CPUs in a device or a security multimedia card.

도 4 내지 도 6을 통해 설명된 실시예에 따른 거래 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다. The transaction method according to the embodiment described with reference to FIGS. 4 to 6 may also be implemented in the form of a computer-readable medium that stores instructions and data executable by a computer. In this case, the instructions and data may be stored in the form of a program code, and when executed by a processor, a predetermined program module may be generated to perform a predetermined operation. Further, the computer-readable medium may be any available medium that can be accessed by a computer, and includes both volatile and nonvolatile media, and removable and non-removable media. Further, the computer-readable medium may be a computer recording medium, which is volatile and non-volatile implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. It may include both volatile, removable and non-removable media. For example, computer recording media may include magnetic storage media such as HDDs and SSDs, optical recording media such as CDs, DVDs, and Blu-ray discs, or accessible through a network. It may be a memory included in the server.

또한 도 4 내지 도 6을 통해 설명된 실시예에 따른 거래 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다. In addition, the transaction method according to the embodiment described with reference to FIGS. 4 to 6 may be implemented as a computer program (or computer program product) including instructions executable by a computer. The computer program includes programmable machine instructions processed by a processor, and may be implemented in a high-level programming language, an object-oriented programming language, an assembly language, or a machine language. . Further, the computer program may be recorded on a tangible computer-readable recording medium (eg, memory, hard disk, magnetic/optical medium, solid-state drive (SSD), etc.).

따라서 도 4 내지 도 6을 통해 설명된 실시예에 따른 거래 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다. Accordingly, the transaction method according to the embodiment described with reference to FIGS. 4 to 6 may be implemented by executing the above-described computer program by the computing device. The computing device may include at least some of a processor, a memory, a storage device, a high speed interface connected to the memory and a high speed expansion port, and a low speed interface connected to the low speed bus and the storage device. Each of these components is connected to each other using various buses and can be mounted on a common motherboard or in other suitable manner.

여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다. Here, the processor can process commands within the computing device. Such commands include, for example, to display graphic information for providing a GUI (Graphic User Interface) on an external input or output device, such as a display connected to a high-speed interface. Examples are instructions stored in memory or storage devices. As another embodiment, multiple processors and/or multiple buses may be utilized with multiple memories and memory types as appropriate. In addition, the processor may be implemented as a chipset formed by chips including a plurality of independent analog and/or digital processors.

또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다. The memory also stores information within the computing device. As an example, the memory may be composed of volatile memory units or a set of them. As another example, the memory may be composed of a nonvolatile memory unit or a set of them. Also, the memory may be another type of computer-readable medium such as a magnetic or optical disk.

그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다. In addition, the storage device may provide a large-capacity storage space to the computing device. The storage device may be a computer-readable medium or a configuration including such a medium, for example, devices in a storage area network (SAN) or other configurations, a floppy disk device, a hard disk device, an optical disk device, Or it may be a tape device, a flash memory, or another semiconductor memory device or device array similar thereto.

상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The above-described embodiments are for illustrative purposes only, and those of ordinary skill in the art to which the above-described embodiments belong can easily transform into other specific forms without changing the technical idea or essential features of the above-described embodiments. You can understand. Therefore, it should be understood that the above-described embodiments are illustrative and non-limiting in all respects. For example, each component described as a single type may be implemented in a distributed manner, and similarly, components described as being distributed may also be implemented in a combined form.

본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.The scope to be protected through the present specification is indicated by the claims to be described later rather than the detailed description, and should be interpreted as including all changes or modified forms derived from the meaning and scope of the claims and the concept of equivalents thereof. .

100: 가상화폐 거래 시스템
110: 어드미션서버 120: 매칭서버
130: 커밋서버 140: 캐시서버
150: 데이터베이스 160: 스탑오더서버
170: 코디네이션 장치
100: virtual currency trading system
110: admission server 120: matching server
130: commit server 140: cache server
150: database 160: stop order server
170: coordination device

Claims (16)

가상화폐 거래를 위한 시스템으로서,
가상화폐 거래를 요청하는 주문의 처리를 위해 상기 주문과 함께 체결될 타주문을 매칭하여 거래쌍을 생성하는 제1매칭서버;
상기 제1매칭서버를 상기 거래 시스템에 추가시킨 코디네이션 장치; 및
상기 주문을 유저로부터 획득하여 상기 제1매칭서버로 전달하는 어드미션서버를 포함하며,
상기 제1매칭서버는 상기 어드미션서버로부터 수신된 주문을 큐잉하고,
상기 코디네이션 장치는,
상기 제1매칭서버의 장애 시 제2매칭서버를 등록하여 상기 주문을 처리하는, 가상화폐 거래 시스템.
As a system for virtual currency trading,
A first matching server for generating a transaction pair by matching other orders to be concluded with the order for processing an order requesting a virtual currency transaction;
A coordination device in which the first matching server is added to the transaction system; And
And an admission server that obtains the order from a user and transmits the order to the first matching server,
The first matching server queues the order received from the admission server,
The coordination device,
When the first matching server fails, a second matching server is registered to process the order.
제 1 항에 있어서,
상기 코디네이션 장치는,
하나 이상의 슬레이브 인스턴스 중 하나를 마스터 인스턴스로 선택하고 상기 마스터 인스턴스에 대응되는 제2매칭서버를 등록하는, 가상화폐 거래 시스템.
The method of claim 1,
The coordination device,
A virtual currency trading system for selecting one of one or more slave instances as a master instance and registering a second matching server corresponding to the master instance.
제 2 항에 있어서,
상기 코디네이션 장치는,
상기 제1매칭서버의 장애 시 상기 하나 이상의 슬레이브 인스턴스 중 가장 먼저 등록에 성공하는 인스턴스를 마스터 인스턴스로 결정하는, 가상화폐 거래 시스템.
The method of claim 2,
The coordination device,
When the first matching server fails, the first instance of the one or more slave instances that succeeds in registration is determined as the master instance.
삭제delete 제 1 항에 있어서,
상기 제2매칭서버는,
상기 어드미션서버로부터의 주문을 펜딩하고 상기 제1매칭서버에 큐잉되었던 주문을 데이터베이스로부터 복구하면 펜딩된 주문을 큐잉하는, 가상화폐 거래 시스템.
The method of claim 1,
The second matching server,
A cryptocurrency trading system for queuing the pending orders when pending orders from the admission server and recovering the orders queued in the first matching server from a database.
제 1 항에 있어서,
상기 제1매칭서버로부터 수신된 체결 정보에 기초하여 스탑 거래의 주문에 대응되는 조건이 만족되면, 지정가 거래의 주문 및 시장가 거래의 주문 중 적어도 하나로 스탑 거래의 주문을 변환하는 스탑오더서버를 더 포함하고,
상기 어드미션서버는 획득한 주문의 종류를 식별하며, 상기 주문의 종류가 스탑 거래이면 상기 주문을 상기 스탑오더서버로 전달하며, 상기 스탑오더서버로부터 지정가 거래 및 시장가 거래 중 적어도 하나의 거래를 요청하는 주문을 획득하는, 가상화폐 거래 시스템.
The method of claim 1,
If a condition corresponding to the stop transaction order is satisfied based on the execution information received from the first matching server, the stop order server converts the stop transaction order to at least one of a limit transaction order and a market price transaction order. and,
The admission server identifies the type of order acquired, and if the order type is a stop transaction, transfers the order to the stop order server, and requests at least one of a limit transaction and a market price transaction from the stop order server. A cryptocurrency trading system that takes orders.
제 6 항에 있어서,
상기 코디네이션 장치는,
상기 스탑오더서버의 장애 시, 하나 이상의 슬레이브 인스턴스 중 하나를 마스터 인스턴스로 선택하고, 다른 스탑오더서버로서 상기 마스터 인스턴스에 대응되는 스탑오더서버를 등록하는, 가상화폐 거래 시스템.
The method of claim 6,
The coordination device,
When the stop order server fails, one or more slave instances are selected as a master instance, and a stop order server corresponding to the master instance is registered as another stop order server.
제 1 항에 있어서
상기 주문의 기록을 위한 데이터베이스와 통신하며 상기 주문의 처리를 위한 데이터의 리스(lease) 요청을 수신하는 캐시서버를 더 포함하는, 가상화폐 거래 시스템.
The method of claim 1
The cryptocurrency trading system further comprises a cache server that communicates with the database for recording the order and receives a request for a lease of data for processing the order.
제 1 항에 있어서,
상기 제1매칭서버로부터 상기 거래쌍에 대한 체결 요청을 수신하여 상기 거래쌍을 체결하는 커밋서버를 더 포함하는, 가상화폐 거래 시스템.
The method of claim 1,
A cryptocurrency trading system further comprising a commit server for receiving the execution request for the transaction pair from the first matching server and entering into the transaction pair.
제 9 항에 있어서,
상기 제2매칭서버는,
상기 제1매칭서버에 의해 요청되었던 체결 요청에 대한 응답을 상기 커밋서버로부터 획득하면, 상기 제1매칭서버에 의해 큐잉되었던 주문을 데이터베이스로부터 복구하는, 가상화폐 거래 시스템.
The method of claim 9,
The second matching server,
When a response to the execution request that was requested by the first matching server is obtained from the commit server, the order queued by the first matching server is recovered from a database.
가상화폐 거래를 요청하는 주문의 처리를 위해, 상기 주문을 유저로부터 획득하여 제1매칭서버로 전달하는 어드미션서버, 및 상기 어드미션서버로부터 수신된 주문을 큐잉하고 상기 주문과 함께 체결될 타주문을 매칭하여 거래쌍을 생성하는 제1매칭서버를 포함하는 가상화폐 거래 시스템이, 가상화폐를 거래하는 방법으로서,
상기 제1매칭서버의 장애 시 제2매칭서버를 등록하여 상기 주문을 처리하는 단계를 포함하는, 가상화폐 거래 방법.
To process an order requesting a virtual currency transaction, an admission server that acquires the order from the user and delivers it to the first matching server, and queues the order received from the admission server and matches other orders to be concluded with the order. As a method of trading virtual currency, a virtual currency trading system including a first matching server that generates a trading pair
Comprising the step of processing the order by registering a second matching server when the first matching server fails.
제 11 항에 있어서,
상기 주문을 처리하는 단계는,
하나 이상의 슬레이브 인스턴스 중 하나를 마스터 인스턴스로 선택하고 상기 마스터 인스턴스에 대응되는 제2매칭서버를 등록하는 단계를 포함하는, 가상화폐 거래 방법.
The method of claim 11,
The step of processing the order,
Comprising the step of selecting one of the one or more slave instances as a master instance and registering a second matching server corresponding to the master instance, virtual currency trading method.
제 11 항에 있어서,
상기 가상화폐 거래 방법은,
상기 제2매칭서버가, 상기 어드미션서버로부터의 주문을 펜딩하고 상기 제1매칭서버에 큐잉되었던 주문을 데이터베이스로부터 복구하면 펜딩된 주문을 큐잉하는 단계를 더 포함하는, 가상화폐 거래 방법.
The method of claim 11,
The cryptocurrency transaction method,
The second matching server, further comprising the step of queuing the pending order when pending the order from the admission server and recovering the order queued in the first matching server from the database.
제 11 항에 있어서,
상기 가상화폐 거래 시스템은 상기 제1매칭서버로부터 상기 거래쌍에 대한 체결 요청을 수신하여 상기 거래쌍을 체결하는 커밋서버를 더 포함하며,
상기 제1매칭서버에 의해 요청되었던 체결 요청에 대한 응답을 상기 커밋서버로부터 획득하면, 상기 제1매칭서버에 의해 큐잉되었던 주문을 데이터베이스로부터 복구하는 단계를 더 포함하는, 가상화폐 거래 방법.
The method of claim 11,
The cryptocurrency trading system further includes a commit server for receiving the execution request for the transaction pair from the first matching server and entering into the transaction pair,
If a response to the execution request that was requested by the first matching server is obtained from the commit server, the method further comprising recovering the order queued by the first matching server from the database.
제 11 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.A computer-readable recording medium on which a program for performing the method according to claim 11 is recorded. 가상화폐 거래 시스템에 의해 수행되며, 제 11 항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.A computer program performed by a virtual currency trading system and stored on a medium to perform the method described in claim 11.
KR1020180124730A 2018-09-19 2018-10-18 Method and system for exchanging cryptocurrency Active KR102172751B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/564,088 US11386494B2 (en) 2018-09-19 2019-09-09 Cryptocurrency trading method and system
EP19197498.9A EP3627351A1 (en) 2018-09-19 2019-09-16 Cryptocurrency trading method and system
JP2019168235A JP6989147B2 (en) 2018-09-19 2019-09-17 Cryptocurrency trading method and system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180112391 2018-09-19
KR1020180112391 2018-09-19

Publications (2)

Publication Number Publication Date
KR20200033080A KR20200033080A (en) 2020-03-27
KR102172751B1 true KR102172751B1 (en) 2020-11-02

Family

ID=69959462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180124730A Active KR102172751B1 (en) 2018-09-19 2018-10-18 Method and system for exchanging cryptocurrency

Country Status (1)

Country Link
KR (1) KR102172751B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043105A (en) * 1999-07-30 2001-02-16 Toshiba Corp High-availability computer system and data backup method of the system
US20100017647A1 (en) * 2006-08-11 2010-01-21 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001043105A (en) * 1999-07-30 2001-02-16 Toshiba Corp High-availability computer system and data backup method of the system
US20100017647A1 (en) * 2006-08-11 2010-01-21 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation

Also Published As

Publication number Publication date
KR20200033080A (en) 2020-03-27

Similar Documents

Publication Publication Date Title
US7558915B2 (en) System and method for updating the firmware of a device in a storage network
US9524107B2 (en) Host-based device drivers for enhancing operations in redundant array of independent disks systems
KR20200078382A (en) Solid-state drive with initiator mode
CN105408880A (en) Direct access to persistent memory of shared storage
US10884849B2 (en) Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
JP2014120151A5 (en)
US11287988B2 (en) Autonomous raid data storage device locking system
US11856004B2 (en) Systems and methods for identifying malicious cryptographic addresses
US20200319819A1 (en) Method and Apparatus for Improving Parity Redundant Array of Independent Drives Write Latency in NVMe Devices
US11436086B2 (en) Raid storage-device-assisted deferred parity data update system
US10831597B2 (en) Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
CN116414612A (en) Storage node and method of operation thereof
US20180276213A1 (en) Methods and system for database request management
US11093329B1 (en) RAID proxy storage-device-assisted data update system
US11163501B2 (en) Raid storage multi-step command system
KR102172751B1 (en) Method and system for exchanging cryptocurrency
US11334292B2 (en) Autonomous RAID data storage system
US11386494B2 (en) Cryptocurrency trading method and system
US20230350980A1 (en) Management of Storage Devices Utilizing Non-Fungible Tokens
US11093180B2 (en) RAID storage multi-operation command system
KR20190126992A (en) Method for generating non-deterministic data using a specific selection node in blockchain-based system
US9703497B2 (en) Storage system and storage control method
US8977814B1 (en) Information lifecycle management for binding content
KR102422189B1 (en) Method for managing printing job in case of error occurring in printing system, and apparatus for performing the same
KR102028666B1 (en) Storage device for processing de-identification request and operating method

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20181018

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20200409

Patent event code: PE09021S01D

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

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20201005

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20201027

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20201027

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20240826

Start annual number: 5

End annual number: 5