Move Programming Tutorials

Welcome to our Move programming series! Whether you're new or experienced, join us as we explore Move, create smart contracts, and use Supra's Oracle price feed. Get hands-on experience, start from the basics, or jump to specific topics. Let's dive into the world of Move together!

Part 1

Intro to Move Programming for Sui Blockchain | Learn Smart Contracts from Scratch

Welcome to our comprehensive Move programming series for the Sui blockchain! Whether you're new to smart contract development or a seasoned developer, this course is for you. Join us as we demystify the Move language, delve into smart contract creation, and harness Supra's Oracle price feed data in a real-world project. Our hands-on approach ensures you gain practical experience, and we recommend starting from the beginning to build a strong foundation.

However, feel free to skip to specific topics if you're already familiar. In this part, we cover Move's basic syntax, laying the groundwork for exciting blockchain development. Get ready to explore the world of Move with us!

Origins and Evolution of the Move Language for Blockchain Development

Join us on a journey through the origins and evolution of Move, the groundbreaking programming language designed to power Facebook's Diem blockchain (formerly Libra). Developed by the Diem Association, Move was born out of the unique challenges posed by blockchain development, prioritizing security, safety, and flexibility in smart contract creation. Move's resource-oriented programming paradigm and robust type system make it a standout choice for blockchain developers and researchers. Discover how Move's innovative approach safeguards resources and learn how it enforces security guarantees at compile-time. Dive into the world of Move and harness its potential for building rock-solid, secure smart contracts. 

Exploring Move References: Immutable and Mutable

Discover the world of references in the Move programming language. This comprehensive guide explores the two fundamental types of references: immutable (&) and mutable (&mut). Learn how references are created, how they enable safe data manipulation, and their role in enforcing ownership discipline. See how Move's type system prevents reference errors and promotes secure coding practices. Dive into code examples that illustrate reference usage, subtyping, and the unique characteristics of Move references. 

Join us on this journey through Move's reference system, a crucial aspect of writing robust and secure smart contracts in the Move language.

Exploring Move Tuples and Unit Type: Multiple Returns and More

Uncover the intricacies of tuples and the unit type in Move, specifically designed for multiple return values and concise expression. Dive into the syntax of creating, destructuring, and using tuples, along with practical examples. Discover how subtyping works with tuples and references in Move, and learn why tuples do not exist as runtime values. Explore the role of tuples in enabling efficient multiple returns from functions and their unique characteristics in the Move programming language.

Join us in this exploration of Move's tuple system and the unit type, essential components in building efficient and robust smart contracts in Move.

Understanding Variables and Scope in the Move Programming Language

Dive into the world of local variables and scoping in Move, the innovative programming language for blockchain development. Learn how to declare and manage local variables using the 'let' keyword and explore the nuances of variable naming and type annotations. Discover the significance of scoping in Move, including how scopes determine the visibility and lifetime of variables. Delve into the concept of shadowing, where a new variable can obscure an existing one in an outer scope, and understand its implications in Move programming. 

Join us on this journey through the fundamental concepts of variables and scope in Move.

Understanding Equality Operations in the Move Programming Language

Explore the world of equality operations in Move, the blockchain-oriented programming language. Learn how to use the '==' and '!=' operators to compare values for equality or non-equality. Understand the importance of matching operand types for successful comparisons and discover how to use these operations with user-defined types. Dive into real-world examples, including comparing custom structs, and grasp the nuances of referencing values for efficient and optimized equality checks. 

Join us in mastering the art of equality comparisons in Move.

Control Flow Mastery: Abort and Assert in the Move Language

Dive deep into the core control flow constructs of the Move programming language: abort and assert. Discover how 'abort' can act as your emergency exit when conditions go awry, gracefully halting execution and safeguarding the global state. Explore practical examples, such as popping items from a vector, to see 'abort' in action. Then, empower your code with 'assert', a formidable tool for runtime condition validation. Learn how to ensure your code adheres to expected behaviors and prevents logical errors.

Join us in mastering control flow in Move for robust and dependable smart contracts.

Mastering Conditionals in Move: Controlling Code Flow with Precision

Unlock the power of conditional statements in the Move programming language. Explore how 'if' expressions enable you to dictate code execution based on dynamic conditions. Understand the syntax, where conditions must evaluate to 'true' or 'false'. Delve into advanced concepts like 'else' clauses, which offer versatile branching options. Discover a unique Move feature—conditional expressions that produce values. Witness practical examples that demonstrate how to assign values based on conditions, adding flexibility to your code. Elevate your Move programming skills and create smarter, more adaptive smart contracts with precise control flow.

Mastering Move Functions: The Building Blocks of Smart Contracts

Dive into the world of functions in Move, the versatile programming language for blockchain smart contracts. Learn how to declare functions with type parameters, parameters, and return values. Discover the power of public and entry modifiers for controlling access to your functions. Explore the use of type annotations and resource acquires to ensure reference safety. Whether you're a novice or an experienced Move developer, this guide will enhance your understanding of functions and their pivotal role in creating robust blockchain applications.

Unlocking Move Generics: Writing Flexible and Reusable Code

Dive deep into the world of generics in the Move programming language. Learn how to harness the power of parametric polymorphism to write functions and structs that work seamlessly with various data types. Explore the syntax of type parameters, type inference, and type constraints to build more versatile and efficient code. Discover advanced techniques, including the use of phantom type parameters and constraints, to create generic code that is both flexible and type-safe. Whether you're a Move novice or an experienced developer, this comprehensive guide will empower you to write highly adaptable and reusable code using generics.

Mastering Move Type Abilities: A Comprehensive Guide

Dive into the world of Move type abilities and learn how to control the behavior and permissions of your data with precision. This comprehensive guide covers the four core abilities in Move: copy, drop, store, and key. Explore real-world examples and best practices for annotating structs with the right abilities, and understand how abilities impact the way your data is copied, dropped, stored in global storage, and used as keys. Whether you're a beginner or an experienced Move developer, this guide will help you harness the power of type abilities for secure and efficient smart contract development on the Move blockchain.

Simplifying Move Development with 'use' and Aliases: A Comprehensive Guide

Unlock the full potential of the 'use' statement and aliases in the Move programming language with this comprehensive guide. Learn how to streamline your Move code by creating aliases for modules, importing specific module members, and even adding aliases to the modules themselves. Dive into real-world examples and best practices to harness the power of 'use' and aliases for more efficient and readable Move smart contract development. Whether you're a beginner or an experienced Move developer, this guide will help you master these essential features for a smoother development experience on the Move blockchain.

Unlocking Module Trust in Move: A Guide to Friend Declarations

Explore the power of friendship in Move programming with this comprehensive guide to friend declarations. Learn how to establish trust relationships between modules, allowing them to call each other's public(friend) functions. Dive into real-world examples and best practices for declaring friends using fully qualified module names and module name aliases introduced via the use statement. Understand the rules, constraints, and benefits of friend declarations to build secure and efficient smart contracts on the Move blockchain. Whether you're a beginner or an experienced Move developer, this guide will help you master the art of module trust with friend declarations.

Unlocking Reusability and Collaboration: A Guide to Move Packages

Discover the power of Move packages and how they revolutionize code reuse and collaboration in Move programming. This comprehensive guide delves into the intricacies of package management, from creating package manifest files (Move.toml) to defining named addresses and dependencies. Learn how to structure your Move package source directory and compile packages using the Move CLI. Whether you're a newcomer or an experienced Move developer, this guide will help you harness the full potential of Move packages for more efficient and collaborative smart contract development.

Exploring Move Standard Library Modules: Vectors and Options

Join us in this video as we delve into two essential modules from the Move standard library: Vectors and Options. These modules provide powerful tools for handling collections and optional values in the Move programming language.

