-
Notifications
You must be signed in to change notification settings - Fork 86
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: voting with non-core asset, and asset-specific committee #81
Comments
support. DAC need this. |
Support! Very useful and very powerful feature. |
Would that be feasible computationally? It needs to go through all the holders of different assets and accumulate the respective stake. |
Sure. There are fees related to balance the situation. |
Just think out loud: it's possible that the blockchain charge a maintenance fee from the asset's fee pool for every vote re-tallying, and the fee can be related to quantity of holders of the asset. If no enough BTS in the fee pool, deactivate voting feature for the asset, can even deduct some BTS from fee pool in this case for the efforts done. To be fair, the asset committee can decide when to re-tally votes, but not re-tally at every maintenance interval. |
maybe we need set a threshold for the DAC to open this function. |
Is the idea to permit bitCNY holders to be permitted to vote on what? The market fee for bitCNY? If they are permitted to vote on witnesses, workers, and committee, how should the their holdings be valued relative to BTS stake held by others? Does the idea permit holders of GATEWAY.BTC be permitted to vote on witnesses, workers, and committee? |
Witnesses, workers, and committee, global fee schedule and etc are CORE token's business, not others'. This proposal is about UIA business. For example, OBITS holders may like to vote for the percentage market fee rate on OPEN.X assets. |
I like the idea - could encourage UIA usage more 👍 |
This would come in handy with allowing users (for a hefty fee) to create accounts that have dynamic permissions like committee, but linked to an UIA. Thoughts? |
This is a good way to make businesses more autonomous/limit trust in single party. We should identify the resource costs and if a fee can offer value for both businesses and stakeholders. |
So holders of a UIA could vote on the UIAs fees? UIAs have fees set by the issuer for a reason, often to pay for underlying infrastructure and now the control of this will not be with the issuer anymore. Voters have an incentive to always vote to set fees to 0 and yet that may not be viable for an issuer to support anymore. Dont agree with that at all. |
Not necessarily. The UIA issuer and the account controlled by UIA holders need not be identical. |
So there is understandably some confusion about what specific authorities would be granted in a dynamic permission account. To me the value-add comes from allowing holders of a token to vote on transfers from a main account. E.g. holders of X token could elect to transfer BTS/gateway asset from X account to another. |
Is the resource demand significant here? It would be good to have many dynamic permission accounts operating at a given time. To minimize resource demand, how about limiting the potential account balances through white-listing? |
So holders of a token can vote to remove assets from the ownership of another account holder? This seems very dangerous and I dont see the practical use cases for such a setup. I havent seen any gateway actually demanding this and actually it would be to detriment to the gateway, they dont want users of their assets setting fees and such or theyd go out of business, the whole point of a gateway asset is that the solvency/security of the gateway is taken into consideration when pricing the asset. |
Two factors
On 1. Could be restricted in whatever way the initial asset owners decide (there likely must be a central ownership first, distribute initial amounts of tokens and then upgrade the asset to being self-governed, this way also existing UIA could be upgraded). So the discussion of what or what not should be possible is not necessary in here, as everything can be decided by whoever creates the asset (full flexibility). |
First draft below. @ryanRfox please assign a number.
AbstractFrom the beginning, the BitShares blockchain has offered the ability to vote with the core token, and to have elected accounts govern the blockchain. For specific use-cases it can be desirable to have a similar mechanism for voting and elections where the votes are counted in relation not to BTS but to some other asset. An example might be a community of people who are interested in a specific topic. This BSIP proposes changes that will enable elections based on dedicated assets. MotivationThe feature has been requested from independent businesses as well as from within the community. In addition, it paves the way for a to-be-proposed change to BitAsset governance, i. e. the decoupling of BitAsset management from blockchain governance. RationaleThere are fundamental differences between the mechanics proposed here and the mechanics already in place for BTS-based voting. BTS balances are affected by almost every operation, due to transaction fees. The voting tokens will only be affected when they are being used. BTS is used in a multitude of ways, e. g. as collateral, as the counterpart in most active markets, as payment for workers and witnesses, as cashback for fees and so on. Contrarily, it is assumed that the primary purpose of the voting tokens will be voting. They are unlikely to be used as collateral. These differences allow for various simplifications and optimizations. In particular, we propose to allow only liquid balances for voting. Because these presumably change rarely in comparison to the number of distinct balances, it is more efficient to recalculate votes on the fly instead of once per maintenance interval (see STEEM for comparison). Furthermore, we make no distinction between voting and elections. Voting (as in making a yes/no decision) can be emulated with an election where only the votes for two designated candidates are counted and compared to each other. Depending on voting rules (to be defined externally on a case-by-case basis), the one with more votes wins, or perhaps the one with an absolute majority of eligible votes. Specifications1. New asset flag "voting_allowed"A new asset flag/permission "voting_allowed" will be introduced. At the time of the hardfork, all existing UIAs will have the corresponding permission set. Future assets can have the permission set only if they are UIAs not MPAs nor PMs. As usual with flags, the flag can be changed only if the permission is set. The permission can be unset any time, but can be set only when supply is zero. The flag must not be used before the time of the hardfork. 2. New operation "create_elected_authority"Note 1: Since the overall computational overhead for this voting mechanism is significant, the height of the fee should reflect this. Note 2: The new asset flag Fields:
Validation: The operation must not be used before the time of the hardfork.
Evaluation: A new object type A new, empty authority is created. The desired number of members for the authority is set to Half of the operation fee is set aside and stored in the 3. New operation "delete_elected_authority"Fields:
Validation: The operation must not be used before the time of the hardfork.
Evaluation:
Note: Afterwards, accounts that have the 4. New operation "update_asset_vote"Fields:
Validation: The operation must not be used before the time of the hardfork.
Evaluation:
Note: the intent is to have vote tallying work in the same way it is currently performed when voting with BTS. The same goes for determining the number of accounts that make up the authority, unless it is fixed. 5.
|
This describe is not suitable to this BSIP. |
It is part of the motivation. I see no reason why this shouldn't be in there. |
This BSIP come from 26 May 2018, it is not part of the motiviton,this is for non-core asset and asset-specific committee.
This is another proposition which shouldn't be here, you can give other example simply. |
Here are my thoughts:
|
The issue is from 2018. The BSIP was written a couple of days ago, with this specific application in mind.
I don't get why you insist on removing it. Mentioning it here does not create a dependency nor does it endorse BSIP 83. |
Yes, that would also be possible.
No. Anyone can create an authority.
Yes, there is no limit.
Hm, do you have a use-case for this in mind? My original thought was that through this mechanism candidates could either be appointed by giving them a specific token, or exclude themselves by burning the token.
Weighted by voting stake, just as with the current voting mechanism.
Makes sense.
The idea is the the elected authority can be used in different ways, which IMO is more generic than making the elected authority an account in itself. Note that STEALTH is also just a normal account with a special "top holders" authority.
Nothing per se. The elected authority is just an object that can be used e. g. as the active authority (or owner authority) of an account. If that account owns the Another use-case is that the elected authority is not used as an authority, but that its member list can be assign other tasks, e. g. price feeding as proposed in BSIP-83.
Because users can borrow tokens of these types from the blockchain, and vote with the borrowed tokens. I don't see where that would make sense. |
This BSIP should follow the underlying objective of this issue, don't mix something in it. You can quote this BSIP in the BSIP 83, but the intention of BSIP 83 should not appear in this BSIP for some purpose. |
I think you mix personal understanding in this. |
As a use case, if the authority targets a governance token, you can implement something similar to a 5% hurdle in order to be eligible in participation.
Can we make this special authority available as well to be created?
If the creator of the authority is
The idea is that you can define such an authority directly as the price-feed authority? Can it also be a white and blacklist authority?
As an example, you could create a multi-sig account that owns a BitAsset, jointly governed by BitAsset holders and committee defined list of price feeders |
Nitpicker :P Of course I meant that. Let's assume account
Will this BSIP allow to create an |
This can be solved by a creating account b as the first step, then b creates ea and updates its active and owner authorities to ea. Finally, a hands over ownership of A to b.
No, I think this should be handled in a separate BSIP if desirable. (A top_holders authority can already specify the number of top holders to use in the authority, but this number is fixed instead of being voted on. Of course with this proposal people can put up a vote on the number to use, and then use a bot or a manual process for keeping the top_holders authority updated.) |
What is the reason that |
|
Hm. I think the document is quite clear that only liquid balance are used here. "vote tallying" refers to the process of calculating the sums and selecting the "winners". The specification is clear on which numbers are summed up. Do you have a suggestion how to clarify the note?
The processes for recalculating votes on the fly and recalculating them in intervals are completely different. Letting the creator choose would mean we have to implement two different mechanisms. IMO it makes more sense to go with one mechanism, and add the other one later if desired.
As the Rationale explains, BTS balances change with (almost) every operation, and often even more than once. Re-calculating BTS-based votes on the fly would mean a large computational overhead. This is typically not the case for other tokens. In order to avoid this overhead, BTS is excluded from this type of voting. |
Let's assume someone builds a business using an asset that is used for voting as well, and all the customers use it to pay the network fees. Does the intended solution scale? Also, why does the intended solution need instant tallying? BTS only has tallying during maintenance, and already this has been proven to be too frequent. |
The proposed solution adds some overhead to balance modifications. The overhead is a constant factor, so it scales in the same way that the chain does anyway.
It doesn't need instant tallying. Instant tallying is more "natural". Depending on the numbers and usage patterns, instant tallying can be more efficient than tallying during maintenance (see Rationale).
That's news to me. Why "too frequent"? |
Ok, makes sense.
Sorry, I was unclear. It is certainly a tradeoff: Instant vote tallying gives ultimate protection against bad actors, whereas tallying every x gives the voted entities somewhat planning safety and reduces blackmailing possibilities. I personally think that the current voting period for witness, committeee and workers is too short, this is just a sidecomment to this BSIP though. Do you see an easy to realize solution that would still do instant vote tallying, but the actual authority is only updated every x according to the pre-calculated voting tally? (x would be given by |
-> #251 |
Merged an ready to advance imo Who else can confirm? |
The Title of this BSIP says voting with non-core asset, and asset-specific committee
So why is that comment needed ? Why is the focus by some people realted to BSIP83 only and no other BSIP which is urgently needed for bitshares growth ? Are we going to keep wasting more resources which won't bring any growth ? Why don't i see any activity here where it's needed ? |
It has already been removed.
Because @abitmore has removed the core team's write access from this repo, which means at this time BSIP management is limited to very few people who receive no compensation for the job. |
And these few people keep focusing on this crap instead of real issues we have? |
No, it's not constant. There could be many |
The "constant factor" was in answer to the specific question about "someone builds a business using an asset that is used for voting as well, and all the customers use it to pay the network fees.". The overhead per fee payment is a constant factor because it doesn't change the voting slate. Okay, I see where that is misleading. The factor is of course not constant with regard to the number of votes and elected authorities. I agree that the overhead from a large number of elected authorities is significant, which is why the BSIP recommends setting a high fee for creating an Perhaps also add a committee-configurable limit on the number of votes per account and The high runtime impact of balance updates is IMO caused mostly by fee payments, which happens for every operation, but typically in BTS. BTS is explicitly excluded from voting and will therefore not carry voting overhead in balance updates. |
A committee-configurable limitation makes sense for concerns related to performance. However, even with the limitation, I don't think it would scale well, since it's only one factor. The complexity of the whole feature is number of authorities * number of candidates * number of voters * how frequently the balances change. The first factor is expected to be addressed by fees, the second factor is discussed above, but there is no hard limitation on the third and the fourth factors so far. I suggest that we design the fee structure and/or the functionality with all the factors in consideration, for example, have a number On the other hand, the creators of the elected authorities may want to specify how many candidates each account should vote E.G. a fixed number or a range. By the way, why there is no |
The computational complexity per balance change is O(number of votes of the balance owner), which would be capped at (number of authorities)*(limit of votes per account and authority). Balance changes are not free but always the result of an operation that carries a fee, so the frequency is already addressed. The (votes per account and authority) would be limited, and the (number of authorities) is addressed by the authority creation fee. The RAM cost would be O(total number of votes). I think this is acceptable in practice. (Note that we have other features with potentially unlimited RAM cost.)
That would open up a DOS attack against an authority.
Because it is usually not advisable nor desirable to change the terms of an ongoing election. It would be better to create a new authority in that case. (Should add this explanation to Rationale.) |
It's actually the intention. To avoid DoS attacks, the creator of an authority should consider carefully and have plan in advance. Anyway it's an advanced feature but not a toy. In the worst case, a DoS attack against an authority is still better than an attack against the whole chain. |
Usually the operation fees don't justify the additional complexity introduced by this feature, also not all operations carry the same additional resource consumption but only the assets with at least an elected authority installed. From this perspective, I'd rather degrade this feature than degrading other operations. |
Taking the idea further: As I understand, businesses using that feature should pay for keeping it active due to its complexity. We could make the creator of the authority pay for each time the actual accounts change for the authority. When the authorities change according to I am not familiar enough with the complexities of the backend, apologies if that idea is not helpful. |
@sschiessl-bcp thanks for the elaboration, that's exactly what I thought. |
Opening up a DOS attack would render the feature useless. The creator can't "plan in advance" because he doesn't have the means to avoid it.
The problem with this suggestion is that it doesn't work with the on-the-fly tallying. If you stop the tallying, you can't simple resume at a later point, because then you missed all the balance changes in between. A slightly different option would be to remove all votes if the fee pool runs out and forbid voting until it has been refilled. That would avoid the ongoing re-tallying cost, but would require voters to renew their votes if the authority owner is unreliable with maintaining its fee pool. It could also be seen as a countermeasure against voter apathy. :-) Yet another option would be to have a per-voter fee pool that is paid by the voter on each balance change. When the voter's fee pool runs out, his votes are removed. IMO that would be the most simple, most fair, and most effective approach. What do you think? |
That brings the same DoS problem targeting individual voters, which imo is even worse than a global fee pool. |
Good point. So, scrap the on-the-fly tallying? Instead count during maintenance (possibly only every n maintenance intervals), apply a tallying fee per in proportion to the number of holders (voters? votes?) paid by a per-authority fee pool? |
What is the performance comparison (estimated) of a) having on-the-fly tallying, with a fee for every b) doing maintenance interval retallying? Neither a) or b) would have DOS angels, will they? |
Sounds reasonable to me. |
The performance cost for on-the-fly tallying depends mostly on the number of balance changes, whereas the cost for maintenance-interval tallying depends on the number of balances. The important difference is that it is difficult to counter the number of balance changes with a fee, because every operation can induce a balance change. This leads to DoS problems. A fee per retally_interval does not solve this. |
Currently only CORE can vote for certain things E.G. witnesses, workers and the committee.
It's been demanded by the community for a long time that, holders of other assets can vote with their assets, for things related to those assets.
Another thing is asset-specific committee. Currently it's able to set committee of an asset to top-N holders. I think it would be useful if the committee can be decided by voting.
Update:
Example of asset-specific committee with top-N holders: https://cryptofresh.com/u/stealth-mgmt
The text was updated successfully, but these errors were encountered: