New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
bangzi1001 opened this Issue May 25, 2018 · 20 comments

Comments

10 participants
@bangzi1001

bangzi1001 commented May 25, 2018

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:
bitshares/bitshares-core#968

@bangzi1001 bangzi1001 changed the title from New BSIP: Multi Level Proxy Followers Should Follow Main Proxy Vote and Change Vote to New BSIP: Multi Levels Proxy Followers Should Follow Main Proxy Vote and Change Vote May 25, 2018

@clockworkgr

This comment has been minimized.

Member

clockworkgr commented May 25, 2018

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 ?

@abitmore

This comment has been minimized.

Member

abitmore commented May 25, 2018

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.

@bangzi1001

This comment has been minimized.

bangzi1001 commented May 25, 2018

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.

@clockworkgr

This comment has been minimized.

Member

clockworkgr commented May 25, 2018

@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

@dnotestein

This comment has been minimized.

dnotestein commented Jul 12, 2018

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.
@froooze

This comment has been minimized.

froooze commented Jul 12, 2018

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

@wmbutler

This comment has been minimized.

Contributor

wmbutler commented Aug 1, 2018

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.

@abitmore

This comment has been minimized.

Member

abitmore commented Aug 2, 2018

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.

@dls-cipher

This comment has been minimized.

dls-cipher commented Sep 5, 2018

@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.

@ThomasFreedman

This comment has been minimized.

ThomasFreedman commented Sep 29, 2018

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.

@sschiessl-bcp

This comment has been minimized.

Contributor

sschiessl-bcp commented Oct 1, 2018

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
:)

@wmbutler

This comment has been minimized.

Contributor

wmbutler commented Oct 1, 2018

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.

@abitmore

This comment has been minimized.

Member

abitmore commented Oct 1, 2018

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.

@pmconrad

This comment has been minimized.

Contributor

pmconrad commented Oct 11, 2018

@ThomasFreedman

This comment has been minimized.

ThomasFreedman commented Oct 17, 2018

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.

@wmbutler

This comment has been minimized.

Contributor

wmbutler commented Oct 25, 2018

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.

@ThomasFreedman

This comment has been minimized.

ThomasFreedman commented Oct 25, 2018

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?

@wmbutler

This comment has been minimized.

Contributor

wmbutler commented Oct 25, 2018

@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.

@ThomasFreedman

This comment has been minimized.

ThomasFreedman commented Oct 26, 2018

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.

@wmbutler

This comment has been minimized.

Contributor

wmbutler commented Oct 26, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment