---
layout: landing
---
# Ostium Rust SDK
Modern, type-safe Rust SDK for perpetual trading on the Ostium platform. Built with [Alloy](https://alloy.rs/) for Ethereum interactions and designed for production use on Arbitrum.
:::code-group
```rust [Installation]
# Add to Cargo.toml
[dependencies]
ostium-rust-sdk = "0.1.0"
```
```rust [Quick Start]
use ostium_rust_sdk::{OstiumClient, Network};
let client = OstiumClient::new(Network::Testnet).await?;
let price = client.get_price("BTC/USD").await?;
println!("BTC Price: ${}", price.mark_price);
```
```rust [Trading]
use ostium_rust_sdk::{OpenPositionParams, PositionSide};
use rust_decimal_macros::dec;
let params = OpenPositionParams {
symbol: "BTC/USD".to_string(),
side: PositionSide::Long,
size: dec!(0.01),
leverage: dec!(5.0),
take_profit: Some(dec!(55000)),
stop_loss: Some(dec!(45000)),
slippage_tolerance: dec!(0.01),
};
let tx_hash = client.open_position(params).await?;
```
:::
## Features
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mt-8">
<div class="feature-card">
<div class="feature-icon">🦀</div>
<h3>Pure Rust</h3>
<p>Type-safe and performant with zero-cost abstractions. Built with modern Rust patterns and async/await support.</p>
</div>
<div class="feature-card">
<div class="feature-icon">⚡</div>
<h3>High Performance</h3>
<p>Optimized for speed with connection pooling, intelligent caching, and efficient memory management.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🔐</div>
<h3>Secure by Design</h3>
<p>Industry-standard security practices with secure key management and transaction validation.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🌐</div>
<h3>Multi-Network</h3>
<p>Supports both Arbitrum mainnet and testnet with easy network switching and configuration.</p>
</div>
<div class="feature-card">
<div class="feature-icon">📊</div>
<h3>Complete Trading API</h3>
<p>Full perpetual trading functionality including positions, orders, market data, and risk management.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🛡️</div>
<h3>Error Handling</h3>
<p>Comprehensive error types with detailed error recovery and debugging information.</p>
</div>
</div>
## Why Ostium?
**Decentralized Perpetual Trading** - Trade crypto pairs with up to 100x leverage on a decentralized platform built on Arbitrum.
- **Low Fees** - Competitive trading fees powered by Arbitrum's efficiency
- **Deep Liquidity** - Access to institutional-grade liquidity pools
- **Advanced Features** - Take profit, stop loss, and sophisticated order types
- **Transparent** - All trades executed on-chain with full transparency
## Getting Started
<div class="steps">
### 1. Install the SDK
Add the Ostium Rust SDK to your `Cargo.toml`:
```toml
[dependencies]
ostium-rust-sdk = "0.1.0"
tokio = { version = "1.0", features = ["full"] }
rust_decimal = "1.0"
```
### 2. Create a Client
```rust
use ostium_rust_sdk::{OstiumClient, Network};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a read-only client
let client = OstiumClient::new(Network::Testnet).await?;
// Or create a client with trading capabilities
let client = OstiumClient::builder(Network::Testnet)
.with_private_key("0x...")?
.build()
.await?;
Ok(())
}
```
### 3. Start Trading
```rust
// Check your balance
let balance = client.get_balance(None).await?;
println!("Balance: ${}", balance.total);
// Get market price
let price = client.get_price("BTC/USD").await?;
println!("BTC/USD: ${}", price.mark_price);
// Open a position
let params = OpenPositionParams {
symbol: "BTC/USD".to_string(),
side: PositionSide::Long,
size: dec!(0.01),
leverage: dec!(5.0),
take_profit: Some(dec!(55000)),
stop_loss: Some(dec!(45000)),
slippage_tolerance: dec!(0.01),
};
let tx_hash = client.open_position(params).await?;
println!("Position opened: {}", tx_hash);
```
</div>
## What's Next?
<div class="next-steps">
**New to the SDK?** Start with our [Installation Guide](/getting-started/installation) and [Quick Start Tutorial](/getting-started/quickstart).
**Ready to Trade?** Follow our [First Trade Tutorial](/getting-started/first-trade) for a complete walkthrough.
**Building an App?** Check out our [Integration Patterns](/examples/integration-patterns) and [Trading Bot Example](/examples/trading-bot).
**Need Help?** Visit our [Troubleshooting Guide](/troubleshooting/common-issues) or [join our Discord](https://discord.gg/ostium).
</div>
## Community & Support
- **📖 Documentation** - Comprehensive guides and API reference
- **🐛 Issues** - Report bugs on [GitHub Issues](https://github.com/ranger-finance/ostium-rust-sdk/issues)
- **💬 Discord** - Join our [Discord community](https://discord.gg/ostium)
- **🐦 Twitter** - Follow [@OstiumProtocol](https://twitter.com/ostiumprotocol)
---
<div class="footer-cta">
**Ready to start building?** [Get started now →](/getting-started/installation)
</div>
<style>
.feature-card {
background: var(--vocs-color-surface);
border: 1px solid var(--vocs-color-border);
border-radius: 8px;
padding: 24px;
transition: all 0.2s ease;
}
.feature-card:hover {
border-color: var(--vocs-color-accent);
transform: translateY(-2px);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 16px;
}
.feature-card h3 {
margin: 0 0 12px 0;
color: var(--vocs-color-text-primary);
}
.feature-card p {
margin: 0;
color: var(--vocs-color-text-secondary);
line-height: 1.5;
}
.steps {
counter-reset: step;
}
.steps h3::before {
counter-increment: step;
content: counter(step);
background: var(--vocs-color-accent);
color: white;
font-size: 0.875rem;
font-weight: 600;
padding: 4px 8px;
border-radius: 9999px;
margin-right: 12px;
}
.next-steps {
background: var(--vocs-color-surface-secondary);
border: 1px solid var(--vocs-color-border);
border-radius: 8px;
padding: 24px;
margin: 32px 0;
}
.footer-cta {
text-align: center;
padding: 32px 0;
border-top: 1px solid var(--vocs-color-border);
margin-top: 64px;
}
.footer-cta a {
background: var(--vocs-color-accent);
color: white;
padding: 12px 24px;
border-radius: 6px;
text-decoration: none;
font-weight: 600;
display: inline-block;
transition: all 0.2s ease;
}
.footer-cta a:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
</style>