Defining The Internet Computer
Launched by DFINITY in 2020, the Internet Computer (IC) is a revolutionary blockchain network that aims to provide a highly scalable, web-speed platform for smart contract development and decentralized applications. Its overarching goal is to allow developers to create software without the censorship and control that now accompany most large platforms.
While established platforms can provide benefits, the privatization of the internet has also smothered innovation, as well as misappropriated user privacy and data. DFINITY’s ambitious solution therefore leverages blockchain technology in order to create a truly open ecosystem.
This is radical because it returns what is now managed by private tech giants to developers - the freedom to build, and own what you build, over the internet. It also importantly addresses ‘platform risk,’ which is the risk that a host platform will withhold its API, or demand a cut of the revenue.
The Internet Computer therefore positions itself not just as an ‘internet of blockchains,’ but as an open-access internet. In addition to DeFi platforms, it also encourages the development of decentralized websites and even social media applications. Examples of this include Fleek, a website-building platform, and DSCVR, a decentralized version of Reddit.
In order to accomplish this purpose, the Internet Computer introduces several pivotal new technological components: Chain Key Cryptography, the Network Nervous System (NNS), a new consensus model, and Non-Interactive Distributed Key Generation (NI-DKG).
The IC also boasts a very unique structure, comprised of four building blocks: distributed data centers, nodes, subnets, and canisters. Let’s take a closer look!
Internet Computer Architecture
Before we get into the innovative technology DFINITY introduced with the Internet Computer Protocol, let’s unpack the architecture.
The network consists of a hierarchy of four elements, the first of which are independent data centers distributed across the world. These centers host specialized hardware nodes, which in turn combine to form subnets. Subnets are essentially blockchains of the IC, which host smart contracts known as canisters.
These canisters are key to the Internet Computer’s function, as they allow developers to build easily on the protocol. They are highly scalable, and can also interact with one another.
Canisters are made up of code and state, meaning that they store both the code for the application as well as the state of the ecosystem on which it runs. Developers can write in programming languages like Rust or DFINITY’s own language, Motoko. As a result, canisters can be likened to smart contracts on Ethereum, except with enhanced performance capabilities.
Now we know the IC’s four structural building blocks, let’s look at how the technology works.
Internet Computer Technology
The Internet Computer depends on four pivotal innovations to work: Chain Key Cryptography, the Network Nervous System (NNS), a unique consensus model, and Non-Interactive Distributed Key Generation (NI-DKG). Let’s break this down.
Chain Key Cryptography
Chain Key Cryptography is made up of a set of cryptographic protocols that direct the nodes on the Internet Computer Protocol (ICP - not to be confused with the protocol’s native token, also ICP). This was a major breakthrough for the Internet Computer, most notably because it allows the network to use a single network-wide public key. And because this public key is only 48-bytes, devices as small as smartwatches and phones can verify data. Why is this so important?
Thanks to this technology, the IC can validate transactions in 1-2 seconds. While this is a formidable feat, it isn’t quite web-speed - think about how quickly your internet browser works. In order to improve on speed, the IC divides smart contract function execution into two distinct message types: ‘update calls’ and ‘query calls.’
Update calls take the aforementioned 1-2 seconds, while query calls take milliseconds. This is because queries do not alter the state of the canister, whereas updates do. An example of this could be customized search results (query), versus publishing a post or comment online (update).
When someone uses an app on the IC, the ICP sends a message to the canister. The canister is then executed based on the content of the message, and a message is delivered back to the user. Canisters are run on several nodes (to prevent single points of failure) that must all collectively sign the message. They do this with their individual shares of the private key that correspond to their subnet’s public key. The subnet public key then helps verify the signature, which is signed in turn by the network public key.
Chain Key Cryptography also enables the addition of new nodes when creating new subnets, the quick replacement of defective nodes, and the smooth upgrading of the ICP.
Network Nervous System (NNS)
True to its name, the Network Nervous System is the open governance system that manages the entire network - overseeing upgrades, setting economic parameters, and rearranging/ forming subnets. Though the NNS runs the network, anyone can put forward proposals. They do this through the use of neurons, which are accounts created by staking the protocol’s native token, ICP. To avoid an oversaturation of proposals, the NNS exacts a fee on neurons who submit proposals that are rejected.
Neurons are used both to submit proposals as well as to vote on incoming proposals. After creating a neuron by staking ICP, the locked ICP can only be released by disbursing the neuron. Participants are incentivized to create neurons because they receive rewards by voting on proposals. They are also incentivized to participate in this long-term, as the ICP rewards depend not only on the amount staked, but also the neuron’s age, voting activity, and the ‘dissolve delay.’
Dissolve delay refers to the amount of time a neuron takes to dissolve after being put into ‘dissolve mode.’ Once this dissolve delay fully elapses, the neuron owner can unlock the ICP balance. Every neuron has a pre-set dissolve delay (six months), which can be toggled exclusively upward to a maximum of eight years. This is rewarded by the NNS, as higher dissolve delays correspond to higher voting rewards.
Because of the high number of new proposals, neurons can also adopt a type of delegative democracy that allows them to ‘follow’ other neurons. Remember, the more proposals neuron owners vote on, the higher their rewards. The follow feature allows them to automatically follow the votes of the majority within a group of trusted neurons. This allows participants to leverage the expertise of other neuron owners, or simply ones with more time to examine proposals.
The Internet Computer achieves consensus through a unique system of queries and updates, using Chain Key Cryptography. It is also a BFT (Byzantine Fault Tolerant) system, meaning that even if some nodes are faulty or malicious, a majority can still execute the software.
The nodes distributed across different data centers are referred to as replicas. A method known as Threshold Relay delegates the entire consensus process to a random selection of replicas, called a committee. This committee is updated routinely, boosting the IC’s scalability and efficiency.
The consensus protocol consists of four layers: the identity layer, random beacon layer, blockchain layer, and notary layer. Because the identity layer requires replicas to register via a stake deposit (with a lock-up period), the ICP consensus model is considered a variation of Proof-of-Stake.
These layers host four important processes that enable consensus: block making, notarization, random beacon, and finalization.
Block making refers to the production of new blocks on the network. First, a replica collects messages received from users and from other canisters, and then groups them into a new block. Next, it broadcasts this new block proposal to the wider network. To avoid malicious behavior, multiple replicas must propose blocks.
Proposed blocks may still be invalid however, hence the need for notarization. If a replica sees a proposed block at height X that is valid, it can sign it using its ‘notarization share.’ This is broadcasted to the network, which incites other replicas to add their own notarization shares. Once a sufficient number of replicas endorse the new block, the shares are combined to make a single notarization. Replicas are also able to sign multiple valid blocks at height X, which means there can be several notarized blocks at one height.
This creates a problem, as there are now multiple notarized blocks for a given height. To solve this, the Internet Computer includes a random beacon. The random beacon is essentially a Verifiable Random Function (VRF) - a random value that is generated jointly by replicas every round.
Once a round is finished, the next random beacon must be created. A replica can start this process by signing the previous random beacon value with a specialized signature, known as a threshold BLS signature, which creates a new random beacon share. These signatures are both unique (any replica can help create the random value) and unpredictable, thanks to VRF. If enough replicas add their random beacon shares, a full threshold signature is created - this becomes the next random beacon.
The random beacon is also used to rank block makers in each round, which helps to further reduce an excess of notarized blocks. It does this by prioritizing the blocks of higher ranked block makers. The ranking system also includes a timer, creating a time limit for the higher ranked block makers to propose a new block.
A finalization mechanism is put in place to expedite consensus, through the use of signatures called finalization shares. These differ from notarization shares in that they signify an exclusive signature - a replica signs a block with a finalization share to indicate that it is the only block it has signed at a given height.
Once enough replicas create finalization shares for a specific block, a full finalization share is created. This in turn signifies that it is the only notarized block at that height - but why?
At least 75% must agree on a finalized block. Assuming that at least 50% are honest, the 50% remaining cannot reach the finalization threshold - proving that there are no other notarized blocks at that height. Because of this mechanism, block finalization can occur in under a second.
Non-Interactive Distributed Key Generation (NI-DKG)
As we’ve seen, the ICP uses threshold BLS signatures to allow nodes to achieve consensus if they meet the required threshold. However, nodes in a subnet are subject to change, which means the threshold signers will also change. This brings up the issue of needing to redistribute new public keys that correspond to the subnet.
NI-DKG solves this problem by using a static public key for each subnet, and introducing a non-interactive key sharing system. In this system, each of the old nodes must broadcast a message to the new nodes. This is secured through the use of non-interactive zero-knowledge proofs, as well as an encryption feature known as forward secrecy.
Even if the nodes of a subnet do not change for a prolonged period of time, they still reshare the secret key amongst themselves as a form of proactive security. What this means is that nodes periodically get new threshold shares of the signing key. This system was put in place to prevent bad actors from being able to discover secret key shares. After receiving their new key shares, nodes delete the old ones.
ICP Token Use
ICP has three primary roles: governance, network rewards, and cycles. We’ve already seen that ICP becomes a governance token when staked in neurons. ICP is then used to reward neuron owners when they vote on proposals, as well as nodes for securing the network (‘compute rewards’).
The ICP token is also converted into a stablecoin, called Cycles, in order to fuel the computation done by canisters. Unlike the first two roles, this process is deflationary and reduces the ICP in circulation. And interestingly, it is not the users that pay these gas fees (like on Ethereum), but the developers - making it more similar to the Internet.
The Internet Computer has had a busy and productive past two years, starting with the launch of its first milestone, Copper, in November 2019. Various parts of its technology (distributed data centers, NNS, etc.) have been released over this period. Its most recent milestone, the Mercury mainnet launch, included the official release of the IC’s source code.
With a growing team and ecosystem of dApps, not to mention an attractive Developer Grant Program, the IC is really taking off. Nevertheless, it has exceedingly ambitious goals, including the resolution of some of the internet’s largest issues. Whether it will indeed refashion the internet of today remains to be seen.