WO2024058489A1 - 블록체인 합의 시스템 및 방법 - Google Patents

블록체인 합의 시스템 및 방법 Download PDF

Info

Publication number
WO2024058489A1
WO2024058489A1 PCT/KR2023/013337 KR2023013337W WO2024058489A1 WO 2024058489 A1 WO2024058489 A1 WO 2024058489A1 KR 2023013337 W KR2023013337 W KR 2023013337W WO 2024058489 A1 WO2024058489 A1 WO 2024058489A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
wrs
node
vote
nodes
Prior art date
Application number
PCT/KR2023/013337
Other languages
English (en)
French (fr)
Inventor
주영현
윤희종
황순재
Original Assignee
주식회사 블룸테크놀로지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 블룸테크놀로지 filed Critical 주식회사 블룸테크놀로지
Publication of WO2024058489A1 publication Critical patent/WO2024058489A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Definitions

  • the present invention relates to a system and method for agreeing on blocks connected to a chain in a blockchain network. More specifically, a system in which a plurality of committee nodes in a blockchain network agree by voting on at least one block candidate. and methods.
  • Blockchain is a decentralized, distributed transaction management technology that emerged to break away from the centralized method in which existing centralized institutions store transaction details in a single point.
  • Blockchain is a distributed ledger system in a P2P (Peer-to-Peer) communication network where all participants own a shared ledger determined through a consensus algorithm, making forgery and alteration of records impossible.
  • P2P Peer-to-Peer
  • a distributed ledger system is a system in which each node synchronizes and maintains a database called the ledger in a distributed environment without the control of a central administrator.
  • a sharding method has been used to distribute multiple nodes into multiple shards (shard groups) and split multiple transactions into each distributed shard to process them in parallel.
  • Sharding divides transactions and blocks that occur in a blockchain network into small groups of shards, so the nodes in each shard only process the transactions and blocks of the shard they belong to without having to process transactions and blocks of other shards, thus processing the entire network. It is a method of reducing transaction throughput and the size of the distributed ledger.
  • a committee that includes multiple nodes basically verifies blocks through the consensus of the majority of the committee, and blocks that do not reach consensus are excluded from selection and separated from the chain.
  • a certain number of nodes above a threshold among all nodes constituting the network must agree.
  • This blockchain consensus can be achieved by various consensus protocols.
  • consensus can be achieved using a proof-of-work algorithm.
  • Proof-of-work consensus protocols typically require some work from the parties participating in the consensus protocol, which usually corresponds to processing time by a computer.
  • Proof-of-work-based cryptocurrency systems such as Bitcoin, involve solving computationally intensive puzzles.
  • proof-of-stake protocols Another type of consensus protocol is based on proof-of-stake algorithms. These proof-of-stake protocols have the advantage of not requiring time-consuming and energy-intensive computing.
  • the creator of the next block is selected through a combination of random selection and the stake of each node in the network.
  • Another type of consensus protocol used in blockchain networks can be designed to reach fast finality for transactions contained in a block by applying the “Byzantine Fault Tolerant” (BFT) protocol.
  • BFT Board Fault Tolerant
  • “Synchronous” BFT protocols rely on the assumption of network synchronization for safety, while “asynchronous” BFT protocols do not.
  • Asynchronous BFT protocols can typically tolerate less than one-third (1/3) of participating nodes failing.
  • the applicant of the present invention proposes a new blockchain consensus system and method that is applicable to the DAG-AWTC (directed acyclic graph - account-wise transaction chain) ledger structure and is based on the Byzantine Fault Tolerant (BFT) protocol. do.
  • DAG-AWTC directed acyclic graph - account-wise transaction chain
  • BFT Byzantine Fault Tolerant
  • the purpose of the present invention is to meet the above needs, and to provide a blockchain consensus system and method in which a plurality of committee nodes vote for and agree on at least one block candidate based on the Byzantine fault tolerance protocol in a blockchain network. It is for.
  • the present invention can be implemented in various ways, including a device (system), a method, a computer program stored in a computer-readable medium, or a computer-readable medium on which a computer program is stored.
  • the nodes are nodes elected as WRS voters.
  • the blockchain consensus system is a WRS block candidate generation module that generates WRS block candidates by collecting RS blocks agreed upon from the committee nodes of all shards, and a WRS block candidate that allows WRS voters to share WRS block candidates with other WRS voters.
  • a sharing module, a WRS block voting module in which WRS voters communicate with other WRS voters and reach consensus by voting on shared WRS block candidates, and a WRS voting result in which WRS voters share the WRS block voting results with all nodes in the blockchain network. Includes shared modules.
  • the node is a node elected as an RS voter
  • the blockchain consensus system is a RS block candidate sharing module that receives RS block candidates from at least one proposer node in the shard, and the RS voter communicates with other RS voters.
  • RS block voting module that votes and agrees on at least one RS block candidate received from the proposer node while communicating
  • RS voting result sharing module in which RS voters share RS block voting results with all nodes in the shard and WRS voters It further includes.
  • the block voting result includes at least one of the following: block confirmation of one of the block candidates, no block agreed upon, or consensus failure.
  • the probability that the preset node will be elected as a voter increases.
  • the block voting module performs at least one prevote step, precommit step, and commit step.
  • the pre-vote step is a step of deriving blocks that have received more than a preset threshold
  • the pre-commit step is a step of voting for blocks that have received more than the threshold number of votes in the pre-vote step
  • the commit step is a pre-commit step. This is the stage where the block voted on in this stage is confirmed and signed.
  • the free vote stage includes at least two or more free vote stages, and the voter who has derived a block that has received more than a preset threshold in one of the two or more free vote stages participates in the free vote stage thereafter. Vote on the same block as in the previous free vote phase.
  • the node is a node elected as a WRS voter.
  • the blockchain consensus method includes the following steps: generating a WRS block candidate by collecting RS blocks agreed upon from the committee nodes of all shards, allowing the WRS voter to share the WRS block candidate with other WRS voters, and allowing the WRS voter to share the WRS block candidate with other WRS voters. It includes a block voting step in which a consensus is reached by voting on the shared WRS block candidate while communicating with voters, and a step in which WRS voters share the results of the WRS block vote with all nodes in the blockchain network.
  • the node is a node elected as an RS voter
  • the blockchain consensus method includes the steps of receiving RS block candidates from at least one proposer node in the shard, and the RS voter communicating with other RS voters It further includes a block voting step in which consensus is reached by voting on at least one RS block candidate received from the poser node, and a step in which the RS voter shares the RS block voting result with all nodes in the shard and the WRS voters.
  • the block voting result includes at least one of the following: block confirmation of one of the block candidates, no block agreed upon, or consensus failure.
  • the probability that the preset node will be elected as a voter increases.
  • the block voting step includes at least one prevote step, a precommit step, and a commit step.
  • the pre-vote step is a step of deriving blocks that have received more than a preset threshold
  • the pre-commit step is a step of voting for blocks that have received more than the threshold number of votes in the pre-vote step
  • the commit step is a pre-commit step. This is the stage where the block voted on in this stage is confirmed and signed.
  • the free vote stage includes at least two or more free vote stages, and the voter who has derived a block that has received more than a preset threshold in one of the two or more free vote stages participates in the free vote stage thereafter. Vote on the same block as in the previous free vote phase.
  • the present invention divides the blockchain network into shards to process transactions and blocks, thereby reducing transaction throughput and the size of the distributed ledger, thereby increasing the scalability of the blockchain network.
  • the present invention allows the scalability of the network ( scalability can be improved.
  • the present invention is based on the Byzantine fault tolerance protocol for round state blocks within a shard, where multiple committee nodes vote and agree on at least one round state block candidate, so that only the agreed-upon round state blocks are connected to the round state chain. , can improve the stability of the network.
  • the present invention is based on the Byzantine fault tolerance protocol for World Round State blocks, where multiple committee nodes vote and agree on one or more World Round State block candidates, so that only the agreed-upon World Round State blocks are connected to the World Round State chain.
  • the stability of the network can be improved.
  • Figure 1 is a conceptual diagram of a blockchain network divided into three shards of the present invention.
  • Figure 2 is a block diagram showing an exemplary configuration of a node including the blockchain consensus system of the present invention.
  • Figure 3 is a diagram showing information stored in a data storage in the blockchain network of the present invention.
  • Figure 4 is a configuration diagram showing a blockchain consensus system according to an embodiment of the present invention.
  • Figure 5 is a flowchart illustrating a blockchain consensus method in a proposer node according to an embodiment of the present invention.
  • Figure 6 is a flowchart showing a blockchain consensus method in RS Voter according to an embodiment of the present invention.
  • FIG. 7 is a flowchart showing a blockchain consensus method in WRS Voter according to an embodiment of the present invention.
  • Figure 8 is an operational flowchart showing a process of voting for at least one block candidate according to an embodiment of the present invention.
  • WRS block candidate generation module 418 WRS block candidate sharing module
  • the term “technique” may refer to a system, method, computer-readable instructions, module, algorithm, hardware logic, and/or operation as permitted by the context described above and throughout the document.
  • terms such as 'comprise', 'comprising', etc. may indicate the presence of features, steps, operations, elements and/or components, but may indicate that such terms include one or more other functions, This does not preclude the addition of steps, operations, elements, components and/or combinations thereof.
  • a specific component when referred to as being 'coupled', 'combinated', 'connected', 'connected', or 'reacting' to any other component, the specific component is directly bound to the other component. , may be combined, connected and/or associated, or react, but is not limited thereto. For example, one or more intermediate components may exist between a particular component and another component. Additionally, in the present invention, “and/or” may include each of one or more listed items or a combination of at least a portion of one or more items.
  • 'first' and 'second' are used to distinguish specific components from other components, and the above-described components are not limited by these terms.
  • a 'first' component may be used to refer to an element of the same or similar form as the 'second' component.
  • a 'blockchain network' is a collection of several computers (nodes) that participate in a blockchain system and communicate peer-to-peer with each other through the Internet, etc.
  • a 'node' may be a computer participating in a blockchain network.
  • a computer encompasses all devices with CPU, memory, communication, and input/output functions, and may specifically include server computers, personal computers (PCs), mobile phone terminals, and small home appliances.
  • Nodes can share and spread information through the blockchain network.
  • a node manages at least one user account. Accounts managed by a node may include the node owner's account (hereinafter referred to as a host account) and an account entrusted with management by another user (hereinafter referred to as a guest account).
  • a node stores all information about the host accounts and guest accounts it manages and transmits it to other nodes on the blockchain network, and can receive the latest information about the host accounts and guest accounts managed by each node from other nodes. You can.
  • 'account' refers to a user account participating in a blockchain and may be a data structure representing one user.
  • An account can add information to the blockchain system by issuing transactions, and can be a linked list of transactions issued by a user.
  • a transaction can be a unit of data that a user adds to the system.
  • An account can own a node and directly manage its own transaction information, and this account can be called a host account.
  • the account can entrust transaction information to another user's node for management.
  • This account can be called a guest account, and the node entrusted with account management can be called a entrusted node.
  • Node and account identities can be verified using encryption keys, and transactions can be signed with the same encryption key.
  • a guest account can operate a node on its own and become a host account or change the entrusted node.
  • a host account can also select a entrusted node and become a guest account.
  • a 'transaction' is a unit of information added to the blockchain, and can be issued independently by one account.
  • the content of a transaction is nominally random information provided by the user, but may actually be a meaningful message within the system.
  • a transaction may include messages such as 'Account A sent 100 coins to account B', 'Account B received 100 coins from account A', etc.
  • the serial number of the transaction starts from 0. It is a positive integer that increases by 1 for each transaction, and uses an account-wise transaction chain (AWTC) that manages the ledger for each account.
  • AWTC account-wise transaction chain
  • the technology for account-wise transaction chain (AWTC) is provided in the present invention. It can be understood by referring to the contents described in Republic of Korea Patent Publication No. 2021-0015196, filed by the applicant.
  • a 'shard' may be a collection of nodes participating in a blockchain network.
  • the entire blockchain network can be split into two or more shards. If there is no division, all nodes are considered to participate in one shard, and each shard has a unique address.
  • a blockchain network that applies the sharding technique performs peer-to-peer communication between nodes belonging to the same shard, and shares the account-specific transaction chain (AWTC) of all accounts belonging to the same shard.
  • AWTC account-specific transaction chain
  • shards communicate peer-to-peer with each other between the same nodes, and the account-specific transaction chain (AWTC) of all accounts belonging to the same shard can be shared.
  • 'peer-to-peer communication' in blockchain networks and shards means that when a random node receives some information, it copies the received information and transmits it to other nodes, and the received node also copies the information to other nodes. This may mean that all nodes belonging to the blockchain network and shard share the information after a sufficient period of time by repeating the process of transmitting to the nodes.
  • 'round' may be a unit of time of the sum.
  • a transaction that occurred and was shared in a previous round can be the subject of agreement in the current round.
  • a 'block' may be a signed list of transactions added to a shard or blockchain network during a specific period of time.
  • Blocks can be created by signing the list of generated transactions through a consensus algorithm. Only one block can be created at a time, and a blockchain can be formed by adding new blocks to the existing block list.
  • the account-specific transaction chain may be a chain connecting transaction blocks generated for each account. Transaction blocks occurring in any one round are shared by all nodes included in the same shard, and the account-specific transaction chain (AWTC) can be shared by all nodes within the same shard. All transaction blocks generated in any one round within any one shard can be collected and created as a round state block (hereinafter referred to as RS block).
  • This RS block may be a hash value containing information about all transaction blocks that occurred in the corresponding round in the corresponding shard.
  • the Round State Chain is an RS block that collects transaction blocks of accounts belonging to the same shard, and may be a blockchain connecting RS blocks agreed upon based on the consensus method of the present invention.
  • account-specific transaction blocks shared among nodes are collected, and in the next round, they can be agreed upon based on the consensus method of the present invention.
  • the RS block agreed upon by the committee nodes is shared with other nodes within the shard, allowing all nodes within the shard to connect the RS block to the round state chain.
  • the RS block agreed upon for each shard can be shared with committee nodes of other shards in the blockchain network.
  • Commitment nodes in each shard can collect RS blocks from all shards and create a World Round State Block (hereinafter referred to as WRS block).
  • WRS block may be a hash value containing information about all RS blocks generated in that round.
  • the World Round State Chain is a WRS block that collects RS blocks agreed upon in all shards, and may be a chain connecting WRS blocks agreed upon based on the consensus method of the present invention.
  • the WRS block agreed upon by the committee nodes is shared with all nodes in the blockchain network, allowing all nodes on the network to connect the WRS block to the World Round State Chain.
  • Figure 1 is a conceptual diagram of a blockchain network divided into three shards of the present invention.
  • the multiple nodes that make up the blockchain network can be divided into three shards (110, 120, and 130), but it is not limited to this.
  • the number of shards can increase as the number of nodes and accounts that make up the blockchain network increases, and in this case, one shard can be split into two. All nodes currently belonging to a shard can share the same information.
  • Each node can share an account-specific transaction chain (AWTC) in which the transaction blocks of all accounts belonging to the shard are connected.
  • AWTC account-specific transaction chain
  • Each node has an intra-shard communication node list that stores information on P2P communication targets (intra-shard communication nodes) among nodes within the same shard, and an inter-shard that stores information on peer-to-peer communication targets (inter-shard communication nodes) among nodes outside the same shard. May include a communication node list.
  • the intra-shard communication node that is the communication target within the same shard of each node can be determined according to kademlia rules.
  • the inter-shard communication node which is the communication target other than the shard of each node, can be randomly determined to be some of the nodes belonging to neighboring shards.
  • Intra-shard communication nodes and inter-shard communication nodes included in the intra-shard communication node list and inter-shard communication node list assigned to each node can be randomly reconfigured.
  • the nodes 111, 121, and 131 that communicate with nodes within the shard are shown as unhatched circles, and the nodes 112, 122, and 132 that communicate with nodes outside the shard are shown as hatched circles. It is marked as .
  • Nodes 112, 122, and 132 that communicate with nodes other than the shard can communicate with nodes belonging to neighboring shards based on the inter-shard communication node list.
  • the neighboring shard may be a shard whose bit distance of the shard address is 1.
  • a bit distance of 1 may mean that the shard address differs by only one bit value. That is, addresses with a bit distance of 1 from address '00' can be '01' and '10'.
  • the first shard 130 is The addresses of (110) and the second shard (120) are '00' and '01', respectively, with a bit distance of 1, and the addresses of the first shard (110) and the third shard (130) are '00' and '01', respectively.
  • the bit distance is 10', but the addresses of the second shard 110 and the third shard 130 are '01' and '10', respectively, and the bit distance is not 1 because the two place values are different.
  • the first shard and the second shard are neighboring shards
  • the first shard and the third shard are neighboring shards and can communicate directly.
  • the second and third shards cannot communicate directly because they are not neighboring shards, and can communicate through the first shard, which is a neighboring shard.
  • Each node in Figure 1 includes a shard rebalancing algorithm, and the shard rebalancing algorithm can be executed according to preset conditions.
  • the shard rebalancing algorithm may use the Bounded Cuckoo algorithm, but is not limited to this.
  • the Bounded Cuckoo algorithm is described in detail in the RapidChain introduction material (see RapidChain: Scaling Blockchain via Full Sharding, https://eprint.iacr.org/2018/460.pdf ).
  • the present invention calculates the health index of the shards based on the Bounded Cuckoo algorithm, classifies them into strong shards and weak shards, and periodically extracts some nodes randomly from the strong shards to determine the weak shards. It can be moved to .
  • nodes to change shards are randomly selected, and the node's shards may be reallocated and changed.
  • Each shard may include at least one proposer node and at least two committe nodes, and it is preferable to have at least two proposer nodes.
  • the proposer node can generate RS block candidates by combining transaction blocks for each new account of accounts belonging to the shard.
  • the proposer node transmits the RS block candidate it generates to the committee nodes, and the committee nodes can vote on at least one RS block candidate received.
  • the transaction block for each new account may mean a transaction block that is not connected to the round state chain.
  • the proposer node of each shard can generate RS block candidates by collecting transaction blocks shared in the previous round. These RS block candidates may be hash values. RS block candidates generated based on the same account-specific transaction block may have the same hash value, that is, the same hash identifier. In other words, even if multiple proposer nodes create an RS block candidate, there can be only one RS block candidate with the same hash value, and multiple proposer nodes may generate two or more RS block candidates with different hash values.
  • the RS block candidate created in this way is shared by at least two committee nodes, and the committee nodes can vote on the RS block candidate to reach an agreement.
  • RS blocks agreed upon by committee nodes can be shared among all nodes in the shard.
  • RS blocks agreed upon by committee nodes can be shared with committee nodes of other shards.
  • Committee nodes belonging to a committee shard can collect agreed upon RS blocks from each shard of the blockchain network and combine the collected RS blocks to generate WRS block candidates.
  • a WRS block candidate may be a hash value.
  • WRS block candidates generated based on the same RS block may have the same hash value, that is, the same hash identifier. That is, the WRS block candidates generated from a plurality of committy nodes may all be the same as the hash value, or there may be two or more.
  • Committee nodes belonging to a committee shard can mutually share the WRS block candidates they create and vote on the shared WRS block candidates to reach an agreement.
  • WRS blocks agreed upon by committee nodes belonging to a committee shard can be shared with all nodes in the blockchain network.
  • FIG. 2 is a block diagram showing an exemplary configuration of a node 200 including the blockchain consensus system of the present invention.
  • Each node may be implemented as a computer device.
  • the various devices and/or components of node 200 may include distributed computer resources 250 that can communicate with each other and external devices over one or more networks 260.
  • distributed computer resources 250 may include devices 250(1) - 250(N).
  • Embodiments of the present invention allow distributed computer resources 250 to operate in a cluster or other grouped configuration, which may include one or more computer devices to share resources, distribute load, increase performance, or for other purposes. Supports scenarios.
  • Distributed computer resources 250 may fall into various categories, such as traditional server-like devices, desktop computer-like devices, mobile devices, special-purpose devices, embedded devices, and/or wearable devices. Accordingly, although illustrated as desktop and laptop computers, distributed computer resources 250 may include a variety of device types and are not limited to a particular type of device. Distributed computer resources 250 may include desktop computers, server computers, web server computers, personal computers, mobile computers, laptop computers, tablet computers, wearable computers, implantable computers, communication devices, automotive computers, network-enabled televisions, thin clients, and terminals. , may be an integrated component for inclusion in a PDA, game console, gaming device, workstation, media player, personal video recorder (PVR), set-top box, camera, or computer device.
  • PDA personal video recorder
  • Node 200 may be a single computer device that is a distributed computer resource 250.
  • Node 200 may include any type of computer device having one or more processing units 202 operably coupled to a computer readable media (CRM) 204 via bus 240; , and in some cases may include one or more of these.
  • These buses 240 may include system buses, data buses, address buses, PCI buses, mini PCI buses, and various local, peripheral, and/or independent buses.
  • processing unit 202 may be, for example, a CPU-type processing unit, a GPU-type processing unit, a field programmable gate array (FPGA), a digital signal processor (DSP), or other hardware that may be driven by a CPU. It may include a processing unit 202 representing logic components.
  • FPGA field programmable gate array
  • DSP digital signal processor
  • these hardware logic components include application-specific integrated circuits (ASICs), application-specific standard products (ASPs), system-on-a-chip (SOC) systems, and complex programmable logic devices (CPLDs). It can be included.
  • the CRM 204 includes an external processing unit 208 such as an external CPU type processing unit 206, an external GPU type processing unit 208, and/or an FPGA type accelerator 210(1), a DSP type accelerator ( Commands executable by an external accelerator 210, such as 210(2)) or other accelerator 210(N), may be stored.
  • CRM 204 described herein may include computer storage media and/or communication media.
  • Computer storage media refers to types of memory, such as volatile memory, non-volatile memory, and/or other permanent or secondary computer storage media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. storage units, and may include removable and non-removable computer storage media.
  • Computer storage media includes RAM, static RAM (SRAM), dynamic RAM (DRAM), phase-change memory (PRAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), and electrically erasable programmable read-only memory. It may be memory (EEPROM), flash memory, DVD, optical storage media, magnetic cassette, magnetic tape, solid state memory (SSD), etc.
  • Executable instructions stored in CRM 204 may include operating system 220 and other modules, programs, or applications that are loadable and executable by processing unit 202.
  • the functionality described herein may be performed, at least in part, by one or more hardware logic components, such as an accelerator.
  • example types of hardware logic components include Field-programmable Gate Arrays (FPGAs), Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASSPs), and System-on-a chip systems. (SOC), Complex Programmable Logic Device (CPLD), etc.
  • the accelerator could be a hybrid device from XILINX or ALTERA that includes a CPU embedded in an FPGA fabric.
  • CRM 204 may also include data store 212.
  • data store 212 may include a data store, such as a database, data warehouse, or other type of structured or unstructured data store.
  • data store 212 may contain one or more hypertext markup language (HTML) tables, resource description framework (RDF) tables, Web Ontology Language (OWL) tables, and/or Extensible Markup (XML) tables. It may include a corpus and/or relational database with one or more tables, indexes, stored procedures, etc. that enable data access, such as web tables containing Language) tables.
  • HTML hypertext markup language
  • RDF resource description framework
  • OWL Web Ontology Language
  • XML Extensible Markup
  • data store 212 may store data and/or instructions for the operation of processes, applications, components and/or modules stored in CRM 204 and executed by processing unit 202.
  • the node 200 may further include one or more input/output (I/O) interfaces 216, where the node 200 can connect peripheral input devices (e.g. For example, it can communicate with user input devices, including keyboards, mice, pens, game controllers, voice input devices, touch input devices, gesture input devices, cameras, etc., and peripheral output devices (e.g. displays, printers, etc.). It may be an I/O interface 216 that allows communication with an input/output device.
  • I/O interface 216 that allows communication with an input/output device.
  • node 200 may be a node in a blockchain network and one or more input/output (I/O) networks that enable node 200 to communicate with other nodes in the blockchain network via network 260. It may further include an interface 218.
  • I/O input/output
  • Such input/output (I/O) network interface 218 may include one or more network interface controllers (NICs) or other types of transceiver devices for sending and receiving communications over network 260.
  • NICs network interface controllers
  • Network 260 may include a public network such as the Internet, a private network such as an institutional and/or private intranet, or some combination of private and public networks.
  • Network 260 may include any type of wired and/or wireless network, including, but not limited to, a local area network (LAN), a wide area network (WAN), a satellite network, a cable network, a Wi-Fi network, and a WiMax network. It may include mobile communication networks (e.g., 3G, 4G, 5G, etc.) or any combination thereof.
  • Network 260 may utilize communication protocols, including packet-based and/or datagram-based protocols, such as Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), or other types of protocols. there is.
  • IP Internet Protocol
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • network 260 may include a number of devices that facilitate network communications or form the hardware infrastructure for the network, such as switches, routers, gateways, access points, firewalls, base stations, repeaters, and backbone devices.
  • network 260 may further include devices that enable connection to a wireless network, such as a wireless access point (WAP).
  • WAP wireless access point
  • Embodiments according to the present invention include WAPs that support the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard (e.g., 802.11g, 802.11n, etc.) via various electromagnetic frequencies (e.g., radio frequencies). It can support connection through WAP for sending and receiving data.
  • IEEE Institute of Electrical and Electronics Engineers
  • CRM 204 may include an operating system 220 and a blockchain consensus system 222.
  • Blockchain consensus system 222 may include one or more modules and/or APIs, shown as blocks 224, 226, 228, 230, 232, and 234, but these are examples only and there may be more or more. You can write it down.
  • the functions described with respect to each block 224, 226, 228, 230, 232 and 234 may be combined to be performed by fewer modules and/or APIs or more modules and/or APIs. It can be divided and performed by .
  • some or all of the operating system, the data stored in the data store, and the transaction system of the accounts may include memory 214 on processing unit 202, memory 236(1) on CPU-like processing unit 206, and GPU.
  • the blockchain consensus system 222 includes a proposer node election module 224, an RS block candidate generation module 226, a commit node election module 228, a commit shard election module 230, and a WRS block candidate generation module 232. ) and a voting module 234.
  • All nodes that make up the blockchain network include the blockchain consensus system. All nodes in the blockchain network can function as a proposer node, a commit node that performs RS block consensus, and a commit node belonging to a committy shard that performs WRS block consensus. In each round, a proposer node, a committee node that performs RS block consensus, and a committee shard that performs WRS block consensus may be elected. Therefore, all nodes that make up the blockchain network include the blockchain consensus system, and necessary modules can be run based on the election results in the corresponding round.
  • All nodes that make up the blockchain network can run the proposer node election module 224 and the committe node election module 228 in each round to confirm the proposer node or committal node elected in that round.
  • the node elected as the proposer node that is, the proposer node of the round, runs the RS block candidate generation module 226 to collect the transaction blocks for each new account shared in the previous round to generate RS block candidates.
  • the RS block candidate can be transmitted to the committee nodes within the shard.
  • a node elected as a committee node that is, a committee node of the corresponding round, receives at least one RS block candidate from at least one proposer node, runs the voting module 234, and receives at least one RS block candidate together with other committee nodes in the shard.
  • a consensus can be reached by voting on the above RS block candidates.
  • Committee nodes elected from each shard can be named RS voters.
  • RS Voter's voting module 234 can perform a prevote procedure, a precommit procedure, and a commit procedure. At least one pro-vote procedure may be carried out.
  • the consensus result of the voting module 234 can be one of three results: consensus with one RS block, consensus with no agreed upon RS block, or consensus failure.
  • RS voters can share the RS consensus results with other nodes in the shard and with commit nodes in other shards. In other words, all committee nodes in all shards can obtain RS blocks agreed upon in all shards in the blockchain
  • the committee node can run the committee shard election module 230 to check the committee shards elected for WRS consensus in that round. At least one committee shard for WRS consensus can be elected, but it is desirable to have two or more committee shards. All committee nodes belonging to all committee shards can run the WRS block candidate generation module 232 and voting module 234. Committee nodes belonging to a committee shard can be named WRS voters.
  • the WRS block candidate generation module 232 of the WRS voter collects RS blocks collected from all shards to generate a WRS block candidate, and transmits the generated WRS block candidate to all WRS voters belonging to all committment shards to share them. can do.
  • the voting module 234 can vote and reach agreement on WRS block candidates while sharing voting results with all WRS voters.
  • the voting module 234 can perform a prevote procedure, a precommit procedure, and a commit procedure. At least one freeboat procedure may be performed.
  • the consensus result of the voting module 234 can be one of three results: consensus with one WRS block, consensus with no agreed upon WRS block, or consensus failure. WRS voters can share the WRS consensus results with all nodes in the blockchain network.
  • Figure 3 is a diagram showing information stored in the data storage 300 in the blockchain network of the present invention.
  • the account-specific transaction chain (AWTC) (302, 304, 306, 308) of all accounts belonging to the node's shard is combined with the account-specific transactions of all accounts belonging to the shard, and the Round State Chain (312), which stores the RS blocks agreed upon among all nodes as a chain, World Round State Chain (314), which combines all RS blocks belonging to the blockchain network and stores the agreed upon WRS blocks as a chain, and the node's
  • An intra-shard communication node list 316 that stores information on communication target nodes within a shard and an inter-shard communication node list 318 that stores information on communication target nodes other than the node's shard may be stored.
  • Figure 4 is a configuration diagram showing a blockchain consensus system 400 according to an embodiment of the present invention.
  • This blockchain consensus system 400 may be implemented by a computer system of a node, and the blockchain consensus system 400 of FIG. 4 may be the blockchain consensus system 222 of FIG. 2.
  • the blockchain consensus system 400 running on the node of the present invention includes a proposer node election module 402 that checks the proposer node election result, and a commit node election module 404 that checks the commit node election result. and, a committy shard election module 406 that checks the committy shard election results, and an RS block candidate generation module 408 that generates RS block candidates by collecting transaction blocks for each account when elected as a proposer node.
  • An RS block candidate sharing module 410 that allows the RS block candidate generated in the node to be shared with the committee node, and when elected as a committee node (hereinafter referred to as an RS voter), votes on the RS block candidate shared from the proposer node.
  • the RS block voting module 412 which agrees on the RS block voting agreement
  • the RS voting result sharing module 414 which shares the RS block voting agreement results with other nodes in the shard and with committee nodes outside the shard, and the committee nodes belonging to the committee shard (hereinafter referred to as a WRS voter)
  • a WRS block candidate generation module 416 When elected as a WRS voter (referred to as a WRS voter), a WRS block candidate generation module 416 generates a WRS block candidate by collecting the RS blocks shared from the committee nodes of all shards, and the WRS block candidate generated by the WRS voter is different from the WRS block candidate.
  • a WRS block candidate sharing module 418 that shares with voters, a WRS block voting module 420 that votes and agrees on the shared WRS block candidates, and a WRS vote that shares the results of the WRS block voting agreement with all nodes. Includes a result sharing module 422.
  • the RS block voting module 412 and the WRS block voting module 420 may be implemented with the same components. That is, as the same voting module, only the voting target can be changed to RS block candidates and WRS block candidates.
  • All committee nodes can function as RS voters to confirm RS blocks within a shard.
  • those belonging to the committee shard can function as WRS voters to confirm the WRS block.
  • a proposer node may be randomly selected from among the nodes constituting a shard by a method such as a Verifiable Random Function (VRF), and each node runs the proposer node election module 402 to select the proposer node. You can check whether you have been elected as a poser node.
  • VRF Verifiable Random Function
  • a committee node may be randomly elected among the nodes constituting a shard according to a method such as vote count, and each node is elected by running the committee node election module 404. You can check the committee nodes. In each round, all committee nodes may be newly elected, or some committee nodes from the previous round may be re-elected and only some may be newly elected. The vote count can be assigned considering the proposer activity history, voting participation history, node participation period, etc. In one shard, at least one proposer node and at least two commit nodes can be elected. Committee nodes elected from each shard can operate as RS voters.
  • a committee shard can be randomly selected among the shards that make up the blockchain network, and the committee nodes of each shard can check the elected committee shards by running the committee shard election module 406. At least one committee shard may be elected in each round. In each round, all committee shards may be newly elected, or some committee shards from the previous round may be re-elected and only some may be newly elected. Committee nodes elected from the committee shard can act as WRS voters.
  • the RS block candidate generation module 408 may operate when a node is elected as a proposer node.
  • the RS block candidate generation module 408 may generate an RS block candidate by calculating a hash value that collects transaction blocks for each account shared in the previous round.
  • Multiple proposer nodes elected from a shard may generate the same RS block candidate (usually RS block candidates are generated with the same account-specific transaction block, so RS block candidates with the same hash value are generated), or different RS block candidates can be created.
  • the RS block candidate sharing module 410 can share the RS block candidate by transmitting it to the commitment node (RS voter) within the shard. If a node is elected as a commitment node, the RS block candidate sharing module 410 can receive the RS block candidate from the proposer node in the shard.
  • the commitment node RS voter
  • the RS block voting module 412 can operate when a node is elected as a committee node.
  • the RS block voting module 412 can confirm the RS block connected to the round state chain by voting on the RS block candidate transmitted from the proposer node in the shard.
  • the RS block voting module 412 can confirm the RS block by performing at least one prevote step, precommit step, and commit step. As a result of executing the RS block voting module 412, one of the following results may be obtained: one RS block confirmed, no consensus, or consensus failure.
  • the RS block voting module 412 votes for one of the RS block candidates, and if there is an RS block candidate that has received more than a preset threshold (e.g., 2/3) as a result of the vote, it is a pre-commit stage. Proceed with a preset threshold (e.g., 2/3) as a result of the vote, it is a pre-commit stage.
  • the second pre-vote stage is a stage that proceeds if there is no RS block candidate with more than a preset threshold as a result of the voting in the first pre-vote stage. Voting for one of the RS block candidates with the maximum number of votes in the first pre-vote stage , If there is an RS block candidate that has received more than a preset threshold (e.g., 2/3) as a result of the vote, the process proceeds to the pre-commit stage.
  • a preset threshold e.g., 2/3
  • the voting results may be counted for some RS voters as there is an RS block candidate with more than the threshold number of votes, while for the remaining RS voters, the voting results may be counted as there is no RS block candidate with more than the threshold number of votes. It may also be counted.
  • the second pre-vote stage may proceed, and RS voters who are counted as having RS block candidates who received more than the threshold number of votes in the first pre-vote stage also receive more than the threshold number of votes in the second pre-vote stage. You can vote for one RS block candidate.
  • the third pre-vote stage is a stage that proceeds when there is no RS block candidate with more than a threshold number of votes as a result of the voting in the second pre-vote stage.
  • a blank block indicating no agreement is created and shared among RS voters, RS voters vote on the shared blank blocks, and if there is a blank block with more than a preset threshold as a result of the vote, it proceeds to the pre-commit stage. If there are no blank blocks with more than the threshold number of votes in the third prevote stage, the consensus is stopped due to consensus failure. In the next round, consensus can be attempted including transactions from the previous round that failed to reach consensus and transactions from the current round.
  • the precommit stage is a stage of voting for blocks that received more than the threshold number of votes in the prevote stage. Since there is a block (RS block or blank block) that received more than the threshold number of votes in the prevote stage, all RSs in this precommit stage Voters vote for one block.
  • the commit stage is the stage where the block (RS block or blank block) that received all votes in the pre-commit stage is signed.
  • the RS voting result sharing module 414 can share the execution results of the RS block voting module 412 with other nodes in the shard and with other committee nodes other than the shard.
  • the RS block that has been agreed upon and signed by the committee node is shared with other nodes in the shard, and each node can connect the corresponding RS block to the round state chain. Additionally, the RS block can be shared with other committee nodes in other shards.
  • the WRS block candidate generation module 416 can operate when the node is a committee node (WRS voter) belonging to a committee shard.
  • the WRS block candidate generation module 416 can receive a shared RS block that has been confirmed and signed from the commit- ment nodes of all shards, and calculates a hash value of the RS blocks shared by the commit- ment nodes of all shards to create a WRS block candidate. can be created.
  • Each WRS voter may generate the same WRS block candidate (usually generates WRS block candidates based on the same RS blocks, so WRS block candidates with the same hash value are generated), or may generate different WRS block candidates. .
  • the WRS block candidate sharing module 418 may operate when the node is a WRS voter.
  • the WRS block candidate sharing module 418 can transmit and share the WRS block candidates generated by each WRS voter to other WRS voters.
  • the WRS block voting module 420 can operate when the node is a WRS voter (committee node belonging to a committee shard).
  • the WRS block voting module 420 can confirm the WRS block connected to the World Round State Chain by voting on the WRS block candidates it created and the WRS block candidates shared from other WRS voters.
  • the WRS block voting module 420 can confirm a WRS block by performing at least one prevote step, precommit step, and commit step. As a result of executing the WRS block voting module 420, one of the following results may be derived: one WRS block confirmed, no consensus, or consensus failure.
  • the WRS block voting module 420 votes for one of the WRS block candidates, and if there is a WRS block candidate that has received more than a preset threshold (e.g., 2/3) as a result of the vote, it is a pre-commit stage.
  • the second pre-vote stage is a stage that proceeds when there is no WRS block candidate that received more than a threshold number of votes as a result of the voting in the first pre-vote stage.
  • a threshold number of votes As a result, if there is a WRS block candidate that has received more than a preset threshold (e.g., 2/3), the process proceeds to the pre-commit stage.
  • the voting results may be counted for some WRS voters as there is a WRS block candidate who received more than the threshold number of votes, and for the remaining WRS voters, the voting results may be counted as there is no WRS block candidate who received more than the threshold number of votes. It may also be counted.
  • the second pre-vote stage may proceed, and WRS voters who are counted as having WRS block candidates who received more than the threshold number of votes in the first pre-vote stage also receive more than the threshold number of votes in the second pre-vote stage. You can vote for one WRS block candidate.
  • the third pre-vote stage is a stage that proceeds when there is no WRS block candidate with more than a threshold number of votes as a result of the voting in the second pre-vote stage.
  • a blank block indicating no agreement is created and shared among WRS voters, WRS voters vote on the shared blank blocks, and if there is a blank block with more than a preset threshold as a result of the vote, it proceeds to the pre-commit stage. If there are no blank blocks with more than the threshold number of votes in the third prevote stage, the consensus is stopped due to consensus failure.
  • the pre-commit stage is a stage of voting for blocks that received more than the threshold number of votes in the pre-vote stage. Since there are blocks (WRS blocks or blank blocks) that received more than the threshold number of votes in the pre-vote stage, all WRS in this pre-commit stage Voters vote for one block.
  • the commit stage is the stage where a block (WRS block or blank block) that received all votes in the pre-commit stage is signed.
  • the WRS voting result sharing module 422 can share the execution results of the WRS block voting module 420 to all nodes in the blockchain network.
  • the WRS block that has been agreed upon and signed by the committee node is shared with all nodes, and each node can connect the corresponding WRS block to the World Round State Chain.
  • the committee node election module may improve the possibility of committee member election of a preset specific node.
  • FIG. 5 is a flowchart showing a blockchain consensus method in a proposer node according to an embodiment of the present invention
  • Figure 6 is a flowchart showing a blockchain consensus method in an RS voter according to an embodiment of the present invention.
  • FIG. 7 is a flowchart showing a blockchain consensus method in WRS Voter according to an embodiment of the present invention
  • FIG. 8 shows a process of voting for at least one block candidate according to an embodiment of the present invention. This is an operation flow chart.
  • a process is depicted as a logical flow of blocks, each block representing one or more operations that may be implemented in hardware, software, or a combination thereof.
  • operations represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, enable one or more processors to perform the recited operations.
  • computer executable instructions include routines, programs, objects, modules, components, data structures, things that perform a particular function or implement a particular abstract data type.
  • the order in which operations are described should not be construed as limiting, and the number of operations described may be performed in any order, subdivided into multiple sub-operations, or executed in parallel.
  • the proposer node checks whether the proposer node has been elected (S502) and confirms the commit node election result (S504). It is desirable that one node not be elected as both a proposer node and a commit node at the same time in one round. It is preferable that at least one proposer node is elected in one round, and it is more preferable that at least two or more proposer nodes are elected. This proposer node can be randomly elected.
  • the proposer node can generate an RS block candidate by calculating a hash value by collecting transaction blocks for each account shared in the previous round (S506).
  • the proposer node can transmit the generated RS block candidate to the commitment nodes (RS voters) within the shard (S508).
  • RS voters may be committee nodes elected for each shard.
  • the RS voter checks whether the proposer node is elected (S602) and confirms the commit node election result (S604).
  • the RS voter can receive at least one RS block candidate from at least one proposer node in the shard (S606).
  • RS voters communicate with other RS voters in the shard and vote on RS block candidates (S608), which can result in one of the following voting results: RS block confirmed, no RS block agreed upon, or consensus failed.
  • the RS block voting results can be shared with other nodes in the shard and with committy nodes in other shards (S610). The detailed procedure of step S608 for voting on at least one RS block candidate will be described with reference to FIG. 8.
  • a WRS voter may be a committee node belonging to a committee shard. WRS voters may function as RS voters voting for RS block candidates and then as WRS voters voting for WRS block candidates.
  • the WRS voter checks whether the proposer node is elected (S702) and confirms the commit node election result (S704).
  • the WRS voter can receive at least one RS block candidate from at least one proposer node in the shard (S706).
  • WRS voters communicate with other WRS voters in the shard and vote on at least one RS block candidate (S708), resulting in one of the following voting results: RS block confirmed, no RS block agreed upon, or consensus failed. .
  • the RS block voting results can be shared with other nodes in the shard and with committee nodes in other shards (S710).
  • WRS voters confirm the committee shard election results (S712).
  • the WRS voter can generate a WRS block candidate by collecting the confirmed RS blocks received from the commitment nodes of all shards and calculating a hash value (S714).
  • WRS voters can share the generated WRS block candidates with other WRS voters (S716).
  • WRS voters communicate with other WRS voters and vote on at least one WRS block candidate (S718), which can result in one of the following voting results: WRS block confirmed, no agreed upon WRS block, or consensus failed.
  • WRS block voting results can be shared with all nodes in the blockchain network (S720).
  • step S708 for voting on at least one RS block candidate and step S718 for voting on at least one WRS block candidate will be described with reference to FIG. 8.
  • Figure 8 is an operational flowchart (S800) illustrating a process of voting for at least one block candidate according to an embodiment of the present invention.
  • the process of voting for at least one block candidate in FIG. 8 may be performed by a voter, and the voter may be an RS voter or a WRS voter.
  • the block candidate may be an RS block candidate or a WRS block candidate.
  • the voter determines whether there is a block candidate that has received more than a preset threshold (e.g., 2/3) (S804). As a result of the determination in step S804, if there is a block candidate receiving more than the threshold number of votes, the process proceeds to the precommit step of step S814. If, as a result of the determination of step S804, there is no block candidate receiving more than the threshold number of votes, the process proceeds to the second step of step S806. Proceed to the freeboat stage.
  • a preset threshold e.g., 2/3
  • the voter determines whether there is a block candidate that has received more than a preset threshold (e.g., 2/3) (S808). As a result of the determination in step S808, if there is a block candidate receiving more than the threshold number of votes, the process proceeds to the precommit step of step S814. If, as a result of the determination of step S808, there is no block candidate receiving more than the threshold number of votes, the process proceeds to the third step of step S810. Proceed to the freeboat stage.
  • a preset threshold e.g., 2/3
  • the voting results may be counted for some WRS voters as there is a WRS block candidate who received more than the threshold number of votes, and for the remaining WRS voters, the voting results may be counted as there is no WRS block candidate who received more than the threshold number of votes. It may also be counted.
  • the second pre-vote stage may proceed, and WRS voters who are counted as having WRS block candidates who received more than the threshold number of votes in the first pre-vote stage also receive more than the threshold number of votes in the second pre-vote stage. Vote for one WRS block candidate.
  • the 2-2 free vote stage may be additionally conducted, and at this time, WRS voters who are counted as having WRS block candidates who received more than the threshold number of votes in the 2nd pre-vote stage may participate in the 2-2 free vote stage. Even in the free vote stage, votes are given to the WRS block candidate who received more than the relevant threshold.
  • the voter creates a blank block indicating no agreement, shares it among the voters, and votes on the blank block shared among the voters (S810).
  • the voter determines whether there is a blank block that has received more than a preset threshold (e.g., 2/3) (S812). As a result of step S812, if there is a blank block with more than the threshold number of votes, the process proceeds to the precommit step of step S814. If, as a result of step S812, there is no blank block with more than the threshold number of votes, the agreement is concluded as a consensus failure. Stop (S818).
  • a preset threshold e.g., 2/3
  • step S816 the voter confirms and signs the block that received all votes in the precommit phase (S816).
  • Embodiments according to the present invention described above may be implemented in the form of program instructions that can be executed through various computer components and recorded on a computer-readable recording medium.
  • a computer-readable recording medium may include program instructions, data files, data structures, etc., singly or in combination.
  • Program instructions recorded on a computer-readable recording medium may be specially designed and configured for the present invention, or may be known and usable by those skilled in the computer software field.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROMs and DVDs, and magneto-optical media such as floptical disks. media), and hardware devices specifically configured to store and perform program instructions, such as ROM, RAM, flash memory, etc.
  • Examples of program instructions include not only machine language code such as that created by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • the hardware device may be configured to operate as one or more software modules to perform processing according to the invention and vice versa.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 블록체인 네트워크의 복수의 커미티 노드(committee node)가 복수의 블록 후보들에 대해 투표하여 합의하는 시스템 및 방법에 관한 것이다. 본 발명의 일 실시예에 따른, 블록체인 네트워크를 구성하는 노드에서 구동하는 블록체인 합의 시스템에 있어서, 노드는 WRS 보터로 선출된 노드이다. 블록체인 합의 시스템은, 모든 샤드의 커미티 노드들로부터 합의된 RS 블록을 취합하여 WRS 블록 후보를 생성하는 WRS 블록 후보 생성 모듈, WRS 보터가 다른 WRS 보터들과 WRS 블록 후보를 공유하도록 하는 WRS 블록 후보 공유 모듈, WRS 보터가 다른 WRS 보터들과 통신하면서 공유된 WRS 블록 후보에 대해 투표하여 합의하는 WRS 블록 투표 모듈 및 WRS 보터가 WRS 블록 투표 결과를 블록체인 네트워크의 모든 노드들에게 공유하는 WRS 투표 결과 공유 모듈을 포함한다.

