Method for propagating data packets in a network of nodes - Patents.com

The diffusion mixing protocol (DMP) with RDR and standard diffusion stages addresses blockchain network vulnerabilities to anonymous cancellation attacks by obscuring transaction sources and ensuring reliable data propagation, enhancing network anonymity and security.

JP7627313B2Active Publication Date: 2025-02-05NCHAIN LICENSING AG
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023136871
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-05-15
Filing Date
2023-08-25
Publication Date
2025-02-05
Estimated Expiration
2039-05-09

AI Technical Summary

Technical Problem

Blockchain networks are vulnerable to anonymous cancellation attacks through traffic analysis, which can link user identities to their network activities by intercepting and analyzing data transactions.

Method used

A method and device for propagating data packets in a node network using a diffusion mixing protocol (DMP) that includes a random differential relay (RDR) stage to obscure transaction sources and a standard diffusion stage for reliable propagation, ensuring transactions are relayed to randomly selected subsets of nodes with varying timing and paths.

Benefits of technology

The DMP enhances network anonymity by making it difficult for attackers to reconstruct network topology and identify transaction sources, while maintaining timely and reliable data propagation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007627313000022
    Figure 0007627313000022
  • Figure 0007627313000023
    Figure 0007627313000023
  • Figure 0007627313000024
    Figure 0007627313000024
Patent Text Reader

Abstract

To provide a method of transmitting a data packet in a network of a node.SOLUTION: A method in a network associated to a block chain, contains: a step of collecting a set of a first data packet containing at least one data packet received from one or more first nodes in the network in a first period; a step of generating a first mapping for designating the first data packet of the set in order to relay to one or more adjacent nodes connected to the node; a step of calculating a non-correlation metric value to the first mapping; a step of determining whether or not the non-correlation metric to the first mapping satisfies a first condition; and a step of transmitting the first data packet to the adjacent node in response to a determination that the non-correlation metric value corresponding to the first mapping satisfies the first condition.SELECTED DRAWING: Figure 13
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to computer networks, and more particularly to methods and apparatus for propagating data in a network of nodes, electronic communications, and networking techniques. It is particularly suited for use in connection with blockchain technology, particularly in connection with the secure transmission of data and the mitigation of potentially malicious events, i.e. attacks, by third parties. [Background technology]

[0002] The term "blockchain" is used in this document to include all forms of electronic, computer-based, distributed ledgers. These include consensus-based blockchain and transaction chain technologies, permissioned and permissionless ledgers, shared ledgers, and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, but other blockchain implementations have been proposed and developed. For convenience and purposes of explanation, Bitcoin may be referenced in this application, but it should be noted that the invention is not limited to the use of the Bitcoin blockchain, and alternative blockchain implementations and protocols are also within the scope of this disclosure. The term "user" may refer to a human or processor-based resource in this application. The term "Bitcoin" is intended to include all versions and variations of protocols / implementations / platforms derived from the (original) Bitcoin protocol / implementation / platform.

[0003] A blockchain is a peer-to-peer electronic ledger implemented as a computer-based, decentralized system composed of blocks, which are made up of transactions. Each transaction is a data structure that encodes the transfer of control of digital assets between participants in the blockchain system and contains at least one input and at least one output. Each block contains a hash of the previous block, and the blocks are chained together to create a permanent, immutable record of all transactions that have been written to the blockchain since its inception. Transactions contain small programs, known as scripts, embedded in their inputs and outputs that specify how the transaction's outputs can be accessed and by whom. In the Bitcoin platform, these scripts are written using a stack-based scripting language.

[0004] In order for a transaction to be written to the blockchain, it must be "verified." Network nodes (miners) perform tasks to ensure that each transaction is valid; those that are not valid are rejected from the network. A software client installed on the node performs this validation task on unspent transactions (UTXOs) by executing locking and unlocking scripts. If the execution of the locking and unlocking scripts evaluates to TRUE, the transaction is valid and the transaction is written to the blockchain. Thus, for a transaction to be written to the blockchain, it must i) be verified by the first node that receives the transaction---once the transaction is verified, the node relays it to other nodes in the network; ii) be added to a new block that is constructed by miners; and iii) be mined, i.e., added to the public ledger of past transactions.

[0005] Although blockchain technology is most widely known for its use in implementing cryptocurrencies, digital entrepreneurs are beginning to explore the use of both the cryptographic security system on which Bitcoin is based, and the data that can be stored on the blockchain, to implement new systems. It would be highly advantageous if blockchain could be used for automated tasks and processes that are not limited to the cryptocurrency realm. Such solutions could leverage the advantages of blockchain (e.g. permanent immutable record of events, distributed processing, etc.) while being more versatile in its applications.

[0006] One of the recognized advantages of blockchain technologies such as Bitcoin is the anonymity of transactions. Bitcoin users' personal details are not formally and explicitly attached to their Bitcoin addresses, and the blockchain Bitcoin ledger only contains public address information. However, since the blockchain is structured as a decentralized peer-to-peer network that operates on the Internet, transaction anonymity can be compromised by attacks that leverage Internet Protocol (IP) address information to link users to network activity. As an example, a deanonymization attack such as IP traffic analysis performed on a blockchain-based network could allow an interested third party to monitor transactions submitted by users on the network and link transactions to their source using publicly available information (e.g., by linking users' public keys to their IP addresses).

[0007] Traffic analysis is a particular problem for blockchain-based networks, which rely on the propagation of transactions by and between network nodes. Each node in the network that receives a transaction validates the transaction and transmits it to its peer nodes. In the Bitcoin protocol, a node sends an “INV” message containing a list of transactions to a peer node and receives a “GETDATA” response message selecting some subset of the transactions announced in the “INV” message. The node then transmits the requested transactions to its peer node. This process is performed for each peer node to which the node is connected. An attacker could eavesdrop and analyze the data transmitted as the transaction propagates through the network, eventually obtaining information that could be used to link the source and destination of a transaction. Summary of the Invention

[0008] It is desirable to provide techniques for propagating transactions in a blockchain-based network that can reduce the likelihood that network anonymity can be compromised by traffic analysis or other types of deanonymization attacks, and more generally, to provide techniques for relaying data between nodes of a peer-to-peer network in order to reduce vulnerability to deanonymization attacks.

[0009] Such a measure is devised in the present case.

[0010] Thus, in accordance with the present invention there is provided a method and apparatus as defined in the appended claims.

[0011] The invention may provide a computer-implemented method for propagating data packets in a network of nodes, where each node in the network may have one or more connections to other nodes. The method may include collecting a set of first data packets during a first time period, the set including at least one data packet received from one or more first nodes in the network; generating a first mapping that designates first data packets of the set for relay to one or more neighboring nodes connected to the node; calculating a decorrelated metric value for the first mapping; and determining whether the decorrelated metric value for the first mapping satisfies a first condition. In response to determining that the uncorrelated metric value for the first mapping does not satisfy the first condition, the method further includes the steps of: generating a second mapping that specifies a first data packet of the set for relay to one or more adjacent nodes connected to the node, the second mapping defining a different specification than that of the first mapping; calculating a uncorrelated metric value for the second mapping; and, in response to determining that the uncorrelated metric value for the second mapping satisfies the first condition, transmitting the first data packet of the set to the adjacent node in accordance with the second mapping.

[0012] In some implementations, the first mapping indicates an expected time for relaying each first data packet of the set to an adjacent node, and generating the first mapping may include determining at least one of: a first sub-mapping that specifies any two data packets having the same source for relay to different subsets of one or more adjacent nodes; and a second sub-mapping that specifies different expected times of relaying for any two data packets received by or generated at the node from one or more first nodes within the same time interval.

[0013] In some implementations, generating the second mapping may include: for at least one of the set of first data packets: determining a first set of neighboring nodes to which at least one of the first data packets is designated for relaying by the first mapping; selecting a second set of neighboring nodes different from the first set, the second set having the same cardinality as the first set; and designating at least one of the first data packets for relaying to the second set of neighboring nodes.

[0014] In some implementations, the method may further include: for any two different first data packets of the set, obtaining a similarity measure between the neighbor sets for which each of the two first data packets is specified by the first mapping; and, in response to determining that the similarity measure satisfies the second condition, generating a third mapping of the first data packets of the set to one or more neighbor nodes.

[0015] In some implementations, the neighbor sets may be representable as vectors, and the similarity measure may include cosine similarity between the vector representations of the neighbor sets.

[0016] In some implementations, determining that the similarity measure satisfies the second condition may include determining that the cosine similarity falls outside a predetermined range of values.

[0017] In some implementations, a similarity measure between the neighbor sets may be obtained prior to calculating the decorrelation metric value of the first mapping.

[0018] In some implementations, the step of determining whether the first mapping satisfies the first condition comprises: computing the uncorrelated metric value S(R,n) for the first mapping and the first uncorrelated metric value S(R,n) based on the first mapping. nc(R, n), where the uncorrelated metric value for the first mapping is calculated based on a total number of first data packets collected during a first time period and a number of first data packets assigned to each of the one or more neighboring nodes by the first mapping; and comparing the calculated difference with a predetermined difference threshold.

[0019] In some implementations, the uncorrelated metric value for the first mapping is:

number

[0020] In some implementations, the first uncorrelated metric value is:

number

[0021] In some implementations, the method may further include storing in a database: an iteration number for generating a new mapping of the first data packet of the set for relay to one or more neighboring nodes; a current decorrelated metric value associated with the calculated minimum difference from the first decorrelated metric value; and a current mapping associated with the current decorrelated metric value.

[0022] In some implementations, the method may further include determining whether the number of iterations is equal to a predetermined number; and, in response to determining that the number of iterations is equal to the predetermined number, transmitting a first data packet of the set to an adjacent node according to the current mapping.

[0023] In some implementations, the method may further include, in response to determining that the uncorrelated metric value for the first mapping satisfies a first condition, transmitting a first data packet of the set to a neighboring node in accordance with the first mapping.

[0024] The present invention may provide a computer-implemented system for carrying out the methods as defined above or elsewhere in this application.

[0025] The present invention can provide a non-transitory processor-readable medium storing processor-executable instructions that, when executed by a processor, cause the processor to perform a method as defined above or elsewhere in this application.

[0026] While many implementations described herein make specific reference to blockchain transactions, it will be understood that the methods and apparatus described herein may also be implemented and applied in connection with non-blockchain transaction propagation. More generally, the methods and apparatus described in this disclosure may be suitable for use in propagating a variety of different types of data between nodes of a peer-to-peer network.

[0027] These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described hereinafter, which embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings, in which: [Brief description of the drawings]

[0028] [Figure 1] 1 illustrates an exemplary network associated with a blockchain. [Diagram 2] 1 illustrates a schematic of an exemplary blockchain node having input and output buffers. [Diagram 3]FIG. 1 is a schematic diagram of a protocol for propagating transactions within an exemplary network of nodes, the Diffusion Mixer Protocol (DMP). [Figure 4] 1 shows an example of relaying a transaction in a network of nodes using a DMP. [Diagram 5] 1 illustrates, in flowchart form, an exemplary process for propagating data packets in a blockchain network according to a DMP. [Figure 6] 1 illustrates, in flowchart form, another exemplary process for propagating data packets in a blockchain network according to a DMP. [Figure 7] 1 illustrates, in flowchart form, another exemplary process for propagating data packets in a blockchain network according to a DMP. [Figure 8] 1 illustrates, in flowchart form, an exemplary process for transmitting a data packet generated or received by a node in a blockchain network. [Figure 9] 1 illustrates, in flowchart form, an exemplary process for transmitting data packets generated by nodes in a blockchain network. [Figure 10] 1 illustrates, in flowchart form, an exemplary process for relaying received data packets at a node in a blockchain network. [Figure 11] An example of destination mixing in the propagation of data packets in a network of nodes is shown. [Figure 12] 1 illustrates an example of delayed relay of data packets in a network of nodes. [Figure 13] 1 illustrates, in flow chart form, an exemplary process for relaying a data packet to a peer node. [Figure 14] 1 illustrates, in flowchart form, another exemplary process for relaying data packets to a peer node. [Figure 15A] 1 illustrates an exemplary algorithm for generating relay assignments for peer nodes. [Figure 15B] 1 illustrates an exemplary algorithm for generating relay assignments for peer nodes. [Figure 15C] 1 illustrates an exemplary algorithm for generating relay assignments for peer nodes. [Figure 16] 1 illustrates an exemplary blockchain node in block diagram form. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0029] In this application, the term "and / or" is intended to cover all possible combinations and subcombinations of the listed elements, including any one of the listed elements alone, any subcombination, or all of the elements, without necessarily excluding additional elements.

[0030] As used herein, the phrase "at least one of... or..." is intended to cover any one or more of the listed elements, including any one of the listed elements alone, any subcombination, or all of the elements, without necessarily excluding any additional elements, and without necessarily requiring all elements.

[0031] Reference is first made to FIG. 1, which illustrates in block diagram form an exemplary network related to a blockchain, which may be referred to herein as a blockchain network 100. The blockchain network 100 is a peer-to-peer open membership network in which anyone may join without an invitation or consent from other members. Any distributed electronic device running an instance of the blockchain protocol under which the blockchain network 100 operates may join the blockchain network 100. Such distributed electronic devices may be referred to as nodes 102. The blockchain protocol may be, for example, the Bitcoin protocol, or other cryptocurrency.

[0032] The electronic devices that run the blockchain protocol and form the nodes 102 of the blockchain network 100 may be of various types, including, for example, computers such as desktop computers, laptop computers, tablet computers, servers, mobile devices such as smartphones, wearable computers such as smart watches, or other electronic devices.

[0033] The nodes 102 of the blockchain network 100 are coupled to each other using any suitable communication technology, which may include wired and wireless communication technologies. Often, the blockchain network 100 is implemented at least in part on the internet, and some of the nodes 102 may be located in geographically distributed locations.

[0034] Nodes 102 maintain a global ledger of all transactions on the blockchain grouped into blocks, with each block containing a hash of the block that precedes it in the chain. The global ledger is a distributed ledger, and each node 102 may store a full or partial copy of the global ledger. Transactions by nodes 102 that affect the global ledger are verified by other nodes 102 to ensure that the validity of the global ledger is maintained. Details of the implementation and operation of blockchain networks such as those using the Bitcoin protocol will be understood by those skilled in the art.

[0035] Each transaction typically has one or more inputs and one or more outputs. Scripts embedded in the inputs and outputs specify how the transaction's outputs can be accessed and by whom. A transaction's output may be an address to which a value is transferred as a result of the transaction. This value is then associated with that output address as an unspent transaction output (UTXO). Subsequent transactions can then reference that address as an input to consume or distribute that value.

[0036] Nodes 102 can perform many different functions, ranging from network routing to wallet services, in order to maintain a robust and secure distributed public ledger. A "full node" contains a complete and up-to-date copy of the blockchain and can therefore verify any transaction (spent or unspent) in the public ledger. A "lightweight node" (or SPV) maintains a subset of the blockchain and can verify transactions using "simplified payment verification" techniques. Lightweight nodes only download block headers and do not download transactions within each block. These nodes therefore rely on peers to verify their transactions. "Mining nodes", which can be full or lightweight nodes, are responsible for verifying transactions and creating new blocks on the blockchain. "Wallet nodes", which are typically lightweight nodes, handle wallet services for users. Nodes 102 communicate with each other using a connection-oriented protocol such as TCP / IP (Transmission Control Protocol).

[0037] When a node wishes to send a transaction to a peer, an "INVENTORY" message is sent to the peer, carrying one or more inventory objects known to the sending node. If the peer returns a "GETDATA" message, i.e. a complete transaction request, the transaction is sent using a "TRANSACTION" message. A node receiving a transaction assumes it is a valid transaction and forwards it to the peer in the same way.

[0038] Referring now to FIG. 2, which diagrammatically illustrates an exemplary node 200 having an input buffer 202 and an output buffer 204. The exemplary node 200 has network interfaces with multiple peer nodes referenced as intA, intB, intC, intD, etc. The input buffer 202 represents the input transactions from the various peer nodes, and the output buffer 204 represents the output network packets corresponding to the transactions for transmission to the peer nodes via the respective interfaces. The network packets are sent and received serially at the application level according to primitives provided by the operating system of the node 200. Assuming transaction x fits into a single Ethernet / IP packet, its transmission to m peers will require the buffering of m different output network packets. Both the input and output network packets contain, among other information, the serialized transaction and a logical interface ID representing the TCP / IP connection to the sending / receiving peer.

[0039] When a Bitcoin transaction is generated, the source node broadcasts a transaction message on the network. In general, when a client generates a transaction, it is placed in the output buffer 204. The transaction may or may not be forwarded to peers immediately. In the current implementation of the Bitcoin network, transactions are propagated by a mechanism called "diffusion propagation", whereby each transaction source sends the transaction to its neighbors with an independent, exponential delay. The delay in propagation is random, which is useful for introducing uncertainty into a malicious attacker's timing estimates. Once a peer receives a particular transaction, it may not accept future relays of the same transaction; for example, the transaction hash may be stored in the peer's memory pool, allowing the peer to reject identical transactions. The "diffusion" of transactions through the network is symmetric, which means that forwarding nodes do not use information about the IP addresses of neighboring nodes to influence transaction broadcasts. For example, in the "standard" diffusion process (the one used in the Bitcoin protocol), all peers of a broadcasting node receive the same transaction, and only one transaction at a time is relayed per peer at each relay instance. The symmetric nature of this "spreading" can be exploited by malicious third parties with knowledge of the network's peer-to-peer graph structure in conducting deanonymization attacks.

[0040] This disclosure provides an alternative technique for transaction relaying in blockchain networks to improve protection against traffic analysis attacks. More specifically, the proposed relaying protocol can be used to disguise, hide, or obscure connections between source nodes of transactions and their IP addresses.

[0041] A transaction relaying protocol, the Diffusion Mixer Protocol (DMP), is proposed. DMP includes two independent diffusion stages. The first stage ("random differential relay", or RDR) allows mixing of relayed transactions and obfuscating transaction sources. In the random differential relay stage, each node waits a predefined amount of time before broadcasting a transaction to the network, receiving and collecting multiple transactions from its peers. The node then creates output connections to "entry nodes" and sends different transactions with nearly the same timestamp to an arbitrarily (e.g., randomly) selected subset of these entry nodes. The entry nodes of a node are the neighbors to which output connections can be established from the node. The randomness in the selection of entry nodes and the diversity of relayed transactions can make reconstructing the network topology more difficult for an attacker.

[0042] The second stage ("standard spreading") ensures timely and reliable propagation of transactions within the network. In the standard spreading stage, each node relays the same transaction to all of its entry nodes, and in each relay instance, only one transaction at a time is relayed per entry node.

[0043] It should be noted that in a network of nodes, such as a blockchain network, one or more nodes may implement a DMP. Specifically, one or more nodes of the network may be able to relay received data packets to its entry node by participating in the DMP. A participating node may, for example, choose between the RDR process and the standard diffusion process to propagate a particular data packet. A node of the network may choose to participate in the DMP and may join the protocol in a decentralized manner or by inclusion in a group of participating nodes organized by a central authority. Participating nodes relay outgoing network packets according to the DMP. In particular, when a participating node receives a data packet, the node may forward the received data packet according to the propagation mode selected for that node, using the rules prescribed by the DMP.

[0044] The proposed DMP for transaction relaying will be described with reference to Figs. 3-7. A schematic visualization of the DMP is shown in Fig. 3. An example blockchain network 300 of nodes is shown. Each node represents a network terminal (i.e., a blockchain node) and edges represent links between the nodes. For the purposes of this description, it is assumed that for each link it is possible to send and receive a single bit at a time.

[0045] In this example network 300, each node maintains a set of unconfirmed transactions so that when a node receives a new transaction, it is propagated through the network to all other nodes. Each node validates the new transaction and stores it in its local set, and forwards the new transaction to any peer nodes that do not already have the new transaction. Due to the peer-to-peer nature of blockchain network 300, not all nodes receive the new transaction at the same time, which means that the new transaction takes some time to reach all nodes in network 300.

[0046] 3 shows two stages of the DMP for propagating a particular transaction Tx1: random differential relaying 302 and standard spreading 304 for Tx1. The source node 310 of transaction Tx1 receives a random differential relay 302 and a standard spreading 304 for Tx1 at time t 1 In the example of FIG. 3, a source node 310 may generate a transaction Tx1 at time t or receive it from a peer node. According to DMP, a source node 310 waits to receive at least one more incoming transaction from a neighboring node before starting to broadcast received / queued transactions. In the example of FIG. 3, a transaction Tx2 is generated at time t 2 When received by the source node 310 at time t 3 to an arbitrarily selected subset of the entry nodes of source node 310. Transaction Tx1 is forwarded to entry nodes 310c and 310d, while transaction Tx2 is forwarded to entry nodes 310a and 310b. The example of Figure 3 is merely illustrative; in particular, source node 310 may wait to receive more than two incoming transactions before propagating any of its received transactions.

[0047] Entry nodes relay received transactions to their peers. For example, nodes 310b and 310d each forward Tx2 and Tx1 to one or more of their neighbors. In DMP, each recipient of a transaction independently selects the mode in which to propagate the received transaction. Node 320 is an example of a node that selects standard spreading as its spreading mode. As shown in FIG. 3, node 320 forwards the same transaction Tx1 to all its entry nodes, namely 320a, 320b, 320c, 320d, and 320e.

[0048] Reference is now made to FIG. 5, which illustrates in flow chart form an exemplary process 500 for propagating data packets within a network at the RDR stage of a DMP. The process 500 is implemented by a node of a blockchain network, such as the network 100. In this context, a node may be understood to refer to a mining node, a full node, a validator node, or any other type of individual blockchain node within a blockchain network. A node is a computing device with network / connections, computing resources, and running software implementing a blockchain protocol.

[0049] In operation 502, a client associated with a node generates at least one data packet of a first type. In the context of a blockchain network, the data packet of the first type may include a blockchain transaction. That is, the client may generate a blockchain transaction to be propagated to other nodes of the network.

[0050] In operation 504, the node collects a set of data packets of the first type during a first time period T. That is, the node accumulates data packets of the first type over a period of time. The set includes at least one generated data packet and at least one data packet of the first type received from one or more peer nodes in the network. In this way, data packets generated by the node are mixed with those data packets of the same type received from neighboring nodes. In a blockchain network, during a period of time T, the node accumulates a set of transactions by monitoring the network for incoming transactions to be relayed. The length of the period of time T may be predefined. In some example implementations, the length of time may vary based on parameters such as the average connection time, the average number of transactions received per unit time, or the centrality of the node in the network (i.e., the number of incoming connections to that node). During the period of time T, the node may only be permitted to accumulate data packets of the first type, and thus may be prevented from transmitting any data packets of the first type during the period of time T.

[0051] In operation 506, the node randomly selects a subset of entry nodes to which the different sets of collected data packets will be forwarded. More specifically, for each data packet in the set of collected data packets, the node randomly selects two or more of its entry nodes (i.e., neighboring nodes with which the node has an outgoing connection) and assigns the data packet for relaying to the selected entry nodes. For example, the entry nodes may be selected randomly. In some implementations, the node may query the network to obtain fresh addresses of peers. In the Bitcoin network, a node may query one or more Database Source Names (DSNs) embedded in Bitcoin Core, Bitcoin J, or other blockchain protocols and maintained by Bitcoin (or other blockchain) community members. In response, the node receives one or more DSN records indicating the IP addresses of available full nodes that may accept incoming connections. A decentralized version of peer discovery may be achieved by a peer sending an “ADDR” message, including an IP address and a port number, to a new node joining the network.

[0052] In some implementations, as part of operation 506, one or more nodes in the network may maintain a table or other data structure to track the assignment of each collected data packet to the entry node to which the data packet should be relayed. FIG. 4 illustrates an example of transaction relaying of a source node 410 in the RDR stage of a DMP in a blockchain network. Table 1 illustrates an example of source node 410's assignment of collected transactions Tx1-Tx5 to entry nodes. The entry nodes are shown as nodes A, B, C, D, E, F, G, and H. As shown in FIG. 4 and Table 1, the source node 410 relays each transaction to at least two entry nodes, and multiple transactions can be relayed through the same node. For example, transactions Tx3, Tx4, and Tx5 are all relayed simultaneously through entry node E. More generally, in the RDR process, multiple data packets can be relayed by a forwarding node to the same peer node simultaneously. Not all entry nodes receive transactions from the source node 410 in a given instance of the DMP. In the example of Table 1, entry nodes C and G have not received any transactions from the source node 410. Table 1 [Table 1]

[0053] Referring again to FIG. 5, in operation 508, for each collected data packet, the node transmits the data packet to each of the (arbitrarily or randomly) selected entry nodes. Each selected entry node is configured to relay the data packet to one or more second nodes (e.g., peers of the entry node) in the network using a data propagation mode randomly selected for that entry node. That is, each selected entry node forwards the received data packet to one or more of its own peers using a propagation mode independently selected for that entry node. In the example transaction relay of FIG. 4, each of transactions Tx1-Tx5 is forwarded to the entrance node to which the transaction is assigned.

[0054] Each node receiving a transaction from the source node 410 then randomly selects the propagation / diffusion mode to use when forwarding the received transaction to one or more of its peer nodes (if any). In particular, an entry node receiving a transaction randomly chooses to relay the transaction according to the standard diffusion process or the RDR process. The choice between the two options is random. Thus, in a DMP, the two diffusion processes alternate stochastically, i.e., there is no clear separation between the RDR stage and the standard diffusion stage. As a result of this "mixing" of diffusion processes, it becomes more difficult for an attacker to reconstruct the topology of the network based on identifying the division between the set of nodes relaying by random data propagation or by standard diffusion.

