#parameters #vertex #protocols #execute #call #sanity #signer

bin+lib vertex-sdk

Official Rust SDK for the Vertex Protocol API

17 releases

new 0.3.3 Mar 6, 2025
0.3.1 Jan 30, 2025
0.2.8 Oct 14, 2024
0.2.3 Jul 29, 2024
0.1.3 Mar 12, 2024

#892 in Magic Beans

Download history 87/week @ 2024-11-19 159/week @ 2024-11-26 213/week @ 2024-12-03 179/week @ 2024-12-10 113/week @ 2024-12-17 45/week @ 2024-12-24 206/week @ 2024-12-31 59/week @ 2025-01-07 73/week @ 2025-01-14 87/week @ 2025-01-21 181/week @ 2025-01-28 77/week @ 2025-02-04 240/week @ 2025-02-11 89/week @ 2025-02-18 97/week @ 2025-02-25 180/week @ 2025-03-04

612 downloads per month

MIT/Apache

3MB
41K SLoC

Vertex Protocol Rust SDK

Crates.io

This is the Rust SDK for the Vertex Protocol API.

Documentation

Quickstart

Instantiate a client on the chain you would like to interact with. For example, ClientMode::Prod to use Arbitrum and ClientMode::BaseProd to use Base, etc. A signer (private key) is required for executes. A signer is not required for queries. For requests with many parameters, use the client to build and send requests. For simple queries (1-2 params) like get_market_price, call directly from the client.

See basic_usage.rs for an E2E example including depositing into Vertex.

use vertex_sdk::prelude::*;

async fn main() {
    let client = VertexClient::new(ClientMode::Prod)
        .with_signer(private_key())
        .await
        .unwrap();

    const BTC_PERP: u32 = 2;

    // query market data
    let market_price = client.get_market_price(BTC_PERP).await.unwrap();

    // place orders
    let place_order_response = client
        .place_order_builder()
        .product_id(BTC_PERP)
        .amount(to_i128_x18(1))
        .price_x18(market_price.ask_x18)
        .execute()
        .await
        .unwrap();

    let digest = place_order_response.unwrap().digest;

    // cancel orders
    client
        .cancellation_builder()
        .digests(vec![digest])
        .product_ids(vec![BTC_PERP])
        .execute()
        .await
        .unwrap();
}

Installation

Add the following line to your Cargo.toml file:

[dependencies]
vertex_sdk = "0.3.3"

Usage

See the examples and sanity directories.

Running locally

Run sanity checks

  • cargo run -- --execute-sanity: runs sanity checks for executes.
  • cargo run -- --query-sanity: runs sanity checks for engine queries.
  • cargo run -- --indexer-sanity: runs sanity checks for indexer queries.

Dependencies

~33–51MB
~1M SLoC