20个版本
0.3.2 | 2024年4月15日 |
---|---|
0.3.0 | 2024年3月30日 |
0.2.9 | 2024年3月24日 |
0.2.1 | 2023年10月14日 |
0.1.4 | 2023年7月20日 |
#13 in #stellar
每月28次下载
42KB
939 行
Rust Soroban 客户端库
Rust客户端库,用于与Stellar区块链上的Soroban智能合约交互
该项目目前处于早期开发阶段,尚不可用。它是一个正在进行中的项目,可能会进行重大更改,包括添加或删除功能以及对其功能的修改。
快速入门
将以下内容添加到您的Cargo.toml中
[dependencies]
soroban-client = "0.3.1"
并将以下内容添加到您的代码中
use soroban_client::*;
描述
该库由3个组件组成:
- rs-stellar-xdr: 一个用于编码/解码XDR数据的底层库。该库已被Stellar核心团队开发。
- rs-stellar-base: 一个提供了一组完整功能的库,用于读取、写入、散列和签名Stellar网络中使用的原始XDR构造。它为构建和签名交易提供了良好的抽象。
- rs-soroban-client: 一个高级Rust库,作为Horizon客户端的客户端API。它对于与Soroban RPC服务器进行通信非常有用。
此库将使开发者能够无缝地将Soroban功能集成到基于Rust的应用和服务中。Stellar团队已经通过构建xdr库和rust stellar strkey实现,为soroban和整个Stellar生态系统中的Rust社区奠定了基础。
库的示例用法
// Submitting a transaction
use soroban_client::Server;
use soroban_client::Networks;
use soroban_client::TransactionBuilder;
use soroban_client::Keypair;
#[tokio::main]
async fn main() {
let server = Server::new("https://127.0.0.1:8000/soroban/rpc").unwrap();
let public_key = "..."; // Replace with the actual public key
let secret_string = "..."; // Replace with the actual secret key
let contract_id = "..."; // Replace with the actual contract ID
let account = server.get_account(public_key).await.unwrap();
// Fee hardcoded for this example.
let fee = 100;
let contract = Contract::new(contract_id).unwrap();
let mut transaction = TransactionBuilder::new(&account, fee, Networks::STANDALONE)
.add_operation(
// An operation to call increment on the contract
contract.call("increment").unwrap(),
)
.set_timeout(30)
.build();
// Simulate the transaction to discover the storage footprint, and update the
// transaction to include it. If you already know the storage footprint you
// can use `add_footprint` to add it yourself, skipping this step.
transaction = server.prepare_transaction(transaction).await.unwrap();
// Sign the transaction
let secret_key = Keypair::from_secret(secret_string).unwrap();
transaction.sign(&secret_key);
match server.send_transaction(transaction).await {
Ok(transaction_result) => {
println!("{:?}", transaction_result);
}
Err(err) => {
eprintln!("{:?}", err);
}
}
}
实际用法案例
假设有人想构建一个针对基于Soroban本身构建的DEX的贸易机器人。这个机器人将在短时间内执行大量交易,通常利用市场低效率和价格差异。一个用于Soroban的Rust客户端库将为该人提供一套高效的工具集,用于构建交易算法、与Stellar网络交互以及以最小的延迟执行交易。
作者
拉胡尔·索什特 (Twitter)
依赖项
~16–31MB
~493K SLoC