[0055] In some implementations, the random selection by the entry node of the spreading mode may include receiving a message from the source node in addition to the data packet to be relayed. The entry node may then generate a random value (e.g., a random number), add it to the received message, and hash the result, for example using SHA-256. The entry node may then check the hash value and subsequently obtain the spreading mode based on a predefined rule regarding the hash value (e.g., if the last character of the hash is a number, select RDR as the spreading mode). Alternatively or additionally, the selection of the spreading mode may be performed using any randomized process (e.g., a random number generator), where the probability of selecting one mode may be greater than the probability of selecting the other mode depending on factors such as the number of input and / or output connections, the average number of data packets received per unit time, etc.

[0056] In propagating a particular data packet, it may be desirable to balance the level of anonymity protection for a propagating node with the overall propagation speed. If the means of ensuring a particular level of anonymity are overly burdensome (e.g., if they require too many network resources, if nodes of the network are purposefully underutilized in relaying data packets, etc.), the effectiveness of the network in spreading data in a timely manner may be compromised. Thus, in some implementations, the random selection of a propagation mode by a relay node may be weighted. In particular, a different probability may be assigned to each of two or more propagation modes (i.e., RDR, standard spreading, etc.) such that the probabilities reflect the proportional importance of anonymity and speed of data propagation. For example, in some instances, a higher predetermined probability may be associated with the RDR mode for nodes of a particular network, reflecting a proportionally greater weight being placed on maintaining the anonymity of the propagated data.

[0057] The process 500 of FIG. 5 is implemented by a node that generates its own data packets of the first type. In particular, a node that participates in the DMP and generates data packets for propagation to the rest of the network performs the process 500. FIG. 6 illustrates an example process performed by a relay node, or a node that forwards or relays data packets generated by a different node. That is, a relay node is a node that does not generate data for forwarding itself during the relay of a particular data packet, but instead functions to "relay" the data packet. In operation 550, the relay node independently selects its data propagation mode. The relay node can select, for example, between an RDR mode and a standard spreading mode. If the standard spreading mode is selected (which can be determined in operation 552), the relay node forwards the data packet to all of its entry nodes in operation 554. In the example of FIG. 6, the selection of the propagation mode is between two possible options; however, this example is not limiting and in other examples there may be more than two possible propagation modes. In process 500, if the selected mode is RDR (which may be determined in operation 552), the relay node performs steps 556, 558, and 560, which correspond to operations 504, 506, and 508 in FIG.

[0058] 7, which illustrates in flowchart form an example process 600 for propagating data packets in a network. Process 600 may be implemented in a blockchain node having multiple input and output connections to other nodes in the blockchain network.

[0059] Operations 602, 604, 606, and 610 of process 600 correspond to operations 502, 504, 506, and 508 of process 500, respectively. In operation 608, the node determines whether a trigger condition is met (before transmitting the collected data packets to the entry node specified in operation 610). In particular, the transmission of the data packets is performed in response to detecting that the appropriate trigger condition is met. If the trigger condition is not met, the node continues to collect the first type of data packets without relaying any of the data packets to its entry / peer node.

[0060] The trigger condition can be used to instruct the node to collect a sufficient number of input data packets and / or to collect input data packets for a sufficient period of time. For example, sufficiency may be determined based on a predefined threshold. By collecting multiple input data packets, e.g., before propagating them simultaneously to peer nodes in the network, an attacker monitoring relayed traffic originating from the node may not be able to easily identify the node as a correct source of the relayed data packets.

[0061] In some implementations, the trigger condition may be the expiration of a predetermined period of time following the generation of at least one data packet of a first type by the node 602 in operation 602. That is, the node may be designed to monitor and collect incoming data packets (e.g., transactions) for a predetermined period of time beginning when the node generates a data packet of the same type before any such data packet is propagated by the node. This condition is useful in trying to ensure that a data packet generated by a node is propagated after collecting more data packets of the same type that may be broadcast simultaneously, thereby making it difficult for an attacker to accurately identify the node as the source of the generated data packet.

[0062] In some implementations, the trigger condition may be the expiration of a predetermined duration from the first receipt of at least one input data packet of a first type from the node's peers. That is, the node may be designed to monitor and collect input data packets for a predetermined period of time beginning when the first of such input data packets is received. This condition may be useful in trying to ensure that more data packets (either generated by the node itself or received from other peers) are collected by the node before any broadcast to the rest of the network.

[0063] In some implementations, the trigger condition may be that the number of data packets collected during the first time period reaches a threshold number. In particular, the node may be configured to monitor and collect incoming data packets until the earlier of the expiration of the first time period or a predefined threshold number of data packets being collected by the node.

[0064] Heuristics for Random Differential Relaying. As mentioned above, random differential relaying represents a new departure from the “standard diffusion” protocol for propagating transactions in a network of nodes. In implementing RDR, a propagation node simultaneously relays different transactions to a randomly selected subset of entry nodes. The propagation node can generate a data structure such as the one shown in Table 1 by randomly assigning to each collected transaction one or more entry nodes to which the transaction should be relayed. More generally, a network node that relays data packets to peers can maintain its own internal routing data structure that specifies the type of relaying to perform for each of multiple data packets collected by the node (i.e., received or locally generated).

[0065] In the context of the Diffusion Mixer Protocol proposed in this application, each node in a blockchain network that implements RDR can independently build its own routing data structure, i.e., the “RDR table”. The RDR table defines the transaction allocation scheme for each node that employs the RDR protocol. That is, the RDR table of each node is used to manage which transactions should be relayed or routed to which peers and at what time. The RDR table is used to manage the time for which transactions should be relayed or routed to which peers and at what time for a given length of time, e.g., ΔT RDR It is possible to track all transactions received or generated by a peer, and the source peer of the transaction. The RDR table may contain additional information, such as: the arrival time of the first instance of the transaction ("ToA timestamp"); the time the transaction was selected to be relayed ("ToR timestamp"); and / or a counter of the number of instances of the same transaction received by the node. An example of an RDR table is shown below: Table 2 [Table 2]

[0066] A node's local RDR table can be dynamically (i.e., in real-time) updated as new information (timeouts, transactions received / generated, node input / output capacity constraints, etc.) becomes available. This disclosure provides various heuristics, or "sub-systems," that contribute to the construction and updating of individual RDR tables. These sub-systems can be thought of as a set of rules or guidelines that are applied to update the transaction allocations specified in the RDR tables. The strategies encompassed by these sub-systems can be useful in balancing the network traffic generated by the relaying operations of individual nodes and improving transaction source obfuscation. While the proposed set of sub-systems, namely, source mixing, relay mixing, destination mixing, time of arrival (ToA) mixing, and source control, can operate in parallel, a load balancing module can be used to merge collected transaction relay information and provide optimized allocation of network resources.

[0067] Reference is now made to FIG. 8, which illustrates in flowchart form an exemplary process 700 for transmitting data packets generated or received by a node in a network. Process 700 represents a technique for propagating data within a network according to a transaction allocation scheme that follows at least one rule of the proposed subsystem / heuristic. Process 700 may be implemented by nodes of a blockchain network, such as, for example, network 100 of FIG. 1. More specifically, process 700 may be executed by a node participating in a DMP that is configured to generate or receive a first type of data packet (e.g., transaction) for propagation to the rest of the network.

[0068] In operation 702, a client associated with a node generates at least one data packet of a first type. The data packet may include, for example, a blockchain transaction.

[0069] In operation 704, the node collects a set of data packets of a first type during a first time period T. That is, the node accumulates data packets of the first type over a period of time. The set includes at least one generated data packet and at least one data packet of the first type received from one or more peer nodes in the network. In this way, data packets generated by the node are mixed with data packets of the same type received from neighboring nodes.

[0070] In operation 706, a mapping of the collected data packets to a number of neighboring nodes connected to the node is determined. The mapping indicates the expected relay time for each data packet of the set to the neighboring node. This "mapping" is used to build an individual local RDR table for the node of the network. One or more sub-systems / heuristic methods described in this disclosure can contribute (in parallel or independently) to the construction of the RDR table. In particular, one or more different sub-mappings may be applied in determining the mapping of the collected data packets to the neighboring nodes. The sub-mappings may be of at least two different types. A first type of sub-mapping specifies any two data packets having the same source (i.e., originating node) for relaying to different subsets of the neighboring nodes. The "source-mixed" and "relay-mixed" sub-systems described in detail below are examples of this first type of sub-mapping. A second type of sub-mapping specifies different expected times for any two data packets generated at the node or received by the node from a peer node within the same time interval. The "mixed arrival time" subsystem is an example of this second type of sub-mapping.

