Learn how to interpret account reputation.
This tutorial runs on the main Steem blockchain. And accounts queried are real users with reputation.
This tutorial will show the method of capturing a queried tag name and matching it to the Steem. We are using the call
function provided by the dsteem
library to pull accounts from the Steem blockchain. A simple HTML interface is used to both capture the string query as well as display the completed search.
- App setup Configuration of
dsteem
to use the proper connection and network. - Search account Collecting the relevant search criteria
- Interpret account reputation Running the search and interpreting reputation.
- Output Displaying the results
Below we have dsteem
pointing to the production network with the proper chainId, addressPrefix, and endpoint. There is a public/app.js
file which holds the Javascript segment of this tutorial. In the first few lines we define the configured library and packages:
const dsteem = require('dsteem');
let opts = {};
//connect to production server
opts.addressPrefix = 'STM';
opts.chainId =
'0000000000000000000000000000000000000000000000000000000000000000';
//connect to server which is connected to the network/production
const client = new dsteem.Client('https://api.steemit.com');
Collecting of the search criteria happens via an HTML input. The form can be found in the index.html
file. The values are pulled from that screen with the below:
const max = 5;
window.submitAcc = async () => {
const accSearch = document.getElementById('username').value;
In order to get accounts, we run the search with the search field
and maximum
list items as parameters.
const _accounts = await client.database.call('lookup_accounts',[accSearch, max]);
The result of the search is an array of accounts. After that we use get_accounts
to pull account data from Steem.
const acc = await client.database.call('get_accounts',[_accounts]);
And we loop through each account to convert their reputation
to human readable format with following function:
function log10(str) {
const leadingDigits = parseInt(str.substring(0, 4));
const log = Math.log(leadingDigits) / Math.LN10 + 0.00000001;
const n = str.length - 1;
return n + (log - parseInt(log));
}
export const repLog10 = rep2 => {
if (rep2 == null) return rep2;
let rep = String(rep2);
const neg = rep.charAt(0) === '-';
rep = neg ? rep.substring(1) : rep;
let out = log10(rep);
if (isNaN(out)) out = 0;
out = Math.max(out - 9, 0); // @ -9, $0.50 earned is approx magnitude 1
out = (neg ? -1 : 1) * out;
out = out * 9 + 25; // 9 points per magnitude. center at 25
// base-line 0 to darken and < 0 to auto hide (grep rephide)
out = parseInt(out);
return out;
};
After each account's reputation is interpreted we can then display them on screen with readable reputation.
//disply list of account names and reputation with line breaks
for (var i = 0; i < _accounts.length; i++) {
_accounts[i] = `${_accounts[i]} - ${repLog10(acc[i].reputation)}`;
}
document.getElementById('accList').innerHTML = _accounts.join('<br/>');
That's it!
- clone this repo
cd tutorials/20_account_reputation
npm i
npm i
npm run dev-server
ornpm run start
- After a few moments, the server should be running at http://localhost:3000/