Many P2P blockchain networks today replicate all the data (transaction data, algorithms, softwares, etc) in all the nodes of the network. Bitcoin, Ethereum and many more have achieve this exceptional feet but have sacrificed scalability & speed.
However, today there are billions of transactions happening every second around the world (payments, IoT, supply chain, etc). Given the universal constraints both material and physical, it is not possible to store all these transactions in all the nodes of the network.
Hence Uniris Network has provides a solution to this problem by storing data in a randomly elected small subset of nodes instead of all the nodes in the network.
“Randomness brings order in the P2P Network and hence ensures constant Entropy”
To ensure Randomness
The storage nodes have to be elected and the election associated with a transaction chain is performed each time the network is modified (ex. each time a node is disconnected or joined in the network) and each time a new transaction is performed on the network. This election computation is performed in a few milliseconds, allows each node to autonomously know whether or not to download and store a transaction chain or to no longer store it .
To perform this election, the 'Rotating Heuristic Storage Algorithm' is used and is based on:
- The transaction’s address (the transactions chains being stored on the address associated with the last transaction in the chain)
- A stable element known only by the authorized storage nodes called 'Storage Nonce' (we will discuss this later)
- The first public key (genesis public key) of each node’s chain (the first public key of the nodes remains the same)
The computation of the Storage Rotating Keys ensures randomness and works as follows:
The objective of the storage rotating key algorithm is to allow nodes to obtain in an autonomous and common way, an ordered and reproducible list of storage nodes from any transaction’s address.
The figure below shows schematically how the algorithms work to obtain a filtered and ordered list of storage nodes/pool:
The steps that follow the election are
- The nodes calculate the rotating keys and sort them
- The nodes are first filtered based on P2P availability (0 => offline, 1 => online)
- The nodes are then filtered based on network and geographical coordinates (read more about network and geographical patches) and simultaneously the cumulative average availability of the selected nodes are calculated until a minimum requirement (as in the fig above).
The storage nodes of a transaction chain are equally distributed throughout the globe so that no group of nodes from a single geographic area could obstruct the P2P network’s data availability/consistency/security. Plus a high availability of storage nodes are maintained by considering nodes’ average availability.
To ensure Data Consistency
To ensure maximum data consistency, availability, security of data, the list is refined based on the constraints imposed by the 'Heuristic Storage Algorithms' from the consolidated views of the nodes consisting of:
- Information from beacon 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.
- For example: geographical location information from beacon chains allows continuity of service even in the event of natural disasters in one or more geographical areas.
- For example: the average availability of nodes information from beacon chains in a given area allows the election of storage nodes by its availability. The goal will be, to have a cumulative availability (each geographical area requiring a minimum cumulative availability D = 1+9 > 8…).
- Constraints added by the prediction module:
To enable a decentralized network to survive for decades or centuries, it must be able to adapt to threats and react accordingly. For this, the Uniris network uses the Prediction
- For example the prediction module adapts the constraints on the number of replications according to the number of connected nodes of the network or in weighting a geographical area according to the average availability of the nodes. All behaviors are pre-established directly in the algorithms.
- For example the prediction module has the ability to link patterns/samples and futures behaviour, hence potentially predict a future state of the network. For example, to detect that an operator in a given country updates the firmware of his boxes monthly and that the network will be cut for all associated nodes during this period, that the electricity network for a given region of the world is cut during storms or even before an attempt to attack the nodes in charge of the validation will tend to respond less quickly to other transactions. The objective is to guarantee at all times the availability of data.
- Update of network chains replicated on all nodes:
Network Chains are identical to other transactions chains but use different validation and replication algorithms. This includes, but not limited to, election of validation and storage nodes, updating of node keys, Shared Secrets, Interpreters, Prediction Module, Beacon Chain management, etc. Network transactions chains are replicated on all nodes.
For every fundamental improvement in the validation/storage algorithms (validation/storage network chains) the data consistency is further enhanced.
To ensure good renumeration to Storage Nodes
Uniris Network ensures that all the Storage Nodes of a Transaction Chain are renumerated (by proving that they have stored the Transaction Chain).
How exactly? When a transaction has arrived for validation the elected nodes (coordinators and cross validation nodes) get all the data necessary for validation from a few closest storage nodes and parallelly the remaining storage nodes are asked for a proof of storage of the transaction chain by asking hash(transaction chain). Once the context of the transaction has been rebuilt, the cross-validation nodes communicate to the coordinating node the list of storage nodes used to collect the data and their views on the availability of the validation and storage nodes.
(That said, if any storage node which is supposed to store a Transaction Chain does not store/provide the Transaction Chain when queried then the storage node will be penalized - This penalized mechanism will be discussed in the next articles)
Once the transaction is validated, the storage nodes will get 50% of the transaction fees (these storage nodes potentially become the previous transaction’s storage nodes)
In Bitcoin network to get renumerated there needs to be top notch equipment and not all nodes are renumerated, hence a lot of used potential in the network is unpaid. In Uniris network all nodes are paid depending on the number of transactions chains stored.