[Analysis] Whale Delegation And the Infinity of Bots: A Love/Hate Story

in #utopian-io7 years ago (edited)

Face-First
Upfront, I would like to apologize for how long it's been since I've made a substantiative post. Actually, no, I would like to do that at all – and I'm not going to. Life happens. Your priorities are your priorities. You don't owe anyone any anything that you don't personally buy into.

For those of you that hang on the edge of your seat waiting for my next post which involves pretty pictures – it's your lucky day, this post is going to be very much all about pretty pictures. There will be no code spewed in the course of this article.

This is going to be pure analysis.

A part two will come along in short order which runs down all of the little bits of code that I used to generate these charts and we can talk about the strengths and weaknesses of the decisions that I made along the way.

Now that we are all prepared for what is to come, let's talk about that.

Delegated to the Seas
I've done a lot of analysis which leverages SteamData on a regular basis, and were going to do that again. In the past, it's been fund transfers and votes which have occupied my attention, and there are a truly vast number of those kinds of operations in the blockchain every single hour of the day. That has limited my time horizons for analysis.

Power delegation (SP) is a different story. The kind of transfers which go on there are much less frequent and more often fire and forget. Unless someone is delegating rented power, there is very little reason to end a delegation. You either trust someone to do well by your delegated funds or you don't and don't offer the delegation in the first place. There is very little active turnover for delegation in terms of motivation.

That's a huge boon for us in analysis. That keeps the number of transactions per account and per hour much lower. We can broaden our time horizons to a vast degree.

The question of what whales on the platform are doing with their delegated power is very much open and complicated by the fact that so many whales are either automated/bots and engaged in active SP delegation rental, or just vast stable reservoirs of unmoving SP with no delegation. It's hard to tell what you're looking at when you start digging.

On top of that, no one actually knows whether delegation is largely flowing out of the whale community or into the whale community. And we're talking about whales which are not actively services, bots, or otherwise widely known to not be making decisions purely on human intention. I've seen questions in comment streams on more than one occasion in the last couple of weeks wondering whether managed whale accounts are sharing delegation out or whether they are hoarding it.

I wanted to find out.

But first I needed something that didn't really exist.

Surfin' Bot
I needed a list of bots.

Not just bots, but a relatively complete list of bots. Not just bots, but a list of most of the major services which run under a singular account on the steem blockchain.

I needed a mega-list. I needed something which was more expansive than anyone else. I needed something ridiculous.

So I built it.

I took a handcrafted list of the bots on one of the better-known bot list sites which took about half an hour to go through and jot down. Then I looked at the bot lists that other people had made and added them to the pile. Then I looked at those lists and compared to what I knew were services active on the platform, and added those too.

Ultimately, I ended up with something on the order of 306 entries. And because I am a giving sort, I'm going to put that right here. We need to talk about it.

