10 releases
new 1.0.0-alpha.12 | Mar 21, 2025 |
---|---|
1.0.0-alpha.11 | Feb 20, 2025 |
1.0.0-alpha.6 | Jan 23, 2025 |
1.0.0-alpha.4 | Nov 22, 2024 |
1.0.0-alpha.3 | Oct 24, 2024 |
#5 in #drift
352 downloads per month
1.5MB
33K
SLoC
drift-rs
Experimental, high performance Rust SDK for building offchain clients for Drift V2 protocol.
Install
# crates.io
drift-rs = "1.0.0-alpha.12"
# build from source
drift-rs = { git = "https://github.com/drift-labs/drift-rs", tag = "v1.0.0-alpha.12" }
Use
use drift_rs::{DriftClient, Wallet};
use solana_sdk::signature::Keypair;
async fn main() {
let client = DriftClient::new(
Context::MainNet,
RpcClient::new("https://rpc-provider.com"),
Keypair::new().into(),
)
.await
.expect("connects");
// Subscribe to Ws-based live market and price changes
let markets = [MarketId::spot(1), MarketId::perp(0)];
client.subscribe_markets(&markets).await.unwrap();
client.subscribe_oracles(&markets).await.unwrap();
}
Setup
Mac (m-series)
Install rosetta and configure Rust toolchain for x86_64
softwareupdate --install-rosetta
# replace `1.84.0` with preferred stable version
rustup install 1.84.0-x86_64-apple-darwin
rustup override set 1.84.0-x86_64-apple-darwin
⚠️ the default toolchain is incompatible due to memory layout differences between solana program (BPF) and aarch64 and will fail at runtime with deserialization errors like: InvalidSize
.
Local Development
drift-rs links to the drift program crate via FFI, build from source (default) or dynamically link with a version from drift-ffi-sys
# Build from source (default)
CARGO_DRIFT_FFI_STATIC=1
# on linux distros may need to run `ldconfig` to link
ldconfig
# Provide a prebuilt drift_ffi_sys lib
CARGO_DRIFT_FFI_PATH="/path/to/libdrift_ffi_sys"
Development
Release
git tag v<MAJOR.MINOR.PATCH> && git push
Updating IDL types
from repo root dir:
./scripts/idl-update.sh
cargo check # build new IDL types
# commit changes...
Dependencies
~43–63MB
~1M SLoC