What is the Internet Computer and ICP?
The Internet Computer blockchain incorporates a radical rethink of blockchain design, powered by innovations in cryptography. It provides the first “World Computer” blockchain that can be used to build almost any online system or service, including demanding web social media, without need for traditional IT such as cloud computing services. As such it can enable full end-to-end decentralization.
Why Does the ICP token have value?
The ICP token has three main utilities. Firstly, ICP provides a source of “cycles” that are burned to power computation (thus when ICP is converted to cycles, it disappears, creating deflationary pressure). Secondly, ICP can be staked in the permissionless Network Nervous System DAO that governs the Internet Computer blockchain, creating voting neurons that generate voting rewards. Thirdly, ICP plays the role of a store of value, for example allowing users to invest in decentralization sales run by web3 services.
How Does the Internet Computer Work?
The internet, which now connects nearly everybody and everything, runs on a network of special devices called routers. Some, like WiFi routers, are installed in homes, while others, which connect countries, are very specialized and expensive. The Internet Computer blockchain runs on a network of special computing devices called “node machines,” which are built to a variety of standards. Today, most Proof-of-Stake blockchains are hosted by “validator” nodes that are software instances often spun up on cloud computing services. The Internet Computer cannot be hosted in this way. It runs entirely on a sovereign network of dedicated node machines, which are installed in independent data centers by independent “node providers.” These node machines connect to each other using Internet Computer Protocol, or ICP, which is where the token gets its name from. The best moniker to describe the blockchain network model used by the Internet Computer is “Proof-of-Useful-Work”. The network has a governance system called the NNS, which can slash (‘eject”) node machines that fail to produce enough blocks and keep up with the network, which is why they need to be built to a standard specification. Internally, the Internet Computer network is composed of “subnet blockchains.” Each new subnet adds additional capacity to the network, which means it can host more smart contracts, computation and data. However, these subnets are invisible to the hosted smart contracts and users. This is because they are combined into a single logical blockchain using “chain key crypto.” Chain key crypto is unique to the Internet Computer. It enables subnet blockchains, and the overall Internet Computer blockchain produced, to have public “chain keys”. The blockchains cryptographically sign all their interactions, which can be validated using their chain keys. Valid signatures show that interactions have not been tampered with, and also that the blockchains are running correctly – without any need to download and check their blocks of transactions. Thanks to chain key crypto, the Internet Computer can combine its subnet blockchains into a single blockchain and scale limitlessly. However, chain key crypto also makes other things possible! For example, smart contracts on the Internet Computer can process HTTP requests and serve interactive web experiences directly to end-users. This is more secure than normal web serving because the smart contracts can sign the content they serve, which can be validated before it is shown to users, keeping them safe. Recently, chain key crypto has been used to make “Chain Key TX” functionality available to smart contract developers. This enables them to create signed transactions that run on other blockchains. For example, an Internet Computer developer can create bitcoin addresses, and send and receive bitcoin, directly on the Bitcoin ledger, without using insecure “bridge” services. Using this functionality, native Bitcoin DeFi can be created. The Internet Computer also provides many other features that are unique within blockchain. These include HTTP outcalls, which enable smart contracts to securely query other systems over the web, through its network consensus system, for example making it possible for smart contract software to securely obtain data such as crypto asset price feeds without using a trusted oracle service. The Internet Computer network is controlled and managed by a master subnet, which runs an advanced permissionless DAO called the Network Nervous System (NNS). This instructs the node machines how to structure the network. Nodes can verify that the instructions they have received from the NNS are genuine just by checking the chain key signature, since its chain key never changes. The NNS instructs nodes to join and leave subnets, and to form new subnets. The cryptography and protocols work in a clever way, such that even though nodes come and go from subnet blockchains, their chain keys always stay the same. On the Internet Computer, developers build using “canister” smart contracts. They are referred to as canisters, because they are bundles of WebAssembly bytecode, and persistent memory pages. The bytecode implements the logic of the smart contract, and it runs exclusively in its own memory, interacting with other smart contracts using message passing (using a software “actor” model). This makes it possible to run smart contracts in parallel, which is another way the Internet Computer scales. Canister smart contracts are very powerful, and can be used to build anything. For example, multi-block transactions (computations) are possible, along with daemon smart contracts, which are automatically invoked periodically by the blockchain. The main languages used for developing Internet Computer smart contracts are Rust and Motoko. Motoko is a language created by DFINITY specifically for the Internet Computer, which was developed by a team led by Andreas Rossberg, who was the co-inventor of the WebAssembly standard. The best way to understand how the Internet Computer works, and the range of unique capabilities it provides, is to visit internetcomputer.org, and wiki.internetcomputer.org.