德克斯蓝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事件(无需订阅,只需监听)
    • wsOpenwebsocket连接已打开
    • message收到的每条消息
    • wsErrorwebsocket出错
    • wsClosewebsocket连接已关闭

订阅事件

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面