In the "Vectors" module, you'll discover how to create, manipulate, and operate on vectors. We'll walk you through creating empty vectors, adding elements, and obtaining their length. Follow along with a hands-on example that demonstrates these concepts in action.

Next, we explore the "Options" module, which introduces the Option<T> type for handling values that may or may not be present. Learn how to create empty options, populate them with values, and check if they contain data. We provide a code example that illustrates the use of Option<T> in practical scenarios.

Whether you're a beginner or an experienced Move developer, understanding these modules is crucial for building efficient and reliable smart contracts.

Mastering Move: Your Journey Through the Move Programming Language

Congratulations on completing our in-depth series on the Move programming language! 🎉

In this comprehensive series, we've covered Move from the ground up, starting with the basics and progressing to advanced topics. You've learned how to work with primitive types, global storage, utilize generics, and harness the power of Move's standard library.

Whether you're a newcomer or a seasoned developer, this series has equipped you with the knowledge and tools to excel in the world of blockchain programming. Stay tuned for more exciting content, and remember to subscribe for future updates and tutorials!

Thank you for being part of the Move community. Keep coding, keep exploring, and keep mastering Move! 💪🚀

Part 2, 3, 4

Building a Crowdfunding Smart Contract on Sui Blockchain with Move

Dive into this live coding session where we craft a crowdfunding smart contract on the Sui Blockchain using the Move programming language. We'll seamlessly integrate Supra’s price feed Oracle, demonstrating the power and simplicity of this tool. By the end of this tutorial, you'll grasp the essentials of setting up a project structure, defining key functionalities, and harnessing the capabilities of blockchain technology for crowdfunding. Whether you're a blockchain enthusiast or a seasoned developer, this tutorial offers valuable insights into creating robust smart contracts. Join us and elevate your blockchain coding skills!

Building a Crypto Index Fund Smart Contract on Sui Blockchain with Move

Embark on a comprehensive journey as we guide you through constructing a crypto index fund smart contract on the Sui Blockchain using the Move programming language. This tutorial meticulously integrates Supra's price feed Oracle, ensuring you have real-time, accurate crypto asset valuations. Starting with foundational project setup, we delve deep into the intricacies of integrating Supra's Oracle, managing investments, and handling crypto asset prices. By the end, you'll be equipped with the knowledge to craft a robust index fund smart contract, harnessing the power of blockchain technology and Oracle integrations. Whether you're a novice or an expert in blockchain development, this guide offers a wealth of insights to elevate your skills. Dive in and start building your crypto index fund on the Sui Blockchain!

Bonus: Universal Move Language Concepts

Modules and Scripts Explained

In this video, we delve into the core concepts of Move programming: Modules and Scripts. Move, the language powering the Sui blockchain, employs a unique approach to smart contract development, and mastering these components is essential. Modules serve as libraries defining struct types and functions to manipulate them, whereas Scripts are executable entry points, similar to a main function. Discover the syntax and structure of both Modules and Scripts and how they interact. Learn how to use declarations to import types from other modules, establish friendship between modules, declare constants, and define public functions within Modules. Whether you're new to Move or looking to deepen your knowledge, this video will provide valuable insights into Move's program organization. 

Understanding Global Storage in the Move Blockchain

In this video, we dive deep into the world of global storage in the Move blockchain. Global storage is a fundamental concept for managing data on the blockchain, and understanding how it works is crucial for building robust smart contracts. We explore the tree-shaped structure of global storage, the types of data it can store (including resources and modules), and the specific global storage operators available in the Move programming language.

Learn how to create, retrieve, update, and delete resources in global storage using Move's powerful global storage operators. We also discuss reference safety, the `acquires` annotation, and how to work with generic resources.

Let's stay in touch

Sign up for the latest updates and invites to our upcoming community bashes, aka MoveCons! We're coming to all the hottest Web3 events around the world, your city might just be on the list too.