0xProject / ZEIPs

0x Improvement Proposals
Apache License 2.0
91 stars 24 forks source link

Proposal for a new ZEIP process standard #76

Closed mintcloud closed 2 years ago

mintcloud commented 4 years ago

Summary

In this ZEIP we propose a new way of managing the process of proposing, implementing and voting on ZeroEx Improvement Proposals.

Motivation

The current process has stayed the same for some time, and a few problems were observed over time: vague or unknown purpose of the process itself, lack of standard, unclear expectations on what course of action a ZEIP would take, including whether the request would be worked on or not.

Specification

This ZEIP has a somewhat different structure than usual, as it details the proposal for a new process. If implemented, can be used in the future as a reference for the renewed process.

What is a ZEIP?

ZEIP stands for ZeroExImprovementProposal. A ZEIP is a public proposal to change the behavior of 0x pipeline of smart contracts. That could affect whatever portion of the 0x Ethereum smart contracts, including their parameters. That could include also off-chain tooling proposals, if it concerns how the contracts are interacted with. Quoting and adapting EIP’s Guidelines, “a ZEIP is a design document providing information to the 0x community, or describing a new feature for 0x or its processes or environment.” A ZEIP is meant to be kick-off the implementation of a change that will eventually put up for vote by the community. The scope of a ZEIP isn't necessarily limited to smart contracts code, as it could be related to discussions over parameters, operational details and new patterns to interact with the 0x protocol contracts.

What makes a ZEIP great?

Adapting this proposal from EIP’s Guidelinesa ZEIP should provide a concise technical specification of the feature and a rationale for the feature. The ZEIP author is responsible for building consensus within the community and documenting dissenting opinions.

Describing a problem isn't sufficient for the ZEIP to proceed to the poll and/or implementation phase. Such ZEIPs will be considered incomplete and eventually abandoned if no additional implementation information are included. The identified problem has to be coupled with a suggestion or a proposal to be put up for vote or picked up by teams.

A high quality ZEIP:

ZEIP types

CORE

This proposal will change the core exchange smart contracts code. Roughly speaking, it concerns modifications to the following folders of the monorepo:

NON-CORE smart contracts and utils

This proposal expands the capabilities of users of 0x, while not making changes to the core protocol, not affecting how user funds are accessed. It includes all smart contracts excluding exchange.sol, staking.sol and asset proxies, for example those in the following folders:

This category can include off-chain tooling as well, as long as there is one interface point with smart contracts.

PARAMETERS

Parameters that are needed for the system to function, and can be set via SetParameters type of calls

OPERATIONS

This proposal affects operational protocol details such as release scheduling or proposals for ZEIP mergers.

For example, under this standard, ZEIP-72 would be considered a "Operations" ZEIP.

Process and tagging

  1. [no tag] proposer follows the template ZEIP to submit a proposal. Mandatory items include:
    1. description / meta (abstract, problem..)
    2. designated team
    3. (if necessary) sponsor
  2. [no tag] the community discusses
    1. search for designated team
    2. search for sponsor if type Core
    3. implementation strategy is defined
  3. [ACCEPTED]
    1. designated team accepted to work on it
    2. sponsor accepted to pay for audit
  4. [POLL]
    1. ZEIP is surfaced in ZRX Portal for poll
    2. minimum turnout required to move to the implementation phase
    3. gives green light on implementation and funds for audit
  5. [POLL PASSED]
    1. implementation by designated team.
    2. all PRs should be tagged to the corresponding ZEIP (issue)
  6. [AUDIT] (CORE type only)
    1. audit handled by sponsor
    2. updated contracts are deployed
  7. [EXECUTIVE VOTE]
    1. Executive Vote on audited deployed code implementation
    2. ZEIPs of types PARAMETERS or Operations can go directly to this step
  8. [IMPLEMENTED]
    1. ZEIP is closed

There are exceptional cases that can cause a ZEIP to be closed

ZEIP Template

Each ZEIP will have to follow this template

Who manages the ZEIP process?

It’s important to set the expectations that while it is the community’s ultimate goal to have a fully decentralized onchain binding system for the governance of the 0x protocol, these are the first steps that come with trade-offs. In this proposal, a selected committee will be in charge of moderating and maintaining the ZEIP queue. The goal of the committee is to maintain a high quality experience for the community, where anyone is encouraged to participate while making sure the proposals meet the minimum standard of clarity and pertinence. The current committee is composed of 0x Core team members, but we’re open to hearing from any candidates who would like to help.

The committee has the power to:

I have an idea/problem I would like to share but it's not at a stage where it doesn't constitute a ZEIP yet. What should I do?

We encourage to utilize the forum for discussing draft ideas or share problems you think should be solved. Once the idea starts being fleshed out with the first implementation/architectural details, it's a good time to create a ZEIP. There is no clear cut between the two phases, but you can refer to "What makes a ZEIP great" section above for general guidelines.

What if multiple ZEIPs end up being bundled?

ZEIPs could be bundled together at any time if the owners agree. One of the two ZEIPs will be closed and marked as superseded. If a poll was already taken on the superseded ZEIP, the committee will assess whether another poll will be required for the new ZEIP.

What’s the turnout required in a poll?

We propose a minimum of 0.5% ZRX (5M ZRX) voting power for a ZEIP to be considered for implementation. This is based on the current turnouts we have seen in the past. In the future, as we build a fully binding governance system, this parameter could be set up for a vote.

What’s the turnout required in an executive vote?

There is no minimum turnout required for executive votes.

Notes

The proposal takes inspiration from (and in certain instances directly quotes) Ethereum's EIP process.