[0071] In operation 708, once the mapping of the collected set of data packets to neighboring nodes is determined, the data packets are transmitted to the neighboring nodes according to the determined mapping.

[0072] It will be appreciated that each subsystem may be implemented independently to update the transaction allocations defined in the RDR table, i.e., each subsystem may be employed separately on the RDR table, independent of the other subsystems. Thus, each subsystem may provide different methods of allocating transactions to relay nodes, and thus different techniques for propagating transactions.

[0073] Source Mixture The underlying principle of a mixed-origin subsystem is that transactions generated locally at a node should be forwarded to a non-overlapping subset of peers. As an illustration, consider a node x that generates two transactions tx i and tx i+1 When generating transactions, the set of peers selected to relay those transactions is S(tx i ) and S(tx i+1 ) respectively satisfy the following:

number

[0074] That is, the sets of peers for two successive transactions differ by at least one peer. This inequality can be useful in obfuscating malicious searches for patterns of initial relaying of transactions generated by a node. This concept is expressed as a measure of the degree of source mixing, δ, as follows: SM can be expanded to:

number

[0075] Reference is now made to FIG. 9, which illustrates in flowchart form an exemplary process 800 for transmitting data packets generated by nodes in a network. Process 800 represents a technique for propagating data in a network according to a transaction allocation scheme that follows the rules of a source mixing subsystem / heuristic. Process 800 may be implemented by nodes of a blockchain network, such as network 100 of FIG. 1. More specifically, process 800 is performed by a node that participates in a DMP and generates a first type of data packet (e.g., a transaction) for propagation to the rest of the network.

[0076] In operation 802, a client associated with a node generates at least one data packet of a first type. The data packet may include, for example, a blockchain transaction.

[0077] The node determines a first mapping of at least one generated data packet to neighboring nodes (i.e., peers). In particular, a subset of the peers is selected to relay the data packet generated at the node. Each data packet is associated with a particular subset of relay nodes by the first mapping. For each data packet, in operation 804, a predetermined number of first data packets of a first type that have been previously generated by the node are identified. These may be data packets already sent by the node to a peer or data packets previously generated but not yet relayed to the node's peer.

[0078] In operation 806, a list of relay node sets associated with the first data packet is obtained. The relay node set includes neighboring nodes (peers) to which the first data packet is respectively relayed (or designated for relaying). That is, the relay node set indicates a subset of the peers of the node to which each of the first data packets is assigned.

[0079] In operation 808, the first set of relay nodes is selected based on identifying a set of neighboring nodes that is different from the relay node set in the list obtained in operation 806. For example, the first set of relay nodes may be selected by arbitrarily selecting a set of two or more neighboring nodes that are not included in the obtained list of relay node sets. In some implementations, a requirement may be imposed that the first set selected is different from the relay node sets of the lists obtained by two or more peers. That is, an upper limit may be set on the number of elements that belong to the intersection set between the first set of selected relay node sets and any one of the relay node sets in the obtained list.

[0080] The process 800 may be performed by a node after a single data packet is generated at the node, or after the node collects multiple generated data packets. In particular, the node may generate and accumulate data packets of a first type over a period of time (similar to the RDR stage of a DMP) and determine a first mapping of the accumulated data packets to a set of relay nodes. In these cases, the data packets may be assigned to an arbitrarily selected subset of the relay nodes, respectively, ensuring that no two such subsets are equal to each other.

[0081] The number of neighboring nodes selected for inclusion in the first set of relay nodes can be determined arbitrarily. In at least some implementations, the number of peers selected for the first set is limited according to the bandwidth requirements of the propagation node (e.g., the cumulative amount of input and output data within a fixed time frame). In particular, the number of peers selected for relaying locally generated transactions can be adjusted to address network load issues or improve source obfuscation. For example, the number of peers included in the first set may be determined by the following formula:

number

[0082] The selection of the first set of relay nodes may then be configured in a first mapping associated with each data packet. In other words, the first mapping may indicate that the data packet is associated with (i.e., assigned to) the first set of relay nodes. In operation 810, the data packet is transmitted according to the determined first mapping.

[0083] Relay Mix The relay mixing subsystem is premised on the notion that a transaction received by a node should be relayed to a non-overlapping subset of the node's peers. Using a parameter λ to represent the number of elements that belong to the intersection set between relay peers selected for two different transactions received by the same node, the idea behind relay mixing can be grasped as follows:

number

[0084] Alternatively, in other implementations, the parameter λ is an intrinsic system parameter; a time-varying parameter λ that is updated using information stored in a specific time window and the RDR table. t or a time-varying parameter λ for each peer that is updated using a particular time window and the information stored in the RDR table. t i may be also possible.

[0085] The number of combinations of transaction allocations for generic peers is C=( m x ) δRM where m is the number of peers of a node and δ RM is the degree of relay mixing and x is the average number of peers selected for relaying. The iterative search for a suboptimal solution can proceed in several possible ways: · Set the maximum number of iterations and select the transaction allocation for the minimum number of fellowship peers. Set a maximum number of iterations, but abort the process early if a given threshold number of fellowship peers is reached. Set a maximum number of iterations, and if the requirement is not met, increase the value of λ and restart the process. Set a maximum number of iterations and if the requirement is not met, modify the value of x and restart the process. Set a maximum number of iterations and if the requirement is not met, decrease the value of m and restart the process. The maximum number of iterations is for a fixed time window ΔT RM If is replaced by another set of approaches can be considered.

[0086] The number of neighboring nodes selected for inclusion in the set of relay nodes may be determined arbitrarily. In at least some implementations, the number of peers selected for the set is limited according to the bandwidth requirements of the propagation node (e.g., the cumulative amount of input and output data within a fixed time frame). In particular, the number of peers selected for relaying locally generated transactions can be adjusted to address network load issues or to improve source obfuscation. For example, the number of peers included in the first set may be determined by the following formula:

number

[0087] Reference is now made to FIG. 10, which illustrates in flowchart form an exemplary process 900 for relaying data packets received at a node in a network. Process 900 represents a technique for propagating data within a network according to a transaction allocation scheme that follows the rules of a relay mixed subsystem / heuristic. Process 900 may be implemented by nodes of a blockchain network, such as, for example, network 100 of FIG. 1. More specifically, process 900 is performed by a node that participates in a DMP and receives a first type of data packet (e.g., a transaction) for propagation to the rest of the network.

[0088] In operation 902, a client associated with a node receives at least one data packet of a first type. The data packet may include, for example, a blockchain transaction.

[0089] The node determines a second mapping of at least one received data packet to neighboring nodes (i.e., peers). In particular, a subset of the peers is selected to relay data packets generated at the node. Each data packet is associated with a particular subset of relay nodes by the second mapping. For each data packet, in operation 904, a predetermined number of second data packets of the first type that were recently received by the node are identified. These may be data packets that have already been transmitted by the node to a peer or data packets that were previously received but not yet relayed to the node's peer.

[0090] In operation 906, a first allocation of the second data packets to a fixed set of neighboring nodes is determined. In particular, the first allocation is selected from one or more allocations of the second data packets to neighboring nodes that satisfy a predetermined condition. This operation corresponds to an iterative search for a suboptimal solution to the above inequality (A). That is, a unique allocation (e.g., an allocation with the fewest peers) among the allocations of data packets to relay nodes that satisfy (A) is determined. As captured by (A), an allocation of the second data packets to a fixed set of neighboring nodes satisfies the predetermined condition if, for any two of the second data packets, the number of neighboring nodes to which both second data packets are assigned (for relaying) is less than or equal to a predetermined threshold.

[0091] A unique assignment of the second data packets to the neighboring nodes identified in operation 906 can then be established in the second mapping. In other words, the second mapping can indicate relay nodes to which the second data packets (i.e., data packets received by the node from peers) are respectively assigned. In operation 908, the at least one received data packet is relayed according to the determined second mapping.

[0092] The process 900 may be performed by a node after a single data packet is received at the node, or after the node collects multiple received data packets. In particular, the node may receive and accumulate data packets of a first type over a period of time (similar to the RDR stage of a DMP) and determine a mapping of the accumulated data packets to a set of relay nodes. In these cases, the data packets may be assigned to an arbitrarily selected subset of relay nodes, respectively, ensuring that no two such subsets are equal to each other.

