KR20210100865A - 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템 - Google Patents

고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템 Download PDF

Info

Publication number
KR20210100865A
KR20210100865A KR1020200014753A KR20200014753A KR20210100865A KR 20210100865 A KR20210100865 A KR 20210100865A KR 1020200014753 A KR1020200014753 A KR 1020200014753A KR 20200014753 A KR20200014753 A KR 20200014753A KR 20210100865 A KR20210100865 A KR 20210100865A
Authority
KR
South Korea
Prior art keywords
chain
account
database
synchronization
distributed database
Prior art date
Application number
KR1020200014753A
Other languages
English (en)
Other versions
KR102349014B1 (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 KR1020200014753A priority Critical patent/KR102349014B1/ko
Publication of KR20210100865A publication Critical patent/KR20210100865A/ko
Application granted granted Critical
Publication of KR102349014B1 publication Critical patent/KR102349014B1/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • 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/18File system types
    • G06F16/1858Parallel file systems, i.e. file systems supporting multiple processors
    • 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/2365Ensuring data consistency and integrity
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

다양한 실시예들에 따른 블록체인을 이용한 탈중앙화 분산 데이터베이스 구성 방법 및 시스템은, 블록체인 기술을 이용하여 P2P 네트워크 참여자들에 의해 관리되는 탈중앙화 분산 데이터베이스를 구성하는 방법과 그 시스템에 관한 것으로, 수정 불가능한 블록체인인 메인체인을 이용하여 현재 어떤 작업이 진행되어야 하는지에 대한 정보를 전체 참여자에게 투명하게 제공하고, 수정 가능한 블록체인의 형태를 갖는 계정체인을 이용하여 계정의 등록과 함께 계정의 데이터베이스 상태를 개인정보의 유출 없이 전체 참여자에게 제공하고, 사용자가 자신의 데이터 동기화를 사이드체인 네트워크에 자신의 개인정보의 유출 없이 요청하고, 다수의 사이드체인을 이용하여 전체 데이터베이스 시스템의 동기화에 필요한 '승인'을 고속으로 진행하고, 동기화에 필요한 명령어를 스마트 계약으로 구성하여 동기화 진행되도록 설계하였다. 본 발명은 실제 동기화 과정에서는 동기화를 완료한 로컬 데이터베이스는 동기화를 완료하지 못한 다른 로컬 데이터베이스에게 동기화에 필요한 데이터를 제공하여 중앙 데이터베이스를 이용하는 경우에 등장하는 병목현상을 제거하고, 각 로컬 데이터베이스의 동기화 정확성을 위변조가 불가능한 공개된 메인체인과 계정체인을 이용하여 확인할 수 있도록 하여 고속 동기화가 가능한 분산 데이터베이스 방법과 그 시스템을 제안하였다.

Description

고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템{METHOD AND SYSTEM FOR BUILDING FAST SYNCHRONIZABLE DECENTRALIZED DISTRIBUTED DATABASE}
다양한 실시예들은 블록체인 기술을 이용하여 P2P(peer-to-peer) 네트워크 참여자들에 의해 관리되는 고속 동기화가 가능한 분산 데이터베이스를 구성하는 방법 및 시스템에 관한 것이다.
분산 데이터베이스는 하나의 데이터베이스 관리 시스템이 여러 중앙연산장치에 연결된 저장장치들을 제어하는 형태의 데이터베이스이다. 작은 규모의 분산 데이터베이스에서는 여러 곳에 분산된 각각의 데이터베이스의 관리를 모두 중앙서버에서 담당하는 완전 중앙집권형 방법이 가능하지만 일정 규모 이상의 데이터베이스에서는 중앙집권형 방법은 비효율적이다. 일정 규모 이상의 데이터베이스에서는 각각의 분산된 데이터베이스는 개별 데이터베이스가 독립적으로 관리되다가 일정시간을 간격으로 전체 데이터베이스의 내용을 중앙서버의 명령에 의해 동기화하는 부분 중앙집권형 방법이 널리 사용되고 있다.
완전 또는 부분 중앙집권형 방법 모두에서 중앙 데이터베이스의 역할은 절대적이다. 중앙 데이터베이스에 대한 높은 의존도는 다음 3가지 단점을 야기한다. 첫 번째 단점은 대규모 분산 데이터베이스를 관리하기 위한 중앙집권형 관리 시스템을 구축하기 위해서는 대규모 시설투자가 필요하다는 사실이다. 이는 해당 데이터베이스 시스템을 사용하는데 많은 비용을 지불해야 함을 의미하고, 또한, 시설투자의 대형화에 따라 소수의 데이터베이스 서비스 제공업체만이 경쟁에 참여할 수 있게 되어 데이터베이스 산업의 독점화가 심화되는 단점을 발생시킬 수 있다. 두 번째 단점은 중앙 데이터베이스에 문제가 발생하였을 때 분산 데이터베이스 시스템 전체가 영향 받을 수 있다는 점이다. 예를 들어 중앙 데이터베이스 시스템이 자연재해 또는 사이버 공격 등에 의해 작동이 중지되면 전체 분산 데이터베이스의 동기화도 지연되게 된다. 마지막 세 번째 단점은 중앙 데이터베이스의 높은 의존도는 중앙 데이터베이스에 대한 사이버 공격의 효과를 높여 더 빈번한 사이버 공격을 야기하는 요인이 된다는 점이다. 예를 들어, 중앙 데이터베이스의 특정 데이터에 대한 위변조는 전체 분산 데이터베이스 시스템에 위변조 효과를 줄 수 있기 때문에 사이버 공격의 대상이 될 확률이 로컬 데이터베이스에 비해 훨씬 높아지게 된다.
블록체인상에 기록되는 내용을 데이터베이스 기록되는 내용으로 간주한다면 블록체인은 분산 데이터베이스 관리 시스템의 일례로 볼 수 있다. 블록체인 구성을 위해서는 초기 대규모 시설투자가 필요치 않으며 P2P 네트워크 참여자들의 분산된 노력에 의해 신뢰할 수 있는 중앙관리가 부재한 상황에서도 전체 데이터베이스의 신뢰성을 보장한다. 또한, 중앙 데이터베이스가 아닌 수많은 곳에 분산되어 있는 데이터베이스를 동시에 위변조하는 것은 불가능하기 때문에 위변조의 위험을 사실상 제거할 수 있다. 블록체인은 블록의 채굴에 관여하는 참여자에 제한여부에 따라 공개 블록체인(public blockchain: P2P 네트워크의 모든 참여자가 블록채굴 가능)과 사설 블록체인(private blockchain: 허가받은 참여자들만이 블록채굴 가능)으로 나눌 수 있다.
암호화폐의 분산 원장으로 개발된 기존의 공개 블록체인을 분산 데이터베이스를 사용하기에는 몇 가지 단점이 있다. 첫 번째 단점은 기존의 공개 블록체인은 수정이 불가능하면서 추가만이 가능하기 때문에 블록체인의 크기가 계속 증가해야 한다는 점이 문제이다. 두 번째 단점은 확장성의 부족이다. 기존의 대용량 데이터를 기록하고 관리하기에는 기존의 공개 블록체인은 그 처리속도가 느리고, 대용량의 데이터를 직접 블록체인에 기록하는 것은 적합하지 않다. 세 번째 단점은 블록체인에 기록된 데이터는 공개 블록체인의 특성상 공개되어야하기 때문에, 민감한 개인정보를 블록체인에 기록하기에는 적합하지 않다.
공개키 암호는 보통의 대칭키 암호와는 달리, 암호과정에 사용한 키(이하, 공개키라고 지칭됨)
Figure pat00001
가 복호과정에 사용하는 키(이하, 개인키라고 지칭됨)
Figure pat00002
와 다르다. 보다 구체적으로, 공개키 암호는 공개키
Figure pat00003
를 안다고 해도 개인키
Figure pat00004
를 구하는 것이 현실적으로 불가능하게 설계되어 있다. 이러한 성질을 이용하여 암호에 사용하는 키
Figure pat00005
를 공개하여 누구나 자신이 원하는 평문
Figure pat00006
을 암호문
Figure pat00007
를 하기 [수학식 1]과 같이 계산 할 수 있는데 반해, 하기 [수학식 2]와 같은 암호문
Figure pat00008
에 대한 복호화는 복호에 사용하는 키
Figure pat00009
의 소유자만이 가능하게 하는 암호체계를 구성할 수 있다.
Figure pat00010
Figure pat00011
공개키 암호의 개인키는 전자서명에도 사용된다. 즉,
Figure pat00012
의 소유자만이 할 수 있는 일을 시행하여 그것을 서명의 증거로 그 증거의 검증은 공개키를 이용하여 누구나 할 수 있게 하는 방법이다. 일부 공개키 암호들은 특정 연산에 대해 동형이다. 하기 [수학식 3]을 만족하는 경우 해당 공개키는 연산
Figure pat00013
에 대해 동형이라고 한다.
Figure pat00014
여기서, 연산
Figure pat00015
의 예로는 덧셈, 곱셈, XOR등이 있다. 동형암호는 개별 암호문의 복화화 없이 연산
Figure pat00016
에 의한 계산결과에 대한 복호화를 하는 방법을 제공한다.
다양한 실시예들은, 중앙 데이터베이스의 사용 없이 P2P 네트워크 참여자들의 분산된 노력과 합의에 의해 동기화가 가능한 분산 데이터베이스를 구성하는 방법과 그 시스템에 관한 것으로, 중앙 데이터베이스에 대한 높은 의존 때문에 발생하는 중앙집중형 데이터베이스 시스템의 단점을 해결하고, 탈중앙화 과정에서 발생할 수 있는 데이터베이스 내용의 유출에 의한 피해를 방지할 수 있는 방법을 제공한다.
다양한 실시예들에 따른 고속 동기화 가능 탈중앙화 분산 데이터베이스를 구성하기 위한 방법은, P2P 네트워크에 참여하는 노드들을 기반으로, 메인체인(main-chain)을 구성하는 단계, 상기 노드들의 사용자들과 관련된 계정들로 이루어지는 계정체인(account-chain)을 구성하는 단계, 상기 메인체인을 기반으로, 복수 개의 세그먼트들로 이루어지는 적어도 하나의 사이드체인(side-chain)을 구성하는 단계, 및 상기 세그먼트들의 시작과 끝을 상기 메인체인에 연결하여, 분산 데이터베이스를 구성하는 단계를 포함할 수 있다.
다양한 실시예들에 따른 고속 동기화 가능 탈중앙화 분산 데이터베이스를 구성하기 위한 시스템은, P2P 네트워크에 참여하고, 공동으로 분산 데이터베이스를 구성하여, 관리하는 노드들을 포함하고, 상기 노드들은, 상기 노드들을 기반으로, 메인체인을 구성하고, 상기 노드들의 사용자들과 관련된 계정들로 이루어지는 계정체인을 구성하고, 상기 메인체인을 기반으로, 복수 개의 세그먼트들로 이루어지는 적어도 하나의 사이드체인을 구성하고, 상기 세그먼트들의 시작과 끝을 상기 메인체인에 연결하여, 분산 데이터베이스를 구성할 수 있다.
다양한 실시예들에 따르면, 중앙 데이터베이스에 대한 높은 의존 때문에 발생하는 중앙집중형 데이터베이스 시스템의 단점을 해결하는 효과가 있다. 구체적으로, 중앙집중형 데이터베이스 시스템의 사용에 필요한 대규모 시설투자의 필요성을 감소시키고 데이터베이스 동기화 및 관리를 P2P 네트워크에서 수행하는 것을 허용하여 다수의 소규모 업체들도 데이터베이스 서비스 사업에 경쟁할 수 있는 생태계를 구축하는 효과가 있다. 아울러, 자연재해 또는 사이버 공격 등에 의해 일부 분산 데이터베이스 시스템이 오작동을 하더라도 전체 시스템에 주는 영향을 제한적이게 하여 피해를 최소화하고, 오작동 이후 복구과정에서 중앙집중형 데이터베이스 시스템에 비해 더 신속하게 전체시스템을 동기화 할 수 있게 하여, 전체 탈중앙화 분산 데이터베이스에 대한 위변조에 공격에 대한 강건성, 신뢰도 등을 중앙집중형 데이터베이스의 그것들에 동일한 수준 또 더 우수한 수준으로 유지하는 등, 탈중앙화 분산 데이터베이스 시스템의 장점을 확대시키는 효과가 있다.
또한, 데이터의 분산 수집 및 학습등이 일어나는 환경에서 개별 환경에서의 데이터 무결성 및 학습 데이터에 대한 진위 보장등의 서비스를 제공하고자 하는 경우 탈중앙화 분산 데이터베이스 구조가 이용될 수 있다. 이를 통해, 수집 데이터의 진위여부, 학습 데이터의 진위 여부 등을 판단할 수 있고, 협력적 학습(Federated Learning)의 모델 변화에 대한 추적 검증 기능이 제공될 수 있다.
도 1은 다양한 실시예들에 따른 분산 데이터베이스 구성을 위한 메인체인과 사이드체인의 관계를 개념적으로 도시하는 도면이다.
도 2는 다양한 실시예들에 따른 분산 데이터베이스 구성을 위한 메인체인과 사이드체인의 관계를 예시적으로 도시하는 도면이다.
도 3은 다양한 실시예들에 따른 시스템의 분산 데이터 구성 방법을 도시하는 도면이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 설명된다.
다양한 실시예들은 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 그 시스템에 관한 것으로, 다중 블록체인과 오프체인 데이터스토리지 기술을 이용하여 P2P 네트워크 참여자들에 의해 관리되는 동기화가 가능한 분산 데이터베이스를 구성하는 방법과 그 시스템을 제공한다.
다양한 실시예들은, 전체 시스템의 진행통제와 타임스태핑 정보를 제공하는 블록체인(이를 메인체인(Main-chain)이라고 하자)을 구성하는 단계, 로컬 데이터베이스를 사용자의 데이터를 검색하는데 필요한 정보(이를 계정(account)이라고 하자)를 기록하기 위한 수정 가능한 블록체인(이를 계정체인(Account-chain)이라고 하자)과 사용자의 실제 데이터를 저장할 로컬 오프체인 데이터스토리지로 구성하는 단계, 사용자의 데이터베이스에서의 변경사항에 따라 동기화 할 때에 수행한 내용을 사용자 스스로 로컬 데이터베이스의 계정체인과 로컬 오프체인 데이터스토리지에서 수행한 내용을 명령어 세트로 구성하는 단계, 메인체인의 블록 해쉬값에 따라 메인체인과 계정체인과는 다른 별도의 블록체인(이를 사이드체인(Side-chain)이라 하자. 이러한 사이드체인은 필요에 따라 다수를 사용할 수 있다)의 단편(segment)을 메인체인에 연결하여 생성하는 동시에, 진행되고 있던 사이드체인 단편을 메인체인에 연결하여 종료하는 단계, 사이드체인 네트워크에 사용자의 데이터베이스 동기화에 필요한 명령어 세트의 승인을 요청하고 네트워크 참여자는 요청받은 명령어 세트를 스마트 계약들로 구성된 블록을 구성하고 채굴하는 단계, 및 사이드체인 선분이 메인체인에 연결될 때 사이드체인 단편에 속해있던 스마트 계약들이 실행되어 전체 분산 데이터베이스를 동기화하는 단계로 이루어지는 것을 특징으로 한다.
1) 전체구조
다양한 실시예들에 따른 분산 데이터베이스에서는 사용자가 가입되어 있는 모든 로컬 데이터스토리지의 데이터는 사용자의 접속여부에 상관없이 일정기간을 두고 정기적으로 동기화를 통해 동일한 데이터를 유지하는 것을 목적으로 한다. 여기서 유의할 점은 분산 데이터베이스 전체가 단 하나의 데이터베이스 서비스 제공자에 의해 관리되는 것이 아니고 다수의 데이터베이스 서비스 제공자들과 다수의 데이터스토리지 관리자들에 의해 공동으로 관리되고 있다고 가정하고 있다.
데이터스토리지 관리자는 하나 또는 다수의 데이터스토리지를 관리하면서 후에 설명할 메인체인에 연결된 사이드체인의 스마트 계약과 계정체인의 내용을 이용하여 자신의 서비스에 가입한 계정의 동기화를 진행한다.
데이터베이스 서비스 제공자는 하나 또는 다수의 데이터스토리지 관리업체를 관리하면서 메인체인에 연결된 사이드체인의 스마트 계약과 계정체인의 내용을 이용하여 자신의 서비스에 가입한 계정의 동기화를 진행한다.
사용자는 자신의 데이터를 보호하기 위해 전체 데이터를 디렉토리 또는 데이터베이스의 스키마와 같은 데이터의 구조 정보를 포함한 모든 데이터를 블록단위로 암호화하여 데이터스토리지에 보관할 수 있다. 또한, 사용자는 자신의 계정을 다수의 데이터베이스 서비스 제공업체들과 다수의 로컬 데이터스토리지 관리업체들에 의해 공동으로 관리되게 할 수 있다.
2) 메인체인
다양한 실시예들은 전체 시스템의 진행통제와 타임스태핑 기능을 제공하는 메인체인을 이용한다. 이 메인체인은 다양한 형태의 블록체인 형태로 구성할 수 있는데 이 명세서에서는 실시예로 비트코인에서 사용되고 있는 작업증명 방식을 사용하는 블록체인 모델을 이용하여 설명한다. 다양한 실시예들에 따른 기술이 다른 형태의 증명방법(예: 지분증명)에도 적용 가능함은 내용으로 볼 때 자명하다.
다양한 실시예들에 따른 메인체인은 비트코인의 경우와 유사하게 정해진 시간(비트코인의 경우는 매 10분)마다 새로운 블록이 계산되어 메인체인에 추가되고, 그 계산에 대한 보상으로 지급되는 암호화폐가 존재한다고 가정한다. 이 때 정해진 시간을 회전이라고 하고, 순차적인 회전의 진행을 표시하는
Figure pat00017
(
Figure pat00018
)을 이용하여, 회전을
Figure pat00019
으로, 이 회전에서 추가되는 블록을
Figure pat00020
으로, 이 블록
Figure pat00021
이 추가된 메인체인을
Figure pat00022
으로 표시하자. 이 기호를 이용하여 회전
Figure pat00023
이 진행되는 상황에서 각 메인노드(메인체인 네트워크에 참여하는 개별 기기, 예: 참여자의 컴퓨터)가 가지고 있는 메인체인은
Figure pat00024
으로 표시할 수 있다. 상기한 기호들은 하기 [표 1]과 같이 정의된다.
Figure pat00025
Figure pat00026
번째 회전
Figure pat00027
회전
Figure pat00028
에서 추가되는 블록
Figure pat00029
회전
Figure pat00030
에서 각 노드들의 메인체인
Figure pat00031
블록체인
Figure pat00032
에 블록
Figure pat00033
을 연결한 메인체인
블록
Figure pat00034
의 데이터는 바로 앞 블록
Figure pat00035
의 해쉬값
Figure pat00036
, 현 회전의 번호
Figure pat00037
, 그리고 현 회전이 시작되기 직전의 정보로 예측 불가능하지만 공개적으로 확인 가능한 정보(예: 태양의 흑점 활동정보, 현 회전이 시작되기 직전의 비트코인 블록)의 해쉬값
Figure pat00038
과, 현 블록의 해쉬값
Figure pat00039
의 포인터와 이 해쉬값을 구하는데 사용한 넌스값
Figure pat00040
등으로 구성되어 있다. 구체적으로, 메인체인에서의 해쉬값
Figure pat00041
과 넌스값
Figure pat00042
은 주어진
Figure pat00043
에 대하여, 하기[수학식 4]와 같은 작업증명의 해답으로 정의된다.
Figure pat00044
여기서, '
Figure pat00045
'은 비트열의 접합을 의미하고,
Figure pat00046
는 어떤 입력에 대해서든 출력으로 256 비트열을 생성하는 SHA-256 해쉬함수이고,
Figure pat00047
Figure pat00048
개의 0으로만 구성된 비트열을 의미하고,
Figure pat00049
는 256 비트열 중에서 처음
Figure pat00050
비트가
Figure pat00051
인 비트열의 집합을 의미한다(
Figure pat00052
= 비트열
Figure pat00053
의 길이). 즉,
Figure pat00054
은 256 비트열 중에서 처음
Figure pat00055
개의 비트가 모두 0인 비트열의 집합이다. 상기 [수학식 4]의 해쉬퍼즐을 만족하는 넌스값
Figure pat00056
에 대한 결과가 하기 [수학식 5]와 같이 블록
Figure pat00057
의 해쉬값이다.
Figure pat00058
상기 [수학식 4]의 계수
Figure pat00059
은 해쉬퍼즐의 난이도를 결정하는데, 그 값이 크면 클수록 해당 해쉬퍼즐을 만족하는 넌스값을 계산하는 것이 어려워진다. 회전
Figure pat00060
에서 작업증명의 해답
Figure pat00061
을 가장 먼저 계산한 채굴자(작업증명에 참여하는 노드를 지칭함)는 블록
Figure pat00062
을 발표하고 이를 메인체인
Figure pat00063
에 연결하여 자신이 가지고 있는 메인체인을 하기[수학식 6]과 같이 확장한다. 다른 참여자들은 발표된 블록
Figure pat00064
을 검증하고 이에 대한 합의로 자신들의 메인체인에 추가한다.
Figure pat00065
3) 계정, 데이터스토리지와 계정체인
계정은 데이터베이스 사용자에 관한 정보(예: 사용자의 공개키), 사용자의 데이터에 관한 정보(예: 파일참조정보, 데이터스토리지에서의 파일의 해쉬 포인터, 동기화과정에서 변경될 내용에 대한 참조정보와 그에 대한 사용자의 전자서명)로 구성된다. 계정 자체에는 사용자의 개인정보 또는 데이터가 직접 포함되지 않아 계정이 공개되는 것에 따른 정보유출의 위험은 없다.
다양한 실시예들은 위변조 공격에 대한 방어를 위해 사용자의 전자서명을 이용한 무결성 검증 방법(이 방법은 잘 알려진 방법이므로 이에 대한 설명은 본 명세서에서는 생략한다)과 함께 계정들로 이루어진 블록체인인 계정체인과 동형암호를 이용한 위변조 방지 방법을 사용한다. 구체적으로, 계정체인의
Figure pat00066
회전(이 회전은 메인체인의 회전과 동일한 것이 아니다. 이 회전이 시작되었을 때의 계정체인을
Figure pat00067
으로 표시하자)에서 채굴되는 블록
Figure pat00068
은 바로 앞 블록
Figure pat00069
의 해쉬값
Figure pat00070
, 현 회전에서 생성되는 계정들
Figure pat00071
(여기서,
Figure pat00072
는 블록
Figure pat00073
에 포함될 계정의 수를 의미한다)의 목표값
Figure pat00074
(이에 대한 설명은 곧 등장할 것이다)과, 현 블록의 해쉬값
Figure pat00075
의 포인터와 이 해쉬값을 구하는데 사용한 넌스값
Figure pat00076
등으로 구성되어 있다. 계정
Figure pat00077
는 하기 [표 2]와 같은 정보를 가지고 있다.
기호 내용
Figure pat00078
계정
Figure pat00079
의 사용자의 공개키
Figure pat00080
계정
Figure pat00081
의 목표값
Figure pat00082
계정
Figure pat00083
의 목표값
Figure pat00084
에 대한 입력값
Figure pat00085
계정
Figure pat00086
의 데이터의 오프체인에서의 저장정보
Figure pat00087
Figure pat00088
에 대한 전자서명
계정
Figure pat00089
의 데이터의 오프체인 데이터스토리지에서의 저장정보
Figure pat00090
는 계정
Figure pat00091
가 동기화에 필요한 현재 상태를 가리킨다. 즉,
Figure pat00092
와 변경된 디렉토리, 파일 또는 변경된 내용의 (데이터스토리지에서의) 저장위치와 크기 등의 정보를 가지고 동기화를 진행한다. 이때, 실제 데이터 내용은 노출시키지 않게 동기화 직전의 상태를 표현하는데 필요한 모든 정보를 포함하고 있는 것이 바로
Figure pat00093
이다. 목표값을 설정하고 이를 블록의 해쉬값을 계산하는데 사용하여 블록체인에 수정 가능성을 제공하는 방법이 있다. 다양한 실시예들에서는 절단 해쉬값을 이용하는 방법을 제안한다. 다양한 실시예들에서는 동형암호를 이용한 방법을 제안한다.
계정
Figure pat00094
의 목표값
Figure pat00095
에 대한 입력값
Figure pat00096
은 실제 구현에서 사용할 동형암호에 따라 결정된다. 이 명세서에서는 실시예로 1024비트 길이의 정수
Figure pat00097
에 대한 모듈로 덧셈에 동형인 Paillier 공개키 암호(이 공개키 암호를
Figure pat00098
로 표시하자)를 기준으로 설명하고자 한다. 계정
Figure pat00099
의 목표값
Figure pat00100
는 하기[수학식 7]과 같이 정의된다.
Figure pat00101
여기서,
Figure pat00102
는 1024비트를 생성하는 해쉬함수이고,
Figure pat00103
는 계정
Figure pat00104
의 사용자의 공개키이고,
Figure pat00105
의 덧셈은 정수
Figure pat00106
에 대한 모듈로 덧셈이다.
계정
Figure pat00107
의 목표값
Figure pat00108
는 한 번 계산된 이후에는 변화하지 않는다. 계정
Figure pat00109
의 목표값
Figure pat00110
,
Figure pat00111
에 대한 입력값
Figure pat00112
, 그리고 현재의
Figure pat00113
에 대한 무결성 검증은 하기 [수학식 8]과 같이 계정
Figure pat00114
의 사용자의 전자서명으로 한다. 이에 대한 검증은 공개키
Figure pat00115
를 이용하여 시행한다.
Figure pat00116
계정체인의 블록
Figure pat00117
의 해쉬값
Figure pat00118
과 넌스값
Figure pat00119
은 주어진
Figure pat00120
에 대하여, 하기 [수학식 9]와 같은 작업증명의 해답으로 정의된다.
Figure pat00121
여기서,
Figure pat00122
은 계정체인의 채굴자에게 알려진 가장 최근의 메인체인의 블록 해쉬값으로,
Figure pat00123
이 메인체인에서 블록 해쉬값
Figure pat00124
이 계산된 이 후에 생성되는 계정들임을 증명하는데 사용한다. 만약, 계정체인의 어떤 채굴자가 상기 [수학식 9]에서 고의적으로 가장 최근의 메인체인의 블록 해쉬값보다 훨씬 더 오래된(메인체인의 블록 해쉬값의 전파지연을 감안한 것보다도 더 오래된) 블록 해쉬값을 사용하여 자신이 등록하고자 하는
Figure pat00125
의 등록시점을 앞당기려는 시도는 계정체인의 다른 채굴자들이 검증과정에서 사용된
Figure pat00126
의 계산시점과 현시점과의 차이를 고려하여 탈락시키는 규칙을 만들어 억제한다. 상기 [수학식 9]의 해쉬퍼즐을 만족하는 넌스값
Figure pat00127
에 대한 결과가 하기 [수학식 10]과 같이 블록
Figure pat00128
의 해쉬값이다.
Figure pat00129
계정체인의
Figure pat00130
번째 회전의 작업증명의 해답
Figure pat00131
을 가장 먼저 계산한 계정체인의 채굴자는 블록
Figure pat00132
을 발표하고 이를 계정체인
Figure pat00133
에 연결하여 자신이 가지고 있는 계정체인을 하기 [수학식 11]과 같이 확장한다. 다른 참여자들은 발표된 블록
Figure pat00134
을 검증하고 이에 대한 합의로 자신들의 계정체인을
Figure pat00135
로 업데이트한다.
Figure pat00136
메인체인과 계정체인에는 P2P 네트워크 모든 노드의 참여가 가능하다. 블록채굴을 통해 블록보상이 참여의 주요동기가 될 것이다. 이를 위해 암호 화폐를 사용할 수 있고 그 거래를 기록할 별도의 블록체인을 구성할 수도 있다.
한편, 로컬 데이터스토리지의 관리자들과 데이터서비스 제공자들은 메인체인과 계정체인의 채굴에 반드시 참여해야 하는 것은 아니지만 메인체인과 계정체인의 관리에는 반드시 참여해야 한다. 그들은 메인체인과 계정체인을 이용하여 각 계정의 저장정보를 검증한 후에 전체 데이터베이스의 동기화에 참여해야하기 때문이다.
계정체인은 수정 가능한 블록체인이다. 왜냐하면, 블록
Figure pat00137
의 해쉬값
Figure pat00138
이 해당 블록에 속해있는 계정들
Figure pat00139
자체가 아닌 그것들의
Figure pat00140
에 의존하기 때문에 목표값을 변화시키지 않는 수정은 전체 계정체인의 해쉬값에 의한 연결에 위배되지 않는다.
계정 사용자의 실제 데이터는 오프체인 상태의 데이터스토리지에 저장되어 사용자 데이터의 실체 유출을 방지한다.
4) 동기화 요청
계정
Figure pat00141
의 사용자가 특정 로컬 데이터베이스(이를 DBA라고 하자)에 접속하여 데이터의 저장정보를
Figure pat00142
에서
Figure pat00143
가 되었다고 가정하자. 이 경우에 사용자의 데이터베이스 클라이언트 소프트웨어는 변화된 상황에 맞게 DBA에 기록되어 계정
Figure pat00144
의 내용을 변화시킨다. 즉, 계정
Figure pat00145
의 데이터의 저장정보가
Figure pat00146
에서
Figure pat00147
로 변화를 사용자가 승인했다는 증거로 하기 [수학식 12]를 만족하는
Figure pat00148
로 계정
Figure pat00149
Figure pat00150
를 교체하고, 변화된 상황에 맞게
Figure pat00151
를 하기 [수학식 13]과 같이 교체한다.
Figure pat00152
Figure pat00153
여기서, 주목할 점은 개인키
Figure pat00154
의 소유자인 계정
Figure pat00155
의 사용자만이 상기 [수학식 12]를 만족하는
Figure pat00156
를 하기 [수학식 14]로 계산할 수 있다는 점이다.
Figure pat00157
이러한 교체는 DBA에서만 벌어진 일이고 이를 다른 데이터베이스에서도 진행되게 해야 한다. 이를 위해, 사용자의 데이터베이스 클라이언트 소프트웨어는 저장상태가
Figure pat00158
에서
Figure pat00159
로 변화시키는 필요한 작업(이하,
Figure pat00160
'라고 지칭됨)에 필요한 정보를 하기[수학식 15]와 같이 계산한다.
Figure pat00161
여기서,
Figure pat00162
는 두 저장정보
Figure pat00163
,
Figure pat00164
사이의 차이를 표현하는 정보이다.
Figure pat00165
를 다른 데이터베이스에서도 수행시켜 전체 분산 데이터베이스에서 계정
Figure pat00166
의 데이터 저장정보가
Figure pat00167
에서
Figure pat00168
로 변화된 것에 맞추어 계정
Figure pat00169
를 변화시켜야 한다. 이러한 요청을 사이드체인 네트워크라고 지칭할 P2P 네트워크에 요청한다.
5) 사이드체인(Side-chain)
다양한 실시예들은 다수의 사이드체인을 이용하여 전체 데이터베이스 시스템의 동기화에 필요한 '승인'을 병렬처리 방식으로 고속으로 진행하려고 한다. 여기서, 승인이라 함은 특정 로컬 데이터베이스에서 발생한 변화를 전체 분산 데이터베이스에 전파해야 하는지를 결정하는 것을 의미한다.
다중 블록체인을 이용하여 블록에 기록된 내용의 수정하는 방법이 있다. 다양한 실시예들은 사이드체인을 이용하여 메인체인과는 별도로 존재하는 계정체인의 수정과 오프체인에 위치하는 데이터를 수정하는 방법을 제안한다.
예로서, 8 개의 사이드체인을 이용하는 경우를 가정해 보자. 각 계정은 어떤 사이드체인에 의해 동기화가 진행될지가 미리 결정되게 하는데, 각 계정
Figure pat00170
의 목표값
Figure pat00171
의 끝 3자리 비트(이들은 000, 001, ..., 111중에 하나이다)를 이용하여 어느 사이드체인에 의해 동기화에 대한 승인이 이루어질지가 결정된다.
사이드체인은 메인체인에 시작과 끝이 연결된 단편들(segments)로 이루어져 있고, 그 각 단편의 시작과 끝은 메인체인의 블록 해쉬값
Figure pat00172
이 결정한다. 구체적으로,
Figure pat00173
-사이드체인(목표값
Figure pat00174
의 끝 3자리 비트가 000인 계정들의 동기화의 승인을 담당할 사이드체인)의 첫 단편은
Figure pat00175
로 표시하는데, 이는 메인체인의 블록 해쉬값
Figure pat00176
의 끝 3자리 비트가 처음으로 000이 되는
Figure pat00177
에서 시작하여 그 다음으로 000이 되는
Figure pat00178
이 등장할 때까지 계속된다는 의미이다. 같은 방법으로
Figure pat00179
으로 표시되는
Figure pat00180
-번째 단편은 메인체인의 블록 해쉬값
Figure pat00181
의 끝 3자리 비트가
Figure pat00182
-번째로 000이 되는
Figure pat00183
에서 시작하여 그 다음으로 메인체인의 블록 해쉬값
Figure pat00184
의 끝 3자리 비트가 000이 되는
Figure pat00185
이 등장할 때까지 계속된다.
이제, 사이드체인 단편
Figure pat00186
내의 블록에 대해서 살펴보도록 하자. 메인체인에서 블록 해쉬값
Figure pat00187
(이 해쉬값의 끝 3자리비트가 000이었다)가 발표되면 바로
Figure pat00188
-사이드체인 네트워크의 채굴자들은
Figure pat00189
-사이드체인에 동기화에 대한 승인 요청
Figure pat00190
(상기 [수학식 15] 참조)을 검증하고 검증이 통과된 것들을 블록
Figure pat00191
에 포함시켜 해당 블록을 채굴하려고 시도한다. 여기서, 블록을 표현하는
Figure pat00192
Figure pat00193
-사이드체인의
Figure pat00194
-번째 단편의
Figure pat00195
-번째 블록을 의미한다.
블록
Figure pat00196
가 채굴되는 과정은, 하기 [수학식 16]과 같이 주어진
Figure pat00197
에 대하여, 작업증명방식으로 정의된다.
Figure pat00198
여기서,
Figure pat00199
은 직전 블록
Figure pat00200
의 해쉬값이고
Figure pat00201
은 현 블록에서 검증하고자 하는 계정의 저장정보의 변경 요청들이다. 사이드체인의 채굴자들은 요청
Figure pat00202
에 대한 검증을 실시하는데 그 대상은 상기 [수학식 15]의
Figure pat00203
의 예를 가지고 설명한다면 다음과 같다.
(1)
Figure pat00204
의 위치를 이용하여 계정
Figure pat00205
의 저장정보 확인(데이터 변경이 실제로 진행된 로컬 데이터베이스를 제외하고 계정
Figure pat00206
의 사용자가 가입한 모든 데이터베이스에서는
Figure pat00207
이어야 함).
(2)
Figure pat00208
를 진행하면
Figure pat00209
로 변화하는지 검증.
(3) 입력값
Figure pat00210
Figure pat00211
에 맞게 제시되었는지 확인.
(4) 계정
Figure pat00212
의 전자서명
Figure pat00213
검증
상기 [수학식 16]의 해쉬퍼즐을 만족하는 넌스값
Figure pat00214
에 대한 결과가 하기 [수학식 17]과 같이 블록
Figure pat00215
의 해쉬값이다.
Figure pat00216
Figure pat00217
-사이드체인의 해쉬퍼즐의 해답
Figure pat00218
을 가장 먼저 계산한
Figure pat00219
-사이드체인의 채굴자는 블록
Figure pat00220
을 발표하고 이를 사이드체인 단편에 연결하여 확장한다. 다른
Figure pat00221
-사이드체인의 참여자들은 발표된 블록
Figure pat00222
을 검증하고 이에 대한 합의로 자신들의 사이드체인 단편에 연결하여 확장한다.
변경요청
Figure pat00223
은 스마트 계약으로 기록되어 이것들이 기록된 블록
Figure pat00224
을 포함하고 있는 사이드체인 단편
Figure pat00225
이 메인체인에 연결될 때 전체 시스템에 적용되도록 설계된다. 예를 들어, 계정체인에서의 계정정보의 수정은 스마트 계약
Figure pat00226
이 메인체인에 연결되는 즉시 실시된다.
메인체인에 연결되는
Figure pat00227
-사이드체인의
Figure pat00228
-번째 단편
Figure pat00229
의 블록은 하기 [수학식 18]과 같다.
Figure pat00230
여기서, 맨 처음 블록
Figure pat00231
은 메인체인의 연결되는 블록
Figure pat00232
이고, 즉,
Figure pat00233
이고, 맨 마지막 블록
Figure pat00234
도 메인체인의 연결되는 블록
Figure pat00235
이다. 이때, 사이드체인 단편을 메인체인에 연결시키기 위해 메인체인의 해쉬값을 하기[수학식 19]와 같이 변화시킨다.
Figure pat00236
지금까지 설명한 방식으로 다른 사이드체인의 파편들도 정의할 수 있다.
도 1은 다양한 실시예들에 따른 분산 데이터베이스 구성을 위한 메인체인과 사이드체인의 관계를 개념적으로 도시하는 도면이다. 도 2는 다양한 실시예들에 따른 분산 데이터베이스 구성을 위한 메인체인과 사이드체인의 관계를 예시적으로 도시하는 도면이다.
도 1을 참조하면, 하나의 메인체인에 적어도 하나의 사이드체인들이 연결될 수 있다. 이 때 하나의 메인체인에 하나의 사이드체인 또는 복수 개의 사이드체인들이 연결될 수 있다. 고속 동기화 기능을 가진 탈중앙화 분산 데이터베이스의 구성은 개별 독립된 시스템 환경 또는 클라우드 환경 등에서 동작이 가능하다. 예를 들면, 도 2에 도시된 바와 같이, 메인체인(B)와 사이드체인(S 0 , S 3 )는 클라우드 기반 인스턴스 환경에서 동작하며, 사이드체인 (S 1 , S 2 )는 별도의 독립된 시스템으로 동작하는 구조의 예시이다. 이러한 구조는 메인체인이 별도의 독립된 개별 시스템으로 동작하고, 사이드체인의 일부 또는 전부가 클라우드 환경에서 동작하는 구성에도 적용이 가능하다. 또한, Edge Computing 환경에서의 데이터 수집 또는 개별 데이터를 이용해 Federated Learning과 같은 서비스를 제공할 때, 각 Edge 환경에서의 데이터 무결성 및 보장을 위한 구조로 활용될 수 있다.
6) 동기화 진행
계정
Figure pat00237
의 사용자가 DB-A에서 데이터의 저장정보를
Figure pat00238
에서
Figure pat00239
로 변화시키는 작업을 진행하였고 이를 전체 분산 데이터베이스에서 동일하게 하는 동기화를 요청하였다고 가정하자. 이를 위해 사용자의 클라이언트 소프트웨어는 동기화에 필요한 요청
Figure pat00240
를 자신의 계정의 수정을 다루는 사이드체인 네트워크에 요청하였고, 해당 요청은 사이드체인에서 검증된 후에 메인체인에 연결되어 메인체인의 모든 참여자들(로컬 데이터스토리지 관리자들과 데이터서비스 제공자들은 반듯이 참여해야 한다고 가정하였다)에게 알려지게 되었다고 가정하자.
계정
Figure pat00241
의 동기화는 실제 데이터에 대한 접근을 요구한다. 이때 사용자의 개인정보의 유출이 우려된다면 앞에서 언급한 바와 같이 사용자는 디렉토리를 포함한 전체 데이터를 블록단위로 나누어 암호화하여 보관하고 동기화 과정에서는 교체가 필요한 암호화된 블록을 교체하여 동기화를 완료할 수 있다.
이제, 계정
Figure pat00242
의 동기화의 과정에 참여한 데이터스토리지 관리자가 해야 할 활동을 살펴보도록 하자. 먼저, 관리자는 메인체인과 그것에 연결되어 종료된 사이드체인 단편을 검색하여 현 메인체인의 회전에서 자신이 동기화해야 할 계정이 있는지 파악한다. 만약, 계정
Figure pat00243
의 동기화를 자신이 담당(자신의 서비스에 가입되어 있는 계정이므로)해야 하고 해당 동기화 필요한 실제 데이터가 DBA에 있다면 그곳에 접속하여 해당 데이터를 얻으려 할 것이다. 이는 병목현상을 야기할 수 있는데, 본 발명에서는 반드시 DBA에서만 해당 데이터를 얻을 필요가 없게 하여 해당 문제를 해결하고자 한다. 만약, 다른 데이터베이스 DBB에서 해당 데이터를 DBA에서 얻어 동기화를 완료하였다면 일부 다른 데이터스토리지 관리자들은 DBB에서 해당 데이터를 얻어 동기화를 진행하면 된다. 이 과정에서 DBB의 동기화가 최신의 것인지 또는 정상적인 것인지는 계정체인과 메인체인을 이용하여 확인할 수 있다. 물론, 데이터서비스 제공업체 또는 그들의 연합체가 좀 더 신속한 동기화에 도움을 줄 수도 있다.
사용자는 로컬 데이터서비스에 접속했을 때 해당 데이터베이스가 최신 상태인지를 계정체인과 메인체인을 검색함으로써 바로 확인가능하다.
하기 [표 3]은 사용자의 요청으로부터 전체 시스템의 동기화가 진행되는 과정을 보여주고 있다.
순서 기호 내용
1 U:
Figure pat00244
in DBA
사용자가 DBA에 접속하여 데이터를 변경하고 해당 데이터를 동기화 명령
Figure pat00245
작성
1 U
Figure pat00246
SCN:
Figure pat00247
사용자가
Figure pat00248
를 승인해 줄 것을 SCN에 요청
2 SCN:
Figure pat00249
in
Figure pat00250
SCN
Figure pat00251
가 포함된 블록
Figure pat00252
을 채굴하여 사이드체인 단편
Figure pat00253
에 연결
3 MCN:
Figure pat00254
in MC
MCN
Figure pat00255
을 MC에 연결하여
Figure pat00256
의 실행을 시스템 참여자에게 공지
4 All update MC and AC 시스템 참여자 자신들의 MC와 AC 업데이트
5 DBB
Figure pat00257
DBA: data
DBB는 DBA로부터 동기화에 필요한 데이터를 받아 동기화 완료.
6 DBC
Figure pat00258
DBB: data
DBC DBB로부터 동기화에 필요한 데이터를 받아 동기화 완료. 이 과정에서 DBB에 대한 검증에 MC와 AC를 이용
여기서, U는 사용자를 의미하고, MC는 메인체인을 의미하고, AC는 계정체인을 의미하고, SC는 사이드체인을 의미하고, MCN은 메인체인 네트워크를 의미하고, CAN은 계정체인 네트워크를 의미하고, SCN은 사이드체인 네트워크를 의미하고, DBA는 데이터베이스-A(사용자가 데이터를 변경한 곳)를 의미하고, DBB는 데이터베이스-B(DBA에서 데이터를 받아 동기화 진행)를 의미하고, DBC는 데이터베이스-C(DBc에서 데이터를 받아 동기화 진행)를 의미한다.
7) 메인체인, 계정체인, 사이드체인의 보관
다양한 실시예들에서 제안하는 분산 데이터베이스 시스템의 참여자들은 계정체인의 전체를 보관할 필요는 있지만 메인체인과 사이드체인의 경우에는 최근의 데이터만 보관하고 있는 것으로 충분하다. 한편, 계정체인 자체는 주로 계정내용의 수정을 목적으로 하는 것으로 그 크기가 증가하지 않는다. 그러므로, 메인체인, 계정체인, 사이드체인의 보관에 필요한 비용의 부담은 제한적이다.
8) 암호화폐를 이용한 블록채굴에 대한 보상
메인체인, 계정체인, 사이드체인의 블록채굴에 대한 보상으로 암호 화폐를 생성하여 보상하게 하고, 해당 암호 화폐를 관리하기 위한 별도의 블록체인을 이용할 수 있다. 또한, 데이터베이스 시스템의 사용자들이 서비스 제공의 대가로 지불해야 하는 비용의 전부 또는 일부를 암호 화폐로 지불하게 하여 전체 시스템의 운영에 대한 보상체계를 구축할 수 있다.
도 3은 다양한 실시예들에 따른 시스템의 분산 데이터 구성 방법을 도시하는 도면이다.
도 3을 참조하면, P2P 네트워크의 노드들은, 310 단계에서 메인체인을 구성할 수 있다. 이 때 메인체인은 노드들을 기반으로 구성될 수 있다. 여기서, 메인체인은 블록체인 형태로 구성될 수 있다.
P2P 네트워크의 노드들은, 320 단계에서 로컬 데이터베이스를 계정체인과 로컬 오프체인 데이터스토리지로 구성할 수 있다. 이 때 계정체인은 노드들의 사용자들과 관련된 계정들로 이루어질 수 있다. 여기서, 계정체인은 블록체인 형태로 구성될 수 있다. 그리고, 로컬 오프체인 데이터스토리지는 사용자들에 대한 데이터를 저장할 수 있다.
P2P 네트워크의 노드들은, 330 단계에서 메인체인을 기반으로, 적어도 하나의 사이드체인을 구성할 수 있다. 이 때 각 사이드체인은 메인체인을 기반으로 구성되며, 복수 개의 세그먼트들로 이루어질 수 있다. 여기서, 사이드체인은 메인체인의 블록 해쉬값을 이용하여, 구성될 수 있다.
P2P 네트워크의 노드들은, 340 단계에서 사이드체인을 메인체인에 연결하여, 분산 데이터베이스를 구성할 수 있다. 이를 통해, P2P 네트워크의 노드들은, 분산 데이터베이스를 공동으로 관리할 수 있다. 이 때 P2P 네트워크의 노드들은, 사이드체인을 통해, 분산 데이터베이스를 동기화할 수 있다. 사이드체인이 로컬 오프체인 데이터스토리지에서의 사용자들 중 어느 하나의 데이터에 대한 변경의 승인을 기반으로, 분산 데이터베이스를 동기화할 수 있다. 예를 들면, 복수 개의 사이드체인들이 승인을 병렬로 처리하여, 분산 데이터베이스를 동기화할 수 있다. 여기서, 사이드체인이 승인을 기반으로 스마트 계약을 구성하고, 스마트 계약이 메인체인에 연결될 때, 계정체인이 사용자들 중 어느 하나의 계정을 변경할 수 있다.
다양한 실시예들에 따른 분산 데이터베이스 구성 방법은, 수정 불가능한 공개 블록체인인 메인체인을 이용하여 현재 어떤 작업이 진행되어야 하는지에 대한 정보를 전체 참여자에게 투명하게 제공하고, 수정 가능한 공개 블록체인인 계정체인을 이용하여 계정의 등록을 진행하는 동시에, 계정에 기록된 사용자의 데이터에 대한 데이터스토리지에서의 저장정보(예: 저장된 데이터의 해쉬포인터)를 전체 참여자에게 투명하게 제공할 수 있다.
다양한 실시예들에 따르면, 실제 데이터는 오프체인에 저장하고 계정체인에는 저장된 데이터의 해쉬포인터 등만을 기록하여 사용자가 자신의 개인정보의 유출 없이 데이터 동기화를 사이드체인 네트워크에 요청할 수 있다.
다양한 실시예들에 따르면, 다수의 사이드체인을 이용하여 전체 데이터베이스 시스템의 동기화에 필요한 '승인'을 병렬처리 방식으로 고속으로 진행하고, 동기화에 필요한 명령어를 스마트 계약으로 구성하여 사이드체인 단편이 메인체인에 연결될 때 동기화가 진행되도록 할 수 있다.
다양한 실시예들에 따르면, 동기화 과정에서 동기화를 완료한 로컬 데이터베이스가 동기화를 완료하지 못한 다른 로컬 데이터베이스에게 동기화에 필요한 데이터를 제공하여 중앙 데이터베이스를 이용하는 경우에 등장하는 병목현상을 제거하고, 각 로컬 데이터베이스의 동기화 정확성을 메인체인과 계정체인을 이용하여 확인할 수 있도록 할 수 있다.
다양한 실시예들에 따르면, 메인체인을 이용하여 전체 참여자들(사용자, 데이터베이스 서비스 제공자, 데이터스토리지 관리자, 계정체인 채굴자, 사이드 채굴자)에게 각 계정의 데이터베이스 변화 시점에 대한 합의를 제공할 수 있다.
다양한 실시예들에 따르면, 계정체인에 수정 가능한 블록체인을 사용하여 계정체인을 보관하는데 필요한 저장 공간의 크기를 획기적으로 감소시킬 수 있다.
다양한 실시예들에 따르면, 수정 가능한 블록체인인 계정체인을 구성하기 위해 동형암호를 이용한 목표값을 설정하는 방법과 그것을 이용하여 사용자만이 동기화 요청을 할 수 있게 할 수 있다(상기 [수학식 14] 참조).
다양한 실시예들에 따르면, 메인체인, 계정체인, 사이드체인의 블록채굴에 대한 보상으로 암호 화폐를 생성하여 보상하게 하고, 해당 암호 화폐를 관리하기 위한 별도의 블록체인을 이용하며, 데이터베이스 시스템의 사용자들이 서비스 제공의 대가로 지불해야 하는 비용의 전부 또는 일부를 암호 화폐로 지불하게 하여 전체 시스템의 운영에 대한 보상체계를 구축할 수 있다.
다양한 실시예들에 따르면, 각 로컬 데이터베이스의 동기화 정확성을 메인체인과 계정체인을 이용하여 투명하게 확인할 수 있도록 할 수 있다.
다양한 실시예들에 따르면, 메인체인과 계정체인을 이용하여 동기화의 정확성을 투명하게 관리하여 다수의 데이터베이스 서비스 제공자들과 데이터스토리지 관리자들이 경쟁할 수 있는 생태계를 제공하는 한편, 여러 업체들이 연합으로 서비스를 제공할 수 있다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성 요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 어떤(예: 제 1) 구성 요소가 다른(예: 제 2) 구성 요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제 3 구성 요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
다양한 실시예들에 따르면, 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 통합 이전에 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (15)

  1. 고속 동기화 가능 탈중앙화 분산 데이터베이스를 구성하기 위한 방법에 있어서,
    P2P 네트워크에 참여하는 노드들을 기반으로, 메인체인(main-chain)을 구성하는 단계;
    상기 노드들의 사용자들과 관련된 계정들로 이루어지는 계정체인(account-chain)을 구성하는 단계;
    상기 메인체인을 기반으로, 복수 개의 세그먼트들로 이루어지는 적어도 하나의 사이드체인(side-chain)을 구성하는 단계; 및
    상기 세그먼트들의 시작과 끝을 상기 메인체인에 연결하여, 분산 데이터베이스를 구성하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서, 상기 분산 데이터베이스를 구성하는 단계는,
    상기 사이드체인이 상기 사용자들 중 어느 하나의 데이터에 대한 변경의 승인을 기반으로, 상기 분산 데이터베이스를 동기화하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 메인체인과 계정체인은 블록체인 형태로 구성되는 방법.
  4. 제 2 항에 있어서,
    상기 사용자들에 대한 데이터를 저장하기 위한 로컬 오프체인 데이터스토리지를 구성하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서, 상기 계정체인을 구성하는 단계 및 상기 로컬 오프체인 데이터스토리지를 구성하는 단계는,
    로컬 데이터베이스를 상기 계정체인 및 상기 로컬 오프체인 데이터스토리지로 구성하는 방법.
  6. 제 1 항에 있어서, 상기 사이드체인을 구성하는 방법은,
    상기 메인체인의 블록 해쉬값을 이용하여, 상기 사이드체인을 구성하는 단계를 포함하는 방법.
  7. 제 2 항에 있어서, 상기 분산 데이터베이스를 동기화하는 단계는,
    복수 개의 사이드체인들이 상기 승인을 병렬로 처리하여, 상기 분산 데이터베이스를 동기화하는 방법.
  8. 제 2 항에 있어서, 상기 분산 데이터베이스를 동기화하는 단계는,
    상기 사이드체인이 상기 승인을 기반으로 스마트 계약을 구성하는 단계; 및
    상기 스마트 계약이 상기 메인체인에 연결될 때, 상기 계정체인이 상기 사용자들 중 어느 하나의 계정을 변경하는 단계를 포함하는 방법.
  9. 고속 동기화 가능 탈중앙화 분산 데이터베이스를 구성하기 위한 시스템에 있어서,
    P2P 네트워크에 참여하고, 공동으로 분산 데이터베이스를 구성하여, 관리하는 노드들을 포함하고,
    상기 노드들은,
    상기 노드들을 기반으로, 메인체인을 구성하고,
    상기 노드들의 사용자들과 관련된 계정들로 이루어지는 계정체인을 구성하고,
    상기 메인체인을 기반으로, 복수 개의 세그먼트들로 이루어지는 적어도 하나의 사이드체인을 구성하고,
    상기 세그먼트들의 시작과 끝을 상기 메인체인에 연결하여, 분산 데이터베이스를 구성하는 시스템.
  10. 제 9 항에 있어서, 상기 노드들은,
    상기 사이드체인을 통해, 상기 로컬 오프체인 데이터스토리지에서의 상기 사용자들 중 어느 하나의 데이터에 대한 변경의 승인을 기반으로, 상기 분산 데이터베이스를 동기화하는 시스템.
  11. 제 10 항에 있어서, 상기 노드들은,
    상기 사용자들에 대한 데이터를 저장하기 위한 로컬 오프체인 데이터스토리지를 구성하는 시스템.
  12. 제 11 항에 있어서, 상기 노드들은,
    로컬 데이터베이스를 상기 계정 체인 및 상기 로컬 오프체인 데이터스토리지로 구성하는 시스템.
  13. 제 9 항에 있어서, 상기 노드들은,
    상기 메인체인의 블록 해쉬값을 이용하여, 상기 사이드체인을 구성하는 시스템.
  14. 제 10 항에 있어서, 상기 노드들은,
    복수 개의 사이드체인들을 통해, 상기 승인을 병렬로 처리하여, 상기 분산 데이터베이스를 동기화하는 시스템.
  15. 제 10 항에 있어서, 상기 노드들은,
    상기 사이드체인을 통해, 상기 승인을 기반으로 스마트 계약을 구성하고,
    상기 스마트 계약이 상기 메인체인에 연결될 때, 상기 계정체인에서의 상기 사용자들 중 어느 하나의 계정을 변경하는 시스템.
