之前在介绍比特股开源代码时,漏掉了基于Python的uptick和其依赖库 python-bitshares,因为我确实没发现。最近试用了一下uptick, 我认为非常好用,用了之后,我不想用图形界面的钱包了。本文介绍一下uptick和其依赖的库。
作者:Fabian Schuh
这两个项目的作者是 Fabian Schuh,网名 xeroc, github地址: https://github.com/xeroc ,目前比特股理事会成员之一。个人感觉,他写的代码质量比较高。
项目简介
uptick
uptick是基于Python的命令行工具,用于获取比特股区块链上的各种信息,也可以发起交易和转账。
代码地址: https://github.com/xeroc/uptick
python-bitshares
python-bitshares是基于Python的、与比特股API节点交互的库。uptick的底层。
代码地址: https://github.com/xeroc/python-bitshares
文档地址: http://docs.pybitshares.com/en/latest/
安装步骤
- 确保系统安装了Python3 (3.3 3.4 3.5 3.6应该都没问题)
- 确保系统安装了基于Python3的最新版本pip(9.0.1)
- 命令行: pip3 install uptick
- 命令行: pip3 install pycrypto (这一步理论上不需要,应该是某一个库依赖没写好的bug)
安装完成之后,首先需要设置API节点,否则默认是一个欧洲的节点,国内用的话很慢。国内尝试这两种
uptick set node wss://bit.btsabc.org/ws #比特帝国节点uptick set node wss://bts.transwiser.com/ws #transwiser节点
当然,自己编译了并运行了全节点的话,就更快了:
uptick set node ws://127.0.0.1:8090/
这个节点设定同时影响uptick和python-bitshares库,或者说uptick直接修改和使用了库里面的配置。
uptick常用命令用法表
命令 | 含义 | 举例 |
---|
uptick | 获取帮助 | |
uptick −−help | 获取帮助 | |
uptick <COMMAND> −−help | 获取特定子命令的帮助 | uptick trades −−help |
uptick addkey | 增加私钥到钱包,一般用active key用于交易 | |
uptick listkeys | 列出钱包中所有私钥 | |
uptick listaccounts | 列出钱包中所有账号 | |
uptick trades <MARKET> | 查看某个市场的交易历史 | uptick trades BTS:CNY #最近,基于CNY的BTS成交情况 |
uptick orderbook <MARKET> | 查看某个市场的当前限价单 | uptick orderbook BTS:CNY #现在市场上,基于CNY有多少BTS的买单和卖单 |
uptick buy <AMOUNT> <ASSET> <PRICE> <BASE> | 提交买单 | uptick buy 2 BTS 0.4 CNY # 想用0.4CNY/BTS的价格购买2BTS |
uptick configuration | 查看当前配置 | |
uptick set <NAME> <VALUE> | 修改配置 | uptick set node ws://127.0.0.1:8090 # 设置API节点为本地重钱包 |
uptick info | 获取各种信息 | |
uptick info bitcrab | 获取账号bitcrab的相关信息 | |
uptick info BTS | 获取核心资产BTS的相关信息 | |
uptick history <account> | 获取某个账号的历史交易记录 | uptick hisotry bitcrab |
uptick balance <account> | 获取某个账号的当前余额 | uptick balance os |
uptick feeds <ASSET> | 获取某个智能资产的喂价信息 | uptick feeds CNY |
uptick openorders <account> | 获取某个账号的未成交限价单 | uptick openorders a-bot |
python-bitshares代码示例
python-bitshares的文档也写得很好,有python基础的人能很快上手,这里给出两个示例代码。
获取最近一小时的最多50条BTS:CNY交易,计算这些交易的平均价格
!/usr/bin/env python3
from bitshares.market import Marketmarket \= Market('BTS:CNY'from datetime import datetime,timedeltanow \= datetime.utcnow()d \= timedelta(hours\=-1)onehourago \= now + d
trades \= market.trades(limit\=50,start\=onehourago,stop\=now)
def getSum(filledOrders): cny \= 0 bts \= 0 for order in filledOrders: print(order['time']) cny += order['base']['amount'] bts += order['quote']['amount']
return {'cny': cny, 'bts': bts, 'price': cny/bts if bts \>0 else 0, 'size': len(filledOrders) }
print('成交:', getSum(trades))
获取当前市场上BTS:CNY的最多100条限价单,并分别计算买单和卖单的平均价格
!/usr/bin/env python3
from bitshares.market import Marketmarket \= Market('BTS:CNY'
orderbook \= market.orderbook(limit\=50)
区块链最多返回50个买单和卖单,默认limit=25
bids\=orderbook['bids']asks\=orderbook['asks']
def getSum(orders): cny \= 0 bts \= 0 for order in orders: cny += order['base']['amount'] bts += order['quote']['amount']
return {'cny': cny, 'bts': bts, 'price': cny/bts, 'size': len(orders) }
print('买单:', getSum(bids))print('卖单:', getSum(asks))
给读者的思考
感谢阅读到这里的朋友,这么枯燥的技术细节您都读完了,能否思考以下问题呢?
- uptick/python-bitshares可以发起交易,账号存储在本地计算机,安全性如何?
- 如何利用uptick/python-bitshares发起交易?
- 如何利用uptick/python-bitshares发起转账?
虽然我的博客、公众号有一些读者,但很少有留言的,我希望读到这里的朋友留言,给出您的任何想法(不限上面的3个问题),谢谢!
之前在介绍比特股开源代码时,漏掉了基于Python的uptick和其依赖库 python\-bitshares,因为我确实没发现。最近试用了一下uptick, 我认为非常好用,用了之后,我不想用图形界面的钱包了。本文介绍一下uptick和其依赖的库。
## 作者:Fabian Schuh
这两个项目的作者是 Fabian Schuh,网名 xeroc, github地址: [https://github.com/xeroc](https://github.com/xeroc) ,目前比特股理事会成员之一。个人感觉,他写的代码质量比较高。
## 项目简介
### uptick
uptick是基于Python的命令行工具,用于获取比特股区块链上的各种信息,也可以发起交易和转账。
代码地址: [https://github.com/xeroc/uptick](https://github.com/xeroc/uptick)
### python\-bitshares
python\-bitshares是基于Python的、与比特股API节点交互的库。uptick的底层。
代码地址: [https://github.com/xeroc/python\-bitshares](https://github.com/xeroc/python-bitshares)
文档地址: [http://docs.pybitshares.com/en/latest/](http://docs.pybitshares.com/en/latest/)
## 安装步骤
* 确保系统安装了Python3 (3.3 3.4 3.5 3.6应该都没问题)
* 确保系统安装了基于Python3的最新版本pip(9.0.1)
* 命令行: pip3 install uptick
* 命令行: pip3 install pycrypto (这一步理论上不需要,应该是某一个库依赖没写好的bug)
安装完成之后,首先需要设置API节点,否则默认是一个欧洲的节点,国内用的话很慢。国内尝试这两种
uptick set node wss://bit.btsabc.org/ws #比特帝国节点
uptick set node wss://bts.transwiser.com/ws #transwiser节点
当然,自己编译了并运行了全节点的话,就更快了:
uptick set node ws://127.0.0.1:8090/
这个节点设定同时影响uptick和python\-bitshares库,或者说uptick直接修改和使用了库里面的配置。
## uptick常用命令用法表
| 命令 | 含义 | 举例 |
| --- | --- | --- |
| uptick | 获取帮助 | |
| uptick −−help | 获取帮助 | |
| uptick <COMMAND> −−help | 获取特定子命令的帮助 | uptick trades −−help |
| uptick addkey | 增加私钥到钱包,一般用active key用于交易 | |
| uptick listkeys | 列出钱包中所有私钥 | |
| uptick listaccounts | 列出钱包中所有账号 | |
| uptick trades <MARKET> | 查看某个市场的交易历史 | uptick trades BTS:CNY #最近,基于CNY的BTS成交情况 |
| uptick orderbook <MARKET> | 查看某个市场的当前限价单 | uptick orderbook BTS:CNY #现在市场上,基于CNY有多少BTS的买单和卖单 |
| uptick buy <AMOUNT> <ASSET> <PRICE> <BASE> | 提交买单 | uptick buy 2 BTS 0.4 CNY # 想用0.4CNY/BTS的价格购买2BTS |
| uptick configuration | 查看当前配置 | |
| uptick set <NAME> <VALUE> | 修改配置 | uptick set node ws://127.0.0.1:8090 # 设置API节点为本地重钱包 |
| uptick info | 获取各种信息 | |
| uptick info bitcrab | 获取账号bitcrab的相关信息 | |
| uptick info BTS | 获取核心资产BTS的相关信息 | |
| uptick history <account> | 获取某个账号的历史交易记录 | uptick hisotry bitcrab |
| uptick balance <account> | 获取某个账号的当前余额 | uptick balance os |
| uptick feeds <ASSET> | 获取某个智能资产的喂价信息 | uptick feeds CNY |
| uptick openorders <account> | 获取某个账号的未成交限价单 | uptick openorders a\-bot |
## python\-bitshares代码示例
python\-bitshares的文档也写得很好,有python基础的人能很快上手,这里给出两个示例代码。
获取最近一小时的最多50条BTS:CNY交易,计算这些交易的平均价格
#!/usr/bin/env python3
from bitshares.market import Market
market \= Market('BTS:CNY')
from datetime import datetime,timedelta
now \= datetime.utcnow()
d \= timedelta(hours\=\-1)
onehourago \= now + d
trades \= market.trades(limit\=50,start\=onehourago,stop\=now)
def getSum(filledOrders):
cny \= 0
bts \= 0
for order in filledOrders:
print(order\['time'\])
cny += order\['base'\]\['amount'\]
bts += order\['quote'\]\['amount'\]
return {'cny': cny, 'bts': bts,
'price': cny/bts if bts \>0 else 0,
'size': len(filledOrders) }
print('成交:', getSum(trades))
获取当前市场上BTS:CNY的最多100条限价单,并分别计算买单和卖单的平均价格
#!/usr/bin/env python3
from bitshares.market import Market
market \= Market('BTS:CNY')
orderbook \= market.orderbook(limit\=50)
#区块链最多返回50个买单和卖单,默认limit=25
bids\=orderbook\['bids'\]
asks\=orderbook\['asks'\]
def getSum(orders):
cny \= 0
bts \= 0
for order in orders:
cny += order\['base'\]\['amount'\]
bts += order\['quote'\]\['amount'\]
return {'cny': cny, 'bts': bts,
'price': cny/bts,
'size': len(orders) }
print('买单:', getSum(bids))
print('卖单:', getSum(asks))
## 给读者的思考
感谢阅读到这里的朋友,这么枯燥的技术细节您都读完了,能否思考以下问题呢?
* uptick/python\-bitshares可以发起交易,账号存储在本地计算机,安全性如何?
* 如何利用uptick/python\-bitshares发起交易?
* 如何利用uptick/python\-bitshares发起转账?
虽然我的博客、公众号有一些读者,但很少有留言的,我希望读到这里的朋友留言,给出您的任何想法(不限上面的3个问题),谢谢!