This is part of a series of tutorials.
The goal is to produce a hands-on guide for people who want to jump straight into developing tools for STEEM.
First, I have to apologize.
The homework was a bit hard, I thought it would be easier.
I will try to go through this quickly, just to not leave anybody hanging.
This is how I solved it:
from beem.account import Account from beem.blockchain import Blockchain blockchain = Blockchain() head_block = blockchain.get_current_block_num() test_account = Account("holger80") rewards =  reward_sum = 0 for curation_reward in test_account.history_reverse(start = head_block, stop = head_block - 30000, use_block_num = True, only_ops = "curation_reward"): rewards.append(curation_reward['reward']['amount']) for reward_num in range(10): # starts at 0 reward_sum += int(rewards[reward_num]) print('\n', reward_num + 1, ':', rewards[reward_num]) print('\naverage:', reward_sum/ 10, '\n... this look like its in VESTS ...')
For this example, I am using the head-block as orientation (start).
I then use
history_reverse to crawl through the account's history (30000 blocks backwards / stop = start - 30000) and append all curation rewards during that time to my list
I then use a counting loop to iterate through the first 10 rewards (using
reward_num for indexing).
Sum them up and divide by 10 and the result is a number, that I hope is VESTS.
This is not very elegant, but works ok, I guess.
Remember to always put this in front:
from beem import Steem from beem.instance import set_shared_steem_instance steemit_api = Steem(node=["https://api.steemit.com"]) set_shared_steem_instance(steemit_api)
date_time objects - the cleaner way to code this, would make use of this instead of the head-block. I stuck to integers for now, because I did not feel like explaining
STEEM's block-time is 3 seconds. You can trust STEEM's timestamps. Part of the witnesses' job is to maintain a well synchronized clock.
There are exactly 28800 blocks in a day, but 30,000 is a good enough approximation for me. There might not be 10 curation rewards in this short time-frame for all accounts. Change this number, if you need to.
for i in range(k):
I think this is a very neat method for a counting loop.
I can read it almost like an English sentence.
This is just beautiful.
a += b replaces
a = a + b
In this example, the history method returned the reward-amount as a number only. They are VESTS, I assume.
That is not congruent with how this normally works. I expected a STEEM asset as return. Without use of beem's
asset class, those would have been a bit complicated to calculate with, though.
I shall be more careful, should I give out another homework :)
If you do not understand something of the above, just ask here or in chat.
Where is my STEM vote ? I was promised rewards :D