KR1020200014753A 2020-02-07 2020-02-07 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템 KR102349014B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200014753A KR102349014B1 (ko) 2020-02-07 2020-02-07 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200014753A KR102349014B1 (ko) 2020-02-07 2020-02-07 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20210100865A true KR20210100865A (ko) 2021-08-18
KR102349014B1 KR102349014B1 (ko) 2022-01-11

Family

ID=77464680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200014753A KR102349014B1 (ko) 2020-02-07 2020-02-07 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR102349014B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113923214A (zh) * 2021-08-30 2022-01-11 江苏地北网络工程有限公司 一种基于双层网络去中心化储存的区块链系统
US20230138816A1 (en) * 2021-11-01 2023-05-04 Binh Minh Nguyen System and method to reach consensus in a multi-chain iot environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
KR20190009958A (ko) * 2017-07-20 2019-01-30 주식회사 더블체인 확장형 블록체인 시스템 및 블록체인 확장방법
KR20190132047A (ko) * 2018-05-18 2019-11-27 주식회사 비즈모델라인 스마트 컨트랙트를 이용한 블록체인 기반 서비스 플랫폼 제공 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101701131B1 (ko) * 2016-04-28 2017-02-13 주식회사 라피 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템
KR20190009958A (ko) * 2017-07-20 2019-01-30 주식회사 더블체인 확장형 블록체인 시스템 및 블록체인 확장방법
KR20190132047A (ko) * 2018-05-18 2019-11-27 주식회사 비즈모델라인 스마트 컨트랙트를 이용한 블록체인 기반 서비스 플랫폼 제공 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OAS Blockchain Renaissance Project, WHITE PAPER version 2.2 (2018.09.15.) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113923214A (zh) * 2021-08-30 2022-01-11 江苏地北网络工程有限公司 一种基于双层网络去中心化储存的区块链系统
US20230138816A1 (en) * 2021-11-01 2023-05-04 Binh Minh Nguyen System and method to reach consensus in a multi-chain iot environment

