Library to interact with firefly exchange protocol including its off-chain api-gateway and on-chain contracts
Project description
Firefly Client Library
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 Using Socket.io:
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.
Listening To Events Using Web Sockets:
from firefly_exchange_client import FireflyClient
from constants import Networks
from enumerations import MARKET_SYMBOLS, ORDER_SIDE, ORDER_TYPE, SOCKET_EVENTS
from interfaces import OrderSignatureRequest
import time
def callback(event):
print("Event data:", event)
# initialize
client = FireflyClient(....)
# make connection with firefly exchange
client.webSocketClient.initialize_socket(on_open=on_open)
def on_open(ws):
# subscribe to local user events
client.webSocketClient.subscribe_user_update_by_token()
# listen to user order updates and trigger callback
client.webSocketClient.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.webSocketClient.unsubscribe_user_update_by_token()
# close socket connection
client.webSocketClient.stop()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file firefly_exchange_client-0.0.20.tar.gz
.
File metadata
- Download URL: firefly_exchange_client-0.0.20.tar.gz
- Upload date:
- Size: 30.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
d1679ff16794a79ce8057c134a46f14cbc2086c7e60d36b1c356913be97aba8e
|
|
MD5 |
18c2b32bf939bd1108e95b9f1da40e43
|
|
BLAKE2b-256 |
e551dc9fba13cabd9a2b9ae17533b80143fae8529af31a52fd46c12fcc18966a
|
File details
Details for the file firefly_exchange_client-0.0.20-py3-none-any.whl
.
File metadata
- Download URL: firefly_exchange_client-0.0.20-py3-none-any.whl
- Upload date:
- Size: 32.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
adfe83b5526d45a8553fb9e77fb0b060c4b1c4a8b1920644c8390c89b79376a3
|
|
MD5 |
895d215d893c9c2890af867d1b14d900
|
|
BLAKE2b-256 |
b542811fcffa24b32899d80224d0ca58973b7c97d33571e09a3e6e3d8aba8150
|