bsips icon indicating copy to clipboard operation
bsips copied to clipboard

New BSIP: Multi Levels Proxy Followers Should Follow Main Proxy Vote and Change Vote

Open bangzi1001 opened this issue 7 years ago • 23 comments

This is what happening now (Credit to Digital (Cipher) Lucifer ): Proxy works only one level.

Person A gives Person B Proxy. Person B gives Person C proxy.

Person A Voting Weight only affects Person B, not Person C. Person B RAW BTS amount/default weight is amount of proxy being given to Person C.

Why this matter because normal users does not know proxy only work for 1 level, even some top proxies:

  1. bitshareseurope (Followers has 54M Voting Weight, Set Bitcrab as Proxy, but when Bitcrab cast a vote, bitshareseurope only contribute 98K Voting Weight (his own account) and his followers 54M Voting Weight equal to Zero)

  2. blockchain-bv (Followers has 11M Voting Weight, Set Xeroc as Proxy)

  3. hellobts (Followers has 6M Voting Weight, Set Seer as Proxy)

Propose Solution: When main proxy such as Xeroc cast a vote or change vote, all his direct and indirect followers at different level should follow as well.

Related Discussion: https://github.com/bitshares/bitshares-core/issues/968

bangzi1001 avatar May 25 '18 12:05 bangzi1001

I think the current behaviour (one-level proxying) is the desired one. Multi-level is more prone to abuse and harder to follow.

Proxies are proxies for a reason. They should not be "passing the buck" so to speak.

As far as the specific accounts you mentioned are concerned (at least for xeroc operated accounts bitshareseurope + blockchain-bv) they are set like that on purpose. Xeroc's faucets originally auto-set the proxy for new accounts created through them accidentally. Their voting weight (since they have not consciously and explicitly picked a proxy) should NOT be used to vote. Isn't that right @xeroc ?

clockworkgr avatar May 25 '18 12:05 clockworkgr

As I mentioned in the "related discussion", I think we need to document the "one-level proxying" feature to reduce confusion. If we have the document already, link to this discussion.

abitmore avatar May 25 '18 13:05 abitmore

I agree we need to document this. I would like to suggest to add this to Bitshares UI where people set their proxy.

One of the scenario is those who have multiple accounts will set their main account as proxy and then the main account set Xeroc as proxy.

bangzi1001 avatar May 25 '18 13:05 bangzi1001

@bangzi1001 Admittedly, that is a valid use case. But I still think that overall it shouldn't be allowed. You either vote directly or choose one proxy to represent you. Same as most voting processes around the world.

Seeing as we have no real way of distinguishing the valid scenario you described, I don't see how we can allow JUST for that

clockworkgr avatar May 25 '18 13:05 clockworkgr

