Master Move language concepts through hands-on interactive challenges.
Fill in the blanks to create a generic function that works with any type.
Fill in the blanks to use mutable references to modify values in place.
Fill in the blanks to create a vector and add elements to it.
Fill in the blanks to define a struct and create an instance of it.
Fill in the blanks to create a loop that skips odd numbers and stops at a target.
Fill in the blanks to correctly declare and use address types.
Fill in the blanks to correctly declare variables with different types.
Fill in the blanks to create a function that adds two numbers.
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.
Complete the vector manipulation functions.
Create a generic container struct that can hold any type.
Complete the code to work with optional values.
Fill in the blanks to correctly import the messaging SDK components.
Fill in the blanks to properly configure a SuiClient for testnet.
Fill in the blanks to create a new messaging channel.
Fill in the blanks to send a message to a channel.
Fill in the blanks to set up SealClient for encrypted messaging.
Fill in the blanks to upload a file to Walrus.
Fill in the blanks to create a React context for messaging.
Fill in the blanks to configure multi-RPC failover.
Fill in the blanks to declare a basic Move module with a public function.
Fill in the blanks to correctly declare variables with appropriate Move types.
Fill in the blanks to write a while loop that sums numbers from 1 to n.
Fill in the blanks to define a Sui object struct with the correct abilities and UID field.
Fill in the blanks to filter even numbers from a vector into a new vector.
Fill in the blanks to correctly transfer and share Sui objects.
Fill in the blanks to create a generic wrapper struct that enforces ability constraints on its type parameter.
Fill in the blanks to complete the SVI pricing formula that computes binary option fair value.
Fill in the blanks to compute the price of a RANGE binary position.
Fill in the blanks to compute the Bernoulli and utilization fees.
Fill in the blanks to compute unrealized P&L for an open position.
This function should be callable from other modules but has a visibility bug.
This struct needs proper abilities to work with storage.
The function parameters have incorrect reference types.
This code has a potential out-of-bounds error.
The function has a type mismatch error.
This channel member management code has bugs. Find and fix them.
This message polling implementation has bugs that cause missed messages.
This key rotation implementation has errors.
This attachment download function has type and logic errors.
This React chat component has a memory leak due to missing cleanup.
This error recovery implementation has issues.
This Move module has syntax errors preventing it from compiling. Find and fix them.
This function should calculate the factorial of n, but it has a loop boundary bug and an initialization error.
This code tries to use structs in ways that require specific abilities, but the abilities are missing or wrong.
This module has errors related to transferring and using objects after transfer.
This one-time witness (OTW) pattern has errors in the struct definition and usage.
This mint transaction has two bugs: swapped sentinel values and wrong module name. Find and fix both.
The deposit transaction is missing the typeArguments and uses the wrong target module. Fix both issues.
This deposit-and-mint transaction has a coin handling bug and a missing argument. Fix both.
Understanding which type constraints are required for generic operations.
Understanding which borrowing patterns are allowed in Move.
Understanding what happens when accessing vector elements.
Understanding which abilities should be used for different types of structs.
Understanding how if expressions return values in Move.
Understanding what happens when integers exceed their maximum values.
Test your understanding of Move modules.
Test your knowledge of integer type ranges in Move.
Which abilities does a struct need for different operations?
Understanding when to use mutable vs immutable references.
How do if expressions work in Move?
Understanding constraints on generic types.
Understanding the benefits of decentralized messaging.
Understanding the @mysten/messaging SDK components.
Understanding which client configurations are required.
Understanding channel states and transitions.
Understanding how Seal threshold encryption works.
Understanding how Walrus stores file attachments.
Understanding state management patterns for real-time chat.
Understanding production RPC configuration.
Test your understanding of how Move modules are structured and named.
Test your knowledge of Move's primitive types and type safety rules.
Test your understanding of Move's four abilities: copy, drop, store, and key.
Compare the three main collection types in Sui Move.
Understand the three object ownership models in Sui.
Understand phantom type parameters and when to use them in Move.
How are binary positions encoded with sentinel strike values?
Which module handles which operation in DeepBook Predict?
What is the correct lifecycle of an oracle?
What does the min_strike field represent on an oracle?
What is the relationship between spot and forward prices?
Which SVI parameter controls the skew of the volatility smile?
When is the Bernoulli fee highest?
Which module and function creates a PredictManager?
Why do Predict hooks use visibility-aware polling?
How are Predict transactions signed and executed?
Why use useMemo for SVI price computation in React?
Predict how Move infers types for generic functions.
Predict the final value after multiple borrow and modify operations.
Predict the vector length after push and pop operations.
Predict the output after accessing and modifying struct fields.
Predict what happens when an assert condition fails.
Predict the output after type casting operations.
Predict what value this function returns.
Predict the output of this arithmetic operation.
What will this if expression return?
Predict the length of this vector after operations.
Predict the final value after reference operations.
What does this function return?
Predict the output of this client configuration check.
Predict the console output of this polling pattern.
Predict the result of chained type casting operations.
Predict the value of a counter after a loop with break and continue statements.
Predict the value at a specific index after vector swap operations.
Predict the output of getPositionDirection for given strike values.