KR101979254B1 - 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법 - Google Patents

암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법 Download PDF

Info

Publication number
KR101979254B1
KR101979254B1 KR1020180089983A KR20180089983A KR101979254B1 KR 101979254 B1 KR101979254 B1 KR 101979254B1 KR 1020180089983 A KR1020180089983 A KR 1020180089983A KR 20180089983 A KR20180089983 A KR 20180089983A KR 101979254 B1 KR101979254 B1 KR 101979254B1
Authority
KR
South Korea
Prior art keywords
transaction
client
cipher
processor
exchange rate
Prior art date
Application number
KR1020180089983A
Other languages
English (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 KR1020180089983A priority Critical patent/KR101979254B1/ko
Priority to PCT/KR2019/005561 priority patent/WO2020027408A1/ko
Application granted granted Critical
Publication of KR101979254B1 publication Critical patent/KR101979254B1/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/381Currency conversion
    • 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/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; 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • 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
    • G06Q20/3825Use of electronic signatures
    • 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
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management

Abstract

본 개시는 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치를 제안한다. 본 개시에 따른 전자 장치는, 통신 인터페이스; 메모리; 및 통신 인터페이스 및 메모리와 통신 가능하게 연결된 프로세서를 포함하고, 프로세서는, 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터, 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션을 수신하고, 제2 클라이언트로부터, 제2 암호화폐를 제2 교환율로 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하고, 각각 제1 트랜잭션의 디지털 서명 및 제2 트랜잭션의 디지털 서명을 검증하고, 적어도 하나의 노드에 저장된 제1 클라이언트와 제2 클라이언트의 제1 암호화폐 및 제2 암호화폐에 대한 잔고 정보에 기초하여, 제1 트랜잭션 및 제2 트랜잭션의 유효성을 검증하고, 제1 트랜잭션의 제1 교환율과 제2 트랜잭션의 제2 교환율에 기초하여 제1 트랜잭션과 제2 트랜잭션을 매칭하고, 매칭된 제1 트랜잭션 및 제2 트랜잭션을 블록 체인 네트워크 상의 적어도 하나의 노드로 전달할 수 있다.

Description

암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법{APPARATUS FOR MATCHING TRANSACTIONS FOR EXCHANGING CRYPTOCURRENCIES AND METHOD THEREOF}
본 개시는 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법에 관한 것이다.
블록체인(blockchain) 기술을 이용함으로써, 중개자 없이 참여자간의 신뢰가 가능하고 위변조가 불가능한 분산원장(distributed ledger)의 구현이 가능하게 되면서, 이를 활용한 새로운 거래수단인 암호화폐가 등장하였다. 대표적인 암호화폐인 비트코인 이후로 많은 암호화폐들이 등장하였으며, 이들 간의 교환을 위해 암호화폐 거래소도 등장하였다.
암호화폐를 저장하기 위한 블록체인 기술은 데이터의 위변조를 방지할 수 있는 특징을 내재하고 있어, 이에 대한 해킹은 실질적으로 불가능하나, 그와 별개로 동작하는 암호화폐 거래소에는 해킹의 위협이 존재하였다. 이에 대응하여, 블록체인 상에서 동작하는 스마트 컨트랙트(smart contract)로 구현된 암호화폐 거래소, 소위 분산형 거래소(Decentralized Exchange, DEX)가 대안으로 제시되었다. DEX는 블록체인 네트워크 상에서 암호화폐 교환을 위한 트랜잭션(transaction)들을 매칭(matching)하여, 각 사용자 클라이언트 사이에 암호화폐 교환이 가능하게 할 수 있다.
그러나, 블록체인 상에서 동작하는 DEX는, 그 DEX가 실행되는 대상 블록체인의 특성에 기인하여 트랜잭션 매칭의 처리 속도 상에 한계가 있을 수 있다. 이에 따라 다수의 암호화폐 교환 주문, 즉 다수의 트랜잭션이 발생하는 경우, 그 처리가 지연될 수 있다.
대한민국 등록특허공보 제10-1628624호(2016.06.09.) 대한민국 등록특허공보 제10-1878869호(2018.08.16.)
본 개시는, 상술한 종래 기술의 문제점을 해결하기 위한 것으로, DEX의 일정 영역을 중앙화한 형태의 암호화폐 거래소에 관한 기술을 제공한다.
본 개시의 일 측면에 따른 전자 장치는, 복수 개의 사용자 클라이언트와 통신을 수행하고, 블록 체인 기반의 블록 체인 네트워크 상에서 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node)와 통신을 수행하는 통신 인터페이스; 상기 복수 개의 사용자 클라이언트로부터 수신되고, 복수 개의 암호화폐 중 적어도 두 개의 암호화폐를 소정의 교환율로 교환하기 위한 트랜잭션(transaction)들을 저장하는 메모리; 및 상기 통신 인터페이스 및 상기 메모리와 통신 가능하게 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 통신 인터페이스를 통해, 상기 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션을 수신하고, 상기 통신 인터페이스를 통해, 상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하고, 상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하고, 상기 하나 이상의 노드 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하고, 상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하고, 상기 통신 인터페이스를 제어하여, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달할 수 있다.
일 실시예에 있어서, 상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신될 수 있다.
일 실시예에 있어서, 상기 프로세서는, 상기 제1 트랜잭션의 디지털 서명을 상기 제1 공개키로 복호화하고, 상기 복호화된 상기 제1 트랜잭션의 디지털 서명 및 상기 제1 트랜잭션을 이용하여 상기 제1 트랜잭션이 상기 제1 클라이언트로부터 유래한 것인지 여부를 검증하고, 상기 제2 트랜잭션의 디지털 서명을 상기 제2 공개키로 복호화하고, 상기 복호화된 상기 제2 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션을 이용하여 상기 제2 트랜잭션이 상기 제2 클라이언트로부터 유래한 것인지 여부를 검증할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션은 상기 제1 암호화폐의 매도할 수량인 제1 매도량 및 상기 제2 암호화폐의 매수할 수량인 제1 매수량을 특정하고, 상기 제2 트랜잭션은 상기 제2 암호화폐의 매도할 수량인 제2 매도량 및 상기 제1 암호화폐의 매수할 수량인 제2 매수량을 특정할 수 있다.
일 실시예에 있어서, 상기 프로세서는, 상기 통신 인터페이스를 통해, 상기 하나 이상의 노드 중 적어도 하나의 노드로부터 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보를 획득하고, 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제1 트랜잭션의 상기 제1 매도량에 기초하여, 상기 제1 트랜잭션의 유효성을 검증하고, 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보 및 상기 제2 트랜잭션의 상기 제2 매도량에 기초하여, 상기 제2 트랜잭션의 유효성을 검증할 수 있다.
일 실시예에 있어서, 상기 프로세서는, 소정의 기준에 따라 사용자 클라이언트를 선별하고, 선별된 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제할 수 있다. 예를 들어, 한 사용자 클라이언트가 유효하지 않은 트랜잭션을 발송하거나, 일정 빈도수 이상으로 트랜잭션을 발송하는 등의 패턴을 보이는 경우, 해당 사용자 클라이언트를 매칭에서 배제하거나, 해당 사용자 클라이언트로부터의 트랜잭션을 수신하지 않을 수 있다. 구체적으로, 상기 프로세서는, 상기 복수 개의 사용자 클라이언트 중, 상기 잔고 정보에 기초하여 유효하지 않은 트랜잭션을 미리 정의된 빈도수(frequency) 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하고, 상기 선별된 사용자 클라이언트의 식별자를 상기 메모리에 저장하고, 상기 저장된 식별자에 대응하는 식별자를 가지는 사용자 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제할 수 있다.
일 실시예에 있어서, 상기 프로세서는, 상기 제1 트랜잭션의 상기 제1 매도량 및 상기 제1 매수량에 기초하여 상기 제1 교환율을 도출하고, 상기 제2 트랜잭션의 상기 제2 매도량 및 상기 제2 매수량에 기초하여 상기 제2 교환율을 도출하고, 상기 제1 교환율과 상기 제2 교환율이 대응되는 경우 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션 및 상기 제2 트랜잭션은 각각 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 만료시간에 관한 정보를 더 포함하고, 상기 프로세서는 상기 만료시간에 관한 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증할 수 있다.
일 실시예에 있어서, 상기 갱신된 잔고 정보에 기초하여, 상기 제1 암호화폐와 상기 제2 암호화폐는 상기 제1 공개키로 나타나는 상기 제1 클라이언트의 제1 주소 또는 상기 제2 공개키로 나타나는 상기 제2 클라이언트의 제2 주소로 인출될 수 있다.
본 개시의 다른 측면에 따른 암호화폐 교환을 위한 트랜잭션을 매칭하는 방법은, 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션(transaction)을 수신하는 단계; 상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하는 단계; 상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계; 블록 체인 기반의 블록 체인 네트워크 상에서, 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node) 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계; 상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하는 단계; 및 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신될 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계는: 상기 제1 트랜잭션의 디지털 서명을 상기 제1 공개키로 복호화하고, 상기 복호화된 상기 제1 트랜잭션의 디지털 서명 및 상기 제1 트랜잭션을 이용하여 상기 제1 트랜잭션이 상기 제1 클라이언트로부터 유래한 것인지 여부를 검증하는 단계; 및 상기 제2 트랜잭션의 디지털 서명을 상기 제2 공개키로 복호화하고, 상기 복호화된 상기 제2 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션을 이용하여 상기 제2 트랜잭션이 상기 제2 클라이언트로부터 유래한 것인지 여부를 검증하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션은 상기 제1 암호화폐의 매도할 수량인 제1 매도량 및 상기 제2 암호화폐의 매수할 수량인 제1 매수량을 특정하고, 상기 제2 트랜잭션은 상기 제2 암호화폐의 매도할 수량인 제2 매도량 및 상기 제1 암호화폐의 매수할 수량인 제2 매수량을 특정할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계는: 상기 하나 이상의 노드 중 적어도 하나의 노드로부터 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보를 획득하는 단계; 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제1 트랜잭션의 상기 제1 매도량에 기초하여, 상기 제1 트랜잭션의 유효성을 검증하는 단계; 및 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보 및 상기 제2 트랜잭션의 상기 제2 매도량에 기초하여, 상기 제2 트랜잭션의 유효성을 검증하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 복수 개의 사용자 클라이언트 중, 상기 잔고 정보에 기초하여 유효하지 않은 트랜잭션을 미리 정의된 빈도수(frequency) 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하는 단계; 상기 선별된 사용자 클라이언트의 식별자를 저장하는 단계; 및 상기 저장된 식별자에 대응하는 식별자를 가지는 사용자 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제하는 단계를 더 포함할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭하는 단계는: 상기 제1 트랜잭션의 상기 제1 매도량 및 상기 제1 매수량에 기초하여 상기 제1 교환율을 도출하는 단계; 상기 제2 트랜잭션의 상기 제2 매도량 및 상기 제2 매수량에 기초하여 상기 제2 교환율을 도출하는 단계; 및 상기 제1 교환율과 상기 제2 교환율이 대응되는 경우 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 제1 트랜잭션 및 상기 제2 트랜잭션은 각각 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 만료시간에 관한 정보를 더 포함하고, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계는: 상기 만료시간에 관한 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계를 포함할 수 있다.
일 실시예에 있어서, 상기 갱신된 잔고 정보에 기초하여, 상기 제1 암호화폐와 상기 제2 암호화폐는 상기 제1 공개키로 나타나는 상기 제1 클라이언트의 제1 주소 또는 상기 제2 공개키로 나타나는 상기 제2 클라이언트의 제2 주소로 인출될 수 있다.
본 개시의 또 다른 측면에 따른, 컴퓨터 상에서 수행되기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능 기록 매체에서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터 수신된, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션(transaction)을 획득하는 단계; 상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터 수신된, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하는 단계; 상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계; 블록 체인 기반의 블록 체인 네트워크 상에서, 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node) 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계; 상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하는 단계; 및 통신 인터페이스를 제어하여, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달하는 단계를 수행하도록 하는 실행 가능한 명령을 포함할 수 있다.
일 실시예에 있어서, 상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신될 수 있다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정에 비하여, 트랜잭션 처리 속도가 더 빠를 수 있다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정에 비하여, 다량의 트랜잭션이 발생하는 상황에서 처리 정체(congestion)을 막을 수 있다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정과 달리, 트랜잭션을 전송하는 특정 사용자 클라이언트에 대한 일종의 필터링(filtering) 정책의 적용이 가능할 수 있다.
도 1은 DEX(Decentralized Exchanges)를 이용한 암호화폐 교환을 위한 트랜잭션을 매칭하는 과정의 어느 한 실시예를 설명하는 도면이다.
도 2는 본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정을 나타낸 도면이다.
도 3은 본 개시의 다양한 실시예들에 따른 전자 장치(10)의 블록도를 나타낸 도면이다.
도 4는 본 개시의 일 실시예에 따른, CEX(Centralized Exchanges), 노드, 사용자 클라이언트가 암호화폐 교환을 위한 트랜잭션을 처리하는 순서를 도식화한 도면이다.
도 5는 본 개시의 일 실시예에 따른, 노드가 전달받은 매칭된 트랜잭션을 처리하는 과정을 나타낸 도면이다.
도 6은 본 개시의 일 실시예에 따른, CEX가 노드로부터 잔고 정보를 획득하는 과정을 나타낸 도면이다.
도 7은 본 개시의 일 실시예에 따른, CEX가 특정 사용자 클라이언트의 트랜잭션을 필터링하는 과정을 나타낸 도면이다.
도 8은 본 개시의 일 실시예에 따른, CEX의 오더 북 및 트랜잭션 매칭 과정을 나타낸 도면이다.
도 9는 본 개시에 따른 전자 장치에 의해 수행될 수 있는, 암호화폐 교환을 위한 트랜잭션을 매칭하는 방법의 일 실시예를 나타낸 도면이다.
본 문서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 문서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 문서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 문서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 문서에서 사용되는 단수형의 표현은, 문맥상 다르게 뜻하지 않는 한 복수형의 의미를 포함할 수 있으며, 이는 청구항에 기재된 단수형의 표현에도 마찬가지로 적용된다.
본 문서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 문서에서 사용되는 "A, B, 및 C", "A, B, 또는 C", "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나", "A, B, 또는 C 중 적어도 하나", "A, B, 및/또는 C 중 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A, (2) 적어도 하나의 B, (3) 적어도 하나의 A 및 적어도 하나의 B를 모두 지칭할 수 있다.
본 문서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 문서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
본 개시에서, 블록체인(blockchain)은 데이터를 분산 데이터 저장 환경에 저장하여, 누구나 그 데이터를 열람할 수 있으나, 누구도 임의로 수정할 수 없는, 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술 내지 분산 데이터 저장 기술을 의미할 수 있다. 블록체인은 복수의 블록이 체인 형태로 연결된 것으로, 여기서 블록은 데이터를 저장하는 단위일 수 있다. 지속적으로 변경되는 데이터가 블록체인의 모든 노드에 의해 기록됨으로써, 전체 데이터를 어느 한 노드가 임의로 조작하는 것이 불가능할 수 있다.
본 개시에서, 암호화폐는 전술한 블록체인을 기반으로 한 암호화 방법을 사용하여, 거래 안전이 확보되고 위변조가 방지되는 디지털 자산일 수 있다. 예를 들어, 암호화폐에는 비트코인, 이더리움, 리플, 라이트 코인 등이 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 DEX를 이용한 암호화폐 교환을 위한 트랜잭션을 매칭하는 과정의 어느 한 실시예를 설명하는 도면이다. 도시된 실시예에서, 적어도 하나의 블록체인의 사용자 클라이언트(3a, 3b)는 블록체인 네트워크(4) 상에서 동작하는 DEX(Decentralized Exchanges)(5)를 통하여 암호화폐를 교환할 수 있다. DEX는 블록체인 상에서 동작하는 분산화된 암호화폐 거래소로서, 스마트 컨트랙트로 구현될 수 있다. DEX(5)의 동작에 해당하는 연산은 실질적으로 블록체인 상의 복수의 노드(2)에 의해 수행될 수 있다. 블록체인의 사용자 클라이언트 각각은 자신이 보유하고 있는 암호화폐를 다른 사용자 클라이언트와 교환하기 위한 트랜잭션을 발행할 수 있다. DEX는 블록체인 네트워크 상에서 이러한 트랜잭션들을 매칭하여, 각 사용자 클라이언트 사이에 암호화폐 교환이 가능하게 할 수 있다.
본 개시에서, 노드(2)는 블록체인 네트워크(4)의 구성요소 중 하나로서, 해당 블록체인을 유지하기 위한 연산을 수행하는 주체일 수 있다. 블록체인의 유지에는 신규 블록의 생성 작업이 포함될 수 있다. 블록체인의 임의의 한 노드(2)는 사용자 클라이언트(3)가 발행한 트랜잭션을 이용하여 블록체인의 블록을 생성할 수 있다. 생성된 블록은 분산합의 과정을 통해 블록체인의 노드들 간에 공유되고 블록체인의 다음 블록으로 연결될 수 있다. 즉, 블록체인의 블록들은 트랜잭션들을 저장할 수 있다. 또한 노드(2)는 트랜잭션을 실행(어플리케이션, 예를 들어 스마트 컨트랙트에 적용)할 수 있다. 후술할 스마트 컨트랙트는 트랜잭션을 실행함에 따른 결과를 저장할 수 있다. 예를 들어 트랜잭션이 암호화폐 거래를 위한 주문이라면, 스마트 컨트랙트는 트랜잭션을 적용함에 따라 변화하는 각 사용자 클라이언트의 잔고 정보를 저장할 수 있다. 스마트 컨트랙트에 저장된 잔고 정보가 갱신되었다는 것은 트랜잭션에 따라 암호화폐 교환 내지 암호화폐 송금이 완료되었다는 것을 의미할 수 있다.
본 개시에서, 사용자 클라이언트(3)는 트랜잭션을 발행(생성)할 수 있다. 하고, 또한, 사용자 클라이언트(3)는 블록체인의 복수의 노드(2)들 중 어느 하나를 통해, 스마트 컨트랙트에 저장된 잔고 정보 등을 확인할 수 있다. 사용자 클라이언트는 블록체인 클라이언트라고 불릴 수도 있다.
본 개시에서, 블록체인 네트워크(4)는 복수의 노드(2) 사이에 트랜잭션 또는 블락 등을 공유하는 네트워크를 의미할 수 있다.
본 개시에서, 온 체인(ON Chain)은 블록체인 네트워크(4) 상을 의미할 수 있다. 어느 연산, 동작이 온 체인에서 수행된다는 표현은, 그 연산, 동작이 블록체인 네트워크(4) 상에서 수행된다는 의미로서, 예를 들어 적어도 하나의 노드(2)에 의해 그 연산, 동작이 수행된다는 뜻일 수 있다. 오프 체인(OFF Chain)은 블록체인 네트워크(4) 밖을 의미할 수 있다. 어느 연산, 동작이 오프 체인에서 수행된다는 표현은, 그 연산, 동작이 블록체인 네트워크(4)와는 구분되는 블록체인 네트워크(4) 밖의 네트워크에서 수행된다는 의미일 수 있다. 예를 들어, 블록체인 노드(2) 간의 블록 생성, 분산 합의 과정 등을 제외한, 사용자 클라이언트(3), 후술할 CEX(Centralized Exchanges)(1), 별도의 서버, 기타 통신 가능한 장치 등 사이의 방송망/브로드밴드 등을 통한 통신은 모두 오프 체인에서 수행된다고 볼 수 있다.
본 개시에서, 스마트 컨트랙트는 블록체인 상에서 동작하는 어플리케이션이라고 볼 수 있다. 전술한 트랜잭션은 스마트 컨트랙트의 상태를 변경하기 위한 입력값의 역할을 할 수 있다. 상술한 블록체인 상 블록들의 트랜잭션은 스마트 컨트랙트의 상태를 변경시킬 수 있고, 스마트 컨트랙트는 스마트 컨트랙트의 최신 상태를 보관하고 있을 수 있다. 예를 들어, 본 개시에서, 블록체인 상에서 동작하는 전술한 분산화된 거래소 DEX는, 스마트 컨트랙트로 구현될 수 있다. 암호화폐 교환, 예치, 인출을 위한 트랜잭션은 스마트 컨트랙트인 DEX에 입력되어 스마트 컨트랙트의 상태를 변경시킬 수 있고, 이에 따라 변경된 상태인 잔고 정보가 스마트 컨트랙트에 저장될 수 있다.
본 개시에서 사용되는 블록체인은, 스마트 컨트랙트를 지원하는 어떤 블록체인이어도 무방하며, 예를 들어 이더리움과 같은 스마트 컨트랙트 지원 블록체인이 사용될 수 있다.
본 개시에서, 트랜잭션(transaction)은 오더, 주문이라고 불릴 수도 있다. 트랜잭션은 예를 들어 "사용자 클라이언트(3a)가 사용자 클라이언트(3b)에게 소정의 암호화폐를 소정의 수량만큼 보낸다"등과 같이 암호화폐 송금, 교환 등의 내용을 하나의 문자열로 나타낸 것일 수 있다. 트랜잭션의 구체적인 내용에 대해서는 후술한다.
도 1에 있어서, 블록체인의 사용자 클라이언트(3a, 3b) 각각은, 자신이 보유하고 있는 적어도 하나 이상의 타입의 암호화폐를 암호화폐 거래소인 DEX에 예치(deposit)할 수 있다. 도시된 바와 같이, 블록체인의 사용자 클라이언트(3a, 3b) 각각은, 보유하고 있는 암호화폐를 교환하기 위하여 트랜잭션(1000a, 1000b)을 발행할 수 있다. 트랜잭션은 소정의 암호화폐를 다른 암호화폐와 소정의 교환율로 교환하기 위한 주문(order)일 수 있다. 사용자 클라이언트(3a, 3b) 각각은 발행된 트랜잭션을 블록체인 상의 임의의 한 노드(2)로 전달할 수 있다.
트랜잭션을 전달받은 노드(2)는 트랜잭션을 블록체인 네트워크(4) 상의 복수의 노드(2)에 공유할 수 있다. 전달받은 트랜잭션들은 해당 블록체인의 블록에 저장될 수 있다. 본 실시예에서, 블록체인 상 블록들에 저장되는 복수의 트랜잭션들은, 암호화폐의 교환을 위한 오더 북(order book)의 역할을 할 수 있다. 즉, 도시된 실시예에서는 오더 북이 블록체인 상에 존재할 수 있다. 복수의 노드(2) 중 어느 하나의 노드(2)는 트랜잭션을 모아서 블록체인의 다음 블록을 생성하고, 생성된 블록을 복수의 노드(2)에 공유할 수 있다. 노드(2)가 트랜잭션을 수집하고 블록을 생성하는 방법은 공지된 블록체인의 블록 형성 방법을 따를 수 있다.
본 개시에서, 오더 북은 트랜잭션 내지 주문을 나열한 기록으로서, 각 주체가 사거나 팔고자 하는, 즉 교환하고자 하는 디지털 자산(예: 암호화폐)의 가격과 수량을 리스팅한 것일 수 있다.
도시된 실시예에서, DEX는 트랜잭션의 내용에 기초하여 매칭되는 트랜잭션을 결정할 수 있다. DEX에 의해 매칭된 트랜잭션의 내용에 따라, 암호화폐의 교환이 성립될 수 있다. 블록체인 네트워크(4) 상에서 동작하는 DEX, 즉 스마트 컨트랙트는, 암호화폐 교환에 따른 사용자 클라이언트의 잔고 변화를 업데이트하여 저장할 수 있다. 스마트 컨트랙트에 저장되는 잔고 정보는 암호화폐의 밸런스 북(balance book) 역할을 할 수 있다.
이 후, 사용자 클라이언트(3a, 3b) 각각은, 필요에 따라 원하는 암호화폐를 DEX로부터 인출(withdrawal)할 수 있다. 이러한 인출은 스마트 컨트랙트에 저장된, 해당 사용자 클라이언트의 대상 암호화폐에 대한 잔고 정보에 기초하여 수행될 수 있다.
도시된 실시예에서, DEX에 의한 트랜잭션 매칭은 그 처리가 다소 느릴 수 있다. DEX와 같이 블록체인 상에서 동작하는 암호화폐 거래소는, 거래소 해킹 등의 요인으로부터 비교적 자유로울 수 있다. 그러나, DEX에 의한 암호화폐 거래의 경우, 각 트랜잭션이 복수의 노드(2) 사이에 공유되며, 각 트랜잭션들을 이용해 블록체인의 새로운 블록을 생성해야 하는 등, 블록체인의 기본적 특성에 따라 트랜잭션 매칭 등의 연산이 느리게 수행될 수 있다. 이에 따라, 다수의 트랜잭션이 발생하게 되는 경우, 그 처리에 있어 병목현상이 발생할 수 있다.
도 2는 본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정을 나타낸 도면이다. 본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정에서, DEX(2)에 더하여 CEX(1)가 추가로 사용될 수 있다. CEX(Centralized Exchange)는 중앙화된 거래소로서, 본 개시에서는 DEX를 보완하여 전술한 DEX의 역할 중 일부를 중앙화된 영역에서 수행할 수 있다. CEX는, DEX가 동작되는 블록체인 및 그 블록체인 네트워크(4)와는 분리된 영역, 예를 들어 일반적인 인터넷 네트워크 등에서 동작할 수 있다. 사용자 클라이언트(3a, 3b)는 각각 발행한 트랜잭션(1000a, 1000b)를 DEX가 아닌 CEX로 전달할 수 있다. CEX는 트랜잭션의 유효성을 검증하거나 트랜잭션 사이의 매칭을 수행하여, 매칭된 트랜잭션만을 블록체인의 한 노드(2a)로 전달할 수 있다.
구체적으로, 사용자 클라이언트(3a, 3b) 각각은 먼저 암호화폐를 DEX(5)에 예치할 수 있다. 예치 과정은 전술한 바와 같다. 사용자 클라이언트(3a, 3b) 각각은 보유한 암호화폐의 교환을 위한 트랜잭션(1000a, 1000b)을 발행할 수 있다. 사용자 클라이언트(3a, 3b) 각각은 트랜잭션(1000a, 1000b)을 블록체인 네트워크 외부(OFF Chain) 영역의 CEX(1)로 전달할 수 있다. 도시된 실시예에서, 두 사용자 클라이언트가 두 개의 트랜잭션을 CEX(1)로 전달하는 것으로 나타내어졌지만, 이는 설명을 위한 것이며, 복수의 사용자 클라이언트가 복수의 트랜잭션을 발행해 CEX(1)로 전달할 수 있다.
CEX(1)는 전달받은 트랜잭션(1000a, 1000b)을 DEX를 대신하여 처리할 수 있다. 일 실시예에서, CEX(1)는 전달받은 트랜잭션(1000a, 1000b)이 각각 사용자 클라이언트(3a, 3b)로부터 유래된 것인지를, 트랜잭션의 디지털 서명을 복호화하여 확인할 수 있다.
본 개시에서, 디지털 서명은 개인키, 공개키를 이용한 암호화 방법을 통해, 특정 데이터가 어느 주체로부터 유래된 것인지를 검증하기 위한 방법일 수 있다. 개인키를 이용해 암호화된 데이터는, 그 개인키와 쌍으로 존재하는 공개키를 이용해서만 복호화가 될 수 있다. 개인키는 공유되지 않고 해당 주체가 보유하고 있는 암호키이며, 공개키는 공유되어 누구나 확인할 수 있는 암호키일 수 있다. 공개키는 해당 주체의 주소 역할을 할 수 있다. 예를 들어 본 개시에서 트랜잭션이 디지털 서명되어 전송되었다는 것은, 트랜잭션에 해쉬 함수를 적용하여 얻은 해쉬 값을 개인키로 암호화하여 디지털 서명을 생성한 후, 디지털 서명을 그 트랜잭션 원본에 붙여 전송되었다는 것을 의미할 수 있다. 수신측(예: CEX(1))에서는 디지털 서명을 공개키로 복호화하여 해쉬 값을 얻고, 그 트랜잭션 원본에 다시 해쉬 함수를 적용하여 얻은 해쉬 값과 비교할 수 있다. 비교된 해쉬 값이 같으면, 디지털 서명된 트랜잭션은 그 개인키를 가지고 있는 주체로부터 유래된 것이 맞다고 확인될 수 있다.
본 개시에서, 해쉬 값은 원본 데이터에 대한 고정된 길이의 요약본(fixed length value)일 수 있다. 원본 데이터에 해쉬 함수를 적용하여 얻을 수 있다. 일반적으로 해쉬 함수를 통해 원본 데이터의 해쉬 값을 얻는 것은 쉬우나, 거꾸로 해쉬 값으로부터 원본 데이터를 찾아내는 것은 극히 어렵다. 또한, 원본 데이터가 조금만 변경되어도 전혀 다른 해쉬 값이 나오기 때문에, 전술한 바와 같은 디지털 서명을 통한 발송주체 확인에서 쓰일 수 있다.
본 개시의 일 실시예에서, CEX(1)는 전달받은 트랜잭션(1000a, 1000b)의 암호화폐 교환 요청이 유효한 것인지를, DEX(5)에 저장된 잔고 정보에 기초하여 판단할 수 있다. 예를 들어, 트랜잭션(1000a)이 제1 암호화폐(예: 비트코인) 5개를 제2 암호화폐(예: 이더리움) 1개와 교환하기 위한 주문인 경우, CEX(1)는 사용자 클라이언트(3a)가 비트코인 5개를 가지고 있는지를 잔고 정보에 기초하여 확인할 수 있다. 일 실시예에서, CEX(1)는 전달받은 트랜잭션(1000a, 1000b)이 그 만료시간을 도과하여 무효인 트랜잭션인지 여부를 확인할 수도 있다. 일 실시예에서, CEX(1)는, 소정의 빈도 수 이상으로 트랜잭션을 남발하는 사용자 클라이언트를 트랜잭션 스패밍(transaction spamming)으로 판단하고, 소정의 필터링 정책을 적용하여, 해당 사용자 클라이언트로부터의 트랜잭션을 매칭에서 배제할 수도 있다.
CEX(1)는 복수의 사용자 클라이언트로부터 전달받은 복수의 트랜잭션 중에서, 소정의 기준에 따라 적어도 두 개의 트랜잭션을 매칭할 수 있다. 트랜잭션의 매칭은 트랜잭션의 내용에 기초하여 다양한 방법으로 수행될 수 있다. 도시된 실시예에서, CEX(1)는 소정의 기준에 충족하는 경우, 트랜잭션(1000a) 및 트랜잭션(1000b)를 매칭할 수 있다. 매칭된 두 트랜잭션은 매칭된 트랜잭션(2000)과 같이 표현할 수 있다. CEX(1)는 매칭된 트랜잭션(2000)을 블록체인의 한 노드(2a)로 전달할 수 있다. 이 노드(2a)는, 블록체인 네트워크(4) 상에 존재하고, DEX(5) 동작의 실질적인 연산을 수행하는 복수의 노드(2) 중 임의의 한 노드일 수 있다. CEX(1)와 블록체인 네트워크(4)의 연결성 및 CEX(1)의 구현 방식에 따라, CEX(1)는 하나 이상의 노드(2)로 트랜잭션을 전달할 수 있다. 본 개시의 일 실시예에서, CEX(1)는 전자 장치(10)로 구현될 수 있다. 전자 장치(10)에 대해서는 후술한다.
노드(2a)는 전달받은 매칭된 트랜잭션(2000)을 블록체인 네트워크(4) 상의 복수의 노드(2)에 공유할 수 있다. 블록체인 네트워크(4) 상의 복수의 노드(2) 중 임의의 어느 한 노드(2b)는 매칭된 트랜잭션(2000)이 포함된 블록체인의 블록을, 해당 블록체인의 소정의 기준에 따라 생성할 수 있다. 생성된 블록은 블록체인을 통하여 복수의 노드(2) 사이에 공유되고, 블록 내 트랜잭션들의 내용에 따라 DEX의 잔고 정보가 갱신될 수 있다.
이 후, 사용자 클라이언트(3a, 3b) 각각은, 갱신된 잔고 정보에 기초하여, 원하는 암호화폐를 DEX로부터 인출(withdrawal)할 수 있다. 인출 과정은 전술한 바와 같다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정에 비하여, 트랜잭션 처리 속도가 더 빠를 수 있다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정에 비하여, 다량의 트랜잭션이 발생하는 상황에서 처리 정체(congestion)을 막을 수 있다.
본 개시의 다양한 실시예들에 따른 암호화폐 교환 과정은, DEX만을 이용한 암호화폐 교환 과정과 달리, 트랜잭션을 전송하는 특정 사용자 클라이언트에 대한 일종의 필터링(filtering) 정책의 적용이 가능할 수 있다.
도 3은 본 개시의 다양한 실시예들에 따른 전자 장치(10)의 블록도를 나타낸 도면이다. 본 개시에서 상술한 CEX(1)는 도시된 전자 장치(10)로 구현될 수 있다. 일 실시예에 따르면, 전자 장치(10)는 통신 인터페이스(130), 메모리(120) 및/또는 프로세서(110)를 포함할 수 있다. 일 실시예에서는, 전자 장치(10)의 이 구성요소들 중 적어도 하나가 생략되거나, 다른 구성요소가 전자 장치(10)에 추가될 수 있다. 추가적으로(additionally) 또는 대체적으로(alternatively), 일부의 구성요소들이 통합되어 구현되거나, 단수 또는 복수의 개체로 구현될 수 있다.
전자 장치(10) 내, 외부의 구성요소들 중 적어도 일부의 구성요소들은 버스, GPIO(general purpose input/output), SPI(serial peripheral interface) 또는 MIPI(mobile industry processor interface) 등을 통해 서로 연결되어, 데이터 및/또는 시그널을 주고 받을 수 있다.
통신 인터페이스(130)는, 전자 장치(10)와 다른 외부 전자 장치(20, 30) 또는 전자 장치(10)와 기타 서버 등 간의 무선 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신 인터페이스(130)는 LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), WiBro(Wireless BroaDBand), WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), GPS(Global Positioning System) 또는 GNSS(global navigation satellite system) 등의 방식에 따른 무선 통신을 수행할 수 있다. 예를 들어, 통신 인터페이스(130)는 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232) 또는 POTS(plain old telephone service) 등의 방식에 따른 유선 통신을 수행할 수 있다.
통신 인터페이스(130)는, 복수의 사용자 클라이언트(3)와 통신을 수행할 수 있다. 복수의 사용자 클라이언트(3)와의 통신은 블록 체인 네트워크(4)와는 구별되는, 블록 체인 네트워크(4) 밖(OFF Chain)에서의 일반적인 통신 네트워크를 통해 수행될 수 있다. 즉, CEX(1)에 해당하는 전자 장치(10) 및 사용자 클라이언트(3)는 블록체인의 노드가 아니므로, 이들 사이의 통신은 블록 체인 네트워크(4)와는 무관하게 수행될 수 있다.
또한 통신 인터페이스(130)는, 블록 체인 기반의 블록 체인 네트워크(4) 상의 하나 이상의 노드(node)와 통신을 수행할 수 있다. 전술한 바와 같이, 하나 이상의 노드(2)는, 블록체인 상에서, 암호화폐 교환을 위한 스마트 컨트랙트(smart contract), 즉 DEX(5)를 실행할 수 있다.
메모리(120)는, 다양한 데이터를 저장할 수 있다. 메모리(120)에 저장되는 데이터는, 전자 장치(10)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나, 사용되는 데이터로서, 소프트웨어(예: 프로그램)를 포함할 수 있다. 메모리(120)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다.
본 개시에서, 프로그램은 메모리(120)에 저장되는 소프트웨어로서, 전자 장치(10)의 리소스를 제어하기 위한 운영체제, 어플리케이션 및/또는 어플리케이션이 전자 장치(10)의 리소스들을 활용할 수 있도록 다양한 기능을 어플리케이션에 제공하는 미들 웨어 등을 포함할 수 있다.
메모리(120)는 하나 이상의 트랜잭션을 저장할 수 있다. 이 트랜잭션은 복수의 사용자 클라이언트(3)로부터 수신된 것일 수 있다. 여기서 트랜잭션은 복수의 암호화폐 중, 적어도 두 개의 암호화폐를 소정의 교환율로 교환하기 위한 트랜잭션일 수 있다.
프로세서(110)는, 소프트웨어(예: 프로그램)를 구동하여 프로세서(110)에 연결된 전자 장치(10)의 적어도 하나의 구성요소를 제어할 수 있다. 또한 프로세서(110)는 본 개시와 관련된 다양한 연산, 처리, 데이터 생성, 가공 등의 동작을 수행할 수 있다. 또한 프로세서(110)는 데이터 등을 메모리(120)로부터 로드하거나, 메모리(120)에 저장할 수 있다.
프로세서(110)는 블록체인 네트워크(4) 밖에서(OFF Chain), 트랜잭션을 수집할 수 있다. 즉, 프로세서(110)는, 통신 인터페이스(130)를 통해 복수의 사용자 클라이언트(3)로부터 트랜잭션을 수신할 수 있다. 트랜잭션은 해당 트랜잭션을 전송한 클라이언트의 개인키로 디지털 서명되었을 수 있다. 트랜잭션은 소정의 암호화폐를 소정의 교환율로 다른 암호화폐와 교환하기 위한 트랜잭션일 수 있다. 예를 들어, 프로세서(110)는 통신 인터페이스(130)를 통해, 복수의 사용자 클라이언트(3) 중 한 사용자 클라이언트(예: 제1 클라이언트)(3a)로부터, 해당 사용자 클라이언트의 개인키(예: 제1 개인키)로 디지털 서명되고, 한 암호화폐(예: 제1 암호화폐)를 다른 암호화폐(예: 제2 암호화폐)와 소정의 교환율(예: 제1 교환율)로 교환하기 위한 트랜잭션(예: 제1 트랜잭션)을 수신할 수 있다. 또한, 프로세서(110)는 통신 인터페이스(130)를 통해, 복수의 사용자 클라이언트(3) 중 한 사용자 클라이언트(예: 제2 클라이언트)(3b)로부터, 해당 사용자 클라이언트의 개인키(예: 제2 개인키)로 디지털 서명되고, 한 암호화폐(예: 제2 암호화폐)를 다른 암호화폐(예: 제1 암호화폐)와 소정의 교환율(예: 제2 교환율)로 교환하기 위한 트랜잭션(예: 제2 트랜잭션)을 수신할 수 있다.
프로세서(110)는, 블록체인 네트워크(4) 밖에서(OFF Chain), 트랜잭션의 유효성을 다양한 방식으로 검증할 수 있다. 프로세서(110)는 트랜잭션의 유효성을, 그 디지털 서명, 사용자 클라이언트의 잔고 정보, 트랜잭션의 만료 시간 등의 정보에 기초하여 검증할 수 있다. 일 실시예에서, 프로세서(110)는, 해당 사용자 클라이언트의 개인키(예: 제1 개인키, 제2 개인키)에 각각 대응되는 공개키(예: 제1 공개키, 제2 공개키)에 기초하여, 해당 트랜잭션들 각각의 디지털 서명을 검증할 수 있다. 일 실시예에서, 프로세서(110)는, 트랜잭션을 발행한 사용자 클라이언트의 잔고(balance) 정보에 기초하여 해당 트랜잭션이 유효한지 여부를 검증할 수 있다. 즉, 프로세서(110)는, 소정의 트랜잭션(예: 제1 트랜잭션)에서 사용자 클라이언트(예: 제1 클라이언트)가 교환을 원하는 암호화폐(예: 제1 암호화폐)의 잔고가, 해당 사용자 클라이언트(예: 제1 클라이언트)의 잔고 정보에 비추어 적정한지를 결정할 수 있다. 예를 들어, 비트코인 5개를 이더리움 1개와 교환하기 위한 트랜잭션의 경우, 프로세서(110)는 해당 사용자 클라이언트가 실제로 비트코인 5개를 가지고 있는지를 확인하여, 트랜잭션의 유효성을 검증할 수 있다. 해당 사용자 클라이언트의 잔고는, 블록체인 네트워크(4) 상의 스마트 컨트랙트에 저장된 잔고 정보로부터 획득할 수 있다. 프로세서(110)는 다른 트랜잭션들(예: 제2 트랜잭션)에 대해서도 마찬가지로 잔고 정보에 기초한 유효성 검증을 수행할 수 있다.
프로세서(110)는, 블록체인 네트워크(4) 밖에서(OFF Chain), 트랜잭션들을 각각의 교환율에 기초하여 매칭(matching)할 수 있다. 프로세서(110)는 수신한 복수의 트랜잭션 중, 소정의 기준에 따라 매칭되는 트랜잭션을 찾아 두 트랜잭션(예: 제1 트랜잭션 및 제2 트랜잭션)을 매칭할 수 있다. 일 실시예에서, 매칭은 각 트랜잭션의 교환율에 기초하여 수행될 수 있으며, 구체적인 매칭 과정은 후술한다.
프로세서(110)는, 통신 인터페이스(130)를 제어하여, 매칭된 트랜잭션(예: 제1 트랜잭션 및 제2 트랜잭션)을 블록체인 네트워크(4) 상의 하나 이상의 노드(2a)로 전달할 수 있다.
본 개시에 따른 전자 장치(10)의 다양한 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 조합될 수 있으며, 조합되어 만들어진 전자 장치(10)의 실시예 역시 본 개시의 범위에 속한다. 또한 전술한 본 개시에 따른 전자 장치(10)의 내/외부 구성 요소들은 실시예에 따라 추가, 변경, 대체 또는 삭제될 수 있다. 또한 전술한 전자 장치(10)의 내/외부 구성 요소들은 하드웨어 컴포넌트로 구현될 수 있다.
일 실시예에서, CEX(1)는 하나의 전자 장치(10)가 아닌 다른 형태로 구현될 수도 있다. 일 실시예에서, CEX(1)는 전술한 블록체인 네트워크(4)의 블록체인이 아닌 별도의 블록체인 상에서 동작하는 또 다른 스마트 컨트랙트로 구현될 수도 있다. 이 경우, 그 별도의 블록체인 상의 한 노드는 전술한 전자 장치(10)에 의해 구현될 수 있고, 전술한 전자 장치(10)의 실시예들을 수행할 수 있다. 일 실시예에서, 그 별도의 블록체인은 프라이빗 체인(private chain)일 수 있다. 프라이빗 체인은, 불특정 다수가 노드가 될 수 있는 일반적인 블록체인과는 달리, 소정의 조건을 만족하는 엔티티(entity)만이 노드가 될 수 있는 블록체인을 의미할 수 있다.
일 실시예에서, 전술한 노드(2)는 전자 장치(20)에 의해 구현될 수 있다. 전자 장치(20) 역시 CEX(1), 다른 노드들(2), 사용자 클라이언트(3)와 통신하기 위한 통신 인터페이스, 필요한 정보를 저장하는 메모리 및/또는 다양한 연산을 수행하는 프로세서를 포함할 수 있다. 전자 장치(20)의 메모리는 DEX(5)를 구현하기 위한 스마트 컨트랙트를 저장할 수 있다. 스마트 컨트랙트는 복수의 명령어를 포함하는 일련의 프로그램 내지는 애플리케이션일 수 있다. 스마트 컨트랙트에 포함된 명령어가 전자 장치(20)의 프로세서에 의해 실행됨으로써, 본 개시에 따른 DEX(5)의 동작이 수행될 수 있다.
일 실시예에서, 전술한 사용자 클라이언트(3)는 전자 장치(30)에 의해 구현될 수 있다. 전자 장치(30) 역시 CEX(1), 노드들(2), 다른 사용자 클라이언트(3)와 통신하기 위한 통신 인터페이스, 필요한 정보를 저장하는 메모리 및/또는 다양한 연산을 수행하는 프로세서를 포함할 수 있다.
본 개시에서, 전자 장치(10, 20, 30)는 다양한 형태의 장치가 될 수 있다. 예를 들어, 전자 장치는 휴대용 통신 장치, 컴퓨터 장치, 휴대용 멀티미디어 장치, 웨어러블 장치 또는 상술한 장치들 중 하나 또는 그 이상의 조합에 따른 장치일 수 있다. 본 개시의 전자 장치(10, 20, 30)는 전술한 장치들에 한정되지 않는다.
도 4는 본 개시의 일 실시예에 따른, CEX, 노드, 사용자 클라이언트가 암호화폐 교환을 위한 트랜잭션을 처리하는 순서를 도식화한 도면이다. 여기서 노드(2)는, 블록체인의 복수의 노드(2) 중 임의의 어느 한 노드를 의미할 수 있다. 각 동작들이 수행됨에 있어, 각 동작의 주체 또는 객체로서 등장하는 노드(2)는 각각 다른 노드일 수 있다.
사용자 클라이언트(3a) 및 사용자 클라이언트(3b)는 소정의 암호화폐를 소정의 수량만큼 DEX(5)에 예치할 수 있다(S4010, S4020). 이와 같이 예치하기 위하여, 사용자 클라이언트는 DEX가 실행되는 블록체인의 적어도 하나의 노드(2)에, 소정 수량의 암호화폐를 보낼 수 있다. DEX는 사용자 클라이언트의 지갑과 같은 역할을 수행하여, 수신된 암호화폐를 보관할 수 있다. 스마트 컨트랙트인 DEX의 지갑으로 전달된 암호화페에 대한 정보는, 블록체인 상의 다른 노드(2)들에 의해 확인될 수 있다.
이 후, 사용자 클라이언트(3a) 및 사용자 클라이언트(3b)는 각각 트랜잭션(1000a) 및 트랜잭션(1000b)를 CEX(1) 내지 전자 장치(10)로 전송할 수 있다(S4030, S4040). 트랜잭션(1000a)는 제1 암호화폐를 제2 암호화폐와 교환하기 위한 주문일 수 있다. 트랜잭션(1000b)는 제2 암호화폐를 제1 암호화폐와 교환하기 위한 주문일 수 있다.
CEX(1) 내지 전자 장치(10)는, 유효성 검증을 수행할 수 있다(S4050). 전술한 바와 같이, CEX(1)는 디지털 서명, 잔고 정보 및/또는 만료시간에 기초하여 트랜잭션이 유효한지 여부를 검증할 수 있다.
먼저 CEX(1) 내지 전자 장치(10)는, 디지털 서명에 기초하여 트랜잭션이 유효한지 여부를 검증할 수 있다. CEX(1)는 수신된 트랜잭션(1000a)의 디지털 서명을, 해당 사용자 클라이언트(3a)의 공개키(예: 제1 공개키)로 복호화할 수 있다. 이에 따라 CEX(1)는 트랜잭션(1000a) 및 트랜잭션(1000a)의 복호화된 디지털 서명을 이용하여, 해당 트랜잭션(1000a)이 그 사용자 클라이언트(3a)로부터 유래한 것인지 여부를 검증할 수 있다. 트랜잭션(1000b)에 대해서도 마찬가지 검증이 수행될 수 있다.
구체적으로, 트랜잭션(1000a)은 해당 트랜잭션(1000a)의 해쉬 값을 해당 사용자 클라이언트(3a)의 개인키(예: 제1 개인키)로 서명한 디지털 서명과 함께 전자 장치(10)으로 전달될 수 있다. 전자 장치(10)의 프로세서(110)는, 수신된 트랜잭션(1000a)의 디지털 서명을, 해당 사용자 클라이언트(3a)의 공개키(예: 제1 공개키)로 복호화할 수 있다. 프로세서(110)는 그 디지털 서명을 복호화하여 얻은 해쉬 값과, 전달받은 트랜잭션(1000a)에 해쉬 함수를 적용하여 얻은 해쉬 값이 같은지를 판단할 수 있다. 두 값이 같은 경우, 해당 트랜잭션(1000a)은 그 공개키(예: 제1 공개키)에 해당하는 사용자 클라이언트(3a)로부터 유래한 것이라고 판단할 수 있다. 프로세서(110)는 다른 트랜잭션(1000b)에 대해서도 같은 방식으로 디지털 서명에 기초한 유효성 검증을 수행할 수 있다.
일 실시예에서, 트랜잭션(1000a)은 해당 사용자 클라이언트(3a)로부터 전자 장치(10)로 직접 전달되는 것이 아니라, 다른 경로를 거쳐서 전달될 수도 있다. 이러한 경우에도, 전술한 바와 같이 디지털 서명을 이용하여, 그 트랜잭션(1000a)이 해당 사용자 클라이언트(3a)로부터 유래된 것인지를 판단할 수 있다.
또한 CEX(1) 내지 전자 장치(10)는 블록체인 상의 임의의 한 노드(2)로 잔고 정보를 요청하여, 잔고 정보를 획득할 수 있다(S4051, S4052). CEX(1)는 사용자 클라이언트(3a)의 잔고 정보에 기초하여 사용자 클라이언트(3a)가 발행한 트랜잭션(1000a)가 유효한지, 또한 사용자 클라이언트(3b)의 잔고 정보에 기초하여 사용자 클라이언트(3b)가 발행한 트랜잭션(1000b)가 유효한지를 판단할 수 있다.
또한, CEX(1) 내지 전자 장치(10)는, 트랜잭션의 만료시간에 관한 정보를 이용하여 해당 트랜잭션이 유효한지 여부를 검증할 수 있다. CEX(1)는 만료시간에 대한 정보가 나타내는 해당 트랜잭션의 만료시간과 현재시간을 비교하여, 해당 트랜잭션의 유효성을 판단할 수 있다.
구체적으로, 트랜잭션(1000a, 1000b)은 각각 해당 트랜잭션이 나타내는 주문이 유효한 만료시간에 대한 정보를 가질 수 있다. 실시예에 따라 만료시간에 대한 정보는 타임스탬프 또는 블록 넘버 등과 같이 만료시간을 근사할 수 있는 값일 수 있다. 프로세서(110)는 해당 만료시간과 현재시간을 비교하여, 만료시간이 도과한 트랜잭션은 유효하지 않은 것으로 판단할 수 있다. 유효하지 않은 트랜잭션은 매칭에서 배제될 수 있다. 해당 트랜잭션의 만료시간이 도과되지 않았으면, 프로세서(110)는 해당 트랜잭션이 유효한 트랜잭션이라고 판단할 수 있다.
일 실시예에서, 프로세서(110)는 CEX(1) 자체에서 부과하는 필요사항(requirement)에 기초하여 트랜잭션이 유효한지 여부를 검증할 수도 있다. CEX(1)는 해당 암호화폐 거래소의 특성상 별도의 필요사항을 트랜잭션에 요구할 수 있다. 프로세서(110)는 그 필요사항에 대한 정보를 기반으로 각 트랜잭션이 그 필요사항을 준수하고 있는지 여부를 판단하고, 이에 따라 해당 트랜잭션이 유효한지 여부를 검증할 수 있다. 필요사항에 대한 정보는 메모리(120)에 저장될 수 있다.
CEX(1) 내지 전자 장치(10)는, 트랜잭션의 교환율에 기초하여 소정의 기준을 만족하는 트랜잭션을 매칭할 수 있다(S4060). CEX(1)는 트랜잭션(1000a) 및 트랜잭션(1000b) 각각이 나타내는 교환율을 도출할 수 있다. CEX(1)는 트랜잭션(1000a)의 교환율과 트랜잭션(1000b)의 교환율이 소정의 조건을 만족하는 경우, 두 트랜잭션(1000a, 1000b)을 매칭할 수 있다.
CEX(1) 내지 전자 장치(10)는, 매칭된 트랜잭션(2000)을 임의의 한 노드(2)로 전달할 수 있다(S4070). 이 노드는, 전술한 잔고 정보를 획득한 노드와 같은 노드일 수도 있고, 다른 노드일 수 있다. 노드(2)는 전달받은 매칭된 트랜잭션(2000)을 기초로 블록체인의 블록을 생성할 수 있고, 이에 따라 상술한 바와 같이 잔고 정보가 갱신될 수 있다.
사용자 클라이언트(3a, 3b)는 필요에 따라, 자신의 잔고 정보에 기초하여, 자신이 보유한 소정 암호화폐의 소정 수량을 인출할 수 있다(S4080, S4090). 인출은 매칭된 트랜잭션에 따라 갱신된 잔고 정보에 기초하여 수행될 수 있다. 인출되는 암호화폐는 사용자 클라이언트의 공개키로서 나타나지는 해당 사용자 클라이언트의 주소로 인출될 수 있다.
도 5는 본 개시의 일 실시예에 따른, 노드가 전달받은 매칭된 트랜잭션을 처리하는 과정을 나타낸 도면이다. 전술한 바와 같이, 매칭된 트랜잭션(2000)은 복수의 노드(2) 중 하나 이상의 노드로 전달될 수 있다. 설명의 편의를 위하여, 이하에서는 매칭된 트랜잭션(2000)이 노드(2a)로 전달된 것으로 가정한다. 노드(2a)로 전달된 매칭된 트랜잭션(2000)은, 블록 체인 네트워크(4) 상의 복수의 노드(2) 사이에 공유되고, 블록체인의 한 블록에 포함될 수 있다. 블록에 포함되게 된 매칭된 트랜잭션(2000)의 내용에 따라, 블록체인 상의 DEX에 저장된 잔고 정보가 갱신될 수 있다.
구체적으로, 노드(2a)는 전달받은 매칭된 트랜잭션(2000)을 블록체인 네트워크(4) 상의 복수의 노드(2)에 공유할 수 있다. 복수의 노드(2) 각각은 매칭된 트랜잭션(2000)을 비롯한 다른 트랜잭션들을 이용하여 블록체인의 다음 블록을 생성하기 위한 연산을 수행할 수 있다.
복수의 노드(2) 중 어느 한 노드(2b)는 소정의 기준에 따라 해당 블록체인의 다음 블록을 생성할 수 있다. 이 다음 블록에는 매칭된 트랜잭션(2000)도 포함될 수 있다. 이를 통해, 매칭된 트랜잭션(2000)은 블록체인의 블록에 기록될 수 있다. 노드(2b)는 생성된 새로운 블록 내용을, 복수의 노드(2)에 공유할 수 있다. 복수의 노드(2)에 의해 실행되는 블록체인 상의 DEX(5)는, 블록 내용에 따라 저장하고 있는 잔고 정보를 갱신할 수 있다. 이에 따라, 사용자 클라이언트(예: 제1 클라이언트, 제2 클라이언트) 각각의, 해당 암호화폐(예: 제1 암호화폐, 제2 암호화폐)에 대한 잔고 정보가 갱신될 수 있다.
즉, 매칭된 트랜잭션(2000)은 관련된 사용자 클라이언트(예: 제1 클라이언트, 제2 클라이언트)의 잔고 정보를 변경하는데 사용될 수 있다. 매칭된 트랜잭션(2000)은 블록체인의 새로운 블록이 생성될 때 기록될 수 있으며, 생성된 블록은 복수의 노드(2) 각각에 공유(broadcast)될 수 있다.
도 6은 본 개시의 일 실시예에 따른, CEX가 노드로부터 잔고 정보를 획득하는 과정을 나타낸 도면이다. 전술한 바와 같이, 생성된 새로운 블록 내용에 따라 DEX의 잔고 정보가 갱신될 수 있다. 이에 따라, 블록체인 상에서 실행되는 DEX(5)의 잔고 정보 또는 밸런스 북이 갱신될 수 있고, 블록체인 네트워크(4) 상의 각 노드들은 DEX로부터 잔고 정보를 확인할 수 있다.
도시된 실시예에서, CEX(1) 내지 전자 장치(10)는 노드(2c)로 잔고 정보를 요청할 수 있다. 노드(2c)는 DEX(5)를 통해 잔고 정보를 획득하고 이를 CEX(1)로 전송할 수 있다. 일 실시예에서, 전달되는 잔고 정보는, 트랜잭션을 발행한 사용자 클라이언트(예: 제1 클라이언트, 제2 클라이언트)의 거래 대상 암호화폐(예: 제1 암호화폐, 제2 암호화폐)에 대한 잔고 정보일 수 있다.
일 실시예에서, 이 과정은 CEX(1)와 노드 간의 요청과 응답에 의한 것이 아니라, CEX(1)가 노드(2c)에 액세스하여, 잔고 정보의 상태를 지속적으로 모니터링하는 방식으로 수행될 수도 있다. CEX(1)는 이를 통해 최신의 잔고 정보를 계속 획득할 수 있다. 이 후, CEX(1)는 지속적으로 획득한 각 사용자 클라이언트(3)의 주소(공개키)에 대한 잔고 정보를 저장할 수 있다.
일 실시예에서, 이 과정은 CEX(1)가 노드(2)로 매칭된 트랜잭션을 보내기 전에 해당 트랜잭션 내용들을 저장해 놓음으로써 생략될 수도 있다. CEX(1)는 매칭된 트랜잭션을 DEX(5), 즉 노드(2)로 보내기 전에 그 트랜잭션 내용들을 모두 저장해 놓음으로써 현재의 각 사용자 클라이언트(3)의 잔고 정보를 노드와의 통신 없이 알 수 있다. 이 경우 CEX(1)는 노드(2)로의 잔고 정보 요청을 할 필요가 없을 수 있다.
일 실시예에서, 블록체인 네트워크(4) 상의 복수의 노드(2) 각각이 가지고 있는 잔고 정보는 서로 간에 불일치할 수도 있다. 즉, 어느 한 시점에서 블록체인 상의 유효한 잔고 상태(global state)와, 임의의 한 노드가 가지는 잔고 상태는 다를 수 있다. 이에 따라 CEX(1) 측에서 모니터링하는 블록체인의 상태는 CEX(1)가 어느 노드를 통해 잔고 정보를 획득하는지에 따라 달라질 수 있다.
일 실시예에서, 실제 잔고와 CEX(1)가 획득하는 잔고 정보와의 불일치에 따른 문제를 막기 위하여, CEX(1) 즉 전자 장치(10)는 트랜잭션이 발행되고 일정 시간 후 또는 일정 개수의 블락이 처리된 후에, 어느 한 노드로부터 잔고 정보를 획득해 올 수 있다. 참고로 마찬가지 이유에서, 사용자 클라이언트(3)가 잔고 정보에 기초하여 소정의 암호화폐 수량을 DEX(5)로부터 인출하는 경우에도, DEX(5) 내지 소정의 한 노드(2)는 인출 요청이 있고 일정 시간 후 또는 일정 개수의 블락이 처리된 후에, 그 인출 요청을 처리할 수 있다.
일 실시예에서, 실제 잔고와 CEX(1)가 획득하는 잔고 정보와의 불일치에 따른 문제를 막기 위하여, 사용자 클라이언트(3)는 직접 DEX(5)에 일정한 수량의 암호화폐만이 거래 가능하도록 설정해 둘 수도 있다. 설정된 수량만큼의 암호화폐는 바로 거래가 가능하지만, 그 이상의 수량에 대해서는 인출 요청이 발생한 후 일정 시간 후 또는 일정 개수의 블락이 처리된 후에 거래(인출)가 가능하도록 할 수 있다.
일단, CEX(1) 내지 전자 장치(10)가 잔고 정보를 획득하면, 이를 기초로 각 트랜잭션의 유효성이 검증될 수 있다. 구체적으로 전자 장치(10)의 프로세서(110)는, 사용자 클라이언트가 교환의 대가로 지불하려는 보유 암호화폐의 잔고(예: 제1 클라이언트의 제1 암호화폐의 잔고, 제2 클라이언트의 제2 암호화폐의 잔고)에 대한 정보를 획득할 수 있다. 프로세서(110)는 획득한 암호화폐의 잔고 정보 및 트랜잭션의 매도량에 기초하여 트랜잭션의 유효성을 검증할 수 있다. 프로세서(110)는, 사용자 클라이언트(3a)가 발행한 트랜잭션(1000a)의 내용에 나타나는 사용자 클라이언트(3a)의 제1 암호화폐 보유량을, 획득된 잔고 정보 상의 사용자 클라이언트(3a)의 제1 암호화폐 보유량과 비교할 수 있다. 트랜잭션(1000a)의 제1 암호화폐 보유량이, 잔고 정보 상의 제1 암호화폐 보유량 범위 내이면, 해당 트랜잭션(1000a)이 유효한 트랜잭션이라고 판단될 수 있다. 트랜잭션(1000b)에 대해서도 마찬가지 방식으로 검증이 수행될 수 있다.
도 7은 본 개시의 일 실시예에 따른, CEX가 특정 사용자 클라이언트의 트랜잭션을 필터링하는 과정을 나타낸 도면이다. 일 실시예에서, CEX(1)는 이러한 스패밍을 막기 위하여 일종의 필터링 정책을 적용할 수 있으며, 필터링 정책은 다양한 방식으로 구현될 수 있다. 예를 들어, CEX(1)는 유효하지 않은 트랜잭션을 발송한 이력이 있는 사용자 클라이언트가 발송한 트랜잭션을 매칭에서 배제할 수 있다. 또한, 사용자 클라이언트의 식별자를 활용하여 스패밍을 하는 사용자 클라이언트를 식별하는 필터링 정책이 사용될 수도 있다. 본 개시에 따른 형태의 암호화폐 거래소에 중앙화된 트랜잭션 필터링 정책이 적용 가능하다는 점은, DEX만으로 구성된 암호화폐 거래소와는 다른 점이다.
일 실시예에서, CEX(1) 내지 전자 장치(10)는, 복수의 클라이언트 중 잔고 정보에 기초하여 보았을 때, 유효하지 않은 트랜잭션을 미리 정의된 빈도수(frequency) 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하고, 이 사용자 클라이언트로부터 수신된 트랜잭션을 매칭에서 배제할 수 있다. 사용자 클라이언트의 이러한 행위는 트랜잭션 스패밍 또는 오더 스패밍이라고 불릴 수 있다.
구체적으로, 전자 장치(10)의 프로세서(110)는, 복수의 사용자 클라이언트(3a - 3e)로부터 트랜잭션들을 수신할 수 있다. 전술한 바와 같이, 프로세서(110)는, 트랜잭션의 내용과 해당 사용자 클라이언트의 잔고 정보에 기초하여, 그 트랜잭션이 유효한지 여부를 판단할 수 있다.
이 때 프로세서(110)는, 유효하지 않은 트랜잭션을 계속해서 전송하여, 전자 장치(10)의 트랜잭션 처리에 부하를 일으키는 사용자 클라이언트를 선별할 수 있다. 전자 장치(10)는 미리 정의된 기준 빈도수(frequency) 값을 그 메모리(120)에 저장하고 있을 수 있다. 프로세서(110)는 어느 한 사용자 클라이언트(3e)가 유효하지 않은 트랜잭션을 소정의 빈도수 이상으로 전송하는 경우, 그 소정의 빈도수가 미리 정의된 기준 빈도수 값을 넘는지를 판단할 수 있다. 기준 빈도수를 넘는 빈도로 유효하지 않은 트랜잭션을 전송하는 사용자 클라이언트(3e)는 스패밍을 하는 사용자 클라이언트로 결정될 수 있다. 메모리(120)는 사용자 클라이언트(3e)의 클라이언트 식별자를 저장할 수 있다.
CEX(1)는, 이후 사용자 클라이언트(3e)로부터 전송되는 트랜잭션은 수신하지 않거나, 수신하더라도 그 트랜잭션을 트랜잭션 매칭 과정에서 배제할 수 있다. 이는 저장된 클라이언트 식별자와 어떤 트랜잭션을 보내온 사용자 클라이언트의 식별자를 대비함으로써 수행될 수 있다. 일 실시예에서, 트랜잭션은 그 트랜잭션을 보내온 사용자 클라이언트의 클라이언트 식별자 정보를 포함할 수 있다. 일 실시예에서, CEX(1)는 디지털 서명 값을 이용하여 스패밍을 하는 사용자 클라이언트로 결정된 사용자 클라이언트를 식별해낼 수도 있다. 일 실시예에서, CEX(1)는 암호화폐 거래소에 등록된 사용자 클라이언트 식별자를 이용하여, 전술한 클라이언트 식별자 대비를 수행할 수도 있다.
도 8은, 본 개시의 일 실시예에 따른, CEX의 오더 북 및 트랜잭션 매칭 과정을 나타낸 도면이다. 전술한 바와 같이, 오더 북은 트랜잭션 내지 주문을 나열한 기록으로서, 각 주체가 사거나 팔고자 하는, 즉 교환하고자 하는 디지털 자산(예: 암호화폐)의 가격과 수량을 리스팅한 것일 수 있다. CEX(1)는 트랜잭션들을 사용자 클라이언트(3)로부터 수신할 수 있고, 소정의 기준 하에 트랜잭션을 서로 매칭할 수 있다.
본 개시에서, 한 트랜잭션은 자신이 보유한 암호화폐의 매도할 수량 및 교환 대상인 암호화폐의 매수할 수량을 특정할 수 있다. 즉, 한 트랜잭션(예: 제1 트랜잭션)은 매도할 암호화폐(예: 제1 암호화폐)의 매도할 수량(예: 제1 매도량) 및 매수할 암호화폐(예: 제2 암호화폐)의 매수할 수량(예: 제1 매수량)을 특정할 수 있다. 또한, 한 트랜잭션(예: 제2 트랜잭션)은 매도할 암호화폐(예: 제2 암호화폐)의 매도할 수량(예: 제2 매도량) 및 매수할 암호화폐(예: 제1 암호화폐)의 매수할 수량(예: 제2 매수량)을 특정할 수 있다.
일 실시예에서, 트랜잭션은 유저 주소(user address), 암호화폐 A,암호화폐 B, 수량 A(amount A) 및/또는 수량 B(amount B) 정보를 포함할 수 있다. 유저 주소는 해당 트랜잭션을 발행한 사용자 클라이언트의 주소로서, 해당 사용자 클라이언트의 공개키 값일 수 있다. 암호화폐 A, 수량 A는 각각 보유하고 있는 암호화폐의 종류 및 수량을 나타내는 정보로서, 매도하고자 하는 암호화폐와 그 수량을 특정하기 위한 값일 수 있다. 암호화폐 B, 수량 B 는 각각 교환하고자 하는 암호화폐의 종류 및 수량을 나타내는 정보로서, 매수하고자 하는 암호화폐와 그 수량을 특정하기 위한 값일 수 있다. 즉, 트랜잭션은 수량 A의 암호화폐 A를 매도하여 수량 B의 암호화폐 B를 매수하기 위한, 즉 암호화폐 A를 암호화폐 B로 교환하기 위한 주문일 수 있다.
일 실시예에서, 트랜잭션은 유저 주소(user address), 사이드(side), 암호화폐 A,암호화폐 B, 수량 A(amount A) 및/또는 수량 B(amount B) 정보를 포함할 수 있다. 유저 주소는 전술한 바와 같다. 사이드 정보는 해당 트랜잭션이 매도(ask)를 위한 주문인지, 매수(bid)를 위한 주문인지 그 타입을 나타내는 정보일 수 있다. 사이드 정보가 해당 트랜잭션이 매수 주문임을 나타내는 경우, 해당 트랜잭션은 수량 A의 암호화폐 A를 대가로 수량 B의 암호화폐 B를 매수하는 주문일 수 있다. 또한, 사이드 정보가 해당 트랜잭션이 매도 주문임을 나타내는 경우, 해당 트랜잭션은 수량 A의 암호화폐 A를 대가로 수량 B의 암호화폐 B를 매도하는 주문일 수 있다.
일 실시예에서, 트랜잭션은 버전 정보, 식별자 및/또는 디지털 서명을 더 포함할 수 있다. 버전 정보는 해당 트랜잭션의 버전을 나타낼 수 있다. 식별자는 해당 트랜잭션의 식별자를 나타낼 수 있다. 디지털 서명은 해당 트랜잭션의 디지털 서명으로서, 해당 트랜잭션의 해쉬 값을 사용자 클라이언트의 개인키로 암호화한 것일 수 있다.
도시된 오더 북(8010)은 특정 암호화폐의 매도 또는 매수에 관한 트랜잭션(주문)들을 리스팅한 것일 수 있다. 오더 북(8010)은 그 특정 암호화폐를 매도하기 위한 매도 주문(8050)들과, 그 특정 암호화폐를 매수하기 위한 매수 주문(8060)들을 포함할 수 있다.
매수 주문(8060) 각각은 특정 암호화폐(예: 제2 암호화폐)를 매수하고자 하는 주문으로, 특정 암호화폐의 수량(열 8040) 및 매수 희망 가격(열 8030)을 가질 수 있다. 도시된 오더 북(8010)은 특정 암호화폐가 KRW(Korean Won)과 교환되는 것을 기준으로 작성되어 있다. 이에 따라 가격(열 8030)은 각각 특정 암호화폐의 기본 단위(1개)의 KRW에 따른 가격을 나타내고 있다. 예를 들어 매수 주문(8080)은, 특정 암호화폐 0.220개를, 암호화폐 1개당 19,988,000원에 매수하고자 하는 주문일 수 있다. 단, 전술한 바와 같이, 가격은 KRW 등의 실물 화폐를 기준으로 한 가격이 아니라, 다른 암호화폐를 기준으로 한 가격일 수 있다. 다른 암호화폐를 기준으로 한 가격으로 암호화폐를 교환(매수/매도)한다는 것은, 일정한 교환율로 해당 암호화폐를 다른 암호화폐와 교환한다는 것과 같은 의미일 수 있다. 예를 들어 가격(열 8030)은 다른 암호화폐(예: 제1 암호화폐)를 기준으로 한 가격, 즉 특정 암호화폐(예: 제2 암호화폐) 대비 다른 암호화폐(예: 제1 암호화폐)의 교환율로 대신 채워질 수 있다. 예를 들어 매수 주문(8080)의 가격(열 8030)은, 5 BTC/ETH(1개의 ETH 당 5개의 BTC로의 교환율)와 같이 나타내어질 수도 있다.
매도 주문(8050) 각각은 특정 암호화폐(예: 제2 암호화폐)를 매도하고자 하는 주문으로, 특정 암호화폐의 수량(열 8020) 및 매도 희망 가격(열 8030)을 가질 수 있다. 예를 들어 매도 주문(8050)은, 특정 암호화폐 1. 388개를, 암호화폐 1개당 19,997,000원에 매도하고자 하는 주문일 수 있다. 마찬가지로 실시예에 따라, 매도 희망 가격 역시 KRW이 아닌 다른 암호화폐와의 교환율을 기준으로 작성될 수도 있다. 즉, 매도 주문(8050)들은, 특정 암호화폐(예: 제2 암호화폐)를 KRW이 아닌, 다른 암호화폐(예: 제1 암호화폐)를 받고 팔고자 하는 주문들일 수 있다.
CEX(1)가 트랜잭션 간에 매칭을 하는 경우, 이는 트랜잭션(주문)의 교환율에 기초하여 수행될 수 있다. 일 실시예에서, CEX(1) 내지 전자 장치(10)는, 두 트랜잭션의 교환율이 대응되는 경우(즉, 소정의 조건을 만족하는 경우)에 두 트랜잭션을 매칭할 수 있다. 즉, 프로세서(110)는, 트랜잭션의 내용으로부터 해당 트랜잭션의 교환율을 도출하고, 이 교환율을 이용하여 트랜잭션들을 매칭할 수 있다. 이 때 각 트랜잭션의 교환율은 각 트랜잭션의 매도량과 매수량의 비로 계산될 수 있다.
예를 들어, 제1 클라이언트가 자신이 보유한 제1 암호화폐를 이용하여 제2 암호화폐를 매수하기 위해, 제1 트랜잭션을 발행할 수 있다. 제1 트랜잭션은 매수하고자 하는 제2 암호화폐의 수량인 제1 매수량을 특정할 수 있다. 또한, 제1 트랜잭션은 그에 대한 대가로 교환할(매도할) 제1 암호화폐의 수량인 제1 매도량을 특정할 수 있다. 이 경우 제1 트랜잭션의 교환율인 제1 교환율은 제1 매도량을 제1 매수량으로 나눈 값일 수 있다. 이 제1 교환율은 제2 암호화폐 1개 당 교환될 제1 암호화폐의 개수를 나타낼 수 있다. 또한, 제2 클라이어트는 자신이 보유한 제2 암호화폐를 이용하여 제1 암호화폐를 매수하기 위해, 제2 트랜잭션을 발행할 수 있다. 제2 트랜잭션은 매수하고자 하는 제1 암호화폐의 수량인 제2 매수량을 특정할 수 있다. 또한, 제2 트랜잭션은 그에 대한 대가로 교환할(매도할) 제2 암호화폐의 수량인 제2 매도량을 특정할 수 있다. 이 경우 제2 트랜잭션의 교환율인 제2 교환율은 제2 매도량을 제2 매수량으로 나눈 값일 수 있다. 이 제2 교환율은 제1 암호화폐 1개 당 교환될 제2 암호화폐의 개수를 나타낼 수 있다.
이 때, CEX(1) 내지 전자 장치(10)는, 제1 교환율과 제2 교환율이 대응되는지를 판단하여, 대응되는 경우, 제1 트랜잭션과 제2 트랜잭션을 서로 매칭할 수 있다. 구체적으로 전자 장치(10)의 프로세서는 제1 교환율의 역수가 제2 교환율과 일치하는 경우, 제1 트랜잭션과 제2 트랜잭션을 서로 매칭할 수 있다.
또한 일 실시예에서, CEX(1) 내지 전자 장치(10)는, 각 트랜잭션이 메이커 주문인지, 테이커 주문인지에 기초하여, 후술할 소정의 기준에 따라 두 트랜잭션을 매칭하고, 그 매칭된 트랜잭션에 따른 암호화폐의 교환이 수행될 교환율을 결정해 줄 수 있다.
본 개시에서, 메이커(maker) 주문은 암호화폐 교환을 위한 주문의 한 타입으로서, 즉시 체결되지는 않고 오더 북 상에 희망 거래 조건을 만드는 주문일 수 있다. 즉, 메이커 주문에 따른 트랜잭션이 오더 북에 기재될 수 있다. 메이커 매수/매도 주문은 매수/매도하고자 하는 암호화폐(예: 비트코인)의 가격과 수량을 오더 북에 등재할 수 있다. 여기서 가격은 다른 암호화폐를 기준으로 한 가격이거나, KRW(Korean Won) 등 실물 화폐(fiat money)를 기준으로 한 가격일 수 있다. 메이커 매수 주문은 보통 즉시 체결되는 매도 호가보다 낮은 가격으로 주문되고, 메이커 매도 주문은 보통 즉시 체결되는 매수 호가보다 높은 가격으로 주문될 수 있다.
본 개시에서, 테이커(taker) 주문은 암호화폐 교환을 위한 주문의 한 타입으로서, 오더 북에 등재된 주문을 가져와서 즉시 체결되는 주문일 수 있다. 테이커 매수/매도 주문은, 오더 북에 있는 주문들 중 매수/매도하고자 하는 주문을 선택하여 즉시 매수/매도를 성사할 수 있다. 테이커 매수 주문은 보통 오더 북에 등재된 매도 주문들보다 높은 가격으로 입력되고, 현재 호가와 가장 가까운 가격의 테이커 매수 주문부터 체결될 수 있다. 테이커 매도 주문은 보통 오더 북에 등재된 매수 주문들보다 낮은 가격으로 입력되고, 현재 호가와 가장 가까운 가격의 테이커 매도 주문부터 체결될 수 있다.
일 실시예에서, 트랜잭션은 해당 트랜잭션이 메이커(maker) 주문인 지 테이커(taker) 주문인지를 나타내는 정보를 더 포함할 수 있다. 전술한 바와 같이, 트랜잭션은 유저 주소(user address), 사이드 정보, 암호화폐 A,암호화폐 B, 수량 A(amount A) 및/또는 수량 B(amount B) 정보를 포함할 수 있다. 예를 들어, 제1 클라이언트의 제1 트랜잭션은, 그 사이드 정보가 해당 제1 트랜잭션이 매수(bid) 주문임을 나타낼 수 있고, 암호화폐 A 정보는 제1 암호화폐, 암호화폐 B 정보는 제2 암호화폐를 지시할 수 있다. 또한, 제2 클라이언트의 제2 트랜잭션은, 그 사이드 정보가 해당 제2 트랜잭션이 매도(ask) 주문임을 나타낼 수 있고, 암호화폐 A 정보는 제1 암호화폐, 암호화폐 B 정보는 제2 암호화폐를 지시할 수 있다.
이 때 제1 트랜잭션이 메이커 주문, 제2 트랜잭션이 테이커 주문인 경우, 제1 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값이 제2 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값보다 크거나 같은 경우, 두 트랜잭션은 서로 매칭될 수 있다. 이 때 제1 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값을 최종 교환율로 하여, 두 트랜잭션에 따른 암호화폐 교환이 수행될 수 있다.
이 때 제2 트랜잭션이 메이커 주문, 제1 트랜잭션이 테이커 주문인 경우, 제1 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값이 제2 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값보다 크거나 같은 경우, 두 트랜잭션은 서로 매칭될 수 있다. 이 때 제2 트랜잭션의 수량 A(amount A) / 수량 B(amount B) 값을 최종 교환율로 하여, 두 트랜잭션에 따른 암호화폐 교환이 수행될 수 있다.
일 실시예에서, 매칭된 두 트랜잭션에서 서로 교환하고자 하는 수량이 일치하는 경우, 두 트랜잭션의 내용 그대로에 따라 암호화폐 교환이 수행될 수 있다.
일 실시예에서, 프로세서(110)는 매칭된 두 트랜잭션에서 서로 교환하고자 하는 암호화폐 수량이 불일치하는 경우, 두 트랜잭션의 내용에 기초하여 교환하고자 하는 수량의 일부에 대해서만 암호화폐 교환을 수행할 수 있다(partial fill). 예를 들어, 전술한 여러 방법에 따라 교환율이 결정될 수 있고, 매칭된 두 트랜잭션 중 어느 하나의 트랜잭션이 나타내는 보유 암호화폐 량이, 결정된 교환율로 교환을 수행하였을 때, 모두 소진되지 못할 수 있다. 이 경우, 트랜잭션 내용에 비추어 가능한 양만이 교환되고, 전자 장치(10)의 프로세서(110)는 해당 트랜잭션에서 교환되지 못하고 남은 수량에 대한 정보를 메모리(120)에 저장할 수 있다.
구체적으로, 남은 수량에 대한 정보는 남은 수량을 가지는 트랜잭션의 식별자, 그 트랜잭션이 가지고 있던 사이드 정보, 암호화폐 A, 암호화폐 B 정보 및/또는 남은 수량(unfilledAmount) 정보를 포함할 수 있다. 남은 수량(unfilledAmount) 정보는, 상술한 소진되지 못한 남은 수량으로서 사이드 정보가 매수(bid)를 가리키는 경우 암호화폐 A의 남은 수량, 사이드 정보가 매도(ask)를 가리키는 경우 암호화폐 B의 남은 수량을 나타낼 수 있다. 일 실시예에서, 남은 수량에 대한 정보는 이 후 다른 오더와의 매칭에 사용될 수 있다.
도 9는 본 개시에 따른 전자 장치(10)에 의해 수행될 수 있는, 암호화폐 교환을 위한 트랜잭션을 매칭하는 방법의 일 실시예를 나타낸 도면이다. 도시된 흐름도에서 본 개시에 따른 방법 또는 알고리즘의 각 단계들이 순차적인 순서로 설명되었지만, 각 단계들은 순차적으로 수행되는 것 외에, 본 개시에 의해 임의로 조합될 수 있는 순서에 따라 수행될 수도 있다. 본 흐름도에 따른 설명은, 방법 또는 알고리즘에 변화 또는 수정을 가하는 것을 제외하지 않으며, 임의의 단계가 필수적이거나 바람직하다는 것을 의미하지 않는다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시에 따른 전자 장치(10)는, 암호화폐 교환을 위한 트랜잭션을 매칭함에 있어서, 본 개시의 다양한 실시예에 따른 트랜잭션을 매칭하는 방법을 수행할 수 있다. 본 개시의 일 실시예에 따른 트랜잭션을 매칭하는 방법은, 제1 트랜잭션을 수신하는 단계(S100), 제2 트랜잭션을 수신하는 단계(S200), 디지털 서명을 검증하는 단계(S300), 트랜잭션의 유효성을 검증하는 단계(S400), 제1 트랜잭션과 제2 트랜잭션을 매칭(matching)하는 단계(S500) 및/또는 매칭된 제1 트랜잭션 및 제2 트랜잭션을 블록 체인 네트워크 상의 노드로 전달하는 단계(S600)를 포함할 수 있다.
단계 S100에서, 전자 장치(10)의 통신 인터페이스(130)는 복수 개의 사용자 클라이언트(3) 중 제1 클라이언트로부터 제1 트랜잭션을 수신할 수 있다. 제1 트랜잭션은 제1 클라이언트의 제1 개인키로 디지털 서명되었을 수 있고, 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 트랜잭션일 수 있다.
단계 S200에서, 통신 인터페이스(130)는 복수 개의 사용자 클라이언트(3) 중 제2 클라이언트로부터 제2 트랜잭션을 수신할 수 있다. 제2 트랜잭션은 제2 클라이언트의 제2 개인키로 디지털 서명되었을 수 있고, 제2 암호화폐를 제2 교환율로 제1 암호화폐와 교환하기 위한 트랜잭션일 수 있다.
일 실시예에서, 전자 장치(10)의 통신 인터페이스(130)는 사용자 클라이언트(3)가 아닌, 적어도 하나 이상의 노드(2)로부터 트랜잭션을 수신할 수도 있다. 이 경우 노드(2)는 사용자 클라이언트(3)로부터 수신한 트랜잭션을 CEX(1)로 전달해줄 수 있다. 또는 일 실시예에서, 사용자 클라이언트(3)가 블록체인의 노드(2) 중 하나의 역할을 동시에 수행할 수도 있다.
단계 S300에서, 전자 장치(10)의 프로세서(110)는 전술한 제1 개인키에 대응되는 제1 공개키에 기초하여 제1 트랜잭션의 디지털 서명을 검증할 수 있다. 또한, 프로세서(110)는 전술한 제2 개인키에 대응되는 제2 공개키에 기초하여 제2 트랜잭션의 디지털 서명을 검증할 수 있다.
단계 S400에서, 프로세서(110)는 전술한 복수의 노드(2) 중 적어도 하나의 노드에 저장된 제1 클라이언트의 제1 암호화폐에 대한 잔고 정보에 기초하여 제1 트랜잭션의 유효성을 검증할 수 있다. 또한 프로세서(110)는 적어도 하나의 노드에 저장된 제2 클라이언트의 제2 암호화폐에 대한 잔고 정보에 기초하여 제2 트랜잭션의 유효성을 검증할 수 있다.
단계 S500에서, 프로세서(110)는 제1 트랜잭션의 제1 교환율과 제2 트랜잭션의 제2 교환율에 기초하여 제1 트랜잭션과 제2 트랜잭션을 매칭할 수 있다.
단계 S600에서, 프로세서(110)는 매칭된 제1 트랜잭션 및 제2 트랜잭션을 블록 체인 네트워크(4) 상의 복수의 노드(2) 중 적어도 어느 하나의 노드로 전달할 수 있다.
일 실시예에서, 적어도 하나의 노드로 전달된 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 블록 체인 네트워크(4) 상의 복수의 노드(2) 간에 공유되어, 블록 체인의 한 블록에 포함될 수 있다. 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 복수의 노드(2) 각각에 저장된 제1 클라이언트의 제1 암호화폐 및 제2 암호화폐에 대한 잔고 정보와, 제2 클라이언트의 제1 암호화폐 및 제2 암호화폐에 대한 잔고 정보가 각각 갱신될 수 있다.
일 실시예에서, 디지털 서명을 검증하는 단계(S300)는, 프로세서(110)가 제1 트랜잭션의 디지털 서명을 제1 공개키로 복호화하고, 복호화된 제1 트랜잭션의 디지털 서명 및 제1 트랜잭션을 이용하여 제1 트랜잭션이 제1 클라이언트로부터 유래한 것인지 여부를 검증하는 단계를 더 포함할 수 있다. 또한, 디지털 서명을 검증하는 단계(S300)는, 프로세서(110)가 제2 트랜잭션의 디지털 서명을 제2 공개키로 복호화하고, 복호화된 제2 트랜잭션의 디지털 서명 및 제2 트랜잭션을 이용하여 제2 트랜잭션이 제2 클라이언트로부터 유래한 것인지 여부를 검증하는 단계를 더 포함할 수 있다.
일 실시예에서, 제1 트랜잭션은 제1 암호화폐의 매도할 수량인 제1 매도량 및 제2 암호화폐의 매수할 수량인 제1 매수량을 특정할 수 있고, 제2 트랜잭션은 제2 암호화폐의 매도할 수량인 제2 매도량 및 제1 암호화폐의 매수할 수량인 제2 매수량을 특정할 수 있다.
일 실시예에서, 트랜잭션의 유효성을 검증하는 단계(S400)는, 프로세서(110)가 복수의 노드(2) 중 적어도 하나의 노드로부터 제1 클라이언트의 제1 암호화폐의 잔고 정보 및 제2 클라이언트의 제2 암호화폐의 잔고 정보를 획득하는 단계를 포함할 수 있다. 또한, 트랜잭션의 유효성을 검증하는 단계(S400)는, 프로세서(110)가 제1 클라이언트의 제1 암호화폐의 잔고 정보 및 제1 트랜잭션의 제1 매도량을 대비하여, 제1 트랜잭션의 유효성을 검증하는 단계를 더 포함할 수 있다. 또한, 트랜잭션의 유효성을 검증하는 단계(S400)는, 제2 클라이언트의 제2 암호화폐의 잔고 정보 및 제2 트랜잭션의 제2 매도량을 대비하여, 제2 트랜잭션의 유효성을 검증하는 단계를 더 포함할 수 있다.
일 실시예에서, 트랜잭션을 매칭하는 방법은, 프로세서(110)가 복수 개의 사용자 클라이언트(3) 중, 획득된 잔고 정보에 기초하여 유효하지 않은 트랜잭션을 미리 정의된 빈도수 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하는 단계를 포함할 수 있다. 또한, 트랜잭션을 매칭하는 방법은, 프로세서(110)가 선별된 사용자 클라이언트의 식별자를 저장하는 단계 및 저장된 식별자에 대응하는 식별자를 가지는 사용자 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제하는 단계를 더 포함할 수 있다.
일 실시예에서, 제1 트랜잭션과 제2 트랜잭션을 매칭하는 단계(S500)는, 프로세서(110)가 제1 트랜잭션의 제1 매도량 및 제1 매수량에 기초하여 제1 교환율을 도출하는 단계 및 제2 트랜잭션의 제2 매도량 및 제2 매수량에 기초하여 제2 교환율을 도출하는 단계를 포함할 수 있다. 또한 1 트랜잭션과 제2 트랜잭션을 매칭하는 단계(S500)는, 프로세서(110)가 제1 교환율과 제2 교환율이 대응되는 경우(소정의 기준을 만족하는 경우) 제1 트랜잭션과 제2 트랜잭션을 매칭하는 단계를 포함할 수 있다.
일 실시예에서, 제1 트랜잭션은 제1 트랜잭션의 만료시간에 관한 정보를 더 포함할 수 있다. 또한 제2 트랜잭션은 제2 트랜잭션의 만료시간에 관한 정보를 더 포함할 수 있다.
일 실시예에서, 트랜잭션의 유효성을 검증하는 단계(S400)는, 프로세서(110)가 제1 트랜잭션의 만료시간에 관한 정보에 기초하여, 제1 트랜잭션이 유효한지 여부를 검증하는 단계를 더 포함할 수 있다. 또한, 트랜잭션의 유효성을 검증하는 단계(S400)는, 프로세서(110)가 제2 트랜잭션의 만료시간에 관한 정보에 기초하여, 제2 트랜잭션이 유효한지 여부를 검증하는 단계를 더 포함할 수 있다.
일 실시예에서, 갱신된 잔고 정보에 기초하여, 제1 암호화폐와 제2 암호화폐는 제1 공개키로 나타내어지는 제1 클라이언트의 제1 주소로 인출될 수 있다. 또한, 갱신된 잔고 정보에 기초하여, 제1 암호화폐와 제2 암호화폐는 제2 공개키로 나타내어지는 제2 클라이언트의 제2 주소로 인출될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 저장매체(machine-readable storage medium)에 소프트웨어로 구현될 수 있다. 소프트웨어는 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령어(예: 코드 또는 코드 세그먼트)를 포함하는 프로그램일 수 있다. 기기는 저장 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 전자 장치(10)일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령어를 실행하여, 기기의 구성요소들이 해당 명령어에 해당하는 기능을 수행하게 할 수 있다. 일 실시예에서, 프로세서는 본 개시의 실시예들에 따른 프로세서(110)일 수 있다. 저장 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 저장 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등을 포함할 수 있다. 일 실시예에서, 저장 매체는 메모리(120)일 수 있다. 일 실시예에서, 저장매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 저장 매체는 비일시적(non-transitory) 저장매체일 수 있다. 비일시적 저장매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다.