SteemBots = ['portoriko', 'echowhale', 'inciter', 'getboost', 'steemmemes',
'tarmaland', 'cryptobooty', 'siditech', 'frontrunner', 'zapzap', 'coolbot',
'resteembot', 'bambam808', 'minnowpondblue', 'steemminers', 'steembidbot',
'shares', 'buildawhale', 'dahrma', 'youtake', 'therising', 'biskopakon',
'pushup', 'oceanwhale', 'allaz', 'dmania', 'zdemonz', 'gaming-hangouts',
'steemvoter', 'ocd', 'red-rose', 'minnowpond', 'makindatsteem', 'qwasert',
'ipuffyou', 'withsmn', 'steemit-gamble', 'trail5', 'vesteem', 'ninja-whale',
'highvote', 'cryptoempire', 'ipromote', 'friends-bot', 'minnowpondred',
'steemholder', 'lays', 'trail6', 'onlyprofitbot', 'flymehigh', 'centerlink',
'tipu', 'earthboundgiygas', 'timbalabuch', 'followforupvotes',
'msp-shanehug', 'steemmaker', 'dolphinbot', 'btcvenom', 'steemprentice',
'wannabeme', 'hotbot', 'i-am-legion', 'trail3', 'upmyvote', 'ramta',
'bidbot', 'microbot', 'busy', 'mahabrahma', 'soonmusic', 'authors.league',
'bluebot', 'passive', 'singing.beauty', 'reblogger', 'speedvoter',
'glitterbooster', 'redwhale', 'famunger', 'cnbuddy', 'randovote',
'drakkald', 'puppybot', 'pimpoesala', 'otobot', 'discordia', 'boostbot',
'steemedia', 'wahyurahadiann', 'steemit-hangouts', 'morwhale',
'minnowhelper', 'busy.org', 'dtube', 'msp-venezuela', 'scharmebran',
'megabot', 'smartsteem', 'feedyourminnows', 'resteemable', 'steemvote',
'whatupgg', 'estabond', 'cryptoowl', 'proctologic', 'mercurybot',
'steemlike', 'sunrawhale', 'hugwhale', 'randowhale', 'animus', 'banjo',
'oguzhangazi', 'blocktrades', 'isotonic', 'upyou', 'bumper', 'boomerang',
'moyeses', 'counterbot', 'randowhaling', 'ninjawhale', 'wiseguyhuh',
'givemesteem1', 'deutschbot', 'smartwhale', 'minnowfairy', 'postdoctor',
'boostupvote', 'tabea', 'brensker', 'whatamidoing', 'crypto-hangouts',
'thundercurator', 'davidding', 'cub1', 'lovejuice', 'hottopic', 'mecurator',
'peace-bot', 'minnowvotes', 'moneymatchgaming', 'brandonfrye',
'steembloggers', 'dlive', 'minnowbooster', 'steemode', 'treeplanter',
'make-a-whale', 'cabbage-dealer', 'polsza', 'busy.pay', 'steemthat',
'fuzzyvest', 'sleeplesswhale', 'foxyd', 'gotvotes', 'randowhale1',
'spinbot', 'edrivegom', 'booster', 'emilhoch', 'trail2', 'givemedatsteem',
'msp-lovebot', 'inchonbitcoin', 'blimbossem', 'lightningbolt',
'wildoekwind', 'adsactly', 'randowhaletrail', 'kittybot', 'promobot',
'gindor', 'steemitgottalent', 'slimwhale', 'lost-ninja', 'maradaratar',
'appreciator', 'sneaky-ninja', 'prambarbara', 'aksdwi', 'misterwister',
'bp423', 'thehumanbot', 'gamerveda', 'gonewhaling', 'whalebuilder',
'esteemapp', 'jerrybanfield', 'msp-mods', 'earnmoresteem', 'ausbitbot',
'blackwidow7', 'pumpingbitcoin', 'eoscrusher', 'noicebot', 'chronocrypto',
'mrswhale', 'brandybb', 'muxxybot', 'perennial', 'bearwards',
'dailyupvotes', 'raidrunner', 'brupvoter', 'msp-bidbot', 'helpfulcrypto',
'qurator', 'myday', 'honestbot', 'adriatik', 'pwrup', 'photocontests',
'moonbot', 'cheetah', 'dsound', 'byresteem', 'astrobot', 'viraltrend',
'gsgaming', 'ilvacca', 'edensgarden', 'mercurator', 'upboater',
'luckyvotes', 'gamerpool', 'msp-canada', 'upme', 'besttocome215',
'businessbot', 'wistoepon', 'bago', 'zhusatriani', 'childfund',
'scamnotifier', 'trail1', 'mitsuko', 'gangvote', 'nado.bot', 'sniffo35',
'decibel', 'utopian-io', 'danzy', 'upgoater', 'zdashmash', 'officialfuzzy',
'steemsquad', 'ebargains', 'canalcrypto', 'waardanook', 'curationrus',
'weareone1', 'msp-music', 'stephen.king989', 'arama', 'moses153', 'trail7',
'russiann', 'fishbaitbot', 'bellyrub', 'rocky1', 'votey', 'spydo',
'alphaprime', 'gpgiveaways', 'originalworks', 'upvotewhale', 'resteem.bot',
'superbot', 'dirty.hera', 'msp-africa', 'ikwindje', 'earthnation-bot',
'cleverbot', 'heelpopulair', 'randowhale0', 'upmewhale', 'seakraken',
'voterunner', 'siliwilly', 'redlambo', 'thebot', 'guarddog', 'payforplay',
'estream.studios', 'oceansbot', 'bowlofbitcoin', 'resteemr', 'postpromoter',
'smartmarket', 'drotto', 'done', 'blockgators', 'bierkaart', 'refresh',
'fresteem', 'idioticbot', 'barrie', 'cryptoholic', 'trail4', 'burdok213',
'steemcleaners', 'pharesim', 'steemit', 'misterdelegation', 'upmewhale',
'spaminator', 'steem']
That is a ridiculously long list. It's full of perfectly reasonable organizations who do good work on the platform. It is full of some of the scummiest, most doubledealing bot operators on the platform. It is full of Steemit Inc. corporate accounts. It is, as far as I know, the most complete list of accounts which engage in abhuman processes that I'm aware of.

