Meanwhile at Cryptium Labs #1 Part II

If you haven’t read it yet, here’s the link to Part I.

In Part II, we describe one of the features we are working on: quorum caps. This article starts with a recap of the term quorum and its adjustment mechanism, which are important components of Tezos governance. It is followed by some limitations that the latter presents, illustrated with practical examples and diagrams. Finally, we introduce the concept of quorum caps, as a mitigation to the limitations that the quorum adjustment mechanism presents.

Meanwhile at Cryptium Labs #1 Part II: Quorum, its adjustment mechanism, and quorum caps

The Quorum

Quorum is the minimum participation required in a voting period. Should the quorum not be reached in a given voting period, the governance process will be discontinued and restarted (to a new Proposal phase). Typically, quorum is described in % of the global staked tokens. For illustration, given the following parameters:

Total XTZ in Circulation = 792,719,460 XTZ
Total XTZ Staked = 81% * 792,719,460 XTZ ≃ 642,102,767 XTZ
If Quorum = 80% (genesis)
then
Quorum = 80% * 642,102,767 XTZ ≃ 513,682,210 XTZ (need to vote)

At the time of writing, quorum is only applicable to phases II (Exploration) and IV (Promotion) in every Tezos governance iteration.

The Quorum Adjustment Mechanism

The quorum adjustment mechanism is a component of Tezos governance. Simply put, this feature adjusts the quorum requirements automatically for the subsequent Phase II (Exploration) or IV (Promotion), by considering the following:

  • The current voting period or phase (𝑡)
  • The following voting period or phase (𝑡+1)
  • Initial quorum in the voting period and phase (𝑸)
  • Actual participation (𝒒)
  • The formula:
Quorum Adjustment Formula

Practical Example: let’s say Athens Phase II (𝑡) ended with the values:

  • 𝑸t = 80% (genesis quorum)
  • 𝒒 = 85%
  • Which makes 𝑸t+1 or quorum for Athens Phase IV:
𝑸t+1 = (0.8)0.8 + (0.2)0.85 = 0.81 (81%)

This would result in the next voting period, Athens Phase IV (𝑡+1), with quorum requiring at least 81% of participation. In conclusion, higher participation than quorum in a voting period results in higher required participation for the following voting period.

Depending on the values of 𝒒t and 𝑸t, this leads to one of the following results:

  • If 𝒒t > 𝑸t : 𝑸t+1 > 𝑸t (increase)
  • If 𝒒t = 𝑸t : 𝑸t+1 = 𝑸t (constant)
  • If 𝒒t < 𝑸t : 𝑸t+1 < 𝑸t (decrease)

Some Limitations of the Quorum Adjustment Mechanism

The Swinging Boat Effect on Tezos Governance

As higher participation than quorum in a voting period results in higher required participation for the following voting period, one of the limitations that the current quorum adjustment mechanism presents is its influence on a voting phase being discontinued and transition to a new epoch— consequently, the proposal failing without information gain.

Practical example: Consider the parameters for Phase II (t = 0) and Phase IV (t = 1) of Proposal X. For simplicity, we will assume that participation sustains at a optimistic 85% in both periods and that the proposal passes in both cases:

𝑸₀ = 80% & 𝑞 = 85%
𝑸₁ = (0.8)0.8 + (0.2)0.85 = 0.81 (81%)
𝑸₁ & 𝑞 = 85%
𝑸₂ = (0.8)0.81 + (0.2)0.85 = 0.818 (81.8%)

At the end of Phase IV, quorum will be adjusted to 81.8%. This will serve as the quorum for the next Phase II of Proposal Y. Unfortunately, participation is lower this time:

𝑸₂ = 81.8% & 𝑞 = 80%
𝑞 < 𝑸₂ → Process is discontinued

As participation is lower than the necessary quorum, Proposal Y will fail with little to no information gain, as the process will be discontinued at the end of Phase II and transition to Phase I for Proposal Z.

Below a diagram that illustrates the swinging boat effect on Tezos governance, given a set of 7 voting periods, proposals {A, B, C, D, E, F}, and a participation that is either 80% or 85%:

Figure 1: The Swinging Boat Effect of the Quorum Adjustment Mechanism on Tezos Governance

Table 1 shows three additional examples, with the different parameters:

  • Scenario A: 𝑞t = 85%
  • Scenario B: 𝑞₀, 𝑞₁ = 85%, 𝑞t = 80%
  • Scenario C: 𝑞₀, 𝑞₁ = 85%, 𝑞t = 75%
Table 1: More examples of the effects of the quorum adjustment mechanism

To sum up, one of the limitations that the quorum adjustment mechanism presents is in the increase of likelihood of proposals being discontinued — and failing– due to lack of participation, a value that is hard to predict and that, in practice, varies marginally. Furthermore, it significantly restricts the community from gaining information about the proposal in question.

Susceptibility to the Disappearing Quorum Issue

Another limitation that the quorum adjustment mechanism presents is the increase in governance’s susceptibility to disappearing quorum. Disappearing quorum is a tactic that has been used in the history of United States House of Representatives (source). In simple terms, it refers to the ability of a minority to block or discontinue a vote by refusing to vote.

Applied to Tezos governance, it refers to the ability of a single participant to continue or discontinue a Proposal’s voting process by refusing to vote in order to prevent quorum from being met. Brought to the extreme, a malicious participant could leverage this ability at every voting phase for its own advantage. For illustration, consider the diagram below with a new parameter of the malicious participant (𝑞M)that holds a voting power of 1.5%*:

Figure 2: The Susceptibility to the Disappearing Quorum Issue of Tezos Governance

*Note that all these values are picked for illustration, it has no reference to real participants nor their voting power.

The only difference in parameters between this diagram and the previous one is the introduction of the malicious participant. In times where participation is lower and quorum has increased due to higher previous participation, the sole malicious participant has the ability to continue or discontinue Proposals.

What Are Quorum Caps and How Can They Help?

Quorum caps are a solution to mitigate the swinging boat effect and the disappearing quorum issue caused by the current quorum adjustment mechanism. As the name indicates, quorum caps are mechanisms that set a maximum and minimum value for quorum, regardless of the voting period.

Quorum caps, in combination with the quorum adjustment mechanism, could mitigate the above limitations, as the increase in quorum will be limited by the maximum and it will not be able to decrease under the minimum. Quorum caps have mainly two building blocks:

  1. Mechanism or algorithm
  2. Values for maximum and minimum

Iteration 1

A straightforward way of implementing the configurable quorum cap mechanism is the following lines of OCaml, which introduce two new constants (quorum_min, quorum_max) to the quorum adjustment mechanism:

(* in amendment.ml *)
|> Vote.cap_quorum ~quorum_min ~quorum_max in
(* in vote_repr.ml *)
let cap_quorum ~quorum_min ~quorum_max quorum =
Compare.Int32.(max quorum_min (min quorum quorum_max))

Iteration 2

A more elegant implementation is the mechanism includes the following functions:

  1. A function that considers average participation (A), with the parameters:
  • t : current voting period
  • A(t) : average participation in the current period
  • 𝑞t : actual participation in the current period
Function that considers average participation

2. A function that calculates the quorum for the given period (𝑸), with the following parameters:

  • t : current voting period
  • A(t) : average participation in the current period
  • 𝑞⋀ : minimum quorum (lower cap)
  • 𝑞⋁ : maximum quorum (upper cap)
Function that calculates the quorum of the given period

The elegance of this mechanism, in comparison to iteration 1, derives from the smoothing effect on the quorum adjustment mechanism, while providing lower and upper caps (𝑞⋀, 𝑞⋁), and a stronger notion of the historic participation rate, tracked by average participation (A).

Both iteration 1 and 2 are open-source on GitLab and you can review them here:

The table below compares the difference in the effects between iteration 1 (𝑸) and iteration 2 (𝑸’), given the example values of quorum_min = 30% and quorum_max = 70%:

Comparing the effects on quorum requirements

What Are the Exact Values of the Quorum Caps?

In our current implementation of the configurable quorum caps mechanism (GitLab), we have set example values of quorum_min = 30_00l (30%) and quorum_max = 70_00l (70%). At the time of writing the values we have under consideration are the following combinations:

  • quorum_min = 20_00l (20%) & quorum_max = 80_00l (80%)
  • quorum_min = 25_00l (25%) & quorum_max = 75_00l (75%)
  • quorum_min = 30_00l (30%) & quorum_max = 70_00l (70%)
  • quorum_min = 35_00l (35%) & quorum_max = 65_00l (65%)

However, before making a decision on which combinations above or new ones will be proposed in the upcoming Proposal phase, we invite the community to discuss about it and are looking forward to hearing some feedback.

Finally, we recommend community members to follow us on Twitter to not miss our announcements, Q&A sessions, and polls.

Acknowledgements

We would like to thank Nomadic Labs, Jacob Arluck, Arthur Breitman and others who have spent time in bouncing ideas, discussions, and have provided us feedback and reviews on our implementations and writings.

What Next?

  • Meanwhile at Cryptium Labs #1 Part III: Same structure as Part II, but describing another interesting feature we have been working on.
  • Reddit written AMA Q&A (21st May 2019, details TBA)

Follow us on Medium and Twitter to Stay Tuned! 🍞