First early beta release of HIVE Archaeology bot: Your personal bot for transparent up-votes of older posts.

Hive Archaeology bot

In this post I want to introduce a new tool for HIVE, a personal bot that allows you to transparently up-vote any HIVE content as if it were in its initial 7 day window. I'll start out high level and work my way down to the technical details as the blog post continues.

A simple walk-through

Before I get into the technical details, I'm just going to share a simple scenario with you.

Today in my notifications I saw that the account @snowwhite81 followed me. A new 3 week old account created by @dbuzz, so I check out the profile and there is only one post on the profile so far, and its two weeks old, so even if I like the post and the pictures in it, I can's vote on it. Or actually I can, but there will be no pay out if I did.

Or can I? How many times do you run into great timeless content on HIVE that you would like to up-vote, but the one week period has expired. It could be like I run into now, a post that has just run out of its window for a few days, or it could be things like timeless works of fiction or poetry, or for example project documentation that you didn't see when it had its window.

Don't you often have times like this where you don't vote for an old post for the simple reason that the one-week window has expired and there would be no value to your vote? I do, often, and often have I wished I could.

Today, luckily for me (and for a tiny amount for @snowwhite81, although my 100% vote is only worth $0.11 ) I have my brand new HIVE archaeology bot running in the background, so guess what, I'll just up-vote her post as an illustration of what the HIVE archaeology bot does. Right now it's running on my PC in an open console, but I don't need to touch it, I simply do to the post and upvote it.

image.png

For demonstration purposes I'm upvoting with 80%.

Now first let's look what the running script is doing on my console.

First we see this:

INFO: fetching blocks, count = 3
INFO: Vote by owner detected: snowwhite81 beautiful-sunset
NOTICE: post reward has been paid out already, taking action
INFO: Looking for candidate reward comment in post comments
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: No candidate comments found, creating a new comment
NOTICE: new archeology comment created
NOTICE: new archeology comment_options set
NOTICE: Adding voting action to queue
INFO: waiting for : 8.269045352935791
INFO: fetching blocks, count = 3

The bot has detected my up vote, has seen that the post I voted on is past its pay-out window. After doing some checks, that I'll discuss next, it creates a new comment to the post.

Then a few minutes later, this happens.

INFO: fetching blocks, count = 3
INFO: waiting for : 9.486532926559448
NOTICE: Casting vote
NOTICE: Vote casted
INFO: fetching blocks, count = 4
INFO: waiting for : 9.602222681045532

The bot voted on its own comment. Well that doesn't make any sense now, or does it? We'll get to that later.

Let's look at the actual comment

image.png

We see a comment by me, and it has been upvoted by me. Did my bot just self-upvote? Well yes, and no. To understand what happened we need to look at what hiveblocks has to say about the comment.

image.png

We see that in this case curation rewards are set to true (not the default), the post creator will get 90% of the creator share, what in this case should be $0.04, and two other accounts are named as 5% beneficiaries for the comment payout. So the simplified view is that the comment is treated almost like if it was made by the post author herself.

Now let's look at the vote.

image.png

Notice the actual vote mirrors the 80% value of the original meaningless vote we did on the post.

So combined with the comment creation, the bot just transparently turned a useless up-vote into an almost equivalent up-vote on a newly created comment, with a pay-out that is quite similar to what it would have been had the up-vote have been done in the original 7 day window.

Running the bot in basic mode

Firs step of running the bot is installing it. For this you need a working distribution of Python on your system. If you have that, the following command will install the tool on your local machine.

pip3 install hive-archeology-bot

I'm running the bot as my @pibara account. Before starting the bot I need to set the environment variable PIBARA_WIF to the private WIF of my posting key. For obvious reasons I'm not sharing a screenshot of that bit.

The most basic way to start the bot is with the following command:

hive-archeology-bot pibara

Where just like with the environment variable, you need to replace pibara with your own account name.

This invocation uses default values, that in the next section we will discuss how to change, although it is recommended to use the defaults if you can.

The other beneficiaries.

As you saw before, next to @snowwhite81, the comment created by the bot had two extra, be it smaller share beneficiaries:

