Key points

We have published a draft for ZEIP-31, which proposes an upgrade to the 0x protocol to utilize new ZRX token economics.

Under the proposal, takers pay a small protocol fee on each 0x trade.

Market makers (MMs) receive a liquidity reward that is proportional to:

— the protocol fees generated from their orders.

— their stake of ZRX tokens.

— the protocol fees generated from their orders. — their stake of ZRX tokens. MMs who do not own sufficient ZRX to collect liquidity rewards will be able to form a ZRX staking pool for third-party delegators.

Next steps: Community discussion. Implementation details finalized. Gauge sentiment. Smart contracts developed/audited. Tokenholders approve/reject integration into live 0x pipeline via token vote.

Community discussion. Implementation details finalized. Gauge sentiment. Smart contracts developed/audited. Tokenholders approve/reject integration into live 0x pipeline via token vote. Timeline: We aim to include ZEIP-31 in 0x protocol v3.0 in Q3 2019.

Introduction

This is the fourth post in a series that highlights the 0x Core Team’s focus areas for 2019. Part 1 presents a few key upcoming 0x Improvement Proposals (ZEIPs), their timelines, and an early governance process for approving protocol upgrades. In part 2, Remco Bloemen explains the throughput limitations of Ethereum, different scalability solutions being developed by the community, and how the 0x roadmap intersects with our scalability R&D efforts. In part 3, Alex Browne introduces 0x Mesh, a global peer-to-peer communication network for propagating 0x orders and accessing networked liquidity. In part 4, we share a proposal for new 0x network economics. We believe that network economics can and should evolve in response to new information, optimizing for the long-term health of the ecosystem.



Despite the title of this post, the following is not a roadmap, but rather a request for comment. We are seeking feedback from the community. Designing new network economics is challenging; there are many complex tradeoffs. Since this a major change, it will require formal approval from ZRX tokenholders via a token vote to move forward.



We are hosting several venues for discussion of different aspects of the proposal before moving towards a formal spec. This post will summarize our design objectives, approach, and rationale for ZEIP-31. A detailed economic analysis of the proposed incentive mechanism may be found and discussed on our research forum here. The formal specification and smart contract implementation details should be discussed on GitHub. We will address FAQs in our Discord chat and during an AMA next Monday on our Subreddit. If the proposal resonates with the community (relayers, tokenholders, market makers, supporters), we hope to include ZEIP-31 in 0x v3.0, which is planned for Q3 2019.

This blog post and the whitepaper dig into the technical details of this proposal. For a higher-level overview, check out Peter Zeitz’s presentation on YouTube.

Background

“Decentralized governance is used to continuously and securely integrate updates into [0x] protocol without disrupting dApps or end users.” — 0x whitepaper abstract

The role of the ZRX token is to drive a binding on-chain governance system that allows ZRX token holders to execute upgrades to 0x protocol’s pipeline of Ethereum smart contracts. In designing the ZRX token, our initial hypothesis was (1) that we could make governance more effective if users of the 0x protocol held ZRX tokens and (2) that the need to pay trading fees with the token would induce users to hold ZRX. Despite the ZRX token being widely available and the 0x protocol being used to settle almost one million trades, Figure 1 shows that there is little overlap between Ethereum addresses that hold ZRX tokens and those that engage in trading activity. To put it simply, the vast majority of trading addresses don’t own any ZRX tokens. Conversely, most addresses that do hold ZRX have not been used to trade on the protocol.

Figure 1: a total of 79,582 Ethereum addresses hold a balance of ZRX tokens and 26,290 addresses have completed a trade via 0x protocol versions 1.0 and 2.0 (March, 2019).

Figure 2 provides a more granular view of ZRX ownership and trading activity; each data point represents a unique Ethereum address. The data shows that there is no meaningful correlation between the size of one’s ZRX balance and number of trades completed.

Figure 2: each data point in the above scatter plot represents a unique Ethereum address that has completed a trade via 0x protocol and/or holds a balance of ZRX tokens (March, 2019).

Encouraging user ownership among market makers

Achieving a high degree of overlap between usage of the 0x protocol and ownership of the ZRX token is critical to our long-term agenda for protocol governance. In our view, the primary purpose of protocol governance is to hold decision-makers accountable for prioritizing user benefit over other objectives. In order to establish this accountability, users must hold a sufficient quantity of ZRX tokens to influence voting outcomes. Unfortunately, the data shows that under the current fee token model, most voting power is held by passive holders who have probably never completed a 0x trade.



Our proposal for new network economics aims to address this issue by encouraging ZRX ownership among market makers specifically. The logic behind targeting this user group is two-fold. Firstly, we feel that the interests of MMs align closely with our goals of enhancing retail customers access to asset markets and reducing the trading fees associated with online exchange. Secondly, unlike retail customers, MMs are building businesses that rely on the protocol and thus have a stronger financial interest in the protocol’s future adoption. In theory, if MMs maintain a stake in ZRX and simultaneously provide liquidity on the 0x protocol, they will be able to internalize a greater proportion of the benefits they generate by contributing to the 0x liquidity pool.



