Not every perceived solution in code is exclusively a solution... sometimes they introduce new problems

in #codeislaw7 years ago


I've often been talking lately about many of the problems we are likely to encounter on steemit, and the steem blockchain being situations where we as a community should see if there are community ways to solve it before rushing to hard fork and code as the solution.

I've also written about people that take the "code is law", or "the code allows it so it must be acceptable" approach as not necessarily being completely accurate as well.

This time I want to talk about something I've mentioned before. When we propose a code change that is often a knee jerk reaction to X is bad so let's make it in code so you can't do X. Usually a new exploit or problem can arise. I've been waiting until I had a good example to go over this. I finally thought of one so it is time to give you an example of why we need to be careful in rushing to CODE CHANGES as the default easy button solution.

We know there was an issue post Hardfork 19 with people up voting their own comments excessively. It was not a lot of people but there were enough people with sufficient steem power that it was having a noticeable effect on the reward pool.

This brought the people saying REMOVE SELF VOTING and that will solve the problem.

To which I responded that all a person needs to do is create one or more accounts and they can either delegate power to those accounts and resume up voting themselves, or they can take the slower route of actually moving some of that power around. Power down, send steem to an exchange, from exchange send it to another steem account, power it up, and resume voting for themselves.

Obviously the delegate method takes a lot less effort, and if anything is obvious it is that people really love the EASY path. So this would likely be the most common way to do it.

An interesting idea was to not allow someone to up vote themselves, or any account delegated power by themselves. I mentioned daisy chaining delegation to which they responded just follow the chain. This actually would work though I suspect there would be a performance hit for needing to do this...

That's where I left it. Until today. I thought of an EXPLOIT and new problem.

If delegating power to an account was part of the method of determining whether that account could up vote you then here is a negative attack exploit that comes from that. Let's call it Mega Troll for now just because it is sometimes fun to give hypothetical nasty things names.

Mega troll starts delegating extremely small amounts of his power all over the place. This would effectively block anyone delegated such power from up voting anyone else that they also delegated power to. I don't know if there is a way to refuse delegation of power so simply due to this one well meaning idea to address self up voting it opens a potential for someone to intentionally block massive amounts of people from voting.

So when people rush to CODE SOLUTIONS. Code can often create new exploits.
So the code is not always the answer. Likewise, because we can do a thing does not mean we SHOULD do a thing.

Next time you find yourself thinking "They should just do this..." and talking about code change I hope you will begin to consider that it is not always so simple. We must try to imagine ourselves as the bad guy and think of what new opportunities such a change might present to us. This is one way of deciding if the code idea is actually worth pursuing.

Code is often the way it is simply because the coder/programmer could not think of a better way. That usually doesn't mean they themselves would not welcome other solutions.

Sort:  

Most communities develop norms, people learn how far from norm they can go and not be ostracized, and some care less about norms and want to be ostracized. Since no system is perfect, no amount of code (or rules) will contain those that want to be ostracized.

No written rules on community norms for steemit (that I could find). So newbies flounder around for awhile trying to learn the norms. Perhaps I am still floundering. Wouldn't be totally surprised to learn that.

Those with the most SP or REP get to have biggest influence on how norms evolve and are defined.

Situation is probably not that different from most communities.

This concept is not only in computer code, but the also the legal codes that govern our lives. It is a great observation that interventions by the authorities creates new problems. Man is an extremely adaptable creature, after all, and when one loophole closes, another opens. Sometimes intervention creates more and worse problems than the original issue being "solved." It has been my observation that the best enforcement of proper behavior is unwritten consensus among those with shared values. As soon as behavior is codified in written script or legislation, it requires the crude arm of enforcement, and later exploitation by those with resources.

Well said. :)

Yeah, coding to fix every "bad" social behavior isn't the solution.

However, we can pretty much directly link the current issues we're having (spamming and self-voting) to the last few hard fork changes. I'm waiting to see how long it takes for everyone else to understand this and to work to restore a lot of the abuse-mitigation protocols that were previously in place...IF they understand it and want to do something about it.

Policing self-voting and delegated voting seems like an absolute waste of time and energy. Spamming and self-voting like we have seen over the past month or so wasn't an issue before. Now it is. Identify what has caused it to be an issue (with the issue being the "draining" of the reward pool), then work to correct it.

Or...we can continue ignoring the cause and create groups of "abuse fighters" to go around flagging people who may just be voting for friends, family members, and people who may have delegated power to them.

In other words - we can restore the abuse-mitigation via the blockchain's protocols, or we can ignore or exacerbate the problems and create an even worse user experience/environment.

