Hive Developer Portal
How to get a list of active or expiring vesting delegations using Python.
In this tutorial we will explain and show you how to pull a list of both active and expiring vesting delegations from the Hive blockchain using the
steem class found within the steem-python library.
The Hive python library has a built-in function to pull information from the blockchain. We are using the
get_expiring_vesting_delegations methods found within the
steem class in the library. Each of these functions are executed separately. It should be noted that when a delegation is cancelled the VESTS will only be available again after 7 days. The value of the delegation can also be changed at any time, either decreased or increased. To get active delegations we need the following parameters:
- account - The user account that the delegation list is being queried for
- from-account - The account name from where to start the search. This parameter can be left empty to pull a list from the first delegatee
- limit - The maximum amount of delegations that will be returned by the query
The function to query the expiring delegations use the the same parameters except that the
start_account is replaced by a
start_date. If this value is greater than 7 days from present, it will always include all delegations that are pending expiration.
- App setup - Library install and import. Connection to production
- User input - Input user and limit parameters
- Delegation lists - Selection of the type of list and blockchain query
In this tutorial we use 2 package:
steem- steem-python library and interaction with Blockchain
pick- helps select the query type interactively
We import the libraries and connect to the
from pick import pick from steem import Hive import pprint client = Hive()
pprint is used to print the query results in an easier to read format
limit parameters are assigned via input from the console/terminal. We also check if the username provided does in fact exist on the blockchain using the
get_account method also found within the
steem class. This will return an null value if the name does not exist.
#capture username username = input('Username: ') #check username result = client.get_account(username) if not result: print('Invalid username') exit() #capture list limit limit = input('Max number of vesting delegations to display: ')
We use two different functions to query active and expiring delegations, so the user is given a choice on which of these lists he wants to view.
#list type title = 'Please choose the type of list: ' options = ['Active Vesting Delegations', 'Expiring Vesting Delegations'] #get index and selected list name option, index = pick(options, title) print('\n' + 'List of ' + option + ': ' + '\n')
Based on the result of the choice, the relevant blockchain query is executed and the result of the query displayed on the console/terminal.
if option=='Active Vesting Delegations' : #active delegations delegations = client.get_vesting_delegations(username, '', limit) if len(delegations) == 0: print('No ' + option) else: pprint.pprint(delegations) else: #expiring delegations delegations = client.get_expiring_vesting_delegations(username, "2018-01-01T00:00:00", limit) if len(delegations) == 0: print('No ' + option) else: pprint.pprint(delegations)
For both the queries the starting points were defined in such a way as to include all available data but this can be changed depending on the user requirements.
To Run the tutorial
- review dev requirements
git clone https://gitlab.syncad.com/hive/devportal.git
pip install -r requirements.txt
- After a few moments, you should see a prompt for input in terminal screen.