SYSTEM AND METHOD FOR DYNAMIC SHARDING IN A BLOCKCHAIN ​​NETWORK

The dynamic sharding system addresses scalability and security issues in blockchain networks by splitting existing shards and adding new ones based on network conditions, improving transaction processing efficiency and stability.

JP2025527548APending Publication Date: 2025-08-22BLOOM TECH INC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2025508953
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-08-17
Filing Date
2023-08-09
Publication Date
2025-08-22

AI Technical Summary

Technical Problem

Sharding in blockchain networks leads to reduced node verification capacity, increased risk of data tampering, and slowed transaction processing due to traffic imbalances and malicious attacks, necessitating a scalable solution.

Method used

A dynamic sharding system that splits existing shards into two and adds new shards based on network traffic volume, node count, and account distribution, ensuring balanced node allocation and maintaining transaction chain continuity.

Benefits of technology

Enhances scalability by reducing transaction processing volume and ledger size while ensuring stability and security by evenly distributing nodes across new shards, mitigating the risk of malicious attacks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025527548000001_ABST
    Figure 2025527548000001_ABST
Patent Text Reader

Abstract

A dynamic sharding system and method for splitting one shard into two and adding a new shard in a blockchain network is provided. [Solution] A dynamic sharding system operating in nodes that make up a blockchain network includes a shard addition determination module that determines the need to add a shard, a new shard address calculation module that calculates a new shard address based on the number of shards currently included in the blockchain network, a source shard calculation module that calculates the source shard to be split into the new shard based on the new shard address, and a shard allocation module that assigns some of the nodes belonging to the source shard to the old shard and the rest to the new shard.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a dynamic sharding system and method in a blockchain network, and more particularly to a dynamic sharding system and method for splitting one shard into two and adding a new shard in a blockchain network. [Background technology]

[0002] Blockchain is a decentralized distributed transaction management technology that emerged in an attempt to move away from the traditional centralized system in which a centralized institution stores transaction details in a single location. Blockchain is a distributed ledger system that makes records impossible to forge or tamper with by having all participants on a P2P (Peer-to-Peer) communication network maintain a shared ledger determined through a consensus algorithm. In other words, a distributed ledger system is a system in which each node synchronizes and maintains a database called a ledger in a decentralized environment without the control of a central administrator.

[0003] In a blockchain, in order for all nodes to maintain a synchronized ledger, it is necessary to store all transactions and blocks that occur within the network. For this reason, traditionally, all messages have been propagated to all nodes in the blockchain network using a flooding method. However, this method poses the problem of scalability, as all nodes must receive and store all messages.

[0004] To solve the scalability problem, the sharding method has been proposed in the blockchain field recently. This method divides multiple nodes into multiple shards (shard groups) and divides multiple transactions into each shard for parallel processing. Sharding is a method of dividing transactions and blocks generated on a blockchain network into small groups called shards, and nodes belonging to each shard do not need to process transactions and blocks of other shards, but only process transactions and blocks of the shard to which they belong, thereby reducing the transaction processing volume of the entire network and the size of the distributed ledger.

[0005] However, when sharding is introduced, the number of nodes that can verify transactions decreases in proportion to the number of shards, which increases the risk of data tampering through consensus attacks by malicious nodes. Consensus attacks are the most dangerous type of attack against blockchain. In blockchain, a validation committee, which includes multiple nodes, basically verifies blocks through consensus among the committee members, and blocks that do not reach consensus are excluded from selection and separated from the chain. In order to reach consensus on a specific block, a certain number of nodes above a threshold must agree on it from all nodes that make up the network.

[0006] In a typical blockchain, tens of thousands to hundreds of thousands of nodes are included in the validation committee, making it practically impossible for the number of malicious nodes to exceed a certain threshold. However, when sharding is introduced, differences in transaction frequency, number of nodes, and proportion of validators per shard can lead to imbalances between shards over time, potentially weakening the stability of some shards. In other words, some shards may have a certain number of malicious nodes exceeding a certain threshold. When this happens, there is a risk of fake blocks being incorporated into the chain. Sharding reduces the number of nodes an attacker needs to control, making it easier for them to gain control of a certain number of nodes above the threshold, thereby increasing the risk of fake blocks being added to the chain.

[0007] On the other hand, as the number of accounts and nodes constituting a shard increases, the amount of traffic between nodes increases, which slows down the transaction processing speed. Therefore, if the overall traffic volume of the blockchain network increases, the number of shards needs to be increased. The applicant of the present invention proposes a technology called dynamic sharding technology, which increases the number of shards according to the traffic volume of the blockchain network. Summary of the Invention [Problem to be solved by the invention]

[0008] The object of the present invention is to meet the above-mentioned needs by providing a dynamic sharding system and method for splitting one shard into two and adding a new shard in a blockchain network. [Means for solving the problem]

[0009] The present invention can be implemented in numerous ways, including as an apparatus (system), a method, a computer program stored on a computer readable medium, or a computer readable medium having a computer program stored thereon.

[0010] According to one embodiment of the present invention, a dynamic sharding system operating in a node constituting a blockchain network includes a shard addition determination module that determines the need to add a shard, a new shard address calculation module that calculates a new shard address based on the number of shards currently included in the blockchain network, a source shard calculation module that calculates source shards to be split into new shards based on the new shard addresses, and a shard allocation module that allocates some of the nodes belonging to the source shards to old shards and the remainder to new shards.

[0011] More preferably, the node is a node belonging to the original shard that is to be split, with the original shard being the working shard, and the dynamic sharding system further includes a shard splitting module that manages transaction chains and account directories for each account based on the shards allocated in the shard allocation module.

[0012] More preferably, the node is a node belonging to an unsplit shard with an unsplit shard as the working shard, and the dynamic sharding system further includes a shard movement module that causes the node belonging to the unsplit shard to change the working shard from the unsplit shard to the original shard to be split.

[0013] More preferably, the shard addition determination module determines the need for adding a shard based on at least one of the traffic volume, the number of nodes, and the number of accounts.

[0014] More preferably, the new shard address calculation module calculates the new shard address by adding 1 to the maximum value of the shard addresses currently included in the blockchain network.

[0015] More preferably, the source shard calculation module calculates the source shard from among adjacent shards having an address whose bit distance from the new shard address is 1.

[0016] More preferably, the source shard calculation module calculates the source shard address by replacing the most significant bit set to 1 in the binary value of the new shard address with 0.

[0017] More preferably, after the split, the shard allocation module allocates the nodes belonging to the original shard to the old shard and the new shard separately based on at least one of the shares and the number of nodes allocated to the old shard and the new shard.

[0018] More preferably, the node is an old working shard allocation node, and the shard splitting module deactivates the account-specific transaction chain for the account managed by the new working shard allocation node and deletes the new home shard allocation account information from the account directory.

[0019] More preferably, the node is a new working shard allocation node, and the shard splitting module deactivates the account-specific transaction chains for the accounts managed by the old working shard allocation node and deletes the old home shard allocation account information from the account directory.

[0020] According to one embodiment of the present invention, a dynamic sharding method implemented by at least one processor in a node constituting a blockchain network includes the steps of determining the need to add a shard, calculating a new shard address based on the number of shards currently included in the blockchain network, calculating the original shards to be split into the new shards based on the new shard addresses, and allocating some of the nodes belonging to the original shards to old shards and the remainder to the new shards.

[0021] More preferably, the node is a node belonging to the original shard that has been split as a working shard, and the dynamic sharding method further includes a step of managing transaction chains and account directories for each account based on the assigned shards.

[0022] More preferably, the node is a node belonging to an unsplit shard with an unsplit shard as the working shard, and the dynamic sharding method further includes a step in which the node belonging to the unsplit shard changes the working shard from the unsplit shard to the original shard to be split.

[0023] More preferably, the step of determining the need to add a shard includes the step of determining the need to add a shard based on at least one of the amount of traffic, the number of nodes, and the number of accounts.

[0024] More preferably, the step of calculating the new shard address based on the number of shards currently included in the blockchain network includes the step of calculating the new shard address by adding 1 to the maximum number of shard addresses currently included in the blockchain network.

[0025] More preferably, the step of calculating the original shard to be divided into the new shard based on the new shard address includes a step of calculating the original shard to be divided from among adjacent shards having addresses that are one bit distance from the new shard address.

[0026] More preferably, the step of calculating the original shard to be divided into the new shard based on the new shard address includes a step of calculating the original shard address by replacing the 1 in the most significant bit set to 1 in the binary value of the new shard address with 0.

[0027] More preferably, the step of allocating a portion of the nodes belonging to the original shard to the old shard and the remainder to the new shard includes a step of allocating the nodes belonging to the original shard to the old shard and the new shard after the split based on at least one of the share amount and the number of nodes allocated to the old shard and the new shard.

[0028] More preferably, the node is an old working shard allocation node, and the step of managing the account-specific transaction chain and account directory based on the allocated shard includes the step of the old working shard allocation node deactivating the account-specific transaction chain for the account managed by the new working shard allocation node and deleting the new home shard allocated account information from the account directory.

[0029] More preferably, the node is a new working shard allocation node, and the step of managing the account-specific transaction chain and account directory based on the allocated shard includes the step of the new working shard allocation node deactivating the account-specific transaction chain for the account managed by the old working shard allocation node and deleting the old home shard allocated account information from the account directory. [Effects of the Invention]

[0030] The present invention provides the following effects.

[0031] The present invention divides a blockchain network into shards to process transactions and blocks, thereby reducing the transaction processing volume and the size of the distributed ledger, and improving the scalability of the blockchain network.

[0032] The present invention adds shards and distributes nodes according to the traffic volume of the blockchain network, allowing multiple transactions to be processed in parallel in each distributed shard, thereby reducing the transaction processing volume of the entire network and the size of the distributed ledger.

[0033] When adding a shard, the present invention ensures continuity of information by dividing an existing shard and generating a new shard instead of generating an empty shard.

[0034] When adding a shard, the present invention does not create an empty shard, but instead splits an existing shard to create a new shard, and ensures the stability of the new shard by allocating nodes relatively evenly to the new shard.

[0035] The effects of the present invention are not limited to those mentioned above, and other effects not mentioned will be clear to a person having ordinary knowledge in the technical field to which the present invention pertains (referred to as an "ordinary engineer") from the description of the claims. [Brief explanation of the drawings]

[0036] Embodiments of the present invention will be described, without limitation, with reference to the accompanying drawings described below, in which like reference numerals indicate similar elements and in which: [Figure 1] FIG. 1 shows a conceptual diagram of a blockchain network divided into three shards according to the present invention. [Figure 2] FIG. 1 is a block diagram illustrating an exemplary configuration of a node including the dynamic sharding system of the present invention. [Figure 3] FIG. 1 is a diagram showing information stored in a data store in the blockchain network of the present invention. [Figure 4] FIG. 1 is a configuration diagram illustrating a dynamic sharding system according to an embodiment of the present invention. [Figure 5] 1 is an operational flowchart illustrating a dynamic sharding method for a node belonging to a source shard according to an embodiment of the present invention; [Figure 6] 1 is an operational flowchart illustrating a dynamic sharding method for nodes belonging to undivided shards according to an embodiment of the present invention.

[0037] Embodiments of the present invention will be described, but not limited to, with reference to the accompanying drawings described below, in which like reference numerals indicate similar elements and in which: DETAILED DESCRIPTION OF THE INVENTION

[0038] Hereinafter, specific details for carrying out the present invention will be described in detail with reference to the accompanying drawings. However, in the following description, specific descriptions of commonly known functions and configurations will be omitted if they may unnecessarily obscure the gist of the present invention.

[0039] In the accompanying drawings, identical or corresponding components are denoted by the same reference numerals. Note that in the following description of the embodiments, duplicate descriptions of identical or corresponding components may be omitted. However, even if a description of a component is omitted, this does not mean that the component is not included in any embodiment.

[0040] The advantages and features of the embodiments disclosed herein, as well as methods for achieving them, will become apparent from the following description of the embodiments in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, and may be realized in various different forms. The present embodiments are merely provided to enable those skilled in the art to which the present invention pertains to fully understand the scope of the invention.

[0041] Unless otherwise defined, all terms (including technical and scientific terms) used herein are used in the sense that they can be commonly understood by a person having ordinary knowledge in the technical field to which the present invention belongs. Furthermore, terms defined in commonly used dictionaries are not to be idealized or excessively interpreted unless specifically defined.

[0042] For example, the term "technology" can refer to systems, methods, computer-readable instructions, modules, algorithms, hardware logic, and / or operations as permitted by the context and throughout the document.

[0043] The terms used in this specification will be briefly explained, and the disclosed embodiments will be specifically described. The terms used in this specification are currently commonly used and generally selected as much as possible while taking into consideration the functions of the present invention. However, these terms may change depending on the intentions of engineers in the relevant field, precedents, or the emergence of new technologies. In addition, in certain cases, the applicant may arbitrarily select terms, and in such cases, the meanings of these terms will be described in detail in the description of the invention. Therefore, the terms used in this specification should be defined based on the meanings of the terms and the overall content of the present invention, rather than simply by their names.

[0044] In this specification, the singular expression includes the plural expression unless the context clearly dictates otherwise. Furthermore, the plural expression includes the singular expression unless the context clearly dictates otherwise. Throughout the specification, when a part is said to include a certain element, this does not mean that it excludes other elements, but that it may further include other elements, unless specifically stated to the contrary.

[0045] In the present invention, terms such as "comprises", "comprising", etc. may indicate the presence of features, steps, operations, elements, and / or components, but such terms do not exclude the addition of one or more other features, steps, operations, elements, components, and / or combinations thereof.

[0046] In the present invention, when a particular component is referred to as being "bonded," "combined," "linked," "associated," or "reacting" with any other component, it means, but is not limited to, that the particular component can be directly bonded, combined, linked, and / or associated with or reacted with the other component. For example, one or more intermediate components may exist between the particular component and the other component. Furthermore, in the present invention, "and / or" may include each of one or more listed items or at least a partial combination of one or more items.

[0047] In the present invention, terms such as "first" and "second" are used to distinguish a specific component from other components, and are not intended to limit the aforementioned components. For example, a "first" component may be used to refer to an element that is the same as or similar to a "second" component.

[0048] In the present invention, a "blockchain network" is a collection of multiple computers (nodes) that participate in a blockchain system and communicate with each other peer-to-peer via the Internet, etc., and a "node" in the present invention can be a computer that participates in the blockchain network. Here, the term "computer" encompasses all devices that have a CPU, memory, communication, and input / output functions, and specifically includes server computers, personal computers (PCs), mobile phone terminals, small home appliances, etc.

[0049] Nodes can share and disseminate information through the blockchain network. Each node manages at least one user account. The accounts managed by a node can include the node owner's account (hereinafter referred to as a host account) and accounts entrusted to the management of other users (hereinafter referred to as guest accounts). A node can store all information related to the host accounts and guest accounts it manages and send it to other nodes on the blockchain network, as well as receive the latest information about the host accounts and guest accounts it manages from other nodes.

[0050] In the present invention, an "account" may be a data structure representing a single user as a user account participating in a blockchain. An account can add information to the blockchain system by issuing transactions and may be a linked list of transactions issued by a user. A transaction may be a unit of data added by a user to the system. An account can own a node and directly manage its own transaction information, and such an account may be called a host account. An account can also entrust its transaction information to another user's node for management, and such an account may be called a guest account, and the node entrusted with account management may be called a delegated node. The identity of the node and account can be verified using a cryptographic key, and transactions can be signed using the same cryptographic key. A guest account can operate its own node and become a host account, or it can change the delegated node, and a host account can select a delegated node and become a guest account.

[0051] In the present invention, a "transaction" is a unit of information added to a blockchain that can be issued independently by one account. The content of a transaction is nominally any information provided by a user, but in reality, it can be a meaningful message within the system. For example, a transaction can include messages such as "Account A sent 100 coins to Account B" or "Account B received 100 coins from Account A." In the present invention, a transaction serial number is a positive integer starting from 0, incremented by 1 for each transaction, and an Account-Wise Transaction Chain (AWTC) is used to manage ledgers for each account. The technology of the Account-Wise Transaction Chain (AWTC) can be understood by referring to the content described in Korean Patent Publication No. 2021-0015196.

[0052] In this invention, a "block" can be a signed list of transactions added to a shard or blockchain network over a specific period of time. A block can be generated by transactions signing the list through a consensus algorithm. Blocks are generated one at a time, and a blockchain can be constructed by adding a new block to an existing block list.

[0053] In the present invention, a "shard" can be a subset of nodes participating in a blockchain network. The entire blockchain network can be divided into at least multiple shards. If not divided, all nodes are considered to participate in one shard, and each shard has a unique address. Generally, in a blockchain network that applies sharding technology, nodes belonging to the same shard communicate with each other peer-to-peer and share an account-specific transaction chain (AWTC) for all accounts belonging to the same shard.

[0054] In the present invention, every account can have one working shard and one home shard. The working shard and home shard of any given account can be the same or different. In the present invention, the "home shard" of an account can be calculated based on a function with the account address and the total number of shards as parameters. The "working shard" of an account in the present invention is the shard to which the account currently belongs and operates, and can be a general shard. That is, in a blockchain network that applies a conventional sharding technique, shards communicate with each other peer-to-peer between the same nodes, and the ledgers of all accounts belonging to the same shard are shared. In a blockchain network to which the present invention is applied, working shards communicate with each other peer-to-peer between the same nodes, and the account-specific transaction chains (AWTCs) of all accounts belonging to the same working shard can be shared.

[0055] When a shard is split into two using the dynamic sharding method of the present invention, the node that uses the shard as its home shard is also split, and the node that uses the shard as its working shard is also split. In other words, the home shard and working shard of the split node and account may change.

[0056] In the present invention, an "intra-shard transaction" may refer to a transaction between nodes in the same working shard. In the present invention, an "inter-shard transaction" may refer to a transaction between nodes in different working shards.

[0057] Each shard can have a set of accounts that use the shard as their home shard and a set of accounts that use the shard as their working shard. Accounts that make up a blockchain network must belong to one home shard and one working shard. The home shard and working shard can be the same or different.

[0058] A node can change the working shard it belongs to from one working shard to another, and when a node changes its working shard, the host accounts and guest accounts managed by the node can also change their working shards at the same time.

[0059] In the present invention, all nodes belonging to the blockchain network, including the dynamic sharding system, can calculate the shard splitting conditions, the address of the new shard (hereinafter referred to as the new shard), the address of the shard to be split (hereinafter referred to as the original shard), the nodes that will remain in the existing shard, and the nodes that will move to the new shard. In the present invention, the nodes belonging to the original shard are split into two. One of the two split shards maintains the same address as the original shard (referred to as the old shard), and the other can be assigned a new address as the new shard. The nodes belonging to the original shard are divided into nodes that will remain in the old shard and nodes that will move to the new shard.

[0060] In the present invention, all shards constituting a blockchain network may have an address. The address of a shard may be a value assigned in the order in which the shard is created in the network. The highest address value of a shard constituting a blockchain network may be a value based on the total number of shards. The address of a new shard may be "the highest shard address value in the current network + 1."

[0061] In the present invention, shard splitting does not refer to physical splitting, but rather refers to the operation of assigning some of the nodes belonging to the original shard to the old shard and the remaining nodes to the new shard.

[0062] Before the original shard is split, all nodes belonging to the original shard communicate peer-to-peer and share the account-specific transaction chain (AWTC) of all accounts belonging to the original shard. However, after the original shard is split into old shards and new shards, only the nodes assigned to the old shard share the account-specific transaction chain (nodes assigned to the old shard do not share the account-specific transaction chain of nodes assigned to the new shard), and only the nodes assigned to the new shard share the account-specific transaction chain (nodes assigned to the new shard do not share the account-specific transaction chain of nodes assigned to the old shard).

[0063] In this invention, "peer-to-peer communication" in a blockchain network and a shard means that when any node receives predetermined information, it replicates the received information and sends it to other nodes, and the nodes that receive the information also replicate the information and send it to other nodes, repeating this process so that after a sufficient amount of time has passed, all nodes belonging to the blockchain network and the shard share the information.

[0064] In the present invention, a "round" can be a unit time for agreement. In the present invention, transactions shared in a previous round become the subject of agreement in the current round.

[0065] In the present invention, an "adjacent shard" of a given shard may be a shard having an address whose bit distance from the address of the given shard is 1. A bit distance of 1 means that when any two binary values ​​(binary numbers) are compared digit by digit, only one digit value is different. For example, for the binary value "0101," a binary value whose first digit is different is "0100," a binary value whose second digit is different is "0111," a binary value whose third digit is different is "0001," and a binary value whose fourth digit is different is "1101." Therefore, for the binary value "0101," the binary value "0100," the binary value "0111," the binary value "0001," and the binary value "1101" are all binary values ​​whose only digit value is different. In this way, in the present invention, a binary value whose only digit value is different from an arbitrary binary value is defined as having a bit distance of 1, and a shard whose address whose bit distance from the address of the given shard is 1 is defined as an adjacent shard. In the present invention, the old shard and new shard split from the original shard may be adjacent shards whose addresses have a bit distance of 1.

[0066] The operating system described below constitutes one embodiment and does not limit the scope of the claims to any one operating environment, but may be used in other environments without departing from the spirit and scope of the claimed subject matter.

[0067] FIG. 1 is a diagram illustrating a conceptual diagram of a blockchain network divided into three shards according to the present invention.

[0068] The multiple nodes that make up the blockchain network are divided into three shards 110, 120, and 130, but this is not limited to this. The number of shards can be increased as the number of nodes and accounts that make up the blockchain network increases, and in this case, one shard is divided into two. Each shard 110, 120, and 130 can be a working shard for the nodes currently belonging to that shard. All nodes belonging to the current working shard can share the same information.

[0069] Each node can include an intra-shard communication node list that stores information about nodes within the working shard that are peer-to-peer communication targets (intra-shard communication nodes), and an inter-shard communication node list that stores information about nodes outside the working shard that are peer-to-peer communication targets (inter-shard communication nodes).

[0070] The intra-shard communication nodes, which are the communication targets within each node's working shard, are determined according to Kademlia rules. The inter-shard communication nodes, which are the communication targets outside each node's working shard, can be randomly determined as some of the nodes belonging to adjacent shards.

[0071] Based on the intra-shard communication node list and inter-shard communication node list determined in this manner, information sharing via peer-to-peer communication within and outside the working shard becomes possible. For any node, the information it shares with the intra-shard communication node may differ from the information it shares with the inter-shard communication node. That is, the information it shares with the inter-shard communication node may be more restrictive than the information it shares with the intra-shard communication node. The 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 may be randomly reconfigured.

[0072] In FIG. 1, nodes 111, 121, and 131 that communicate with nodes within the working shard are shown as unhatched circles, and nodes 112, 122, and 132 that communicate with nodes outside the working shard are shown as hatched circles. Nodes 112, 122, and 132 that communicate with nodes outside the working shard can communicate with nodes belonging to adjacent shards based on the inter-shard communication node list. Here, adjacent shards may be shards whose shard addresses have a bit distance of 1. A bit distance of 1 may mean that the addresses of the shards differ only in the bit value of one digit. In other words, addresses with a bit distance of 1 from the address "00" may be "01" and "10."

[0073] In the example of Figure 1, if the address of the first shard 110 is "00", the address of the second shard 120 is "01", and the address of the third shard 130 is "10", the addresses of the first shard 110 and the second shard 120 are "00" and "01", respectively, so the bit distance is 1, and the addresses of the first shard 110 and the third shard 130 are "00" and "10", respectively, so the bit distance is 1, but the addresses of the second shard 120 and the third shard 130 are "01" and "10", respectively, so the bit distance is not 1 because the two digit values ​​are different.

[0074] Therefore, the first and second shards are adjacent shards, and the first and third shards can communicate directly as adjacent shards. However, the second and third shards are not adjacent shards and cannot communicate directly, but can communicate via the first shard, which is an adjacent shard.

[0075] Each node in Figure 1 includes a shard rebalancing algorithm, which is executed according to preset conditions. The shard rebalancing algorithm can use, but is not limited to, the Bounded Cuckoo algorithm. The Bounded Cuckoo algorithm is described in detail in the introduction to RapidChain (see RapidChain: Scaling Blockchain via Full Sharding, https: / / eprint.iacr.org / 2018 / 460.pdf). Based on the Bounded Cuckoo algorithm, the present invention calculates the health index of shards, classifies them into strong shards and weak shards, and periodically randomly extracts some nodes from strong shards and moves them to weak shards.

[0076] When the shard rebalancing algorithm is executed, a node whose working shard is to be changed may be randomly selected, and the working shard of the node may be reallocated and changed. In the present invention, once the source shard is determined, a node belonging to a shard other than the source shard may randomly change its working shard to the source shard. When the working shard of a node is changed, the node may execute a working shard change procedure for all host accounts and guest accounts that it manages.

[0077] Furthermore, a node can perform separate working shard change procedures for the host account and guest account it manages. For example, when a guest account it manages changes its delegated node, if the delegated node belongs to another working shard, the node can perform the working shard change procedure for the guest account. Alternatively, when a third account that was managed by a node belonging to another working shard is newly delegated for management, the node can perform the working shard change procedure for the third account.

[0078] 2 is a block diagram illustrating an exemplary configuration of a node 200 including the dynamic sharding system of the present invention. Each node may be implemented as a computer device.

[0079] In some examples, various devices and / or components of node 200 comprise distributed computing resources 250 that can communicate with each other and with external devices via one or more networks 260 .

[0080] In various embodiments, distributed computing resources 250 may include devices 250(1) through 250(N).

[0081] Embodiments of the present invention support scenarios in which distributed computing resources 250 may include one or more computing devices operating in a cluster or other grouped configuration to share resources, distribute load, improve performance, or for other purposes.

