Adapting connections of layered network

The method allows for adaptive connection management between nodes in a layered network, particularly in blockchain networks, improving efficiency and reliability by selectively disconnecting from core nodes based on network characteristics.

JP2025181856APending Publication Date: 2025-12-11NCHAIN LICENSING AG
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2025153715
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-02-19
Filing Date
2025-09-17
Publication Date
2025-12-11

AI Technical Summary

Technical Problem

In certain situations, it may be beneficial for a node in a layered network to intentionally disconnect from another node within the network.

Method used

A computer-implemented method for adapting connections between nodes in a layered network, where the method involves disabling connections between an adaptation node and at least one core node based on network characteristics, with core nodes potentially being mining or storage nodes in a blockchain network.

Benefits of technology

Enables dynamic adjustment of network connections to optimize performance and resource allocation, enhancing the efficiency and reliability of the blockchain network.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025181856000001_ABST
    Figure 2025181856000001_ABST
Patent Text Reader

Abstract

To provide a computer-implemented method for adapting connections between nodes of a layered network.SOLUTION: A layered network comprises a plurality of nodes arranged in an ordered set of layers. The ordered set of layers comprises, in order, a core layer comprising a set of core nodes, a second layer comprising a set of second nodes, and one or more outer layers each comprising a respective set of outer nodes. Each core node is connected to at least one other core node. A method is performed by an adapting node, the adapting node being a node of the layered network that is connected to one or more second nodes and multiple core nodes. The method comprises, based on one or more network properties of the layered network, disabling a respective connection between the adapting node and at least one but not all of the multiple core nodes.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a method for adapting connections between nodes in a hierarchical network. [Background technology]

[0002] A blockchain refers to a form of distributed data structure in which a replicated copy of the blockchain is maintained at each of multiple nodes in a peer-to-peer (P2P) network. A blockchain includes a chain of data blocks, each containing one or more transactions. Each transaction may point to a previous transaction in a sequence that may span one or more blocks. Transactions may be submitted to the network for inclusion in a new block. New blocks are created through a process known as "mining," which involves multiple mining nodes each competing to perform a "proof of work," i.e., solving a cryptographic puzzle based on a pool of pending transactions waiting to be included in a block.

[0003] Each node in the network can play any one, two, or all three roles: forwarding, mining, and storage. Forwarding nodes propagate transactions throughout the nodes of the network. Mining nodes mine transactions into blocks. Storage nodes each store their own copies of mined blocks in the blockchain. To record a transaction in the blockchain, a party sends the transaction to one of the nodes in the network to be propagated. Mining nodes that receive a transaction may compete to mine the transaction into a new block. Each node is configured to respect the same node protocol, which includes one or more conditions for a transaction to be valid. Invalid transactions are neither propagated nor mined into a block. Assuming the transaction is validated and thereby accepted onto the blockchain, the transaction (including any user data) remains stored in each of the nodes in the P2P network as an immutable public record.

[0004] Miners who successfully solve the proof-of-work puzzle and create the latest block are typically rewarded with a new transaction, called a "generation transaction," that generates a new amount of digital assets. Because mining a block requires significant computational resources and blocks containing double-spend attempts are likely not accepted by other nodes, proof-of-work incentivizes miners not to cheat the system by including double-spend transactions in their blocks.

[0005] In an “output-based” model (sometimes called a UTXO-based model), the data structure of a given transaction includes one or more inputs and one or more outputs. Any usable output includes an element specifying the amount of a digital asset, sometimes called a UTXO (or “unspent transaction output”). The output may further include a locking script that specifies the conditions for redeeming the output. Each input includes a pointer to such an output in a prior transaction and may further include an unlocking script for unlocking the locking script of the pointed-to output. Thus, considering a pair of transactions, we refer to them as a first transaction and a second transaction (or “target” transaction). The first transaction includes at least one output that specifies the amount of a digital asset and includes a locking script that defines one or more conditions for unlocking the output. The second, target transaction includes at least one input that includes a pointer to the output of the first transaction and includes an unlocking script for unlocking the output of the first transaction.

[0006] In such a model, when a second target transaction is sent to the P2P network to be propagated and recorded on the blockchain, one of the validity criteria applied at each node is that the unlock script meets all of one or more conditions defined in the lock script of the first transaction, and another is that the output of the first transaction has not yet been redeemed by another, earlier valid transaction. A node that finds the target transaction invalid according to either of these conditions will neither propagate it nor include it for mining into a block to be recorded on the blockchain.

[0007] Traditionally, transactions in a blockchain are used to communicate digital assets, i.e., some digital tokens. However, blockchains can also be leveraged to layer additional functionality on top of the blockchain. For example, blockchain protocols may allow for the storage of additional user data in the output of a transaction. Modern blockchains increase the maximum amount of data that can be stored within a single transaction, allowing for the incorporation of more complex data. For example, this can be used to store electronic documents or even audio or video data on the blockchain. Summary of the Invention

[0008] It is recognized that in some situations it may be beneficial for a node of a layered network to intentionally drop a connection with another node of the network.

[0009] According to one aspect disclosed herein, a computer-implemented method for adapting connections between nodes of a layered network is provided. The layered network includes a plurality of nodes arranged in an ordered set of layers. The ordered set of layers, in order, includes a core layer including a set of core nodes, a second layer including a set of second nodes, and one or more outer layers, each including a respective set of outer nodes. Each core node is connected to at least one other core node. The method is performed by an adaptation node, the adaptation node being a node of the layered network connected to one or more second nodes and a plurality of core nodes. The method includes disabling each connection between the adaptation node and at least one, but not all, of the plurality of core nodes based on one or more network characteristics of the layered network.

[0010] In embodiments, the core nodes include nodes of a blockchain network, and in embodiments, each of the core nodes may be a mining node and / or a storage node (e.g., a full-copy node) of the blockchain network. [Brief explanation of the drawings]

[0011] To facilitate an understanding of embodiments of the present disclosure and to show how such embodiments may be carried into effect, reference will now be made, by way of example only, to the accompanying drawings, in which: [Figure 1] FIG. 1 is a schematic block diagram of a system for implementing a blockchain. [Figure 2] 1 illustrates schematically some examples of transactions that may be recorded on a blockchain. [Figure 3] FIG. 1 is a schematic diagram of an example of a hierarchical network. [Figure 4] FIG. 2 is another schematic diagram of an example of a hierarchical network. [Figure 5] FIG. 2 is another schematic diagram of an example of a hierarchical network. [Figure 6] FIG. 2 is another schematic diagram of an example of a hierarchical network. DETAILED DESCRIPTION OF THE INVENTION

[0012] Exemplary System Overview FIG. 1 illustrates an exemplary system 100 for implementing a blockchain 150. The system 100 includes a packet-switched network 101, which is typically a wide-area internetwork such as the Internet. The packet-switched network 101 includes multiple nodes 104 configured to form a peer-to-peer (P2P) overlay network 106 within the packet-switched network 101. Each node 104 in the blockchain network 106 comprises a peer's computing equipment, with different ones of the nodes 104 belonging to different peers. Each node 104 includes one or more processors, e.g., processing units including one or more central processing units (CPUs), accelerator processors, application-specific processors, and / or field-programmable gate arrays (FPGAs). Each node also includes memory, i.e., computer-readable storage in the form of one or more non-transitory computer-readable media. The memory may include one or more memory units using one or more memory media, e.g., magnetic media such as hard disks, electronic media such as solid-state drives (SSDs), flash memory, or EEPROMs, and / or optical media such as optical disk drives.

[0013] The blockchain 150 includes a chain of data blocks 151, with a respective copy of the blockchain 150 maintained at each of multiple nodes in the P2P network 160. Each block 151 in the chain includes one or more transactions 152, where a transaction in this context refers to a type of data structure. The nature of the data structure depends on the type of transaction protocol used as part of the transaction model or scheme. A given blockchain typically uses one particular transaction protocol throughout. In one common type of transaction protocol, the data structure for each transaction 152 includes at least one input and at least one output. Each output specifies an amount representing the amount of digital assets belonging to a user 103 that the output is cryptographically locked (requiring that user's signature to be unlocked and thereby redeemed or spent). Each input points to the output of a previous transaction 152, thereby linking the transactions.

[0014] At least some of the nodes 104 assume the role of forwarding nodes 104F, which forward and thereby propagate transactions 152. At least some of the nodes 104 assume the role of miners 104M, which mine blocks 151. At least some of the nodes 104 assume the role of storage nodes 104S (sometimes called "full copy" nodes), each of which stores a respective copy of the same blockchain 150 in its respective memory. Each miner node 104M also maintains a pool 154 of transactions 152 waiting to be mined into blocks 151. A given node 104 may be a forwarding node 104, a miner 104M, a storage node 104S, or any combination of two or all of these.

[0015] For a given current transaction 152j, the input (or each input) contains a pointer referencing the output of a previous transaction 152i in the sequence of transactions, specifying that this output should be redeemed or "spent" in the current transaction 152j. In general, the previous transaction can be any transaction in the pool 154 or any block 151. While the previous transaction 152i must exist and be validated for the current transaction to be valid, the previous transaction 152i does not necessarily have to exist when the current transaction 152j is created or transmitted to the network 106. Thus, "preceding" herein refers to something that precedes it in the logical sequence linked by a pointer, not necessarily to the time of creation or transmission in the time sequence, and therefore does not necessarily exclude transactions 152i, 152j from being created or transmitted out of order (see the discussion below regarding orphan transactions). The previous transaction 152i is also referred to as the antecedent transaction or predecessor transaction.

[0016] The input of the current transaction 152j also includes the signature of user 103a to which the output of the previous transaction 152i is locked. The output of the current transaction 152j can then be cryptographically locked to new user 103b. Thus, the current transaction 152j can transfer the amount defined in the input of the previous transaction 152i to new user 103b, as defined in the output of the current transaction 152j. In some cases, a transaction 152j can have multiple outputs to divide the input amount among multiple users (one of which can be the original user 103a to provide the change). In some cases, a transaction can also have multiple inputs to combine amounts from multiple outputs of one or more previous transactions and redistribute them into one or more outputs of the current transaction.

[0017] The above may be called an "output-based" transaction protocol, and sometimes called an unspent transaction output (UTXO) type protocol (where outputs are called UTXOs). A user's total balance is not defined by any one number stored in the blockchain; instead, the user needs a special "wallet" application 105 to collate the values ​​of all of that user's UTXOs, which are scattered across many different transactions 152 in the blockchain 151.

[0018] Another type of transaction protocol may be called an "account-based" protocol, as part of an account-based transaction model. In the account-based case, each transaction defines the amount to be transferred by referencing the absolute account balance, rather than by referencing the UTXO of a previous transaction in the sequence of past transactions. The current state of every account is stored and constantly updated by miners separate from the blockchain. In such a system, transactions are ordered using the account's running transaction tally (also called "position"). This value is signed by the sender as part of its cryptographic signature and hashed as part of the transaction reference calculation. In addition, an optional data field may also be signed in the transaction. This data field may point to a previous transaction, for example, if a previous transaction ID is included in the data field.

[0019] In either type of model, when a user 103 wishes to complete a new transaction 152j, the user sends the new transaction from the user's computer terminal 102 to one of the nodes 104 of the P2P validation network 106 (which today is typically a server or data center, but could in principle be another user terminal). The nodes 104 check whether the transaction is valid according to a node protocol applied at each of the nodes 104. The details of the node protocol correspond to the type of transaction protocol used in the blockchain 150 and collectively form the transaction model. The node protocol typically requires the nodes 104 to check that the cryptographic signature in the new transaction 152j matches an expected signature that depends on the previous transaction 152i in the ordered sequence of transactions 152. In the output-based case, this may involve checking that the user's cryptographic signature included in the input of the new transaction 152j matches a condition defined in the output of the previous transaction 152i used by the new transaction. This condition typically includes at least checking that the cryptographic signature in the input of the new transaction 152j unlocks the output of the previous transaction 152i to which the new transaction's input points. In some transaction protocols, the condition may be defined at least in part by custom script included in the input and / or output. Alternatively, the condition may be fixed solely by the node protocol, or by a combination of these. In either case, if the new transaction 152j is valid, the current node forwards it to one or more other nodes 104 in the P2P network 106. At least some of these nodes 104 also function as forwarding nodes 104F, applying the same tests according to the same node protocol, and forwarding the new transaction 152j to one or more additional nodes 104, and so on.In this manner, the new transaction is propagated throughout the network of nodes 104.

[0020] In an output-based model, the definition of whether a given output (e.g., UTXO) is spent is whether it has been validly redeemed by the input of another prior transaction 152j according to the node protocol. Another condition for a transaction to be valid is that the output of the prior transaction 152i that it attempts to spend or redeem has not yet been spent / redeemable by another valid transaction. Again, if it is not valid, the transaction 152j is not propagated or recorded in the blockchain. This prevents double spending, where a user attempts to spend the same transaction output multiple times.

[0021] In addition to validation, at least some of the nodes 104M also compete to be the first to create a block of transactions in a process known as mining, which is supported by "proof of work." At the mining nodes 104M, new transactions are added to a pool of valid transactions that have not yet appeared in a block. Miners then compete to assemble a new valid block 151 of transactions 152 from the pool of transactions 154 by attempting to solve a cryptographic puzzle. Typically, this involves searching for a "nonce" value such that when the nonce is concatenated with the pool of transactions 154 and hashed, the hash output satisfies a predetermined condition. For example, the predetermined condition might be that the hash output has a certain, predetermined number of leading zeros. A property of a hash function is that it has an unpredictable output for its input. This search, therefore, can only be performed brute force, consuming a significant amount of processing resources at each node 104M attempting to solve the puzzle.

[0022] The first miner node 104M to solve the puzzle publishes it to the network 106, providing a proof of its solution that can later be easily checked by other nodes 104 in the network (given the solution to the hash, it is easy to check that the hash output satisfies the conditions). The pool 154 of transactions for which the winner solved the puzzle is then recorded as a new block 151 in the blockchain 150 by at least some of the nodes 104 acting as storage nodes 104S, based on checking the winner's published solution at each such node. A block pointer 155 is also assigned to the new block 151n that points to the previously created block 151n-1 in the chain. Proof of work helps reduce the risk of double spends because it takes a lot of effort to create a new block 151, and mining nodes 104M are incentivized to avoid including double spends in their blocks because blocks containing double spends are likely to be rejected by other nodes 104. Once created, blocks 151 cannot be modified because they are recognized and maintained at each of the storage nodes 104S in the P2P network 106 according to the same protocol. Block pointers 155 also impose a sequential order on the blocks 151. Because transactions 152 are recorded in ordered blocks at each storage node 104S in the P2P network 106, this provides an immutable public ledger of transactions.

[0023] Pool 154 may be referred to as a "mempool." As used herein, this term is not intended to be limited to any particular blockchain, protocol, or model. It refers to a pool of transactions that a miner accepts for mining and that the miner has committed to not accepting other transactions that attempt to use the same output.

[0024] Note that different miners 104M competing to solve the puzzle at any given time may be doing so based on different snapshots of the unmined transaction pool 154 at any given time, depending on when they began searching for a solution. Whoever solves their respective puzzle first defines which transactions 152 will be included in the next new block 151n, and the current pool 154 of unmined transactions is updated. Miners 104M then continue competing to create blocks from the newly defined unmined pool 154, and so on. Protocols also exist for resolving any "forks" that may occur if two miners 104M solve the puzzle within a very short time of each other, propagating conflicting views of the blockchain. In essence, whichever prong of the fork grows the longest results in a deterministic blockchain 150.

[0025] In most blockchains, the winning miner 104M is automatically rewarded with a special type of new transaction that suddenly creates a new amount of digital assets (as opposed to a regular transaction that transfers an amount of digital assets from one user to another). The winning node is therefore said to have "mined" a certain amount of digital assets. This special type of transaction is sometimes called a "producing" transaction; it automatically forms part of the new block 151n. This reward incentivizes miners 104M to participate in the proof-of-work competition. Often, a regular (non-producing) transaction 152 also specifies an additional transaction fee in one of its outputs to further reward the winning miner 104M who created the block 151n containing that transaction.

[0026] Due to the computational resources involved in mining, typically at least each of the miner nodes 104M takes the form of a server including one or more physical server units, or an entire data center. Each forwarding node 104M and / or storage node 104S may also take the form of a server or a data center. However, in principle, any given node 104 can take the form of a user terminal or a group of user terminals networked together.

[0027] The memory of each node 104 stores software configured to execute on the node's 104 processing unit to perform its respective one or more roles and process transactions 152 in accordance with the node protocol. It will be understood that any action attributed to a node 104 herein may be performed by software executing on the respective computing device's processing unit. The node software may be implemented in one or more applications at the application layer, or at a lower layer, such as the operating system layer or protocol layer, or any combination thereof. Additionally, the term "blockchain," as used herein, is a generic term generally referring to this type of technology and is not limited to any particular proprietary blockchain, protocol, or service.

[0028] Also connected to the network 101 are computer devices 102 for each of multiple parties 103 acting as consuming users. These act as payers and payees in transactions, but do not necessarily participate in mining or propagating transactions on behalf of other parties. They do not necessarily execute the mining protocol. Two parties 103 and their respective devices 102 are shown for illustrative purposes: a first party 103a and its respective computer device 102a, and a second party 103b and its respective computer device 102b. It will be understood that many more such parties 103 and their respective computer devices 102 may exist and participate in the system, but for convenience they are not shown. Each party 103 may be an individual or an organization. Purely by way of example, the first party 103a will be referred to herein as Alice, and the second party 103b will be referred to as Bob; however, this is not intended to be limiting, and it will be understood that any reference herein to Alice or Bob may be replaced with "first party" and "second party," respectively.

[0029] The computing equipment 102 of each party 103 includes a respective processing unit including one or more processors, e.g., one or more CPUs, GPUs, other accelerator processors, application-specific processors, and / or FPGAs. The computing equipment 102 of each party 103 includes memory, i.e., computer-readable storage in the form of one or more non-transitory computer-readable media. This memory may include one or more memory units using one or more memory media, e.g., magnetic media such as hard disks, electronic media such as SSDs, flash memory, or EEPROMs, and / or optical media such as optical disk drives. The memory on the computing equipment 102 of each party 103 stores software including a respective instance of at least one client application 105 configured to execute on the processing unit. It will be understood that any action attributed to a given party 103 herein may be performed using software executing on the processing unit of the respective computing equipment 102. The computing equipment 102 of each party 103 includes at least one user terminal, e.g., a desktop or laptop computer, a tablet, a smartphone, or a wearable device such as a smartwatch. The computing equipment 102 of a given party 103 may also include one or more other networked resources, such as cloud computing resources accessed via a user terminal.

[0030] The client application 105 may initially be provided to the computer equipment 102 of any given party 103 on one or more suitable computer-readable storage media, for example, downloaded from a server, or provided on a removable storage device such as a removable SSD, a flash memory key, a removable EEPROM, a removable magnetic disk drive, a magnetic floppy disk or tape, an optical disk such as a CD or DVD ROM, or a removable optical drive.

[0031] The client application 105 includes at least a "wallet" functionality, which has two primary functions. One of these is to allow each user party 103 to create, sign, and send transactions 152 that are propagated throughout the network of nodes 104 and thereby included in the blockchain 150. The other is to report to each party the amount of digital assets that they currently own. In an output-based system, this second function involves reconciling the amounts defined in the outputs of the various transactions 152 scattered throughout the blockchain 150 that belong to that party.

[0032] It should be noted that while various client functions may be described as being integrated into a given client application 105, this is not necessarily so; instead, any client function described herein may instead be implemented in a suite of two or more separate applications that interface via an API, or one that plugs into the other, for example. More generally, client functions may be implemented at the application layer or a lower layer, such as an operating system, or any combination thereof. The following description will be made with reference to client application 105, but will be understood to be non-limiting.

[0033] An instance of a client application or software 105 on each computing device 102 is operatively coupled to at least one of the forwarding nodes 104F of the P2P network 106. This enables the wallet functionality of the client 105 to send transactions 152 to the network 106. The client 105 can also contact one, some, or all of the storage nodes 104 to query the blockchain 150 for any transactions to which the respective party 103 is a recipient (or, in embodiments, actually inspect other parties' transactions in the blockchain 150, since the blockchain 150 is a public facility that provides trust in transactions, in part, through its public visibility). The wallet functionality on each computing device 102 is configured to formulate and send transactions 152 according to a transaction protocol. Each node 104 runs software configured to validate transactions 152 according to the node protocol and, in the case of a forwarding node 104F, to forward the transactions 152 for propagation throughout the network 106. Transaction protocols and node protocols correspond to each other; a given transaction protocol works in conjunction with a given node protocol, and together they implement a given transaction model. The same transaction protocol is used for all transactions 152 in the blockchain 150 (although the transaction protocol may allow for different subtypes of transactions within it). The same node protocol is used by all nodes 104 in the network 106 (although it may process different subtypes of transactions differently according to rules defined for that subtype, and different nodes may take on different roles and therefore implement different corresponding aspects of the protocol).

[0034] As noted, the blockchain 150 includes a chain of blocks 151, each of which includes a set of one or more transactions 152 created by the proof-of-work process described above. Each block 151 also includes a block pointer 155 that points to a previously created block 151 in the chain to define a sequential order for the blocks 151. The blockchain 150 also includes a pool 154 of valid transactions waiting to be included in a new block by the proof-of-work process. Each transaction 152 (other than the originating transaction) includes a pointer back to a previous transaction to define an order for the sequence of transactions (note: the sequence of transactions 152 can diverge). The chain of blocks 151 stretches all the way back to the originating block (Gb) 153, which was the first block in the chain. One or more original transactions 152 earlier in the chain 150 pointed to the originating block 153, not to a preceding transaction.

[0035] When a given party 103, such as Alice, wishes to submit a new transaction 152j to be included in the blockchain 150, Alice formulates the new transaction (using a wallet function in Alice's client application 105) according to the relevant transaction protocol. From her client application 105, Alice then sends the transaction 152 to one of one or more forwarding nodes 104F to which Alice is connected. For example, this may be the forwarding node 104F closest or best connected to Alice's computer 102. When any given node 104 receives the new transaction 152j, it processes it according to the node protocol and its respective role. This includes first checking whether the newly received transaction 152j meets certain conditions for being "valid," examples of which are described in more detail below. In some transaction protocols, the conditions for validation may be configurable on a per-transaction basis via a script included in the transaction 152. Alternatively, the conditions may simply be a built-in feature of the node protocol or may be defined by a combination of the script and the node protocol.

[0036] Provided that the newly received transaction 152j passes the tests to be considered valid (i.e., it is "validated"), any storage node 104S that receives the transaction 152j adds the new validated transaction 152 to a pool 154 in the copy of the blockchain 150 maintained at that node 104S. Additionally, any forwarding node 104F that receives the transaction 152j propagates the validated transaction 152 onward to one or more other nodes 104 in the P2P network 106. Because each forwarding node 104F applies the same protocol, assuming the transaction 152j is valid, this means that it will immediately propagate throughout the P2P network 106.

[0037] Once admitted to pool 154 in the copy of blockchain 150 maintained on one or more storage nodes 104, miner nodes 104M begin competing to solve the proof-of-work puzzle for the latest version of pool 154 that contains new transaction 152j. (Other miners 104M may be trying to solve the puzzle based on older views of pool 154, but whoever gets there first will define where the next new block 151 ends and the new pool 154 begins, and eventually someone will solve the puzzle for the part of pool 154 that contains Alice's transaction 152j.) Once proof-of-work is done for pool 154 that contains new transaction 152j, it immutably becomes part of one of the blocks 151 in blockchain 150. Because each transaction 152 contains a pointer back to the previous transaction, the order of transactions is also immutably recorded.

[0038] Both mining nodes and storage nodes may perform validation as a function. For mining nodes, that function may be to assist in hashing, and for storage nodes, that function may be to assist in memorization.

[0039] Because different nodes 104 may initially receive different instances of a given transaction, they may have conflicting views of which instances are "valid" before one instance is mined into block 151, at which point all nodes 104 agree that the mined instance is the only valid instance. If a node 104 accepts one instance as valid and then discovers that a second instance has been recorded in the blockchain 150, it must accept it and discard (i.e., treat as invalid) the unmined instance that it originally accepted.

[0040] UTXO-based model Figure 2 illustrates an exemplary transaction protocol. This is an example of a UTXO-based protocol. Transactions 152 (abbreviated as "Tx") are the fundamental data structure of a blockchain 150 (each block 151 contains one or more transactions 152). The following description will be given with reference to an output-based or "UTXO"-based protocol. However, this is not intended to limit all possible implementations.

[0041] In a UTXO-based model, each transaction (“Tx”) 152 includes a data structure that includes one or more inputs 202 and one or more outputs 203. Each output 203 may include an unspent transaction output (UTXO), which may be used as a source of input 202 for another new transaction (if the UTXO has not yet been redeemed). A UTXO includes a value that specifies an amount of a digital asset, which represents a set number of tokens on the (distributed) ledger. A UTXO may also include, among other information, the transaction ID of the underlying transaction. The transaction data structure may also include a header 201 that may include indicators indicating the size of the input field(s) 202 and output field(s) 203. The header 201 may also include the transaction's ID. In embodiments, the transaction ID is a hash of the transaction data (excluding the transaction ID itself) and is stored in the header 201 of the raw transaction 152 submitted to the miner 104M.

[0042] Suppose Alice 103a wishes to create transaction 152j to transfer an amount of the digital asset to Bob 103b. In FIG. 2, Alice's new transaction 152j is labeled "Tx1." It takes the amount of the digital asset locked for Alice in the output 203 of the previous transaction 152i in the sequence and transfers at least a portion of it to Bob. The previous transaction 152i is labeled "Tx0" in FIG. 2. Tx0 and Tx1 are merely arbitrary labels. They do not necessarily imply that Tx0 is the first transaction in the blockchain 151 or that Tx1 is the immediate next transaction in the pool 154. Tx1 can refer to any previous (i.e., earlier) transaction that still has unspent output 203 locked for Alice.

[0043] The preceding transaction Tx0 may already be validated and included in the blockchain 150 by the time Alice creates the new transaction Tx1, or at least by the time Alice submits it to the network 106. It may already be included in one of the blocks 151 at that time, or it may still be waiting in the pool 154, in which case it will be included in the new block 151 immediately. Alternatively, Tx0 and Tx1 can be created and submitted to the network 102 together, or Tx0 may even be submitted after Tx1 if the node protocol allows for buffering of “orphan” transactions. The terms “preceding” and “subsequent,” as used herein in the context of a sequence of transactions, refer to the order of transactions within a sequence defined by transaction pointers specified within the transaction (e.g., which transactions point to which other transactions). They may similarly be interchanged with “preceding” and “successor,” or “earlier” and “later,” “parent” and “child,” etc. This does not necessarily imply an order of their creation, transmission to the network 106, or arrival at any given node 104. Nevertheless, a later transaction (a later transaction or "child") that points to a predecessor transaction (an earlier transaction or "parent") is not validated until and unless the parent transaction is validated. A child that arrives at a node 104 before its parent is considered an orphan. It may be buffered for a certain amount of time to wait for its parent or discarded, depending on the node protocol and / or minor behavior.

[0044] One of the one or more outputs 203 of the prior transaction Tx0 includes a particular UTXO, labeled herein as UTXO0. Each UTXO includes a value specifying the amount of the digital asset represented by the UTXO and a locking script, which defines the conditions that the unlocking script in the input 202 of the later transaction must satisfy in order for the later transaction to be validated and therefore the UTXO to be successfully redeemed. Typically, the locking script locks the amount to a particular party (the beneficiary of the transaction in which it is included). That is, the locking script typically defines unlocking conditions, including the condition that the unlocking script in the input of the later transaction contains the cryptographic signature of the party to whom the prior transaction is locked.

[0045] A lock script (commonly called scriptPubKey) is a piece of code written in a domain-specific language recognized by the node protocol. A specific example of such a language is called "Script" (capital S). A lock script specifies what information is needed to use the transaction output 203, for example, the requirements of Alice's signature. An unlock script appears in the transaction's output. An unlock script (commonly called scriptSig) is a piece of code written in a domain-specific language that provides the information needed to satisfy the lock script criteria. For example, it may include Bob's signature. An unlock script appears in the transaction's input 202.

[0046] That is, in the illustrated example, UTXO0 in output 203 of Tx0 must have Alice's signature Sig P in order for UTXO0 to be redeemed (or, more precisely, for a later transaction attempting to redeem UTXO0 to be valid). A Requires a lock script [Checksig P A ]. [Checksig P A ] is Alice's public key P from her public-private key pair. ATx1's input 202 includes a pointer to Tx1 (e.g., by its transaction ID, TxID0, which in an embodiment is a hash of the entire transaction Tx0). Tx1's input 202 includes an index that identifies UTXO0 within Tx0 to identify it among any other possible outputs of Tx0. Tx1's input 202 includes an unlock script that includes Alice's cryptographic signature, created by Alice applying her private key from her key pair to a predetermined portion of data (sometimes called a "message" in cryptography). <Sig P A What data (or "message") needs to be signed by Alice to provide a valid signature may be defined by the lock script, or by the node protocol, or by a combination of these.

[0047] Depending on the implementation, the required signature may be, for example, a conventional Elliptic Curve Digital Signature Algorithm (ECDSA) signature, a Digital Signature Algorithm (DSA) signature, or a Rivest-Shamir-Adleman (RSA) signature, or any other suitable form of cryptographic signature. The challenge for the signature may be implemented, for example, as a standard pay-to-public key (P2PK) puzzle or a P2PK hash (P2PKH) puzzle, or alternative means such as an R-puzzle may instead be implemented as the means for the signature. This example uses P2PK as an illustration.

[0048] When a new transaction Tx1 arrives at node 104, the node applies the node protocol, which involves running the lock script and the unlock script together to check whether the unlock script satisfies the conditions defined in the lock script (which may include one or more criteria). In an embodiment, this involves concatenating the two scripts: <Sig P A > <P A > || [Checksig P A ] where '||' denotes concatenation, '<...>' means to put data on the stack, and '[...]' are functions that compose the unlock script (a stack-based language in this example). Equivalently, the scripts could be executed one after the other using a common stack rather than concatenating the scripts. In either case, when executed together, the scripts will create a new lock script containing Alice's public key P as contained in the lock script in the output of Tx0. A , to authenticate that the lock script in Tx1's input contains Alice's signature, who signed the expected portion of data. The expected portion of data itself (the "message") must also be included in the Tx0 instruction to perform this authentication. In an embodiment, the signed data includes the entirety of Tx0 (i.e., a separate element specifying the signed portion of the plaintext data need not be included, as it is already inherently present).

[0049] The details of authentication using public-private cryptography are well known to those skilled in the art. Essentially, if Alice signs a message by encrypting it with her private key, then, given Alice's public key and the plaintext message (the unencrypted message), another entity, such as node 104, can authenticate that the encrypted version of the message must have been signed by Alice. Signing typically involves hashing the message, signing the hash, and tagging this as the signature on the plaintext version of the message, allowing any holder of the public key to authenticate the signature. Thus, it should be noted that any reference herein to signing a particular portion of data, part of a transaction, etc., may, in embodiments, mean signing a hash of that portion of data or part of a transaction.

[0050] Hashes referenced anywhere in this specification may refer to being implemented by, for example, a Secure Hash Algorithm (SHA) hash function or a hash-based message authentication code (HMAC) hash function, or any other suitable form of cryptographic hash function known in the art.

[0051] If the unlock script in Tx1 satisfies one or more conditions specified in the lock script of Tx0 (i.e., in the illustrated example, Alice's signature is provided and authenticated in Tx1), the node 104 considers Tx1 valid. If it is a mining node 104M, this means adding it to the pool 154 of transactions awaiting work of proof. If it is a forwarding node 104F, it forwards transaction Tx1 to one or more other nodes 104 in the network 106 so that transaction Tx1 is propagated throughout the network. Once Tx1 is validated and included in the blockchain 150, this defines the UTXO from Tx0 as spent. Note that Tx1 can only be valid if it uses an unspent transaction output 203. If it attempts to use an output that has already been spent by another transaction 152, Tx1 becomes invalid even if all other conditions are met. Therefore, node 104 also needs to check whether the referenced UTXO in the prior transaction Tx0 has already been spent (already formed a valid input to another valid transaction). This is one reason why it is important for blockchain 150 to impose a defined order on transactions 152. In practice, a given node 104 may maintain a separate database marking which UTXOs 203 in which transactions 152 have been spent, but ultimately, what defines whether a UTXO is spent is whether it already forms a valid input to another valid transaction in blockchain 150.

[0052] If the total amount specified in all outputs 203 of a given transaction 152 is greater than the total amount indicated by all its inputs 202, this is another ground of invalidity in most transaction models, and therefore such a transaction will not be propagated to block 151 or mined.

[0053] Note that in the UTXO-based transaction model, a given UTXO must be spent in its entirety. It is not possible to "leave behind" a portion of the amount defined in the UTXO as spent; another portion is spent. However, it is possible to split an amount from a UTXO among multiple outputs of a subsequent transaction. For example, the amount defined in UTXO0 in Tx0 can be split among multiple UTXOs in Tx1. Thus, if Alice does not want to give Bob all of the amount defined in UTXO0, she can use a reminder to give the remainder to herself or to pay another party in the second output of Tx1.

[0054] In practice, because the reward for generating transactions alone is typically not enough to incentivize mining today, Alice also typically needs to include a fee for the winning miner. If Alice does not include a fee for the miner, Tx0 will likely be rejected by the miner nodes 104M, and therefore, even if technically valid, it will still not be propagated and included in the blockchain 150 (the miner protocol does not force miners 104M to accept transactions 152 if they do not want to). In some protocols, the mining fee does not require its own separate output 203 (i.e., it does not require a separate UTXO). Instead, the difference between the total amount pointed to by the input(s) 202 of a given transaction 152 and the total amount specified in the output(s) 203 is automatically awarded to the winning miner 104. For example, suppose a pointer to UTXO0 is the only input to Tx1, and Tx1 has only one output, UTXO1. If the amount of digital assets specified in UTXO0 is greater than the amount specified in UTXO1, the difference is automatically awarded to the winning miner 104M. However, it is not necessarily excluded that a miner's fee may alternatively or additionally be explicitly specified in one of the UTXOs 203 of transaction 152 itself.

[0055] Alice and Bob's digital assets consist of unspent UTXOs locked to them in any transaction 152 anywhere in the blockchain 150. Thus, typically, a given party 103's assets are scattered across the UTXOs of various transactions 152 throughout the blockchain 150. No number defining a given party's 103 total balance is stored anywhere in the blockchain 150. The role of the wallet function in the client application 105 is to collate together the values ​​of all the various UTXOs locked to each party that have not yet been spent in another forward transaction. This can be done by querying the copy of the blockchain 150 stored on one of the storage nodes 104S, e.g., the storage node 104S closest to or best connected to each party's computer device 102.

[0056] Note that script code is often expressed diagrammatically (i.e., not in a precise language). For example, [Checksig P A ] and write [Checksig P A ] = OP_DUP OP_HASH160 <H(P A) > OP_EQUALVERIFY may mean OP_CHECKSIG. "OP_..." refers to a specific opcode in a scripting language. OP_CHECKSIG (also called "Checksig") is a script opcode that takes two inputs (a signature and a public key) and verifies the validity of the signature using the Elliptic Curve Digital Signature Algorithm (ECDSA). At runtime, the occurrence of the signature ("sig") is removed from the script, but additional requirements, such as a hash puzzle, remain for transactions verified by the "sig" input. As another example, OP_RETURN is a scripting language opcode for creating an unusable output of a transaction that can store metadata within the transaction, thereby immutably recording the metadata on the blockchain 150. For example, the metadata may include a document desired to be stored on the blockchain.

[0057] signature P A is a digital signature. In an embodiment, it is based on ECDSA using the elliptic curve secp256k1. A digital signature signs a specific portion of data. In an embodiment, for a given transaction, the signature signs some of the transaction inputs and all or some of the transaction outputs. The specific portion of the outputs signed depends on the SIGHASH flag, which is a 4-byte code included at the end of the signature (and is therefore fixed at the time of signing) to select which outputs are signed.

[0058] A lock script is sometimes referred to as a "scriptPubKey," referring to the fact that each transaction contains the public key of the party being locked. An unlock script is sometimes referred to as a "scriptSig," referring to the fact that it provides the corresponding signature. However, more generally, it is not required in all applications of blockchain 150 that the condition for a UTXO to be redeemed include authenticating the signature. More generally, any condition or conditions can be defined using a scripting language. Therefore, the more general terms "lock script" and "unlock script" may be preferred.

[0059] Layered Network Mandala Network The concept of Mandala networks was introduced by C. Sampaio Filho, A. Moreira, R. Andrade et al., "Mandala Networks: ultra-small-world and highly sparse graphs." Sci Rep 5, 9082 (2015).

[0060] A Mandala network is a network constructed of layers (or shells or generations) where the first layer forms a complete graph and each node in the layer has the same degree. Here, the first layer forms a complete graph in that each node in the first layer is connected to every other node in the first layer. The "degree" of a layer is a term that refers to the number of nodes in the same layer to which a given node is connected. For example, if a layer has a degree of 2, then each node in that layer is connected to two other nodes in the same layer.

[0061] The selection of three parameters (n1, b, λ) specifies the type of Mandala network. Parameter n1 represents the number of nodes in the first layer, parameter b represents the number of nodes connected to each node in the ith layer to form the (i+1)th layer, and λ is a scale factor that determines the degree of the nodes in each shell. A node in the ith layer is called an "ancestor" of the node(s) in the (i+1)th layer that are connected to it. By construction, each node in each layer is directly connected to all of its ancestor nodes up to the first layer.

[0062] If g is the total number of layers in the Mandala network, then the degree of a node in layer i is k ig and is given by: k ig =bλ g-i +(i-1)

[0063] A Type A Mandala network has parameters (n1, b, λ) = (3, 2, 2), in which case the above equation becomes:

number

[0064] By definition, any type of Mandala network can be constructed with only three parameters (n1, b, λ). This allows us to describe only a very specific and restrictive set of networks. We recognize that it is desirable to establish a hierarchical network of nodes such that nodes connecting to the network do so according to a predetermined set of rules.

[0065] Hierarchical Network Structure A layered network is an overlay network layered on top of a communication channel. For example, the communication channel may be an underlying infrastructure network such as a personal area network, a local area network (e.g., an enterprise-to-enterprise P2P network), or a wide area network such as the Internet. In other examples, the layered network may be a network of nodes connected via wired connections. In yet other examples, the connections may be wireless connections, e.g., Bluetooth or Wi-Fi connections. In some examples, some or all of the above example connections may be used to form the layered network.

[0066] Some or all of the nodes are networks and are configured to connect (i.e., join or rejoin) the layered network according to a connection protocol. The connection protocol may vary depending on the particular layer of the network to which the connecting node is connecting (i.e., joining or rejoining). Before describing the connection protocol in detail, a set of exemplary layered networks that may be created, i.e., enforced, by the connection protocol will be described. However, it will be understood that these are merely illustrative examples and that in general, any layered network that follows the connection protocol may be created.

[0067] FIG. 3 shows a schematic diagram of an example layered network (LN) 300. Generally, an LN includes a core network (or core layer) composed of core nodes 301 and a series of layers (or shells). The core layer is also referred to as the first layer of the LN. The series of layers extend outward from the core layer, starting with a second layer composed of second nodes 302, to one or more outer layers. Each outer layer is composed of a set of external nodes 303. While only one outer layer is shown in FIG. 3, it will be understood that an LN may include any number of outer layers. As specific examples, an example LN 500 including five layers is shown in FIG. 5, and an example LN 600 including four layers is shown in FIG. 6.

[0068] The example LN 300 of Figure 3 includes five core nodes 301, six secondary nodes 302, and eight exterior nodes 303. In some LNs 300, the number of nodes may increase by layer, i.e., the core layer is composed of the fewest number of nodes and the outermost layer is composed of the greatest number of nodes. In other examples, one or more of the layers between the core layer and the outermost layer may be composed of the greatest number of nodes. In this example, the core layer is the innermost layer of the LN 300, the secondary layer is the middle layer, and the only outer layer is the outermost layer.

[0069] The core layer (the network within the LN) in this example forms a complete graph, i.e., each core node 301 is connected to every other core node 301. For a core layer of five core nodes 301, in the given example, the core layer would require 10 distinct core connections (i.e., one connection between two core nodes). In other examples (e.g., FIG. 4), the core layer would not be a complete graph. The core layer may form a "nearly complete graph." In a near-complete graph, at least one core node 301 is not connected to at least one other core node 301. Only one core connection may be missing. In a particular example of a near-complete graph, each core node 301 may be connected to one or more, but not all, of the other core nodes 301.

[0070] The second layer includes second nodes 302. Note that the term "second node" is used architecturally only as a label for nodes 302 located within the second layer of the LN 300. Each second node 302 is connected to at least one core node 301. In some examples, each second node 302 may be connected to only one core node 301. Alternatively, some or all of the second nodes 302 may be connected to two or more core nodes 301. For example, some or all of the second nodes 302 may connect to every single one of the core nodes 301. In the example LN 300 of FIG. 3, each core node 301 is connected to two second nodes 302. However, in this example, some second nodes 302 (indicated by striped circles) are connected to one core node 301, and some second nodes 302 (indicated by white circles and shaded circles) are connected to two core nodes 301. Secondary nodes 302 (and outer nodes 303 in the outer layer) connected to the same core node 301 are called "communities." For example, the white nodes together form one community, the striped nodes together form one community, and the shaded nodes together form yet another community. The connection between the secondary nodes 302 and the core node 301 is called the "ancestor connection" and is shown by a thick dashed line.

[0071] 3, each second node 302 is connected to two other second nodes 302. In some examples, some or all of the second nodes 302 may not form connections with other second nodes, e.g., some second nodes 302 may be connected to other second nodes 302, while some second nodes 302 may be connected to other second nodes 302. These "intra-layer" connections are shown in FIG. 3 as solid lines between nodes.

[0072] The outer layer of FIG. 3 includes external nodes 303. Note that the term "outer" in "outer layer" here does not necessarily limit it to the outermost layer of the entire LN network, but that is one possibility. Each external node 303 is connected to at least one second node 302. In some examples, each external node 303 may be connected to only one second node 302. Alternatively, some or all of the external nodes 303 may be connected to two or more second nodes 302. For example, some or all of the external nodes 303 may be connected to every single one of the second nodes 301. In the example LN 300 of FIG. 3, each external node 303 is connected to two second nodes 302. Some second nodes 302 (i.e., striped nodes) are connected to two external nodes 303, and some second nodes 302 (i.e., white nodes and shaded nodes) are connected to three external nodes 303.

[0073] 3, each external node 303 is connected to two other external nodes 303 in the same tier. In some examples, some or all of the external nodes 303 may not form connections with other external nodes 303 in the same tier. Some or all of the external nodes 303 may form at least one connection with another external node 303 in the same tier.

[0074] Along with being connected to at least one second node 302, each external node 303 is also connected to at least one core node 301. The connection between an external node 303 and a core node 301 is called a "core ancestor connection" and is shown by a thin dashed line. Each external node 303 may be connected to each of the core nodes 301 to which their ancestral second node(s) 302 are connected. As shown in FIG. 3, each external node 303 may be connected to each of the core nodes 301 to which their ancestral second node(s) 302 are connected, and will not be connected to any other core nodes 301. In this case, each external node 303 belongs to a single community.

[0075] FIG. 4 shows a schematic diagram of another example of an LN 400. Similar to the LN 300 of FIG. 3, the exemplary LN 400 includes a core layer, a second layer, and an outer layer. These exemplary LNs 300, 400 share the same number of nodes (i.e., five core nodes 301, six second nodes 302, and eight outer nodes 303) but include different numbers of connections. For example, in this example, the core layer is not a complete graph because some connections between the core nodes 301 are absent. Another difference is that two communities (white and shaded) include a single core node 301, while another community (shaded) includes three core nodes 301. Yet another difference is that, unlike the degree of the nodes in the outer shell of LN 300, which is two, the degree of the nodes in the outer shell of LN 400 is now one. That is, in this exemplary LN 400, each outer node 303 is connected to a single other outer node 303. Therefore, the nodes in different layers have different degrees.

[0076] Figure 5 shows a schematic diagram of another example of an LN 500. In this example, only some core nodes 301 are connected to secondary nodes and external nodes 303. That is, in this example, some core nodes 301 only form connections with other core nodes 301. Therefore, in this example, the LN 500 includes a single community (shaded node). The LN 500 in this example includes five layers: a core layer, a second layer, and three outer layers. The core layer is composed of five core nodes 301 that form a nearly complete graph. In this example of a nearly complete graph, only a single core connection is missing. The second layer is composed of a single secondary node 302 connected to two core nodes 301. The second layer is composed of a single secondary node 302 connected to two core nodes 301. The third layer is composed of a single external node 303 connected to the secondary node 302 via an ancestor connection. The third-layer external node 303 is also connected to two core nodes 301 to which the second node 302 is connected. The external node 303 is connected to the two core nodes 301 via respective core-ancestor connections. The fourth layer also consists of a single external node 304. The fourth-layer external node 304 is connected to the third-layer external node 303 via an ancestor connection and to the second node 302 via an ancestor connection. The fourth layer external node 304 is also connected to two core nodes 301 to which the second node 302 and the third-layer external node 303 are connected. The external node 304 is connected to the two core nodes 301 via respective core-ancestor connections. Finally, the fifth layer consists of two external nodes 305. The two external nodes 305 in the fifth layer are connected to the fourth-layer external node 304, to the third-layer external node 303, and to the second node 302, each of which is an ancestor connection. The two outer nodes 305 are also connected via core ancestor connections to the two core nodes 301. In this exemplary LN 500, the second tier nodes and outer tier nodes are not connected to any other nodes in the same tier.

[0077] FIG. 6 shows a schematic diagram of another example of an LN 600. This LN includes two communities of nodes, as indicated by the white and black nodes. In this example, the core layer forms a complete graph (i.e., a network of nodes). Each community includes a separate set of three core nodes 301. This example LN 600 includes four layers: a core layer, a second layer, and two outer layers. Each node in the outer layers is connected to one node in the preceding layer. As with the example LN 500 of FIG. 5, the nodes in the second layer and the outer layers are not connected to any other nodes in the same layer.

[0078] In some embodiments, LNs 300, 400, 500, 600 (hereinafter simply referred to as "300") may be "blockchain layered networks (BLNs)." The term BLN is defined herein as a blockchain network or a layered network that includes at least a portion of a blockchain network, such as blockchain network 106 described with reference to FIG. 1.

[0079] The BLN is inspired by the Mandala network and shares some similar characteristics, but is designed to enable a more flexible and desirable connectivity structure for services and user networks that utilize the blockchain network 106, for example.

[0080] The BLN 300 may include at least a portion of a blockchain network 106 at its core. Generally, the nodes of the layered network are overlaid on an underlying infrastructure network, such as the Internet 101. Some or all of the core nodes are nodes 104 of the blockchain network 106. They may include mining nodes 104M, storage nodes 104S, or a combination thereof. In an embodiment, each of the core nodes is a mining node 104M and / or a storage node 104S (e.g., a full-copy node).

[0081] Each of the external nodes 303 (or each of the outermost external nodes) may be an end-user node including a user's computing equipment. This may be an individual user or an organization such as a company, academic institution, or government agency. Accordingly, each external node 303 may include one or more user terminals and / or a server including one or more server units at one or more sites. Each external node 303 includes a memory including one or more memory units and a processing device including one or more processing units. These may take the form of, for example, a memory medium and / or a processor as described above in connection with other network elements or user equipment. The memory stores client software configured to run on the processing device, and the client software, when executed, is configured to cause the node to operate as a protocol client that conforms to a connection protocol according to any of the following embodiments or similar. Optionally, one or more of the end-user nodes may include user equipment 103 of users 102 of the blockchain network 106, and the client software may include a blockchain wallet application 105 or the like.

[0082] Each second node 302 may take the form of a server including one or more physical server units. Each such node comprises a memory including one or more memory units and a processing device including one or more processing units, which may take any of the forms of a memory medium and / or a processor, for example, as described above in connection with other network elements. The memory stores software configured to be run on the processing device of the second node 302. When executed, the software is configured to follow a connection protocol according to any of the following embodiments or similar. In some embodiments, when executed, the software is configured to provide a service operating according to any of the embodiments described below or similar.

[0083] In some examples, some or all of the second nodes 302 may operate a smart contract service that is configured to perform certain operations in response to and based on blockchain transactions sent to the smart contract service by one of the other nodes of the LN 300, e.g., by an external node 303. For example, the smart contract may send a blockchain transaction to the core node 301 in response to receiving a particular blockchain transaction from the external node 303.

[0084] In another example, some or all of the second nodes 302 may operate a distributed database between them. That is, each second node 302 operating a distributed database is configured to store data received from another node of the LN 300, such as an external node 303. A second node 302 that receives and stores data may be configured to propagate the data to other second nodes 302 that are also operating distributed databases.

[0085] The nodes 301, 302, and 303 are configured to form connections between one another at the overlay network level. That is, the nodes 301, 302, and 303 of the hierarchical network are configured to conform to an overlay network protocol that specifies what connections they can and cannot form with other nodes 301, 302, and 303 of the hierarchical network. Thus, while all nodes may (but need not) be physically connected to one another through the underlying infrastructure (e.g., the Internet), connections between such nodes 301, 302, and 303 may be more restricted when they participate as nodes 301, 302, and 303 of a hierarchical network operating in accordance with the hierarchical network's associated overlay network protocol. A connection between two nodes 301, 302, and 303 of the hierarchical network 300 means that these nodes can communicate directly, which in this context means that there is no need to perform a hop through another node 301, 302, and 303 of the hierarchical network 300. In the context of an overlay network, such as a layered network, a "connection" refers to a connection (ie, an edge) at the level of the layered network 300 (ie, at the level of the overlay network protocol of the layered network).

[0086] In embodiments where the LN 300 is a BLN, some or all of the second nodes 302 may be configured to transmit blockchain transactions to the core node(s) 301 to which those second nodes 302 are connected. In some examples, the second nodes 302 may generate blockchain transactions and then transmit the blockchain transactions to the core node(s) 301. In other examples, the second nodes 302 may forward the blockchain transactions to the core node(s) 301. For example, the second nodes 302 may receive blockchain transactions from the external node(s) 303 and then transmit the received blockchain transactions to the core node(s) 301. Similarly, a given second node 302 (i.e., some or all of the second nodes) may be configured to obtain blockchain transactions from the core node(s) 301 and / or the external node(s) 303 connected to the given second node 302.

[0087] Additionally or alternatively, some or all of the external nodes 303 may be configured to send blockchain transactions to the core node(s) 301 to which they are connected. The external nodes 303 may also be configured to send blockchain transactions to the second node(s) 302 to which they are connected. In some examples, the external nodes 303 may send blockchain transactions to the second node(s) 302 and then to the core node 301.

[0088] Some or all of the external nodes 303 may be configured to send blockchain transactions to other external nodes 303, for example, external nodes in the same tier or external nodes in a previous or next tier in an ordered set of tiers.

[0089] In embodiments in which the core nodes 301 of the BLN 300 each act as a blockchain node 104, some or all of the second nodes 302 and / or external nodes 303 may be configured to request confirmation that a given transaction has been accepted in the pool of transactions of the mining node 104M to which the given second node 302 or external node 303 is connected. The pool 154 (sometimes called a mempool) contains transactions that have been validated according to a set of consensus rules of the blockchain network 106. If a transaction (e.g., a "first transaction") is included in the pool 154, the mining node 104M will not accept another transaction (e.g., a "second transaction") that attempts to double-spend an output referenced by an input of the first transaction. Thus, the second node 302 and / or the external node 303 can query the core node 301 to check that a transaction (e.g., a transaction submitted to the blockchain network 106 by the node 302, 303) has been accepted, or to check whether a transaction (e.g., a transaction received from another node in the BLN 300) is a double-spend attempt. The core node 301 is configured to send a response to the request to the requesting node 302, 303.

[0090] Additionally or alternatively, the second node 302 and / or the third node 303 may be configured to send to the core node 301 a request for a Merkle proof of a transaction mined in block 151 of the blockchain 150. Merkle proofs are well known to those skilled in the art. A Merkle proof is a sequence of hashes tracing back to the Merkle root. To verify whether a transaction was mined in block 151, the nodes 302, 303 take the transaction's hash, concatenate it with the first hash in the Merkle proof's sequence of hashes (i.e., the hash partner in the Merkle tree at the same level as the transaction's hash), and hash the result. This concatenation and hashing process is repeated until all of the hashes in the Merkle proof have been utilized. If the resulting hash is identical to the Merkle root, the transaction must be included in the Merkle tree and therefore in block 151. The core node 301 is configured to send the Merkle proof to the requesting node 302, 303.

[0091] Additionally or alternatively, the second node 302 and / or the third node 303 may be configured to send a request to the core node 301 for the block header of a given block 151. Among other data, the block header contains the Merkle root of the transactions mined into that block 151. The core node 301 is configured to send a Merkle proof to the requesting nodes 302, 303.

[0092] In some embodiments, some or all of the core nodes 301 may be configured to send a set of transactions to some or all of the second node(s) 302 and / or some or all of the external node(s) connected to the core node 301. The transactions in the set may share a common attribute. For example, the core node 301 may send all transactions that include a particular protocol flag. The flag may be included in the transaction's output, e.g., an unspendable output. As another example, the transactions may include a particular (and the same) blockchain address; e.g., the transactions may be payable to the same blockchain address. The external node 303 will have agreed with the core node 301 that the core node 301 will send any transaction payable to an address associated with the external node 303. As yet another example, the transaction may include secondary consensus rule sets. That is, the transaction may include two or more control branches in the output, each specific to a respective consensus rule set. The output may include a first control branch specific to the first rule set and a second control branch specific to the second rule set (the two control branches may be included in an if-else condition). If nodes 302, 303 are configured to implement the second rule set, core node 301 may send the transaction to nodes 302, 303. If nodes 302, 303 are configured to implement neither the first rule set nor the second rule set, core node 301 does not send the transaction to nodes 302, 303.

[0093] A core node 301 that is a mining node 104M may include an identifier (e.g., a "Miner ID") unique to that mining node 104M in the originating transaction (also called a "coinbase" transaction) mined by that mining node 104M into block 151. Other nodes in the BLN 300 may use the identifier to identify the mining node 104M on the network.

[0094] Another way to identify the nodes 301, 302, and 303 of the LN 300 is through digital certificates. Some or all of the nodes 301, 302, and 303 may be associated with digital certificates. The digital certificate includes and certifies the respective node's identifier, such as a public key associated with the node, the node's network address (e.g., IP address), etc. A node of the LN 300 may connect to a different node using the node's digital certificate. For example, an external node 303 may obtain a digital certificate from a second node 302 and connect to the second node 302 using the second node's identification information contained in the digital certificate.

[0095] A node at a given tier may issue a digital certificate to a node at the next tier in the ordered set of tiers, i.e., core node 301 may issue a digital certificate to second node 302, which may issue a digital certificate to external node 303 at the first outer tier, and so on. In some examples, a node at a given tier may issue digital certificates to nodes at the same tier, e.g., second node 302 may issue a respective digital certificate to one or more other second nodes 302.

[0096] Connection Protocol Nodes in a layered network (LN) may connect to the LN according to a connection protocol. The connection protocol allows layered networks to be formed that are less restrictive than Mandala networks while still retaining certain beneficial aspects of the Mandala network. As described above, each node connecting to the layered network 300 may connect according to the connection protocol. That is, the connecting node must follow the rules of the connection protocol. The connecting node may only form connections permitted by the connection protocol; other connections will not be formed. In examples, the connecting node may be a core node 301, a second node 302, or an external node 303. In some examples, each node in the LN 300 must follow the connection protocol. In other examples, only nodes connecting to the LN 300 for the first time or rejoining the LN 300 must follow the connection protocol. Figures 3-6 show exemplary LNs 300, 400, 500, and 600 established according to the connection protocol.

[0097] Physically speaking, it should be noted that each of the nodes of LN300 may be connected or capable of connecting to one another at some other level, e.g., via the Internet, in some examples. The connection protocol imposes restrictions on which connections can be formed at the overlay network level, i.e., at the layered network level, and some connections do not exist or are not permitted. Each connecting node of LN300 is configured to operate according to LN300's overlay level protocol (including the connection protocol), which determines which connections a node can and cannot form at the overlay level. In other words, a connection is a permitted communication channel that two nodes are configured to form according to those protocols. If a node has a connection with another node, that node can communicate with that node without hopping through another node in the layered network; otherwise, the node cannot communicate and can only communicate by hopping through one or more other nodes that have a connection between them.

[0098] The connection protocol requires that a connecting node connect to at least one node in a preceding (inner) tier and to at least one core node, except in some instances where the core node may be the innermost tier and therefore cannot connect to a preceding tier. In instances where the connecting node is a second node, these two requirements are equivalent. If the connecting node is an external node in the first outer tier, the connecting node connects to at least the second node 302 and the core node 301.

[0099] The connection protocol may require the connecting node to connect to two or more core nodes. The connection protocol may further require the connecting node to connect to two or more but not all of the core nodes, for example, all but one of the core nodes. The connecting node may be a second node that must connect to two or more core nodes. That is, some or all of the second nodes must connect to two or more core nodes (in some examples, but not all core nodes).

[0100] The connection protocol may require the connecting node to connect to one or more second nodes. If the connecting node is a second node, this means that the connecting (second) node must connect to one or more different second nodes. If the connecting node is an external node, the connecting (external) node must connect to one or more second nodes. The connecting external node may be an external node of the first outer layer, or an external node of the second layer, etc.

[0101] The connection protocol may require that an external node connected to a node in a preceding tier must connect to some or all of the core node(s) to which the node in the preceding tier is connected (referred to above as "core ancestors"). For example, an external node may be connected to a second node. In that case, the external node must also connect to the core node(s) to which the second node is connected. If an external node is connected to two or more second nodes, the connection protocol may require that the external node must connect to the core node(s) to which each of the second nodes is connected. As another example, an external node in a second outer tier may be connected to an external node in a first outer tier. In that example, the connection protocol requires that the external node in the second outer tier must connect to the core node(s) to which the external node in the first outer tier is connected.

[0102] The connection protocol may require that an external node connect to one or more (e.g., two) external nodes in the same outer tier. The connection protocol may require that each external node connect to one or more external nodes in the same tier. Alternatively, some external tiers may include external nodes that form one or more same-tier connections, and some external tiers may include external nodes that do not form one or more same-tier connections. The connection protocol may require that each external node in the same outer tier must connect to the same number of different external nodes in that tier. For example, each external node in a first outer tier may be required to connect to two external nodes. Each external node in a second outer tier may be required to connect to three external nodes. That is, the number of external nodes in the same tier to which an external node is connected may vary between outer tiers.

[0103] In some embodiments, an external node in the ith outer layer (e.g., the third outer layer) may be connected to an external node in the preceding (i-1)th layer (e.g., the second outer layer). The connection protocol may require that an external node in the subsequent (i+1)th outer layer (e.g., all external nodes) must connect to each node in the (i-1)th layer to which the external node in the ith outer layer is connected. For example, the fifth-layer external node 305 in LN 500 of FIG. 5 is connected to the fourth-layer external node 304 and to the third-layer external node 303. In some examples, the connection protocol may require that the (i+1)th outer node must connect to each external node in each preceding layer to which the external node in the ith outer layer is connected.

[0104] In embodiments in which some or all of the nodes of LN300 are associated with digital certificates, the connection protocol may require that connecting nodes must connect only to nodes associated with the nodes associated with the respective digital certificates. In some embodiments, the connection protocol may require that connecting nodes (e.g., external nodes) must connect to respective nodes (e.g., second nodes) only if the digital certificate associated with the respective node was issued by a node in a tier preceding the respective node (e.g., a core node) or, in some examples, by a node in the same tier as the respective node (e.g., a different second node).

[0105] In some embodiments, the connection protocol may require that a connecting node can only connect to nodes that have issued the connecting node a digital certificate, i.e., connecting to a node includes receiving a digital certificate from that node.

[0106] A connection protocol enables the construction of a BLN. Like a Mandala network, a BLN is constructed in layers. Unlike a Mandala network, the first layer may form an incomplete graph (e.g., a nearly complete graph). Other differences between a BLN and a Mandala network are that in a BLN, nodes in each subsequent layer may have different degrees, a node may be connected to two or more nodes in the middle layer, and / or the degrees of nodes may vary between layers.

[0107] Preferably, for all nodes outside the central core: (i) Each node is connected to m of the n1 nodes in the central core. (ii) Each node is connected to nodes in all layers, where g is the total number of layers. (iii) Each node is a member of exactly one community. There are at most n2 communities, where n2 is the number of nodes in the second tier. (iv) Each node is connected to every other node by at most three hops, which is called the diameter of the graph.

[0108] In a BLN, a "community" is defined as a set of nodes that share the exact same set of core ancestors. Figure 6 shows a BLN with network n1=6, m=3, and g=4, depicting two distinct communities: the black node community and the white node community. The white node community contains nodes that are connected to all three nodes on the LHS of the central core, and the black node community contains nodes that are connected to all three nodes on the RHS of the central core.

[0109] A characteristic of the Mandala network is that every node outside the core layer (i=1) is connected to exactly one core ancestor (i.e., everywhere c i = 1), which contributes significantly to the emergent properties of Mandala networks. Network size (N=Σ i n i ) has an average shortest path length that asymptotically approaches a constant as . Network size (N=Σ i n i ) becomes very sparse as it gets larger. · Robust against random node failures.

[0110] A characteristic of a BLN is that every non-core node connects to at least one ancestor. However, the definition of a BLN corresponds to a non-core node having at most m connections to a core ancestor (i.e., wherever 1 ≤ c i ≦m). c across the BLN i = 1 to 1 ≤ c iThe reason for the generalization to ≦m can be understood as an artifact of the blockchain protocol. The protocols that define a blockchain system rely on a probabilistic security model. Essentially, this means that any participant (node) in the BLN that has a vested interest in having events recorded on the blockchain 150 must take the probabilistic security model into account by connecting to a minimum percentage f of the network hash power, where 100% of the total hash power is distributed among the nodes in the core layer of the BLN.

[0111] Assuming that the core tier exhibits a uniform balanced distribution of hash power among its n1 core nodes, the minimum proportion of nodes is: f=m / n1

[0112] The blockchain protocol implies a lower bound on the minimum ratio, f = 0.51, although network participants in larger BLNs may require a higher ratio (e.g., f = 0.67) to provide increased resistance (e.g., against double-spending). A BLN may be characterized by the choice of parameter m, which defines the probabilistic security of operations for participants within the BLN and depends on the particular use case the BLN needs.

[0113] The nodes in the second layer, L2, closest to the core, rely most heavily on the probabilistic security model of the blockchain protocol, and this dependency is further enhanced when the layer is L g The connection protocol may require nodes in L2 to connect to exactly c2 = m core ancestors, while all subsequent nodes in layers i > 2 may connect to a range of core ancestors 1 < <c i ≤ m. In some instances, nodes in all subsequent layers must connect to m core ancestors.

[0114] Nodes outside the central core of the BLN may have an "SPV-like" (SPV stands for simplified payment verification) connection to the core, which means they can: a) Send the transaction to a core node. b) Ask the core nodes if the transaction was accepted in that mempool / candidate block. c) Obtain a Merkle proof of the transactions mined in the block. d) Find the latest list of block headers.

[0115] These simple, targeted requests are designed to place as little burden as possible on the core node 301 while allowing the widest possible range of scalable solutions to be built on top of it using the BLN. Many use cases require only the types of connectivity described above. In some instances, the second node 302 and / or external node 303 are configured to be able to perform only actions a) through d) above. However, other solutions, typically at the enterprise level, may require the core to proactively submit more data, such as transactions that meet certain criteria. Thus, actions a) through d) are minimum requirements for the BLN, although in some instances, additional data transfer between those nodes and the core is also possible.

