0.2 Internet Computer terminology
This page introduces some of the most commonly used terminology that developers should be aware of when building on ICP. View the full glossary of terms.
Concepts
Actor: An actor is a process with an encapsulated state that communicates with other actors that are concurrently running. Actors communicate through asynchronous messages that are received sequentially. They can modify their own private state but can only alter other actors indirectly through messages.
Agent: An agent is a library used to make calls to a public ICP interface. Examples of external agents include the JavaScript and Rust agents.
Certified variables: A certified variable is a piece of data that a canister stores in the subnet's canonical state during the processing of an update or inter-canister call. This data is used when a query call is made so that the canister can return a certificate to the user to verify the data's value.
Chain-key cryptography: Chain-key cryptography is a suite of advanced cryptographic mechanisms that allow ICP to achieve scalability and functionalities that aren't possible on other blockchain networks. One example of chain-key cryptography is ICP's single public key, which allows any device to verify the authenticity of data received from ICP.
Cycles: A cycle in regards to ICP is a unit of measurement used for measuring the amount of resources consumed by a canister. These resources include compute processing power, memory, storage, and network bandwidth. Cycles are consumed for every execution performed by a canister that has been deployed on the mainnet. The ICP's utility token, ICP, can be converted into cycles and transferred into a canister to be used to pay for that canister's consumed resources. ICP can be converted to cycles using the current price of ICP measured in XDR, where one trillion cycles corresponds to one XDR. XDR is the currency code for special drawing rights (SDR), which are supplementary foreign exchange assets defined and maintained by the International Monetary Fund (IMF).
Decentralized application (dapp): A decentralized application (dapp) refers to a canister or several interoperable canisters that provide a program or service that has been deployed on ICP.
Decentralized autonomous organization (DAO): A decentralized autonomous organization (DAO) is a form of governance where there is no centralized form of authority. Decisions are made by stakeholders collectively voting on decisions proposed to the DAO. All DAO activity is executed onchain, providing a transparent and verifiable record of activity.
Execution: The execution layer, which is responsible for executing canister code. Execution is done using WebAssembly (Wasm).
ICP: ICP is the native utility token of the Internet Computer Protocol. ICP can be used to participate in the network's governance through token staking, or it can be converted into cycles, which are used to pay for a canister's resource consumption.
Principal: A principal is an entity that can be authenticated by ICP.
Proposal: A proposal is a statement that describes a suggested modification to an aspect of ICP or any of its subsystems. Proposals can be submitted for consideration from the ICP community by eligible neuron owners. Once a proposal has been submitted, it undergoes a voting process that determines if the proposed modification will be adopted or rejected.
Messages: Data sent from one canister to another canister or data sent from a user to a canister.
Replica: The collection of protocol components necessary for a node to participate in a subnet.
Subnet: A subnet is a collection of nodes that operate an independent instance of the blockchain network by running their own implementation of the consensus algorithm. Subnets interact with other subnets through chain-key cryptography.
Transaction: A transaction refers to the ledger process of transferring tokens from one account to another. A transaction can be a regular transfer transaction, a minting transaction, or a burning transaction.
Canister terminology
Canister: A canister is a type of smart contract computational unit that bundles together both code and state.
Canister development kit (CDK): A canister development kit (CDK) is an adapter used by the Internet Computer SDK that provides a programming language with the functionality and features necessary to create and manage canisters.
Canister identifier: The canister identifier (ID) is a globally unique identifier for a canister that can be used to interact with it.
Canister state: Canister state refers to the entire state of a canister at any given point in time. The state is divided into two portions: the system state and the user state. The system state contains the auxiliary state maintained by ICP on behalf of the canister and contains information such as the balance of cycles, input and output queues, compute allocation, and other metadata. The user state contains a WebAssembly module instance. A canister interacts with its canister state either through the system API, such as when sending messages, or implicitly, such as when consuming cycles for execution.
Controller: A controller on ICP refers to the controller of an individual canister. A controller can be a person, an organization (such as a DAO), or another canister. Controllers are identified by their principal. Controllers are capable of functions such as upgrading or deleting the canister.
Identity: In regards to canisters, an identity is a principal value used for access control of canisters. Identities can be set as controllers of canisters and can have cycles wallets associated with them.
Query call: A query call is used to call and return data from a canister's method. Queries are performed synchronously and are made to any node that hosts the canister. Consensus is not required to verify the result of the query.
State change: A state change refers to the result of any operation, function call, or transaction that changes the information stored within a canister.
System canister: System canisters perform specific tasks that are used to help maintain ICP.
Tools and products
dfx:
dfx
is the primary tool used for creating, managing, and deploying canisters on ICP. It is a component of the IC SDK.Internet Identity: Internet Identity is the Internet Computer's native authentication system.
Ledger: In reference to ICP, the ledger canister is a system canister used to store accounts and their corresponding transactions.
Motoko: Motoko is a programming language developed and designed for programming on ICP. It was designed specifically to support ICP's unique features and attributes, such as the actor model and canister compilation to WebAssembly.

Did you get stuck somewhere in this tutorial, or do you feel like you need additional help understanding some of the concepts? The ICP community has several resources available for developers, like working groups and bootcamps, along with our Discord community, forum, and events such as hackathons. Here are a few to check out:
- Developer Discord
- Developer Liftoff forum discussion
- Developer tooling working group
- Motoko Bootcamp - The DAO Adventure
- Motoko Bootcamp - Discord community
- Motoko developer working group
- Upcoming events and conferences
- Upcoming hackathons
- Weekly developer office hours to ask questions, get clarification, and chat with other developers live via voice chat.
- Submit your feedback to the ICP Developer feedback board