KR101837166B1 - 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 - Google Patents

블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 Download PDF

Info

Publication number
KR101837166B1
KR101837166B1 KR1020160140170A KR20160140170A KR101837166B1 KR 101837166 B1 KR101837166 B1 KR 101837166B1 KR 1020160140170 A KR1020160140170 A KR 1020160140170A KR 20160140170 A KR20160140170 A KR 20160140170A KR 101837166 B1 KR101837166 B1 KR 101837166B1
Authority
KR
South Korea
Prior art keywords
hash value
call
transaction
payment
value
Prior art date
Application number
KR1020160140170A
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 KR1020160140170A priority Critical patent/KR101837166B1/ko
Priority to PCT/KR2017/011939 priority patent/WO2018080207A1/ko
Priority to CA3039899A priority patent/CA3039899C/en
Application granted granted Critical
Publication of KR101837166B1 publication Critical patent/KR101837166B1/ko
Priority to US16/380,627 priority patent/US11037111B2/en

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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance
    • 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
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • 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
    • 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
    • G06Q20/3676Balancing accounts
    • 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
    • G06Q20/3678Payment 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 e-cash details, e.g. blinded, divisible or detecting double spending
    • 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/3827Use of message hashing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Abstract

본 발명은 통화를 발행하는 방법에 있어서, (a) 통화 발행자로부터의 상기 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키 및 (v) 상기 통화 발행자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션이 획득되면, 서버는, 상기 통화 발행 트랜잭션 및 상기 통화 발행자의 유효 여부를 확인하여 유효일 경우, (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 발행 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 상기 통화 발행자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 발행 트랜잭션에 포함된 상기 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 단계; 및 (b) 소정의 조건이 만족되면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 머클 루트로 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 머클 루트인 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계; 를 포함하는 것을 특징으로 하는 방법이 제공된다.

Description

블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버{METHOD FOR ISSUING AND PAYING MONEY USING UPDATED STATUS OF BALANCE DATABASE BY RESPECTIVE BLOCKS IN BLOCKCHAIN, AND SERVER USING THE SAME}
블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버에 관한 것으로, 보다 상세하게는, (a) 통화 발행자로부터의 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키 및 (v) 통화 발행자의 프라이빗 키로 (i), (ii), (iii), (iv)를 서명한 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션이 획득되면, 통화 발행 트랜잭션 및 통화 발행자의 유효 여부를 확인하여 유효일 경우, 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 통화 발행 트랜잭션의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 통화 발행자 및 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 통화 발행 트랜잭션에 포함된 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하며, 소정의 조건이 만족되면, 통화 발행 트랜잭션에 해쉬함수를 적용하여 생성한 특정 해쉬값 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 중 퍼블릭 블록체인의 하나의 블록에서의 통화와 관련한 모든 프라이빗 트랜잭션에 의해 변화되는 발란스 데이터베이스의 발란스 총 변화량에 해쉬함수를 적용하여 생성한 특정 이웃 해쉬값을 포함하는 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 머클 루트로 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 머클 루트의 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 방법과 이를 이용하는 서버에 관한 것이며, 더 나아가 특정 사용자가 통화를 지급 결제하는 방법 및 이를 이용하는 서버에 관한 것이다.
일반적으로 통화는 유통 수단이나 지불 수단으로서 기능하는 교환 수단으로, 국가가 공식적으로 지정하여 쓰는 돈, 다시 말해 지불 및 상업적 유통 단위를 뜻한다. 또한, 특정 단체 내에서만 사용되는 특정 교환 수단도 하나의 통화일 수 있을 것이다.
그리고, 국가 단위에서 볼 경우, 중앙은행은 통화를 발행하거나 관리하며, 시중은행들은 중앙은행에서 발행된 통화를 사용하게 된다.
이때, 시중은행에서의 은행간 자금 결제는 중앙은행의 결제 시스템을 통해 이루어지며, 실제 현금의 이동을 수반하지는 않는다. 즉, 중앙은행에 개설되어 있는 각 은행들의 계정에서 은행별 결제금액을 입금 또는 출금하는 방식으로 결제가 이루어지고 있다.
그러나, 이러한 결제 시스템에서는 은행의 업무 종료 이후, 중앙은행과 시중은행들은 하루 동안 발생된 자금의 지급 결제에 대하여 매일 정산하여야 하는 불편함이 있다.
또한, 정산시 방대한 지급 결제에 대한 자료를 확인하여야 하는 어려움이 있으며, 정산 결과에 오류가 있을 경우 이를 확인하는데 많은 시간이 소요되는 등의 문제점이 있다.
또한, 결제 시스템의 해킹이나 시중은행의 해킹에 의한 기록 데이터의 복사 또는 위/변조가 발행할 경우 이를 확인하는 데 많은 시간과 노력이 소모되는 등의 문제점이 있다.
본 발명은 상술한 문제점들을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 가상 화폐의 블록체인에 통화의 발행 또는 지급 결제에 대한 정보를 등록하여 복사 또는 위/변조가 불가능하도록 하는 방법 및 서버를 제공하는 것을 다른 목적으로 한다.
또한, 본 발명은 통화 발행이나 통화의 지급 결제 등의 정보를 해쉬함수와 암호화 기술을 이용하여 보안이 보장되고 위/변조가 불가능하도록 하는 방법 및 서버를 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 가상 화폐의 블록체인에 통화의 발행이나 지급 결제에 대한 정보를 등록함으로써 통화의 중복 지급 등의 문제점을 미연에 방지할 수 있도록 하는 방법 및 서버를 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 중앙은행과 시중은행 간의 정산 절차를 진행하지 않아도 항상 정산된 최신의 정산 정보를 확인할 수 있도록 하는 방법 및 서버를 제공하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 실시예에 따르면, 통화를 발행하는 방법에 있어서, (a) 통화 발행자로부터의 상기 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키 및 (v) 상기 통화 발행자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션이 획득되면, 서버는, 상기 통화 발행 트랜잭션 및 상기 통화 발행자의 유효 여부를 확인하여 유효일 경우, (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 발행 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 상기 통화 발행자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 발행 트랜잭션에 포함된 상기 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 단계; 및 (b) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션에 해쉬함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 퍼블릭 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 프라이빗 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 머클 루트로 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 머클 루트인 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계; 를 포함하는 방법이 제공된다.
또한, 본 발명의 일 실시예에 따르면, 통화의 지급을 결제하는 방법에 있어서, (a) 특정 사용자로부터 상기 통화의 지급 결제를 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 상기 특정 사용자의 퍼블릭 키 및 (v) 상기 특정 사용자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 특정 사용자의 서명값을 포함하는 통화 지급 트랜잭션이 획득되면, 서버는, 상기 통화 지급 트랜잭션의 상기 특정 사용자의 발란스를 참조하여 상기 통화 지급 트랜잭션의 지급 결제 방식을 확인하는 단계; (b) (i) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 이상이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "즉시 지급 결제"로 확인되면, 상기 서버는, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디를 상기 특정 사용자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션에 포함된 상기 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하거나, (ii) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 미만이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "지연 지급 결제"로 확인되면, 상기 서버는, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 저장부에 저장한 상태에서, 적어도 하나 이상의 타 사용자에 의해 지급 결제되며 상기 특정 사용자를 수취인으로 하는 적어도 하나 이상의 통화 수취 트랜잭션이 소정의 상계 처리 조건을 만족하면, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션들을 상계 처리하고, 상계 처리된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디와 통화 수취 프라이빗 트랜잭션 아이디를 상기 특정 사용자, 상기 특정 수신자 및 상기 타 사용자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 포함된 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 단계; 및 (c) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족하면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 (1) 상기 통화 지급 트랜잭션에 해쉬함수를 적용하여 생성한 해쉬값 또는 (2) 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 각각 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 퍼블릭 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 프라이빗 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 (1) 통화 지급 퍼블릭 트랜잭션 아이디 또는 (2) 상기 통화 지급 퍼블릭 트랜잭션 아이디와 상기 통화 수취 트랜잭션에 대응하는 통화 수취 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계; 를 포함하는 방법이 제공된다.
또한, 본 발명의 일 실시예에 따르면, 통화를 발행하는 서버에 있어서, 통화 발행자로부터의 상기 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키 및 (v) 상기 통화 발행자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션을 획득하는 통신부; 및 상기 획득된 상기 통화 발행 트랜잭션 및 상기 통화 발행자의 유효 여부를 확인하여 유효일 경우, (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 발행 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 상기 통화 발행자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 발행 트랜잭션에 포함된 상기 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 프로세스, 및 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은 (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 프로세스를 수행하는 프로세서; 를 포함하는 것을 특징으로 하는 서버가 제공된다.
또한, 본 발명의 일 실시예에 따르면, 통화의 지급을 결제하는 서버에 있어서, 특정 사용자로부터 상기 통화의 지급 결제를 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 상기 특정 사용자의 퍼블릭 키 및 (v) 상기 특정 사용자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 특정 사용자의 서명값을 포함하는 통화 지급 트랜잭션을 획득하는 통신부; 및 상기 획득된 상기 통화 지급 트랜잭션의 상기 특정 사용자의 발란스를 참조로 하여 상기 통화 지급 트랜잭션의 지급 결제 방식을 확인하고, (i) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 이상이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "즉시 지급 결제"로 확인되면, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디를 상기 특정 사용자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션에 포함된 상기 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하거나, (ii) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 미만이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "지연 지급 결제"로 확인되면, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 저장부에 저장한 상태에서, 적어도 하나 이상의 타 사용자에 의해 지급 결제되며 상기 특정 사용자를 수취인으로 하는 적어도 하나 이상의 통화 수취 트랜잭션이 소정의 상계 처리 조건을 만족하면, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션들을 상계 처리하고, 상계 처리된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디와 통화 수취 프라이빗 트랜잭션 아이디를 상기 특정 사용자, 상기 특정 수신자 및 상기 타 사용자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 포함된 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 프로세스, 및 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족하면, 특정 해쉬값 - 상기 특정 해쉬값은 (1) 상기 통화 지급 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값 또는 (2) 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 (1) 통화 지급 퍼블릭 트랜잭션 아이디 또는 (2) 상기 통화 지급 퍼블릭 트랜잭션 아이디와 통화 수취 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 프로세스를 수행하는 프로세서; 를 포함하는 것을 특징으로 하는 서버가 제공된다.
이 외에도, 본 발명의 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 가상 화폐의 블록체인에 통화의 발행 및 지급 결제 정보를 등록하여 복사 또는 위/변조가 불가능하도록 하여 통화의 발행 및 지급 결제 정보에 대한 신뢰성 및 보안성을 향상시킬 수 있다.
또한, 본 발명은 통화의 발행 및 지급 결제 정보를 해쉬함수와 암호화 기술을 이용하여 보안이 보장되고 위/변조가 불가능하도록 하여 통화의 발행 및 지급 결제 정보에 대한 신뢰성 및 보안성을 향상시킬 수 있다.
또한, 본 발명은 가상 화폐의 블록체인에 통화의 발행 및 지급 결제에 대한 정보를 등록함으로써 통화의 중복 지급 등의 문제점을 미연에 방지할 수 있게 된다.
또한, 본 발명은 중앙은행과 시중은행 간의 정산 절차를 진행하지 않아도 항상 정산된 최신의 정산 정보를 확인할 수 함으로써 사용자들의 편의성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따라 통화를 발행하는 서버를 개략적으로 도시한 것이고,
도 2는 본 발명의 일 실시예에 따라 통화를 발행하는 방법을 개략적으로 도시한 것이고,
도 3과 도 4는 본 발명의 일 실시예에 따른 통화 발행 트랜잭션을 퍼블릭 블록체인 데이터베이스에 등록하는 과정을 개략적으로 도시한 것이고,
도 5는 본 발명의 일 실시예에 따른 통화를 발행하는 방법에서 통화를 발행하는 통화 발행자를 등록하는 방법을 개략적으로 도시한 것이고,
도 6은 본 발명의 일 실시예에 따라 통화를 지급 결제하는 방법을 개략적으로 도시한 것이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따라 통화를 발행하는 서버를 개략적으로 도시한 것으로, 서버(100)는 통신부(110)와 프로세서(120)를 포함할 수 있다. 동일한 참조 부호를 이용하여 나타낸 것은 설명의 편의를 위한 것일 뿐, 이들 개별 장치들이 동일하다는 의미로 의도된 것은 아니다. 그리고, 본 발명의 다른 실시예에서의 방법은 서버를 상이하게 구성하여 해당 방법을 수행하거나 동일한 서버(100)를 통해 해당 방법을 수행할 수도 있다.
구체적으로, 서버(100)는 전형적으로 컴퓨팅 장치(예컨대, 컴퓨터 프로세서, 메모리, 스토리지, 입력 장치 및 출력 장치, 기타 기존의 컴퓨팅 장치의 구성요소들을 포함할 수 있는 장치; 라우터, 스위치 등과 같은 전자 통신 장치; 네트워크 부착 스토리지(NAS) 및 스토리지 영역 네트워크(SAN)와 같은 전자 정보 스토리지 시스템)와 컴퓨터 소프트웨어(즉, 컴퓨팅 장치로 하여금 특정의 방식으로 기능하게 하는 인스트럭션들)의 조합을 이용하여 원하는 시스템 성능을 달성하는 것일 수 있다.
이와 같은 컴퓨팅 장치의 통신부(110)는 연동되는 타 컴퓨팅 장치와 요청과 응답을 송수신할 수 있는 바, 일 예시로서 그러한 요청과 응답은 동일한 TCP 세션에 의하여 이루어질 수 있지만, 이에 한정되지는 않는바, 예컨대 UDP 데이터그램으로서 송수신될 수도 있을 것이다.
또한, 컴퓨팅 장치의 프로세서(120)는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 애플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
먼저, 도 2를 참조하여 본 발명의 일 실시예에 따른 통화를 발행하는 방법을 도 1의 서버를 통해 설명하면 다음과 같다.
특정 국가의 중앙은행이나 특정 단체의 통화 관리 주체 등을 포함하는 통화 발행자(A)가 통화를 발행하기 위하여 통화 발행 트랜잭션(TrxA)을 단말을 통해 생성하여 전송하면(S100), 서버(100)는 통신부(110)를 통해 통화 발행 트랜잭션(TrxA)를 획득하게 된다.
이때, 통화 발행 트랜잭션(TrxA)은 (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키(public key) 및 (iv) 통화 발행자의 프라이빗 키(private key)로 (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키(public key)를 서명한 통화 발행자의 서명값을 포함할 수 있다. 그리고, 특정 유니크 논스는 리플레이 어택(replay attack)을 방지하기 위한 것으로, 일회성 번호, 일 예로 타임스탬프일 수 있다. 이를 통해 하나의 트랜잭션에서는 하나의 유니크 논스가 존재하므로 수신되는 트랜잭션에 포함된 유니크 논스가 이전에 수신된 트랜잭션에서 사용된 것일 경우 비정상적인 트랜잭션, 즉 유효하지 않은 트랜잭션으로 간주함으로써 리플레이 어택을 방지할 수 있게 된다.
또한, 통화의 수신자는 발행되는 통화의 수신자에 대한 정보로 통화 사용자로 등록된 특정 사용자의 퍼블릭 키 일 수 있으며, 통화 수신자의 퍼블릭 키와 통화 발행자의 퍼블릭 키는 사전에 서버(100)에 등록된 것이거나, 필요에 따라 해당 시점에 서버(100)에 등록할 수도 있으며, 등록 정보는 프라이빗 키와 퍼블릭 키를 가진 발행자 또는 사용자가 자신의 퍼블릭 키를 서버(100)에 등록한 것으로, 이에 대한 설명은 다른 동작에서 설명한다. 그리고, 통화 발행자(A)는 통화 수신자(B)에 대한 정보로서 통화 수신자(B)의 퍼블릭 키를 사전에 가지고 있을 수 있다.
그리고, 일 예로, 통화 발행 트랜잭션(TrxA)은 1. 지급 결제 방식, 2. 특정 유니크 논스, 3. 수신자, 4. 발행 금액, 5. 발행자 퍼블릭 키, 6. 발행자 서명값의 데이터 포맷을 가질 수 있으나, 반드시 이에 한정되는 것은 아니다.
이때, “1. 결제 방식”은 “즉시 지급 결제”와 “지연 지급 결제”를 포함할 수 있으며, “즉시 지급 결제”는 통화 관련 트랜잭션을 바로 처리하도록 하는 것이고 “지연 지급 결제”는 소정의 조건이 만족할 때까지 통화 관련 트랜잭션의 처리를 지연하는 것일 수 있다. 일 예로, “지연 지급 결제”는 지급을 위한 금액이 부족할 경우 유동성 문제를 해결하기 위하여 자신의 발란스보다 많은 금액에 대한 지급 결제를 할 경우 이후 자신이 수취하는 금액들과 상계 처리할 수 있도록 하는 것이다. 하지만, 통화의 발행자는 새로운 통화를 발생시키는 기관 또는 이에 준하는 당사자이므로 통화의 발행에서는 “지연 지급 결제”가 발생되지 않으므로 “즉시 지급 결제”가 디폴트로 설정되거나, 통화 발행 트랜잭션에 지급 결제 방식에 대한 데이터 포맷을 포함하지 않도록 할 수도 있다. 그리고, “2. 특정 유니크 논스”는 리플레이 어택을 방지하기 위한 한번 사용 가능한 일회성 번호일 수 있다. 또한, “3. 수신자”는 발행되는 통화를 수신할 통화 수신자의 퍼블릭 키(PubB)일 수 있으며, “4. 발행 금액”은 발행하고자 하는 통화량일 수 있으며, “5. 발행자 퍼블릭 키”는 발행자가 등록한 퍼블릭 키(PubA)일 수 있으며, “6. 발행자 서명값”은 통화 발행자가 프라이빗 키로 서명한 1, 2, 3, 4, 5의 서명값(SigPrivA(1, 2, 3, 4, 5))일 수 있다.
그러면, 서버(100)의 프로세서(120)는 통신부(110)를 통해 획득된 (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키, 및 (v) 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션(TrxA)와 통화 발행자의 유효 여부를 확인한다(S110). 이때, 서버(100)의 프로세서(120)는 통화 발행 트랜잭션(TrxA)의 데이터 포맷의 유효 여부, 통화 수신자의 유효 여부, 통화 발행자의 퍼블릭 키의 유효 여부 및 통화 발행자의 서명값의 유효 여부를 확인하여 통화 발행 트랜잭션(TrxA)의 유효 여부를 확인하게 된다. 일 예로, 통화 발행자(A)의 서명값에 대해 통화 발행자의 퍼블릭 키를 사용하여 획득한 통화 수신자, 통화 발행자의 퍼블릭 키가 통화 발행 트랜잭션(TrxA)에 포함된 값과 일치하는 지를 확인하여 통화 수신자 및 통화 발행자의 퍼블릭 키에 대한 유효 여부를 확인할 수 있다. 또한, 통화 발행자의 서명값을 통화 발행자의 퍼블릭 키를 사용하여 검증함으로써 통화 발행자의 서명값에 대한 유효 여부를 확인할 수 있을 뿐만 아니라, 통화 발행자의 퍼블릭 키를 통해 유효한 통화 발행자인지를 확인할 수 있다. 또한, 특정 유니크 논스를 확인하여 통화 발행 트랜잭션(TrxA)이 유효한지 확인할 수도 있다.
그리고, 서버(100)는 확인 결과(S110) 유효한 것으로 판단되면(S210), 통화 발행 트랜잭션(TrxA)에 포함된 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원할 수 있다(S211). 즉, 발란스 데이터베이스에 등록된 통화 관련 트랜잭션의 이전 발란스(BDBprev)를 통화 발행 트랜잭션의 통화 발행량을 참조한 변화량(deltaA)과 합산한 현재 발란스인 BDBnow = BDBprev + deltaA로 업데이트한다. 이때, 통화 발행에서는 이전 발란스가 없거나 “0”이므로 업데이트되는 발란스 데이터베이스의 발란스는 변화량(deltaA)인 통화 발행 트랜잭션의 통화 발행량이 될 수 있다.
또한, 서버(100)는 유효인 확인 결과에 대응하여, (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키, 및 (v) 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션(TrxA)을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고(S211), 프라이빗 블록체인 데이터베이스에 등록된 통화 발행 트랜잭션(TrxA)의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디(PrivTxid)를 통화 발행자(A) 및 통화 수신자(B) 중 적어도 일부에게 제공하거나 제공하도록 지원할 수 있다(S212, S213). 하지만, 서버(100)는 확인 결과(S110) 유효가 아니면(S220), 통화 발행자(A)에게 에러 메시지를 포함하는 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다(S221).
그리고, 서버(100)는 유효한 확인 결과에 대응하여, 소정의 조건, 일 예로 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건이 만족되면(S230), 프라이빗 블록체인의 하나의 블록에서의 통화와 관련한 모든 트랜잭션에 의해 변화되는 발란스 데이터베이스의 발란스 총 변화량(delta_n)을 등록하며, (i) 특정 유니크 논스, (ii) 통화의 수신자, (iii) 통화의 발행량, (iv) 통화 발행자의 퍼블릭 키, 및 (v) 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션에 해쉬 함수를 적용하여 생성한 특정 해쉬값 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 생성한다(S231). 이때, 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 통화와 관련한 모든 트랜잭션에 의해 변화되는 발란스 데이터베이스의 발란스 총 변화량(delta_n)에 해쉬 함수를 적용하여 생성한 해쉬값일 수 있다.
그리고, 서버(100)는 생성된 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원하며(S232), 퍼블릭 블록체인 데이터베이스(120)에 등록된 대표 해쉬값 또는 대표 해쉬값을 가공한 값인 머클 루트의 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디(Txid)를 획득하거나 획득하도록 지원할 수 있다(S233). 이때, 서버(100)는 통화 발행 퍼블릭 트랜잭션 아이디(Txid)에 대응되는 OP 메시지를 퍼블릭 블록체인 데이터베이스(200)로부터 획득할 수 있다.
그리고, 특정 해쉬값과 적어도 하나의 이웃 해쉬값과의 연산은 다양한 해쉬 함수에 의해 수행될 수 있으며, 해쉬함수는 MD4 함수, MD5 함수, SHA-0 함수, SHA-1 함수, SHA-224 함수, SHA-256 함수, SHA-384 함수, SHA-512 함수 및 HAS-160 함수를 포함할 수 있으나, 이에 한정되지 않음은 통상의 기술자가 알 수 있을 것이다. 예를 들어 Triple SHA256도 가능할 것이다.
이때, 서버(100)는 특정 해쉬값과 적어도 하나의 이웃 해쉬값을 소정의 데이터 구조로 저장하여 관리할 수 있다. 여기서, 데이터 구조는 다양할 수 있는데, 일 예로 머클 트리(merkle tree) 구조가 될 수도 있다.
즉, 서버(100)는 특정 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원할 수 있고, 소정의 조건이 만족되면, 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원할 수 있다.
좀 더 구체적으로 설명하면, (x1) 서버(100)는, (i) 특정 해쉬값과 (ii) 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 연산값에 대한 해쉬값을 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. (x2) 만일, 부모 노드가 머클 트리의 루트 노드이면, 부모 노드에 할당된 해쉬값이 대표 해쉬값이 된다. (x3) 반면, 부모 노드가 머클 트리의 루트 노드가 아니면, 서버(100)는, 부모 노드에 할당된 해쉬값을 특정 해쉬값으로 하여 (x1) 내지 (x3)를 반복하여 수행한다.
그리고, 서버(100)는 최종적으로 머클 트리의 루트 노드에 할당된 해쉬값을 대표 해쉬값으로서 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원한다. 이때, 대표 해쉬값을 가공한 값이 등록될 수도 있다. 예를 들어, 대표 해쉬값에 hex 연산이 수행된 결과값이 등록될 수도 있다.
한편, 서버(100)가 특정 해쉬값과 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 제1 데이터 구조와 동일한 형태의 제2 데이터 구조를 저장하여 관리하는 경우, 제1 데이터 구조와 제2 데이터 구조는 체인 형태로 연결될 수 있다.
특히, 상술한 예에서와 같이 제1 데이터 구조 및 제2 데이터 구조가 머클 트리인 경우, 제1 데이터 구조의 루트값 또는 루트값의 해쉬값이 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
또한, 제2 데이터 구조를 생성할 때는 제1 데이터 구조에 대한 검증이 이루어짐으로써 데이터 integrity가 좀 더 보장될 수 있다. 제2 데이터 구조의 검증에 대해서는 후술하기로 한다.
또한, 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리의 경우, 첫번째 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당될 수 있다. 예를 들어, 머클 트리 생성시 서버(100)에 의해 최초로 부여된 입력 메시지의 해쉬값이 할당될 수 있다.
도 3 및 4는 본 발명의 일 실시예에 따라 생성된 머클 트리의 예를 도시한 도면이다.
도 3에서는 리프 노드의 개수가 4개인 머클 트리가 도시된다. 도시된 머클 트리는 첫번째 머클 트리이기 때문에(tree_id=0), 첫번째 리프 노드인 h0 노드에는 소정의 메시지 데이터의 해쉬값 (sha256(coinplug_unique_message))이 할당되었음을 알 수 있다. 기록 데이터에 대한 등록 요청(즉, 메신저 서비스 송수신 데이터에 관한 기록 요청)이 있는 경우, 서버(100)는 현재 구성 중인 머클 트리의 가장 마지막 리프 노드의 다음 리프 노드를 생성하여 특정 해쉬값 또는 특정 해쉬값을 가공한 값을 할당하거나 할당하도록 지원한다. 예를 들어, 도 3의 머클 트리에서 두번째 리프 노드인 h1 노드까지 값 할당이 완료된 상태에서 새로운 리프 노드를 생성하여야 하는 경우, 다음 리프 노드인 h2 노드를 생성하여 특정 해쉬값 또는 특정 해쉬값을 가공한 값(sha256(input2))을 할당할 수 있다. 또한, 서버(100)는 (i) h2 노드에 할당된 특정 해쉬값과 (ii) h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드(h23 노드)에 할당된다. 부모 노드(h23 노드)가 머클 트리의 루트 노드가 아니므로 서버(100)는 h23 노드에 할당된 해쉬값을 특정 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 특정 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드(h0123 노드)에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 서버(100)는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원할 수 있다. 한편, 블록에서의 마지막 리프 노드인 h3 노드의 경우 발란스 데이터베이스의 총 변화량(delta_n)에 대한 해쉬값이 위치되도록 할 수도 있다.
한편, 전술한 소정의 조건이란, (i) 소정의 개수만큼 통화와 관련한 트랜잭션이 생성되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 프라이빗 블록체인 데이터베이스에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함할 수 있다. 이때, 통화와 관련한 트랜잭션은 통화의 발행에 더하여 후술할 발행자 등록, 통화의 지급 결제, 사용자 등록 등을 포함할 수 있다.
한편, 예를 들어, 복수의 통화 관련 트랜잭션이 머클 트리의 리프 노드 수만큼 획득되면 머클 트리를 생성하고, 머클 트리의 루트값을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원할 수 있다.
또한, 서버(100)는 소정 시간 단위로 전술한 머클 트리의 루트값을 생성할 수 있다(상기 (ii) 조건). 이 경우 서버(100)는 소정의 시간이 경과되면 그때까지의 입력값을 이용하여 머클 트리를 생성하고 머클 트리의 루트값을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원할 수 있다.
그런데, 이 경우에는 소정 시간이 경과하였음에도 머클 트리의 특정 해쉬값이 할당된 노드의 형제 노드에 값이 할당되지 않을 수 있다. 이처럼 소정의 조건이 만족되었음에도 특정 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 서버(100)는, 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 전술한 방식으로 머클 트리의 루트값이 산출되도록 할 수 있다. 예를 들어, 서버(100)는 특정 해쉬값을 복제하여 형제 노드에 할당하거나 할당하도록 지원할 수 있다.
또한, 서버(100)는 프라이빗 블록체인 데이터베이스에서 블록이 생성되는 때(상기 (iii) 조건)에, 상기 생성되는 블록의 블록 헤더(block header)에 발란스 데이터베이스에 등록된 발란스 변화량에 대한 전제, 즉 각각의 통화 관련 트랜잭션에 의해 발생되는 각각의 발란스 변화량들의 정보 또는 발란스 데이터베이스의 발란스 총 변화량(delta_n)으로부터 연산된 해쉬값인 발란스 데이터베이스 헤더 해쉬값이 기록되도록 하거나 기록되도록 지원할 수 있다.
일 예로, (i) 랜덤 논스, 랜덤 논스 서명값 및 퍼블릭 키로부터 연산된 해쉬값들만이 리프 노드들에 할당된 머클 트리로부터 대표 해쉬값인 거래자 정보 대표 해쉬값이 생성되고, (ii) 통화의 발행 및 사용과 관련한 트랜잭션으로부터 연산된 해쉬값들만이 리프 노드들에 할당된 머클 트리로부터 대표 해시값인 통화 거래 정보 대표 해쉬값이 생성된 후, 거래자 정보 대표 해쉬값 및 통화 거래 정보 대표 해쉬값이 생성되는 블록의 블록 헤더에 더 기록된 상태에서, 서버가, 발란스 데이터베이스 헤더 해쉬값, 거래자 정보 대표 해쉬값 및 통화 거래 정보 대표 해쉬값 또는 이들을 가공한 값에 대한 해쉬값을 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원할 수도 있다.
또한, 서버(100)는 (i) 랜덤 논스, 랜덤 논스 서명값 및 퍼블릭 키로부터 연산된 해쉬값, 및 (ii) 통화의 발행 및 사용과 관련한 트랜잭션으로부터 연산된 해쉬값들이 리프 노드들에 할당된 머클 트리로부터 프라이빗 대표 해쉬값이 생성된 후, 프라이빗 대표 해쉬값이 생성되는 블록의 블록 헤더에 더 기록된 상태에서, 발란스 데이터베이스 헤더 해쉬값 및 프라이빗 대표 해쉬값, 또는 이들을 가공한 값을 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원할 수도 있다.
그리고, 서비스 특성이란, 통화 발행 요청을 한 통화 발행자가 제공한 비용 정보, 통화 발행 트랜잭션 등록이 이루어지는 시간대 정보, 통화 발행 트랜잭션 등록 서비스가 이루어지는 지역 정보, 통화 발행 트랜잭션 등록 요청을 한 회사 타입 정보 중 적어도 일부가 될 수 있다. 다만, 여기서 기재한 것에 한정할 것은 아니고, 통상적으로 인정되는 차등적 서비스가 제공될 수 있는 다양한 조건 정보를 포함한다.
한편, 새로운 머클 트리 생성이 시작되고, 통화 발행 트랜잭션이 없는 상태에서 소정의 조건이 만족되면, 서버(120)는, 소정의 메시지 데이터가 첫번째 리프 노드와 두번째 리프 노드에 할당된 머클 트리를 생성하거나 생성하도록 지원하고, 머클 트리의 루트값 또는 이를 가공한 값을 퍼블릭 블록체인 데이터베이스(120)에 등록하거나 등록하도록 지원할 수 있다. 이 경우에는 리프 노드 2개짜리 머클 트리가 생성될 수도 있는 것이다.
한편, 전술한 것처럼 서버(100)가 특정 해쉬값과 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 제1 데이터 구조와 동일한 형태의 제2 데이터 구조를 저장하여 관리하는 경우, 제1 데이터 구조와 제2 데이터 구조는 체인 형태로 연결될 수 있다. 특히, 제1 데이터 구조 및 제2 데이터 구조가 머클 트리인 경우, 제1 데이터 구조의 루트값 또는 루트값의 해쉬값이 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
도 4는 본 발명의 일 실시예에 따라 제2 데이터 구조로서 생성된 머클 트리를 도시한 도면이다.
도 4를 참조하면, 도 3의 머클 트리(tree_id=0)의 루트값(hex(h0123))이 새로운 머클 트리의 첫번째 리프 노드(h4 노드)에 할당되었음을 알 수 있다(sha256(input4)). 본 발명은 이와 같이 트랜잭션 발생시 생성되는 복수의 데이터 구조를 연결함으로써 중간에 데이터가 변조가 발생되는 경우라도 쉽게 트래킹이 가능하여 데이터 integrity를 향상시키는 장점을 가진다.
다음으로, 도 5를 참조하여 통화 발행자(A)를 등록하는 과정을 설명하면 다음과 같다.
통화 발행자(A)의 퍼블릭 키(PubA)에 의한 발행자 등록 요청이 획득되면(S300), 서버(100)는, 통화 발행자(A)의 유효 여부를 확인하여 통화 발행자(A)가 유효할 경우(S310), 랜덤 논스(random nonce)(RN)를 통화 발행자(A)에게 전달하거나 전달하도록 지원할 수 있다(S311). 그리고, 통화 발행자(A)가 유효하지 않을 경우(S320), 일 예로 타인의 명의를 도용한 사람일 경우, 서버(100)는 통화 발행자(A)에게 발행자 확인 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다(S321).
구체적으로, 통화 발행자(A)가 단말에서 프라이빗 키(PrivA)와 퍼블릭 키(PubA)를 생성한 상태에서, 통화를 발행하기 위한 발행자로 등록하기 위하여 퍼블릭 키(PubA)를 서버(100)로 전송하면, 서버(100)는 획득되는 퍼블릭 키의 통화 발행자(A)가 유효한지를 확인한다. 이때, 통화 발행자(A)의 유효 여부는 공개 키 기반(PKI: Public Key Infrastructure) 인증서를 이용하거나 통화 발행자(A)의 신분 증명 정보를 이용할 수 있으나, 이에 한정되는 것은 아니다. 일 예로, 공개 키 기반 인증서인 공인인증서, OPSign 인증서 등을 통해 특정 발행자를 확인하거나, 주민 번호, 여권, 법인 등록 번호, 사업자 등록 번호 등과 같이 개인, 은행 또는 단체의 신분을 증명할 수 있는 신분 증명 정보를 통해 통화 발행자를 확인할 수 있다.
이후, 랜덤 논스(RN)를 통화 발행자(A)의 프라이빗 키로 서명한 랜덤 논스 서명값(SigPrivA(RN))이 획득되면(S312), 서버(100)는, 랜덤 논스 서명값이 정상적으로 서명되었는지를 통화 발행자(A)의 퍼블릭 키를 사용하여 검증한다. 즉, 서버(100)는 통화 발행자의 퍼블릭 키를 사용하여 랜덤 논스 서명값으로부터 랜덤 논스(RN)를 확인하고, 확인된 랜덤 논스(RN)가 통화 발행자에게 전달된 랜덤 논스(RN)와 일치하는지를 확인하여 일치할 경우 유효한 서명인 것으로 검증한다. 다만, 통화 발행자(A)가 유효한지 판단하기 위한 방법은 이에 한정되지 않으며, 가령 타임스탬프 등을 이용하여 통화 발행자(A)의 유효성을 판단할 수도 있을 것이다. 참고로, 본 명세서에서는 랜덤 논스를 이용하여 유효성을 판단하는 것으로 예를 들어 설명한다.
그리고, 서버(100)는 통화 발행자(A)로부터 획득된 서명값이 유효한 것일 경우(S330), 랜덤 논스, 랜덤 논스 서명값 및 통화 발행자의 퍼블릭 키를 포함하는 발행자 등록 트랜잭션(RN, SigPrivA(RN), PubA)을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며(S331), 프라이빗 블록체인 데이터베이스에 등록된 발행자 등록 트랜잭션의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 발행자 등록 프라이빗 트랜잭션 아이디(PrivTxid)를 포함하는 등록이 성공했음을 나타내는 응답을 통화 발행자(A)에게 제공하거나 제공하도록 지원할 수 있다(S332).
그러나, 서버(100)는 통화 발행자(A)로부터 획득된 서명값이 유효하지 않을 경우(S340), 통화 발행자(A)에게 서명값 확인 실패를 나타내는 메시지를 포함하는 응답을 제공하거나 제공하도록 지원할 수 있다(S341).
또한, 서버(100)는 통화 발행자의 서명값이 유효한 경우, 소정의 조건, 일 예로 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건이 만족되면(S350), 랜덤 논스, 랜덤 논스 서명값 및 통화 발행자의 퍼블릭 키를 포함하는 발행자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 특정 해쉬값(hash(RN, SigPrivA(RN), PubA)) 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 머클 루트로 생성하고(S351), 생성된 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며(S352), 퍼블릭 블록체인 데이터베이스(120)에 등록된 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값의 퍼블릭 블록체인 데이터베이스(120) 상의 위치 정보를 나타내는 발행자 등록 퍼블릭 트랜잭션 아이디(Txid)를 획득하거나 획득하도록 지원할 수 있다(S352). 이때, 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값은 도 2에서의 설명에서와 같이 머클 트리에 의해 생성될 수 있다. 그리고, 서버(100)는 발행자 등록 퍼블릭 트랜잭션 아이디(Txid)에 대응되는 OP 메시지를 퍼블릭 블록체인 데이터베이스(200)로부터 획득할 수도 있다.
다음으로, 도 6을 참조하여 본 발명의 일 실시예에 따른 통화의 지급을 결제하는 방법을 설명하면 다음과 같다. 다음의 설명에서 도 2의 본 발명의 일 실시예에 따른 통화를 발행하는 방법에서와 유사한 부분은 도 2의 설명으로부터 이해 가능하므로 상세한 설명을 생략한다.
통화의 지급을 결제하기 위하여, 특정 사용자(C)로부터 통화의 지급 결제를 위한 통화 지급 트랜잭션(TrxC)이 특정 사용자(C)의 단말로부터 송신되면 서버(100)는 이를 통신부(110)를 통해 수신한다(S400).
이때, 통화 지급 트랜잭션(TrxC)은 (i) 특정 유니크 논스, (ii) 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 특정 사용자의 퍼블릭 키 및 (v) 특정 사용자의 프라이빗 키로 (i) 특정 유니크 논스, (ii) 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 특정 사용자의 퍼블릭 키를 서명한 상기 특정 사용자의 서명값을 포함할 수 있다. 그리고, 특정 유니크 논스는 리플레이 어택(replay attack)을 방지하기 위한 것으로, 일회성 번호, 일 예로 타임스탬프일 수 있다. 이를 통해 하나의 트랜잭션에서는 하나의 유니크 논스가 존재하므로 수신되는 트랜잭션에 포함된 유니크 논스가 이전에 수신된 트랜잭션에서 사용된 것일 경우 비정상적인 트랜잭션, 즉 유효하지 않은 트랜잭션으로 간주함으로써 리플레이 어택을 방지할 수 있게 된다.
그리고, 통화 수신자 정보는 지급 결제되는 통화의 수신자에 대한 정보로 통화 사용자로 등록된 사용자들 중 지급 결제되는 통화를 수취하는 통화 수신자의 퍼블릭 키 일 수 있으며, 통화 수신자의 퍼블릭 키와 특정 사용자(C)의 퍼블릭 키는 사전에 서버(100)에 등록된 것이거나, 필요에 따라 해당 시점에 서버(100)에 등록할 수도 있으며, 등록 정보는 프라이빗 키와 퍼블릭 키를 가진 발행자 또는 사용자가 자신의 퍼블릭 키를 서버(100)에 등록한 것으로, 이에 대한 설명은 다른 동작에서 설명한다. 또한, 특정 사용자(C)는 통화 수신자에 대한 정보로서 통화 수신자의 퍼블릭 키를 사전에 가지고 있을 수 있다.
그리고, 일 예로, 통화 지급 트랜잭션(TrxC)은 1. 지급 결제 방식, 2. 특정 유니크 논스, 3. 수신자, 4. 사용 금액, 5. 특정 사용자의 발행자 퍼블릭 키, 6. 특정 사용자의 서명값을 포함하는 데이터 포맷을 가질 수 있다.
이때, “1. 결제 방식”은 “즉시 지급 결제”와 “지연 지급 결제”를 포함할 수 있으며, “즉시 지급 결제”는 통화 관련 트랜잭션을 바로 처리하도록 하는 것이고 “지연 지급 결제”는 소정의 조건이 만족할 때까지 통화 관련 트랜잭션의 처리를 지연하는 것일 수 있다. 일 예로, “지연 지급 결제”는 지급을 위한 금액이 부족할 경우 유동성 문제를 해결하기 위하여 자신의 발란스보다 많은 금액에 대한 지급 결제를 할 경우 이후 자신이 수취하는 금액들과 상계 처리할 수 있도록 하는 것이다. 그리고, “2. 특정 유니크 논스”는 리플레이 어택을 방지하기 위한 한번 사용 가능한 일회성 번호일 수 있다. 또한, “3. 수신자”는 지급 결제되는 통화를 수취할 통화 수신자의 퍼블릭 키(PubB)일 수 있으며, “4. 사용 금액”은 지급 결제하고자 하는 금액일 수 있으며, “5. 특정 사용자의 퍼블릭 키”는 지금 결제를 하려고 하는 특정 사용자(C)의 퍼블릭 키일 수 있으며, “6. 특정 사용자의 서명값”은 특정 사용자(C)가 프라이빗 키로 서명한 1, 2, 3, 4, 5의 서명값(SigPrivC(1, 2, 3, 4, 5))일 수 있다.
그러면, 서버(100)는 특정 사용자(C)의 발란스를 참조하여 제2 통화 사용 트랜잭션의 지급 결제 방식을 확인한다. 이때, 특정 사용자(C)가 소유한 발란스가 지급 결제 금액 이상이면 “즉시 지급 결제”로 확인하며, 특정 사용자(C)가 소유한 발란스가 지급 결제 금액 미만이면 “지연 지급 결제”로 확인할 수 있다. 또한, 제2 통화 사용 트랜잭션에 포함된 지급 결제 방식에 따라 “즉시 지급 결제”와 “지연 지급 결제”로 확인할 수 있으며, 특히 제2 통화 사용 트랜잭션에 포함된 지급 결제 방식에는 “즉시 지급 결제”로 입력되었지만 특정 사용자(C)가 소유한 발란스가 지급 결제 미만일 경우에는 “지연 지급 결제”로 판단할 수 있다.
이때, 제2 통화 사용 트랜잭션(TrxC)가 “즉시 지급 결제”로 확인되면(S410), 서버(100)는 제2 통화 사용 트랜잭션(TrxC)의 특정 사용자(C)의 서명값이 유효한지를 판단하여 유효일 경우(S430), 통화 지급 트랜잭션(TrxC)에 포함된 통화의 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원할 수 있다(S431). 즉, 발란스 데이터베이스에 등록된 통화 관련 트랜잭션의 이전 발란스(BDBprev)를 통화 지급 트랜잭션의 지급 결제 금액을 참조한 변화량(deltaC)과 합산한 현재 발란스인 BDBnow = BDBprev + deltaC로 업데이트한다.
또한, 서버(100)는 유효인 확인 결과에 대응하여 통화 지급 트랜잭션(TrxC)을 프라이빗 블록체인 데이터베이스에 등록하고(S431), 프라이빗 블록체인 데이터베이스에 등록된 통화 지급 트랜잭션(TrxC)의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디(PrivTxid)를 특정 사용자(C) 및 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원할 수 있다(S432). 하지만, 서버(100)는 확인 결과 유효한 서명값이 아니면(S440), 특정 사용자(C)에게 에러 메시지를 포함하는 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다(S441).
또한, 서버(100)는 유효한 확인 결과에 대응하여, 소정의 조건, 일 예로 트리거링 조건이 만족되면(S450), 프라이빗 블록체인의 하나의 블록에서의 통화와 관련한 모든 트랜잭션에 의해 변화되는 발란스 데이터베이스의 발란스 총 변화량(delta_n)을 등록하며, 통화 지급 트랜잭션(TrxC)에 해쉬 함수를 적용하여 생성한 특정 해쉬값(hash(TrxC)) 및 특정 해쉬값과 매칭되는 이웃 해쉬값을 연산함으로써 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 머클 루트로 생성한다(S451). 그리고, 서버(100)는 생성된 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 퍼블릭 블록체인 데이터베이스(200)에 등록하거나 등록하도록 지원하며(S452), 퍼블릭 블록체인 데이터베이스(200)에 등록된 머클 트리인 대표 해쉬값 또는 대표 해쉬값을 가공한 값의 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 퍼블릭 트랜잭션 아이디(Txid)를 획득하거나 획득하도록 지원할 수 있다(S453). 이때, 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값은 도 2에서의 설명에서와 같이 머클 트리에 의해 생성될 수 있다. 그리고, 서버(100)는 통화 지급 퍼블릭 트랜잭션 아이디(Txid)에 대응되는 OP 메시지를 퍼블릭 블록체인 데이터베이스(200)로부터 획득할 수 있다.
이와는 달리, 통화 지급 트랜잭션(TrxC)이 “지연 지급 결제”로 확인되면(S420), 서버(100)는 통화 지급 트랜잭션(TrxC)의 특정 사용자(C)의 서명값이 유효한지를 판단하여 유효일 경우(S470), 통화 지급 트랜잭션(TrxC)을 네팅(netting) 데이터베이스, 저장부, 메모리 등의 기록 장치에 저장한다(S471). 하지만, 서버(100)는 확인 결과 유효한 서명값이 아니면(S480), 특정 사용자(C)에게 에러 메시지를 포함하는 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다(S481).
그리고, 제2 통화 사용 트랜잭션(TrxC)을 저장 장치에 저장한 상태에서, 적어도 하나 이상의 타 사용자(D)에 의해 지급 결제되며 특정 사용자(C)를 수취인으로 하는 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)이 획득되면(S472), 서버(100)는 획득되는 통화 수취 트랜잭션(TrxD)과 통화 지급 트랜잭션(TrxC)이 상계 조건을 만족하는 지를 확인한다. 이때, 통화 수취 트랜잭션(TrxD)은 특정 사용자(C)를 수취인으로 하되 '지연 지급 결제"로 저장 장치에 저장된 통화 사용 트랜잭션일 수 있으며, 이 경우 서버(100)는 "지연 지급 결제"로 저장된 통화 수취 트랜잭션(TrxD)이 상계 처리되면 이에 대응하여 통화 지급 트랜잭션(TrxC)에 대한 상계 처리를 수행할 수 있다. 또한, 서버(100)는 상계 조건으로, 통화 수취 트랜잭션(TrxD)이 획득될 경우 상계 처리를 수행하며, 상계 처리에 의해 특정 사용자(C)의 발란스가 ?0" 이상의 값을 가지는 지를 판단한다.
한편, 획득된 통화 수취 트랜잭션(TrxD)에 의해 상계 조건을 만족하지 않으면(S500), 서버(100)는 획득된 통화 수취 트랜잭션(TrxD)을 기록 매체에 저장하고, 다른 통화 수취 트랜잭션이 획득되기를 기다린다(S501).
이러한 상태에서, 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)에 의해 상계 조건을 만족하면(S490), 즉, 다수의 통화 수취 트랜잭션(TrxD)에 의해 수취할 금액이 통화 지급 트랜잭션(TrxC)에 의해 지급할 금액보다 많아질 경우 또는 다수의 통화 수취 트랜잭션(TrxD)에 의해 수취할 금액과 특정 사용자(C)의 발란스의 합산 금액이 통화 지급 트랜잭션(TrxC)에 의해 지급할 금액보다 많아질 경우, 서버(100)는 통화 지급 트랜잭션(TrxC)과 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)을 상계 처리한다. 이때, 다수의 통화 수취 트랜잭션(TrxD)은 특정 타 사용자에 의해 생성된 다수의 통화 수취 트랜잭션, 다수의 타 사용자에 의해 생성된 다수의 통화 수취 트랜잭션, 또는 다수의 타 사용자에 의해 다수로 생성되되 각각의 타 사용자에 의해 다수 개로 생성된 통화 수취 트랜잭션 일 수 있다.
또한, 특정 사용자(C)와 다수의 타 사용자들이 각각 "지연 지급 결제"로 된 통화 사용 트랜잭션의 지급자인 사용자와 수취인으로 연결되어 순환 고리를 형성할 경우, 서버(100)는 특정 사용자(C)와 다수의 타 사용자들 간의 "지연 지급 결제"로 순환 고리를 형성하며 연결된 모든 통화 사용 트랜잭션을 상계 처리할 수 있다. 물론, "지연 지급 결제"로 확인되는 임의의 통화 사용 트랜잭션이 다른 통화 사용 트랜잭션과의 지급 결제 금액 차이에 의해 상계 조건을 만족하지 않을 경우에는 임의의 통화 사용 트랜잭션의 상계 처리 조건, 즉, 또 다른 통화 사용 트랜잭션에 의해 임의의 통화 사용 트랜잭션이 상계 처리 조건을 만족하면, 서버(100)는 순환 고리를 형성하는 "지연 지급 결제"인 모든 통화 사용 트랙잭션을 상계 처리할 수 있다.
일 예로, 사용자A는 사용자B에게 "지연 지급 결제"로 통화 사용 트랜잭션A를 생성하며, 사용자B는 사용자C에게 "지연 지급 결제"로 통화 사용 트랜잭션B를 생성하며, 사용자C는 사용자D에게 "지연 지급 결제"로 통화 사용 트랜잭션C를 생성하며, 사용자D는 사용자A에게 "지연 지급 결제"로 통화 사용 트랜잭션D를 생성하여 사용자A, 사용자B, 사용자C, 및 사용자D 사이에 서로 지급자와 수취인으로 하는 순환 고리가 형성될 경우, 서버(100)는 사용자A, 사용자B, 사용자C 및 사용자D에 의해 생성된 통화 사용 트랜잭션A, 통화 사용 트랜잭션B, 통화 사용 트랜잭션C 및 통화 사용 트랜잭션D를 상계 처리할 수 있다. 물론, "지연 지급 결제"인 각각의 통화 사용 트랜잭션에서의 지급 결제 금액이 일치하여야 하는 조건이 만족되어야 하며, 만약 지급 결제 금액들이 일치하지 않을 경우에는 "지연 지급 결제"인 각각의 통화 사용 트랜잭션이 또 다른 통화 사용 트랜잭션에 의해 상계 처리 조건을 만족하여 순화 고리 형태를 이루는 각각의 "지연 지급 결제"인 통화 사용 트랜잭션이 상계 처리 조건을 만족하면 상계 처리를 수행할 수 있다.
그리고, 통화 지급 트랜잭션(TrxC)에 포함된 통화의 지급 결제 금액에 의한 발란스 변화량(deltaC)과 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)에 포함된 통화 지급 결제 금액에 의한 발란스 변화량(deltaD)을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원할 수 있다(S491). 즉, 발란스 데이터베이스에 등록된 통화 관련 트랜잭션의 이전 발란스(BDBprev)를 통화 지급 트랜잭션의 지급 결제 금액을 참조한 변화량(deltaC) 및 통화 수취 트랜잭션의 지급 결제 금액을 참조한 변화량(deltaD)과 합산한 현재 발란스인 BDBnow = BDBprev + deltaC + deltaD로 업데이트한다.
또한, 서버(100)는 상계 처리된 통화 지급 트랜잭션(TrxC)과 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며(S491), 프라이빗 블록체인 데이터베이스에 등록된 통화 지급 트랜잭션(TrxC)과 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디(PrivTxid)와 통화 수취 프라이빗 트랜잭션 아이디(PrivTxid)를 특정 사용자(C), 통화 수신자, 및 적어도 하나 이상의 타 사용자(D) 중 적어도 일부에게 제공하거나 제공하도록 지원할 수 있다(S492, S493). 이때, 기록 매체에 저장된 정보, 즉, 통화 지급 트랜잭션(TrxC)과 획득된 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)은 삭제할 수 있다.
그리고, 서버(100)는 통화 지급 트랜잭션(TrxC)과 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)의 상계 처리에 대응하여, 소정의 조건, 일 예로 트리거링 조건이 만족되면(S510), 프라이빗 블록체인의 하나의 블록에서의 통화와 관련한 모든 트랜잭션에 의해 변화되는 발란스 데이터베이스의 발란스 총 변화량(delta_n)을 등록한다(S511).
한편, 서버는(100)는 상계 처리된 통화 지급 트랜잭션(TrxC)에 해쉬 함수를 적용하여 생성한 특정 해쉬값 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 머클 루트로 생성하여(S511), 퍼블릭 블록체인 데이터베이스(200)에 등록하거나 등록하도록 지원한다(S512). 또한, 서버(100)는 상계 처리된 적어도 하나 이상의 통화 수취 트랜잭션(TrxD)에 해쉬 함수를 적용하여 생성한 특정 해쉬값 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 대표 해쉬값을 가공한 값을 머클 루트로 생성하여(S511), 퍼블릭 블록체인 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다(S512). 즉, 서버(100)는 상계 처리된 통화 지급 트랜잭션 및 모든 통화 수취 트랜잭션에 대한 정보를 퍼블릭 블록체인 데이터베이스(200)에 등록하거나 등록하도록 지원할 수 있다.
그리고, 서버(100)는 퍼블릭 블록체인 데이터베이스(200)에 등록된 통화 지급 트랜잭션에 대응하는 머클 루트 및 적어도 하나 이상의 통화 수취 트랜잭션에 대응하는 머클 루트의 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 퍼블릭 트랜잭션 아이디(Txid)와 적어도 하나 이상의 통화 수취 퍼블릭 트랜잭션 아이디(Txid)를 획득하거나 획득하도록 지원할 수 있다(S513). 이때, 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값은 도 2에서의 설명에서와 같이 머클 트리에 의해 생성될 수 있다. 그리고, 서버(100)는 통화 지급 퍼블릭 트랜잭션 아이디(Txid)와 통화 수취 퍼블릭 트랜잭션 아이디(Txid)에 각각 대응되는 OP 메시지를 퍼블릭 블록체인 데이터베이스(200)로부터 획득할 수도 있다.
그리고, 서버(100)가 통화 사용자인 특정 사용자를 등록하는 과정을 설명하면 다음과 같다. 특정 사용자의 등록 또한 도 5에서의 통화 발행자의 등록과 같은 방법을 수행하는 것으로 유사한 부분은 도 5에서의 설명으로 이해 가능하므로 생략한다.
특정 사용자(C)의 퍼블릭 키에 의한 사용자 등록 요청이 획득되면, 서버(100)는, 특정 사용자(C)의 유효 여부를 확인하여 특정 사용자(C)가 유효할 경우 랜덤 논스를 특정 사용자(C)에게 전달하거나 전달하도록 지원할 수 있다. 그리고, 특정 사용자(C)가 유효하지 않을 경우, 서버(100)는 특정 사용자(C)에게 사용자 확인 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다.
한편, 유효한 사용자일 경우, 랜덤 논스를 특정 사용자의 프라이빗 키로 서명한 랜덤 논스 서명값이 획득되면, 서버(100)는, 랜덤 논스 서명값이 정상적으로 서명되었는지를 특정 사용자의 퍼블릭 키를 사용하여 검증한다.
그리고, 서버(100)는 특정 사용자(C)로부터 획득된 서명값이 유효한 것일 경우, 랜덤 논스, 랜덤 논스 서명값 및 특정 사용자의 퍼블릭 키를 포함하는 사용자 등록 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고, 프라이빗 블록체인 데이터베이스에 등록된 사용자 등록 트랜잭션의 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 프라이빗 트랜잭션 아이디(PrivTxid)를 특정 사용자(C)에게 제공하거나 제공하도록 지원할 수 있다.
그러나, 서버(100)는 특정 사용자(C)로부터 획득된 서명값이 유효하지 않을 경우, 특정 사용자(111)에게 서명값 확인 실패를 나타내는 응답을 제공하거나 제공하도록 지원할 수 있다.
또한, 서버(100)는 특정 사용자(C)의 서명값이 유효한 경우, 소정의 조건, 일 예로 트리거링 조건이 만족되면, 랜덤 논스, 랜덤 논스 서명값 및 특정 사용자의 퍼블릭 키를 포함하는 사용자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 특정 해쉬값 및 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 퍼블릭 블록체인 데이터베이스(200)에 등록하거나 등록하도록 지원하며, 퍼블릭 블록체인 데이터베이스(200)에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 퍼블릭 트랜잭션 아이디(Txid)를 획득하거나 획득하도록 지원할 수 있다. 이때, 머클 루트인 대표 해쉬값 또는 대표 해쉬값을 가공한 값은 도 2에서의 설명에서와 같이 머클 트리에 의해 생성될 수 있다.
한편, 상기에서 설명한 통화 수신자(B), 통화 사용자(C), 통화 사용자(D)는 시중 은행일 수도 있으며, 일반 개인일 수도 있을 것이다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 서버,
110: 통신부,
120: 프로세서,
200: 퍼블릭 블록체인 데이터베이스

Claims (26)

  1. 통화를 발행하는 방법에 있어서,
    (a) 통화 발행자로부터의 상기 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키 및 (v) 상기 통화 발행자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션이 획득되면, 서버는, 상기 통화 발행 트랜잭션 및 상기 통화 발행자의 유효 여부를 확인하여 유효일 경우, (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 발행 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 상기 통화 발행자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 발행 트랜잭션에 포함된 상기 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 단계; 및
    (b) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 머클 루트로 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 머클 루트인 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하는 통화를 발행하는 방법.
  2. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 소정의 조건은,
    (i) 소정의 개수만큼 상기 통화와 관련한 트랜잭션이 생성되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 프라이빗 블록체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함하는 것을 특징으로 하는 통화를 발행하는 방법.
  3. 제2항에 있어서,
    상기 서버는,
    상기 프라이빗 블록체인에서 블록이 생성되는 때에, 상기 생성되는 블록의 블록 헤더(block header)에 상기 발란스 데이터베이스에 등록된 상기 발란스 변화량에 대한 전체 또는 상기 발란스의 총 변화량으로부터 연산된 해쉬값인 발란스 데이터베이스 헤더 해쉬값이 기록되도록 하는 것을 특징으로 하는 통화를 발행하는 방법.
  4. 제3항에 있어서,
    상기 (b) 단계는,
    (i) 랜덤 논스, 랜덤 논스 서명값 및 퍼블릭 키로부터 연산된 해쉬값들만이 리프 노드들에 할당된 머클 트리로부터 대표 해쉬값인 거래자 정보 대표 해쉬값이 생성되고, (ii) 상기 통화의 발행 및 사용과 관련한 트랜잭션으로부터 연산된 해쉬값들만이 리프 노드들에 할당된 머클 트리로부터 대표 해시값인 통화 거래 정보 대표 해쉬값이 생성된 후, 상기 거래자 정보 대표 해쉬값 및 상기 통화 거래 정보 대표 해쉬값이 상기 생성되는 블록의 블록 헤더에 더 기록된 상태에서, 상기 서버가, 상기 발란스 데이터베이스 헤더 해쉬값, 상기 거래자 정보 대표 해쉬값 및 상기 통화 거래 정보 대표 해쉬값 또는 이들을 가공한 값에 대한 해쉬값을 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화를 발행하는 방법.
  5. 제3항에 있어서,
    상기 (b) 단계는,
    (i) 랜덤 논스, 랜덤 논스 서명값 및 퍼블릭 키로부터 연산된 해쉬값, 및 (ii) 상기 통화의 발행 및 사용에 대한 정보를 포함하는 트랜잭션으로부터 연산된 해쉬값들이 리프 노드들에 할당된 머클 트리로부터 프라이빗 대표 해쉬값이 생성된 후, 상기 프라이빗 대표 해쉬값이 상기 생성되는 블록의 블록 헤더에 더 기록된 상태에서, 상기 서버가, 상기 발란스 데이터베이스 헤더 해쉬값 및 상기 프라이빗 대표 해쉬값, 또는 이들을 가공한 값을 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화를 발행하는 방법.
  6. 제1항에 있어서,
    상기 (b) 단계에서,
    상기 서버는,
    상기 특정 해쉬값이 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원하고,
    상기 소정의 조건이 만족되면, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 머클 루트인 상기 대표 해쉬값 또는 상기 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화를 발행하는 방법.
  7. 제6항에 있어서,
    상기 머클 트리가 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 트리인 경우, 상기 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당되는 것을 특징으로 하는 통화를 발행하는 방법.
  8. 제6항에 있어서,
    상기 소정의 조건이 만족되면,
    (x1) 상기 서버는, (i) 상기 특정 해쉬값과 (ii) 상기 특정 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원하며,
    (x2) 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 대표 해쉬값으로서 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고,
    (x3) 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 특정 해쉬값으로 하여 상기 (x1) 내지 (x2)을 반복하여 수행하는 것을 특징으로 하는 통화를 발행하는 방법.
  9. 제8항에 있어서,
    상기 (x1)에서
    상기 소정의 조건이 만족되었음에도 상기 특정 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 상기 서버는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 상기 (x1) 내지 (x3)를 수행하는 것을 특징으로 하는 통화를 발행하는 방법.
  10. 제1항에 있어서,
    상기 서버가 상기 특정 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터 구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결되는 것을 특징으로 하는 통화를 발행하는 방법.
  11. 제10항에 있어서,
    상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당되는 것을 특징으로 하는 통화를 발행하는 방법.
  12. 제1항에 있어서,
    상기 (a) 단계에서,
    상기 서버는,
    상기 통화 발행 트랜잭션의 데이터 포맷의 유효 여부, 상기 통화 발행자의 퍼블릭 키의 유효 여부 및 상기 통화 발행자의 서명값의 유효 여부를 확인하여 상기 통화 발행 트랜잭션의 유효 여부를 확인하되,
    상기 특정 유니크 논스를 확인하여, 상기 특정 유니크 논스가 타 통화 발행 트랜잭션에 사용되었으면 상기 통화 발행 트랜잭션은 리플레이 어택에 의한 유효하지 않은 트랜잭션으로 판단하는 것을 특징으로 하는 통화를 발행하는 방법.
  13. 제1항에 있어서,
    상기 (a) 단계 이전에,
    (a01) 상기 통화 발행자의 퍼블릭 키에 의한 발행자 등록 요청이 획득되면, 상기 서버는, 상기 통화 발행자의 유효 여부를 확인하여 상기 통화 발행자가 유효할 경우 랜덤 논스를 상기 통화 발행자에게 전달하거나 전달하도록 지원하는 단계;
    (a02) 상기 랜덤 논스를 상기 통화 발행자의 프라이빗 키로 서명한 랜덤 논스 서명값이 획득되면, 상기 서버는, 상기 랜덤 논스 서명값이 정상적으로 서명되었는지를 상기 통화 발행자의 퍼블릭 키를 사용하여 검증하고 검증이 완료되면 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 통화 발행자의 퍼블릭 키를 포함하는 발행자 등록 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 발행자 등록 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 발행자 등록 프라이빗 트랜잭션 아이디를 상기 통화 발행자에게 제공하거나 제공하도록 지원하는 단계; 및
    (a03) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 통화 발행자의 퍼블릭 키를 포함하는 상기 발행자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 머클 루트인 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 발행자 등록 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하는 통화를 발행하는 방법.
  14. 통화의 지급을 결제하는 방법에 있어서,
    (a) 특정 사용자로부터 상기 통화의 지급 결제를 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 상기 특정 사용자의 퍼블릭 키 및 (v) 상기 특정 사용자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 특정 사용자의 서명값을 포함하는 통화 지급 트랜잭션이 획득되면, 서버는, 상기 통화 지급 트랜잭션의 상기 특정 사용자의 발란스를 참조하여 상기 통화 지급 트랜잭션의 지급 결제 방식을 확인하는 단계;
    (b) (i) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 이상이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "즉시 지급 결제"로 확인되면, 상기 서버는, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디를 상기 특정 사용자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션에 포함된 상기 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하거나, (ii) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 미만이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "지연 지급 결제"로 확인되면, 상기 서버는, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 저장부에 저장한 상태에서, 적어도 하나 이상의 타 사용자에 의해 지급 결제되며 상기 특정 사용자를 수취인으로 하는 적어도 하나 이상의 통화 수취 트랜잭션이 소정의 상계 처리 조건을 만족하면, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션들을 상계 처리하고, 상계 처리된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디와 통화 수취 프라이빗 트랜잭션 아이디를 상기 특정 사용자, 상기 특정 수신자 및 상기 타 사용자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 포함된 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 단계; 및
    (c) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족하면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 (1) 상기 통화 지급 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값 또는 (2) 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 각각 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 (1) 통화 지급 퍼블릭 트랜잭션 아이디 또는 (2) 상기 통화 지급 퍼블릭 트랜잭션 아이디와 상기 통화 수취 트랜잭션에 대응하는 통화 수취 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하는 통화의 지급을 결제하는 방법.
  15. 제14항에 있어서,
    상기 (c) 단계에서,
    상기 소정의 조건은,
    (i) 소정의 개수만큼 상기 통화와 관련한 트랜잭션이 생성되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 프라이빗 블록체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함하는 것을 특징으로 하는 통화의 지급을 결제하는 방법.
  16. 제14항에 있어서,
    상기 (c) 단계에서,
    상기 서버는,
    상기 특정 해쉬값이 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원하고,
    상기 소정의 조건이 만족되면, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화의 지급을 결제하는 방법.
  17. 제14항에 있어서,
    상기 통화 지급 트랜잭션은, 상기 "즉시 지급 결제" 또는 "지연 지급 결제"를 포함하는 지급 형식 정보를 더 포함하며,
    상기 (b) 단계에서,
    상기 서버는, 상기 통화 지급 트랜잭션의 지급 형식 정보가 "즉시 지급 결제"이지만 상기 특정 사용자의 발란스가 상기 지급 결제 금액 미만일 경우에는 상기 통화 지급 트랜잭션의 지급 결제 방식이 "지연 지급 결제"인 것으로 판단하는 것을 특징으로 하는 통화의 지급을 결제하는 방법.
  18. 제14항에 있어서,
    상기 (a) 단계 이전에,
    (a01) 상기 특정 사용자의 퍼블릭 키에 의한 사용자 등록 요청이 획득되면, 상기 서버는, 상기 특정 사용자의 유효 여부를 확인하여 상기 특정 사용자가 유효할 경우 랜덤 논스를 상기 특정 사용자에게 전달하거나 전달하도록 지원하는 단계;
    (a02) 상기 랜덤 논스를 상기 특정 사용자의 프라이빗 키로 서명한 랜덤 논스 서명값이 획득되면, 상기 서버는, 상기 랜덤 논스 서명값이 정상적으로 서명되었는지를 상기 특정 사용자의 퍼블릭 키를 사용하여 검증하고 검증이 완료되면 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 특정 사용자의 퍼블릭 키를 포함하는 사용자 등록 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 사용자 등록 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 프라이빗 트랜잭션 아이디를 상기 특정 사용자에게 제공하거나 제공하도록 지원하는 단계; 및
    (a03) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 상기 서버가, 특정 해쉬값 - 상기 특정 해쉬값은 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 특정 사용자의 퍼블릭 키를 포함하는 상기 사용자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하는 통화의 지급을 결제하는 방법.
  19. 통화를 발행하는 서버에 있어서,
    통화 발행자로부터의 상기 통화 발행을 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키 및 (v) 상기 통화 발행자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 통화 발행자의 서명값을 포함하는 통화 발행 트랜잭션을 획득하는 통신부; 및
    상기 획득된 상기 통화 발행 트랜잭션 및 상기 통화 발행자의 유효 여부를 확인하여 유효일 경우, (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 발행 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 프라이빗 트랜잭션 아이디를 상기 통화 발행자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 발행 트랜잭션에 포함된 상기 통화의 발행량에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 프로세스, 및 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은 (i) 상기 특정 유니크 논스, (ii) 상기 통화의 수신자, (iii) 상기 통화의 발행량, (iv) 상기 통화 발행자의 퍼블릭 키, 및 (v) 상기 통화 발행자의 서명값을 포함하는 상기 통화 발행 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 발행 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 프로세스를 수행하는 프로세서;
    를 포함하는 것을 특징으로 하는 통화를 발행하는 서버.
  20. 제19항에 있어서,
    상기 소정의 조건은,
    (i) 소정의 개수만큼 상기 통화와 관련한 트랜잭션이 생성되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 프라이빗 블록체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함하는 것을 특징으로 하는 통화를 발행하는 서버.
  21. 제20항에 있어서,
    상기 프로세서는,
    상기 프라이빗 블록체인에서 블록이 생성되는 때에, 상기 생성되는 블록의 블록 헤더(block header)에 상기 발란스 데이터베이스에 등록된 상기 발란스 변화량에 대한 전체 또는 상기 발란스의 총 변화량으로부터 연산된 해쉬값인 발란스 데이터베이스 헤더 해쉬값이 기록되도록 하는 것을 특징으로 하는 통화를 발행하는 서버.
  22. 제19항에 있어서,
    상기 프로세서는,
    상기 특정 해쉬값이 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원하고,
    상기 소정의 조건이 만족되면, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화를 발행하는 서버.
  23. 제19항에 있어서,
    상기 프로세서는,
    (i) 상기 통화 발행자의 퍼블릭 키에 의한 발행자 등록 요청이 획득되면, 상기 통화 발행자의 유효 여부를 확인하여 상기 통화 발행자가 유효할 경우 랜덤 논스를 상기 통화 발행자에게 전달하거나 전달하도록 지원하며, (ii) 상기 랜덤 논스를 상기 통화 발행자의 프라이빗 키로 서명한 랜덤 논스 서명값이 획득되면, 상기 랜덤 논스 서명값이 정상적으로 서명되었는지를 상기 통화 발행자의 퍼블릭 키를 사용하여 검증하고 검증이 완료되면 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 통화 발행자의 퍼블릭 키를 포함하는 발행자 등록 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 발행자 등록 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 발행자 등록 프라이빗 트랜잭션 아이디를 상기 통화 발행자에게 제공하거나 제공하도록 지원하고, (iii) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 통화 발행자의 퍼블릭 키를 포함하는 상기 발행자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 발행자 등록 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 것을 특징으로 하는 통화를 발행하는 서버.
  24. 통화의 지급을 결제하는 서버에 있어서,
    특정 사용자로부터 상기 통화의 지급 결제를 위한 (i) 특정 유니크 논스, (ii) 상기 통화의 수신자 정보, (iii) 지급 결제 금액, (iv) 상기 특정 사용자의 퍼블릭 키 및 (v) 상기 특정 사용자의 프라이빗 키로 상기 (i), 상기 (ii), 상기 (iii), 상기 (iv)를 서명한 상기 특정 사용자의 서명값을 포함하는 통화 지급 트랜잭션을 획득하는 통신부; 및
    상기 획득된 상기 통화 지급 트랜잭션의 상기 특정 사용자의 발란스를 참조로 하여 상기 통화 지급 트랜잭션의 지급 결제 방식을 확인하고, (i) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 이상이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "즉시 지급 결제"로 확인되면, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디를 상기 특정 사용자 및 상기 통화 수신자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션에 포함된 상기 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하거나, (ii) 상기 특정 사용자의 발란스가 상기 지급 결제 금액 미만이어서 상기 통화 지급 트랜잭션의 지급 결제 방식이 "지연 지급 결제"로 확인되면, 상기 특정 사용자의 서명값이 유효한지를 판단하여 유효일 경우, 상기 통화 지급 트랜잭션을 저장부에 저장한 상태에서, 적어도 하나 이상의 타 사용자에 의해 지급 결제되며 상기 특정 사용자를 수취인으로 하는 적어도 하나 이상의 통화 수취 트랜잭션이 소정의 상계 처리 조건을 만족하면, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션들을 상계 처리하고, 상계 처리된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 통화 지급 프라이빗 트랜잭션 아이디와 통화 수취 프라이빗 트랜잭션 아이디를 상기 특정 사용자, 상기 특정 수신자 및 상기 타 사용자 중 적어도 일부에게 제공하거나 제공하도록 지원하고, 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 포함된 지급 결제 금액에 의한 발란스 변화량을 참조로 발란스 데이터베이스의 발란스를 업데이트하여 등록하거나 등록하도록 지원하는 프로세스, 및 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족하면, 특정 해쉬값 - 상기 특정 해쉬값은 (1) 상기 통화 지급 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값 또는 (2) 상기 통화 지급 트랜잭션과 상기 통화 수취 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 적어도 하나의 이웃 해쉬값 중 특정 이웃 해쉬값은 프라이빗 블록체인의 하나의 블록에서의 상기 통화와 관련한 모든 트랜잭션에 의해 변화되는 상기 발란스 데이터베이스의 발란스 총 변화량에 해쉬 함수를 적용하여 생성한 해쉬값임 - 을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 (1) 통화 지급 퍼블릭 트랜잭션 아이디 또는 (2) 상기 통화 지급 퍼블릭 트랜잭션 아이디와 통화 수취 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 프로세스를 수행하는 프로세서;
    를 포함하는 것을 특징으로 하는 통화의 지급을 결제하는 서버.
  25. 제24항에 있어서,
    상기 프로세서는,
    상기 특정 해쉬값이 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원하고,
    상기 소정의 조건이 만족되면, 상기 특정 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 통화의 지급을 결제하는 서버.
  26. 제24항에 있어서,
    상기 프로세서는,
    (i) 상기 특정 사용자의 퍼블릭 키에 의한 사용자 등록 요청이 획득되면, 상기 특정 사용자의 유효 여부를 확인하여 상기 특정 사용자가 유효할 경우 랜덤 논스를 상기 특정 사용자에게 전달하거나 전달하도록 지원하고, (ii) 상기 랜덤 논스를 상기 특정 사용자의 프라이빗 키로 서명한 랜덤 논스 서명값이 획득되면, 상기 랜덤 논스 서명값이 정상적으로 서명되었는지를 상기 특정 사용자의 퍼블릭 키를 사용하여 검증하고 검증이 완료되면 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 특정 사용자의 퍼블릭 키를 포함하는 사용자 등록 트랜잭션을 프라이빗 블록체인 데이터베이스에 등록하거나 등록하도록 지원하고, 상기 프라이빗 블록체인 데이터베이스에 등록된 상기 사용자 등록 트랜잭션의 상기 프라이빗 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 프라이빗 트랜잭션 아이디를 상기 특정 사용자에게 제공하거나 제공하도록 지원하며, (iii) 소정의 조건 - 상기 소정의 조건은 퍼블릭 블록체인 데이터베이스에 소정의 해쉬값을 등록하기 위한 트리거링 조건임 - 이 만족되면, 특정 해쉬값 - 상기 특정 해쉬값은 상기 랜덤 논스 서명값, 상기 랜덤 논스 및 상기 특정 사용자의 퍼블릭 키를 포함하는 상기 사용자 등록 트랜잭션에 해쉬 함수를 적용하여 생성한 해쉬값임 - 및 상기 특정 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 머클 루트인 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 퍼블릭 블록체인 데이터베이스에 등록하거나 등록하도록 지원하며, 상기 퍼블릭 블록체인 데이터베이스에 등록된 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값의 상기 퍼블릭 블록체인 데이터베이스 상의 위치 정보를 나타내는 사용자 등록 퍼블릭 트랜잭션 아이디를 획득하거나 획득하도록 지원하는 것을 특징으로 하는 통화의 지급을 결제하는 서버.
KR1020160140170A 2016-10-26 2016-10-26 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 KR101837166B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160140170A KR101837166B1 (ko) 2016-10-26 2016-10-26 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
PCT/KR2017/011939 WO2018080207A1 (ko) 2016-10-26 2017-10-26 블록체인 내의 블록별로 밸런스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
CA3039899A CA3039899C (en) 2016-10-26 2017-10-26 Method for issuing currency and making payment by managing balance database for each block in blockchain and server using same
US16/380,627 US11037111B2 (en) 2016-10-26 2019-04-10 Method for issuing currency and making payment by managing balance database for each block in blockchain network and server using same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160140170A KR101837166B1 (ko) 2016-10-26 2016-10-26 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버

Publications (1)

Publication Number Publication Date
KR101837166B1 true KR101837166B1 (ko) 2018-03-09

Family

ID=61727732

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160140170A KR101837166B1 (ko) 2016-10-26 2016-10-26 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버

Country Status (4)

Country Link
US (1) US11037111B2 (ko)
KR (1) KR101837166B1 (ko)
CA (1) CA3039899C (ko)
WO (1) WO2018080207A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108711056A (zh) * 2018-05-16 2018-10-26 四川大学 一种中心化的可追溯的区块链系统及方法
WO2019174430A1 (zh) * 2018-03-14 2019-09-19 郑杰骞 区块链数据处理方法、管理端、用户端、转换装置及介质
KR20190114597A (ko) * 2018-03-30 2019-10-10 주식회사 네이블커뮤니케이션즈 블록 체인을 이용한 발신자 확인 방법, 장치 및 시스템
KR20190136610A (ko) 2018-05-31 2019-12-10 박덕용 블록체인 기반의 스마트 컨트랙트를 이용한 거래 처리 장치 및 방법
WO2020097533A1 (en) * 2018-11-09 2020-05-14 Visa International Service Association Digital fiat currency
KR20200129881A (ko) 2019-05-10 2020-11-18 정선태 블록체인을 이용한 지역화폐 교환결제 시스템 및 그 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101849918B1 (ko) * 2016-10-26 2018-04-19 주식회사 코인플러그 Utxo 기반 프로토콜을 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
US11188897B2 (en) * 2018-02-13 2021-11-30 Bank Of America Corporation Multi-tiered digital wallet security
US10095888B1 (en) 2018-06-04 2018-10-09 Capital One Services, Llc Secure decentralized system utilizing smart contracts, a blockchain, and/or a distributed file system
US20190378162A1 (en) * 2018-06-06 2019-12-12 KR8OS, Inc dba Lucidity Systems and methods for enforcing advertising standards and digital advertisement measurements
WO2020008658A1 (ja) * 2018-07-03 2020-01-09 スタンダードトランザクション株式会社 通貨情報処理装置および通貨情報処理システム
US11055531B1 (en) * 2018-08-24 2021-07-06 United Services Automobiie Association (USAA) Augmented reality method for repairing damage or replacing physical objects
CN109409890B (zh) * 2018-11-13 2020-12-25 华瓴(南京)信息技术有限公司 一种基于区块链的电力交易系统及方法
CN109726229B (zh) * 2018-11-30 2023-10-10 深圳市元征科技股份有限公司 一种区块链数据存储方法及装置
EP3571825B1 (en) 2018-12-21 2021-03-10 Advanced New Technologies Co., Ltd. Verifying integrity of data stored in a consortium blockchain using a public sidechain
CN109741068B (zh) * 2018-12-25 2021-04-27 银清科技有限公司 网银跨行签约方法、装置及系统
CN109754235A (zh) * 2019-01-09 2019-05-14 篱笆墙网络科技有限公司 电子支付系统、方法、智能终端及存储介质
RU2723461C1 (ru) * 2019-04-01 2020-06-11 Олег Леонидович Курнявко Способ первичной эмиссии электронно-цифровой купюры, способ вторичной эмиссии электронно-цифровой купюры, способ совершения платежа с использованием электронно-цифровой купюры
CN110706110A (zh) * 2019-10-14 2020-01-17 腾讯科技(深圳)有限公司 基于换汇平台的数据处理方法、装置、设备及存储介质
CN113438219B (zh) * 2020-07-08 2023-06-02 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的重放交易识别方法及装置
CN111541784B (zh) 2020-07-08 2021-07-20 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易处理方法及装置
CN111541789A (zh) 2020-07-08 2020-08-14 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的数据同步方法及装置
CN112492002B (zh) 2020-07-08 2023-01-20 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易转发方法及装置
CN111539829B (zh) 2020-07-08 2020-12-29 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的待过滤交易识别方法及装置
US11935042B2 (en) 2021-08-13 2024-03-19 Nec Corporation Delegated off-chain payments using cryptocurrencies

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101575030B1 (ko) 2014-07-11 2015-12-07 조선대학교산학협력단 클라우드 상의 공유 데이터에 대한 다중 서명생성방법
KR101637854B1 (ko) 2015-10-16 2016-07-08 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 및 블록체인을 기반으로 하는 공인인증서 인증시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 인증방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017004527A1 (en) * 2015-07-02 2017-01-05 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
GB201511964D0 (en) * 2015-07-08 2015-08-19 Barclays Bank Plc Secure digital data operations
US10565570B2 (en) * 2016-09-27 2020-02-18 The Toronto-Dominion Bank Processing network architecture with companion database

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101575030B1 (ko) 2014-07-11 2015-12-07 조선대학교산학협력단 클라우드 상의 공유 데이터에 대한 다중 서명생성방법
KR101637854B1 (ko) 2015-10-16 2016-07-08 주식회사 코인플러그 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 및 블록체인을 기반으로 하는 공인인증서 인증시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 인증방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
[CIO KOREA 2016.07.08]

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019174430A1 (zh) * 2018-03-14 2019-09-19 郑杰骞 区块链数据处理方法、管理端、用户端、转换装置及介质
KR20190114597A (ko) * 2018-03-30 2019-10-10 주식회사 네이블커뮤니케이션즈 블록 체인을 이용한 발신자 확인 방법, 장치 및 시스템
KR102054581B1 (ko) 2018-03-30 2019-12-12 주식회사 네이블커뮤니케이션즈 블록 체인을 이용한 발신자 확인 방법, 장치 및 시스템
CN108711056A (zh) * 2018-05-16 2018-10-26 四川大学 一种中心化的可追溯的区块链系统及方法
KR20190136610A (ko) 2018-05-31 2019-12-10 박덕용 블록체인 기반의 스마트 컨트랙트를 이용한 거래 처리 장치 및 방법
WO2020097533A1 (en) * 2018-11-09 2020-05-14 Visa International Service Association Digital fiat currency
CN113439281A (zh) * 2018-11-09 2021-09-24 维萨国际服务协会 数字法定货币
JP6975364B1 (ja) * 2018-11-09 2021-12-01 ビザ インターナショナル サービス アソシエーション デジタル不換通貨
US11507929B2 (en) 2018-11-09 2022-11-22 Visa International Service Association Digital fiat currency
KR20200129881A (ko) 2019-05-10 2020-11-18 정선태 블록체인을 이용한 지역화폐 교환결제 시스템 및 그 방법

Also Published As

Publication number Publication date
US20190236565A1 (en) 2019-08-01
US11037111B2 (en) 2021-06-15
WO2018080207A1 (ko) 2018-05-03
CA3039899A1 (en) 2018-05-03
CA3039899C (en) 2022-06-21

Similar Documents

Publication Publication Date Title
KR101837166B1 (ko) 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
KR101837167B1 (ko) Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
US11436595B2 (en) Method for issuing, using, refunding, settling and revoking electronic voucher using updated status of balance database by respective blocks in blockchain, and server using the same
US11314900B2 (en) Methods and systems for using digital signatures to create trusted digital asset transfers
US11210661B2 (en) Method for providing payment gateway service using UTXO-based protocol and server using same
US20190244186A1 (en) Electronic bill management method, apparatus, and storage medium
US11301933B2 (en) Method for providing united point service using updated status of balance database with blockchain and server using the same
US11108566B2 (en) Methods and systems for using digital signatures to create trusted digital asset transfers
KR20210128455A (ko) 블록체인 네트워크를 통한 이전을 구현하는 컴퓨터 구현 시스템 및 방법
US11416930B2 (en) Method for providing united point service in use of unspent transaction output based protocol and server using the same
WO2017207717A1 (en) Validating blockchain transactions regarding real money
KR101841563B1 (ko) Utxo 기반으로 머클트리 구조를 사용하여 전자 바우처를 발행, 사용, 환불, 정산 및 파기하는 방법과 이를 이용한 서버
KR101841564B1 (ko) Utxo 기반으로 머클트리 구조를 사용하여 전자 바우처를 발행, 사용, 환불, 정산 및 파기하는 방법과 이를 이용한 서버
KR101849918B1 (ko) Utxo 기반 프로토콜을 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
KR102063628B1 (ko) 블록체인 기반의 결제 방법 및 이를 이용한 지급 결제 서버
KR101841568B1 (ko) 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 전자 바우처를 발행, 사용, 환불, 정산 및 파기하는 방법과 이를 이용한 서버
KR101841567B1 (ko) 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 전자 바우처를 발행, 사용, 환불, 정산 및 파기하는 방법과 이를 이용한 서버
CN115619395A (zh) 基于区块链的数据处理方法及相关设备
KR20200021342A (ko) 블록체인 기반 결제 방법 및 시스템

Legal Events

Date Code Title Description
GRNT Written decision to grant