KR20220044603A - 블록체인 데이터베이스 관리 시스템 - Google Patents

블록체인 데이터베이스 관리 시스템 Download PDF

Info

Publication number
KR20220044603A
KR20220044603A KR1020227009336A KR20227009336A KR20220044603A KR 20220044603 A KR20220044603 A KR 20220044603A KR 1020227009336 A KR1020227009336 A KR 1020227009336A KR 20227009336 A KR20227009336 A KR 20227009336A KR 20220044603 A KR20220044603 A KR 20220044603A
Authority
KR
South Korea
Prior art keywords
transaction
database
dbms
request
data
Prior art date
Application number
KR1020227009336A
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 엔체인 홀딩스 리미티드
Publication of KR20220044603A publication Critical patent/KR20220044603A/ko

Links

Images

Classifications

    • 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/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • 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
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 양상에서, 본 개시는 새로운 데이터 구조를 구현하기 위해 블록체인 트랜잭션에 관한 새로운 구조화된 데이터를 제공하기 위한 방법, 디바이스 및 시스템 및 디바이스를 제안한다. 이 새로운 데이터 구조는 분산 데이터베이스를 구현하기 위해 제공된다. 다른 양상에서, 새로운 데이터 구조와 연관된 데이터를 관리할 수 있는 새로운 분산 데이터 관리 시스템(DBMS)이 제공된다. 하지만, 본 개시는 전통적인 데이터베이스에 대한 종래의 DBMS와 달리, 하나 이상의 블록체인 트랜잭션과 연관된 데이터를 관리하도록 구성된 블록체인 DBMS를 제공하며, 상기 데이터는 새로운 데이터 구조에 저장된다. 다른 양상에서, 본 개시는 데이터베이스에 액세스하거나 또는 이를 조작하기 위해 수신되는 하나 이상의 표준 데이터베이스 명령을 구현하기 위한 하나 이상의 블록체인 트랜잭션을 생성하거나 또는 제공하기 위한 방법을 제공하며, 여기서 데이터는 새로운 데이터 구조에 저장된다.

Description

