So much Dust!
Just 5 months ago, I had no idea about the definition of "dust" on this blockchain, and I've been here for over two years now! Maybe you also haven't heard about it yet, so let's get that out of the way first...
What is Dust?
The short answer: If the total rewards on any piece of content are less than $0.020 - that's called dust. And it will be gone with the wind on payday. Dust-rewards are not being paid out
I'm not going to argue about the reasoning behind those dust-rules or go into any more details here. I've already had my rant back when I first discovered this pesky detail about these rules and I've gone into much more detail in that post. So, if you need the long answer, you can find it over there. For now: It is what it is, and it still sucks!
It's getting worse.
It probably took myself so long to learn about dust, because back then you could give votes well above the dust limit with less than a hundred SP.
Today, you'll need 350SP just to fill the dust limit with a single vote at 100%.
And then, if the reward pool fluctuates or the markets move against your favour, it's still quite likely that those rewards could fall below the threshold again by the end of the week. So in reality, unless you've acquired several hundred SP under your name, you'll never properly be able to give comments which you appreciated more than a symbolic upvote.
I think there is a real problem here! Engagement in the comments is essential to building connections on this platform. Being able to share rewards adds a quality to the social interactions here and provides a gratifying experience that goes way beyond the monetary value of some digital tokens. In my view, that's really what's making this place actually unique!
My Kittens are starving!
Well, not really, but if you read this post headline by headline it provides for a funny build-up, try it! And before we move on over into the solution oriented section of this post, I'll have to mention my kitten-bots.
Quite a while ago I released these stray kittens that give cuddles to generous strangers they meet on steem. They want to be your friend and if you're nice to them (and not too selfish in general), they will keep coming back to you.
These kittens have just 120SP each, and you know what that means... DUST!
I certainly don't have enough STEEM to run several kittens with 350+SP for each, and while I enjoy using a chunk of my stake just to spread virtual cuddles around, I'm not quite ready to go to such an extend. So, as things were, the kittens were wasting 80% of their cuddles producing nothing but dust and most of the love they received was dust, too.
I almost considered putting two of them to rest and allocating their power to the remaining survivor... but how was I going to explain that to all their friends, and which one would be allowed to live... I just couldn't bring myself to do that.
In hindsight it's so obvious, but it took me a while to realise that if I just made a single additional bot with enough SP, then I could have that one track my kittens and fluff up their dusty votes when it's needed.
A Bunny to the rescue.
Those clumps of fluff under the sofa are called "dust-mice" [Staubmäuse] in my language. That would have obviously been a perfect fit for the kittens and I really hoped it would actually translate like that into English. Well, you might have guessed by now, it doesn't. They're called "dust-bunnies".
Luckily bunnies are at least equally as cute and probably even much more universally loved by everyone, because I can think of a lot of people who actually do not like rodents but I've never seen anyone grossed out by a bunny!
The Bunny is for Everyone
It didn't initially occur to me to turn this into a bigger thing. I just wanted to bring some value back to those dusty kitten-cuddles. I had set up a small bot-script to track the kittens and the googly accounts for dust and do what's necessary, but this new bot with 350SP could actually handle a bit more than just that.
I started adding some friends and the real human commenters that came by the bunny's introduction post to the watchlist to find out how far I could go with the SP at hand... and there was still excess capacity left. I started offering more slots in some discord communities and everyone seemed really excited about it and I quickly had over thirty accounts being watched by the bunny.
It dawned on me that this might actually have the potential to be turned into something bigger. The bunny was already watching over some accounts that I didn't even personally know and I had started to implement some rudimentary prioritisation and anti-abuse features anyway, so, why not simply offer it as a service to the wider public?!
I made another post for the bunny, describing in detail how things worked, offering it's service to anyone coming by and suggested humble voluntary delegation support in return.
Equipped with Rocket Boosters
The resonance caught me by surprise, several users made small delegations almost immediatly, my friends were eager to chip in for the cause and everyone loved it. And then, suddenly, someone delegated a whopping 1500 SP to the bunny. Apparently @mathowl had sent a link to @justtryme90 and he must have obviously liked the idea a lot.
To be honest, it was almost a bit too much to handle. Even though there were quite a bunch of new users that had applied to be enrolled with the bunny, I still had to go out, frantically searching for more and more users that seemed genuine and engaged, just in order to fill the bunny's suddenly quadrupled capacity. Many of these people might not even know about their luck, yet. I guess eventually they'll be pleasantly surprised and wonder about that bunny and why it's following them around.
Testing the Limits
The bunny is now watching 114 accounts for incoming and outgoing dust that needs to be fluffed up. This comes up to 1.611 comments or posts with rewards below the dust limit in the bunny's memory right now. 209 of those are already within the last 36-12 hours window before payout and are being considered to receive the next available upvote from the bunny.
To fill this workload, the bunny has 2.320 SP available. It's a tight squeeze and as of today the bunny has actually started to miss some dust due to capacity shortages. But that's actually a good thing!
While the bunny ran with constant surplus capacity, it was actually really easy to just create excess amounts of dust and have the bunny fill it all up. Without competition and with plenty available voting power there was never any reason to stop supporting such intense use (let's not call it abuse right away), the rudimentary balancing mechanisms I had implemented stayed mostly unused.
Improving for Scale
I've chosen to tackle prioritisation and balancing through sorting the queue of tasks by "urgency", "user prioritization" and "user quota". Simplified as far as possible, it looks like this:
task urgency + user priority - quota penalty = task priority
The "task urgency" is derived from the time an item has left until payout. The "user priority" is a bonus given to users for supporting the bunny with delegations or donations. The "quota penalty" gets applied based on how much dust-support a user has already received. While "task urgency" and "user priority" are pretty straight forward , the "quota penalty" is a bit more complex.
Initially I had the quota penalty structured very simple, too. The bunny was simply tracking how many outgoing votes and how many incoming rewards it had fluffed up in the name of each individual user and applied a penalty score based on how high the user's quota was.
This all works quite well to some extend. Delegating users get to enjoy their bonus priority and receive support first, while the rest of the users are served next, taking turns as their individual usage quotas increase. This sounds fine in theory, but with lots of absolute margins set in code by myself and very superficial metrics it's not really precise or reliable at all... and it's honestly still quite easy to game the system.
So, I've already made a bunch of improvements over the past days. The "quota-penalty" now consists of multiple dimensions including different time-spans and measuring actually delivered voting power instead of just counting the number of items. Absolute margins that I had just pulled out of a hat have been replaced with proportionally scaling factors and the bunny has started recording new metrics for the system to have more data available to work with in future improvements.
Fairness, Transparency, Solidarity
I'm trying to create a system that ultimately relies on the user's solidarity, for that it needs to be as fair and as transparent as possible. Things are running very smoothly so far, but I believe there's a lot that needs to be improved and some crucial things are completely missing still.
I'm pretty confident in the basic prioritisation queue, it's akin to "max-min fairness" models that are used in similar distribution problems were weighed demand allocation happens over time, but I am not sure if there's additional factors that should need to be considered.
What do you think needs to be considered to keep this fair?
I have some opinions, but opinions aren't usually fair before you get a lot of them and so I'd really like to hear from you.
The bunny needs to report on it's activity so that supporters can get a picture of where their support is going. It's great when you can trust someone, but it's better when you don't have to. But I do not want to make another one of those bots that just keeps repeating status reports. Maybe a discord would be great for this? Maybe bunny-users can summon a personalised report with a comment? I haven't really thought about that at all, but it would help if you could tell me:
What kind of statistics would you want to now?
The project is currently running with 65% of the funds coming from a single source, and that's not going to be there forever. In the long run it needs more users willing to make small or decent contributions. I believe it is possible to reach strength in numbers here. Currently I estimate an average SP demand of ~25-30 per user, but it's a bit early to tell.
Getting your incoming and outgoing dust covered more reliably just for lending out a delegation sounds like a pretty sweet deal to me, knowing that this will also contribute to helping others, especially small users, sounds even more attractive to me... but maybe I'm delusional?
Do you think this is doomed to fail or do you believe this is destined for greatness?
Please give me your critical thoughts in the comments!
P.S.: I read somewhere that red arrows in thumbnails work like visual clickbait. So I included two of them in the title image just to be sure I have your attention. Did it work?
@fraenk loves you!