-
Notifications
You must be signed in to change notification settings - Fork 160
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
Add draft governance ZIPs #989
base: main
Are you sure you want to change the base?
Conversation
d0a647d
to
3886615
Compare
3886615
to
29fe2db
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed draft-ecc-community-and-coinholder.md
* There is a well-defined, publically agreed, process for evaluation and community feedback on grant proposals. | ||
* Funds are held in a multisig resistant to compromise of some of the parties' keys, up to a given threshold. | ||
* No single party's non-cooperation or loss of keys is able to cause any Protocol-defined Ecosystem Funding to be locked up unrecoverably. | ||
* During the period of this proposal, the block rewards must be distributed as described in the [Abstract] above. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The word "distributed" in this sentence seems overloaded to me. Does this refer to the 8%/12% split, or the sentence that follows (which doesn't provide enough clarity to qualify as a requirement)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review complete. Addressing the question of how to handle competing proposals in particular is blocking.
* No single party's non-cooperation or loss of keys is able to cause any Protocol-defined Ecosystem Funding to be locked up unrecoverably. | ||
* 80% of the block rewards are given to miners, and 20% to a Zcash Community Fund seeded from the Deferred Dev Fund Lockbox. | ||
* The funds from the 20% funding stream will be usable immediately. | ||
* The funds in the Deferred Dev Fund Lockbox will be usable once a mechanism is available for disbursing them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the disbursement mechanism options be factored out into a separate ZIP that both the governance ZIPs refer to? In both proposals, the model is effectively "grant-based funding, where development funds are controlled by a multisig" with different options for how and when funds may be disbursed to grantees.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will someone take responsibility to draft this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nuttycom agreed to do this.
zips/draft-ecc-zbloc.md
Outdated
|
||
Any changes to the ZCG or its governance, such as its expansion to include more members, may be desired but are specifically outside this proposal’s scope. | ||
|
||
The full implementation of this proposal would require the design and implementation of a lockbox distribution mechanism, likely using multisig. This mechanism would be similar to that needed for an alternative proposal, the Community and Coin-holder Funding Model [^draft-ecc-community-and-coinholder]. However, this proposal does not require that a lockbox distribution mechanism be implemented at the same time as a change to the funding stream. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This gets to my comment above: any of the ecc-community-and-coinholder options would work for this proposal as well.
zips/draft-ecc-zbloc.md
Outdated
|
||
Each Constituency initially receives three Voting Units. This MAY be changed by a Governance Proposal. | ||
|
||
Constituencies other than the Coin-holder Constituency above are called Organizational Constituencies. The Organizational Constituencies will together elect a representative responsible for establishing a clear process and mechanism for gathering coin-holder sentiment, which will then be used as the decision-making process of the Coin-holder Constituency. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One possibility that this doesn't take into account is that an organic coin-holder constituency may choose to self-organize; the way that this is worded makes it sounds like the Organization Constituencies will choose the decision-making process instead of just the mechanism for determining coin-holder sentiment.
Constituencies other than the Coin-holder Constituency above are called Organizational Constituencies. The Organizational Constituencies will together elect a representative responsible for establishing a clear process and mechanism for gathering coin-holder sentiment, which will then be used as the decision-making process of the Coin-holder Constituency. | |
Constituencies other than the Coin-holder Constituency above are called Organizational Constituencies. The Organizational Constituencies will together elect a representative responsible for establishing a clear process and mechanism for gathering coin-holder sentiment, which will then be used to determine the will of the Coin-holder Constituency. |
|
||
### Approval Thresholds | ||
|
||
The Approval Threshold is the absolute majority, as a proportion of the total number of Eligible Voting Units, required for a Proposal to be Approved. As stated earlier, Eligible Voting Units do not include those of Constituencies that have a conflict of interest for this Proposal. However, they do include the Voting Units of Constituencies that have no conflict of interest but choose to abstain. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need something better than this: we need a system that makes it easy to choose between multiple possible alternatives. For example, consider the situation wherein ECC, ZF, Shielded Labs, and the Zingoistas all submit grant proposals for the same work; in this circumstance, is the grantee selected by determining which of the competing proposals has the highest number of approvals? What happens in the case of ties?
In addition, timing constraints based upon when a grant proposal is made can introduce problems - for example, if a vote is scheduled for a grant, and then a few days before the vote a competing proposal is introduced, what happens? If a competing, but better proposal is introduced after the grant has been approved, what happens?
This comment also applies to the coinholder-and-community ZIP.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that if additional proposals are made beyond these first two, we're already having to face this problem. It will be very common - it will probably arise for literally every proposal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be approved when the signing threshold is reached. At that point, it becomes a commitment that would only be overturned if a new threshold signals that it should be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jswihart the problem that I'm pointing out is that if there are multiple competing proposals, voting on each one individually doesn't work because you might end up in a situation where both grants are approved, but the community only wants to spend money on one of them and there's no way to signal a preference between them using the currently-described voting mechanism.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was originally thinking that negotiation about alternatives could be done off-chain, and then the on-chain vote would just be a ratification. If we want to put more of the sausage-making on-chain then we can, but I'm not sure that is a good idea, because choosing between multiple alternatives fundamentally requires a more complicated voting mechanism.
zips/draft-ecc-zbloc.md
Outdated
|
||
By default, a Governance Proposal requires a three-fifths Approval Threshold, and MUST have a Deadline at least two weeks from when the Proposal is published on-chain. | ||
|
||
All Consituencies MUST be consulted in order to determine whether they consider a draft Proposal to be "controversial", before it published on-chain. If *any* Constituency decides that a Proposal should be treated as controversial, it is then subject to a higher Approval Threshold of three quarters, and a Deadline at least four weeks from when the Proposal is published on-chain. (In the case of the Coin-holder constituency, a coin-holder vote is not necessarily required to establish this; it is likely sufficient to decide based on forum discussions for example.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This strikes me as a can of worms. This means that an initial coinholder vote must be held to determine whether a proposal is "controversial" for every proposal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see your point. The intent was that a coinholder vote would only need to be done to confirm that a proposal is "controversial" if there is substantial disagreement (among groups of people who plausibly claim to collectively have significant holdings) about whether it is. But also, I consider treating a proposal as controversial whenever there is a dispute as basically harmless. If there is a dispute over whether it's controversial, then it's controversial!
Think of it this way: we could just as well have set the thresholds so that every Governance Proposal is controversial, and that would be fine. Non-controversial proposals are just an optimization so that things that no-one actually disagrees about can be waved through more easily. For that to be the case, it has to be easy to cause any given proposal to be treated as controversial. (Yes that means people can be annoying by forcing proposals to take longer than they needed to have done, but so what? They effectively can do that anyway under any realistic governance process.)
In the case of Governance Proposals that affect consensus, final ratification occurs when node operators adopt the software implementing the changes. | ||
|
||
Note: Nothing forces developers of Zcash consensus node software to follow this specification. The aim of a process specification like this one is only to establish a social consensus. It fundamentally cannot affect the autonomy of developers of Zcash consensus node software to publish (or not) the software they want to publish, or the autonomy of node operators to run (or not) the software they want to run. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These facts are also true for the community-and-coinholder
proposal (or, indeed, any proposal.) They should be copied there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True, but community-and-coinholder is only attempting to handle funding proposals, and so it's obvious in that case that it's not making any demands of node developers (beyond the mechanism it requires for its own operation).
* Substantive changes to the ZIP Process defined in ZIP 0 [^zip-0000]. | ||
* Substantive changes to this ZIP defining the zBloc. | ||
* Changes to the set of zBloc Constituencies and/or the distribution of Voting Units among those Constituencies. | ||
* Changes to the policy a Constituency uses for its decision-making. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This last one should only apply to the coinholder constituency; it should not require a Governance Proposal for ECC to change its internal decision-making mechanism.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I misinterpreted Josh's intent here then (given his thumbs-up).
|
||
### Exceptional decisions to remediate security vulnerabilities | ||
|
||
The governance processes specified in this ZIP are not intended to prevent consensus node implementors from making consensus changes that they reasonably believe are critical to maintain the security of the Zcash Mainnet network and/or Zcash users. Such changes might need to be developed and released according to a controlled disclosure process that precludes public voting. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is also useful to copy to the community-and-coinholder proposal, or to factor out into a shared preamble.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, community-and-coinholder only handles grants, not any other aspect of governance.
zips/draft-ecc-zbloc.md
Outdated
A funding stream will be established for a Zcash Community Fund, consisting of 20% of the block subsidy paid to a 2-of-3 P2SH multisig with keys held by the Financial Privacy Foundation, the Zcash Foundation and the Electric Coin Company ("Key-holder Organisations"). | ||
|
||
This funding stream will start immediately on activation of this ZIP, which is assumed to be after the expiry of the existing ``FS_FPF_ZCG`` and ``FS_DEFERRED`` funding streams. It is proposed to be continued until modified by a future network upgrade. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Raising again that I don't like the funding mechanism to be coupled to the governance mechanism. Also, is the FPF intended to be included here?
What is the rationale behind the keyholders being different from the constituencies? I can see where the coinholder vote would need its disbursement power to be split among the other constituencies, but otherwise it's not obvious why we should have separate keyholders. Add a rationale if this is actually the chosen design.
Signed-off-by: Daira-Emma Hopwood <[email protected]>
@nuttycom and Josh. Signed-off-by: Daira-Emma Hopwood <[email protected]>
Signed-off-by: Daira-Emma Hopwood <[email protected]>
Co-authored-by: Josh Swihart <[email protected]> Co-authored-by: Kris Nuttycombe <[email protected]> Signed-off-by: Daira-Emma Hopwood <[email protected]>
0b9899c
to
b88a415
Compare
No description provided.