I know this is my third post in a row about Steemit witness stuff, but I usually blog about my current passions and right now I'm really passionate about being a Steemit witness!
It's an odd feeling essentially starting from zero when I've been here for almost a year and have worked hard to build a following of over 1,500 fellow Steemians. I can remember in the early days when people would message whales in the Slack chat to try and get their votes. I always avoided that approach because it didn't pass the basic community test of "What would happen if everyone did this?" (More on that here.)
I'm not a sales person. I'm a programmer. I don't like going around asking for help, especially if I can find the answers myself. I also don't like treating some people differently than others just because they have something which can benefit me (in this case high Steem Power witness votes which are needed to be a useful witness).
The witness list is driven by millions of VESTs which is an internal representation of Steem Power holdings. Those with the most Steem Power have the largest investment to protect, so their votes matter most in terms of electing witnesses to maintain the blockchain economics, run solid servers, and work well with the community.
So it seems I need to make more whale friends and get comfortable with self-promotion. If you're good at that sort of thing, please feel free to campaign on my behalf. :)
I figured maybe I should start with people who are already following my blog and go from there.
Tonight I did what I usually do when I want to solve problems: I started writing code.
For the curious, here's what I wrote after work today:
<?php
require '../../vendor/autoload.php';
$params = array();
$SteemServiceLayer = new \SteemTools\SteemServiceLayer($params);
$api = new \SteemTools\SteemAPI($SteemServiceLayer);
$witness_account = "lukestokes.mhth";
$controller_account = "lukestokes";
$followers = $api->cachedCall('getFollowers', $controller_account, true);
$accounts = array();
foreach($followers as $follower) {
$accounts[] = $follower['follower'];
}
$account_records = $api->cachedCall('getAccounts', $accounts, true);
$accounts_by_vest = array();
$accounts = array();
foreach($account_records as $account) {
$accounts[$account['name']] = $account;
$accounts_by_vest[$account['name']] = (int) str_replace(' VESTS', '', $account['vesting_shares']);
}
arsort($accounts_by_vest);
$top_accounts = array_slice($accounts_by_vest,0,30);
function showPossibilities($top_accounts,$accounts,$witness_account,$show_available_only = false)
{
$available_vests = 0;
foreach($top_accounts as $account_name => $vests) {
$print_account = true;
$witnesses_voted_for = $accounts[$account_name]['witnesses_voted_for'];
$proxy = $accounts[$account_name]['proxy'];
$witness_votes = $accounts[$account_name]['witness_votes'];
$voted = " Already Voted? ";
$include_vests = true;
if (in_array($witness_account, $witness_votes)) {
$voted .= "YES";
$print_account = !$show_available_only;
$include_vests = false;
} else {
$voted .= "NO";
}
$free_votes = (30 - $witnesses_voted_for);
if ($print_account && $show_available_only) {
$print_account = ($free_votes > 0);
}
if ($print_account && $show_available_only) {
$print_account = !($proxy != '');
}
$pad_amount = 20;
if ($print_account) {
if ($include_vests) {
$available_vests += $accounts[$account_name]['vesting_shares'];
}
print str_pad($account_name,$pad_amount,' ',STR_PAD_RIGHT);
print str_pad('Proxy: ' . $proxy,$pad_amount,' ',STR_PAD_RIGHT);
print str_pad($voted,$pad_amount,' ',STR_PAD_RIGHT);
print str_pad($vests . " VESTS",$pad_amount,' ',STR_PAD_LEFT);
print str_pad($free_votes . " votes free",$pad_amount,' ',STR_PAD_LEFT);
print "\n";
}
}
print "Total Available MVESTS: " . round($available_vests/1000000) . "\n";
print "\n";
}
showPossibilities($top_accounts,$accounts,$witness_account);
showPossibilities($top_accounts,$accounts,$witness_account,true);
It's just slapped together, but it gives me some nice output:
abit Proxy: abitmore Already Voted? NO 4006255185 VESTS 30 votes free
jamesc Proxy: Already Voted? NO 3198609804 VESTS 30 votes free
thejohalfiles Proxy: Already Voted? NO 2657774136 VESTS 15 votes free
tombstone Proxy: dele-puppy Already Voted? NO 2256414027 VESTS 30 votes free
xeldal Proxy: Already Voted? NO 1891626077 VESTS 11 votes free
arhag Proxy: Already Voted? NO 1634823209 VESTS 3 votes free
wackou Proxy: Already Voted? NO 1016653226 VESTS 0 votes free
fuzzyvest Proxy: Already Voted? NO 938527112 VESTS 6 votes free
recursive Proxy: Already Voted? NO 807953047 VESTS 30 votes free
slowwalker Proxy: Already Voted? NO 797428111 VESTS 13 votes free
gavvet Proxy: Already Voted? NO 774029929 VESTS 2 votes free
fulltimegeek Proxy: Already Voted? NO 722460777 VESTS 2 votes free
skan Proxy: Already Voted? NO 431695970 VESTS 30 votes free
nanzo-scoop Proxy: Already Voted? NO 416794647 VESTS 5 votes free
htooms Proxy: Already Voted? NO 375869774 VESTS 23 votes free
roelandp Proxy: Already Voted? NO 366830941 VESTS 0 votes free
steempty Proxy: Already Voted? NO 328834977 VESTS 0 votes free
sean-king Proxy: Already Voted? YES 325761740 VESTS 25 votes free
neoxian Proxy: Already Voted? NO 309686880 VESTS 1 votes free
twinner Proxy: Already Voted? NO 267742620 VESTS 2 votes free
gtg Proxy: Already Voted? NO 264962536 VESTS 0 votes free
eeks Proxy: Already Voted? NO 253585400 VESTS 25 votes free
kevinwong Proxy: Already Voted? NO 253521106 VESTS 2 votes free
modprobe Proxy: Already Voted? NO 214183331 VESTS 30 votes free
benjojo Proxy: Already Voted? NO 213765603 VESTS 0 votes free
matt-a Proxy: Already Voted? NO 207469977 VESTS 15 votes free
good-karma Proxy: Already Voted? YES 196452115 VESTS 0 votes free
demotruk Proxy: Already Voted? NO 189993289 VESTS 18 votes free
rok-sivante Proxy: Already Voted? YES 189410018 VESTS 25 votes free
damarth Proxy: Already Voted? NO 178960313 VESTS 30 votes free
Total Available MVESTS: 24976
jamesc Proxy: Already Voted? NO 3198609804 VESTS 30 votes free
thejohalfiles Proxy: Already Voted? NO 2657774136 VESTS 15 votes free
xeldal Proxy: Already Voted? NO 1891626077 VESTS 11 votes free
arhag Proxy: Already Voted? NO 1634823209 VESTS 3 votes free
fuzzyvest Proxy: Already Voted? NO 938527112 VESTS 6 votes free
recursive Proxy: Already Voted? NO 807953047 VESTS 30 votes free
slowwalker Proxy: Already Voted? NO 797428111 VESTS 13 votes free
gavvet Proxy: Already Voted? NO 774029929 VESTS 2 votes free
fulltimegeek Proxy: Already Voted? NO 722460777 VESTS 2 votes free
skan Proxy: Already Voted? NO 431695970 VESTS 30 votes free
nanzo-scoop Proxy: Already Voted? NO 416794647 VESTS 5 votes free
htooms Proxy: Already Voted? NO 375869774 VESTS 23 votes free
neoxian Proxy: Already Voted? NO 309686880 VESTS 1 votes free
twinner Proxy: Already Voted? NO 267742620 VESTS 2 votes free
eeks Proxy: Already Voted? NO 253585400 VESTS 25 votes free
kevinwong Proxy: Already Voted? NO 253521106 VESTS 2 votes free
modprobe Proxy: Already Voted? NO 214183331 VESTS 30 votes free
matt-a Proxy: Already Voted? NO 207469977 VESTS 15 votes free
demotruk Proxy: Already Voted? NO 189993289 VESTS 18 votes free
damarth Proxy: Already Voted? NO 178960313 VESTS 30 votes free
Total Available MVESTS: 16523
In a nutshell, this analyzes my follower list, sorts them by Steem Power, and then figures out if they've already voted for me or not and have witness votes to give (if they aren't proxy voting through someone else).
So now I've got a list. Something about asking them individually in chat seems like the wrong approach. I don't want to bother people or put them in the awkward position of feeling the need to explain themselves if they don't want to vote for me as a witness.
Or maybe I should just get over it and start asking people directly?
What do you think?
Maybe I'll allow myself a little mention spam. Okay, here it goes.
@jamesc, @thejohalfiles, @xeldal, @arhag, @fuzzyvest, @recursive, @slowwalker, @gavvet, @fulltimegeek, @skan, @nanzo-scoop, @htooms, @neoxian, @twinner, @eeks, @kevinwong, @modprobe, @matt-a, @demotruk, @damarth
There. That felt a little dirty. Heheh.
Anyway, I should get some sleep. I've probably been thinking about this too much and should just give it some time to work itself out.
Big thank you to @sean-king, @good-karma, and @rok-sivante whose MVESTS make a huge difference in my witness campaign. I'm also very grateful for @billbutler, @jesta, @bacchist... I could list you all, but that would be silly. Anyway, thanks. I'm learning a lot, stretching myself in the process, and having fun.
Steem On
Related Posts:
- Steemit is Free, But Your Witness Vote Determines its Future
- Vote Luke Stokes for Witness as lukestokes.mhth!
Luke Stokes is a father, husband, business owner, programmer, voluntaryist, and blockchain enthusiast. He wants to help create a world we all want to live in.