I was asked to comment on this issue, so just leaving my thoughts:

  1. I don't believe there's a serious abuse issue with multi-level proxying if it's done reasonably. Generally proxying implies trust in the person being proxied to, so if they want to redirect the actual voting to another account, I don't think that is inherently bad: to me it seems very practical and useful. There is one potential issue with it: someone could think that the slate voted for by the first-level proxy was the actual slate being voted for. But this could easily be resolved by any number of methods including showing the slate actually being voted for by the final "destination" proxy voter (along with a clear indication of that account's name).
  2. There would need to be some limit set on the "depth" of multi-level proxying to avoid computational abuse of the blockchain.
  3. While this sounds like a useful feature, I don't see it as critical, but at the very least current operation should be clarified as others have suggested.
  4. The current issue where non-incumbent vote counts aren't easily discoverable makes this problem much worse.

dnotestein avatar Jul 12 '18 17:07 dnotestein

Second level voting is a good/dangerous thing . To not abuse the system, third level voting should not be possible.

froooze avatar Jul 12 '18 21:07 froooze

It's an interesting argument. Wish @bytemaster could weigh in on this. He obviously didn't like the idea but why? Multi-level proxies are much like hierarchies that exist in the real world, but how well do those serve the people? If I can recruit groups rather than individuals, I can quickly wield more influence. On the other hand, if I do something unsavory, I can also lose influence more quickly.

I don't think complexity is the argument for doing this or not doing this. It should be decided based on what is best for the ecosystem.

wmbutler avatar Aug 01 '18 19:08 wmbutler

He obviously didn't like the idea but why?

Just FYI Steem supports multi-level proxy (maximum 4 levels). Disclaimer: I'm not saying that Steem's rule is better. My guess is BM didn't know the demand when designing rules for BitShares.

I don't think complexity is the argument for doing this or not doing this. It should be decided based on what is best for the ecosystem.

I'm neutral on this so far. Complexity usually impacts performance, however we still have some room.

abitmore avatar Aug 02 '18 20:08 abitmore

@bangzi1001 thanks for credits. For now, I don't support multi-level proxy on BitShares Blockchain. There are numerous reasons to it, but they all lead back to few critical points:

  • There are old accounts with BTS Stake that are not being active at all or anyone is accessing them.
  • There is no decay/decrease of proxy weight for a span of a life-time.
  • Think there should be cap/limit at 100M BTS per account/weight

Consider this 3 critical points, as if not changed. possible serious abuse of power by single investor is becoming super easy. One bad seed investing to BitShares can create chaos around eco-system, and it's just matter of time when it will happen.

Also consider downvote (as Steem has) as an option. Maybe it would be fair fight on the blockchain - (I heard from @sschiessl-bcp that it was worker for it in the past... What happened ?)

if some/any of these logics could be applied to core, multi-level proxy would be reasonable. Until then it can just become a day when someone with single click empty/incorporate BitShares.

Thanks for reading.

dls-cipher avatar Sep 05 '18 06:09 dls-cipher

I was surprised to see Dan Notestein support multi-level proxy concept. I respectfully disagree with both he and Bangzi and here's why.

Proxy voting was implemented without recognizing how much power would become centralized in only a few hands. It was designed for the sole purpose of resolving shareholder voter apathy. BitShares needed a solution, b/c the apathy was making it difficult to manage the ecosystem, as voting is required to elect witnesses, committee members and worker proposals. It was becoming difficult to get things done. Voting proxies did resolve that, but also introduced a highly centralizing effect on power distribution.

It meant BitShares added another change to the POS model (besides Delegation) where amount of stake = power, to a proxy using other's stake to amass power thru the power of persuasion and politics. It changes the essense of power from stake to stake + persuasion, with not much requirement for stake on the actual proxy.

I see multi-level proxies as making the problem of power centralization worse, allowing proxies to amass even more power than they already have under the present, single tier proxy scheme.

Although a decaying vote weight (bsip22) will not affect proxy power in a significant or immediate way, it does help by eliminating votes from dormant, dead, and accounts with lost keys. It also (over time) insures the voter remains attentive to their decay period in order for their designated proxy to utilize the users vote weight.

Decaying vote weight could target only shareholders who designate a proxy. That should reduce processing time greatly too, if only a small % of accounts designate a proxy. For those who vote directly they always use full vote weight.

This provides a direct incentive for voting responsibility by A) accounts must [ vote|touch|re-designate ] their weight to proxy or it will gradually decay to zero, or B) unused or otherwise dormant accounts would no longer affect proxy power (after the decay is complete).

We need direct incentives for voters to get and stay involved in helping to manage this ecosystem. Proxies don't do that. A proxy system only incentivizes people to defer their responsibility to others. I prefer systems that encourage critical thinking and personal responsibility.

ThomasFreedman avatar Sep 29 '18 18:09 ThomasFreedman

Two isses: Voter apathy, and permanent votes.

With decaying votes and some kind of voting campaign (prominent inclusion in UI would be a good start) I don't see a big problem with a multi-proxy setup. Setting a proxy means I trust this entity completely with my votes, doesn't matter it that entity passes it on, or votes directly. But decaying votes is a must before even considering it IMO.

Having said that, now give attention to https://github.com/bitshares/bsips/blob/742f1a617f22fda1aec11985628d2f8860be2a23/bsip-0022.md :)

sschiessl-bcp avatar Oct 01 '18 07:10 sschiessl-bcp

I've stated this before, but I think that a voter registration period is easier for users to understand and manage. All we would need is a flag to indicate that registration is true | false

Anytime an account issues a vote for anything it could set their registration period for 1 year. In this way, those active in the community would never need to purposefully register. It would require no change in behavior.

Accounts that are lost or not active in the community would find their votes insolvent until the actively voted on something. Once they vote on a single item, their vote would be good for a year.

wmbutler avatar Oct 01 '18 16:10 wmbutler

Actually we don't know whether a user is meant to refresh votes when changing keys specifically memo key, since votes and proxy IS in the same operation, although I guess most of time the answer is no.

abitmore avatar Oct 01 '18 20:10 abitmore

Related: https://github.com/steemit/steem/issues/953

pmconrad avatar Oct 11 '18 06:10 pmconrad

Another problem with multilevel proxies besides the fact it provides a way for proxies to gain more [centralizing] power and not less [decentralization] is it also erodes the direct accountability between users and the things a proxy chooses to vote for.

