KR102338756B1 - 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템 - Google Patents

블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템 Download PDF

Info

Publication number
KR102338756B1
KR102338756B1 KR1020200153628A KR20200153628A KR102338756B1 KR 102338756 B1 KR102338756 B1 KR 102338756B1 KR 1020200153628 A KR1020200153628 A KR 1020200153628A KR 20200153628 A KR20200153628 A KR 20200153628A KR 102338756 B1 KR102338756 B1 KR 102338756B1
Authority
KR
South Korea
Prior art keywords
data
block chain
data table
blockchain
shared data
Prior art date
Application number
KR1020200153628A
Other languages
English (en)
Inventor
김현진
김용곤
한동수
김용대
문수복
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020200153628A priority Critical patent/KR102338756B1/ko
Application granted granted Critical
Publication of KR102338756B1 publication Critical patent/KR102338756B1/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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템이 제공된다. 블록체인 네트워크의 시뮬레이션 방법은 블록체인 네트워크에 연결된 복수의 가상 노드를 생성하는 단계, 상기 블록체인 네트워크 상에서 수행되는 트랜잭션(transaction) 또는 상기 트랜잭션이 포함된 블록을 포함하는 블록체인 데이터를 저장하고 상기 복수의 가상 노드에 의해 공동으로 액세스되는 공유 데이터 테이블을 메모리 상에 할당하는 단계를 포함한다.

Description

