Practice Hub

Master Move language concepts through hands-on interactive challenges.

Total Progress

0%Mastery
0
Exercises Mastered
0
Total XP Earned
intermediate

Generic Function with Type Parameters

Fill in the blanks to create a generic function that works with any type.

code completion60 XP
intermediate

Using Mutable References Correctly

Fill in the blanks to use mutable references to modify values in place.

code completion50 XP
beginner

Creating and Adding to Vectors

Fill in the blanks to create a vector and add elements to it.

code completion45 XP
beginner

Define and Create a Struct

Fill in the blanks to define a struct and create an instance of it.

code completion45 XP
beginner

Loop with Break and Continue

Fill in the blanks to create a loop that skips odd numbers and stops at a target.

code completion45 XP
beginner

Working with Addresses

Fill in the blanks to correctly declare and use address types.

code completion40 XP
beginner

Declare Variables

Fill in the blanks to correctly declare variables with different types.

code completion40 XP
beginner

Complete the Add Function

Fill in the blanks to create a function that adds two numbers.

code completion50 XP
intermediate

Define a Coin Struct

Complete the struct definition by filling in: (1) the visibility keyword, (2) the keyword before abilities, and (3) the field name for storing the coin amount.

code completion75 XP
intermediate

Vector Operations

Complete the vector manipulation functions.

code completion70 XP
advanced

Generic Container

Create a generic container struct that can hold any type.

code completion100 XP
beginner

Working with Option Types

Complete the code to work with optional values.

code completion60 XP
beginner

Import the Messaging SDK

Fill in the blanks to correctly import the messaging SDK components.

code completion40 XP
beginner

Configure SuiClient

Fill in the blanks to properly configure a SuiClient for testnet.

code completion45 XP
intermediate

Create a Messaging Channel

Fill in the blanks to create a new messaging channel.

code completion55 XP
intermediate

Send a Message

Fill in the blanks to send a message to a channel.

code completion55 XP
intermediate

Configure Seal Encryption

Fill in the blanks to set up SealClient for encrypted messaging.

code completion60 XP
advanced

Upload an Attachment

Fill in the blanks to upload a file to Walrus.

code completion65 XP
advanced

Create a Chat Context Provider

Fill in the blanks to create a React context for messaging.

code completion70 XP
advanced

Production Multi-RPC Config

Fill in the blanks to configure multi-RPC failover.

code completion75 XP
beginner

Your First Move Module

Fill in the blanks to declare a basic Move module with a public function.

code completion35 XP
beginner

Declaring Typed Variables

Fill in the blanks to correctly declare variables with appropriate Move types.

code completion40 XP
beginner

Complete the While Loop

Fill in the blanks to write a while loop that sums numbers from 1 to n.

code completion45 XP
beginner

Define a Sui Object Struct

Fill in the blanks to define a Sui object struct with the correct abilities and UID field.

code completion50 XP
intermediate

Vector Filtering with While Loop

Fill in the blanks to filter even numbers from a vector into a new vector.

code completion55 XP
intermediate

Object Transfer Patterns

Fill in the blanks to correctly transfer and share Sui objects.

code completion55 XP
advanced

Generic Wrapper with Ability Constraints

Fill in the blanks to create a generic wrapper struct that enforces ability constraints on its type parameter.

code completion70 XP
advanced

SVI Pricing Formula

Fill in the blanks to complete the SVI pricing formula that computes binary option fair value.

code completion80 XP
intermediate

Range Price Calculation

Fill in the blanks to compute the price of a RANGE binary position.

code completion60 XP
intermediate

Fee Breakdown Computation

Fill in the blanks to compute the Bernoulli and utilization fees.

code completion65 XP
advanced

Unrealized P&L Calculation

Fill in the blanks to compute unrealized P&L for an open position.

code completion70 XP
beginner

Fix the Function Visibility

This function should be callable from other modules but has a visibility bug.

bug fix50 XP
intermediate

Fix the Struct Abilities

This struct needs proper abilities to work with storage.

bug fix75 XP
intermediate

Fix the Reference Types

The function parameters have incorrect reference types.

bug fix70 XP
advanced

Fix Vector Out of Bounds

This code has a potential out-of-bounds error.

bug fix90 XP
beginner

Fix Type Mismatch

The function has a type mismatch error.

bug fix55 XP
intermediate

Fix Member Management

This channel member management code has bugs. Find and fix them.

bug fix55 XP
intermediate

Fix Message Polling

This message polling implementation has bugs that cause missed messages.

bug fix60 XP
intermediate

Fix Key Rotation

This key rotation implementation has errors.

bug fix65 XP
advanced

Fix Attachment Download

This attachment download function has type and logic errors.

bug fix70 XP
advanced

Fix Chat Component Cleanup

This React chat component has a memory leak due to missing cleanup.

bug fix70 XP
advanced

Fix Error Recovery Pattern

This error recovery implementation has issues.

bug fix75 XP
beginner

Fix the Broken Module

This Move module has syntax errors preventing it from compiling. Find and fix them.

bug fix40 XP
beginner

Fix the Off-By-One Loop

This function should calculate the factorial of n, but it has a loop boundary bug and an initialization error.

bug fix45 XP
intermediate

Fix Missing Ability Annotations

This code tries to use structs in ways that require specific abilities, but the abilities are missing or wrong.

bug fix55 XP
intermediate

Fix Transfer and Ownership Errors

This module has errors related to transferring and using objects after transfer.

bug fix60 XP
advanced

Fix the Witness Pattern

This one-time witness (OTW) pattern has errors in the struct definition and usage.

bug fix70 XP
advanced

Fix the Mint Position Transaction

This mint transaction has two bugs: swapped sentinel values and wrong module name. Find and fix both.

bug fix70 XP
intermediate

Fix the Deposit Transaction

The deposit transaction is missing the typeArguments and uses the wrong target module. Fix both issues.

bug fix60 XP
advanced

Fix the Atomic Deposit+Mint

This deposit-and-mint transaction has a coin handling bug and a missing argument. Fix both.

bug fix75 XP
intermediate

Type Constraints and Abilities

Understanding which type constraints are required for generic operations.

multiple choice55 XP
intermediate

Valid Borrow Scenarios

Understanding which borrowing patterns are allowed in Move.

multiple choice50 XP
beginner

Vector Safety and Bounds Checking

Understanding what happens when accessing vector elements.

multiple choice40 XP
beginner

Choosing Abilities for Digital Assets

Understanding which abilities should be used for different types of structs.

multiple choice40 XP
beginner

If Expression Rules

Understanding how if expressions return values in Move.

multiple choice35 XP
beginner

Integer Overflow

Understanding what happens when integers exceed their maximum values.

multiple choice35 XP
beginner

Module Basics

Test your understanding of Move modules.

multiple choice30 XP
beginner

Integer Types Range

Test your knowledge of integer type ranges in Move.

multiple choice40 XP
intermediate

Understanding Abilities

Which abilities does a struct need for different operations?

multiple choice60 XP
intermediate

Reference Types

Understanding when to use mutable vs immutable references.

multiple choice55 XP
beginner

If Expressions

How do if expressions work in Move?

multiple choice45 XP
advanced

Generic Type Constraints

Understanding constraints on generic types.

multiple choice80 XP
beginner

Why On-Chain Messaging?

Understanding the benefits of decentralized messaging.

multiple choice35 XP
beginner

SDK Architecture Overview

Understanding the @mysten/messaging SDK components.

multiple choice40 XP
beginner

Required vs Optional Configuration

Understanding which client configurations are required.

multiple choice40 XP
intermediate

Channel Lifecycle States

Understanding channel states and transitions.

multiple choice50 XP
intermediate

Threshold Encryption Basics

Understanding how Seal threshold encryption works.

