#tokens #transfer #owner #wasm #spawn #events #nft

spawn-wasm-erc721

A Rust library for creating ERC-721 compliant Non-Fungible Tokens (NFTs) with WebAssembly (WASM) support

5 releases

0.1.4 Sep 11, 2024
0.1.3 Sep 7, 2024
0.1.2 Sep 6, 2024
0.1.1 Sep 6, 2024
0.1.0 Sep 6, 2024

#38 in #owner

Download history 139/week @ 2024-08-31 290/week @ 2024-09-07 29/week @ 2024-09-14 1/week @ 2024-09-21 76/week @ 2024-09-28 2/week @ 2024-10-05

222 downloads per month

MIT license

10KB
110 lines

spawn-wasm-erc721

spawn-wasm-erc721 is a Rust library designed to handle ownership and user roles for smart contracts in a WebAssembly (WASM) environment. This library provides essential functionality for role management, including assigning roles to users, checking role-based access, and transferring ownership.

Features

  • Ownership Management: Enables ownership transfer and ensures that only the owner can perform sensitive actions like role assignments.
  • Role-based Access Control: Allows access to contract methods based on assigned roles.
  • WASM Compatibility: Designed to work seamlessly in WebAssembly, allowing for easy integration into JavaScript-based environments.
  • Event Logging: Logs important events like ownership transfers and role assignments to the browser console for easier debugging.

Installation

To use the library, first add the following dependencies to your Cargo.toml file:

[dependencies]
wasm-bindgen = "0.2"
web-sys = { version = "0.3", features = ["console"] }

Also, ensure the following settings are added to your Cargo.toml for WebAssembly compilation:

[lib]
crate-type = ["cdylib"]

[profile.release]
lto = true

[package.metadata.wasm-pack.profile.release]
wasm-opt = ["-Oz"]

Usage

Initialize RoleManager To initialize the RoleManager struct with an owner:

use spawn_wasm_erc721::RoleManager;

let owner = "owner1".to_string();
let mut role_manager = RoleManager::new(owner);

Assign a Role

Assign a role to a user, ensuring the caller is the owner:

role_manager.assign_role("owner1".to_string(), "admin".to_string(), "user1".to_string());

Check Role-Based Access

Check if a user has access based on a specific role:

let has_access = role_manager.role_based_access("user1".to_string(), "admin".to_string());

Transfer Ownership

Ownership can only be transferred by the current owner:

role_manager.transfer_ownership("owner1".to_string(), "new_owner".to_string());

List Role Users

To list all users with a specific role:

let users = role_manager.list_role_users("admin".to_string());

Dependencies

~7.5–10MB
~183K SLoC