Limitless Scaling
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.