德克斯蓝python的API包装器
dexblue-api-python的Python项目详细描述
德克斯蓝python API包装器
这是用于与德克斯蓝应用程序编程接口。在
欲了解更多信息,请前往API Documentation
安装
通过pip安装
pip install dexblue-api-python
简介
在德克斯蓝是一个不可信的,非托管的交换。这意味着,每个移动资金的输入都需要用你的私钥签名。在
您要么直接从您的钱包地址签署订单,要么使用Delegated Signing Key。在
对于最直接的集成,不需要您直接与区块链交互,您只需使用我们的webinterface进行存款和取款,并在设置中注册Delegated Signing Key⚙ 第节。在
如果您想处理您的机器人存款和取款,请查看我们的文档this page。在
初始化连接
可以用不同的参数初始化连接。在
^{pr2}$可以加载加密密钥来验证您的连接
key=dexblue.utils.readPrivateKeyFromFile(keyfile,password)db=dexblue.WsAPI(delegate=key)
调用方法
这个库为every method offered by the dex.blue API提供了一个包装器函数,可以用例如db.methods.getOrderBookSnapshot(parameters, callback, <callback arguments>...)
调用该函数。在
有关可用方法和参数的完整列表,请参阅websocket API documentation。在
此外,该库还提供了一些帮助函数来处理诸如哈希和签名之类的困难和烦人的事情:
db.authenticate(privKey)
-当您将帐户传递给构造函数时自动调用db.authenticateDelegate(privKey)
-当您将委托传递给构造函数时自动调用db.placeOrder(order, callback)
-这个函数将所有构建和签署订单的压力从你身上抽象出来。非常推荐使用这个!在db.hashOrder(order) returns hash
-此函数帮助您正确地散列顺序输入。然后你需要自己在订单上签字。在
事件
您可以使用以下函数订阅任何服务器和websocket事件:
活动:
- 市场事件:
book20d5
。。。book20d1
订货单,深度为20,5。。。1个十进制精度(用于速率)book100d5
。。。book100d1
订货单,深度为10,5。。。1个十进制精度(用于速率)bookd5
。。。bookd1
完整的订单,有5个。。。1个十进制精度(用于速率)trades
交易市场的饲料ticker
市场行情
- 其他活动:
rate
订阅ETH到fiat的转换率,例如ETHUSD,ETH与配置转换货币. (子带:{markets:["ETHUSD"],events:["rate"]}
)chainStats
订阅服务器块高度和汽油价格(sub with:{markets:["ethereum"],events:["chainStats"]}
)
- Websocket事件(无需订阅,只需监听)
wsOpen
websocket连接已打开message
收到的每条消息wsError
websocket出错wsClose
websocket连接已关闭
订阅事件
db.methods.subscribe({"markets":["ETHDAI","MKRETH"],"events":["trades","book20d5"]})db.on('trade',print)db.on('book',print)
回叫
回调必须至少有一个参数,即接收到的数据。以下参数是从回调定义传递的。在
defcallback(packet,parameter1,parameter2,...):print(packet,parameter1,parameter2)db.on('listed',callback,"parameter1","parameter2")
packet参数是dict,其结构如下
{"chan":<CHANNEL>,# The channel id is documented in the dex.blue api docs<EVENTNAME>:<PARSEDPACKET>,"packet":<UNPARSEDPACKET># the same packet which the server sent}
下订单
defcallback(packet):# If you passed an account of delegate to the constructor, you will authenticated automatically# All private commands should be sent after we are successfully authenticated# If no expiry is passed, a default expiry of one month will be applied# This function supports either very abstracted inputdb.placeOrder({"market":"ETHDAI","amount":-1,# positive amount implies buy order, negative sell"rate":300},print)# But also supports all the granular API parametersorderIdentifier=int(time.time())# client-set order identifierdb.placeOrder({"cid":orderIdentifier,"sellToken":"0x0000000000000000000000000000000000000000",# ETH"sellAmount":"1000000000000000000",# 1 ETH"buyToken":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359",# DAI"buyAmount":"300000000000000000000",# 300 DAI"expiry":int(time.time()+86400*2),# order is valid 2 days (different from the timeInForce parameter)"hidden":False,"postOnly":True,# order is either maker or canceled"rebateToken":"buy",# we want to receive our rebate in DAI (the token we buy)# ... more possibilities are listed here: https://docs.dex.blue/websocket/#placeorder},print)db.on('auth',callback)
错误处理
defreconnect_cb(packet):print('Reconnect in: '+str(packet["reconnect"]["timeout"])+'s. Message: '+packet["reconnect"]["message"])db.on('reconnect',reconnect_cb)# server sent a reconnect instructiondb.on('error',print)# handle error (probably resulting in a disconnect)db.on('wsClose',print)# handle disconnect
- 项目
标签: