An actor is a special kind of object in modern programming languages that processes messages in an isolated state, enabling them to be handled remotely and asynchronously.


A canister is a conceptual object similar to a smart contract with a universally-unique identifier and an owner that defines the boundaries of a specific application, service, or micro-site. A canister encapsulates all of the programming logic, public entry methods, the interface description for the provided message types, and state information for the application, service, or micro-service it describes.


A controller is an identity that has special rights to manage the canister it controls. For example, only a controlling identity can be used to install, upgrade, or delete the canister under its control. You can specify the controller identity using the textual representation of a principal—often referred to as the principal identifier—associated with a user or with a canister.


The Internet Computer records all transactions involving ICP tokens in a specialized management canister, called the ledger canister.The ledger canister is a simplified parallel blockchain that runs on the Internet Computer in a subnet with other network management canisters. The ledger canister implements a smart contract that holds accounts and balances and keeps a history of the transactions that affect accounts and balances. The transactions are recorded to track the following specific events:

  • Mint ICP tokens for accounts.

  • Transfer ICP tokens from one account to another.

  • Burn ICP tokens to eliminate them from existence.


A physical computer that is a registered member of the Internet Computer blockchain network and running the Internet Computer replica processes.


The first time you use the DFINITY Canister SDK, the dfx command-line tool creates a default developer identity for you with a public/private key pair in a PEM file. This Internet Computer developer identity is represented internally by a derived principal data type and a textual representation of the principal often referred to as your principal identifier. The developer identity can also be used to derive an account identifier—similar to a Bitcoin or Ethereum address—to hold ICP tokens on your behalf in the Internet Computer ledger canister.


In the context of the Internet Computer blockchain, a replica refers to the Internet Computer processes (for example, the replica, nodemanager, and other lower-level Internet Computer protocol processes) running on a physical computer node in the network. For the DFINITY Canister SDK, you use the dfx start and dfx stop commands to start and stop the replica process locally to provide a local network for development.

smart contract

A smart contract is software that enables trusted transactions and agreements to be carried out across a distributed, decentralized blockchain network without the need for any central authority or legal system. With a smart contract, the terms of a transaction or agreement are written directly into lines of code that are executed on the blockchain network. The code controls the execution, and the transactions are tamper-proof, traceable, and irreversible. On the Internet Computer, smart contracts are deployed as canisters.


On the Internet Computer, a wallet is a specialized application that allows you to store and retrieve your digital assets. The wallet application is implemented as a canister that runs on the Internet Computer. A wallet enables you to manage your ICP token balances, convert ICP token into cycles, and distribute cycles to your own or other users' canisters as a means for accessing or providing internet services.


WebAssembly (Wasm) is a low-level computer instruction format. Because WebAssembly defines a portable,open-standard, binary format that abstracts cleanly over most modern computer hardware, it is broadly supported for programs that run on the internet. Programs written in Motoko are compiled to WebAssembly code for execution on Internet Computer replicas.