24 hrs analysis of Bid-Bot usage in Steemit

in #utopian-io6 years ago (edited)

Repository

https://github.com/steemit/steem

Introduction

In this study the topics to be analyzed are:

  • How many bid-bots are acting on Steemit?
  • What percent of the total bots are making 95% of the upvote activity?
  • How many unique posts are upvoted by bid-bots in 24 hours?
  • What is the total upvote value of these upvotes?
  • What is the percentage of these upvotes to total Steem created per day? (Reward pool depletion)
  • The upvoted posts are belonging to how many unique users?
  • What are the SP status of these users using the bid-bots and what is the share according to each user category?

Scope of Analysis

Analysis date: 22 -23 May 2018 ( 24 hrs )
Analysis timeframe: 2018-05-22T20:02:36 --> 2018-05-23T19:37:33
Bots analyzed:
All the upvote bots registered to SteemBotTracker by @yabapmatt (99 bots)
bot list
All times are in UTC.

Tools

  • Finding the bot list

The bot list is extracted from @YabapMatt's SteemBotTracker tool and all the bots are put on the spreadsheet list.

  • Defining the bots to be analyzed

Since 99 bots would be a heavy load on the steem.js scripts that is used to analyze, a meaningful result should be obtained by the bots covering the 95% of the all the bots rewards.
This is directly proportional to the bots maximum upvote value.
Sorting the bots it is observed that 19% of the bots are giving 95% of the rewards.

The frame of the analysis is shifted to these 19 bots giving %95 of the rewards.

  • Finding the posts upvoted and upvote values in past 24 hours

For this, steem.js API is used with a simple JavaScript code.

for (let i = 0; i < bots.length; i++) {
 steem.api.getAccountVotes(bots[i], function(err, result) {
 console.log(result);
 calculate(bots[i],result);
 
 }); 
 }

Looping all the 19 bots in the script, the result gives us :

  • The authorperm : The mixed data of the author and permlink
  • Upvote date
  • Upvote value in rshares
    for all the upvotes that a individual bot has given.

These results are filtered to fit past 24 hours

 for (let i = 0; i < result.length; i++) {
 var vote_time=Date.parse(result[i].time);
 var day=1*24*60*60*1000;
 
 if(vote_time>=(now-day)){
    
     document.getElementById("bot").innerHTML+=bot+"</br>";
     document.getElementById("autperm").innerHTML+=result[i].authorperm.substring(0,30)+"</br>";
     document.getElementById("date").innerHTML+=result[i].time+"</br>";
     document.getElementById("rshares").innerHTML+=result[i].rshares+"</br>";
 }
 }

This raw data is put in a spreadsheet and when analysed it would give us all the results we are looking for.

To convert rshares to steem, the values from SteemDB is used.

reward_balance ( in Steem) / recent_claims (in rshares)
gives us the multiplication factor to convert rshares to Steem.

  • Defining the status of user

It is also in the scope of the study to determine, to which users these upvotes are given.
To have this, we would have to write another script, this time using the names of the upvote receivers as an array.
This array is extracted from rawdata by using a pivot table.

