1 个不稳定版本
0.0.1 | 2023 年 3 月 8 日 |
---|
#61 in #算盘
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 由社区达成一致的合约。
当前
- 代币 - 由 CAP-0046-06 定义的标准化代币
如果有任何缺少的合约 - 请提交问题。
致谢
此库受到许多来源的启发或直接修改,主要是
WASM
支持 WASM 目标 wasm32-unknown-unknown
贡献
欢迎贡献。请查看贡献指南(TODO)!
许可证
此库在 MIT 许可证 下发布。
依赖项
~14MB
~291K SLoC