[0116] For nodes running smart contracts, some only require actions a)-d) like SPV, while others require agreement to receive more data from core nodes.

[0117] In some BLNs, users can operate tier 3 or higher nodes, and smart contracts can be run by tier 2 or higher nodes. Users cannot realistically "listen" to the blockchain continuously for transactions with specific output addresses, since this would require constantly monitoring the blockchain 150 for transactions involving specific addresses. Given the ever-increasing number of transactions that can be sent to the blockchain per period, such constant monitoring is impractical for end users. While constantly monitoring the blockchain is common among some blockchain wallet architectures, it is not a scalable solution given that both the number of transactions submitted to the blockchain per period and the number of blockchain users are expected to increase dramatically in the future. Consider the following example: Alice wants to make a payment to Bob. She creates a transaction for the desired amount with an output address that she knows belongs to Bob. Alice then submits this transaction to the mining network rather than submitting it directly to Bob. In order for Bob to know that his transaction has been accepted, he must "listen" to the blockchain to see if and when a transaction with his output address has appeared on the network. Bob must ask a mining node to do this on his behalf. This means that the mining node must keep a record of Bob's address and check every transaction it receives to see if it matches this address. Note that there is no economic incentive for miners to do this. If we assume that miners have to process 1 million transactions per second and check if they match 1 million addresses, we can see that this quickly becomes impractical.

