Smilo explained — Smilo’s network of networks
In the ‘Smilo explained’ series we will explain the technology and choices that define the Smilo Platform in an accessible way. In this article of Smilo explained we continue where we left of last week with the Smilo BFT+ consensus method, as we’re now going to elaborate on the network itself. Smilo’s network of networks ensures a reduction in unnecessary traffic and as such increasing speed and scalability.
The Smilo network
The network is set up on Smilo’s blockchain, where full-nodes keep the network operating. To keep the network fully operational, we created ways to maintain a proper structure which we will now elaborate in further detail.
Running the Smilo Core code will automatically connect you to the network as a client and becomes a node when it is connected to enough nodes and ready to receive messages.
To make this more clear, we will explain this in a visualisation. For example, a full-node has 3 network adapters: adapter1, adapter2 and adapter3.
Full-nodes are connected to 2 node-networks (adapter1 and adapter2), clients are connected to adapter3 (each full-node has an adapter3 for clients).
There is no need to track clients on adapter3, as we only receive Transactions and Messages from clients and not blocks.
We also broadcast transactions, messages and blocks to clients, when they are received from adapter1 or adapter2 and verified.
- Received Blocks, Transactions, Messages from adapter1 are, after verification, broadcasted to adapter2 & adapter3
- Received Blocks, Transactions, Messages from adapter2 are, after verification, broadcasted to adapter1 & adapter3
- Received Transactions, Messages from adapter3 are, after verification, broadcasted to adapter1 & adapter2
Network of networks
When the Smilo Core client becomes a full node, it will connect to a network of networks.
The client connects to two node networks, consisting of 20 unique nodes. Since your own client is one of those 20, there will be 38 ((20–1)*2) unique nodes connected to each node. This is the same for every node, which will result in a network of networks.
The following rules are implemented to create structure in the network:
- Smilo’s network exists of multiple networks of nodes
- All nodes are untrusted*
- All networks are untrusted
- All nodes are connected to 2 networks
- 2 Nodes are NOT connected to the same 2 networks
- A network contains from 2 till 20 nodes
- A node unique ID is there public address, which will also be used to claim processing fees.
- A Full-node must contain 10.000 Smilo which shows that the owner has a reason to secure the network (and prevent Sibling attacks)
- A block/transaction will be validated by a network first
*Nevertheless each node can blacklist bad actors, for more information see the ‘blacklist’ chapter below.
Reducing network traffic
Since correct blocks are broadcasted from adapter1 to adapter2, and vice versa, we can reduce unnecessary traffic dramatically.
Node A receives a block (COMMIT) on adapter 1. This block is broadcasted by a speaker or broadcasted by a node which already validated the block. (in this example the block is signed by the speaker and all is well (signature, hash, transactions, etc.)) Since the block is valid, we approve the block on the adapter1 network. When >66% of the network has approved the block, Node A will broadcast to adapter2 (second network) and adapter3 (clients).
Since we already know all nodes in adapter1 have received the block, we don’t need to broadcast the block to this network. This prevents from getting the block 19 times broadcasted on adapter1 and adapter2. Reducing the network traffic > 80%.
An important feature for Smilo’s protocol is Smilo BFT+, with Smilo Proof of Resource and Time (SPoRT). Where the network that generated the last block broadcasts a challenge to their surrounding network, which will determine the next speaker (which generates the next block). We will elaborate further on SPoRT in a later edition of Smilo explained.
Since all nodes are untrusted, but the node mission is to secure the network, each node can blacklist bad Actors.
When a speaker COMMIT a new block, the block is validated by all the nodes in the network. If the hash or signature is invalid, there is a change that a node has tampered with the block. When the hash and signature are valid, we know the block is generated by the speaker and we can validate transactions. When there are invalid transactions, and the source is validated, we will add the block generating node to the blacklist.
All the nodes that approved the invalid block will be blacklisted by the node. This will result in a split, where the blacklisted nodes will become orphans.
So to summarize, the requirements for a node to be blacklisted from the network:
- The hash and signature need to be valid, but one or more transactions in the block need to be invalid (which will result in invalid blocks)
Be part of the Smilo hybrid blockchain movement!
Our resource partners,