블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템{THE METHOD FOR SIMULATING BLOCKCHAIN NETWORK SHARING BLOCK DATA AND THE SYSTEM USING THE METHOD}
본 발명은 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템에 관한 것으로, 보다 자세하게는 블록체인 네트워크 상에서 생성되는 블록체인 데이터를 저장하는 공유 데이터 테이블을 메모리에 저장하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템에 관한 것이다.
본 연구는 과학기술정보통신부 블록체인 에뮬레이션을 위한 모듈형 라이브러리 및 엔진 기술 개발사업의 연구비지원(과제번호 2020-0-00191)에 의해 수행되었다.
블록체인은 2008년 사토시 나카모토의 Bitcoin: A Peer-to-Peer Electronic Cash System에서 블록과 블록을 연결하는 방법에서 유래하였다. 블록체인은 다수의 네트워크 노드로 구성된 분산 네트워크 상에서 해쉬링크로 묶인 데이터를 공유하는 분산 데이터베이스를 총칭한다.
블록체인 구현체들은 과거 연구되오던 P2P 네트워크를 기반으로 분산 합의 과정을 수행하며, 따라서 BGP Hijacking, Eclipse Attack 등의 P2P 네트워크의 취약점을 이용한 공격이 연구되었다. 현재 많은 연구들이 특정 블록체인 구현체들에 대해서만 취약점 검증을 수행하며, 다양한 블록체인 구현체들의 성능 및 보안 문제를 검증할 수 있는 범용 블록체인 시뮬레이션 플랫폼을 이용한 검증 시스템은 아직 상용화되어 있지 않다.
일부 연구자가 시뮬레이션 및 에뮬레이션을 이용한 범용 블록체인 검증 플랫폼을 개발하기 위한 연구를 진행한 바 있다. 하지만, 실제 블록체인 구현체를 추상화한 모델을 사용하여 실제 블록체인 구현체를 이용한 성능 검증과의 차이가 존재하거나, 시뮬레이션 및 에뮬레이션의 성능상의 문제로 소규모 네트워크를 이용한 실험만을 수행하였다. 실제에 가까운 블록체인 네트워크 시뮬레이션을 수행하기 위해서는 수천 노드 수준의 가상 블록체인 네트워크를 구성해야 하며, 이를 시뮬레이션 할때에는 각 가상 노드를 병렬적으로 구동하는 것에 필요한 연산자원, 메모리, 디스크 공간의 한계로 인한 시뮬레이션 성능의 문제가 존재한다.
다수의 가상 블록체인 노드에서 동시에 발생하는 해시 연산 및 스마트 컨트랙트의 처리로 인하여 시뮬레이션 속도가 급감하게 되며, 각 가상 노드에 데이터가 전파되면서 발생하는 데이터의 복제로 인한 메모리 사용량이 네트워크의 크기에 비례하여 증가하게 된다. 범용 블록체인 검증 플랫폼이 물리 메모리 한계 이상의 가상 메모리를 사용하게 되면 메모리 공간의 일부가 디스크에 스왑아웃되며, 연속적인 스왑아웃으로 인한 시뮬레이션 성능 저하도 발생하게 된다.
따라서, 범용 블록체인 검증 플랫폼의 실제와 가까운 시뮬레이션을 위해서는 시뮬레이션의 노드 확장성이 확보되어야 하며, 시뮬레이션에서 가상 블록체인 노드가 증가할 때마다 추가적으로 소모되는 연산 및 메모리 자원 필요량을 개선할 수 있는 방법이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는, 블록체인 노드들이 블록체인 데이터를 저장할 수 있는 공간을 공유하여 데이터베이스를 나누어 저장함으로써 시뮬레이션 효율성을 높인 블록체인 검증 방법 및 이를 이용하는 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법은, 블록체인 네트워크에 연결된 복수의 가상 노드를 생성하는 단계, 및 상기 블록체인 네트워크 상에서 수행되는 트랜잭션(transaction) 또는 상기 트랜잭션이 포함된 블록을 포함하는 블록체인 데이터를 저장하고 상기 복수의 가상 노드에 의해 공동으로 액세스되는 공유 데이터 테이블을 메모리 상에 할당하는 단계를 포함한다.
본 발명의 몇몇 실시예에서, 상기 공유 데이터 테이블은 상기 공유 데이터 테이블에 저장될 블록체인 데이터의 해시값을 키값으로 하는 해시 테이블을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 블록체인 데이터는 상기 공유 데이터 테이블에 저장된 이후 상기 복수의 가상 노드 사이의 전파 과정에서 내용이 변경되지 않을 수 있다.
본 발명의 몇몇 실시예에서, 상기 복수의 가상 노드 중 어느 하나로부터 새로운 블록체인 데이터를 생성하여 상기 공유 데이터 테이블에 저장하는 단계를 더 포함하되, 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 저장하는 단계는, 상기 새로운 블록체인 데이터의 해시값을 생성하는 단계, 상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계. 상기 판단 결과에 따라 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 기록하는지 여부를 결정하는 단계를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 새로운 블록체인 데이터를 상기 공유 데이터 테이블에 기록하는지 여부를 결정하는 단계는, 상기 판단 결과, 상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 없는 경우 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 저장하고, 상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 있는 경우 해당 데이터의 참조 횟수를 1 증가시키는 단계를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 복수의 가상 노드 중 어느 하나로부터 다른 가상 노드로 블록체인 데이터를 전송하는 단계를 더 포함하되, 상기 블록체인 데이터를 전송하는 단계는, 전송될 블록체인 데이터의 해시값을 생성하는 단계, 상기 생성된 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계, 상기 판단 결과에 따라 상기 생성된 해시값을 포함한 데이터 패킷을 상기 다른 가상 노드로 전송하는지 여부를 결정하는 단계를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 다른 가상 노드가 상기 생성된 해시값을 수신하는 단계, 및 상기 공유 데이터 테이블로부터 상기 해시값을 키값으로 하는 데이터를 검색하여 상기 전송된 블록체인 데이터로 이용하는 단계를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 공유 데이터 테이블에 저장된 데이터를 삭제하는 단계를 더 포함하되, 삭제가 필요한 블록체인 데이터의 해시값을 상기 공유 데이터 테이블로부터 검색하는 단계, 상기 검색 결과 상기 공유 데이터 테이블의 참조 횟수를 감소시키고, 참조 횟수가 0인 경우 상기 공유 데이터 테이블로부터 상기 블록체인 데이터를 삭제하는 단계를 포함할 수 있다.
본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템은 블록체인 네트워크를 구성하는 복수의 가상 노드의 동작을 시뮬레이션하는 연산부, 및 상기 블록체인 네트워크 상에서 수행되는 트랜잭션 또는 상기 트랜잭션이 포함된 블록을 포함하는 블록체인 데이터를 저장하고 상기 복수의 가상 노드에 의해 공동으로 액세스되는 공유 데이터 테이블을 저장하는 메모리부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템은 데이터의 송신 및 수신 단계에서 해시값을 키값으로 하여 블록체인 데이터가 저장된 공유 데이터 테이블을 이용할 수 있다. 데이터 전송 단계에서 해시값을 포함한 데이터 패킷을 전송함에 따라 메모리부에 저장된 데이터를 읽어들이기 위한 부하가 감소되며, 데이터 수신 단계에서 해시값을 포함한 데이터 패킷만을 수신하고 해시값을 참조하여 공유 데이터 테이블로부터 데이터를 읽어들임에 따라 데이터 저장을 위한 메모리부 내 할당 영역의 크기를 감소시킬 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템을 설명하기 위한 블록도이다.
도 2는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템의 메모리에 할당되는 공유 데이터 테이블을 설명하기 위한 도면이다.
도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 새로운 블록체인 데이터 저장 단계를 설명하기 위한 순서도이다.
도 4는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 전송 단계를 설명하기 위한 순서도이다.
도 5는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 수신 단계를 설명하기 위한 순서도이다.
도 6은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 삭제 단계를 설명하기 위한 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 구성 요소가 다른 구성 요소와 "연결된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 구성 요소와 직접 연결 또는 커플링된 경우 또는 중간에 다른 구성 요소를 개재한 경우를 모두 포함한다. 반면, 하나의 구성 요소가 다른 구성 요소와 "직접 연결된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 구성 요소를 개재하지 않은 것을 나타낸다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 구성 요소들을 서술하기 위해서 사용되나, 이들 구성 요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성 요소를 다른 구성 요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성 요소는 본 발명의 기술적 사상 내에서 제2 구성 요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 실시예에서 사용되는 '부' 또는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '모듈'은 어떤 역할들을 수행한다. 그러나 '부' 또는 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소과, 함수들, 서브루틴들, 프로그램 코드의 세그먼트들, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.
도 1은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템(100)은 블록체인 네트워크를 구성하는 복수의 가상 노드(150) 및 복수의 가상 노드(150)에 의하여 공동으로 액세스되는 메모리부(200)를 포함할 수 있다.
블록체인 네트워크의 시뮬레이션 시스템(100)은 분권형 네트워크(decentralized network)에 연결된 가상 노드(150) 사이의 트랜잭션과, 블록체인의 저장, 관리 및 전파 등의 동작을 시뮬레이션함으로써 검증하는 시스템일 수 있다.
시뮬레이션 시스템(100)은 예를 들어, 예를 들어 적어도 하나의 CPU(Central Processing Unit), 및 이들이 접근하여 데이터를 읽고 쓸 수 있는 메모리의 집합을 포함하는 모듈일 수 있다. 시뮬레이션 시스템(100)은 예를 들어 개인용 컴퓨터(PC), 서버 컴퓨터, 워크 스테이션, 랩탑 컴퓨터 등의 다양한 컴퓨터 시스템을 포함할 수 있다.
복수의 가상 노드(150)들은 블록체인을 구성하는 블록의 집단을 구성하면서 블록체인 데이터를 생성, 저장, 전파 및 삭제할 수 있다.
본 발명의 시뮬레이션 시스템(100)에 의하여 구현되는 블록체인 네트워크는 퍼블릭 블록체인일 수 있으나 본 발명이 이에 제한되는 것은 아니다. 상기 블록체인 네트워크는 데이터 접근 및 트랜잭션 등의 측면에서 승인된 노드 만이 접근 가능한 프라이빗 블록체인을 포함할 수도 있다.
후술하는 것과 같이 복수의 가상 노드(150)는 블록체인 데이터가 저장된 메모리부(200)에 액세스할 수 있다. 구체적으로, 복수의 가상 노드(150)는 메모리부(200)의 블록체인 데이터가 저장될 수 있는 공유 데이터 테이블로 할당된 공간을 액세스할 수 있다.
여기서 복수의 가상 노드(150)가 메모리부(200)를 액세스하는 것은, 가상 노드(150)의 동작을 시뮬레이션하는 시뮬레이션 시스템(100)의 CPU와 같은 연산부가 메모리부(200)의 블록체인 데이터로 할당된 공간을 액세스하는 것으로 이해될 수 있다. 또한, 그 밖에 시뮬레이션 시스템(100) 내에서 수행 주체가 명확하게 표시되지 않은 경우 시뮬레이션 시스템(100)의 연산부 및 메모리부(200)에 의해 수행되는 경우로 이해하여야 할 것이다.
메모리부(200)는 예를 들어 DRAM (Dynamic RAM), SRAM (Static RAM) 등과 같은 휘발성 메모리와, 플래시 메모리, PRAM (Phasechange RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등의 비휘발성 메모리 또는 이들로 구성된 SSD(Solid State Disk) 또는 HDD(Hard Disk Drive) 등을 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다.
메모리부(200) 내에는 공유 데이터 테이블(도 2의 250)이 할당될 수 있다. 공유 데이터 테이블과 관련하여 도 2를 이용하여 더욱 자세하게 설명한다.
도 2는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템의 메모리에 할당되는 공유 데이터 테이블을 설명하기 위한 도면이다.
도 2를 참조하면, 메모리부(200)에는 복수의 가상 노드들(150)에 의해서 액세스될 수 있는 공유 데이터 테이블(250)이 할당될 수 있다.
공유 데이터 테이블(250)에 저장된 데이터는 키값과 키값에 매핑된 데이터로 구분될 수 있으며 키값은 데이터를 액세스하기 위한 인덱스로 기능할 수 있다. 키값은 예를 들어 블록체인 데이터를 입력받아 해시 함수를 통해 연산되어 생성된 해시값일 수 있다.
즉, 공유 데이터 테이블(250)은 복수의 블록체인 데이터(데이터1 ~ 3)와 블록체인 데이터를 액세스하기 위해 생성된 해시값(해시1~3)을 포함할 수 있다. 또한 뒤에서 설명하는 것과 같이 공유 데이터 테이블(250)은 저장된 블록체인 데이터들에 대한 가상 노드의 참조 횟수를 저장할 수도 있다.
공유 데이터 테이블(250)은 블록체인 시뮬레이션에서 사용되는 블록체인 데이터를 저장할 수 있다. 블록체인 데이터는 예를 들어 가상 노드들 간에 전송되는 블록 또는 트랜잭션 데이터를 포함할 수 있다.
공유 데이터 테이블(250)은 복수의 중 적어도 일부의 가상 노드들(150)에 의하여 공동으로 액세스될 수 있다. 즉, 복수의 가상 노드들(150)은 공유 데이터 테이블(250)에 저장된 특정 데이터에 대하여 접근이 가능한 가상 노드와 그렇지 않은 노드들을 포함할 수 있다. 따라서 공유 데이터 테이블(250)에 저장된 각각의 데이터는 복수의 가상 노드들(150) 중 접근 가능한 노드들의 정보를 포함할 수 있다.
다시 도 1을 참조하면, 복수의 가상 노드(150)들은 시뮬레이션 시스템(100)에서 구성하는 블록체인의 블록 정보를 모두 가지고 있는 풀 노드(full node)와, 블록헤더의 데이터만 보유한 라이트 노드(light node) 모두를 포함하도록 구성될 수 있다. 따라서 복수의 가상 노드(150)들이 액세스하는 공유 데이터 테이블(250) 또한 풀 노드와 라이트 노드 모두로부터 생성된 정보를 포함할 수 있다.
도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 새로운 블록체인 데이터 저장 단계를 설명하기 위한 순서도이다.
도 3을 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법은 가상 노드 중 어느 하나가 새로운 블록체인 데이터를 생성하는 단계(S110), 새로운 블록체인 데이터의 해시값을 생성하는 단계(S120), 해시값을 키값으로 하는 데이터가 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계(S130), 생성된 해시값을 키값으로 하여 공유 데이터 테이블에 새로운 블록체인 데이터를 저장하는 단계(S140) 및 공유 데이터 테이블에 저장된 해당 데이터의 참조 횟수를 1 증가시키는 단계(S150)를 포함할 수 있다.
본 명세서, 특히 상술한 블록체인 네트워크의 시뮬레이션 방법과 관련하여 블록체인 네트워크를 구성하는 가상 노드들 및 이와 관련된 구성 요소들의 동작은 시뮬레이션 시스템(100)에 의하여 수행되는 것으로 이해되어야 할 것이다. 구체적으로 각 가상 노드들(150)의 동작은 시뮬레이션 시스템(100)을 구성하는 연산부가, 검증의 대상으로 주어진 상황에서 명령어(예를 들어 opcode)를 제공받아 그에 대응하는 연산을 수행함으로써 시뮬레이션 시스템(100) 내에서 묘사되는 것일 수 있다.
먼저, 블록체인 네트워크에 포함된 복수의 가상 노드(150) 중 어느 하나가 새로운 블록체인 데이터를 생성하는 단계(S110)가 수행된다. 이는 복수의 가상 노드들 중 어느 하나가 메시지로 전송할 트랜잭션 데이터 또는 이를 포함하는 블록을 생성하는 과정이다.
트랜잭션 데이터는 예를 들어 데이터를 생성하는 가상 노드, 데이터를 수신하는 가상 노드 및 데이터의 내용을 포함하도록 구성될 수 있다.
블록 데이터는 예를 들어, 이전 블록의 해시값, 현재 블록의 해시 값 등을 포함하는 블록 헤더(block header)와, 트랜잭션 데이터를 포함하는 블록 바디(block body)를 포함할 수 있다.
이어서, 블록체인 데이터를 생성한 복수의 가상 노드(150)는 새롭게 생성된 블록체인 데이터의 해시값을 생성한다(S120). 블록체인 데이터의 해시값은 널리 알려진 알고리즘에 따라 구성된 해시 함수에 의하여 생성될 수 있으므로 이에 관한 자세한 설명은 생략한다.
블록체인 데이터를 생성한 가상 노드(150)는 생성한 데이터가 이미 공유 데이터 테이블(250)에 저장된 데이터인지 여부를 확인하기 위하여 새로운 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 저장되어 있는지 여부를 판단한다(S130).
블록체인 데이터를 생성한 가상 노드(150)는 공유 데이터 테이블(250)에 저장된 데이터의 해시값과 새로운 블록체인 데이터의 해시값을 비교하는 방식이나, 그 이외에 해시 테이블로부터 데이터를 검색하는 널리 알려진 알고리즘을 이용하여 공유 데이터 테이블(250)에 저장된 데이터를 검색할 수 있다.
본 발명의 몇몇 실시예에서, 상기 검색 과정은 블록체인 데이터를 생성한 가상 노드(150)에 의하여 수행되는 것으로 기술하였으나 본 발명이 이에 제한되는 것은 아니다. 가상 노드(150)가 메모리부(200)에 블록체인 데이터를 제공하면, 메모리부(200)에 포함된 연산 장치로부터 상기 검색 과정이 수행될 수도 있다.
검색 결과 생성된 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 이미 저장되어 있지 않은 데이터인 경우, 가상 노드(150)는 생성된 블록체인 데이터가 새로운 블록체인 데이터에 해당하는 것으로 보고 생성된 해시값을 키값으로 하여 공유 데이터 테이블(250)에 새로운 블록체인 데이터를 저장한다(S140). 가상 노드(150)는 공유 데이터 테이블(250)에 새롭게 저장된 데이터의 참조 횟수를 1로 설정할 수 있다(S150).
검색 결과 생성된 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 이미 저장되어 있는 데이터인 경우, 가상 노드(150)는 생성된 블록체인 데이터를 공유 데이터 테이블(250)에 저장하지 않고 공유 데이터 테이블(250) 내 해당 데이터의 참조 횟수를 1 증가시킬 수 있다(S150).
즉, 가상 노드(150)에 의하여 생성된 블록체인 데이터가 이전에 생성된 데이터와 동일하여 공유 데이터 테이블(250)에 저장되어 있는 경우, 블록체인 데이터를 새롭게 메모리부(200)에 저장할 필요 없이 해당 블록체인 데이터의 참조 횟수만을 증가시킴으로써 복수의 가상 노드(15) 중 어느 하나에 의하여 해당 데이터에 액세스가 있었다는 사실만을 기록하는 것이다. 이러한 동작을 통해 본 발명의 시뮬레이션 시스템(100)은 블록 및 트랜잭션 데이터를 저장하는 메모리 용량 및 이를 액세스하는데 필요한 대역을 감소시킬 수 있다. 또한 해당 블록체인 데이터의 참조 횟수를 유지함으로써 다른 노드 또는 동작에 의해 해당 블록체인 데이터의 삭제 또는 메모리 할당 해제를 방지할 수 있다.
본 발명의 몇몇 실시예에서, 공유 데이터 테이블(250)에 저장된 블록체인 데이터는 저장된 이후에 복수의 가상 노드(150) 사이의 전파 과정에서 그 내용이 변하지 않을 수 있다. 즉, 블록체인 데이터의 전파 과정에서 공유 데이터 테이블(250) 내 데이터 참조 횟수만이 증가하거나 감소될 수 있다.
도 4는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 전송 단계를 설명하기 위한 순서도이다.
도 4를 참조하면, 본 발명의 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 전송 단계는 가상 노드 중 어느 하나가 전송될 블록체인 데이터를 결정하는 단계(S210), 전송될 블록체인 데이터의 해시값을 생성하는 단계(S220), 해시값을 키값으로 하는 데이터가 공유 데이터 테이블에 저장되어 있는지 판단하는 단계(S230), 공유 데이터 테이블에 저장되어 있는 경우 해당 데이터의 참조 횟수를 1 증가시키는 단계(S240) 및 해당 데이터의 해시값을 포함하는 데이터 패킷을 다른 가상 노드로 전송하는 단계(S250)를 포함할 수 있다.
블록체인을 구성하는 가상 노드(150) 중 어느 하나는 전송될 블록체인 데이터를 결정하고(S210), 전송될 블록체인 데이터의 해시값을 생성(S220)할 수 있다. 이는 복수의 가상 노드들 중 어느 하나가 메시지로 전송할 트랜잭션 데이터 또는 이를 포함하는 블록을 결정하고 전송이 결정된 블록체인 데이터가 이미 공유 데이터 테이블(250)에 저장된 데이터인지 여부를 확인하는 과정이다.
가상 노드(150)에 의해 블록체인 데이터의 전송이 결정되고 이의 해시값을 생성하는 과정은 앞서 도 3을 이용하여 설명한 블록체인 데이터의 생성 및 해시값 생성 과정(S110, S120)과 유사하므로 자세한 설명은 생략한다.
이어서, 블록체인 데이터를 전송하는 가상 노드(150)는 전송할 데이터가 이미 공유 데이터 테이블(250)에 저장된 데이터인지 여부를 확인하기 위하여 전송될 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 저장되어 있는지 여부를 판단한다(S230).
검색 결과 전송될 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 이미 저장되어 있는 데이터인 경우, 가상 노드(150)는 정상적으로 메모리부(200)에 저장된 블록체인 데이터를 전송하는 것으로 판단하여 블록체인 데이터의 전송 과정을 수행한다(S240, S250).
반면에 전송될 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 저장되지 않은 경우, 전송이 개시되지 않고 오류가 발생될 수 있다(S245). 즉, 이 경우 가상 노드(150)가 공유 데이터 테이블(250)에 저장되어 있지 않은 블록체인 데이터를 전송하는 것에 해당하므로, 블록체인 데이터는 다른 노드로 전송되지 않는다.
블록체인 데이터를 전송하는 가상 노드(150)는 공유 데이터 테이블(250)에 저장된 해당 데이터의 참조 횟수를 1 증가시킴으로써(S240) 해당 블록체인 데이터가 액세스되었음을 표시한다.
이어서 가상 노드는 전송하고자 하는 블록체인 데이터의 해시값을 포함하는 데이터 패킷을 다른 가상 노드로 전송할 수 있다(S250).
즉, 블록체인 데이터를 전송하고자 하는 가상 노드(150)는 데이터 전송 시 블록체인 데이터 전체를 전송하는 것이 아닌 해당 데이터가 저장된 공유 데이터 테이블(250)의 인덱스값인 해시값이 전송되도록 데이터 패킷을 구성할 수 있다. 즉, 블록체인 데이터 전송에 있어 전송 대상인 데이터를 전부 읽어들이는 것 대신에, 데이터가 전송된 공유 데이터 테이블(250) 내의 인덱스로서의 해시값을 전송하는 것이다. 이를 통해 블록체인 데이터 전송에 필요한 연산 자원을 감소시킬 수 있다.
한편, 가상 노드가 전송하는 데이터 패킷을 구성하는 데이터는 상술한 해시값을 제외하고 데이터 패킷의 길이를 일반적인 데이터 패킷의 길이와 동일하게 유지시키기 위하여 필요한 더미 데이터와 해당 데이터 패킷의 길이 및 이에 종속된 실제 패킷의 정보만을 포함할 수 있다. 따라서 전송되는 블록체인 데이터를 포함하는 데이터 패킷의 거의 대부분은 더미 패킷으로 구성될 수 있다.
도 5는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 수신 단계를 설명하기 위한 순서도이다.
도 5를 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 수신 단계는 데이터 패킷의 수신 단계(S310), 데이터 패킷에 포함된 해시값을 확인하는 단계(S320), 공유 데이터 테이블에서 수신된 해시값을 키값으로 하는 데이터를 검색하는 단계(S330), 탐색된 데이터를 블록체인 데이터로 이용하는 단계(S340)를 포함할 수 있다.
데이터를 전송받는 가상 노드는 다른 가상 노드로부터 전송된 데이터 패킷을 수신할 수 있다(S310). 상기 데이터 패킷은 전송 대상인 블록체인 데이터의 해시값을 포함할 수 있다. 또한 수신된 데이터 패킷은, 전송된 데이터 패킷의 길이를 일반적인 데이터 패킷의 길이와 동일하게 유지시키기 위하여 필요한 더미 데이터와 해당 데이터 패킷의 길이 및 이에 종속된 실제 패킷의 정보만을 포함할 수 있다.
데이터를 전송받은 가상 노드는 데이터 패킷에 포함된 해시값을 확인할 수 있다(S320), 이 과정에서 데이터를 수신한 가상 노드는 수신을 완료한 데이터 패킷의 길이가 해당 데이터 패킷의 길이, 즉 원본의 길이와 동일한지 여부를 판단함으로써 전체 데이터 패킷의 수신 완료 여부를 판단할 수 있다.
이어서 공유 데이터 테이블(250)에서 수신된 해시값을 키값으로 하는 데이터를 검색하는 단계(S330)가 수행된다. 도 4를 이용하여 설명한 블록체인 데이터 송신 과정에서 설명한 것과 같이 블록체인 데이터를 공유 데이터 테이블(250)로부터 읽어들여 그 해시값을 데이터 패킷에 담아 전송하기 때문에, 수신 과정에서는 수신된 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 존재하는 것임을 상정할 수 있다.
마지막으로 데이터를 수신한 가상 노드(150)는 공유 데이터 테이블(250)로부터 탐색된 데이터를 블록체인 데이터로 이용할 수 있다(S340). 즉, 가상 노드(150)는 전송받은 블록체인 데이터에 대하여 메모리부(200)에 새로운 저장 영역을 할당받을 필요 없이 수신된 블록체인 데이터의 공유 데이터 테이블(250) 내에서의 위치를 참조하여 자신의 블록체인 데이터로 사용할 수 있다. 이를 통해 메모리부(200) 내 데이터 할당 영역에 필요한 공간을 감소시킬 수 있다.
정리하면, 본 발명의 블록체인 네트워크의 시뮬레이션 시스템(100)은 데이터의 송신 및 수신 단계에서 해시값을 키값으로 하여 블록체인 데이터가 저장된 공유 데이터 테이블(250)을 이용할 수 있다. 상술한 것과 같이 데이터 전송 단계에서 해시값을 포함한 데이터 패킷을 전송함에 따라 메모리부(200)에 저장된 데이터를 읽어들이기 위한 부하가 감소되며, 데이터 수신 단계에서 해시값을 포함한 데이터 패킷만을 수신하고 해시값을 참조하여 공유 데이터 테이블(250)로부터 데이터를 읽어들임에 따라 데이터 저장을 위한 메모리부(200) 내 할당 영역의 크기를 감소시킬 수 있다.
이러한 효과는 시뮬레이션 대상이 되는 가상 노드(150)의 수가 증가할수록 더욱 커질 수 있다. 즉, 수천 수만 개의 노드로 구성된 블록체인 시스템의 동작을 검증하기 위해 시뮬레이션을 수행하는 경우, 분산형으로 데이터를 저장하는 실제 블록체인과는 달리 시뮬레이션 시스템의 메모리 용량 및 처리 능력은 한정되어 있기 때문에 본 발명의 시뮬레이션 방법 및 시스템을 이용함에 따라 메모리 자원 절약 및 시뮬레이션 성능 향상의 효과가 더욱 높아질 수 있다.
도 6은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 삭제 단계를 설명하기 위한 순서도이다.
도 6을 참조하면, 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 삭제 단계는, 삭제될 블록체인 데이터를 결정하는 단계(S410), 삭제될 블록체인 데이터의 해시값을 생성하는 단계(S420), 해시값을 키값으로 하는 데이터가 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계(S430), 공유 데이터 테이블에 저장된 삭제될 데이터의 참조 횟수를 1 감소시키는 단계(S440) 및 해당 데이터의 참조 횟수가 0이 되는지 판단하여(S450) 공유 데이터 테이블에서 해당 데이터를 제거하고 메모리 할당을 해지하는 단계(S460)를 포함할 수 있다.
복수의 가상 노드(15) 등에 의해 삭제될 블록체인 데이터가 결정하고(S410), 그 데이터의 해시값이 얻어질 수 있다(S420). 메모리부(200)에 저장된 블록체인 데이터 중 더 이상 액세스될 필요가 없다고 판단되는 데이터에 대해 삭제 결정이 이루어질 수 있다.
삭제될 블록체인 데이터의 해시값을 이용하여 공유 데이터 테이블(250)에 해당 데이터가 저장되어 있는지 여부가 판단된다(S430).
검색 결과 삭제될 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 이미 저장되어 있는 데이터인 경우, 가상 노드(150)는 정상적으로 메모리부(200)에 저장된 블록체인 데이터를 삭제하는 것으로 판단하여 블록체인 데이터의 삭제 과정을 수행한다(S440, S450).
반면에 삭제될 데이터의 해시값을 키값으로 하는 데이터가 공유 데이터 테이블(250)에 저장되지 않은 경우, 삭제가 개시되지 않고 오류가 발생될 수 있다(S245). 즉, 이 경우 가상 노드(150)가 공유 데이터 테이블(250)에 저장되어 있지 않은 블록체인 데이터를 삭제하는 것에 해당하므로, 블록체인 데이터는 다른 노드로 전송되지 않는다.
공유 데이터 테이블(250)에 저장된 데이터의 삭제가 결정된 경우 해당 데이터의 참조 횟수를 1 감소시키고(S440), 해당 데이터의 참조 횟수가 0이 되었는지를 판단(S450)한다.
앞서 블록체인 데이터의 생성 및 전송 과정에서 설명한 것과 같이, 블록체인 데이터가 생성되거나 다른 가상 노드로 전송될 때 공유 데이터 테이블(250)의 해당 데이터의 참조 횟수를 1 증가시키는 동작이 수행된 바 있다. 이와 같이 복수의 가상 노드(150)에 의해 액세스되는 블록체인 데이터의 참조 횟수가 함께 관리되는데, 참조 횟수가 0인 경우 해당 블록체인 데이터를 이용하는 가상 노드가 없는 것으로 간주되고 메모리부(200) 내 저장 영역의 할당이 해제될 수 있다(460). 이와 같이 삭제될 필요가 있는 블록체인 데이터에 대하여 메모리부(200) 내 저장 영역이 해제됨에 따라 불필요한 저장 영역의 점유를 감소시킬 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 블록체인 네트워크 시뮬레이션 시스템
150: 복수의 가상 노드 200: 메모리부
250: 공유 데이터 테이블

Claims (17)

  1. 블록체인 네트워크에 연결된 복수의 가상 노드를 생성하는 단계; 및
    상기 블록체인 네트워크 상에서 수행되는 트랜잭션(transaction) 또는 상기 트랜잭션이 포함된 블록을 포함하는 블록체인 데이터를 저장하고 상기 복수의 가상 노드에 의해 공동으로 액세스되는 공유 데이터 테이블을 메모리 상에 할당하는 단계를 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  2. 제1 항에 있어서,
    상기 공유 데이터 테이블은 상기 공유 데이터 테이블에 저장될 블록체인 데이터의 해시값을 키값으로 하는 해시 테이블을 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  3. 제1 항에 있어서,
    상기 블록체인 데이터는 상기 공유 데이터 테이블에 저장된 이후 상기 복수의 가상 노드 사이의 전파 과정에서 내용이 변경되지 않는,
    블록체인 네트워크의 시뮬레이션 방법.
  4. 제1항에 있어서,
    상기 복수의 가상 노드 중 어느 하나로부터 새로운 블록체인 데이터를 생성하여 상기 공유 데이터 테이블에 저장하는 단계를 더 포함하되,
    상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 저장하는 단계는,
    상기 새로운 블록체인 데이터의 해시값을 생성하는 단계;
    상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계;
    상기 판단 결과에 따라 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 기록하는지 여부를 결정하는 단계;를 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  5. 제4항에 있어서,
    상기 새로운 블록체인 데이터를 상기 공유 데이터 테이블에 기록하는지 여부를 결정하는 단계는,
    상기 판단 결과, 상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 없는 경우 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 저장하고,
    상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 있는 경우 해당 데이터의 참조 횟수를 1 증가시키는 단계를 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  6. 제1항에 있어서,
    상기 복수의 가상 노드 중 어느 하나로부터 다른 가상 노드로 블록체인 데이터를 전송하는 단계를 더 포함하되,
    상기 블록체인 데이터를 전송하는 단계는,
    전송될 블록체인 데이터의 해시값을 생성하는 단계;
    상기 생성된 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하는 단계;
    상기 판단 결과에 따라 상기 생성된 해시값을 포함한 데이터 패킷을 상기 다른 가상 노드로 전송하는지 여부를 결정하는 단계;를 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  7. 제 6항에 있어서,
    상기 다른 가상 노드가 상기 생성된 해시값을 수신하는 단계; 및
    상기 공유 데이터 테이블로부터 상기 해시값을 키값으로 하는 데이터를 검색하여 상기 전송된 블록체인 데이터로 이용하는 단계를 더 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  8. 제1항에 있어서,
    상기 공유 데이터 테이블에 저장된 데이터를 삭제하는 단계를 더 포함하되,
    삭제가 필요한 블록체인 데이터의 해시값을 상기 공유 데이터 테이블로부터 검색하는 단계;
    상기 검색 결과 상기 공유 데이터 테이블의 참조 횟수를 감소시키고, 참조 횟수가 0인 경우 상기 공유 데이터 테이블로부터 상기 블록체인 데이터를 삭제하는 단계를 포함하는,
    블록체인 네트워크의 시뮬레이션 방법.
  9. 블록체인 네트워크를 구성하는 복수의 가상 노드의 동작을 시뮬레이션하는 연산부; 및
    상기 블록체인 네트워크 상에서 수행되는 트랜잭션 또는 상기 트랜잭션이 포함된 블록을 포함하는 블록체인 데이터를 저장하고 상기 복수의 가상 노드에 의해 공동으로 액세스되는 공유 데이터 테이블을 저장하는 메모리부를 포함하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  10. 제 9항에 있어서,
    상기 공유 데이터 테이블은 상기 공유 데이터 테이블에 저장될 블록체인 데이터의 해시값을 키값으로 하는 해시 테이블을 포함하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  11. 제 10항에 있어서,
    상기 블록체인 데이터는 상기 공유 데이터 테이블에 저장된 이후 상기 복수의 가상 노드 사이의 전파 과정에서 내용이 변경되지 않는,
    블록체인 네트워크의 시뮬레이션 시스템.
  12. 제 9항에 있어서,
    상기 복수의 가상 노드 중 어느 하나가 새로운 블록체인 데이터를 생성하여 상기 공유 데이터 테이블에 저장하되,
    상기 새로운 블록체인 데이터를 공유 데이터 테이블에 저장하는 것은,
    상기 새로운 블록체인 데이터의 해시값을 생성하고,
    상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하고,
    상기 판단 결과에 따라 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 기록하는지 여부를 결정하는 것을 포함하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  13. 제 12항에 있어서,
    상기 새로운 블록체인 데이터를 상기 공유 데이터 테이블에 기록하는지 여부를 결정하는 것은,
    상기 판단 결과, 상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 없는 경우 상기 공유 데이터 테이블에 상기 새로운 블록체인 데이터를 저장하고,
    상기 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 있는 경우 해당 데이터의 참조 횟수를 1 증가시키는 것을 포함하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  14. 제 9항에 있어서,
    상기 복수의 가상 노드 중 어느 하나가 다른 가상 노드로 블록체인 데이터를 전송하되,
    상기 블록체인 데이터를 전송하는 것은,
    전송될 블록체인 데이터의 해시값을 생성하고,
    상기 생성된 해시값을 키값으로 하는 데이터가 상기 공유 데이터 테이블에 저장되어 있는지 여부를 판단하고,
    상기 판단 결과에 따라 상기 생성된 해시값을 포함한 데이터 패킷을 상기 다른 가상 노드로 전송하는지 여부를 결정하는 것을 포함하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  15. 제 14항에 있어서,
    상기 다른 가상 노드가 상기 생성된 해시값을 수신하고,
    상기 해시값을 수신한 가상 노드는 공유 데이터 테이블로부터 상기 해시값을 키값으로 하는 데이터를 검색하여 상기 전송될 블록체인 데이터로 갈음하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  16. 제 9항에 있어서,
    상기 공유 데이터 테이블에 저장된 데이터를 삭제하되,
    삭제가 필요한 블록체인 데이터의 해시값을 상기 공유 데이터 테이블로부터 검색하고,
    상기 검색 결과 상기 공유 데이터 테이블의 참조 횟수를 감소시키고, 참조 횟수가 0인 경우 상기 공유 데이터 테이블로부터 상기 블록체인 데이터를 삭제하는,
    블록체인 네트워크의 시뮬레이션 시스템.
  17. 제 1항 내지 제 8항 중 어느 한 항의 방법을 실행시키기 위하여 컴퓨터로 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020200153628A 2020-11-17 2020-11-17 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템 KR102338756B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200153628A KR102338756B1 (ko) 2020-11-17 2020-11-17 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200153628A KR102338756B1 (ko) 2020-11-17 2020-11-17 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템

Publications (1)

Publication Number Publication Date
KR102338756B1 true KR102338756B1 (ko) 2021-12-14

Family

ID=78902596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200153628A KR102338756B1 (ko) 2020-11-17 2020-11-17 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템

Country Status (1)

Country Link
KR (1) KR102338756B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190079324A (ko) * 2017-12-27 2019-07-05 에이치닥테크놀로지 주식회사 한국영업소 블록체인 시스템을 이용한 데이터베이스의 무결성 강화 방법 및 시스템
KR20200067115A (ko) * 2018-11-30 2020-06-11 알리바바 그룹 홀딩 리미티드 블록체인 네트워크들을 위한 테스트 플랫폼
KR20200101490A (ko) * 2019-01-29 2020-08-28 (주)티비스톰 블록체인으로 관리되는 데이터의 거래 방법 및 그 플랫폼

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190079324A (ko) * 2017-12-27 2019-07-05 에이치닥테크놀로지 주식회사 한국영업소 블록체인 시스템을 이용한 데이터베이스의 무결성 강화 방법 및 시스템
KR20200067115A (ko) * 2018-11-30 2020-06-11 알리바바 그룹 홀딩 리미티드 블록체인 네트워크들을 위한 테스트 플랫폼
KR20200101490A (ko) * 2019-01-29 2020-08-28 (주)티비스톰 블록체인으로 관리되는 데이터의 거래 방법 및 그 플랫폼

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
the SSO authentication" of utilizing the laver water. block chain the data sharing system design and implementation. Han Yang University engineering graduate school master's degree paper (2020. 02.) *
김용수. 블록체인을 활용한 SSO 인증과 데이터 공유 시스템 설계 및 구현. 한양대학교 공학대학원 석사학위논문 (2020.02.) 1부.*

Similar Documents

Publication Publication Date Title
US7447839B2 (en) System for a distributed column chunk data store
CN106990915B (zh) 一种基于存储介质类型和加权配额的存储资源管理方法
US8229968B2 (en) Data caching for distributed execution computing
US7457935B2 (en) Method for a distributed column chunk data store
CN111338766A (zh) 事务处理方法、装置、计算机设备及存储介质
CN106446263B (zh) 一种多媒体文件云存储平台及使用该云存储平台去冗的方法
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
Fu et al. A study on the optimization of blockchain hashing algorithm based on PRCA
Dev et al. Har+: Archive and metadata distribution! why not both?
KR102471966B1 (ko) 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
US10685134B1 (en) Database proxy service
Zhang et al. Leveraging glocality for fast failure recovery in distributed RAM storage
KR102338756B1 (ko) 블록 데이터를 공유하는 블록체인 네트워크의 시뮬레이션 방법 및 이를 이용하는 시스템
WO2024021417A1 (zh) 数据账户创建方法及装置
KR20230083479A (ko) 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼
Sanchez-Artigas Toward efficient data access privacy in the cloud
Al-Saleh et al. Radix path: A reduced bucket size oram for secure cloud storage
US20230169036A1 (en) System and method for deleting parent snapshots of running points of storage objects using extent ownership values
KR102416336B1 (ko) 블록체인을 관리하기 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체
US11132401B1 (en) Distributed hash table based logging service
Gu et al. Practically realizable efficient data allocation and replication strategies for distributed databases with buffer constraints
CN113867626A (zh) 一种存储系统性能优化方法、系统、设备和存储介质
Ali et al. Revisiting the metadata architecture of parallel file systems
Huang et al. Resource provisioning with QoS in cloud storage
Liu et al. Smash: Flexible, fast, and resource-efficient placement and lookup of distributed storage

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