* Framework for ICRC7 NFT implementation for Internet Computer ** Simple NFT *** add next to dependences in ~Cargo.toml~ #+BEGIN_SRC toml uncensored-greats-dao = "0.1" serde = { version = "1", features = ["derive"] } serde_json = "1" candid = "0.10" #+END_SRC *** to create NFT struct ~TestToken~ with symbol ~TT~ and name ~TestToken~ in ~src/lib.rs~ add #+BEGIN_SRC rust use serde::{Deserialize, Serialize}; use uncensored_greats_dao::{Icrc7, Metadata, Storage}; use candid::CandidType; #[derive( CandidType, Clone, Hash, Default, Serialize, Deserialize, )] pub struct TestToken { pub name: String, pub description: Option, } impl Metadata for TestToken { fn metadata(&self) -> String { serde_json::to_string(&serde_json::json!({ "name": self.name, "description": self.description })) .unwrap_or_default() } } #[derive(Icrc7, Storage, Deserialize, Serialize, Default)] #[icrc7(token_type = "TestToken")] #[icrc7(symbol = "TT")] #[icrc7(name = "Test Token")] pub struct TokenCollections {} #+END_SRC *** build and deploy to test network #+BEGIN_SRC bash rustup target add wasm32-unknown-unknown cargo install candid-extractor cargo build --release --target wasm32-unknown-unknown --package test_token candid-extractor target/wasm32-unknown-unknown/release/test_token.wasm > test_token.did dfx start --clean --background dfx deploy test_token #+END_SRC *** creating token #+BEGIN_SRC bash dfx canister call test_token create_token \ "(record{ token=record { name=\"test\"; description=opt\"test description\" }; })" #+END_SRC *** mint created token #+BEGIN_SRC bash dfx canister call test_token mint \ "(record{ token_id=1; holders=vec{record{owner=principal\"$YOU\"}} })" #+END_SRC to check more methots please check ~examples/test_token~