请选择 进入手机版 | 继续访问电脑版

芒果钱包

 找回密码
 立即注册
搜索
查看: 2944|回复: 0

转:python-bitshares 边学边记 (三) / BitShares类

[复制链接]

45

主题

66

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
发表于 2018-3-16 11:59:12 | 显示全部楼层 |阅读模式
本帖最后由 aoao 于 2018-3-27 12:38 编辑

在之前的两篇文章中,我们简单介绍了如何安装python-bitshares 以及python-bitshares的钱包相关操作。

(图源 :pixabay)
这节我们来继续学习python-bitshares 。
BitShares类BitShares类是python-bitshares中最常被使用到的类。
我们可以用下列代码创建一个BitShares类实例
  1. from bitshares import BitShares
  2. bitshares = BitShares()
复制代码
之后就可以用它来访问和操作bitshares区块链了,比如我们在第一篇文章中介绍的bitshares.info())。
下面我们来介绍BitShares类几项常用功能。
投票功能之前在我们uptick系列学习文章中,我们介绍过使用uptick进行投票,比如投见证人票给 @abit
uptick approvewitness in.abit
那么直接使用python-bitshares又该如何处理呢?
只需以下代码就可以投票了,(记得将xxxx换成你的ID)
  1. from bitshares import BitShares
  2. bitshares = BitShares()
  3. bitshares.approvewitness(["in.abit"], "xxxx")
复制代码


如果要取消见证人票,则使用: disapprovewitness
除此之外,还有以下投票/取消投票功能
  • approvecommittee / disapprovecommittee
  • approveworker / disapproveworker
  • approveproposal / disapproveproposal
需要注意一点是,尽管几个投票操作看起来很相似,但是approveproposal / disapproveproposal使用的是Proposal_update operation,而另外几项投票功能则使用的是Account_updateoperation。
比如我们上边的投见证人票,在区块链浏览器中的信息如下:

转账功能转账是我们的常用功能之一。
使用代码转账也很简单,方法定义如下:
def transfer(self, to, amount, asset, memo="", account=None):
转账示例代码如下:
  1. from bitshares import BitShares
  2. bitshares = BitShares()
  3. bitshares.transfer("xxx1", 1, "CNY", "Test transfer!", "xxx2")
复制代码

BitShares类参数以上示例,我们都是用默认设置创建类实例。
除此之外,我们也可以指定一些参数,来对类实例进行一些定制。
比如指定以下参数:
  • 指定nobroadcast=True,不广播交易信息
  • 指定unsigned=True,不签名交易信息
  • 指定expiration=600,指定交易超时时间
  • 指定node=wss://ws.gdex.top,指定API节点
    更多参数请参考BitShares类代码。
参数blocking在测试过程中,遇到一个很奇怪的问题,我通过参数node="wss://openledger.hk/ws"指定使用 wss://openledger.hk/ws这个节点,然后上述示例代码都执行成功(没有任何出错信息的完成),但是我使用区块链浏览器查看账户,发现没有产生任何新操作(更新账户/转账)。
后来我使用默认节点,或者使用节点wss://ws.gdex.top,则一切正常。
我猜测,可能是交易超时,或者其它原因,但是出错都给个提示会更好一些。
后来我发现一个blocking参数,介绍如下:
param str blocking: Wait for broadcasted transactions to be included in a block and return full transaction (can be "head" or "irrversible")
from bitshares import BitShares
bitshares = BitShares(node="wss://openledger.hk/ws", blocking=True)
bitshares.approvewitness(["in.abit"], "xxxx")
于是我写了如上投票代码,并执行

等了好久等来了出错信息。
Exception: The operation has not been added after 10 blocks!
看了一下代码,原来就是在广播交易之后,再遍历新块,看看对应交易是否在新块中。如果10个块还没找到对应交易,则返回出错信息。
总结BitShares类是python-bitshares中最常用的类之一。本文介绍了以下内容:
  • BitShares类的创建
  • 投票功能
  • 转账功能
  • BitShares类参数
  • 参数blocking
更多信息请参考BitShares类代码。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|芒果钱包

GMT, 2019-7-21 19:48 , Processed in 0.123966 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表