In practice, it would be exceptionally risky for a single firm to purchase enough ZRX to make it individually worthwhile to bootstrap our liquidity pool. Thus, there is a need for incentive mechanisms that organize a cooperative bootstrapping effort among MM firms. Our new network economics proposal is a step forward in that it creates incentives for cooperative ownership of the protocol by MMing firms. The proposal allows each MM firm to obtain a monetary reward proportional to its individual liquidity contribution. Furthermore, the proposal offers a small additional reward for MM firms that maintain a ZRX stake and use this stake to support their own trading activity.

The 0x Core Team envisions a world in which all assets are tokenized and globally accessible on public blockchains. By giving all internet-connected humans the ability to establish and access global markets, we believe that 0x Protocol will bring us one step closer to eliminating the geographic lottery. We are still in the early years of a multi-decade technology cycle and, of the many ways that an open-source crypto project can die, the ultimate poison pill is to foster a community that is focused on value capture over value creation. ZEIP-31 proposes new network economics that should help us avoid this outcome by creating the incentives necessary for effective token-based governance, set up the community to sustainably fund ecosystem growth, and reward market makers for providing liquidity.

Objectives

Security through incentive alignment. Incentives should be structured such that the ZRX token distribution converges on and stabilizes around the class of users that supply liquidity to the network: market makers. It follows that market makers must have a financial incentive to stake ZRX tokens. The financial incentive should scale in proportion to the amount of liquidity they provide as well as the amount of ZRX tokens they stake relative to their peers. Sustainability. 0x protocol is intended to serve as public infrastructure that is community owned and operated. Most core development following the release of v1.0 has been funded with proceeds from the ZRX token sale (the genesis trade). Eventually, there will need to be a way for the community to sustain an equal or greater level of development activity. We propose that trading activity should produce a stream of ecosystem fees that are fed into a community treasury. This pool of communal resources should be fully controlled and allocated by ZRX token holders to fund protocol development, research, and other ecosystem initiatives via a decentralized organization (DAO). Fork defense. A well-funded community treasury creates an unforkable pool of communal resources that backs the protocol’s long-term development. This makes it more difficult for meme forks to gain traction. Forks can be healthy when a community is divided between two irreconcilable visions for a network, but forks can also destroy valuable network effects. Broad participation. While incentives should be structured to empower market makers, all stakeholders should be able to participate in governance decisions. Furthermore, all ZRX holders should be able to obtain a monetary benefit through delegation of their stake to market makers. Efficiency. The incentive mechanism’s implementation should be lightweight and gas efficient. The practical limitations of Ethereum smart contracts must be considered in the design. Accessibility. The incentive mechanism should be intuitive and predictable for end users, minimizing cognitive load.

Stake-based liquidity incentive

Market makers (MMs) that stake ZRX tokens — directly or by proxy — receive a liquidity reward that is funded through a protocol fee applied to every 0x trade. The fee is denominated in ETH and deposited into a staking contract. Fees are pooled within the staking contract over a fixed window of time, which we refer to as an epoch. At the end of each epoch, MMs that stake ZRX tokens collect a portion of the accumulated pool. The size of MM i’s liquidity reward rᵢ is determined by a liquidity reward function which takes the form

where zᵢ is the number of ZRX tokens staked by MM i, tᵢ is the reward pool contribution (in ETH) from orders originated by MM i, ẑ is the total number of staked ZRX, t̂ is total amount of ETH accumulated within the reward pool during the epoch, r̂ represents the effective reward pool value (can be less than or greater than t̂), and α is a weighting parameter set between zero and one.



Once MMs collect their liquidity rewards, the remaining ETH is passed into a community treasury that tokenholders control via a DAO. At Devcon 4, Peter presented a committee-based governance system for managing communal resources. While we would like to pursue the committee-based approach, a pragmatic short-term solution might be to use an existing DAO framework that gives tokenholders control over the community treasury from the start.



While the protocol fee could take on any arbitrary value, we propose that the fee is roughly equal to the cost to fill one 0x order and that a fee is incurred each time a 0x order is filled. Invoking the fillOrder function can consume anywhere from 90k to 160k units of gas depending upon the assets being exchanged and the presence of relayer fees, but it typically falls closer to 120k gas. Therefore, we propose that the protocol fee initially be set to a constant 120k units of gas multiplied by the gas price used to broadcast the transaction to the Ethereum network. Since the taker selects the gas price for their transaction, they have full control over the protocol fee they incur.



Figure 3 shows the protocol fee distribution that would have been generated by historical 0x trades. Fees are converted to USD using the ETH/USD exchange rate at the time of each trade. The data gives us a rough estimate for protocol fee values produced under the proposed model. While the protocol fee is less than $0.19 for 50% of trades, the sum total of all protocol fees equals $411,082. As more assets are tokenized on Ethereum and other public blockchains, we expect that trading activity could increase by many orders of magnitude.

Figure 3: distribution of protocol fees that would have been generated by historical 0x trades. The protocol fee is calculated by multiplying 120k gas by each trade’s respective gas price (ETH/gas) and ETH/USD exchange rate at the time of trade settlement.

Liquidity reward function