1 个不稳定版本
0.1.0 | 2023年6月24日 |
---|
#29 在 #stellar
47KB
Rust Soroban 客户端库
用于与Stellar区块链上的Soroban智能合约交互的Rust客户端库
描述
该库由3个组件组成:
- rs-stellar-xdr:用于编码/解码XDR数据的基础库。这已经由Stellar核心团队开发。
- rs-stellar-base:一个提供用于读取、写入、散列和签名Stellar网络中使用的原始XDR构造函数的全面函数集的库。它为构建和签名事务提供了一个很好的抽象。
- rs-soroban-client:用于提交事务的Horizon客户端。
该库将使开发者能够无缝地将Soroban功能集成到基于Rust的应用和服务中。Stellar团队已经通过构建xdr库和Rust stellar strkey实现铺平了大部分基础。这个特定的库是Soroban和整个Rust社区在Stellar生态系统中的缺失部分。
该库的实际应用场景,假设有人想构建一个针对Soroban自身构建的DEX的交易机器人。该机器人会在短时间内执行大量交易,通常利用市场低效和价格差异。Soroban的Rust客户端库将为人提供一套高性能的工具集,用于构建交易算法、与Stellar网络交互以及以最小延迟执行交易。
库的示例用法
// 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("http://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);
}
}
}
作者
Rahul Soshte (Twitter)