This site requires Javascript to be enabled.

Simple state

The state is where the smart contract saves and retrieves data. In a sense, the smart contract state functions similarly to a database interaction layer in a traditional application.

The simplest method of representing state involves storing a single item. For instance, in the cw20 contract, the TokenInfo is recorded during the contract's initialization.

First, a TokenInfo type is declared in state.rs:

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]#[serde(rename_all = "snake_case")]pub struct TokenInfo {  pub name: String,  pub symbol: String,  pub decimals: u8,  pub total_supply: Uint128,  pub mint: Option<MinterData>,}

Then the storage is initialized:

pub const TOKEN_INFO: Item<TokenInfo> = Item::new("token_info");

In the contract, we see in the instantiate function how data can be saved to this:

let data = TokenInfo {  name: msg.name,  symbol: msg.symbol,  decimals: msg.decimals,  total_supply,  mint,};TOKEN_INFO.save(deps.storage, & data) ?;

You can get the cw20 base contract by choosing it as the starter template when setting up the project via the archway CLI

Drop Camp is here!

Join the queue and be one of the first to get in!.

Go Camping ↗