var botusers=botusers();// This is an array of all upvoted users extracted from raw data
function search(){
steem.api.getAccounts(botusers, function(err, result) {
  console.log(err, result);
  calculate2(result);
});

Above script gives us the user information that received the upvotes.
To find the status of the user, if a minnow, dolphin or whale we have to check their SP status.
SP >=100,000 is considered as WHALE
10,000 <=SP < 100,000 is considered as DOLPHIN
SP<10,000 is considered as MINNOW
To find the vests of each user, below script is used

function calculate2(result){
 for (let i = 0; i < result.length; i++) {
 var vests=parseFloat(result[i].vesting_shares)+parseFloat(result[i].received_vesting_shares)-parseFloat(result[i].delegated_vesting_shares);
 document.getElementById("bot").innerHTML+=result[i].name+"</br>";
 document.getElementById("autperm").innerHTML+=vests+"</br>";
 }          
}   

The output data is put in a spreadsheet
The SP correspondance of vests (the data is received in vests) is found by multiplying this data with SPV(steem per vest) value as seen in Steemd

Results

  • How many bid-bots are acting on Steemit?

According to data received from SteemBotTracker there are 99 registered bid-bots.
List

  • What percent of the total bots are making 95% of the upvote activity?

As seen in the graphs and from the data it can be concluded that 19/99 => 19.2% of the bidbots are covering 95% of all the upvotes given.

  • How many unique posts are upvoted by bid-bots in 24 hours?

The total quantity of upvotes is 3297 posts.
The reason to find the unique posts is, some posts are upvoted by multiple posts.
Therefore, a pivot table is formed to find the unique post quantity.

A total of 2225 unique posts are upvoted in 24 hours by 95% of the bid-bots in Steemit.
Complete List

  • What is the total upvote value of these upvotes?

The total upvote value of the bid-bots in 24 hours is 11,302 STEEM.
%50 of these upvotes are received by 163 posts which means %50 of all the rewards are given to 7,3% of the posts.
Below is the cumulative reward distribution graph.

  • What is the percentage of these upvotes to total Steem created per day? (Reward pool depletion)

The total value of upvotes given by bid-bots ( %95 of them ) is calculated as 11,302 STEEM in 24 hours.
The Steem is generated with each transaction with a rate of 1.73 Steem / 3 seconds for the reward pool.
This value was calculated in my old post
The steem generated / 24 hours that goes in the reward pool is calculated to be 49,824 STEEM / day.
This means, %95 of the bid-bots are using %23 of the reward pool in the date of analysis.

  • The upvoted posts are belonging to how many unique users?

We have seen that 2225 unique posts are upvoted by the bid-bots in 24 hours.
Since there may be the cases where one user sends more than one post to bid-bots to be upvoted.
Therefore, a user based pivot table is formed and it is observed that 2225 unique posts are belonging to 1488 users.

It is concluded that 1,5 posts per user are sent to bidbots per upvote.
It is again concluded that 11,302 STEEM is distributed to 1488 users which makes 7,6 STEEM per user.
But this value is not really meaningful by itself since %50 of the reward is distributed to %7,3 of the posts.

  • What are the SP status of these users using the bid-bots and what is the share according to each user category?

The bidbot users are categorized as below according to their SP

The % distribution is as follows according to user quantity.

It is clear that %52 of the bid-bot users are minnows below 100 SP.
The second biggest group is the SP holders between 100 and 500 SP and they are 24% of all bid-bot users.

Next, the STEEM upvotes received by each category of users are checked.

The 0-100 SP group although holds the majority in the number of bidders, receives approximately %25 of the upvotes.
Moreover, the 100-500 SP group of users, being half as quantity receives %25 of the upvotes from the bid-bots.
Which means, they bid with more SBD.

Conclusion

As a summary :

  • Bidbots make upvote of 2225 posts belonging to 1488 users in 24 hours.
  • Approximately 50% of bidders are minnows between 0-100 SP receiving %25 of upvotes.
  • Bidbots use approximately %23 of the daily produced steem that goes into the reward pool.
    Even if all upvoted posts are spam bidbots are responsible of only %23 of spam in Steemit.

Contact

@FireDream - Steemit
@firedream#3528 - Discord

Links

SteemJS GitHub
SteemBotTracker
SteemBotTracker GitHub
BotList
RawData

Sort:  

I'm loving this; I have papers to write. You are providing data. :thumbsup:

The last finding is becoming less surprising. Tiny (nonbid) bot and spammer account activity has increased to such an extent that it has become noticable to the naked eye. Some follow and unfollow; just refresh a profile. Maybe in fact Steemit Inc should not delegate to create new accounts. Maybe users should make accounts for those they trust with Steemconnect.

What do you think about the solution EOS came up with to prohibit bots: constitution prohibits them and arbitration possible that can redistribute tokens? On the one hand it eliminates a lot of spam and system abuse, but on the other hand they seem to have ditched ability to archive by posting. And increased by far the risk of their chain. Your thoughts?

The prohibition of bots...this sounds interesting but for me, the keyword is "need".
If there is a need for an upvote, and for sure there is, whether prohibited or not people will find most interesting ways to sell and buy upvotes.
Either out of the blockchain as black market or with different names as "subscription services" there will be vote-selling.
FD

EOS has arbitration and anyone selling votes risks losing their stake, the way they recently explained it.

Even if all upvoted posts are spam bidbots are responsible of only %23 of spam in Steemit.

Hence proved...
Hey @firedream can we have details of the bots who are more responsible for this 23% spams? Especially for sneaky ninja. For gc.

Vish, %23 is not spam...it is the reward pool usage ratio of upvote bots.
Even if all is spam, which is not...the spam caused by bidbots do not exceed 23% of reward pool.
FD.

This is amazing data collation and presentation @firedream ! Awesome and needs several read-throughs to get a sense of what it means. Thank you! :)

@artemislives thank you.
Like life, when there is too much data you can get different results from different perspectives :)
FD.

If I were to summarize the findings here:

On May 22 to 23, there were 99 bidbots analyzed. 19 out of 99 (19%) bidbots account to 95% of the total vote value (not upvote activity) with a total of (no total provided).

There were 3297 votes cast on 2225 posts which had a total value of 11,302 STEEM (not SBD?). This accounted to 23% of the rewards pool on the given date. These rewards were distributed to 1488 unique users with 76% of these users have less than 500SP; 50% of the total bidbot vote rewards went to this group.

Comments:

  1. This analysis of Paula came to mind when I read this
  2. As pointed out by @crokkon in another contribution, I also think 24 hours is too short to make anything conclusive. I believe the data extracted here can be considered a sample.
  3. What prompted you to come up with this analysis? What are you trying to achieve or relay with these results? Why bidbots? What is its overall impact to the STEEM blockchain as a whole? What action can be taken with the results?

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

@eastmael, thank you very much for your evaluation.

  1. The analysis of Paula seems to be the exact negative of my study. While her report is on the earning of bid-bots, my report is on the reward pool consumption of bis-bots and earning of bid-bot users.
  2. As with @crokkon, I completely agree with you. SteemSql is much more appropriate for these studies but my study can be considered as an example of data extraction with SteemJs.(not the very best way...)
  3. This is a really long story, starting with GrumpyCat. I started to study what is claimed as "abuse of reward pool", what is reward pool, who is using the reward pool etc...
    The bidbots are claimed to be the biggest consumers of the reward pool, so out of curiosity, I decided to make this analysis to understand the impact with facts and data.

FD.

Hey @firedream
Here's a tip for your valuable feedback! @Utopian-io loves and incentivises informative comments.

Contributing on Utopian
Learn how to contribute on our website.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

This is noted. Thank you for the information.

This is really a brilliant analysis! I'm a bit sorry that I can't add anything valuable. On the other hand that can be seen as a compliment cause the post doesn't contain any mistakes or non understandable items.

Only one question remains for me. What percentage of SP is used for self upvotes?
If you add up the 23% bid bots you know what percentage of the upvotes is freely available within Steemit.

@crypto-econom1st, that is a very good question to make analysis...What is the available reward pool other than bots, circle voters, and self-upvotes?
I will try to find a way to analyze that.
FD.

I'm afraid I can't query data myself from the blockchain. But I was thinking finding the self upvotes could be doable by querying accounts that upvote their own account?

Circle voters will be much more difficult. So I'm curious if you would be able to do that somehow?

Exellent post

Nice! Intuitively favoring bot use as a part of our evolution is now backed by the numbers. Thank you for the clear and detailed explanation all the way down to conclusion.

I love that the initial backlash on bot use, sung by the loudest voices are not in fact the ones who benefit the most from using them. More power to the minnows I say! 🤓

Thank you @kenistyles.
I am working on the percentage of bot using posts/all posts.
How many posts are issued in a day and what percentage of them are using bid-bots.
Let's see more numbers :)
FD.

Hey @firedream
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Coin Marketplace

STEEM 0.32
TRX 0.12
JST 0.034
BTC 64837.84
ETH 3174.86
USDT 1.00
SBD 4.17