The purpose of this ZEIP (ZeroExImprovementProposal) is to propose a technical implementation for governance of the 0x Protocol and treasury that continues the journey of the decentralization roadmap — bringing the 0x Protocol upgrades to an on-chain binding vote. A successful transition to on-chain governance will put the future of 0x Protocol fully in the hands of the community, making it truly an unstoppable settlement layer for the global exchange of value.
Follow the open-source development of this system of smart contracts here.
The 0x Protocol ecosystem — the protocol, the community-owned treasury, the DAO — has followed a progressive decentralization roadmap that started with the 0x Labs team serving as the main steward and ends with collective ownership by ZRX holders coordinated via on-chain governance. The need for this decentralized governance is well articulated by Will Warren; “This pipeline of smart contracts [that make up the 0x Protocol] could end up facilitating many trillions of dollars in exchange so the upgrade process must be extremely secure and invulnerable to censorship or government intermediation. In other words, governance over upgrades must be decentralized.”
The 0x Protocol was developed to serve as the open standard and common building block for exchange functionality amongst dApps. There are two main mechanisms to achieve this: (1) protocol updates that make changes to the set of smart contracts to ensure appropriate technical capabilities and (2) disbursement of funds from the protocol treasury to encourage the growth of the 0x Protocol ecosystem.
At the time of writing this post, a community-owned treasury has been deployed and governed by community members via an on-chain process. The next step in the decentralization roadmap is to migrate the upgradeable process of the protocol to an on-chain process as well.
Before exploring what’s next, here are brief descriptions of the current state of governance of the community-owned treasury and the protocol.
The community-owned treasury exists to fund technical and non-technical initiatives that broadly grow the 0x ecosystem and its community. Community proposals should aim to disburse those funds in ways that promote the protocol’s long-term sustainability and achieve its mission.
Governance of the treasury is currently executed via on-chain token-weighted voting. There is a three-step process that manages treasury proposals that ultimately results in an on-chain vote enabled using the legacy staking implementation of ZRX tokens. Approved proposals are executed by the Treasury contract.
The purpose of the protocol is to serve as a credibly neutral set of open source contracts that settle the exchange of value in a non-custodial way. Protocol update proposals should aim to ensure that the protocol can continue to serve in this capacity within the continually evolving context of the blockchain space.
Governance of the protocol is currently executed via off-chain token weighted voting. There is a ZEIP process that manages protocol update proposals that ultimately results in an off chain vote. Approved proposals are executed by the Governor contract,
ZeroExGovernor. Currently, a time-locked multi-sig wallet operated by 0x Labs is the only contract allowed to perform administrative updates to the
The rest of this forum post proposes a technical implementation that would enable on-chain binding governance system.
A successful transition to a fully on-chain governance process for 0x will be a tremendous milestone, reducing the barrier for any developer within the broader blockchain ecosystem to contribute directly to the protocol and extend its functionality, enabling a Cambrian explosion of innovation on a smart contract level!
The proposed implementation defines a new smart contract governance system for the Protocol and Treasury that is based largely on the Compound governance model. The resulting smart contracts will replace the existing
zeroExGovernor contract to trigger on-chain actions via an on-chain binding vote.
Note: These technical changes will not change the temperature check processes as outlined previously.
We’re aiming to reuse as much of the existing audited and in-production implementations of governance as possible, building off of OpenZepplin’s battle tested contracts. The proposed governance system will have snapshotting, delegation, and upgradeable vote tallying capacity. Timelock logic will apply for any approved proposal before execution to provide a time buffer for security measures. All meta governance variables such as Voting Delay, Voting Period, Quorum, Timelock, etc. can be subject to change via governance.
This post proposes slightly different governance mechanisms between that of the treasury versus the protocol. Critically, what is similar between both systems is that they are both fully on-chain binding. Below are brief descriptions and justifications for the proposed governance mechanisms.
The nature of the community-owned treasury is to encourage experimentation and growth of the ecosystem. In line with that spirit, this post suggests that we experiment with some governance mechanisms for the treasury.
The two main experiments proposed with treasury governance is (1) the use of quadratic voting and (2) calculating quorum as a percentage of the total active quadratic voting power.
- We propose quadratic voting as it is an approach that redistributes voting power from whales to smaller token holders. We believe that this property is favorable for treasury proposals similar to why Gitcoin employs quadratic funding — the voices of the many should be weighed proportionally mored to the voice of the few.
- We propose calculating quorum as a percentage of total active quadratic voting power vs. total supply as it will require more voting power to participate in a vote as more voting power is activated. We view this as an incentive to higher voter participation — more voting power participation = more robust governance!
We feel that this risks associated with this level of experimentation in treasury governance is offset by the total risk presented to the 0x Protocol ecosystem by the current treasury. We believe that there is ample time to ensure that this more experimental governance mechanism is secure before the future state when the entirety of the Ecosystem Development Fund is transferred to the treasury.
The nature of 0x Protocol is to serve as a secure and reliable foundational building block for other dApps and projects. As such, this post suggests that we stick more closely to what continues to serve as the industry standard for governance mechanism. In the meantime, we should continue to monitor and consider adopting the research, development, and live testing done with other forms of governance.
The proposed mechanism for protocol governance as compared to the experiments described above for treasury governance is (1) 1 token 1 vote and (2) quorum is based on a set quantity of voting power.
A table is provided below that summarizes the meta governance variables and the proposed initial values.
|Variable||Description||Proposed Initial Value|
|Voting power||How voting power for a given account is determined||treasury = quadratic protocol = 1:1|
|Voting delay||Delay from proposal creation until voting starts. Voting power for a given account is calculated after this voting delay.||treasury = 2 day protocol = 2 day|
|Voting period||Duration of the vote.||treasury = 7 days protocol = 7 days|
|Proposal threshold||Minimum amount of voting power needed to create a proposal.||treasury = sqrt(250k) protocol = 1M|
|Quorum||Minimum amount of voting power participating in a proposal to make it valid.||treasury = 10% protocol = 10M|
|timelock||Time delay between proposal passes to when it is executed.||treasury = 2 days protocol = 3 days|
Decommissioning previous 0x Protocol Governance Mechanism
This upgrade will also decommission the 0x V3 staking pool contract that is currently used for Treasury governance. A migration path will be provided for ZRX holders who are users of 0x V3 staking to transition to the new proposed governance system.
An audit for the proposed set of smart contracts has been scheduled.
This technical solution is developed publicly and will be open-sourced on Github here.
We propose a three step migration plan from the current governance system to the proposed fully on-chain system:
Deployment of the new governance smart contracts
A temperature check will be taken for the community to signal whether or not there is support for the development and deployment of on-chain governance as proposed.
A buffer period will be used to provide time for the community to transition from the current governance system to the newly deployed set of smart contracts. User interfaces to make this migration as simple as possible will be provided.
Vote to switch of governance system
A vote will be taken for the community to decide whether or not to change the owner, and thus upgradability power, of the
exchangeProxycontract from the current governance system to the new governance system.
The blockchain space is an extremely adversarial environment and as such, a fully on-chain governance mechanism must be accompanied with robust security practices to ensure that 0x Protocol will continue to function properly.
Below are two top security measures that we believe are critical to have in place for 0x Protocol to transition to on-chain governance according to the technical implementation described above.
0x Protocol Security Council
In short, the 0x Protocol Security Council is a group that has very limited but impactful power over 0x Protocol to enable it to address any vulnerabilities that are found. Their sole objective would be to serve as a security failsafe that can act faster than a full governance process in the case of existential crisis such as a mission-critical security risk.
There will be a subsequent post that fully describes the concept of a 0x Protocol Security Council. We believe that establishing this group reflects a crucial parallel evolution in the 0x community to support the technical milestone of on-chain governance.
The current bug bounty program for 0x Protocol is hosted by 0x Labs [1, 2] which features rewards up to $1,000,000 for critical exploits in 0x Protocol V4 and we believe that the continuation of this bug bounty program is absolutely necessary.
This program can be funded via a treasury grant allocation with co-sponsorship by stakeholders like 0x Labs that have a vested interest in securing 0x Protocol. Additionally, the responsibility of running this program can transition to the 0x Protocol Security Council.
In order for 0x Protocol to serve as the credibly neutral and uncensorable open standard for the global exchange of value, its governance needs to be decentralized. This post proposes both a technical implementation that will enable governance to occur fully on-chain and security measures that must be in place to ensure that the protocol is properly protected. A successful transition here will mark a pivotal moment in the decentralization roadmap of 0x — a point where the future of 0x Protocol is fully in the hands of the community and where 0x Protocol becomes unstoppable.