[STEEM BLOCKCHAIN] A New Non-Betting Voting Mechanism For Reward Disbursement

8개월 전

It's surprising how often I feel the need to turn replies to other people into full-blown posts, but given that this one actually has me creating an entirely new blockchain-based voting mechanism which I feel pretty good about, it might be worth putting this in front of some people.

Is it compatible with the Steem blockchain? Absolutely not. It actively and aggressively violates certain assumptions about what drives engagement with content, and explicitly rejects the idea that Proof of Brain can be derived from creating betting pools – so I remove betting pools from the voting mechanism altogether, turning it into a straightforward, mechanistic, reward pool distribution signal.

I think it's rather cunning.


image.png

@raycoms :

Now, distributing the share of the vote over all votes you cast without a VP limit is complicated, it would mean that your past upvotes will become worth less because you are upvoting more which itself is something people wouldn't get easily I guess.
> Tbf, I don't know, right now out of my head, a solution for this complexity.

Honestly, it's not really that hard. We already have, in theory, a pool of value associated with you – your SP. We already have mechanisms which act as sliding windows. All the pieces are there to build a sliding window, automatic allocation system which distributes your voting power equally across all elements you voted for in the last cycle.

Let's do a bit of gedanken.

I'm going to throw out some numbers here and they will largely be arbitrary. Specific numbers might be very different, but as a loose idea…

Imagine that you have 100 SP. Imagine, for the sake of argument, that right this moment there are 10,000 SP worth of tokens floating about. The amount of voting power that you have available to steer inflationary value is calculated to be 1%. When you vote for things, that is effectively saying you can direct 1% of the inflationary value to all of the things that you voted for in the cycle.

To keep things relatively simple, let's assume that "a cycle" is seven days long. A cycle is a seven-day sliding window which accumulates your votes and then distributes the value accordingly.

We also have a pool called the inflationary value. For the sake of the arbitrary moment, let's say that it has 1,000 tokens in it. (Things will get complicated very quickly, but that's not our problem at this moment.)

That means that this cycle all of the votes that you have left will distribute 1% of 1000 tokens, or 10 tokens. It doesn't matter what you voted for, it doesn't matter how many things you voted for, it doesn't matter how active you've been – when this reward cycle is completed, you distribute 10 tokens evenly across those votes. They could be for your content, they could be for other people's content, theoretically they could even be for groups, organizations, or communities – any entity which can accept tokens.

If we still want downvotes in the system (though I am generally systemically against downvoting), we can simply consider a downvote to represent applying a negative value in your share of tokens – and it can come out of the same inflationary pool value.

So at the end of our arbitrary time for value assignment, let's say you have seven upvotes and three downvotes. You have 10 tokens worth of value to assign, so each of them gets 1 token (or -1 token in the case of a downvote).

If we want to be clever, at the end of the sweep where values are assigned, if there is extra money left in the pool (that is, people have used downvotes), the money stays in the pool for the next allocation. If we want to be painfully *stupid, * have to track a lot more extra information, and do it much the way things are currently done, we redistribute all of that extra funding to everyone who didn't receive a downvote from the original voter. This probably ends up distributing those overflow funds quite likely to the same people who received downvotes, just on other posts.

Now we have actively decoupled voting from trying to give a price of value to a post. Instead, we are more narrowly focused on directing our portion of the reward pool in directions that we think are appropriate. As a side effect, it becomes much closer to that original idea of "upvote as tip" without actually having to specify a tipping value.

This method is also keeping the vote window separate from the inflationary allocation window. The inflationary allocation tick can occur as often as you like. Once a day, once an hour, once a minute – whatever is appropriate to your level of computational availability (at a system level). The only thing that's important to keep in mind is that the smaller the inflationary allocation tick, the smaller the inflationary value to be allocated.

