Proposal Phase

The Proposal Phase allows Trustees to propose monetary policies to the core contracts that run monetary governance. During the first 10 days of a generation (the “proposal phase”), each Trustee may submit a proposal for the values of each monetary policy function in the next generation. Trustees may also revise or withdraw their proposals while debating them throughout this period. To be accepted, a valid proposal requires values defined for every monetary policy function (even if zero).

Each round starts with a single default proposal. This proposal sets all other parameters such that there is no new inflation and no new interest rate enacted. The proposer for the default proposal is the zero address.

Submitting a Proposal

Proposals are submitted to the CurrencyGovernance.sol contract for that generation. In order to determine the current CurrencyGovernance.sol contract, please see the section on "Finding Active Contracts". Proposals can only be submitted by addresses designated as Trustees in the TrustedNodes.sol contract. Trustees must propose a value for all the monetary levers.

Proposing a policy is managed by the propose function in CurrencyGovernance.sol. The propose function takes the following inputs:

  • uint256 _numberOfRecipients - the number of random inflation recipients.

  • uint256 _randomInflationReward - total reward to be awarded to randomInflation recipients (in weiEco).

  • uint256 _lockupDuration - the minimum duration a user of a lockup must wait for their interest (in seconds).

  • uint256 _lockupInterest - the "percentage" of interest to be added, stored as a 9-digit fixed point number (i.e. 1_000_000_000 = 100%).

  • uint256 _inflationMultiplier - the multiplier with which to scale the ECO currency, stored as an 18-digit fixed point number (i.e. 50_000_000_000_000_000 => 1 ECO -> 1.05 ECO or 5% inflation).

Other considerations:

  • A proposal must define a value for all the input levers (even if zero).

  • Each Trustee may only have one proposal submitted at a time.

  • To unpropose a submitted proposal, a Trustee can call unpropose().

  • To edit an existing proposal, a Trustee can call propose(...) again with new values.

  • The _inflationMultiplier cannot be zero.

  • Trustees are not required to submit proposals to receive voting rewards. They are only required to vote and reveal.

Last updated