11个版本
0.2.3 | 2022年10月6日 |
---|---|
0.2.1 | 2022年9月1日 |
0.2.0 | 2022年6月3日 |
0.1.7 | 2022年6月2日 |
0.1.0 | 2022年4月6日 |
#729 在 #sdk
每月46次下载
160KB
4K SLoC
Rust客户端用于dYdX(v3 API)。
安装
从crates.io安装dydx-v3-rust。将以下行添加到您的Cargo.toml
文件依赖项部分
[dependencies]
dydx-v3-rust = { git = "https://github.com/junta/dydx-v3-rust" }
tokio = { version = "1.18.2", features = ["full"] }
用法
公共API
调用Get Markets API的示例代码
use dydx_v3_rust::{types::*, ClientOptions, DydxClient};
#[tokio::main]
async fn main() {
let options: ClientOptions = ClientOptions {
network_id: None,
api_timeout: None,
api_key_credentials: None,
stark_private_key: None,
eth_private_key: None,
};
let client = DydxClient::new("https://api.dydx.exchange", options);
let response = client
.public
.get_markets(Some(DydxMarket::BTC_USD))
.await
.unwrap();
dbg!(response);
}
私有API
调用Get Accounts API然后创建新订单API的示例代码(在实际代码中,建议使用pattern match处理响应而不是unwrap()。)
use chrono::{DateTime, Duration, Utc};
use dydx_v3_rust::{types::*, ClientOptions, DydxClient};
#[tokio::main]
async fn main() {
let api_key = types::ApiKeyCredentials {
key: "YOUR-API-KEY",
secret: "YOUR-API-SECRET",
passphrase: "YOUR-API-PASSPHRASE",
};
let options = ClientOptions {
network_id: Some(1), // mainnet: 1, testnet: 5
api_timeout: None,
api_key_credentials: Some(api_key),
stark_private_key: Some("YOUR-STARK-PRIVATE-KEY"),
eth_private_key: None, // specify if you call onboarding or ethPrivate functions
};
let client = DydxClient::new("https://api.dydx.exchange", options);
let private = &client.private.unwrap();
let response = private.get_account("YOUR-ETHEREUM-ADDRESS").await.unwrap();
dbg!(&response);
let datetime_now: DateTime<Utc> = Utc::now();
let expiration = datetime_now + Duration::minutes(3);
let expiration_unix = expiration.timestamp();
let position_id = response.account.position_id.as_str();
let order_params = ApiOrderParams {
position_id: position_id,
market: DydxMarket::BTC_USD,
side: OrderSide::BUY,
type_field: OrderType::MARKET,
time_in_force: TimeInForce::FOK,
post_only: false,
size: "0.01",
price: "100000",
limit_fee: "0.1",
client_id: None,
cancel_id: None,
trigger_price: None,
trailing_percent: None,
expiration: expiration_unix,
};
let order = private.create_order(order_params).await.unwrap();
dbg!(order);
}
更多示例请参阅测试文件夹
要调用以下API,您需要通过PyO3和web3.py生成签名的Python共享库。
- 创建新订单或提现或转账API,需要STARK签名
- Onboarding或EthPrivate(apiKeys)模块的API,需要EIP-712兼容的以太坊签名
以下是使用pyenv的安装示例步骤
#install pyenv
brew install pyenv
# export PATH
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
# install python3.9.9 with shared-library
env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.9
pyenv local 3.9.9
完整安装指南:https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv
然后运行pip install。
pip install -r requirements.txt
运行测试
cargo test
依赖项
~10–23MB
~354K SLoC