Hive Developer Portal
PY: Account Reputation
Would you like to know how to interpret account reputation to more human readable format, then this tutorial is for you.
Full, runnable src of Account Reputation can be downloaded as part of: tutorials/python (or download just this tutorial: devportal-master-tutorials-python-20_account_reputation.zip).
Because blockchains don’t natively store floating point, account reputation is stored on the blockchain as a long integer string which requires special function or formula to convert in more human readable format. We can define a function that will convert this value, but beem already has the ability to interpret reputation automatically.
- App setup - Library install and import
- Account list - List of predefined accouns to select from
- Print output - Print results in output
1. App setup
In this tutorial we will use the following packages:
pick - helps us to select filter interactively.
beem - hive library, interaction with Blockchain.
pprint - print results in better format.
First we import all libraries and initialize Hive class
import pprint from pick import pick # initialize Hive class from beem import Hive from beem.account import Account hive = Hive()
2. Account list
Next we will show predefined account list to select and setup
title = 'Please choose account: ' options = ["hiveio","ecency","busy.org","demo"] # get index and selected filter name option, index = pick(options, title) # option is printed as reference pprint.pprint("Selected: " + option)
This will show us list of accounts to select in terminal/command prompt. And after selection we will fetch account details from Blockchain.
user = Account(option, blockchain_instance=hive)
3. Print output
After we have fetched account details from Blockchain, all we have to do is to use the defined function to interpret account’s
reputation field into meaningful number.
# print specified account's reputation pprint.pprint(user.get_reputation())
Above function will internally cover all edge cases, for example, if account is new their raw reputation is
0 hence, default starting reputation will be
25. If reputation negative that’s also considered.
For reference, the following function will take a raw blockchain reputation value and convert it to the display value:
import math def rep_log10(rep): """Convert raw hived rep into a UI-ready value centered at 25.""" def log10(string): leading_digits = int(string[0:4]) log = math.log10(leading_digits) + 0.00000001 num = len(string) - 1 return num + (log - int(log)) rep = str(rep) if rep == "0": return 25 sign = -1 if rep == '-' else 1 if sign < 0: rep = rep[1:] out = log10(rep) out = max(out - 9, 0) * sign # @ -9, $1 earned is approx magnitude 1 out = (out * 9) + 25 # 9 points per magnitude. center at 25 return round(out, 2)
You can use this to convert from the raw blockchain value. This is now done internally by libraries like beem.
Click the play button below:
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 output in terminal/command prompt screen.