Skip to main content

Level 2: Space explorer

Intermediate
Tutorial
  • 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.
  • 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.
    • 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.
  • 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.
  • 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.