Claims (20)

  1. 복수 개의 사용자 클라이언트와 통신을 수행하고, 블록 체인 기반의 블록 체인 네트워크 상에서 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node)와 통신을 수행하는 통신 인터페이스;
    상기 복수 개의 사용자 클라이언트로부터 수신되고, 복수 개의 암호화폐 중 적어도 두 개의 암호화폐를 소정의 교환율로 교환하기 위한 트랜잭션(transaction)들을 저장하는 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 통신 가능하게 연결된 프로세서를 포함하고,
    상기 프로세서는,
    상기 통신 인터페이스를 통해, 상기 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션을 수신하고,
    상기 통신 인터페이스를 통해, 상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하고,
    상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하고,
    상기 하나 이상의 노드 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하고,
    상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하고,
    상기 통신 인터페이스를 제어하여, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달하는, 전자 장치.
  2. 제1항에 있어서,
    상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고,
    상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신되는, 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 제1 트랜잭션의 디지털 서명을 상기 제1 공개키로 복호화하고, 상기 복호화된 상기 제1 트랜잭션의 디지털 서명 및 상기 제1 트랜잭션을 이용하여 상기 제1 트랜잭션이 상기 제1 클라이언트로부터 유래한 것인지 여부를 검증하고,
    상기 제2 트랜잭션의 디지털 서명을 상기 제2 공개키로 복호화하고, 상기 복호화된 상기 제2 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션을 이용하여 상기 제2 트랜잭션이 상기 제2 클라이언트로부터 유래한 것인지 여부를 검증하는, 전자 장치.
  4. 제1항에 있어서,
    상기 제1 트랜잭션은 상기 제1 암호화폐의 매도할 수량인 제1 매도량 및 상기 제2 암호화폐의 매수할 수량인 제1 매수량을 특정하고,
    상기 제2 트랜잭션은 상기 제2 암호화폐의 매도할 수량인 제2 매도량 및 상기 제1 암호화폐의 매수할 수량인 제2 매수량을 특정하는, 전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 통신 인터페이스를 통해, 상기 하나 이상의 노드 중 적어도 하나의 노드로부터 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보를 획득하고,
    상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제1 트랜잭션의 상기 제1 매도량에 기초하여, 상기 제1 트랜잭션의 유효성을 검증하고,
    상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보 및 상기 제2 트랜잭션의 상기 제2 매도량에 기초하여, 상기 제2 트랜잭션의 유효성을 검증하는, 전자 장치.
  6. 제5항에 있어서,
    상기 프로세서는,
    상기 복수 개의 사용자 클라이언트 중, 상기 잔고 정보에 기초하여 유효하지 않은 트랜잭션을 미리 정의된 빈도수(frequency) 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하고,
    상기 선별된 사용자 클라이언트의 식별자를 상기 메모리에 저장하고,
    상기 저장된 식별자에 대응하는 식별자를 가지는 사용자 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제하는, 전자 장치.
  7. 제4항에 있어서,
    상기 프로세서는,
    상기 제1 트랜잭션의 상기 제1 매도량 및 상기 제1 매수량에 기초하여 상기 제1 교환율을 도출하고,
    상기 제2 트랜잭션의 상기 제2 매도량 및 상기 제2 매수량에 기초하여 상기 제2 교환율을 도출하고,
    상기 제1 교환율과 상기 제2 교환율이 대응되는 경우 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭하는, 전자 장치.
  8. 제4항에 있어서,
    상기 제1 트랜잭션 및 상기 제2 트랜잭션은 각각 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 만료시간에 관한 정보를 더 포함하고,
    상기 프로세서는 상기 만료시간에 관한 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는, 전자 장치.
  9. 제2항에 있어서,
    상기 갱신된 잔고 정보에 기초하여, 상기 제1 암호화폐와 상기 제2 암호화폐는 상기 제1 공개키로 나타나는 상기 제1 클라이언트의 제1 주소 또는 상기 제2 공개키로 나타나는 상기 제2 클라이언트의 제2 주소로 인출되는, 전자 장치.
  10. 통신 인터페이스, 메모리 및 프로세서를 포함하는 전자 장치에서 수행되는 방법에 있어서,
    상기 프로세서가, 상기 통신 인터페이스를 통해, 복수 개의 사용자 클라이언트 중 제1 클라이언트로부터, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션(transaction)을 수신하는 단계;
    상기 프로세서가, 상기 통신 인터페이스를 통해, 상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하는 단계;
    상기 프로세서가, 상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계;
    상기 프로세서가, 블록 체인 기반의 블록 체인 네트워크 상에서, 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node) 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계;
    상기 프로세서가, 상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하는 단계; 및
    상기 프로세서가, 상기 통신 인터페이스를 제어하여, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고,
    상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신되는, 방법.
  12. 제10항에 있어서, 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계는:
    상기 프로세서가, 상기 제1 트랜잭션의 디지털 서명을 상기 제1 공개키로 복호화하고, 상기 복호화된 상기 제1 트랜잭션의 디지털 서명 및 상기 제1 트랜잭션을 이용하여 상기 제1 트랜잭션이 상기 제1 클라이언트로부터 유래한 것인지 여부를 검증하는 단계; 및
    상기 프로세서가, 상기 제2 트랜잭션의 디지털 서명을 상기 제2 공개키로 복호화하고, 상기 복호화된 상기 제2 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션을 이용하여 상기 제2 트랜잭션이 상기 제2 클라이언트로부터 유래한 것인지 여부를 검증하는 단계를 포함하는, 방법.
  13. 제10항에 있어서,
    상기 제1 트랜잭션은 상기 제1 암호화폐의 매도할 수량인 제1 매도량 및 상기 제2 암호화폐의 매수할 수량인 제1 매수량을 특정하고,
    상기 제2 트랜잭션은 상기 제2 암호화폐의 매도할 수량인 제2 매도량 및 상기 제1 암호화폐의 매수할 수량인 제2 매수량을 특정하는, 방법.
  14. 제13항에 있어서, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계는:
    상기 프로세서가, 상기 통신 인터페이스를 통해, 상기 하나 이상의 노드 중 적어도 하나의 노드로부터 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보를 획득하는 단계;
    상기 프로세서가, 상기 제1 클라이언트의 상기 제1 암호화폐의 잔고 정보 및 상기 제1 트랜잭션의 상기 제1 매도량에 기초하여, 상기 제1 트랜잭션의 유효성을 검증하는 단계; 및
    상기 프로세서가, 상기 제2 클라이언트의 상기 제2 암호화폐의 잔고 정보 및 상기 제2 트랜잭션의 상기 제2 매도량에 기초하여, 상기 제2 트랜잭션의 유효성을 검증하는 단계를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 프로세서가, 상기 복수 개의 사용자 클라이언트 중, 상기 잔고 정보에 기초하여 유효하지 않은 트랜잭션을 미리 정의된 빈도수(frequency) 이상의 빈도수로 발송하는 사용자 클라이언트를 선별하는 단계;
    상기 프로세서가, 상기 선별된 사용자 클라이언트의 식별자를 상기 메모리에 저장하는 단계; 및
    상기 프로세서가, 상기 저장된 식별자에 대응하는 식별자를 가지는 사용자 클라이언트로부터 수신되는 트랜잭션을 다른 트랜잭션과의 매칭에서 배제하는 단계를 더 포함하는, 방법.
  16. 제13항에 있어서, 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭하는 단계는:
    상기 프로세서가, 상기 제1 트랜잭션의 상기 제1 매도량 및 상기 제1 매수량에 기초하여 상기 제1 교환율을 도출하는 단계;
    상기 프로세서가, 상기 제2 트랜잭션의 상기 제2 매도량 및 상기 제2 매수량에 기초하여 상기 제2 교환율을 도출하는 단계; 및
    상기 프로세서가, 상기 제1 교환율과 상기 제2 교환율이 대응되는 경우 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭하는 단계를 포함하는, 방법.
  17. 제13항에 있어서,
    상기 제1 트랜잭션 및 상기 제2 트랜잭션은 각각 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 만료시간에 관한 정보를 더 포함하고,
    상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계는:
    상기 프로세서가, 상기 만료시간에 관한 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계를 포함하는, 방법.
  18. 제11항에 있어서,
    상기 갱신된 잔고 정보에 기초하여, 상기 제1 암호화폐와 상기 제2 암호화폐는 상기 제1 공개키로 나타나는 상기 제1 클라이언트의 제1 주소 또는 상기 제2 공개키로 나타나는 상기 제2 클라이언트의 제2 주소로 인출되는, 방법.
  19. 컴퓨터 상에서 수행되기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
    상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    복수 개의 사용자 클라이언트 중 제1 클라이언트로부터 수신된, 상기 제1 클라이언트의 제1 개인키로 디지털 서명되고 제1 암호화폐를 제1 교환율로 제2 암호화폐와 교환하기 위한 제1 트랜잭션(transaction)을 획득하는 단계;
    상기 복수 개의 사용자 클라이언트 중 제2 클라이언트로부터 수신된, 상기 제2 클라이언트의 제2 개인키로 디지털 서명되고 상기 제2 암호화폐를 제2 교환율로 상기 제1 암호화폐와 교환하기 위한 제2 트랜잭션을 수신하는 단계;
    상기 제1 개인키에 대응되는 제1 공개키 및 상기 제2 개인키에 대응되는 제2 공개키에 기초하여 각각 상기 제1 트랜잭션의 디지털 서명 및 상기 제2 트랜잭션의 디지털 서명을 검증하는 단계;
    블록 체인 기반의 블록 체인 네트워크 상에서, 암호화폐 교환을 위한 스마트 컨트랙트(smart contract)를 실행하는 하나 이상의 노드(node) 중 적어도 하나에 저장된 상기 제1 클라이언트와 상기 제2 클라이언트의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 잔고(balance) 정보에 기초하여, 상기 제1 트랜잭션 및 상기 제2 트랜잭션의 유효성을 검증하는 단계;
    상기 제1 트랜잭션의 상기 제1 교환율과 상기 제2 트랜잭션의 상기 제2 교환율에 기초하여 상기 제1 트랜잭션과 상기 제2 트랜잭션을 매칭(matching)하는 단계; 및
    통신 인터페이스를 제어하여, 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션을 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 중 적어도 하나의 노드로 전달하는 단계
    를 수행하도록 하는 실행 가능한 명령을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  20. 제19항에 있어서,
    상기 적어도 하나의 노드로 전달된 상기 매칭된 제1 트랜잭션 및 제2 트랜잭션은, 상기 블록 체인 네트워크 상의 상기 하나 이상의 노드 간에 공유되어, 상기 블록 체인의 한 블록에 포함되고,
    상기 매칭된 제1 트랜잭션 및 제2 트랜잭션에 기초하여, 상기 제1 클라이언트와 상기 제2 클라이언트 각각의 상기 제1 암호화폐 및 상기 제2 암호화폐에 대한 상기 잔고 정보가 갱신되는, 컴퓨터 판독 가능한 기록 매체.
