paint-brush
An Introduction to the Internet Computer Protocol by@cryptonomicon
1,047 reads
1,047 reads

An Introduction to the Internet Computer Protocol

by CryptonomiconDecember 10th, 2021
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The Internet Computer protocol is a protocol that connects independent datacenters around the world and enables them collectively to create a giant computer that no singular datacenter controls and that anybody can use. The Internet Computer can scale its capacity without bound to host any volume of computations and store any quantity of data. And it runs at web speed—meaning that end users can tell no difference between an application running on the cloud and one running on the Internet Computer.

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - An Introduction to the Internet Computer Protocol
Cryptonomicon HackerNoon profile picture

What is the Internet Computer?

The Internet Computer protocol is a protocol that connects independent data centers around the world and enables them collectively to create a giant computer that no singular data center controls and that anybody can use. Technically, the Internet Computer is not unique in that regard: every public blockchain could be described in a similar way. What is unique about the Internet Computer, however, is that it does not face the same constraints that plague other blockchains.

Other blockchains are architected in a way that severely limits the storage and compute they can handle. This constraint makes traditional blockchains prohibitively expensive to use for any application that requires even a moderate level of storage. Indeed, it is no coincidence that up until now blockchains have been associated only with storage-light applications like DeFi.

In stark contrast, the Internet Computer can scale its capacity without bound to host any volume of computations and store any quantity of data. What’s more, it runs at web speed—meaning that end users can tell no difference between an application running on the cloud and one running on the Internet Computer. These features enable the Internet Computer to offer a decentralized global computer that competes (both in terms of price and performance) with the centralized services offered by cloud providers like AWS.

How does the Internet Computer work?

On a basic level, the Internet Computer operates in a way that is similar to other blockchains. Independent data centers around the world host specific node hardware, which communicate to achieve a consensus on what the state of the Internet Computer should be. But that is largely where the similarities stop. On the Internet Computer, the nodes are divided into groups called “subnets,” which run in parallel. Each subnet is responsible for hosting a distinct subset of software canisters.

A canister is a bundle of software code and persistent pages of memory the code runs inside. The code is in the form of WebAssembly bytecode, which can be compiled down from high-level programming languages such as Rust or Motoko (a new programing language created by dfinity). Developers can use one canister or a cluster of canisters to create any application they want: from something as simple as a bare-bones website to something as complex as enterprise software systems or mass-market internet services.

When a user interacts with an application built on the Internet Computer, a message is sent via the protocol to the canister. The Internet Computer then executes the canister on the input of that message and computes an output message that the user can query back. The design of canisters allows the Internet Computer to scale capacity ad infinitum because canisters can be deterministically run in parallel—meaning that the Internet Computer can scale by adding new subnets to the network.  

The number of and the composition of subnets can be adjusted as needed by the Network Nervous System (NNS). The NNS is a special subnet that oversees the entire Internet Computer network. In addition to changing the number and composition of subnets, the NNS is responsible for upgrading the protocol and software used by node machines, choosing which data centers participate in the network, and configuring how much must be paid by users for compute capacity. The NNS is democratically governed: holders of ICP—the Internet Computer’s governance token—can lock their tokens in so-called neurons to submit or vote on NNS proposals, which will automatically be implemented by the network if approved by voters. Voters earn ICP for participating in the network’s governance.

The lynchpin of the Internet Computer is a piece of novel cryptography called Chain Key cryptography. Chain Key cryptography is what allows the NNS to (1) add an infinite number of subnets to the network, (2) replace faulty nodes in a subnet with new ones without ever stopping, and (3) seamlessly upgrade the protocol and software used by node machines.

In short, Chain Key cryptography allows anyone to verify that interaction is correct by applying a simple “chain key” (i.e., a public key).  Every node in the network receives a secret key share that enables it to jointly sign a message with the other nodes with the requested result. The signature created can be verified using only the Internet Computer’s public key. What that means is that knowledge of a single 48-byte public key—as opposed to the entire history of the network—is sufficient for the validation of responses and the computation of the Internet Computer.

Why use the Internet Computer?

The Internet Computer’s novel features provide serious advantages over traditional platforms. Unlike cloud providers, developers who deploy their applications on the Internet Computer can plausibly guarantee that they will not revoke (or even diminish) API access. This feature allows developers to plug other applications into their own without worrying that one day their API access will be revoked. 

Also unlike cloud providers, code on the Internet Computer can be autonomous. An application built on top of the Internet Computer can run by itself, so long as the application’s canisters have enough cycles (a stablecoin used to pay for computation). This feature allows developers to plug other applications into their own without worrying that one day the application they’re relying upon will disappear if the company that built it goes bust. It also allows developers to radically reshape the business model surrounding software: developers can deploy software that is controlled entirely by token holders, instead of a singular business that maintains and runs the software.

Another key difference between the Internet Computer and traditional platforms is that the Internet Computer is secure by default. Traditional IT systems are insecure by default, so enterprises have to use firewalls, SIEM logging, and other security systems to provide some level of protection. Moreover, enterprises must constantly look for insecure code that might give hackers a portal into their back end. The Internet Computer, however, uses the mathematics of its underlying protocol to ensure that the code in canisters runs only in authorized ways.

The Internet Computer also provides serious advantages over other blockchains. The Internet Computer is able to run applications that require storage or computing. Not only does this enable new types of applications that were not previously possible on blockchains, but it also expands the capability of existing applications. Currently, because of the limitations of other blockchain networks, the frontends of virtually all blockchain applications run on centralized servers. Centralized frontends on blockchain applications pose a unique risk because malicious actors can edit the frontend code to change which smart contracts the frontend calls. Developers could instead run their frontends on the Internet Computer to remove the risk of a frontend attack.

As time goes by, the advantages that the Internet Computer has over other blockchains will only become starker. Similar to the Internet Computer, other blockchains intend to scale capacity by breaking the network into multiple sub-blockchains (often referred to as shards) that each handle some fraction of the applications running on the network. But unlike the Internet Computer, applications built on one shard will not be able to call the API functions of an application built on another. This means that as other blockchain networks grow in size, the composability of applications on the network diminishes. In stark contrast, any canister on the Internet Computer can call any other canister on the Internet Computer—regardless of whether they are located on the same subnet.

Also Published Here

Disclosure: I own ICP.