Rust SDK
Rust SDK 面向后端、原生移动客户端、嵌入式系统,以及任何需要 Rust 性能与安全保证的应用。它同时提供对 OXN 协议的低层控制和常见场景的高层人体工学。
安装
加到 Cargo.toml:
[dependencies]
oasis-runtime-sdk = "0.13"
tokio = { version = "1", features = ["full"] }
Rust SDK 是异步的;用 tokio 或其他异步运行时。
基本连接
use oasis_runtime_sdk::client::EvmClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = EvmClient::new("https://rpc.bout.network")?;
let chain_id = client.chain_id().await?;
println!("Chain ID: {}", chain_id);
Ok(())
}
发送加密交易
Rust SDK 提供自动加密的 signer 类型:
use oasis_runtime_sdk::client::{EvmClient, EncryptedSigner};
let client = EvmClient::new("https://rpc.bout.network")?;
let signer = EncryptedSigner::from_private_key(&private_key_hex, &client)?;
let tx = signer
.send_transaction()
.to(recipient_address)
.value(1_000_000_000_000_000_000u128) // 1 TBLUAI(测试网显示)
.gas_limit(100_000)
.submit()
.await?;
println!("Transaction: {}", tx.hash);
具体类型名与 API 表面随 SDK 版本变化。安装后跑 cargo doc --open 查看。
合约交互
从 ABI 生成的 Rust 绑定用 alloy 或 ethers-rs 约定。结合 OXN 加密 signer:
// 假设生成的 MyToken 绑定
let token = MyToken::new(token_address, signer.clone());
let tx = token.transfer(recipient, amount).gas_limit(500_000).send().await?;
tx.wait().await?;
用例
高性能索引器。 Rust 的零成本 async 使其适合并行读取大量区块。
高负载后端服务。 Rust 服务每个 core 能处理的并发请求数超过等价的 Go 或 Node.js。
嵌入式 / 边缘设备。 小内存占用、无 GC,Rust 适合受限环境。
密码学后端。 如果你的应用有大量链下密码学工作,Rust 的密码学生态(curve25519-dalek、rustcrypto 等)成熟。
地址处理
use oasis_runtime_sdk::types::address::{Address, PublicKey};
// 从公钥得到 EVM 地址
let evm_address = evm_address_from_pubkey(&pubkey);
// 从公钥得到原生 oxn1... 地址
let native_address = Address::from_pk(&PublicKey::Ed25519(pubkey));
println!("{}", native_address); // "oxn1..."
测试
用标准 #[tokio::test] 做异步测试:
#[tokio::test]
async fn test_encrypted_transfer() {
let client = EvmClient::new("https://rpc.bout.network").unwrap();
// ...
}
需要测试网的集成测试用 #[ignore]:
#[tokio::test]
#[ignore]
async fn test_against_testnet() { /* ... */ }
用 cargo test -- --ignored 跑。
下一步
- Go SDK——服务端的兄弟 SDK
- JSON-RPC API——原始协议参考