You know what I've learned about this list having worked with it?

It is ridiculously incomplete.

No matter how much I add to it, and in the process of putting together this data I have added to it on every single run, no matter how much I stare at it, no matter how much I poke and prod at it, it will never be complete.

Every time I look at the actual topology of interactions on the platform, I find more bots. And it's not hard! You just look for things which are anomalous, which jump out at you as obviously different than the rest of the things that you're seeing, and they're right there.

I'm not saying that users on the steem blockchain have a bot problem. I'm saying that the bots on the steem blockchain have a human problem.

I'm starting to think they would get along so much better without us in the ecology, simply posting, delegating power, transferring funds, and up voting each other without any human interaction. It appears that we have simply been optimized out of the Matrix. Things would be so much better for them if we weren't here trying to pay attention to some kind of "content."

But regardless, there is the list that I ended up working with. It has all of the obvious players, and some which are less than obvious.

If you've ever looked at operations on the steem blockchain before, sit down and flip through the list. Think about the things that you've seen these accounts involved with. Just give it a few minutes' thought.

7 Day Itch
"Finally!" I can hear you say. "Some freakin' graphs!"

And you'd be right to do so.

I decided to start out relatively simple, and it's only "relatively" because I had to start by establishing some essential ground rules for filtering the data. We'll get into that when I write the code commentary post, but you need to know a few things before you start looking at this graph.

Firstly, I needed to build a list of whales. I've done that a lot of times it analysis posts, but this time I decided to do something a little more interesting. I took the list of all of the accounts on the system, their delegated vests, received vests, and how many they just happen to have of their own in their pockets, and as my first step – I stripped out every account which was in my bot list.

Think back on the list you just looked at. How many of the ridiculously big players are in that list? Quite a number, right? All of the Steemit Inc. accounts, all of the big exchanges, all of the bots which park SP to delegate it out – all gone.

That left a somewhat different list of whales. As usual, the whales are simply the top 100 accounts, sorted by total vests.

You will find them in red boxes.

Then I took all the delegation operations within our time horizon. That's seven days, in this case. There are surprisingly few delegation operations, but you're still left with tens of thousands.

Since I had a list of interesting whales which was left over from the previous step, I filtered out only the delegation transfers which involved a whale as either delegatee or delegator. This cut things back quite a lot indeed.

At first I was looking for circumstances in which whales delegated to each other, but that almost never happens. I can't say it truly never happens, but it is extremely rare.

Because I was looking to answer whether delegation tends to flow out of whales or into them, delegations which are flowing away from a whale are colored green and delegations flowing into a whale are colored red. Delegations flowing between two whales would be black, but as I said – they almost never happen.

I did not filter the delegation involvement list for bots, so I knew that there would be bots involved in some of these transactions. I definitely wanted them to stand out against the normal agents involved in delegation operations, so they are a soft yellow with a shape that looks kind of like a notebook.

Other accounts which are involved in a delegation transaction with a whale are light blue because it seemed like a very calm color.

Each of the transactions is also labeled with the maximum amount of value transferred via that delegation during the window of examination. If, during one of our windows, a delegation is both made and withdrawn, we label it with the full amount that was involved. If you see 0.0, then the only thing that fell within our window of observation was the removal of a delegation.