[0118] Instead, in a BLN, Alice can be directly connected to Bob and can send transactions directly to him. Bob can then send the transaction to miners in the core and ask them if they accept it as valid. Because the transaction includes a miner's fee, miners are incentivized to accept the transaction and to confirm whether they accept it, lowering the risk of building a block that will be abandoned. To further secure the system, Alice can send Bob Merkle proofs of Alice's inputs to her transactions. Since Bob has a copy of the block header, he can check these Merkle proofs. This assures Bob that Alice's inputs were part of the blockchain 150 at some point, and if Alice had already spent them, Bob will have proof of the double spend because he received a signature from Alice on the transaction that Alice gave to Bob. Note that Bob can be a smart contract (the second node) and Alice can be a user (the external node) who wants to interact with that smart contract. If the smart contract is "lite," in the sense that the smart contract operator has not made any specific agreements with mining nodes to facilitate the processing of the smart contract, it also cannot rely on listening to the blockchain 150 to receive transactions that trigger state changes: Alice must send such transactions directly to the smart contract.

[0119] Service providers may operate nodes at tier 2 or higher. The case of service providers is different from that of users or light smart contracts. Service providers may have commercial agreements with core mining nodes or a set of core nodes, which then propagate a specific subset of transactions to the service provider nodes. Such transactions should be easily identifiable and meet certain criteria, for example: OP_RETURN data with specific protocol flags, such as the Metanet protocol, the tokenization protocol, or the digital certificate protocol. Output addresses match a small, specific set, e.g., an enterprise-level smart contract or address whitelist / blacklist. A secondary consensus rule set indicated by the OP_VER control branch.

[0120] Additionally, transactions sent to the core that follow these rules or are otherwise identified as part of a community that participates in a service level agreement may have lower (or even zero) transaction fees. Any shortfall may be made up by higher transaction volume or by fiat revenue from the service level agreement.

[0121] All nodes in the BLN 300 may be associated with a semi-permanent public key associated with their identity that enables secure communication and can provide a link to the public keys used in blockchain transactions through the deterministic derivation of an identity key or by using the identity key to sign or encrypt transaction keys.

[0122] There are two ways to identify a mining core node: 1) Miner ID: A miner may choose to reveal itself by adding its identity key to the input of the coinbase transaction in each block that the miner mines. 2) Network analysis: Some miners choose to remain anonymous. However, it is still possible to identify which nodes compose blocks by analyzing the network, for example, by looking at where new blocks come from.

[0123] It is important that BLN nodes are able to distinguish between both types of miners and, as a result, be able to poll as many miners as possible regarding whether their transactions have been accepted.

[0124] Core nodes with Miner IDs can issue digital certificates to Tier 2 nodes. This may be because they have a service level agreement with these nodes, or because these nodes have requested the certificates for a fee. In this sense, core nodes can act as Certificate Authorities (CAs).

[0125] With or without a certificate from a core node, a tier 2 node may ask an external CA to issue it a digital certificate. Thus, each tier 2 node may have at least one digital certificate proving their identity. They may issue certificates to other nodes in tier 2, thereby creating a web of trust between them. Nodes in tier 2 may issue certificates to nodes in tier 3, which may issue certificates to nodes in tier 4, and so on, creating a hierarchy of certificates called a public key infrastructure (PKI).