I vote for proxy A b/c I trust proxy A. If proxy A defers his decisions to proxy B and I don't know much about proxy B, I may now be misrepresented on some votes. It also puts an additional burden on users to follow all of the proxies in a multi-proxy to hold them accountable, which they probably won't do anyway, seeing as they use a proxy to avoid such issues.

ThomasFreedman avatar Oct 17 '18 17:10 ThomasFreedman

If proxy A defers his decisions to proxy B and I don't know much about proxy B, I may now be misrepresented on some votes.

Voter proxy hierarchies are easy to walk to the source. I don't think this is a concern that can't be overcome with a piece of information beside each item telling the user how the proxy of last resort voted. We can even display the chain of proxies that led to it.

wmbutler avatar Oct 25 '18 02:10 wmbutler

Perhaps, but I am opposed to this BSIP primarily on the basis that it gives even more power to proxies rather than less.

Can't anyone see how proxies have totally trashed the decentralization of this ecosystem?

ThomasFreedman avatar Oct 25 '18 03:10 ThomasFreedman

@ThomasFreedman We can agree to disagree here. We do partially agree in that the real problem is that proxies can hold onto power even when their followers no longer vote or even have possibly lost access to their keys. My relatively simple plan for invalidating votes after 1 year would only give power to proxies with active followers which is legitimate.

wmbutler avatar Oct 25 '18 21:10 wmbutler

Then we'll disagree. I believe I've made myself crystal clear above. Holding onto "defunct" voting power helps, but doesn't address the centralization of power the proxy system provides. In fact it could make it even worse.

The solution is to incentivize more individual voting, but I just don't see anyone very concerned about centralization of our governance here. So sad. The most important aspect of any crypto project is the decentralization of power, and to limit ability of any entity to control the direction of the platform. There are only a few key proxies that have enough vote power (due to proxy system) to steer this ecosystem. Some entity gets control over them and we might as well call ourselves the newest department of Blockstream.

ThomasFreedman avatar Oct 26 '18 03:10 ThomasFreedman

Individuals choose proxies because they likely don't have the time to analyze every policy that may be presented. As such, they proxy their votes to those who they believe represent their interests. They also have the ability to move that vote to another proxy if they feel they are disenfranchised by their proxy. If anything, the proxy system encourages participation from users who would otherwise not participate at all.

wmbutler avatar Oct 26 '18 04:10 wmbutler

In our current condition this would just worsen the existing problem of too much power in too few hands (in my view).

I think it would be fine but decaying votes are needed first, and in general are much more of a priority issue.

I quite like DLs suggestion of a proxy power limit too but there would need to be some mechanism of notifying people when they try to proxy to one already 'overpowered'.

matle85 avatar Dec 19 '18 15:12 matle85

Just a reflection of the issue with users that have followers starts to use a proxy.

  1. When a user sets a proxy, it can no longer be chosen as one as well.
  2. When a user that has followers, sets a proxy,
  • A. all followers will be dropped on change
  • B. it isn't allowed, and chain denies setting a proxy when having followers
  • C. it isn't allowed, and chain gives option to drop all followers

startailcoon avatar Dec 19 '18 17:12 startailcoon

I will official cast a vote as neutral on this issue, but would like to express some opinions into the discussion for what it is worth. On a personal level, I like the idea of multi level proxying better. As a market maker involved with the DEXBot and other liquidity programs it allows one to easily set up multiple accounts (A separate account is required for each market in DEXbot so strategies do not conflict.) and then have them proxy one account, and still delegate that to someone more involved in the political process. That said, I am ok with solutions either way. I do think we need to be clearer about how it works as I myself was misinformed. Since changing this is always more work that leaving it the way it is, I will understand if it is decided to not change anything. There is already a great informational page linked by the question mark about voting, with a paragraph about proxy. Maybe we could add a sentence that says. "Proxy votes can only be delegated one level." This would clarify it for everyone. I do think the voting and voter engagement is an important issues but suspect other strategies might be more effective. Our government system is very ad-hoc. Important issues are discussed in many places, Bitsharestalk, telegram, discord, and github. While projects give periodic reports, the reporting methods vary. I think a simplification, standardization, and centralization of reporting (recommended guidelines, such as monthly reports, with similar format published in an agreed upon location) or linked to from a central depository) (BitShares talks, BBF website) with regular high level summaries widely broadcast across all media channels might help keep voters informed and more willing to vote. BitShares State of the network was great for this. I also think voters feel as though there vote does not make a difference in the final outcome. Maybe additional ways of expressing and gathering feedback could be used. Thanks everyone for the great discussion.

CryptickCryptick1 avatar Dec 19 '18 18:12 CryptickCryptick1