Proposal#

Proposals represent a formal request submitted by a PWR token holder to initiate changes within:

  • Mother DAO: Overall governance rules, treasury allocations, or strategic direction of the protocol.
  • Or Child DAO: Specific project goals, resource distribution, or operational decisions.

Each proposal:

  • Is subject to voting to confirm alignment with the community's consensus before implementation.
  • Has a set of Properties.

Properties#

The proposal properties:

  • Title.
  • Status.
  • Proposal Details:
    • Proposal ID.
    • Proposal Sender.
    • Proposed By.
    • Tx Timestamp.
    • Proposal Height.
    • Current Height.
  • Voting Information:
    • Voting Start.
    • Voting End.
    • Voting Metrics.
  • Description.
  • Payload.

Title#

The title of a proposal.

Status#

The current state of a proposal:

  • discussion: First hour after proposal creation, open for discussion.
  • voting: Voting is in progress from the start until the end of the voting period.
  • noQuorum: Proposal fails due to insufficient votes.
  • votingFailed: Proposal rejected due to the majority voting No.
  • waitingForTx: Proposal approved by majority voting Yes, awaiting execution.
  • inBlockchain: Proposal successfully implemented on the blockchain.

Proposal ID#

The unique identifier of a proposal.

Proposal Sender#

The wallet address associated with the PWRDAO.

Proposed By#

The proposal creator's wallet address.

Tx Timestamp#

The date and time a proposal was submitted in the DD/MM/YYYY, HH:MM format.

Proposal Height#

The blockchain height when a proposal was created.

Current Height#

The current height of the blockchain.

Voting Start#

The time voting begins in the DD/MM/YYYY, HH:MM format.

Voting End#

The time voting ends in the DD/MM/YYYY, HH:MM format.

Voting Metrics#

The voting metrics include the parameters:

  • Activity for quorum: vPWR token amount needed to approve the proposal by voting in favor.
  • Activity: Total amount of PWR tokens staked for the proposal.
  • Yes: Total vPWR tokens voting in favor.
  • No: Total vPWR tokens voting against.

Description#

The proposal description.

Payload#

The set of properties that represent a transaction to broadcast if the proposal receives sufficient votes.

The supported payload properties:

PropertyTransaction TypeDescription
typeAllSupported transaction type:
- Transfer: 4.
- Data: 12.
- Set Script: 13.
- Invoke Script: 16.
timestampAllTransaction timestamp per the Unix time in milliseconds.
senderPublicKeyAllPublic key of the transaction sender in the base58-encoded byte array format.
feeAllTransaction fee in the smallest unit.
Example: A 0.001 WAVES fee is shown as 100000, since 1 WAVES = 10^8 WAVELET
feeAssetIdAllBase58-encoded token ID or null for WAVES.
versionAllTransaction version in the binary format.
recipientTransferBase58-encoded recipient address or recipient alias in the alias:<CHAIN_ID>: prefix format.
Example: alias:T:merry
amountTransferTransaction token amount.
assetIdTransferBase58-encoded token ID or null for WAVES.
attachmentTransferArbitrary binary data. Typically, a base58-encoded comment of up to 140 bytes.
dataData

Data property including key-value pairs:
- key: String entry key. Up to 400 bytes for version 2 or up to 100 characters for version 1.
- type: Entry type: binary, boolean, integer, string, or null to delete entry .
- value: Base-64 encoded entry value of up to 32,767 bytes or null to delete the entry.
Example:

{
  "data": [
    {
      "key": "EXAMPLE",
      "type": "string",
      "value": "EXAMPLE"
    }
  ]
}
scriptSet ScriptBase64-encoded compiled script:
- Account script: Up to 8192 bytes.
- dApp: Up to 163,840 bytes.
- null: Delete script.
dAppInvoke ScriptBase58-encoded dApp address or dApp alias in the alias:<CHAIN_ID>: prefix format. Example alias:T:merry.
callInvoke Script

Call property including key-value pairs:
- function: Callable function name. Up to 255 bytes, where 1 character can take up to 4 bytes.
- args.type: Argument type: binary,boolean,integer,string, and list.
- args.value: Base-64 encoded argument value.
Example:

{
  "call": {
    "function": "hello",
    "args": [
      {
        "type": "string",
        "value": "example" 
      }
    ]
  }
}
paymentInvoke Script

Payment property including key-value pairs:
- amount: Integer payment amount in atomic units.
- assetId: Base58-encoded payment token ID or null for payments in WAVES.
Example:

{
  "payment": [
    "amount": 10000000,
    "assetId": null    
  ]
}
chainIdInvoke ScriptWaves blockchain network ID:
- Mainnet: W or 87.
- Testnet: T or 84.
- Stagenet: S or 83.

Operations#

The supported operations with proposals:

  • Add: Add a proposal.
  • Edit: Edit the proposal's title and description.
  • Retract: Retract the proposal.
  • Vote: Vote on the proposal.