multiple choice55 XP
advanced

Walrus Decentralized Storage

Understanding how Walrus stores file attachments.

multiple choice60 XP
advanced

React State Management for Chat

Understanding state management patterns for real-time chat.

multiple choice65 XP
advanced

Multi-RPC Failover Pattern

Understanding production RPC configuration.

multiple choice70 XP
beginner

Move Module Structure

Test your understanding of how Move modules are structured and named.

multiple choice35 XP
beginner

Move Type System Fundamentals

Test your knowledge of Move's primitive types and type safety rules.

multiple choice40 XP
intermediate

Understanding the Four Abilities

Test your understanding of Move's four abilities: copy, drop, store, and key.

multiple choice50 XP
intermediate

Dynamic Fields vs Table vs Vector

Compare the three main collection types in Sui Move.

multiple choice55 XP
intermediate

Owned vs Shared vs Immutable Objects

Understand the three object ownership models in Sui.

multiple choice55 XP
advanced

Phantom Type Parameters

Understand phantom type parameters and when to use them in Move.

multiple choice65 XP
beginner

UP/DOWN Position Encoding

How are binary positions encoded with sentinel strike values?

multiple choice30 XP
beginner

Module Responsibilities

Which module handles which operation in DeepBook Predict?

multiple choice30 XP
beginner

Oracle State Transitions

What is the correct lifecycle of an oracle?

multiple choice30 XP
beginner

Oracle Data Fields

What does the min_strike field represent on an oracle?

multiple choice30 XP
beginner

Spot vs Forward Price

What is the relationship between spot and forward prices?

multiple choice30 XP
intermediate

SVI Parameter Effects

Which SVI parameter controls the skew of the volatility smile?

multiple choice40 XP
intermediate

Bernoulli Fee Peak

When is the Bernoulli fee highest?

multiple choice40 XP
intermediate

PredictManager Creation

Which module and function creates a PredictManager?

multiple choice40 XP
advanced

Hook Polling Patterns

Why do Predict hooks use visibility-aware polling?

multiple choice50 XP
advanced

Transaction Signing

How are Predict transactions signed and executed?

multiple choice50 XP
advanced

useMemo for Pricing

Why use useMemo for SVI price computation in React?

multiple choice50 XP
intermediate

Generic Type Inference

Predict how Move infers types for generic functions.

output prediction55 XP
intermediate

Complex Borrow and Modify

Predict the final value after multiple borrow and modify operations.

output prediction55 XP
beginner

Vector Length After Operations

Predict the vector length after push and pop operations.

output prediction40 XP
beginner

Struct Field Access

Predict the output after accessing and modifying struct fields.

output prediction40 XP
beginner

Assert Behavior

Predict what happens when an assert condition fails.

output prediction40 XP
beginner

Type Casting Result

Predict the output after type casting operations.

output prediction40 XP
beginner

Function Call Result

Predict what value this function returns.

output prediction35 XP
beginner

Simple Arithmetic

Predict the output of this arithmetic operation.

output prediction40 XP
intermediate

If Expression Result

What will this if expression return?

output prediction55 XP
intermediate

Vector Length

Predict the length of this vector after operations.

output prediction60 XP
advanced

Reference Modification

Predict the final value after reference operations.

output prediction75 XP
beginner

Function Return Value

What does this function return?

output prediction45 XP
beginner

Client Configuration Result

Predict the output of this client configuration check.

output prediction40 XP
intermediate

Message Polling Output

Predict the console output of this polling pattern.

output prediction55 XP
beginner

Type Casting Chain

Predict the result of chained type casting operations.

output prediction40 XP
beginner

Loop with Early Break

Predict the value of a counter after a loop with break and continue statements.

output prediction45 XP
intermediate

Vector Swap and Access

Predict the value at a specific index after vector swap operations.

output prediction50 XP
advanced

Position Direction Detection

Predict the output of getPositionDirection for given strike values.

output prediction50 XP