[0082] Distributed computing resources 250 may fall into various categories, such as traditional server-type devices, desktop computer-type devices, mobile devices, special-purpose devices, implantable devices, and / or wearable devices. Thus, although described as desktop and laptop computers, distributed computing resources 250 can include various types of devices and are not limited to any particular type of device. Distributed computing resources 250 may be an integrated component for inclusion in a desktop computer, server computer, web server computer, personal computer, mobile computer, laptop computer, tablet computer, wearable computer, implant computer, communication device, automobile computer, network-enabled television, thin client, terminal, PDA, game console, gaming device, workstation, media player, personal video recorder (PVR), set-top box, camera, or computing device.

[0083] Node 200 may be a single computing device that is a distributed computing resource 250. Node 200 may include any type of computing device having one or more processing units 202 operatively connected to computer readable media (CRM) 204 via a bus 240, and in some cases may include one or more of these. Such buses 240 may include a system bus, a data bus, an address bus, a PCI bus, a mini-PCI bus, and various local, peripheral, and / or independent buses.

[0084] In node 200, processing unit 202 may include, for example, a processing unit 202 representing a CPU-type processing unit, a GPU-type processing unit, a field programmable gate array (FPGA), a digital signal processor (DSP), or other hardware logic component driven by a CPU.

[0085] For example, such hardware logic components may include Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASPs), System-On-a-Chip (SOC) systems, Complex Programmable Logic Devices (CPLDs), etc. Specifically, CRM 204 may store instructions executable by an external processing unit 208, such as an external CPU-based processing unit 206, an external GPU-based processing unit 208, etc., and / or an external accelerator 210, such as an FPGA-based accelerator 210(1), a DSP-based accelerator 210(2), or other accelerators 210(N).

[0086] The CRM 204 described herein includes computer storage media and / or communication media.

[0087] Computer storage media may include types of storage units, removable and non-removable computer storage media, such as volatile memory, non-volatile memory, and / or other permanent or auxiliary 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.