Description

블록체인 합의 시스템 및 방법
본 발명은 블록체인 네트워크에서 체인에 연결하는 블록을 합의하는 시스템 및 방법에 관한 것으로서, 보다 구체적으로 블록체인 네트워크의 복수의 커미티 노드(committee node)가 적어도 하나 이상의 블록 후보에 대해 투표하여 합의하는 시스템 및 방법에 관한 것이다.
블록체인은 기존의 중앙화된 기관이 거래 내용을 단일 위치(single point)에 저장하는 중앙화된 방식을 탈피하고자 등장한 탈중앙화 분산 트랜잭션 관리 기술이다. 블록체인은 P2P(Peer-to-Peer) 통신망에서, 모든 참여자가 합의 알고리즘을 통해서 정해진 공유 원장을 소유함으로써, 기록의 위조 및 변조를 불가능하게 만드는 분산 원장 시스템(Distributed Ledger System)이다. 즉, 분산 원장 시스템은 중앙관리자의 제어없이 각 노드가 분산 환경에서 원장이라는 데이터베이스를 동기화하여 유지하는 시스템이다.
블록체인에서 모든 노드가 동기화된 원장을 유지하기 위해서는 네트워크에서 발생하는 모든 트랜잭션과 블록이 저장되어야 한다. 이를 위해 종래에는 블록체인 네트워크의 모든 노드에 플러딩(Flooding) 방식으로 모든 메시지를 전파하였다. 그러나 이는 모든 노드가 모든 메시지를 수신하고 저장해야 한다는 문제, 즉 확장성의 문제를 수반한다.
확장성 문제를 해결하기 위해서, 최근 블록체인 분야에서는 다수의 노드를 다수의 샤드(shard group)에 분배하고, 분배된 각 샤드에 다수의 트랜잭션을 분할하여 병렬로 처리하도록 하는 샤딩(sharding) 방법이 제시되었다. 샤딩은 블록체인 네트워크에서 발생하는 트랜잭션과 블록을 작은 그룹인 샤드 단위로 나누어, 각 샤드에 속한 노드들은 다른 샤드의 트랜잭션과 블록을 처리할 필요없이 자신이 속한 샤드의 트랜잭션과 블록만을 처리하여 전체 네트워크의 트랜잭션 처리량과 분산 원장의 크기를 줄이는 방법이다.
블록체인에서 다수의 노드를 포함하는 커미티(committee)는 기본적으로 커미티 다수의 합의를 통해 블록을 검증하며, 합의에 도달하지 못한 블록은 선택에서 제외되어 체인에서 분리된다. 특정 블록에 대해 합의에 도달하기 위해서는 네트워크를 구성하는 전체 노드들 중 임계치 이상의 일정수의 노드가 합의해야 한다.
이러한 블록체인 합의는 다양한 합의 프로토콜에 의해 달성될 수 있다.
일 유형의 블록체인 네트워크에서, 합의는 작업 증명 알고리즘을 사용하여 달성될 수 있다. 작업 증명 합의 프로토콜은 일반적으로 합의 프로토콜에 참여하는 당사자로부터의 몇몇 작업을 필요로 하며, 이는 보통 컴퓨터에 의한 처리 시간에 대응한다. 비트코인과 같은 작업 증명 기반 암호화폐 시스템은 계산 집약적인 퍼즐을 푸는 것을 포함한다.
합의 프로토콜의 또 다른 유형은 지분 증명 알고리즘에 기초한다. 이러한 지분 증명 프로토콜은 시간 소모적이고 에너지 집약적인 컴퓨팅이 필요하지 않다는 장점이 있다. 지분 증명 기반 블록체인 네트워크에서 예컨대, 다음 블록의 생성자는 랜덤 선택과 네트워크의 각 노드의 지분의 조합을 통해 선택된다.
블록체인 네트워크에서 사용되는 또 다른 유형의 합의 프로토콜은 "비잔틴 장애 허용"(Byzantine Fault Tolerant: BFT) 프로토콜을 적용하여 블록에 포함된 트랜잭션에 대한 빠른 완결성에 도달하도록 설계될 수 있다. "동기" BFT 프로토콜은 안전을 위해 네트워크 동기화 가정에 의존하지만, "비동기" BFT 프로토콜은 그렇지 않다. 비동기 BFT 프로토콜은 전형적으로 1/3(3분의 1) 미만의 오류 참여 노드를 허용할 수 있다.
본 발명의 출원인은 DAG-AWTC(directed acyclic graph - account-wise transaction chain) 원장 구조에서 적용 가능하고, 비잔틴 장애 허용(Byzantine Fault Tolerant: BFT) 프로토콜을 기반하여, 새로운 블록체인 합의 시스템 및 방법을 제안한다.
본 발명의 목적은 상기와 같은 필요성을 충족시키기 위한 것으로서, 블록체인 네트워크에서 비잔틴 장애 허용 프로토콜을 기반하여 복수의 커미티 노드가 적어도 하나 이상의 블록 후보에 투표하여 합의하는 블록체인 합의 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 장치(시스템), 방법, 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 또는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 매체를 포함한 다양한 방식으로 구현될 수 있다.
본 발명의 일 실시예에 따른, 블록체인 네트워크를 구성하는 노드에서 구동하는 블록체인 합의 시스템에 있어서, 노드는 WRS 보터로 선출된 노드이다. 블록체인 합의 시스템은, 모든 샤드의 커미티 노드들로부터 합의된 RS 블록을 취합하여 WRS 블록 후보를 생성하는 WRS 블록 후보 생성 모듈, WRS 보터가 다른 WRS 보터들과 WRS 블록 후보를 공유하도록 하는 WRS 블록 후보 공유 모듈, WRS 보터가 다른 WRS 보터들과 통신하면서 공유된 WRS 블록 후보에 대해 투표하여 합의하는 WRS 블록 투표 모듈 및 WRS 보터가 WRS 블록 투표 결과를 블록체인 네트워크의 모든 노드들에게 공유하는 WRS 투표 결과 공유 모듈을 포함한다.
보다 바람직하게는, 노드는 RS 보터로 선출된 노드이고, 블록체인 합의 시스템은 샤드 내의 적어도 하나 이상의 프로포저 노드로부터 각각 RS 블록 후보를 수신하는 RS 블록 후보 공유 모듈, RS 보터가 다른 RS 보터들과 통신하면서 프로포저 노드로부터 수신된 적어도 하나 이상의 RS 블록 후보에 대해 투표하여 합의하는 RS 블록 투표 모듈 및 RS 보터가 RS 블록 투표 결과를 샤드 내 모든 노드들 및 WRS 보터들에게 공유하는 RS 투표 결과 공유 모듈을 더 포함한다.
보다 바람직하게는, 블록 투표 결과는 블록 후보 중 하나의 블록 확정, 합의된 블록 없음, 합의 실패 중 적어도 하나를 포함한다.
보다 바람직하게는, 블록 투표 결과가 기설정된 라운드동안 합의 실패가 반복되면, 기설정된 노드가 보터로 선출될 가능성이 높아진다.
보다 바람직하게는, 블록 투표 모듈은, 적어도 하나 이상의 프리보트 단계, 프리커밋 단계 및 커밋 단계를 수행한다.
보다 바람직하게는, 프리보트 단계는 기설정된 임계치 이상의 개수를 득표한 블록을 도출하는 단계이고, 프리커밋 단계는 프리보트 단계에서 임계치 이상의 개수를 득표한 블록에 투표하는 단계이고, 커밋 단계는 프리커밋 단계에서 투표된 블록에 확정 서명하는 단계이다.
보다 바람직하게는, 프리보트 단계는 적어도 둘 이상의 프리보트 단계들을 포함하고, 둘 이상의 프리보트 단계들 중 하나의 프리보트 단계에서 기설정된 임계치 이상의 개수를 득표한 블록이 도출된 보터는 이후 프리보트 단계에서 이전 프리보트 단계와 동일한 블록에 투표하도록 한다.
본 발명의 일 실시예에 따른, 블록체인 네트워크를 구성하는 노드에서 구동하는 블록체인 합의 방법에 있어서, 노드는 WRS 보터로 선출된 노드이다. 블록체인 합의 방법은, 모든 샤드의 커미티 노드들로부터 합의된 RS 블록을 취합하여 WRS 블록 후보를 생성하는 단계, WRS 보터가 다른 WRS 보터들과 WRS 블록 후보를 공유하도록 하는 단계, WRS 보터가 다른 WRS 보터들과 통신하면서 공유된 WRS 블록 후보에 대해 투표하여 합의하는 블록 투표 단계 및 WRS 보터가 WRS 블록 투표 결과를 블록체인 네트워크의 모든 노드들에게 공유하는 단계를 포함한다.
보다 바람직하게는, 노드는 RS 보터로 선출된 노드이고, 블록체인 합의 방법은, 샤드 내의 적어도 하나 이상의 프로포저 노드로부터 각각 RS 블록 후보를 수신하는 단계, RS 보터가 다른 RS 보터들과 통신하면서 프로포저 노드로부터 수신된 적어도 하나 이상의 RS 블록 후보에 대해 투표하여 합의하는 블록 투표 단계 및 RS 보터가 RS 블록 투표 결과를 샤드 내 모든 노드들 및 WRS 보터들에게 공유하는 단계를 더 포함한다.
보다 바람직하게는, 블록 투표 결과는 블록 후보 중 하나의 블록 확정, 합의된 블록 없음, 합의 실패 중 적어도 하나를 포함한다.
보다 바람직하게는, 블록 투표 결과가 기설정된 라운드동안 합의 실패가 반복되면, 기설정된 노드가 보터로 선출될 가능성이 높아진다.
보다 바람직하게는, 블록 투표 단계는, 적어도 하나 이상의 프리보트 단계, 프리커밋 단계 및 커밋 단계를 포함한다.
보다 바람직하게는, 프리보트 단계는 기설정된 임계치 이상의 개수를 득표한 블록을 도출하는 단계이고, 프리커밋 단계는 프리보트 단계에서 임계치 이상의 개수를 득표한 블록에 투표하는 단계이고, 커밋 단계는 프리커밋 단계에서 투표된 블록에 확정 서명하는 단계이다.
보다 바람직하게는, 프리보트 단계는 적어도 둘 이상의 프리보트 단계들을 포함하고, 둘 이상의 프리보트 단계들 중 하나의 프리보트 단계에서 기설정된 임계치 이상의 개수를 득표한 블록이 도출된 보터는 이후 프리보트 단계에서 이전 프리보트 단계와 동일한 블록에 투표하도록 한다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 블록체인 네트워크를 샤드 단위로 나누어 트랜잭션과 블록을 처리함으로써, 트랜잭션 처리량과 분산 원장의 크기를 줄일 수 있어 블록체인 네트워크의 확장성을 증대시킬 수 있다.
본 발명은 블록체인 네트워크를 구성하는 노드들 중 일부의 커미티 노드가 블록체인 네트워크의 체인에 연결할 블록을 합의하고, 합의된 블록을 블록체인 네트워크를 구성하는 모든 노드들이 공유하기 때문에 네트워크의 확장성(scalability)을 향상시킬 수 있다.
본 발명은 샤드 내 라운드 스테이트 블록에 대해 비잔틴 장애 허용 프로토콜을 기반하여 복수의 커미티 노드가 적어도 하나 이상의 라운드 스테이트 블록 후보에 대해 투표하며 합의하여, 합의된 라운드 스테이트 블록만이 라운드 스테이트 체인에 연결되도록 하여, 네트워크의 안정성을 향상시킬 수 있다.
본 발명은 월드 라운드 스테이트 블록에 대해 비잔틴 장애 허용 프로토콜을 기반하여 복수의 커미티 노드가 하나 이상의 월드 라운드 스테이트 블록 후보에 대해 투표하며 합의하여, 합의된 월드 라운드 스테이트 블록만이 월드 라운드 스테이트 체인에 연결되도록 하여, 네트워크의 안정성을 향상시킬 수 있다.
본 발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자("통상의 기술자"라 함)에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 본 발명의 3개의 샤드로 분할된 블록체인 네트워크의 개념도를 도시한 도면이다.
도 2는 본 발명의 블록체인 합의 시스템을 포함하는 노드의 예시적인 구성을 도시한 블록도이다.
도 3은 본 발명의 블록체인 네트워크에서, 데이터 저장소에 저장된 정보를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 블록체인 합의 시스템을 도시한 구성도이다.
도 5는 본 발명의 일 실시예에 따른 프로포저 노드에서의 블록체인 합의 방법을 도시한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 RS 보터에서의 블록체인 합의 방법을 도시한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 WRS 보터에서의 블록체인 합의 방법을 도시한 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 적어도 하나 이상의 블록 후보에 대해 투표하는 과정을 도시한 동작 흐름도이다.
본 발명의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
[부호의 설명]
400; 블록체인 합의 시스템 402; 프로포저 노드 선출 모듈
404; 커미티 노드 선출 모듈 406; 커미티 샤드 선출 모듈
408; RS 블록 후보 생성 모듈 410; RS 블록 후보 공유 모듈
412; RS 블록 투표 모듈 414; RS 투표 결과 공유 모듈
416; WRS 블록 후보 생성 모듈 418; WRS 블록 후보 공유 모듈
420; WRS 블록 투표 모듈 422; WRS 투표 결과 공유 모듈
이하, 본 발명의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
본 명세서에 개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명과 연관된 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않은 한 이상적으로 또는 과도하게 해석되지 않는다.
예를 들어, "기술"이라는 용어는 시스템, 방법, 컴퓨터 판독 가능 명령어, 모듈, 알고리즘, 하드웨어 로직 및/또는 상기 기술된 문맥에 의해 허용되고 문서 전체에 걸쳐 동작을 지칭할 수 있다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도, 판례 또는 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
본 발명에서, '포함하다', '포함하는' 등의 용어는 특징들, 단계들, 동작들, 요소들 및/또는 구성요소들이 존재하는 것을 나타낼 수 있으나, 이러한 용어가 하나 이상의 다른 기능들, 단계들, 동작들, 요소들, 구성요소들 및/또는 이들의 조합이 추가되는 것을 배제하지는 않는다.
본 발명에서, 특정 구성요소가 임의의 다른 구성요소에 '결합', '조합', '연결', '연관' 되거나, '반응' 하는 것으로 언급된 경우, 특정 구성요소는 다른 구성요소에 직접 결합, 조합, 연결 및/또는 연관되거나, 반응할 수 있으나, 이에 한정되지 않는다. 예를 들어, 특정 구성요소와 다른 구성요소 사이에 하나 이상의 중간 구성요소가 존재할 수 있다. 또한, 본 발명에서 "및/또는"은 열거된 하나 이상의 항목의 각각 또는 하나 이상의 항목의 적어도 일부의 조합을 포함할 수 있다.
본 발명에서, '제1', '제2' 등의 용어는 특정 구성요소를 다른 구성요소와 구별하기 위해 사용되는 것으로, 이러한 용어에 의해 상술한 구성요소가 제한되진 않는다. 예를 들어, '제1' 구성 요소는 '제2' 구성 요소와 동일하거나 유사한 형태의 요소를 지칭하기 위해 사용될 수 있다.
본 발명에서 '블록체인 네트워크'는 블록체인 시스템에 참가하며 인터넷 등으로 상호 피투피 통신하는 여러 컴퓨터(노드)들의 집합체이고, 본 발명에서 '노드'는 블록체인 네트워크에 참가하는 컴퓨터일 수 있다. 여기서, 컴퓨터는 CPU, 메모리, 통신, 입출력 기능을 갖는 장치를 모두 포괄하는 의미로서, 구체적으로는 서버 컴퓨터, 개인용 컴퓨터(PC), 휴대폰 단말기, 소형 가전기기 등을 포함할 수 있다.
노드는 블록체인 네트워크를 통해 정보의 공유 및 확산을 실행할 수 있다. 노드는 적어도 하나 이상의 사용자 어카운트(계정)를 관리한다. 노드가 관리하는 어카운트에는, 노드 소유자의 어카운트(이하, 호스트 어카운트라 함)와, 다른 사용자로부터 관리를 위탁받은 어카운트(이하, 게스트 어카운트라 함)가 포함될 수 있다. 노드는 자신이 관리하는 호스트 어카운트와 게스트 어카운트에 관한 모든 정보를 저장하고 블록체인 네트워크 상의 다른 노드들에게 전송하며, 다른 노드들로부터 각 노드에서 관리하는 호스트 어카운트와 게스트 어카운트에 관한 최신 정보를 수신할 수 있다.
본 발명에서 '어카운트(account)'라 함은 블록체인에 참여하는 사용자 계정으로서, 한 유저를 나타내는 데이터 구조일 수 있다. 어카운트는 트랜잭션을 발행함으로써 블록체인 시스템에 정보가 추가될 수 있으며, 유저가 발행한 트랜잭션의 링크된 리스트일 수 있다. 트랜잭션은 유저가 시스템에 추가하는 데이터의 단위일 수 있다. 어카운트는 노드를 소유하여 자기 자신의 트랜잭션 정보를 직접 관리할 수 있으며, 이러한 어카운트를 호스트 어카운트라 할 수 있다. 또는, 어카운트는 다른 사용자의 노드에 트랜잭션 정보를 위탁하여 관리시킬 수 있으며, 이러한 어카운트를 게스트 어카운트라 하고, 어카운트 관리를 위탁받은 노드를 위탁 노드라 할 수 있다. 노드와 어카운트의 본인 확인은 암호키로 가능하며, 같은 암호키로 트랜잭션에 서명할 수 있다. 게스트 어카운트는 스스로 노드를 운영하여 호스트 어카운트가 될 수도 있고 위탁 노드를 변경할 수도 있으며, 호스트 어카운트는 위탁 노드를 선정하여 게스트 어카운트가 될 수도 있다.
본 발명에서 '트랜잭션'이라 함은 블록체인에 추가되는 정보의 단위로서, 하나의 어카운트가 단독으로 발행할 수 있다. 트랜잭션의 내용은 명목상으로는 사용자가 제공하는 임의의 정보이며, 실제로는 시스템 내에서 의미있는 메시지일 수 있다. 예컨대, 트랜잭션에는 '어카운트 A가 어카운트 B에게 100 코인을 보냈음", "어카운트는 B는 어카운트 A로부터 100 코인을 받음" 등의 메시지가 포함될 수 있다. 본 발명에서는 트랜잭션의 일련 번호는 0부터 시작하는 양의 정수로서, 트랜잭션마다 1씩 증가하고, 어카운트별로 원장을 관리하는 계정별 트랜잭션 체인(AWTC: Account-Wise Transaction Chain)을 사용한다. 계정별 트랜잭션 체인(AWTC)에 대한 기술은 본 발명의 출원인이 특허출원한 대한민국 공개특허 제2021-0015196호에 기재된 내용을 참조하여 이해될 수 있다.
본 발명에서 '샤드'는 블록체인 네트워크에 참여하는 노드들의 소집합일 수 있다. 전체 블록체인 네트워크는 둘 이상의 샤드로 분할될 수 있다. 분할되지 않는 경우에는 모든 노드가 한 샤드에 참여한다고 보며, 각 샤드는 고유의 주소를 갖는다. 통상적으로 샤딩 기법을 적용한 블록체인 네트워크는 동일 샤드에 속한 노드들끼리 상호 피투피 통신을 하며, 동일 샤드에 속한 모든 어카운트들의 계정별 트랜잭션 체인(AWTC)을 공유한다. 본 발명을 적용한 블록체인 네트워크에서, 샤드가 동일한 노드간 상호 피투피 통신하며, 동일 샤드에 속한 모든 어카운트들의 계정별 트랜잭션 체인(AWTC)을 공유할 수 있다.
본 발명에서 블록체인 네트워크 및 샤드에서의 '피투피 통신'이라 함은 임의의 노드가 어떤 정보를 수신하면, 수신한 정보를 복제하여 다른 노드들에게 전송하고, 전송받은 노드 또한 해당 정보를 복제하여 다른 노드들에게 전송하는 과정을 반복하여, 충분한 시간 후 블록체인 네트워크 및 샤드에 속한 모든 노드가 해당 정보를 공유하는 것을 의미할 수 있다.
본 발명에서 '라운드'라 함은 합의 단위 시간일 수 있다. 본 발명에서 이전 라운드에서 발생되어 공유된 트랜잭션이 현재 라운드에서의 합의 대상이 될 수 있다.
본 발명에서 '블록'은 특정 기간 동안 샤드 또는 블록체인 네트워크에 추가된 트랜잭션의 서명된 목록일 수 있다. 발생된 트랙잭션이 합의 알고리즘을 통해 목록을 서명함으로서 블록이 생성될 수 있다. 블록은 한 번에 하나만 생성될 수 있으며, 기존의 블록 리스트에 새로운 블록을 추가함으로서 블록체인을 구성할 수 있다.
본 발명에서 계정별 트랜잭션 체인(AWTC)은 어카운트별로 발생한 트랜잭션 블록을 연결한 체인일 수 있다. 임의의 한 라운드에서 발생한 트랜잭션 블록은 동일한 샤드에 포함된 모든 노드들에게 공유되며, 계정별 트랜잭션 체인(AWTC)은 동일 샤드 내 모든 노드들이 공유할 수 있다. 임의의 한 샤드 내에서 임의의 한 라운드에 발생된 모든 트랜잭션 블록은 취합되어 라운드 스테이트 블록(Round State Block, 이하 RS 블록이라 함)으로 생성될 수 있다. 이 RS 블록은 해당 샤드에서 해당 라운드에 발생된 모든 트랜잭션 블록에 관한 정보를 포함하는 해쉬값일 수 있다.
본 발명에서 라운드 스테이트 체인(Round State Chain)은 동일 샤드에 속한 어카운트들의 트랜잭션 블록을 취합한 RS 블록으로서, 본 발명의 합의 방법을 기반으로 합의된 RS 블록을 연결한 블록체인일 수 있다. 임의의 한 라운드에서 노드들에게 공유된 계정별 트랜잭션 블록이 취합되고, 다음 라운드에서 본 발명의 합의 방법을 기반으로 합의될 수 있다. 커미티 노드들에 의해 합의된 RS 블록은 샤드 내의 다른 노드들에게 공유되어, 샤드 내의 모든 노드들이 라운드 스테이트 체인에 RS 블록을 연결할 수 있다.
아울러 각 샤드별로 합의된 RS 블록은 블록체인 네트워크의 다른 샤드들의 커미티 노드들에게 공유될 수 있다. 각 샤드의 커미티 노드들은 모든 샤드의 RS 블록을 취합하여, 월드 라운드 스테이트 블록(World Round State Block, 이하 WRS 블록이라 함)을 생성할 수 있다. 이 WRS 블록은 해당 라운드에서 발생된 모든 RS 블록에 관한 정보를 포함하는 해쉬값일 수 있다.
본 발명에서 월드 라운드 스테이트 체인(World Round State Chain)은 모든 샤드들에서 각자 합의된 RS 블록들을 취합한 WRS 블록으로서, 본 발명의 합의 방법을 기반으로 합의된 WRS 블록을 연결한 체인일 수 있다. 커미티 노드들에 의해 합의된 WRS 블록은 블록체인 네트워크의 모든 노드들에게 공유되어, 네트워크 상의 모든 노드들이 월드 라운드 스테이트 체인에 WRS 블록을 연결할 수 있다.
이하에 기술된 운영 시스템은 하나의 실시예를 구성하고 청구 범위를 임의의 하나의 특정 운영 환경으로 제한하려는 것은 아니다. 청구된 요지의 기술적 사상 및 범위를 벗어나지 않고 다른 환경에서도 사용될 수 있다.
도 1은 본 발명의 3개의 샤드로 분할된 블록체인 네트워크의 개념도를 도시한 도면이다.
블록체인 네트워크를 구성하는 복수의 노드들이 3개의 샤드(110, 120, 130)로 분할될 수 있으며, 이에 한정되지 않는다. 샤드의 개수는 블록체인 네트워크를 구성하는 노드 및 어카운트의 개수가 증가함에 따라 늘어날 수 있으며, 이때, 하나의 샤드가 2개로 분할될 수 있다. 현재 샤드 내에 소속된 노드들은 모두 동일한 정보를 공유할 수 있다. 각 노드들은 샤드 내에 소속된 모든 어카운트들의 트랜잭션 블록들이 연결된 계정별 트랜잭션 체인(AWTC)을 공유할 수 있다.
각 노드들은 동일 샤드 내 노드들 중 피투피 통신 대상(인트라샤드 통신 노드) 정보를 저장한 인트라샤드 통신 노드 리스트와, 동일 샤드 외 노드들 중 피투피 통신 대상(인터샤드 통신 노드) 정보를 저장한 인터샤드 통신 노드 리스트를 포함할 수 있다. 각 노드의 동일 샤드 내 통신 대상인 인트라샤드 통신 노드는 kademlia 규칙에 따라 결정될 수 있다. 각 노드의 샤드 외 통신 대상인 인터샤드 통신 노드는 이웃 샤드에 속한 노드들 중 일부 노드들로 랜덤하게 결정할 수 있다.
이러한 방식으로 결정된 인트라샤드 통신 노드 리스트 및 인터샤드 통신 노드 리스트를 기반으로 샤드 내 및 샤드 외 피투피 통신을 통한 정보 공유가 가능해진다. 임의의 노드는 인트라샤드 통신 노드와 공유하는 정보와, 인터샤드 통신 노드와 공유하는 정보가 다를 수 있다. 즉, 인터샤드 통신 노드와 공유하는 정보는 인트라샤드 통신 노드와 공유하는 정보 보다 제한적일 수 있다. 각 노드에 할당되는 인트라샤드 통신 노드 리스트와 인터샤드 통신 노드 리스트에 포함되는 인트라샤드 통신 노드와 인터샤드 통신 노드는 랜덤하게 재구성될 수 있다.
도 1에서 샤드 내 노드들과 통신하는 노드들(111, 121, 131)은 해칭되지 않은 원형으로 표시되어 있고, 샤드 외 노드들과 통신하는 노드들(112, 122, 132)은 해칭 처리된 원형으로 표시되어 있다. 샤드 외 노드들과 통신하는 노드들(112, 122, 132)은 인터샤드 통신 노드 리스트를 기반으로 이웃 샤드에 속한 노드들과 통신할 수 있다. 여기서, 이웃 샤드라 함은 샤드 주소의 비트 거리가 1인 샤드일 수 있다. 비트 거리가 1이라 함은, 샤드의 주소가 오직 한 자리의 비트 값만 다른 것을 의미할 수 있다. 즉, 주소 '00'과 비트 거리가 1인 주소는 '01'과 '10'일 수 있다.
도 1의 예에서, 제1샤드(110)의 주소는 '00', 제2샤드(120)의 주소는 '01', 제3샤드(130)의 주소는 '10'인 경우, 제1샤드(110)와 제2샤드(120)의 주소는 각각 '00', '01'로서 비트 거리가 1이고, 제1샤드(110)와 제3샤드(130)의 주소는 각각 '00', '10'로서 비트 거리가 1이지만, 제2샤드(110)와 제3샤드(130)의 주소는 각각 '01', '10'로서, 2개의 자리값이 다르기 때문에 비트 거리가 1이 아니다.
따라서, 제1샤드와 제2샤드는 이웃 샤드이고, 제1샤드와 제3샤드는 이웃 샤드로서, 직접 통신을 할 수 있다. 그러나, 제2샤드와 제3샤드는 이웃 샤드가 아니라서 직접 통신을 할 수 없으며, 각각 이웃 샤드인 제1샤드를 통해서 통신을 할 수 있다.
도 1의 각 노드들은 샤드 리밸런싱 알고리즘을 포함하며, 기설정된 조건에 따라 샤드 리밸런싱 알고리즘이 실행될 수 있다. 샤드 리밸런싱 알고리즘은 바운디드 쿡쿠(Bounded Cuckoo) 알고리즘을 사용할 수 있으나, 이에 한정되지는 않는다. 바운디드 쿡쿠 알고리즘은 래피드체인(rapidchain) 소개자료(RapidChain: Scaling Blockchain via Full Sharding, https://eprint.iacr.org/2018/460.pdf 참고)에 상세하게 기술되어 있다. 본 발명은 바운디드 쿡쿠 알고리즘을 기반으로 샤드들의 건강(health) 지수를 계산하여, 강한(strong) 샤드와 약한(weak) 샤드로 분류하고, 정기적으로 강한 샤드에서 랜덤으로 일부 노드를 추출하여 약한 샤드로 이동시킬 수 있다. 샤드 리밸런싱 알고리즘이 실행되면, 샤드를 변경할 노드들이 랜덤으로 선정되어, 노드의 샤드가 재할당되어 변경될 수도 있다.
각 샤드는 적어도 하나 이상의 프로포저 노드와 적어도 둘 이상의 커미티 노드들을 포함할 수 있으며, 프로포저 노드는 적어도 둘 이상인 것이 바람직하다. 프로포저 노드는 샤드에 소속된 어카운트들의 신규 계정별 트랜잭션 블록들을 결합하여 RS 블록 후보를 생성할 수 있다. 프로포저 노드는 자신이 생성한 RS 블록 후보를 커미티 노드들에게 전송하고, 커미티 노드들은 수신된 적어도 하나 이상의 RS 블록 후보에 대해 투표할 수 있다.
여기서, 신규 계정별 트랜잭션 블록이라 함은 라운드 스테이트 체인에 연결되지 않은 트랜잭션 블록을 의미할 수 있다. 본 발명에서, 각 샤드의 프로포저 노드는 이전 라운드에 공유된 트랜잭션 블록을 취합하여 RS 블록 후보를 생성할 수 있다. 이러한 RS 블록 후보는 해쉬값일 수 있다. 동일한 계정별 트랜잭션 블록을 기반으로 생성된 RS 블록 후보는 동일한 해쉬값, 즉 동일한 해쉬 식별자를 가질 수 있다. 즉, RS 블록 후보는 복수의 프로포저 노드들이 생성하더라도 동일한 해쉬값을 가져서 하나일 수 있으며, 복수의 프로포저 노드가 각각 다른 해쉬값의 둘 이상의 RS 블록 후보를 생성할 수도 있다.
이렇게 생성된 RS 블록 후보는 적어도 둘 이상의 커미티 노드들에게 공유되고, 커미티 노드들은 RS 블록 후보에 대해 투표를 진행하여 합의할 수 있다. 커미티 노드들에 의해 합의된 RS 블록은 해당 샤드의 모든 노드들에게 공유될 수 있다. 아울러, 커미티 노드들에 의해 합의된 RS 블록은 다른 샤드들의 커미티 노드들에게 공유될 수 있다.
커미티 샤드에 소속된 커미티 노드들은 블록체인 네트워크의 각각의 샤드들로부터 합의된 RS 블록을 수집하고, 수집된 RS 블록을 결합하여 WRS 블록 후보를 생성할 수 있다. WRS 블록 후보는 해쉬값일 수 있다. 동일한 RS 블록을 기반으로 생성된 WRS 블록 후보들은 동일한 해쉬값, 즉 동일한 해쉬 식별자를 가질 수 있다. 즉, 복수의 커미티 노드에서 각각 생성된 WRS 블록 후보는 동일한 해쉬값으로서 모두 동일할 수도 있고, 둘 이상일 수도 있다.
커미티 샤드에 소속된 커미티 노드들은 각자 자신이 생성한 WRS 블록 후보를 상호 공유하고, 공유된 WRS 블록 후보에 대해 투표하여 합의할 수 있다. 커미티 샤드에 소속된 커미티 노드들에 의해 합의된 WRS 블록은 블록체인 네트워크의 모든 노드들에게 공유될 수 있다.
도 2는 본 발명의 블록체인 합의 시스템을 포함하는 노드(200)의 예시적인 구성을 도시한 블록도이다. 각 노드는 컴퓨터 장치로 구현될 수 있다.
일부 예에서, 노드(200)의 다양한 장치 및/또는 구성 요소는 하나 이상의 네트워크(260)를 통해 서로 및 외부 장치와 통신할 수 있는 분산 컴퓨터 리소스(250)를 포함할 수 있다.
다양한 실시예에서, 분산 컴퓨터 리소스(250)는 장치(250(1) ~ 250(N))를 포함할 수 있다.
본 발명의 실시예는 분산 컴퓨터 리소스(250)가 클러스터 또는 다른 그룹화된 구성으로 동작하여 리소스를 공유하고, 부하를 분산시키며, 성능을 높이고, 또는 다른 목적을 위해 하나 이상의 컴퓨터 장치를 포함할 수 있는 시나리오를 지원한다.
분산 컴퓨터 리소스(250)는 종래의 서버형 장치, 데스크탑 컴퓨터형 장치, 모바일 장치, 특수 목적형 장치, 내장형 장치 및/또는 웨어러블형 장치와 같은 다양한 범주에 해당할 수 있다. 따라서, 데스크톱 및 랩톱 컴퓨터로 설명되었지만 분산 컴퓨터 리소스(250)는 다양한 장치 유형을 포함할 수 있으며 특정 유형의 장치로 제한되지 않는다. 분산 컴퓨터 리소스(250)는 데스크톱 컴퓨터, 서버 컴퓨터, 웹 서버 컴퓨터, 개인용 컴퓨터, 모바일 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨터, 이식형 컴퓨터, 통신 장치, 자동차 컴퓨터, 네트워크 지원 텔레비전, 씬 클라이언트, 터미널, PDA, 게임 콘솔, 게임 장치, 워크 스테이션, 미디어 플레이어, 개인 비디오 레코더(PVR), 셋톱 박스, 카메라, 컴퓨터 장치에 포함하기 위한 통합 구성 요소일 수 있다.
노드(200)는 분산 컴퓨터 리소스(250)인 하나의 컴퓨터 장치일 수 있다. 노드(200)는 버스(240)를 통해 컴퓨터 판독 가능 매체(CRM : Computer Readable Media)(204)에 작동 가능하게 연결된 하나 이상의 프로세싱 유닛(202)을 갖는 임의의 유형의 컴퓨터 장치를 포함할 수 있으며, 일부 경우에는 이들 중 하나 이상을 포함할 수 있다. 이러한 버스(240)는 시스템 버스, 데이터 버스, 주소 버스, PCI 버스, 미니 PCI 버스 및 다양한 로컬, 주변 장치 및/또는 독립 버스를 포함할 수 있다.
노드(200)에서, 프로세싱 유닛(202)은 예를 들어 CPU 타입 프로세싱 유닛, GPU 타입 프로세싱 유닛, 필드 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP) 또는 CPU에 의해 구동 될 수 있는 다른 하드웨어 로직 구성 요소를 나타내는 프로세싱 유닛(202)을 포함할 수 있다.
예를 들어, 이러한 하드웨어 로직 구성 요소는 ASIC(Application-Specific Integrated Circuits), ASP(Application-Specific Standard Products), SOC(System-on-a-chip) 시스템, 복잡한 프로그래밍 가능 논리 장치(CPLD) 등을 포함할 수 있다. 구체적으로, CRM(204)은 외부 CPU 타입 프로세싱 유닛(206), 외부 GPU 타입 프로세싱 유닛(208)과 같은 외부 프로세싱 유닛(208) 및/또는 FPGA형 가속기(210(1)), DSP형 가속기(210(2)) 또는 기타 가속기(210(N))와 같은 외부 가속기(210)에 의해 실행 가능한 명령을 저장할 수 있다.
본 명세서에 기재된 CRM(204)는 컴퓨터 저장 매체 및/또는 통신 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 메모리, 비휘발성 메모리 및/또는 다른 영구 또는 보조 컴퓨터 저장 매체와 같은 유형의 저장 유닛, 착탈식 및 비착탈식 컴퓨터 저장 매체를 포함할 수 있다.
컴퓨터 저장 매체는 RAM, 정적 RAM(SRAM), 동적 RAM(DRAM), 위상 변화 메모리(PRAM), 읽기전용메모리(ROM), 소거 가능 프로그래밍 가능 읽기 전용 메모리(EPROM), 전기 소거 가능 프로그램 가능 읽기 전용 메모리(EEPROM), 플래시 메모리, DVD, 광학 저장 매체, 자기 카세트, 자기 테이프, 솔리드스테이트 메모리(SSD) 등일 수 있다.
CRM(204)에 저장된 실행 가능한 명령어는 운영 체제(220) 및 프로세싱 유닛(202)에 의해 로드 가능하고 실행 가능한 다른 모듈, 프로그램 또는 애플리케이션을 포함할 수 있다.
추가적으로 또는 대안적으로, 본 명세서에서 기능적으로 설명된 것은 가속기와 같은 하나 이상의 하드웨어 로직 구성 요소에 의해 적어도 부분적으로 수행될 수 있다.
예를 들어, 사용될 수 있는 예시적인 유형의 하드웨어 로직 구성 요소는 FPGA(Field-programmable Gate Array), ASIC(Application-Specific Integrated Circuits), ASSP(Application-Specific Standard Products), System-on-a chip system(SOC), 복합 프로그램가능 로직 장치(CPLD) 등을 포함한다. 예를 들어, 가속기는 FPGA 패브릭에 내장된 CPU를 포함하는 XILINX 또는 ALTERA의 하이브리드 장치일 수 있다.
예시된 실시예에서, CRM(204)은 또한 데이터 저장소(212)를 포함할 수 있다. 일부 실시예에서, 데이터 저장소(212)는 데이터베이스, 데이터웨어 하우스 또는 다른 유형의 구조적 또는 비 구조적 데이터 저장소와 같은 데이터 저장소를 포함할 수 있다.
일부 실시예에서, 데이터 저장소(212)는 하나 이상의 하이퍼 텍스트 마크업 언어(HTML) 테이블, 자원 설명 프레임 워크(RDF : Resource description framework) 테이블, 웹 온톨로지 언어(OWL) 테이블 및/또는 XML(Extensible Markup Language) 테이블을 포함하는 웹 테이블과 같은 데이터 액세스를 가능하게 하는 하나 이상의 테이블, 인덱스, 저장 프로시저 등을 갖는 코퍼스 및/또는 관계형 데이터베이스를 포함할 수 있다.
예를 들어, 데이터 저장소(212)는 CRM(204)에 저장되고 프로세싱 유닛(202)에 의해 실행되는 프로세스, 애플리케이션, 컴포넌트 및/또는 모듈의 동작을 위한 데이터 및/또는 명령어를 저장할 수 있다.
노드(200)는 하나 이상의 입/출력(I/O) 인터페이스(216)를 더 포함할 수 있고, 입/출력(I/O) 인터페이스(216)는 노드(200)가 주변 입력 장치(예를 들어, 키보드, 마우스, 펜, 게임 컨트롤러, 음성 입력 장치, 터치 입력 장치, 제스처 입력 장치, 카메라 등)를 포함하는 사용자 입력 장치와 주변 출력 장치(예를 들어, 디스플레이, 프린터 등)와 통신할 수 있는 입/출력 장치와 통신할 수 있게 하는 I/O 인터페이스(216)일 수 있다.
또한, 노드(200)는 블록체인 네트워크의 노드일 수 있으며, 노드(200)와 네트워크(260)를 통해 블록체인 네트워크의 다른 노드와 통신할 수 있게 하는 하나 이상의 입력/출력(I/O) 네트워크 인터페이스(218)를 더 포함할 수 있다.
그러한 입력/출력(I/O) 네트워크 인터페이스(218)는 네트워크(260)를 통해 통신을 송수신하기 위한 하나 이상의 네트워크 인터페이스 제어기(NIC) 또는 다른 유형의 트랜시버 장치를 포함할 수 있다.
네트워크(260)는 인터넷과 같은 공용 네트워크, 기관 및/또는 개인 인트라넷과 같은 개인 네트워크, 또는 개인 및 공용 네트워크의 일부 조합을 포함할 수 있다. 네트워크(260)는 근거리 통신망(LAN), 광역 통신망(WAN), 위성 네트워크, 케이블 네트워크, Wi-Fi 네트워크, WiMax 네트워크를 포함하지만 이에 제한되지 않는 임의의 유형의 유선 및/또는 무선 네트워크를 포함할 수 있으며, 이동 통신 네트워크(예를 들어, 3G, 4G, 5G 등) 또는 이들의 임의의 조합을 포함할 수 있다. 네트워크(260)는 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 또는 다른 유형의 프로토콜과 같은 패킷 기반 및/또는 데이터 그램 기반 프로토콜을 포함하는 통신 프로토콜을 이용할 수 있다.
더욱이, 네트워크(260)는 네트워크 통신을 용이하게 하거나 스위치, 라우터, 게이트웨이, 액세스 포인트, 방화벽, 기지국, 리피터, 백본 장치와 같은 네트워크를 위한 하드웨어 기반을 형성하는 다수의 장치를 포함할 수 있다.
일부 실시 예들에서, 네트워크(260)는 무선 액세스 포인트(WAP)와 같은 무선 네트워크로의 연결을 가능하게 하는 장치들을 더 포함할 수 있다. 본 발명에 따른 실시예들은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 (예를 들어, 802.11g, 802.11n 등)을 지원하는 WAP를 포함하여 다양한 전자기 주파수(예를 들어, 무선 주파수)를 통해 데이터를 송수신하는 WAP를 통한 연결을 지원할 수 있다.
예시된 실시예에서, CRM(204)은 운영 체제(220)와 블록체인 합의 시스템(222)을 포함할 수 있다. 블록체인 합의 시스템(222)은 블록(224, 226, 228, 230, 232 및 234)으로 도시된 하나 이상의 모듈 및/또는 API를 포함할 수 있지만, 이는 예시일 뿐이고, 그 수는 더 많거나 더 적을 수 있다. 각 블록(224, 226, 228, 230, 232 및 234)과 관련하여 설명된 기능들은 더 적은 수의 모듈 및/또는 API들에 의해 수행되도록 결합될 수 있거나 더 많은 수의 모듈들 및/또는 API들에 의해 분할 및 수행될 수 있다.
대안적으로, 운영체제, 데이터 저장소에 저장되는 데이터 및 어카운트의 트랜잭션 시스템의 일부 또는 전부는 프로세스 유닛(202) 상의 메모리(214), CPU형 프로세싱 유닛(206) 상의 메모리(236(1)), GPU형 프로세싱 유닛(208) 상의 메모리(236(2)), FPGA형 가속기(210(1)) 상의 메모리(236(3)), DSP형 가속기(210(2)) 상의 메모리(236(4)) 및/또는 다른 가속기(210(N)) 상의 메모리(236(M))와 같은 별도의 메모리(236)에 저장될 수도 있다.
블록체인 합의 시스템(222)은, 프로포저 노드 선출 모듈(224), RS 블록 후보 생성 모듈(226), 커미티 노드 선출 모듈(228), 커미티 샤드 선출 모듈(230), WRS 블록 후보 생성 모듈(232) 및 투표 모듈(234)을 포함할 수 있다.
블록체인 네트워크를 구성하는 모든 노드들은 블록체인 합의 시스템을 포함한다. 블록체인 네트워크의 모든 노드들은 프로포저 노드, RS 블록 합의를 수행하는 커미티 노드, WRS 블록 합의를 수행하는 커미티 샤드에 소속된 커미티 노드로 기능할 수 있다. 각 라운드마다 프로포저 노드, RS 블록 합의를 수행하는 커미티 노드, WRS 블록 합의를 수행하는 커미티 샤드가 선출될 수 있다. 따라서, 블록체인 네트워크를 구성하는 모든 노드들은 블록체인 합의 시스템을 포함하며, 해당 라운드에서의 선출 결과를 기반으로 필요한 모듈이 구동될 수 있다.
블록체인 네트워크를 구성하는 모든 노드들은 각 라운드마다 프로포저 노드 선출 모듈(224) 및 커미티 노드 선출 모듈(228)을 구동하여, 해당 라운드에 선출된 프로포저 노드 혹은 커미티 노드를 확인할 수 있다. 프로포저 노드로 선출된 노드, 즉, 해당 라운드의 프로포저 노드는 RS 블록 후보 생성 모듈(226)을 구동하여, 이전 라운드에서 공유된 신규 계정별 트랜잭션 블록을 취합하여 RS 블록 후보를 생성하고, 생성된 RS 블록 후보를 샤드 내 커미티 노드들에게 전송할 수 있다.
커미티 노드로 선출된 노드, 즉 해당 라운드의 커미티 노드는 적어도 하나 이상의 프로포저 노드로부터 적어도 하나 이상의 RS 블록 후보를 수신하고, 투표 모듈(234)을 구동하여, 샤드 내 다른 커미티 노드들과 함께 적어도 하나 이상의 RS 블록 후보에 대해 투표하여 합의할 수 있다. 각 샤드에서 선출된 커미티 노드들을 RS 보터(voter)로 명명할 수 있다. RS 보터의 투표 모듈(234)은 프리보트(prevote) 절차, 프리커밋(precommit) 절차, 커밋(commit) 절차를 수행할 수 있다. 프로보트 절차는 적어도 하나 이상 진행될 수 있다. 투표 모듈(234)의 합의 결과는 하나의 RS 블록으로 합의, 합의된 RS 블록 없음으로 합의, 합의 실패 등 3가지 중 하나의 결과로 도출될 수 있다. RS 보터는 RS 합의 결과를 샤드 내의 다른 노드들에게 공유하고, 다른 샤드의 커미티 노드들에게 공유할 수 있다. 즉, 모든 샤드의 모든 커미티 노드는 블록체인 네트워크의 모든 샤드에서 합의된 RS 블록을 획득할 수 있게 된다.
커미티 노드는 커미티 샤드 선출 모듈(230)를 구동하여 해당 라운드에서 WRS 합의를 위해 선출된 커미티 샤드를 확인할 수 있다. WRS 합의를 위한 커미티 샤드는 적어도 하나 이상이 선출될 수 있으나, 커미티 샤드는 둘 이상인 것이 바람직하다. 모든 커미티 샤드에 소속된 모든 커미티 노드들은 WRS 블록 후보 생성 모듈(232) 및 투표 모듈(234)을 구동할 수 있다. 커미티 샤드에 소속된 커미티 노드들을 WRS 보터(voter)로 명명할 수 있다. WRS 보터의 WRS 블록 후보 생성 모듈(232)은 모든 샤드들로부터 수집된 RS 블록들을 취합하여 WRS 블록 후보를 생성하고, 생성된 WRS 블록 후보를 모든 커미티 샤드에 소속된 모든 WRS 보터들에게 전송하여 공유할 수 있다. 투표 모듈(234)은 모든 WRS 보터들과 투표 결과를 공유하면서 WRS 블록 후보들에 대해 투표하여 합의할 수 있다. 투표 모듈(234)은 프리보트(prevote) 절차, 프리커밋(precommit) 절차, 커밋(commit) 절차를 수행할 수 있다. 프리보트 절차는 적어도 하나 이상 진행될 수 있다. 투표 모듈(234)의 합의 결과는 하나의 WRS 블록으로 합의, 합의된 WRS 블록 없음으로 합의, 합의 실패 등 3가지 중 하나의 결과로 도출될 수 있다. WRS 보터는 WRS 합의 결과를 블록체인 네트워크의 모든 노드들에게 공유할 수 있다.
도 3은 본 발명의 블록체인 네트워크에서, 데이터 저장소(300)에 저장된 정보를 도시한 도면이다.
노드의 데이터 저장소(300)에는, 노드의 샤드에 속한 모든 어카운트의 계정별 트랜잭션 체인(AWTC)(302, 304, 306, 308)과, 샤드에 속한 모든 어카운트의 계정별 트랜잭션을 결합하고 샤드에 속한 모든 노드들간 합의된 RS 블록을 체인으로 저장한 라운드 스테이트 체인(312)과, 블록체인 네트워크에 속한 모든 RS 블록을 결합하고 합의한 WRS 블록을 체인으로 저장한 월드 라운드 스테이트 체인(314)과, 노드의 샤드 내 통신 대상 노드 정보를 저장한 인트라샤드 통신 노드 리스트(316) 및 노드의 샤드 외 통신 대상 노드 정보를 저장한 인터샤드 통신 노드 리스트(318)가 저장될 수 있다.
도 4는 본 발명의 일 실시예에 따른 블록체인 합의 시스템(400)을 도시한 구성도이다.
이러한 블록체인 합의 시스템(400)은 노드의 컴퓨터 시스템에 의해 구현될 수 있으며, 도 4의 블록체인 합의 시스템(400)은 도 2의 블록체인 합의 시스템(222)일 수 있다.
본 발명의 노드에서 실행되는 블록체인 합의 시스템(400)은 프로포저 노드(proposer) 선출 결과를 확인하는 프로포저 노드 선출 모듈(402)과, 커미티 노드 선출 결과를 확인하는 커미티 노드 선출 모듈(404)과, 커미티 샤드 선출 결과를 확인하는 커미티 샤드 선출 모듈(406)과, 프로포저 노드로 선출된 경우 계정별 트랜잭션 블록을 취합하여 RS 블록 후보를 생성하는 RS 블록 후보 생성 모듈(408)과, 프로포저 노드에서 생성된 RS 블록 후보가 커미티 노드로 공유되도록 하는 RS 블록 후보 공유 모듈(410)과, 커미티 노드(이하, RS 보터라 함)로 선출된 경우 프로포저 노드로부터 공유된 RS 블록 후보에 대해 투표하여 합의하는 RS 블록 투표 모듈(412)과, RS 블록 투표 합의 결과를 샤드 내 타 노드 및 샤드 외 커미티 노드들에게 공유하는 RS 투표 결과 공유 모듈(414)과, 커미티 샤드에 소속된 커미티 노드(이하, WRS 보터라 함)로 선출된 경우 모든 샤드의 커미티 노드로부터 공유된 RS 블록들을 취합하여 WRS 블록 후보를 생성하는 WRS 블록 후보 생성 모듈(416)과, WRS 보터에서 생성된 WRS 블록 후보가 다른 WRS 보터들과 공유되도록 하는 WRS 블록 후보 공유 모듈(418)과, 공유된 WRS 블록 후보들에 대해 투표하여 합의하는 WRS 블록 투표 모듈(420)과, WRS 블록 투표 합의 결과를 모든 노드들에게 공유하는 WRS 투표 결과 공유 모듈(422)을 포함한다.
본 발명에서 RS 블록 투표 모듈(412)과 WRS 블록 투표 모듈(420)은 동일한 구성요소로 구현될 수도 있다. 즉, 동일한 투표 모듈로서, 투표 대상만이 RS 블록 후보들과 WRS 블록 후보들로 변경되어 구현될 수 있다.
모든 커미티 노드는 샤드 내 RS 블록을 확정하기 위한 RS 보터로 기능할 수 있다. 커미티 노드들 중 커미티 샤드에 소속된 커미티 노드들이 WRS 블록을 확정하기 위한 WRS 보터로 기능할 수 있다.
매 라운드마다 한 샤드를 구성하는 노드들 중 VRF(Verifiable Random Function) 등의 방법에 의해 랜덤으로 프로포저 노드가 선출될 수 있으며, 각 노드는 프로포저 노드 선출 모듈(402)을 구동하여 자신이 프로포저 노드로 선출되었는지 여부를 확인할 수 있다.
매 라운드마다 한 샤드를 구성하는 노드들 중 보트 카운트(vote count) 등의 방법에 따라 랜덤으로 커미티 노드(보터)가 선출될 수 있으며, 각 노드는 커미티 노드 선출 모듈(404)을 구동하여 선출된 커미티 노드들을 확인할 수 있다. 매 라운드마다 모든 커미티 노드가 새롭게 선출될 수도 있고, 이전 라운드의 커미티 노드 중 일부 커미티 노드는 재선출되고 일부만이 새롭게 선출될 수도 있다. 보트 카운트는 프로포저 활동 이력, 투표 참여 이력, 노드의 참여 기간 등을 고려하여 부여될 수 있다. 한 샤드에는 적어도 하나 이상의 프로포저 노드와 적어도 둘 이상의 커미티 노드들이 선출될 수 있다. 각 샤드에서 선출된 커미티 노드들은 RS 보터로서 동작할 수 있다.
매 라운드마다 블록체인 네트워크를 구성하는 샤드들 중 랜덤으로 커미티 샤드가 선출될 수 있으며, 각 샤드의 커미티 노드들은 커미티 샤드 선출 모듈(406)을 구동하여 선출된 커미티 샤드들을 확인할 수 있다. 매 라운드마다 적어도 하나 이상의 커미티 샤드가 선출될 수 있다. 매 라운드마다 모든 커미티 샤드가 새롭게 선출될 수도 있고, 이전 라운드의 커미티 샤드 중 일부 커미티 샤드는 재선출되고 일부만이 새롭게 선출될 수도 있다. 커미티 샤드에서 선출된 커미티 노드들은 WRS 보터로서 동작할 수 있다.
RS 블록 후보 생성 모듈(408)은 노드가 프로포저 노드로 선출된 경우 동작할 수 있다. RS 블록 후보 생성 모듈(408)은 이전 라운드에서 공유된 계정별 트랜잭션 블록을 취합한 해쉬값을 계산하여 RS 블록 후보를 생성할 수 있다. 샤드에서 선출된 복수의 프로포저 노드들은 동일한 RS 블록 후보를 생성할 수도 있고(통상적으로 동일한 계정별 트랜잭션 블록으로 RS 블록 후보를 생성하므로 동일한 해쉬값의 RS 블록 후보를 생성), 서로 다른 RS 블록 후보를 생성할 수 있다.
노드가 프로포저 노드로 선출된 경우, RS 블록 후보 공유 모듈(410)은 RS 블록 후보를 샤드 내 커미티 노드(RS 보터)에게 전송하여 공유할 수 있다. 노드가 커미티 노드로 선출된 경우, RS 블록 후보 공유 모듈(410)은 샤드 내 프로포저 노드로부터 RS 블록 후보를 전송받을 수 있다.
RS 블록 투표 모듈(412)은 노드가 커미티 노드로 선출된 경우 동작할 수 있다. RS 블록 투표 모듈(412)은 샤드 내 프로포저 노드로부터 전송받은 RS 블록 후보에 대해 투표하여 라운드 스테이트 체인에 연결한 RS 블록을 확정할 수 있다.
RS 블록 투표 모듈(412)은 적어도 하나 이상의 프리보트 단계, 프리커밋 단계, 커밋 단계를 수행하여 RS 블록을 확정할 수 있다. RS 블록 투표 모듈(412)의 실행 결과, 하나의 RS 블록 확정, 합의 없음, 합의 실패 중 하나의 결과가 도출될 수 있다.
제1프리보트 단계는, RS 블록 투표 모듈(412)이 RS 블록 후보들 중 하나에 투표하고, 투표 결과 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 RS 블록 후보가 존재하면 프리커밋 단계로 진행한다.
제2프리보트 단계는 제1프리보트 단계의 투표 결과 기설정된 임계치 이상 개수를 득표한 RS 블록 후보가 존재하지 않으면 진행하는 단계로서, 제1프리보트 단계에서 최대 득표 RS 블록 후보들 중 하나에 투표하고, 투표 결과 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 RS 블록 후보가 존재하면 프리커밋 단계로 진행한다.
제1프리보트 단계에서, 일부 RS 보터는 임계치 이상 개수를 득표한 RS 블록 후보가 존재하는 것으로 투표 결과가 집계될 수도 있고, 나머지 RS 보터는 임계치 이상 개수를 득표한 RS 블록 후보가 존재하지 않은 것으로 집계될 수도 있다. 이 경우, 제2프리보트 단계가 진행될 수 있으며, 제1프리보트 단계에서 임계치 이상 개수를 득표한 RS 블록 후보가 존재하는 것으로 집계된 RS 보터들은 제2프리보트 단계에서도 해당 임계치 이상 개수를 득표한 RS 블록 후보에게 투표하도록 할 수 있다.
제3프리보트 단계는 제2프리보트 단계의 투표 결과 임계치 이상 개수를 득표한 RS 블록 후보가 존재하지 않으면 진행하는 단계로서, 합의 없음을 나타내는 블랭크(blank) 블록을 생성하여 RS 보터들간 공유하고, RS 보터들간 공유된 블랭크 블록에 대해 투표하여, 투표 결과 기설정된 임계치 이상 개수를 득표한 블랭크 블록이 존재하면 프리커밋 단계로 진행한다. 제3프리보트 단계에서 임계치 이상 개수를 득표한 블랭크 블록이 존재하지 않으면 합의 실패로 합의를 중지한다. 다음 라운드에서 합의 실패된 이전 라운드의 트랜잭션과 현재 라운드의 트랜잭션을 포함하여 합의를 시도할 수 있다.
프리커밋 단계는 프리보트 단계에서 임계치 이상 개수를 득표한 블록에 투표하는 단계로서, 프리보트 단계에서 임계치 이상 개수를 득표한 블록(RS 블록 또는 블랭크 블록)이 존재하므로, 이 프리커밋 단계에서 모든 RS 보터가 하나의 블록에 투표하게 된다.
커밋 단계는 프리커밋 단계에서 모든 표를 득표한 블록(RS 블록 또는 블랭크 블록)에 확정 서명하는 단계이다.
RS 투표 결과 공유 모듈(414)은 RS 블록 투표 모듈(412)의 실행 결과를 샤드 내 다른 노드들 및 샤드 외 다른 커미티 노드들에게 공유할 수 있다. 즉, 합의되어 커미티 노드에서 확정 서명된 RS 블록은 샤드 내 다른 노드들에게 공유되어, 각 노드들은 라운드 스테이트 체인에 해당 RS 블록을 연결할 수 있다. 또한, 해당 RS 블록은 다른 샤드의 다른 커미티 노드들에게 공유될 수 있다.
WRS 블록 후보 생성 모듈(416)은 노드가 커미티 샤드에 소속된 커미티 노드(WRS 보터)인 경우 동작할 수 있다. WRS 블록 후보 생성 모듈(416)은 모든 샤드의 커미티 노드들로부터 확정 서명된 RS 블록을 공유받을 수 있으며, 모든 샤드의 커미티 노드들로부터 공유된 RS 블록들을 취합한 해쉬값을 계산하여 WRS 블록 후보를 생성할 수 있다. 각 WRS 보터들은 동일한 WRS 블록 후보를 생성할 수도 있고(통상적으로 동일한 RS 블록들을 기반으로 WRS 블록 후보를 생성하므로 동일한 해쉬값의 WRS 블록 후보를 생성), 서로 다른 WRS 블록 후보를 생성할 수도 있다.
WRS 블록 후보 공유 모듈(418)은 노드가 WRS 보터인 경우 동작할 수 있다. WRS 블록 후보 공유 모듈(418)은 WRS 보터들이 각각 생성한 WRS 블록 후보를 다른 WRS 보터들에게 전송하여 공유할 수 있다.
WRS 블록 투표 모듈(420)은 노드가 WRS 보터(커미티 샤드에 소속된 커미티 노드)인 경우 동작할 수 있다. WRS 블록 투표 모듈(420)은 자신이 생성한 WRS 블록 후보 및 다른 WRS 보터들로부터 공유받은 WRS 블록 후보들에 대해 투표하여 월드 라운드 스테이트 체인에 연결한 WRS 블록을 확정할 수 있다.
WRS 블록 투표 모듈(420)은 적어도 하나 이상의 프리보트 단계, 프리커밋 단계, 커밋 단계를 수행하여 WRS 블록을 확정할 수 있다. WRS 블록 투표 모듈(420)의 실행 결과, 하나의 WRS 블록 확정, 합의 없음, 합의 실패 중 하나의 결과가 도출될 수 있다.
제1프리보트 단계는, WRS 블록 투표 모듈(420)이 WRS 블록 후보들 중 하나에 투표하고, 투표 결과 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 WRS 블록 후보가 존재하면 프리커밋 단계로 진행한다.
제2프리보트 단계는 제1프리보트 단계의 투표 결과 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하지 않으면 진행하는 단계로서, 제1프리보트 단계에서 최대 득표 WRS 블록 후보들 중 하나에 투표하고, 투표 결과 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 WRS 블록 후보가 존재하면 프리커밋 단계로 진행한다.
제1프리보트 단계에서, 일부 WRS 보터는 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하는 것으로 투표 결과가 집계될 수도 있고, 나머지 WRS 보터는 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하지 않은 것으로 집계될 수도 있다. 이 경우, 제2프리보트 단계가 진행될 수 있으며, 제1프리보트 단계에서 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하는 것으로 집계된 WRS 보터들은 제2프리보트 단계에서도 해당 임계치 이상 개수를 득표한 WRS 블록 후보에게 투표하도록 할 수 있다.
제3프리보트 단계는 제2프리보트 단계의 투표 결과 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하지 않으면 진행하는 단계로서, 합의 없음을 나타내는 블랭크(blank) 블록을 생성하여 WRS 보터들간 공유하고, WRS 보터들간 공유된 블랭크 블록에 대해 투표하여, 투표 결과 기설정된 임계치 이상 개수를 득표한 블랭크 블록이 존재하면 프리커밋 단계로 진행한다. 제3프리보트 단계에서 임계치 이상 개수를 득표한 블랭크 블록이 존재하지 않으면 합의 실패로 합의를 중지한다.
프리커밋 단계는 프리보트 단계에서 임계치 이상 개수를 득표한 블록에 투표하는 단계로서, 프리보트 단계에서 임계치 이상 개수를 득표한 블록(WRS 블록 또는 블랭크 블록)이 존재하므로, 이 프리커밋 단계에서 모든 WRS 보터가 하나의 블록에 투표하게 된다.
커밋 단계는 프리커밋 단계에서 모든 표를 득표한 블록(WRS 블록 또는 블랭크 블록)에 확정 서명하는 단계이다.
WRS 투표 결과 공유 모듈(422)은 WRS 블록 투표 모듈(420)의 실행 결과를 블록체인 네트워크의 모든 노드들에게 공유할 수 있다. 즉, 합의되어 커미티 노드에서 확정 서명된 WRS 블록은 모든 노드들에 공유되어, 각 노드들은 월드 라운드 스테이트 체인에 해당 WRS 블록을 연결할 수 있다.
상술한 합의 시스템에서, 복수의 라우드에서 합의 실패가 반복되는 경우, 블록체인 네트워크 전체 시스템이 불안정한 상태로 인지할 수 있다. 이때, 커미티 노드 선출 모듈은 기설정된 특정 노드의 커미티 노드 선출 가능성을 향상시킬 수도 있다.
도 5는 본 발명의 일 실시예에 따른 프로포저 노드에서의 블록체인 합의 방법을 도시한 흐름도이고, 도 6은 본 발명의 일 실시예에 따른 RS 보터에서의 블록체인 합의 방법을 도시한 흐름도이고, 도 7은 본 발명의 일 실시예에 따른 WRS 보터에서의 블록체인 합의 방법을 도시한 흐름도이고, 도 8은 본 발명의 일 실시예에 따른 적어도 하나 이상의 블록 후보에 대해 투표하는 과정을 도시한 동작 흐름도이다.
예시적인 프로세스의 동작은 개별 블록으로 도시되고 이들 블록을 참조하여 설명된다. 프로세스는 블록의 논리 흐름으로서 도시되며, 각 블록은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있는 하나 이상의 동작을 나타낼 수 있다. 소프트웨어와 관련하여, 동작은 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 인용된 동작을 수행할 수 있게 하는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 컴퓨터 실행 가능 명령어를 나타낸다. 일반적으로 컴퓨터 실행 가능 명령어에는 루틴, 프로그램, 객체, 모듈, 구성 요소, 데이터 구조, 특정 함수를 수행하거나 특정 추상 데이터 유형을 구현하는 것을 포함한다. 동작이 설명되는 순서는 제한적인 것으로 해석되어서는 안되며, 설명된 동작의 수는 임의의 순서로, 다수의 하위 동작으로 세분화 또는 병렬적으로 실행될 수 있다.
도 5를 참조하여, 프로포저 노드에서의 블록체인 합의 방법을 살펴본다.
프로포저 노드는 프로포저 노드 선출 여부를 확인하고(S502), 커미티 노드 선출 결과를 확인한다(S504). 한 라운드에서 하나의 노드가 프로포저 노드와 커미티 노드로 동시에 선출되지 않는 것이 바람직하다. 한 라운드에서 적어도 하나 이상의 프로포저 노드가 선출되는 것이 바람직하며, 적어도 둘 이상의 프로포저 노드가 선출되는 것이 더 바람직하다. 이 프로포저 노드는 랜덤하게 선출될 수 있다. 프로포저 노드는 이전 라운드에서 공유된 계정별 트랜잭션 블록을 취합하여 해쉬값을 산출함으로써, RS 블록 후보를 생성할 수 있다(S506). 프로포저 노드는 생성된 RS 블록 후보를 샤드 내 커미티 노드(RS 보터)들에게 전송할 수 있다(S508).
도 6을 참조하여, RS 보터에서의 블록체인 합의 방법을 살펴본다. RS 보터는 각 샤드마다 선출된 커미티 노드일 수 있다.
RS 보터는 프로포저 노드 선출 여부를 확인하고(S602), 커미티 노드 선출 결과를 확인한다(S604). RS 보터는 샤드 내 적어도 하나 이상의 프로포저 노드로부터 적어도 하나 이상의 RS 블록 후보를 수신할 수 있다(S606). RS 보터는 샤드 내 다른 RS 보터들과 통신하며 RS 블록 후보에 대해 투표를 진행하여(S608), RS 블록 확정, 합의된 RS 블록 없음, 합의 실패 중 하나의 투표 결과가 도출될 수 있다. RS 블록 투표 결과는 샤드 내 다른 노드들에게 공유되고, 다른 샤드의 커미티 노드들에게 공유될 수 있다(S610). 적어도 하나 이상의 RS 블록 후보에 대해 투표하는 단계 S608의 상세한 세부 절차는 도 8을 참조하여 설명하기로 한다.
도 7을 참조하여, WRS 보터에서의 블록체인 합의 방법을 살펴본다. WRS 보터는 커미티 샤드에 소속된 커미티 노드일 수 있다. WRS 보터는 RS 블록 후보에 대해 투표하는 RS 보터로서 기능하고, 이후 WRS 블록 후보에 대해 투표하는 WRS 보터로서 기능할 수 있다.
WRS 보터는 프로포저 노드 선출 여부를 확인하고(S702), 커미티 노드 선출 결과를 확인한다(S704). WRS 보터는 샤드 내 적어도 하나 이상의 프로포저 노드로부터 적어도 하나 이상의 RS 블록 후보를 수신할 수 있다(S706). WRS 보터는 샤드 내 다른 WRS 보터들과 통신하며 적어도 하나 이상의 RS 블록 후보에 대해 투표를 진행하여(S708), RS 블록 확정, 합의된 RS 블록 없음, 합의 실패 중 하나의 투표 결과가 도출될 수 있다. RS 블록 투표 결과는 샤드 내 다른 노드들에게 공유되고, 다른 샤드의 커미티 노드들에게 공유될 수 있다(S710).
WRS 보터는 커미티 샤드 선출 결과를 확인한다(S712). WRS 보터는 모든 샤드의 커미티 노드로부터 수신된 확정된 RS 블록을 취합하여 해쉬값을 산출함으로써, WRS 블록 후보를 생성할 수 있다(S714). WRS 보터는 생성된 WRS 블록 후보를 다른 WRS 보터들과 공유할 수 있다(S716). WRS 보터는 다른 WRS 보터들과 통신하며 적어도 하나 이상의 WRS 블록 후보에 대해 투표를 진행하여(S718), WRS 블록 확정, 합의된 WRS 블록 없음, 합의 실패 중 하나의 투표 결과가 도출될 수 있다. WRS 블록 투표 결과는 블록체인 네트워크의 모든 노드들에게 공유될 수 있다(S720).
적어도 하나 이상의 RS 블록 후보에 대해 투표하는 단계 S708 및 적어도 하나 이상의 WRS 블록 후보에 대해 투표하는 단계 S718의 상세한 세부 절차는 도 8을 참조하여 설명하기로 한다.
도 8은 본 발명의 일 실시예에 따른 적어도 하나 이상의 블록 후보에 대해 투표하는 과정을 도시한 동작 흐름도(S800)이다. 도 8의 적어도 하나 이상의 블록 후보들에 대해 투표하는 과정은 보터에 의해 수행될 수 있으며, 보터는 RS 보터 또는 WRS 보터일 수 있다. 아울러, 블록 후보는 RS 블록 후보 또는 WRS 블록 후보일 수 있다.
보터는 제1프리보트 단계에서 적어도 하나 이상의 블록 후보 중 하나의 블록 후보에 투표한다(S802).
보터는 제1프리보트 단계 S802의 투표 결과, 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 블록 후보가 존재하는지 판단한다(S804). 단계 S804의 판단 결과, 임계치 이상 개수를 득표한 블록 후보가 존재하면 단계 S814의 프리커밋 단계로 진행하고, 단계 S804의 판단 결과, 임계치 이상의 개수를 득표한 블록 후보가 존재하지 않으면 단계 S806의 제2프리보트 단계로 진행한다.
제2프리보트 단계(S806)에서, 보터는 제1프리보트 단계(S802)에서 최대 득표 블록 후보 중 하나에 투표한다(S806).
보터는 제2프리보트 단계 S806의 투표 결과, 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 블록 후보가 존재하는지 판단한다(S808). 단계 S808의 판단 결과, 임계치 이상 개수를 득표한 블록 후보가 존재하면 단계 S814의 프리커밋 단계로 진행하고, 단계 S808의 판단 결과, 임계치 이상의 개수를 득표한 블록 후보가 존재하지 않으면 단계 S810의 제3프리보트 단계로 진행한다.
제1프리보트 단계에서, 일부 WRS 보터는 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하는 것으로 투표 결과가 집계될 수도 있고, 나머지 WRS 보터는 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하지 않은 것으로 집계될 수도 있다. 이 경우, 제2프리보트 단계가 진행될 수 있으며, 제1프리보트 단계에서 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하는 것으로 집계된 WRS 보터들은 제2프리보트 단계에서도 해당 임계치 이상 개수를 득표한 WRS 블록 후보에게 투표하도록 한다. 제2프리보트 단계 후 제2-2프리보트 단계가 추가로 진행될 수 있으며, 이때 제2프리보트 단계에서 임계치 이상 개수를 득표한 WRS 블록 후보가 존재하는 것으로 집계된 WRS 보터들은 제2-2프리보트 단계에서도 해당 임계치 이상 개수를 득표한 WRS 블록 후보에게 투표하도록 한다.
제3프리보트 단계(S810)에서, 보터는 합의 없음을 나타내는 블랭크(blank) 블록을 생성하여 보터들간 공유하고, 보터들간 공유된 블랭크 블록에 대해 투표한다(S810).
보터는 제3프리보트 단계 S810의 투표 결과, 기설정된 임계치(예컨대, 2/3) 이상 개수를 득표한 블랭크 블록이 존재하는지 판단한다(S812). 단계 S812의 판단 결과, 임계치 이상 개수를 득표한 블랭크 블록이 존재하면 단계 S814의 프리커밋 단계로 진행하고, 단계 S812의 판단 결과, 임계치 이상의 개수를 득표한 블랭크 블록이 존재하지 않으면 합의 실패로 합의를 중지한다(S818).
단계 S814의 프리커밋 단계에서, 보터는 제1프리보트 단계 내지 제3프리보트 단계 중 적어도 하나의 프리보트 단계에서 임계치 이상 개수를 득표한 블록에 투표한다(S814). 프리보트 단계(S802, S806, S810)에서 임계치 이상 개수를 득표한 블록(블록 후보 또는 블랭크 블록)이 존재하므로, 이 프리커밋 단계에서 모든 보터가 하나의 블록에 투표하게 된다.
단계 S816의 커밋 단계에서, 보터는 프리커밋 단계에서 모든 표를 득표한 블록에 확정 서명한다(S816).
전술한 모든 방법 및 프로세스는 하나 이상의 범용 컴퓨터 또는 프로세서에 의해 실행되는 소프트웨어 코드 모듈로 구현되고 완전 자동화될 수 있다. 코드 모듈은 임의의 유형의 컴퓨터 판독 가능 저장 매체 또는 다른 컴퓨터 저장 장치에 저장될 수 있다. 일부 또는 모든 방법은 특수 컴퓨터 하드웨어로 구현될 수 있다.
본 명세서에 기술되고 및/또는 첨부 도면에 도시된 흐름도의 임의의 일상적인 설명, 요소 또는 블록은 특정 논리 함수 또는 요소를 구현하기 위한 하나 이상의 실행 가능한 명령을 포함하는 코드, 모듈, 세그먼트 또는 부분을 잠재적으로 나타내는 것으로 이해되어야 한다. 루틴. 대안적인 예는 여기에 설명 된 예의 범위 내에 포함되며, 여기에서 이해될 수 있는 기능에 따라 실질적으로 동 기적으로 또는 역순으로 요소 또는 기능이 삭제되거나 도시되거나 논의된 것으로부터 순서대로 실행될 수 있다.
상술된 실시예에 대해 많은 변형 및 수정이 이루어질 수 있으며, 그 요소는 다른 허용 가능한 예 중 하나인 것으로 이해되어야 한다. 이러한 모든 수정 및 변형은 본 개시의 범위 내에 포함되고 다음의 청구범위에 의해 보호되도록 의도된다. 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 한정되어서는 아니되며, 후술하는 특허청구범위 뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.

