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

pypi version GitHub Workflow Status (with branch) License Firefly logo

Python client library to interact with firefly api gateway to place orders on firefly exchange and to interact with on-chain firefly contracts. ​

How to use

The package can be installed from PyPI using pip:

pip install firefly-exchange-client

Client initialization: When initializing the client, user must accept terms and conditions, provide a network object of type containing the following key/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",
},

User can import predefined networks from constants like:

from constants import Networks

For testing purposes use Networks[TESTNET_ARBITRUM] and for prod use Networks[MAINNET_ARBITRUM]

Provide private key of the account used to sign the orders. The key never leaves the client and is only used to sign transactions/orders off-chain. The last argument is a boolean which must be passed as True when connecting the account specified by private key for the first time on firefly protocol. For future client initialization, this last flag can be passed as False as the account is already initialized. ​

from firefly_exchange_client import FireflyClient
from constants import Networks
from pprint import pprint
​
# initialize client
client = FireflyClient(
      True, # agree to terms and conditions
      Networks["TESTNET_ARBITRUM"], # network to connect with e.g. TESTNET_ARBITRUM | MAINNET_ARBITRUM
      "0x.....", # private key of wallet
      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
data = 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
​
# 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 = 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
client.socket.open()
​
# subscribe to local user events
client.socket.subscribe_user_update_by_token()
​
# listen to user order updates and trigger callback
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
client.socket.unsubscribe_user_update_by_token()
​
# close socket connection
client.socket.close()
​

Look at example directory to learn more about client usage.

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.9.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

firefly_exchange_client-0.0.9-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for firefly_exchange_client-0.0.9.tar.gz
Algorithm Hash digest
SHA256 96e47417d625d08ea6d11ee671cdf3c14811682e250784bcdb1d14bc4f8e9880
MD5 c55ea39d1465073e27fe4f63113a2744
BLAKE2b-256 94f6d97f4b123376f83c59883456110465e65590e9569dbd92aa2b08a542142e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for firefly_exchange_client-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c8a062d2a0c011054dc1621cad0379588cf39b73a8d84f9211ed16349b2c1039
MD5 957f902305984c462abc75cef41b2e43
BLAKE2b-256 34e697657653feb6c647bded380c2550419da1da40d7bad311a3cbe7d76cc7ee

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