[0088] The computer storage medium may be RAM, static RAM (SRAM), dynamic RAM (DRAM), phase change memory (PRAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, DVD, optical storage medium, magnetic cassette, magnetic tape, solid-state memory (SSD), etc.

[0089] Executable instructions stored in CRM 204 include operating system 220 and other modules, programs, or applications that can be loaded and executed by processing unit 202 .

[0090] Additionally or alternatively, any functionality described herein may be at least partially performed by one or more hardware logic components, such as an accelerator.

[0091] For example, exemplary hardware logic components that can be used include Field-Programmable Gate Arrays (FPGAs), Application-Specific Integrated Circuits (ASICs), Application-Specific Standard Products (ASSPs), System-On-a-Chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc. For example, the accelerator can be a hybrid device from XILINX or ALTERA that includes a CPU embedded in FPGA fabric.

[0092] In the illustrated embodiment, the CRM 204 also includes a data store 212. In some embodiments, the data store 212 includes a data store such as a database, a data warehouse, or other type of structured or unstructured data store.

[0093] In some embodiments, data store 212 includes a corpus and / or a relational database having one or more tables, indexes, stored procedures, etc. that enable data access such as web tables, including one or more Hypertext Markup Language (HTML) tables, Resource Description Framework (RDF) tables, Web Ontology Language (OWL) tables, and / or Extensible Markup Language (XML) tables.

[0094] For example, the data store 212 may store data and / or instructions for operation of processes, applications, components, and / or modules stored in the CRM 204 and executed by the processing unit 202 .

[0095] Node 200 may further include one or more input / output (I / O) interfaces 216, which may be I / O interfaces 216 that enable node 200 to communicate with input / output devices that can communicate with user input devices including peripheral input devices (e.g., 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.).

[0096] Additionally, node 200 is a node in a blockchain network and further includes one or more input / output (I / O) network interfaces 218 that enable node 200 to communicate with other nodes in the blockchain network via network 260 .

[0097] Such input / output (I / O) network interface 218 includes one or more network interface controllers (NICs) or other types of transceiver devices for sending and receiving communications over network 260 .

[0098] Network 260 may include a public network such as the Internet, a private network such as an institutional and / or personal intranet, or a combination of portions of a private and public network. 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, or a WiMax network. Network 260 may include a mobile communication network (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.

[0099] Additionally, network 260 includes a number of devices that facilitate network communications or form the hardware basis for the network, such as switches, routers, gateways, access points, firewalls, base stations, repeaters, backbone devices, and the like.

[0100] In some embodiments, network 260 further includes devices that enable connection to a wireless network, such as wireless access points (WAPs). Embodiments of the present invention can support connections via WAPs that transmit and receive data over a variety of electromagnetic frequencies (e.g., radio frequencies), including WAPs that support the Institute of Electrical and Electronic Engineers (IEEE) 802.11 standard (e.g., 802.11g, 802.11n, etc.).

[0101] In the illustrated embodiment, CRM 204 may include operating system 220 and dynamic sharding system 222. Dynamic sharding system 222 may include one or more of the modules and / or APIs shown in blocks 224, 226, 228, 230, 232, and 234, although this is merely an example and there may be more or fewer. The functionality 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 divided and performed by a greater number of modules and / or APIs.

[0102] Alternatively, some or all of the operating system, data stored in the data store, and account transaction system may be stored in separate memories 236, such as memory 214 on processing unit 202, memory 236(1) on CPU-based processing unit 206, memory 236(2) on GPU-based processing unit 208, memory 236(3) on FPGA-based accelerator 210(1), memory 236(4) on DSP-based accelerator 210(2), and / or memory 236(M) on other accelerators 210(N).

[0103] The dynamic sharding system 222 may include a shard addition determination module 224, a new shard address calculation module 226, a source shard calculation module 228, a shard movement module 230, a shard allocation module 232, and a shard division module 234.

[0104] All nodes that make up the blockchain network include a dynamic sharding system.

[0105] In a node that uses a split-origin shard as a working shard (hereinafter referred to as a split-origin shard belonging node), the shard addition determination module 224, new shard address calculation module 226, split-origin shard calculation module 228, shard allocation module 232, and shard split module 234 can operate. In a node that uses a shard that is not a split-origin shard as a working shard (hereinafter referred to as a non-split shard belonging node), the shard addition determination module 224, new shard address calculation module 226, split-origin shard calculation module 228, and shard movement module 230 can operate.

[0106] The shard addition determination module 224 compares the traffic volume of the blockchain network or the working shards to which it belongs with a preset reference value, and determines that a shard needs to be added if the traffic volume exceeds the reference value. The shard addition determination module 224 determines whether to add a shard based on the number of nodes and accounts belonging to the shard.

[0107] The new shard address calculation module 226 can calculate the address of a new shard based on the number of shards currently included in the network. The new shard address may be the highest shard address in the current network + 1. All nodes included in the network drive the new shard address calculation module 226 to calculate new shard address information.

[0108] The source shard calculation module 228 can calculate the address of the source shard to be divided into the new shard based on the new shard address. The new shard and the source shard may be adjacent shards with a bit distance of 1. The source shard calculation module 228 calculates the source shard address by replacing the 1 in the most significant set bit (MSSB) set to 0 in the binary value of the new shard address with 0.

[0109] The shard migration module 230 is a module that runs in a node that belongs to an unsplit shard, and it recognizes that it is a migration target and changes its working shard to the original shard that was split.

[0110] The shard allocation module 232 allocates some of the nodes that used the original shard as a working shard to the old shard, and the rest to the new shard. After the split, the shard allocation module 232 can allocate nodes to each shard so that the shares and number of nodes in the two shards are approximately the same. Furthermore, accounts that used the original shard as their home shard can also be allocated separately to old shards and new shards. All nodes that make up the network can calculate the old shard allocation nodes and accounts and the new shard allocation nodes and accounts using the same calculation formula.

[0111] The shard division module 234 is a module that is driven by the node to which the original shard belongs, and manages the transaction chain and account directory for each account according to the assigned shard.

[0112] FIG. 3 is a diagram showing information stored in a data store 300 in the blockchain network of the present invention.

[0113] The node's data store 300 can store account-specific transaction chains (AWTCs) 302, 304, 306, 308 of all accounts belonging to the node's working shard, an account directory 310 storing working shard history information of accounts that have the node's working shard as their home shard, a round state chain 312 that combines account-specific transactions of all accounts belonging to the working shard and stores round state blocks agreed upon between all nodes belonging to the working shard as a chain, a world round state chain 314 that combines all round state blocks belonging to the blockchain network and stores agreed world round state blocks as a chain, an intra-shard communication node list 316 that stores information on nodes that are communication targets within the node's working shard, and an inter-shard communication node list 318 that stores information on nodes that are communication targets outside the node's working shard.

[0114] The account directory 310 stores working shard history information for accounts that have the working shard of the node as their home shard. In this example, for convenience, it is assumed that each node manages only one account, i.e., the host account. Therefore, in this example, a node can be considered to be the same concept as an account. For example, in the example of FIG. 1, if the home shard of the account managed by node 111 is the second shard 120, information about the first shard 110 is stored as working shard information for the account managed by node 111 in the account directories of nodes 121 and 122 that have the second shard 120 as their working shard. On the other hand, in the example of FIG. 1, if the home shard of the account managed by node 112 is the third shard 130, information about the first shard 110 is stored as working shard information for the account managed by node 112 in the account directories of nodes 131 and 132 that have the third shard as their working shard.

[0115] As mentioned above, nodes and accounts can change working shards. When a working shard is changed, the shard movement module of the present invention is activated to update the changed working shard information in the nodes belonging to the home shard of the corresponding account.

[0116] In the present invention, it is preferable that the latest working shard address of a given account is updated in the account directory of the node to which the home shard of the given account belongs by the shard migration module.

[0117] FIG. 4 is a block diagram illustrating a dynamic sharding system 400 according to an embodiment of the present invention.

[0118] Such a dynamic sharding system 400 may be realized by a computer system of a node, and the dynamic sharding system 400 in FIG. 4 may be the dynamic sharding system 222 in FIG.

[0119] The dynamic sharding system 400 executed in the node of the present invention may include a shard addition determination module 402 that determines the need for adding a shard, a new shard address calculation module 404 that calculates a new shard address based on the number of shards currently included in the network, a source shard calculation module 406 that calculates the source shard address based on the new shard address, and a shard allocation module 410 that allocates some of the nodes belonging to the source shard to old shards and the rest to new shards.

[0120] The node is a node belonging to the shard to be split, and the dynamic sharding system 400 may further include a shard split module 412 that manages an account-specific transaction chain and an account directory based on the assigned shard.

[0121] The node is a node belonging to a non-split shard, and the dynamic sharding system 400 may further include a shard movement module 408 that moves the working shard to the original shard.

[0122] The shard addition determination module 402 compares the traffic volume of the blockchain network or the working shards to which it belongs with a preset reference value and determines that a shard needs to be added if the traffic volume exceeds the reference value. The blockchain network of the present invention can maintain approximately the same traffic volume of shards by moving the working shards of nodes through a shard rebalancing process. If the number of accounts or nodes in the blockchain network is large compared to the number of shards, the traffic volume of intra-shard and inter-shard communications increases, and peer-to-peer communications may not be completed within the preset round time. The shard addition determination module 402 can compare the traffic volume with a reference value to determine the need for a shard addition. In another embodiment, the shard addition determination module 402 can determine whether to add a shard based on the number of nodes and accounts belonging to one working shard. If a shard needs to be added, a shard addition transaction is generated, and this shard addition transaction can be confirmed by agreement between nodes. The agreed-upon shard addition transaction can be shared with all nodes on the network via peer-to-peer communication.

[0123] The new shard address calculation module 404 can calculate the address of a new shard based on the number of shards included in the current network. The new shard address may be "the highest shard address in the current network + 1." That is, the new shard can have the largest address value among the shards included in the network. All nodes included in the network can drive the new shard address calculation module 404 to calculate new shard address information.

[0124] The source shard calculation module 406 can calculate the source shard to be divided into the new shard based on the new shard address. The new shard and the source shard may be adjacent shards with a bit distance of 1. The source shard calculation module 406 can calculate the source shard address by replacing the most significant set bit (MSSB) of the binary value of the new shard address with 1 by 0. For example, if the new shard address is "1100", the MSSB is 2. 3 If you replace the 1 in MSSB with a 0, it becomes "0100". In other words, the address of the original shard is "0100". As another example, if the new shard address is "10001", the MSSB is 2 4 If the 1 in the MSSB is replaced with 0, the address of the original shard becomes "00001". All nodes included in the network can drive the original shard calculation module 406 to calculate the original shard address information.

[0125] Table 1 is an example of the original shard address for each new shard address.

[0126] [Table 1]

[0127] As shown in Table 1, if the MSSB of the new shard address is replaced with a 0 to select the original shard, the original shard changes as new shards are added, allowing the shards making up the network to participate in the split relatively evenly. If the original shard is split into two immediately after being determined in this way, only about half the nodes belong to the split shards (old shard and new shard) compared to the other unsplit shards. If the number of nodes making up a shard is small, there is a higher risk that an attacker could take control of the shard and manipulate the consensus results. To prevent this, in the present invention, before the original shard is split, some of the nodes belonging to the unsplit shard change their working shards to the original shard. The node that changes the working shard from the unsplit shard to the original shard is determined randomly, and information about the nodes belonging to the unsplit shard that change the working shard can be shared with the other nodes belonging to the unsplit shard.

[0128] The shard migration module 408 is a module operated by nodes belonging to some unsplit shards, which recognizes that it is a migration target and changes its working shard to the original shard to be split. A specific method for a node to change the working shard can be understood by referring to Korean Patent Application No. 10-2022-0072023, "System and Method for Changing Working Shard of Account in Blockchain Network," pending by the applicant of the present invention.

[0129] The shard allocation module 410 allocates some of the nodes that used the original shard as a working shard to the old shard, and the rest to the new shard. After the split, the shard allocation module 410 can allocate nodes to each shard so that the shares and number of nodes in the two shards are approximately the same. Furthermore, accounts that used the original shard as their home shard can also be allocated separately to old shards and new shards. All nodes that make up the network can use the same calculation formula to calculate the old shard allocation nodes and accounts and the new shard allocation nodes and accounts.

[0130] Here, the node to which the old shard is assigned as a working shard is called the old working shard assigned node, the node to which the new shard is assigned as a working shard is called the new working shard assigned node, the account to which the old shard is assigned as a home shard is called the old home shard assigned account, and the account to which the new shard is assigned as a home shard is called the new home shard assigned account.

[0131] The shard splitting modules 412 of the old working shard allocation node and the new working shard allocation node operate differently. That is, the shard splitting module 412 of the old working shard allocation node deactivates the transaction chains for each account for all accounts managed by the new working shard allocation node and deletes the new home shard allocation account information from the account directory. The shard splitting module 412 of the new working shard allocation node deactivates the transaction chains for each account for all accounts managed by the old working shard allocation node and deletes the old home shard allocation account information from the account directory.

[0132] Figure 5 is an operational flowchart showing a dynamic sharding method for a node belonging to a split shard according to one embodiment of the present invention, and Figure 6 is an operational flowchart showing a dynamic sharding method for a node belonging to a non-split shard according to one embodiment of the present invention.

[0133] The operations of an exemplary process are illustrated in individual blocks and described with reference to these blocks. The process is illustrated as a logical flow of blocks, with each block representing one or more operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processors, cause the one or more processors to perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, modules, components, data structures, and the like that perform a particular function or implement a particular abstract data type. The order in which the operations are described should not be construed as limiting, and any number of the described operations may be subdivided into multiple sub-operations or performed in parallel in any order.

[0134] The dynamic sharding method at the node belonging to the original shard to be split will be described with reference to FIG.

[0135] The node belonging to the original shard to be split determines whether to add a shard based on at least one of the traffic volume of the blockchain network or the working shard to which it belongs, the number of nodes belonging to the shard, and the number of accounts belonging to the shard (step S502).

[0136] The node belonging to the original shard calculates the address of the new shard based on the number of shards included in the current network (step S504). The new shard address may be "the highest shard address in the current network + 1."

[0137] The node belonging to the original shard calculates the address of the original shard to be divided into the new shard based on the address of the new shard (step S506). The new shard and the original shard are preferably adjacent shards with a bit distance of 1.

[0138] Of the nodes belonging to the original shard, some of the nodes that have the original shard as their working shard are assigned to the old shard, and the rest are assigned to the new shard. Accounts that have the original shard as their home shard are also assigned to the old shard and the new shard (step S508).

[0139] The node belonging to the original shard to be split manages the transaction chains for each account and the account directory according to the shard to which it is assigned (step S510). If the node belonging to the original shard to be split is the old working shard assigned node, it deactivates the transaction chains for each account for all accounts managed by the new working shard assigned node and deletes the account information for the new home shard assigned from the account directory. On the other hand, if the node belonging to the original shard to be split is the new working shard assigned node, it deactivates the transaction chains for each account for all accounts managed by the old working shard assigned node and deletes the account information for the old home shard assigned from the account directory.

[0140] A dynamic sharding method for nodes belonging to unsplit shards will be described with reference to FIG.

[0141] A node belonging to a non-split shard determines whether to add a shard based on at least one of the traffic volume of the blockchain network or the working shard to which it belongs, the number of nodes belonging to the shard, and the number of accounts belonging to the shard (step S602).

[0142] The nodes belonging to the undivided shards calculate the address of the new shard based on the number of shards included in the current network (step S604). The new shard address may be "the highest shard address in the current network + 1."

[0143] The node belonging to the non-split shard calculates the address of the original shard to be split into the new shard based on the address of the new shard (step S606). The new shard and the original shard are preferably adjacent shards with a bit distance of 1.

[0144] The nodes belonging to the undivided shards change their working shards from undivided shards to the original shards to be split (step S608).

[0145] All of the methods and processes described above can be implemented and fully automated in software code modules executed by one or more general-purpose computers or processors. The code modules can be stored on any type of computer-readable storage medium or other computer storage device. Some or all of the methods can be implemented in specialized computer hardware.

[0146] Any routine illustrations, elements, or blocks of the flowcharts described herein and / or shown in the accompanying drawings should be understood to potentially represent code, modules, segments, or portions that include one or more executable instructions for implementing a particular logical function or element. Examples of routines, alternatives, are included within the scope of the examples described herein and may be performed substantially, synchronously, or sequentially in accordance with the functionality understood herein, with elements or functions omitted, in the order shown or discussed.

[0147] Numerous variations and modifications can be made to the above-described embodiments, and the elements should be understood as being among other acceptable examples. All such modifications and variations are intended to be within the scope of this disclosure and protected by the following claims. The above-described embodiments of the present invention may be implemented in the form of program instructions that can be executed by various computer components and recorded on a computer-readable recording medium. The computer-readable recording medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the computer-readable recording medium may be those specially designed and constructed for the present invention, or they may be well-known and available to those skilled in the art of computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and DVDs; magneto-optical media such as floptical disks; and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, and flash memory. Examples of program instructions include not only machine code, such as produced by a compiler, but also high-level language code that can be executed by a computer using an interpreter, etc. The hardware devices may be configured to operate as one or more software modules to perform the processes of the present invention, and vice versa.

[0148] Although the present invention has been described above with reference to specific embodiments and drawings that limit the scope of the present invention to specific elements, these are provided to facilitate a more comprehensive understanding of the present invention and are not intended to limit the scope of the present invention. Those skilled in the art will appreciate that various modifications and variations may be made based on these descriptions.

[0149] Therefore, the concept of the present invention should not be limited to the above-described embodiments, and all modifications equivalent to or equivalent to the scope of the claims below should be considered to fall within the category of the concept of the present invention. [Explanation of symbols]

[0150] 100 1st Shard 110 1st Shard 120 Second Shard 130 Third Shard 111,121,131 nodes in the working shard 112,122,132 inter-shard communication nodes 200 nodes 222 Dynamic Sharding System 224 Shard addition decision module 226 New Shard Address Calculation Module 228 Split source shard calculation module 230 Shard Movement Module 232 Shard Allocation Module 234 Shard Splitting Module 240 Bus 202 Processing Unit 204 Computer Readable Medium (CRM) 212 Datastore 216 I / O interfaces 218 I / O network interfaces 250 distributed computer resources 260 Network 300 data stores 302,304,306,308 Transaction chain by account 310 Account Directory 312 Round State Chain 314 World Round State Chain 316 Intra-shard communication node list 318 Inter-shard communication node list 400 Dynamic Sharding System 402 Shard addition decision module 404 New shard address calculation module 406 Split Source Shard Calculation Module 408 Shard Movement Module 410 Shard Allocation Module 412 Shard Splitting Module

Claims

1. In a dynamic sharding system driven by nodes that make up a blockchain network, a shard addition determination module that determines the need for adding a shard; a new shard address calculation module that calculates a new shard address based on the number of shards currently included in the blockchain network; A division source shard calculation module that calculates the division source shards to be divided into new shards based on the new shard addresses; A shard allocation module that allocates a portion of the nodes belonging to the source shard to the old shard and allocates the remainder to the new shard; Including, Dynamic sharding system in blockchain networks.

2. The node is a node belonging to the original shard to which the original shard is to be split, with the original shard being a working shard, The dynamic sharding system further includes a shard division module that manages an account-specific transaction chain and an account directory based on the shards allocated by the shard allocation module. The dynamic sharding system in a blockchain network according to claim 1.

3. The node is a node belonging to an undivided shard with the undivided shard as a working shard, The dynamic sharding system further includes a shard movement module that causes the node belonging to the unsplit shard to change the working shard from the unsplit shard to the original shard to be split. The dynamic sharding system in a blockchain network according to claim 1.

4. The shard addition determination module determines whether a shard needs to be added based on at least one of a traffic volume, a number of nodes, and a number of accounts. The dynamic sharding system in a blockchain network according to claim 1.

5. The new shard address calculation module calculates the new shard address by adding 1 to the maximum value of the shard addresses currently included in the blockchain network. The dynamic sharding system in a blockchain network according to claim 1.

6. The source shard calculation module calculates the source shard from among adjacent shards having an address whose bit distance from the new shard address is 1; The dynamic sharding system in a blockchain network according to claim 1.

7. The source shard calculation module calculates the source shard address by replacing the most significant bit 1 set to 1 in the binary value of the new shard address with 0, The dynamic sharding system in a blockchain network according to claim 6.

8. The shard allocation module allocates the nodes belonging to the source shard to the old shard and the new shard after the split based on at least one of the shares and the number of nodes allocated to the old shard and the new shard. The dynamic sharding system in a blockchain network according to claim 1.

9. The node is an old working shard allocation node, The shard splitting module deactivates the transaction chain for each account managed by the new working shard allocation node and deletes the new home shard allocation account information from the account directory. The dynamic sharding system in a blockchain network according to claim 2.

10. The node is a new working shard allocation node, The shard splitting module deactivates the transaction chains for the accounts managed by the old working shard allocation node and deletes the old home shard allocation account information from the account directory. The dynamic sharding system in a blockchain network according to claim 2.

11. A dynamic sharding method implemented by at least one processor in a node constituting a blockchain network, Determining the need for additional shards; Calculating a new shard address based on the number of shards currently included in the blockchain network; Calculating the original shards to be divided into new shards based on the new shard addresses; Allocating a portion of the nodes belonging to the source shard to the old shard and the remaining nodes to the new shard; A dynamic sharding method in a blockchain network, including:

12. The node is a node belonging to the original shard to which the original shard is to be split, with the original shard being a working shard, The dynamic sharding method further includes managing a transaction chain and an account directory for each account based on the assigned shards. The method for dynamic sharding in a blockchain network according to claim 11.

13. The node is a node belonging to an undivided shard with the undivided shard as a working shard, The dynamic sharding method further includes a step in which the node belonging to the undivided shard changes the working shard from the undivided shard to the original shard to be divided. The method for dynamic sharding in a blockchain network according to claim 11.

14. The step of determining the need for adding a shard includes: determining the need for adding a shard based on at least one of traffic volume, number of nodes, and number of accounts; The method for dynamic sharding in a blockchain network according to claim 11.

15. The step of calculating a new shard address based on the number of shards currently included in the blockchain network includes: Calculating the new shard address by adding 1 to the maximum value of the shard address currently included in the blockchain network, The method for dynamic sharding in a blockchain network according to claim 11.

16. The step of calculating the original shards to be divided into the new shards based on the new shard addresses includes: Calculating the source shard from among adjacent shards having an address whose bit distance from the new shard address is 1, The method for dynamic sharding in a blockchain network according to claim 11.

17. The step of calculating the original shards to be divided into the new shards based on the new shard addresses includes: The step of calculating the original shard address by replacing the most significant bit 1 set to 1 in the binary value of the new shard address with 0, The method for dynamic sharding in a blockchain network according to claim 16.

18. The step of allocating a portion of the nodes belonging to the source shard to the old shard and allocating the remainder to the new shard includes: After the split, the nodes belonging to the original shard are allocated to the old shard and the new shard based on at least one of the shares and the number of nodes allocated to the old shard and the new shard. The method for dynamic sharding in a blockchain network according to claim 11.

19. The node is an old working shard allocation node, The step of managing a transaction chain and an account directory for each account based on the allocated shards includes: The old working shard allocation node deactivates the account transaction chain for the account managed by the new working shard allocation node, and deletes the new home shard allocation account information from the account directory. The method for dynamic sharding in a blockchain network according to claim 12.

20. The node is a new working shard allocation node, The step of managing a transaction chain and an account directory for each account based on the allocated shards includes: The new working shard allocation node deactivates the account transaction chain for the account managed by the old working shard allocation node, and deletes the old home shard allocation account information from the account directory. The method for dynamic sharding in a blockchain network according to claim 12.

Citation Information

Patent Citations

  • Distributed computer system and method of operation thereof

    EP3896901A1

  • Communication device, communication method and communication program

    JP2019212044A

  • Splitting the Blockchain Network

    JP2021522702A

  • Partitioning a blockchain network

    US20210234665A1

  • Dynamic bitwise sharding of live stream comment groups

    US8195665B1