This article aims to help you understand the issues of Data Availability in P2P networks and explain the Uniris implementation details (i.e. Patches) that help address these issues. P2P network is the key component of all blockchain systems like Bitcoin and Uniris. P2P technology has the potential to alleviate shortcomings of centralized systems by utilizing the rich resources of end devices (like nodes). Hence the availability of data is the key to any P2P network
(the article is divided into 2 parts, the 1st part gives an overall view of Uniris Patches and the 2nd part provides the details related to the algorithm and calculation of patches).
Let us first understand the basic concepts about Uniris so that you enjoy reading the two parts of this article.
- Transactions Chains: Instead of chained blocks of transactions (blockchain), each block is reduced to its atomic form, i.e. each block contains only one transaction and each transaction will be chained in its own chain.
For example, Alice has her own Transaction Chain and Bob has his own Transaction Chain and these transaction chains are independent of each other.
- Beacons Chains: Since no node has the physical ability to know the status of each transaction in an unlimited network, the Uniris network uses a set of specific transaction chains called Beacons Chains which at all times provide the entire status of the network using a pure decentralized way.
- During the Uniris Transaction Validation, the Consensus is achieved by unpredictable yet repeatable election of a Coordinator Node and multiple Cross Validation Nodes who verify the transaction. These nodes are elected in such a way that they belong to at least 3 different geographical patches. This article will subsequently define how that ensures enough geographic distribution.
- Similarly, during Transaction Chain Replication the storage nodes are also equally distributed throughout the globe so that no group of nodes from a single geographic area could obstruct the P2P network’s data availability. Just like Transaction Validation, the Transaction Chain Replication also ensures a minimum of 3 different geographical patches.
To achieve equal distribution of qualified data (Transactions Chains and Beacons Chains) throughout the globe and, to ensure high availability and consistency of all the qualified data, the approximate knowledge of the location of nodes becomes essential. This further facilitates in the distribution of nodes into groups and groups into patches.
The patches are always created to ensure equal distribution of data throughout the globe thereby providing the best distribution of qualified data in terms of geography and replication availability hence ensuring maximum availability of the data.
What are Patches?
Uniris Patches are essentially a grouping of nodes in the P2P network based on where they are located in the world and every node is given a relevant Patch ID. Hence the coordinates of the nodes need to be defined which in-turn define the Patches for the nodes. Every node in the Uniris P2P network has 2 types of coordinates.
1. Contextualized Geographical Coordinates of a Node: The contextualization of geographical coordinates of node is carried out on the basis of the deduced GeoIP or announced coordinates.
- Geographical coordinates of a node are then represented by 3 digits. For example, from the above Fig: Uniris Patches, the second node's geographical coordinates are 'D10', where the 1st digit 'D' confirms that the node is in US, the 2nd digit '1' confirms that the node is in New York and the 3rd digit '0' confirms that the node is in between Buffalo and Rochester. This 3-digit notation for the geographic coordinates is used in the Uniris heuristic algorithms for validation election and storage replication.
- These coordinates are realized/calculated at the time of update of the node's chain and by the nodes in charge of the validation of this update.
- The Geographic Coordinates of nodes are renewed automatically weekly or at each change of IP address.
Geographical Coordinates map the nodes from country to state to city so that the approximate location helps the entire P2P network to prepare sub-second countermeasures/responses to any geo-political and natural disasters.
2. Network Coordinates of a Node: The network coordinates of a node are calculated from its latency (i.e. the minimum time to respond to a transaction) and its throughput.
- Network coordinates are computed globally and daily through Beacon Chains and this view is used to choose the best and fastest replication path.
- With network coordinates, the download will be performed from the nearest nodes (from network point of view) during the validation/replication process. Thus, avoiding transfers that will cross the planet even though the data is already on a nearby node.
- Geographical Coordinates are further verified by cross-checking with Network Coordinates for better reliability of geographic area of the nodes.
The network coordinates of nodes are calculated using a Geo-Location Heuristic Algorithm which is inspired from the distribution of stars in the galaxy. Part 2 of this article provides an in-depth derivation of network coordinates.
More info: Part 2.