Also Published As

Publication number Publication date
KR102349014B1 (ko) 2022-01-11

Similar Documents

Publication Publication Date Title
EP3669280B1 (en) Shared blockchain data storage
US11270308B2 (en) Shared blockchain data storage
EP3669281B1 (en) Shared blockchain data storage
US10892888B2 (en) System and method for information protection
AU2018322507B2 (en) System and method for information protection
KR102433504B1 (ko) 허가된 블록체인 네트워크를 위한 에러 정정 코드에 기초하는 블록체인 데이터 저장
EP3769499B1 (en) Indexing and recovering encoded blockchain data
CN104836862B (zh) 一种智能终端数据存储方法
EP3794770B1 (en) Shared blockchain data storage based on error correction code
EP3791538B1 (en) Shared blockchain data storage based on error correction code
Hao et al. Outsourced data integrity verification based on blockchain in untrusted environment
KR102349014B1 (ko) 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템
CN111033491A (zh) 基于纠错编码存储共享的区块链数据
Fu et al. Searchable encryption scheme for multiple cloud storage using double‐layer blockchain
AU2019321746A1 (en) Dynamic blockchain data storage based on error correction code
KR102181098B1 (ko) 블록 체인을 이용한 분산 데이터베이스 시스템 및 방법
Hwang et al. Efficient real-time auditing and proof of violation for cloud storage systems
AU2019101581A4 (en) System and method for information protection
US20200267133A1 (en) First communication device, second communication device, method, and computer program
JP7231909B2 (ja) 情報処理装置及びプログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant