Skip to main content

Library to interact with firefly exchange protocol including its off-chain api-gateway and on-chain contracts

Project description

Firefly Client Library

Firefly logo

GitHub Workflow Status (with branch) pypi version License

Python Client for the Firefly Exchange API and Smart Contracts. ​

Install

The package can be installed from PyPi using pip:

pip install firefly-exchange-client

The package currently supports python >=3.8. Find complete documentation on the library at https://docs.firefly.exchange/.

Getting Started

When initializing the client, users must accept terms and conditions and define network object containing the following values:

{
    "url": "https://goerli-rollup.arbitrum.io/rpc",
    "chainId": 421613,
    "apiGateway": "https://dapi-testnet.firefly.exchange",
    "socketURL": "wss://dapi-testnet.firefly.exchange",
    "webSocketURL": "",
    "onboardingUrl": "https://testnet.firefly.exchange",
},

Users can import predefined networks from constants:

from constants import Networks

For testing purposes use Networks[TESTNET_ARBITRUM] and for production please use Networks[MAINNET_ARBITRUM] ​ ​

from firefly_exchange_client import FireflyClient
from constants import Networks
from pprint import pprint
import asyncio

# initialize client
client = FireflyClient(
      True, # agree to terms and conditions
      Networks["TESTNET_ARBITRUM"], # network to connect with e.g. TESTNET_ARBITRUM | MAINNET_ARBITRUM
      "0x.....", # PK for the account
      True, # on boards user on firefly. Must be set to true for first time use
      )

print('Account Address:', client.get_public_address());

# # gets user account data on-chain
# if running in async method
data = await client.get_user_account_data() 
# if running in a sync method
# data = asyncio.run(client.get_user_account_data())

pprint(data)

Placing Orders:

from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE
from interfaces import OrderSignatureRequest
import asyncio

# initialize
client = FireflyClient(....) 

# creates a LIMIT order to be signed
signature_request = OrderSignatureRequest(
    symbol=MARKET_SYMBOLS.ETH,  # market symbol
    price=0,  # price at which you want to place order
    quantity=0.01, # quantity
    side=ORDER_SIDE.BUY, 
    orderType=ORDER_TYPE.MARKET,
    leverage=user_leverage
)  

# create signed order
signed_order = client.create_signed_order(signature_request);

print("Placing a market order")
# place signed order on orderbook
resp = await client.post_signed_order(signed_order)

# returned order with PENDING state
print(resp)

Listening To Events:

from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE
from interfaces import OrderSignatureRequest

def callback(event):
    print("Event data:", event)

# initialize
client = FireflyClient(....) 

# make connection with firefly exchange
await client.socket.open()

# subscribe to local user events
await client.socket.subscribe_user_update_by_token()

# listen to user order updates and trigger callback
await client.socket.listen(SOCKET_EVENTS.ORDER_UPDATE.value, callback)

#
# place some orders to exchange, that will trigger callback
# resp = client.post_signed_order(signed_order)
#

time.sleep(10)

# unsubscribe from user events
await client.socket.unsubscribe_user_update_by_token()

# close socket connection
await client.socket.close()

Look at the example directory to see more examples on how to use this library.

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

firefly_exchange_client-0.0.17.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firefly_exchange_client-0.0.17-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file firefly_exchange_client-0.0.17.tar.gz.

File metadata

File hashes

Hashes for firefly_exchange_client-0.0.17.tar.gz
Algorithm Hash digest
SHA256 e3e53bcfae16fb1bec98afdd2a3d66771b303e3ec6ee3be33bcfa40220bf56a5
MD5 435b9ceda79dedd96533047b6be1d173
BLAKE2b-256 f501c577a9f708bb0c22f01bea2f36507a37035d1c5418a746bae1ebce5eb517

See more details on using hashes here.

File details

Details for the file firefly_exchange_client-0.0.17-py3-none-any.whl.

File metadata

File hashes

Hashes for firefly_exchange_client-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 3484568c37f9ccc1fc1a70b5bae122688bf0de093eedc30daae5074c341cedb2
MD5 9c8a01f4987113e78250d85b08a94aba
BLAKE2b-256 c94b89782f3a80a6479c5cd218a958a200a8b35f7a27ed56ceacc07147f55784

See more details on using hashes here.

Supported by

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