Skip to main content

Vertex Protocol SDK

Project description

Vertex Protocol Python SDK

This is the Python SDK for the Vertex Protocol API.

See SDK docs to get started.

Requirements

  • Python 3.9 or above

Installation

You can install the SDK via pip:

pip install vertex-protocol

Basic usage

Import the necessary utilities:

from vertex_protocol.client import create_vertex_client, VertexClientMode
from vertex_protocol.contracts.types import DepositCollateralParams
from vertex_protocol.engine_client.types.execute import (
    OrderParams,
    PlaceOrderParams,
    SubaccountParams
)
from vertex_protocol.utils.expiration import OrderType, get_expiration_timestamp
from vertex_protocol.utils.math import to_pow_10, to_x18
from vertex_protocol.utils.nonce import gen_order_nonce

Create the VertexClient providing your private key:

print("setting up vertex client...")
private_key = "xxx"
client = create_vertex_client(VertexClientMode.MAINNET, private_key)

Perform basic operations:

# Depositing collaterals
print("approving allowance...")
approve_allowance_tx_hash = client.spot.approve_allowance(0, to_pow_10(100000, 6))
print("approve allowance tx hash:", approve_allowance_tx_hash)

print("querying my allowance...")
token_allowance = client.spot.get_token_allowance(0, client.context.signer.address)
print("token allowance:", token_allowance)

print("depositing collateral...")
deposit_tx_hash = client.spot.deposit(
   DepositCollateralParams(
      subaccount_name="default", product_id=0, amount=to_pow_10(100000, 6)
   )
)
print("deposit collateral tx hash:", deposit_tx_hash)

# Placing orders
print("placing order...")
owner = client.context.engine_client.signer.address
product_id = 1
order = OrderParams(
   sender=SubaccountParams(
      subaccount_owner=owner,
      subaccount_name="default",
   ),
   priceX18=to_x18(20000),
   amount=to_pow_10(1, 17),
   expiration=get_expiration_timestamp(OrderType.POST_ONLY, int(time.time()) + 40),
   nonce=gen_order_nonce(),
)
res = client.market.place_order({"product_id": product_id, "order": order})
print("order result:", res.json(indent=2))

See Getting Started for more.

Running locally

  1. Clone github repo

  2. Install poetry


$ curl -sSL https://install.python-poetry.org | python3 -

  1. Setup a virtual environment and activate it

$ python3 -m venv venv
$ source ./venv/bin/activate

  1. Install dependencies via poetry install
  2. Setup an .env file and set the following envvars
CLIENT_MODE='mainnet|sepolia-testnet|devnet'
SIGNER_PRIVATE_KEY="0x..."
LINKED_SIGNER_PRIVATE_KEY="0x..." # not required

Run tests

$ poetry run test

Run sanity checks

  • poetry run client-sanity: runs sanity checks for the top-level client.
  • poetry run engine-sanity: runs sanity checks for the engine-client.
  • poetry run indexer-sanity: runs sanity checks for the indexer-client.
  • poetry run contracts-sanity: runs sanity checks for the contracts module.

Build Docs

To build the docs locally run:

$ poetry run sphinx-build docs/source docs/build

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vertex_protocol-2.1.8.tar.gz (61.2 kB view details)

Uploaded Source

Built Distribution

vertex_protocol-2.1.8-py3-none-any.whl (90.7 kB view details)

Uploaded Python 3

File details

Details for the file vertex_protocol-2.1.8.tar.gz.

File metadata

  • Download URL: vertex_protocol-2.1.8.tar.gz
  • Upload date:
  • Size: 61.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.5.0-1025-azure

File hashes

Hashes for vertex_protocol-2.1.8.tar.gz
Algorithm Hash digest
SHA256 855dc850e730027e451e4b966209b7db89fb4bc38755fbc85246b96fa41850b6
MD5 b48965081b107457450cdcc9ef4fff0c
BLAKE2b-256 4269ee6e2ed2d56b0bd211b18fe262722da169a37aec055b116118df66c511bf

See more details on using hashes here.

File details

Details for the file vertex_protocol-2.1.8-py3-none-any.whl.

File metadata

  • Download URL: vertex_protocol-2.1.8-py3-none-any.whl
  • Upload date:
  • Size: 90.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.5.0-1025-azure

File hashes

Hashes for vertex_protocol-2.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d149850ef21a31ebcb4a25ccbcea24168c5a67b8e3c1776a362c667357f26f1f
MD5 7fca530376ac6e250a777efb161efff4
BLAKE2b-256 4ef418ad47269db7de73ffbb05fe6bed52eb984a69bfe72d6e44d4c55b4f5279

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page