Hello,
This is the 6. post of "steem-python for dummies" series. If you didn't read the older ones take your time and have a look.
- steem-python for dummies #1 - Introduction and Basic Operations
- steem-python for dummies #2 - Playing with account data
- steem-python for dummies #3 - Coding an upvote bot
- steem-python for dummies #4 - Private Memos
- steem-python for dummies #5 - Bundling Blockchain Operations
In this post, we will learn about creating delegations with steem-python.
Delegating
With the Hard fork 18, steem accounts gained a new ability to delegate their steem power. (SP)
I won't dive into details about the specs of delegation. If you're clueless about it, pay a visit to this post to learn the details.
Current tools to delegate
Steemit doesn't support delegation via Condenser. You can use well-known steemconnect to delegate SP or other 3rd party tools.
However, you don't need to use 3rd party services to create/remove delegations. steem-python already covered that operation well.
Creating delegations
All process can be done in two steps:
- Convert SP to VESTS
- Create a delegate_vesting_shares operation and broadcast it to the network.
Converting SP to VESTS is really easy with steem-python. You have a Converter class to do it.
s = Steem(nodes=["https://rpc.buildteam.io"],
keys=["privkey_active"])
vests = '{} VESTS'.format(Converter().sp_to_vests(5))
s.delegate_vesting_shares('ned', vests, account="emrebeyler")
That's it.
steemd representation of the delegation. I hope he will use it wisely. I don't have much SP.
Removing delegations
Steem blockchain has a convention on operations, you do set weights to 0 if you want to reverse an operation. Like vote. That's the same, in order to cancel the delegation we will use the same operation but set the vests as 0.
s = Steem(nodes=["https://rpc.buildteam.io"],
keys=["privkey_active"])
vests = '{} VESTS'.format(Converter().sp_to_vests(5))
s.delegate_vesting_shares('ned', vests, account="emrebeyler")
Removed my 5 SP delegation for ned. I want it back. Sorry.
Converting SP to VESTS
Even though steem-python handles the conversion here, let's find out how it really does under the hood.
Calculation steps for converting SP to VESTS.
steem daemon has a method named as get_dynamic_global_properties which returns useful info about latest state of the network.
What we need from that call are:
- total_vesting_fund_steem
- total_vesting_shares
from steem.amount import Amount
info = s.get_dynamic_global_properties()
total_vests = Amount(info["total_vesting_shares"]).amount
total_vesting_fund = Amount(info["total_vesting_fund_steem"]).amount
I have them in variables now. In order to find steem per vest ratio, I will divide total_vests to total_vesting_fund.
total_vests / total_vesting_fund
Out[21]: 2052.432100474714
Now, I have the steem per vest value. Let's multiply with the SP amount I delegated earlier in this post.
In [22]: 5 * total_vests / total_vesting_fund
Out[22]: 10262.16050237357
Numbers match with the Converter's calculation.
That's all for this post. Feel free to ask questions or request topics about steem-python for the incoming posts.
Posted on Utopian.io - Rewarding Open Source Contributors
Thanks for your post! I have a question btw. How could I know who I am delegating with the python-steem? Thanks in advance.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
great tutorial, as usual!
Only slightly related: Are you aware of a way to make steem-python treat a certain block number as "head" in order to get conversion rates / reputation / SP /... at that point in time?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I dont know about it. Will have a look if its possible though.
You can try asking it at steemdevs discord channel meanwhile.
Thank you.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for your advice!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thanks!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thank you very helpful tutorial
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @emrebeyler I am @utopian-io. I have just upvoted you!
Achievements
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Want to stay on top of your game? You should definitely start learning AI @neurallearner
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Birthdaypost !BEER
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
View or trade
BEER
.Hey @emrebeyler, here is a little bit of
BEER
from @isnochys for you. Enjoy it!Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit