1 个不稳定版本

0.3.0 2024年1月9日

#308 in #pure

Apache-2.0

39KB
527 代码行

在纯 ink 中实现 PSP22 令牌标准!包含以下扩展 trait

  • 元数据
  • 可燃烧
  • 可铸造
  • 可暂停
  • 包装器
  • 所有者

构建

https://github.com/paritytech/cargo-contract

cargo contract build --release --features "contract"

单元测试

cargo test --features "contract"

关于

模块概述

  • lib.rs:包含所有其他模块并重新导出关键组件的主要模块。
  • data.rs:定义结构体和枚举,用于管理令牌数据和事件。
  • errors.rs:包含错误处理枚举。
  • traits.rs:声明了多个 trait,如 PSP22PSP22MetadataPSP22BurnablePSP22MintablePSP22PausablePSP22WrapperOwnable,这些 trait 定义了 PSP22 令牌的标准功能。

lib.rs

  • Token:表示 PSP22 令牌的主要结构体。它包括创建令牌的方法(new)和发出事件的方法(emit_events)。
  • ApprovalTransfer:用于发出与令牌转移和批准相关事件的事件结构体。

data.rs

  • PSP22Data:一个结构体,用于维护所有账户余额和允许的状态。包括令牌供应管理、余额查询和允许管理的方法。
  • PSP22Event:一个枚举,表示在 PSP22Data 状态变化期间发生的事件。

errors.rs

  • PSP22Error:一个枚举,用于 PSP22 特定错误,例如余额不足或允许不足。
  • OwnableError:一个枚举,用于与所有权管理相关的错误。

traits.rs

  • PSP22:一个 trait,定义了 PSP22 令牌的核心功能,包括查询供应、余额和允许的方法,以及执行转移和批准的方法。
  • PSP22Metadata:一个用于访问代币元数据(如名称、符号和小数位数)的特质。
  • PSP22Burnable:一个用于代币燃烧功能的特质。
  • PSP22Mintable:一个用于代币铸造功能的特质。
  • PSP22Pausable:一个用于暂停和恢复代币转账的特质。
  • PSP22Wrapper:一个用于存款和提现功能的特质。
  • Ownable:一个用于所有权管理的特质,包括查询所有者、转移所有权和放弃所有权。

一般说明

  • 该库遵循PSP22标准,适用于可交易代币。
  • PSP22Data中的大多数方法和traits.rs中的特质返回Result类型,表示它们可能会因PSP22Error而失败。
  • 事件是库的必要部分,用于指示状态变化,如转账和批准。

本文档提供了您Rust库结构和功能的概述。为了全面理解,用户应参考每个模块中的详细注释和实现。

依赖项

~7–11MB
~194K SLoC