KR20230083479A - A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same - Google Patents

A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same Download PDF

Info

Publication number
KR20230083479A
KR20230083479A KR1020210171501A KR20210171501A KR20230083479A KR 20230083479 A KR20230083479 A KR 20230083479A KR 1020210171501 A KR1020210171501 A KR 1020210171501A KR 20210171501 A KR20210171501 A KR 20210171501A KR 20230083479 A KR20230083479 A KR 20230083479A
Authority
KR
South Korea
Prior art keywords
data
data segment
virtual nodes
blockchain
storage space
Prior art date
Application number
KR1020210171501A
Other languages
Korean (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 KR1020210171501A priority Critical patent/KR20230083479A/en
Publication of KR20230083479A publication Critical patent/KR20230083479A/en

Links

Images

Classifications

    • 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/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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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/188Virtual file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼이 제공된다. 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 고유된 데이터 액세스 방법은, 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 상기 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계, 상기 복수의 가상 노드 중 어느 하나로부터 상기 데이터 세그먼트의 액세스 요청을 제공받는 단계. 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계를 포함한다.A data access method shared between a plurality of virtual nodes in a blockchain simulation platform and a blockchain simulation platform using the same are provided. A data access method unique among a plurality of virtual nodes in a blockchain simulation platform is a file accessed by a plurality of virtual nodes created in the blockchain simulation platform and a hash value of a data segment constituting the file as a key value. and providing a hash table storing reference information of a physical storage space shared among the plurality of virtual nodes, and receiving an access request for the data segment from one of the plurality of virtual nodes. and determining whether the data segment includes reference information of a physical storage space shared among the plurality of virtual nodes, and accessing the data segment based on whether the data segment is referenced.

Description

블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼{A METHOD FOR ACCESSING DATA SHARED AMONG PLURALITY OF VIRTUAL NODES IN BLOCKCHAIN SIMULATION PLATFORM AND SYSTEM USING THE SAME}Data access method shared between multiple virtual nodes in a blockchain simulation platform and blockchain simulation platform using the same

본 발명은 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼에 관한 것으로, 더욱 구체적으로는 다양한 블록체인 구현체들을 검증하는 블록체인 시뮬레이션 플랫폼 내에서 복수의 가상 노드가 읽고 쓸 수 있도록 공유된 데이터를 효과적으로 공유함으로써 시뮬레이션 플랫폼 구동에 필요한 스토리지 사용량을 감소시키고, 잦은 스토리지 I/O 발생으로 인한 처리 성능을 개선할 수 있는 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼에 관한 것이다.The present invention relates to a data access method shared between a plurality of virtual nodes in a blockchain simulation platform and a blockchain simulation platform using the same, and more specifically, to a plurality of virtual nodes in a blockchain simulation platform that verifies various blockchain implementations. A data access method that can reduce the storage usage required to drive the simulation platform by effectively sharing shared data so that nodes can read and write, and improve processing performance due to frequent storage I/O, and a blockchain simulation platform that uses it it's about

블록체인은 2008년 사토시 나카모토의 Bitcoin: A Peer-to-Peer Electronic Cash System에서 블록과 블록을 연결하는 방법에서 유래하였다. 블록체인은 다수의 네트워크 노드로 구성된 분산 네트워크 상에서 해쉬링크로 묶인 데이터를 공유하는 분산 데이터베이스를 총칭한다.Blockchain originated from Satoshi Nakamoto's Bitcoin: A Peer-to-Peer Electronic Cash System in 2008, where blocks are connected to each other. Blockchain is a generic term for a distributed database that shares data bound by hash links on a distributed network composed of multiple network nodes.

블록체인 구현체들은 과거 연구되오던 P2P 네트워크를 기반으로 분산 합의 과정을 수행하며, 따라서 BGP Hijacking, Eclipse Attack 등의 P2P 네트워크의 취약점을 이용한 공격이 연구되었다. 현재 많은 연구들이 특정 블록체인 구현체들에 대해서만 취약점 검증을 수행하며, 다양한 블록체인 구현체들의 성능 및 보안 문제를 검증할 수 있는 범용 블록체인 시뮬레이션 플랫폼을 이용한 검증 시스템은 아직 상용화되어 있지 않다.Blockchain implementations perform a distributed agreement process based on P2P networks that have been studied in the past, and therefore attacks using vulnerabilities of P2P networks such as BGP Hijacking and Eclipse Attack have been studied. Currently, many studies perform vulnerability verification only for specific blockchain implementations, and a verification system using a general-purpose blockchain simulation platform that can verify performance and security issues of various blockchain implementations has not yet been commercialized.

일부 연구자가 시뮬레이션 및 에뮬레이션을 이용한 범용 블록체인 검증 플랫폼을 개발하기 위한 연구를 진행한 바 있다. 하지만, 실제 블록체인 구현체를 추상화한 모델을 사용하여 실제 블록체인 구현체를 이용한 성능 검증과의 차이가 존재하거나, 시뮬레이션 및 에뮬레이션의 성능상의 문제로 소규모 네트워크를 이용한 실험만을 수행하였다. 실제에 가까운 블록체인 네트워크 시뮬레이션을 수행하기 위해서는 수천 노드 수준의 가상 블록체인 네트워크를 구성해야 하며, 이를 시뮬레이션 할때에는 각 가상 노드를 병렬적으로 구동하는 것에 필요한 연산자원, 메모리, 디스크 공간의 한계로 인한 시뮬레이션 성능의 문제가 존재한다. Some researchers have conducted research to develop a general-purpose blockchain verification platform using simulation and emulation. However, there is a difference between performance verification using an actual blockchain implementation using a model abstracted from the actual blockchain implementation, or only experiments using small networks were performed due to performance problems in simulation and emulation. In order to simulate a blockchain network close to reality, it is necessary to configure a virtual blockchain network with thousands of nodes. There are problems with simulation performance.

다수의 가상 블록체인 노드에서 동시에 발생하는 해시 연산 및 스마트 컨트랙트의 처리로 인하여 시뮬레이션 속도가 급감하게 되며, 각 가상 노드에 데이터가 전파되면서 발생하는 데이터의 복제로 인한 메모리 사용량이 네트워크의 크기에 비례하여 증가하게 된다. 범용 블록체인 검증 플랫폼이 물리 메모리 한계 이상의 가상 메모리를 사용하게 되면 메모리 공간의 일부가 디스크에 스왑아웃되며, 연속적인 스왑아웃으로 인한 시뮬레이션 성능 저하도 발생하게 된다.The simulation speed is drastically reduced due to the processing of hash calculations and smart contracts that occur simultaneously in multiple virtual blockchain nodes, and memory usage due to data replication that occurs as data is propagated to each virtual node is proportional to the size of the network. will increase When a general-purpose blockchain verification platform uses virtual memory beyond the physical memory limit, part of the memory space is swapped out to disk, and simulation performance degradation also occurs due to continuous swapping out.

또한, 대부분의 블록체인 어플리케이션은 네트워크 상에서 생성된 블록체인 데이터를 보관하기 위하여 스토리지 I/O(Input/Output)를 이용하여 데이터를 스토리지 공간에 저장하는데, 이러한 어플리케이션을 그대로 사용한 시뮬레이션을 수행하는 경우 각각의 가상 노드에서 발생하는 스토리지 I/O로 인한 시뮬레이션 성능 저하가 발생하며, 동일한 데이터에 대한 스토리지 사용량이 네트워크의 크기에 비례하여 증가하게 된다.In addition, most blockchain applications store data in a storage space using storage I/O (Input/Output) to store blockchain data created on the network. Simulation performance degrades due to storage I/O occurring in virtual nodes of the virtual node, and storage usage for the same data increases in proportion to the size of the network.

따라서, 범용 블록체인 검증 플랫폼의 실제와 가까운 시뮬레이션을 위해서는 시뮬레이션의 노드 확장성이 확보되어야 하며, 시뮬레이션에서 가상 블록체인 노드가 증가할 때마다 추가적으로 소모되는 연산 및 메모리 자원 필요량과 스토리지 자원 사용량을 개선할 수 있는 방법이 필요하다. Therefore, for a simulation that is close to reality of a universal blockchain verification platform, the node scalability of the simulation must be secured, and the computational and memory resource requirements and storage resource usage that are additionally consumed whenever the number of virtual blockchain nodes increases in the simulation can be improved. You need a way to

본 발명이 해결하고자 하는 기술적 과제는, 블록체인 시뮬레이션 플랫폼 내에서 가상의 노드가 사용하는 블록체인 데이터를 저장하기 위한 물리 스토리지 자원의 사용량을 절감하고 스토리지 가상화로 스토리지 I/O에 의하여 발생하는 성능 저하를 개선하기 위한 데이터 액세스 방법 및 이를 사용하는 시스템을 제공하는 것이다.The technical problem to be solved by the present invention is to reduce the usage of physical storage resources for storing blockchain data used by virtual nodes in a blockchain simulation platform and to reduce performance caused by storage I/O through storage virtualization. It is to provide a data access method and a system using the same to improve.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

상술한 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 고유된 데이터 액세스 방법은, 상기 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 상기 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계, 상기 복수의 가상 노드 중 어느 하나로부터 상기 데이터 세그먼트의 액세스 요청을 제공받는 단계, 및 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계를 포함한다.In order to solve the above-described technical problem, a data access method unique between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention is accessed by a plurality of virtual nodes created in the blockchain simulation platform. providing a hash table for storing reference information of a physical storage space shared between the plurality of virtual nodes, using a hash value of a file and a data segment constituting the file as a key value, wherein any one of the plurality of virtual nodes receiving an access request for the data segment from one source; determining whether the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes; Including the step of accessing.

본 발명의 몇몇 실시예에서, 상기 블록체인 시뮬레이션 플랫폼은 현재 가상 노드에 의한 액세스되는 데이터 세그먼트의 정보 및 상기 데이터 세그먼트의 액세스 위치에 관한 오프셋 위치 정보를 포함하는 가상 파일 디스크립터를 저장할 수 있다.In some embodiments of the present invention, the blockchain simulation platform may store a virtual file descriptor including information on a data segment currently accessed by a virtual node and offset location information about an access location of the data segment.

본 발명의 몇몇 실시예에서, 상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 읽기 요청을 포함하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는, 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우 상기 참조 정보에 따라 상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽고, 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하지 않는 경우 메모리 상에 위치한 상기 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽는 것을 포함할 수 있다.In some embodiments of the present invention, the access request for the data segment includes a read request for the data segment, and the step of accessing the data segment based on whether or not the reference is made includes the data segment being the plurality of virtual nodes. reads a data segment corresponding to the offset position information from among data segments constituting a file stored in the physical storage space according to the reference information, when the data segment includes the reference information of a physical storage space shared between and reading a data segment corresponding to the offset location information among the data segments located in a memory when it does not include reference information of a physical storage space shared between virtual nodes of the virtual node.

본 발명의 몇몇 실시예에서, 상기 참조 여부에 기초하여 상기 물리 스토리지 공간 또는 메모리 상에 위치한 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽은 이후에, 읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 더 포함할 수 있다.In some embodiments of the present invention, after reading a data segment corresponding to the offset position information among data segments located in the physical storage space or memory based on whether or not the reference is made, the offset position information of the read completed data segment The method may further include modifying the virtual file descriptor to correspond.

본 발명의 몇몇 실시예에서, 상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 쓰기 요청을 포함하고, 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우에 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는, 상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트를 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사하는 단계; 상기 메모리 상에 위치한 데이터 세그먼트의 상기 물리 스토리지 공간에 대한 참조를 해제하는 단계, 상기 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사된 데이터 세그먼트를 병합하는 단계; 상기 병합된 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 부분에 쓰기를 수행하는 단계; 쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계; 및 읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 포함할 수 있다.In some embodiments of the present invention, when the access request of the data segment includes a write request for the data segment, and the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes. Accessing the data segment based on whether or not the reference is made may include copying a data segment constituting a file stored in the physical storage space to a data area of the data segment located on a memory; releasing a reference to the physical storage space of a data segment located on the memory, merging the copied data segment into a data area of the data segment located on the memory; writing a portion corresponding to the offset location information among the merged data segments; dividing the written data segment into a plurality of data segments and sharing them with the plurality of virtual nodes; and modifying the virtual file descriptor to correspond to offset position information of the data segment for which reading has been completed.

본 발명의 몇몇 실시예에서, 상기 쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계는, 상기 쓰기가 완료된 데이터 세그먼트의 데이터 형식을 검사하는 단계; 상기 데이터 형식의 검사 결과에 따라 상기 쓰기가 완료된 데이터 세그먼트를 분리하는 단계; 상기 분리된 데이터 세그먼트의 해시값을 계산하는 단계; 상기 분리된 데이터 세그먼트의 해시값이 상기 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블에 존재하는지 여부를 판단하는 단계; 및 기 해시 테이블에 존재하는 해시값을 갖는 분리된 데이터 세그먼트의 경우 상기 메모리 상에 위치한 상기 데이터 세그먼트에 대응하는 영역의 데이터를 삭제하고 상기 해시값에 의해 참조되는 물리 스토리지 공간의 참조 정보를 기록하고, 상기 해시 테이블에 존재하지 해시값을 갖는 분리된 데이터 세그먼트의 경우 새로운 물리 스토리지 공간에 분리된 데이터 세그먼트의 데이터를 복사하고 복사된 영역의 참조 정보를 기록하는 단계를 포함할 수 있다.In some embodiments of the present invention, dividing the written data segment into a plurality of data segments and sharing the data segment with the plurality of virtual nodes may include: checking a data format of the written data segment; separating the written data segment according to a result of checking the data format; calculating a hash value of the separated data segment; determining whether a hash value of the separated data segment exists in a hash table storing reference information of a physical storage space shared among the plurality of virtual nodes; and in the case of a separated data segment having a hash value existing in the hash table, deleting data in an area corresponding to the data segment located on the memory and recording reference information of a physical storage space referred to by the hash value. , in the case of a separated data segment having a hash value that does not exist in the hash table, copying data of the separated data segment to a new physical storage space and recording reference information of the copied area.

본 발명의 몇몇 실시예에서, 상기 파일을 구성하는 복수의 데이터 세그먼트는 상기 가상 노드 각각으로부터 제공받은 데이터를 포함할 수 있다.In some embodiments of the present invention, a plurality of data segments constituting the file may include data provided from each of the virtual nodes.

본 발명의 다른 실시예에 따른 블록체인 시뮬레이션 플랫폼은, 프로세서; 및 상기 프로세서에 연결된 메모리를 포함하는 블록체인 시뮬레이션 플랫폼에 있어서, 상기 메모리는, 실행 시에 상기 프로세서가, 상기 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 상기 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계; 상기 복수의 가상 노드 중 어느 하나로부터 상기 데이터 세그먼트의 액세스 요청을 제공받는 단계; 및 상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계를 실행하도록 하는 명령어를 저장한다.A blockchain simulation platform according to another embodiment of the present invention includes a processor; and a memory connected to the processor, wherein the memory, when executed, causes the processor to store files accessed by a plurality of virtual nodes created in the blockchain simulation platform and the files. providing a hash table for storing reference information of a physical storage space shared among the plurality of virtual nodes by using hash values of constituting data segments as key values; receiving an access request for the data segment from one of the plurality of virtual nodes; and determining whether the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes, and accessing the data segment based on the reference information.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Details of other embodiments are included in the detailed description and drawings.

본 발명의 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법 및 이를 이용하는 블록체인 시뮬레이션 플랫폼은 블록체인 데이터의 송신 및 수신 단계에서 다수의 가상 노드 사이에 공유되는 데이터 세그먼트를 물리 스토리지 공간에 저장하면서, 이들을 읽거나 쓸 때 발생하는 스토리지 I/O로 인한 시뮬레이션 성능 저하를 저감할 수 있다.A data access method shared between a plurality of virtual nodes in a blockchain simulation platform and a blockchain simulation platform using the same according to an embodiment of the present invention are data segments shared between a plurality of virtual nodes in the transmission and reception stages of blockchain data. While storing them in the physical storage space, it is possible to reduce simulation performance deterioration due to storage I/O that occurs when reading or writing them.

또한, 본 발명의 블록체인 시뮬레이션 플랫폼은 해시값을 키값으로 하여 블록체인 데이터가 저장된 공유 데이터 테이블을 이용할 수 있다. 데이터 전송 단계에서 해시값을 포함한 데이터 패킷을 전송함에 따라 메모리부에 저장된 데이터를 읽어들이기 위한 부하가 감소되며, 데이터 수신 단계에서 해시값을 포함한 데이터 패킷만을 수신하고 해시값을 참조하여 공유 데이터 테이블로부터 데이터를 읽어들임에 따라 데이터 저장을 위한 메모리부 내 할당 영역의 크기를 감소시킬 수 있다.In addition, the blockchain simulation platform of the present invention may use a shared data table in which blockchain data is stored using a hash value as a key value. As the data packet including the hash value is transmitted in the data transmission step, the load for reading the data stored in the memory unit is reduced, and in the data reception step, only the data packet including the hash value is received and the hash value is referred to from the shared data table. As data is read, the size of an allocation area in the memory unit for storing data may be reduced.

본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description of the claims.

도 1은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템을 설명하기 위한 블록도이다.
도 2는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템의 메모리에 할당되는 공유 데이터 테이블을 설명하기 위한 도면이다.
도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 새로운 블록체인 데이터 저장 단계를 설명하기 위한 순서도이다.
도 4는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 전송 단계를 설명하기 위한 순서도이다.
도 5는 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 수신 단계를 설명하기 위한 순서도이다.
도 6은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 방법의 블록체인 데이터 삭제 단계를 설명하기 위한 순서도이다.
1 is a block diagram for explaining a simulation system of a blockchain network according to some embodiments of the present invention.
2 is a diagram for explaining a shared data table allocated to a memory of a simulation system of a blockchain network according to some embodiments of the present invention.
3 is a flowchart for explaining a new blockchain data storage step of a method for simulating a blockchain network according to some embodiments of the present invention.
4 is a flowchart for explaining a blockchain data transmission step of a method for simulating a blockchain network according to some embodiments of the present invention.
5 is a flowchart for explaining a block chain data receiving step of a method for simulating a block chain network according to some embodiments of the present invention.
6 is a flowchart illustrating a block chain data deletion step of a method for simulating a block chain network according to some embodiments of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and methods of achieving them, will become clear with reference to the detailed description of the following embodiments taken in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but will be implemented in various different forms, only these embodiments make the disclosure of the present invention complete, and common knowledge in the art to which the present invention belongs. It is provided to fully inform the holder of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numbers designate like elements throughout the specification.

하나의 구성 요소가 다른 구성 요소와 "연결된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 구성 요소와 직접 연결 또는 커플링된 경우 또는 중간에 다른 구성 요소를 개재한 경우를 모두 포함한다. 반면, 하나의 구성 요소가 다른 구성 요소와 "직접 연결된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 구성 요소를 개재하지 않은 것을 나타낸다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다. A component is said to be "connected to" or "coupled to" another component when it is directly connected or coupled to the other component or through another component in between. include all cases. On the other hand, when one component is referred to as “directly connected to” or “directly coupled to” another component, it indicates that another component is not intervened. “And/or” includes each and every combination of one or more of the recited items.

본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.Terminology used herein is for describing the embodiments and is not intended to limit the present invention. In this specification, singular forms also include plural forms unless specifically stated otherwise in a phrase. As used herein, "comprises" and/or "comprising" means that a stated component, step, operation, and/or element is present in the presence of one or more other components, steps, operations, and/or elements. or do not rule out additions.

비록 제1, 제2 등이 다양한 구성 요소들을 서술하기 위해서 사용되나, 이들 구성 요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성 요소를 다른 구성 요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성 요소는 본 발명의 기술적 사상 내에서 제2 구성 요소 일 수도 있음은 물론이다.Although first, second, etc. are used to describe various constituent elements, these constituent elements are not limited by these terms, of course. These terms are only used to distinguish one component from another. Accordingly, it goes without saying that the first component mentioned below may also be the second component within the technical spirit of the present invention.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms (including technical and scientific terms) used in this specification may be used in a meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in commonly used dictionaries are not interpreted ideally or excessively unless explicitly specifically defined.

본 실시예에서 사용되는 '부' 또는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '모듈'은 어떤 역할들을 수행한다. 그러나 '부' 또는 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소과, 함수들, 서브루틴들, 프로그램 코드의 세그먼트들, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.The term 'unit' or 'module' used in this embodiment means software or a hardware component such as FPGA or ASIC, and the 'unit' or 'module' performs certain roles. However, 'unit' or 'module' is not limited to software or hardware. A 'unit' or 'module' may be configured to reside in an addressable storage medium and may be configured to reproduce one or more processors. Thus, as an example, 'unit' or 'module' refers to software components, object-oriented software components, functions, subroutines, segments of program code, microcode, circuits, data, databases, data structures, It can include tables, arrays, and variables. Functions provided within components and 'units' or 'modules' may be combined into smaller numbers of components and 'units' or 'modules', or may be combined into additional components and 'units' or 'modules'. can be further separated.

도 1은 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼의 구조를 설명하기 위한 도면이다.1 is a diagram for explaining the structure of a blockchain simulation platform according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼(100)은 블록체인 네트워크를 구성하는 복수의 가상 노드(150) 및 복수의 가상 노드(150)에 의하여 공동으로 액세스되는 메모리부(200) 및 스토리지부(300)를 포함할 수 있다.Referring to FIG. 1, a blockchain simulation platform 100 according to an embodiment of the present invention includes a plurality of virtual nodes 150 constituting a blockchain network and a memory jointly accessed by the plurality of virtual nodes 150. It may include a unit 200 and a storage unit 300 .

블록체인 시뮬레이션 플랫폼(100)은 분권형 네트워크(decentralized network)에 연결된 가상 노드(150) 사이의 트랜잭션과, 블록체인의 저장, 관리 및 전파 등의 동작을 시뮬레이션함으로써 검증하는 시스템일 수 있다.The blockchain simulation platform 100 may be a system that verifies operations such as transactions between virtual nodes 150 connected to a decentralized network and storage, management, and propagation of a blockchain by simulating operations.

블록체인 시뮬레이션 플랫폼(100)은 예를 들어, 예를 들어 적어도 하나의 CPU(Central Processing Unit), 및 이들이 접근하여 데이터를 읽고 쓸 수 있는 메모리의 집합을 포함하는 모듈일 수 있다. 블록체인 시뮬레이션 플랫폼(100)은 예를 들어 개인용 컴퓨터(PC), 서버 컴퓨터, 워크 스테이션, 랩탑 컴퓨터 등의 다양한 컴퓨터 시스템을 포함할 수 있다.The blockchain simulation platform 100 may be, for example, a module including at least one central processing unit (CPU) and a set of memories that can access and read and write data. The blockchain simulation platform 100 may include various computer systems such as, for example, a personal computer (PC), a server computer, a workstation, and a laptop computer.

복수의 가상 노드(150)들은 블록체인을 구성하는 블록의 집단을 구성하면서 블록체인 데이터를 생성, 저장, 전파 및 삭제할 수 있다.The plurality of virtual nodes 150 can create, store, propagate, and delete blockchain data while constituting a group of blocks constituting the blockchain.

본 발명의 블록체인 시뮬레이션 플랫폼(100)에 의하여 가상으로 구현되는 블록체인 네트워크는 퍼블릭 블록체인일 수 있으나 본 발명이 이에 제한되는 것은 아니다. 상기 블록체인 네트워크는 데이터 접근 및 트랜잭션 등의 측면에서 승인된 노드 만이 접근 가능한 프라이빗 블록체인을 포함할 수도 있다.A blockchain network virtually implemented by the blockchain simulation platform 100 of the present invention may be a public blockchain, but the present invention is not limited thereto. The blockchain network may include a private blockchain accessible only to approved nodes in terms of data access and transactions.

후술하는 것과 같이 복수의 가상 노드(150)는 블록체인 데이터가 저장된 메모리부(200)와 스토리지부(300)에 액세스할 수 있다. 구체적으로, 복수의 가상 노드(150)는 메모리부(200)에 저장된 파일과, 파일을 구성하는 데이터 세그먼트에 액세스할 수 있다. As will be described later, the plurality of virtual nodes 150 can access the memory unit 200 and the storage unit 300 in which blockchain data is stored. Specifically, the plurality of virtual nodes 150 may access files stored in the memory unit 200 and data segments constituting the files.

도 2는 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼에 저장되는 파일 및 데이터 세그먼트의 구성을 설명하기 위한 도면이다.2 is a diagram for explaining the configuration of files and data segments stored in a blockchain simulation platform according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼(100)이 저장하는 파일은 복수의 데이터 세그먼트로 구성될 수 있다. 본 명세서 '파일'이라 함은 블록체인 시뮬레이션 플랫폼(100)에 의하여 생성된 가상 파일에 관한 정보를 포함하는 가상 파일 디스크립터(descriptor) 구조체를 의미할 수 있다. Referring to FIG. 2 , a file stored by the blockchain simulation platform 100 according to an embodiment of the present invention may consist of a plurality of data segments. In this specification, 'file' may mean a virtual file descriptor structure including information about a virtual file generated by the blockchain simulation platform 100.

가상 파일 디스크립터 구조체는 하나의 가상 파일에 해당하는 복수의 데이터 세그먼트에 대한 정보를 포함하는 한편, 복수의 데이터 세그먼트 중 액세스의 대상이 되는 데이터 세그먼트의 정보를 포함할 수 있다. '액세스의 대상이 되는 데이터 세그먼트'는 어플리케이션으로부터 파일의 읽기 또는 쓰기 요청을 제공받았을 때 파일에 포함된 복수의 데이터 세그먼트 어느 데이터 세그먼트부터 읽거나 쓰기를 수행하는지를 가리키는 것이다.The virtual file descriptor structure may include information on a plurality of data segments corresponding to one virtual file, and information on a data segment to be accessed among the plurality of data segments. 'Data segment to be accessed' indicates from which data segment a plurality of data segments included in a file is read or written when a file read or write request is received from an application.

블록체인 시뮬레이션 플랫폼(100)에서는 가상 파일 디스크립터 구조체를 액세스하는 시스템 콜(system call)을 이용하여 파일 및 파일을 구성하는 복수의 데이터 세그먼트를 읽거나 쓸 수 있다.In the blockchain simulation platform 100, a file and a plurality of data segments constituting the file can be read or written using a system call that accesses the virtual file descriptor structure.

또한, 가상 파일 디스크립터 구조체는 파일에 포함된 복수의 데이터 세그먼트에 액세스하기 위한 오프셋 위치 정보를 포함할 수 있다. 블록체인 시뮬레이션 플랫폼(100)은 오프셋 위치 정보를 이용하여 액세스의 대상이 되는 데이터 세그먼트 가운데 어떠한 지점부터 읽기 도는 쓰기를 수행하는지 여부를 결정할 수 있다. 하나의 데이터 세그먼트의 읽기 및 쓰기가 완료되면 오프셋 위치 정보는 0으로 초기화될 수 있으며, 어플리케이션으로부터 제공된 읽기 또는 쓰기 요청에 대응한 데이터의 읽기 및 쓰기가 완료되면 현재 오프셋 위치 정보가 파일(가상 파일 디스크립터 구조체)에 저장될 수 있다.Also, the virtual file descriptor structure may include offset position information for accessing a plurality of data segments included in a file. The blockchain simulation platform 100 may determine whether to perform reading or writing from any point among the data segments to be accessed using the offset location information. When the reading and writing of one data segment is completed, the offset position information can be initialized to 0, and when the reading and writing of data corresponding to the read or write request provided from the application is completed, the current offset position information is changed to a file (virtual file descriptor structure) can be stored.

파일을 구성하는 복수의 데이터 세그먼트는 하나의 공유 가능한 데이터 단위에 대한 정보를 포함할 수 있다. 본 명세서에서 '데이터 세그먼트'는 블록체인 시뮬레이션 플랫폼(100)에 의하여 액세스될 수 있는 데이터를 저장하기 위해 메모리부(200) 내부에 할당된 데이터 영역에 관한 정보를 포함하는 데이터 세그먼트 구조체를 의미할 수 있다.A plurality of data segments constituting a file may include information about one sharable data unit. In this specification, 'data segment' may refer to a data segment structure including information about a data area allocated inside the memory unit 200 to store data that can be accessed by the blockchain simulation platform 100. there is.

각각의 데이터 세그먼트는 예를 들어, 블록체인 네트워크를 구성하는 가상 노드 각각으로부터 제공받은 데이터를 포함할 수 있다. 예를 들어 도 2의 데이터 세그먼트 1 내지 6은 복수의 가상 노드(150) 사이의 임의의 트랜잭션에 대하여, 가상 노드1 내지 6으로부터 컨펌(confirm)한 데이터로 구성될 수 있다.Each data segment may include, for example, data provided from each virtual node constituting the blockchain network. For example, data segments 1 to 6 of FIG. 2 may include data confirmed by virtual nodes 1 to 6 regarding an arbitrary transaction between a plurality of virtual nodes 150 .

다만, 복수의 데이터 세그먼트는 복수의 가상 노드 사이에서 공유될 수 있는지 여부에 따라 메모리부(200) 내부에 할당된 데이터 영역에 데이터가 저장될 수 있는지 여부가 결정될 수 있다. However, whether or not data can be stored in a data area allocated inside the memory unit 200 may be determined according to whether a plurality of data segments can be shared among a plurality of virtual nodes.

예를 들어, 임의의 데이터 세그먼트가 복수의 가상 노드(150) 사이에서 공유될 수 있는 경우, 데이터 세그먼트에 포함된 데이터 영역에는 실제 데이터 대신에 스토리지부(300) 내부의 물리 스토리지 공간의 참조 정보만이 저장될 수 있다. 이와는 달리, 임의의 데이터 세그먼트가 복수의 가상 노드(150) 사이에서 공유되지 않는 경우, 데이터 세그먼트에 포함된 데이터 영역에는 스토리지부(300) 내부의 물리 스토리지 공간의 참조 정보 대신 실제 데이터가 저장되거나 메모리부(200) 내부에 할당된 다른 영역의 참조 정보가 저장될 수 있다.For example, when an arbitrary data segment can be shared among a plurality of virtual nodes 150, only reference information of the physical storage space inside the storage unit 300 is included in the data area included in the data segment instead of actual data. this can be stored. In contrast, when an arbitrary data segment is not shared among a plurality of virtual nodes 150, actual data is stored in the data area included in the data segment instead of reference information of the physical storage space inside the storage unit 300 or memory Reference information of another area allocated inside the unit 200 may be stored.

예를 들어 도 2에 도시된 데이트 세그먼트 1 내지 6 가운데 데이터 세그먼트 1 내지 4는 복수의 가상 노드 사이에서 공유되고 데이터 세그먼트 5, 6은 복수의 가상 노드 사이에서 공유되지 않을 수 있다. 이 경우 데이터 세그먼트 1 내지 4는 메모리부(200)에 할당된 데이터 영역에 스토리지부(300) 내부의 물리 스토리지 공간에 대한 참조 정보를 포함하고, 데이터 세그먼트 5, 6은 메모리부(200)에 할당된 데이터 영역에 실제 데이터를 포함할 수 있다.For example, among data segments 1 to 6 shown in FIG. 2 , data segments 1 to 4 may be shared among a plurality of virtual nodes, and data segments 5 and 6 may not be shared among a plurality of virtual nodes. In this case, data segments 1 to 4 include reference information about the physical storage space inside the storage unit 300 in the data area allocated to the memory unit 200, and data segments 5 and 6 are allocated to the memory unit 200. Actual data can be included in the data area.

후술하는 것과 같이, 블록체인 시뮬레이션 플랫폼(100)은 복수의 데이터 세그먼트를 하나로 병합하거나, 하나의 데이터 세그먼트를 복수의 데이터 세그먼트로 분리할 수 있다. 블록체인 시뮬레이션 플랫폼(100)은 데이터 세그먼트에 대하여 스토리지부(300) 내부의 물리 스토리지 공간에 대한 참조 정보를 포함시킴으로써 하나의 데이터 세그먼트가 복수의 가상 노드 사이에서 공유 대상으로 할지 여부를 결정할 수 있다.As will be described later, the blockchain simulation platform 100 may merge a plurality of data segments into one or separate one data segment into a plurality of data segments. The blockchain simulation platform 100 may determine whether one data segment is to be shared among a plurality of virtual nodes by including reference information about a physical storage space inside the storage unit 300 with respect to the data segment.

다시 도 1을 참조하면, 블록체인 시뮬레이션 플랫폼(100)은 메모리부(200) 및 스토리지부(300)를 포함할 수 있다.Referring back to FIG. 1 , the blockchain simulation platform 100 may include a memory unit 200 and a storage unit 300.

메모리부(200)는 복수의 데이터 세그먼트로 구성된 가상 파일 디스크립터 구조체, 즉 파일을 저장할 수 있다. 파일을 구성하는 복수의 데이터 세그먼트에는 복수의 가상 노드(150) 사이에 공유되는지 여부에 따라 데이터 세그먼트에 할당된 데이터 영역에 실제 데이터가 저장될 수 있다.The memory unit 200 may store a virtual file descriptor structure composed of a plurality of data segments, that is, a file. Actual data may be stored in a data area allocated to a plurality of data segments constituting a file, depending on whether they are shared among a plurality of virtual nodes 150 .

복수의 가상 노드(150)에 의하여 액세스될 수 있는 데이터 이외에, 블록체인 시뮬레이션 플랫폼(100)에 실행되는 프로그램 코드, 어플리케이션 코드 등이 메모리부(200) 내에 일시적 또는 비일시적으로 저장될 수 있다.In addition to data accessible by the plurality of virtual nodes 150 , program codes and application codes executed in the blockchain simulation platform 100 may be temporarily or non-temporarily stored in the memory unit 200 .

스토리지부(300)는 복수의 가상 노드(150)에 의하여 공유되는 데이터 세그먼트들의 실제 데이터 저장을 위해 할당된 물리 스토리지 공간을 포함할 수 있다. 메모리부(200)와 스토리지부(300) 모두 데이터를 저장할 수 있으며, 메모리부(200)는 저장 용량이 스토리지부(300)와 비교할 때 작은 대신 데이터의 액세스 요청에 대한 응답 속도 및 데이터의 전송 속도가 스토리지부(300)와 비교하여 빠를 수 있다. 따라서 스토리지부(300)에 저장된 데이터가 액세스하기 위한 스토리지 I/O는 메모리부(200)의 액세스 동작보다 블록체인 시뮬레이션 플랫폼(100)에 큰 부하를 발생시킬 수 있다.The storage unit 300 may include a physical storage space allocated for storing actual data of data segments shared by the plurality of virtual nodes 150 . Both the memory unit 200 and the storage unit 300 can store data, and the memory unit 200 has a smaller storage capacity than the storage unit 300, but responds to data access requests and transmits data. may be faster than that of the storage unit 300 . Therefore, storage I/O for accessing data stored in the storage unit 300 may generate a greater load on the blockchain simulation platform 100 than an access operation of the memory unit 200 .

한편, 복수의 가상 노드(150)가 메모리부(200) 및 스토리지부(300)를 액세스하는 것은, 가상 노드(150)의 동작을 시뮬레이션하는 시뮬레이션 플랫폼(100)의 CPU가 메모리부(200) 및 스토리지부(300)의 블록체인 데이터로 할당된 공간을 액세스하는 것으로 이해될 수 있다. 또한, 그 밖에 시뮬레이션 플랫폼(100) 내에서 수행 주체가 명확하게 표시되지 않은 경우 시뮬레이션 플랫폼(100)의 연산부 및 메모리부(200) 및 스토리지부(300)에 의해 수행되는 경우로 이해하여야 할 것이다.Meanwhile, when the plurality of virtual nodes 150 access the memory unit 200 and the storage unit 300, the CPU of the simulation platform 100 simulating the operation of the virtual node 150 It can be understood as accessing a space allocated to blockchain data of the storage unit 300 . In addition, if the subject of execution is not clearly indicated within the simulation platform 100, it should be understood that it is performed by the calculation unit, the memory unit 200, and the storage unit 300 of the simulation platform 100.

메모리부(200) 내에는 공유 데이터 테이블(도 3의 250)이 할당될 수 있다. 공유 데이터 테이블과 관련하여 도 3을 이용하여 더욱 자세하게 설명한다.A shared data table ( 250 in FIG. 3 ) may be allocated in the memory unit 200 . The shared data table will be described in more detail with reference to FIG. 3 .

도 3은 본 발명의 몇몇 실시예에 따른 블록체인 네트워크의 시뮬레이션 시스템의 메모리에 할당되는 공유 데이터 테이블을 설명하기 위한 도면이다.3 is a diagram for explaining a shared data table allocated to a memory of a simulation system of a blockchain network according to some embodiments of the present invention.

도 3을 참조하면, 메모리부(200)에는 복수의 가상 노드들(150)에 의해서 액세스될 수 있는 공유 데이터 테이블(250)이 할당될 수 있다.Referring to FIG. 3 , a shared data table 250 that can be accessed by a plurality of virtual nodes 150 may be allocated to the memory unit 200 .

공유 데이터 테이블(250)에 저장된 데이터는 키값과 키값에 매핑된 데이터 세그먼트로 구분될 수 있으며 키값은 데이터 세그먼트를 액세스하기 위한 인덱스로 기능할 수 있다. 키값은 예를 들어 데이터 세그먼트를 입력받아 해시 함수를 통해 연산되어 생성된 해시값일 수 있다. Data stored in the shared data table 250 may be divided into key values and data segments mapped to the key values, and the key values may function as an index for accessing the data segments. The key value may be, for example, a hash value generated by receiving a data segment and calculating it through a hash function.

즉, 공유 데이터 테이블(250)은 복수의 데이터 세그먼트(데이터1 ~ 3)와 데이터 세그먼트를 액세스하기 위해 생성된 해시값(해시1~3)을 포함할 수 있다. 또한 공유 데이터 테이블(250)은 저장된 데이터 세그먼트들에 대한 가상 노드의 참조 횟수를 저장할 수도 있다.That is, the shared data table 250 may include a plurality of data segments (Data 1 to 3) and hash values (Hash 1 to 3) generated to access the data segments. Also, the shared data table 250 may store reference counts of virtual nodes for stored data segments.

공유 데이터 테이블(250)은 블록체인 시뮬레이션 플랫폼(100)에서 사용되는 데이터 세그먼트를 저장할 수 있다. 데이터 세그먼트는 예를 들어 가상 노드들 간에 전송되는 블록 또는 트랜잭션 데이터를 포함할 수 있다.The shared data table 250 may store data segments used in the blockchain simulation platform 100. A data segment may include, for example, block or transactional data transmitted between virtual nodes.

공유 데이터 테이블(250)은 복수의 노드 중 적어도 일부의 가상 노드들(150)에 의하여 공동으로 액세스될 수 있다. 즉, 복수의 가상 노드들(150)은 공유 데이터 테이블(250)에 저장된 특정 데이터에 대하여 접근이 가능한 가상 노드와 그렇지 않은 노드들을 포함할 수 있다. 따라서 공유 데이터 테이블(250)에 저장된 각각의 데이터는 복수의 가상 노드들(150) 중 접근 가능한 노드들의 정보를 포함할 수 있다.The shared data table 250 may be jointly accessed by at least some virtual nodes 150 among a plurality of nodes. That is, the plurality of virtual nodes 150 may include virtual nodes accessible to specific data stored in the shared data table 250 and nodes not. Accordingly, each piece of data stored in the shared data table 250 may include information on accessible nodes among the plurality of virtual nodes 150 .

도 4는 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법을 설명하기 위한 순서도이다.4 is a flowchart illustrating a data access method shared between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention.

도 4를 참조하면, 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법은 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계(S110), 복수의 가상 노드 중 어느 하나로부터 데이터 세그먼트의 액세스 요청을 제공받는 단계(S120), 데이터 세그먼트가 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하는 단계(S130), 참조 여부에 기초하여 데이터 세그먼트를 액세스하는 단계(S140)를 포함할 수 있다. 이들의 각 단계를 도 5 내지 7의 구체적인 동작과 관련하여 설명한다.Referring to FIG. 4, a data access method shared between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention includes files accessed by a plurality of virtual nodes created in the blockchain simulation platform; Providing a hash table for storing reference information of a physical storage space shared between a plurality of virtual nodes using hash values of data segments constituting a file as a key value (S110), data segment from any one of the plurality of virtual nodes Receiving an access request of (S120), determining whether the data segment includes reference information of a physical storage space shared between a plurality of virtual nodes (S130), accessing the data segment based on whether or not the reference Step S140 may be included. Each of these steps will be described in relation to specific operations of FIGS. 5 to 7 .

도 5는 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터를 읽는 방법을 설명하기 위한 순서도이다. 도 5의 각 과정에 앞서, 블록체인 시뮬레이션 플랫폼(100) 내에서 생성된 복수의 가상 노드(150)에 의해 액세스되는 파일과, 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블이 생성되어 메모리부(200)에 저장되어 있는 것을 전제로 한다.5 is a flowchart illustrating a method of reading data shared between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention. Prior to each process of FIG. 5, a file accessed by a plurality of virtual nodes 150 generated in the blockchain simulation platform 100 and a hash value of a data segment constituting the file are used as a key value, and a plurality of virtual nodes It is assumed that a hash table for storing reference information of a physical storage space shared between the devices is generated and stored in the memory unit 200 .

도 5를 참조하면, 복수의 가상 노드(150) 중 어느 하나에 의해 실행되는 어플리케이션이 파일, 즉 가상 파일 디스크립터 구조체가 참조하는 데이터 세그먼트를 읽기의 대상으로 사용한다(S201). 파일에는 복수의 데이터 세그먼트 중 어느 데이터 세그먼트로부터 읽거나 쓰기를 수행하는지의 정보가 포함될 수 있으며, 해당 데이터 세그먼트의 어떠한 부분부터 읽거나 쓰기를 수행하는지와 관련된 오프셋 위치 정보가 포함될 수 있다.Referring to FIG. 5 , an application executed by any one of a plurality of virtual nodes 150 uses a file, that is, a data segment referred to by a virtual file descriptor structure, as a read target (S201). The file may include information on which data segment from among a plurality of data segments to read or write from, and may include offset position information related to which part of the corresponding data segment to read or write from.

가상 노드에 의해 실행되는 어플리케이션은 파일에 포함된 복수의 데이터 세그먼트 중 어떠한 데이터 세그먼트로부터 읽기를 수행하는지 여부를 확인하고, 오프셋 위치 정보에 기초하여 해당 데이터 세그먼트 중 어느 부분부터 읽기를 수행할 지 여부를 결정할 수 있다.The application executed by the virtual node checks which data segment from among a plurality of data segments included in the file is to be read, and determines which part of the corresponding data segment to read from based on the offset position information. can decide

이어서, 읽기 대상인 데이터 세그먼트에 물리 스토리지 공간의 참조 정보가 포함되어 있는지 여부가 판단된다(S202). 해당 데이터 세그먼트가 스토리지부(300)의 물리 스토리지 공간을 참조하지 않는 경우, 데이터 세그먼트의 오프셋 위치 정보에 해당하는 오프셋 위치부터 데이터 끝 지점까지 필요한 길이만큼 읽기를 수행한다(S203). 즉, 스토리지부(300)의 물리 스토리지 공간에 저장된 데이터에 액세스하지 않고, 메모리부(200)의 데이터 영역에 저장된 데이터를 해당 데이터 세그먼트의 데이터에 해당하는 영역의 끝까지 읽어들이는 작업이 수행된다.Subsequently, it is determined whether reference information of a physical storage space is included in the data segment to be read (S202). When the corresponding data segment does not refer to the physical storage space of the storage unit 300, reading is performed for a required length from the offset position corresponding to the offset position information of the data segment to the data end point (S203). That is, the data stored in the data area of the memory unit 200 is read to the end of the area corresponding to the data of the corresponding data segment without accessing the data stored in the physical storage space of the storage unit 300 .

만약 해당 데이터 세그먼트가 스토리지부(300)의 물리 스토리지 공간을 참조하는 경우, 스토리지부(300)의 물리 스토리지 공간 중 데이터 세그먼트의 오프셋 위치 정보에 해당하는 위치부터 데이터 끝 지점까지 필요한 길이만큼 읽기를 수행한다(S204). 이 경우는, 해당 데이터 세그먼트가 다른 가상 노드들 사이에서 공유되어 스토리지부(300) 내의 물리 스토리지 공간에 저장되어 있음을 의미한다. 따라서 어플리케이션은 해당 데이터 세그먼트가 참조하는 스토리지부(300)의 물리 스토리지 공간에 저장된 데이터 중 오프셋 위치 정보에 해당하는 오프셋 위치부터 데이터 끝 지점까지 필요한 길이만큼 읽기를 수행한다.If the corresponding data segment refers to the physical storage space of the storage unit 300, reading is performed as long as necessary from the position corresponding to the offset location information of the data segment to the end of the data in the physical storage space of the storage unit 300. It does (S204). In this case, it means that the corresponding data segment is shared among other virtual nodes and stored in a physical storage space in the storage unit 300 . Therefore, the application reads a required length from an offset position corresponding to the offset position information among data stored in the physical storage space of the storage unit 300 referred to by the corresponding data segment to the data end point.

데이터 끝 지점까지 필요한 길이만큼 읽기가 완료되면 추가적으로 읽기 작업이 필요한지 여부가 판단된다(S205). 어플리케이션의 데이터 읽기 요청에 포함된 읽어야 하는 데이터의 길이만큼 데이터 세그먼트로부터 읽어들인 경우, 데이터의 읽기 처리를 종료하고 현재 데이터 세그먼트 및 데이터 세그먼트의 오프셋 위치 정보를 파일에 기록할 수 있다(S207). When reading of the required length up to the data end point is completed, it is determined whether an additional read operation is required (S205). When the length of the data to be read included in the data read request of the application is read from the data segment, the data read process is terminated, and the current data segment and offset position information of the data segment may be recorded in a file (S207).

만약 현재 데이터 세그먼트의 데이터 끝 지점까지 읽기가 완료되었으나 데이터 읽기 요청에 포함된 읽어야 하는 데이터가 남아있는 경우, 다음 데이터 세그먼트의 읽기 작업을 수행하면서 오프셋 위치 정보를 0으로 초기화시킬 수 있다(S206). If reading to the data end point of the current data segment is completed, but data to be read included in the data read request remains, offset position information may be initialized to 0 while performing a read operation of the next data segment (S206).

도 6은 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터를 쓰는 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating a method of writing shared data between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention.

도 6을 참조하면, 복수의 가상 노드(150) 중 어느 하나에 의해 실행되는 어플리케이션이 파일, 즉 가상 파일 디스크립터 구조체가 참조하는 데이터 세그먼트를 쓰기의 대상으로 사용한다(S301). Referring to FIG. 6 , an application executed by one of a plurality of virtual nodes 150 uses a file, that is, a data segment referred to by a virtual file descriptor structure, as a writing target (S301).

이어서, 쓰기 대상인 데이터 세그먼트에 물리 스토리지 공간의 참조 정보가 포함되어 있는지 여부가 판단된다(S302). 해당 데이터 세그먼트가 스토리지부(300)의 물리 스토리지 공간을 참조하지 않는 경우, 데이터 세그먼트의 오프셋 위치 정보에 해당하는 오프셋 위치부터 데이터 끝 지점까지 필요한 길이만큼 쓰기를 수행하며, 이는 스토리지부(300)의 물리 스토리지 공간에 저장된 데이터에 액세스하지 않고, 메모리부(200)의 데이터 영역에 저장된 데이터를 해당 데이터 세그먼트의 데이터에 해당하는 영역에 접근하고, 데이터 쓰기를 수행하는 과정이다.Subsequently, it is determined whether the data segment to be written includes reference information of the physical storage space (S302). When the corresponding data segment does not refer to the physical storage space of the storage unit 300, writing is performed for a required length from the offset position corresponding to the offset position information of the data segment to the data end point, which is This is a process of accessing data stored in the data area of the memory unit 200 to an area corresponding to data of a corresponding data segment and writing data, without accessing data stored in the physical storage space.

만약 해당 데이터 세그먼트가 스토리지부(300)의 물리 스토리지 공간을 참조하는 경우, 참조된 물리 스토리지 공간에 저장된 데이터의 내용을 해당 데이터 세그먼트의 데이터 영역, 즉 메모리부(200) 내부에 해당 데이터 세그먼트의 데이터 영역으로 할당된 곳에 복사할 수 있다(S302). 이후 해당 데이터 세그먼트의 물리 스토리지 공간으로의 참조를 해제할 수 있다(S303). 물리 스토리지 공간의 데이터를 메모리부(200)에 위치한 데이터 세그먼트의 데이터 영역으로 복사하였으므로 더 이상 참조의 필요성이 존재하지 않는 경우이다.If the corresponding data segment refers to the physical storage space of the storage unit 300, the contents of the data stored in the referenced physical storage space are stored in the data area of the corresponding data segment, that is, the data of the corresponding data segment within the memory unit 200. It can be copied to a place allocated as an area (S302). After that, the reference to the physical storage space of the corresponding data segment can be released (S303). This is a case in which data in the physical storage space is copied to the data area of the data segment located in the memory unit 200, so there is no need for reference any more.

이어서, 다음 데이터 세그먼트의 데이터가 필요한지 여부가 판단된다. 즉, 어플리케이션으로부터 수신한 쓰기 요청에 포함된 남은 쓰기 길이 및 오프셋 위치 정보가, 현재 데이터 세그먼트의 데이터 영역의 크기보다 큰지 여부를 판단한다(S305). 만약 다음 데이터 세그먼트에 대한 액세스가 필요하지 않은 경우 데이터의 쓰기 작업을 수행하고(S311), 액세스가 필요한 경우 다음 데이터 세그먼트에 물리 스토리지 공간의 참조 정보가 포함되어 있는지 여부가 판단된다(S306). 다음 데이터 세그먼트가 물리 스토리지 공간을 참조하는 경우 메모리부(200)로 데이터를 복사하는 과정과 물리 스토리지 공간에 대한 참조 정보를 제거하는 과정(S307, S308)과 동일하게 수행될 수 있다.Then, it is determined whether the data of the next data segment is needed. That is, it is determined whether the remaining write length and offset position information included in the write request received from the application are greater than the size of the data area of the current data segment (S305). If access to the next data segment is not required, a data write operation is performed (S311), and if access is required, it is determined whether or not reference information of the physical storage space is included in the next data segment (S306). When the next data segment refers to the physical storage space, the process of copying data to the memory unit 200 and the process of removing reference information on the physical storage space (S307 and S308) may be performed.

한편, 쓰기 작업을 위해 둘 이상의 데이터 세그먼트의 데이터가 준비된 경우, 둘 이상의 데이터 세그먼트를 하나의 데이터 세그먼트로 병합하는 과정이 수행될 수 있다. 즉, 다음 데이터 세그먼트의 데이터 영역을 현재 데이터 세그먼트의 데이터 영역과 병합하고, 현재 데이터 세그먼트의 데이터 영역 크기를 변경할 수 있다(S309). 앞서의 과정을 통해 준비된 데이터 세그먼트들은 모두 메모리부(200)에 저장되어 있거나, 물리 스토리지 공간을 참조하는 경우에도 메모리부(200)에 복사하여 기록되어 있으므로 현재 데이터 세그먼트의 데이터 영역과 다음 데이터 세그먼트의 데이터 영역을 병합하는 것이 가능하다. 데이터 영역을 병합함으로써 두 개의 데이터 세그먼트의 데이터가 병합되며, 병합된 크기에 맞게 현재 데이터 세그먼트의 데이터 영역의 크기를 변경할 수 있다. 이 때 병합된 다음 데이터 세그먼트의 정보는 삭제될 수 있다(S310).Meanwhile, when data of two or more data segments is prepared for a write operation, a process of merging the two or more data segments into one data segment may be performed. That is, the data area of the next data segment may be merged with the data area of the current data segment, and the size of the data area of the current data segment may be changed (S309). Since all of the data segments prepared through the above process are stored in the memory unit 200 or copied and recorded in the memory unit 200 even when referring to the physical storage space, the data area of the current data segment and the next data segment It is possible to merge data areas. By merging the data areas, the data of the two data segments are merged, and the size of the data area of the current data segment can be changed to match the merged size. At this time, the information of the next data segment merged may be deleted (S310).

어플리케이션으로부터 수신한 쓰기 요청에 포함된 남은 쓰기 길이 및 오프셋 위치 정보가, 현재 데이터 세그먼트의 데이터 영역의 크기보다 작은 경우, 즉 더 이상 다음 데이터 세그먼트의 데이터를 준비할 필요가 없는 경우 메모리부(200)에 위치한 데이터 세그먼트를 수정함으로써 쓰기 작업이 수행될 수 있다.When the remaining write length and offset position information included in the write request received from the application are smaller than the size of the data area of the current data segment, that is, when it is no longer necessary to prepare data for the next data segment, the memory unit 200 A write operation can be performed by modifying the data segment located at .

데이터 세그먼트의 데이터 영역의 오프셋 위치 정보에 대응하는 위치에서 데이터를 추가 또는 수정함으로써 쓰기를 수행한다(S311). 쓰기가 완료되면 쓰기를 위해 하나로 병합된 데이터 세그먼트에 대하여 복수의 가상 노드(150) 사이에 공유 가능한 데이터 세그먼트를 구분하는 기준에 따라 복수의 데이터 세그먼트로 분할하고, 공유를 위한 정보를 생성할 수 있다(S312). 쓰기 처리 및 분할이 완료되면, 현재 데이터 세그먼트 및 쓰기를 위해 이동한 길이만큼 오프셋 위치 정보를 수정하여 파일을 갱신할 수 있다(S313).Writing is performed by adding or modifying data at a position corresponding to the offset position information of the data area of the data segment (S311). When the writing is completed, the data segments merged into one for writing are divided into a plurality of data segments according to criteria for classifying data segments that can be shared among a plurality of virtual nodes 150, and information for sharing can be generated. (S312). When the writing process and division are completed, the file may be updated by correcting offset position information corresponding to the current data segment and the moved length for writing (S313).

도 7은 본 발명의 일 실시예에 따른 블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에서 데이터의 공유 방법을 설명하기 위한 순서도이다.7 is a flowchart illustrating a method of sharing data between a plurality of virtual nodes in a blockchain simulation platform according to an embodiment of the present invention.

도 7을 참조하면, 데이터 세그먼트의 데이터 영역의 시작지점에서 데이터 형식을 분석하는 단계(S401)가 수행된다. 만약 데이터의 시작점부터 일정 범위까지의 데이터가 정해진 데이터 형식에 맞는 데이터인 경우, 해당 데이터 범위를 하나의 데이터 세그먼트로, 나머지 부분을 다음 데이터 세그먼트로 하기 위해 새로운 데이터 세그먼트를 생성한다(S402, S403). Referring to FIG. 7 , a data format analysis step (S401) is performed at the start point of the data area of the data segment. If the data from the starting point of the data to a certain range is data that conforms to the defined data format, a new data segment is created to make the data range one data segment and the remaining part the next data segment (S402, S403). .

새로운 데이터 세그먼트의 데이터 영역에는 기존 데이터 세그먼트의 데이터 형식에 맞는 부분을 제외한 데이터가 이동되며(S404), 새로운 데이터 세그먼트는 기존 데이터 세그먼트와 기존 데이터의 다음 세그먼트 사이에 삽입될 수 있다(S405).In the data area of the new data segment, data except for a portion conforming to the data format of the existing data segment is moved (S404), and the new data segment can be inserted between the previous data segment and the next segment of the existing data (S405).

이어서 기존 데이터 세그먼트의 데이터 영역에 저장된 데이터에 대하여 해시값을 생성하고(S406), 메모리부(200)에 저장된 공유 데이터 테이블(250)에 생성된 해시값과 매칭되는 해시값이 키값으로 존재하는 경우, 해당 데이터는 이미 복수의 가상 노드(150) 사이에서 공유되기 위해 물리 스토리지 공간 내에 저장되어 있는 경우이므로, 기존 데이터 세그먼트의 데이터 영역에 저장된 데이터는 삭제하고, 물리 스토리지 공간의 참조 정보를 기존 데이터 세그먼트의 데이터 영역에 기록한다. 만약 생성된 해시값과 매칭되는 키값이 존재하지 않는 경우, 스토리지부(300)의 물리 스토리지 공간 내에 임의의 파일(파일 디스크립터 구조체)을 생성하여 기존 데이터 세그먼트의 데이터 영역에 저장된 데이터를 복사하여 저장하고, 생성된 해시값을 키값으로 하여 물리 스토리지 공간 내에 새로운 파일의 데이터 세그먼트를 참조하도록 공유 데이터 테이블(250)을 갱신할 수 있다. 이어서 나머지 데이터가 포함된 데이터 세그먼트에 대하여 데이터 형식이 매칭되지 않는 데이터가 나오거나, 모든 데이터가 물리 스토리지 공간을 이용하여 공유될 때까지 다음 데이터 세그먼트로 넘어가 데이터 분할 및 공유 과정이 반복될 수 있다.Subsequently, a hash value is generated for the data stored in the data area of the existing data segment (S406), and a hash value matching the generated hash value in the shared data table 250 stored in the memory unit 200 exists as a key value. , Since the corresponding data is already stored in the physical storage space to be shared among a plurality of virtual nodes 150, the data stored in the data area of the existing data segment is deleted, and the reference information of the physical storage space is replaced with the existing data segment. is recorded in the data area of If there is no key value that matches the generated hash value, a random file (file descriptor structure) is created in the physical storage space of the storage unit 300, and data stored in the data area of the existing data segment is copied and stored. , the shared data table 250 may be updated to refer to a data segment of a new file in the physical storage space using the generated hash value as a key value. Then, for the data segment including the remaining data, the process of dividing and sharing data may be repeated until data that does not match the data format appears or until all data is shared using the physical storage space.

이 때, 스토리지부(300)의 물리 스토리지 공간 내에 생성된 파일과 이에 저장된 데이터 세그먼트를 참조하는 키값을 갖는 공유 데이터 테이블(250)의 항목은 참조 횟수가 0으로 초기화된 상태일 수 있다.At this time, an item of the shared data table 250 having a key value referring to a file created in the physical storage space of the storage unit 300 and a data segment stored therein may be in a state in which the number of references is initialized to 0.

본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 장치에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 하드디스크, ROM, RAM, CD-ROM, 하드 디스크, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다.The present invention can also be implemented as computer readable codes on a computer readable recording medium. A computer-readable recording medium includes all types of recording devices in which data that can be read by a computer device is stored. Examples of computer-readable recording media include hard disks, ROMs, RAMs, CD-ROMs, hard disks, magnetic tapes, floppy disks, optical data storage devices, etc., and carrier waves (for example, transmission over the Internet). It also includes what is implemented in the form of.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described with reference to the accompanying drawings, those skilled in the art can realize that the present invention can be implemented in other specific forms without changing the technical spirit or essential features. you will be able to understand Therefore, the embodiments described above should be understood as illustrative in all respects and not limiting.

100: 블록체인 네트워크 플랫폼
150: 복수의 가상 노드 200: 메모리부
250: 공유 데이터 테이블
100: blockchain network platform
150: a plurality of virtual nodes 200: memory unit
250: shared data table

Claims (14)

블록체인 시뮬레이션 플랫폼 내의 데이터 액세스 방법에 있어서,
상기 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 상기 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계;
상기 복수의 가상 노드 중 어느 하나로부터 상기 데이터 세그먼트의 액세스 요청을 제공받는 단계; 및
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계를 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
In the data access method in the blockchain simulation platform,
Reference information of a physical storage space shared between a plurality of virtual nodes using a file accessed by a plurality of virtual nodes created in the blockchain simulation platform and a hash value of a data segment constituting the file as a key value providing a hash table to store;
receiving an access request for the data segment from one of the plurality of virtual nodes; and
Determining whether the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes, and accessing the data segment based on whether or not the reference,
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 1항에 있어서,
상기 블록체인 시뮬레이션 플랫폼은 현재 가상 노드에 의한 액세스되는 데이터 세그먼트의 정보 및 상기 데이터 세그먼트의 액세스 위치에 관한 오프셋 위치 정보를 포함하는 가상 파일 디스크립터를 저장하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 1,
The blockchain simulation platform stores a virtual file descriptor including information on a data segment currently accessed by a virtual node and offset location information about an access location of the data segment,
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 2항에 있어서,
상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 읽기 요청을 포함하고,
상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우 상기 참조 정보에 따라 상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽고,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하지 않는 경우 메모리 상에 위치한 상기 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽는 것을 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 2,
The access request of the data segment includes a read request for the data segment,
Accessing the data segment based on whether the reference is made,
When the data segment includes reference information of a physical storage space shared among the plurality of virtual nodes, a data segment corresponding to the offset position information among data segments constituting a file stored in the physical storage space according to the reference information read,
Reading a data segment corresponding to the offset position information among the data segments located in a memory when the data segment does not include reference information of a physical storage space shared between the plurality of virtual nodes.
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 3항에 있어서,
상기 참조 여부에 기초하여 상기 물리 스토리지 공간 또는 메모리 상에 위치한 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽은 이후에,
읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 더 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 3,
After reading the data segment corresponding to the offset location information among the data segments located in the physical storage space or memory based on the reference,
Further comprising modifying the virtual file descriptor to correspond to offset position information of the read data segment.
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제2항에 있어서,
상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 쓰기 요청을 포함하고,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우에 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는,
상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트를 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사하는 단계;
상기 메모리 상에 위치한 데이터 세그먼트의 상기 물리 스토리지 공간에 대한 참조를 해제하는 단계,
상기 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사된 데이터 세그먼트를 병합하는 단계;
상기 병합된 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 부분에 쓰기를 수행하는 단계;
쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계; 및
읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 2,
The access request for the data segment includes a write request for the data segment;
In the case where the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes, accessing the data segment based on whether the data segment is referenced includes:
copying a data segment constituting a file stored in the physical storage space to a data area of a data segment located on a memory;
releasing a reference to the physical storage space of a data segment located on the memory;
merging the copied data segments into a data area of the data segments located on the memory;
writing a portion corresponding to the offset location information among the merged data segments;
dividing the written data segment into a plurality of data segments and sharing them with the plurality of virtual nodes; and
Modifying the virtual file descriptor to correspond to offset position information of the data segment on which reading has been completed.
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 5항에 있어서,
상기 쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계는,
상기 쓰기가 완료된 데이터 세그먼트의 데이터 형식을 검사하는 단계;
상기 데이터 형식의 검사 결과에 따라 상기 쓰기가 완료된 데이터 세그먼트를 분리하는 단계;
상기 분리된 데이터 세그먼트의 해시값을 계산하는 단계;
상기 분리된 데이터 세그먼트의 해시값이 상기 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블에 존재하는지 여부를 판단하는 단계; 및
상기 해시 테이블에 존재하는 해시값을 갖는 분리된 데이터 세그먼트의 경우 상기 메모리 상에 위치한 상기 데이터 세그먼트에 대응하는 영역의 데이터를 삭제하고 상기 해시값에 의해 참조되는 물리 스토리지 공간의 참조 정보를 기록하고, 상기 해시 테이블에 존재하지 해시값을 갖는 분리된 데이터 세그먼트의 경우 새로운 물리 스토리지 공간에 분리된 데이터 세그먼트의 데이터를 복사하고 복사된 영역의 참조 정보를 기록하는 단계를 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 5,
The step of dividing the written data segment into a plurality of data segments and sharing them with the plurality of virtual nodes,
checking a data format of the data segment on which the writing is completed;
separating the written data segment according to a result of checking the data format;
calculating a hash value of the separated data segment;
determining whether a hash value of the separated data segment exists in a hash table storing reference information of a physical storage space shared among the plurality of virtual nodes; and
In the case of a separated data segment having a hash value existing in the hash table, deleting data in an area corresponding to the data segment located on the memory and recording reference information of a physical storage space referred to by the hash value, In the case of a separated data segment having a hash value that does not exist in the hash table, copying data of the separated data segment to a new physical storage space and recording reference information of the copied area.
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 2항에 있어서,
상기 파일을 구성하는 복수의 데이터 세그먼트는 상기 가상 노드 각각으로부터 제공받은 데이터를 포함하는,
블록체인 시뮬레이션 플랫폼 내의 복수의 가상 노드 사이에 공유된 데이터 액세스 방법.
According to claim 2,
The plurality of data segments constituting the file include data provided from each of the virtual nodes.
A shared data access method among multiple virtual nodes within a blockchain simulation platform.
제 1항 내지 제7항의 방법 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체.A computer-readable recording medium on which a program for executing any one of the methods of claims 1 to 7 is recorded. 프로세서; 및
상기 프로세서에 연결된 메모리를 포함하는 블록체인 시뮬레이션 플랫폼에 있어서,
상기 메모리는, 실행 시에 상기 프로세서가,
상기 블록체인 시뮬레이션 플랫폼 내에서 생성된 복수의 가상 노드에 의해 액세스되는 파일과, 상기 파일을 구성하는 데이터 세그먼트의 해시값을 키값으로 하여 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블을 제공하는 단계;
상기 복수의 가상 노드 중 어느 하나로부터 상기 데이터 세그먼트의 액세스 요청을 제공받는 단계; 및
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는지 여부를 판단하고, 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계를 실행하도록 하는 명령어를 저장하는, 블록체인 시뮬레이션 플랫폼.
processor; and
In the blockchain simulation platform including a memory connected to the processor,
The memory, when executed, the processor,
Reference information of a physical storage space shared between a plurality of virtual nodes using a file accessed by a plurality of virtual nodes created in the blockchain simulation platform and a hash value of a data segment constituting the file as a key value providing a hash table to store;
receiving an access request for the data segment from one of the plurality of virtual nodes; and
A block that stores a command for determining whether the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes, and accessing the data segment based on whether the data segment is referenced. Chain simulation platform.
제 9항에 있어서,
상기 메모리는 현재 가상 노드에 의한 액세스되는 파일의 정보 및 상기 액세스되는 파일을 구성하는 데이터 세그먼트의 오프셋 위치 정보를 포함하는 가상 파일 디스크립터를 저장하는,
블록체인 시뮬레이션 플랫폼.
According to claim 9,
The memory stores a virtual file descriptor including information on a file accessed by a current virtual node and offset position information of a data segment constituting the accessed file.
Blockchain simulation platform.
제 10항에 있어서,
상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 읽기 요청을 포함하고,
상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우 상기 참조 정보에 따라 상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽고,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하지 않는 경우 메모리 상에 위치한 상기 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽는 것을 포함하는,
블록체인 시뮬레이션 플랫폼.
According to claim 10,
The access request of the data segment includes a read request for the data segment,
Accessing the data segment based on whether the reference is made,
When the data segment includes reference information of a physical storage space shared among the plurality of virtual nodes, a data segment corresponding to the offset position information among data segments constituting a file stored in the physical storage space according to the reference information read,
Reading a data segment corresponding to the offset position information among the data segments located in a memory when the data segment does not include reference information of a physical storage space shared between the plurality of virtual nodes.
Blockchain simulation platform.
제 11항에 있어서,
상기 참조 여부에 기초하여 상기 물리 스토리지 공간 또는 메모리 상에 위치한 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 데이터 세그먼트를 읽은 이후에,
읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 더 실행하는,
블록체인 시뮬레이션 플랫폼.
According to claim 11,
After reading the data segment corresponding to the offset location information among the data segments located in the physical storage space or memory based on the reference,
Further executing the step of modifying the virtual file descriptor to correspond to the offset position information of the data segment that has been read,
Blockchain simulation platform.
제 10항에 있어서,
상기 데이터 세그먼트의 액세스 요청은 상기 데이터 세그먼트에 대한 쓰기 요청을 포함하고,
상기 데이터 세그먼트가 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 포함하는 경우에 상기 참조 여부에 기초하여 상기 데이터 세그먼트를 액세스하는 단계는,
상기 물리 스토리지 공간에 저장된 파일을 구성하는 데이터 세그먼트를 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사하는 단계;
상기 메모리 상에 위치한 데이터 세그먼트의 상기 물리 스토리지 공간에 대한 참조를 해제하는 단계,
상기 메모리 상에 위치한 데이터 세그먼트의 데이터 영역으로 복사된 데이터 세그먼트를 병합하는 단계; 및
상기 병합된 데이터 세그먼트 중 상기 오프셋 위치 정보에 대응하는 부분에 쓰기를 수행하는 단계;
쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계; 및
읽기가 완료된 데이터 세그먼트의 오프셋 위치 정보에 대응하도록 상기 가상 파일 디스크립터를 수정하는 단계를 포함하는,
블록체인 시뮬레이션 플랫폼.
According to claim 10,
The access request for the data segment includes a write request for the data segment;
In the case where the data segment includes reference information of a physical storage space shared between the plurality of virtual nodes, accessing the data segment based on whether the data segment is referenced includes:
copying a data segment constituting a file stored in the physical storage space to a data area of a data segment located on a memory;
releasing a reference to the physical storage space of a data segment located on the memory;
merging the copied data segments into a data area of the data segments located on the memory; and
writing a portion corresponding to the offset location information among the merged data segments;
dividing the written data segment into a plurality of data segments and sharing them with the plurality of virtual nodes; and
Modifying the virtual file descriptor to correspond to offset position information of the data segment on which reading has been completed.
Blockchain simulation platform.
제 13항에 있어서,
상기 쓰기가 완료된 데이터 세그먼트를 복수의 데이터 세그먼트로 분리하여 상기 복수의 가상 노드와 공유하는 단계는,
상기 쓰기가 완료된 데이터 세그먼트의 데이터 형식을 검사하는 단계;
상기 데이터 형식의 검사 결과에 따라 상기 쓰기가 완료된 데이터 세그먼트를 분리하는 단계;
상기 분리된 데이터 세그먼트의 해시값을 계산하는 단계;
상기 분리된 데이터 세그먼트의 해시값이 상기 상기 복수의 가상 노드 사이에 공유되는 물리 스토리지 공간의 참조 정보를 저장하는 해시 테이블에 존재하는지 여부를 판단하는 단계; 및
상기 해시 테이블에 존재하는 해시값을 갖는 분리된 데이터 세그먼트의 경우 상기 메모리 상에 위치한 상기 데이터 세그먼트에 대응하는 영역의 데이터를 삭제하고 상기 해시값에 의해 참조되는 물리 스토리지 공간의 참조 정보를 기록하고, 상기 해시 테이블에 존재하지 해시값을 갖는 분리된 데이터 세그먼트의 경우 새로운 물리 스토리지 공간에 분리된 데이터 세그먼트의 데이터를 복사하고 복사된 영역의 참조 정보를 기록하는 단계를 포함하는,
블록체인 시뮬레이션 플랫폼.
According to claim 13,
The step of dividing the written data segment into a plurality of data segments and sharing them with the plurality of virtual nodes,
checking a data format of the data segment on which the writing is completed;
separating the written data segment according to a result of checking the data format;
calculating a hash value of the separated data segment;
determining whether a hash value of the separated data segment exists in a hash table storing reference information of a physical storage space shared among the plurality of virtual nodes; and
In the case of a separated data segment having a hash value existing in the hash table, deleting data in an area corresponding to the data segment located on the memory and recording reference information of a physical storage space referred to by the hash value, In the case of a separated data segment having a hash value that does not exist in the hash table, copying data of the separated data segment to a new physical storage space and recording reference information of the copied area.
Blockchain simulation platform.
KR1020210171501A 2021-12-03 2021-12-03 A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same KR20230083479A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210171501A KR20230083479A (en) 2021-12-03 2021-12-03 A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210171501A KR20230083479A (en) 2021-12-03 2021-12-03 A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same

Publications (1)

Publication Number Publication Date
KR20230083479A true KR20230083479A (en) 2023-06-12

Family

ID=86770084

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210171501A KR20230083479A (en) 2021-12-03 2021-12-03 A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same

Country Status (1)

Country Link
KR (1) KR20230083479A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116800620A (en) * 2023-08-28 2023-09-22 国网数字科技控股有限公司 Block chain simulation system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116800620A (en) * 2023-08-28 2023-09-22 国网数字科技控股有限公司 Block chain simulation system and method

Similar Documents

Publication Publication Date Title
US10698885B2 (en) Method and device for writing service data in block chain system
TWI549060B (en) Access methods and devices for virtual machine data
US20150058577A1 (en) Compressed block map of densely-populated data structures
CN107423301B (en) Data processing method, related equipment and storage system
CN111708719B (en) Computer storage acceleration method, electronic equipment and storage medium
US20200302080A1 (en) Database proxy service
US20150254007A1 (en) Systems and Methods for Creating an Image of a Virtual Storage Device
CN107391033B (en) Data migration method and device, computing equipment and computer storage medium
KR20220125198A (en) Data additional writing method, apparatus, electronic device, storage medium and computer programs
KR20230083479A (en) A method for accessing data shared among plurality of virtual nodes in blockchain simulation platform and system using the same
US10956125B2 (en) Data shuffling with hierarchical tuple spaces
US20220269657A1 (en) Cache indexing using data addresses based on data fingerprints
WO2024021417A1 (en) Data account creation method and apparatus
EP3249540B1 (en) Method for writing multiple copies into storage device, and storage device
CN110598467A (en) Memory data block integrity checking method
US20230222102A1 (en) High-performance remote file system meta data
US20230169036A1 (en) System and method for deleting parent snapshots of running points of storage objects using extent ownership values
KR102338756B1 (en) The method for simulating blockchain network sharing block data and the system using the method
US10318439B2 (en) Management of access to data in a storage system
EP3374882B1 (en) File system with distributed entity state
CN111782634A (en) Data distributed storage method and device, electronic equipment and storage medium
US9348859B2 (en) Providing record-level sharing (RLS) to local data sets
CN108694102A (en) A kind of data manipulation method, equipment, system and medium based on Nexus services
US11442633B2 (en) Method, electronic device and computer program product for storage management
US11853319B1 (en) Caching updates appended to an immutable log for handling reads to the immutable log