PSP-22
Build
Install cargo-contract
(https://crates.io/crates/cargo-contract)
Step 1: rustup component add rust-src
.
Step 2: cargo install --force --locked cargo-contract
.
Step 3: (Optional) Install dylint
for linting.
(MacOS) brew install openssl
cargo install cargo-dylint dylint-link
.
cargo contract build --release --features "contract"
About
Module Overview
lib.rs
: The main module that includes all other modules and re-exports key components.data.rs
: Defines structs and enums, which are used to manage token data and events.errors.rs
: Contains enums for error handling.traits.rs
: Declares several traits likePSP22
,PSP22Metadata
,PSP22Burnable
,PSP22Mintable
,PSP22Pausable
,PSP22Wrapper
, andOwnable
, which define the standard functionalities of PSP22 tokens.
lib.rs
Token
: Main struct representing a PSP22 token. It includes methods for token creation (new
) and for emitting events (emit_events
).Approval
andTransfer
: Event structs used for emitting events related to token transfer and approval.
data.rs
PSP22Data
: A struct that maintains the state of all account balances and allowances. Includes methods for token supply management, balance queries, and allowance management.PSP22Event
: An enum representing events that occur during state changes ofPSP22Data
.
errors.rs
PSP22Error
: An enum for PSP22-specific errors, such as insufficient balance or allowance.OwnableError
: An enum for errors related to ownership management.
traits.rs
PSP22
: A trait defining the core functionalities of a PSP22 token, including methods for querying supply, balance, and allowance, and for executing transfers and approvals.PSP22Metadata
: A trait for accessing token metadata like name, symbol, and decimals.PSP22Burnable
: A trait for token burning functionalities.PSP22Mintable
: A trait for token minting functionalities.PSP22Pausable
: A trait for pausing and unpausing token transfers.PSP22Wrapper
: A trait for deposit and withdrawal functionalities.Ownable
: A trait for ownership management, including querying owner, transferring ownership, and renouncing ownership.
General Notes
- The library adheres to the PSP22 standard for fungible tokens.
- Most methods in
PSP22Data
and the traits intraits.rs
returnResult
types, indicating that they can fail with aPSP22Error
. - Events are an essential part of the library, used for signaling state changes like transfers and approvals.
This documentation provides an overview of your Rust library's structure and functionalities. For a complete understanding, users should refer to the detailed comments and implementations within each module.