Claims (14)

  1. 블록체인 네트워크를 구성하는 노드에서 구동하는 블록체인 합의 시스템에 있어서,
    상기 노드는 WRS 보터로 선출된 노드이고,
    상기 블록체인 합의 시스템은, 모든 샤드의 커미티 노드들로부터 합의된 RS 블록을 취합하여 WRS 블록 후보를 생성하는 WRS 블록 후보 생성 모듈,
    상기 WRS 보터가 다른 WRS 보터들과 WRS 블록 후보를 공유하도록 하는 WRS 블록 후보 공유 모듈,
    상기 WRS 보터가 다른 WRS 보터들과 통신하면서 상기 공유된 WRS 블록 후보에 대해 투표하여 합의하는 WRS 블록 투표 모듈, 및
    상기 WRS 보터가 WRS 블록 투표 결과를 블록체인 네트워크의 모든 노드들에게 공유하는 WRS 투표 결과 공유 모듈을 포함하는 블록체인 합의 시스템.
  2. 제1항에 있어서,
    상기 노드는 RS 보터로 선출된 노드이고,
    상기 블록체인 합의 시스템은, 샤드 내의 적어도 하나 이상의 프로포저 노드로부터 각각 RS 블록 후보를 수신하는 RS 블록 후보 공유 모듈,
    상기 RS 보터가 다른 RS 보터들과 통신하면서 상기 프로포저 노드로부터 수신된 적어도 하나 이상의 RS 블록 후보에 대해 투표하여 합의하는 RS 블록 투표 모듈, 및
    상기 RS 보터가 RS 블록 투표 결과를 샤드 내 모든 노드들 및 상기 WRS 보터들에게 공유하는 RS 투표 결과 공유 모듈을 더 포함하는 블록체인 합의 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 블록 투표 결과는 블록 후보 중 하나의 블록 확정, 합의된 블록 없음, 합의 실패 중 적어도 하나를 포함하는 블록체인 합의 시스템.
  4. 제3항에 있어서,
    상기 블록 투표 결과가 기설정된 라운드동안 합의 실패가 반복되면, 기설정된 노드가 보터로 선출될 가능성이 높아지는 블록체인 합의 시스템.
  5. 제1항 또는 제2항에 있어서,
    상기 블록 투표 모듈은, 적어도 하나 이상의 프리보트 단계, 프리커밋 단계 및 커밋 단계를 수행하는 블록체인 합의 시스템.
  6. 제5항에 있어서,
    상기 프리보트 단계는 기설정된 임계치 이상의 개수를 득표한 블록을 도출하는 단계이고, 상기 프리커밋 단계는 상기 프리보트 단계에서 상기 임계치 이상의 개수를 득표한 블록에 투표하는 단계이고, 상기 커밋 단계는 상기 프리커밋 단계에서 투표된 블록에 확정 서명하는 단계인 블록체인 합의 시스템.
  7. 제5항에 있어서,
    상기 프리보트 단계는 적어도 둘 이상의 프리보트 단계들을 포함하고
    상기 둘 이상의 프리보트 단계들 중 하나의 프리보트 단계에서 기설정된 임계치 이상의 개수를 득표한 블록이 도출된 보터는 이후 프리보트 단계에서 이전 프리보트 단계와 동일한 블록에 투표하도록 하는 블록체인 합의 시스템.
  8. 블록체인 네트워크를 구성하는 노드에서 구동하는 블록체인 합의 방법에 있어서,
    상기 노드는 WRS 보터로 선출된 노드이고,
    상기 블록체인 합의 방법은, 모든 샤드의 커미티 노드들로부터 합의된 RS 블록을 취합하여 WRS 블록 후보를 생성하는 단계,
    상기 WRS 보터가 다른 WRS 보터들과 WRS 블록 후보를 공유하도록 하는 단계,
    상기 WRS 보터가 다른 WRS 보터들과 통신하면서 상기 공유된 WRS 블록 후보에 대해 투표하여 합의하는 블록 투표 단계, 및
    상기 WRS 보터가 WRS 블록 투표 결과를 블록체인 네트워크의 모든 노드들에게 공유하는 단계를 포함하는 블록체인 합의 방법.
  9. 제8항에 있어서,
    상기 노드는 RS 보터로 선출된 노드이고,
    상기 블록체인 합의 방법은, 샤드 내의 적어도 하나 이상의 프로포저 노드로부터 각각 RS 블록 후보를 수신하는 단계,
    상기 RS 보터가 다른 RS 보터들과 통신하면서 상기 프로포저 노드로부터 수신된 적어도 하나 이상의 RS 블록 후보에 대해 투표하여 합의하는 블록 투표 단계, 및
    상기 RS 보터가 RS 블록 투표 결과를 샤드 내 모든 노드들 및 상기 WRS 보터들에게 공유하는 단계를 더 포함하는 블록체인 합의 방법.
  10. 제8항 또는 제9항에 있어서,
    상기 블록 투표 결과는 블록 후보 중 하나의 블록 확정, 합의된 블록 없음, 합의 실패 중 적어도 하나를 포함하는 블록체인 합의 방법.
  11. 제10항에 있어서,
    상기 블록 투표 결과가 기설정된 라운드동안 합의 실패가 반복되면, 기설정된 노드가 보터로 선출될 가능성이 높아지는 블록체인 합의 방법.
  12. 제8항 또는 제9항에 있어서,
    상기 블록 투표 단계는, 적어도 하나 이상의 프리보트 단계, 프리커밋 단계 및 커밋 단계를 포함하는 블록체인 합의 방법.
  13. 제12항에 있어서,
    상기 프리보트 단계는 기설정된 임계치 이상의 개수를 득표한 블록을 도출하는 단계이고, 상기 프리커밋 단계는 상기 프리보트 단계에서 상기 임계치 이상의 개수를 득표한 블록에 투표하는 단계이고, 상기 커밋 단계는 상기 프리커밋 단계에서 투표된 블록에 확정 서명하는 단계인 블록체인 합의 방법.
  14. 제12항에 있어서,
    상기 프리보트 단계는 적어도 둘 이상의 프리보트 단계들을 포함하고
    상기 둘 이상의 프리보트 단계들 중 하나의 프리보트 단계에서 기설정된 임계치 이상의 개수를 득표한 블록이 도출된 보터는 이후 프리보트 단계에서 이전 프리보트 단계와 동일한 블록에 투표하도록 하는 블록체인 합의 방법.
PCT/KR2023/013337 2022-09-13 2023-09-06 블록체인 합의 시스템 및 방법 WO2024058489A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220114843A KR20240036260A (ko) 2022-09-13 2022-09-13 블록체인 합의 시스템 및 방법
KR10-2022-0114843 2022-09-13

Publications (1)

Publication Number Publication Date
WO2024058489A1 true WO2024058489A1 (ko) 2024-03-21

Family

ID=90275330

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2023/013337 WO2024058489A1 (ko) 2022-09-13 2023-09-06 블록체인 합의 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR20240036260A (ko)
WO (1) WO2024058489A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170137388A (ko) * 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
KR20190067581A (ko) * 2017-12-07 2019-06-17 한국전자통신연구원 블록체인 트랜잭션 분산 처리 장치 및 방법
KR20200032449A (ko) * 2018-09-18 2020-03-26 엔에이치엔 주식회사 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템
KR102253361B1 (ko) * 2020-06-23 2021-05-18 주식회사 아이콘루프 합의 참여 노드를 결정하는 블록체인 네트워크 시스템 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170137388A (ko) * 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
KR20190067581A (ko) * 2017-12-07 2019-06-17 한국전자통신연구원 블록체인 트랜잭션 분산 처리 장치 및 방법
KR20200032449A (ko) * 2018-09-18 2020-03-26 엔에이치엔 주식회사 블록체인 네트워크의 노드들 간의 합의를 이루는 방법 및 블록체인 시스템
KR102253361B1 (ko) * 2020-06-23 2021-05-18 주식회사 아이콘루프 합의 참여 노드를 결정하는 블록체인 네트워크 시스템 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Locus Chain Tech Whitepaper", 1 December 2021 (2021-12-01), XP093146191, Retrieved from the Internet <URL:https://api.locuschain.com/storage/file/20220210_170618_852.pdf> [retrieved on 20240327] *

Also Published As

Publication number Publication date
KR20240036260A (ko) 2024-03-20

Similar Documents

Publication Publication Date Title
WO2020022760A1 (ko) 시스템에 포함되는 노드들에 대하여 그룹을 운영하는 분산 네트워크 시스템
WO2018036148A1 (zh) 一种服务器集群系统
CN108259175B (zh) 一种分布式密码服务方法和系统
US20190220768A1 (en) Constructing topology for satisfying partition tolerance in consortium blockchain consensus
WO2023234526A1 (ko) 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
WO2020071727A1 (ko) 무선 통신 시스템에서 로밍 단말의 네트워크 슬라이스에 상호 배타적 접속 방법 및 장치
CN111786785B (zh) 基于区块链的配电物联网节点切换方法及装置
WO2024058489A1 (ko) 블록체인 합의 시스템 및 방법
WO2018113343A1 (zh) 一种邻区关系的更新方法及装置
GB2505230A (en) Leader node appointment in a data communications network
WO2021194114A1 (ko) 전자 지갑과 상기 전자 지갑을 이용하여 두개의 서로 다른 블록체인 토큰들의 원자성 교환 방법
WO2024090906A1 (ko) 블록체인 네트워크에서 어카운트 생성 시스템 및 방법
WO2024063400A1 (ko) 블록체인 네트워크에서 어카운트 디렉토리 변경 시스템 및 방법
WO2024039129A1 (ko) 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법
WO2024096420A1 (ko) 블록체인 네트워크에서 노드 분배 시스템 및 방법
WO2023243881A1 (ko) 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
WO2022206426A1 (zh) 一种分布式事务处理方法、系统及相关设备
WO2024014718A1 (ko) 블록체인 네트워크에서 검증 가능 인터샤드 트랜잭션 시스템 및 방법
US20230266994A1 (en) Migration of computational units in distributed networks
WO2022231072A2 (ko) 비-랜덤 합의체 증명 기반 블록 체인 네트워크를 이용한 랜덤 합의체 증명을 수행하는 뉴럴 합의체 기반의 블록체인 네트워크 시스템
Megherbi et al. A distributed multi-agent tracking, awareness, and communication system architecture for synchronized real-time situational understanding, surveillance, decision-making, and control
WO2006091178A1 (en) A method of obtaining presence information and a method of maintaining an updated membership list of communication devices in a decentralised network
JP7268741B2 (ja) 通信システム、通信方法及び通信プログラム
Maurer et al. Tolerating random byzantine failures in an unbounded network
WO2022097836A1 (ko) 이더리움 네트워크 상에 노드 영향력 모니터링 장치 및 노드 영향력 분석 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23865787

Country of ref document: EP

Kind code of ref document: A1