Difference between revisions of "Limitless Scaling"

From Internet Computer Wiki
Jump to: navigation, search
(Removed sections on Finality and Consensus. Doesn't seem like this belongs here.)
Line 4: Line 4:
  
 
=== Subnet Architecture ===
 
=== Subnet Architecture ===
The Internet Computer Protocol is running on standardized node hardware in independent data centers around the world. The [[Network Nervous System]] governance system, scales the network by combining nodes from different data centers to spin up new subnet blockchains.
 
  
The Internet Computer’s partitioning into subnet blockchains is what allows the network to infinitely scale. Each subnet blockchain is capable of processing update and query calls independently from other subnets. This means that the entire network can easily be scaled by simply adding more subnets to the network. For update calls that need to be processed on every node, this method of scaling the network can ensure that more update calls are processed per second. The Internet Computer is capable of adding hundreds of new subnets via the NNS.
+
The Internet Computer's scalability is enabled by sharding canisters and their state into subnets. Each subnet runs its own instance of state machine replication and can therefore process update and query calls independently from other subnets.  
 +
While running independently, it is still possible for canister on different subnetworks to communicate with each other by means of Xnet communication.
  
For query calls, however, scalability can simply be achieved by adding more nodes to a subnet because these calls are processed locally on one node. The network is capable of adding thousands of new nodes in its current state. The addition of more nodes and subnets to the network ensures web speed and infinite scalability.
+
It's therefore possible to scale out by adding more IC nodes to the Internet Computer.
 +
* If new nodes are added as *new subnetworks*, more update calls be executed per time unit since the new subnetwork can process update calls independently from the rest of the system.
 +
* If new nodes are added to *existing subnetworks*, more queries can be executed per time unit. That is because query call, in contrast to update calls, are executed on individual machines, rather than replicated on all nodes of a subnetwork as with update calls.
  
=== Finality and Consensus===
+
However, the finalization rate of the consensus layer and therefor the rate of update calls per second, might be negatively affected by a larger number of nodes in a subnetwork. That is because more data has to be exchanged between the larger number of nodes before consensus on the order of input messages can be reached.
The Internet Computer’s novel consensus mechanism also plays a key role in the network’s ability to scale. [https://assets.ctfassets.net/ywqk17d3hsnp/1Gutwfrd1lMgiUBJZGCdUG/d3ea7730aba0a4b793741681463239f5/podc-2022-cr.pdf Internet Computer Consensus] (ICC) consists of four different layers that create candidate blocks, identify valid blocks, rank block makers, and then finalize the agreed upon blocks. The blockchain’s asynchronous finalization mechanism is impressively fast, ensuring that the finality for new blocks is achieved in under two seconds on average on the NNS subnet, and 1 second on dapp subnets.
 
  
This contributes to the IC’s resilience. Additionally, unlike legacy blockchains, the IC has no nodes hosted by cloud providers which helps to ensure that the network is tamper-proof, secure, and stable.
+
Further, having more subnetworks tends to decrease locality: the probability of needing to communicate across subnetworks increases.
 +
 
 +
Consequently, the IC also must scale up by increasing performance on individual IC node machines. Example are scaling the IC runtime to efficiently utilize resources such as CPU and memory and achieving highly concurrent execution of independent canister calls.

Revision as of 08:31, 7 October 2022

The Internet Computer (IC) can scale its capacity without limit, simply by adding additional nodes to fuel new subnets. Nodes are added via the Network Nervous System (NNS) which forms new subnets almost on a weekly basis since genesis. In contrast, most other blockchains have transaction limits baked into the protocol (e.g. adding more servers to Bitcoin does not increase its transaction volume) and need cumbersome layers to address scaling.

See Internet Computer Dashboard: https://dashboard.internetcomputer.org/

Subnet Architecture

The Internet Computer's scalability is enabled by sharding canisters and their state into subnets. Each subnet runs its own instance of state machine replication and can therefore process update and query calls independently from other subnets. While running independently, it is still possible for canister on different subnetworks to communicate with each other by means of Xnet communication.

It's therefore possible to scale out by adding more IC nodes to the Internet Computer.

  • If new nodes are added as *new subnetworks*, more update calls be executed per time unit since the new subnetwork can process update calls independently from the rest of the system.
  • If new nodes are added to *existing subnetworks*, more queries can be executed per time unit. That is because query call, in contrast to update calls, are executed on individual machines, rather than replicated on all nodes of a subnetwork as with update calls.

However, the finalization rate of the consensus layer and therefor the rate of update calls per second, might be negatively affected by a larger number of nodes in a subnetwork. That is because more data has to be exchanged between the larger number of nodes before consensus on the order of input messages can be reached.

Further, having more subnetworks tends to decrease locality: the probability of needing to communicate across subnetworks increases.

Consequently, the IC also must scale up by increasing performance on individual IC node machines. Example are scaling the IC runtime to efficiently utilize resources such as CPU and memory and achieving highly concurrent execution of independent canister calls.