Skeleton and Rust Architecture
In this article, you'll learn about the basic architecture behind the FT contract that you'll develop while following this "Zero to Hero" series. You'll discover the contract's layout and you'll see how the Rust files are structured in order to build a feature-complete smart contract.
If you are new to Rust and want to dive into smart contract development, our Quick-start guide is a great place to start.
Introduction
This tutorial presents the code skeleton for the FT smart contract and its file structure. You'll find how all the functions are laid out as well as the missing Rust code that needs to be filled in. Once every file and function has been covered, you'll go through the process of building the mock-up contract to confirm that your Rust toolchain works as expected.
Files structure
The repository comes with many different folders. Each folder represents a different milestone of this tutorial starting with the skeleton folder and ending with the finished contract folder. If you step into any of these folders, you'll find that they each follow a regular Rust project. The file structure for these smart contracts have:
Cargo.toml
file to define the code dependencies (similar topackage.json
in JavaScript and node projects)src
folder where all the Rust source files are storedtarget
folder where the compiledwasm
will output to.
Source files
File | Description |
---|---|
ft_core.rs | Contains the logic for transferring and controlling FTs. This file represents the implementation of the core standard. |
lib.rs | Holds the smart contract initialization functions and dictates what information is kept on-chain. |
metadata.rs | Defines the metadata structure. This file represents the implementation of the metadata extension of the standard. |
storage.rs | Contains the logic for registration and storage. This file represents the implementation of the storage management standard. |
skeleton
├── Cargo.lock
├── Cargo.toml
└── src
├── ft_core.rs
├── lib.rs
├── metadata.rs
└── storage.rs
Explore the code in our GitHub repository.