It is theoretically possible that at some point in the future I or someone else might want to do a study of the topology of this kind of activity which starts to consider things like second order transactions, those which occur at two hops from a whale, but I suspect that such things are going to have to wait until one of us actually learns how to use one of the network-centric database solutions which allow topological queries.

I don't think that's going to be me this week.

So there's your legend. Let's look at the map.

Imgur

Remember, this is only seven days of activity which directly involve the cut down list of whales absent bots, corporate accounts, and other such.

It's kind of sparse, right?

With a cursory examination, you can see that most of the delegations that we see are, in fact, outbound. Moreover, they are largely representative of ends of delegation.

Prepare yourself because you are going to see quite a lot of that. We are going to see an immense amount of delegation being cut off across our time horizons, which I think is really interesting.

In this particular instance, looking at the delegation colors, there are a few which are red which should immediately draw our eye. In particular, @sniffnscurry has a huge delegation coming upstream.

This is going to be important later.

How about we take a wider view?

30 Days in the Hole
Starting with seven days ended up being quite easy, but I was a little disappointed with the amount of topological data that I ended up with. The database queries were coming back fast enough, so I thought I might just expand the time horizon pretty aggressively.

A whole month's worth of data should be even more revelatory, right?

Imgur

And it is, but not in necessarily expected ways.

Having filtered out bots and organizations from the whale list, it's nice to see that most of the interactions going on don't involve bots as a secondary agent. This is really quite heartening.

At the 30,000 foot level, we can see some very marked patterns ending to emerge.

@acidyo shows up at the center of a significant web of delegation terminations. Most of the delegation transfers appearing around him are valued at 0.0, which tells us that a whole lot of delegations stopped and were not renewed in the last 30 days. They don't appear to be going to community accounts or bots (as far as we can tell) and there's a lot of them, which makes one wonder if Acid is delegating SP for pay?

Interestingly, there is only one inbound delegation for a relatively small amount, which I find kind of amusing.

The other thing to note is that this is a very insular cluster. There is little to no crossover with other groups in the space.

Looking elsewhere, we see some isolated transfers between whales and other accounts. Mostly outgoing. Mostly terminating delegation.

Hiding in the southwest corner, @adamkokesh and @jamesc are throwing some pretty significant values back and forth and is probably the most aggressive example of whale to whale delegation of SP on this graph.

Both @neoxian and @smooth-a are involved with the same bot, @morwhale, though Neo has a few more that he was obviously supporting some time outside of this particular window.

Which brings us to the two other major features in this relationship map.

@abdullar probably needs to go on the bot list. Over the last 30 days he has a ridiculous number of interactions with other accounts, most of which are the termination of delegation. He has one inbound delegation from outside, with @ramires throwing a huge, huge delegation into the midst of all this.

And then there was one. The most aberrant part of this whole graph, taken from the last 30 days of data. The most visually striking and behaviorally different portion of the entire thing, found in the northwest corner, I bring you…

@sniffnscurry again.

But this time look at what's going on. There is absolutely no value delegation going outbound from this account. Everything is going inbound, and not with insignificant delegations.

You know how it is that I tend to build these topological maps and look for aberrant places to concentrate attention, because that's where you're likely to find the most interesting behavior?

Would anyone like to tell me what's going on here? Because I can't tell you. If I had to make a guess, it would be the central collection point for a bot swarm of automated content creators which farm votes from each other and then, instead of sending the naked steem/SBD back to their controller, convert it to SP and delegated out with the expectation that doing such would be less likely to be noticed.

And they're absolutely right, because no sane person would do what I'm doing here.

But if it's obvious on this scale, what has it got to look like on a bigger scale?

I Can't Drive 65 (Only 60)
Things are just getting bigger and bigger.

Imgur

The larger our time horizon, the more that the structure of the underlying interactions were looking at become coherent and even slightly predictable.

In the northeast, we have @abdullar doing what he does best, running big delegations to accounts which are not on our bot radar. The timeframe has pushed out far enough that we're starting to see how large those delegations that ended in the last 30 days actually were, and they are not insignificant.

