Level 2: Space explorer
2.1 Canister upgrades, storage, and persistence: When a canister's code needs to have changes made, the canister must be upgraded. This module covers:
- Memory types and terms.
- Upgrading canisters.
- Motoko stable memory workflow.
- Rust stable memory workflow.
- Stable storage and stable variables.
- Interactive example.
- Prerequisites.
- Creating a new project.
- Defining a stable variable.
- Deploying your counter app.
- Stable variables in action.
2.2 Advanced canister calls: Now that you've covered the core functionalities of canisters and using them, let's take a look at advanced canister calls. This module covers:
- The ICP execution model.
- Canister query calls.
- Example query call.
- Canister update calls.
- Example update call.
- Certified variables.
- Composite queries.
- Inter-canister calls.
- Using inter-canister calls.
- Prerequisites.
- Creating a new project.
- Writing a
publisher
canister. - Writing a
subscriber
canister.
2.3 Using third-party canisters: For certain workflows, using third-party canisters and integrating them with a dapp is important to provide functionalities such as authentication. This module covers:
- Pulling third-party canister dependencies.
- Prerequisites.
- Creating a new project.
- Using
dfx deps
.
- Pulling third-party canister dependencies.
2.4 Introduction to Candid: Candid is an interface description language that has unique support for ICP features. This module covers:
- Candid types and values.
- Candid textual values.
- Candid service descriptions.
- The
.did
file. - Example candid service descriptions.
- Generating service descriptions.
- The
- Service upgrades.
- Using Candid.
- Prerequisites.
- Creating a new project.
- Interacting with a service using the command-line terminal.
- Interacting with a service using a web browser.
- Candid types and values.
2.5 Unit, integration, and end2end testing: Testing code prior to setting it live in production is an important step in the development process. This module covers:
- Motoko unit testing.
- Canister unit testing.
- Rust unit testing.
- Tests using Light Replica.
- End2end (e2e) testing.
- Prerequisites.
- Creating a new project.
- Setting up the project.
- Creating an agent.
- Creating a test file.
- Running a basic test.
- Running a complex test.
- Integration testing.
- Motoko unit testing.
2.6 Motoko: level 2.: This module covers:
- Actor types.
- Actor type definition.
- Shared functions.
- Actors and async data.
- Actor classes.
- Defining an actor class.
- Defining an actor within the class.
- Using multiple actors.
- Prerequisites.
- Creating a new project.
- Configuring canisters in
dfx.json
. - Creating canister directories and Motoko files.
- Creating the
characterCount
actor. - Creating the
Daemon
actor. - Deploying the actors locally.
- Interacting with multiple actors.
- Actor types.