1 个不稳定版本
0.0.1 | 2022年2月28日 |
---|
143 在 #nft 中
370KB
485 行
Near 标准库
库概述
该库由两个库组成,它们相互构建
near-account
near-internal-balance-plugin
这两个库都处理与智能合约中不同账户相关的信息存储。 near-account
将为用户维护一些结构体的映射。 near-account
将确保用户通过跟踪存储来支付其存储费用。它还跟踪智能合约中存入的总金额,并将维护一个 free Near
字段。
near-internal-balances-plugin
处理所有与代币相关的事务,并基于 near-account
构建。它允许用户将代币转入和转出智能合约。这意味着用户可以将代币“存入”智能合约,然后智能合约拥有这些代币的所有权。但是,智能合约会跟踪余额。这基本上是 Ref Finance 使用代币所做的事情。
目前,该库支持
- NFTs(遵循 NEP 171 标准),
- FTs(遵循 NEP 141 标准),
- 多代币(也称为 MT,可在 GitHub 上找到)
有关这两个库的更多信息,请参阅 docs.rs
near-account
文档 TODOnear-internal-balance-plugin
文档 TODO
构建和测试
要构建,请运行
./build.sh
与许多 Rust 库和合约一样,near-account
和 near-internal-balance-plugin
中都有单元测试。
此外,该项目在 sim
目录中有 模拟测试。模拟测试允许测试跨合约调用,这对于确保以下功能正常工作至关重要
- 用户存储存款成功
- 跟踪用户的
free Near
ft_transfer_call
、mt_transfer_call
、nft_transfer_call
成功将 ft、mt 和 nft 存入用户的账户余额internal_balance_withdraw_to
成功从用户的账户中提取代币
这些模拟测试是项目具有现有文件结构的原因。请注意,根项目包含一个 Cargo.toml
文件,该文件将其设置为工作空间。ft
、nft
和 mt
(位于核心目录外部)都用于模拟测试目的。dummy
也用于模拟测试。
您可以使用一个命令运行所有测试
cargo test
如果您只想运行模拟测试,可以使用 cargo test simulate
,因为所有模拟测试的名称中都包含 "simulate"。
注意事项
- 最大余额值受限于 U128(
2**128 - 1
)。 - JSON 调用应将 U128 作为十进制字符串传递。例如:"100"。
- 这不包括托管功能,因为
ft_transfer_call
提供了更优的方法。当然,可以将托管系统作为一个独立的合约或在此合约内的附加功能添加。
贡献
在修改文件时,请记住使用 ./build.sh
编译所有合约并将输出复制到 res
文件夹。如果您忘记这样做,模拟测试将不会使用最新版本。
请注意,如果此存储库中的 rust-toolchain
文件发生变化,请确保更新 .gitpod.Dockerfile
以明确指定使用它作为默认值。