[0093] Destination Mix The destination mixing heuristic captures the idea that output connections of a node should carry out transactions relayed by different peers. This heuristic may be considered as a special case of the relay mixing subsystem because it involves creating non-overlapping subsets of peers for relaying from the same source peer. In process 900, destination mixing may be performed in operation 906 by ensuring that for any two of the first nodes (i.e., the nodes from which the node receives data packets), the set of all second data packets received from the two first nodes are assigned to at least two different neighboring nodes in the first allocation. For example, FIG. 11 illustrates an example of destination mixing for node i. The destination mixing subsystem may be implemented by ensuring that node a receives a set of second data packets from the first nodes within a given time window ΔT DM In,i,, we ensure that we do not receive two transactions relayed by the same node,c,.,Therefore, of the two transactions received at node,i,from node,c,, only one is relayed to node,a,.

[0094] In some implementations, the destination mix is DM For example, the subset may be a subset of peers with respect to the parameter (m DM ,Δ DM ,ξ DM ), a strategy that may contribute to decorrelation of the source and destination of a given transaction.

[0095] Time of Arrival Mixed The mixed-arrival-time (ToA-mixed) heuristic implements delayed relaying of data packets to help decorrelate source and destination information for data packet relaying. For example, the time window ΔT (e.g., in the RDR stage of the DMP) iA data packet (e.g., a transaction) collected (or generated) in i (RDR in Figure 12 i ) can be scheduled for relaying at the end of the RDR. i In some implementations, relaying of data packets is delayed until, for example, RDR i ,R.D.R. i+1 ,R.D.R. i+2 Such multiples as qΔT i Thus, relaying a data packet received (or generated) by a node according to the arrival time heuristic includes determining a next scheduled time for relaying the received data packet to a neighboring node, and relaying the data packet a predetermined length of time after the next scheduled time for relaying. i All transactions collected in ΔT i +qΔT or ΔT i Each transaction j collected in i +q j It may be relayed at ΔT.

[0096] The random variable q, in some instances, has a negative exponential probability density function.

number

[0097] Source Control A malicious peer may try to push the same data packet (or group of data packets) to a given node i multiple times to discover patterns in i's local relaying strategy. For example, a malicious peer node may create two connections to node i and monitor how the inbound and outbound traffic to i correlates. The source control subsystem is implemented by setting a certain threshold for the number of data packets that can be received from each peer. If a peer exceeds the threshold for a given data packet, the connection will be permanently or temporarily closed. The number of instances that a node receives a given data packet, such as a blockchain transaction, may be stored in the RDR table.

[0098] Load Balancing Load balancing may be used to periodically perform a shuffling of data packets already assigned for relaying to peers by other subsystems. The purpose of the load balancing module is to average the relay distribution among peers to avoid traffic overload of some peer connections or single points of failure. Two different approaches to load balancing may be implemented: Each data packet j has the same weight w j (i.e., regardless of the number of inputs, the number of outputs, and the size of the unlocking and locking scripts). Each data packet j has its own weight w proportional to its size in bytes. j has.

[0099] For example, in the process 800, a second allocation of second data packets to a fixed set of neighboring nodes can be determined, the second allocation being a reconstruction of the first allocation to balance the traffic at the output interfaces of the nodes. The cumulative value is the number of data packets scheduled to be relayed, ni can be calculated for each peer i over

number

[0100] Then, the data packets to be relayed are shuffled, and the average value of each peer c * An iterative process is performed to obtain:

number

[0101] A variety of different heuristics are available to deal with this shuffling of data packets. For example, different sub-systems may be assigned different priorities to predict relaying of a subset of data packets or to enhance load balancing of outgoing traffic. Furthermore, the execution of different sub-systems may cause overlapping or inconsistent allocation of data packets, which needs to be resolved before relaying is activated.

[0102] Dynamic evaluation and updating of data routing information The techniques described above provide an example of how to build and update data routing information. A data structure (RDR table) is maintained at a node to specify at least: which data packets received and / or generated at the node should be relayed to peer nodes in the network; which peer nodes should be selected as relay nodes for the data packets; and when the data packets should be relayed to the selected peer nodes. The use of the RDR table can be particularly useful in the context of gossip-based broadcast protocols where information is distributed throughout the network of nodes. Subsystems are directives that can be selectively used to implement various logic for controlling the updating of the RDR table. Specifically, one or more subsystems can be used to define and update the allocation of data packets for relaying to peers of the network node.

[0103] This application introduces a scheme for evaluating the effectiveness of an RDR table in providing security, anonymity, and timeliness of data relaying / broadcasting. The evaluation of a node's RDR table can be done in real-time. Based on the result of the evaluation, the node can proceed with relay assignments as defined in the current RDR table or modify or regenerate the RDR table to obtain new relay assignments. For example, if the node's RDR table is determined to be unsatisfactory upon evaluation, the node may be configured to automatically regenerate its RDR table to obtain new assignments of data packets to the node's peers. On the other hand, if the evaluation results in the current RDR table being satisfactory, the node can proceed with broadcasting / relaying data according to the relay assignments of the current RDR table. In this way, a "feedback loop" can be defined for the node to evaluate and regenerate the node's RDR table until the RDR table is determined to be satisfactory (based on the result of the evaluation). This evaluation process can facilitate the derivation of relay assignments that satisfy predefined criteria of performance and / or effectiveness for the network node.

[0104] To illustrate a framework for evaluating the RDR tables of network nodes, it may be useful to introduce a different representation of the RDR table that facilitates computational manipulation of the relay allocation information. More specifically, the model for representing relay allocation for nodes in the RDR table (e.g., Table 2) can be extended so that the relay allocation data contained in the RDR table can be mapped into a form suitable for quantitative analysis. In at least some implementations, the RDR table is organized into entries μ ij

[0046] The matrix M may be mapped to a k×n matrix M having ij is as follows:

number

[0105] That is, the RDR table is i If you specify that μ should be relayed to a peer node, ij The entry is set to 1, otherwise the entry is set to 0. Thus, the columns of the matrix M correspond to the peers of a node, and the rows of the matrix M correspond to the data packets that should be relayed by the node to its peers. The following quantities can be defined for the matrix M: - R: Total number of transaction relays analyzed -c j = Σ i=1 k μ ij : Number of data packets relayed by each peer -r i = Σ j=1 n μ ij : Number of relays per data packet

[0106] The parameters k and n are system parameters that may be fixed globally or locally for each node. Thus, the RDR table, which is built and updated by applying one or more of the above mentioned subsystems / heuristics, can be converted into a form that allows a quantitative representation of the relay allocation information contained in the RDR table.

[0107] When evaluating the relay assignments defined in the RDR table, several different criteria may be accepted to measure their "performance" or effectiveness in terms of security, anonymity, and / or timeliness of data propagation. One possible way to measure the anonymity performance of the RDR table is to consider the pairwise intersections between the sets of peers to which any two different data packets are designated to be relayed. In particular, it may be desirable for the sets of peers to which any two different data packets are designated, respectively, to be as separated as possible. In other words, the effectiveness of the RDR table (and the relay assignments contained therein) can be characterized by how diverse the sets of relay nodes for the pairwise different data packets are. Such diversity of the relay node set can prevent or hinder an attacker's recognition of patterns in data relaying, thereby helping to protect the identification of the source / origin of the data packets.

[0108] The implementation of deriving an optimal allocation of data packets to relay nodes with respect to the anonymity of data relaying can be defined in a quantitative way. In particular, with respect to a matrix representation M of the RDR table, the concept of deriving an optimal allocation can correspond to minimizing the number of non-zero entries per column of M. Expressed differently, this minimization problem can correspond to minimizing the number of different data packets relayed by a node to the same peer. In some cases, the minimization problem can be constrained by the total number of data packets to be relayed by the node and / or a predefined number of relays for each of one or more data packets.

[0109] For the purpose of measuring the anonymity performance of an RDR table, a quantitative metric may be usefully defined, which allows the results obtained from an empirical RDR table generated by the random allocation of data packets performed by the above-mentioned subsystems to be compared with a theoretically optimal RDR table.

[0110] In information theory, entropy is defined as the average information content generated by a probabilistic source of data. Entropy is a measure of the unpredictability of a state, or equivalently, its average information content. Increasing the anonymity of a process may correspond to maximizing the entropy of a data structure that represents the process.

