Level 0: Pre-flight operations
0.1 What is the Internet Computer?: In order to understand how to develop dapps on ICP, the first step in the developer ladder is to take a look at the architecture of ICP and how it functions. This module covers:
- What is the Internet Computer?:
- Protocol stack:
- Peer-to peer layer.
- Consensus layer.
- Message routing layer.
- Execution layer.
- Protocol stack:
- Chain-key cryptography:
- Threshold signature schemes.
- Canister smart contracts.
- Tokens:
- ICP.
- Cycles.
- Governance:
- Network Nervous System.
- Service Nervous System.
- Internet Identity.
- What is the Internet Computer?:
0.2 Internet Computer terminology: This page introduces some of the most commonly used terminology that developers should be aware of when building on the Internet Computer. This module covers the following terms:
- Concepts:
- Actor.
- Agent.
- Certified variables.
- Chain-key cryptography.
- Cycles.
- Decentralized application (dapp).
- Decentralized autonomous organization (DAO).
- Execution.
- ICP.
- Principal.
- Proposal.
- Messages.
- Replica.
- Subnet.
- Transaction.
- Canister terminology:
- Smart contracts.
- Canisters.
- Canister development kit (CDK).
- Canister identifier.
- Canister state.
- Controller.
- Identity.
- Query.
- State change.
- System canister.
- Wallet.
- Tools and products:
dfx
.- Internet Identity.
- Ledger.
- Motoko.
- Concepts:
0.3 Developer environment setup: Before you can begin the developer ladder, you need to set up the developer environment. A developer environment is comprised of tools and packages that are required to develop code projects. This module covers:
- Setting up a developer environment:
- Confirming an internet connection.
- Confirming access to a CLI.
- Options for Windows users.
- Downloading and installing the IC SDK.
- Downloading and installing an IDE.
- Downloading and installing git.
- Downloading and installing Node.js.
- Assuring all packages and tools are updated to latest version.
- Setting up a developer environment:
0.4 Introduction to canisters: This page introduces canisters, their architecture, and discusses the different types of canisters that can be developed. This module covers:
- Architecture:
- Languages.
- Actors.
- Why is code compiled into WebAssembly?
- Types of canisters:
- Backend canisters.
- Frontend canisters.
- Custom canisters.
- Using a single or multiple canister architecture.
- Canister communication.
- Canister controllers.
- Cycles and resource charges.
- Architecture:
0.5 Introduction to languages: This page discusses the different languages that can be used to develop dapps, and provide a base-level introduction to the two primarily supported languages: Motoko and Rust. This module covers:
- Motoko.
- Motoko's attributes.
- Rust.
- Rust's attributes.
- Candid.
- Community developed CDKs:
- Python.
- TypeScript.
- Solidity.
- C++.
- Motoko.
0.6 Introduction to dfx:
dfx
is a command-line execution environment for the IC SDK. It is the primary tool used for creating, managing, and deploying dapps onto the Internet Computer. This module covers:- Basic usage and syntax:
- Subcommands.
- Flags.
- Options.
- Upgrading to the latest version of
dfx
. - Installing a specific version of
dfx
. - Creating a new project with
dfx
. - Exploring the default project structure.
- Reviewing the default configuration.
- Reviewing the default program code.
- Basic usage and syntax: