bitshares / baips

BitAssets Improvement Proposals
6 stars 8 forks source link

How to determine the threshold for BAIPs #5

Open BhuzOr opened 4 years ago

BhuzOr commented 4 years ago

According to BAIP-0001: BAIP Purpose and Guidelines:

If the proposal requires BTS holders' approval, the proposal is considered implemented only if BTS holders have approved a corresponding worker proposal. Two poll worker proposals will be created standing FOR and AGAINST. The proposal is considered approved by BTS holders when met these three criterias:

  1. FOR worker get more voting power than AGAINST worker.
  2. FOR worker get more voting power than BAIP-Threshold Worker.
  3. Both No.1 & 2 above last for three consecutive days.

This implies the creation of a worker to determine, by stakeholders vote, what the threshold level for a BAIP to be considered community-approved should be.

I argue that this mechanism is easily subject to "manipulation", especially in those cases where participation in voting is reduced due to abstaining of large proxies.

We partially saw this with BSIP-76: BEOS proxy (and his ~300M BTS voting power) did not participate in BSIP76 voting, neither FOR, AGAINST, or in determining the threshold for proposal approving. This could easily lead to the remaining proxies (or even a single proxy) to have full decision-making power about a BAIP/BSIP implementation by voting the FOR worker and unvoting the threshold to lower the required-approving-limit at the same time. This is, imho, something we should avoid.

Therefore, I would like to open a discussion about other ways we could determine the threshold for BAIPs.

The one that came to my mind is pretty simple: The threshold is X% of the whole voting stake that is currently voting for any worker proposal in the BitShares platform.

The specific percentage can be determined through worker-proposal voting: eg, setting up worker-proposals for 50%, 60%, 70%, 80% etc, the one with more votes is chosen. We may require a quorum.

bangzi1001 commented 4 years ago

The threshold is X% of the whole voting stake that is currently voting for any worker proposal in the BitShares platform.

I have thought about this but where can we check the whole voting stake now and always up to date?

Someone suggested take the highest vote on committee, witnesses and worker proposals. This can gamed easily as well and create unnecessary drama outside of BitAssets.

The main purpose of creating BAIP-Threshold Worker is make governance of BitAssets independent from witnesses and workers. There is no point endanger the stability of mainnet just because of BitAssets.

BEOS proxy (and his ~300M BTS voting power) did not participate in BSIP76 voting, neither FOR, AGAINST, or in determining the threshold for proposal approving.

Even if BEOS proxy vote against , BSIP-76 will get voted in. BSIP76 supported by cn-vote, alt and b-dex. Just a simple math.

bangzi1001 commented 4 years ago

The specific percentage can be determined through worker-proposal voting: eg, setting up worker-proposals for 50%, 60%, 70%, 80% etc, the one with more votes is chosen.

Threshold = Minimum Vote Required, 40% will make more sense since there is another criteria 1. FOR worker get more voting power than AGAINST worker.

BhuzOr commented 4 years ago

Threshold = Minimum Vote Required, 40% will make more sense since there is another criteria 1. FOR worker get more voting power than AGAINST worker.

Requiring the worker-proposals to have > 50% of the whole voting stake makes that criteria useless.

Imho my proposed solution is better. In fact, in the case where there is low participation and some proxies do not vote, their vote will basically be counted as if they are voting for the AGAINST worker. This will make it harder for a single/very few proxies to be able to push a baip that evidently fails to attract the attention of stakeholders/proxies.

bangzi1001 commented 4 years ago

Requiring the worker-proposals to have > 50% of the whole voting stake makes that criteria useless.

True. But the reason to have FOR and AGAINST is we want to hear the voice from both side. It does not matter if they have 100 Million BTS or 1 BTS.

In fact, in the case where there is low participation and some proxies do not vote, their vote will basically be counted as if they are voting for the AGAINST worker.

Bitshares is decentralized blockchain. We can't force every BTS Holders to cast their vote for any worker proposals. They are free to Agree, Disagree, Neutral, No Opinion or just Not Interested for a worker proposal. We can't do mind reading for them but they can exercise their right as BTS holders. They can vote FOR if they Agree, vote AGAINST if they Disagree, vote both FOR and AGAINST if they are neutral, not voting if they have no opinion or just not interested.

This will make it harder for a single/very few proxies to be able to push a baip that evidently fails to attract the attention of stakeholders/proxies.

IMHO 40% of whole voting stake as threshold is a very high threshold requirement. Voters turnout rate for US election only have approximate 60%. Even BSIPS proposed to community recently only have 61Million vote VS Refund400K 621Million Vote. Those BSIPS vote even lower than threshold-bsip 152Million vote.

2019-10-28_08h44_42

BhuzOr commented 4 years ago

True. But the reason to have FOR and AGAINST is we want to hear the voice from both side. It does not matter if they have 100 Million BTS or 1 BTS.

