Governance

Submit a proposal

The proposal form field by field, and exactly what gets signed.

Submit a proposal

New Proposal on the overview page, or /propose directly, opens the form. It builds the call for you and shows it before you sign, so the only transaction you send is the one that puts the proposal on-chain.

You need voting power above the proposal threshold to submit. The threshold is on every proposal page under Governor configuration.

Pick a type

Type What it is
Parameter change (executable) A real change, routed through GovHub, that can be queued and executed once it passes
Signal proposal (non-executable) Records what the community wants. It carries no call, so it cannot be queued or executed

Use a signal proposal to settle a direction before anyone writes the parameter change for it. Use a parameter change when you already know the value you want.

Title and description

The Title is what the whole site lists the proposal under, up to 256 characters, and it is required. The Description is the case you are making, and voters read it on the proposal page.

The two are stored on-chain as one text, with the title as its first heading:

# Raise the burn ratio

Because ...

Neither can be edited afterwards. The description is hashed into the proposal, so changing a character would make it a different proposal.

Building a parameter change

Three fields, each of which narrows the next.

Target contract. The system contract that owns the parameter. The form lists the six that governance can touch and shows what each one does, along with its address. Write a proposal has the full table of contracts and their parameters.

Parameter key. The parameters that contract exposes, each with its type. Once you pick one, the form shows what it does and the range the contract allows.

Value. What you want the parameter set to. The Value type next to it is filled in for you and cannot be changed: it is whatever that parameter takes. A bool parameter gives you a true/false chooser; everything else is a text field.

Amounts of L2P are given in wei, and durations in the unit the contract uses. The range shown under the parameter is the one the contract enforces, and the form will not let you submit outside it.

The summary panel

On the right, the proposal as it will be submitted: the title, the description, the type and, for a parameter change, the target, the key and the value. Under it stands Resulting call, the actual instruction that will be sent:

GovHub.updateParam("burnRatio", 750, <the validator set address>)

Read that line before you sign. It is exactly what the chain will do if the proposal passes.

Custom address

The target dropdown also offers Custom address, for a contract that is not in the list. It comes with two warnings.

You pick the value type yourself, from address, uint256, uint64, bool or raw hex bytes, and there is no range to check it against, so the form can only tell you the value is well-formed, not that it is sensible.

More importantly, the governor only ever executes calls to targets it whitelists. A proposal aimed at anything else can win its vote and then never be executable, which is by design rather than a bug. Check that the target is whitelisted before you spend a proposal on it.

What the form refuses

Message What to fix
This field is required Title, parameter key or value is empty
Enter a valid address (0x followed by 40 hex characters) The address is malformed
The address cannot be the zero address This parameter will not accept the all-zero address
Enter a whole, non-negative number A numeric parameter got something that is not a plain whole number
The value is outside the range allowed by the contract The number is legal but the contract would reject it
Select true or false A bool parameter needs one of the two
Enter valid hex bytes (0x with an even number of hex characters) Raw bytes must be 0x plus an even number of hex characters

Errors only appear once you have pressed Create Proposal, so nothing turns red while you are still typing.

Submitting

Create Proposal sends one transaction: a call to the governor's propose function carrying the targets, the values, the calldata and your description. Your wallet asks you to sign it, and when it goes through the site confirms it, gives you a link to the transaction and takes you back to the overview.

The proposal does not appear in the list instantly. The indexer has to see it on-chain first, which takes a moment. After that it sits in Pending until the voting delay has passed, and then it opens for voting on its own.