블록체인 데이터베이스 관리 시스템
본 개시는 일반적으로 분산 원장과 연관된 트랜잭션에 관한 데이터에 대한 데이터베이스 및/또는 데이터베이스 관리 시스템을 구현하기 위한 방법 및 시스템에 관한 것이다. 본 개시는 기존의 데이터베이스가 분산 원장으로 마이그레이션되거나(migrated) 또는 이와 연관되어 구현되는 응용, 즉 데이터베이스에 대한 데이터가 이러한 마이그레이션 이후에 분산 원장에 관한 트랜잭션과 연관되는 응용에 특히 적합하지만, 이에 제한되지 않는다.
본 문서에서, '블록체인'이란 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledgers)을 포함하는 것으로 사용한다. 이는 컨센서스-기반의 블록체인(consensus-based blockchain) 및 트랜잭션-체인 기술, 허가된 및 허가되지 않은 원장, 공유 원장, 공개 및 개인 블록체인 및 이의 변형을 포함한다. 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이지만, 다른 블록체인 구현이 제안되고 개발되었다. 비트코인이 본원에서 편의 및 예시의 목적으로 언급될 수 있지만, 본 개시가 비트코인 블록체인을 통해 사용하는 것으로 제한되지는 않으며, 디지털 자산의 임의의 종류 및 디지털 자산의 표현과 연관된 대안적인 블록체인 구현 및 프로토콜은 본 개시의 범주 내에 속한다. "사용자", "전송자", "수신자"라는 용어는 본원에서 컴퓨팅 또는 프로세서-기반 리소스를 지칭할 수 있다. 본원에서 사용된 "비트코인"이란 용어는 비트코인 프로토콜을 기초로 하거나, 또는 이로부터 도출되는 임의의 버전 또는 변형을 포함하는 것으로 본원에서 사용된다. "디지털 자산"이라는 용어는 암호화폐, 자산의 적어도 일부를 나타내는 토큰(tokens), 스마트 계약, 라이선스, 즉 소프트웨어 라이선스 또는 미디어 콘텐츠에 대한 DRM 계약 등과 같은 임의의 전송 가능한 자산을 지칭할 수 있다. 디지털 자산이란 용어는 하나의 엔티티로부터 다른 엔티티로의 트랜잭션에서 지불로 전송되거나 또는 제공될 수 있는 값과 연관될 수 있는 상품을 나타내기 위해 본 문서 전체에서 사용된다는 것이 이해될 것이다.
블록체인은 결국 트랜잭션으로 구성되는 블록으로 구성되는 컴퓨터-기반의 탈중앙화된(decentralised) 분산 시스템으로 구현된 피어 투 피어(peer-to-peer) 전자 원장이다. 각 트랜잭션은 블록체인 시스템에서 참가자 간의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각 블록은 블록이 그의 시작 이래로 블록체인에 기록된 모든 트랜잭션의 영구적이고 변경할 수 없는 레코드를 생성하기 위해 함께 연쇄되도록 이전 블록의 해시(hash)를 포함한다. 트랜잭션은 그 입력 및 출력에 내재된(embedded) 스크립트로 알려진 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 지정한다. 비트코인 플랫폼에 대해, 이들 스크립트는 스택-기반의 스크립팅 언어(stack-based scripting language)를 사용하여 기록된다.
트랜잭션이 블록체인에 기록되게 하기 위해, 이는 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각 트랜잭션이 유효하고, 무효한 트랜잭션이 네트워크로부터 거부됨을 보장하기 위한 작업을 수행한다. 노드 상에 설치된 소프트웨어 클라이언트는 그의 잠금 및 잠금 해제 스크립트를 실행함으로써, 소비되지 않은 트랜잭션(unspent transaction, UTXO)에 대해 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가되는 경우 트랜잭션은 유효하고, 그 후 트랜잭션은 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되게 하기 위해, 이는 i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 - 트랜잭션이 유효성 검증되는 경우, 노드는 네트워크에서 다른 노드에 이를 중계(relay)함 -; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하며; 및 iii) 채굴, 즉 과거 트랜잭션의 공공 원장에 추가되어야 한다.
블록체인에 UTXO로 저장되면, 사용자는 연관된 리소스의 제어를 다른 트랜잭션에서의 입력과 연관된 다른 주소로 전송할 수 있다. 이 전송은 보통 디지털 지갑을 사용하여 행해진다. 이 디지털 지갑은 디바이스, 물리적 매체, 프로그램, 데스크톱, 랩톱 또는 모바일 단말기와 같은 컴퓨팅 디바이스 상의 애플리케이션(앱) 또는 인터넷과 같은 네트워크 작업 상에서 도메인과 연관된 원격 호스팅 서비스일 수 있다. 디지털 지갑은 공개 및 개인 키를 저장하고, 사용자와 연관된 리소스, 토큰 및 자산 등의 소유권을 추적하고, 디지털 자산을 수신하거나 또는 지불하며, 암호화폐 또는 라이선스 또는 자산 또는 다른 타입의 리소스와 같은 디지털 자산에 관련될 수 있는 토큰을 전송하는 데 사용될 수 있다.
블록체인 기술이 디지털 자산, 즉 암호화폐 구현 또는 토큰에 관련되어 사용되는 것으로 가장 널리 알려져 있지만, 디지털 기업가는 기초가 되는 암호화 보안 시스템, 및 새로운 시스템을 구현하기 위해 블록체인 상에 저장될 수 있는 다른 타입의 데이터 모두의 사용을 탐색하기 시작하였다. 블록체인이 디지털 자산의 영역으로 제한되지 않는 자동화된 작업 및 프로세스에 사용될 수 있는 경우, 이는 매우 유리할 것이다. 이러한 해결책은 블록체인의 장점(예를 들어, 이벤트의 영구적인 변조 방지 레코드, 분산 처리 등)을 이용할 수 있으면서, 그의 응용에서 더욱 범용성이 있을 것이다. 따라서, 공개 블록체인은 보안을 위한 암호화 및 경제적 인센티브를 모두 이용하는 불변의 분산 데이터 저장 시스템의 역할을 한다.
하지만, 이러한 보안 요소는 분산 데이터베이스 및/또는 개인 및/또는 기업 데이터베이스와 같은 데이터베이스에 항상 존재하는 것은 아니다. 데이터의 일부가 여러 상이한 물리적 위치에 저장되고 계산 능력이 연관된 노드 간에 분산되는 데이터베이스는 분산 데이터베이스로 지칭된다. 그러므로, 이는 분산 데이터베이스를 공격에 취약하게 한다. 보안 특성은 분산 데이터베이스를 사용하는 다수의 기업에 중요하며, 이는 분산 데이터베이스 관리 시스템(Distributed database management system, 분산 DBMS 또는 DDBMS)에 의해 관리될 수 있다. DDBMS는 분산된 데이터를 그것이 단일 서버 또는 컴퓨팅 리소스에 저장된 것처럼 관리될 수 있게 통합하는 컴퓨터 소프트웨어 시스템이고, 분산된 데이터베이스에서 데이터를 업데이트하고 쿼리할 수 있는 체계적인 수단을 제공한다.
단일 실패 지점을 방지하기 위해 네트워크를 통한 정보의 탈중앙화된 저장(decentralized storage)을 하는 것과 같이, 블록체인과 분산 데이터베이스 사이에 있을 수 있는 다수의 유사점이 있다. 블록체인의 장점은 암호화 해시 함수가 데이터를 링크하는 데 사용되어 그의 시작 이래로 모든 유효한 동작의 변경할 수 없는 레코드로 이어지는 기본 데이터 구조로부터 비롯된다. 이는 개인 또는 기존의 데이터베이스가 제공할 수 없는 투명성 및 감사에 대한 중요한 특성이다. 하지만, 그럼에도 분산 원장과 연관시켜 즉, 블록체인에 통합되도록 현재 분산 데이터베이스 및 DDBMS 시스템을 마이그레이션하기 위한 간단한 기술이 존재하지 않는다. 데이터를 관리하기 위한 것으로 지칭된 다수의 제안된 블록체인 해결책은 현재 분산 데이터베이스와의 상호 작용을 제공하지 않으며, 이는 기업이 데이터를 관리하고 저장하기 위해 더 안전한 블록체인 기반 구현으로 변경하는 데 기술적 방해물이다. 상업적인 관점으로부터, 이러한 상호 작용은 기업으로부터 더 큰 투자를 수반하며, 그것이 변경에 저항하게 할 수 있다.
본 개시는 기존(분산) 데이터베이스에서 이미 사용된 것과 같은 기존 및 공통 데이터베이스 특성이 분산 원장, 즉 블록체인에 대한 또는 이를 사용하여 분산 데이터베이스를 구현하는 데 사용될 수 있는 기술을 제안함으로써 이러한 기술적 문제를 해결한다. 그러므로, 본 개시는 기존 데이터베이스 및 그의 특성뿐만 아니라 블록체인과 호환되는 새로운 데이터 구조를 구현하기 위한 양상 및 실시예를 제공하며, 그로 인해 상호작용성 및 확장성을 보장하고 블록체인 구현에 의해 제공되는 추가 보안을 이용한다. 본 개시는 또한 이 새로운 데이터 구조를 관리하기 위한 블록체인과 연관된 DBMS를 제공한다. 그로 인해, 본 개시는 기존의 비-블록체인 데이터베이스와의 상호 작용을 달성하기 위한 수단을 가능하게 하며, 이는 현재(민간 기업 또는 기타) 데이터베이스 시스템의 더 안전하고 강력한 동등한 블록체인 시스템으로의 점진적 변환에 중요하다.
일 양상에서, 본 개시는 새로운 데이터 구조를 구현하기 위해 블록체인 트랜잭션에 관한 새로운 구조화된 데이터 저장 기술을 제공하기 위한 방법, 디바이스 및 시스템을 제안한다. 이 새로운 데이터 구조는 분산 데이터베이스를 구현하기 위해 제공된다. 다른 양상에서, 새로운 데이터 구조와 연관된 데이터를 관리할 수 있는 새로운 분산 데이터 관리 시스템(DBMS)이 제공된다. 하지만, 본 개시는 전통적인 데이터베이스에 대한 종래의 DBMS와 달리, 하나 이상의 블록체인 트랜잭션과 연관된 데이터를 관리하도록 구성된 블록체인 DBMS를 제공한다.
다른 양상에서, 본 개시는 데이터베이스에 액세스하거나 또는 이를 조작하기 위해 수신되는 하나 이상의 표준 데이터베이스 명령을 구현하기 위한 하나 이상의 블록체인 트랜잭션을 생성하거나 또는 제공하기 위한 방법을 제공하며, 여기서 데이터는 새로운 데이터 구조에 저장된다.
따라서, 본 개시의 양상 및 실시예는 제안된 데이터 구조를 사용하여 분산 원장, 즉 블록체인 내에서 데이터를 구조화하여 기존 및 알려진 (공통) 데이터베이스 특성이 제공될 수 있고, 제안된 데이터 구조를 관리하기 위해 제공된 제안된 DBMS가 데이터 구조와 연관된 데이터에 액세스하고 이를 관리하기 위해 블록체인을 사용하여 (표준 구조화된 쿼리 언어(SQL) 명령과 같은) 표준 데이터베이스 명령을 해석하고 처리하도록 구성되는 시스템을 제안한다.
본 명세서 전체에 걸쳐 "포함하다(comprise)"라는 단어, 또는 "포함하다(includes, comprises)" 또는 "포함하는(comprising)"과 같은 변형은 명시된 요소, 정수 또는 단계, 또는 요소, 정수 또는 단계의 그룹을 포함하는 것을 의미하지만, 임의의 다른 요소, 정수 또는 단계, 요소, 정수 또는 단계의 그룹의 제외를 의미하지는 않는 것으로 이해될 것이다.
본 개시의 양상 및 실시예는 이제 단지 예시로서, 그리고 첨부 도면을 참조하여 설명될 것이다:
도 1은 제1 양상에 따른 분산 원장에 관한 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조를 제공하는 방법을 도시하는 흐름도이고, 방법은 데이터 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현된다.
도 2는 분산 원장에 관한 트랜잭션과 연관된 데이터 및/또는 저장을 위한 제1 양상에 따른 데이터 구조를 도시하는 개략도이다.
도 3a(도 3aa 및 3ab) 내지 3b는 제1 양상에 따른 데이터 구조를 사용하여 데이터를 관리하기 위한 트랜잭션을 도시하는 개략도이다.
도 4a는 본 개시의 제2 양상에 따른, 분산 원장과 연관된 트랜잭션을 처리하기 위한 DBMS에 대한 신원 및 액세스 검증 방법을 도시하는 흐름도이고, 방법은 DBMS와 연관된 하나 이상의 프로세서에 의해 구현된다.
도 4b는 본 개시의 제2 양상에 따른 분산 원장과 연관된 트랜잭션을 처리하기 위한 DBMS에 대한 신원 및 액세스 검증 방법을 도시하는 흐름도이고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현된다.
도 5는 본 개시의 제3 양상에 따른 트랜잭션과 연관된 데이터를 관리하기 위한 DBMS를 구현하기 위한 방법을 도시하는 흐름도이고, 트랜잭션은 분산 원장과 연관되고, 방법은 DBMS와 연관된 하나 이상의 프로세서에 의해 구현된다.
도 6은 제2 및/또는 제3 양상에 따른 분산 원장과 연관된 트랜잭션과 사용하기 위한 DBMS를 도시하는 개략도이다.
도 7은 본 개시의 다양한 양상 및 실시예가 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
제1 양상에 따라, 본 개시는 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조를 제공하기 위한 컴퓨터 구현된 방법을 제공한다. 이 방법은 분산 원장에 대한 데이터베이스 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되며,
분산 원장에 관한 하나 이상의 트랜잭션에 대한 데이터를 획득하는 데 사용되는 데이터베이스 D에 대한 식별자; 및
하나 이상의 테이블 트랜잭션 식별자(TTxID) - 하나 이상의 TTxID 중 주어진 TTxID는 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중 주어진 테이블에 특정되고, 주어진 TTxID는 주어진 테이블에 대해 분한 원장에 관한 트랜잭션에 관련됨 -를 포함하는 데이터베이스 트랜잭션 타입을 생성하는 단계를 포함한다:
이 방법은 또한,
테이블 T에 대한 식별자 - 테이블은 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중에 있음 -; 및 식별된 테이블 T와 연관된 하나 이상의 엔트리를 포함하는, 테이블 트랜잭션 타입을 생성하는 단계를 포함한다.
단일 실패 지점을 방지하기 위해 네트워크를 통한 정보의 탈중앙화된 저장을 하는 것과 같이 분산 원장, 즉 블록체인과 분산 데이터베이스 사이에 있을 수 있는(drawn) 다수의 유사점이 있다. 블록체인의 장점은 기본 데이터 구조로부터 비롯되며 즉, 여기서 각 블록은 함께 연쇄되는 그 블록에 대한 이전 블록의 해시를 포함하고, 예를 들어 암호화 해시 함수가 데이터를 링크하는 데 사용되어 그의 시작 이래로 모든 유효한 동작의 불변의 레코드로 이어진다. 블록체인에서 데이터에 대한 이 구조는 기존 데이터베이스가 제공할 수 없는 투명성 및 감사의 이점에 대한 중요한 특성이다. 유리하게, 제1 양상에 따른 방법은 분산 원장과 연관된 하나 이상의 트랜잭션과 연관된 데이터 타입, 즉 위에서 제시된 데이터베이스 데이터 타입 및 테이블 데이터 타입에 기초한 데이터 구조를 제공하고, 그의 연관된 엔트리를 갖는 테이블을 나타내는 트랜잭션을 식별하기 위한 기술을 제공한다. 제1 양상의 데이터 구조는, 공통 데이터베이스 특성이 블록체인 내에서 데이터의 구조화 및 관리를 통해 제공되고 및 구현되는 것을 가능하게 하는 것과 같이, 참조의 용이함을 위해 이후에 블록체인 (기반) 데이터 구조로 지칭된다. 예를 들어, 기존 데이터베이스에서 사용되는 공통 데이터베이스 특성은 주어진 테이블에서의 행에 의해 식별될 수 있는 엔트리를 갖는 테이블에서의 데이터 배열을 기초로 할 수 있으며, 이는 이후에 구조화된 쿼리 언어(Structured Query Language, SQL) 명령을 사용하는 것과 같이 공통적인 데이터 베이스 명령에 의해 조작된다. 하나 이상의 블록체인 트랜잭션과 연관된 데이터가 이들 동일한 공통 특성을 사용하여 또한 저장되고 조작될 수 있는 데이터 구조를 구현함으로써, 본 개시의 제1 양상은 기존 데이터베이스 및/또는 분산 데이터베이스와의 상호 작용을 가능하게 하고, 기존 데이터베이스 대신에 블록체인을 사용하는 변환 또는 전환 프로세스가 쉬워지고, 확장 가능하고, 균일하고, 간단하고, 완전히 투명하고, 추적 가능하고, 효율적이게 한다. 따라서, 제1 양상에서 제안된 블록체인 데이터 구조는 주어진 트랜잭션과 연관된 블록체인 트랜잭션 식별자(TTxID)를 기초로 전체 데이터베이스에 대한 구조화된 저장소를 제공할 수 있다.
일부 실시예에서, 제1 양상의 테이블 트랜잭션 타입은 하나 이상의 엔트리 트랜잭션 식별자(ETxID)를 포함하고, 여기서 하나 이상의 ETxID 중 주어진 ETxID는 식별된 테이블 T와 연관된 하나 이상의 엔트리 중 주어진 엔트리 E에 특정되고, 주어진 ETxID는 주어진 엔트리 E에 대한 분산 원장에 관한 트랜잭션에 관련된다. 방법은 또한, 하나 이상의 데이터 쌍을 포함하는 엔트리 트랜잭션 타입을 생성하는 단계를 포함하며, 여기서 각 데이터 쌍은 식별된 테이블 T에서의 엔트리에 관련되고, 각 데이터 쌍은 식별된 테이블에서의 위치를 식별하는 참조 R 및 식별된 위치에 대한 값 VL을 포함한다.
제1 양상의 위에서 언급한 이점에 부가하여, 위의 실시예는 엔트리 E와 연관된 블록체인 트랜잭션의 트랜잭션 식별자를 저장하기 위한 엔트리 데이터 타입을 정의하고, 이는 결국, 주어진 데이터베이스 D의 테이블 T와 연관된다. 따라서, 엔트리에 대한 임의의 변경은 최신 트랜잭션(엔트리 데이터 타입에서 ETxID로 식별됨)을 소비하는 트랜잭션에 의해 구현될 수 있고, 새로운 트랜잭션은 업데이트된 데이터를 포함한다. 일관성을 유지하기 위해, 각 종속 트랜잭션은 또한, 최신 트랜잭션 식별자 TxID(엔트리 트랜잭션을 참조하는 ETxID 또는 테이블 트랜잭션을 참조하는 TTxID일 수 있음)를 반영하도록 업데이트되어야 할 것이다. 즉, 엔트리 E의 값이 업데이트되는 경우, 테이블 트랜잭션에서의 엔트리 트랜잭션 식별자 ETxID도 업데이트되어야 할 것이며, 그 후 결과적으로 업데이트된 엔트리 E를 참조하는 데이터베이스 트랜잭션에서의 테이블 트랜잭션 식별자 TTXID가 업데이트 되어야 할 것이다.
이는 제1 양상에 따른 중첩된(nested) 데이터 구조를 유리하게 제공하며, 여기서 엔트리 E에 대한 임의의 변경은 새로운 ETxID로 엔트리 데이터 타입에 대한 업데이트, 엔트리 E와 연관된 TTxID가 새로운 ETxID를 포함하게 하는 테이블에 대한 업데이트, 업데이트된 TTxID로 데이터베이스 D에 대한 업데이트를 요구하고, 데이터 구조로부터의 데이터가 (주어진 엔트리 E와 연관된 트랜잭션의 전체 체인을 수정하지 않으면서) 간단히 제거되거나 수정될 수 없기 때문에, 데이터베이스 및 그의 현재 상태에 대한 변경의 강력하고 변경 불가능하며 완전히 감사 가능한 레코드를 허용한다. 게다가, 유리하게 이러한 중첩된 데이터 구조를 통해, 데이터를 재구성하거나 쿼리할 수 있도록 데이터베이스(데이터베이스 이름 D 또는 테이블 T로 식별됨)와 연관된 트랜잭션을 모니터링하기만 하면 될 것이다. 이는 데이터베이스의 전체 레코드 대신에 데이터베이스의 압축된 형태를 저장하는 것과 유사하다.
일부 실시예에서, 엔트리 데이터 타입 대신에, 데이터 참조 및/또는 값이 테이블 T에 바로 저장되는, 즉 테이블 트랜잭션 타입 그 자체에 포함되는 것이 가능하다. 이는 데이터가 데이터베이스 트랜잭션 데이터 타입에서의 테이블 트랜잭션(TTxID)을 기초로 식별될 수 있음을 의미할 것이다. 하지만, 참조의 용이성 및 일관성을 위해, ETxID 뿐만 아니라 TTxID가 모두 저장되는 중첩된 데이터 구조가 이하에서 언급되지만, 본 개시는 이에 제한되지 않는다.
일부 실시예에서, 하나 이상의 TTxID 또는 ETxID에 관한 트랜잭션은 하나 이상의 소비되지 않은 트랜잭션 출력(UTXO)과 연관된다. 일부 실시예에서, 주어진 트랜잭션에 대한 UXTO는 식별된 데이터베이스 D 및/또는 테이블 T와 연관된 후속 트랜잭션에 의해 소비 가능한 출력 스크립트를 포함한다. 일부 실시예에서, 주어진 트랜잭션에 대한 UTXO는 주어진 트랜잭션에 대한 소비 가능한 출력 스크립트와 연관된 소비-불가능한 출력을 포함한다.
유리하게, 소비-불가능한 출력, 예를 들어 OP_RETURN 스크립트를 포함하는 것은 하나 이상의 데이터베이스 동작을 수행하는 것에 관련된 유효한 트랜잭션을 나타내는 데 사용된다. 이는 데이터베이스 D 또는 테이블 T 또는 엔트리 E에 대한 최신 업데이트를 포함하는 OP-RETURN과 관련된 동작 가능하거나 또는 소비 가능한 UTXO가 데이터베이스와 상호작용하는 사용자에 대한 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 분산 원장 즉, 블록체인에 있을 때 순조롭고 쉽게 식별되는 것을 가능하게 한다. 추가적인 이점은 소비-불가능한 출력의 제공이 최신 데이터베이스 동작 또는 업데이트에 사용되는 트랜잭션 식별자(TTxID 또는 ETxID)를 식별한다는 것이다. 클라이언트 엔티티는 소비 가능한 페이로드 또는 UTXO가 획득될 수 있는, 데이터베이스 D와 연관된 소비-불가능한 OP_RETURN 트랜잭션(들)을 식별하기 위해 블록체인 또는 분산 원장을 간단히 쿼리할 수 있다. 수신자에 대한 UTXO가 식별되면, 이는 소비 가능한 출력 스크립트를 실행함으로써 처리될 수 있다.
본 개시의 제1 양상은 또한, 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조 또는 중첩된 데이터 구조에 관한 것이고, 데이터 구조는 분산 원장에 대한 데이터 관리 시스템(DBMS)에 의해 연관된 하나 이상의 프로세서에 의해 관리되고, 데이터 구조는 제1 양상에 대해 위에서 제시된 데이터 트랜잭션 타입, 테이블 트랜잭션 타입 및 엔트리 트랜잭션 타입을 포함한다. 일부 실시예에서, 데이터 구조는 위에서 논의된 바와 같이, 식별된 데이터베이스 D와 연관된 TTxID, 및 일부 실시예에서 ETxID를 저장하는 것에 기초하여 전체 식별된 데이터베이스 D를 저장하도록 구성된 중첩된 트랜잭션 저장 구조이다.
본 개시의 일부 실시예는 분산 원장과 연관된 트랜잭션을 구현함으로써 하나 이상의 데이터베이스 요청을 수행하기 위한 방법에 관련되고, 트랜잭션은 위에서 제시된 블록체인 기반 데이터 구조를 사용한다. 이 방법은 데이터베이스 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되며, 데이터베이스 트랜잭션 타입, 테이블 트랜잭션 타입 또는 엔트리 트랜잭션 타입 중 하나 이상을 생성하거나, 업데이트하거나 또는 수정/삭제하는 것 중 하나 이상을 수행하기 위해 분산 원장에 관한 하나 이상의 트랜잭션을 생성하는 것에 관련된다. 방법은 또한, 분산 원장과 연관된 생성된 트랜잭션을 기초로 하나 이상의 출력을 제공하는 단계를 포함한다. 일부 실시예에서, 출력은 위에서 논의된 바와 같이 소비 가능한 및/또는 소비-불가능한 출력 스크립트이다. 일부 실시예에서, 하나 이상의 트랜잭션의 생성은 데이터베이스 또는 테이블 또는 엔트리와 연관된 이전 트랜잭션을 처리하는 것 또는 소비하는 것에 기초한다. 방법은 또한, 이전 트랜잭션의 출력을 기초로 위에서 제시된 데이터 타입 중 하나 이상을 업데이트하는 단계를 포함한다. 하나 이상의 데이터베이스 요청을 구현하기 위해 트랜잭션을 생성하는 단계, 출력을 제공하는 단계, 데이터 타입을 업데이트하는 단계의 시퀀스는 아래의 도면과 관련하여 상세히 설명된다.
위에서 논의된 실시예에 관련되고 이에 보완적으로, 데이터베이스와 연관된 하나 이상의 요청을 구현하기 위한 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현될 때 관련된 실시예는: 데이터베이스 트랜잭션 타입, 테이블 트랜잭션 타입 또는 엔트리 트랜잭션 타입 중 하나 이상을 생성하는 것, 업데이트하는 것 또는 수정 또는 삭제하는 것 중 하나 이상에 관련된 요청을 전송하는 단계; 및 각각의 요청에 관련된 DBMS에 의해 생성된 트랜잭션과 연관된 적어도 하나의 트랜잭션 출력에 대한 분산 원장을 모니터링하는 단계를 포함한다.
유리하게, 위의 실시예는 분산 원장과 연관되고 분산 원장의 것과 연관된 트랜잭션 식별자를 포함하는 제1 양상의 데이터 구조를 조작하기 위해, 표준 구조화된 쿼리 언어(SQL)와 같은, 표준 또는 알려진 데이터베이스 명령 및 함수를 사용하는 방법을 제공한다. 유리하게, 블록체인 구현 데이터 구조와 사용하기 위해 표준 SQL 명령의 사용을 가능하게 함으로써, 주어진 사용자와 연관된 사용자 또는 클라이언트 엔티티는 데이터베이스의 블록체인-기반 구현에 대한 기존 데이터베이스의 마이그레이션 이전, 그 동안 및 그 이후 어떠한 변경도 검출하지 않을 것이다. 이 균일함(seamlessness)은 기업 시스템의 데이터베이스에 대해 보다 안전하고 강력한 동등한 블록체인 시스템으로의 점진적 변환에 중요하다. 현재 데이터베이스 시스템과의 더 쉬운 채택 및 상호 작용을 위해, 위의 실시예는 표준 SQL 명령이 하나 이상의 연속적인 블록체인 트랜잭션을 사용하여 제1 양상의 블록체인 기반 데이터 구조에 적용되는 것을 가능하게 한다. 본원에서 SQL 명령의 선택이 논의되지만, 전체 표준 SQL 라이브러리를 제1 양상의 블록체인 기반 데이터 구조에 매핑하기 위해 유사한 방법이 적용될 수 있다.
본 개시의 제2 양상은 데이터 관리 시스템(DBMS)에 대한 액세스를 관리하기 위한 컴퓨터 구현된 방법에 관련되고, DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터를 관리하고, 데이터는 데이터베이스에 제공된다. 일부 실시예에서, 데이터베이스는 위에서 설명된 데이터 구조를 사용하여 구현된다. 데이터베이스와 연관된 하나 이상의 프로세서에 의해 구현될 때 방법은: DBMS에 등록을 위한 요청에 응답하여, 주어진 사용자와 연관된 레코드를 생성하는 단계를 포함하는 것을 포함하며, 레코드는 복수의 사용자 중에서 주어진 사용자에 대한 식별자를 포함한다. 방법은 주어진 사용자와 연관된 공개 키 P를 획득하는 단계를 포함하고; 공개 키는 주어진 사용자와 연관된 암호화 키 쌍의 일부이고, 암호화 키 쌍은 주어진 사용자에 대한 개인 키 V를 포함한다. 그 후, 방법은 주어진 사용자와 연관된 하나 이상의 속성을 획득하거나 할당하는 단계를 포함하며, 여기서 각 속성은 DBMS에 의해 관리되는 데이터베이스에 대한 액세스와 관련된 설정과 연관된다. 일부 실시예에서, 주어진 속성에 대한 설정은 주어진 속성이 데이터베이스와 연관된 읽기, 쓰기/업데이트, 수정 또는 삭제 동작 중 하나 이상을 수행하기 위한 허가와 연관되어 있는지를 확인한다. 이는 권한 설정으로 지칭될 수 있다. 방법은 또한, 획득된 공개 키 P뿐만 아니라, 주어진 사용자와 연관된 하나 이상의 속성에 기초하여 레코드를 업데이트하는 단계; 및 DBMS와 연관된 업데이트된 레코드를 저장 또는 제공하는 단계를 포함한다.
따라서, 본 개시의 제2 양상은 제1 양상의 블록체인 기반 데이터 구조와 관련된 요청을 용이하게 하기 위한 관리 시스템에 관련된다. 예를 들어, 데이터 관리 시스템(DBMS)은 데이터 구조에서 데이터에 액세스하고, 트랜잭션을 구성하거나 및/또는 이를 데이터 구조에 대한 분산 원장에 제출할 뿐만 아니라, 관련된 트랜잭션 ID(TxID, TTxID 또는 ETxID일 수 있음)의 레코드를 유지하는데 도움이 되어야 할 수 있다. 이 데이터 관리는 분산 데이터 시스템을 통합하는 역할을 하는 종래의 분산 데이터베이스의 표준 데이터베이스 관리 시스템(DBMS) 또는 분산 DBMS(DDMS)와 유사하며, 원격 서버 또는 단일 서버 기능을 구현하는 하나 이상의 분산 프로세서에 의해 구현될 수 있는 제3자 서비스일 수 있거나, 또는 심지어 클라이언트 측 구현, 즉 그 자신의 DBMS를 관리하기에 충분한 리소스를 갖는 클라이언트 엔티티 또는 조직을 위한 컴퓨팅 엔티티일 수 있다.
유리하게, 제2 양상의 데이터 관리 시스템에 대한 액세스를 관리하기 위한 방법은 신원 검증 리소스의 역할을 함으로써 제1 양상의 블록체인 구현 데이터베이스의 무결성을 보호하고 보안을 제공한다. 제2 양상은 DBMS에 등록하는 각 사용자와 연관된 속성을 기초로 읽기-전용, 쓰기-전용(데이터를 업데이트하거나, 수정하거나 또는 삭제하는 것) 또는 읽기 및 쓰기 권한(privileges) 모두와 같은 멀티-레벨 허가 제어를 제공한다. 생성된 사용자 레코드에서 주어진 사용자에 대한 클라이언트 엔티티와 연관된 암호화 키의 사용은 DBMS의 보안을 개선하며, 이는 위에서 제시된 오프-체인으로 구현될 수 있다. 이것이 본원에서 오프-체인 구현으로 논의되지만, 즉 분산 원장 그 자체에서 또는 이를 사용하여 구현되지 않지만, 본 개시는 또한, 공개 키 인프라구조(public key infrastructure, PKI)에 대한 인증 기관, 초기 공유 비밀로부터 도출된 세션 키 또는 트랜잭션 내에서 암호화된 표준 사용자 이름/암호 인증 시스템을 포함하는 알려진 방법을 사용하는 온-체인 구현에 관련된다. 일부 실시예에서, 제2 양상의 방법은 데이터베이스에 쓰거나 또는 그로부터 읽기 위해 사용될 수 있는 액세스 속성의 레코드와 함께, DBMS 등록 및 키 분산을 담당하는 시스템 관리자 구성요소 또는 리소스에 의해 구현될 수 있다. 일부 실시예에서, 사용자 레코드는 (예를 들어, 객체 지향 프로그래밍 언어를 사용하여 조작될 때 이와 같이 사용되는) 객체의 형태에서의 로컬 파일로서 오프 체인에 저장되거나, 또는 TTxID 또는 ETxID에 대한 참조로 블록체인 상에서 암호화될 수 있다.
일부 실시예에서, 속성은 사용자가 연관된 팀 또는 카테고리를 지칭할 수 있다. 예를 들어, 조직 구조에서 속성은 부서의 이름일 수 있다. 따라서, 등록된 사용자 레코드에서 부서 속성이 "인사"(HR)인 사용자는 "사람 관리"에 관련된 데이터베이스 또는 테이블에 액세스하는 유효한 허가(허가 설정 또는 액세스 속성 설정)을 갖는 설정을 가질 수 있지만, 회계 부서와 연관된 데이터베이스 또는 테이블에 액세스하기 위한 유효한 설정을 갖지 않을 것이다. 상이한 사용자에 대한 속성의 하위-카테고리 또한 상이한 설정을 가질 수 있다. 예를 들어, HR 부서에서 HR 이사 상태를 갖는 사용자 레코드는 HR 데이터베이스에 대한 전체 액세스(읽기 및 쓰기)를 가질 수 있지만, 급여와 같은 일부 회계 데이터베이스에 대해선 "읽기" 액세스만을 가질 수 있다. 동일한 HR 부서에서 HR 보조 상태를 갖는 다른 사용자는 급여 데이터베이스에 대한 임의의 유효한 권한 설정을 갖지 않을 수 있으며, 또한 HR 데이터베이스에 대한 읽기 액세스만을 가질 수 있다.
일부 실시예에서, 각 속성에 대한 설정(들)은 또한 주어진 사용자(또는 주어진 사용자와 연관된 클라이언트 엔티티)로부터 수신된 등록을 위한 요청에 제공될 수 있거나, 또는 설정은 DBMS와 연관된 컴퓨팅 리소스로부터 획득되거나, 또는 설정은 DBMS에 의해 관리되는 데이터베이스에 대한 시스템 관리자 또는 동등한 컴퓨팅 리소스에 의해 각 속성에 대해 미리 결정된다.
제2 양상에 관련된 일부 실시예에서, 본 개시는 또한 데이터베이스에 액세스하기 위한 DBMS를 구현하기 위한 컴퓨터 구현된 방법을 제공하며, 방법은 클라이언트 엔티티로부터 데이터베이스와 연관된 동작을 위한 요청을 획득하는 단계를 포함하고, 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 요청은 주어진 사용자와 연관된 디지털 서명을 포함한다. 일부 실시예에서, 요청은 데이터베이스에서의 데이터를 읽거나, 쓰거나, 수정하거나 또는 삭제하기 위한 요청이다. 일부 실시예에서, 데이터베이스는 위에서 설명한 제1 양상 및 실시예의 데이터 구조를 사용하여 구현된다. 이 방법은 또한, 주어진 사용자가 데이터베이스에 액세스하기 위해 인증되었다는 것을 결정하는 단계를 포함한다. 성공적인 결정에 응답하여, 방법은 디지털 서명이 DBMS와 연관된 사용자 레코드에 기초하여 주어진 사용자와 연관된다는 것을 검증하는 단계를 포함한다. 일부 실시예에서, 사용자 레코드는 위에서 논의된 DBMS에 등록할 시 생성된다. 성공적인 검증에 대한 응답으로, 방법은 사용자 레코드 및 요청의 현재 인스턴스를 기초로 메시지를 생성하는 단계를 포함한다.
유리하게, 사용자가 등록 동안 생성된 사용자 레코드에서의 정보에 기초하여 위에서 논의된 바와 같이 등록되면, 본 개시의 제2 양상은 분산 데이터에 대한 단일 참조 지점을 제공하고 주어진 사용자가 허가, 즉 요청을 수행하기 위한 유효한 설정을 갖는다는 것을 검증하기 위해, 제1 양상의 블록체인 데이터 구조와 연관된 사용자 요청을 처리하기 위한 DBMS를 구현하는 방법을 제공한다.
일부 실시예에서, 사용자가 인증되었음을 결정하는 단계는 DBMS로의 등록 시 DBMS와 연관된 사용자 레코드가 주어진 사용자에 대해 존재한다는 것을 결정하는 단계를 포함한다. 일부 실시예에서, 디지털 서명을 검증하는 단계는 요청을 서명하는 데 사용되는 개인 키 V 또는 서명 키 K가 사용자 레코드에서 주어진 사용자와 연관된 공개 키 P와 연관된다는 결정을 기초로 한다. 이는 주어진 사용자 또는 주어진 사용자와 연관된 클라이언트 엔티티가 데이터베이스에서의 데이터에 임의의 액세스를 할 수 있기 전에, 두 개의 검사가 수행되기 때문에 데이터베이스 액세스에 대한 요청을 하는 시간에 DBMS의 보안을 유리하게 증가시킨다. 첫째, 요청이 등록되지 않은 사용자로부터 있는 경우 액세스를 위한 요청하는 사용자의 허가를 검증하기 위한 연관된 사용자 레코드가 있지 않기 때문에, 이는 즉시 거부된다. 둘째, 요청에서의 디지털 서명이 사용자 레코드에 링크된 공개 키 P와 실제로 연관되어 있는지 검증함으로써 요청을 한 사용자의 신원을 검사되어, 이 공개 키 P를 사용하여 서명이 검증될 수 있다. 악의적인 사용자가 요청을 전송하면, 사용자 레코드에 보유된 공개 키 P는 디지털 서명을 검증할 수 없을 것이다(이는 결국 동일한 사용자의 개인 키 V를 기초로 함).
일부 실시예에서, 인증이 성공적이지 않다는 것에 응답하여, 방법은 주어진 사용자가 인증되지 않았거나 또는 데이터베이스에 액세스하도록 등록되지 않았다는 것을 지정하기 위해 오류 통지를 생성하는 단계를 포함한다. 또한, 디지털 서명의 검증이 성공적이지 않다는 것에 응답하여, 요청에 적용된 서명이 주어진 사용자에 대해 유효하지 않다는 것을 지정하기 위해 오류 통지를 생성하는 방법.
클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현될 때, 본 개시의 제2 양상은 또한 DBMS에 등록하기 위한 방법을 제공하며, 방법은: DBMS에 등록하기 위한 요청을 생성하는 단계 - 이 요청은 주어진 사용자와 연관됨 -, 주어진 사용자와 연관된 하나 이상의 속성을 제공하거나 액세스하는 단계 - 각 속성은 DBMS에 의해 관리되는 데이터베이스와 관련된 설정과 연관됨 -를 포함한다. 방법은 또한 주어진 사용자와 연관된 개인 키 V를 생성하는 단계 - 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부임 -, 및 개인 키 V에 기초하여 공개 키 P를 계산하는 단계를 포함한다. 일부 실시예에서, 개인 키는 하나 이상의 알려진 수단을 사용하여 생성될 수 있고, 즉 이는 비밀 시드 또는 난수 생성기를 시작점으로 기초로 할 수 있거나, 또는 주어진 사용자와 연관된 클라이언트 엔티티의 네트워크 식별자를 기초로 할 수 있다. 이 키 V는 비밀로 유지되지만 개인 키 V로 암호화되거나 서명된 모든 메시지는 공개 키 P로만 유효성 검증되거나, 읽히거나 해독될 수 있는 방식으로 공개 키 P를 생성하는 데 사용된다. 방법은 또한, 공개 키 P 및 DBMS에 대한 하나 이상의 속성을 전송하는 단계를 포함한다. 유리하게는, 이는 DBMS의 보안을 증가시키고 블록체인 구현 데이터베이스와 연관된 하나 이상의 동작을 수행하기 위한 모든 요청의 프라이버시(privacy)를 증가시킨다.
본 개시의 제2 양상은 또한 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현될 때 데이터베이스와 연관된 데이터에 액세스하는 방법을 포함한다. 이 경우의 방법은 데이터베이스 동작과 연관된 전술한 요청을 생성하는 단계를 포함하고, 요청은 주어진 사용자와 연관되고, 데이터베이스는 DBMS에 의해 관리된다. 방법은 주어진 사용자에 대한 개인 키 V에 기초하여 디지털 서명을 생성하는 단계를 포함하고, 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이며, 공개 키 P는 DBMS에 제공된다. 그 후, 방법은 디지털 서명을 요청에 적용하는 단계 및 서명된 요청을 DBMS로 전송하는 단계를 포함한다. 일부 실시예에서, 방법은 위에서 제시된 바와 같이 DBMS에 등록하는 방법을 포함한다.
일부 실시예에서, 방법은 개인 키 V에 기초하여 서명 키 K를 생성하는 단계를 포함하고, 여기서 서명 키는 임시 키이다. 일부 실시예에서, 암호화 키, 즉 주어진 클라이언트 엔티티에 대한 공개 및/또는 개인 및/또는 세션 키(들)는 안정 타원 곡선 디지털 서명 알고리즘(elliptic curve digital signature algorithm, ECDSA) 키이다. 예를 들어, ECDSA 공개 키는 secp256k1 곡선에서 유효한 지점이 될 것이며 압축되고 16진법으로 인코딩된다. 일부 실시예에서, 클라이언트 엔티티와 연관된 생성기 G 또는 비밀 시드의 보안 해시는 개인 키 V를 생성하는 데 사용될 수 있다. G는 일반적으로 일부 실시예에서 하나 이상의 블록체인 트랜잭션에 대한 클라이언트 엔티티와 연관된 하나 이상의 엔티티로 알려지거나 또는 이와 공유되는 알려진 상수이다. 일부 실시예에서, 공개 키 P는 클라이언트 엔티티에 대한 공개(네트워크) 주소와 연관된 네트워크 식별자에 기초할 수 있고, 보안 해시 값을 포함할 수 있고, 즉 보안 해시 알고리즘(SHA)에 기초할 수 있다.
주어진 사용자의 개인 키 V와 연관된 디지털 서명은 또한, 주어진 사용자가 블록체인과 직접적으로 상호 작용할 필요 없이 사용자 레코드로 검증될 수 있는 요청 제출의 감사 가능한 레코드를 유리하게 제공한다. 시스템 관리자, 즉 DBMS에 이 기능을 제공하는 컴퓨팅 리소스는 일부 실시예에서 요청을 하나의 블록체인 트랜잭션으로 일괄 처리(batch)할 수 있다. OP_RETURN 내에 서명된 요청을 포함함으로써, 명확한 감사 트레일(audit trail)이 계속 제공되며, 그로 인해 종래의 시스템과의 상호 작용을 제공하고 블록체인 상에서 변경 불가능한 레코드를 유지하면서 투명성과 책임성을 증가시킨다. 일부 실시예에서 OP_RETURN 페이로드는 트랜잭션이 구성되기 전에 (요청이 쓰기 요청인 경우) 결정성 도출 키(deterministic derived key)를 사용하여 암호화될 수 있다. 일부 실시예에서, 속성은 또한 필요한 경우 더 쉬운 검색을 위한 데이터 참조 또는 참조의 해시로 추가될 수 있다.
제3 양상에서, 본 개시는 분산 원장과 연관된 트랜잭션에 관한 데이터베이스를 관리하기 위한 데이터베이스 관리 시스템(DBMS)을 구현하기 위한 컴퓨터 구현된 방법에 관한 것으로, 방법은 하나 이상의 사용자 중 주어진 사용자에 대한 사용자 레코드의 현재 인스턴스와 연관된 메시지를 수신하는 단계를 포함하고, 요청은 데이터베이스와 연관되고 요청은 주어진 사용자에 의해 제공된다. 방법은 데이터베이스와 연관된 요청을 파싱하는 단계를 포함하고, 이는 현재 인스턴스로부터 주어진 사용자와 연관된 하나 이상의 속성을 검색하는 단계, 및 검색된 속성의 각각에 대한 설정이 주어진 사용자에 의해 이루어진 요청에 대해 유효하다는 것을 검증하는 단계를 포함한다. 일부 실시예에서, 상기 검증하는 단계는 하나 이상의 속성 중에서 주어진 속성에 대한 설정이 주어진 사용자가 이루어진 요청에 대해 데이터베이스에 액세스하기 위한 허가를 갖는다는 것을 나타내는 것을 검사하는 것을 포함한다. 성공적인 검증에 응답하여, 방법은 요청에 기초하여 데이터베이스와 연관된 하나 이상의 동작을 수행하는 단계를 포함하며, 데이터베이스는 제1 양상에서 논의된 바와 같이 제공된 데이터 구조에 기초한다. 수행하는 단계는 요청이 읽기 동작과 연관되는 경우, 요청에 관련된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)를 획득하는 단계 - 각 획득된 트랜잭션 식별자는 트랜잭션에 관한 것이고, 그에 의해 상기 트랜잭션에 대한 데이터는 데이터 구조와 연관됨 -, 및 데이터 구조로부터 획득된 트랜잭션 식별자(TTxID, ETxID)에 관련된 데이터에 액세스하는 단계를 더 포함한다. 요청이 쓰기 또는 수정 또는 삭제 동작과 연관되면, 획득하는 단계에 부가하여, 방법은 동작을 기초로 획득된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)와 연관된 트랜잭션(들)을 소비하거나 또는 처리하기 위한 하나 이상의 트랜잭션을 생성하는 단계, 및 또한 데이터 구조를 생성된 트랜잭션에 관련된 식별자로 업데이트하는 단계를 더 포함한다.
제1 양상의 블록체인 기반 데이터 구조에서 데이터를 등록하거나 및/또는 액세스할 때, 보안, 신뢰성 및 프라이버시를 증가시키기 위해 위에서 이미 논의된 이점에 부가하여, 제3 양상에 따른 방법은 유리하게, 데이터베이스 즉, 블록체인 기반 데이터 구조와 연관된 표준 데이터베이스 명령을 해석하고 처리하기 위한 수단을 제공한다. 따라서, 유리하게 제3 양상에 따른 방법은 SQL 컴파일러의 역할을 하지만 블록체인의 경우, 즉 블록체인과 연관된 TTxID 또는 ETxID를 사용하여 하나 이상의 SQL 명령을 해석하고, 검증하고 및 실행하는 기능을 구현한다. 덧붙여, 제3 양상의 방법은 또한, 사용자 레코드에서 속성 검증의 실행을 수행한다. 따라서, 주어진 사용자에 대한 사용자 레코드가 존재한다고 가정하면, 그 사용자에 대한 속성에 대한 설정이 이루어진 요청에 대해 유효한 지가 검사된다. 일부 실시예에서, 이러한 검증은 제2 양상에 관련하여 논의된 방법 및 실시예에 기초한다. 예를 들어, 속성이 부서 또는 팀인 조직의 위의 예시에 따라, HR 보조 속성을 갖는 등록된 사용자가 HR 또는 급여 데이터베이스에 쓰기 요청을 하면, 이는 거부될 것이다. 한편, HR 이사 속성을 갖는 등록된 사용자가 급여 데이터베이스에 대한 읽기 요청을 하면, 이 요청은 더 진행되도록 허용된다. 적절한 설정, 즉 하나 이상의 속성과 연관된 액세스 허가가 유효하면, 관련된 트랜잭션 식별자를 획득하거나 또는 하나 이상의 블록체인 트랜잭션을 생성하고(필요한 허가로 인증되거나 또는 등록된 사용자에 의해 이전의 트랜잭션의 출력을 소비하는 것을 기초로), 생성된 트랜잭션에 대한 트랜잭션 식별자 TxID(새로운 TTxID 또는 ETxID일 수 있음)를 갖는 출력 스크립트를 제공함으로써 요청이 실행되어, 데이터베이스 데이터 타입 또는 테이블 트랜잭션 타입 또는 엔트리 트랜잭션 타입이 새로운 TxID로 업데이트될 수 있다.
요청이 읽기 함수, 즉 조작 이외의 데이터 액세스와 연관된 경우, 일부 실시예에서 트랜잭션의 생성이 요구되지 않기 때문에 이는 DDMS에 의해 오프-체인으로 수행될 수 있고, (다음의 제2 양상의 등록 및/또는 액세스 검증) 데이터 액세스를 위해 표준 SQL 프로토콜이 사용될 수 있다. 이는 또한 시스템이 기존의 기업 데이터 관리 해결책과 쉽게 인터페이스하기 위한 표준 효율성 최적화 및 확장 방법을 활용하는 것을 유리하게 허용한다.
일부 실시예에서, 요청이 쓰기, 수정 또는 삭제 동작과 연관되면, 수행하는 단계는 표준 데이터베이스 SQL 명령을 실행하는 것과 관련하여 제1 양상에 대해 위에서 논의된 하나 이상의 트랜잭션을 구현하는 방법을 더 포함한다. 관련된 실시예에서, 생성하는 단계는 획득된 트랜잭션 식별자(TTxID, ETxID)와 연관된 출력 스크립트를 획득하는 단계, 및 출력 스크립트에 기초하여 추가적인 트랜잭션을 구성하는 단계를 더 포함한다. 추가적인 트랜잭션은 주어진 사용자의 클라이언트 엔티티와 연관된 개인 키 V에 기초하거나 또는 이것으로 서명될 수 있으며, 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이다. 그 후, 방법은 분산 원장에 추가적인 트랜잭션을 제공하는 단계를 포함하며, 추가적인 트랜잭션은 새로운 트랜잭션 식별자(TTxID, ETxID)와 연관된다.
유리하게, 추가적인 트랜잭션의 생성은 요구되는 속성 허가 설정을 갖고 각각의 사용자 레코드에서의 공개 키 P를 사용하여 검증될 수 있는 사용자에 의해서만 가능하다. 따라서, 블록체인 구현 데이터베이스에서 가장 최근 버전의 데이터 타입에서 식별된 트랜잭션에 의해 참조되는 이전의 트랜잭션은 그의 신원이 키 P 및 V를 사용하여 각 스테이지에서 레코드되거나 또는 링크되도록, 등록되고 검증된 사용자에 의해 소비 또는 액세스만 될 수 있다. 이는 이 공개 암호화 키를 사용하여, 가장 최근 트랜잭션(암호화된 경우에도)과 연관된 사용자의 레코드가 존재한다는 것을 보장한다.
요청이 쓰기, 수정 또는 삭제 동작과 연관된 실시예에서, 추가적인 트랜잭션을 구성하는 단계는 DBMS와 연관된 단순화된 지불 검증(Simplified Payment Verification, SPV) 클라이언트에 의해 수행되며, 여기서 SPV 클라이언트는 통신 네트워크를 통해 DBMS를 분산 원장에 통신 가능하게 결합한다.
SPV 클라이언트는 DBMS와 연관된 컴퓨팅 리소스이며, 제2 양상뿐만 아니라 제3 양상의 DBMS가 전체 노드에 대한 피어-투-피어 연결을 통해 블록체인(분산 원장)에 연결되는 것을 보장한다. 하지만, SPV는 블록체인의 사본을 채굴하거나 저장하지 않으며, 그러므로 이러한 트랜잭션은 효율적이고 덜 복잡하게 검증되고 실행될 수 있다.
요청이 쓰기, 수정 또는 삭제 동작과 연관되는 실시예에서, 각 획득된 트랜잭션 식별자(TTxID, ETxID)는 소비-불가능한 UTXO를 포함하는 트랜잭션과 연관되고, 상기 소비-불가능한 UTXO는 소비 가능한 페이로드와 연관되거나 또는 이를 포함하고, 소비 가능한 페이로드는 소비 가능한 UTXO이다. 일부 실시예에서, 각 소비 가능한 및 소비-불가능한 UTXO는 DBMS와 연관된 UTXO 세트 또는 메모리에 저장되고, 여기서 소비-불가능한 UTXO는 OP_RETURN 출력 스크립트이고, UTXO 세트 또는 메모리에서의 하나 이상의 소비 가능한 UTXO는 추가적인 트랜잭션을 구성하기 위해 사용된다.
유리하게, 데이터에 대한 빠르고 간단한 액세스를 용이하게 하기 위해, UTXO 세트의 인덱싱된 사본 또는 데이터베이스에 대한 최신의 관련된 트랜잭션을 포함하는 서브세트가 제3 양상의 DBMS와 연관되어 제공될 수 있다. 일부 실시예에서, 이 UTXO 세트는 UTXO 트랜잭션의 업데이트(소비)를 레코드하기 위해 DBMS와 연관된 등록된 사용자에 대한 암호화 키를 추적하는 SPV 지갑 또는 노드와 통합될 수 있다. 일부 실시예에서, 인덱스의 분리된 레코드는 추가로 또는 대안적으로 모든 트랜잭션 식별자(제1 양상의 데이터 구조의 데이터 타입에서 TTxID 및 ETxID를 포함하는 TxID)의 레지스터로서 저장된다. 유리하게, 이는 OP_RETURN 데이터가 쿼리를 위해 더 쉽게 검색되는 것을 가능하게 한다. 일부 실시예에서, 이 레지스터와 연관된 인덱스는 단순한 실행 정수 카운트, 또는 이름, 함수 출력 값 또는 해시 값과 같은 더 상세한 데이터일 수 있다.
본 개시의 실시예는 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스를 포함하고, 메모리는 프로세서에 의한 실행의 결과로서 디바이스가 클라이언트 엔티티에 의해 구현되는 제1 및 제2 양상의 위에서 설명된 실시예의 컴퓨터 구현을 수행하게 하는 실행 가능한 명령어를 포함한다.
본 개시의 실시예는 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터에 대한 액세스를 관리하기 위한 DBMS 시스템을 포함하고, 여기서 DBMS에 의해 관리되는 데이터는 제1 양상의 블록체인 기반 데이터 구조에 의해 제공되는 데이터 구조에 저장된다. DBMS는 위에서 논의된 제2 양상의 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 등록 및 액세스 관리 시스템; 위에서 논의된 제3 양상의 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 트랜잭션 실행 시스템을 포함한다. DBMS는 또한, 데이터베이스와 연관된 복수의 트랜잭션 식별자를 저장하기 위한 하나 이상의 레지스터; 및 데이터베이스와 연관된 복수의 UTXO의 사본을 저장하기 위한 UTXO 세트 또는 메모리를 포함한다.
본 개시의 실시예는 하나 이상의 컴퓨팅 디바이스를 포함하는 시스템 - 각각 위에서 제시된 클라이언트 엔티티임 -; 위에서 제시된 DBMS; 및 각 클라이언트 엔티티를 DBMS와 통신 가능하게 결합하기 위한 통신 네트워크를 포함한다.
일부 실시예에서, 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서 컴퓨터 시스템이 위에서 논의된 양상 및/또는 실시예의 방법을 수행하게 하는 실행 가능한 명령어를 저장하는 컴퓨터-판독 가능 저장 매체가 제공된다.
이제 일부 특정 실시예가 첨부 도면을 참조하여 예시의 방식으로 설명되며, 여기서 유사한 참조 번호는 유사한 특성을 나타낸다.
제1 양상 - 블록체인 구현 데이터 구조
도 1은 블록체인 기반 데이터 구조를 제공하는 것에 관련된 방법을 도시하는 흐름도이다. 다시 말해서, 이 도면은 제1 양상에 따라, 분산 원장, 즉 블록체인과 연관된 하나 이상의 트랜잭션과 연관된 데이터 구조를 제공하기 위한 방법을 도시한다. 도 1에서 관찰된 실시예에서, 데이터베이스 트랜잭션 데이터 타입, 테이블 트랜잭션 데이터 타입뿐만 아니라 엔트리 데이터 타입을 포함하는 제1 양상의 실시예에 따라 중첩된 데이터 구조가 제공된다. 하지만, 일부 실시예에서 엔드 데이터 또는 값 및/또는 참조가 테이블 트랜잭션 데이터 타입 그 자체에 제공되는 것이 가능하기 때문에, 엔트리 트랜잭션 식별자(ETxID) 및 엔트리 데이터 트랜잭션 타입이 제1 양상의 모든 실시예에 필수적인 것은 아니라는 것이 이해될 것이다. 하지만, 이해의 용이함 및 일관성을 위해, 설명 및 첨부 도면 전체에 걸쳐 중첩된 데이터 타입이 아래에서 논의될 것이다.
데이터베이스 기능을 용이하게 하기 위해 저장되는 데이터는 종래의 데이터베이스가 제공하는 예상된 관리 및 액세스를 제공할 수 있도록 일관성 있게 구조화되어야 한다. 종래의 데이터베이스에서 가장 잘 알려진 예시는 관계형 데이터베이스에 데이터를 레코드, 업데이트 및 쿼리하기 위해 함수의 표준 라이브러리를 사용하는 구조화된 쿼리 언어(SQL)이다. 블록체인 데이터에 대한 SQL 통합을 제공할 수 있도록, 본 개시는 블록체인 트랜잭션 내에 포함된 데이터에 대한 유사한 구조를 제안하고, 도 1은 본원에서 블록체인 데이터베이스 또는 블록체인 구현 데이터 구조로 지칭되는 이러한 데이터 구조를 제공하거나 또는 구현하는 방법을 도시한다. 도 1의 단계는 블록체인과 연관된 데이터 구조를 생성하거나 및/또는 관리하기 위한 데이터베이스 관리 시스템과 연관된 하나 이상의 프로세서에 의해 구현된다.
단계 102는 데이터베이스 트랜잭션 타입을 생성하는 단계를 나타내며, 상기 데이터베이스 트랜잭션 타입은 데이터베이스에 대한 식별자를 포함한다. 이는 분산 원장에 관한 하나 이상의 트랜잭션에 대한 데이터를 저장하거나 획득하기 위해 사용되는 데이터베이스의 이름, 즉 D 또는 제1 데이터베이스일 수 있다. 데이터베이스 트랜잭션 타입에 나타난 데이터베이스 D는 데이터베이스 D와 연관된 하나 이상의 테이블 중 하나를 포함한다. 생성된 데이터 트랜잭션 타입은 하나 이상의 테이블과 연관된 트랜잭션에 대한 식별자(TTxID)를 저장하도록 구성된다.
단계 104는 테이블 트랜잭션 타입을 생성하는 단계를 나타내며, 상기 테이블 트랜잭션 타입은 테이블에 대한 식별자를 포함한다. 이는 테이블의 이름, 즉 T 또는 제1 테이블일 수 있다. 테이블 T는 단계 102에서 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중 하나이다. 테이블 트랜잭션 타입에 나타난 테이블 T는 테이블 T와 연관된 하나 이상의 엔트리를 포함한다. 생성된 테이블 트랜잭션 타입은 하나 이상의 엔트리와 연관된 트랜잭션에 대한 식별자(ETxID)를 저장하도록 구성된다.
단계 106은 엔트리 트랜잭션 타입을 생성하는 단계를 나타내며, 상기 엔트리 트랜잭션 타입은 단계 104에서 테이블 T에서의 하나 이상의 엔트리 중 하나의 엔트리에 관련되며, 일부 실시예에서 엔트리에 대한 식별자, 즉 참조 또는 E 또는 제1 엔트리와 같은 엔트리 이름을 포함한다. 일부 실시예에서, 각 엔트리는 테이블 T의 행에 관련된다. 생성된 데이터 트랜잭션 타입은 하나 이상의 엔트리의 각각과 연관된 데이터를 저장하도록 구성된다.
단계 108은 단계 106의 엔트리 트랜잭션 타입에서 하나 이상의 데이터 쌍을 제공하는 단계를 나타낸다. 각 데이터 쌍은 식별된 테이블 T에서의 엔트리 E에 관련되며, 각 데이터 쌍은 식별된 테이블에서의 위치를 식별하는 참조 R 및 식별된 위치에 대한 값 VL을 포함한다. 일부 실시예에서 R은 행 번호를 나타낼 수 있으며, 이는 테이블 T에 나타난 위치, 즉 첫 번째 행 또는 아홉 번째 행 등이다. 각 행에서의 나머지 요소는 나타난 행의 값, 즉 VL을 포함할 수 있다.
단계 110은 단계 104의 테이블 트랜잭션 타입에서 하나 이상의 엔트리 트랜잭션 식별자(ETxID)를 제공하는 단계를 나타낸다. 주어진 ETxID는 테이블 T와 연관된 하나 이상의 엔트리 중 주어진 엔트리에 특정한 하나 이상의 ETxID 중에 있다. 주어진 ETxID는 결국 단계 102에서의 데이터베이스 D에 있는, 단계 104에서 주어진 테이블 T에서 주어진 엔트리 E에 대한 분산 원장에 관한 트랜잭션에 관련된다. 다시 말해, ETxID는 테이블 T의 주어진 엔트리 E에 관련된 데이터와 관련이 있으므로 엔트리 트랜잭션 식별자로 지칭된다.
단계 112는 단계 102의 데이터베이스 트랜잭션 타입에서 하나 이상의 테이블 트랜잭션 식별자(TTxID)를 제공하는 단계를 나타낸다. 주어진 TTxID는 하나 이상의 TTxID 중에 있고 단계 102에서 데이터베이스 D와 연관된 하나 이상의 테이블 중에 있는 주어진 테이블에 특정하다. 이 주어진 TTxID는 주어진 테이블 T에 대한 분산 원장에 관한 트랜잭션에 관련되며, 다시 말해 데이터베이스 D에서의 테이블에 관련된 데이터와 관련되기 때문에 테이블 트랜잭션 식별자로 지칭된다.
블록체인과 연관된 트랜잭션 데이터 타입 및 그의 상호 관계를 나타내는 제1 양상에 따른 중첩된 블록체인 기반 데이터 구조가 도 2에서 관찰된다. 데이터베이스 트랜잭션 데이터 타입은 데이터 구조를 검색하거나 또는 쿼리하는 데 사용될 수 있는 데이터베이스(D)의 이름을 포함한다. 이는 또한, 모든 구성 테이블의 TTxID를 포함한다. 각 테이블 T1, T2, T3 등에 대해, TTxID가 여기에 저장된다. 테이블 트랜잭션 데이터 타입은 테이블(T1, T2 T3)의 이름으로 시작하고, 각 테이블에 대한 엔트리 데이터 E1, E2, E3 등을 참조하는 ETxID로 채워진다(populated). 이는 도면에서 T3에 대해 도시된다. 엔트리 트랜잭션 데이터 타입은, 각각 테이블 T1, T2 또는 T3에서의 행을 나타내는 참조 및 연관된 데이터 값을 포함한다. 테이블 T3에서의 엔트리 E3에 대한 참조 및 값 쌍이 도 2에 도시된다.
제1 양상 - 블록체인 데이터 구조에서 사용하기 위한 SQL 명령
구조화된 쿼리 언어(일반적으로 SQL로 축약됨)는 사용자가 관계형 데이터베이스, 즉 데이터 요소 사이에 구조화된 관계가 있는 데이터베이스를 효율적으로 관리하고 쿼리하는 것을 허용하는 보통의 프로그래밍 언어이다. 코드는 분산 데이터베이스의 경우 로컬로 또는 원격으로 요청을 컴파일하고 처리하는 데이터베이스 관리 시스템(DBMS)으로 전달된다. 일반적으로 SQL 코드의 네 가지 주요 카테고리가 있다
1. SELECT 함수 및 조건문(FROM, WHERE)을 사용한 데이터 쿼리,
2. INSERT, DELETE 및 UPDATE를 사용한 데이터 조작,
3. CREATE를 사용한 데이터 정의,
4. GRANT 또는 REVOKE와 같은 허가된 액세스에 대한 데이터 제어.
SQL 관계형 데이터베이스에서 볼 수 있는 것과 같은 구조화된 데이터를 갖는 것은 데이터 검색을 효율적이게 한다. 데이터의 기본 구조를 기초로 데이터를 쿼리하는 프로세스를 최적화하기 위해 과거에 개발자에 의해 상당한 양의 작업이 행해졌다. 대부분의 상용 데이터베이스 시스템은 전용 쿼리 최적화기 및 쿼리 실행 엔진을 갖는다. 실행 엔진은 데이터에 적용될 (정렬, 스캔 및 병합과 같은) 동작을 결정한다. 그 후, 쿼리 최적화기는 데이터의 구조 및 계산 비용에 의존하여 가장 효율적으로 검색을 수행하기 위해 실행의 계획(논리적 흐름)을 생성한다. 궁극적으로, 쿼리는 계획에 따라 쿼리 실행 엔진에 의해 수행된다.
SQL 및 그의 함수뿐만 아니라 명령이 분산 데이터베이스를 포함하는 기존의 데이터베이스에서 일반적으로 사용된다는 점을 고려할 때, 본 개시의 실시예는 도 2에 도시된 바와 같이 블록체인 구현 데이터 구조에 대한 하나 이상의 표준 데이터베이스 동작을 수행하기 위한 표준 SQL 명령을 구현하는 방법을 제공한다. 현재 데이터베이스 시스템과의 더 쉬운 채택 및 상호 작용을 위해 도 3a 내지 3c는 블록체인과 연관된 하나 이상의 연속적인 트랜잭션을 사용하여 표준 SQL 명령이 블록체인 데이터베이스에 어떻게 적용될 수 있는 지를 나타내기 위한 방법을 도시한다. 도 3a 내지 3b에서, 선택 또는 WRITE SQL 명령(업데이트/삽입, 수정 또는 삭제)이 도시되어 있지만, 유사한 방법이 전체 SQL 라이브러리를 매핑하는 데 적용될 수 있다.
도 3a는 도 2의 데이터 구조를 관리하는 DBMS와 연관된 하나 이상의 프로세서에 의해 실행될 때, 다음 SQL 데이터베이스 명령을 나타내는 개략도이다. 일부 실시예에서, DBMS와 연관되거나 통신 가능하게 결합된 SQL 서버와 연관된 하나 이상의 프로세서는 또한 아래 명령 중 하나 이상을 구현하는 데 사용될 수 있다.
명령 CREATE DATABASE는 다음 단계를 포함하여 구현할 수 있다:
TxID1 - 제1 데이터베이스를 생성하기 위해 제1 트랜잭션을 생성하는 단계 - 제1 트랜잭션은 데이터 구조의 데이터베이스 트랜잭션 타입을 기초로 함 -, 및 생성된 제1 데이터베이스(database_name)를 기초로 제1 트랜잭션에 대한 출력을 제공하는 단계;
그 후, 제1 데이터베이스와 연관된 요청 또는 트랜잭션에 응답하여, 다음 SQL 명령이 다음 트랜잭션에 의해 구현된다
CREATE TABLE은 다음 단계를 포함한다:
TxID2 - 제1 테이블을 생성하기 위해 제2 트랜잭션을 생성하는 단계 - 제2 트랜잭션은 데이터 구조의 테이블 트랜잭션 타입을 기초로 함 -; 및 생성된 제1 테이블에 기초하고 제2 트랜잭션의 식별자(TTxID)를 포함하는 제2 트랜잭션에 대한 출력을 제공하는 단계.
TxID3 - 제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제2 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계를 포함하는 제2 트랜잭션의 출력을 기초로 제3 트랜잭션을 생성하는 단계 및 업데이트된 제1 데이터베이스를 기초로 제3 트랜잭션에 대한 출력을 제공하는 단계.
그 후, 제1 테이블과 연관된 요청 또는 트랜잭션에 대한 응답으로 아래 트랜잭션을 기초로 다음 SQL 명령이 실행된다:
INSERT INTO TABLE은 다음 단계를 포함한다:
TxID4 - 제1 테이블에서 제1 엔트리를 생성하기 위해 제4 트랜잭션을 생성하는 단계 - 제4 트랜잭션은 데이터 구조의 엔트리 트랜잭션 타입을 기초로 함 -; 및 생성된 엔트리에 기초하고 제4 트랜잭션의 식별자(ETxID)를 포함하는 제4 트랜잭션에 대한 출력을 제공하는 단계.
TxID5 - 다음 단계를 포함하는 제4 트랜잭션의 출력을 기초로 제5 트랜잭션을 생성하는 단계:
제1 테이블의 테이블 트랜잭션 타입을 제4 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계 및 제5 트랜잭션에 대한 출력 - 출력은 업데이트된 제1 테이블에 기초함 -, 및 제5 트랜잭션의 식별자(TTxID)를 제공하는 단계.
TxID6 - 다음 단계를 포함하는 제5 트랜잭션의 출력을 기초로 제6 트랜잭션을 생성하는 단계:
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제5 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계 및 업데이트된 제1 데이터베이스를 기초로 제6 트랜잭션에 대한 출력을 제공하는 단계.
도 3b는 도 2의 데이터 구조를 생성하거나 및/또는 관리하는 DBMS와 연관된 하나 이상의 프로세서에 의해 실행될 때, 다음 SQL UPDATE 데이터베이스 명령을 나타내는 개략도이다.
제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 다음 단계를 포함하는 블록체인 트랜잭션을 사용하여 구현되는 UPDATE/MODIFY 명령을 사용하여 제1 테이블을 수정한다:
TxID7 - 제1 테이블에서의 제1 엔트리와 연관된 데이터 쌍의 참조 및/또는 값을 수정하기 위해 제7 트랜잭션을 생성하는 단계. 이는 제7 트랜잭션을 기초로 수정된 엔트리로 제1 엔트리의 엔트리 트랜잭션 타입을 업데이트하고 제7 트랜잭션의 식별자(ETxID)를 포함하는 수정된 엔트리에 기초하여 제7 트랜잭션에 대한 출력을 제공함으로써 후속된다.
TxID8 - 다음 단계를 포함하는 제7 트랜잭션의 출력을 기초로 제8 트랜잭션을 생성하는 단계:
제1 테이블의 테이블 트랜잭션 타입을 제7 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계, 및 업데이트된 제1 테이블에 기초로 및 제8 트랜잭션의 식별자(TTxID)를 포함하는 제8 트랜잭션에 대한 출력을 제공하는 단계.
TxID9 - 다음 단계를 포함하여, 제8 트랜잭션의 출력을 기초로 제9 트랜잭션을 생성하는 단계:
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제8 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계 및 업데이트된 제1 데이터베이스에 기초하여 제6 트랜잭션에 대한 출력을 제공하는 단계
도 3c는 도 2의 데이터 구조를 생성하거나 및/또는 관리하는 DBMS와 연관된 하나 이상의 프로세서에 의해 실행될 때 다음 SQL DELETE 데이터베이스 명령을 나타내는 개략도이다.
제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 다음 단계를 포함하는 블록체인 트랜잭션을 사용하여 구현되는 DELETE FROM 명령을 사용하여 제1 테이블을 수정한다:
TxID10 - 다음 단계를 포함하여 제1 테이블에서의 제1 엔트리를 삭제하기 위한 제10 트랜잭션을 생성하는 단계:
제4 트랜잭션과 연관된 식별자(ETxID)를 제거하기 위해 제1 테이블의 테이블 트랜잭션 타입을 업데이트하는 단계, 및 업데이트된 제1 테이블에 기초하고 제10 트랜잭션의 식별자(TTxID)를 포함하는 제10 트랜잭션에 대한 출력을 제공하는 단계.
TxID11 - 다음 단계를 포함하는 제10 트랜잭션의 출력을 기초로 제11 트랜잭션을 생성하는 단계:
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제10 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계, 및 제11 트랜잭션에 대한 출력을 제공하는 단계 - 출력은 업데이트된 제1 데이터베이스의 식별자를 포함함 -.
위의 예시는 제1 양상의 블록체인 기반 데이터 구조를 사용하여 일부 SQL 명령이 어떻게 수행될 수 있는 지를 도시한다. 위의 트랜잭션 흐름으로부터 일부 수정이 아래에 제시되며, 이는 또한 본 개시의 범주 내에 있다.
다수의 기업 애플리케이션 및 기존의 데이터베이스의 경우, 데이터는 지속적으로 추가되고, 제거되며 변경되고 있다. 이 대용량 사례의 경우, 개별적인 요청을 제출하거나 각 요청에 대해 데이터베이스 명령을 제출하는 것은 실시 불가능하고 경제적으로 비효율적일 수 있으며, 각각 별도의 블록체인 트랜잭션을 필요로 한다.
따라서, 본 개시의 일부 실시예에서 요청은 유리하게는 엔트리 및 테이블 레벨 모두에서 더 효율적인 리소스 관리를 허용하도록 유리하게 일괄 처리될 수 있다. 다수의 엔트리(행)을 단일 테이블에 삽입하기 위해, 블록체인 데이터 구조에서의 데이터는 단일 트랜잭션으로 인덱싱되고 연결될 수 있다. 엔트리 정보를 업데이트하기 위해, 관련 엔트리 또는 엔트리들만을 변경함으로써 소비-불가능한 트랜잭션(즉, OP_RETURN 트랜잭션)은 관련된 소비 트랜잭션에 복사될 수 있다. 공통 엔트리를 공유하는 관련된 테이블의 경우, 일부 실시예에서 데이터가 변경될 때 필요한 업데이트 트랜잭션의 수를 제한하기 위해 동일한 트랜잭션에 포함하는 것이 가능할 수 있다.
SQL 서버는 일반적으로 트랜잭션 로그로 불리는 파일에서의 데이터베이스에 대한 모든 요청의 레코드(제안된 블록체인 기반 데이터 구조에 대한 트랜잭션)를 포함할 수 있다. 이는 일반적으로 파일 손상 또는 데이터의 삭제의 경우 데이터베이스 파일의 백업의 역할을 한다. 트랜잭션 로그는 데이터베이스의 최신 상태를 재생성하기 위해 로딩될 수 있다. 하지만, 대용량 시스템에서 이 파일은 크기가 테라바이트에 이를 수 있어서, 저장하기 어렵고 비용이 많이 든다. 이 문제를 해결하기 위해, 본 개시의 일부 실시예는 일련의 트랜잭션을 사용하여 분산 원장, 즉 도 2의 블록체인 기반 데이터 구조를 사용하여 구현된 데이터베이스에 대한 유사한 로깅 시스템을 제공한다. 일련의 요청 트랜잭션은 최신 트랜잭션의 트랜잭션 식별자 TxID만을 참조로 사용하여 단일 트랜잭션 내에 저장될 수 있다. 이는 백업 로그의 크기를 유리하게 상당히 감소시킬 것이다. 나아가, 블록체인 상에서 일련의 트랜잭션의 이 백업 로그를 저장하는 것은 엔티티 또는 회사가 백업 그 자체를 저장할 필요가 없고 최신 트랜잭션의 레코드만을 유지하면 된다는 것 또한 유리하게 의미한다. 유리하게, 이 로그는 또한 데이터베이스에 대한 모든 업데이트의 영구적인 변경 불가능한 레코드를 제공하기 때문에, 감사 또는 규제 요건에 대해서도 사용될 수 있다.
제2 양상 - 블록체인 트랜잭션에 관한 데이터와 연관된 DBMS에 대한 등록 및 액세스 관리
데이터 관리 시스템(DBMS)은 SQL 요청을 용이하게 하고 하나 이상의 데이터베이스에 관련된 데이터를 구조화하는 기능을 한다. 블록체인 기반 데이터베이스의 경우, 이는 트랜잭션을 구성하고 및 제출할 뿐만 아니라(도 3a 내지 3c 참조), 관련된 트랜잭션 ID(TxID)의 레코드를 유지하는 데 특히 중요하다(도 1 및 2에서 논의된 데이터 구조 참조). 블록체인 기반 데이터 구조에 대한 이 데이터 관리 시스템은 분산 데이터베이스를 통합하는 역할을 하는, 종래의 분산 데이터베이스의 분산 데이터베이스 관리 시스템(DDMS)과 유사하다. 이 DBMS는 그 자체를 다양한 방식으로, 즉 원격 제3자 서비스를 위한 하나 이상의 컴퓨팅 리소스, 또는 그 자신의 DBMS를 관리하기 위한 컴퓨팅 리소스 또는 처리/네트워크 성능 및 가용성을 갖거나 이와 연관될 수 있는 클라이언트 엔티티에 대해 구성될 수 있는 클라이언트 애플리케이션을 나타낼 수 있다.
본 개시의 제2 양상에서, DBMS에 의해 관리되고 하나 이상의 블록체인 트랜잭션과 연관된 데이터에 액세스하고자 하는 클라이언트 엔티티에 대한 신원 및 액세스 검증 기술이 논의된다. 일부 실시예에서 제2 양상과 연관된 방법은 DBMS와 연관된 하나 이상의 프로세서에 의해 구현된다. 일부 실시예에서, 제2 양상의 방법은 데이터베이스의 무결성을 보호하고 충분한 보안을 제공하기 위해 DBMS의 일부이거나 또는 이와 연관된 등록 및 액세스 관리 시스템에 의해 구현된다. 제2 양상에서 DBMS에 의해 관리되는 데이터베이스는 제1 양상의 블록체인 기반 데이터 구조이다. 유리하게, 제2 양상과 연관된 방법은 데이터베이스 동작을 수행하기를 원하는 클라이언트 엔티티에 대해 읽기 전용, 쓰기 전용 또는 읽기 및 쓰기 권한 모두와 같은 다중-레벨 액세스 또는 허가 제어를 허용한다.
도 4a는 DBMS를 통해 데이터베이스에 대한 액세스를 검증하는 데 사용될 수 있고 임의의 타입의 데이터 또는 조직에 유리하게 적응될 수 있는 오프-체인 속성-기반 액세스 기술과 연관된 방법을 도시하는 흐름도이다. 요청을 전송하는 사용자가 요청된 동작을 허가하는 설정과 연관된 하나 이상의 속성을 갖지 않는 한, 데이터베이스 또는 그의 구성요소에 대한 액세스가 제한된다. 도 4a는 DBMS와 연관된 하나 이상의 프로세서에 의해 구현되는 방법에 관련된다.
단계 402a에서, DBMS에 등록을 위한 요청은 DBMS에 의해 연관된 하나 이상의 프로세서에 의해 수신된다. 등록을 위한 요청은 일부 실시예에서 도 2에서의 데이터 구조와 같은, 블록체인 구현 데이터베이스에서의 데이터를 사용하거나, 보거나 또는 조작하고자 하는 주어진 사용자에 대해 클라이언트 엔티티와 연관된 하나 이상의 프로세서로부터 수신된 요청이다.
단계 404a는 주어진 사용자와 연관된 레코드를 생성하는 단계를 나타낸다. 레코드는 DBMS와 연관된 하나 이상의 메모리 또는 저장 모듈에 저장될 수 있거나, 또는 필요할 때 검색되도록 원격 서버 또는 저장 구조에 저장될 수 있다. 레코드는 복수의 사용자 중 주어진 사용자에 대한 식별자를 포함한다. 이는 사용자를 식별하는 데 사용될 수 있는 사용자의 이름 및 다른 세부사항일 수 있다.
단계 406a에서, 주어진 사용자와 연관된 공개 키 P가 클라이언트 엔티티로부터 획득된다. 공개 키는 주어진 사용자와 연관된 암호화 키 쌍의 일부이며, 암호화 키 쌍은 또한, 주어진 사용자에 대한 개인 키 V를 포함한다. 주어진 사용자에 대한 공개 및/또는 개인 키는 난수 또는 비밀 시드에 기초하는 것과 같이, 제2 양상과 관련하여 위에서 설명된 바와 같은 알려진 방법에 의해 생성될 수 있다.
단계 408a는 주어진 사용자와 연관된 하나 이상의 속성을 획득하는 단계 또는 할당하는 단계를 나타내며, 여기서 각 속성은 DBMS에 의해 관리되는 데이터베이스에 대한 액세스에 관련된 설정과 연관된다. 예를 들어, 설정은 위에서 논의한 바와 같이 HR 또는 회계와 같은, 팀 또는 부서의 이름일 수 있는 속성에 대한 허가 설정일 수 있다. 일부 예시에서, 설정은 데이터베이스의 구성요소에 액세스하기 위한 읽기/쓰기 허가가 그 특정 속성을 갖는 주어진 사용자에게 허용되는지 여부를 나타내는 플래그 또는 이진 토글(0 또는 1) 또는 상태일 수 있다. 속성 설정은 클라이언트 엔티티로부터 획득되거나, 또는 일부 실시예에서 속성은 주어진 사용자의 신원에 의존하여 DBMS에 의해 미리-할당된다. 설정은 클라이언트 엔티티로부터 속성과 연관되어 획득될 수 있거나, 또는 DBMS의 시스템 관리자 모듈에 의해 수신된 특정 속성에 대해 미리-할당될 수 있다.
단계 410a는 획득된 공개 키 P 및 하나 이상의 속성, 및 수신된 경우 주어진 사용자와 연관된 허가 설정에 기초하여 레코드를 업데이트하는 단계를 나타낸다. 일부 실시예에서, 사용자 레코드는 아래 단계에서 설명된 바와 같이, 나중에 액세스될 수 있는 하나 이상의 저장 영역 형태로 DBMS에 또는 그와 연관되어 저장된다. 이러한 저장은 또한, 원격 컴퓨팅 리소스에서도 가능할 수 있다.
단계 412a는 클라이언트 엔티티로부터 데이터베이스와 연관된 동작을 위한 요청을 획득하는 단계를 나타내며, 클라이언트 엔티티는 복수의 사용자 중에서 주어진 사용자와 연관된다. 요청은 이 단계에서 요청을 전송하는 주어진 사용자와 연관된 디지털 서명을 포함한다.
단계 414a에서, 이는 이전 단계에서 요청을 한 주어진 사용자가 주어진 사용자에 대한 사용자 레코드가 존재하는지 검사함으로써 데이터베이스에 액세스하도록 인증되었는지를 먼저 결정한다. 다시 말해, 위의 단계 402a 내지 410a에서 설명된 바와 같이, 이전 단계에서 요청을 한 사용자가 데이터베이스에 실제로 등록되었는지가 검사된다.
사용자가 등록되지 않았거나 또는 사용자에 대한 사용자 레코드가 발견되지 않으면, 단계 416a에서 단계 412a에서 수신된 요청이 거부되거나 또는 거절된다. 일부 실시예에서, 그 결과에 대한 오류 통지가 생성될 수 있다.
사용자 레코드가 발견된 경우, 단계 412a에서 요청을 한 주어진 사용자가 인증된다. 그 후, 방법은 단계 418a로 진행하며, 디지털 서명이 요청을 전송한 주어진 사용자와 올바르게 연관되었는지가 검증된다. 이는 주어진 사용자에 대한 레코드에 존재하는 공개 키 P를 사용하여 요청이 유효성 검증되거나 또는 해독될 수 있음을 보장함으로써 행해질 수 있다. 디지털 서명이 개인 키 V를 기초로 하는 경우에만, 이는 쌍을 이루는 공개 키 P를 사용하여 성공적으로 검증되거나 해독될 것이다. 이는 요청이 주어진 사용자를 사칭하는 악의적인 자(malign party)가 아닌, 사용자 요청에서 식별된 주어진 사용자로부터 실제로 유래하였음을 보장한다.
디지털 서명이 레코드에서 공개 키 P를 사용하여 검증될 수 없는 경우, 단계 412a에서의 요청은 단계 410a에서 거부된다. 일부 실시예에서, 이러한 거부를 전달하기 위해 오류 메시지가 생성될 수 있다.
디지털 서명의 성공적인 검증에 응답하여, 단계 422a에서 요청 및 사용자 레코드의 현재 인스턴스에 기초한 메시지가 DBMS에 의해 생성된다. 이 메시지는 기계가 읽을 수 있고, (제3 양상에 관련하여 아래에서 설명된 바와 같이) 하나 이상의 DBMS 구성요소에 의해 파싱될 수 있는 포맷으로 생성된다. 일부 실시예에서, 메시지는 속성, 설정(수신된 경우)뿐만 아니라 사용자에 의해 요청된 데이터베이스 동작의 표시를 반영하는 세부사항을 포함한다
제2 양상에 관련된 도 4b는 위의 도 4a에서 설명된 방법을 보완하지만, 도 2에서 관찰되는 블록체인 구현 데이터 구조와 같이, 데이터베이스와 연관된 등록 및/또는 동작을 위한 요청을 하는 주어진 사용자와 연관된 클라이언트 엔티티의 하나 이상의 프로세서에 의해 구현된다.
단계 402b는 DBMS에 등록하기 위한 요청을 생성하는 단계를 나타내며, 요청은 요청을 전송하는 클라이언트 엔티티와 연관된 주어진 사용자와 연관된다.
단계 404b는 주어진 사용자와 연관된 하나 이상의 속성을 제공하거나 액세스하는 단계를 나타내며, 각 속성은 DBMS에 의해 관리되는 데이터베이스에 관련된 설정과 연관된다. 속성이 클라이언트 엔티티에서 이용 가능한 경우, 이는 등록 요청의 일부로서 포함된다. 그렇지 않은 경우, 이 속성(및 이용 가능한 경우 설정)은 주어진 사용자에 대한 상이한 시스템 또는 메모리로부터 획득된다.
단계 406b는 주어진 사용자와 연관된 개인 키 V를 생성하는 단계를 나타내며, 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이다. 이 개인 키는 임의의 다른 엔티티 또는 DBMS와 공유되지 않는다. 이는 공통 비밀 또는 생성기 등을 사용하는 것과 같은 임의의 알려진 수단에 의해 생성될 수 있으며, 이 생성 방법은 본 개시의 범주 이상이다. 일부 실시예에서 공개 키뿐만 아니라 개인 키는 시스템의 보안을 증가시키기 위해 주기적으로 또는 임의의 간격으로 생성되는 임시 키일 수 있다.
단계 408b는 개인 키 V를 기초로 공개 키 P를 계산하는 단계를 나타낸다. 암호화 키 쌍의 공개 키 P 없이는 개인 키 V에 의해 서명된 메시지를 유효성 검증할 수 없을 것이고 그 역으로도 그러할 것이기 때문에, 이 키는 개인 키 V에 관련된다.
단계 410b는 인터넷과 같은 통신 네트워크를 통해 하나 이상의 알려진 데이터 전송 프로토콜을 사용하여 공개 키 P 및 하나 이상의 속성을 DBMS로 전송하는 단계를 나타낸다.
단계 412b는 데이터베이스와 연관된 동작을 위한 요청을 생성하는 단계를 나타내며, 요청은 주어진 사용자와 연관된다. 참조의 용이함을 위해, 이 도면에서 이는 단계 402b에서 등록 요청을 전송하는 동일한 사용자로 간주된다. 다른 실시예에서, 이 단계 및 다음 단계는 또한 DBMS에 등록된 상이한 사용자에 대해 상이한 클라이언트 엔티티에 의해 수행될 수 있다.
단계 414b는 주어진 사용자에 대한 개인 키 V에 기초하여 디지털 서명을 생성하는 단계를 나타내며, 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이고; 여기서 공개 키 P는 단계 402b 내지 410b에서 논의된 등록 프로세스 동안 DBMS에 제공된다.
단계 416b는 디지털 서명을 요청에 적용하는 단계 및 서명된 요청을 DBMS로 전송하는 단계를 나타낸다. 일부 실시예에서, 요청이 DBMS에 의해 거부된 경우(성공적이지 않은 인증의 경우 또는 디지털 서명의 실패된 검증이 있는 경우), 클라이언트 엔티티는 요청에 대한 응답으로 DBMS로부터 오류 메시지를 수신할 수 있다.
제3 양상 - 블록체인 트랜잭션에 관한 데이터와 연관된 DBMS에 대한 명령 해석 및 트랜잭션 구성
제2 양상에 관련하여 언급된 바와 같이, 데이터 관리 시스템은 SQL 요청을 용이하게 하고, 도 2에서의 블록체인 기반 데이터베이스와 같은, 데이터베이스에 대한 요청을 처리한다. 본 개시의 제3 양상은 블록체인 데이터베이스와 관련된 동작을 수행하기 위한 데이터베이스 요청을 해석하고 및 처리하기 위한 방법에 관련된다. 일부 실시예에서, DBMS의 하나 이상의 프로세서에 의해 구현될 때 제3 양상의 방법은 SQL 컴파일러의 역할을 효과적으로 할 뿐만 아니라, 속성의 검증을 수행한다(제2 양상의 인증 및 신원 검증 이후).
도 5는 데이터베이스의 동작을 위한 하나 이상의 SQL 명령 또는 요청을 해석하고 처리하는 것과 연관된 방법을 도시하는 흐름도이며, 데이터베이스는 도 2에서 관찰되는 블록체인 구현 데이터 구조이다.
단계 502는 하나 이상의 사용자 중 주어진 사용자에 대한 사용자 레코드의 현재 인스턴스와 연관된 메시지를 수신하는 단계를 나타내며, 메시지는 또한, 데이터베이스와 연관된 요청을 또한 포함한다. 일부 실시예에서, 이 메시지는 도 4a의 단계 422a에서 설명된 바와 같고, 요청은 주어진 사용자에 의해 제공되는 동작을 위한 요청이다. 요청은 읽기 요청 또는 쓰기를 위한 요청, 즉 데이터베이스에서 데이터를 업데이트/삽입하거나, 수정하거나 또는 삭제하기 위한 요청일 수 있다.
단계 504에서, 주어진 사용자와 연관된 속성이 단계 502에서의 메시지로부터 검색된다. 설정이 사용자 레코드에 제공되면 이는 또한 획득된다. 일부 실시예에서 이 설정은 DBMS와 연관된 메모리에 미리 설정되고 저장될 수 있는 속성과 연관된 허가이다. 어느 경우에서, 하나 이상의 타입의 데이터베이스 동작에 대한 속성 및 그의 연관된 허가(설정) 모두가 이 단계에서 검색된다.
그 후, 단계 506에서, 검색된 속성의 각각에 대한 허가 설정이 주어진 사용자에 의해 이루어진 요청에 대해 유효한지가 검증된다. 다시 말해, SQL 요청이 파싱되고 요구되는 데이터베이스 속성이 주어진 사용자에 대한 각각의 속성과 연관된 설정에 대해 검사된다. 일부 실시예에서, 사용자 및 속성을 객체로 취하는 경우, 이 검사는 다음과 같이 간단한 부울 검사(Boolean check)를 사용하는 것을 기초로 수행될 수 있다.
(객체 인스턴스).(데이터베이스 속성)==참(true)
그의 각각의 허가 설정을 기초로 검증될 하나 보다 많은 속성이 있는 경우, AND뿐만 아니라 OR 연산을 사용하여 속성이 결합되거나 또는 연쇄될 수 있다. 속성에 대한 액세스 조건의 실패는 일부 실시예에서, PERMISSION ERROR 메시지가 사용자에게 디스플레이되도록 트리거하고, 요청은 단계 508에서 관찰되는 바와 같이 더 이상 진행되지 않고 거부될 것이다.
액세스 조건이 충족되면, 일부 실시예에서 SQL 요청은 SQL 명령 라이브러리와 비교된다. 이러한 명령이 라이브러리에 없거나 또는 DBMS에 의해 인식되지 않는 경우, REQUEST ERROR 메시지가 사용자에게 반환될 수 있다. 그것이 유효한 함수인 경우, 방법은 단계 510으로 진행한다.
단계 510은 요청에 관련된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)를 획득하는 단계를 나타내며, 각 획득된 트랜잭션 식별자는 트랜잭션에 관한 것이고, 그에 의해 상기 트랜잭션에 대한 데이터는 데이터 구조와 연관된다. 이 단계는 또한, 데이터 구조로부터 획득된 트랜잭션 식별자(TTxID, ETxID)에 관련된 데이터에 액세스하는 단계를 포함한다.
데이터가 이제 액세스 가능하면, 단계 512에서 요청이 액세스된 데이터를 사용하여 수행될 READ 또는 WRITE 동작인지가 결정된다.
그것이 데이터가 어느 방식으로도 업데이트되지 않은 READ 동작이면, DBMS 또는 클라이언트 엔티티 상의 인터페이스와 연관된 하나 이상의 프로세서 또는 디스플레이 디바이스에 제공을 위해 액세스된 데이터를 검색하는 동작이 단계 514에서 수행된다. 일부 실시예에서, READ 동작(데이터베이스 쿼리)을 위해 관련된 TxID가 수집되고 시스템의 메모리를 구성한다. 쿼리가 수행되고 요약 테이블이 구성되며 사용자에게 반환된다.
요청이 WRITE 동작, 즉 도 3a 내지 3b에서 관찰되고 제1 양상에 관련하여 위에서 설명된 것과 같은 업데이트/삽입, 수정 또는 삭제 동작과 연관된 경우, 단계 512에서 데이터를 획득하는 단계에 부가하여, 방법은 단계 516에서 동작에 기초하여 획득된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)와 연관된 트랜잭션(들)을 소비하거나 또는 처리하기 위한 하나 이상의 트랜잭션을 생성하는 프로세스를 더 포함한다. 일부 실시예에서, WRITE 동작의 경우, 업데이트되어야 하는 적절한 TxID(또는 TxID들)가 수집되고, DBMS와 연관된 하나 또는 프로세서일 수 있는 트랜잭션 생성자(transaction constructor)에 전달된다. 이 트랜잭션 생성자는 위에서 설명된 것처럼, 분산 원장과의 통신을 위해 SPV 지갑과 연관될 수 있다.
동시에, OP_RETURN 페이로드는 블록체인에 대한 새로운 트랜잭션의 생성 시 구성될 수 있다. 이는 사용자의 디지털 서명을 포함하는 것에 부가하여, 예를 들어 도 3a 내지 3c에 제시된 명령에 대한 트랜잭션의 생성에 유사하다. 디지털 서명은 사용자가 블록체인과 직접적으로 상호 작용할 필요 없이 사용자 레코드로 검증될 수 있는 요청 제출의 감사 가능한 레코드를 유리하게 제공하며, 제출 시 또는 추후 언제든지 주어진 사용자에 대한 제출을 검증하는 데 사용될 수 있다. 이는 블록체인 상에서 변경 불가능한 레코드를 여전히 유지하면서 종래의 시스템과의 상호 작용을 유리하게 제공한다. 일부 실시예에서, OP_RETURN 페이로드는 그 후, 트랜잭션 생성자에 전달되기 전에 결정성 도출 키를 사용하여 암호화될 수 있다.
트랜잭션 구성은 단계 51에서 다수의 방식으로 행해질 수 있다. 예를 들어, 필요한 TxID 및 OP_RETURN 페이로드를 수신하면, 트랜잭션(들)은 그 후, 전체 노드에 대한 피어 투 피어 연결을 통해 블록체인 네트워크에 연결하는, (DBMS에 대한) 로컬 간단한 지불 검증(simple payment verification, SPV) 클라이언트 또는 DBMS에 대한 지갑을 사용하여 구성될 수 있다. SPV 클라이언트 또는 지갑 그 자체는 블록체인의 사본을 채굴하거나 저장하지 않는다.
트랜잭션 구성 의사 코드의 예시는 예시로서 아래에 제공된다.
트랜잭션 객체는 생성자를 사용하여 인스턴스화된다.
tx = Transaction(NetworkParameters params)
소비 가능한 출력이 먼저 추가되고, DBMS의 SPV 클라이언트에 대한 시스템에 의해 보유된 주소(address_i)에 링크된다. 주소는 알려진 결정성 도출 방식에서 도출된 공개 키의 해시를 사용하여 생성될 수 있다.
tx.addOutput(Coin.MIN_NONDUST_OUTPUT, Address address_i)
OP_RETURN 페이로드는 변수 OPR_DATA에 저장되고, 그 후 다음과 같이 addOutput 함수를 사용하여 트랜잭션에 추가된다.
Figure pct00001
대응하는 UTXO 참조는 prevOut이라는 이름의 변수에 저장된다. 그 후, 이 출력을 소비하는 데 요구되는 개인 키 V가 검색되고, 대응하는 공개 키는 변수 sigKey에 저장된 P이다.
마지막으로, 개인 키 V는 ECDSA를 사용하여 (TxID 및 잠금 해제 스크립트 없이) 트랜잭션에 서명하는 데 사용된다. 서명 데이터(sig) 및 공개 키는 다음과 같이 저장된다.
scriptPubKey = OP_PUSH sig OP_PUSH sigKey
그 후, addSignedInput 함수를 사용하여 입력 데이터가 트랜잭션 객체에 추가된다.
Figure pct00002
그 후, 트랜잭션은 블록에서 검증 및 포함을 위한 전체 노드에 대해 SPV 지갑을 통해 네트워크로 제출될 수 있다:
tx.broadcastComplete.get()
단계 518에서, 도 2에서의 블록체인 기반 데이터 구조와 연관된 엔트리 트랜잭션 데이터 타입, 테이블 트랜잭션 데이터 타입 및/또는 데이터베이스 트랜잭션 데이터 타입 중 하나 이상이 새로 구성되거나 생성된 트랜잭션의 TxID로 업데이트된다.
도 6은 도 2에서 관찰되는 블록체인 기반 데이터 구조에서 데이터의 저장, 액세스 및 조작을 관리하기 위한 본 개시의 제2 또는 제3 양상과 관련하여 논의된 바와 같은 데이터 관리 시스템 또는 데이터 또는 데이터베이스 관리 시스템(DBMS)(600)을 도시하는 개략도이다.
이는 통합 분산 데이터 시스템의 역할을 하는 종래의 분산 데이터베이스의 분산 데이터베이스 관리 시스템(DDMS)과 유사하다. 이 DBMS(600) 시스템은 하나 이상의 원격 서버에 의해 구현된 원격 또는 제3자 서비스일 수 있거나, 또는 이는 클라이언트 애플리케이션과 연관될 수 있다.
구현에 관계없이, DBMS(600)는 다음의 구성요소를 포함한다
ㆍ 클라이언트 엔티티(602)와 연관된 사용자에 대한 읽기/쓰기 권한에 대한 액세스 제어를 제공하기 위해 제2 양상과 관련하여 논의된 방법에 기초한 등록 및 액세스 관리 시스템(604).
ㆍ 제3 양상과 관련하여 설명된 바와 같이, 블록체인 데이터 구조와 연관된 데이터에 대한 트랜잭션 또는 쿼리를 생성하기 위해 표준 SQL 명령을 해석하고 실행하기 위한 트랜잭션 구현 시스템(606). 이 구성요소는 SQL 컴파일러로 동작하는 명령 해석기(606a), 제출될 일련의 트랜잭션을 구성하는 트랜잭션 생성자(606b), 블록체인(612)과 이어주거나(liaising) 또는 통신할 때 출력 실행 관리, 트랜잭션 제출, 네트워크 모니터링 등을 위한 SPV 지갑(606c)을 포함할 수 있다.
ㆍ DBMS(600)과 연관되어, UTXO 세트에서의 모든 TxID 및 최신 데이터를 레코딩하기 위한 UTXO 세트(610) 및 TxID 레지스터(608).
데이터에 대한 빠르고 간단한 액세스를 용이하게 하기 위해, DBMS(600)는 UTXO 세트(610)의 인덱싱된 사본 또는 데이터베이스에 대한 최신 관련 트랜잭션을 포함하는 서브세트를 제공받을 수 있다. 이는 UTXO의 업데이트(소비)를 레코딩하기 위해 사용자(즉, 데이터베이스/DBMS를 등록하거나 또는 액세스하기 위해 요청하는 전체 노드인 클라이언트 엔티티)와 연관된 키를 추적하는 SPV 지갑(606c)과 통합된다. 인덱스의 별도의 레코드는 TxID 레지스터(608)로 저장되며, 따라서 쿼리를 위해 OP_RETURN 데이터가 검색될 수 있다.
인덱스는 단순 실행 정수 카운트, 또는 이름, 함수 출력 값 또는 해시 값과 같은 더 상세한 데이터일 수 있다. 데이터베이스 트랜잭션의 트랜잭션 식별자 TxID는 데이터베이스 또는 전체 데이터 구조를 재조립하기 위한 관련된 TTxID 또는 ETxID를 포함하므로 요구되는 모든 것이다. 하지만, 요구되는 업데이트 트랜잭션의 수를 감소시키기 위해, 일부 실시예에서 TTxID 또는 ETxID를 저장하고 관련된 데이터베이스 구조로 오프-체인으로 구성하는 것이 또한 가능하다. 액세스 속성은 등록 및 액세스 관리 시스템에 의해 본 개시의 제2 양상에서 수행되는 설정/허가 검증 단계 동안 검사될 수 있는 TxID 레지스터(608)로 저장될 수 있다.
DBMS(600)의 구성요소는 블록체인(612)과 연관된 분산 데이터에 대한 단일 참조 지점을 제공하기 위해 사용자 요청을 처리하는 시퀀스를 제공한다. DBMS(600)의 함수 및 구성요소는 위의 제2 및 제3 양상과 관련하여 설명된 것과 동일한 방법을 사용하여 온 또는 오프-체인으로 수행되거나 또는 구현될 수 있다.
이제 도 7을 참조하면, 본 개시의 적어도 하나의 실시예를 실시하는데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 서술된 시스템 중 임의의 것을 구현하는데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 도면의 DBMS의 하나 이상의 구성요소로서 사용되도록 구성될 수 있거나, 또는 컴퓨팅 디바이스(2600)는 주어진 사용자와 연관된 클라이언트 엔티티가 되도록 구성될 수 있으며, 클라이언트 엔티티는 도 6의 DBMS에 의해 관리되는 데이터베이스에 대해 데이터베이스 요청을 생성한다. 따라서, 컴퓨팅 디바이스(2600)는 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스일 수 있다. 도 7에 도시된 바와 같이, 컴퓨팅 디바이스(2600)는 메인 메모리(2608) 및 영구 저장소(2610)를 포함하는 저장소 서브시스템(2606)과 통신하도록 구성될 수 있는 하나 이상의 수준의 캐시 메모리 및 메모리 제어기를 갖는 하나 이상의 프로세서(집합적으로 2602로 라벨링 됨)를 포함할 수 있다. 메인 메모리(2608)는 도시된 바와 같이 동적 랜덤 액세스 메모리(DRAM)(2618) 및 판독 전용 메모리(ROM)(2620)를 포함할 수 있다. 저장소 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시에서 서술된 바와 같은 트랜잭션 및 블록과 연관된 세부사항과 같은, 정보의 저장을 위해 사용될 수 있다. 프로세서(들)(2602)는 본 개시에서 서술된 임의의 실시예의 단계 또는 기능을 제공하기 위해 이용될 수 있다.
프로세서(들)(2602)는 또한, 하나 이상의 사용자 인터페이스 입력 디바이스(2612), 하나 이상의 사용자 인터페이스 출력 디바이스(2614) 및 네트워크 인터페이스 서브 시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 디바이스(2600)의 다양한 구성요소 및 서브시스템이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일의 버스로서 개략적으로 도시되었지만, 버스 서브시스템의 대안적인 실시예는 다수의 버스를 이용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 디바이스 및 네트워크에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 디바이스(2600)로부터 다른 시스템으로부터 데이터를 수신하고 이로 데이터를 송신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 데이터 센터와 같은 원격 위치에 있는 디바이스로 데이터를 송신하거나 또는 그 디바이스로부터 데이터를 수신할 수 있도록, 데이터 기술자가 디바이스를 네트워크에 연결하게 할 수 있다.
사용자 인터페이스 입력 디바이스(2612)는 키보드; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 디바이스; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 디바이스; 및 다른 타입의 입력 디바이스와 같은 하나 이상의 사용자 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)에 정보를 입력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다.
하나 이상의 사용자 인터페이스 출력 디바이스(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 디바이스와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 디바이스 또는 다른 디스플레이 디바이스일 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 가능한 모든 타입의 디바이스 및 메커니즘을 포함하는 것으로 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는, 예를 들어, 이러한 사용자 상호작용이 적절할 수 있을 때, 서술된 프로세스 및 그 변형을 수행하는 애플리케이션과의 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는데 사용될 수 있다.
저장소 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의해 실행될 때, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시의 하나 이상의 실시예의 기능을 제공할 수 있고, 저장소 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 저장소 서브시스템(2606)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 보관소를 추가적으로 제공할 수 있다. 예를 들어, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 저장소를 제공할 수 있다. 영구 저장소(2610)는 프로그램 및 데이터에 대한 영구적인(비-휘발성) 저장소를 제공할 수 있고, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자기 하드 드라이브(magnetic hard disk drives), 연관된 이동식 매체를 갖는 하나 이상의 플로피 디스크 드라이브, 연관된 이동식 매체를 갖는 하나 이상의 광학 드라이브(예를 들어, CD-ROM 또는 DVD 또는 블루-레이) 드라이브 및 다른 유사한 저장 매체를 제공할 수 있다. 이러한 프로그램 및 데이터는 본 개시에서 서술된 하나 이상의 실시예의 단계를 수행하기 위한 프로그램뿐만 아니라, 본 개시에서 서술된 트랜잭션 및 블록과 연관된 데이터를 포함할 수 있다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크스테이션, 또는 아래에서 서술되는 임의의 다른 디바이스를 포함하는 다양한 타입일 수 있다. 추가적으로, 컴퓨팅 디바이스(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2600)에 연결될 수 있는 디바이스는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 디바이스는 광 신호를, 처리를 위해 디바이스를 컴퓨팅 디바이스(2600)에 연결하는 포트를 통해 송신될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크의 계속 변하는 성질에 기인하여, 도 9에 도시된 컴퓨팅 디바이스(2600)의 서술은 디바이스의 바람직한 실시예를 예시할 목적으로 특정 예시로서만 의도된다. 도 9에 도시된 시스템보다 더 많거나 적은 구성요소를 갖는 다수의 다른 구성이 가능하다.
열거된 예시적인 실시예
본 개시는 청구된 양상 및 실시예를 더 잘 설명하고, 기술하며 이해시키기 위한 예시적인 실시예로서 본 명세서에 제공된, 위의 양상에 관련된 다음 조항에 기초하여 여기서 논의된다.
1. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조를 제공하는 컴퓨터 구현된 방법으로서, 방법은 분산 원장에 대한 데이터 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되고, 방법은:
데이터베이스 트랜잭션 타입을 생성하는 단계로서, 상기 데이터베이스 트랜잭션 타입은:
분산 원장에 관한 하나 이상의 트랜잭션에 대한 데이터를 획득하는 데 사용되는 데이터베이스 D에 대한 식별자; 및
하나 이상의 테이블 트랜잭션 식별자(TTxID) - 하나 이상의 TTxID 중 주어진 TTxID는 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중 주어진 테이블에 특정되고, 주어진 TTxID는 주어진 테이블에 대한 분산 원장에 관한 트랜잭션에 관련됨 -를 포함하는 데이터 트랜잭션 타입을 생성하는 단계; 및
테이블 트랜잭션 타입을 생성하는 단계로서, 상기 테이블 트랜잭션 타입은:
테이블 T에 대한 식별자 - 테이블은 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중 있음 -; 및
식별된 테이블 T와 연관된 하나 이상의 엔트리를 포함하는, 테이블 트랜잭션 타입을 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
2. 조항 1에 있어서, 테이블 트랜잭션 타입은:
하나 이상의 엔트리 트랜잭션 식별자(ETxID) - 하나 이상의 ETxID 중 주어진 ETxID는 식별된 테이블 T와 연관된 하나 이상의 엔트리 중 주어진 엔트리에 특정되고, 주어진 ETxID는 주어진 엔트리에 대한 분산 원장에 관한 트랜잭션에 관련됨 -를 더 포함하고;
방법은:
엔트리 트랜잭션 타입을 생성하는 단계를 더 포함하고, 엔트리 트랜잭션 타입은:
하나 이상의 데이터 쌍 - 각 데이터 쌍은 식별된 테이블 T에서의 엔트리에 관련되고, 각 데이터 쌍은 식별된 테이블에서의 위치를 식별하는 참조 R 및 식별된 위치에 대한 값 VL을 포함함 -을 포함하는, 방법.
3. 조항 1 또는 2에 있어서, 하나 이상의 TTxID 또는 ETxID에 관련된 트랜잭션이 하나 이상의 소비되지 않은 트랜잭션 출력(UTXO)과 연관되는, 방법.
4. 조항 3에 있어서, 주어진 트랜잭션에 대한 UXTO는 식별된 데이터베이스 D 및/또는 테이블 T와 연관된 후속 트랜잭션에 의해 소비 가능한 출력 스크립트를 포함하는, 방법.
5. 조항 3 또는 4 중 어느 하나에 있어서, 주어진 트랜잭션에 대한 UTXO는 주어진 트랜잭션에 대한 소비 가능한 출력 스크립트와 연관된 소비-불가능한 출력을 포함하는, 방법.
6. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조로서, 데이터 구조는 분산 원장에 대한 데이터베이스 관리 시스템(DBMS)에 의해 연관된 하나 이상의 프로세서에 의해 관리되고, 데이터 구조는 조항 1 내지 조항 5 중 어느 하나에 따른 방법에 따라 생성된 데이터 트랜잭션 타입 및 테이블 트랜잭션 타입을 포함하는, 데이터 구조.
7. 조항 6에 있어서, 데이터 구조는 중첩된 트랜잭션 저장 구조이고, 데이터 구조는 조항 2 내지 5 중 어느 하나의 방법에 따라 생성된 엔트리 데이터 타입을 더 포함하고, 상기 데이터 구조는 식별된 데이터베이스 D와 연관된 TTxID 및 ETxID를 저장하는 것을 기초로 식별된 데이터베이스 D를 저장하도록 구성되는, 데이터 구조.
8. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 트랜잭션은 전술한 청구항 중 하나에 의해 제공된 데이터 구조를 사용하고, 방법은 데이터 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되고:
데이터베이스를 생성하는 단계로서,
제1 데이터베이스를 생성하기 위해 제1 트랜잭션을 생성하는 단계 - 제1 트랜잭션은 데이터 구조의 데이터베이스 트랜잭션 타입을 기초로 함 -; 및
생성된 제1 데이터베이스에 기초하여 제1 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 데이터베이스를 생성하는 단계;
제1 데이터베이스와 연관된 요청 또는 트랜잭션에 응답하여, 제1 데이터베이스를 업데이트하는 단계로서,
제1 테이블을 생성하기 위해 제2 트랜잭션을 생성하는 단계 - 제2 트랜잭션은 데이터 구조의 테이블 트랜잭션 타입에 기초함 -; 및
생성된 제1 테이블에 기초하고, 제2 트랜잭션의 식별자(TTxID)를 포함하는 제2 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제1 데이터베이스를 업데이트하는 단계;
제2 트랜잭션의 출력을 기초로 제3 트랜잭션을 생성하는 단계로서,
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제2 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
업데이트된 제1 데이터베이스에 기초하여 제3 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제3 트랜잭션을 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
9. 조항 7에 있어서,
제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 제1 테이블을 채우는 단계로서,
제1 테이블에서 제1 엔트리를 생성하기 위해 제4 트랜잭션을 생성하는 단계 - 제4 트랜잭션은 데이터 구조의 엔트리 트랜잭션을 기초로 함 -; 및
생성된 엔트리에 기초하고 제4 트랜잭션의 식별자(ETxID)를 포함하는 제4 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제1 테이블을 채우는 단계;
제4 트랜잭션의 출력에 기초하여 제5 트랜잭션을 생성하는 단계로서,
제1 테이블의 테이블 트랜잭션 타입을 제4 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계; 및
제5 트랜잭션에 대한 출력 - 출력은 업데이트된 제1 테이블에 기초함 -, 및 제5 트랜잭션의 식별자(TTxID)를 제공하는 단계를 포함하는, 제5 트랜잭션을 생성하는 단계; 및
제5 트랜잭션의 출력에 기초하여 제6 트랜잭션을 생성하는 단계로서,
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제5 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
업데이트된 제1 데이터베이스에 기초하여 제6 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제6 트랜잭션을 생성하는 단계를 더 포함하는, 방법.
10. 조항 9에 있어서,
제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 제1 테이블을 수정하는 단계로서,
제1 테이블에서 제1 엔트리와 연관된 데이터 쌍의 참조 및/또는 값을 수정하기 위해 제7 트랜잭션을 생성하는 단계;
제1 엔트리의 엔트리 트랜잭션 타입을 제7 트랜잭션에 기초하여 수정된 엔트리로 업데이트하는 단계; 및
수정된 엔트리에 기초하고 제7 트랜잭션의 식별자(ETxID)를 포함하는 제7 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제1 테이블을 수정하는 단계;
제7 트랜잭션의 출력에 기초하여 제8 트랜잭션을 생성하는 단계로서,
제1 테이블의 테이블 트랜잭션 타입을 제7 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계; 및
업데이트된 제1 테이블에 기초하고 제8 트랜잭션의 식별자(TTxID)를 포함하는 제8 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제8 트랜잭션을 생성하는 단계; 및
제8 트랜잭션의 출력에 기초하여 제9 트랜잭션을 생성하는 단계로서,
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제8 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
업데이트된 제1 데이터베이스에 기초하여 제6 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제9 트랜잭션을 생성하는 단계를 포함하는, 방법.
11. 조항 8 또는 조항 9 중 어느 하나에 있어서,
제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 제1 테이블을 수정하는 단계를 포함하고, 제1 테이블을 수정하는 단계는
제1 테이블에서 제1 엔트리를 삭제하기 위해 제10 트랜잭션을 생성하는 단계로서,
제4 트랜잭션과 연관된 식별자(ETxID)를 제거하기 위해 제1 테이블의 테이블 트랜잭션 타입을 업데이트하는 단계; 및
업데이트된 제1 테이블에 기초하고 제10 트랜잭션의 식별자(TTxID)를 포함하는 제10 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제10 트랜잭션을 생성하는 단계; 및
제10 트랜잭션의 출력을 기초로 제11 트랜잭션을 생성하는 단계로서,
제1 데이터베이스의 데이터베이스 트랜잭션 타입을 제10 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
제11 트랜잭션에 대한 출력을 제공하는 단계 - 출력은 업데이트된 제1 데이터베이스의 식별자를 포함함 -를 포함하는, 제11 트랜잭션을 생성하는 단계를 포함하는, 방법.
12. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 트랜잭션은 조항 1 내지 7 중 어느 하나에 의해 제공된 데이터 구조를 사용하고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
제1 데이터베이스를 생성하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계;
생성된 제1 데이터베이스 D와 연관된 적어도 하나의 트랜잭션 출력에 대한 분산 원장을 모니터링하는 단계;
제1 데이터베이스에 대한 제1 테이블을 생성하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계;
제1 테이블(TTxID)과 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계; 및
제1 테이블을 제1 엔트리로 업데이트하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계 - 제1 엔트리는 제1 테이블에서의 위치를 식별하는 참조 및 식별된 위치에 대한 값을 포함하는 데이터 쌍을 포함함 -를 포함하는, 컴퓨터 구현된 방법.
13. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 트랜잭션은 조항 1 내지 7 중 어느 하나에 의해 제공된 데이터 구조를 사용하고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
제1 데이터베이스의 제1 테이블에서 제1 엔트리(ETxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계;
제1 엔트리를 수정하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계 - 요청은 제1 엔트리와 연관된 데이터 쌍의 참조 및/또는 값을 수정하기 위한 요청을 포함함 -;
상기 수정된 제1 엔트리를 포함하는 업데이트된 제1 데이터베이스 D 및/또는 업데이트된 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계를 포함하는, 컴퓨터 구현된 방법.
14. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 트랜잭션은 조항 1 내지 7 중 어느 하나에 의해 제공된 데이터 구조를 사용하고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
제1 데이터베이스의 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계;
제1 테이블의 제1 엔트리를 삭제하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계;
업데이트된 제1 데이터베이스 및/또는 업데이트된 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계를 포함하는, 컴퓨터 구현된 방법.
15. 데이터 관리 시스템(DBMS)에 대한 액세스를 관리하기 위한 컴퓨터 구현된 방법으로서, DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터를 관리하고, 데이터는 데이터베이스에 제공되며, 방법은:
DBMS에 등록을 위한 요청에 응답하여, 주어진 사용자와 연관된 레코드를 생성하는 단계 - 레코드는 복수의 사용자 중 주어진 사용자에 대한 식별자를 포함함 -;
주어진 사용자와 연관된 공개 키 P를 획득하는 단계 - 공개 키는 주어진 사용자와 연관된 암호화 키 쌍의 일부이고, 암호화 키 쌍은 주어진 사용자에 대한 개인 키 V를 포함함 -;
주어진 사용자와 연관된 하나 이상의 속성을 획득하거나 할당하는 단계 - 각 속성은 DBMS에 의해 관리되는 데이터베이스에 대한 액세스와 관련된 설정과 연관됨 -;
획득된 공개 키 P 및 주어진 사용자와 연관된 하나 이상의 속성에 기초하여 레코드를 업데이트하는 단계; 및
DBMS와 연관되어 업데이트된 레코드를 저장하거나 또는 제공하는 단계를 포함하는, 컴퓨터 구현된 방법.
16. 조항 15에 있어서, 주어진 속성에 대한 설정은 주어진 속성이 데이터베이스와 연관된 읽기, 쓰기, 수정 또는 삭제 동작 중 하나 이상을 수행하기 위한 허가와 연관되는지를 확인하는, 방법.
17. 조항 15 또는 16 중 어느 하나에 있어서, 각 속성에 대한 설정은 요청에서 제공되거나, 또는 설정은 DBMS와 연관된 컴퓨팅 리소스로부터 획득되거나, 또는 설정은 DBMS에 의해 관리되는 데이터베이스에 대한 각 속성에 대해 미리 결정되는, 방법.
18. 분산 원장과 연관된 트랜잭션에 관한 데이터베이스를 관리하기 위한 데이터 관리 시스템(DBMS)을 구현하기 위한 컴퓨터 구현된 방법으로서, 방법은:
클라이언트 엔티티로부터 데이터베이스와 연관된 동작을 위한 요청을 획득하는 단계 - 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 요청은 주어진 사용자와 연관된 디지털 서명을 포함함 -;
주어진 사용자가 데이터베이스에 액세스하기 위해 인증되었는지를 결정하는 단계;
성공적인 결정에 응답하여, 디지털 서명이 DBMS와 연관된 사용자 레코드에 기초하여 주어진 사용자와 연관되어 있는 것을 검증하는 단계; 및
성공적인 검증에 응답하여, 사용자 레코드 및 요청의 현재 인스턴스를 기초로 메시지를 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
19. 조항 18에 있어서, 요청은 데이터베이스에서 데이터를 읽거나, 쓰거나, 수정하거나 또는 삭제하기 위한 요청인, 방법.
20. 조항 15 내지 19 중 어느 하나에 있어서, 데이터베이스는 조항 1 내지 7 중 어느 하나에 의해 제공된 데이터 구조를 사용하여 구현되는, 방법.
21. 조항 16 내지 18 중 어느 하나에 있어서, 사용자 레코드는 조항 15 내지 17 중 어느 하나의 방법에 따라 DBMS에 주어진 사용자의 등록 시 생성되는, 방법.
22. 조항 21에 있어서, 사용자가 인증되었음을 결정하는 단계는 DBMS와 연관된 사용자 레코드가 DBMS에 주어진 사용자의 등록 시 주어진 사용자에 대해 존재한다는 것을 결정하는 단계를 포함하는, 방법.
23. 조항 22 또는 조항 22 중 어느 하나에 있어서, 디지털 서명을 검증하는 단계는 요청에 서명하기 위해 사용된 서명 키 K 또는 개인 키 V가 사용자 레코드에서 주어진 사용자와 연관된 공개 키 P와 연관된다는 것을 결정하는 것에 기초하는, 방법.
24. 조항 18 내지 23 중 어느 하나에 있어서, 결정이 성공적이지 않다는 것에 응답하여, 주어진 사용자가 데이터베이스에 액세스하도록 인증되지 않았거나 등록되지 않았다는 것을 명시하기 위한 오류 통지를 생성하는 단계를 포함하는, 방법.
25. 조항 18 내지 23 중 어느 하나에 있어서, 디지털 서명의 검증이 성공적이지 않다는 것에 응답하여, 요청에 적용된 서명이 주어진 사용자에 대해 유효하지 않다는 것을 명시하는 오류 통지를 생성하는 단계를 포함하는, 방법.
26. 데이터베이스 관리 시스템(DBMS)에 등록하기 위한 컴퓨터 구현된 방법으로서, DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터와 연관되고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고, 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 방법은:
DBMS에 등록하기 위한 요청을 생성하는 단계 - 요청은 주어진 사용자와 연관됨 -;
주어진 사용자와 연관된 하나 이상의 속성을 제공하거나 또는 액세스하는 단계 - 각 속성은 DBMS에 의해 관리되는 데이터베이스에 관련된 설정과 연관됨 -;
주어진 사용자와 연관된 개인 키 V를 생성하는 단계 - 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부임 -;
개인 키 V를 기초로 공개 키 P를 계산하는 단계; 및
공개 키 P 및 하나 이상의 속성을 DBMS에 전송하는 단계를 포함하는, 컴퓨터 구현된 방법.
27. 데이터 관리 시스템(DBMS)과 연관된 데이터에 액세스하기 위한 컴퓨터 구현된 방법으로서, DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터와 연관되고, 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고, 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 방법은:
데이터베이스와 연관된 요청을 생성하는 단계 - 요청은 주어진 사용자와 연관되고 및 데이터베이스는 DBMS에 의해 관리됨 -;
주어진 사용자에 대한 개인 키 V에 기초하여 디지털 서명을 생성하는 단계 - 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이고 공개 키 P는 DBMS에 제공됨 -;
디지털 서명을 요청에 적용하는 단계; 및
서명된 요청을 DBMS로 전송하는 단계를 포함하는, 컴퓨터 구현된 방법.
28. 조항 27에 있어서, 개인 키 V에 기초하여 서명 키 K를 생성하는 단계를 포함하고, 서명 키는 임시 키인, 방법.
29. 조항 27 또는 28에 있어서, 조항 26에서 제시된 DBMS로의 등록의 방법을 포함하는, 방법.
30. 분산 원장과 연관된 트랜잭션에 관한 데이터베이스를 관리하기 위한 데이터 관리 시스템(DBMS)을 구현하기 위한 컴퓨터 구현된 방법으로서, 방법은:
하나 이상의 사용자 중 주어진 사용자에 대한 사용자 레코드의 현재 인스턴스와 연관된 메시지, 및 데이터베이스와 연관된 요청을 수신하는 단계 - 요청은 주어진 사용자에 의해 제공됨 -;
데이터베이스와 연관된 요청을 파싱하는 단계로서,
현재 인스턴스로부터 주어진 사용자와 연관된 하나 이상의 속성을 검색하는 단계;
검색된 속성의 각각에 대한 설정이 주어진 사용자에 의해 이루어진 요청에 대해 유효한지를 검증하는 단계를 포함하는, 데이터베이스와 연관된 요청을 파싱하는 단계;
성공적인 검증에 응답하여, 요청에 기초하여 데이터베이스와 연관된 하나 이상의 동작을 수행하는 단계로서, 데이터베이스는 조항 1 내지 6 중 어느 하나에 따라 제공된 데이터 구조에 기초하고, 수행하는 단계는:
요청이 읽기 동작과 연관되는 경우, 요청에 관련된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)를 획득하는 단계 - 각 획득된 트랜잭션 식별자는 트랜잭션에 관한 것이고 그에 의해 상기 트랜잭션에 대한 데이터는 데이터 구조와 연관됨 -; 및
데이터 구조로부터 획득된 트랜잭션 식별자(TTxID, ETxID)에 관련된 데이터에 액세스하는 단계를 더 포함하고,
요청이 쓰기 또는 수정 또는 삭제 동작과 연관되면, 획득하는 단계에 부가하여, 방법은 동작을 기초로 획득된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)와 연관된 트랜잭션(들)을 소비하거나 또는 처리하기 위한 하나 이상의 트랜잭션을 생성하는 단계; 및
데이터 구조를 생성된 트랜잭션에 관련된 식별자로 업데이트하는 단계를 더 포함하는, 수행하는 단계를 포함하는, 컴퓨터 구현된 방법.
31. 조항 30에 있어서, 검증하는 단계는 하나 이상의 속성 중에서 주어진 속성에 대한 설정이 주어진 사용자가 이루어진 요청에 대해 데이터베이스에 액세스하기 위한 허가를 갖는다는 것을 나타내는 것을 검사하는 단계를 포함하는, 방법.
32. 조항 30 또는 31 중 어느 하나에 있어서, 요청이 쓰기, 수정 또는 삭제 동작과 연관되면, 수행하는 단계는 조항 7 내지 9 중 어느 하나에서 제시된 방법을 더 포함하는, 방법.
33. 조항 30 내지 32 중 어느 하나에 있어서, 요청이 쓰기, 수정 또는 삭제 동작과 연관되는 경우, 생성하는 단계는:
각 획득된 트랜잭션 식별자(TTxID, ETxID)와 연관된 출력 스크립트를 획득하는 단계;
출력 스크립트에 기초하여 추가적인 트랜잭션을 구성하는 단계 - 추가적인 트랜잭션은 주어진 사용자와 연관된 개인 키 V에 기초하고, 개인 키는 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부임 -; 및
추가적인 트랜잭션을 분산 원장에 제공하는 단계 - 추가적인 트랜잭션은 추가적인 트랜잭션 식별자(TTxID, ETxID)와 연관됨 -를 더 포함하는, 방법.
34. 조항 33에 있어서, 추가적인 트랜잭션을 구성하는 단계는 DBMS와 연관된 단순화된 지불 검증(SPV) 클라이언트에 의해 수행되고, SPV 클라이언트는 통신 네트워크를 통해 DBMS를 분산 원장에 통신 가능하게 결합시키는, 방법.
35. 조항 30 내지 34 중 어느 하나에 있어서, 각 획득된 트랜잭션 식별자(TTxID, ETxID)는 소비-불가능한 UTXO를 포함하는 트랜잭션과 연관되고, 상기 소비-불가능한 UTXO는 소비 가능한 페이로드와 연관되거나 이를 포함하며, 소비 가능한 페이로드는 소비 가능한 UTXO인, 방법.
36. 조항 35에 있어서, 각 소비 가능한 및 소비-불가능한 UTXO는 UTXO 세트 또는 DBMS와 연관된 메모리에 저장되고, 소비-불가능한 UTXO는 OP_RETURN 출력 스크립트인, 방법.
37. 조항 36에 있어서, UTXO 세트 또는 메모리에서의 하나 이상의 소비 가능한 UTXO는 추가적인 트랜잭션을 구성하는 데 사용되는, 방법.
38. 컴퓨팅 디바이스로서,
프로세서; 및
프로세서에 의한 실행의 결과로서, 디바이스가 조항 12 내지 14 또는 26 내지 29 중 하나의 컴퓨터 구현된 방법을 수행하게 하는 실행 가능한 명령어를 포함하는 메모리를 포함하고,
컴퓨팅 디바이스는 클라이언트 엔티티인, 컴퓨팅 디바이스.
39. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터에 대한 액세스를 관리하기 위한 DBMS 시스템으로서, DBMS에 의해 관리되는 데이터는 조항 1 내지 7 중 어느 하나에 의해 제공되는 데이터 구조에 저장되고, DBMS는:
조항 15 내지 25 중 하나의 컴퓨터 구현된 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 등록 및 액세스 관리 시스템;
조항 30 내지 37 중 하나의 컴퓨터 구현된 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 트랜잭션 실행 시스템;
데이터베이스와 연관된 복수의 트랜잭션 식별자를 저장하기 위한 하나 이상의 레지스터; 및
데이터베이스와 연관된 복수의 UTXO의 사본을 저장하기 위한 UTXO 세트 또는 메모리를 포함하는, DBMS 시스템.
38. 시스템으로서,
조항 38에 제시된 하나 이상의 컴퓨팅 디바이스 - 각각 클라이언트 엔티티임 -;
조항 39항에 제시된 DBMS; 및
각 클라이언트 엔티티를 DBMS와 통신 가능하게 결합하기 위한 통신 네트워크를 포함하는, 시스템.
전술한 실시예는 본 개시를 제한하는 것이 아니고, 통상의 기술자는 첨부된 청구범위에 의해 정의된 본 개시의 범주를 벗어나지 않으면서, 다양한 대안적인 실시예를 설계할 수 있음이 유의되어야 한다. 청구범위에서, 괄호안에 있는 임의의 참조 부호는 청구범위를 제한하는 것으로 해석되어서는 안된다. 포함하는 및 "포함한다" 등의 단어는 임의의 청구범위 또는 명세서 전체에 열거된 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서, "포함한다"는 "포함하거나 구성된다"를 의미하고, "포함하는"은 "포함하거나 구성되는"을 의미한다. 요소의 단수형 참조는 이러한 요소의 복수형의 참조를 배제하지 않으며, 그 역으로도 그러하다. 본 개시는 수 개의 개별적인 요소를 포함하는 하드웨어에 의해, 그리고 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 수개의 수단을 나열하는 디바이스 청구항에서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어의 엔트리에 의해 구현될 수 있다. 특정 측정치가 서로 상이한 종속 항에서 인용된다는 단순한 사실만으로 이들 측정치의 조합이 유리하도록 사용될 수 없음을 나타내지 않는다.
예시적인 사용 사례 및 시나리오
READ 예시 처리:
관계형 데이터베이스의 힘은 다수의 테이블에 걸쳐 관련된 데이터를 집계할 수 있다는 것으로부터 비롯된다. 이는 일반적으로 두 개의 테이블 간에 JOIN SQL 명령을 사용하여 행해진다. JOIN의 네 개의 하위-타입이 있다.
1. INNER JOIN - 두 테이블에서 공통적인 값을 반환한다.
2. LEFT JOIN - 왼쪽 테이블로부터의 모든 값 및 오른쪽 테이블로부터의 공통 값을 반환한다.
3. RIGHT JOIN - 오른쪽 테이블로부터의 모든 값 및 왼쪽 테이블로부터의 공통 값을 반환한다.
4. OUTER JOIN - 두 테이블로부터의 모든 값을 반환한다.
INNER JOIN 명령은 다음의 형태를 갖는다:
SELECT table_name.column_name, table_name.column_name, ??
FROM lefttable_name
INNER JOIN righttable_name ON [일치 조건];
이 명령에서, 첫 번째 줄은 쿼리 응답에서 보고된 열 값을 선택하고, 두 개의 테이블로부터 자유롭게 선택될 수 있다. 관련된 테이블 및 엔트리 데이터는 TxID 참조로부터 설정된 UTXO에서 읽히고, 시스템 메모리에 저장될 것이다. 그 후, 분석 및 조립을 위해 조건이 적용되고 분석될 것이다.
다음 줄은 '왼쪽' 테이블을 선택하고, 사용자에 의해 자유롭게 선택될 수 있다.
다음 줄은 결합 조건(join condition)(이 경우 내부 결합)을 설정하고, 조인될 올바른 테이블을 지정한다.
마지막으로, 공통 요소에 대해 두 개의 테이블을 검색하는 데 사용되는, 일치 조건이 지정된다. 예를 들어, 구매자의 테이블과 판매자의 테이블을 이름으로 검색하기 위해 조건은 다음과 같을 것이다:
buyers.name=sellers.name
이는 DBMS에 의해 완전히 오프-체인으로 수행되기 때문에, 동등한 트랜잭션이 요구되지 않고, 표준 SQL 프로토콜이 통합될 수 있다. 이는 또한, 시스템이 지난 수십 년 동안 광범위하게 탐구된 표준 효율성 최적화 및 확장 방법을 이용하는 것을 허용한다. 이 접근법은 기존의 기업 데이터 관리 해결책(예를 들어, ORACLE, SAP 등)과 쉽게 인터페이스하는 것을 허용한다.

Claims (40)

  1. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조를 제공하는 컴퓨터 구현된 방법으로서, 상기 방법은 상기 분산 원장에 대한 데이터 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되고, 상기 방법은:
    데이터베이스 트랜잭션 타입을 생성하는 단계로서, 상기 데이터베이스 트랜잭션 타입은:
    분산 원장에 관한 하나 이상의 트랜잭션에 대한 데이터를 획득하는 데 사용되는 데이터베이스 D에 대한 식별자; 및
    하나 이상의 테이블 트랜잭션 식별자(TTxID) - 상기 하나 이상의 TTxID 중 주어진 TTxID는 상기 식별된 데이터베이스 D와 연관된 하나 이상의 테이블 중 주어진 테이블에 특정되고, 상기 주어진 TTxID는 상기 주어진 테이블에 대한 분산 원장에 관한 트랜잭션에 관련됨 -를 포함하는 데이터 트랜잭션 타입을 생성하는 단계; 및
    테이블 트랜잭션 타입을 생성하는 단계로서, 상기 테이블 트랜잭션 타입은:
    테이블 T에 대한 식별자 - 상기 테이블은 상기 식별된 데이터베이스 D와 연관된 상기 하나 이상의 테이블 중 있음 -; 및
    상기 식별된 테이블 T와 연관된 하나 이상의 엔트리를 포함하는, 테이블 트랜잭션 타입을 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
  2. 제1항에 있어서, 상기 테이블 트랜잭션 타입은:
    하나 이상의 엔트리 트랜잭션 식별자(ETxID) - 상기 하나 이상의 ETxID 중 주어진 ETxID는 상기 식별된 테이블 T와 연관된 상기 하나 이상의 엔트리 중 주어진 엔트리에 특정되고, 상기 주어진 ETxID는 상기 주어진 엔트리에 대한 상기 분산 원장에 관한 트랜잭션에 관련됨 -를 더 포함하고;
    상기 방법은:
    엔트리 트랜잭션 타입을 생성하는 단계를 더 포함하고, 상기 엔트리 트랜잭션 타입은:
    하나 이상의 데이터 쌍 - 각 데이터 쌍은 상기 식별된 테이블 T에서의 엔트리에 관련되고, 각 데이터 쌍은 상기 식별된 테이블에서의 위치를 식별하는 참조 R 및 상기 식별된 위치에 대한 값 VL을 포함함 -을 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 하나 이상의 TTxID 또는 ETxID에 관련된 상기 트랜잭션은 하나 이상의 소비되지 않은 트랜잭션 출력(UTXO)과 연관되는, 방법.
  4. 제3항에 있어서, 상기 주어진 트랜잭션에 대한 상기 UXTO는 상기 식별된 데이터베이스 D 및/또는 테이블 T와 연관된 후속 트랜잭션에 의해 소비 가능한 출력 스크립트를 포함하는, 방법.
  5. 제3항 또는 제4항 중 어느 한 항에 있어서, 상기 주어진 트랜잭션에 대한 상기 UTXO는 상기 주어진 트랜잭션에 대한 상기 소비 가능한 출력 스크립트와 연관된 소비-불가능한 출력(non-spendable output)을 포함하는, 방법.
  6. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터를 저장하거나 및/또는 관리하기 위한 데이터 구조로서, 상기 데이터 구조는 상기 분산 원장에 대한 데이터베이스 관리 시스템(DBMS)에 의해 연관된 하나 이상의 프로세서에 의해 관리되고, 상기 데이터 구조는 제1항 내지 제5항 중 어느 한 항에 따른 상기 방법에 따라 생성된 데이터 트랜잭션 타입 및 테이블 트랜잭션 타입을 포함하는, 데이터 구조.
  7. 제6항에 있어서, 상기 데이터 구조는 중첩된 트랜잭션 저장 구조(nested transaction storage structure)이고, 상기 데이터 구조는 제2항 내지 제5항 중 어느 한 항의 방법에 따라 생성된 엔트리 데이터 타입을 더 포함하고, 상기 데이터 구조는 상기 식별된 데이터베이스 D와 연관된 TTxID 및 ETxID를 저장하는 것을 기초로 상기 식별된 데이터베이스 D를 저장하도록 구성되는, 데이터 구조.
  8. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 트랜잭션은 전술한 청구항 중 한 항에 의해 제공된 상기 데이터 구조를 사용하고, 상기 방법은 데이터 관리 시스템(DBMS)과 연관된 하나 이상의 프로세서에 의해 구현되고:
    데이터베이스를 생성하는 단계로서,
    제1 데이터베이스를 생성하기 위해 제1 트랜잭션을 생성하는 단계 - 상기 제1 트랜잭션은 상기 데이터 구조의 상기 데이터베이스 트랜잭션 타입을 기초로 함 -; 및
    상기 생성된 제1 데이터베이스에 기초하여 상기 제1 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 데이터베이스를 생성하는 단계;
    상기 제1 데이터베이스와 연관된 요청 또는 트랜잭션에 응답하여, 상기 제1 데이터베이스를 업데이트하는 단계로서,
    제1 테이블을 생성하기 위해 제2 트랜잭션을 생성하는 단계 - 상기 제2 트랜잭션은 상기 데이터 구조의 상기 테이블 트랜잭션 타입에 기초함 -; 및
    상기 생성된 제1 테이블에 기초하고, 상기 제2 트랜잭션의 식별자(TTxID)를 포함하는 상기 제2 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제1 데이터베이스를 업데이트하는 단계;
    상기 제2 트랜잭션의 출력을 기초로 제3 트랜잭션을 생성하는 단계로서,
    상기 제1 데이터베이스의 상기 데이터베이스 트랜잭션 타입을 상기 제2 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
    상기 업데이트된 제1 데이터베이스에 기초하여 상기 제3 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제3 트랜잭션을 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
  9. 제7항에 있어서,
    상기 제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 상기 제1 테이블을 채우는 단계(populating)로서,
    상기 제1 테이블에서 제1 엔트리를 생성하기 위해 제4 트랜잭션을 생성하는 단계 - 상기 제4 트랜잭션은 상기 데이터 구조의 상기 엔트리 트랜잭션 타입을 기초로 함 -; 및
    상기 생성된 엔트리에 기초하고 상기 제4 트랜잭션의 식별자(ETxID)를 포함하는 상기 제4 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제1 테이블을 채우는 단계;
    상기 제4 트랜잭션의 출력에 기초하여 제5 트랜잭션을 생성하는 단계로서,
    상기 제1 테이블의 상기 테이블 트랜잭션 타입을 상기 제4 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계; 및
    상기 제5 트랜잭션에 대한 출력 - 상기 출력은 상기 업데이트된 제1 테이블에 기초함 -, 및 상기 제5 트랜잭션의 식별자(TTxID)를 제공하는 단계를 포함하는, 상기 제5 트랜잭션을 생성하는 단계; 및
    상기 제5 트랜잭션의 출력에 기초하여 제6 트랜잭션을 생성하는 단계로서,
    상기 제1 데이터베이스의 상기 데이터베이스 트랜잭션 타입을 상기 제5 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
    상기 업데이트된 제1 데이터베이스에 기초하여 상기 제6 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제6 트랜잭션을 생성하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 상기 제1 테이블을 수정하는 단계로서,
    상기 제1 테이블에서 상기 제1 엔트리와 연관된 상기 데이터 쌍의 상기 참조 및/또는 상기 값을 수정하기 위해 제7 트랜잭션을 생성하는 단계;
    상기 제1 엔트리의 상기 엔트리 트랜잭션 타입을 상기 제7 트랜잭션에 기초하여 수정된 엔트리로 업데이트하는 단계; 및
    상기 수정된 엔트리에 기초하고 상기 제7 트랜잭션의 식별자(ETxID)를 포함하는 상기 제7 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제1 테이블을 수정하는 단계;
    상기 제7 트랜잭션의 출력에 기초하여 제8 트랜잭션을 생성하는 단계로서,
    상기 제1 테이블의 상기 테이블 트랜잭션 타입을 상기 제7 트랜잭션과 연관된 식별자(ETxID)로 업데이트하는 단계; 및
    상기 업데이트된 제1 테이블에 기초하고 상기 제8 트랜잭션의 식별자(TTxID)를 포함하는 상기 제8 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제8 트랜잭션을 생성하는 단계; 및
    상기 제8 트랜잭션의 출력에 기초하여 제9 트랜잭션을 생성하는 단계로서,
    상기 제1 데이터베이스의 상기 데이터베이스 트랜잭션 타입을 상기 제8 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
    상기 업데이트된 제1 데이터베이스에 기초하여 상기 제6 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 제9 트랜잭션을 생성하는 단계를 포함하는, 방법.
  11. 제9항 또는 제10항 중 어느 한 항에 있어서,
    상기 제1 테이블과 연관된 요청 또는 트랜잭션에 응답하여, 상기 제1 테이블을 수정하는 단계를 포함하고, 상기 제1 테이블을 수정하는 단계는,
    상기 제1 테이블에서 상기 제1 엔트리를 삭제하기 위해 제10 트랜잭션을 생성하는 단계로서,
    상기 제4 트랜잭션과 연관된 식별자(ETxID)를 제거하기 위해 상기 제1 테이블의 상기 테이블 트랜잭션 타입을 업데이트하는 단계; 및
    상기 업데이트된 제1 테이블에 기초하고 상기 제10 트랜잭션의 식별자(TTxID)를 포함하는 상기 제10 트랜잭션에 대한 출력을 제공하는 단계를 포함하는, 상기 제10 트랜잭션을 생성하는 단계; 및
    상기 제10 트랜잭션의 출력을 기초로 제11 트랜잭션을 생성하는 단계로서,
    상기 제1 데이터베이스의 상기 데이터베이스 트랜잭션 타입을 상기 제10 트랜잭션과 연관된 식별자(TTxID)로 업데이트하는 단계; 및
    상기 제11 트랜잭션에 대한 출력을 제공하는 단계 - 상기 출력은 상기 업데이트된 제1 데이터베이스의 식별자를 포함함 -를 포함하는, 제11 트랜잭션을 생성하는 단계를 포함하는, 방법.
  12. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 트랜잭션은 제1항 내지 제7항 중 어느 한 항에 의해 제공된 데이터 구조를 사용하고, 상기 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
    제1 데이터베이스를 생성하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계;
    상기 생성된 제1 데이터베이스 D와 연관된 적어도 하나의 트랜잭션 출력에 대한 분산 원장을 모니터링하는 단계;
    상기 제1 데이터베이스에 대한 제1 테이블을 생성하기 위해 상기 DBMS와 연관된 상기 하나 이상의 프로세서에 요청을 전송하는 단계;
    상기 제1 테이블(TTxID)과 연관된 적어도 하나의 트랜잭션 출력에 대해 상기 분산 원장을 모니터링하는 단계; 및
    상기 제1 테이블을 제1 엔트리로 업데이트하기 위해 상기 DBMS와 연관된 상기 하나 이상의 프로세서에 요청을 전송하는 단계 - 상기 제1 엔트리는 상기 제1 테이블에서의 위치를 식별하는 참조 및 상기 식별된 위치에 대한 값을 포함하는 데이터 쌍을 포함함 -를 포함하는, 컴퓨터 구현된 방법.
  13. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 트랜잭션은 제1항 내지 제7항 중 어느 한 항에 의해 제공된 데이터 구조를 사용하고, 상기 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
    제1 데이터베이스의 제1 테이블에서 제1 엔트리(ETxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 상기 분산 원장을 모니터링하는 단계;
    상기 제1 엔트리를 수정하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계 - 상기 요청은 제1 엔트리와 연관된 상기 데이터 쌍의 상기 참조 및/또는 상기 값을 수정하기 위한 요청을 포함함 -;
    상기 수정된 제1 엔트리를 포함하는 업데이트된 제1 데이터베이스 D 및/또는 업데이트된 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계를 포함하는, 컴퓨터 구현된 방법.
  14. 분산 원장과 연관된 하나 이상의 트랜잭션을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 트랜잭션은 제1항 내지 제7항 중 어느 한 항에 의해 제공된 데이터 구조를 사용하고, 상기 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고:
    제1 데이터베이스의 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 상기 분산 원장을 모니터링하는 단계;
    상기 제1 테이블의 상기 제1 엔트리를 삭제하기 위해 DBMS와 연관된 하나 이상의 프로세서에 요청을 전송하는 단계;
    업데이트된 제1 데이터베이스 및/또는 업데이트된 제1 테이블에 대한 식별자(TTxID)와 연관된 적어도 하나의 트랜잭션 출력에 대해 분산 원장을 모니터링하는 단계를 포함하는, 컴퓨터 구현된 방법.
  15. 데이터 관리 시스템(DBMS)에 대한 액세스를 관리하기 위한 컴퓨터 구현된 방법으로서, 상기 DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터를 관리하고, 상기 데이터는 데이터베이스에 제공되며, 상기 방법은:
    상기 DBMS에 등록을 위한 요청에 응답하여, 주어진 사용자와 연관된 레코드를 생성하는 단계 - 상기 레코드는 복수의 사용자 중 상기 주어진 사용자에 대한 식별자를 포함함 -;
    상기 주어진 사용자와 연관된 공개 키 P를 획득하는 단계 - 상기 공개 키는 상기 주어진 사용자와 연관된 암호화 키 쌍의 일부이고, 상기 암호화 키 쌍은 상기 주어진 사용자에 대한 개인 키 V를 포함함 -;
    상기 주어진 사용자와 연관된 하나 이상의 속성을 획득하거나 할당하는 단계 - 각 속성은 상기 DBMS에 의해 관리되는 데이터베이스에 대한 액세스에 관련된 설정과 연관됨 -;
    상기 획득된 공개 키 P 및 상기 주어진 사용자와 연관된 상기 하나 이상의 속성에 기초하여 상기 레코드를 업데이트하는 단계; 및
    상기 DBMS와 연관되어 상기 업데이트된 레코드를 저장하거나 또는 제공하는 단계를 포함하는, 컴퓨터 구현된 방법.
  16. 제15항에 있어서, 주어진 속성에 대한 상기 설정은 상기 주어진 속성이 상기 데이터베이스와 연관된 읽기, 쓰기, 수정 또는 삭제 동작 중 하나 이상을 수행하기 위한 허가와 연관되는지를 확인하는, 방법.
  17. 제15항 또는 제16항 중 어느 한 항에 있어서, 각 속성에 대한 상기 설정은 상기 요청에서 제공되거나, 또는 상기 설정은 상기 DBMS와 연관된 컴퓨팅 리소스로부터 획득되거나, 또는 상기 설정은 상기 DBMS에 의해 관리되는 상기 데이터베이스에 대한 각 속성에 대해 미리 결정되는, 방법.
  18. 분산 원장과 연관된 트랜잭션에 관한 데이터베이스를 관리하기 위한 데이터 관리 시스템(DBMS)을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 방법은:
    클라이언트 엔티티로부터 상기 데이터베이스와 연관된 동작을 위한 요청을 획득하는 단계 - 상기 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 상기 요청은 상기 주어진 사용자와 연관된 디지털 서명을 포함함 -;
    상기 주어진 사용자가 상기 데이터베이스에 액세스하기 위해 인증되었는지를 결정하는 단계;
    성공적인 결정에 응답하여, 상기 디지털 서명이 상기 DBMS와 연관된 사용자 레코드에 기초하여 상기 주어진 사용자와 연관되어 있는 것을 검증하는 단계; 및
    성공적인 검증에 응답하여, 상기 사용자 레코드 및 상기 요청의 현재 인스턴스를 기초로 메시지를 생성하는 단계를 포함하는, 컴퓨터 구현된 방법.
  19. 제18항에 있어서, 상기 요청은 상기 데이터베이스에서 데이터를 읽거나, 쓰거나, 수정하거나 또는 삭제하기 위한 요청인, 방법.
  20. 제15항 내지 제19항 중 어느 한 항에 있어서, 상기 데이터베이스는 제1항 내지 제7항 중 어느 한 항에 의해 제공된 상기 데이터 구조를 사용하여 구현되는, 방법.
  21. 제16항 내지 제18항 중 어느 한 항에 있어서, 상기 사용자 레코드는 제15항 내지 제17항 중 어느 한 항의 방법에 따라 상기 DBMS에 상기 주어진 사용자의 등록 시 생성되는, 방법.
  22. 제21항에 있어서, 상기 사용자가 인증되었음을 결정하는 단계는 상기 DBMS와 연관된 사용자 레코드가 상기 DBMS에 상기 주어진 사용자의 등록 시 상기 주어진 사용자에 대해 존재한다는 것을 결정하는 단계를 포함하는, 방법.
  23. 제22항 또는 제22항 중 어느 한 항에 있어서, 상기 디지털 서명을 검증하는 단계는 상기 요청에 서명하기 위해 사용된 서명 키 K 또는 상기 개인 키 V가 상기 사용자 레코드에서 상기 주어진 사용자와 연관된 상기 공개 키 P와 연관된다는 것을 결정하는 것에 기초하는, 방법.
  24. 제18항 내지 제23항 중 어느 한 항에 있어서, 상기 결정이 성공적이지 않다는 것에 응답하여, 상기 주어진 사용자가 상기 데이터베이스에 액세스하도록 인증되지 않았거나 등록되지 않았다는 것을 명시하는 오류 통지를 생성하는 단계를 포함하는, 방법.
  25. 제18항 내지 제23항 중 어느 한 항에 있어서, 상기 디지털 서명의 상기 검증이 성공적이지 않다는 것에 응답하여, 상기 요청에 적용된 서명이 상기 주어진 사용자에 대해 유효하지 않다는 것을 명시하기 위한 오류 통지를 생성하는 단계를 포함하는, 방법.
  26. 데이터베이스 관리 시스템(DBMS)에 등록하기 위한 컴퓨터 구현된 방법으로서, 상기 DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터와 연관되고, 상기 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고, 상기 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 상기 방법은:
    상기 DBMS에 등록하기 위한 요청을 생성하는 단계 - 상기 요청은 상기 주어진 사용자와 연관됨 -;
    상기 주어진 사용자와 연관된 하나 이상의 속성을 제공하거나 또는 액세스하는 단계 - 각 속성은 상기 DBMS에 의해 관리되는 상기 데이터베이스에 관련된 설정과 연관됨 -;
    상기 주어진 사용자와 연관된 개인 키 V를 생성하는 단계 - 상기 개인 키는 상기 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부임 -;
    상기 개인 키 V를 기초로 상기 공개 키 P를 계산하는 단계; 및
    상기 공개 키 P 및 상기 하나 이상의 속성을 상기 DBMS에 전송하는 단계를 포함하는, 컴퓨터 구현된 방법.
  27. 데이터 관리 시스템(DBMS)과 연관된 데이터에 액세스하기 위한 컴퓨터 구현된 방법으로서, 상기 DBMS는 분산 원장과 연관된 트랜잭션에 관한 데이터와 연관되고, 상기 방법은 클라이언트 엔티티와 연관된 하나 이상의 프로세서에 의해 구현되고, 상기 클라이언트 엔티티는 복수의 사용자 중 주어진 사용자와 연관되고, 상기 방법은:
    데이터베이스와 연관된 요청을 생성하는 단계 - 상기 요청은 상기 주어진 사용자와 연관되고 및 상기 데이터베이스는 상기 DBMS에 의해 관리됨 -;
    상기 주어진 사용자에 대한 개인 키 V에 기초하여 디지털 서명을 생성하는 단계 - 상기 개인 키는 상기 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부이고; 상기 공개 키 P는 상기 DBMS에 제공됨 -;
    상기 디지털 서명을 상기 요청에 적용하는 단계; 및
    상기 서명된 요청을 상기 DBMS로 전송하는 단계를 포함하는, 컴퓨터 구현된 방법.
  28. 제27항에 있어서, 상기 개인 키 V에 기초하여 서명 키 K를 생성하는 단계를 포함하고, 상기 서명 키는 임시 키인, 방법.
  29. 제27항 또는 제28항에 있어서, 제26항에서 청구된 상기 DBMS로의 등록의 방법을 포함하는, 방법.
  30. 분산 원장과 연관된 트랜잭션에 관한 데이터베이스를 관리하기 위한 데이터 관리 시스템(DBMS)을 구현하기 위한 컴퓨터 구현된 방법으로서, 상기 방법은:
    하나 이상의 사용자 중 주어진 사용자에 대한 사용자 레코드의 현재 인스턴스와 연관된 메시지, 및 상기 데이터베이스와 연관된 요청을 수신하는 단계 - 상기 요청은 상기 주어진 사용자에 의해 제공됨 -;
    데이터베이스와 연관된 상기 요청을 파싱하는 단계로서,
    상기 현재 인스턴스로부터 상기 주어진 사용자와 연관된 하나 이상의 속성을 검색하는 단계;
    상기 검색된 속성의 각각에 대한 상기 설정이 상기 주어진 사용자에 의해 이루어진 상기 요청에 대해 유효한지를 검증하는 단계를 포함하는, 데이터베이스와 연관된 상기 요청을 파싱하는 단계;
    성공적인 검증에 응답하여, 상기 요청에 기초하여 상기 데이터베이스와 연관된 하나 이상의 동작을 수행하는 단계로서, 상기 데이터베이스는 제1항 내지 제6항 중 어느 한 항에 따라 제공된 데이터 구조에 기초하고, 상기 수행하는 단계는:
    상기 요청이 읽기 동작과 연관되는 경우, 상기 요청에 관련된 하나 이상의 트랜잭션 식별자(TTxID, ETxID)를 획득하는 단계 - 각 획득된 트랜잭션 식별자는 트랜잭션에 관한 것이고 그에 의해 상기 트랜잭션에 대한 데이터는 상기 데이터 구조와 연관됨 -; 및
    상기 데이터 구조로부터 상기 획득된 트랜잭션 식별자(TTxID, ETxID)에 관련된 데이터에 액세스하는 단계를 더 포함하고,
    상기 요청이 쓰기 또는 수정 또는 삭제 동작과 연관되면, 상기 획득하는 단계에 부가하여, 상기 방법은 상기 동작을 기초로 획득된 상기 하나 이상의 트랜잭션 식별자(TTxID, ETxID)와 연관된 트랜잭션(들)을 소비하거나 또는 처리하기 위한 하나 이상의 트랜잭션을 생성하는 단계; 및
    상기 데이터 구조를 상기 생성된 트랜잭션에 관련된 식별자로 업데이트하는 단계를 더 포함하는, 수행하는 단계를 포함하는, 컴퓨터 구현된 방법.
  31. 제30항에 있어서, 상기 검증하는 단계는 상기 하나 이상의 속성 중에서 주어진 속성에 대한 상기 설정이 상기 주어진 사용자가 이루어진 상기 요청에 대해 상기 데이터베이스에 액세스하기 위한 허가를 갖는다는 것을 나타내는 것을 검사하는 단계를 포함하는, 방법.
  32. 제30항 또는 제31항 중 어느 한 항에 있어서, 상기 요청이 쓰기, 수정 또는 삭제 동작과 연관되면, 상기 수행하는 단계는 제7항 내지 제9항 중 어느 한 항에서 청구된 상기 방법을 더 포함하는, 방법.
  33. 제30항 내지 제32항 중 어느 한 항에 있어서, 상기 요청이 쓰기, 수정 또는 삭제 동작과 연관되는 경우, 상기 생성하는 단계는:
    각 획득된 트랜잭션 식별자(TTxID, ETxID)와 연관된 출력 스크립트를 획득하는 단계;
    상기 출력 스크립트에 기초하여 추가적인 트랜잭션을 구성하는 단계 - 상기 추가적인 트랜잭션은 상기 주어진 사용자와 연관된 개인 키 V에 기초하고, 상기 개인 키는 상기 주어진 사용자에 대한 공개 키 P를 포함하는 암호화 키 쌍의 일부임 -; 및
    상기 추가적인 트랜잭션을 상기 분산 원장에 제공하는 단계 - 상기 추가적인 트랜잭션은 추가적인 트랜잭션 식별자(TTxID, ETxID)와 연관됨 -를 더 포함하는, 방법.
  34. 제33항에 있어서, 상기 추가적인 트랜잭션을 구성하는 단계는 상기 DBMS와 연관된 단순화된 지불 검증(SPV) 클라이언트에 의해 수행되고, 상기 SPV 클라이언트는 통신 네트워크를 통해 상기 DBMS를 상기 분산 원장에 통신 가능하게 결합시키는, 방법.
  35. 제30항 내지 제34항 중 어느 한 항에 있어서, 각 획득된 트랜잭션 식별자(TTxID, ETxID)는 소비-불가능한 UTXO를 포함하는 트랜잭션과 연관되고, 상기 소비-불가능한 UTXO는 소비 가능한 페이로드와 연관되거나 이를 포함하며, 상기 소비 가능한 페이로드는 소비 가능한 UTXO인, 방법.
  36. 제35항에 있어서, 각 소비 가능한 및 소비-불가능한 UTXO는 UTXO 세트 또는 DBMS와 연관된 메모리에 저장되고, 상기 소비-불가능한 UTXO는 OP_RETURN 출력 스크립트인, 방법.
  37. 제36항에 있어서, 상기 UTXO 세트 또는 메모리에서의 하나 이상의 소비 가능한 UTXO는 상기 추가적인 트랜잭션을 구성하는 데 사용되는, 방법.
  38. 컴퓨팅 디바이스로서,
    프로세서; 및
    상기 프로세서에 의한 실행의 결과로서, 상기 디바이스가 제12항 내지 제14항 또는 제26항 내지 제29항 중 한 항의 컴퓨터 구현된 방법을 수행하게 하는 실행 가능한 명령어를 포함하는 메모리를 포함하고,
    상기 컴퓨팅 디바이스는 클라이언트 엔티티인, 컴퓨팅 디바이스.
  39. 분산 원장에 관한 하나 이상의 트랜잭션과 연관된 데이터에 대한 액세스를 관리하기 위한 DBMS 시스템으로서, 상기 DBMS에 의해 관리되는 데이터는 제1항 내지 제7항 중 어느 한 항에 의해 제공되는 데이터 구조에 저장되고, 상기 DBMS는:
    제15항 내지 제25항 중 한 항의 컴퓨터 구현된 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 등록 및 액세스 관리 시스템;
    제30항 내지 제37항 중 한 항의 컴퓨터 구현된 방법을 수행하기 위한 명령어를 실행하도록 구성된 하나 이상의 프로세서를 갖는 트랜잭션 실행 시스템;
    상기 데이터베이스와 연관된 복수의 트랜잭션 식별자를 저장하기 위한 하나 이상의 레지스터; 및
    상기 데이터베이스와 연관된 복수의 UTXO의 사본을 저장하기 위한 UTXO 세트 또는 메모리를 포함하는, DBMS 시스템.
  40. 시스템으로서,
    제38항에서 청구된 하나 이상의 컴퓨팅 디바이스 - 각각 클라이언트 엔티티임 -;
    제39항에서 청구된 DBMS; 및
    각 클라이언트 엔티티를 상기 DBMS와 통신 가능하게 결합하기 위한 통신 네트워크를 포함하는, 시스템.
KR1020227009336A 2019-08-22 2020-08-18 블록체인 데이터베이스 관리 시스템 KR20220044603A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB1912068.2A GB201912068D0 (en) 2019-08-22 2019-08-22 Computer-implemented system and method
GB1912068.2 2019-08-22
PCT/IB2020/057762 WO2021033134A1 (en) 2019-08-22 2020-08-18 Blockchain database management system

Publications (1)

Publication Number Publication Date
KR20220044603A true KR20220044603A (ko) 2022-04-08

Family

ID=68108953

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009336A KR20220044603A (ko) 2019-08-22 2020-08-18 블록체인 데이터베이스 관리 시스템

Country Status (9)

Country Link
US (2) US11893009B2 (ko)
EP (1) EP4018335A1 (ko)
JP (1) JP2022545683A (ko)
KR (1) KR20220044603A (ko)
CN (1) CN114424182A (ko)
GB (1) GB201912068D0 (ko)
TW (1) TWI845747B (ko)
WO (1) WO2021033134A1 (ko)
ZA (1) ZA202203270B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7490394B2 (ja) * 2020-03-06 2024-05-27 株式会社日立製作所 情報共有支援方法、及び情報共有支援システム
JP6967211B1 (ja) * 2021-07-22 2021-11-17 直樹 柴田 違法な取引を防止しつつ匿名ユーザの参加も許容する暗号資産の取引のための完全分散型ブロックチェーンシステム及びコンピュータープログラム
CN113592690B (zh) * 2021-07-30 2024-03-29 卡斯柯信号有限公司 一种基于数据库模型的危害管理方法
US20230043731A1 (en) * 2021-08-06 2023-02-09 Salesforce.Com, Inc. Database system public trust ledger architecture
US11989726B2 (en) 2021-09-13 2024-05-21 Salesforce, Inc. Database system public trust ledger token creation and exchange
US11907677B1 (en) * 2022-03-02 2024-02-20 Arash Borhany Immutable universal language assistive translation and interpretation system that verifies and validates translations and interpretations by smart contract and blockchain technology
US11880372B2 (en) 2022-05-10 2024-01-23 Salesforce, Inc. Distributed metadata definition and storage in a database system for public trust ledger smart contracts
GB202211597D0 (en) 2022-08-09 2022-09-21 Nchain Licensing Ag Computer-implemented method and system
CN115344647A (zh) * 2022-10-20 2022-11-15 中国信息通信研究院 区块链数据的处理方法、装置、设备和介质
EP4390720A4 (en) * 2022-11-07 2024-08-28 Tencent Tech Shenzhen Co Ltd METHOD AND DEVICE, DEVICE AND MEDIUM FOR BLOCKCHAIN-BASED DATA PROCESSING

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115715A (en) * 1998-06-29 2000-09-05 Sun Microsystems, Inc. Transaction management in a configuration database
US7461065B2 (en) * 2006-01-31 2008-12-02 International Business Machines Corporation Method and system for utilizing shared numeric locks
US10152504B2 (en) * 2009-03-11 2018-12-11 Actian Netherlands B.V. Column-store database architecture utilizing positional delta tree update system and methods
US9864774B2 (en) * 2015-06-23 2018-01-09 International Business Machines Corporation Granular buffering of metadata changes for journaling file systems
ES2680851T3 (es) * 2016-02-23 2018-09-11 nChain Holdings Limited Registro y método de gestión automática para contratos inteligentes ejecutados por cadena de bloques
CN107562775B (zh) * 2017-07-14 2020-04-24 创新先进技术有限公司 一种基于区块链的数据处理方法及设备
US20190236559A1 (en) * 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing smart flow contracts using distributed ledger technologies in a cloud based computing environment
US20230205759A1 (en) * 2021-12-28 2023-06-29 Vast Data Ltd. Managing a transaction isolation

Also Published As

Publication number Publication date
JP2022545683A (ja) 2022-10-28
WO2021033134A1 (en) 2021-02-25
TW202127271A (zh) 2021-07-16
TWI845747B (zh) 2024-06-21
CN114424182A (zh) 2022-04-29
ZA202203270B (en) 2024-09-25
US20240184775A1 (en) 2024-06-06
GB201912068D0 (en) 2019-10-09
US20220300487A1 (en) 2022-09-22
EP4018335A1 (en) 2022-06-29
US11893009B2 (en) 2024-02-06

Similar Documents

Publication Publication Date Title
US11893009B2 (en) Blockchain database management system
US11824970B2 (en) Systems, methods, and apparatuses for implementing user access controls in a metadata driven blockchain operating via distributed ledger technology (DLT) using granular access objects and ALFA/XACML visibility rules
US11418510B2 (en) Systems, methods, and apparatuses for implementing a role based access control and authorization validator via blockchain smart contract execution using distributed ledger technology (DLT)
US11764950B2 (en) System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read
US11743137B2 (en) Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT)
US11811769B2 (en) Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
US11899817B2 (en) Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
US11824864B2 (en) Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11405183B2 (en) Using cache objects to store events for adding corresponding objects in a blockchain
KR20210133289A (ko) 블록체인 네트워크에서 데이터 추출
EP3607471B1 (en) Management of co-ownership database system
JP2021533448A (ja) ハイパーレッジャファブリックブロックチェーンにおいてsqlベースのリッチクエリをサポートするためのシステムおよび方法
US20220029998A1 (en) Systems and methods for managing domain name information
US11316706B2 (en) Method and system for using dynamic private keys to secure data file retrieval
US20100030805A1 (en) Propagating information from a trust chain processing