I actually saw it BEFORE the HFs but due to the exponential curve most people did not really get much for such votes. I did see at least one whale up voting their comments for large amounts before even HF18.

Yet they were few in number and due to the curve it wasn't as noticeable.

Agree, Just because most have a moral side to them does not mean they all do. Shared!

what if from every payouts we would exclude a max upvote:

say post has : upvote $49 from A, then 3 upvotes from B,C,D in range $20-30 and other else.

say comment has : 10 upvotes in range $$1-5 , one upvote for $20 and other else.

If we would exclude a max upvote from a payouts, it would enforce those guys to vote reasonably , especially for their own post/comments .

just an idea.

Or we can automatically down a max upvote to closest 2nd one while payout or to an arithmetical average (even better for avoiding 2nd upvote made from an account with delegated SP)

What do you think?

Super easy to bypass. Just requires more than one account. You can't really force people to do much, that is why I recommend doing it via community. If you don't like something someone is doing then remove your support of them. If they are fine with that then they'll do their thing and you will do yours.

ok, I guess I have a better idea.

What if would start to think in categories clans or clusters.

definition: Clan or Cluster is a set of people connected to each other while delegating SP.
Examples:
1. until user doesn't have any delegated SP he established his own cluster
2. when user A delegated SP to user B then the new cluster is established
3. when the user A delegated SP to user C then he joins user C to cluster from step 2

How it might be applied:
Rule: user's votes inside his cluster would be downed proportionally his own or delegated SP. Say, proportionally his SP in thousands.

Examples:
Case 1. User D has 500SP with no additional delegated. He established his own cluster. When he votes for his posts or comments his vote is downed with coefficient 0.5

Case 2: User A delegated 50k SP to user B, 20k to user C and 100k to user E and after those delegation he has 200k own SP
When user B votes for A, C and E his votes automatically downed in 50 times for all votes inside his cluster. When user C votes for A, B and E then his upvote automatically downed in 20 times for votes inside his cluster and so on.

Case 3: also user B got 70k delegated SP for another cluster. that means user's B votes downed in 50 times inside his initial cluster, his votes for a new cluster is downed in 70 times, but his own votes for his own posts/comments are downed in 120 times (50k+70K=120k)

I know bad guys might down his SP, convert to Steems send then somebody and Power them UP... I know... but we this situation is the same as if somebody would by steems for bitcoins and then power UP. we would never close this hole.

How it might be applied:
Rule: user's votes inside his cluster would be downed proportionally his own or delegated SP. Say, proportionally his SP in thousands.

See my post. This leaves wide open for being trolled by someone who intentionally delegates small sums to many people. This would then drag all of those people into the cluster. As there is no way currently that I am aware of to refuse delegated power.

if it would be small delegated amount it would be downed votes inside a cluster on a small percentage. no one would even notice that.

Or you assume somebody would delegate to many people a chunks in 1000SP?

but it wouldn't help. If we would stop to vote their posts/comments how it would stop them from doing this?

and actually I don't know who does that How can I stop to support somebody if I don't know how those guys.

BTW, how this problem was solved before HF19? Maybe can reuse this now? at least partially.

but it wouldn't help. If we would stop to vote their posts/comments how it would stop them from doing this?

I didn't say it would. They could keep doing it. Yet they will only be working with themselves. The problem is that some of these people receive support from others.

We've had whales do things like this in the past, and people would still support them hoping they would get some high paying vote from the whale. Removing support also means we should stop prostituting ourselves to those we believe are not acting in the best interest of the steem blockchain.

ok, I heard you.

What if... after somebody put his own upvote, his post would be less visible... say self upvote would be also self flagging for the post or comment on amount of his vote

All these things will only punish the average person. These things are easy to circumvent simply by having more than one account and the people that tend to do the most shady stuff here do have multiple accounts.

BTW, how this problem was solved before HF19? Maybe can reuse this now?

It was not solved. Power was further consolidated in the top end due to the exponential curve. So there were people doing this but they were much smaller in number. HF19 made the curve linear and people who couldn't really do that much before suddenly could so we had more people doing it now.

and actually I don't know who does that How can I stop to support somebody if I don't know how those guys.

Decide what you think would harm the platform and just unfollow, stop voting for those that you see doing it. Decide what works for you and do that.

I don't know who does that.

You should publish a list... or create a shame wall

I intentionally try not to name names. Sometimes people change. Sometimes they know I am talking about them and they make a change and no one need know. I don't really care if people were doing something negative as long as they learn and stop doing it in the future.

