Difference between revisions of "Decentralization in ICP"

From Internet Computer Wiki
Jump to: navigation, search
 
(6 intermediate revisions by 2 users not shown)
Line 10: Line 10:
 
All blockchains rely on a consensus protocol to come to agreement on the state of the network. The higher the decentralization of a network, the more individual actors that need to coordinate to come to an agreement. In a centralized or low-decentralization system, one or a handful of entities would be sufficient to establish the state of the system.  
 
All blockchains rely on a consensus protocol to come to agreement on the state of the network. The higher the decentralization of a network, the more individual actors that need to coordinate to come to an agreement. In a centralized or low-decentralization system, one or a handful of entities would be sufficient to establish the state of the system.  
  
Vitalik Buterin described [https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274 decentralization] to be composed three independent axis:
+
Vitalik Buterin described [https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274 decentralization] along three independent axes:
  
 
1. '''“Architectural (de)centralization''' — how many physical computers is a system made up of? How many of those computers can it tolerate breaking down at any single time?
 
1. '''“Architectural (de)centralization''' — how many physical computers is a system made up of? How many of those computers can it tolerate breaking down at any single time?
Line 18: Line 18:
 
3. '''Logical (de)centralization''' — does the interface and data structures that the system presents and maintains look more like a single monolithic object, or an amorphous swarm? One simple heuristic is: if you cut the system in half, including both providers and users, will both halves continue to fully operate as independent units?”
 
3. '''Logical (de)centralization''' — does the interface and data structures that the system presents and maintains look more like a single monolithic object, or an amorphous swarm? One simple heuristic is: if you cut the system in half, including both providers and users, will both halves continue to fully operate as independent units?”
  
Buterin described  blockchains as being '''architecturally decentralized''' (many computers), '''politically decentralized''' (many entities), but '''logically centralized''' (typically, one consensus protocol).
+
Buterin described  blockchains as being '''architecturally decentralized''' (many computers), '''politically decentralized''' (many entities), but '''logically centralized''' (one commonly agreed state).
  
 
This article focuses on the architectural and political decentralization of ICP.
 
This article focuses on the architectural and political decentralization of ICP.
Line 26: Line 26:
 
===Benefits of decentralization===
 
===Benefits of decentralization===
  
Decentralization is key to make web3 dapps run in a trustless manner. Vitalik Buterin broke it down into three core benefits one gets from decentralized computer networks like blockchains:
+
Decentralization is key to making web3 dapps run in a trustless manner. Vitalik Buterin broke it down into three core benefits one gets from decentralized computer networks like blockchains:
  
 
1. '''Fault tolerance''' — decentralized systems are less likely to fail accidentally because they rely on many separate components that are not likely.
 
1. '''Fault tolerance''' — decentralized systems are less likely to fail accidentally because they rely on many separate components that are not likely.
Line 63: Line 63:
 
'''Changes that remove/add single points of failures should count more''' -  For example, a change in NC from 1 to 2 in a particular subsystem is very important, as it means that there is no longer a single point of failure. That change is much more impactful than a change in NC from 10 to 11, but a weighted average will nevertheless appreciate both changes equally. This is why overall decentralization in ICP is best measured as a ''weighted average of logarithms of NCs''.
 
'''Changes that remove/add single points of failures should count more''' -  For example, a change in NC from 1 to 2 in a particular subsystem is very important, as it means that there is no longer a single point of failure. That change is much more impactful than a change in NC from 10 to 11, but a weighted average will nevertheless appreciate both changes equally. This is why overall decentralization in ICP is best measured as a ''weighted average of logarithms of NCs''.
  
Conclusion: Best way to summarize overall decentralization in ICP (across all subsystems) is best measured as a ''weighted average of logarithms of NCs.''
+
Conclusion: Summary of overall decentralization in ICP (across all subsystems) is measured as a ''weighted average of logarithms of NCs.''
  
 
===ICP Subsystems===
 
===ICP Subsystems===
Line 74: Line 74:
 
* See [[Decentralization in ICP: Critical Dapps on the IC]]
 
* See [[Decentralization in ICP: Critical Dapps on the IC]]
  
'''2. Weighted average of logs of NCs: TBD
+
'''2. Protocol Governance'''
'''Protocol Governance
 
 
* This is controlled by the NNS DAO
 
* This is controlled by the NNS DAO
 
* The code running in the nodes
 
* The code running in the nodes
 
* See [[Decentralization in ICP: Protocol Governance]]
 
* See [[Decentralization in ICP: Protocol Governance]]
* See [[Weighted average of logs of NCs in Protocol]]
 
  
 
'''3. Infrastructure Layer '''
 
'''3. Infrastructure Layer '''
Line 85: Line 83:
 
* This is the physical layer of ICP (how & which nodes participate in the network)
 
* This is the physical layer of ICP (how & which nodes participate in the network)
 
* See [[Decentralization in ICP: Infrastructure Governance]]
 
* See [[Decentralization in ICP: Infrastructure Governance]]
* See [[Weighted average of logs of NCs in infrastructure]]
+
 
 +
To best understand current state of ICP topology and node diversification, the following forum posts lay the most information:
 +
 
 +
1. [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 IC node diversification (Part 1)]
 +
 
 +
2. [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 IC node diversification (Part 2)]
  
 
==See Also==
 
==See Also==
 +
 +
* [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 IC node diversification (Part 1)]
 +
* [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 IC node diversification (Part 2)]
 
* [[Decentralization in ICP: Critical Dapps on the IC]]
 
* [[Decentralization in ICP: Critical Dapps on the IC]]
 
* [[Decentralization in ICP: Protocol Governance]]
 
* [[Decentralization in ICP: Protocol Governance]]
* [[Weighted average of logs of NCs in Protocol]]
 
 
* [[Decentralization in ICP: Infrastructure Governance]]
 
* [[Decentralization in ICP: Infrastructure Governance]]
* [[Weighted average of logs of NCs in infrastructure]]
 

Latest revision as of 18:28, 12 January 2024

Summary

As a blockchain protocol, decentralization is very important to the design and implementation of ICP. This article explains the design intent and the current state of the world when it comes to ICP decentralization.

What is Decentralization

In the context of blockchains, “decentralization” is defined by Wikipedia as:

“Decentralization [in blockchains] refers to the transfer of control and decision-making from a centralized entity (individual, organization, or group thereof) to a distributed network. Decentralized networks strive to reduce the level of trust that participants must place in one another, and deter their ability to exert authority or control over one another in ways that degrade the functionality of the network.”

All blockchains rely on a consensus protocol to come to agreement on the state of the network. The higher the decentralization of a network, the more individual actors that need to coordinate to come to an agreement. In a centralized or low-decentralization system, one or a handful of entities would be sufficient to establish the state of the system.

Vitalik Buterin described decentralization along three independent axes:

1. “Architectural (de)centralization — how many physical computers is a system made up of? How many of those computers can it tolerate breaking down at any single time?

2. Political (de)centralization — how many individuals or organizations ultimately control the computers that the system is made up of?

3. Logical (de)centralization — does the interface and data structures that the system presents and maintains look more like a single monolithic object, or an amorphous swarm? One simple heuristic is: if you cut the system in half, including both providers and users, will both halves continue to fully operate as independent units?”

Buterin described blockchains as being architecturally decentralized (many computers), politically decentralized (many entities), but logically centralized (one commonly agreed state).

This article focuses on the architectural and political decentralization of ICP.

Why Decentralization Matters in Web3

Benefits of decentralization

Decentralization is key to making web3 dapps run in a trustless manner. Vitalik Buterin broke it down into three core benefits one gets from decentralized computer networks like blockchains:

1. Fault tolerance — decentralized systems are less likely to fail accidentally because they rely on many separate components that are not likely.

2. Attack resistance — decentralized systems are more expensive to attack and destroy or manipulate because they lack sensitive central points that can be attacked at much lower cost than the economic size of the surrounding system.

3. Collusion resistance — it is much harder for participants in decentralized systems to collude to act in ways that benefit them at the expense of other participants, whereas the leaderships of corporations and governments collude in ways that benefit themselves but harm less well-coordinated citizens, customers, employees and the general public all the time.

For token holders, smart contract developers, or dapp users this means a more decentralized network would be:

  • More resilient to computer or systems faults
  • More resilient to attacks by malicious actors
  • More resistant to collusion by entities within the network to harm the network

Measuring Decentralization

How to measure decentralization

To help measure and improve decentralization, a common index used in the blockchain world is the Nakamoto Coefficient:

“The basic idea is to (a) enumerate the essential subsystems of a decentralized system, (b) determine how many entities one would need to collude or be compromised to control each subsystem, and (c) then use the minimum of these as a measure of the effective decentralization of the system. The higher the value of this minimum Nakamoto coefficient, the more decentralized the system is.” In practice, determining the NC (Nakamoto Coefficient) to particular chains is more art than science, but it helps provide a good way to identify bottlenecks, the growth or decentralization within a blockchain. Please note: comparing NCs across blockchains can be very imprecise and akin to comparing “apples to oranges”.

Using Nakamoto Coefficients to measure ICP Decentralization

To measure decentralization, a common pattern in blockchains is:

1. Identify the subsystems of a blockchain 2. For each subsystem, determine the subsystem’s NC (the # of entities necessary to compromise to control it) 3. The subsystem with the minimum NC represents the best holistic measure of decentralization

In order to summarize overall decentralization of ICP, there are a few points worth considering:

  • Minimum of NCs may not reflect real risk - For the purposes of ICP, the minimum of subsystems may not be the proper metric to assess risk. For instance, the table of NCs for ICP infrastructure has a NC for the continent node providers are in but it's unlikely that the entire continent would collude to make damage. In short: the risk of NPs colluding is larger than the risk from nodes being in the same continent. This is why overall decentralization in ICP is best measured as a weighted average of NCs.

Changes that remove/add single points of failures should count more - For example, a change in NC from 1 to 2 in a particular subsystem is very important, as it means that there is no longer a single point of failure. That change is much more impactful than a change in NC from 10 to 11, but a weighted average will nevertheless appreciate both changes equally. This is why overall decentralization in ICP is best measured as a weighted average of logarithms of NCs.

Conclusion: Summary of overall decentralization in ICP (across all subsystems) is measured as a weighted average of logarithms of NCs.

ICP Subsystems

ICP has multiple levels of subsystems and decentralization. Using the metaphor of a stack, they are (from top to bottom):

1. “Common Good” dapps on the IC

2. Protocol Governance

3. Infrastructure Layer

To best understand current state of ICP topology and node diversification, the following forum posts lay the most information:

1. IC node diversification (Part 1)

2. IC node diversification (Part 2)

See Also