[0126] Indeed, such a PKI may be used not only for the identification of nodes within the BLN, but also to ensure that the correct BLN structure is adhered to. For example, a tier 3 node's certificate may be revoked if it issues certificates to too many tier 4 nodes or if it does not ensure that it has proper connections to other nodes in the system.

[0127] These certificates themselves can be stored on the blockchain 150, making the PKI transparent and easily auditable.

[0128] Adaptive Connection Embodiments of the present invention provide a way to intentionally drop (or disable) connections in a hierarchical network based on characteristics (conditions) of the hierarchical network. That is, in these embodiments, a node of LN 300 may be configured to adapt its connections to other nodes in response to certain unfavorable or undesirable network conditions.

[0129] The adaptation node (i.e., the node that adapts the connection(s)) may be a core node 301, a second node 302, or an external node 303. In some examples, each node of the LN 300 may be configured to adapt its connections with other nodes based on network characteristics. The adaptation node may be a node such as an SPV, as described above.

[0130] It should be noted that although it is not excluded that the adaptation nodes are coupled by some or all of the connectivity protocols, the adaptation nodes are not necessarily coupled by the connectivity protocols defined above, or at least by all of the connectivity protocols.

[0131] In the context of the LN 300, disabling a connection with a node means preventing any data from being transmitted over the connection to that node, and does not necessarily mean physically terminating the connection. In other words, as described above, a connection between two nodes 301, 302, and 303 in the layered network 300 means that these nodes can communicate directly, which in this context means that there is no need to perform a hop through another node 301, 302, or 303 in the layered network 300. In the context of an overlay network, such as a layered network, a "connection" refers to a connection (i.e., an edge) at the level of the layered network 300 (i.e., at the level of the overlay network protocol of the layered network). Thus, disabling a connection between two nodes 301, 302, and 303 in the layered network 300 means that the nodes can no longer communicate directly.

