An Introduction to the Internet Computer
What is the Internet
Computer?
The Internet Computer 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. 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 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
to 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 programing 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 an 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 who 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 compute. 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 more stark. 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.
Comments
Post a Comment