KR20170113481A - 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버 - Google Patents

진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버 Download PDF

Info

Publication number
KR20170113481A
KR20170113481A KR1020170056569A KR20170056569A KR20170113481A KR 20170113481 A KR20170113481 A KR 20170113481A KR 1020170056569 A KR1020170056569 A KR 1020170056569A KR 20170056569 A KR20170056569 A KR 20170056569A KR 20170113481 A KR20170113481 A KR 20170113481A
Authority
KR
South Korea
Prior art keywords
hash value
product
use information
product use
value
Prior art date
Application number
KR1020170056569A
Other languages
English (en)
Other versions
KR101862856B1 (ko
Inventor
송주한
홍재우
어준선
Original Assignee
주식회사 코인플러그
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 코인플러그 filed Critical 주식회사 코인플러그
Priority to KR1020170056569A priority Critical patent/KR101862856B1/ko
Publication of KR20170113481A publication Critical patent/KR20170113481A/ko
Application granted granted Critical
Publication of KR101862856B1 publication Critical patent/KR101862856B1/ko

Links

Images

Classifications

    • G06F17/30312
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • G06F17/30097
    • G06F17/30327
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • 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
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명의 일 태양에 따르면, 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 방법에 있어서, (a) 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서, 단말에 의해 상기 제품의 식별 코드가 스캔되어 상기 HD index 및 상기 제1 고유주소가 전달되면, 상기 서버는, 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하는 단계, (b) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하는 단계, 및 (c) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 서버가, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 서버가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 단계를 포함하는 방법이 제공된다.

Description

진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버{METHOD AND SERVER FOR RECORDING DATA WITH REGARD TO THE USAGE OF THE PRODUCT AND VERIFYING THE SAME IN ORDER TO MANAGE GENUINE PRODUCTS}
본 발명은, 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버에 관한 것으로, 좀더 상세하게는, 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 방법에 있어서, (a) 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서, 단말에 의해 상기 제품의 식별 코드가 스캔되어 상기 HD index 및 상기 고유주소가 전달되면, 상기 서버는, 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하는 단계, (b) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하는 단계, 및 (c) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 서버가, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 서버가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 단계를 포함하는 방법 및 서버에 관한 것이다.
위조품이 범람하면서 진품과 가품을 식별할 수 있는 다양한 기술 방안이 제공되고 있다. 그 중에서도 제품에 전자태그를 붙여 제품을 유통시키고 인식장치를 통해 상기 전자태그를 인식하여 유통되는 제품의 진품여부와 유통이력 등을 확인할 수 있는 기술이 존재한다.
이러한 기술에서는 전자태그 상에 제품이 진품인지 여부가 기록되어 있으므로 전자태그를 인식할 수만 있다면 어떤 장치를 통해서라도 제품의 진품여부를 확인할 수 있다는 특징이 있다. 그런데, 이러한 전자태그 정보는 누구라도 쉽게 생성할 수 있으므로 제품의 진품 여부를 정확히 보증할 수 없다는 단점이 있다.
이에 발명자는 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여하고, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단할 수 있는 위조품 검출 시스템을 개발하기에 이르렀다. 본 시스템은 특정한 권한을 부여받은 서비스 제공자만이 제품에 대한 진품 인증 정보를 생성할 수 있고 이에 대한 검증을 할 수 있으므로 제품의 진품 여부를 정확히 보증할 수 있게 된다.
특히, 발명자가 제안한 기술은 가상화폐의 블록체인을 이용하여 위/변조가 불가능하고 실시간으로 제품 사용 관련 데이터를 기록할 수 있는 특징을 가지고 있다.
다만, 제품 사용 정보를 갱신할 필요가 있는 모든 경우에 데이터베이스에 접근하여 기록을 하는 것은 비효율적일 수 있다. 특히, transaction 요청이 많아졌을 때, 서비스 제공의 bottle neck 현상이 발생될 수 있고, 매번 transaction fee를 지불해야 하므로 서비스 운영에 많은 비용이 들 수 있는 우려가 있다.
이에 발명자는 상기 발명을 보완하여 위/변조가 불가능하고 실시간으로 제품 사용 관련 데이터를 기록할 수 있는 장점을 살리면서도 서비스 요청이 몰릴 경우에도 빠른 서비스 속도를 보장하고 비용도 절감할 수 있는 제품 사용 관련 데이터를 기록하는 시스템을 발명하였다.
본 발명은 상술한 문제점들을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여한 후, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단하고 제품 사용 관련 데이터를 기록할 수 있는 제품 사용 관련 데이터를 기록하는 시스템을 제공하는 것을 다른 목적으로 한다.
또한, 본 발명은 위와 같은 제품 사용 관련 데이터를 기록하는 시스템을 제공함에 있어, 빠른 서비스 속도를 보장하고 transaction 비용을 절감할 수 있는 것을 또 다른 목적으로 한다.
또한, 본 발명은 모든 제품 사용 정보를 블록체인에 올리는 대신에 이를 이용하여 머클 트리를 구성하여 상기 구성된 머클 트리의 루트값만을 블록체인에 등록함으로써 서비스의 속도를 향상시키고 transaction 비용을 절감할 수 있는 것을 또 다른 목적으로 한다.
또한, 본 발명은, 제품 사용 정보와 관련된 검증 요청시 상기와 같이 생성된 머클 트리를 이용하여 검증을 수행함으로써 데이터베이스의 integrity를 좀더 보장할 수 있는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 방법에 있어서, (a) 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서, 단말에 의해 상기 제품의 식별 코드가 스캔되어 상기 HD index 및 상기 고유주소가 전달되면, 상기 서버는, 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하는 단계, (b) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하는 단계, 및 (c) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 서버가, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 서버가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 단계를 포함하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 서버에 있어서, 상기 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서, 제품에 표시된 식별 코드가 단말에 의해 스캔되어 상기 HD index 및 상기 고유주소를 전달받는 통신부, 및 (1) 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하고, (2) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하며, (3) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 프로세서를 포함하는 서버가 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
또한, 본 발명은 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여한 후, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단하고 제품 사용 관련 데이터를 기록할 수 있는 효과가 있다.
또한, 본 발명은 위와 같은 제품 사용 관련 데이터를 기록하는 시스템을 제공함에 있어, 빠른 서비스 속도를 보장하고 transaction 비용을 절감할 수 있는 효과가 있다.
또한, 본 발명은 모든 제품 사용 정보를 블록체인에 올리는 대신에 이를 이용하여 머클 트리를 구성하여 상기 구성된 머클 트리의 루트값만을 블록체인에 등록함으로써 서비스의 속도를 향상시키고 transaction 비용을 절감할 수 있는 효과가 있다.
또한, 본 발명은, 제품 사용 정보와 관련된 검증 요청시 상기와 같이 생성된 머클 트리를 이용하여 검증을 수행함으로써 데이터베이스의 integrity를 좀더 보장할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버의 구성을 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 제품의 진품 여부를 확인하는 과정을 도시한 시퀀스 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 제품의 사용 관련 데이터를 기록하는 서버의 구성을 도시한 블록도이다.
도 4 및 5는 본 발명의 일 실시예에 따라 생성된 머클 트리의 예를 도시한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
각 실시예에 대한 설명에 앞서 본 명세서에서 사용되는 표현식을 다음과 같이 정의한다. ':' 의 왼쪽은 표현식을 나타내며 오른쪽은 표현식의 정의를 나타낸다.
<표현식 정의>
Hash(Y): triple sha256 of Y
HD: Hierarchical Deterministic
도 1은 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버의 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버(100)는 통신부(110) 및 프로세서(120)를 포함한다.
통신부(110)는, 외부 장치 또는 내부 모듈 간 통신을 수행하는 구성이다. 특히 통신부(110)는 후술하는 것처럼 프로세서(120)에 의해 생성된 HD index와 고유주소를 외부 장치로 제공할 수 있다. 통신부(110)는 다양한 통신 기술로 구현될 수 있다. 즉, 와이파이(WIFI), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), HSPA(High Speed Packet Access), 모바일 와이맥스(Mobile WiMAX), 와이브로(WiBro), LTE(Long Term Evolution), 블루투스(bluetooth), 적외선 통신(IrDA, infrared data association), NFC(Near Field Communication), 지그비(Zigbee), 무선랜 기술 등이 적용될 수 있다. 또한, 인터넷과 연결되어 서비스를 제공하는 경우 인터넷에서 정보전송을 위한 표준 프로토콜인 TCP/IP를 따를 수 있다.
프로세서(120)는, 결정적 키 생성법(deterministic key generation)을 이용하여 seed로부터 키를 생성하거나 생성하도록 지원할 수 있다. 즉, 프로세서(120)는, seed로부터 master public key를 생성하거나 생성하도록 지원할 수 있다. 구체적으로, 프로세서(120)는, seed로부터 master private key를 생성하거나 생성하도록 지원하고, 상기 생성된 master private key로부터 master public key를 생성하거나 생성하도록 지원할 수 있다. 이렇게 프로세서(120)는 single seed로부터 master private key와 master public key를 생성하거나 생성하도록 지원할 수 있다. 상기 seed는 512bit의 single seed일 수도 있으나 복수의 seed일 수도 있으며 복수의 seed인 경우 각 seed별로 별도의 master public key 생성이 이루어질 수 있다. 참고로, 상기 master private key와 상기 master public key는 서버(100)에 등록될 수 있다.
그리고, 프로세서(120)는, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원할 수 있다. 상기 적어도 하나의 HD index는, 제조사 정보를 나타내는 제1 child index 및 제품 정보를 나타내는 제2 child index 및 중 적어도 일부를 포함할 수 있다. HD index는 HD path라는 용어로도 사용된다.
상기 서버(100)에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성될 수 있다.
상기 제1 개별 public key를 생성하는 master public key와 HD index의 연산 처리는 단순 연산, 함수로 연산 처리 등을 포함할 수 있다.
또한, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성될 수 있다. 예를 들면, 제1 개별 public key를 가지고 SHA256해시를 산출한 후 그 결과값의 RIPEMD160 해시를 산출함으로써 제1 고유주소를 생성할 수 있다. 물론, 이와 다른 방식의 함수처리도 가능할 것이다.
프로세서(120)는 master public key를 이용하여 제조사별로 child index를 부여할 수 있다. child index는 0부터 231-1까지 20억 개가 부여될 수 있다. 예를 들면, 회사 0의 HD path는 M/0으로 나타내며, 회사 n의 HD path는 M/n으로 나타낼 수 있다. 유사하게 회사 0의 제품 0의 HD path는 M/0/0이며, 회사 a의 제품 b의 HD path는 M/a/b로 나타낼 수 있고, 회사 A의 제품 B의 3번째 제품의 고유주소를 나타내는 HD path는 M/A/B/3로 표시할 수 있다.
또한, 프로세서(120)는 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원할 수 있다.
통신부(110)는 생성된 HD index 및 고유주소를 외부 장치에 제공할 수 있고, QR코드와 같은 식별 코드에 포함하여 제공할 수도 있다. 다만, 반드시 HD index 및 고유주소가 외부 장치에 제공되어야 하는 것은 아니고, 서버(100)가 관리만 하면서 외부 장치에서 식별코드가 스캔되었을 때, 내부에 저장된 HD index 및 고유주소를 독출하여 참조만할 수도 있을 것이다.
한편, 제품이 일회용품이 아니고 소프트웨어와 같이 multiple copy에 대한 license가 존재할 수 있는 경우, 동일한 제품코드에 대해서 multiple copy에 대한 license를 설정할 수도 있다. 이 경우 상기 고유주소에 대하여 copy license를 소정의 회수만큼(이를 테면 k회) 설정할 수 있다. 프로세서(120)는 상기 고유주소를 생성하거나 생성하도록 지원함에 있어서, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 상기 k회까지 생성하여 데이터베이스로 전송 가능하도록 설정할 수 있다.
이상과 같은 방법을 통해 HD index와 제1 고유주소가 생성되면, 상기 프로세서(120)는 HD index와 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원할 수 있다.
여기서, 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값이다.
식별코드를 통해 제품의 진품 여부 및 사용 여부를 확인하는 방법과 제1 데이터베이스와 제2 데이터베이스 사이의 관계는 뒤에서 살펴보겠다.
이하에서는 도 2를 더 참조로 하여 제품의 진품 여부를 확인하는 기술을 설명한다.
도 2는 본 발명의 일 실시예에 따른 제품의 진품 여부를 확인하는 과정을 도시한 시퀀스 다이어그램이다.
제품의 진품 여부를 확인하는 서버는 전술한 서버(100)와 별도의 서버(100)일 수도 있으나, 설명의 편의를 위해 동일한 서버(100)인 것으로 상정하여 설명한다.
우선, 통신부(110)는 제품에 표시된 식별코드가 단말(300)에 의해 스캔되면 상기 단말(300)로부터 HD index 및 제1 고유주소를 수신하여 진품 확인 요청을 수신한다(S205). 단말(300)은 스마트폰과 같은 휴대 단말이 될 수도 있고, 식별코드 리더기가 될 수도 있다. 통신부(110)는 단말(300)로부터 HD index 및 고유주소를 수신할 수 있으나 이와 달리, 읽혀진 식별코드 자체를 수신하여 프로세서(120)가 이를 판독하여 HD index 및 고유주소를 추출하는 것도 물론 가능할 것이다.
프로세서(120)는 서버(100)에 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성할 수 있다. 그리고, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하여 상기 제2 고유주소와 상기 제1 고유주소가 일치하는 지를 확인함으로써 상기 HD index로부터 상기 제1 고유주소가 출력되는지 검증하거나 검증하도록 지원한다(S210).
상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 프로세서(120)는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인할 수 있다.
상기 master public key를 이용하여 상기 HD index로부터 상기 제1 고유주소가 출력되지 않으면(S215-1), 프로세서(120)는, 상기 제품이 가품인 것으로 판정하고 상응하는 응답을 출력할 수 있다(S220). 반면, 상기 master public key를 이용하여 상기 HD index로부터 상기 제1 고유주소가 출력되면(S215-2), 프로세서(120)는 상기 제품이 진품인 것으로 판정할 수 있다.
제품이 진품으로 판정된 경우, 즉, master public key를 이용하여 상기 HD index로부터 출력된 제2고유주소가 상기 제1 고유주소와 일치하는 경우, 프로세서(120)는, 데이터베이스(200)에서 상기 고유주소 상의 balance를 확인할 수 있다(S220, S225). 여기서, 데이터베이스(200)는 가상화폐의 블록체인일 수 있다.
(i) 상기 balance가 0이면(S230-2), 프로세서(120)는, 상기 제품을 아직 사용되지 않은 제품으로 판단하고, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스(200)로 전송할 수 있다. 반면, (ii) 상기 balance가 0이 아니면(S230-1), 프로세서(120)는 상기 제품을 이미 사용된 제품으로 판단하고, 상응하는 응답을 출력할 수 있다(S250).
한편, 도 2의 S205 단계에 도시된 것처럼 제품에 표시된 식별코드 스캔시 상기 제품과 관련된 소정의 정보(info)가 더 획득될 수도 있는데, 이 경우, 상기 프로세서(120)는, 상기 고유주소에 상기 제품과 관련된 소정의 정보의 해쉬값(Hash(info))을 기록하는 것을 상기 transaction에 포함시켜 상기 transaction을 생성할 수 있다.
상기 제품과 관련된 소정의 정보는, 상기 제품 사용 시각 정보(예를 들어, timestamp), 상기 제품 사용 위치 정보(예를 들어, GPS location), 상기 제품 사용 장치 정보(예를 들어, device ID) 중 적어도 일부를 포함할 수 있다.
한편, 상기 (ii)에서 상기 balance가 0이 아니고, op_return이 존재하는 경우에 한해, 프로세서(120)가, 상기 제품을 이미 사용된 제품으로 판단할 수도 있다.
또한, 상기 balance가 0인 경우, 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 transaction을 생성하여 상기 데이터베이스(200)로 전송하는 동작이 이루어질 수도 있다. 상기 특정 입력은 상기 제품에 대한 구매 확인 입력일 수 있다. 이러한 구성은 식별코드가 제품의 포장 외부에 부착되어 있어서 제품 정보 확인을 위해 단순히 식별코드를 태그하는 것만으로는 제품의 사용 상태에 아무런 영향을 미쳐서는 안되는 경우 의미가 있을 수 있다. 이 경우에는 최종적으로 구매목적으로 식별코드를 태그하는 경우에만 사용 기록이 될 필요가 있으므로 구매 확인 입력이 있는 경우에 한해 transaction을 생성하여 상기 데이터베이스(200)로 전송할 수 있는 것이다.
한편, 전술한 것처럼 동일한 고유주소에 대하여 multiple copy license가 허용된 경우, 상기 balance가 0이 아니라고 하더라도, 상기 balance가 소정의 값 미만이면, 프로세서(120)는, 상기 고유주소로 상기 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 데이터베이스(200)로 전송할 수 있다. multiple copy license가 허용된 경우에는 동일 제품에 대해서도 복수 회의 사용을 허용해야 할 필요가 있기 때문이다.
한편, 전술한 프로세서(120)는 통신부(110) 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(120)는 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(110) 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(120)는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
한편, 제품 사용 정보를 갱신할 필요가 있는 모든 경우에 데이터베이스(200)에 접근하여 기록을 하는 것은 비효율적일 수 있다. 특히, transaction 요청이 많아졌을 때, 서비스 제공의 bottle neck 현상이 발생될 수 있고, 매번 transaction fee를 지불해야 하므로 서비스 운영에 많은 비용이 들 수 있는 우려가 있다.
이하에서는 위/변조가 불가능하고 실시간으로 제품 사용 관련 데이터를 기록할 수 있는 장점을 살리면서도 서비스 요청이 몰릴 경우에도 빠른 서비스 속도를 보장하고 비용도 절감할 수 있는 제품 사용 관련 데이터를 기록하는 시스템을 설명한다. 이러한 시스템은 전술한 실시예와 달리 서버(100')에 의해 관리되는 별도의 데이터 구조를 이용한다. 이하에서 설명하는 서버(100')는 전술한 서버(100)와 동일한 장치로 구성될 수도 있으나, 설명의 편의를 위해 별도의 장치인 것으로 설명한다.
도 3은 본 발명의 일 실시예에 따른 제품의 사용 여부 관련 데이터를 기록하는 서버의 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 제품의 사용 여부 관련 데이터를 기록하는 서버(100')는 통신부(110'), 프로세서(120')를 포함한다. 전술한 서버(100)와 기능상 중복되는 설명은 생략한다.
통신부(110')는 제품에 표시된 식별코드가 단말에 의해 스캔되면, 상기 단말로부터 HD index 및 고유주소를 수신한다.
프로세서(120')는 전술한 프로세서(120)와 마찬가지로, (1) master public key를 이용하여 상기 HD index로부터 출력한 제2 고유주소가 상기 제품의 식별 코드로부터 얻은 제1 고유주소와 일치하는지를 판단하고, (2) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 제품을 진품인 것으로 판정할 수 있다. 그리고, 제1 데이터베이스(130')에서 상기 HD index 또는 상기 고유주소에 대응되는 제품 사용 정보를 확인하며, (3) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록할 수 있다.
즉, 기존에 제1 데이터베이스(130')에 사용되지 않은 것으로 등록된 제품 사용 정보를 사용된 것으로 변경하여 제1 데이터베이스(130')에 등록할 수 있다.
또한, 상기 제2 데이터베이스(200')에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, (i) 상기 프로세서(120)는, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
여기서, 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값이다.
한편, 제품 사용 정보는 제품 사용 여부를 나타내는 정보로서, 상기 고유주소로 전송된 가상화폐 정보, 제품 사용 시각 정보, 제품 사용 위치 정보, 제품 사용 장치 정보 중 적어도 일부를 포함할 수 있다.
또한, 제1 데이터베이스(130')는 상기 서버(100')에 의해 생성 및 관리되며 가상화폐(가령, 비트코인)의 블록체인 시스템과 동일 또는 유사한 시스템에 의해 운용되는 프라이빗 블록체인이고, 상기 제2 데이터베이스(200')는 가상화폐의 퍼블릭 블록체인일 수 있다. 그러나, 이와 달리, 제1 데이터베이스(130')와 제2 데이터베이스(200')는 동일한 데이터베이스로서 양자 모두 프라이빗 블록체인 또는 퍼블릭 블록체인으로 구성될 수도 있다. 또한, 제1 데이터베이스(130')는 단지 상기 제품의 사용 여부 정보를 관리하는 상기 서버(100') 내부의 데이터베이스로 구성될 수도 있다.
한편, 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 프로세서(120')는, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정하고 상기 새롭게 설정된 제품 사용 정보를 상기 제1 데이터베이스(130')에 등록하거나 등록하도록 지원할 수 있다.
한편, 상기 (3)은 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해 수행될 수 있다. 이때, 특정 입력은 상기 제품에 대한 구매 확인 입력일 수 있다.
또한, 전술한 것처럼 고유주소에 대하여 multi copy license가 허용된 경우, 상기 (3)에서 상기 확인 결과 상기 제품이 사용된 것으로 판단되는 경우라도 상기 제품 사용 정보가 상기 multi copy license 조건 내에서 추가 license가 가능한 상태이고 상기 소정의 조건(앵커링 조건)이 만족되면, 상기 프로세서(120')가, (i) 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 (ii) 상기 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다. 전술한 것처럼 multiple copy license가 허용된 경우에는 동일 제품에 대해서도 복수 회의 사용을 허용해야 할 필요가 있기 때문이다.
여기서, 상기 제품 사용 정보는 제품이 재사용되었음을 나타내도록 설정한 변경된 제품 사용 정보이며, 상기 조건이 만족되면, 상기 프로세서(120')가 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 제품 사용 정보의 해쉬값을 input 이라고 나타내고, 적어도 하나의 이웃 해쉬값을 x1, x2, …, xn이라고 나타낼 때, 대표 해쉬값 t는 다음 수학식과 같이 나타낼 수 있다.
<수학식>
t = hash(function(input, x1, x2, …, xn))
이때 서버(100')는 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 데이터 구조로 저장하여 관리할 수 있다. 여기서, 데이터 구조는 다양할 수 있는데, 일 예로 머클 트리(merkle tree) 구조가 될 수도 있다. 이 경우, 상기 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 머클 트리(merkle tree)를 통해 이루어질 수 있다.
즉, 프로세서(120')는 상기 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원할 수 있고, 상기 소정의 조건이 만족되면, 상기 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
좀더 구체적으로 설명하면, (x1) 프로세서(120')는, (i) 상기 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. (x2) 만일, 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값이 상기 대표 해쉬값이 된다. (x3) 반면, 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 프로세서(120')는, 상기 부모 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행한다.
그리고, 프로세서(120')는 최종적으로 머클 트리의 루트 노드에 할당된 해쉬값을 대표 해쉬값으로서 제2 데이터베이스(200')에 등록하거나 등록하도록 지원한다. 이때, 대표 해쉬값을 가공한 값이 등록될 수도 있다. 예를 들어, 대표 해쉬값에 hex 연산이 수행된 결과값이 등록될 수 있다.
한편, 상기 서버(100')가 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다.
특히, 상술한 예에서와 같이 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
또한, 제2 데이터 구조를 생성할 때는 제1 데이터 구조에 대한 검증이 이루어짐으로써 데이터 integrity가 좀더 보장될 수 있다. 제2 데이터 구조의 검증에 대해서는 후술하기로 한다.
또한, 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리의 경우, 상기 첫번째 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당될 수 있다. 예를 들어, 머클 트리 생성시 서버(100')에 의해 최초로 부여된 입력 메시지의 해쉬값이 할당될 수 있다.
도 4 및 5는 본 발명의 일 실시예에 따라 생성된 머클 트리의 예를 도시한 도면이다.
도 4에서는 리프 노드의 개수가 4(22)개인 머클 트리가 도시된다. 도시된 머클 트리는 첫번째 머클 트리이기 때문에(tree_id=0), 첫번째 리프 노드인 h1 노드에는 소정의 메시지 데이터 “Coinplug 2016-01-01”의 해쉬값(triplesha256digest(coinplug_unique_message))이 할당되었음을 알 수 있다. 제품 사용 정보에 대한 등록 요청이 있는 경우, 프로세서(120')는 현재 구성 중인 머클 트리의 가장 마지막 리프 노드의 다음 리프 노드를 생성하여 제품 사용 정보의 해쉬값 또는 제품 사용 정보의 해쉬값을 가공한 값을 할당하거나 할당하도록 지원한다. 예를 들어, 도 4의 머클 트리에서 이전 단계에서 두번째 리프 노드인 h1 노드까지 값 할당이 완료된 경우, 다음 리프 노드인 h2 노드를 생성하여 제품 사용 정보의 해쉬값 또는 제품 사용 정보의 해쉬값을 가공한 값(triplesha256digest(input2))을 할당할 수 있다. 또한, 프로세서(120')는 (i) 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 세번째 리프 노드인 h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 상기 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드(h23 노드)에 할당된다. 부모 노드(h23 노드)가 머클 트리의 루트 노드가 아니므로 프로세서(120')는 상기 h23 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 제품 사용 정보의 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드(h0123 노드)에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 프로세서(120')는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
한편, 전술한 소정의 조건이란, (i) 소정의 개수만큼의 제품 사용 정보가 획득되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 블록 체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함할 수 있다.
예를 들어, 프로세서(120')는 소정 시간 단위로 전술한 머클 트리의 루트값을 생성할 수 있다(상기 (ii) 조건). 이 경우 프로세서(120')는 소정의 시간이 경과되면 그때까지의 입력값을 이용하여 머클 트리를 생성하고 머클 트리의 루트값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
그런데, 이 경우에는 소정 시간이 경과하였음에도 머클 트리의 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 값이 할당되지 않을 수 있다. 이처럼 소정의 조건이 만족되었음에도 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 프로세서(120')는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 전술한 방식으로 머클 트리의 루트값이 산출되도록 할 수 있다. 예를 들어, 프로세서(120')는 상기 제품 사용 정보의 해쉬값을 복제하여 상기 형제 노드에 할당하거나 할당하도록 지원할 수 있다.
상기 서비스 특성이란, 제품 사용 정보 등록(변경) 요청을 한 사용자(회사)가 지급한 비용 정보, 제품 사용 정보 등록이 이루어지는 시간대 정보, 제품 사용 정보 등록 서비스가 이루어지는 지역 정보, 제품 사용 정보 등록 요청을 한 회사 타입 정보 중 적어도 일부가 될 수 있다. 다만, 여기서 기재한 것에 한정할 것은 아니고, 통상적으로 인정되는 차등적 서비스가 제공될 수 있는 다양한 조건 정보를 포함한다.
한편, 새로운 머클 트리 생성이 시작되고, 제품 사용 정보의 획득이 없는 상태에서 상기 소정의 조건이 만족되면, 상기 프로세서(120')는, 소정의 메시지 데이터가 첫번째 리프 노드와 두번째 리프 노드에 할당된 머클 트리를 생성하거나 생성하도록 지원하고, 상기 머클 트리의 루트값 또는 이를 가공한 값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다. 이 경우에는 리프 노드 2개짜리 머클 트리가 생성될 수 있는 것이다.
한편, 전술한 것처럼 서버(100')가 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다. 특히, 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
도 5는 본 발명의 일 실시예에 따라 상기 제2 데이터 구조로서 생성된 머클 트리를 도시한 도면이다.
도 5를 참조하면, 도 4의 머클 트리(tree_id=0)의 루트값(hex(h0123))이 새로운 머클 트리의 첫번째 리프 노드(h4 노드)에 할당되었음을 알 수 있다(triplesha256digest(input4)). 본 발명은 이와 같이 트랜잭션 발생시 생성되는 복수의 데이터 구조를 연결함으로써 중간에 데이터가 변조가 발생되는 경우라도 쉽게 트래킹이 가능하여 데이터 integrity를 향상시키는 장점을 가진다.
한편, 전술한 적어도 하나의 이웃 해쉬값은 동일 또는 다른 제조사에 의해 제조된 다른 제품에 관한 제품 사용 정보에 대한 해쉬값일 수 있다.
다음으로, 전술한 데이터 구조를 이용하여 등록된 제품 사용 정보를 검증하는 과정을 설명한다.
일 실시예로 기존에 제1 제품 사용 정보의 해쉬값과 소정 조건 하에 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 데이터베이스(상술한 제1 데이터베이스(130') 또는 제2 데이터베이스(200')일 수 있다.)에 등록되어 있는 상태에서, 통신부(110')를 통해 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 프로세서(120')는, 상기 검증 요청에 포함된 입력 데이터를 사용하여 생성된 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
또 다른 실시예로 제품 사용 정보 또는 변경된 제품 사용 정보에 대한 검증 요청이 획득되면, 상기 프로세서(120')가, (i) 상기 검증 요청된 제품 사용 정보에 대응하여 상기 제2 데이터베이스(200')에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 제품 사용 정보를 위치시켜 생성한 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
여기서, 제3 대표 해쉬값은, 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성될 수 있다.
또한, 프로세서(120')는 상기 검증 요청된 변경된 제품 사용 정보에 대응하여 상기 제2 데이터베이스(200')에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 변경된 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 변경된 제품 사용 정보를 위치시켜 생성한 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
여기서, 제4 대표 해쉬값은, 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성될 수 있다.
제4 대표 해쉬값과 제2 대표 해쉬값을 대응시켜 상기 변경된 제품 사용 정보를 검증하는 것은, 제3 대표 해쉬값과 제1 대표 해쉬값을 대응시켜 상기 제품 사용 정보를 검증하는 것과 유사하므로 이하에서는 검증 요청된 제품 사용 정보와 관련하여 서술하겠다.
이때, 검증 요청을 위해 소정의 입력데이터를 받을 수 있으며, 상기 검증 요청에 포함된 입력 데이터는, 상기 제품 사용 정보 또는 상기 제품 사용 정보 등록 당시 발급된 ID 중 어느 하나를 포함할 수 있다.
입력 데이터에 상기 제품 사용 정보 등록 당시 발급된 ID가 포함되는 경우 기존에 생성된 머클 트리에서 상기 ID에 대응되는 리프 노드에 할당된 값이 상기 검증 요청된 제품 사용 정보의 해쉬값으로 설정될 수 있다. 도 4 및 5에 도시된 예에서, 상기 ID는 unique ID일 수 있다.
검증 요청된 제품 사용 정보의 해쉬값에 대해서는 전술한 제품 사용 정보의 해쉬값에 대한 설명이 동일하게 적용될 수 있다. 즉, 검증 요청된 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 이에 대해서는 전술하였으므로 설명을 생략한다. 검증 요청된 변경된 제품 사용 정보의 해쉬값에 대해서도 마찬가지이다.
이 경우, 상기 검증 요청된 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 머클 트리(merkle tree)를 통해 이루어질 수 있다. 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 프로세서(120')는, 상기 입력 데이터 또는 상기 제품 사용 정보와 관련된 머클 트리 정보 및 리프 노드 정보를 식별할 수 있다.
그리고, 상기 제3 대표 해쉬값은, 상기 검증 요청된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
또한, 상기 제4 대표 해쉬값은, 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
프로세서(120')는, 상기 식별된 머클 트리 정보에 대응되는 상기 소정의 transaction ID를 참조할 수 있다. 이 경우, 프로세서(120')는, 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 제품 사용 정보와 관련된 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 OP 메시지를 획득하거나 획득하도록 지원할 수 있다.
또한, 프로세서(120')는, (i) 상기 검증 요청에 포함된 입력 데이터 또는 제품 사용 정보를 사용하여 생성된 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하고, (ii) 상기 검증 요청에 포함된 입력 데이터 또는 변경된 제품 사용 정보를 사용하여 생성된 상기 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
한편, 상기 소정의 transaction ID는 입력 데이터에 포함되어 제공될 수도 있다. 즉, 사용자는 검증 요청시 전술한 (i) 상기 제품 사용 정보, (ii) 제품 사용 정보 등록 당시 발급된 ID 중 어느 하나와 함께 transaction ID를 서버(100')에 전달할 수도 있다.
검증 연산과정에서 프로세서(120')는 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있는데, 여기에는 전술한 제품 사용 정보 등록(또는 변경) 과정에서 생성된 머클 트리가 이용될 수 있다. 즉, 프로세서(120')는 (y1) (i) 상기 검증 요청된 제품 사용 정보의 해쉬값과 (ii) 기존에 생성된 머클 트리에서 상기 검증 요청된 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 새로운 머클 트리에서 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. 또한, (y2) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제3 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고, (y3) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 검증 요청된 제품 사용 정보의 해쉬값으로 하여 상기 (y1) 내지 (y3)를 반복하여 수행할 수 있다.
프로세서(120')는, 최종적으로 생성된 머클 트리의 루트값 또는 이를 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
이처럼 본 발명은 제품 사용 정보 등록 단계에서 nm(=N)개의 리프 노드를 가지는 머클 트리가 생성이 되면, 머클 트리의 높이(lognN=m)만큼의 연산만을 수행함으로써 제품 사용 정보의 검증을 수행할 수 있어 빠르게 transaction의 integrity 확인이 가능하게 된다.
한편, 프로세서(120')는 입력 데이터를 획득하는 경우, 입력 데이터와 관련된 시간 정보를 참조로 하여 상기 입력 데이터와 관련된 머클 트리 정보 및 리프 노드 정보 중 적어도 하나를 식별할 수도 있다.
한편, 상기 제품에 대한 copy license가 k 회 허용된 경우, 프로세서(120')는 상기 제품 사용 정보와 관련된 검증을 수행함에 있어서, 소정 액수의 가상 화폐를 입금하는 transaction이 상기 k회 이하인지 여부를 검증할 수 있다.
이하에서는 도 4에 도시된 구체적인 예를 들어 검증 과정을 설명한다.
다시 도 4를 참조하면, input 2에 대한 검증 요청이 있는 경우, 프로세서(120')는 입력 데이터 정보를 참조로 하여 기존에 생성된 머클 트리와 리프 노드 정보를 식별하고, 식별된 머클 트리 정보(tree_id = 0)에 대응되는 소정의 transaction ID를 데이터베이스에 전송하여 데이터베이스로부터 OP 메시지를 획득한다. 그리고, 프로세서(120')는 input 2를 이용하여 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있다. input 2의 해쉬값(triplesha256digest(input2))이 h2 노드에 할당되어 있으므로 프로세서(120')는 h2 노드에 할당된 해쉬값과 기존에 생성된 머클 트리에서 h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 상기 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드인 h23 노드에 할당된다. h23 노드가 새로운 머클 트리의 루트 노드가 아니므로 프로세서(120')는 상기 h23 노드에 할당된 해쉬값을 상기 검증 요청된 제품 사용 정보의 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 검증 요청된 제품 사용 정보의 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 기존에 생성된 머클 트리에서 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드인 h0123 노드에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 프로세서(120')는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원할 수 있다.
한편, 전술한 프로세서(120')는 통신부(110') 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(120')는 서버(100')의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(110') 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(120')는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100, 100' : 서버
110, 110' : 통신부
120, 120' : 프로세서
130' : 제1 데이터베이스
200' : 제2 데이터베이스
300 : 단말

Claims (44)

  1. 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 방법에 있어서,
    (a) 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서, 단말에 의해 상기 제품의 식별 코드가 스캔되어 상기 HD index 및 상기 제1 고유주소가 전달되면, 상기 서버는, 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하는 단계,
    (b) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하는 단계, 및
    (c) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 서버가, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 서버가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 데이터베이스는 상기 서버에 의해 생성 및 관리되며 가상화폐의 블록체인 시스템과 동일 또는 유사한 시스템에 의해 운용되는 프라이빗 블록체인이고, 상기 제2 데이터베이스는 가상화폐의 블록체인 자체인 퍼블릭 블록체인인 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 제1 데이터베이스 및 상기 제2 데이터베이스는 동일한 데이터베이스인 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 제1 데이터베이스는,
    상기 제품의 사용 여부 정보를 관리하는 상기 서버 내부의 데이터베이스인 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 (c) 단계가 수행되는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 특정 입력은 상기 제품에 대한 구매 확인 입력인 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 적어도 하나의 이웃 해쉬값은 동일 또는 다른 제조사에 의해 제조된 다른 제품에 관한 제품 사용 정보에 대한 해쉬값인 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 제품 사용 정보는,
    상기 고유주소로 전송된 가상화폐 정보, 제품 사용 시각 정보, 제품 사용 위치 정보, 제품 사용 장치 정보 중 적어도 일부를 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 고유주소에 대하여 multi copy license가 허용된 경우,
    상기 (c) 단계는,
    (i) 상기 확인 결과 상기 제품이 사용된 것으로 판단되는 경우라도 상기 제품 사용 정보가 상기 multi copy license 조건 내에서 추가 license가 가능한 상태이면, 상기 서버가, 상기 제품 사용 정보를 상기 제품이 재사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 앵커링 조건이 만족되면, 상기 서버가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 앵커링 조건은,
    (i) 소정의 개수만큼의 상기 제품 사용 정보가 획득되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 블록 체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  11. 제1항에 있어서,
    상기 머클 트리가 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리인 경우, 상기 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당되는 것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 앵커링 조건이 만족되면,
    (x1) 상기 서버는, (i) 상기 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원하며,
    (x2) 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 대표 해쉬값으로서 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하고,
    (x3) 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 (x1)에서
    상기 앵커링 조건이 만족되었음에도 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 상기 서버는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 상기 (x1) 내지 (x3)를 수행하는 것을 특징으로 하는 방법.
  14. 제1항에 있어서,
    상기 서버가 상기 제품 사용 정보 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터 구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결되는 것을 특징으로 하는 방법.
  15. 제14항에 있어서,
    상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당되는 것을 특징으로 하는 방법.
  16. 제1항에 있어서,
    (d) 상기 제품 사용 정보 또는 상기 변경된 제품 사용 정보에 대한 검증 요청이 획득되면, 상기 서버가, (i) 상기 검증 요청된 제품 사용 정보에 대응하여 상기 제2 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 제품 사용 정보를 위치시켜 생성한 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하거나, (ii) 상기 검증 요청된 변경된 제품 사용 정보에 대응하여 상기 제2 데이터베이스에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 변경된 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 변경된 제품 사용 정보를 위치시켜 생성한 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 제품에 대한 copy license가 k 회 허용된 경우, 상기 제품 사용 정보와 관련된 검증을 수행함에 있어서, 소정 액수의 가상 화폐를 입금하는 transaction이 상기 k회 이하인지 여부를 검증하는 것을 특징으로 하는 방법.
  18. 제16항에 있어서,
    상기 (d) 단계는,
    (d1) 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 서버가, 상기 제품 사용 정보와 관련된 소정의 transaction ID를 참조하는 단계,
    (d2) 상기 서버가, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 OP 메시지를 획득하는 단계, 및
    (d3) (i) 상기 검증 요청에 포함된 제품 사용 정보를 사용하여 생성된 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 서버가, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하고, (ii) 상기 검증 요청에 포함된 변경된 제품 사용 정보를 사용하여 생성된 상기 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 서버가, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하는 단계를 포함하는 방법.
  19. 제18항에 있어서,
    상기 (d1) 단계에서,
    상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 서버는, 상기 제품 사용 정보와 관련된 머클 트리 정보 및 리프 노드 정보를 식별하고, 상기 식별된 머클 트리 정보에 대응되는 상기 소정의 transaction ID를 참조하는 것을 특징으로 하는 방법.
  20. 제18항에 있어서,
    상기 제3 대표 해쉬값은, 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되고, 상기 제4 대표 해쉬값은, 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 것을 특징으로 하는 방법.
  21. 제20항에 있어서,
    상기 제3 대표 해쉬값은,
    상기 검증 요청된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되고,
    상기 제4 대표 해쉬값은,
    상기 검증 요청된 변경된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 것을 특징으로 하는 방법.
  22. 제21항에 있어서,
    상기 서버는,
    (x1) (i) 상기 검증 요청된 제품 사용 정보의 해쉬값과 (ii) 상기 검증 요청된 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원하며,
    (x2) 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제3 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고,
    (x3) 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 검증 요청된 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행하는 것을 특징으로 하는 방법.
  23. 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하는 서버에 있어서,
    상기 서버에 등록되어 있는 master public key에 대한 계층 결정적(Hierarchical Deterministic) 트리 구조를 이용하여 각각의 제품에 매칭되는 HD index - 상기 HD index는 상기 계층 결정적 트리 구조에서 상기 각각의 제품과 매칭되는 노드의 경로임 - 가 생성되며, 상기 master public key를 이용하여 상기 생성된 HD index를 연산 처리함으로써 상기 HD index에 대응되는 제1 개별 public key가 생성되고, 상기 생성된 제1 개별 public key를 함수처리함으로써 상기 제품에 대응되는 제1 고유주소가 생성되며, 상기 생성된 HD index와 상기 제1 고유주소가 상기 제품의 식별 코드로 상기 제품에 기록되도록 하며, 상기 HD index 또는 상기 제1 고유주소에 대응되는 제품 사용 정보를 제1 데이터베이스에 등록하고, 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되어 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 제2 데이터베이스에 등록되거나 등록되도록 지원한 상태에서,
    제품에 표시된 식별 코드가 단말에 의해 스캔되어 상기 HD index 및 상기 고유주소를 전달받는 통신부, 및
    (1) 상기 등록되어 있는 master public key를 이용하여 상기 전달된 상기 HD index를 연산 처리하여 제2 개별 public key를 생성하고, 상기 제2 개별 public key를 함수처리함으로써 제2 고유주소를 생성하며, 상기 생성된 제2 고유주소와 상기 단말로부터 전달된 상기 제1 고유주소를 비교하고, (2) 상기 제1 고유주소와 상기 제2 고유주소가 일치하면, 상기 서버는, 상기 제품을 진품인 것으로 판정하고, 제1 데이터베이스에서 상기 HD index 또는 고유주소 - 상기 고유 주소는 제1 고유주소 또는 상기 제2 고유주소임 - 에 대응되는 상기 제품 사용 정보를 확인하며, (3) (i) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 제2 데이터베이스에 소정의 해쉬값을 등록하기 위한 앵커링 조건이 만족되면, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값 - 상기 이웃 해쉬값은 상기 앵커링 조건에 의해 생성되는 하나의 머클 트리에서의 리프 노드에 위치되는 해쉬값 중에서 상기 변경된 제품 사용 정보의 해쉬값과 이웃하는 해쉬값임 - 을 연산함으로써 생성되는 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 프로세서를 포함하는 서버.
  24. 제23항에 있어서,
    상기 제1 데이터베이스는 상기 서버에 의해 생성 및 관리되며 가상화폐의 블록체인 시스템과 동일 또는 유사한 시스템에 의해 운용되는 프라이빗 블록체인이고, 상기 제2 데이터베이스는 가상화폐의 블록체인 자체인 퍼블릭 블록체인인 것을 특징으로 하는 서버.
  25. 제23항에 있어서,
    상기 제1 데이터베이스 및 상기 제2 데이터베이스는 동일한 데이터베이스인 것을 특징으로 하는 서버.
  26. 제23항에 있어서,
    상기 제1 데이터베이스는,
    상기 제품의 사용 여부 정보를 관리하는 상기 서버 내부의 데이터베이스인 것을 특징으로 하는 서버.
  27. 제23항에 있어서,
    상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 (3) 단계가 수행되는 것을 특징으로 하는 서버.
  28. 제27항에 있어서,
    상기 특정 입력은 상기 제품에 대한 구매 확인 입력인 것을 특징으로 하는 서버.
  29. 제23항에 있어서,
    상기 적어도 하나의 이웃 해쉬값은 동일 또는 다른 제조사에 의해 제조된 다른 제품에 관한 제품 사용 정보에 대한 해쉬값인 것을 특징으로 하는 서버.
  30. 제23항에 있어서,
    상기 제품 사용 정보는,
    상기 고유주소로 전송된 가상화폐 정보, 제품 사용 시각 정보, 제품 사용 위치 정보, 제품 사용 장치 정보 중 적어도 일부를 포함하는 것을 특징으로 하는 서버.
  31. 제23항에 있어서,
    상기 고유주소에 대하여 multi copy license가 허용된 경우,
    상기 (3) 단계는,
    (i) 상기 확인 결과 상기 제품이 사용된 것으로 판단되는 경우라도 상기 제품 사용 정보가 상기 multi copy license 조건 내에서 추가 license가 가능한 상태이면, 상기 프로세서가, 상기 제품 사용 정보를 상기 제품이 재사용되었음을 나타내도록 설정한 변경된 제품 사용 정보를 상기 제1 데이터베이스에 등록하고, (ii) 상기 앵커링 조건이 만족되면, 상기 프로세서가, 상기 변경된 제품 사용 정보의 해쉬값 및 상기 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하는 것을 특징으로 하는 서버.
  32. 제23항에 있어서,
    상기 앵커링 조건은,
    (i) 소정의 개수만큼의 상기 제품 사용 정보가 획득되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 블록 체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함하는 것을 특징으로 하는 서버.
  33. 제23항에 있어서,
    상기 머클 트리가 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리인 경우, 상기 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당되는 것을 특징으로 하는 서버.
  34. 제23항에 있어서,
    상기 앵커링 조건이 만족되면,
    (x1) 상기 프로세서는, (i) 상기 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원하며,
    (x2) 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 대표 해쉬값으로서 상기 제2 데이터베이스에 등록하거나 등록하도록 지원하고,
    (x3) 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행하는 것을 특징으로 하는 서버.
  35. 제34항에 있어서,
    상기 (x1)에서
    상기 앵커링 조건이 만족되었음에도 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 상기 서버는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 상기 (x1) 내지 (x3)를 수행하는 것을 특징으로 하는 서버.
  36. 제23항에 있어서,
    상기 프로세서가 상기 제품 사용 정보 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터 구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결되는 것을 특징으로 하는 서버.
  37. 제36항에 있어서,
    상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당되는 것을 특징으로 하는 방법.
  38. 제23항에 있어서,
    (4) 상기 제품 사용 정보 또는 상기 변경된 제품 사용 정보에 대한 검증 요청이 획득되면, (i) 상기 검증 요청된 제품 사용 정보에 대응하여 상기 제2 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 제품 사용 정보를 위치시켜 생성한 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하거나, (ii) 상기 검증 요청된 변경된 제품 사용 정보에 대응하여 상기 제2 데이터베이스에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값에 대한 머클 트리 정보를 확인하며, 상기 확인된 머클 트리 정보에서 상기 변경된 제품 사용 정보가 위치하는 리프 노드에 상기 검증 요청된 변경된 제품 사용 정보를 위치시켜 생성한 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 제2 데이터베이스에 등록된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하는 프로세서를 포함하는 서버.
  39. 제38항에 있어서,
    상기 프로세서는,
    상기 제품에 대한 copy license가 k 회 허용된 경우, 상기 제품 사용 정보와 관련된 검증을 수행함에 있어서, 소정 액수의 가상 화폐를 입금하는 transaction이 상기 k회 이하인지 여부를 검증하는 것을 특징으로 하는 서버.
  40. 제38항에 있어서,
    상기 프로세서는,
    상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 제품 사용 정보와 관련된 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 OP 메시지를 획득하며,
    (i) 상기 검증 요청에 포함된 제품 사용 정보를 사용하여 생성된 상기 제3 대표 해쉬값 또는 상기 제3 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하고, (ii) 상기 검증 요청에 포함된 변경된 제품 사용 정보를 사용하여 생성된 상기 제4 대표 해쉬값 또는 상기 제4 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값과 대응되면, 상기 변경된 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원하는 것을 특징으로 하는 서버.
  41. 제40항에 있어서,
    상기 프로세서는,
    상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 서버는, 상기 제품 사용 정보와 관련된 머클 트리 정보 및 리프 노드 정보를 식별하고, 상기 식별된 머클 트리 정보에 대응되는 상기 소정의 transaction ID를 참조하는 것을 특징으로 하는 서버.
  42. 제40항에 있어서,
    상기 제3 대표 해쉬값은, 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되고, 상기 제4 대표 해쉬값은, 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 것을 특징으로 하는 서버.
  43. 제42항에 있어서,
    상기 제3 대표 해쉬값은,
    상기 검증 요청된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되고,
    상기 제4 대표 해쉬값은,
    상기 검증 요청된 변경된 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값 및 상기 검증 요청된 변경된 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 것을 특징으로 하는 서버.
  44. 제43항에 있어서,
    상기 프로세서는,
    (x1) (i) 상기 검증 요청된 제품 사용 정보의 해쉬값과 (ii) 상기 검증 요청된 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원하며,
    (x2) 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제3 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고,
    (x3) 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 검증 요청된 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행하는 것을 특징으로 하는 서버.
KR1020170056569A 2017-05-02 2017-05-02 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버 KR101862856B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170056569A KR101862856B1 (ko) 2017-05-02 2017-05-02 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170056569A KR101862856B1 (ko) 2017-05-02 2017-05-02 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020160040460 Division 2016-04-01

Publications (2)

Publication Number Publication Date
KR20170113481A true KR20170113481A (ko) 2017-10-12
KR101862856B1 KR101862856B1 (ko) 2018-05-31

Family

ID=60140745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170056569A KR101862856B1 (ko) 2017-05-02 2017-05-02 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버

Country Status (1)

Country Link
KR (1) KR101862856B1 (ko)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101978093B1 (ko) * 2018-05-11 2019-05-13 김정우 실적증명 기반 가상화폐 지급방법
WO2019164170A1 (ko) * 2018-02-22 2019-08-29 ㈜티비스톰 블록체인을 통한 상품의 유통 및 유통이력 조회 관리 플랫폼
WO2019203387A1 (ko) * 2018-04-20 2019-10-24 주식회사 시그마체인 블록체인 기반 블록 검증 방법
KR20190137068A (ko) * 2018-05-29 2019-12-10 알리바바 그룹 홀딩 리미티드 블록체인 기반 상품 클레임 방법 및 장치, 및 전자 디바이스
KR102079578B1 (ko) * 2019-11-21 2020-02-20 한국조폐공사 다중 서명을 통해 블록체인 네트워크 간 데이터 앵커링의 신뢰성 및 안정성을 확보하기 위한 방법 및 이를 이용한 블록체인 네트워크
WO2020112251A1 (en) * 2018-11-30 2020-06-04 Mastercard International Incorporated Methods and systems for secure product tracking data storage and verification
CN111899016A (zh) * 2018-10-31 2020-11-06 创新先进技术有限公司 一种基于区块链的质量数据处理方法和装置
KR20200137818A (ko) * 2019-05-31 2020-12-09 주식회사 구하다 블록체인 기반의 쇼핑몰에서 커뮤니티 운영 방법 및 그 시스템
KR20200145211A (ko) * 2019-06-21 2020-12-30 주식회사 구하다 블록체인 기반의 쇼핑몰에서 커뮤니티를 이용한 제품 감정 방법 및 그 시스템
KR102289817B1 (ko) * 2021-01-05 2021-08-17 주식회사 아티팩츠 작품의 진품 검증 및 관리 제공 시스템 및 방법
CN113704249A (zh) * 2021-07-14 2021-11-26 杭州溪塔科技有限公司 一种区块链中使用静态默克尔树的方法和装置
CN114153849A (zh) * 2021-12-02 2022-03-08 深圳前海微众银行股份有限公司 一种区块链的数据生成及验证方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102117063B1 (ko) * 2018-12-12 2020-06-26 애니팬 주식회사 스타마케팅 시스템을 이용한 펀딩 유치 및 수익 재분배 시스템 및 그 방법

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019164170A1 (ko) * 2018-02-22 2019-08-29 ㈜티비스톰 블록체인을 통한 상품의 유통 및 유통이력 조회 관리 플랫폼
WO2019203387A1 (ko) * 2018-04-20 2019-10-24 주식회사 시그마체인 블록체인 기반 블록 검증 방법
KR101978093B1 (ko) * 2018-05-11 2019-05-13 김정우 실적증명 기반 가상화폐 지급방법
US10922757B2 (en) 2018-05-29 2021-02-16 Advanced New Technologies Co., Ltd. Blockchain-based commodity claim method and apparatus, and electronic device
KR20190137068A (ko) * 2018-05-29 2019-12-10 알리바바 그룹 홀딩 리미티드 블록체인 기반 상품 클레임 방법 및 장치, 및 전자 디바이스
US11023981B2 (en) 2018-05-29 2021-06-01 Advanced New Technologies Co., Ltd. Blockchain-based commodity claim method and apparatus, and electronic device
CN111899016A (zh) * 2018-10-31 2020-11-06 创新先进技术有限公司 一种基于区块链的质量数据处理方法和装置
WO2020112251A1 (en) * 2018-11-30 2020-06-04 Mastercard International Incorporated Methods and systems for secure product tracking data storage and verification
US11604770B2 (en) 2018-11-30 2023-03-14 Mastercard International Incorporated Methods and systems for secure product tracking data storage and verification
KR20200137818A (ko) * 2019-05-31 2020-12-09 주식회사 구하다 블록체인 기반의 쇼핑몰에서 커뮤니티 운영 방법 및 그 시스템
KR20200145211A (ko) * 2019-06-21 2020-12-30 주식회사 구하다 블록체인 기반의 쇼핑몰에서 커뮤니티를 이용한 제품 감정 방법 및 그 시스템
KR102079578B1 (ko) * 2019-11-21 2020-02-20 한국조폐공사 다중 서명을 통해 블록체인 네트워크 간 데이터 앵커링의 신뢰성 및 안정성을 확보하기 위한 방법 및 이를 이용한 블록체인 네트워크
KR102289817B1 (ko) * 2021-01-05 2021-08-17 주식회사 아티팩츠 작품의 진품 검증 및 관리 제공 시스템 및 방법
CN113704249A (zh) * 2021-07-14 2021-11-26 杭州溪塔科技有限公司 一种区块链中使用静态默克尔树的方法和装置
CN114153849A (zh) * 2021-12-02 2022-03-08 深圳前海微众银行股份有限公司 一种区块链的数据生成及验证方法及装置

Also Published As

Publication number Publication date
KR101862856B1 (ko) 2018-05-31

Similar Documents

Publication Publication Date Title
KR101862856B1 (ko) 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버
CN109981679B (zh) 在区块链网络中执行事务的方法和装置
WO2020124317A1 (en) Multi-access edge computing node with distributed ledger
KR101795697B1 (ko) 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버
US11669832B2 (en) Blockchain-implemented method and system for access control on remote internet-enabled resources
US10491396B2 (en) Method and server for providing notary service for file and verifying file recorded by notary service
US10235538B2 (en) Method and server for providing notary service for file and verifying file recorded by notary service
US10073916B2 (en) Method and system for facilitating terminal identifiers
US20190294636A1 (en) Providing microservice information
US20240080205A1 (en) System and method for off-chain cryptographic transaction verification
US8874921B2 (en) System and method for generating keyless digital multi-signatures
CN107967416A (zh) 版权维权检测的方法、装置和系统
RU2016105768A (ru) Системы и способы для функционально совместимой обработки сетевых маркеров
CN109067732A (zh) 物联网设备及数据接入系统、方法及计算机可读存储介质
CN111597567B (zh) 数据处理方法、装置、节点设备及存储介质
US10049078B1 (en) Accessing a memory location using a two-stage hash scheme
KR20170099154A (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하고 등록된 주주명부 파일을 검증하는 방법 및 서버
CN112003940B (zh) 基于区块链和在线业务的支付网络状态处理方法及服务器
KR20210102470A (ko) 블록체인과는 다른 형식의 저장소에 저장되는 블록체인 데이터를 검증하는 방법 및 시스템
KR101351435B1 (ko) 시리즈 데이터의 보호장치
CN106548043A (zh) 一种应用程序的授权方法、安装方法、安装端及系统
JP2019519849A (ja) サーバへの攻撃を防ぐ方法及びデバイス
CN112132576B (zh) 基于区块链通信的支付信息处理方法及区块链信息平台
CN112181599B (zh) 模型训练方法、装置及存储介质
KR101829731B1 (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하는 방법 및 서버

Legal Events

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