There is one post on my blog that continues to get upvotes every day, even though it is now over a month old. I appreciate the thought, I really do, although I feel for the voters who perhaps do not realise that their votes do not count: They neither increase my payout, nor do they provide the voters themselves with any curation rewards of their own.
How significant a problem is this? How many votes are made after the six-and-a-half day cut off (or seven days for donwvotes) imposed by the steem blockchain? I decided to investigate.
Overall Result
For an analysis period I looked at the seven days from 24 December 2017 to 30 December 2017 (inclusive).
- The number of upvotes made overall was: 4,612,502
- The number of upvotes made outside of the voting period was: 78,112
This gives us a ratio of 1.7% of votes being lost. This is not a huge number in the grand scheme of things, particularly considering three out of every four circulating steem are not used to vote in a given week (i.e. so 75% of all potential votes are not made).
Next I decided to determine which users are most affected.
Analysis by Account Start Date
I first looked at an analysis of lost votes by account start date.
| Account Start Month | Voters | %age - Self Voters |
|---|---|---|
| Prior | 8,086 | 5% |
| 2017-06 | 4,966 | 7% |
| 2017-07 | 5,178 | 5% |
| 2017-08 | 5,301 | 5% |
| 2017-09 | 6,382 | 5% |
| 2017-10 | 5,721 | 16% |
| 2017-11 | 8,824 | 9% |
| 2017-12 | 33,654 | 4% |
| Total Result | 78,112 | 6% |
As might be expected, it is the most recent joiners that are most heavily impacted by lost votes. The obvious conclusion to draw is that new users are either not aware of the seven day rule or not yet accustomed to checking the timestamp on posts.
Analysis by Steem Power
My next analysis looked at the level of Steem Power held by those voting outside the seven day period.
(results are grouped into 50SP bands).
| SP Range | Voters | %age - Self Voters |
|---|---|---|
| 0 | 776 | 2% |
| 50 | 72,386 | 6% |
| 100 | 2,016 | 2% |
| 150 | 841 | 4% |
| 200 | 203 | 10% |
| 250 | 173 | 23% |
| 300 | 329 | 2% |
| 350 | 62 | 31% |
| 400 | 49 | 6% |
| 450 | 38 | 16% |
| 500 + | 1,239 | 5% |
Again, this result is not unexpected. Users with the lowest level of Steem Power are the most affected, most likely because they are new or only occasional users and so potentially still unaccustomed to the system.
However it is also worth noting that there were 182 votes lost by users with over 5,000 Steem Power (i.e. dolphins) and 12 votes lost by users with over 50,000 Steem Power (i.e. Orcas). I have done this by accident myself on at least one occasion.
Analysis by Time
I next considered an analysis of the voting time of lost votes. Are users just missing out, perhaps because the six-and-a-half or seven day period measurement on the system is not clear?
A chart of the first month, split by half days, shows that whilst a reasonable proportion of voters are just missing out by arriving in the twelve hours after the seven day voting period closes, there is in fact quite a spread of lost votes stretching back on posts made over the prior month.
A chart across the whole history of steem, split by month, shows that in fact there are upvotes still being made on the very earliest posts.
Conclusions
- The overall level of lost votes is not significant compared to the overall level of voting on the steem blockchain (1.7%).
- However it is clear from the analysis that the most recent joiners are most heavily affected by lost votes.
- Most lost votes belong to users with low steem power but there were also some much larger votes lost (this could of course be deliberate - it is not easy to determine motivation in such as analysis).
- The timing of lost upvotes indicates that whilst some users are just missing out, there are lost votes over a spread of time including on some very old posts. This suggests a lack of understanding of the rules rather than a lack of clarity on the indicator for the seven day period.
Whilst the problem is not a huge one, the error of voting on old posts can be a minor frustration for established users, and a worsening of the user experience for new users. It would be a useful addition to steem platforms to include a pop-up text-box when users are trying to upvote a posts where the voting period has elapsed. This would warn the user that their vote will have no impact.
Questions
That's all for today.
If you have any questions or spot any errors please do not hesitate to leave a comment!
Thanks for reading!
Methodology and Tools for Analysis
Tools
Raw data was obtained through sql queries of steemsql using Valentina Studio.
Data was analysed in LibreOffice and illustrated in Numbers (spreadsheet tools).
Data was obtained for various timescales, including a particular focus on 2017 and the comparison between studies in November and December.
SQL queries
I used the following SQL queries:
Total Votes over the week:
SELECT
Count(TxVotes.voter) as [Voter]
FROM
TxVotes (NOLOCK)
WHERE
Convert(date, TxVotes.timestamp) >= '2017-12-24' and
Convert(date, TxVotes.timestamp) <= '2017-12-30'
Breakdown of Lost Votes over the week:
SELECT
convert(date, Comments.Created) as [commentCreated],
datepart(hour, Comments.Created) as [HourOfCreation],
datediff(mi, Comments.Created, TxVotes.timestamp) as [MinOfVote],
TxVotes.voter as [Voter],
case when TxVotes.voter = comments.author then 1 else 0 end as [SelfVoters],
TxVotes.author as [Author],
TxVotes.weight as [VoteWeight],
convert(decimal(20,0), 487 * (convert(decimal(20,4), left(Accounts.vesting_shares, len(Accounts.vesting_shares)-5)) +
convert(decimal(20,4), left(Accounts.received_vesting_shares, len(Accounts.received_vesting_shares)-5)) +
-convert(decimal(20,4), left(Accounts.delegated_vesting_shares, len(Accounts.delegated_vesting_shares)-5))) / 10000000) as [SPinVests],
TxVotes.permlink as [link]
FROM TxVotes (NOLOCK)
INNER join Comments (NOLOCK)
on TxVotes.permlink = Comments.permlink
and TxVotes.author = Comments.author
INNER join Accounts (NOLOCK)
on TxVotes.voter = Accounts.name
WHERE
Convert(date, TxVotes.timestamp) >= '2017-12-24' and
Convert(date, TxVotes.timestamp) <= '2017-12-30' and
convert(date, Comments.Created) <> '1970-01-01' and
(iif(TxVotes.weight<=0, 0, datediff(mi, Comments.created, TxVotes.timestamp)) > 9360 or
iif(TxVotes.weight>0, 0, datediff(mi, Comments.created, TxVotes.timestamp)) > 10080)
ORDER BY
datediff(mi, Comments.Created, TxVotes.timestamp)
Posted on Utopian.io - Rewarding Open Source Contributors