KR1020180089983A 2018-08-01 2018-08-01 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법 KR101979254B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180089983A KR101979254B1 (ko) 2018-08-01 2018-08-01 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법
PCT/KR2019/005561 WO2020027408A1 (ko) 2018-08-01 2019-05-14 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180089983A KR101979254B1 (ko) 2018-08-01 2018-08-01 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020190054796A Division KR102123487B1 (ko) 2019-05-10 2019-05-10 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101979254B1 true KR101979254B1 (ko) 2019-05-17

Family

ID=66678244

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180089983A KR101979254B1 (ko) 2018-08-01 2018-08-01 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법

Country Status (2)

Country Link
KR (1) KR101979254B1 (ko)
WO (1) WO2020027408A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210102142A (ko) * 2019-08-26 2021-08-19 주식회사 이멜벤처스 블록체인 네트워크를 이용한 노래방 어플리케이션에서의 포인트 관리 방법 및 시스템
WO2022045691A1 (en) * 2020-08-24 2022-03-03 Dunamu Inc. Method for mediating virtual asset transmission
KR20220025634A (ko) * 2020-08-24 2022-03-03 두나무 주식회사 가상자산 송신 중개 방법
KR102666551B1 (ko) 2020-08-24 2024-05-17 두나무 주식회사 가상자산 송신 중개 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109472696B (zh) * 2018-09-29 2021-07-23 腾讯科技(深圳)有限公司 资产交易方法、装置、存储介质及计算机设备
EP4273781A1 (en) * 2022-05-02 2023-11-08 Challenger Deep SAS Generation of live market data for decentralized systems from transaction data extracted from a blockchain

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101628624B1 (ko) 2015-06-01 2016-06-09 주식회사 코인플러그 비트코인을 기반으로 하는 이종국가간 송금시스템 및 방법
KR101876674B1 (ko) * 2017-04-18 2018-07-10 주식회사 케이뱅크은행 블록 체인을 이용한 공동 계좌 관리 방법 및 이를 실행하는 시스템
JP2018518758A (ja) * 2015-05-21 2018-07-12 マスターカード インターナシヨナル インコーポレーテツド ブロックチェーンを基礎としたトランザクションのために交換処理とイシュア処理とを統合する方法及びシステム
KR101878869B1 (ko) 2017-11-17 2018-08-16 주식회사 미탭스플러스 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280792B2 (en) * 2012-10-12 2016-03-08 Empire Technology Development Llc Notarization based on currency transactions
JP6277557B2 (ja) * 2013-07-25 2018-02-14 パナソニックIpマネジメント株式会社 電気機器の管理方法、管理システム、操作端末、及びプログラム
JP6247193B2 (ja) * 2014-10-10 2017-12-13 山下 健一 広告閲覧促進システム、情報処理方法及びプログラム
KR101964254B1 (ko) * 2017-01-03 2019-04-01 아주대학교산학협력단 블록체인과 dht를 이용한 p2p 거래 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018518758A (ja) * 2015-05-21 2018-07-12 マスターカード インターナシヨナル インコーポレーテツド ブロックチェーンを基礎としたトランザクションのために交換処理とイシュア処理とを統合する方法及びシステム
KR101628624B1 (ko) 2015-06-01 2016-06-09 주식회사 코인플러그 비트코인을 기반으로 하는 이종국가간 송금시스템 및 방법
KR101876674B1 (ko) * 2017-04-18 2018-07-10 주식회사 케이뱅크은행 블록 체인을 이용한 공동 계좌 관리 방법 및 이를 실행하는 시스템
KR101878869B1 (ko) 2017-11-17 2018-08-16 주식회사 미탭스플러스 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210102142A (ko) * 2019-08-26 2021-08-19 주식회사 이멜벤처스 블록체인 네트워크를 이용한 노래방 어플리케이션에서의 포인트 관리 방법 및 시스템
KR102485364B1 (ko) 2019-08-26 2023-01-05 주식회사 이멜벤처스 블록체인 네트워크를 이용한 노래방 어플리케이션에서의 포인트 관리 방법 및 시스템
WO2022045691A1 (en) * 2020-08-24 2022-03-03 Dunamu Inc. Method for mediating virtual asset transmission
KR20220025634A (ko) * 2020-08-24 2022-03-03 두나무 주식회사 가상자산 송신 중개 방법
KR102478133B1 (ko) * 2020-08-24 2022-12-16 두나무 주식회사 가상자산 송신 중개 방법
KR20230008655A (ko) * 2020-08-24 2023-01-16 두나무 주식회사 가상자산 송신 중개 방법
KR102600604B1 (ko) 2020-08-24 2023-11-10 두나무 주식회사 가상자산 송신 중개 방법
KR102666551B1 (ko) 2020-08-24 2024-05-17 두나무 주식회사 가상자산 송신 중개 방법

