ostium-rust-sdk 0.1.0

Rust SDK for interacting with the Ostium trading platform on Arbitrum
Documentation
---
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>