Python Steem API介绍系列#4 - 转账操作篇

今天来说说如何使用Python API进行账户相关的操作。和帐户操作相关的方法都封装在了Commit这个类中,大家可以参考这个类的源代码

进行转账操作

要想进行转账操作,前面提到的POSTING key就不行了,这里需要获取另外一个key,也就是”Active key”,同样,点”Wallet” -> ”Permissions”,就会看到Active key,不是系统默认显示的key,点“LOGIN TO SHOW”,登陆后就可以看到一个以数字5开头的密码了。

有了这个key,就可以进行转账操作了。下面首先来调戏一下booster这个机器人,它和randowhale类似,你转钱给它,它就会Upvote你。下面用前面发过的测试贴来验证一下booster的upvote是不是够给力。

from steem import Steem

user = 'yuxi'

wif = {
    "active": "把你的Active key复制到这里"
}

steem = Steem(keys=wif)
steem.transfer('booster', 1 , 'SBD', memo='https://steemit.com/test/@yuxi/python-api-test', account=user)

运行完毕后,查看一下,在我的history里面显示转账成功。

然后耐心的等了两个多小时,看到booser来upvote了我的帖子,因为只有它自己upvote,所以很清楚的看到它这一下upvote还挺给力,我付了1 SBD,这下upvote却带来了$1.62。

下面再来试试在Steem不同账号之间的转账,比如,把1 SBD转到自己的Saving账户中去:

steem.transfer_to_savings(1, 'SBD', 'Python API test', account=user)

自动Redeem收入

我不知道大家怎么看待Steemit的这个功能,每次有收入到账了,还需要自己点下这个按钮才能真正入账。我觉得应该在用户的profile中添加一个选项,类似“Redeem automatically”,让用户自己来设置是想手工claim还是想让系统自动claim。

Anyway,下面来看看如何使用Python API来自动claim那些到账的rewards。

from steem import Steem
from steem.account import Account

user = 'yuxi'
account = Account(user)

wif = {
    "posting": "将你的POSTING key复制到这里"
}

try:
  steem = Steem(keys=wif)

  sbd   = account.balances["rewards"]["SBD"]
  st      = account.balances["rewards"]["STEEM"]
  vests = account.balances["rewards"]["VESTS"]

  if sbd >0 or st >0 or vests > 0:
    print('claiming rewards ... ')
    steem.claim_reward_balance(account=user)
  else:
    print('nothing to claim')
except:
  print('oops, something not right.')

接下来就可以添加一个Cron job,比如:每天的凌晨1点让系统自动执行你的这个程序,从而省去了手工claim rewards的麻烦。

通过API进行交易的初步设想

很多人都用过 blocktrades 的服务把SBD交易成比特币,在blocktrades的基本流程中,首先要根据你的交易信息,比如SBD -> BTC以及你的比特币钱包地址来生成一个memo,然后再把交易金额转到 @blocktrades 并把memo字段填上前面获取的memo值。不知道有哪位大神用过 blocktrades.us的API,如何通过调用API来生成 memo?(How to get memo field value via blocktrades API? ) @oflyhigh @myfirst @blocktrades

简单的伪代码如下,里面没有考虑影响是否交易的其他因素,比如:SBD/BTC的汇率是否合适等

THRESHOLD = 100
IF  > THRESHOLD
  MEMO = CALL_BLOCKTRADE_API(MY_BTC_ADDRESS, FROM, TO, AMOUNT)
  TRANSFER('blocktrades', , 'SBD', MEMO, account)
END

https://steemit.com 首发。非常感谢阅读,欢迎FOLLOW, Resteem和Upvote @yuxi 激励我创作更多更好的内容。

H2
H3
H4
3 columns
2 columns
1 column
11 Comments