people who do that could always pretend that they have never seen your post and continue...

Unfortunately... because nearest huge payout without any efforts are always better than to put a lot of efforts in a community for probably bigger payouts on a future.

heh.... looks like whale police with downvoting those posts would help

Sometimes it was a WHALE I was talking about. ;) That I think may have improved and I did change some whale minds in the past. It's not always easy, and I don't usually succeed... yet it is still worth trying as far as I'm concerned.

The great thing about code is that the system does exactly what it says.
The horrible thing about code is that the system does exactly what it says.

With hard forks, it's really hard to press the undo button.

small_bugs.jpg

Pretty funny... and that does indeed sometimes/often happen. :)

I work in software company (UI/UX designer), and this pic from a wall of our architect

I have to say, I am still in favor of changing the code in 2 ways:

  1. No more selfupvoting
  2. No more delegation

These are 2 separate points. And let me start of by saying why I want to change the code. I do not blame people who hide their taxes for our unfair world, I blame people who made income tax common practice.

Also I have no illusion that changing the code leads to people not being able to upvote themselves. If they really want to, they will find a way. But right now it is a basic functions so new users (and some older users) don't feel guilty for using it.

My main goal is to cancel out the argument "It is a function in the code, so it is OK to use it".

And let me ask you one thing: Isn't this similar to the mask ban for antifa? My train of thought is,"what does self-voting do as a positive?" You can't push your own comments and posts for further visibility
"What are the negatives?" People start using all their voting power for themselves.

To me the positive is almost none-existent and the negativ threatens to destroy Steem.

Why I do not want delegation (even tho I like what @neoxian and @twinner are doing with the system) is a whole topic on its own, but my thoughts are similar.

No more delegation

That didn't exist the first half of the time I was on steemit. I believe they added that a lot for being able to develop steem apps. So we would need to consider the ramifications of how it might impact that with such a decision, though I don't know how app makers are using it so I can't really say at the moment.

I heard delegation prevents payout periods of more than 7 days. I heavily dislike that everything I and others write becomes worthless (in a monetary way) after 7 days and even if I see the upsides of delegation, I think the downsides outweigh.

Delegation existed before the 7 day payout thing was implemented so I don't think it has anything to do with that. When we first started it was a 24 hour payout, then for quite a few months we had a 24 hour payout followed by a 30 day payout. Not much was happening with the 30 day payout. Then they moved to the 7 day payout based upon a rolling average of the value of steem.

So we did have a second 30 day payout and it wasn't doing much. If they spread it out over longer periods that would change the algorithm and where funds would go quite a bit. It actually could make your payout worse.

So I don't actually see delegation having anything to do with this since it existed before the 7 day payout change if I remember correctly.

The delegation was made primarily to make supporting of different apps possible if I remember. It was more about being able to program a lot more types of things that can interface with the blockchain.

@felixxx told me that if payout periods where to change, delegation would be a problem, because you could let multiple account vote with the same SP by delegating it after it payed out.

The downside of Steemit that old posts are not votable and further it makes little sense to sort old posts on your profile page (topic based homeage instead of boring timeline).

I would really like to change that, but if it would ruin the code, I guess I will postpone this topic ( until I understand those parts of the code :)

Perhaps there is a way to game delegation that is opened by extending beyond 7 days. I haven't looked into exploits of that type.

just to elaborate, because I did not get the exploit myself when @felixxx told me about it:

You vote for someone (potentially yourself on another acc). Then you delegate the power you voted with to another (one of yours) accounts. That takes 7 days to be effective. Now you can effectively vote twice on the same post with the same power.

I like delegation, but I would love to see posts getting valued even after the 7 day period. @steemads might be a solution, but for me it is not completely satisfying because I do not like adds :D

The voting after 7 days won't amount to much. Like I said we did have a second payout for 30 days and it was barely being taken advantage of. The main payout was in 24 hours then and virtually all voting was in that time frame and very little in the 30 day period. They went to 7 days to try to spread this out and give more opportunity than the 24 hours. So they did try longer periods and it didn't seem to do much.

Also yes thanks for the delegation response. That indeed would be a problem.

I don't think there are any perfect solutions on the blockchain for social website regulation, since it's not like a regular centralized DB and site functionality that can be customized, it has to apply everywhere. A change can prevent easier exploitation, but not be perfect to stop it completely ;)

heh...
WhaleMinnow.jpg

Coin Marketplace

STEEM 0.18
TRX 0.13
JST 0.029
BTC 58049.95
ETH 3128.51
USDT 1.00
SBD 2.21