Internet Computer overview
The Internet Computer is a “general-purpose” blockchain that provides a public platform for hosting tokens and decentralized applications (dapps). It acts as a complete technology stack, such that systems and services can be built that run entirely from the blockchain.
What is the Internet Computer?
Conceptually, the Internet Computer is an extension of the existing internet that enables a global network of computers to provide the computing power for running application software.
In much the same way that the adoption of the transmission control protocol (TCP) and Internet protocol (IP) provided rules for transferring data between endpoints that helped to establish the “network of networks” that we know as the internet of today, the Internet Computer relies on a decentralization protocol called the Internet Computer protocol to define the software components that enable a global network of computers to combine their resources to read, replicate, modify, and return application state.
The keys to Internet Computer infrastructure are:
- A secure protocol that enables general-purpose computations to run transparently directly on the internet.
- A network that runs the protocol to provide computing capacity—for example, the hardware, CPU, and memory required to run programs—through independently-operated data centers.
- A globally-accessible and scalable platform for running software applications.
Why build the Internet Computer?
For end-users, accessing Internet Computer-based services is largely transparent, the experience of interacting with a decentralized application is the same as it is on a public or private cloud.
For the people creating and managing those Internet Computer-based services, however, the Internet Computer eliminates many of the costs, risks, and complexities associated with developing and deploying modern applications and microservices. In addition, its secure protocol guarantees reliable message delivery, transparent accountability, and resilience without relying on firewalls, backup facilities, load balancing services, or failover orchestration.
In some ways, building the Internet Computer is about restoring the Internet to its open, innovative, and creative roots. To focus on a few specific examples, the Internet Computer does the following:
- Supports interoperability, shared functions, permanent APIs, and ownerless applications which reduces platform risk and encourages innovation and collaboration.
- Persists data automatically in memory which eliminates the need for database servers and storage management, improves computational efficiency, and simplifies software development.
- Simplifies the technology stack that IT organizations need to integrate and manage which improves operational efficiency.
Canisters (dapps/smart contracts)
The Internet Computer hosts powerful smart contracts called canisters. Canisters are tamperproof, autonomous, hosted on-chain, and can be run concurrently and interact with each other. Canisters can service HTTP requests created by end-users, which allows them to directly serve interactive web experiences. This means that blockchain dapps, systems and services can be created without incorporating websites running on corporate cloud hosting services and private servers into their architecture, which provides true end-to-end Web 3.0 decentralization, censorship resistance, and superior security.
More information about canisters can be found at:
- The canister wiki page.
- This Medium post about canisters.
- The developer documentation for canisters.
The Internet Computer was designed to improve the user experience of interacting with smart contracts and dapps running on a blockchain. Dapps on the IC are able to serve web content, allowing users to interact with the dapps through their browser. Dapps themselves are run by canisters (dapps/smart contracts) on the IC with the robustness and security guarantees it affords. Developers create dapps in programming languages such as Rust or Motoko, compile them to WebAssembly byte code, and deploy the WebAssembly modules into canisters on the Internet Computer. A canister comprises a WebAssembly module and persisted memory. For more information or to start using dapps on the IC see:
- Index of dapps on the IC
- This Medium post where early adopters describe their experience of launching dapps on the IC.
Internet Identity is an anonymous blockchain authentication framework supported by the Internet Computer. Users can create identity "anchors" to which they assign compatible cryptographically enabled devices, such as the fingerprint sensor on a laptop, the face ID system on a phone, or a portable HSM, such as a YubiKey or Ledger wallet. Thereafter, they can signup and authenticate to any dapp running on the Internet Computer using any of the devices they have assigned to their anchor. This provides a high level of convenience, allowing users to authenticate to dapps they are interested in with a very low level of friction, while benefiting from the highest level of cryptographic security, but without the need to directly manage or handle cryptographic key material themselves, which prevents mistakes and the theft of their key material. The system is anonymizing towards dapps, and whenever an anchor is used to interact with a dapp, the dapp sees a specially generated pseudonym, which prevents users being tracked across the various dapps they use. A user can create as many identity anchors as they wish.
Unlike most authentication methods, Internet Identity does not require users to set and manage passwords or provide any personal identifying information to dapps or to Internet Identity.
To read more about Internet Identity, or to generate an anchor, see:
- The Internet Identity dapp.
- Internet Identity for dapp users.
- Internet Identity technical overview.
- The Internet Identity developer documentation.
The Internet Computer is governed and managed in realtime by a governance system, which is integrated into its blockchain protocols, called the Network Nervous System (or NNS). Anybody can submit proposals to the NNS, and they are either rejected, or adopted, and then automatically executed. Proposals can add additional nodes to run the Internet Computer, upgrade the Internet Computer protocol by updating the replica software running on node machines, tweak economic parameters, perform general configurations, and many other things. This provides an advantage over traditional blockchains, which must be upgraded manually by those operating nodes via a "hard fork". The decentralized Internet Computer network is thus designed to be self-directed.
The Internet Computer uses a utility token ICP. Holders can stake ICP, allowing them to participate in the governance of the Internet Computer and earn voting rewards. ICP can also be converted into cycles and used to power computation, communication and storage costs of canisters. The blockchain incorporates a "reverse gas" model, in which smart contracts pay for their own computation, and must be pre-charged with cycles to run in much the same way an electric car must be pre-charged with electricity to drive. This ensures that end-users of dapps, systems and services can interact with them over the web without needing tokens to pay for the computations that they initiate. The Internet Computer maintains a floating conversion rate so that 1 Trillion cycles costs approximately 1 IMF SDR in ICP.
Internal Building Blocks
Internally, the Internet Computer's network is comprised from individual subnet blockchains. New subnet blockchains (often simply called "subnets") are formed by combining node machines to increase its capacity for hosting smart contract data and computation. Its protocols leverage chain key cryptography to have subnets function as a single blockchain, such that they are completely transparent to smart contract code, and every smart contract on the blockchain can directly call any other smart contract. Any number of subnets can be added, with each additional subnet linearly increasing the network's overall capacity.
The Internet Computer runs on a sovereign network of special node machines that are dedicated to the task. They are run by independent node providers (node owner/operators), from independent data centers, in different geographies and jurisdictions around the world, without any need for corporate cloud services. New subnets are formed by combining node machines that are calculated to be independent according to a decentralization hierarchy comprising node provider, data center, geography and jurisdiction, which makes it possible to produce the desired security and resilience properties with both higher certainty and lower levels of replication, thus driving efficiency.
For a more in depth view of the technical building blocks The Internet Computer for Geeks whitepaper gives a comprehensive coverage.
The Internet Computer was developed by the DFINITY Foundation, which now continues as its lead contributor. The network underwent Genesis on 10th May 2021.