#smart-contracts #contract #wrapped #token #coin #azero #psp22

no-std wrapped-azero

将 AZERO 币作为 PSP22 令牌包装的智能合约

1 个稳定版本

1.0.0 2024 年 5 月 6 日

#21#coin

每月下载 34

自定义许可证

27KB
348

Wrapped AZERO

此仓库包含了一个用于 Aleph Zero 区块链的 ink! 智能合约,该合约可以将原生链币(AZERO)包装成遵循 PSP22 标准的通用代币。

该合约已部署到以下测试网和主网地址下

  • Aleph Zero 主网: 5CtuFVgEUz13SFPVY6s2cZrnLDEkxQXc19aXrNARwEBeCXgg
  • Aleph Zero 测试网: 5EFDb7mKbougLtr5dnwd5KDfZ3wK55JPGPLiryKq4uRMPR46

artifacts 文件夹包含已部署的确切编译二进制文件,以及用于验证的所有其他编译工件。

此仓库的内容已发布到 crates.io,以便于其他项目轻松集成。

如何从其他合约交互 Wrapped AZERO

  1. 在你的项目的 Cargo.toml 中添加 wrapped-azero 依赖项
wrapped-azero = { version = "1.0", default-features = false, features = ["ink-as-dependency"] }
# ...
[features]
# ...
std = [
    # ...
    "wrapped-azero/std",
]

  1. 要从你的合约调用 depositwithdraw 方法,使用 contract_ref 宏与 WrappedAZERO 特性
use ink::{codegen::TraitCallBuilder, contract_ref};
use wrapped_azero::{WrappedAZERO, MAINNET};

let mut wazero: contract_ref!(WrappedAZERO) = MAINNET.into();
wazero.withdraw(amount); // returns Result<(), PSP22Error>

// Deposit call must be composed manually to be able to attach AZERO transfer
wazero.call_mut().deposit().transferred_value(amount).invoke(); // returns Result<(), PSP22Error>

  1. 要从你的合约调用常规 PSP22 方法(转账、余额、批准),使用 contract_ref 宏与 PSP22 特性
use ink::contract_ref;
use ink::prelude::vec;
use wrapped_azero::{PSP22, MAINNET};

let mut wazero: contract_ref!(PSP22) = MAINNET.into();
let balance = wazero.balance_of(some_account);
wazero.transfer(recipient, value, vec![]); // returns Result<(), PSP22Error>

如何通过 Web 界面手动交互 Wrapped AZERO

  1. 访问 Contracts UI
  2. 从左上角的网络菜单中选择 "Aleph Zero"(或 "Aleph Zero 测试网")。
  3. 选择 "添加新合约" 然后选择 "使用链上合约地址"。
  4. 粘贴上述列出的主网(测试网)地址。
  5. 选择您喜欢的任何名称,并使用从 artifacts 文件夹中获取的 元数据文件
  6. 选择调用者以及要调用的方法。对于只读方法(如 psp22::balanceOf),您将立即看到响应。对于其他方法,填写参数(所有限制值保持默认值),并签署交易(您需要连接到 Contracts UI 的 Aleph Zero Signer 或类似浏览器扩展)。

依赖项

~7–11MB
~196K SLoC