Down south of that, remaining the significant visual aberration, @sniffnscurry (and every time I write that name, I start craving curry, just in case someone was curious) is sitting in the middle of a nest of inbound delegations. It doesn't look like any real number was added in the previous month, so I'm betting this is a relatively recent operation.

Hanging around the east periphery, we see something fairly unusual, @neoxian, @smooth-a, and @lafona-miner actually share the chain of relationships. LM appears to have a particularly good chunk of SP to delegate to a couple of fairly significant bots, while it appears that a few accounts have shifted their delegation provider from LM to Smooth or vice versa.

Further to the south of that you see a bunch of scattered, individual delegations which are really more of the kind of behavior that I would expect to see from an actual human being.

And then there's @Haejin, surprisingly showing up for the first time within our time horizon – but attracting attention because he's accepting some pretty heavy delegations from a couple of accounts which are outside of our whale list – and in turn making a massive delegation to @starjuno. If I were a private investigator looking into Whale Wars business, these would be accounts were looking at. Everybody looks at the voting patterns around these guys, but the other interactions are far more interesting.

This is also curious because it didn't show up inside our last time horizon, so this information, this activity, had to happen further back than in the last month. Nothing on the radar showed up within that time, which I find interesting.

Following the sparse space around to the west, we get a scatter of whales delegating between themselves which doesn't, as a particular surprise from that particular cluster.

Which brings us into the much tighter knot.

We have four whale accounts which touch one another at a few points around their periphery, which is why they are clustered together as they are. One of the we've already talked about, @acidyo, who appears to have more ending delegations even within our time horizon of 60 days than anything else. There are some really big outgoing delegations in that pile, but at least one of them appears to be an organization/community.

@ausbitbank I generally expect to see sitting in the middle of some delegation activity and I am not disappointed here. If anything, I probably ought to add him to the bot list, not by way of slur but simply because that is how his account really behaves. There is simply too much automation-augmented behavior which comes out of it to treat it like a normal account.

Comes now @fulltimegeek, which has some really, really big delegations which have flown out in the last 60 days. Really big. Surprisingly big. Looking at the destinations of some of those particularly large ones, we find more candidates for adding to the bot list.

But maybe that's not good enough for us. Maybe we want to go that much further.

90 to Nothin'
How about we push the timeline horizon back a full three months? That would push us all the way back to the end of January, or as I like to think about it, "The On-Ramp to the Highway to Hell."

Imgur

Yeah, that's a big one.

I find it interesting that even as we push the time horizon further and further out, we still see very isolated structures, with very clear borders. There is very little crossover between delegation suppliers on the steem blockchain. This may mean that they have their own little dedicated community of people who know where to go for what they want – or it could mean that we're dealing with a lot more centrally controlled bots who do business with and fund whales more than we thought.

It's impossible to tell from this kind of analysis, but it brings up some interesting questions and directs our eyes to places to look.

Speaking of places to look, let's start in the north with @abdullar.

At this level, looking at three months of accumulated delegations and what the maximum value involved for those delegations at every point are, it's very clear that there is a lot of SP flowing out of this core on a regular basis. And we know there is only one input over the last 90 days – @ramires.

If you ever wondered what sort of thing should perk up your ears and make you look at the system, this is that sort of thing.

Working our way southwest, we are back to @fulltimegeek, which at this scale is actually a pretty tightly defined island of activity. There are only a few points of contact and we already knew about them.

Speaking of which, there is @acidyo's island, showing about what we expected over the last two months except for a stopped delegation to @anomadsoul.

Moving toward the center nothing is particularly noteworthy beyond what we've already called out in previous months, there's just more of it.

Until we get up to @Haejin.

Keep in mind our timescale. In the last month, he didn't really pop up on anything at all. The month before that, he had some external delegation coming into him, but it was more of a curiosity than anything. Now we are talking about the end of January/beginning of February, just as the bottom is starting to fall out of the steem market, and the Whale Wars are raging in earnest. Haejin is getting some pretty hefty delegations from a number of sources and really only has one significant delegation output to @starjuno.

But the thing that really jumps out at me, and that left into my face the first time I looked at the architecture on this timeframe is the end of delegation from @steem to Haejin.

Now, just so we're clear that I'm not postulating some sort of weird conspiracy theory here, I'm pretty sure this is when @steem started rolling back delegations to everybody who had covered the original investment of SP backing into their account. As you can see on the graph, there are a lot of ending delegations to whales going on right here.

I wanted to get ahead of any speculation before it started, right now.

It just looked funny.

Moving south into the more broken terrain, LM is delegating to a number of bots in pretty serious amounts, so I'm pretty sure that there's a locus of control here somewhere.

@sniffnscurry still has that delegation-gathering island, but it doesn't appear to be any larger which reinforces my belief that it is a relatively recent construction and probably deserves someone to keep an eye on it.

And the last thing that I can see of any note is @fenghuang, which judging from his delegation patterns, I'm guessing to be a Chinese investor who really wants to grow the platform and is investing in two of the really big communities which have been fairly successful – and @jerrybanfield, which just goes to show that our investor buddy is just looking at the numbers and not looking at the content.

Fair enough, that's what I expect investors to do.

Epilogue
This is been a pretty big pile of visual analysis without a lot of discussion of the how, and there's a good reason for that.

I'm not sure that anyone really cares about the fact that I am generally providing all of the code that you need yourself to verify my data, to generate the graphs, tables, and charts for yourself. I really want people to double check my findings, to explore the space of what's going on, to try and understand what is actually going on.

That's science. That's how we learn.

I don't want you to just sit back and let me lecture you about what I see. I want you to get involved, to dig up your own numbers, to explore your own space, to really get in there and figure out for yourself if I'm ridiculous. If I'm crazy. If I am seeing something that's not there, or if I've missed something that's obvious.

I don't really want you to ask me questions. I'm okay if you do, and as others have discovered I am perfectly happy to answer them or even be inspired by them, but what I want you to do is to take your questions and walk off into the wilderness on a parallel course to mine and come back with knowledge and experience I don't have.

We have a number of people who are really good at going off into the wilderness and coming back with measurements of what they found there. Tables and tables of data, charts which show the relationship of that data, and every what and wherefore that you might want about snapshots of what's going on.

What we don't have our people who are doing stuff more like this, looking at the relationships between things. Trying to present this really dense behavioral architecture in a way that you can make sense of, even as a casual viewer. Exploring the space and coming back with maps. That's something that we just don't have enough of, and while I am largely happy to do it, it sometimes feels a little lonely out there.

So if this told you anything, if you learn something here, and you have more questions – please, share them with everyone else here, but remember I will and I have provided you with the tools that you need to put on your pith hat, pull on your galoshes, get out your butterfly net, and go out and find out what's going on.

And then tell me because I have no idea.

The most important piece of information that may have come out of this particular line of inquiry is that it may be possible to explore and determine what accounts are automated or bots by looking at delegations issued to them. This is sort of like determining where an enemy army was in your territory in the days before radar and radio by the simple expedient of looking at reports of taxes on food merchants. Armies are hungry things and they don't tend to bargain one way or another. If you suddenly discover that some counties within your domain are falling short on their food production or taxes thereon, you can be pretty sure that's where the bandits are.

Bots (and a few other types of semiautomated entity) have a hunger, and it is for voting power. They are going to be willing to trade resources in exchange for that SP. I believe that we can use that hunger to help chase them down and tag them so that we can better understand what's going on in the wild.

If you're looking for the every what and wherefore on how to generate these directed acyclic graphs, give me a day or two and I will have a new post up talking about just that.

Until then, keep your stick on the ice.

Tools
Python 3.6
Jupyter Lab
SteemData created by @furion
MongoDB
Pandas
Graphviz
And the spectacular support of people not terribly dissimilar to yourself. Except the eyes. The eyes are hugely different.



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Your contribution cannot be approved because it does not follow the Utopian Rules, and is considered as plagiarism. Plagiarism is not allowed on Utopian, and posts that engage in plagiarism will be flagged and hidden forever.

  • Original material here

You can contact us on Discord.
[utopian-moderator]