Also Published As

Publication number Publication date
WO2020027408A1 (ko) 2020-02-06

Similar Documents

Publication Publication Date Title
KR101979254B1 (ko) 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법
KR102322646B1 (ko) 블록체인 내의 스마트 계약에 기초하여 거래 활동의 민감한 데이터를 보호하기 위한 방법 및 디바이스
US10552829B2 (en) Obfuscation of intent in transactions using cryptographic techniques
JP6364132B2 (ja) ブロックチェーン取引記録のシステムおよび方法
US9530126B2 (en) Secure mobile payment processing
US20170124556A1 (en) Event synchronization systems and methods
US20150081566A1 (en) Direct digital cash system and method
KR20170056332A (ko) 비트코인을 이용한 오프라인 지불결제 시스템 및 그 방법
KR20160050876A (ko) 스마트 카드에 저장된 공개키와 개인키를 이용한 비트코인 거래방법
US11133936B1 (en) Methods and systems for introducing self-contained intent functionality into decentralized computer networks
US10430789B1 (en) System, method and computer program product for secure retail transactions (SRT)
US20210097530A1 (en) Block chain trading system and block chain trading method
JP6352463B1 (ja) 仮想通貨管理装置、仮想通貨管理方法、およびプログラム
US20220052921A1 (en) Methods and systems for introducing self-contained intent functionality into decentralized computer networks
US20230108366A1 (en) Systems for encryption using blockchain distributed ledgers
CN107852333A (zh) 用于可公开验证的授权的系统和方法
CN117616410A (zh) 计算机分片环境中的多方计算
US20230298001A1 (en) Non-fungible token (nft) purchase and transfer system
KR20190135830A (ko) 전자 코드를 이용하여 블록체인 기반의 서비스를 제공하는 시스템 및 방법
KR102123487B1 (ko) 암호화폐 교환을 위한 트랜잭션을 매칭하는 전자 장치 및 방법
JP7156889B2 (ja) 決済処理方法
JP2018022346A (ja) データの取引システム及びプログラム
KR20190114292A (ko) 암호화폐 거래소내 실거래 전자지갑 기반의 레디 펜딩 거래 시스템 및 그 거래 방법
US20210004791A1 (en) Guaranteeing server and method for transaction on blockchain
US10972349B1 (en) Cryptographic verification of data inputs for executables on a network

Legal Events

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