From a purely decisional standpoint, once the FOR side reaches the threshold, it doesn't matter how small or big the AGAINST side is, the proposal got enough to be activated/implemented (considering FOR > AGAINST ofc). That being said, I agree that we should still know how much people/stake do not agree with the proposal. We can still have both FOR and AGAINST, use the FOR+Threshold as a decision mechanism, and AGAINST for informational purposes.

Bitshares is decentralized blockchain. We can't force every BTS Holders to cast their vote for any worker proposals. They are free to Agree, Disagree, Neutral, No Opinion or just Not Interested for a worker proposal. We can't do mind reading for them but they can exercise their right as BTS holders. They can vote FOR if they Agree, vote AGAINST if they Disagree, vote both FOR and AGAINST if they are neutral, not voting if they have no opinion or just not interested.

You are perfectly right, we can't force them to vote, but we can still decide how much stake is required to consider the vote valid; a quorum. Obviously it doesn't make sense to impose a quorum that we know it will never be reached... I think it's a matter of finding the right balance: it should be possible to reach the quorum but at the same time it shouldn't be reached if, for example, only 2 big proxies participate in the vote.

Voters turnout rate for US election only have approximate 60%.

That's, I guess, 60% of the entire American population with voting rights. I was more on the line with considering only the "active" voters and not the whole BTS stake. We could even consider the "active voting stake in the last x months", and have the threshold being a percentage of that.

Anyway, these are just my opinion, I could be wrong and I am open to other solutions as well as keeping the current mechanism if the consensus stays with that.

I think it would be very helpful to have some actual numbers. What's the current total stake that has ever voted for a worker, or a witness, or a committee member? What's the current total stake that has ever voted for at least a worker proposal? What's the current stake as the two above but considering only the last 3-6 months?

Inmortak commented 4 years ago

If BitUSD is going to have a threshold for pricefeed modification, then it should not be called BitUSD on the first place, nor be marketed as stable. Also, if that happens to be the case, then it should not be emmited by the committee at all. For, why would the committee assume responsibility for the decisions of the holders?

By extension, if SmartAssets price is to be faked by their debtors whenever those smart assets are most needed, then they should not be called SmartAsset at all, but DebtorAssets, prone-to-be-fakedAssets, or whatever adjust best to reality.

bangzi1001 commented 4 years ago

If BitUSD is going to have a threshold for pricefeed modification, then it should not be called BitUSD on the first place, nor be marketed as stable. Also, if that happens to be the case, then it should not be emmited by the committee at all. For, why would the committee assume responsibility for the decisions of the holders?

By extension, if SmartAssets price is to be faked by their debtors whenever those smart assets are most needed, then they should not be called SmartAsset at all, but DebtorAssets, prone-to-be-fakedAssets, or whatever adjust best to reality.

BAIP stands for BitAssets Improvement Proposal but can also seen as an improvement consensus. BitAssets are smartcoins technically owned by the "committee-account" on the BitShares blockchain.

BAIP does not apply to all smartcoins. There are private smartcoins such as HERTZ and HERO. Recently HERTZ changes its price feed source to obtain more accurate price. You may reach him in Telegram if you wish.

bangzi1001 commented 4 years ago

We could even consider the "active voting stake in the last x months", and have the threshold being a percentage of that.

Anyway, these are just my opinion, I could be wrong and I am open to other solutions as well as keeping the current mechanism if the consensus stays with that.

I think it would be very helpful to have some actual numbers. What's the current total stake that has ever voted for a worker, or a witness, or a committee member? What's the current total stake that has ever voted for at least a worker proposal? What's the current stake as the two above but considering only the last 3-6 months?

Cryptofresh: Active voting stake: 46.0% https://cryptofresh.com/ballots

BitshareScan: Total active voting stake: 27.2% https://bitsharescan.com/voting

The highest vote is gdex-witness who have 1.1Billion votes at this moment and circulation supply of BTS is 2.747Billion. This indicate Active voting stake should be at least 40%(1.1Billion/2.747Billion). It show that Cryptofresh have more accurate number of active voting stake.

bangzi1001 commented 4 years ago

If no further comment, I will submit a PR to change 2nd criteria from:

  1. FOR worker get more voting power than BAIP-Threshold Worker.

Change to:

  1. FOR worker get more voting power than a Threshold (Total Active Voting Stake * 40%)
ning-xiao commented 4 years ago

如果没有其他意见,我将提交PR来将第二个标准从: 2.使工人获得比BAIP阈值工人更大的投票权。

更改为:

  1. FOR工人获得比阈值更多的投票权(总活跃投票权益* 40%)

Agree

BhuzOr commented 4 years ago

Total active voting stake * 40%, considering the data provided by cryptofresh, would mean ~18% of the total stake. According to the same data, BEOS total proxy + cn-vote proxy, reach ~19%. For this reason, I think the initial 40% is too low.

Anyway, I really think we need more people to speak their minds. I urge committee members, core team members, proxies and other stakeholders to participate in this discussion.

abitmore commented 4 years ago

At a glance, 40% of active voting stake seems too low. I think 50% would be better?