[0132] An adaptation node may be connected to one or more core nodes 301. For example, an adaptation node may be a core node 301 connected to other core nodes 301. In other examples, an adaptation node may be a second node 302 or an external node 303 connected to one or more of the core nodes 301. In these examples, the adaptation node may disable one or more, but not all, of the connections between the adaptation node and the core node(s) 301 connected to the adaptation node in response to network characteristics.

[0133] An adaptation node may be connected to one or more second nodes 302. For example, the adaptation node may be a core node 301 connected to the second node(s) 302. In other examples, the adaptation node may be a second node 302 connected to other second nodes, or the adaptation node may be an external node 303 (e.g., either in the first outer tier or the second outer tier) connected to one or more second nodes 302. In these examples, the adaptation node may disable one, some, or all of the connections between the adaptation node and the second node(s) 302 connected to the adaptation node in response to network characteristics.

[0134] An adaptation node may be connected to one or more external nodes 303, for example, in the same outer tier or different outer tiers. For example, an adaptation node may be a core node 301 connected to external node(s) 303 via a core ancestor connection. In other examples, an adaptation node may be a second node 302 connected to external node(s), or an adaptation node may be an external node 303 connected to one or more external nodes 303 in the same outer tier and / or across different outer tiers. In these examples, the adaptation node may disable one, some, or all of the connections between the adaptation node and the external node(s) 303 connected to it in response to network characteristics.

[0135] In some embodiments, the one or more network characteristics based on which adaptation is performed may include the load of the layered network. The adaptation node may disable one or more connections in response to detecting a load balancing problem (e.g., too much traffic across one or more connections of the layered network 300). The load balancing problem may be a network-wide problem, i.e., the load across the network as a whole exceeds a threshold amount. In that situation, the adaptation node may select which connections to disable to bring the load below an acceptable threshold. In another example, the adaptation node may receive an instruction from one of the nodes connected to the adaptation node, the instruction instructing the adaptation node to drop a particular connection. For example, the core node 301 may instruct the adaptation node (e.g., an external node) to drop a connection between the core node 301 and the adaptation node.

[0136] The load balancing issue may be the load between an adaptation node and a particular node connected to the adaptation node. For example, the adaptation node may be a core node 301 experiencing increased load between a second node 302 or an external node 303. The adaptation node may disable connections with increased load, for example, to bring the load within an acceptable threshold amount. Alternatively, the adaptation node may be a node connected to the core node 301, and the adaptation node may disable that connection, for example, in response to an instruction from the core node 301 to drop the connection.

[0137] A load balancing problem may be that the load across a core node 301 in the core layer exceeds an acceptable threshold. If the adaptation node is a core node 301, the core node 301 may drop one or more of its connections, for example, to other core nodes 301, and / or to one or more second nodes 302, and / or to one or more external nodes 303. If the adaptation node is a second node 302 or an external node 303, the second node 302 or external node 303 may drop one or more of its core connections.

[0138] Detecting a load balancing problem may include detecting that the load on a connection(s) between the adaptation node and one or more other nodes in the layered network exceeds a threshold. Such load may be measured, for example, in terms of bandwidth, error rate, packet loss rate, delay, jitter, or a composite metric combining one or more such measures. Alternatively or additionally, detecting a load balancing problem may include detecting that the processing load on the adaptation node exceeds a threshold. This may be measured, for example, in terms of consumed processing resources of the adaptation node, available processing resources of the adaptation node.

[0139] In embodiments, detecting a load balancing problem may include detecting that the number of connections between the adaptation node and one or more other nodes of the network (e.g., core node 301) exceeds a threshold number of connections, e.g., a maximum number of total connections to the adaptation node (e.g., core node). For example, the adaptation node may adapt within a minimum or maximum number of connections allowed by the connection protocol defined above.

[0140] For example, the adaptation node may be a core node 301 that is connected to too many nodes. The threshold may be a threshold for connections between the adaptation node and nodes of a particular tier. For example, the adaptation node may only be allowed to form (and maintain) a certain amount of core connections, or connections to second nodes 302, or connections to external nodes 303 (e.g., in a particular tier or across outer tiers altogether). The adaptation node may drop one or more of its connections to other nodes and / or instruct one or more of its connected nodes to drop their connections to the adaptation node. The number of connections dropped may be equal to or greater than the number of connections that exceed the threshold number of allowable connections.

[0141] In some embodiments, the network characteristics may include privacy issues. That is, the adaptation node may receive an indication of (or otherwise obtain information regarding) a breach of privacy in the network. The privacy issue may be a hack or malfunction of a node in the network. Alternatively, the privacy issue may be that identity information (e.g., of the adaptation node or another node in LN 300) has been compromised (e.g., stolen or leaked). The adaptation node may drop connections with nodes whose identity information has been compromised. The identity information may include private and / or public keys associated with a given node in LN 300.

[0142] An adaptation node may receive indications of network characteristics from one or more nodes of the LN 300 to which the adaptation node is connected. The indications may also include, for example, instructions to drop connections with nodes that send the indications to the adaptation node. In some examples, only the core node 301 is configured to issue indications and / or instructions. In other examples, the second node 302 and / or the external node 303 may additionally or alternatively be configured to issue indications and / or instructions. An adaptation node may drop connections with nodes that send indications to the adaptation node.

[0143] In some embodiments, disabling the connection with the respective node may include revoking the respective digital certificate issued to the respective node by the adaptation node. In these examples, a node must have a valid digital certificate to connect with another node. The adaptation node may be the core node 301 responsible for issuing digital certificates to the second node 302 and / or the external node 303. The adaptation node may, for example, revoke the digital certificate of the external node 303 to disable the connection to that node. As another example, the second node 302 may be responsible for issuing a digital certificate to the external node 303. The adaptation node, again the core node 301, may instruct the second node 302 to revoke the digital certificate of the external node 303 to disable the connection between the adaptation node and the external node 303.

[0144] An adaptation node may be a second node 302 or an external node 303 that requires knowledge of the state of the blockchain 150, such as whether a transaction was accepted in the pool 154 of mining nodes 104M, whether the transaction was recorded in a block 151 of the blockchain 150, etc. The adaptation node may send requests for information to one or more core nodes 104 (e.g., a single core node connected to the adaptation node) that are blockchain nodes 301, and one or more second nodes 302 (e.g., a single second node connected to the adaptation node). After receiving information from one or more core nodes 301, the adaptation node may check for consistency between the different sets of received information. If the received information matches, the adaptation node can be confident that the core node(s) and second node(s) returned the correct information. This is particularly beneficial when the adaptation node is connected to mining nodes that represent less than 51% of the hash power of the blockchain network 106, such as only a single mining node 104M.

[0145] An adaptation node may request the same information from the core node(s) 301 and the second node(s) 302. Alternatively, an adaptation node may request different but related information from different nodes 301, 302. For example, an adaptation node may request a block header or Merkle root from the core node(s) and a transaction or Merkle proof from the second node(s).

[0146] In some embodiments, the adaptation node may be configured to reconnect (i.e., re-enable) one or more of the disabled connections. For example, the adaptation node may determine (e.g., receive information from a node of the LN 300) that network characteristics have returned to normal, e.g., that there are no longer any load balancing issues.

[0147] conclusion It will be understood that the above embodiments have been described by way of example only. More generally, there may be provided a method, apparatus or program according to any one or more of the following statements:

[0148] Statement 1. A computer-implemented method for adapting connections between nodes of a layered network, the layered network including a plurality of nodes arranged in an ordered set of layers, the set of ordered layers including, in order, a core layer including a set of core nodes, a second layer including a set of second nodes, and one or more outer layers each including a respective set of outer nodes, each core node being connected to at least one other core node, the method being performed by an adaptation node, the adaptation node being a node of the layered network connected to one or more second nodes and the plurality of core nodes, the method including disabling each connection between the adaptation node and at least one, but not all, of the plurality of core nodes based on one or more network characteristics of the layered network.

[0149] Statement 2. The method according to statement 1, wherein the network characteristics include a load on the hierarchical network, and the disabling is performed in response to detecting a load balancing problem on the hierarchical network.

[0150] Statement 3. The method of statement 2, wherein the load balancing problem includes a load across a connection between one of a plurality of core nodes and the adaptation node being above a predetermined threshold.

[0151] Statement 4. The method of statement 2 or statement 3, wherein the load balancing problem includes the load across connections between multiple core nodes and adaptation nodes being overall above a predetermined threshold.

[0152] Statement 5. The method of any of statements 2 to 4, wherein the load balancing problem involves the load across the connections between the set of core nodes and the adaptation node being overall above a predetermined threshold.

[0153] Statement 6. The method of any of statements 2 to 5, wherein the load balancing problem includes the number of connections between the adaptation node and the set of core nodes being above a predetermined threshold.

[0154] The network characteristics may include a privacy concern, and the disabling is performed in response to detecting a privacy concern.

[0155] Statement 7. The method of any of the preceding statements, wherein the network characteristics include a number of connections between a given core node and other nodes in the hierarchical network being above a predetermined threshold.

[0156] Statement 8. The method of any of the preceding statements, wherein said disabling includes disabling each connection between the adaptation node and two or more, but not all, of the plurality of core nodes.

[0157] Statement 9. The method of any of the preceding statements, wherein the adaptation node is connected to a plurality of second nodes, and wherein said disabling includes disabling each connection between the adaptation node and at least one, but not all, of the second core nodes.

[0158] Statement 10. The method of statement 9, wherein the disabling includes disabling each connection between the adaptation node and two or more, but not all, of the second core nodes.

[0159] Statement 11. The method of any of the preceding statements, wherein the adaptation node is connected to one or more external nodes, and wherein said disabling includes disabling each connection between the adaptation node and at least one of the one or more external nodes.

[0160] Statement 12. The method of statement 11, wherein said disabling includes disabling each connection between the adaptation node and two or more, but not all, of the one or more external nodes.

[0161] Statement 13. The method of any of the preceding statements, wherein the adaptation node is in the outer layer immediately following the second layer.

[0162] Statement 14. The method of any of statements 1 to 12, wherein the adaptive node is in an outer layer separated from the second layer by one or more other outer layers.

[0163] Statement 15. The method of any of statements 1 to 12, wherein the adaptation node is the second node.

[0164] Statement 16. The method according to any of statements 1 to 12, wherein the adaptation node is a core node.

[0165] Statement 17. The method of any of the preceding statements, including receiving an indication of network characteristics from one of the nodes to which the adaptation node is connected.

[0166] Statement 18. The method of statement 17, wherein said receiving includes receiving an instruction from one of a plurality of core nodes.

[0167] Statement 19. The method of statement 17 or statement 18, wherein the disabling includes disabling the respective connection between the adaptation node and the node from which the indication is received.

[0168] Statement 20. The method of any preceding statement, wherein the core nodes include nodes of the blockchain network.

[0169] The layered network includes a blockchain network or at least a portion thereof at a core layer, and the second node and the external node each provide layered services around the blockchain network or at least a portion thereof.

[0170] Statement 21. The method of statement 20, wherein each of the core nodes is a respective node of the blockchain network.

[0171] Statement 22. The method of statement 20 or statement 21, comprising: after disabling the respective connections, sending requests to the first set of core nodes and the first set of second nodes to which the adaptation node is still connected, where the requests are for information about the blockchain; receiving respective responses from the first set of core nodes and the first set of second nodes; comparing the respective responses from the first set of core nodes and the first set of second nodes; and determining whether the respective responses from the first set of core nodes and the first set of second nodes are correct based on whether the respective responses from the first set of core nodes correspond to the respective responses from the first set of second nodes.

[0172] Statement 23. The method of statement 22, wherein the first set of core nodes consists of a single core node.

[0173] Statement 24. The method of statement 22 or statement 23, wherein the first set of core nodes consists of a single second node.

[0174] Statement 25. The method of any of Statements 22 to 24, wherein the request includes a request for confirmation that the blockchain transaction has been recorded in a block on the blockchain.

[0175] Statement 26. The method of any of statements 22 to 25, wherein the first set of core nodes includes a mining node, and the request includes a request for confirmation that the blockchain transaction was accepted in a pool of transactions validated according to a set of consensus rules of the blockchain network.

[0176] Statement 27. The method of any of the preceding statements, wherein the network characteristics include privacy concerns.

[0177] Statement 28. The method of statement 27, wherein the privacy issue includes leaking identifiers of one or more nodes of the hierarchical network.

[0178] Statement 29. A computing device comprising: a memory including one or more memory units; a processing device including one or more processing units; and a network interface including one or more network interface units, wherein the memory stores code configured to be executed on the processing device, and the code, when executed on the processing device, is configured to cause the computing device to operate by performing a method according to any of the preceding statements.

[0179] Statement 30. A computer program embodied on computer-readable storage and configured, when executed on one or more processors, to perform the method of any of statements 1 to 28.

[0180] Other variations or uses of the disclosed techniques may become apparent to those skilled in the art given the disclosure herein. The scope of the present disclosure is not limited by the described embodiments, but only by the appended claims.

Claims

1. 1. A computer-implemented method for adapting connections between nodes of a layered network, the layered network including a plurality of nodes arranged in an ordered set of layers, the set of ordered layers including, in order, a core layer including a set of core nodes, a second layer including a set of second nodes, and one or more outer layers each including a respective set of outer nodes, each core node being connected to at least one other core node, the method being performed by an adaptation node, the adaptation node being a node of the layered network connected to one or more second nodes and a plurality of core nodes, the method comprising: Disabling each connection between the adaptation node and at least one, but not all, of the plurality of core nodes based on one or more network characteristics of the layered network. A method comprising:

2. The method of claim 1 , wherein the network characteristics include a load on the hierarchical network, and the disabling is performed in response to detecting a load balancing problem on the hierarchical network.

3. The method of claim 2 , wherein the load balancing problem includes a load across the connection between one of the plurality of core nodes and the adaptation node exceeding a predetermined threshold.

4. The method of claim 2 or 3, wherein the load balancing problem comprises a load across the connections between the plurality of core nodes and the adaptation node collectively exceeding a predetermined threshold.

5. 5. The method of claim 2, wherein the load balancing problem comprises a load across the connections between the set of core nodes and the adaptation node collectively exceeding a predetermined threshold.

6. The method of claim 2 , wherein the load balancing problem comprises a number of connections between the adaptation node and the set of core nodes exceeding a predetermined threshold.

7. The method of claim 1 , wherein the network characteristics include a number of connections between a given core node and other nodes of the hierarchical network being above a predetermined threshold.

8. 8. The method of claim 1, wherein the disabling comprises disabling each connection between the adaptation node and two or more, but not all, of the plurality of core nodes.

9. 9. The method of claim 1, wherein the adaptation node is connected to a plurality of second nodes, and wherein the disabling comprises disabling each connection between the adaptation node and at least one but not all of the second nodes.

10. 10. The method of claim 9, wherein the disabling comprises disabling each connection between the adaptation node and two or more but not all of the second nodes.

11. 11. The method of claim 1, wherein the adaptation node is connected to one or more external nodes, and wherein the disabling comprises disabling each connection between the adaptation node and at least one of the one or more external nodes.

12. The method of claim 11 , wherein the disabling comprises disabling each connection between the adaptation node and two or more, but not all, of the one or more external nodes.

13. 13. The method of claim 1, wherein the adaptation node is in an outer layer immediately after the second layer.

14. 13. The method of claim 1, wherein the adaptation node is in an outer layer separated from the second layer by one or more other outer layers.

15. The method according to any one of claims 1 to 12, wherein the adaptation node is a second node.

16. The method of claim 1 , wherein the adaptation node is a core node.

17. 17. A method according to any preceding claim, comprising receiving an indication of the network characteristics from one of the nodes to which the adaptation node is connected.

18. The method of claim 17 , wherein the receiving comprises receiving the indication from one of the plurality of core nodes.

19. 19. The method of claim 17 or 18, wherein the disabling comprises disabling the respective connection between the adaptation node and the node from which the indication is received.

20. 20. The method of claim 1, wherein the core nodes comprise nodes of a blockchain network.

21. 21. The method of claim 20, wherein each of the core nodes is a respective node of the blockchain network.

22. After disabling each of the above connections, sending a request to a first set of core nodes and a first set of second nodes to which the adaptation node is still connected, wherein the request is for information about a blockchain; receiving respective responses from the first set of core nodes and the first set of second nodes; comparing the respective responses from the first set of core nodes and the first set of second nodes; determining whether the respective responses from the first set of core nodes and the first set of second nodes are correct based on whether the respective responses from the first set of core nodes correspond to the respective responses from the first set of second nodes; 22. The method of claim 20 or 21, comprising:

23. The method of claim 22 , wherein the first set of core nodes consists of a single core node.

24. 24. The method of claim 22 or 23, wherein the first set of second nodes consists of a single second node.

25. 25. The method of any one of claims 22 to 24, wherein the request comprises a request for confirmation that a blockchain transaction has been recorded in a block of the blockchain.

26. 26. The method of any one of claims 22 to 25, wherein the first set of core nodes includes a mining node, and the request includes a request for confirmation that the blockchain transaction was accepted in a pool of transactions validated according to a set of consensus rules of the blockchain network.

27. The method of claim 1 , wherein the network characteristics include privacy concerns.

28. 28. The method of claim 27, wherein the privacy issue includes leaking identifiers of one or more nodes of the hierarchical network.

29. A computer device comprising: a memory including one or more memory units; a processing device including one or more processing units; a network interface including one or more network interface units; Equipped with The memory stores code configured to be executed on the processing unit, the code being configured, when executed on the processing unit, to cause the computing device to operate by performing a method according to any one of claims 1 to 28. Computer equipment.

30. 29. A computer program embodied on a computer readable storage and configured to perform the method of any one of claims 1 to 28 when executed on one or more processors.

Citation Information

Patent Citations

  • Load distribution control device and method

    JP2008040718A

  • Load balancer with band control function, and method for setting the same device

    JP2009175889A

  • Video signal transmission system

    JP2017055305A

  • Distributed system of record transaction receipt handling in an overlay network

    US20190199787A1