Steem Late Vote Explorer (SLVE) is a tool I designed to visually represent and track last-minute votes in the interests of education and abuse detection. It is built with customizability in mind and can currently stream the blockchain to show a live feed of last-minute votes, as well as saving that data for visual representation at any time. For more information, please read the introductory post.
The new HF20 update saw a new feature come into place whereby vote effectiveness decreases from 100% to 0% in the last 12 hours:
Previously, in the last 12 hours before the payout of a post, no votes were being counted. This has been changed now in a way that the effectiveness of a vote in these last 12 hours goes from 100% to 0%. Which means: if you vote 30 minutes before the payout, your vote uses the same amount of voting power but would have pretty much no impact on the rewards.
Src
When I read this, i saw fit to increase the default maximum time before cashout because once that 12 hour countdown begins, all flags will become less and less useful:
Up from 24 to 36
I recently came across a bug whereby steem sincerity was showing some users attributes as all null, a new development (I think from new accounts and lack of continuation from sincerity devs).
https://steem-sincerity.dapptools.info/s/api/accounts-info/egor.isakov
{
"data": {
"egor.isakov": {
"classification_bot_score": null,
"classification_human_score": null,
"classification_spammer_score": null,
"comment_average_image_count": null,
"comment_average_word_count": null,
"comment_count": null,
"comment_random_sample": null,
"incoming_votes_diversity": null,
"incoming_votes_down_count": null,
"incoming_votes_self_percent": null,
"incoming_votes_up_count": null,
"outgoing_votes_diversity": null,
"outgoing_votes_self_percent": null,
"post_average_word_count": null,
"post_count": null
}
},
"error": "",
"messages": [],
"status": "ok"
}
This was causing errors when the program was trying to perform the > operation on a NoneType and a float, so I fixed the problem with a simple try/except which has the benefit of dealing with any other errors that might occur.
Before the recent update, my code was still very messy and the comments were all over the place and not following any particular set of rules.
On top of that, I broke down the whole old system of streaming which was just a lot of functions with a streaming loop at the end which would start whenever the library was imported, essentially making it into a large script. I moved the streamer into a main class (AbuseDetection) along with all the other functions and info_digger was also way too large so I broke it down into lots of smaller, hidden functions to help improve readability:
The full commit can be seen here:
https://github.com/sisygoboom/abuse_detection_steemit/commit/4a1c66f48c7afe21ef0b97b7d6a13f3375081ba3#diff-1aebab2304d7a62c1579560d0cfe4a4e
Importing the make_pie library into my main blockchain info/digging library means users do not have to manually find the database directories and copy/paste them when trying to make a new instance, instead the data can be passed straight from one class to another when making a new instance.
Once I linked the two libraries, it made sense to have the streamer running in the background. This way, users can create pie charts in real time, without having to go through the struggle of opening new windows or stopping the streamer.
The make_pie module had three available pie charts before the update:
To accommodate for the new feature, I needed to change these things: