Introduction
This is a tool for spotting patterns in last minute voting behaviors. Voting a post on the last day before cashout is generally considered to be underhanded, especially with larger votes.
What use does it serve?
There there is already a service on steemit which deals with the larger last minute upvotes, but this program aims to represent all last minute upvotes graphically. For example, if one post is getting 200 upvotes for less than a dollar, @abusereports may not pick up on it, but this program does - and it can then be displayed graphically to see who's sending/recieving the largest quantity/value of votes in the last x days.
This also lets you watch the last minute votes as they come in, letting you observe all the wild and wonderful corners in this hidden world of self voting, I made a fun/lighthearted post last month with a crude version of my current code.
It's main use is for educational purposes, you know, going down the rabbit hole.
View it in all it's glory over at the Github repo:
https://github.com/sisygoboom/abuse_detection_steemit
Features
- View live stream of last-minute upvotes
- Create a huge database of last minute upvote accounts
- Built in pie chart creator to visualize the data you've collected
- Blockchain listener
- Real time data means the dataset will only grow and can be reset at any time
- Auto node switching for minimal downtime
- Stores all data in a JSON file for anlysis

Don't worry, this was an early mistake

In the live stream we can easily see a pattern of upvotes going towards a certain post
Technology
I used a 64 bit windows 10 machine with
IDE: Anaconda
Language: Python 3.6
External Dependencies:
Dependencies are likeley different on Unix based systems.
Demonstration
So, I left the bot on overnight to get a good range of data. Unfortunately the values of the posts were wrong and strangeley, one of the most upvoted accounts didn't even exist. So I switched from using the coinmarketcap API to using the built in 7 day rolling average.
At first, my poor pie chart was just a complete mess.
But I raised the bar for entry, so currently, to make it to the graphs, the account must've received more than $5 in last minute upvotes OR have committed to more than 5 last minute upvotes.
Obviously, having this number set is flawed since the dataset will always be growing - I'm not going to try to automate that just yet, for now it's easy enough to do manually.
So, as we can see, busy.org has been giving out hundreds of last minute upvotes, making the majority when excluding 'other' (aka. less than 5 votes) - I'm not sure if this is commonly known information, but I found it at least mildly interesting.
It then occurred to me, that including the rest of the dataset in the "other" category might give people a clearer perspective. That's now a boolean option in 'make_pie.py' (cleaver naming, right?)
I thought I'd check to make sure I was getting accurate information and that everything was in working order:


Anyway, feel free to have a play around with it yourselves.
Roadmap
The project is currently at a good level, no known bugs and it works well; in time, I'll likely make more detailed and aesthetically pleasing graphical representations (maybe I'll even deviate from pie charts), and modify the code to record more detailed data such as the times at which votes are cast, to see if there are any peak times so to speak.
Another feature I've been considering whilst making this is to use historical blockchain data between specified blocks or time periods, as an alternative to a stream.
I also plan at some point, make it possible to exclude certain users (e.g. busy.org from being included in the charts).
I also understand some work could be done on the layout of the JSON database to make it easier for graphical representation.
Automation of the pie_charts.py 'other' limits.
Value of upvotes sent out.
Want To Contribute?
You forkers are always welcome to do what you want.
If you like the idea and fancy doing some work on it yourself or want to get in touch with me for any questions, don't hesitate to contact me on discord at sisygoboom#6775