bangzi1001 commented 4 years ago

As I mention above, Total active voting stake * 40% is very high threshold requirement. Recently MKR have a Poll for Stability Fee Adjustment and they only have 0.36% participation rate. 2019-10-30_20h07_54

BhuzOr commented 4 years ago

We are not MKR... Seems like MKR doesn't have proxies?

  1. Do we want baip to be pushed by a single proxy? If no, then required stake must be > ~300M
  2. Do we want baip to be pushed by the two biggest proxies? If no, then required stake must be > ~600M
  3. Do we want baip to be pushed by the three biggest proxies? If no, then required stake must be > ~900M

Above is considering the current situation where the three biggest proxies have ~300M voting stake each. (beos, cn-vote, ~aggregated baozi)

Active voting stake * 40% doesn't even prevent 2.

bangzi1001 commented 4 years ago

The committee approved the creation of Worker: 1.14.236 BAIP-Threshold.

Any BTS holders/Proxy can vote BAIP-Threshold to increase the number of votes required, one of the criteria to pass a BAIP(BitAssets Improvement Proposal).

shulthz commented 4 years ago

We are not MKR... Seems like MKR doesn't have proxies?

1. Do we want baip to be pushed by a single proxy? If no, then required stake must be > ~300M

2. Do we want baip to be pushed by the two biggest proxies? If no, then required stake must be > ~600M

3. Do we want baip to be pushed by the three biggest proxies? If no, then required stake must be > ~900M

Above is considering the current situation where the three biggest proxies have ~300M voting stake each. (beos, cn-vote, ~aggregated baozi)

Active voting stake * 40% doesn't even prevent 2.

I don't think the description is right. Big proxies is which the stakeholder they want to trust, if a single proxy have ~1500M voting stake, no Threshold can stop this proxy.

We can check the votes of witness and the current supply from the blockchain. We can get the median of witness votes is 839,532,715 BTS, current supply is 2,747,481,263 BTS, median of witness votes/current supply=30.6%.

# NAME VOTES STATUS
1 gdex-witness 1,087,719,728 Active
2 magicwallet.witness 1,080,949,381 Active
3 zapata42-witness 992,947,052 Active
4 btspp-witness 973,851,543 Active
5 in.abit 972,319,405 Active
6 bhuz 971,560,055 Active
7 witness.hiblockchain 946,786,759 Active
8 abc123 911,343,777 Active
9 bangzi 909,651,570 Active
10 roelandp 860,495,910 Active
11 witness.yao 818,569,520 Active
12 delegate-zhaomu 815,406,894 Active
13 xn-delegate 782,826,810 Active
14 delegate.freedom 777,477,011 Active
15 ioex 756,920,007 Active
16 liondani 728,139,010 Active
17 clockwork 719,217,011 Active
18 openledger-dc 689,636,220 Active
19 terradacs-bp 684,695,302 Active
20 xeldal 490,508,569 Active
bangzi1001 commented 4 years ago

Big proxies is which the stakeholder they want to trust, if a single proxy have ~1500M voting stake, no Threshold can stop this proxy.

True

We can check the votes of witness and the current supply from the blockchain. We can get the median of witness votes is 839,532,715 BTS, current supply is 2,747,481,263 BTS, median of witness votes/current supply=30.6%.

Big whale/proxy can unvote witnesses to lower the threshold. The purpose of BAIP-Threshold Worker is avoid this kind of drama. We want to make sure BAIP voting independent from witnesses voting and worker proposals voting.

Anyway, the committee approved the creation of Worker: 1.14.236 BAIP-Threshold. Any BTS holders/Proxy can vote BAIP-Threshold to increase the number of votes required, one of the criteria to pass a BAIP(BitAssets Improvement Proposal).

clockworkgr commented 4 years ago

Big proxies is which the stakeholder they want to trust, if a single proxy have ~1500M voting stake, no Threshold can stop this proxy.

True

We can check the votes of witness and the current supply from the blockchain. We can get the median of witness votes is 839,532,715 BTS, current supply is 2,747,481,263 BTS, median of witness votes/current supply=30.6%.

Big whale/proxy can unvote witnesses to lower the threshold. The purpose of BAIP-Threshold Worker is avoid this kind of drama. We want to make sure BAIP voting independent from witnesses voting and worker proposals voting.

Anyway, the committee approved the creation of Worker: 1.14.236 BAIP-Threshold. Any BTS holders/Proxy can vote BAIP-Threshold to increase the number of votes required, one of the criteria to pass a BAIP(BitAssets Improvement Proposal).

Total voting stake should include ALL voteable objects. Including BAIP polls and threshold worker. I.e. you can't lower threshold unless you don't vote for ANYTHING.

That adds a large anti-incentive.

abitmore commented 4 years ago

Think about voter apathy. BTS holders who are voting for witnesses, committee or worker proposals may have no interest to vote on BAIPs. Requiring a high threshold may negatively impact the efficiency of BitAsset management.