So who are these and why are they getting a modest share of the eventual payout. Well, @croupierbot, as the author of the script, is my stake-holding account. But even-though I wrote the script, the script in turn uses a library for the actual communication with HIVE. The lighthive library by @emrebeyler. So basically what is happening here is that the two developers that made this script possible are getting a combined share of 5% of the proceedings (10% of 50% because for this comment curation rewards are turned on.

This all isn't the default setting. By default the combined share for the developers is the same 5% of the total, but curation rewards are turned off. It's your choice if you want to turn on curation rewards and if you want to increase or decrease the developer share. The demo we did above used the following bot start command:

hive-archeology-bot pibara --curation-reward --tool-creator-share 10

What this did is that it turned on curation rewards (cutting creator rewards in half), and it increased the share for the devs from the standard 5% of creator rewards up to 10% to compensate for the curation rewards. Note again that this is not the recommended configuration, but you are free to enable curation rewards and you are free to set the tool creator share to any value from 0% up to 50%.

comment reuse

Lets look once more at the output from our walk-through.

INFO: fetching blocks, count = 3
INFO: Vote by owner detected: snowwhite81 beautiful-sunset
NOTICE: post reward has been paid out already, taking action
INFO: Looking for candidate reward comment in post comments
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: No candidate comments found, creating a new comment
NOTICE: new archeology comment created
NOTICE: new archeology comment_options set
NOTICE: Adding voting action to queue
INFO: waiting for : 8.269045352935791
INFO: fetching blocks, count = 3

You see the script is looking a viable candidate four times. These are the existing comments. The script is checking if any of them is a match for another user of the HIVE archaeology bot.

Let's run the bot again, but nof trom my @croupierbot account, and now let's vote for the same post as before from that account.

INFO: fetching blocks, count = 4
INFO: Vote by owner detected: snowwhite81 beautiful-sunset
NOTICE: post reward has been paid out already, taking action
INFO: Looking for candidate reward comment in post comments
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: Not a viable candidate, paid out already
INFO: Candidate comment hasn't been paid out yet
NOTICE: Possible candidate comment, author as beneficiary for 50% or more
NOTICE: Definite candidate, no unexpected beneficiaries and total adds up to 100%
NOTICE: Adding voting action to queue
INFO: waiting for : 9.19098711013794
INFO: fetching blocks, count = 3

Now we see the bot recognizes our earlier comment as a viable candidate. It won't create a new comment, and despite differing settings, opt to up-vote the existing post as good enough.

image.png

In this case it doesn't have any financial impact (@croupierbot has virtually al its stake delegated), but it shows how the script makes efficient use of existing comments made by its peers.

early beta

Please note that this version of the bot is still an early beta. It is meant to run on your own local machine and you can turn it off a few minutes after you are done voting. A single up-vote will take a little over 2 minutes to finalize, so if you haven't seen any new votes on the console for 3 or so minutes, it is save to stop the script.

Because of the early beta status, please report any bugs you run into or any problems you have installing.

After I'm more secure about the stability of the bot, I'll make a blog about running the script in Docker on your home NAS or similar device, so your own personal bot can be running in the background constantly and you can rely on it wherever you are. I'll be running it on my own QNAP shortly to see how stable it is over the cause of a few weeks before I'm confident enough to recommend that type of usage, but if you are brave, drop me a message and I'll push docker images to docker hub for you to play with.

testing your own bot

I'm inviting everyone from medium sized minnow and up (your 100% single-vote should be above the $0.02 dust level) to give this beta a spin. Try it out, give some feedback. It's an early beta, but it will remain beta without users willing to give feedback. Give it a spin, if you are brave, ask me to put a pre-beta docker image on docker hub, and most of all, if you run into any issues, let me know.

Just in case you don't know of any old content you would like to up-vote, testing the bot on my novel is of-cause always appreciated ;-)

And I'm quite sure @snowwhite81 would appreciate further use of her post for testing purposes as well.

H2
H3
H4
3 columns
2 columns
1 column
18 Comments
Ecency