[0111] If x represents the value of a random variable, then the ensemble X=(x,A x ,Π x The entropy of Π(x=a i )=π i With probability Π x ={π 1 ,...,π n} with possible values ​​A x ={a 1 ,...,a n For one of the sets of}, we can define

number

[0112] In the context of the matrix M representing the RDR table, each probability π i is the ith peer's c i is defined as the probability of having i=1,...,n relays. More specifically, π i =c i / R,

number

[0113] 13, which illustrates in flowchart form an exemplary process 1000 for relaying data packets to peer nodes. Process 1000 may be implemented by a node of a blockchain network, such as network 100.

[0114] In operation 1002, a node collects a first set of data packets during a first time period, the set including at least one data packet received from one or more first nodes in the network, i.e., the set includes one or more data packets transmitted from a source other than the node itself.

[0115] In operation 1004, a first mapping is generated, the first mapping assigning the collected first data packets of the set for relay to one or more neighboring nodes connected to the node. The first mapping defines relay assignments of the data packets to peer nodes. The generation of the first mapping may correspond to building an RDR table for the node, which may be performed by implementing one or more of processes 500, 600, 700, 800 and 900.

[0116] For example, the first mapping may be generated and updated based on applying logic of various subsystems such as source mixing, relay mixing, etc. described above to define relay assignments. Thus, the first mapping may indicate an expected time of relay to a neighbor / peer node for each first data packet of the set. Furthermore, if more than one subsystem is used to build the RDR table, generating the first mapping may include determining at least one of a first sub-mapping that assigns any two data packets having the same source for relay to different subsets of neighbor nodes, and a second sub-mapping that assigns different expected times of relay for any two data packets generated at the network node or received by the network node from one or more first nodes in the same time interval.

[0117] In at least some implementations, the first mapping may depend on the node's output interface capacity (i.e., the first mapping may be generated based at least in part on capacity constraints of output interfaces connecting the node to one or more peers). Output interface capacity information may be combined with collected details of the first data packets (e.g., size, type, etc.) to generate and / or modify relay assignments of the first mapping.

[0118] In operation 1006, a decorrelation metric value for the first mapping generated in operation 1004 is calculated. The decorrelation metric value may represent, for example, a value related to the decorrelation metric for the relay allocation defined by the first mapping. The decorrelation metric may be used to check that the algorithm used to generate and update the RDR table efficiently mixes and allocates data packet relays to peers. In particular, the decorrelation metric may be useful to evaluate how well an algorithm for allocating data relays to peers "decorrelates" the relayed data packets from their source. The decorrelation metric may, for example, be an indicator / measure of the level of anonymity that may be achieved by the allocated data relays specified by the first mapping. That is, the decorrelation metric may reflect the effectiveness of the algorithm to make relayed data packets unrelated to their source / source.

[0119] In some implementations, the decorrelation metric value may be calculated using equation (1). That is, the decorrelation metric value may represent the entropy associated with a defined relay assignment of mapping of data packets to relay nodes. In particular, given parameters R (total number of relays of a first data packet to peer nodes) and n (number of peer nodes), the decorrelation metric value may be obtained by calculating the following equation:

number

[0120] Other metrics suitable for measuring the anonymity performance of the first mapping than that calculated using equation (1) can be obtained.

[0121] In operation 1008, it is determined whether the calculated uncorrelated metric value S(R,n) for the first mapping satisfies a first condition. For example, the uncorrelated metric value S(R,n) may be compared to a predefined numerical value (e.g., a threshold). In at least some implementations, the uncorrelated metric value S(R,n) may be compared to a first predefined ("optimal") uncorrelated metric value to measure how close the two uncorrelated metric values ​​are. The first predefined uncorrelated metric value may be associated with an allocation of the data packet to a relay node that is considered "optimal". A difference between the uncorrelated metric value S(R,n) and the first predefined uncorrelated metric value may be calculated, and the calculated difference Δ entr is compared to a threshold difference to determine how “close” the first mapping is to the “optimal” relay assignment. Specifically, the decorrelation metric value S(R,n) for the first mapping is calculated by multiplying the calculated difference Δ entr is equal to or smaller than the difference threshold ε, it may be determined that the first condition is satisfied.

[0122] There may be many different ways to define an "optimal" relaying allocation of data packets to peer nodes. One way to define such an "optimal" relaying allocation is to minimize the number of data packets relayed to any single peer node, thus avoiding overlaps between senders of multiple different packets. That is, a relaying allocation may be considered "optimal" or near-optimal if data packets are evenly distributed to peer nodes for relaying. For example, an optimal allocation may be defined as a relaying allocation that contains c i =(RR n ) / n data packets, Rn = R mod n. Multiple equivalent solutions to the optimal assignment may be found modulo permutations of the indices.

[0123] For example, when R=23 and n=5, each column of the M-RDR table is i =(RR n ) / n=4 data packets will be received. The remaining R n The data packets may be distributed according to a predetermined algorithm. For example, R n The data packets may be distributed, one per each of the leftmost columns of the M-RDR table, until they are exhausted. In general, the number of data packets allocated to a peer, c i may be expressed as:

number

[0124] Based on this definition of the optimal allocation of R data packets to be relayed and n peers, the decorrelation metric value for the optimal relay allocation may be calculated using equation (1) as follows:

number

[0125] Another method of defining an optimal relay allocation is shown in Figures 15A-15C. In some implementations, the optimal allocation may be determined based on a given set of input parameters and certain constraints on relaying. For example, the set of inputs may be: the number of data packets to be relayed, k; the number of peer nodes, n; the total number of transaction relays, R; and a vector r = (r 1 ,...,r k ),r i =Σ j=1 n μ ijThe vector r may be determined, for example, when a first mapping of data packets to relay nodes is generated, i.e., the number of relays per data packet determined by the first mapping may serve as a constraint for optimal relay allocation.

[0126] Figures 15A-C show the Diagonal Allocation Algorithm (DAA), which is an algorithm for constructing an M-RDR table corresponding to an "optimal" relay allocation under given inputs and constraints on the number of relays per data packet. As shown in these figures, data packets to be relayed to peers are allocated "diagonally". In Figure 15A, a 5x8 M-RDR table is shown, where a total of R=16 relays are allocated under the constraints r=(2,5,2,4,3) on the number of relays per data packet.

[0127] Once the M-RDR is initialized to an empty matrix, the algorithm starts to assign data packet relays to peers and build an optimal M-RDR table. To avoid duplications, the matrix is ​​filled up until all given data packets are assigned in a diagonal manner. Multiple equivalent optimal solutions can be built based on the index / peer permutations.

[0128] In the first round, the algorithm calculates μ for i=1,...,5. ii = 1 and update the entry in the M-RDR table by updating the vector r to r' = (1,4,1,3,2). The last non-zero entry added to the M-RDR table is μ 55 In the second round, data packets are assigned starting from column 6 to avoid duplication. 16 ,μ 27 ,μ 38 ,μ 41 ,μ 52 is set to 1 and the vector containing relays per data packet is updated to r” = (0,3,0,2,1).

[0129] The algorithm continues to fill the M-RDR table until it runs out of relays to allocate, as shown in Figure 15C. More generally, the main steps of DAA may be defined as follows: 1. Define the input parameters, ξ = (k, n, r, R). 2. k×n matrix M opt Initialize. 3. Starting from the main diagonal, go diagonally to M opt Start filling. 4. Update the vector r → r' 5. Select a new diagonal to assign data packets to be relayed. For n>k, for i=1,...,n, μ i,(k+1)mod n Update. 6. Update the vector r'→r” 7. Repeat until r = (0,...,0).

[0130] Once the optimal M-RDR is generated by the DAA, M opt The entry of has probability π i =c i / R, the probability of which is the uncorrelated metric S for the optimal M-RDR table. op Whether the first predefined uncorrelated metric value is calculated using equation (2) or based on the DAA, in operation 1008, the node calculates the uncorrelated metric values ​​S(R,n) and S(R,n) for the first mapping. op Calculate the difference between (R,n) and compare the calculated difference with a predefined threshold.

[0131] If the uncorrelated metric value S(R,n) does not satisfy the first condition (e.g., if the calculated difference is greater than a threshold), then a second mapping of the first data packet to neighboring nodes is generated in operation 1010, where the second mapping defines a relay assignment different from that of the first mapping. That is, a second, different mapping of data packets to peers is generated when it is determined that the first mapping is not sufficiently "close" to the defined optimal relay assignment.

[0132] In some implementations, generating the second mapping may include modifying a selection of peers for relaying each of the one or more first data packets. In particular, for at least one of the collected first data packets, a second set of neighboring nodes different from the set of neighboring nodes to which the at least one first data packet is assigned by the first mapping may be selected, and the at least one first data packet may be assigned to the selected second set of neighboring nodes. In this way, the number of relays per data packet may be fixed and only the selection of peers to relay the data packet may be changed.

[0133] In operation 1012, the uncorrelated metric values ​​S of the second mapping are calculated using the techniques described above. 2 (R,n) is calculated. As in operation 1008, S 2 (R,n) is the first condition (i.e., the calculated difference Δ entr =|S 2 (R,n)-S op To determine whether (R,n)|≧ε) is satisfied, the uncorrelated metric value S 2 (R,n) is the uncorrelated metric value S for optimal relay assignment. op It can be compared with (R,n).

[0134] In this way, a "feedback loop" may be defined for iteratively generating mapping / relay assignments and evaluating associated uncorrelated metric values ​​until a mapping / relay assignment that satisfies a given condition (e.g., close to an optimal relay assignment) is obtained. In some cases, a maximum number of iterations of the feedback loop may be predefined to avoid excessive delays in RDR table generation and data relaying. Such a maximum number of iterations may be defined locally (per node) or globally (network-wide).

[0135] Thus, in at least some implementations, the number of iterations that generate a new mapping of the first data packet of the collected set for relay to one or more peers of the node may be maintained (e.g., stored in a database). Additionally, a current decorrelated metric value associated with the lowest calculated difference from the initial decorrelated metric value to the present, and a current mapping / relay assignment associated with the current decorrelated metric value may also be stored. The node may then determine whether the number of iterations has reached a predetermined maximum number, and if so, transmit the first data packet of the collected set according to the current mapping, i.e., without performing further iterations of the feedback loop.

[0136] Once a mapping that satisfies the first condition is obtained, the first data packet is transmitted by the node to a neighbor / peer node in accordance with the obtained mapping in operation 1016. In at least some implementations, the transmission of the first data packet to the peer can occur simultaneously or near simultaneously.

[0137] 14, which illustrates in flowchart form another exemplary process 1100 for relaying data packets to peer nodes. Process 1100 may be implemented by a node of a blockchain network, such as network 100.

[0138] Operations 1102, 1104, and 1108-1118 correspond to operations 1002, 1004, and 1006-1016 of the process 1000, respectively. The process 1100 includes an additional operation 1106 for performing a real-time check during the creation of the RDR table at the subsystem level. In particular, in operation 1106, the node obtains, for any two different first data packets of the collected set, a measure of similarity between the sets of neighbors to which the first data packets are respectively assigned by the first mapping. The operation 1106 makes it possible to measure the similarity of the sets of peers to which the different data packets are assigned. As mentioned above, it is desirable that the two different data packets are relayed to different sets of peers, i.e. the sets of relay nodes for the different data packets are disjoint.

[0139] One example of a similarity measure is the cosine similarity: given two vectors A and B with the same dimensions, the cosine similarity s is given by

number

[0140] This quantity can take on values ​​in the interval [-1,1]: a value close enough to or equal to 1 means that there is a strong correlation between vectors A and B, s=0 indicates that the two vectors are completely uncorrelated, and s=-1 indicates that the two vectors are inversely correlated.

[0141] The rows of the M-RDR table correspond to a set of neighboring nodes that are selected for relaying the data packet. In particular, the rows can be represented as vectors, where each non-zero entry of the rows of the M-RDR table is shown as a non-zero entry in the corresponding vector format. Thus, the cosine similarity between any two different rows of the M-RDR table can be calculated based on the vector representation of the rows (i.e., the set of neighbors with respect to the relays). The cosine similarity can be used to obtain an estimate of how different the relaying of the data packet is. For example, if the cosine similarity of the two rows / vectors is close to s=1, it can signal that the relaying has not changed sufficiently and that the node should reset one or more subsystem parameters during the RDR generation stage. This measure can be done in real time while building the RDR table to improve the relaying performance. In some implementations, the measure of similarity can be obtained before calculating the decorrelation metric value for the first mapping, i.e., during or immediately after the generation of the first mapping.

[0142] Thus, in response to determining that the similarity measure satisfies a second condition (e.g., s=1, or at least falls outside a predetermined range of values), a third mapping (different from the first mapping) of the first data packets of the set to one or more neighboring nodes may be generated.

[0143] Reference is now made to Figure 16, which illustrates in block diagram form a simplified example of a participating node 1600. The node 1600 includes a processor 1602, which may include one or more microprocessors, application specific integrated chips (ASICs), microcontrollers, or similar computer processing devices. The node 1600 further includes a memory 1604, which may include persistent and non-persistent memory for storing values, variables, and possibly processor-executable program instructions, and a network interface 1606 for providing network connectivity over a wired or wireless network.

[0144] The node 1600 includes a processor-executable blockchain application 1608 that includes processor-executable instructions that, when executed, cause the processor 1602 to perform one or more functions or operations described herein.

[0145] It will be understood that any modules, routines, processes, threads, applications, or other software components implementing the apparatus and processes described herein, as well as the methods / processes described for configuring a blockchain node, may be implemented using standard computer programming techniques and languages, and this application is not limited to any particular processor, computer language, computer programming conventions, data structures, or other such implementation details.

[0146] It should be noted that the above-described implementations are illustrative rather than limiting of the invention, and that those skilled in the art will be able to design many alternative implementations without departing from the scope of the invention as defined by the appended claims. In the claims, any reference signs placed between parentheses shall not be construed as limiting the scope of the claims. The words "comprises" and "comprises" and the like do not exclude the presence of elements or steps other than those recited in any claim or in the specification as a whole. In this application, "comprises" means "comprises or consists of" and "comprising" means "comprises or consists of". A single reference to an element does not exclude the reference to a plurality of such elements and vice versa. The invention may be realized by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain items are recited in mutually different dependent claims does not indicate that a combination of these items cannot be used to advantage.

Claims

1. A computer-implemented method for propagating data packets in a network of nodes, comprising: collecting a first set of data packets during a first time period, said set including at least one data packet received from one or more first nodes in said network; generating a first mapping that designates the first data packet of the set for relay to one or more neighboring nodes connected to the node; calculating a decorrelation metric value for the first mapping; determining whether the decorrelation metric value for the first mapping satisfies a first condition; transmitting the first data packet of the set to an adjacent node in accordance with the first mapping in response to determining that the uncorrelated metric value satisfies the first condition; The method includes:

2. The first mapping indicates an expected time for relaying each first data packet of the set to an adjacent node, and generating the first mapping comprises: a first sub-mapping that designates any two data packets having the same source for relay to different subsets of the one or more neighboring nodes; and a second sub-mapping specifying different expected times of relay for any two data packets received by or generated at said node from said one or more first nodes within the same time interval; The method of claim 1 , further comprising determining at least one of:

3. For any two different first data packets of the set: obtaining a similarity measure between neighbor sets for which each of the two first data packets is specified by the first mapping; and generating a second mapping of the first data packet of the set to the one or more neighboring nodes in response to determining that the similarity measure satisfies a second condition; The method of claim 1 or 2, further comprising:

4. The method of claim 3 , wherein the neighbor sets are representable as vectors, and the similarity measure comprises a cosine similarity between the vector representations of the neighbor sets.

5. The method of claim 3 or 4, wherein the similarity measure between the neighbor sets is obtained prior to calculating the decorrelation metric value of the first mapping.

6. The step of determining whether the first mapping satisfies the first condition includes: The uncorrelated metric value S(R,n) for the first mapping and the first uncorrelated metric value S nc (R, n), wherein the decorrelation metric value for the first mapping is calculated based on a total number of first data packets collected during the first time period and a number of first data packets assigned to each of the one or more neighboring nodes by the first mapping; and comparing the calculated difference with a predetermined difference threshold; The method of any one of claims 1 to 5, comprising:

7. The decorrelation metric value for the first mapping is [0018] It is calculated as c i A method according to any one of claims 1 to 6, wherein n represents the number of first data packets assigned to each adjacent node by the first mapping, n represents a total number of the one or more adjacent nodes, and R represents a total number of first data packets collected during the first period.

8. The first uncorrelated metric value is [0019] 7. The method of claim 6, wherein n represents a total number of the one or more neighboring nodes and R represents a total number of first data packets collected during the first time period.

9. a number of iterations for generating a new mapping of the first data packet of the set for relay to the one or more neighboring nodes; a current decorrelated metric value associated with the lowest calculated difference from the first decorrelated metric value; and a current mapping associated with the current decorrelated metric value; 9. The method of claim 6, further comprising the step of storing in a database.

10. determining whether the number of iterations is equal to a predetermined number; and in response to determining that the number of iterations is equal to the predetermined number, transmitting the first data packet of the set to an adjacent node in accordance with the current mapping; 10. The method of claim 9 further comprising:

11. A computer-implemented system for carrying out the method of any one of claims 1-10.

12. A non-transitory computer readable storage medium storing instructions for adapting a computer system to perform the method of any one of claims 1-10.

Citation Information

Patent Citations

  • Agile network protocol for secure communication with guaranteed system availability

    JP2002529779A

  • Data transfer device, data transfer method, and data transfer program

    JP2006228201A

  • Data processing system and data order guarantee method

    JP2012129857A