Namada Proposals
Proposal JSON
For online proposals, the fields of the proposal JSON are as follows:
{
    "proposal": {
        "id": 1, // The proposal id
        "content": content, // (see below),
        "author": "author", // The author's address
        "voting_start_epoch": 420, // The epoch at which voting starts
        "voting_end_epoch": 426, // The epoch at which voting ends
        "grace_epoch": 432, // The epoch at which the proposal will be executed (if it passes)
    },
    "data": data // The optional proposal data, depends on the type of proposal
}- The contentvalue should follow a standard format. We leverage a similar format to what is described in the BIP2 (opens in a new tab) document:
{
    "title": "<text>",
    "authors": "<authors' email addresses> ",
    "discussions-to": "<email address / link>",
    "created": "<date created on, in ISO 8601 (yyyy-mm-dd) format>",
    "license": "<abbreviation for approved license(s)>",
    "abstract": "<text>",
    "motivation": "<text>",
    "details": "<Proposal Number> - optional field",
    "requires": "<proposal id of any proposals that need to occur before this proposal can be implemented> -optional field",
}The proposal number is different from the proposal id. The id is a counter that does not include offline proposals. The proposal number is a counter that includes offline proposals. The proposal id is a unique identifier that is assigned to each proposal when it is submitted. The proposal id is used to reference a proposal in the Namada blockchain.
The Author address field will be used to credit the locked funds if the proposal is approved.
The ProposalType imply different combinations of:
- the optional wasm code attached to the proposal
- which actors should be allowed to vote (delegators and validators or validators only)
- the threshold to be used in the tally process
- the optional payload (memo) attached to the vote
Supported proposal types
At the moment, Namada supports 3 types of governance proposals:
pub enum ProposalType {
  /// Carries the optional proposal code path
  Default(Option<String>),
  StewardProposal,
  PGFProposal,
}Default represents a generic proposal with the following properties:
- Can carry a WASM code to be executed in case the proposal passes
- Allows both validators and delegators to vote
- Requires of the total voting power to succeed
- Doesn't expect any memo attached to the votes
StewardProposal is a proposal to change the StewardSet for Public Goods Funding:
- Doesn't carry any WASM code
- Allows both validators and delegators to vote
- Requires of the total voting power to vote
- Requires  of the non-abstain (either yea or nay) votes to be Yay
PGFProposal is a proposal to conduct Public Goods Funding:
- Doesn't carry any WASM code
- Allows both validators and delegators to vote
- Has different properties depending on whether or not the submitter is a steward If the proposer is not a steward:
- Requires of the total voting power to vote
- Requires  of the non-abstain votes to be YayIf the proposer is a steward, passes unless:
-  of the total voting power votes on the proposal, AND out of the votes, at least  of the non-abstain votes are Nay
- Causes the steward to lose steward status if  of the total voting power votes on the proposal AND out of the votes, at least  of the non-abstain votes are Nay