(That the inflationary allocation actively decreases the effective amount of funds that you can allocate from it as tokens are created through it is left as an exercise for the reader, but it is most certainly true. In our arbitrary example, consider that after the first cycle, the pool as a whole has 11,000 tokens in it – our rate of inflation is ridiculously high. If you didn't vote for yourself and no one else voted for your content, you still only have 100 SP, which will let you direct 0.91% of the pool. This is inherent to all inflationary Proof of Stake voting systems, however.)

So – really not all that complicated. From the user side, they just vote. They interact with content they like or don't like, signal to the system how they feel about it, and the resources that they are able to distribute get distributed automatically. And fairly.

The addition of the ability to "tip" alongside a vote would be nice, would effectively just make it trivial to send a little something extra to those you thought were deserving of it, and effectively function just like any other fund transfer on the blockchain.

But everybody understands tipping.

This entirely removes the current mechanisms regarding betting on whether or not you think this thing will get more votes from other people and that alone gets rid of a vast number of follow-on problems. It doesn't matter when you vote, as long as you do – so there's no rushing to be the first but not too quick. As long as you vote, that vote will matter and that vote will matter equally scaled to your SP. It gets rid of the evergreen problem, because we don't care how long ago the content was created, we just care about whether it received a vote in the last voting window. We don't actually care about what the eventual value that gets assigned to that post really is, because there's no way for us to know ahead of time. All we care about, because it's all we can affect, is how we steer the reward pool.

This specifically doesn't try to deal with issues of whether or not self-voting is a good idea, a social good, or an inevitability. I find those questions boring and ridiculous, so I design systems that just don't care. If you make one vote a day and it's for yourself, fine. That is your power to do, your power to direct, and I don't own your SP so it is ridiculous for me to think that I can tell you what to do with it. It's unwise because it doesn't actually support more content being created on the blockchain, so you're not helping increase the value of the whole by creating more attractive content and thus bringing in more users who might themselves be interested in voting for your content, but that's your choice.

You'll notice that I have arbitrarily suggested that the voting window be seven days and have simultaneously pointed out that the reward cycle can run as arbitrarily short as you like. Yes, that means that any votes you place will have multiple impacts under this kind of system. That is to say, they will continue to direct part of the reward pool every reward cycle. Let's say the reward cycle runs once a day. That means any upvotes that you have placed today will influence the next seven reward cycles and direct the reward pool accordingly. That's kind of a big deal because it creates a certain momentum.

You'll also notice that I have completely removed the "curation" system of rewards for voting – and that is by design. You could stick one back in here, with a flat portion of the reward pool set aside to be distributed equally across all voters for the last reward cycle, scaled by SP if you must, but I don't think that under the new description of how voting would actually work that you need to incentivize people to vote. If you feel like you must, take a flat slice out of the reward pool and distribute it to voters in that cycle. Stay away from any system that requires you to worry about sequentiality because that is wasted complication and drives behaviors which are both unhealthy and fiscally unwise.

Something like this actually gives you a voting system which is something more than just a betting system on what everyone else is going to do. Instead, it focuses on "what do you think should be rewarded that you've seen" and has another great, positive side effect that it will inevitably spread the value of votes across a broader selection of content. Removing the betting pool drive of "is this content going to be bad on by other people?" has great, maybe incredible, knock on effect.

I do agree it would be a bit more difficult cognitively, but I also do believe that it is the only way to fix the "game theory" of "upvote/downvote" which actually almost no one seems to get on this platform.

I have spent a lot of time tinkering with the game theory of voting systems, of content discovery systems, of a lot of social media architecture. This is what happens when you are really old (in Internet time) and predate the web so you had the opportunity to see pretty much everything that's happened in terms of social media evolution. Also, I love game theory. I consider it a curse.

Targeting an end value is mechanically difficult and ultimately is going to be an emotionally unrewarding interface, because in almost no situation are you going to get what you want. The vast teeming masses of users on this platform have very, very little influence over the allocation of the reward pool. So saying "I believe this post has a value of $10" or $100, or $1000, or $1 million all has effectively the same emotional payoff, and that is not a feature. When you make it not really matter what user says when they interact and signal the system, you decrease their desire to want to continue to engage with the system.

Instead, when you treat the user like an individual and make their implicit resource allocations specifically tied to their personal resources, you get a lot more emotional connection. Even if the real financial value of those resources is extremely low, they are still owned by the user/player, and as such they will want to use them well.

To that end, it would probably be a good idea to add "you get to allocate X tokens from the reward pool in the next cycle" somehow, somewhere on the interface if someone were to implement the voting system I just described. Along with "you have made Y votes in the last voting cycle." With those two pieces of information, you know everything you need to know to decide whether or not you want to drop another vote. No matter how many you drop, you still will allocate that much of the reward pool, it just may be spread thinner. For many of us, that's not a problem. Some people are more interested in playing the game, which is fine, and in this case "the game" will be the trade-off between a few large votes and spreading that resource pool over a wider number of posts. That would be up to individuals to decide.

This would seem to solve most of the problems that both of us see with the system.

(It does actively and intentionally leave aside the issue of whether or not Proof of Stake systems are inherently bad for resource allocation. Personally, I believe they do a terrible job of achieving a "wisdom of the crowd" mechanism for determining what "the best" content is, because nothing suggests that whales have the same taste in content as I do. It's an absolutely useless system for determining good content. However, it may be a reasonable mechanism for determining where mechanical rewards get assigned. It's not my favorite, but I'm willing to give it the benefit of the doubt because it provides an automatic kind of scaling. Fine. As long as we never confuse it with determining "what the best thing is," I can deal with it to some degree.)


If you've made it this far and have generated some thoughts or impulses, go ahead and share them. And reSteem this post if you think that people who follow you might have thoughts about what kind of voting mechanisms would encourage more varied and rewarded creator culture here abouts.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
STEEMKR.COM IS SPONSORED BY
ADVERTISEMENT
Sort Order:  trending

That means that this cycle all of the votes that you have left will distribute 1% of 1000 tokens, or 10 tokens. It doesn't matter what you voted for, it doesn't matter how many things you voted for, it doesn't matter how active you've been – when this reward cycle is completed, you distribute 10 tokens evenly across those votes.

If you don't vote would your share of the window move onto the next window (essentially you double your spending power via "vote" saving), would the stake be reallocated among the reset of the votes, or would the inflation just disappear? I think the first idea would be interesting as dead stake would essentially reduce inflation (maybe?) or you could save up a lot of inflation stake to reward a single piece of content more.

As long as you vote, that vote will matter and that vote will matter equally scaled to your SP. It gets rid of the evergreen problem, because we don't care how long ago the content was created, we just care about whether it received a vote in the last voting window.

Using this approach seems simpler to reason about and benefits "good" content over the long run. If you solve the evergreen problem, you also encourage people to focus on creating content with more longevity and quality now that they don't have to worry about people seeing it initially.

I think "de-gaming" the mechanisms and simply conceding the freedom of choice to a user upfront could reduce a lot of the upfront complexity of the system and it solves multiple potential issues that people complain about here.

Rather than trying to throw mechanisms at users to try and force people to behave in the way we want them to, we should simply be openly in favor of letting them do whatever the hell they want. Because at the end of the day, that's want people will do. No matter how complex and well-designed of a system we keep trying to design, there's always a way for someone to "manipulate" it. Maybe we should concede we can't control folks and build a simple system that achieves a simple goal that people like and understand how to use.

Rather than looking at content as a place for content appraisal, we should just support who we like or continue to grow our stake if we decide we don't like anyone. That choice shouldn't be forced by people because at the end of the day, you are bound to piss off people on both sides.

I don't have the time to spend my time to vote on 10 pieces of content a day. It would be nice if those that got my 2 or 3 upvotes a week really could benefit from it instead of them receiving pixie dust and me not allocating my optimal potential.

That being said, I think we gotten to a point where there's so much technical debt that such an idea would be better served in a better designed blockchain rather than here on Steem. The more they grow the codebase with complex mechanisms, the harder the monolith becomes to change.

But I really like this idea. It's a shame that it isn't talked about more.

·

If you don't vote would your share of the window move onto the next window (essentially you double your spending power via "vote" saving), would the stake be reallocated among the reset of the votes, or would the inflation just disappear? I think the first idea would be interesting as dead stake would essentially reduce inflation (maybe?) or you could save up a lot of inflation stake to reward a single piece of content more.

Assuming that we go with this sort of abstract thought experiment, yes. Not voting would result in your SP not directing any of the reward pool for that particular cycle. That doesn't mean that it wouldn't get directed, assuming there are other users in the pool – it just means that you wouldn't have chosen something to go into that vote.

Now, let me reiterate something which may not have registered as strongly as it should, I'm not talking about a voting mechanism by which you can stack up unexpended power. Because your votes are literally anchored to a single point in time (a specific subsecond of the epoch) and it's the window that moves, there is no resource for you to be saving up.

Now – for the sake of imagining, what should happen in a given cycle if no one has voted? If not a single vote has been lodged during the cycle window?

That is an excellent question!

I would be really tempted to just roll up that reward pool into the next reward pool. That keeps the inflationary rate constant which makes a reasonable amount of sense. Hopefully, it should never happen, because there should be some kind of voting activity within "the last week" (if you go with a seven day cycle window), and if there isn't, your platform is dying anyway. But having an unallocated inflationary cycle roll into the next one until there is an allocation seems like a reasonable thing to take as a first cut.

The important thing is that the ability to allocate doesn't accrue to individual accounts. It is not a resource that pools. You don't have any kind of manna pool for votes.

Imagine it this way:

There is a linear line of seconds (or blocks being produced, depending on how you want to think of it).

You find some content and place a vote on it. That vote has a singular place in that line of seconds.

A cycle happens once every some arbitrary but predictable amount of time. For the sake of this illustration, let's say once an hour. Every 3600 seconds. (For the sake of the abstraction, you can imagine that the count starts at second 0.)

As such, the inflationary pool fills up by whatever your inflation rate is every cycle. For the sake of this illustration, let's say it fills up with 100 tokens every cycle. That means the number of tokens and circulation (allocated from circulation, anyway) increases by 100 tokens every hour.

The cycle window or voting window is an arbitrary time longer than the cycle tick. For the sake of this illustration, let's say it's seven days. So your vote affects every cycle tick allocation for the length of the cycle window after it was cast. In this case, once an hour the last seven days of votes cast steer rewards from the inflationary pool (100 tokens) to the authors of content.

So, let's imagine hour one.

There are (arbitrarily) 10,000 pieces of content posted to the blockchain. There are also 10,000 tokens in theoretical circulation, or at least 10,000 tokens exist..

You are the only user.

You cast a vote for one piece of content.

At the end of the cycle, 100 tokens are spread out over all the votes that were cast in the last week. You are the only stakeholder (with 1000 tokens) and cast the only vote, so all 10 tokens go to that one piece of content (and 90 float).

Now there are 10,100 tokens existing, you hold 1000 tokens, and theoretically someone else owns 10 tokens (unless you voted for your own content, which you would be free to do – so adjust numbers accordingly if you're so inclined; I'm going to assume that someone else now has the inflationary 10 tokens).

In fact, it is I who holds those 10 tokens because I am a poor writer on the blockchain and you really liked what I wrote. I have 10 tokens that I have earned.

Now it's the next hour. There are 190 tokens to be allocated across all the votes.

In the last hour, you have voted for four more pieces of content. The vote that you put on the piece that I wrote still stands and will always stand.

I have voted for one piece of content in the last hour.

For the sake of convenience, let's assume that we both voted for other people.

I can direct a whopping roughly just under 0.1% of the reward pool. You can direct just shy of 10% of the reward pool.

That means there is roughly 89% of the reward pool left after our allocations.

This cycle, there are six total votes. One of them is mine, so it gets the entirety of the almost 0.19 token that I can direct. Five of them are yours, which spreads 18.81 (19, for the sake of argument) tokens across each of the things that you voted for, or 3.76 each.

That leaves roughly 171 tokens to roll over into the next cycle.

(This is the first time that I've done a step-by-step walk-through on this process, so bear with me if I am being imprecise.)

It's interesting to note that under the current set of rules which we have arbitrarily agreed to, as the held stake any individual possesses decreases as a portion of all of the tokens in circulation, their ability to direct a portion of the rewards pool decreases pretty rapidly – but the longer that tokens in circulation have owners that don't engage with the voting system, the larger the accumulated reward pool grows as a function of the inflationary rate and the more that the active holders of the token can direct the rewards. Or, more succinctly, "move it or lose it."

In a situation like we currently have on the Steem blockchain where there are a Pareto distribution of stakeholders, most of the active voters wouldn't be able to direct a significant portion of the rewards pool – but the absolute amount that they could control would increase steadily as the major stakeholders didn't leverage that stake for votes.

If major stakeholders engage in self voting, big chunks of the reward pool get allocated to them and don't become available for other voters to allocate in subsequent cycles, but that is just the nature of Proof of Stake systems. The rich get richer if they want to; that's the nature of the beast.

It's interesting to consider the obvious alternative allocation mechanism, where all of the vote percentages are normalized to 100% of the reward pool based on the voters. So if you control 10% of tokens and I control 0.1% of tokens but we are the only voters, you end up allocating 99 tokens and I end up allocating 1 (well, slightly more for you and slightly less for me) after normalization. With that set up, tokens will never roll over because 100% of them will always be allocated, but members of the token base who don't vote during a given window don't get to allocate any of the reward pool at all.

Of course, there are all sorts of variants you could do to encourage or discourage various behaviors. You could assume one system-cast vote from a large stakeholder account every cycle if a user has been active on the platform, either posting or voting. While they would direct a large chunk of the reward pool, it would be split up in a lot of directions, making individual rewards pretty reasonable and giving people at least some minor motivation to be active on the platform. It wouldn't be a policy I wanted to set, but since it is a mechanically derivative process, any stakeholder could set up a bot to do such a thing and it would be reasonable to do so.

Using this approach seems simpler to reason about and benefits "good" content over the long run. If you solve the evergreen problem, you also encourage people to focus on creating content with more longevity and quality now that they don't have to worry about people seeing it initially.

Exactly what I was thinking about. The evergreen problem is a lot bigger in my mind that it is for most of the people who talk about the Steem blockchain, as far as I can tell. That content has a very, very short expiration date that it can be rewarded for, even if someone in the future find it useful, just tells me that the designers never expected or intended the platform to have a long-term existence. You get rewarded and you move on; you take your winnings and you leave the table. It's a focus on the ephemeral that really flies in the face of trying to create content that has real value. It's like strapping a voting system that you expect to derive value of content to Twitter. That is not what you're going to get.

No matter how complex and well-designed of a system we keep trying to design, there's always a way for someone to "manipulate" it. Maybe we should concede we can't control folks and build a simple system that achieves a simple goal that people like and understand how to use.

Precisely. All systems can be gamed. All of them. We have mathematical proof of that (and I encourage everyone to read Godel, Escher, Bach immediately) so it's actively foolish to pretend otherwise. The advantage of a simple system is that the interactions with it become clear which allows people to make good decisions about what they want to do. The harder you make it to get good information, the harder you make it to get good decisions out of people. Consider the nightmare that is STEEM versus SBD versus SCOT tokens versus the mosh that is the SMT proposal. What is a reasonable person supposed to do?

Something else – and they're doing it in droves.

I don't have the time to spend my time to vote on 10 pieces of content a day. It would be nice if those that got my 2 or 3 upvotes a week really could benefit from it instead of them receiving pixie dust and me not allocating my optimal potential.

See, in my mind you shouldn't have to worry about how many pieces of content a day you vote for. Voting should just be a side effect of interacting with the platform. You should be coming to the platform in order to read for a while (or watch videos, or whatever kind of content consumption). In the process of doing that, you will vote on things – hopefully things that you like a lot. You shouldn't have to worry about how many votes you cast or whether it was strategic, or how much voting power you have left, or how much mana you've got – you should just vote for things you like with the expectation that they will get rewarded.

I would love to be in a position where I spent time reading the Steem blockchain and felt like I saw 10 pieces of content a day that I liked enough to vote for. I would love for that amount of content to be here. It's not. (It's actually a little unfair to say that, because when I get into an ongoing conversation, there are plenty of comments that I think are worth voting for – often well over 10 a day. And I should be able to do so without worrying overmuch about whether I have completely depleted my voting power, etc.)

That being said, I think we gotten to a point where there's so much technical debt that such an idea would be better served in a better designed blockchain rather than here on Steem. The more they grow the codebase with complex mechanisms, the harder the monolith becomes to change.

Oh yeah, once we've started talking about voting systems which depart this far from the norm, we are no longer talking about the Steem blockchain. Absolutely, incontrovertibly impossible to implement with the system that we have in place. This is the kind of thing that you use as the underlying infrastructure for a brand-new platform with an entirely different approach to content discovery (unrelated to the blockchain), community building, the whole nine yards.

I would be more than happy to consult with people who wanted to create a new social media platform with a different architecture for engagement. If we absolutely needed to have some sort of blockchain tokenization involved, something like this voting mechanism for distributing the inflationary pool would be really important – insofar as the crypto side of things goes. But I would also want to integrate it with some sort of Web of Trust system in order to lens content and allow content discovery, and all the other stuff that I wrote about two years ago.

Designing something from the ground up to be a real social media platform first and then having the cryptocommodity represent an underlying evaluation of the content to be found there – that would be useful and interesting and maybe even a little cutting edge.

But that is definitely not the Steem blockchain.

But I really like this idea. It's a shame that it isn't talked about more.

I'd really love to find some folks who are interested in doing so. If you do, let me know.

Congratulations @lextenebris! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Dear @lextenebris

I've noticed that you've been posting sometimes about crypto, blcokchain and technology. I love those topics as well.

If you would ever publish anything related to technology, economy, marketing, psychology or steemit etc - then send me link in memo. I'm trying to support quality content and I have 2-3 upvotes daily to spare from @project.hope (over 200k SP) i my own account. I will gladly support your publications (as long as they represent solid quality :)

Yours, Piotr