#合约 #算盘 #客户端 #标准 #集合 #wasm #无标准

无标准 soroban-contracts

为 Soroban 实现标准合约和接口客户端

1 个不稳定版本

0.0.1 2023 年 3 月 8 日

#61 in #算盘

MIT 许可证

9KB

soroban-contracts

一组 Soroban 合约实现和接口客户端。

安全性

这是一个 实验性软件,提供“现状”和“可用”的基础上。

我们不提供任何保证,也不会对任何通过使用此代码库产生的损失负责。

使用方法

将其添加到您的 Cargo.toml

[dependencies]
soroban-contracts = "<desired version>"

使用客户端

合约客户端是通过使用 soroban-sdk 从 Rust 特性生成的。它们可以导入并按如下方式使用

use stellar_sdk::{BytesN, Env};
use soroban_contracts::token::{TokenClient};

let env = Env::default();
let usdc_address =  BytesN::from_array(&env, &[u8; 0]);
let usdc = TokenClient::new(&env, BytesN::from_array(&env, &usdc_address));

// perform an action against the usdc contract...

对于特性中定义的每个函数,如 balance,客户端包含一个遵守接口的标准 balance 函数和一个将返回值包装在 Result 中的 try_balance,以允许调用合约在需要时优雅地处理错误。

实现特性

可以通过 Rust impl 标签和 contractimpl 属性为合约实现特性。

use soroban_sdk::{contractimpl};
use soroban_contracts::token::{Token};

pub struct MyContract;

#[contractimpl]
impl Token for MyContract {
    // implement the Token trait based on your contract's needs
}

部署合约

实现的合约公开其优化的 WASM 打包。此打包可用于部署到网络或用于如下所示的测试

use soroban_sdk::{testutils::{BytesN as _}, BytesN, Env};
use soroban_contracts::token::{TokenWASM, TokenClient};

let e = Env::default();
let contract_id = BytesN::<32>::random(&e);
e.register_contract_wasm(&contract_id, TokenWASM);
let token_client = TokenClient::new(e, &contract_id);

// perform an action against the newly deployed token contract...

支持的合约

此库仅支持通过 SEP 或 CAP 由社区达成一致的合约。

当前

如果有任何缺少的合约 - 请提交问题。

致谢

此库受到许多来源的启发或直接修改,主要是

WASM

支持 WASM 目标 wasm32-unknown-unknown

贡献

欢迎贡献。请查看贡献指南(TODO)!

许可证

此库在 MIT 许可证 下发布。

依赖项

~14MB
~291K SLoC